@capgo/capacitor-screen-orientation 8.2.0 → 8.3.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.
package/README.md CHANGED
@@ -20,11 +20,29 @@ Screen orientation plugin with support for detecting true physical device orient
20
20
  - 🔒 **Detect if orientation lock is enabled** by comparing physical vs UI orientation
21
21
  - 🔄 Real-time orientation change detection
22
22
  - 🎯 Lock orientation to specific modes
23
- - 📖 **Foldable posture** on Android: flat, tabletop, or book, plus hinge angle and window size class
23
+ - 📖 **iPhone Duo and Android foldables**: flat, book, or tabletop, hinge angle, which display is showing, and where iPhone Duo puts the tab bar
24
24
  - 🌐 Web platform support
25
25
 
26
26
  **Important Note:** This plugin can detect the physical orientation of the device using motion sensors, but it **cannot bypass the UI orientation lock**. The screen will still respect the user's orientation lock setting. This is useful for knowing how the device is physically held vs. how the UI is displayed.
27
27
 
28
+ ## iPhone Duo
29
+
30
+ iPhone Duo (iOS 27.1 or later) is a foldable iPhone. The same fold calls used on Android report it:
31
+
32
+ | Pose | `posture` | Hinge |
33
+ | --- | --- | --- |
34
+ | Open flat, or closed on the outer display | `flat` | `180` open, `0` closed |
35
+ | Held half-open like a book | `book` | vertical hinge, about `20`–`160` |
36
+ | Propped half-open like a laptop | `tabletop` | horizontal hinge |
37
+
38
+ Closed on the cover screen, the iPhone Duo simulator reports the outer display and a hinge at 0°:
39
+
40
+ <img src="screenshots/ios-iphone-duo.webp" width="300" alt="iPhone Duo simulator closed on the cover screen, reporting flat, outer display, hinge 0 degrees">
41
+
42
+ `activeDisplay` is `inner` on the large folding screen and `outer` on the cover screen. `getReservedRegions()` returns the fold (`division`) and anything covering the glass, such as the camera (`occlusion`). `getBarPlacement()` says whether iOS moved the tab bar to the side, and how wide that bar is.
43
+
44
+ A regular iPhone, and iOS before 27.1, stays `flat` with no hinge angle. Android foldables report posture and hinge angle the same way. Rear display and dual-screen modes stay on Android.
45
+
28
46
  ## Documentation
29
47
 
30
48
  The most complete doc is available here: https://capgo.app/docs/plugins/screen-orientation/
@@ -133,8 +151,10 @@ await ScreenOrientation.stopOrientationTracking();
133
151
  // Remove listener
134
152
  await listener.remove();
135
153
 
136
- // Foldables: flat, tabletop, or book. Flat on phones that do not fold.
137
- const { posture } = await ScreenOrientation.getFoldState();
154
+ // iPhone Duo and Android foldables. Flat on phones that do not fold.
155
+ const { posture, activeDisplay } = await ScreenOrientation.getFoldState();
156
+ const { angle, status } = await ScreenOrientation.getHingeAngle();
157
+ const { verticalBarEdge, inset } = await ScreenOrientation.getBarPlacement();
138
158
  const { widthClass } = await ScreenOrientation.getSizeClass();
