react-native-reanimated 2.3.1 → 2.4.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/android/build.gradle +3 -3
- package/android/react-native-reanimated-63-hermes.aar +0 -0
- package/android/react-native-reanimated-63-jsc.aar +0 -0
- package/android/react-native-reanimated-64-hermes.aar +0 -0
- package/android/react-native-reanimated-64-jsc.aar +0 -0
- package/android/react-native-reanimated-65-hermes.aar +0 -0
- package/android/react-native-reanimated-65-jsc.aar +0 -0
- package/android/react-native-reanimated-66-hermes.aar +0 -0
- package/android/react-native-reanimated-66-jsc.aar +0 -0
- package/android/react-native-reanimated-67-hermes.aar +0 -0
- package/android/react-native-reanimated-67-jsc.aar +0 -0
- package/ios/LayoutReanimation/REAAnimationsManager.h +1 -1
- package/ios/LayoutReanimation/REAAnimationsManager.m +4 -0
- package/ios/native/NativeMethods.h +1 -1
- package/ios/native/NativeProxy.mm +10 -2
- package/lib/{Animated.js → src/Animated.js} +0 -0
- package/lib/{ConfigHelper.js → src/ConfigHelper.js} +0 -0
- package/lib/{ReanimatedEventEmitter.js → src/ReanimatedEventEmitter.js} +0 -0
- package/lib/{ReanimatedModule.js → src/ReanimatedModule.js} +0 -0
- package/lib/{ReanimatedModule.macos.js → src/ReanimatedModule.macos.js} +0 -0
- package/lib/{ReanimatedModule.native.js → src/ReanimatedModule.native.js} +0 -0
- package/lib/{ReanimatedModule.windows.js → src/ReanimatedModule.windows.js} +0 -0
- package/lib/{ReanimatedModuleCompat.js → src/ReanimatedModuleCompat.js} +0 -0
- package/lib/{__mocks__ → src/__mocks__}/ReanimatedEventEmitter.js +0 -0
- package/lib/{__mocks__ → src/__mocks__}/ReanimatedModule.native.js +0 -0
- package/lib/{createAnimatedComponent.js → src/createAnimatedComponent.js} +0 -0
- package/lib/{index.js → src/index.js} +0 -0
- package/lib/{reanimated1 → src/reanimated1}/Easing.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/SpringConfig.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/Transitioning.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/animations/Animation.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/animations/SpringUtils.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/animations/backwardCompatibleAnimWrapper.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/animations/decay.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/animations/spring.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/animations/timing.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/base.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedAlways.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedBezier.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedBlock.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedCall.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedCallFunc.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedClock.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedClockTest.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedCode.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedConcat.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedCond.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedDebug.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedEvent.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedFunction.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedNode.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedOperator.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedParam.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedProps.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedSet.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedStartClock.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedStopClock.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedStyle.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedTransform.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/AnimatedValue.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/Core.test.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/InternalAnimatedValue.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/__mocks__/AnimatedProps.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/core/createEventObjectProxyPolyfill.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/derived/__mocks__/evaluateOnce.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/derived/acc.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/derived/color.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/derived/diff.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/derived/diffClamp.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/derived/evaluateOnce.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/derived/index.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/derived/interpolate.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/derived/interpolateColors.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/derived/onChange.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/derived/useCode.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/index.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/operators.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/useValue.js +0 -0
- package/lib/{reanimated1 → src/reanimated1}/val.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/Bezier.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/Colors.js +1 -97
- package/lib/{reanimated2 → src/reanimated2}/Easing.js +5 -0
- package/lib/{reanimated2 → src/reanimated2}/NativeMethods.js +15 -5
- package/lib/{reanimated2 → src/reanimated2}/NativeReanimated/NativeReanimated.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/NativeReanimated/index.js +2 -2
- package/lib/{reanimated2 → src/reanimated2}/PlatformChecker.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/PropAdapters.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/UpdateProps.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/ViewDescriptorsSet.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/WorkletEventHandler.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/__mocks__/MutableValue.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/__mocks__/NativeReanimated.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/__mocks__/NativeReanimated.native.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/animation/commonTypes.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/animation/decay.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/animation/delay.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/animation/index.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/animation/repeat.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/animation/sequence.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/animation/spring.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/animation/styleAnimation.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/animation/timing.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/animation/util.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/commonTypes.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/component/FlatList.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/component/WrappedComponents.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/component/index.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/core.js +5 -3
- package/lib/{reanimated2 → src/reanimated2}/globals.d.ts +0 -0
- package/lib/{reanimated2 → src/reanimated2}/hook/Hooks.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/hook/commonTypes.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/hook/index.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/hook/useAnimatedGestureHandler.js +1 -2
- package/lib/{reanimated2 → src/reanimated2}/hook/useAnimatedReaction.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/hook/useAnimatedRef.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/hook/useAnimatedScrollHandler.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/hook/useAnimatedStyle.js +31 -14
- package/lib/{reanimated2 → src/reanimated2}/hook/useDerivedValue.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/hook/useSharedValue.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/hook/utils.js +14 -11
- package/lib/{reanimated2 → src/reanimated2}/index.js +2 -0
- package/lib/src/reanimated2/interpolateColor.js +98 -0
- package/lib/{reanimated2 → src/reanimated2}/interpolation.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/jestUtils.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/js-reanimated/JSReanimated.js +1 -1
- package/lib/{reanimated2 → src/reanimated2}/js-reanimated/Mapper.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/js-reanimated/MapperRegistry.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/js-reanimated/MutableValue.js +0 -0
- package/lib/{reanimated2/layoutReanimation/animationBuilder → src/reanimated2/js-reanimated}/commonTypes.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/js-reanimated/index.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/LayoutAnimationRepository.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/animationBuilder/BaseAnimationBuilder.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/animationBuilder/Keyframe.js +0 -0
- package/lib/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +1 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/animationBuilder/index.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Bounce.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Default.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Fade.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Flip.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Lightspeed.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Pinwheel.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Roll.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Rotate.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Slide.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Stretch.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/Zoom.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultAnimations/index.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/CurvedTransition.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/EntryExitTransition.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/FadingTransition.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/JumpingTransition.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/LinearTransition.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/SequencedTransition.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/defaultTransitions/index.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/layoutReanimation/index.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/mock.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/platform-specific/RNRenderer.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/platform-specific/RNRenderer.web.js +0 -0
- package/lib/{reanimated2 → src/reanimated2}/utils.js +0 -0
- package/lib/{setAndForwardRef.js → src/setAndForwardRef.js} +0 -0
- package/mock.js +1 -0
- package/package.json +5 -3
- package/plugin.js +1 -0
- package/react-native-reanimated.d.ts +55 -1
- package/src/reanimated2/Colors.ts +6 -150
- package/src/reanimated2/Easing.ts +11 -0
- package/src/reanimated2/NativeMethods.ts +19 -6
- package/src/reanimated2/NativeReanimated/NativeReanimated.ts +1 -0
- package/src/reanimated2/NativeReanimated/index.ts +2 -2
- package/src/reanimated2/animation/commonTypes.ts +44 -40
- package/src/reanimated2/animation/decay.ts +1 -1
- package/src/reanimated2/animation/delay.ts +2 -16
- package/src/reanimated2/animation/index.ts +7 -8
- package/src/reanimated2/animation/repeat.ts +2 -12
- package/src/reanimated2/animation/sequence.ts +3 -10
- package/src/reanimated2/animation/spring.ts +1 -1
- package/src/reanimated2/animation/styleAnimation.ts +1 -18
- package/src/reanimated2/animation/timing.ts +1 -1
- package/src/reanimated2/animation/util.ts +12 -9
- package/src/reanimated2/commonTypes.ts +48 -1
- package/src/reanimated2/core.ts +6 -6
- package/src/reanimated2/hook/commonTypes.ts +5 -0
- package/src/reanimated2/hook/useAnimatedGestureHandler.ts +1 -2
- package/src/reanimated2/hook/useAnimatedRef.ts +1 -5
- package/src/reanimated2/hook/useAnimatedStyle.ts +35 -16
- package/src/reanimated2/hook/utils.ts +18 -17
- package/src/reanimated2/index.ts +2 -0
- package/src/reanimated2/interpolateColor.ts +178 -0
- package/src/reanimated2/js-reanimated/JSReanimated.ts +3 -4
- package/src/reanimated2/js-reanimated/Mapper.ts +1 -1
- package/src/reanimated2/js-reanimated/MapperRegistry.ts +1 -1
- package/src/reanimated2/js-reanimated/commonTypes.ts +51 -0
- package/src/reanimated2/layoutReanimation/defaultTransitions/EntryExitTransition.ts +6 -2
- package/src/reanimated2/utils.ts +1 -1
|
@@ -9,11 +9,8 @@
|
|
|
9
9
|
/* eslint no-bitwise: 0 */
|
|
10
10
|
import { Platform } from 'react-native';
|
|
11
11
|
import { makeRemote, makeShareable, isConfigured } from './core';
|
|
12
|
-
import { interpolate } from './interpolation';
|
|
13
|
-
// @ts-ignore JS file
|
|
14
|
-
import { Extrapolate } from '../reanimated1/derived';
|
|
15
12
|
|
|
16
|
-
interface
|
|
13
|
+
interface RGB {
|
|
17
14
|
r: number;
|
|
18
15
|
g: number;
|
|
19
16
|
b: number;
|
|
@@ -475,9 +472,9 @@ export const rgbaColor = (
|
|
|
475
472
|
* 0 <= r, g, b <= 255
|
|
476
473
|
* returns 0 <= h, s, v <= 1
|
|
477
474
|
*/
|
|
478
|
-
function RGBtoHSV(rgb:
|
|
479
|
-
function RGBtoHSV(r: number, g: number, b: number): HSV;
|
|
480
|
-
function RGBtoHSV(r: any, g?: any, b?: any): HSV {
|
|
475
|
+
export function RGBtoHSV(rgb: RGB): HSV;
|
|
476
|
+
export function RGBtoHSV(r: number, g: number, b: number): HSV;
|
|
477
|
+
export function RGBtoHSV(r: any, g?: any, b?: any): HSV {
|
|
481
478
|
'worklet';
|
|
482
479
|
/* eslint-disable */
|
|
483
480
|
if (arguments.length === 1) {
|
|
@@ -528,8 +525,8 @@ function RGBtoHSV(r: any, g?: any, b?: any): HSV {
|
|
|
528
525
|
* 0 <= h, s, v <= 1
|
|
529
526
|
* returns 0 <= r, g, b <= 255
|
|
530
527
|
*/
|
|
531
|
-
function HSVtoRGB(hsv: HSV):
|
|
532
|
-
function HSVtoRGB(h: number, s: number, v: number):
|
|
528
|
+
function HSVtoRGB(hsv: HSV): RGB;
|
|
529
|
+
function HSVtoRGB(h: number, s: number, v: number): RGB;
|
|
533
530
|
function HSVtoRGB(h: any, s?: any, v?: any) {
|
|
534
531
|
'worklet';
|
|
535
532
|
/* eslint-disable */
|
|
@@ -652,144 +649,3 @@ export function toRGBA(HSVA: ParsedColorArray): string {
|
|
|
652
649
|
const { r, g, b } = HSVtoRGB(HSVA[0], HSVA[1], HSVA[2]);
|
|
653
650
|
return `rgba(${r}, ${g}, ${b}, ${HSVA[3]})`;
|
|
654
651
|
}
|
|
655
|
-
|
|
656
|
-
const interpolateColorsHSV = (
|
|
657
|
-
value: number,
|
|
658
|
-
inputRange: readonly number[],
|
|
659
|
-
colors: InterpolateCacheHSV
|
|
660
|
-
) => {
|
|
661
|
-
'worklet';
|
|
662
|
-
const h = interpolate(value, inputRange, colors.h, Extrapolate.CLAMP);
|
|
663
|
-
const s = interpolate(value, inputRange, colors.s, Extrapolate.CLAMP);
|
|
664
|
-
const v = interpolate(value, inputRange, colors.v, Extrapolate.CLAMP);
|
|
665
|
-
return hsvToColor(h, s, v);
|
|
666
|
-
};
|
|
667
|
-
|
|
668
|
-
const interpolateColorsRGB = (
|
|
669
|
-
value: number,
|
|
670
|
-
inputRange: readonly number[],
|
|
671
|
-
colors: InterpolateCacheRGBA
|
|
672
|
-
) => {
|
|
673
|
-
'worklet';
|
|
674
|
-
const r = interpolate(value, inputRange, colors.r, Extrapolate.CLAMP);
|
|
675
|
-
const g = interpolate(value, inputRange, colors.g, Extrapolate.CLAMP);
|
|
676
|
-
const b = interpolate(value, inputRange, colors.b, Extrapolate.CLAMP);
|
|
677
|
-
const a = interpolate(value, inputRange, colors.a, Extrapolate.CLAMP);
|
|
678
|
-
return rgbaColor(r, g, b, a);
|
|
679
|
-
};
|
|
680
|
-
|
|
681
|
-
interface InterpolateCacheRGBA {
|
|
682
|
-
r: number[];
|
|
683
|
-
g: number[];
|
|
684
|
-
b: number[];
|
|
685
|
-
a: number[];
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
const BUFFER_SIZE = 200;
|
|
689
|
-
const hashOrderRGBA: any = new ArrayBuffer(BUFFER_SIZE);
|
|
690
|
-
let curentHashIndexRGBA = 0;
|
|
691
|
-
const interpolateCacheRGBA: { [name: string]: InterpolateCacheRGBA } = {};
|
|
692
|
-
|
|
693
|
-
const getInterpolateCacheRGBA = (
|
|
694
|
-
colors: readonly (string | number)[]
|
|
695
|
-
): InterpolateCacheRGBA => {
|
|
696
|
-
'worklet';
|
|
697
|
-
const hash = colors.join('');
|
|
698
|
-
const cache = interpolateCacheRGBA[hash];
|
|
699
|
-
if (cache !== undefined) {
|
|
700
|
-
return cache;
|
|
701
|
-
}
|
|
702
|
-
|
|
703
|
-
const r = [];
|
|
704
|
-
const g = [];
|
|
705
|
-
const b = [];
|
|
706
|
-
const a = [];
|
|
707
|
-
for (let i = 0; i < colors.length; ++i) {
|
|
708
|
-
const color = colors[i];
|
|
709
|
-
const proocessedColor = processColor(color);
|
|
710
|
-
// explicit check in case if processedColor is 0
|
|
711
|
-
if (proocessedColor !== null && proocessedColor !== undefined) {
|
|
712
|
-
r.push(red(proocessedColor));
|
|
713
|
-
g.push(green(proocessedColor));
|
|
714
|
-
b.push(blue(proocessedColor));
|
|
715
|
-
a.push(opacity(proocessedColor));
|
|
716
|
-
}
|
|
717
|
-
}
|
|
718
|
-
const newCache = { r, g, b, a };
|
|
719
|
-
const overrideHash = hashOrderRGBA[curentHashIndexRGBA];
|
|
720
|
-
if (overrideHash) {
|
|
721
|
-
delete interpolateCacheRGBA[overrideHash];
|
|
722
|
-
}
|
|
723
|
-
interpolateCacheRGBA[hash] = newCache;
|
|
724
|
-
hashOrderRGBA[curentHashIndexRGBA] = hash;
|
|
725
|
-
curentHashIndexRGBA = (curentHashIndexRGBA + 1) % BUFFER_SIZE;
|
|
726
|
-
return newCache;
|
|
727
|
-
};
|
|
728
|
-
|
|
729
|
-
interface InterpolateCacheHSV {
|
|
730
|
-
h: number[];
|
|
731
|
-
s: number[];
|
|
732
|
-
v: number[];
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
const hashOrderHSV: any = new ArrayBuffer(BUFFER_SIZE);
|
|
736
|
-
let curentHashIndexHSV = 0;
|
|
737
|
-
const interpolateCacheHSV: { [name: string]: InterpolateCacheHSV } = {};
|
|
738
|
-
|
|
739
|
-
const getInterpolateCacheHSV = (
|
|
740
|
-
colors: readonly (string | number)[]
|
|
741
|
-
): InterpolateCacheHSV => {
|
|
742
|
-
'worklet';
|
|
743
|
-
const hash = colors.join('');
|
|
744
|
-
const cache = interpolateCacheHSV[hash];
|
|
745
|
-
if (cache !== undefined) {
|
|
746
|
-
return cache;
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
const h = [];
|
|
750
|
-
const s = [];
|
|
751
|
-
const v = [];
|
|
752
|
-
for (let i = 0; i < colors.length; ++i) {
|
|
753
|
-
const color = colors[i];
|
|
754
|
-
const proocessedColor = RGBtoHSV(processColor(color) as any);
|
|
755
|
-
if (proocessedColor) {
|
|
756
|
-
h.push(proocessedColor.h);
|
|
757
|
-
s.push(proocessedColor.s);
|
|
758
|
-
v.push(proocessedColor.v);
|
|
759
|
-
}
|
|
760
|
-
}
|
|
761
|
-
const newCache = { h, s, v };
|
|
762
|
-
const overrideHash = hashOrderHSV[curentHashIndexHSV];
|
|
763
|
-
if (overrideHash) {
|
|
764
|
-
delete interpolateCacheHSV[overrideHash];
|
|
765
|
-
}
|
|
766
|
-
interpolateCacheHSV[hash] = newCache;
|
|
767
|
-
hashOrderHSV[curentHashIndexHSV] = hash;
|
|
768
|
-
curentHashIndexHSV = (curentHashIndexHSV + 1) % BUFFER_SIZE;
|
|
769
|
-
return newCache;
|
|
770
|
-
};
|
|
771
|
-
|
|
772
|
-
export const interpolateColor = (
|
|
773
|
-
value: number,
|
|
774
|
-
inputRange: readonly number[],
|
|
775
|
-
outputRange: readonly (string | number)[],
|
|
776
|
-
colorSpace: 'RGB' | 'HSV' = 'RGB'
|
|
777
|
-
): string | number => {
|
|
778
|
-
'worklet';
|
|
779
|
-
if (colorSpace === 'HSV') {
|
|
780
|
-
return interpolateColorsHSV(
|
|
781
|
-
value,
|
|
782
|
-
inputRange,
|
|
783
|
-
getInterpolateCacheHSV(outputRange)
|
|
784
|
-
);
|
|
785
|
-
} else if (colorSpace === 'RGB') {
|
|
786
|
-
return interpolateColorsRGB(
|
|
787
|
-
value,
|
|
788
|
-
inputRange,
|
|
789
|
-
getInterpolateCacheRGBA(outputRange)
|
|
790
|
-
);
|
|
791
|
-
}
|
|
792
|
-
throw new Error(
|
|
793
|
-
`invalid color space provided: ${colorSpace}. Supported values are: ['RGB', 'HSV']`
|
|
794
|
-
);
|
|
795
|
-
};
|
|
@@ -221,6 +221,16 @@ function bezier(
|
|
|
221
221
|
};
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
+
function bezierFn(
|
|
225
|
+
x1: number,
|
|
226
|
+
y1: number,
|
|
227
|
+
x2: number,
|
|
228
|
+
y2: number
|
|
229
|
+
): (x: number) => number {
|
|
230
|
+
'worklet';
|
|
231
|
+
return Bezier(x1, y1, x2, y2);
|
|
232
|
+
}
|
|
233
|
+
|
|
224
234
|
/**
|
|
225
235
|
* Runs an easing function forwards.
|
|
226
236
|
*/
|
|
@@ -269,6 +279,7 @@ const EasingObject = {
|
|
|
269
279
|
back,
|
|
270
280
|
bounce,
|
|
271
281
|
bezier,
|
|
282
|
+
bezierFn,
|
|
272
283
|
in: in_,
|
|
273
284
|
out,
|
|
274
285
|
inOut,
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
// @ts-nocheck
|
|
4
4
|
import { Component } from 'react';
|
|
5
5
|
import { findNodeHandle } from 'react-native';
|
|
6
|
-
import { RefObjectFunction } from './
|
|
7
|
-
import {
|
|
6
|
+
import { RefObjectFunction } from './commonTypes';
|
|
7
|
+
import { shouldBeUseWeb } from './PlatformChecker';
|
|
8
8
|
|
|
9
9
|
export function getTag(
|
|
10
10
|
view: null | number | React.Component<any, any> | React.ComponentClass<any>
|
|
@@ -21,12 +21,24 @@ export interface MeasuredDimensions {
|
|
|
21
21
|
pageY: number;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
const isNativeIndefined = shouldBeUseWeb();
|
|
25
|
+
|
|
24
26
|
export function measure(
|
|
25
27
|
animatedRef: RefObjectFunction<Component>
|
|
26
28
|
): MeasuredDimensions {
|
|
27
29
|
'worklet';
|
|
28
|
-
if (!_WORKLET
|
|
29
|
-
|
|
30
|
+
if (!_WORKLET || isNativeIndefined) {
|
|
31
|
+
console.warn(
|
|
32
|
+
'[reanimated.measure] method cannot be used for web or Chrome Debugger'
|
|
33
|
+
);
|
|
34
|
+
return {
|
|
35
|
+
x: NaN,
|
|
36
|
+
y: NaN,
|
|
37
|
+
width: NaN,
|
|
38
|
+
height: NaN,
|
|
39
|
+
pageX: NaN,
|
|
40
|
+
pageY: NaN,
|
|
41
|
+
};
|
|
30
42
|
}
|
|
31
43
|
const viewTag = animatedRef();
|
|
32
44
|
const result = _measure(viewTag);
|
|
@@ -43,7 +55,7 @@ export function scrollTo(
|
|
|
43
55
|
animated: boolean
|
|
44
56
|
): void {
|
|
45
57
|
'worklet';
|
|
46
|
-
if (!_WORKLET
|
|
58
|
+
if (!_WORKLET || isNativeIndefined) {
|
|
47
59
|
return;
|
|
48
60
|
}
|
|
49
61
|
const viewTag = animatedRef();
|
|
@@ -52,10 +64,11 @@ export function scrollTo(
|
|
|
52
64
|
|
|
53
65
|
export function setGestureState(handlerTag: number, newState: number): void {
|
|
54
66
|
'worklet';
|
|
55
|
-
if (!_WORKLET
|
|
67
|
+
if (!_WORKLET || isNativeIndefined) {
|
|
56
68
|
console.warn(
|
|
57
69
|
'[Reanimated] You can not use setGestureState in non-worklet function.'
|
|
58
70
|
);
|
|
71
|
+
return;
|
|
59
72
|
}
|
|
60
73
|
_setGestureState(handlerTag, newState);
|
|
61
74
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import reanimatedJS from '../js-reanimated';
|
|
2
|
-
import {
|
|
2
|
+
import { shouldBeUseWeb } from '../PlatformChecker';
|
|
3
3
|
import { Platform } from 'react-native';
|
|
4
4
|
import { NativeReanimated } from './NativeReanimated';
|
|
5
5
|
|
|
6
6
|
let exportedModule;
|
|
7
|
-
if (
|
|
7
|
+
if (shouldBeUseWeb()) {
|
|
8
8
|
exportedModule = reanimatedJS;
|
|
9
9
|
} else {
|
|
10
10
|
exportedModule = new NativeReanimated();
|
|
@@ -1,48 +1,52 @@
|
|
|
1
|
-
|
|
1
|
+
import {
|
|
2
|
+
AnimatedStyle,
|
|
3
|
+
StyleProps,
|
|
4
|
+
AnimatableValue,
|
|
5
|
+
AnimationObject,
|
|
6
|
+
Animation,
|
|
7
|
+
Timestamp,
|
|
8
|
+
AnimationCallback,
|
|
9
|
+
} from '../commonTypes';
|
|
2
10
|
|
|
3
|
-
export interface
|
|
4
|
-
|
|
5
|
-
callback: AnimationCallback;
|
|
6
|
-
current?: AnimatableValue;
|
|
7
|
-
toValue?: AnimationObject['current'];
|
|
8
|
-
startValue?: AnimationObject['current'];
|
|
9
|
-
finished?: boolean;
|
|
10
|
-
strippedCurrent?: number;
|
|
11
|
-
cancelled?: boolean;
|
|
12
|
-
|
|
13
|
-
__prefix?: string;
|
|
14
|
-
__suffix?: string;
|
|
15
|
-
onFrame: (animation: any, timestamp: Timestamp) => boolean;
|
|
16
|
-
onStart: (
|
|
17
|
-
nextAnimation: any,
|
|
18
|
-
current: any,
|
|
19
|
-
timestamp: Timestamp,
|
|
20
|
-
previousAnimation: any
|
|
21
|
-
) => void;
|
|
11
|
+
export interface HigherOrderAnimation {
|
|
12
|
+
isHigherOrder?: boolean;
|
|
22
13
|
}
|
|
23
14
|
|
|
24
|
-
export
|
|
25
|
-
onFrame: (animation: T, timestamp: Timestamp) => boolean;
|
|
26
|
-
onStart: (
|
|
27
|
-
nextAnimation: T,
|
|
28
|
-
current: T extends NumericAnimation ? number : AnimatableValue,
|
|
29
|
-
timestamp: Timestamp,
|
|
30
|
-
previousAnimation: T
|
|
31
|
-
) => void;
|
|
32
|
-
}
|
|
15
|
+
export type NextAnimation<T extends AnimationObject> = T | (() => T);
|
|
33
16
|
|
|
34
|
-
export interface
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
17
|
+
export interface DelayAnimation
|
|
18
|
+
extends Animation<DelayAnimation>,
|
|
19
|
+
HigherOrderAnimation {
|
|
20
|
+
startTime: Timestamp;
|
|
21
|
+
started: boolean;
|
|
22
|
+
previousAnimation: DelayAnimation | null;
|
|
23
|
+
current: AnimatableValue;
|
|
39
24
|
}
|
|
40
25
|
|
|
41
|
-
export
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
26
|
+
export interface RepeatAnimation
|
|
27
|
+
extends Animation<RepeatAnimation>,
|
|
28
|
+
HigherOrderAnimation {
|
|
29
|
+
reps: number;
|
|
30
|
+
startValue: AnimatableValue;
|
|
31
|
+
toValue?: AnimatableValue;
|
|
32
|
+
previousAnimation?: RepeatAnimation;
|
|
33
|
+
}
|
|
45
34
|
|
|
46
|
-
export
|
|
35
|
+
export interface SequenceAnimation
|
|
36
|
+
extends Animation<SequenceAnimation>,
|
|
37
|
+
HigherOrderAnimation {
|
|
38
|
+
animationIndex: number;
|
|
39
|
+
}
|
|
47
40
|
|
|
48
|
-
export
|
|
41
|
+
export interface StyleLayoutAnimation extends HigherOrderAnimation {
|
|
42
|
+
current: StyleProps;
|
|
43
|
+
styleAnimations: AnimatedStyle;
|
|
44
|
+
onFrame: (animation: StyleLayoutAnimation, timestamp: Timestamp) => boolean;
|
|
45
|
+
onStart: (
|
|
46
|
+
nextAnimation: StyleLayoutAnimation,
|
|
47
|
+
current: AnimatedStyle,
|
|
48
|
+
timestamp: Timestamp,
|
|
49
|
+
previousAnimation: StyleLayoutAnimation
|
|
50
|
+
) => void;
|
|
51
|
+
callback?: AnimationCallback;
|
|
52
|
+
}
|
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
import { defineAnimation } from './util';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
NextAnimation,
|
|
5
|
-
Timestamp,
|
|
6
|
-
HigherOrderAnimation,
|
|
7
|
-
AnimatableValue,
|
|
8
|
-
} from './commonTypes';
|
|
9
|
-
|
|
10
|
-
export interface DelayAnimation
|
|
11
|
-
extends Animation<DelayAnimation>,
|
|
12
|
-
HigherOrderAnimation {
|
|
13
|
-
startTime: Timestamp;
|
|
14
|
-
started: boolean;
|
|
15
|
-
previousAnimation: DelayAnimation | null;
|
|
16
|
-
current: AnimatableValue;
|
|
17
|
-
}
|
|
2
|
+
import { Animation, Timestamp, AnimatableValue } from '../commonTypes';
|
|
3
|
+
import { NextAnimation, DelayAnimation } from './commonTypes';
|
|
18
4
|
|
|
19
5
|
export function withDelay(
|
|
20
6
|
delayMs: number,
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
export {
|
|
2
|
-
AnimationObject,
|
|
3
|
-
Animation,
|
|
4
2
|
HigherOrderAnimation,
|
|
5
|
-
AnimationCallback,
|
|
6
3
|
NextAnimation,
|
|
7
|
-
|
|
4
|
+
RepeatAnimation,
|
|
5
|
+
SequenceAnimation,
|
|
6
|
+
StyleLayoutAnimation,
|
|
8
7
|
} from './commonTypes';
|
|
9
8
|
export { cancelAnimation, defineAnimation, initialUpdaterRun } from './util';
|
|
10
9
|
export { withTiming, TimingAnimation } from './timing';
|
|
11
10
|
export { withSpring, SpringAnimation } from './spring';
|
|
12
11
|
export { withDecay, DecayAnimation } from './decay';
|
|
13
|
-
export { withDelay
|
|
14
|
-
export { withRepeat
|
|
15
|
-
export { withSequence
|
|
16
|
-
export { withStyleAnimation
|
|
12
|
+
export { withDelay } from './delay';
|
|
13
|
+
export { withRepeat } from './repeat';
|
|
14
|
+
export { withSequence } from './sequence';
|
|
15
|
+
export { withStyleAnimation } from './styleAnimation';
|
|
@@ -2,20 +2,10 @@ import { defineAnimation } from './util';
|
|
|
2
2
|
import {
|
|
3
3
|
Animation,
|
|
4
4
|
AnimationCallback,
|
|
5
|
-
NextAnimation,
|
|
6
5
|
AnimatableValue,
|
|
7
6
|
Timestamp,
|
|
8
|
-
|
|
9
|
-
} from './commonTypes';
|
|
10
|
-
|
|
11
|
-
export interface RepeatAnimation
|
|
12
|
-
extends Animation<RepeatAnimation>,
|
|
13
|
-
HigherOrderAnimation {
|
|
14
|
-
reps: number;
|
|
15
|
-
startValue: AnimatableValue;
|
|
16
|
-
toValue?: AnimatableValue;
|
|
17
|
-
previousAnimation?: RepeatAnimation;
|
|
18
|
-
}
|
|
7
|
+
} from '../commonTypes';
|
|
8
|
+
import { NextAnimation, RepeatAnimation } from './commonTypes';
|
|
19
9
|
|
|
20
10
|
export interface InnerRepeatAnimation
|
|
21
11
|
extends Omit<RepeatAnimation, 'toValue' | 'startValue'> {
|
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import { defineAnimation } from './util';
|
|
2
|
+
import { NextAnimation, SequenceAnimation } from './commonTypes';
|
|
2
3
|
import {
|
|
3
4
|
Animation,
|
|
4
|
-
Timestamp,
|
|
5
|
-
NextAnimation,
|
|
6
5
|
AnimatableValue,
|
|
7
|
-
HigherOrderAnimation,
|
|
8
6
|
AnimationObject,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export interface SequenceAnimation
|
|
12
|
-
extends Animation<SequenceAnimation>,
|
|
13
|
-
HigherOrderAnimation {
|
|
14
|
-
animationIndex: number;
|
|
15
|
-
}
|
|
7
|
+
Timestamp,
|
|
8
|
+
} from '../commonTypes';
|
|
16
9
|
|
|
17
10
|
export function withSequence(
|
|
18
11
|
..._animations: NextAnimation<AnimationObject>[]
|
|
@@ -1,35 +1,18 @@
|
|
|
1
1
|
import { defineAnimation } from './util';
|
|
2
2
|
import {
|
|
3
3
|
Timestamp,
|
|
4
|
-
HigherOrderAnimation,
|
|
5
|
-
AnimationCallback,
|
|
6
4
|
AnimatableValue,
|
|
7
5
|
AnimationObject,
|
|
8
6
|
Animation,
|
|
9
|
-
} from './commonTypes';
|
|
10
|
-
import {
|
|
11
7
|
AnimatedStyle,
|
|
12
8
|
NestedObject,
|
|
13
9
|
NestedObjectValues,
|
|
14
|
-
StyleProps,
|
|
15
10
|
} from '../commonTypes';
|
|
11
|
+
import { StyleLayoutAnimation } from './commonTypes';
|
|
16
12
|
import { withTiming } from './timing';
|
|
17
13
|
import { ColorProperties } from '../UpdateProps';
|
|
18
14
|
import { processColor } from '../Colors';
|
|
19
15
|
|
|
20
|
-
export interface StyleLayoutAnimation extends HigherOrderAnimation {
|
|
21
|
-
current: StyleProps;
|
|
22
|
-
styleAnimations: AnimatedStyle;
|
|
23
|
-
onFrame: (animation: StyleLayoutAnimation, timestamp: Timestamp) => boolean;
|
|
24
|
-
onStart: (
|
|
25
|
-
nextAnimation: StyleLayoutAnimation,
|
|
26
|
-
current: AnimatedStyle,
|
|
27
|
-
timestamp: Timestamp,
|
|
28
|
-
previousAnimation: StyleLayoutAnimation
|
|
29
|
-
) => void;
|
|
30
|
-
callback?: AnimationCallback;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
16
|
// resolves path to value for nested objects
|
|
34
17
|
// if path cannot be resolved returns undefined
|
|
35
18
|
export function resolvePath<T>(
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
|
-
Animation,
|
|
3
|
-
AnimationObject,
|
|
4
2
|
HigherOrderAnimation,
|
|
5
3
|
NextAnimation,
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
DelayAnimation,
|
|
5
|
+
RepeatAnimation,
|
|
6
|
+
SequenceAnimation,
|
|
7
|
+
StyleLayoutAnimation,
|
|
8
8
|
} from './commonTypes';
|
|
9
9
|
/* global _WORKLET */
|
|
10
10
|
import { ParsedColorArray, convertToHSVA, isColor, toRGBA } from '../Colors';
|
|
11
11
|
|
|
12
|
-
import {
|
|
13
|
-
|
|
12
|
+
import {
|
|
13
|
+
AnimatedStyle,
|
|
14
|
+
SharedValue,
|
|
15
|
+
AnimatableValue,
|
|
16
|
+
Animation,
|
|
17
|
+
AnimationObject,
|
|
18
|
+
Timestamp,
|
|
19
|
+
} from '../commonTypes';
|
|
14
20
|
import NativeReanimatedModule from '../NativeReanimated';
|
|
15
|
-
import { RepeatAnimation } from './repeat';
|
|
16
|
-
import { SequenceAnimation } from './sequence';
|
|
17
|
-
import { StyleLayoutAnimation } from './styleAnimation';
|
|
18
21
|
|
|
19
22
|
let IN_STYLE_UPDATER = false;
|
|
20
23
|
|
|
@@ -15,7 +15,6 @@ import {
|
|
|
15
15
|
ViewStyle,
|
|
16
16
|
TextStyle,
|
|
17
17
|
} from 'react-native';
|
|
18
|
-
import { Animation, AnimationObject } from './animation/commonTypes';
|
|
19
18
|
import { Context } from './hook/commonTypes';
|
|
20
19
|
|
|
21
20
|
export type TransformProperty =
|
|
@@ -59,6 +58,10 @@ export interface BasicWorkletFunction<T> extends WorkletFunction {
|
|
|
59
58
|
(): T;
|
|
60
59
|
}
|
|
61
60
|
|
|
61
|
+
export interface BasicWorkletFunctionOptional<T> extends WorkletFunction {
|
|
62
|
+
(): Partial<T>;
|
|
63
|
+
}
|
|
64
|
+
|
|
62
65
|
export interface NativeEvent<T> {
|
|
63
66
|
nativeEvent: T;
|
|
64
67
|
}
|
|
@@ -79,3 +82,47 @@ export type NestedObjectValues<T> =
|
|
|
79
82
|
export interface AdapterWorkletFunction extends WorkletFunction {
|
|
80
83
|
(value: NestedObject<string | number | AnimationObject>): void;
|
|
81
84
|
}
|
|
85
|
+
|
|
86
|
+
export type AnimatableValue = number | string | Array<number>;
|
|
87
|
+
|
|
88
|
+
export interface AnimationObject {
|
|
89
|
+
[key: string]: any;
|
|
90
|
+
callback: AnimationCallback;
|
|
91
|
+
current?: AnimatableValue;
|
|
92
|
+
toValue?: AnimationObject['current'];
|
|
93
|
+
startValue?: AnimationObject['current'];
|
|
94
|
+
finished?: boolean;
|
|
95
|
+
strippedCurrent?: number;
|
|
96
|
+
cancelled?: boolean;
|
|
97
|
+
|
|
98
|
+
__prefix?: string;
|
|
99
|
+
__suffix?: string;
|
|
100
|
+
onFrame: (animation: any, timestamp: Timestamp) => boolean;
|
|
101
|
+
onStart: (
|
|
102
|
+
nextAnimation: any,
|
|
103
|
+
current: any,
|
|
104
|
+
timestamp: Timestamp,
|
|
105
|
+
previousAnimation: any
|
|
106
|
+
) => void;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export interface Animation<T extends AnimationObject> extends AnimationObject {
|
|
110
|
+
onFrame: (animation: T, timestamp: Timestamp) => boolean;
|
|
111
|
+
onStart: (
|
|
112
|
+
nextAnimation: T,
|
|
113
|
+
current: T extends NumericAnimation ? number : AnimatableValue,
|
|
114
|
+
timestamp: Timestamp,
|
|
115
|
+
previousAnimation: T
|
|
116
|
+
) => void;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export interface NumericAnimation {
|
|
120
|
+
current?: number;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export type AnimationCallback = (
|
|
124
|
+
finished?: boolean,
|
|
125
|
+
current?: AnimatableValue
|
|
126
|
+
) => void;
|
|
127
|
+
|
|
128
|
+
export type Timestamp = number;
|
package/src/reanimated2/core.ts
CHANGED
|
@@ -7,12 +7,10 @@ import {
|
|
|
7
7
|
WorkletFunction,
|
|
8
8
|
ComplexWorkletFunction,
|
|
9
9
|
SharedValue,
|
|
10
|
-
} from './commonTypes';
|
|
11
|
-
import {
|
|
12
10
|
AnimationObject,
|
|
13
11
|
AnimatableValue,
|
|
14
12
|
Timestamp,
|
|
15
|
-
} from './
|
|
13
|
+
} from './commonTypes';
|
|
16
14
|
import { Descriptor } from './hook/commonTypes';
|
|
17
15
|
import JSReanimated from './js-reanimated/JSReanimated';
|
|
18
16
|
|
|
@@ -383,9 +381,11 @@ if (!NativeReanimatedModule.useOnlyV1) {
|
|
|
383
381
|
info: runOnJS(capturableConsole.info),
|
|
384
382
|
};
|
|
385
383
|
_setGlobalConsole(console);
|
|
386
|
-
global.performance
|
|
387
|
-
|
|
388
|
-
|
|
384
|
+
if (global.performance == null) {
|
|
385
|
+
global.performance = {
|
|
386
|
+
now: global._chronoNow,
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
389
|
})();
|
|
390
390
|
}
|
|
391
391
|
}
|