|
@@ -28,7 +28,7 @@ interface RNCWebViewUIManager<Commands extends string> extends UIManagerStatic {
|
28
|
28
|
|
29
|
29
|
export type RNCWebViewUIManagerAndroid = RNCWebViewUIManager<WebViewCommands | AndroidWebViewCommands>
|
30
|
30
|
export type RNCWebViewUIManagerIOS = RNCWebViewUIManager<WebViewCommands>
|
31
|
|
-
|
|
31
|
+export type RNCWebViewUIManagerMacOS = RNCWebViewUIManager<WebViewCommands>
|
32
|
32
|
|
33
|
33
|
|
34
|
34
|
type WebViewState = 'IDLE' | 'LOADING' | 'ERROR';
|
|
@@ -57,6 +57,14 @@ declare const NativeWebViewIOSBase: Constructor<NativeMethodsMixin> &
|
57
|
57
|
typeof NativeWebViewIOSComponent;
|
58
|
58
|
export class NativeWebViewIOS extends NativeWebViewIOSBase {}
|
59
|
59
|
|
|
60
|
+// eslint-disable-next-line react/prefer-stateless-function
|
|
61
|
+declare class NativeWebViewMacOSComponent extends Component<
|
|
62
|
+ MacOSNativeWebViewProps
|
|
63
|
+> {}
|
|
64
|
+declare const NativeWebViewMacOSBase: Constructor<NativeMethodsMixin> &
|
|
65
|
+ typeof NativeWebViewMacOSComponent;
|
|
66
|
+export class NativeWebViewMacOS extends NativeWebViewMacOSBase {}
|
|
67
|
+
|
60
|
68
|
// eslint-disable-next-line react/prefer-stateless-function
|
61
|
69
|
declare class NativeWebViewAndroidComponent extends Component<
|
62
|
70
|
AndroidNativeWebViewProps
|
|
@@ -104,7 +112,7 @@ export interface WebViewMessage extends WebViewNativeEvent {
|
104
|
112
|
|
105
|
113
|
export interface WebViewError extends WebViewNativeEvent {
|
106
|
114
|
/**
|
107
|
|
- * `domain` is only used on iOS
|
|
115
|
+ * `domain` is only used on iOS and macOS
|
108
|
116
|
*/
|
109
|
117
|
domain?: string;
|
110
|
118
|
code: number;
|
|
@@ -195,7 +203,7 @@ export interface WebViewNativeConfig {
|
195
|
203
|
/**
|
196
|
204
|
* The native component used to render the WebView.
|
197
|
205
|
*/
|
198
|
|
- component?: typeof NativeWebViewIOS | typeof NativeWebViewAndroid;
|
|
206
|
+ component?: typeof NativeWebViewIOS | typeof NativeWebViewMacOS | typeof NativeWebViewAndroid;
|
199
|
207
|
/**
|
200
|
208
|
* Set props directly on the native component WebView. Enables custom props which the
|
201
|
209
|
* original WebView doesn't pass through.
|
|
@@ -203,7 +211,7 @@ export interface WebViewNativeConfig {
|
203
|
211
|
props?: Object;
|
204
|
212
|
/**
|
205
|
213
|
* Set the ViewManager to use for communication with the native side.
|
206
|
|
- * @platform ios
|
|
214
|
+ * @platform ios, macos
|
207
|
215
|
*/
|
208
|
216
|
viewManager?: ViewManager;
|
209
|
217
|
}
|
|
@@ -281,6 +289,27 @@ export interface IOSNativeWebViewProps extends CommonNativeWebViewProps {
|
281
|
289
|
onContentProcessDidTerminate?: (event: WebViewTerminatedEvent) => void;
|
282
|
290
|
}
|
283
|
291
|
|
|
292
|
+export interface MacOSNativeWebViewProps extends CommonNativeWebViewProps {
|
|
293
|
+ allowingReadAccessToURL?: string;
|
|
294
|
+ allowsBackForwardNavigationGestures?: boolean;
|
|
295
|
+ allowsInlineMediaPlayback?: boolean;
|
|
296
|
+ allowsLinkPreview?: boolean;
|
|
297
|
+ automaticallyAdjustContentInsets?: boolean;
|
|
298
|
+ bounces?: boolean;
|
|
299
|
+ contentInset?: ContentInsetProp;
|
|
300
|
+ contentInsetAdjustmentBehavior?:
|
|
301
|
+ | 'automatic'
|
|
302
|
+ | 'scrollableAxes'
|
|
303
|
+ | 'never'
|
|
304
|
+ | 'always';
|
|
305
|
+ directionalLockEnabled?: boolean;
|
|
306
|
+ hideKeyboardAccessoryView?: boolean;
|
|
307
|
+ pagingEnabled?: boolean;
|
|
308
|
+ scrollEnabled?: boolean;
|
|
309
|
+ useSharedProcessPool?: boolean;
|
|
310
|
+ onContentProcessDidTerminate?: (event: WebViewTerminatedEvent) => void;
|
|
311
|
+}
|
|
312
|
+
|
284
|
313
|
export interface IOSWebViewProps extends WebViewSharedProps {
|
285
|
314
|
/**
|
286
|
315
|
* Does not store any data within the lifetime of the WebView.
|
|
@@ -460,6 +489,147 @@ export interface IOSWebViewProps extends WebViewSharedProps {
|
460
|
489
|
onContentProcessDidTerminate?: (event: WebViewTerminatedEvent) => void;
|
461
|
490
|
}
|
462
|
491
|
|
|
492
|
+export interface MacOSWebViewProps extends WebViewSharedProps {
|
|
493
|
+ /**
|
|
494
|
+ * Does not store any data within the lifetime of the WebView.
|
|
495
|
+ */
|
|
496
|
+ incognito?: boolean;
|
|
497
|
+
|
|
498
|
+ /**
|
|
499
|
+ * Boolean value that determines whether the web view bounces
|
|
500
|
+ * when it reaches the edge of the content. The default value is `true`.
|
|
501
|
+ * @platform macos
|
|
502
|
+ */
|
|
503
|
+ bounces?: boolean;
|
|
504
|
+
|
|
505
|
+ /**
|
|
506
|
+ * Boolean value that determines whether scrolling is enabled in the
|
|
507
|
+ * `WebView`. The default value is `true`.
|
|
508
|
+ * @platform macos
|
|
509
|
+ */
|
|
510
|
+ scrollEnabled?: boolean;
|
|
511
|
+
|
|
512
|
+ /**
|
|
513
|
+ * If the value of this property is true, the scroll view stops on multiples
|
|
514
|
+ * of the scroll view’s bounds when the user scrolls.
|
|
515
|
+ * The default value is false.
|
|
516
|
+ * @platform macos
|
|
517
|
+ */
|
|
518
|
+ pagingEnabled?: boolean;
|
|
519
|
+
|
|
520
|
+ /**
|
|
521
|
+ * Controls whether to adjust the content inset for web views that are
|
|
522
|
+ * placed behind a navigation bar, tab bar, or toolbar. The default value
|
|
523
|
+ * is `true`.
|
|
524
|
+ * @platform macos
|
|
525
|
+ */
|
|
526
|
+ automaticallyAdjustContentInsets?: boolean;
|
|
527
|
+
|
|
528
|
+ /**
|
|
529
|
+ * This property specifies how the safe area insets are used to modify the
|
|
530
|
+ * content area of the scroll view. The default value of this property is
|
|
531
|
+ * "never". Available on iOS 11 and later.
|
|
532
|
+ */
|
|
533
|
+ contentInsetAdjustmentBehavior?:
|
|
534
|
+ | 'automatic'
|
|
535
|
+ | 'scrollableAxes'
|
|
536
|
+ | 'never'
|
|
537
|
+ | 'always';
|
|
538
|
+
|
|
539
|
+ /**
|
|
540
|
+ * The amount by which the web view content is inset from the edges of
|
|
541
|
+ * the scroll view. Defaults to {top: 0, left: 0, bottom: 0, right: 0}.
|
|
542
|
+ * @platform macos
|
|
543
|
+ */
|
|
544
|
+ contentInset?: ContentInsetProp;
|
|
545
|
+
|
|
546
|
+ /**
|
|
547
|
+ * Boolean that determines whether HTML5 videos play inline or use the
|
|
548
|
+ * native full-screen controller. The default value is `false`.
|
|
549
|
+ *
|
|
550
|
+ * **NOTE** : In order for video to play inline, not only does this
|
|
551
|
+ * property need to be set to `true`, but the video element in the HTML
|
|
552
|
+ * document must also include the `webkit-playsinline` attribute.
|
|
553
|
+ * @platform macos
|
|
554
|
+ */
|
|
555
|
+ allowsInlineMediaPlayback?: boolean;
|
|
556
|
+ /**
|
|
557
|
+ * Hide the accessory view when the keyboard is open. Default is false to be
|
|
558
|
+ * backward compatible.
|
|
559
|
+ */
|
|
560
|
+ hideKeyboardAccessoryView?: boolean;
|
|
561
|
+ /**
|
|
562
|
+ * A Boolean value indicating whether horizontal swipe gestures will trigger
|
|
563
|
+ * back-forward list navigations.
|
|
564
|
+ */
|
|
565
|
+ allowsBackForwardNavigationGestures?: boolean;
|
|
566
|
+ /**
|
|
567
|
+ * A Boolean value indicating whether WebKit WebView should be created using a shared
|
|
568
|
+ * process pool, enabling WebViews to share cookies and localStorage between each other.
|
|
569
|
+ * Default is true but can be set to false for backwards compatibility.
|
|
570
|
+ * @platform macos
|
|
571
|
+ */
|
|
572
|
+ useSharedProcessPool?: boolean;
|
|
573
|
+
|
|
574
|
+ /**
|
|
575
|
+ * The custom user agent string.
|
|
576
|
+ */
|
|
577
|
+ userAgent?: string;
|
|
578
|
+
|
|
579
|
+ /**
|
|
580
|
+ * A Boolean value that determines whether pressing on a link
|
|
581
|
+ * displays a preview of the destination for the link.
|
|
582
|
+ *
|
|
583
|
+ * This property is available on devices that support Force Touch trackpad.
|
|
584
|
+ * @platform macos
|
|
585
|
+ */
|
|
586
|
+ allowsLinkPreview?: boolean;
|
|
587
|
+
|
|
588
|
+ /**
|
|
589
|
+ * Set true if shared cookies from HTTPCookieStorage should used for every load request.
|
|
590
|
+ * The default value is `false`.
|
|
591
|
+ * @platform macos
|
|
592
|
+ */
|
|
593
|
+ sharedCookiesEnabled?: boolean;
|
|
594
|
+
|
|
595
|
+ /**
|
|
596
|
+ * A Boolean value that determines whether scrolling is disabled in a particular direction.
|
|
597
|
+ * The default value is `true`.
|
|
598
|
+ * @platform macos
|
|
599
|
+ */
|
|
600
|
+ directionalLockEnabled?: boolean;
|
|
601
|
+
|
|
602
|
+ /**
|
|
603
|
+ * A Boolean value indicating whether web content can programmatically display the keyboard.
|
|
604
|
+ *
|
|
605
|
+ * When this property is set to true, the user must explicitly tap the elements in the
|
|
606
|
+ * web view to display the keyboard (or other relevant input view) for that element.
|
|
607
|
+ * When set to false, a focus event on an element causes the input view to be displayed
|
|
608
|
+ * and associated with that element automatically.
|
|
609
|
+ *
|
|
610
|
+ * The default value is `true`.
|
|
611
|
+ * @platform macos
|
|
612
|
+ */
|
|
613
|
+ keyboardDisplayRequiresUserAction?: boolean;
|
|
614
|
+
|
|
615
|
+ /**
|
|
616
|
+ * A String value that indicates which URLs the WebView's file can then
|
|
617
|
+ * reference in scripts, AJAX requests, and CSS imports. This is only used
|
|
618
|
+ * for WebViews that are loaded with a source.uri set to a `'file://'` URL.
|
|
619
|
+ *
|
|
620
|
+ * If not provided, the default is to only allow read access to the URL
|
|
621
|
+ * provided in source.uri itself.
|
|
622
|
+ * @platform macos
|
|
623
|
+ */
|
|
624
|
+ allowingReadAccessToURL?: string;
|
|
625
|
+
|
|
626
|
+ /**
|
|
627
|
+ * Function that is invoked when the WebKit WebView content process gets terminated.
|
|
628
|
+ * @platform macos
|
|
629
|
+ */
|
|
630
|
+ onContentProcessDidTerminate?: (event: WebViewTerminatedEvent) => void;
|
|
631
|
+}
|
|
632
|
+
|
463
|
633
|
export interface AndroidWebViewProps extends WebViewSharedProps {
|
464
|
634
|
onNavigationStateChange?: (event: WebViewNavigation) => void;
|
465
|
635
|
onContentSizeChange?: (event: WebViewEvent) => void;
|