139
159
  ```
140
160
 
@@ -151,6 +171,9 @@ const { widthClass } = await ScreenOrientation.getSizeClass();
151
171
  * [`isDeviceFoldable()`](#isdevicefoldable)
152
172
  * [`getFoldState()`](#getfoldstate)
153
173
  * [`getHingeAngle()`](#gethingeangle)
174
+ * [`getReservedRegions()`](#getreservedregions)
175
+ * [`getBarPlacement()`](#getbarplacement)
176
+ * [`setVerticalBarBehavior(...)`](#setverticalbarbehavior)
154
177
  * [`getSizeClass()`](#getsizeclass)
155
178
  * [`addListener('screenOrientationChange', ...)`](#addlistenerscreenorientationchange-)
156
179
  * [`addListener('foldStateChange', ...)`](#addlistenerfoldstatechange-)
@@ -295,7 +318,7 @@ isDeviceFoldable() => Promise<DeviceFoldableResult>
295
318
 
296
319
  Whether this device folds, and whether it can stand half-open like a laptop.
297
320
 
298
- Both flags are `false` on web and iOS.
321
+ Both flags are `false` on web, on Android phones that do not fold, and on iOS except iPhone Duo (iOS 27.1 or later).
299
322
 
300
323
  **Returns:** <code>Promise&lt;<a href="#devicefoldableresult">DeviceFoldableResult</a>&gt;</code>
301
324
 
@@ -338,6 +361,63 @@ Read the hinge angle in degrees.
338
361
  --------------------
339
362
 
340
363
 
364
+ ### getReservedRegions()
365
+
366
+ ```typescript
367
+ getReservedRegions() => Promise<{ regions: ReservedRegion[]; }>
368
+ ```
369
+
370
+ Read the fold and anything covering the screen.
371
+
372
+ iPhone Duo reports the fold, the vertical status bar area, and the under-display camera.
373
+ Resolves to an empty list on Android, web, and iOS before 27.1.
374
+
375
+ **Returns:** <code>Promise&lt;{ regions: ReservedRegion[]; }&gt;</code>
376
+
377
+ **Since:** 8.2.0
378
+
379
+ --------------------
380
+
381
+
382
+ ### getBarPlacement()
383
+
384
+ ```typescript
385
+ getBarPlacement() => Promise<BarPlacement>
386
+ ```
387
+
388
+ Read where iPhone Duo puts native tab bars and toolbars.
389
+
390
+ `verticalBarEdge` is `null` when bars stay horizontal, and always on Android and web.
391
+
392
+ **Returns:** <code>Promise&lt;<a href="#barplacement">BarPlacement</a>&gt;</code>
393
+
394
+ **Since:** 8.2.0
395
+
396
+ --------------------
397
+
398
+
399
+ ### setVerticalBarBehavior(...)
400
+
401
+ ```typescript
402
+ setVerticalBarBehavior(options: { behavior: 'automatic' | 'disabled'; }) => Promise<{ applied: boolean; }>
403
+ ```
404
+
405
+ Choose whether iPhone Duo may move this app's bars to the side.
406
+
407
+ Resolves to `{ applied: false }` unless the app's bridge view controller opts in.
408
+ Android and web always resolve to `{ applied: false }`.
409
+
410
+ | Param | Type | Description |
411
+ | ------------- | ----------------------------------------------------- | ------------------------------------------------------------------------ |
412
+ | **`options`** | <code>{ behavior: 'automatic' \| 'disabled'; }</code> | `automatic` lets the system move bars. `disabled` keeps them horizontal. |
413
+
414
+ **Returns:** <code>Promise&lt;{ applied: boolean; }&gt;</code>
415
+
416
+ **Since:** 8.2.0
417
+
418
+ --------------------
419
+
420
+
341
421
  ### getSizeClass()
342
422
 
343
423
  ```typescript
