@office-iss/react-native-win32 0.0.0-canary.285 → 0.0.0-canary.287
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/.flowconfig +1 -1
- package/CHANGELOG.json +31 -1
- package/CHANGELOG.md +24 -8
- package/IntegrationTests/LayoutEventsTest.js +16 -11
- package/Libraries/Alert/Alert.js +51 -5
- package/Libraries/Alert/Alert.win32.js +50 -5
- package/Libraries/Animated/animations/Animation.js +1 -4
- package/Libraries/Animated/nodes/AnimatedObject.js +1 -0
- package/Libraries/AppState/AppState.js +24 -7
- package/Libraries/BatchedBridge/MessageQueue.js +3 -2
- package/Libraries/BatchedBridge/NativeModules.js +2 -1
- package/Libraries/Blob/Blob.js +1 -1
- package/Libraries/Blob/FileReader_old.js +9 -9
- package/Libraries/Blob/URL.js +1 -1
- package/Libraries/Blob/URLSearchParams.js +9 -9
- package/Libraries/Components/Button.js +3 -3
- package/Libraries/Components/Button.win32.js +3 -6
- package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -1
- package/Libraries/Components/Pressable/Pressable.js +9 -9
- package/Libraries/Components/Pressable/Pressable.win32.js +9 -9
- package/Libraries/Components/Pressable/useAndroidRippleForView.js +7 -7
- package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +7 -1
- package/Libraries/Components/RefreshControl/RefreshControl.js +1 -1
- package/Libraries/Components/ScrollView/ScrollView.js +74 -59
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +5 -5
- package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +5 -2
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +3 -3
- package/Libraries/Components/Switch/Switch.js +2 -2
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +3 -1
- package/Libraries/Components/TextInput/TextInput.flow.js +15 -13
- package/Libraries/Components/TextInput/TextInput.js +16 -14
- package/Libraries/Components/TextInput/TextInput.win32.js +16 -14
- package/Libraries/Components/TextInput/TextInputState.js +1 -1
- package/Libraries/Components/TextInput/TextInputState.win32.js +1 -1
- package/Libraries/Components/Touchable/Touchable.js +16 -16
- package/Libraries/Components/Touchable/Touchable.win32.js +16 -16
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +2 -2
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +7 -7
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +16 -2
- package/Libraries/Components/View/ViewAccessibility.js +243 -3
- package/Libraries/Components/View/ViewAccessibility.win32.js +243 -3
- package/Libraries/Components/View/ViewPropTypes.d.ts +14 -14
- package/Libraries/Components/View/ViewPropTypes.js +35 -226
- package/Libraries/Components/View/ViewPropTypes.win32.js +37 -229
- package/Libraries/Core/Devtools/symbolicateStackTrace.js +1 -1
- package/Libraries/Core/InitializeCore.js +2 -1
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/Libraries/Core/Timers/JSTimers.js +6 -4
- package/Libraries/Core/setUpBatchedBridge.js +9 -5
- package/Libraries/Core/setUpDeveloperTools.js +3 -29
- package/Libraries/Core/setUpReactDevTools.js +1 -1
- package/Libraries/Core/setUpReactRefresh.js +1 -1
- package/Libraries/Core/setUpXHR.js +5 -2
- package/Libraries/EventEmitter/NativeEventEmitter.js +8 -2
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +5 -4
- package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +3 -2
- package/Libraries/Events/CustomEvent.js +1 -1
- package/Libraries/Events/EventPolyfill.js +2 -2
- package/Libraries/Image/AssetSourceResolver.js +1 -1
- package/Libraries/Image/ImageProps.js +8 -5
- package/Libraries/Image/ImageViewNativeComponent.js +1 -1
- package/Libraries/Image/resolveAssetSource.win32.js +1 -1
- package/Libraries/Interaction/InteractionManager.js +1 -1
- package/Libraries/Interaction/InteractionManagerStub.js +9 -1
- package/Libraries/Interaction/JSEventLoopWatchdog.js +1 -1
- package/Libraries/Interaction/PanResponder.js +32 -29
- package/Libraries/Interaction/TaskQueue.js +1 -1
- package/Libraries/LayoutAnimation/LayoutAnimation.js +18 -4
- package/Libraries/Lists/FillRateHelper.js +3 -3
- package/Libraries/Lists/FlatList.js +13 -13
- package/Libraries/Lists/SectionList.js +3 -1
- package/Libraries/Lists/SectionListModern.js +3 -1
- package/Libraries/Lists/ViewabilityHelper.js +3 -2
- package/Libraries/Lists/VirtualizeUtils.js +3 -3
- package/Libraries/Lists/VirtualizedList.js +5 -5
- package/Libraries/Lists/VirtualizedListContext.js +4 -2
- package/Libraries/Lists/VirtualizedSectionList.js +4 -2
- package/Libraries/LogBox/LogBox.js +9 -1
- package/Libraries/LogBox/UI/AnsiHighlight.js +7 -3
- package/Libraries/LogBox/UI/LogBoxButton.js +4 -2
- package/Libraries/LogBox/UI/LogBoxInspector.js +1 -1
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +11 -3
- package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +2 -0
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +8 -2
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +8 -2
- package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +2 -0
- package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +4 -2
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +3 -1
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.win32.js +3 -1
- package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +2 -2
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +5 -3
- package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.win32.js +5 -3
- package/Libraries/LogBox/UI/LogBoxNotification.js +6 -2
- package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +3 -1
- package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +2 -0
- package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +4 -1
- package/Libraries/Modal/Modal.js +74 -81
- package/Libraries/NativeComponent/BaseViewConfig.android.js +16 -6
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +19 -9
- package/Libraries/NativeComponent/BaseViewConfig.win32.js +19 -9
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +5 -1
- package/Libraries/Network/FormData.js +1 -1
- package/Libraries/Network/XMLHttpRequest.js +5 -6
- package/Libraries/Network/XMLHttpRequest_new.js +3 -2
- package/Libraries/Network/XMLHttpRequest_old.js +3 -2
- package/Libraries/Network/convertRequestBody.js +4 -3
- package/Libraries/Network/fetch.js +4 -3
- package/Libraries/PermissionsAndroid/PermissionsAndroid.js +63 -61
- package/Libraries/Pressability/Pressability.js +23 -23
- package/Libraries/Pressability/Pressability.win32.js +23 -23
- package/Libraries/PushNotificationIOS/PushNotificationIOS.js +119 -16
- package/Libraries/ReactNative/AppContainer-dev.js +2 -1
- package/Libraries/ReactNative/AppRegistry.js +3 -3
- package/Libraries/ReactNative/PaperUIManager.js +3 -2
- package/Libraries/ReactNative/PaperUIManager.win32.js +3 -2
- package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +2 -1
- package/Libraries/ReactNative/RootTag.js +1 -1
- package/Libraries/ReactNative/getNativeComponentAttributes.js +4 -4
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +6 -4
- package/Libraries/Renderer/shims/ReactNativeTypes.js +4 -5
- package/Libraries/Settings/Settings.js +2 -2
- package/Libraries/Settings/Settings.win32.js +2 -2
- package/Libraries/Share/Share.js +10 -3
- package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.js +1 -1
- package/Libraries/StyleSheet/StyleSheet.win32.js +2 -2
- package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +1 -1
- package/Libraries/StyleSheet/flattenStyle.js +1 -1
- package/Libraries/StyleSheet/normalizeColor.js +1 -1
- package/Libraries/StyleSheet/processAspectRatio.js +1 -1
- package/Libraries/StyleSheet/processColor.js +2 -2
- package/Libraries/StyleSheet/processFilter.js +4 -0
- package/Libraries/StyleSheet/processFontVariant.js +1 -1
- package/Libraries/StyleSheet/processTransform.js +1 -1
- package/Libraries/StyleSheet/setNormalizedColorAlpha.js +1 -1
- package/Libraries/Text/Text.js +15 -15
- package/Libraries/Text/Text.win32.js +15 -15
- package/Libraries/Text/TextAncestor.js +1 -1
- package/Libraries/Text/TextNativeComponent.js +2 -2
- package/Libraries/Text/TextNativeComponent.win32.js +2 -2
- package/Libraries/Text/TextProps.js +11 -11
- package/Libraries/Text/TextProps.win32.js +11 -11
- package/Libraries/Types/CodegenTypes.js +3 -3
- package/Libraries/Types/CoreEventTypes.js +103 -72
- package/Libraries/Types/CoreEventTypes.win32.js +115 -79
- package/Libraries/UTFSequence.js +2 -1
- package/Libraries/Utilities/BackHandler.android.js +1 -1
- package/Libraries/Utilities/BackHandler.ios.js +5 -5
- package/Libraries/Utilities/BackHandler.win32.js +1 -1
- package/Libraries/Utilities/DevLoadingView.js +1 -1
- package/Libraries/Utilities/DevSettings.js +1 -1
- package/Libraries/Utilities/DeviceInfo.js +1 -1
- package/Libraries/Utilities/DeviceInfo.win32.js +1 -1
- package/Libraries/Utilities/FeatureDetection.js +2 -4
- package/Libraries/Utilities/FocusManager.win32.js +3 -3
- package/Libraries/Utilities/GlobalPerformanceLogger.js +1 -1
- package/Libraries/Utilities/HMRClient.js +5 -33
- package/Libraries/Utilities/HMRClientProdShim.js +1 -2
- package/Libraries/Utilities/Platform.android.js +2 -2
- package/Libraries/Utilities/Platform.ios.js +2 -2
- package/Libraries/Utilities/Platform.win32.js +2 -2
- package/Libraries/Utilities/{Platform.flow.win32.js → PlatformTypes.js} +1 -0
- package/Libraries/Utilities/PolyfillFunctions.js +3 -5
- package/Libraries/Utilities/RCTLog.js +1 -1
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
- package/Libraries/Utilities/SceneTracker.js +1 -1
- package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +2 -2
- package/Libraries/Utilities/binaryToBase64.js +1 -1
- package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +1 -1
- package/Libraries/Utilities/defineLazyObjectProperty.js +1 -1
- package/Libraries/Utilities/differ/deepDiffer.js +3 -3
- package/Libraries/Utilities/differ/insetsDiffer.js +3 -3
- package/Libraries/Utilities/differ/matricesDiffer.js +3 -6
- package/Libraries/Utilities/differ/pointsDiffer.js +3 -3
- package/Libraries/Utilities/differ/sizesDiffer.js +3 -3
- package/Libraries/Utilities/dismissKeyboard.js +1 -1
- package/Libraries/Utilities/infoLog.js +1 -1
- package/Libraries/Utilities/logError.js +1 -1
- package/Libraries/Utilities/mapWithSeparator.js +1 -1
- package/Libraries/Utilities/warnOnce.js +1 -1
- package/Libraries/Vibration/Vibration.js +3 -3
- package/Libraries/vendor/emitter/EventEmitter.js +21 -9
- package/index.js +113 -199
- package/index.win32.js +21 -13
- package/jest/setup.js +9 -2
- package/overrides.json +35 -34
- package/package.json +15 -16
- package/src/private/devmenu/DevMenu.js +1 -1
- package/src/private/featureflags/ReactNativeFeatureFlags.js +22 -23
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +4 -7
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +5 -4
- package/src/private/inspector/BoxInspector.js +1 -1
- package/src/private/inspector/ElementBox.js +3 -2
- package/src/private/inspector/ElementProperties.js +5 -3
- package/src/private/inspector/Inspector.js +2 -2
- package/src/private/inspector/InspectorOverlay.js +4 -4
- package/src/private/inspector/InspectorPanel.js +1 -1
- package/src/private/inspector/NetworkOverlay.js +4 -4
- package/src/private/inspector/PerformanceOverlay.js +3 -2
- package/src/private/inspector/ReactDevToolsOverlay.js +3 -3
- package/src/private/inspector/StyleInspector.js +1 -1
- package/src/private/inspector/XHRInterceptor.js +5 -2
- package/src/private/renderer/errorhandling/ErrorHandlers.js +2 -1
- package/src/private/specs_DEPRECATED/modules/NativeExceptionsManager.js +1 -1
- package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +5 -4
- package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +92 -19
- package/src/private/webapis/dom/events/CustomEvent.js +5 -7
- package/src/private/webapis/dom/events/Event.js +5 -5
- package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -0
- package/src/private/webapis/html/events/MessageEvent.js +12 -19
- package/src/private/webapis/websockets/events/CloseEvent.js +9 -11
- package/src/private/webapis/xhr/events/ProgressEvent.js +9 -11
- package/src-win/Libraries/Components/View/ViewPropTypes.d.ts +14 -14
- package/Libraries/Alert/Alert.flow.js +0 -62
- package/Libraries/Alert/RCTAlertManager.flow.js +0 -20
- package/Libraries/Utilities/Platform.flow.js +0 -91
- package/flow/react.js +0 -15
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
import type {PartialViewConfigWithoutName} from './PlatformBaseViewConfig';
|
|
12
12
|
|
|
13
|
+
import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';
|
|
14
|
+
import NativeReactNativeFeatureFlags from '../../src/private/featureflags/specs/NativeReactNativeFeatureFlags';
|
|
13
15
|
import ReactNativeStyleAttributes from '../Components/View/ReactNativeStyleAttributes';
|
|
14
16
|
import {
|
|
15
17
|
ConditionallyIgnoredEventHandlers,
|
|
@@ -200,13 +202,13 @@ const validAttributesForNonEventProps = {
|
|
|
200
202
|
backfaceVisibility: true,
|
|
201
203
|
opacity: true,
|
|
202
204
|
shadowColor: {process: require('../StyleSheet/processColor').default},
|
|
203
|
-
shadowOffset: {diff: require('../Utilities/differ/sizesDiffer')},
|
|
205
|
+
shadowOffset: {diff: require('../Utilities/differ/sizesDiffer').default},
|
|
204
206
|
shadowOpacity: true,
|
|
205
207
|
shadowRadius: true,
|
|
206
208
|
needsOffscreenAlphaCompositing: true,
|
|
207
209
|
overflow: true,
|
|
208
210
|
shouldRasterizeIOS: true,
|
|
209
|
-
transform: {diff: require('../Utilities/differ/matricesDiffer')},
|
|
211
|
+
transform: {diff: require('../Utilities/differ/matricesDiffer').default},
|
|
210
212
|
transformOrigin: true,
|
|
211
213
|
accessibilityRole: true,
|
|
212
214
|
accessibilityState: true,
|
|
@@ -219,15 +221,23 @@ const validAttributesForNonEventProps = {
|
|
|
219
221
|
borderCurve: true,
|
|
220
222
|
borderWidth: true,
|
|
221
223
|
borderStyle: true,
|
|
222
|
-
hitSlop: {diff: require('../Utilities/differ/insetsDiffer')},
|
|
224
|
+
hitSlop: {diff: require('../Utilities/differ/insetsDiffer').default},
|
|
223
225
|
collapsable: true,
|
|
224
226
|
collapsableChildren: true,
|
|
225
|
-
experimental_filter:
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
227
|
+
experimental_filter:
|
|
228
|
+
NativeReactNativeFeatureFlags != null &&
|
|
229
|
+
ReactNativeFeatureFlags.enableNativeCSSParsing()
|
|
230
|
+
? true
|
|
231
|
+
: {
|
|
232
|
+
process: require('../StyleSheet/processFilter').default,
|
|
233
|
+
},
|
|
234
|
+
boxShadow:
|
|
235
|
+
NativeReactNativeFeatureFlags != null &&
|
|
236
|
+
ReactNativeFeatureFlags.enableNativeCSSParsing()
|
|
237
|
+
? true
|
|
238
|
+
: {
|
|
239
|
+
process: require('../StyleSheet/processBoxShadow').default,
|
|
240
|
+
},
|
|
231
241
|
mixBlendMode: true,
|
|
232
242
|
isolation: true,
|
|
233
243
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
import * as ReactNativeFeatureFlags from '../../src/private/featureflags/ReactNativeFeatureFlags';
|
|
11
12
|
import {type ViewConfig} from '../Renderer/shims/ReactNativeTypes';
|
|
12
13
|
|
|
13
14
|
export type Difference =
|
|
@@ -128,7 +129,10 @@ function accumulateDifferences(
|
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
131
|
|
|
131
|
-
if (
|
|
132
|
+
if (
|
|
133
|
+
nativeValue !== staticValue &&
|
|
134
|
+
!ReactNativeFeatureFlags.enableNativeCSSParsing()
|
|
135
|
+
) {
|
|
132
136
|
differences.push({
|
|
133
137
|
path: [...path, nativeKey],
|
|
134
138
|
type: 'unequal',
|
|
@@ -16,9 +16,8 @@ export type * from './XMLHttpRequest_old';
|
|
|
16
16
|
// be read before apps have a chance to set overrides.
|
|
17
17
|
const useBuiltInEventTarget = global.RN$useBuiltInEventTarget?.();
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
) as XMLHttpRequest;
|
|
19
|
+
export default (useBuiltInEventTarget
|
|
20
|
+
? // $FlowExpectedError[incompatible-cast]
|
|
21
|
+
require('./XMLHttpRequest_new').default
|
|
22
|
+
: // $FlowExpectedError[incompatible-cast]
|
|
23
|
+
require('./XMLHttpRequest_old').default) as XMLHttpRequest;
|
|
@@ -27,7 +27,8 @@ import ProgressEvent from '../../src/private/webapis/xhr/events/ProgressEvent';
|
|
|
27
27
|
import {type EventSubscription} from '../vendor/emitter/EventEmitter';
|
|
28
28
|
|
|
29
29
|
const BlobManager = require('../Blob/BlobManager').default;
|
|
30
|
-
const GlobalPerformanceLogger =
|
|
30
|
+
const GlobalPerformanceLogger =
|
|
31
|
+
require('../Utilities/GlobalPerformanceLogger').default;
|
|
31
32
|
const RCTNetworking = require('./RCTNetworking').default;
|
|
32
33
|
const base64 = require('base64-js');
|
|
33
34
|
const invariant = require('invariant');
|
|
@@ -787,4 +788,4 @@ class XMLHttpRequest extends EventTarget {
|
|
|
787
788
|
}
|
|
788
789
|
}
|
|
789
790
|
|
|
790
|
-
|
|
791
|
+
export default XMLHttpRequest;
|
|
@@ -16,7 +16,8 @@ import {type EventSubscription} from '../vendor/emitter/EventEmitter';
|
|
|
16
16
|
import EventTarget from 'event-target-shim';
|
|
17
17
|
|
|
18
18
|
const BlobManager = require('../Blob/BlobManager').default;
|
|
19
|
-
const GlobalPerformanceLogger =
|
|
19
|
+
const GlobalPerformanceLogger =
|
|
20
|
+
require('../Utilities/GlobalPerformanceLogger').default;
|
|
20
21
|
const RCTNetworking = require('./RCTNetworking').default;
|
|
21
22
|
const base64 = require('base64-js');
|
|
22
23
|
const invariant = require('invariant');
|
|
@@ -694,4 +695,4 @@ class XMLHttpRequest extends (EventTarget(...XHR_EVENTS): typeof EventTarget) {
|
|
|
694
695
|
}
|
|
695
696
|
}
|
|
696
697
|
|
|
697
|
-
|
|
698
|
+
export default XMLHttpRequest;
|
|
@@ -11,10 +11,11 @@
|
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
13
|
import typeof BlobT from '../Blob/Blob';
|
|
14
|
+
import typeof FormDataT from './FormData';
|
|
14
15
|
|
|
15
16
|
const Blob: BlobT = require('../Blob/Blob').default;
|
|
16
|
-
const binaryToBase64 = require('../Utilities/binaryToBase64');
|
|
17
|
-
const FormData = require('./FormData');
|
|
17
|
+
const binaryToBase64 = require('../Utilities/binaryToBase64').default;
|
|
18
|
+
const FormData: FormDataT = require('./FormData').default;
|
|
18
19
|
|
|
19
20
|
export type RequestBody =
|
|
20
21
|
| string
|
|
@@ -42,4 +43,4 @@ function convertRequestBody(body: RequestBody): Object {
|
|
|
42
43
|
return body;
|
|
43
44
|
}
|
|
44
45
|
|
|
45
|
-
|
|
46
|
+
export default convertRequestBody;
|
|
@@ -8,12 +8,13 @@
|
|
|
8
8
|
* @format
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
/* globals Headers, Request, Response */
|
|
12
|
-
|
|
13
11
|
'use strict';
|
|
14
12
|
|
|
15
13
|
// side-effectful require() to put fetch,
|
|
16
14
|
// Headers, Request, Response in global scope
|
|
17
15
|
require('whatwg-fetch');
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
export const fetch = global.fetch;
|
|
18
|
+
export const Headers = global.Headers;
|
|
19
|
+
export const Request = global.Request;
|
|
20
|
+
export const Response = global.Response;
|
|
@@ -8,16 +8,11 @@
|
|
|
8
8
|
* @flow strict
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type {
|
|
12
|
-
PermissionStatus,
|
|
13
|
-
PermissionType,
|
|
14
|
-
} from './NativePermissionsAndroid';
|
|
15
|
-
|
|
16
11
|
import NativeDialogManagerAndroid from '../NativeModules/specs/NativeDialogManagerAndroid';
|
|
17
12
|
import NativePermissionsAndroid from './NativePermissionsAndroid';
|
|
18
13
|
import invariant from 'invariant';
|
|
19
14
|
|
|
20
|
-
const Platform = require('../Utilities/Platform');
|
|
15
|
+
const Platform = require('../Utilities/Platform').default;
|
|
21
16
|
|
|
22
17
|
export type Rationale = {
|
|
23
18
|
title: string,
|
|
@@ -34,6 +29,55 @@ const PERMISSION_REQUEST_RESULT = Object.freeze({
|
|
|
34
29
|
NEVER_ASK_AGAIN: 'never_ask_again',
|
|
35
30
|
});
|
|
36
31
|
|
|
32
|
+
type PermissionsType = $ReadOnly<{
|
|
33
|
+
READ_CALENDAR: 'android.permission.READ_CALENDAR',
|
|
34
|
+
WRITE_CALENDAR: 'android.permission.WRITE_CALENDAR',
|
|
35
|
+
CAMERA: 'android.permission.CAMERA',
|
|
36
|
+
READ_CONTACTS: 'android.permission.READ_CONTACTS',
|
|
37
|
+
WRITE_CONTACTS: 'android.permission.WRITE_CONTACTS',
|
|
38
|
+
GET_ACCOUNTS: 'android.permission.GET_ACCOUNTS',
|
|
39
|
+
ACCESS_FINE_LOCATION: 'android.permission.ACCESS_FINE_LOCATION',
|
|
40
|
+
ACCESS_COARSE_LOCATION: 'android.permission.ACCESS_COARSE_LOCATION',
|
|
41
|
+
ACCESS_BACKGROUND_LOCATION: 'android.permission.ACCESS_BACKGROUND_LOCATION',
|
|
42
|
+
RECORD_AUDIO: 'android.permission.RECORD_AUDIO',
|
|
43
|
+
READ_PHONE_STATE: 'android.permission.READ_PHONE_STATE',
|
|
44
|
+
CALL_PHONE: 'android.permission.CALL_PHONE',
|
|
45
|
+
READ_CALL_LOG: 'android.permission.READ_CALL_LOG',
|
|
46
|
+
WRITE_CALL_LOG: 'android.permission.WRITE_CALL_LOG',
|
|
47
|
+
ADD_VOICEMAIL: 'com.android.voicemail.permission.ADD_VOICEMAIL',
|
|
48
|
+
READ_VOICEMAIL: 'com.android.voicemail.permission.READ_VOICEMAIL',
|
|
49
|
+
WRITE_VOICEMAIL: 'com.android.voicemail.permission.WRITE_VOICEMAIL',
|
|
50
|
+
USE_SIP: 'android.permission.USE_SIP',
|
|
51
|
+
PROCESS_OUTGOING_CALLS: 'android.permission.PROCESS_OUTGOING_CALLS',
|
|
52
|
+
BODY_SENSORS: 'android.permission.BODY_SENSORS',
|
|
53
|
+
BODY_SENSORS_BACKGROUND: 'android.permission.BODY_SENSORS_BACKGROUND',
|
|
54
|
+
SEND_SMS: 'android.permission.SEND_SMS',
|
|
55
|
+
RECEIVE_SMS: 'android.permission.RECEIVE_SMS',
|
|
56
|
+
READ_SMS: 'android.permission.READ_SMS',
|
|
57
|
+
RECEIVE_WAP_PUSH: 'android.permission.RECEIVE_WAP_PUSH',
|
|
58
|
+
RECEIVE_MMS: 'android.permission.RECEIVE_MMS',
|
|
59
|
+
READ_EXTERNAL_STORAGE: 'android.permission.READ_EXTERNAL_STORAGE',
|
|
60
|
+
READ_MEDIA_IMAGES: 'android.permission.READ_MEDIA_IMAGES',
|
|
61
|
+
READ_MEDIA_VIDEO: 'android.permission.READ_MEDIA_VIDEO',
|
|
62
|
+
READ_MEDIA_AUDIO: 'android.permission.READ_MEDIA_AUDIO',
|
|
63
|
+
READ_MEDIA_VISUAL_USER_SELECTED: 'android.permission.READ_MEDIA_VISUAL_USER_SELECTED',
|
|
64
|
+
WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE',
|
|
65
|
+
BLUETOOTH_CONNECT: 'android.permission.BLUETOOTH_CONNECT',
|
|
66
|
+
BLUETOOTH_SCAN: 'android.permission.BLUETOOTH_SCAN',
|
|
67
|
+
BLUETOOTH_ADVERTISE: 'android.permission.BLUETOOTH_ADVERTISE',
|
|
68
|
+
ACCESS_MEDIA_LOCATION: 'android.permission.ACCESS_MEDIA_LOCATION',
|
|
69
|
+
ACCEPT_HANDOVER: 'android.permission.ACCEPT_HANDOVER',
|
|
70
|
+
ACTIVITY_RECOGNITION: 'android.permission.ACTIVITY_RECOGNITION',
|
|
71
|
+
ANSWER_PHONE_CALLS: 'android.permission.ANSWER_PHONE_CALLS',
|
|
72
|
+
READ_PHONE_NUMBERS: 'android.permission.READ_PHONE_NUMBERS',
|
|
73
|
+
UWB_RANGING: 'android.permission.UWB_RANGING',
|
|
74
|
+
POST_NOTIFICATIONS: 'android.permission.POST_NOTIFICATIONS',
|
|
75
|
+
NEARBY_WIFI_DEVICES: 'android.permission.NEARBY_WIFI_DEVICES',
|
|
76
|
+
}>;
|
|
77
|
+
|
|
78
|
+
export type PermissionStatus = 'granted' | 'denied' | 'never_ask_again';
|
|
79
|
+
export type Permission = $Values<PermissionsType>;
|
|
80
|
+
|
|
37
81
|
const PERMISSIONS = Object.freeze({
|
|
38
82
|
READ_CALENDAR: 'android.permission.READ_CALENDAR',
|
|
39
83
|
WRITE_CALENDAR: 'android.permission.WRITE_CALENDAR',
|
|
@@ -79,60 +123,15 @@ const PERMISSIONS = Object.freeze({
|
|
|
79
123
|
UWB_RANGING: 'android.permission.UWB_RANGING',
|
|
80
124
|
POST_NOTIFICATIONS: 'android.permission.POST_NOTIFICATIONS',
|
|
81
125
|
NEARBY_WIFI_DEVICES: 'android.permission.NEARBY_WIFI_DEVICES',
|
|
82
|
-
});
|
|
126
|
+
}) as PermissionsType;
|
|
83
127
|
|
|
84
128
|
/**
|
|
85
129
|
* `PermissionsAndroid` provides access to Android M's new permissions model.
|
|
86
130
|
*
|
|
87
131
|
* See https://reactnative.dev/docs/permissionsandroid
|
|
88
132
|
*/
|
|
89
|
-
|
|
90
133
|
class PermissionsAndroid {
|
|
91
|
-
PERMISSIONS:
|
|
92
|
-
ACCEPT_HANDOVER: string,
|
|
93
|
-
ACCESS_BACKGROUND_LOCATION: string,
|
|
94
|
-
ACCESS_COARSE_LOCATION: string,
|
|
95
|
-
ACCESS_FINE_LOCATION: string,
|
|
96
|
-
ACCESS_MEDIA_LOCATION: string,
|
|
97
|
-
ACTIVITY_RECOGNITION: string,
|
|
98
|
-
ADD_VOICEMAIL: string,
|
|
99
|
-
READ_VOICEMAIL: string,
|
|
100
|
-
WRITE_VOICEMAIL: string,
|
|
101
|
-
ANSWER_PHONE_CALLS: string,
|
|
102
|
-
BLUETOOTH_ADVERTISE: string,
|
|
103
|
-
BLUETOOTH_CONNECT: string,
|
|
104
|
-
BLUETOOTH_SCAN: string,
|
|
105
|
-
BODY_SENSORS: string,
|
|
106
|
-
BODY_SENSORS_BACKGROUND: string,
|
|
107
|
-
CALL_PHONE: string,
|
|
108
|
-
CAMERA: string,
|
|
109
|
-
GET_ACCOUNTS: string,
|
|
110
|
-
NEARBY_WIFI_DEVICES: string,
|
|
111
|
-
POST_NOTIFICATIONS: string,
|
|
112
|
-
PROCESS_OUTGOING_CALLS: string,
|
|
113
|
-
READ_CALENDAR: string,
|
|
114
|
-
READ_CALL_LOG: string,
|
|
115
|
-
READ_CONTACTS: string,
|
|
116
|
-
READ_EXTERNAL_STORAGE: string,
|
|
117
|
-
READ_MEDIA_IMAGES: string,
|
|
118
|
-
READ_MEDIA_VIDEO: string,
|
|
119
|
-
READ_MEDIA_AUDIO: string,
|
|
120
|
-
READ_MEDIA_VISUAL_USER_SELECTED: string,
|
|
121
|
-
READ_PHONE_NUMBERS: string,
|
|
122
|
-
READ_PHONE_STATE: string,
|
|
123
|
-
READ_SMS: string,
|
|
124
|
-
RECEIVE_MMS: string,
|
|
125
|
-
RECEIVE_SMS: string,
|
|
126
|
-
RECEIVE_WAP_PUSH: string,
|
|
127
|
-
RECORD_AUDIO: string,
|
|
128
|
-
SEND_SMS: string,
|
|
129
|
-
USE_SIP: string,
|
|
130
|
-
UWB_RANGING: string,
|
|
131
|
-
WRITE_CALENDAR: string,
|
|
132
|
-
WRITE_CALL_LOG: string,
|
|
133
|
-
WRITE_CONTACTS: string,
|
|
134
|
-
WRITE_EXTERNAL_STORAGE: string,
|
|
135
|
-
}> = PERMISSIONS;
|
|
134
|
+
PERMISSIONS: PermissionsType = PERMISSIONS;
|
|
136
135
|
RESULTS: $ReadOnly<{
|
|
137
136
|
DENIED: 'denied',
|
|
138
137
|
GRANTED: 'granted',
|
|
@@ -147,7 +146,7 @@ class PermissionsAndroid {
|
|
|
147
146
|
*
|
|
148
147
|
* @deprecated
|
|
149
148
|
*/
|
|
150
|
-
checkPermission(permission:
|
|
149
|
+
checkPermission(permission: Permission): Promise<boolean> {
|
|
151
150
|
console.warn(
|
|
152
151
|
'"PermissionsAndroid.checkPermission" is deprecated. Use "PermissionsAndroid.check" instead',
|
|
153
152
|
);
|
|
@@ -172,7 +171,7 @@ class PermissionsAndroid {
|
|
|
172
171
|
*
|
|
173
172
|
* See https://reactnative.dev/docs/permissionsandroid#check
|
|
174
173
|
*/
|
|
175
|
-
check(permission:
|
|
174
|
+
check(permission: Permission): Promise<boolean> {
|
|
176
175
|
if (Platform.OS !== 'android') {
|
|
177
176
|
console.warn(
|
|
178
177
|
'"PermissionsAndroid" module works only for Android platform.',
|
|
@@ -203,7 +202,7 @@ class PermissionsAndroid {
|
|
|
203
202
|
* @deprecated
|
|
204
203
|
*/
|
|
205
204
|
async requestPermission(
|
|
206
|
-
permission:
|
|
205
|
+
permission: Permission,
|
|
207
206
|
rationale?: Rationale,
|
|
208
207
|
): Promise<boolean> {
|
|
209
208
|
console.warn(
|
|
@@ -227,7 +226,7 @@ class PermissionsAndroid {
|
|
|
227
226
|
* See https://reactnative.dev/docs/permissionsandroid#request
|
|
228
227
|
*/
|
|
229
228
|
async request(
|
|
230
|
-
permission:
|
|
229
|
+
permission: Permission,
|
|
231
230
|
rationale?: Rationale,
|
|
232
231
|
): Promise<PermissionStatus> {
|
|
233
232
|
if (Platform.OS !== 'android') {
|
|
@@ -261,11 +260,13 @@ class PermissionsAndroid {
|
|
|
261
260
|
options,
|
|
262
261
|
() => reject(new Error('Error showing rationale')),
|
|
263
262
|
() =>
|
|
263
|
+
// $FlowFixMe[incompatible-call]
|
|
264
264
|
resolve(NativePermissionsAndroid.requestPermission(permission)),
|
|
265
265
|
);
|
|
266
266
|
});
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
|
+
// $FlowFixMe[incompatible-return]
|
|
269
270
|
return NativePermissionsAndroid.requestPermission(permission);
|
|
270
271
|
}
|
|
271
272
|
|
|
@@ -277,8 +278,8 @@ class PermissionsAndroid {
|
|
|
277
278
|
* See https://reactnative.dev/docs/permissionsandroid#requestmultiple
|
|
278
279
|
*/
|
|
279
280
|
requestMultiple(
|
|
280
|
-
permissions: Array<
|
|
281
|
-
): Promise<{[permission:
|
|
281
|
+
permissions: Array<Permission>,
|
|
282
|
+
): Promise<{[permission: Permission]: PermissionStatus, ...}> {
|
|
282
283
|
if (Platform.OS !== 'android') {
|
|
283
284
|
console.warn(
|
|
284
285
|
'"PermissionsAndroid" module works only for Android platform.',
|
|
@@ -290,10 +291,11 @@ class PermissionsAndroid {
|
|
|
290
291
|
NativePermissionsAndroid,
|
|
291
292
|
'PermissionsAndroid is not installed correctly.',
|
|
292
293
|
);
|
|
294
|
+
// $FlowFixMe[incompatible-return]
|
|
295
|
+
// $FlowFixMe[incompatible-call]
|
|
293
296
|
return NativePermissionsAndroid.requestMultiplePermissions(permissions);
|
|
294
297
|
}
|
|
295
298
|
}
|
|
296
299
|
|
|
297
300
|
const PermissionsAndroidInstance: PermissionsAndroid = new PermissionsAndroid();
|
|
298
|
-
|
|
299
|
-
module.exports = PermissionsAndroidInstance;
|
|
301
|
+
export default PermissionsAndroidInstance;
|
|
@@ -13,7 +13,7 @@ import type {
|
|
|
13
13
|
BlurEvent,
|
|
14
14
|
FocusEvent,
|
|
15
15
|
MouseEvent,
|
|
16
|
-
|
|
16
|
+
GestureResponderEvent,
|
|
17
17
|
} from '../Types/CoreEventTypes';
|
|
18
18
|
|
|
19
19
|
import SoundManager from '../Components/Sound/SoundManager';
|
|
@@ -108,27 +108,27 @@ export type PressabilityConfig = $ReadOnly<{
|
|
|
108
108
|
/**
|
|
109
109
|
* Called when a long press gesture has been triggered.
|
|
110
110
|
*/
|
|
111
|
-
onLongPress?: ?(event:
|
|
111
|
+
onLongPress?: ?(event: GestureResponderEvent) => mixed,
|
|
112
112
|
|
|
113
113
|
/**
|
|
114
114
|
* Called when a press gesture has been triggered.
|
|
115
115
|
*/
|
|
116
|
-
onPress?: ?(event:
|
|
116
|
+
onPress?: ?(event: GestureResponderEvent) => mixed,
|
|
117
117
|
|
|
118
118
|
/**
|
|
119
119
|
* Called when the press is activated to provide visual feedback.
|
|
120
120
|
*/
|
|
121
|
-
onPressIn?: ?(event:
|
|
121
|
+
onPressIn?: ?(event: GestureResponderEvent) => mixed,
|
|
122
122
|
|
|
123
123
|
/**
|
|
124
124
|
* Called when the press location moves. (This should rarely be used.)
|
|
125
125
|
*/
|
|
126
|
-
onPressMove?: ?(event:
|
|
126
|
+
onPressMove?: ?(event: GestureResponderEvent) => mixed,
|
|
127
127
|
|
|
128
128
|
/**
|
|
129
129
|
* Called when the press is deactivated to undo visual feedback.
|
|
130
130
|
*/
|
|
131
|
-
onPressOut?: ?(event:
|
|
131
|
+
onPressOut?: ?(event: GestureResponderEvent) => mixed,
|
|
132
132
|
|
|
133
133
|
/**
|
|
134
134
|
* Whether to prevent any other native components from becoming responder
|
|
@@ -139,16 +139,16 @@ export type PressabilityConfig = $ReadOnly<{
|
|
|
139
139
|
|
|
140
140
|
export type EventHandlers = $ReadOnly<{
|
|
141
141
|
onBlur: (event: BlurEvent) => void,
|
|
142
|
-
onClick: (event:
|
|
142
|
+
onClick: (event: GestureResponderEvent) => void,
|
|
143
143
|
onFocus: (event: FocusEvent) => void,
|
|
144
144
|
onMouseEnter?: (event: MouseEvent) => void,
|
|
145
145
|
onMouseLeave?: (event: MouseEvent) => void,
|
|
146
146
|
onPointerEnter?: (event: PointerEvent) => void,
|
|
147
147
|
onPointerLeave?: (event: PointerEvent) => void,
|
|
148
|
-
onResponderGrant: (event:
|
|
149
|
-
onResponderMove: (event:
|
|
150
|
-
onResponderRelease: (event:
|
|
151
|
-
onResponderTerminate: (event:
|
|
148
|
+
onResponderGrant: (event: GestureResponderEvent) => void | boolean,
|
|
149
|
+
onResponderMove: (event: GestureResponderEvent) => void,
|
|
150
|
+
onResponderRelease: (event: GestureResponderEvent) => void,
|
|
151
|
+
onResponderTerminate: (event: GestureResponderEvent) => void,
|
|
152
152
|
onResponderTerminationRequest: () => boolean,
|
|
153
153
|
onStartShouldSetResponder: () => boolean,
|
|
154
154
|
}>;
|
|
@@ -450,7 +450,7 @@ export default class Pressability {
|
|
|
450
450
|
return !disabled ?? true;
|
|
451
451
|
},
|
|
452
452
|
|
|
453
|
-
onResponderGrant: (event:
|
|
453
|
+
onResponderGrant: (event: GestureResponderEvent): void | boolean => {
|
|
454
454
|
event.persist();
|
|
455
455
|
|
|
456
456
|
this._cancelPressOutDelayTimeout();
|
|
@@ -480,7 +480,7 @@ export default class Pressability {
|
|
|
480
480
|
return this._config.blockNativeResponder === true;
|
|
481
481
|
},
|
|
482
482
|
|
|
483
|
-
onResponderMove: (event:
|
|
483
|
+
onResponderMove: (event: GestureResponderEvent): void => {
|
|
484
484
|
const {onPressMove} = this._config;
|
|
485
485
|
if (onPressMove != null) {
|
|
486
486
|
onPressMove(event);
|
|
@@ -515,11 +515,11 @@ export default class Pressability {
|
|
|
515
515
|
}
|
|
516
516
|
},
|
|
517
517
|
|
|
518
|
-
onResponderRelease: (event:
|
|
518
|
+
onResponderRelease: (event: GestureResponderEvent): void => {
|
|
519
519
|
this._receiveSignal('RESPONDER_RELEASE', event);
|
|
520
520
|
},
|
|
521
521
|
|
|
522
|
-
onResponderTerminate: (event:
|
|
522
|
+
onResponderTerminate: (event: GestureResponderEvent): void => {
|
|
523
523
|
this._receiveSignal('RESPONDER_TERMINATED', event);
|
|
524
524
|
},
|
|
525
525
|
|
|
@@ -528,7 +528,7 @@ export default class Pressability {
|
|
|
528
528
|
return cancelable ?? true;
|
|
529
529
|
},
|
|
530
530
|
|
|
531
|
-
onClick: (event:
|
|
531
|
+
onClick: (event: GestureResponderEvent): void => {
|
|
532
532
|
// If event has `pointerType`, it was emitted from a PointerEvent and
|
|
533
533
|
// we should ignore it to avoid triggering `onPress` twice.
|
|
534
534
|
if (event?.nativeEvent?.hasOwnProperty?.('pointerType')) {
|
|
@@ -664,7 +664,7 @@ export default class Pressability {
|
|
|
664
664
|
* Receives a state machine signal, performs side effects of the transition
|
|
665
665
|
* and stores the new state. Validates the transition as well.
|
|
666
666
|
*/
|
|
667
|
-
_receiveSignal(signal: TouchSignal, event:
|
|
667
|
+
_receiveSignal(signal: TouchSignal, event: GestureResponderEvent): void {
|
|
668
668
|
// Especially on iOS, not all events have timestamps associated.
|
|
669
669
|
// For telemetry purposes, this doesn't matter too much, as long as *some* do.
|
|
670
670
|
// Since the native timestamp is integral for logging telemetry, just skip
|
|
@@ -706,7 +706,7 @@ export default class Pressability {
|
|
|
706
706
|
prevState: TouchState,
|
|
707
707
|
nextState: TouchState,
|
|
708
708
|
signal: TouchSignal,
|
|
709
|
-
event:
|
|
709
|
+
event: GestureResponderEvent,
|
|
710
710
|
): void {
|
|
711
711
|
if (isTerminalSignal(signal)) {
|
|
712
712
|
this._touchActivatePosition = null;
|
|
@@ -762,7 +762,7 @@ export default class Pressability {
|
|
|
762
762
|
this._cancelPressDelayTimeout();
|
|
763
763
|
}
|
|
764
764
|
|
|
765
|
-
_activate(event:
|
|
765
|
+
_activate(event: GestureResponderEvent): void {
|
|
766
766
|
const {onPressIn} = this._config;
|
|
767
767
|
const {pageX, pageY} = getTouchFromPressEvent(event);
|
|
768
768
|
this._touchActivatePosition = {pageX, pageY};
|
|
@@ -772,7 +772,7 @@ export default class Pressability {
|
|
|
772
772
|
}
|
|
773
773
|
}
|
|
774
774
|
|
|
775
|
-
_deactivate(event:
|
|
775
|
+
_deactivate(event: GestureResponderEvent): void {
|
|
776
776
|
const {onPressOut} = this._config;
|
|
777
777
|
if (onPressOut != null) {
|
|
778
778
|
const minPressDuration = normalizeDelay(
|
|
@@ -829,7 +829,7 @@ export default class Pressability {
|
|
|
829
829
|
};
|
|
830
830
|
|
|
831
831
|
_isTouchWithinResponderRegion(
|
|
832
|
-
touch: $PropertyType<
|
|
832
|
+
touch: $PropertyType<GestureResponderEvent, 'nativeEvent'>,
|
|
833
833
|
responderRegion: $ReadOnly<{
|
|
834
834
|
bottom: number,
|
|
835
835
|
left: number,
|
|
@@ -874,7 +874,7 @@ export default class Pressability {
|
|
|
874
874
|
);
|
|
875
875
|
}
|
|
876
876
|
|
|
877
|
-
_handleLongPress(event:
|
|
877
|
+
_handleLongPress(event: GestureResponderEvent): void {
|
|
878
878
|
if (
|
|
879
879
|
this._touchState === 'RESPONDER_ACTIVE_PRESS_IN' ||
|
|
880
880
|
this._touchState === 'RESPONDER_ACTIVE_LONG_PRESS_IN'
|
|
@@ -927,7 +927,7 @@ function normalizeDelay(
|
|
|
927
927
|
return Math.max(min, delay ?? fallback);
|
|
928
928
|
}
|
|
929
929
|
|
|
930
|
-
const getTouchFromPressEvent = (event:
|
|
930
|
+
const getTouchFromPressEvent = (event: GestureResponderEvent) => {
|
|
931
931
|
const {changedTouches, touches} = event.nativeEvent;
|
|
932
932
|
|
|
933
933
|
if (touches != null && touches.length > 0) {
|