@react-native-ohos/react-native-reanimated 3.6.5-rc.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.
- package/harmony/reanimated.har +0 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +6 -0
- package/lib/reanimated2/NativeReanimated/NativeReanimated.d.ts +45 -0
- package/lib/reanimated2/NativeReanimated/NativeReanimated.d.ts.map +1 -0
- package/lib/reanimated2/NativeReanimated/NativeReanimated.js +87 -0
- package/package.json +58 -0
- package/src/index.ts +9 -0
- package/src/reanimated2/NativeReanimated/NativeReanimated.ts +238 -0
- package/src/reanimated2/globals.d.ts +114 -0
|
Binary file
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,sCAAsC,CAAC;AACjE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,yCAAyC,CAAC;AAIxD,eAAe,QAAQ,CAAC"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
import * as Animated from 'react-native-reanimated/src/Animated';
|
|
3
|
+
export * from './reanimated2/NativeReanimated/NativeReanimated';
|
|
4
|
+
export * from 'react-native-reanimated/src/reanimated2';
|
|
5
|
+
global._REANIMATED_VERSION_JS = "3.6.0";
|
|
6
|
+
export default Animated;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ShareableRef, ShareableSyncDataHolderRef, Value3D, ValueRotation } from 'react-native-reanimated/src/reanimated2/commonTypes';
|
|
2
|
+
import type { LayoutAnimationFunction, LayoutAnimationType } from 'react-native-reanimated/src/reanimated2/layoutReanimation';
|
|
3
|
+
import type { WorkletRuntime } from 'react-native-reanimated/src/reanimated2/runtimes';
|
|
4
|
+
export interface NativeReanimatedModule {
|
|
5
|
+
installValueUnpacker(valueUnpackerCode: string): void;
|
|
6
|
+
makeShareableClone<T>(value: T, shouldPersistRemote: boolean): ShareableRef<T>;
|
|
7
|
+
makeSynchronizedDataHolder<T>(valueRef: ShareableRef<T>): ShareableSyncDataHolderRef<T>;
|
|
8
|
+
getDataSynchronously<T>(ref: ShareableSyncDataHolderRef<T>): T;
|
|
9
|
+
scheduleOnUI<T>(shareable: ShareableRef<T>): void;
|
|
10
|
+
createWorkletRuntime(name: string, initializer: ShareableRef<() => void>): WorkletRuntime;
|
|
11
|
+
scheduleOnRuntime<T>(workletRuntime: WorkletRuntime, worklet: ShareableRef<T>): void;
|
|
12
|
+
registerEventHandler<T>(eventHandler: ShareableRef<T>, eventName: string, emitterReactTag: number): number;
|
|
13
|
+
unregisterEventHandler(id: number): void;
|
|
14
|
+
getViewProp<T>(viewTag: number, propName: string, callback?: (result: T) => void): Promise<T>;
|
|
15
|
+
enableLayoutAnimations(flag: boolean): void;
|
|
16
|
+
registerSensor(sensorType: number, interval: number, iosReferenceFrame: number, handler: ShareableRef<(data: Value3D | ValueRotation) => void>): number;
|
|
17
|
+
unregisterSensor(sensorId: number): void;
|
|
18
|
+
configureProps(uiProps: string[], nativeProps: string[]): void;
|
|
19
|
+
subscribeForKeyboardEvents(handler: ShareableRef<number>, isStatusBarTranslucent: boolean): number;
|
|
20
|
+
unsubscribeFromKeyboardEvents(listenerId: number): void;
|
|
21
|
+
configureLayoutAnimation(viewTag: number, type: LayoutAnimationType, sharedTransitionTag: string, config: ShareableRef<Keyframe | LayoutAnimationFunction>): void;
|
|
22
|
+
setShouldAnimateExitingForTag(viewTag: number, shouldAnimate: boolean): void;
|
|
23
|
+
}
|
|
24
|
+
export declare class NativeReanimated {
|
|
25
|
+
private InnerNativeModule;
|
|
26
|
+
constructor();
|
|
27
|
+
makeShareableClone<T>(value: T, shouldPersistRemote: boolean): ShareableRef<T>;
|
|
28
|
+
makeSynchronizedDataHolder<T>(valueRef: ShareableRef<T>): ShareableSyncDataHolderRef<T>;
|
|
29
|
+
getDataSynchronously<T>(ref: ShareableSyncDataHolderRef<T>): T;
|
|
30
|
+
scheduleOnUI<T>(shareable: ShareableRef<T>): void;
|
|
31
|
+
createWorkletRuntime(name: string, initializer: ShareableRef<() => void>): WorkletRuntime;
|
|
32
|
+
scheduleOnRuntime<T>(workletRuntime: WorkletRuntime, shareableWorklet: ShareableRef<T>): void;
|
|
33
|
+
registerSensor(sensorType: number, interval: number, iosReferenceFrame: number, handler: ShareableRef<(data: Value3D | ValueRotation) => void>): number;
|
|
34
|
+
unregisterSensor(sensorId: number): void;
|
|
35
|
+
registerEventHandler<T>(eventHandler: ShareableRef<T>, eventName: string, emitterReactTag: number): number;
|
|
36
|
+
unregisterEventHandler(id: number): void;
|
|
37
|
+
getViewProp<T>(viewTag: number, propName: string, callback?: (result: T) => void): Promise<T>;
|
|
38
|
+
configureLayoutAnimation(viewTag: number, type: LayoutAnimationType, sharedTransitionTag: string, config: ShareableRef<Keyframe | LayoutAnimationFunction>): void;
|
|
39
|
+
setShouldAnimateExitingForTag(viewTag: number, shouldAnimate: boolean): void;
|
|
40
|
+
enableLayoutAnimations(flag: boolean): void;
|
|
41
|
+
configureProps(uiProps: string[], nativeProps: string[]): void;
|
|
42
|
+
subscribeForKeyboardEvents(handler: ShareableRef<number>, isStatusBarTranslucent: boolean): number;
|
|
43
|
+
unsubscribeFromKeyboardEvents(listenerId: number): void;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=NativeReanimated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeReanimated.d.ts","sourceRoot":"","sources":["../../../src/reanimated2/NativeReanimated/NativeReanimated.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// RNOH patch: retrieve ReanimatedModule from TurboModuleRegistry and fix imports
|
|
2
|
+
'use strict';
|
|
3
|
+
import { TurboModuleRegistry } from 'react-native';
|
|
4
|
+
import { checkCppVersion } from 'react-native-reanimated/src/reanimated2/platform-specific/checkCppVersion';
|
|
5
|
+
import { jsVersion } from 'react-native-reanimated/src/reanimated2/platform-specific/jsVersion';
|
|
6
|
+
import { getValueUnpackerCode } from 'react-native-reanimated/src/reanimated2/valueUnpacker';
|
|
7
|
+
function assertSingleReanimatedInstance() {
|
|
8
|
+
if (global._REANIMATED_VERSION_JS !== undefined &&
|
|
9
|
+
global._REANIMATED_VERSION_JS !== jsVersion) {
|
|
10
|
+
throw new Error(`[Reanimated] Another instance of Reanimated was detected.
|
|
11
|
+
See \`https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting#another-instance-of-reanimated-was-detected\` for more details. Previous: ${global._REANIMATED_VERSION_JS}, current: ${jsVersion}.`);
|
|
12
|
+
}
|
|
13
|
+
global._REANIMATED_VERSION_JS = jsVersion;
|
|
14
|
+
}
|
|
15
|
+
export class NativeReanimated {
|
|
16
|
+
constructor() {
|
|
17
|
+
// These checks have to split since version checking depend on the execution order
|
|
18
|
+
if (__DEV__) {
|
|
19
|
+
assertSingleReanimatedInstance();
|
|
20
|
+
}
|
|
21
|
+
if (global.__reanimatedModuleProxy === undefined) {
|
|
22
|
+
// RNOH patch
|
|
23
|
+
const ReanimatedModule = TurboModuleRegistry.get('ReanimatedModule');
|
|
24
|
+
ReanimatedModule === null || ReanimatedModule === void 0 ? void 0 : ReanimatedModule.installTurboModule();
|
|
25
|
+
}
|
|
26
|
+
if (global.__reanimatedModuleProxy === undefined) {
|
|
27
|
+
throw new Error(`[Reanimated] Native part of Reanimated doesn't seem to be initialized.
|
|
28
|
+
See https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting#native-part-of-reanimated-doesnt-seem-to-be-initialized for more details.`);
|
|
29
|
+
}
|
|
30
|
+
if (__DEV__) {
|
|
31
|
+
checkCppVersion();
|
|
32
|
+
}
|
|
33
|
+
this.InnerNativeModule = global.__reanimatedModuleProxy;
|
|
34
|
+
this.InnerNativeModule.installValueUnpacker(getValueUnpackerCode());
|
|
35
|
+
}
|
|
36
|
+
makeShareableClone(value, shouldPersistRemote) {
|
|
37
|
+
return this.InnerNativeModule.makeShareableClone(value, shouldPersistRemote);
|
|
38
|
+
}
|
|
39
|
+
makeSynchronizedDataHolder(valueRef) {
|
|
40
|
+
return this.InnerNativeModule.makeSynchronizedDataHolder(valueRef);
|
|
41
|
+
}
|
|
42
|
+
getDataSynchronously(ref) {
|
|
43
|
+
return this.InnerNativeModule.getDataSynchronously(ref);
|
|
44
|
+
}
|
|
45
|
+
scheduleOnUI(shareable) {
|
|
46
|
+
return this.InnerNativeModule.scheduleOnUI(shareable);
|
|
47
|
+
}
|
|
48
|
+
createWorkletRuntime(name, initializer) {
|
|
49
|
+
return this.InnerNativeModule.createWorkletRuntime(name, initializer);
|
|
50
|
+
}
|
|
51
|
+
scheduleOnRuntime(workletRuntime, shareableWorklet) {
|
|
52
|
+
return this.InnerNativeModule.scheduleOnRuntime(workletRuntime, shareableWorklet);
|
|
53
|
+
}
|
|
54
|
+
registerSensor(sensorType, interval, iosReferenceFrame, handler) {
|
|
55
|
+
return this.InnerNativeModule.registerSensor(sensorType, interval, iosReferenceFrame, handler);
|
|
56
|
+
}
|
|
57
|
+
unregisterSensor(sensorId) {
|
|
58
|
+
return this.InnerNativeModule.unregisterSensor(sensorId);
|
|
59
|
+
}
|
|
60
|
+
registerEventHandler(eventHandler, eventName, emitterReactTag) {
|
|
61
|
+
return this.InnerNativeModule.registerEventHandler(eventHandler, eventName, emitterReactTag);
|
|
62
|
+
}
|
|
63
|
+
unregisterEventHandler(id) {
|
|
64
|
+
return this.InnerNativeModule.unregisterEventHandler(id);
|
|
65
|
+
}
|
|
66
|
+
getViewProp(viewTag, propName, callback) {
|
|
67
|
+
return this.InnerNativeModule.getViewProp(viewTag, propName, callback);
|
|
68
|
+
}
|
|
69
|
+
configureLayoutAnimation(viewTag, type, sharedTransitionTag, config) {
|
|
70
|
+
this.InnerNativeModule.configureLayoutAnimation(viewTag, type, sharedTransitionTag, config);
|
|
71
|
+
}
|
|
72
|
+
setShouldAnimateExitingForTag(viewTag, shouldAnimate) {
|
|
73
|
+
this.InnerNativeModule.setShouldAnimateExitingForTag(viewTag, shouldAnimate);
|
|
74
|
+
}
|
|
75
|
+
enableLayoutAnimations(flag) {
|
|
76
|
+
this.InnerNativeModule.enableLayoutAnimations(flag);
|
|
77
|
+
}
|
|
78
|
+
configureProps(uiProps, nativeProps) {
|
|
79
|
+
this.InnerNativeModule.configureProps(uiProps, nativeProps);
|
|
80
|
+
}
|
|
81
|
+
subscribeForKeyboardEvents(handler, isStatusBarTranslucent) {
|
|
82
|
+
return this.InnerNativeModule.subscribeForKeyboardEvents(handler, isStatusBarTranslucent);
|
|
83
|
+
}
|
|
84
|
+
unsubscribeFromKeyboardEvents(listenerId) {
|
|
85
|
+
this.InnerNativeModule.unsubscribeFromKeyboardEvents(listenerId);
|
|
86
|
+
}
|
|
87
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@react-native-ohos/react-native-reanimated",
|
|
3
|
+
"harmony": {
|
|
4
|
+
"alias": "react-native-reanimated",
|
|
5
|
+
"autolinking": {
|
|
6
|
+
"etsPackageClassName": "ReanimatedPackage",
|
|
7
|
+
"cppPackageClassName": "ReanimatedPackage",
|
|
8
|
+
"cmakeLibraryTargetName": "rnoh_reanimated",
|
|
9
|
+
"ohPackageName": "@react-native-ohos/react-native-reanimated"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"version": "3.6.5-rc.1",
|
|
13
|
+
"description": "",
|
|
14
|
+
"main": "lib/index.js",
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"pack:prod": "npm pack",
|
|
18
|
+
"prepack": "npm run build",
|
|
19
|
+
"prepublishOnly": "npm run prepack && react-native verify-package-harmony --package-path . --skip-checks oh_package_name_is_derived_from_npm_package_name",
|
|
20
|
+
"update_version": "node ./scripts/update-version.js",
|
|
21
|
+
"deploy": "node ./scripts/deploy.js"
|
|
22
|
+
},
|
|
23
|
+
"peerDependencies": {
|
|
24
|
+
"react": "*",
|
|
25
|
+
"react-native": "*",
|
|
26
|
+
"react-native-harmony": "*",
|
|
27
|
+
"react-native-reanimated": "3.6.0"
|
|
28
|
+
},
|
|
29
|
+
"author": "",
|
|
30
|
+
"license": "ISC",
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@types/node": "^20.11.4"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@babel/cli": "^7.23.4",
|
|
36
|
+
"@babel/core": "^7.23.7",
|
|
37
|
+
"@babel/preset-env": "^7.23.8",
|
|
38
|
+
"@babel/preset-typescript": "^7.23.3",
|
|
39
|
+
"@babel/runtime": "^7.23.8",
|
|
40
|
+
"@types/invariant": "^2.2.35",
|
|
41
|
+
"@types/react": "^18.2.15",
|
|
42
|
+
"metro-react-native-babel-preset": "^0.77.0",
|
|
43
|
+
"react": "18.2.0",
|
|
44
|
+
"react-native": "0.72.5",
|
|
45
|
+
"react-native-builder-bob": "^0.21.3",
|
|
46
|
+
"typescript": "^5.1.6"
|
|
47
|
+
},
|
|
48
|
+
"publishConfig": {
|
|
49
|
+
"registry": "https://registry.npmjs.org/",
|
|
50
|
+
"access": "public"
|
|
51
|
+
},
|
|
52
|
+
"files": [
|
|
53
|
+
"lib",
|
|
54
|
+
"harmony",
|
|
55
|
+
"src",
|
|
56
|
+
"./harmony.tar.gz"
|
|
57
|
+
]
|
|
58
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import * as Animated from 'react-native-reanimated/src/Animated';
|
|
4
|
+
export * from './reanimated2/NativeReanimated/NativeReanimated'
|
|
5
|
+
export * from 'react-native-reanimated/src/reanimated2';
|
|
6
|
+
|
|
7
|
+
global._REANIMATED_VERSION_JS = "3.6.0";
|
|
8
|
+
|
|
9
|
+
export default Animated;
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
// RNOH patch: retrieve ReanimatedModule from TurboModuleRegistry and fix imports
|
|
2
|
+
|
|
3
|
+
'use strict';
|
|
4
|
+
import { NativeModules, TurboModule, TurboModuleRegistry } from 'react-native';
|
|
5
|
+
import type {
|
|
6
|
+
ShareableRef,
|
|
7
|
+
ShareableSyncDataHolderRef,
|
|
8
|
+
Value3D,
|
|
9
|
+
ValueRotation,
|
|
10
|
+
} from 'react-native-reanimated/src/reanimated2/commonTypes';
|
|
11
|
+
import type {
|
|
12
|
+
LayoutAnimationFunction,
|
|
13
|
+
LayoutAnimationType,
|
|
14
|
+
} from 'react-native-reanimated/src/reanimated2/layoutReanimation';
|
|
15
|
+
import { checkCppVersion } from 'react-native-reanimated/src/reanimated2/platform-specific/checkCppVersion';
|
|
16
|
+
import { jsVersion } from 'react-native-reanimated/src/reanimated2/platform-specific/jsVersion';
|
|
17
|
+
import type { WorkletRuntime } from 'react-native-reanimated/src/reanimated2/runtimes';
|
|
18
|
+
import { getValueUnpackerCode } from 'react-native-reanimated/src/reanimated2/valueUnpacker';
|
|
19
|
+
|
|
20
|
+
// RNOH patch
|
|
21
|
+
interface Spec extends TurboModule {
|
|
22
|
+
installTurboModule(): void;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// this is the type of `__reanimatedModuleProxy` which is injected using JSI
|
|
26
|
+
export interface NativeReanimatedModule {
|
|
27
|
+
installValueUnpacker(valueUnpackerCode: string): void;
|
|
28
|
+
makeShareableClone<T>(
|
|
29
|
+
value: T,
|
|
30
|
+
shouldPersistRemote: boolean
|
|
31
|
+
): ShareableRef<T>;
|
|
32
|
+
makeSynchronizedDataHolder<T>(
|
|
33
|
+
valueRef: ShareableRef<T>
|
|
34
|
+
): ShareableSyncDataHolderRef<T>;
|
|
35
|
+
getDataSynchronously<T>(ref: ShareableSyncDataHolderRef<T>): T;
|
|
36
|
+
scheduleOnUI<T>(shareable: ShareableRef<T>): void;
|
|
37
|
+
createWorkletRuntime(
|
|
38
|
+
name: string,
|
|
39
|
+
initializer: ShareableRef<() => void>
|
|
40
|
+
): WorkletRuntime;
|
|
41
|
+
scheduleOnRuntime<T>(
|
|
42
|
+
workletRuntime: WorkletRuntime,
|
|
43
|
+
worklet: ShareableRef<T>
|
|
44
|
+
): void;
|
|
45
|
+
registerEventHandler<T>(
|
|
46
|
+
eventHandler: ShareableRef<T>,
|
|
47
|
+
eventName: string,
|
|
48
|
+
emitterReactTag: number
|
|
49
|
+
): number;
|
|
50
|
+
unregisterEventHandler(id: number): void;
|
|
51
|
+
getViewProp<T>(
|
|
52
|
+
viewTag: number,
|
|
53
|
+
propName: string,
|
|
54
|
+
callback?: (result: T) => void
|
|
55
|
+
): Promise<T>;
|
|
56
|
+
enableLayoutAnimations(flag: boolean): void;
|
|
57
|
+
registerSensor(
|
|
58
|
+
sensorType: number,
|
|
59
|
+
interval: number,
|
|
60
|
+
iosReferenceFrame: number,
|
|
61
|
+
handler: ShareableRef<(data: Value3D | ValueRotation) => void>
|
|
62
|
+
): number;
|
|
63
|
+
unregisterSensor(sensorId: number): void;
|
|
64
|
+
configureProps(uiProps: string[], nativeProps: string[]): void;
|
|
65
|
+
subscribeForKeyboardEvents(
|
|
66
|
+
handler: ShareableRef<number>,
|
|
67
|
+
isStatusBarTranslucent: boolean
|
|
68
|
+
): number;
|
|
69
|
+
unsubscribeFromKeyboardEvents(listenerId: number): void;
|
|
70
|
+
configureLayoutAnimation(
|
|
71
|
+
viewTag: number,
|
|
72
|
+
type: LayoutAnimationType,
|
|
73
|
+
sharedTransitionTag: string,
|
|
74
|
+
config: ShareableRef<Keyframe | LayoutAnimationFunction>
|
|
75
|
+
): void;
|
|
76
|
+
setShouldAnimateExitingForTag(viewTag: number, shouldAnimate: boolean): void;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function assertSingleReanimatedInstance() {
|
|
80
|
+
if (
|
|
81
|
+
global._REANIMATED_VERSION_JS !== undefined &&
|
|
82
|
+
global._REANIMATED_VERSION_JS !== jsVersion
|
|
83
|
+
) {
|
|
84
|
+
throw new Error(
|
|
85
|
+
`[Reanimated] Another instance of Reanimated was detected.
|
|
86
|
+
See \`https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting#another-instance-of-reanimated-was-detected\` for more details. Previous: ${global._REANIMATED_VERSION_JS}, current: ${jsVersion}.`
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
global._REANIMATED_VERSION_JS = jsVersion;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export class NativeReanimated {
|
|
93
|
+
private InnerNativeModule: NativeReanimatedModule;
|
|
94
|
+
|
|
95
|
+
constructor() {
|
|
96
|
+
// These checks have to split since version checking depend on the execution order
|
|
97
|
+
if (__DEV__) {
|
|
98
|
+
assertSingleReanimatedInstance();
|
|
99
|
+
}
|
|
100
|
+
if (global.__reanimatedModuleProxy === undefined) {
|
|
101
|
+
// RNOH patch
|
|
102
|
+
const ReanimatedModule = TurboModuleRegistry.get<Spec>(
|
|
103
|
+
'ReanimatedModule',
|
|
104
|
+
) as Spec;
|
|
105
|
+
ReanimatedModule?.installTurboModule();
|
|
106
|
+
}
|
|
107
|
+
if (global.__reanimatedModuleProxy === undefined) {
|
|
108
|
+
throw new Error(
|
|
109
|
+
`[Reanimated] Native part of Reanimated doesn't seem to be initialized.
|
|
110
|
+
See https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting#native-part-of-reanimated-doesnt-seem-to-be-initialized for more details.`
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
if (__DEV__) {
|
|
114
|
+
checkCppVersion();
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
this.InnerNativeModule = global.__reanimatedModuleProxy;
|
|
118
|
+
this.InnerNativeModule.installValueUnpacker(getValueUnpackerCode());
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
makeShareableClone<T>(value: T, shouldPersistRemote: boolean) {
|
|
122
|
+
return this.InnerNativeModule.makeShareableClone(
|
|
123
|
+
value,
|
|
124
|
+
shouldPersistRemote
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
makeSynchronizedDataHolder<T>(valueRef: ShareableRef<T>) {
|
|
129
|
+
return this.InnerNativeModule.makeSynchronizedDataHolder(valueRef);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
getDataSynchronously<T>(ref: ShareableSyncDataHolderRef<T>) {
|
|
133
|
+
return this.InnerNativeModule.getDataSynchronously(ref);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
scheduleOnUI<T>(shareable: ShareableRef<T>) {
|
|
137
|
+
return this.InnerNativeModule.scheduleOnUI(shareable);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
createWorkletRuntime(name: string, initializer: ShareableRef<() => void>) {
|
|
141
|
+
return this.InnerNativeModule.createWorkletRuntime(name, initializer);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
scheduleOnRuntime<T>(
|
|
145
|
+
workletRuntime: WorkletRuntime,
|
|
146
|
+
shareableWorklet: ShareableRef<T>
|
|
147
|
+
) {
|
|
148
|
+
return this.InnerNativeModule.scheduleOnRuntime(
|
|
149
|
+
workletRuntime,
|
|
150
|
+
shareableWorklet
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
registerSensor(
|
|
155
|
+
sensorType: number,
|
|
156
|
+
interval: number,
|
|
157
|
+
iosReferenceFrame: number,
|
|
158
|
+
handler: ShareableRef<(data: Value3D | ValueRotation) => void>
|
|
159
|
+
) {
|
|
160
|
+
return this.InnerNativeModule.registerSensor(
|
|
161
|
+
sensorType,
|
|
162
|
+
interval,
|
|
163
|
+
iosReferenceFrame,
|
|
164
|
+
handler
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
unregisterSensor(sensorId: number) {
|
|
169
|
+
return this.InnerNativeModule.unregisterSensor(sensorId);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
registerEventHandler<T>(
|
|
173
|
+
eventHandler: ShareableRef<T>,
|
|
174
|
+
eventName: string,
|
|
175
|
+
emitterReactTag: number
|
|
176
|
+
) {
|
|
177
|
+
return this.InnerNativeModule.registerEventHandler(
|
|
178
|
+
eventHandler,
|
|
179
|
+
eventName,
|
|
180
|
+
emitterReactTag
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
unregisterEventHandler(id: number) {
|
|
185
|
+
return this.InnerNativeModule.unregisterEventHandler(id);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
getViewProp<T>(
|
|
189
|
+
viewTag: number,
|
|
190
|
+
propName: string,
|
|
191
|
+
callback?: (result: T) => void
|
|
192
|
+
) {
|
|
193
|
+
return this.InnerNativeModule.getViewProp(viewTag, propName, callback);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
configureLayoutAnimation(
|
|
197
|
+
viewTag: number,
|
|
198
|
+
type: LayoutAnimationType,
|
|
199
|
+
sharedTransitionTag: string,
|
|
200
|
+
config: ShareableRef<Keyframe | LayoutAnimationFunction>
|
|
201
|
+
) {
|
|
202
|
+
this.InnerNativeModule.configureLayoutAnimation(
|
|
203
|
+
viewTag,
|
|
204
|
+
type,
|
|
205
|
+
sharedTransitionTag,
|
|
206
|
+
config
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
setShouldAnimateExitingForTag(viewTag: number, shouldAnimate: boolean) {
|
|
211
|
+
this.InnerNativeModule.setShouldAnimateExitingForTag(
|
|
212
|
+
viewTag,
|
|
213
|
+
shouldAnimate
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
enableLayoutAnimations(flag: boolean) {
|
|
218
|
+
this.InnerNativeModule.enableLayoutAnimations(flag);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
configureProps(uiProps: string[], nativeProps: string[]) {
|
|
222
|
+
this.InnerNativeModule.configureProps(uiProps, nativeProps);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
subscribeForKeyboardEvents(
|
|
226
|
+
handler: ShareableRef<number>,
|
|
227
|
+
isStatusBarTranslucent: boolean
|
|
228
|
+
) {
|
|
229
|
+
return this.InnerNativeModule.subscribeForKeyboardEvents(
|
|
230
|
+
handler,
|
|
231
|
+
isStatusBarTranslucent
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
unsubscribeFromKeyboardEvents(listenerId: number) {
|
|
236
|
+
this.InnerNativeModule.unsubscribeFromKeyboardEvents(listenerId);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
/* eslint-disable no-var */
|
|
3
|
+
'use strict';
|
|
4
|
+
import type {
|
|
5
|
+
StyleProps,
|
|
6
|
+
MeasuredDimensions,
|
|
7
|
+
MapperRegistry,
|
|
8
|
+
ShareableRef,
|
|
9
|
+
ShareableSyncDataHolderRef,
|
|
10
|
+
ShadowNodeWrapper,
|
|
11
|
+
__ComplexWorkletFunction,
|
|
12
|
+
FlatShareableRef,
|
|
13
|
+
} from 'react-native-reanimated/src/reanimated2/commonTypes';
|
|
14
|
+
import type { AnimatedStyle } from 'react-native-reanimated/src/reanimated2/helperTypes';
|
|
15
|
+
import type { FrameCallbackRegistryUI } from 'react-native-reanimated/src/reanimated2/frameCallback/FrameCallbackRegistryUI';
|
|
16
|
+
import type { NativeReanimatedModule } from 'react-native-reanimated/src/reanimated2/NativeReanimated/NativeReanimated';
|
|
17
|
+
import type { SensorContainer } from 'react-native-reanimated/src/reanimated2/SensorContainer';
|
|
18
|
+
import type { LayoutAnimationsManager } from 'react-native-reanimated/src/reanimated2/layoutReanimation/animationsManager';
|
|
19
|
+
import type { ProgressTransitionRegister } from 'react-native-reanimated/src/reanimated2/layoutReanimation/sharedTransitions';
|
|
20
|
+
import type { UpdatePropsManager } from 'react-native-reanimated/src/reanimated2/UpdateProps';
|
|
21
|
+
import type { callGuardDEV } from 'react-native-reanimated/src/reanimated2/initializers';
|
|
22
|
+
import type { WorkletRuntime } from 'react-native-reanimated/src/reanimated2/runtimes';
|
|
23
|
+
|
|
24
|
+
declare global {
|
|
25
|
+
var _REANIMATED_IS_REDUCED_MOTION: boolean | undefined;
|
|
26
|
+
var _IS_FABRIC: boolean | undefined;
|
|
27
|
+
var _REANIMATED_VERSION_CPP: string | undefined;
|
|
28
|
+
var _REANIMATED_VERSION_JS: string | undefined;
|
|
29
|
+
var _REANIMATED_VERSION_BABEL_PLUGIN: string | undefined;
|
|
30
|
+
var __reanimatedModuleProxy: NativeReanimatedModule | undefined;
|
|
31
|
+
var __callGuardDEV: typeof callGuardDEV | undefined;
|
|
32
|
+
var evalWithSourceMap:
|
|
33
|
+
| ((js: string, sourceURL: string, sourceMap: string) => any)
|
|
34
|
+
| undefined;
|
|
35
|
+
var evalWithSourceUrl: ((js: string, sourceURL: string) => any) | undefined;
|
|
36
|
+
var _log: (s: string) => void;
|
|
37
|
+
var _toString: (value: unknown) => string;
|
|
38
|
+
var _notifyAboutProgress: (
|
|
39
|
+
tag: number,
|
|
40
|
+
value: Record<string, unknown>,
|
|
41
|
+
isSharedTransition: boolean
|
|
42
|
+
) => void;
|
|
43
|
+
var _notifyAboutEnd: (tag: number, removeView: boolean) => void;
|
|
44
|
+
var _setGestureState: (handlerTag: number, newState: number) => void;
|
|
45
|
+
var _makeShareableClone: <T>(value: T) => FlatShareableRef<T>;
|
|
46
|
+
var _updateDataSynchronously: (
|
|
47
|
+
dataHolder: ShareableSyncDataHolderRef<any>,
|
|
48
|
+
data: ShareableRef<any>
|
|
49
|
+
) => void;
|
|
50
|
+
var _getDataSynchronously: <T>(
|
|
51
|
+
dataHolder: ShareableSyncDataHolderRef<T>
|
|
52
|
+
) => ShareableRef<T>;
|
|
53
|
+
var _scheduleOnJS: (
|
|
54
|
+
fun: __ComplexWorkletFunction<A, R>,
|
|
55
|
+
args?: unknown[]
|
|
56
|
+
) => void;
|
|
57
|
+
var _scheduleOnRuntime: (
|
|
58
|
+
runtime: WorkletRuntime,
|
|
59
|
+
worklet: ShareableRef<() => void>
|
|
60
|
+
) => void;
|
|
61
|
+
var _updatePropsPaper:
|
|
62
|
+
| ((
|
|
63
|
+
operations: {
|
|
64
|
+
tag: number;
|
|
65
|
+
name: string;
|
|
66
|
+
updates: StyleProps | AnimatedStyle<any>;
|
|
67
|
+
}[]
|
|
68
|
+
) => void)
|
|
69
|
+
| undefined;
|
|
70
|
+
var _updatePropsFabric:
|
|
71
|
+
| ((
|
|
72
|
+
operations: {
|
|
73
|
+
shadowNodeWrapper: ShadowNodeWrapper;
|
|
74
|
+
updates: StyleProps | AnimatedStyle<any>;
|
|
75
|
+
}[]
|
|
76
|
+
) => void)
|
|
77
|
+
| undefined;
|
|
78
|
+
var _removeFromPropsRegistry: (viewTags: number[]) => void | undefined;
|
|
79
|
+
var _measurePaper: ((viewTag: number) => MeasuredDimensions) | undefined;
|
|
80
|
+
var _measureFabric:
|
|
81
|
+
| ((shadowNodeWrapper: ShadowNodeWrapper) => MeasuredDimensions)
|
|
82
|
+
| undefined;
|
|
83
|
+
var _scrollToPaper:
|
|
84
|
+
| ((viewTag: number, x: number, y: number, animated: boolean) => void)
|
|
85
|
+
| undefined;
|
|
86
|
+
var _dispatchCommandPaper:
|
|
87
|
+
| ((viewTag: number, commandName: string, args: Array<unknown>) => void)
|
|
88
|
+
| undefined;
|
|
89
|
+
var _dispatchCommandFabric:
|
|
90
|
+
| ((
|
|
91
|
+
shadowNodeWrapper: ShadowNodeWrapper,
|
|
92
|
+
commandName: string,
|
|
93
|
+
args: Array<unknown>
|
|
94
|
+
) => void)
|
|
95
|
+
| undefined;
|
|
96
|
+
var _getAnimationTimestamp: () => number;
|
|
97
|
+
var __ErrorUtils: {
|
|
98
|
+
reportFatalError: (error: Error) => void;
|
|
99
|
+
};
|
|
100
|
+
var _frameCallbackRegistry: FrameCallbackRegistryUI;
|
|
101
|
+
var console: Console;
|
|
102
|
+
var __frameTimestamp: number | undefined;
|
|
103
|
+
var __flushAnimationFrame: (timestamp: number) => void;
|
|
104
|
+
var __workletsCache: Map<string, any>;
|
|
105
|
+
var __handleCache: WeakMap<object, any>;
|
|
106
|
+
var __callMicrotasks: () => void;
|
|
107
|
+
var __mapperRegistry: MapperRegistry;
|
|
108
|
+
var __sensorContainer: SensorContainer;
|
|
109
|
+
var _maybeFlushUIUpdatesQueue: () => void;
|
|
110
|
+
var LayoutAnimationsManager: LayoutAnimationsManager;
|
|
111
|
+
var UpdatePropsManager: UpdatePropsManager;
|
|
112
|
+
var ProgressTransitionRegister: ProgressTransitionRegister;
|
|
113
|
+
var updateJSProps: (viewTag: number, props: Record<string, unknown>) => void;
|
|
114
|
+
}
|