react-native-reanimated
Version:
More powerful alternative to Animated library for React Native.
41 lines (36 loc) • 1.31 kB
text/typescript
import type { IWorkletsModule } from '../../commonTypes';
import { ReanimatedError } from '../../errors';
import { WorkletsTurboModule } from '../../specs';
import { getValueUnpackerCode } from '../valueUnpacker';
import type { WorkletsModuleProxy } from './workletsModuleProxy';
export function createNativeWorkletsModule(): IWorkletsModule {
return new NativeWorklets();
}
class NativeWorklets {
#workletsModuleProxy: WorkletsModuleProxy;
constructor() {
if (global.__workletsModuleProxy === undefined) {
const valueUnpackerCode = getValueUnpackerCode();
WorkletsTurboModule?.installTurboModule(valueUnpackerCode);
}
if (global.__workletsModuleProxy === undefined) {
throw new ReanimatedError(
`Native part of Reanimated doesn't seem to be initialized (Worklets).
See https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting#native-part-of-reanimated-doesnt-seem-to-be-initialized for more details.`
);
}
this.#workletsModuleProxy = global.__workletsModuleProxy;
}
makeShareableClone<T>(
value: T,
shouldPersistRemote: boolean,
nativeStateSource?: object
) {
return this.#workletsModuleProxy.makeShareableClone(
value,
shouldPersistRemote,
nativeStateSource
);
}
}
;