@@ -401,7 +481,7 @@ addListener(eventName: 'hingeAngleChange', listenerFunc: (event: HingeAngleResul
401
481
  Listen for hinge angle changes.
402
482
 
403
483
  On Android the hinge sensor runs only while at least one listener is registered.
404
- Never fires on web or iOS.
484
+ On iOS this fires on iPhone Duo (iOS 27.1 or later). Never fires on web.
405
485
 
406
486
  | Param | Type | Description |
407
487
  | ------------------ | --------------------------------------------------------------------------------- | ------------------------------------------- |
@@ -523,16 +603,20 @@ Whether this device can fold.
523
603
 
524
604
  Current fold of the window.
525
605
 
526
- Phones that do not fold, iOS, and web resolve to a flat state.
606
+ Phones that do not fold, and iOS before 27.1, resolve to a flat state.
607
+ iPhone Duo reports `book`, `tabletop`, or `flat`, and which display is in front.
527
608
 
528
- | Prop | Type | Description | Since |
529
- | ---------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------ | ----- |
530
- | **`state`** | <code><a href="#foldstatevalue">FoldStateValue</a></code> | Posture of the fold. | 8.2.0 |
531
- | **`isSeparating`** | <code>boolean</code> | Whether the fold splits the web view into two areas. | 8.2.0 |
532
- | **`posture`** | <code><a href="#foldposture">FoldPosture</a></code> | How the device is held. | 8.2.0 |
533
- | **`hingeOrientation`** | <code><a href="#hingeorientation">HingeOrientation</a></code> | Direction of the hinge. Omitted when there is no fold. | 8.2.0 |
534
- | **`hingeBounds`** | <code><a href="#foldbounds">FoldBounds</a></code> | Position of the fold in CSS pixels. Omitted when there is no fold. | 8.2.0 |
535
- | **`occludedBounds`** | <code><a href="#foldbounds">FoldBounds</a></code> | Area the hinge covers. Present when the hinge has a physical gap. | 8.2.0 |
609
+ | Prop | Type | Description | Since |
610
+ | ---------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ----- |
611
+ | **`state`** | <code><a href="#foldstatevalue">FoldStateValue</a></code> | Posture of the fold. | 8.2.0 |
612
+ | **`isSeparating`** | <code>boolean</code> | Whether the fold splits the web view into two areas. | 8.2.0 |
613
+ | **`posture`** | <code><a href="#foldposture">FoldPosture</a></code> | How the device is held. | 8.2.0 |
614
+ | **`hingeOrientation`** | <code><a href="#hingeorientation">HingeOrientation</a></code> | Direction of the hinge. Omitted when there is no fold. | 8.2.0 |
615
+ | **`hingeBounds`** | <code><a href="#foldbounds">FoldBounds</a></code> | Position of the fold in CSS pixels. Omitted when there is no fold. | 8.2.0 |
616
+ | **`occludedBounds`** | <code><a href="#foldbounds">FoldBounds</a></code> | Area the hinge covers. Present when the hinge has a physical gap. | 8.2.0 |
617
+ | **`activeDisplay`** | <code>'inner' \| 'outer'</code> | Which display is showing the app on iPhone Duo. Omitted on Android, web, and iOS before 27.1. | 8.2.0 |
618
+ | **`hingeMargins`** | <code>{ top: number; right: number; bottom: number; left: number; }</code> | Space the system keeps clear around the fold, in CSS pixels. iPhone Duo reports 20 on each side of a vertical fold. | 8.2.0 |
619
+ | **`cameraBounds`** | <code>FoldBounds[]</code> | Areas covering the display, such as the iPhone Duo camera. Omitted when there are none. | 8.2.0 |
536
620
 
537
621
 
538
622
  #### FoldBounds
@@ -553,9 +637,37 @@ Angle between the two halves of a foldable, in degrees.
553
637
 
554
638
  `0` is closed and `180` is flat. `angle` is `null` when the device has no hinge sensor.
555
639
 
556
- | Prop | Type | Description | Since |
557
- | ----------- | --------------------------- | -------------------------------------------------------------- | ----- |
558
- | **`angle`** | <code>number \| null</code> | Hinge angle in degrees, or `null` when no sensor is available. | 8.2.0 |
640
+ | Prop | Type | Description | Since |
641
+ | ------------ | --------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----- |
642
+ | **`angle`** | <code>number \| null</code> | Hinge angle in degrees, or `null` when no sensor is available. | 8.2.0 |
643
+ | **`status`** | <code>'closed' \| 'partiallyOpen' \| 'fullyOpen' \| null</code> | How far open iPhone Duo is, as the system sees it. `null` on Android and web. | 8.2.0 |
644
+
645
+
646
+ #### ReservedRegion
647
+
648
+ A region the system reserves on iPhone Duo.
649
+
650
+ `division` is the fold. `occlusion` is something covering the display, such as the camera.
651
+
652
+ | Prop | Type | Description | Since |
653
+ | -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ----- |
654
+ | **`kind`** | <code>'division' \| 'occlusion'</code> | What the region is. | 8.2.0 |
655
+ | **`isActive`** | <code>boolean</code> | Whether the region applies right now. An inactive division is a flat fold. | 8.2.0 |
656
+ | **`x`** | <code>number</code> | Left edge, in CSS pixels. | 8.2.0 |
657
+ | **`y`** | <code>number</code> | Top edge, in CSS pixels. | 8.2.0 |
658
+ | **`width`** | <code>number</code> | Width in CSS pixels. | 8.2.0 |
659
+ | **`height`** | <code>number</code> | Height in CSS pixels. | 8.2.0 |
660
+ | **`margins`** | <code>{ top: number; right: number; bottom: number; left: number; }</code> | Space to keep clear around the region, in CSS pixels. | 8.2.0 |
661
+
662
+
663
+ #### BarPlacement
664
+
665
+ Where iPhone Duo places native bars.
666
+
667
+ | Prop | Type | Description | Since |
668
+ | --------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------- | ----- |
669
+ | **`verticalBarEdge`** | <code>'leading' \| 'trailing' \| null</code> | The edge the system moves tab bars and toolbars to. `null` when they stay horizontal. | 8.2.0 |
670
+ | **`inset`** | <code>number</code> | How much room the vertical bar takes, in points. `0` when bars stay horizontal. | 8.2.0 |
559
671
 
560
672
 
561
673
  #### SizeClass
@@ -24,7 +24,7 @@ import org.json.JSONObject;
24
24
  @CapacitorPlugin(name = "CapacitorScreenOrientation")
25
25
  public class CapacitorScreenOrientationPlugin extends Plugin implements SensorEventListener {
26
26
 
27
- private final String pluginVersion = "8.2.0";
27
+ private final String pluginVersion = "8.3.0";
28
28
  private int currentOrientation;
29
29
  private SensorManager sensorManager;
30
30
  private Sensor accelerometer;
@@ -185,6 +185,28 @@ public class CapacitorScreenOrientationPlugin extends Plugin implements SensorEv
185
185
  call.resolve(currentSizeClass());
186
186
  }
187
187
 
188
+ @PluginMethod
189
+ public void getReservedRegions(PluginCall call) {
190
+ JSObject result = new JSObject();
191
+ result.put("regions", new org.json.JSONArray());
192
+ call.resolve(result);
193
+ }
194
+
195
+ @PluginMethod
196
+ public void getBarPlacement(PluginCall call) {
197
+ JSObject result = new JSObject();
198
+ result.put("verticalBarEdge", JSONObject.NULL);
199
+ result.put("inset", 0);
200
+ call.resolve(result);
201
+ }
202
+
203
+ @PluginMethod
204
+ public void setVerticalBarBehavior(PluginCall call) {
205
+ JSObject result = new JSObject();
206
+ result.put("applied", false);
207
+ call.resolve(result);
208
+ }
209
+
188
210
  @PluginMethod
189
211
  public void orientation(final PluginCall call) {
190
212
  try {
package/dist/docs.json CHANGED
@@ -195,7 +195,7 @@
195
195
  "text": "```typescript\nconst { foldable, supportsTabletop } = await ScreenOrientation.isDeviceFoldable();\n```"
196
196
  }
197
197
  ],
198
- "docs": "Whether this device folds, and whether it can stand half-open like a laptop.\n\nBoth flags are `false` on web and iOS.",
198
+ "docs": "Whether this device folds, and whether it can stand half-open like a laptop.\n\nBoth flags are `false` on web, on Android phones that do not fold, and on iOS except iPhone Duo (iOS 27.1 or later).",
199
199
  "complexTypes": [
200
200
  "DeviceFoldableResult"
201
201
  ],
@@ -251,6 +251,77 @@
251
251
  ],
252
252
  "slug": "gethingeangle"
253
253
  },
254
+ {
255
+ "name": "getReservedRegions",
256
+ "signature": "() => Promise<{ regions: ReservedRegion[]; }>",
257
+ "parameters": [],
258
+ "returns": "Promise<{ regions: ReservedRegion[]; }>",
259
+ "tags": [
260
+ {
261
+ "name": "since",
262
+ "text": "8.2.0"
263
+ },
264
+ {
265
+ "name": "returns",
266
+ "text": "The reserved regions."
267
+ }
268
+ ],
269
+ "docs": "Read the fold and anything covering the screen.\n\niPhone Duo reports the fold, the vertical status bar area, and the under-display camera.\nResolves to an empty list on Android, web, and iOS before 27.1.",
270
+ "complexTypes": [
271
+ "ReservedRegion"
272
+ ],
273
+ "slug": "getreservedregions"
274
+ },
275
+ {
276
+ "name": "getBarPlacement",
277
+ "signature": "() => Promise<BarPlacement>",
278
+ "parameters": [],
279
+ "returns": "Promise<BarPlacement>",
280
+ "tags": [
281
+ {
282
+ "name": "since",
283
+ "text": "8.2.0"
284
+ },
285
+ {
286
+ "name": "returns",
287
+ "text": "The current bar placement."
288
+ }
289
+ ],
290
+ "docs": "Read where iPhone Duo puts native tab bars and toolbars.\n\n`verticalBarEdge` is `null` when bars stay horizontal, and always on Android and web.",
291
+ "complexTypes": [
292
+ "BarPlacement"
293
+ ],
294
+ "slug": "getbarplacement"
295
+ },
296
+ {
297
+ "name": "setVerticalBarBehavior",
298
+ "signature": "(options: { behavior: 'automatic' | 'disabled'; }) => Promise<{ applied: boolean; }>",
299
+ "parameters": [
300
+ {
301
+ "name": "options",
302
+ "docs": "`automatic` lets the system move bars. `disabled` keeps them horizontal.",
303
+ "type": "{ behavior: 'automatic' | 'disabled'; }"
304
+ }
305
+ ],
306
+ "returns": "Promise<{ applied: boolean; }>",
307
+ "tags": [
308
+ {
309
+ "name": "since",
310
+ "text": "8.2.0"
311
+ },
312
+ {
313
+ "name": "param",
314
+ "text": "options `automatic` lets the system move bars. `disabled` keeps them horizontal."
315
+ },
316
+ {
317
+ "name": "returns",
318
+ "text": "Whether the app applied the choice."
319
+ }
320
+ ],
321
+ "docs": "Choose whether iPhone Duo may move this app's bars to the side.\n\nResolves to `{ applied: false }` unless the app's bridge view controller opts in.\nAndroid and web always resolve to `{ applied: false }`.",
322
+ "complexTypes": [],
323
+ "slug": "setverticalbarbehavior"
324
+ },
254
325
  {
255
326
  "name": "getSizeClass",
256
327
  "signature": "() => Promise<SizeClass>",
@@ -375,7 +446,7 @@
375
446
  "text": "A promise that resolves to a listener handle."
376
447
  }
377
448
  ],
378
- "docs": "Listen for hinge angle changes.\n\nOn Android the hinge sensor runs only while at least one listener is registered.\nNever fires on web or iOS.",
449
+ "docs": "Listen for hinge angle changes.\n\nOn Android the hinge sensor runs only while at least one listener is registered.\nOn iOS this fires on iPhone Duo (iOS 27.1 or later). Never fires on web.",
379
450
  "complexTypes": [
380
451
  "PluginListenerHandle",
381
452
  "HingeAngleResult"
@@ -670,7 +741,7 @@
670
741
  {
671
742
  "name": "FoldState",
672
743
  "slug": "foldstate",
673
- "docs": "Current fold of the window.\n\nPhones that do not fold, iOS, and web resolve to a flat state.",
744
+ "docs": "Current fold of the window.\n\nPhones that do not fold, and iOS before 27.1, resolve to a flat state.\niPhone Duo reports `book`, `tabletop`, or `flat`, and which display is in front.",
674
745
  "tags": [
675
746
  {
676
747
  "text": "8.2.0",
@@ -760,6 +831,44 @@
760
831
  "FoldBounds"
761
832
  ],
762
833
  "type": "FoldBounds"
834
+ },
835
+ {
836
+ "name": "activeDisplay",
837
+ "tags": [
838
+ {
839
+ "text": "8.2.0",
840
+ "name": "since"
841
+ }
842
+ ],
843
+ "docs": "Which display is showing the app on iPhone Duo. Omitted on Android, web, and iOS before 27.1.",
844
+ "complexTypes": [],
845
+ "type": "'inner' | 'outer' | undefined"
846
+ },
847
+ {
848
+ "name": "hingeMargins",
849
+ "tags": [
850
+ {
851
+ "text": "8.2.0",
852
+ "name": "since"
853
+ }
854
+ ],
855
+ "docs": "Space the system keeps clear around the fold, in CSS pixels. iPhone Duo reports 20 on each side of a vertical fold.",
856
+ "complexTypes": [],
857
+ "type": "{ top: number; right: number; bottom: number; left: number; } | undefined"
858
+ },
859
+ {
860
+ "name": "cameraBounds",
861
+ "tags": [
862
+ {
863
+ "text": "8.2.0",
864
+ "name": "since"
865
+ }
866
+ ],
867
+ "docs": "Areas covering the display, such as the iPhone Duo camera. Omitted when there are none.",
868
+ "complexTypes": [
869
+ "FoldBounds"
870
+ ],
871
+ "type": "FoldBounds[] | undefined"
763
872
  }
764
873
  ]
765
874
  },
@@ -828,6 +937,154 @@
828
937
  "docs": "Hinge angle in degrees, or `null` when no sensor is available.",
829
938
  "complexTypes": [],
830
939
  "type": "number | null"
940
+ },
941
+ {
942
+ "name": "status",
943
+ "tags": [
944
+ {
945
+ "text": "8.2.0",
946
+ "name": "since"
947
+ }
948
+ ],
949
+ "docs": "How far open iPhone Duo is, as the system sees it. `null` on Android and web.",
950
+ "complexTypes": [],
951
+ "type": "'closed' | 'partiallyOpen' | 'fullyOpen' | null | undefined"
952
+ }
953
+ ]
954
+ },
955
+ {
956
+ "name": "ReservedRegion",
957
+ "slug": "reservedregion",
958
+ "docs": "A region the system reserves on iPhone Duo.\n\n`division` is the fold. `occlusion` is something covering the display, such as the camera.",
959
+ "tags": [
960
+ {
961
+ "text": "8.2.0",
962
+ "name": "since"
963
+ }
964
+ ],
965
+ "methods": [],
966
+ "properties": [
967
+ {
968
+ "name": "kind",
969
+ "tags": [
970
+ {
971
+ "text": "8.2.0",
972
+ "name": "since"
973
+ }
974
+ ],
975
+ "docs": "What the region is.",
976
+ "complexTypes": [],
977
+ "type": "'division' | 'occlusion'"
978
+ },
979
+ {
980
+ "name": "isActive",
981
+ "tags": [
982
+ {
983
+ "text": "8.2.0",
984
+ "name": "since"
985
+ }
986
+ ],
987
+ "docs": "Whether the region applies right now. An inactive division is a flat fold.",
988
+ "complexTypes": [],
989
+ "type": "boolean"
990
+ },
991
+ {
992
+ "name": "x",
993
+ "tags": [
994
+ {
995
+ "text": "8.2.0",
996
+ "name": "since"
997
+ }
998
+ ],
999
+ "docs": "Left edge, in CSS pixels.",
1000
+ "complexTypes": [],
1001
+ "type": "number"
1002
+ },
1003
+ {
1004
+ "name": "y",
1005
+ "tags": [
1006
+ {
1007
+ "text": "8.2.0",
1008
+ "name": "since"
1009
+ }
1010
+ ],
1011
+ "docs": "Top edge, in CSS pixels.",
1012
+ "complexTypes": [],
1013
+ "type": "number"
1014
+ },
1015
+ {
1016
+ "name": "width",
1017
+ "tags": [
1018
+ {
1019
+ "text": "8.2.0",
1020
+ "name": "since"
1021
+ }
1022
+ ],
1023
+ "docs": "Width in CSS pixels.",
1024
+ "complexTypes": [],
1025
+ "type": "number"
1026
+ },
1027
+ {
1028
+ "name": "height",
1029
+ "tags": [
1030
+ {
1031
+ "text": "8.2.0",
1032
+ "name": "since"
1033
+ }
1034
+ ],
1035
+ "docs": "Height in CSS pixels.",
1036
+ "complexTypes": [],
1037
+ "type": "number"
1038
+ },
1039
+ {
1040
+ "name": "margins",
1041
+ "tags": [
1042
+ {
1043
+ "text": "8.2.0",
1044
+ "name": "since"
1045
+ }
1046
+ ],
1047
+ "docs": "Space to keep clear around the region, in CSS pixels.",
1048
+ "complexTypes": [],
1049
+ "type": "{ top: number; right: number; bottom: number; left: number; }"
1050
+ }
1051
+ ]
1052
+ },
1053
+ {
1054
+ "name": "BarPlacement",
1055
+ "slug": "barplacement",
1056
+ "docs": "Where iPhone Duo places native bars.",
1057
+ "tags": [
1058
+ {
1059
+ "text": "8.2.0",
1060
+ "name": "since"
1061
+ }
1062
+ ],
1063
+ "methods": [],
1064
+ "properties": [
1065
+ {
1066
+ "name": "verticalBarEdge",
1067
+ "tags": [
1068
+ {
1069
+ "text": "8.2.0",
1070
+ "name": "since"
1071
+ }
1072
+ ],
1073
+ "docs": "The edge the system moves tab bars and toolbars to. `null` when they stay horizontal.",
1074
+ "complexTypes": [],
1075
+ "type": "'leading' | 'trailing' | null"
1076
+ },
1077
+ {
1078
+ "name": "inset",
1079
+ "tags": [
1080
+ {
1081
+ "text": "8.2.0",
1082
+ "name": "since"
1083
+ }
1084
+ ],
1085
+ "docs": "How much room the vertical bar takes, in points. `0` when bars stay horizontal.",
1086
+ "complexTypes": [],
1087
+ "type": "number"
831
1088
  }
832
1089
  ]
833
1090
  },