react-native-reanimated 3.0.0-rc.7 → 3.0.0-rc.8
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/Common/cpp/AnimatedSensor/AnimatedSensorModule.cpp +32 -37
- package/Common/cpp/AnimatedSensor/AnimatedSensorModule.h +4 -3
- package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.cpp +76 -0
- package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.h +41 -0
- package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +161 -165
- package/Common/cpp/NativeModules/NativeReanimatedModule.h +36 -34
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +22 -34
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.h +13 -14
- package/Common/cpp/SharedItems/RuntimeManager.h +1 -34
- package/Common/cpp/SharedItems/Shareables.cpp +142 -0
- package/Common/cpp/SharedItems/Shareables.h +455 -0
- package/Common/cpp/Tools/PlatformDepMethodsHolder.h +6 -0
- package/Common/cpp/Tools/RuntimeDecorator.cpp +54 -26
- package/Common/cpp/Tools/RuntimeDecorator.h +11 -2
- package/Common/cpp/Tools/Scheduler.cpp +10 -0
- package/Common/cpp/Tools/SingleInstanceChecker.h +1 -1
- package/android/src/main/cpp/LayoutAnimations.cpp +6 -16
- package/android/src/main/cpp/LayoutAnimations.h +4 -4
- package/android/src/main/cpp/NativeProxy.cpp +50 -63
- package/ios/native/NativeProxy.mm +26 -42
- package/lib/commonjs/createAnimatedComponent.js +7 -11
- package/lib/commonjs/createAnimatedComponent.js.map +1 -1
- package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js +24 -25
- package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
- package/lib/commonjs/reanimated2/ViewDescriptorsSet.js +27 -55
- package/lib/commonjs/reanimated2/ViewDescriptorsSet.js.map +1 -1
- package/lib/commonjs/reanimated2/WorkletEventHandler.js +5 -3
- package/lib/commonjs/reanimated2/WorkletEventHandler.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/util.js.map +1 -1
- package/lib/commonjs/reanimated2/commonTypes.js +7 -0
- package/lib/commonjs/reanimated2/commonTypes.js.map +1 -1
- package/lib/commonjs/reanimated2/core.js +111 -209
- package/lib/commonjs/reanimated2/core.js.map +1 -1
- package/lib/commonjs/reanimated2/globals.d.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js +15 -9
- package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedRef.js +18 -8
- package/lib/commonjs/reanimated2/hook/useAnimatedRef.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js +27 -36
- package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js +24 -50
- package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useSharedValue.js +3 -2
- package/lib/commonjs/reanimated2/hook/useSharedValue.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/utils.js.map +1 -1
- package/lib/commonjs/reanimated2/interpolateColor.js.map +1 -1
- package/lib/commonjs/reanimated2/jestUtils.js +8 -33
- package/lib/commonjs/reanimated2/jestUtils.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js +16 -100
- package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/index.js +5 -0
- package/lib/commonjs/reanimated2/js-reanimated/index.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js +91 -0
- package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js.map +1 -0
- package/lib/commonjs/reanimated2/layoutReanimation/index.js +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/index.js.map +1 -1
- package/lib/commonjs/reanimated2/mappers.js +186 -0
- package/lib/commonjs/reanimated2/mappers.js.map +1 -0
- package/lib/commonjs/reanimated2/mutables.js +173 -0
- package/lib/commonjs/reanimated2/mutables.js.map +1 -0
- package/lib/commonjs/reanimated2/shareables.js +153 -0
- package/lib/commonjs/reanimated2/shareables.js.map +1 -0
- package/lib/commonjs/reanimated2/threads.js +58 -0
- package/lib/commonjs/reanimated2/threads.js.map +1 -0
- package/lib/commonjs/reanimated2/time.js +55 -0
- package/lib/commonjs/reanimated2/time.js.map +1 -0
- package/lib/commonjs/reanimated2/valueSetter.js +81 -0
- package/lib/commonjs/reanimated2/valueSetter.js.map +1 -0
- package/lib/module/createAnimatedComponent.js +7 -12
- package/lib/module/createAnimatedComponent.js.map +1 -1
- package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +24 -25
- package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
- package/lib/module/reanimated2/ViewDescriptorsSet.js +27 -53
- package/lib/module/reanimated2/ViewDescriptorsSet.js.map +1 -1
- package/lib/module/reanimated2/WorkletEventHandler.js +4 -3
- package/lib/module/reanimated2/WorkletEventHandler.js.map +1 -1
- package/lib/module/reanimated2/animation/util.js.map +1 -1
- package/lib/module/reanimated2/commonTypes.js +7 -0
- package/lib/module/reanimated2/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/core.js +66 -188
- package/lib/module/reanimated2/core.js.map +1 -1
- package/lib/module/reanimated2/globals.d.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedKeyboard.js +16 -6
- package/lib/module/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedRef.js +17 -8
- package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedSensor.js +29 -34
- package/lib/module/reanimated2/hook/useAnimatedSensor.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedStyle.js +26 -52
- package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
- package/lib/module/reanimated2/hook/useSharedValue.js +3 -2
- package/lib/module/reanimated2/hook/useSharedValue.js.map +1 -1
- package/lib/module/reanimated2/hook/utils.js.map +1 -1
- package/lib/module/reanimated2/interpolateColor.js.map +1 -1
- package/lib/module/reanimated2/jestUtils.js +8 -31
- package/lib/module/reanimated2/jestUtils.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/JSReanimated.js +16 -95
- package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/index.js +5 -0
- package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationsManager.js +84 -0
- package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -0
- package/lib/module/reanimated2/layoutReanimation/index.js +1 -1
- package/lib/module/reanimated2/layoutReanimation/index.js.map +1 -1
- package/lib/module/reanimated2/mappers.js +173 -0
- package/lib/module/reanimated2/mappers.js.map +1 -0
- package/lib/module/reanimated2/mutables.js +149 -0
- package/lib/module/reanimated2/mutables.js.map +1 -0
- package/lib/module/reanimated2/shareables.js +133 -0
- package/lib/module/reanimated2/shareables.js.map +1 -0
- package/lib/module/reanimated2/threads.js +45 -0
- package/lib/module/reanimated2/threads.js.map +1 -0
- package/lib/module/reanimated2/time.js +37 -0
- package/lib/module/reanimated2/time.js.map +1 -0
- package/lib/module/reanimated2/valueSetter.js +66 -0
- package/lib/module/reanimated2/valueSetter.js.map +1 -0
- package/package.json +1 -1
- package/plugin.js +31 -15
- package/src/createAnimatedComponent.tsx +8 -24
- package/src/reanimated2/NativeReanimated/NativeReanimated.ts +34 -53
- package/src/reanimated2/ViewDescriptorsSet.ts +30 -69
- package/src/reanimated2/WorkletEventHandler.ts +4 -11
- package/src/reanimated2/animation/util.ts +1 -0
- package/src/reanimated2/commonTypes.ts +29 -4
- package/src/reanimated2/core.ts +103 -230
- package/src/reanimated2/globals.d.ts +26 -26
- package/src/reanimated2/hook/useAnimatedKeyboard.ts +18 -9
- package/src/reanimated2/hook/useAnimatedRef.ts +27 -9
- package/src/reanimated2/hook/useAnimatedSensor.ts +33 -31
- package/src/reanimated2/hook/useAnimatedStyle.ts +26 -64
- package/src/reanimated2/hook/useSharedValue.ts +6 -3
- package/src/reanimated2/hook/utils.ts +1 -1
- package/src/reanimated2/interpolateColor.ts +2 -2
- package/src/reanimated2/jestUtils.ts +14 -29
- package/src/reanimated2/js-reanimated/JSReanimated.ts +19 -93
- package/src/reanimated2/js-reanimated/index.ts +4 -0
- package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +7 -0
- package/src/reanimated2/layoutReanimation/animationBuilder/index.ts +1 -0
- package/src/reanimated2/layoutReanimation/animationsManager.ts +94 -0
- package/src/reanimated2/layoutReanimation/index.ts +1 -1
- package/src/reanimated2/mappers.ts +179 -0
- package/src/reanimated2/mutables.ts +151 -0
- package/src/reanimated2/shareables.ts +121 -0
- package/src/reanimated2/threads.ts +46 -0
- package/src/reanimated2/time.ts +30 -0
- package/src/reanimated2/valueSetter.ts +64 -0
- package/Common/cpp/LayoutAnimations/LayoutAnimationsProxy.cpp +0 -127
- package/Common/cpp/LayoutAnimations/LayoutAnimationsProxy.h +0 -56
- package/Common/cpp/Registries/MapperRegistry.cpp +0 -147
- package/Common/cpp/Registries/MapperRegistry.h +0 -29
- package/Common/cpp/Registries/WorkletsCache.cpp +0 -45
- package/Common/cpp/Registries/WorkletsCache.h +0 -24
- package/Common/cpp/SharedItems/FrozenObject.cpp +0 -35
- package/Common/cpp/SharedItems/FrozenObject.h +0 -36
- package/Common/cpp/SharedItems/HostFunctionHandler.h +0 -28
- package/Common/cpp/SharedItems/MutableValue.cpp +0 -134
- package/Common/cpp/SharedItems/MutableValue.h +0 -54
- package/Common/cpp/SharedItems/MutableValueSetterProxy.cpp +0 -47
- package/Common/cpp/SharedItems/MutableValueSetterProxy.h +0 -25
- package/Common/cpp/SharedItems/RemoteObject.cpp +0 -45
- package/Common/cpp/SharedItems/RemoteObject.h +0 -35
- package/Common/cpp/SharedItems/ShareableValue.cpp +0 -529
- package/Common/cpp/SharedItems/ShareableValue.h +0 -63
- package/Common/cpp/SharedItems/ValueWrapper.h +0 -183
- package/Common/cpp/Tools/JSIStoreValueUser.cpp +0 -55
- package/Common/cpp/Tools/JSIStoreValueUser.h +0 -37
- package/Common/cpp/Tools/Mapper.cpp +0 -86
- package/Common/cpp/Tools/Mapper.h +0 -51
- package/lib/commonjs/reanimated2/layoutReanimation/LayoutAnimationRepository.js +0 -58
- package/lib/commonjs/reanimated2/layoutReanimation/LayoutAnimationRepository.js.map +0 -1
- package/lib/module/reanimated2/layoutReanimation/LayoutAnimationRepository.js +0 -52
- package/lib/module/reanimated2/layoutReanimation/LayoutAnimationRepository.js.map +0 -1
- package/src/reanimated2/layoutReanimation/LayoutAnimationRepository.ts +0 -49
|
@@ -10,10 +10,6 @@ var _react = require("react");
|
|
|
10
10
|
|
|
11
11
|
var _core = require("../core");
|
|
12
12
|
|
|
13
|
-
var _NativeReanimated = _interopRequireDefault(require("../NativeReanimated"));
|
|
14
|
-
|
|
15
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
-
|
|
17
13
|
let SensorType;
|
|
18
14
|
exports.SensorType = SensorType;
|
|
19
15
|
|
|
@@ -25,9 +21,29 @@ exports.SensorType = SensorType;
|
|
|
25
21
|
SensorType[SensorType["ROTATION"] = 5] = "ROTATION";
|
|
26
22
|
})(SensorType || (exports.SensorType = SensorType = {}));
|
|
27
23
|
|
|
24
|
+
function initSensorData(sensorType) {
|
|
25
|
+
if (sensorType === SensorType.ROTATION) {
|
|
26
|
+
return (0, _core.makeMutable)({
|
|
27
|
+
qw: 0,
|
|
28
|
+
qx: 0,
|
|
29
|
+
qy: 0,
|
|
30
|
+
qz: 0,
|
|
31
|
+
yaw: 0,
|
|
32
|
+
pitch: 0,
|
|
33
|
+
roll: 0
|
|
34
|
+
});
|
|
35
|
+
} else {
|
|
36
|
+
return (0, _core.makeMutable)({
|
|
37
|
+
x: 0,
|
|
38
|
+
y: 0,
|
|
39
|
+
z: 0
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
28
44
|
function useAnimatedSensor(sensorType, userConfig) {
|
|
29
45
|
const ref = (0, _react.useRef)({
|
|
30
|
-
sensor:
|
|
46
|
+
sensor: initSensorData(sensorType),
|
|
31
47
|
unregister: () => {// NOOP
|
|
32
48
|
},
|
|
33
49
|
isAvailable: false,
|
|
@@ -35,46 +51,21 @@ function useAnimatedSensor(sensorType, userConfig) {
|
|
|
35
51
|
interval: 0
|
|
36
52
|
}
|
|
37
53
|
});
|
|
38
|
-
|
|
39
|
-
if (ref.current.sensor === null) {
|
|
40
|
-
ref.current.config = {
|
|
41
|
-
interval: 'auto',
|
|
42
|
-
...userConfig
|
|
43
|
-
};
|
|
44
|
-
let sensorData;
|
|
45
|
-
|
|
46
|
-
if (sensorType === SensorType.ROTATION) {
|
|
47
|
-
sensorData = {
|
|
48
|
-
qw: 0,
|
|
49
|
-
qx: 0,
|
|
50
|
-
qy: 0,
|
|
51
|
-
qz: 0,
|
|
52
|
-
yaw: 0,
|
|
53
|
-
pitch: 0,
|
|
54
|
-
roll: 0
|
|
55
|
-
};
|
|
56
|
-
} else {
|
|
57
|
-
sensorData = {
|
|
58
|
-
x: 0,
|
|
59
|
-
y: 0,
|
|
60
|
-
z: 0
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
ref.current.sensor = (0, _core.makeMutable)(sensorData);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
54
|
(0, _react.useEffect)(() => {
|
|
68
55
|
ref.current.config = {
|
|
69
56
|
interval: 'auto',
|
|
70
57
|
...userConfig
|
|
71
58
|
};
|
|
59
|
+
const sensorData = ref.current.sensor;
|
|
60
|
+
const id = (0, _core.registerSensor)(sensorType, ref.current.config.interval === 'auto' ? -1 : ref.current.config.interval, data => {
|
|
61
|
+
'worklet';
|
|
72
62
|
|
|
73
|
-
|
|
63
|
+
sensorData.value = data;
|
|
64
|
+
});
|
|
74
65
|
|
|
75
66
|
if (id !== -1) {
|
|
76
67
|
// if sensor is available
|
|
77
|
-
ref.current.unregister = () =>
|
|
68
|
+
ref.current.unregister = () => (0, _core.unregisterSensor)(id);
|
|
78
69
|
|
|
79
70
|
ref.current.isAvailable = true;
|
|
80
71
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SensorType","
|
|
1
|
+
{"version":3,"names":["SensorType","initSensorData","sensorType","ROTATION","makeMutable","qw","qx","qy","qz","yaw","pitch","roll","x","y","z","useAnimatedSensor","userConfig","ref","useRef","sensor","unregister","isAvailable","config","interval","useEffect","current","sensorData","id","registerSensor","data","value","unregisterSensor"],"sources":["useAnimatedSensor.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { makeMutable, registerSensor, unregisterSensor } from '../core';\nimport { SharedValue, Value3D, ValueRotation } from '../commonTypes';\n\nexport enum SensorType {\n ACCELEROMETER = 1,\n GYROSCOPE = 2,\n GRAVITY = 3,\n MAGNETIC_FIELD = 4,\n ROTATION = 5,\n}\n\nexport type SensorConfig = {\n interval: number | 'auto';\n};\n\nexport type AnimatedSensor = {\n sensor: SharedValue<Value3D | ValueRotation>;\n unregister: () => void;\n isAvailable: boolean;\n config: SensorConfig;\n};\n\nfunction initSensorData(\n sensorType: SensorType\n): SharedValue<Value3D | ValueRotation> {\n if (sensorType === SensorType.ROTATION) {\n return makeMutable<Value3D | ValueRotation>({\n qw: 0,\n qx: 0,\n qy: 0,\n qz: 0,\n yaw: 0,\n pitch: 0,\n roll: 0,\n });\n } else {\n return makeMutable<Value3D | ValueRotation>({\n x: 0,\n y: 0,\n z: 0,\n });\n }\n}\n\nexport function useAnimatedSensor(\n sensorType: SensorType,\n userConfig?: SensorConfig\n): AnimatedSensor {\n const ref = useRef<AnimatedSensor>({\n sensor: initSensorData(sensorType),\n unregister: () => {\n // NOOP\n },\n isAvailable: false,\n config: {\n interval: 0,\n },\n });\n\n useEffect(() => {\n ref.current.config = { interval: 'auto', ...userConfig };\n const sensorData = ref.current.sensor!;\n const id = registerSensor(\n sensorType,\n ref.current.config.interval === 'auto' ? -1 : ref.current.config.interval,\n (data) => {\n 'worklet';\n sensorData.value = data;\n }\n );\n\n if (id !== -1) {\n // if sensor is available\n ref.current.unregister = () => unregisterSensor(id);\n ref.current.isAvailable = true;\n } else {\n // if sensor is unavailable\n ref.current.unregister = () => {\n // NOOP\n };\n ref.current.isAvailable = false;\n }\n\n return () => {\n ref.current.unregister();\n };\n }, [sensorType, userConfig]);\n\n return ref.current;\n}\n"],"mappings":";;;;;;;;AAAA;;AACA;;IAGYA,U;;;WAAAA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;GAAAA,U,0BAAAA,U;;AAmBZ,SAASC,cAAT,CACEC,UADF,EAEwC;EACtC,IAAIA,UAAU,KAAKF,UAAU,CAACG,QAA9B,EAAwC;IACtC,OAAO,IAAAC,iBAAA,EAAqC;MAC1CC,EAAE,EAAE,CADsC;MAE1CC,EAAE,EAAE,CAFsC;MAG1CC,EAAE,EAAE,CAHsC;MAI1CC,EAAE,EAAE,CAJsC;MAK1CC,GAAG,EAAE,CALqC;MAM1CC,KAAK,EAAE,CANmC;MAO1CC,IAAI,EAAE;IAPoC,CAArC,CAAP;EASD,CAVD,MAUO;IACL,OAAO,IAAAP,iBAAA,EAAqC;MAC1CQ,CAAC,EAAE,CADuC;MAE1CC,CAAC,EAAE,CAFuC;MAG1CC,CAAC,EAAE;IAHuC,CAArC,CAAP;EAKD;AACF;;AAEM,SAASC,iBAAT,CACLb,UADK,EAELc,UAFK,EAGW;EAChB,MAAMC,GAAG,GAAG,IAAAC,aAAA,EAAuB;IACjCC,MAAM,EAAElB,cAAc,CAACC,UAAD,CADW;IAEjCkB,UAAU,EAAE,MAAM,CAChB;IACD,CAJgC;IAKjCC,WAAW,EAAE,KALoB;IAMjCC,MAAM,EAAE;MACNC,QAAQ,EAAE;IADJ;EANyB,CAAvB,CAAZ;EAWA,IAAAC,gBAAA,EAAU,MAAM;IACdP,GAAG,CAACQ,OAAJ,CAAYH,MAAZ,GAAqB;MAAEC,QAAQ,EAAE,MAAZ;MAAoB,GAAGP;IAAvB,CAArB;IACA,MAAMU,UAAU,GAAGT,GAAG,CAACQ,OAAJ,CAAYN,MAA/B;IACA,MAAMQ,EAAE,GAAG,IAAAC,oBAAA,EACT1B,UADS,EAETe,GAAG,CAACQ,OAAJ,CAAYH,MAAZ,CAAmBC,QAAnB,KAAgC,MAAhC,GAAyC,CAAC,CAA1C,GAA8CN,GAAG,CAACQ,OAAJ,CAAYH,MAAZ,CAAmBC,QAFxD,EAGRM,IAAD,IAAU;MACR;;MACAH,UAAU,CAACI,KAAX,GAAmBD,IAAnB;IACD,CANQ,CAAX;;IASA,IAAIF,EAAE,KAAK,CAAC,CAAZ,EAAe;MACb;MACAV,GAAG,CAACQ,OAAJ,CAAYL,UAAZ,GAAyB,MAAM,IAAAW,sBAAA,EAAiBJ,EAAjB,CAA/B;;MACAV,GAAG,CAACQ,OAAJ,CAAYJ,WAAZ,GAA0B,IAA1B;IACD,CAJD,MAIO;MACL;MACAJ,GAAG,CAACQ,OAAJ,CAAYL,UAAZ,GAAyB,MAAM,CAC7B;MACD,CAFD;;MAGAH,GAAG,CAACQ,OAAJ,CAAYJ,WAAZ,GAA0B,KAA1B;IACD;;IAED,OAAO,MAAM;MACXJ,GAAG,CAACQ,OAAJ,CAAYL,UAAZ;IACD,CAFD;EAGD,CA3BD,EA2BG,CAAClB,UAAD,EAAac,UAAb,CA3BH;EA6BA,OAAOC,GAAG,CAACQ,OAAX;AACD"}
|
|
@@ -34,7 +34,9 @@ function prepareAnimation(animatedProp, lastAnimation, lastValue) {
|
|
|
34
34
|
'worklet';
|
|
35
35
|
|
|
36
36
|
if (Array.isArray(animatedProp)) {
|
|
37
|
-
animatedProp.forEach((prop, index) =>
|
|
37
|
+
animatedProp.forEach((prop, index) => {
|
|
38
|
+
prepareAnimation(prop, lastAnimation && lastAnimation[index], lastValue && lastValue[index]);
|
|
39
|
+
}); // return animatedProp;
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
if (typeof animatedProp === 'object' && animatedProp.onFrame) {
|
|
@@ -147,13 +149,15 @@ function styleUpdater(viewDescriptors, updater, state, maybeViewRef, animationsA
|
|
|
147
149
|
}
|
|
148
150
|
|
|
149
151
|
if (hasAnimations) {
|
|
150
|
-
const frame =
|
|
152
|
+
const frame = _timestamp => {
|
|
151
153
|
const {
|
|
152
154
|
animations,
|
|
153
155
|
last,
|
|
154
156
|
isAnimationCancelled
|
|
155
157
|
} = state;
|
|
156
158
|
|
|
159
|
+
const timestamp = _timestamp ?? (0, _core.getTimestamp)();
|
|
160
|
+
|
|
157
161
|
if (isAnimationCancelled) {
|
|
158
162
|
state.isAnimationRunning = false;
|
|
159
163
|
return;
|
|
@@ -178,7 +182,7 @@ function styleUpdater(viewDescriptors, updater, state, maybeViewRef, animationsA
|
|
|
178
182
|
}
|
|
179
183
|
|
|
180
184
|
if (!allFinished) {
|
|
181
|
-
(
|
|
185
|
+
requestAnimationFrame(frame);
|
|
182
186
|
} else {
|
|
183
187
|
state.isAnimationRunning = false;
|
|
184
188
|
}
|
|
@@ -193,7 +197,7 @@ function styleUpdater(viewDescriptors, updater, state, maybeViewRef, animationsA
|
|
|
193
197
|
if (_frameTimestamp) {
|
|
194
198
|
frame(_frameTimestamp);
|
|
195
199
|
} else {
|
|
196
|
-
(
|
|
200
|
+
requestAnimationFrame(frame);
|
|
197
201
|
}
|
|
198
202
|
}
|
|
199
203
|
|
|
@@ -241,13 +245,15 @@ function jestStyleUpdater(viewDescriptors, updater, state, maybeViewRef, animati
|
|
|
241
245
|
}
|
|
242
246
|
});
|
|
243
247
|
|
|
244
|
-
function frame(
|
|
248
|
+
function frame(_timestamp) {
|
|
245
249
|
const {
|
|
246
250
|
animations,
|
|
247
251
|
last,
|
|
248
252
|
isAnimationCancelled
|
|
249
253
|
} = state;
|
|
250
254
|
|
|
255
|
+
const timestamp = _timestamp ?? (0, _core.getTimestamp)();
|
|
256
|
+
|
|
251
257
|
if (isAnimationCancelled) {
|
|
252
258
|
state.isAnimationRunning = false;
|
|
253
259
|
return;
|
|
@@ -271,7 +277,7 @@ function jestStyleUpdater(viewDescriptors, updater, state, maybeViewRef, animati
|
|
|
271
277
|
}
|
|
272
278
|
|
|
273
279
|
if (!allFinished) {
|
|
274
|
-
(
|
|
280
|
+
requestAnimationFrame(frame);
|
|
275
281
|
} else {
|
|
276
282
|
state.isAnimationRunning = false;
|
|
277
283
|
}
|
|
@@ -287,7 +293,7 @@ function jestStyleUpdater(viewDescriptors, updater, state, maybeViewRef, animati
|
|
|
287
293
|
if (_frameTimestamp) {
|
|
288
294
|
frame(_frameTimestamp);
|
|
289
295
|
} else {
|
|
290
|
-
(
|
|
296
|
+
requestAnimationFrame(frame);
|
|
291
297
|
}
|
|
292
298
|
}
|
|
293
299
|
} else {
|
|
@@ -323,10 +329,7 @@ function checkSharedValueUsage(prop, currentKey) {
|
|
|
323
329
|
}
|
|
324
330
|
|
|
325
331
|
function useAnimatedStyle(updater, dependencies, adapters) {
|
|
326
|
-
var _initRef$current;
|
|
327
|
-
|
|
328
332
|
const viewsRef = (0, _ViewDescriptorsSet.makeViewsRefSet)();
|
|
329
|
-
const viewDescriptors = (0, _ViewDescriptorsSet.makeViewDescriptorsSet)();
|
|
330
333
|
const initRef = (0, _react.useRef)();
|
|
331
334
|
const inputs = Object.values(updater._closure ?? {});
|
|
332
335
|
const adaptersArray = adapters ? Array.isArray(adapters) ? adapters : [adapters] : [];
|
|
@@ -351,26 +354,27 @@ function useAnimatedStyle(updater, dependencies, adapters) {
|
|
|
351
354
|
updater: updater
|
|
352
355
|
},
|
|
353
356
|
remoteState: (0, _core.makeRemote)({
|
|
354
|
-
last: initialStyle
|
|
357
|
+
last: initialStyle,
|
|
358
|
+
animations: {},
|
|
359
|
+
isAnimationCancelled: false,
|
|
360
|
+
isAnimationRunning: false
|
|
355
361
|
}),
|
|
356
|
-
|
|
362
|
+
viewDescriptors: (0, _ViewDescriptorsSet.makeViewDescriptorsSet)()
|
|
357
363
|
};
|
|
358
|
-
|
|
359
|
-
initRef.current.sharableViewDescriptors);
|
|
360
|
-
}
|
|
364
|
+
} // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
361
365
|
|
|
362
|
-
dependencies.push((_initRef$current = initRef.current) === null || _initRef$current === void 0 ? void 0 : _initRef$current.sharableViewDescriptors.value); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
363
366
|
|
|
364
367
|
const {
|
|
365
368
|
initial,
|
|
366
369
|
remoteState,
|
|
367
|
-
|
|
370
|
+
viewDescriptors
|
|
368
371
|
} = initRef.current;
|
|
372
|
+
const sharableViewDescriptors = viewDescriptors.sharableViewDescriptors;
|
|
369
373
|
const maybeViewRef = _NativeReanimated.default.native ? undefined : viewsRef;
|
|
374
|
+
dependencies.push(sharableViewDescriptors);
|
|
370
375
|
(0, _react.useEffect)(() => {
|
|
371
376
|
let fun;
|
|
372
377
|
let updaterFn = updater;
|
|
373
|
-
let optimalization = updater.__optimalization;
|
|
374
378
|
|
|
375
379
|
if (adapters) {
|
|
376
380
|
updaterFn = () => {
|
|
@@ -384,32 +388,7 @@ function useAnimatedStyle(updater, dependencies, adapters) {
|
|
|
384
388
|
};
|
|
385
389
|
}
|
|
386
390
|
|
|
387
|
-
if (
|
|
388
|
-
if ((0, _utils.hasColorProps)(updaterFn())) {
|
|
389
|
-
updaterFn = () => {
|
|
390
|
-
'worklet';
|
|
391
|
-
|
|
392
|
-
const newValues = updaterFn();
|
|
393
|
-
const oldValues = remoteState.last;
|
|
394
|
-
const diff = (0, _utils.styleDiff)(oldValues, newValues);
|
|
395
|
-
remoteState.last = Object.assign({}, oldValues, newValues);
|
|
396
|
-
(0, _utils.parseColors)(diff);
|
|
397
|
-
return diff;
|
|
398
|
-
};
|
|
399
|
-
} else {
|
|
400
|
-
updaterFn = () => {
|
|
401
|
-
'worklet';
|
|
402
|
-
|
|
403
|
-
const newValues = updaterFn();
|
|
404
|
-
const oldValues = remoteState.last;
|
|
405
|
-
const diff = (0, _utils.styleDiff)(oldValues, newValues);
|
|
406
|
-
remoteState.last = Object.assign({}, oldValues, newValues);
|
|
407
|
-
return diff;
|
|
408
|
-
};
|
|
409
|
-
}
|
|
410
|
-
} else if (!(0, _PlatformChecker.shouldBeUseWeb)()) {
|
|
411
|
-
optimalization = 0;
|
|
412
|
-
|
|
391
|
+
if (!(0, _PlatformChecker.shouldBeUseWeb)()) {
|
|
413
392
|
updaterFn = () => {
|
|
414
393
|
'worklet';
|
|
415
394
|
|
|
@@ -419,10 +398,6 @@ function useAnimatedStyle(updater, dependencies, adapters) {
|
|
|
419
398
|
};
|
|
420
399
|
}
|
|
421
400
|
|
|
422
|
-
if (typeof updater.__optimalization !== undefined) {
|
|
423
|
-
updaterFn.__optimalization = optimalization;
|
|
424
|
-
}
|
|
425
|
-
|
|
426
401
|
if ((0, _PlatformChecker.isJest)()) {
|
|
427
402
|
fun = () => {
|
|
428
403
|
'worklet';
|
|
@@ -437,8 +412,7 @@ function useAnimatedStyle(updater, dependencies, adapters) {
|
|
|
437
412
|
};
|
|
438
413
|
}
|
|
439
414
|
|
|
440
|
-
const mapperId = (0, _core.startMapper)(fun, inputs
|
|
441
|
-
sharableViewDescriptors);
|
|
415
|
+
const mapperId = (0, _core.startMapper)(fun, inputs);
|
|
442
416
|
return () => {
|
|
443
417
|
(0, _core.stopMapper)(mapperId);
|
|
444
418
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["prepareAnimation","animatedProp","lastAnimation","lastValue","Array","isArray","forEach","prop","index","onFrame","animation","value","current","undefined","callStart","timestamp","onStart","getTimestamp","Object","keys","key","runAnimations","result","animationsActive","allFinished","entry","finished","callback","k","styleUpdater","viewDescriptors","updater","state","maybeViewRef","animations","newValues","oldValues","last","hasAnimations","isAnimated","frame","isAnimationCancelled","isAnimationRunning","updates","propName","updateProps","requestFrame","_frameTimestamp","assign","style","getStyleWithoutAnimations","diff","styleDiff","jestStyleUpdater","animatedStyle","adapters","length","updatePropsJestWrapper","checkSharedValueUsage","currentKey","element","Error","useAnimatedStyle","dependencies","viewsRef","makeViewsRefSet","makeViewDescriptorsSet","initRef","useRef","inputs","values","_closure","adaptersArray","adaptersHash","buildWorkletsHash","useSharedValue","__workletHash","push","initialStyle","initialUpdaterRun","validateAnimatedStyles","initial","remoteState","makeRemote","sharableViewDescriptors","makeMutable","rebuildsharableViewDescriptors","NativeReanimatedModule","native","useEffect","fun","updaterFn","optimalization","__optimalization","adapter","canApplyOptimalisation","shouldBeUseWeb","hasColorProps","parseColors","isJest","mapperId","startMapper","stopMapper","process","env","JEST_WORKER_ID"],"sources":["useAnimatedStyle.ts"],"sourcesContent":["/* global _frameTimestamp */\nimport { MutableRefObject, useEffect, useRef } from 'react';\n\nimport {\n startMapper,\n stopMapper,\n makeRemote,\n requestFrame,\n getTimestamp,\n makeMutable,\n} from '../core';\nimport updateProps, { updatePropsJestWrapper } from '../UpdateProps';\nimport { initialUpdaterRun } from '../animation';\nimport NativeReanimatedModule from '../NativeReanimated';\nimport { useSharedValue } from './useSharedValue';\nimport {\n buildWorkletsHash,\n canApplyOptimalisation,\n getStyleWithoutAnimations,\n hasColorProps,\n isAnimated,\n parseColors,\n styleDiff,\n validateAnimatedStyles,\n} from './utils';\nimport { DependencyList, Descriptor } from './commonTypes';\nimport {\n makeViewDescriptorsSet,\n makeViewsRefSet,\n ViewDescriptorsSet,\n ViewRefSet,\n} from '../ViewDescriptorsSet';\nimport { isJest, shouldBeUseWeb } from '../PlatformChecker';\nimport {\n AnimationObject,\n Timestamp,\n AdapterWorkletFunction,\n AnimatedStyle,\n BasicWorkletFunction,\n BasicWorkletFunctionOptional,\n NestedObjectValues,\n SharedValue,\n} from '../commonTypes';\nexport interface AnimatedStyleResult {\n viewDescriptors: ViewDescriptorsSet;\n initial: AnimatedStyle;\n viewsRef: ViewRefSet<any>;\n animatedStyle?: MutableRefObject<AnimatedStyle>;\n}\n\ninterface AnimatedState {\n last: AnimatedStyle;\n animations: AnimatedStyle;\n isAnimationRunning: boolean;\n isAnimationCancelled: boolean;\n}\n\ninterface AnimationRef {\n initial: {\n value: AnimatedStyle;\n updater: () => AnimatedStyle;\n };\n remoteState: AnimatedState;\n sharableViewDescriptors: SharedValue<Descriptor[]>;\n}\n\nfunction prepareAnimation(\n animatedProp: AnimatedStyle,\n lastAnimation: AnimatedStyle,\n lastValue: AnimatedStyle\n): void {\n 'worklet';\n if (Array.isArray(animatedProp)) {\n animatedProp.forEach((prop, index) =>\n prepareAnimation(\n prop,\n lastAnimation && lastAnimation[index],\n lastValue && lastValue[index]\n )\n );\n // return animatedProp;\n }\n if (typeof animatedProp === 'object' && animatedProp.onFrame) {\n const animation = animatedProp;\n\n let value = animation.current;\n if (lastValue !== undefined) {\n if (typeof lastValue === 'object') {\n if (lastValue.value !== undefined) {\n // previously it was a shared value\n value = lastValue.value;\n } else if (lastValue.onFrame !== undefined) {\n if (lastAnimation?.current !== undefined) {\n // it was an animation before, copy its state\n value = lastAnimation.current;\n } else if (lastValue?.current !== undefined) {\n // it was initialized\n value = lastValue.current;\n }\n }\n } else {\n // previously it was a plain value, just set it as starting point\n value = lastValue;\n }\n }\n\n animation.callStart = (timestamp: Timestamp) => {\n animation.onStart(animation, value, timestamp, lastAnimation);\n };\n animation.callStart(getTimestamp());\n animation.callStart = null;\n } else if (typeof animatedProp === 'object') {\n // it is an object\n Object.keys(animatedProp).forEach((key) =>\n prepareAnimation(\n animatedProp[key],\n lastAnimation && lastAnimation[key],\n lastValue && lastValue[key]\n )\n );\n }\n}\n\nfunction runAnimations(\n animation: AnimatedStyle,\n timestamp: Timestamp,\n key: number | string,\n result: AnimatedStyle,\n animationsActive: SharedValue<boolean>\n): boolean {\n 'worklet';\n if (!animationsActive.value) {\n return true;\n }\n if (Array.isArray(animation)) {\n result[key] = [];\n let allFinished = true;\n animation.forEach((entry, index) => {\n if (\n !runAnimations(entry, timestamp, index, result[key], animationsActive)\n ) {\n allFinished = false;\n }\n });\n return allFinished;\n } else if (typeof animation === 'object' && animation.onFrame) {\n let finished = true;\n if (!animation.finished) {\n if (animation.callStart) {\n animation.callStart(timestamp);\n animation.callStart = null;\n }\n finished = animation.onFrame(animation, timestamp);\n animation.timestamp = timestamp;\n if (finished) {\n animation.finished = true;\n animation.callback && animation.callback(true /* finished */);\n }\n }\n result[key] = animation.current;\n return finished;\n } else if (typeof animation === 'object') {\n result[key] = {};\n let allFinished = true;\n Object.keys(animation).forEach((k) => {\n if (\n !runAnimations(\n animation[k],\n timestamp,\n k,\n result[key],\n animationsActive\n )\n ) {\n allFinished = false;\n }\n });\n return allFinished;\n } else {\n result[key] = animation;\n return true;\n }\n}\n\nfunction styleUpdater(\n viewDescriptors: SharedValue<Descriptor[]>,\n updater: BasicWorkletFunction<AnimatedStyle>,\n state: AnimatedState,\n maybeViewRef: ViewRefSet<any> | undefined,\n animationsActive: SharedValue<boolean>\n): void {\n 'worklet';\n const animations = state.animations ?? {};\n const newValues = updater() ?? {};\n const oldValues = state.last;\n\n let hasAnimations = false;\n for (const key in newValues) {\n const value = newValues[key];\n if (isAnimated(value)) {\n prepareAnimation(value, animations[key], oldValues[key]);\n animations[key] = value;\n hasAnimations = true;\n } else {\n delete animations[key];\n }\n }\n\n if (hasAnimations) {\n const frame = (timestamp: Timestamp) => {\n const { animations, last, isAnimationCancelled } = state;\n if (isAnimationCancelled) {\n state.isAnimationRunning = false;\n return;\n }\n\n const updates: AnimatedStyle = {};\n let allFinished = true;\n for (const propName in animations) {\n const finished = runAnimations(\n animations[propName],\n timestamp,\n propName,\n updates,\n animationsActive\n );\n if (finished) {\n last[propName] = updates[propName];\n delete animations[propName];\n } else {\n allFinished = false;\n }\n }\n\n if (updates) {\n updateProps(viewDescriptors, updates, maybeViewRef);\n }\n\n if (!allFinished) {\n requestFrame(frame);\n } else {\n state.isAnimationRunning = false;\n }\n };\n\n state.animations = animations;\n if (!state.isAnimationRunning) {\n state.isAnimationCancelled = false;\n state.isAnimationRunning = true;\n if (_frameTimestamp) {\n frame(_frameTimestamp);\n } else {\n requestFrame(frame);\n }\n }\n state.last = Object.assign({}, oldValues, newValues);\n const style = getStyleWithoutAnimations(state.last);\n if (style) {\n updateProps(viewDescriptors, style, maybeViewRef);\n }\n } else {\n state.isAnimationCancelled = true;\n state.animations = [];\n\n const diff = styleDiff(oldValues, newValues);\n state.last = Object.assign({}, oldValues, newValues);\n if (diff) {\n updateProps(viewDescriptors, newValues, maybeViewRef);\n }\n }\n}\n\nfunction jestStyleUpdater(\n viewDescriptors: SharedValue<Descriptor[]>,\n updater: BasicWorkletFunction<AnimatedStyle>,\n state: AnimatedState,\n maybeViewRef: ViewRefSet<any> | undefined,\n animationsActive: SharedValue<boolean>,\n animatedStyle: MutableRefObject<AnimatedStyle>,\n adapters: AdapterWorkletFunction[] = []\n): void {\n 'worklet';\n const animations: AnimatedStyle = state.animations ?? {};\n const newValues = updater() ?? {};\n const oldValues = state.last;\n\n // extract animated props\n let hasAnimations = false;\n Object.keys(animations).forEach((key) => {\n const value = newValues[key];\n if (!isAnimated(value)) {\n delete animations[key];\n }\n });\n Object.keys(newValues).forEach((key) => {\n const value = newValues[key];\n if (isAnimated(value)) {\n prepareAnimation(value, animations[key], oldValues[key]);\n animations[key] = value;\n hasAnimations = true;\n }\n });\n\n function frame(timestamp: Timestamp) {\n const { animations, last, isAnimationCancelled } = state;\n if (isAnimationCancelled) {\n state.isAnimationRunning = false;\n return;\n }\n\n const updates: AnimatedStyle = {};\n let allFinished = true;\n Object.keys(animations).forEach((propName) => {\n const finished = runAnimations(\n animations[propName],\n timestamp,\n propName,\n updates,\n animationsActive\n );\n if (finished) {\n last[propName] = updates[propName];\n delete animations[propName];\n } else {\n allFinished = false;\n }\n });\n\n if (Object.keys(updates).length) {\n updatePropsJestWrapper(\n viewDescriptors,\n updates,\n maybeViewRef,\n animatedStyle,\n adapters\n );\n }\n\n if (!allFinished) {\n requestFrame(frame);\n } else {\n state.isAnimationRunning = false;\n }\n }\n\n if (hasAnimations) {\n state.animations = animations;\n if (!state.isAnimationRunning) {\n state.isAnimationCancelled = false;\n state.isAnimationRunning = true;\n if (_frameTimestamp) {\n frame(_frameTimestamp);\n } else {\n requestFrame(frame);\n }\n }\n } else {\n state.isAnimationCancelled = true;\n state.animations = [];\n }\n\n // calculate diff\n const diff = styleDiff(oldValues, newValues);\n state.last = Object.assign({}, oldValues, newValues);\n\n if (Object.keys(diff).length !== 0) {\n updatePropsJestWrapper(\n viewDescriptors,\n diff,\n maybeViewRef,\n animatedStyle,\n adapters\n );\n }\n}\n\n// check for invalid usage of shared values in returned object\nfunction checkSharedValueUsage(\n prop: NestedObjectValues<AnimationObject>,\n currentKey?: string\n): void {\n if (Array.isArray(prop)) {\n // if it's an array (i.ex. transform) validate all its elements\n for (const element of prop) {\n checkSharedValueUsage(element, currentKey);\n }\n } else if (typeof prop === 'object' && prop.value === undefined) {\n // if it's a nested object, run validation for all its props\n for (const key of Object.keys(prop)) {\n checkSharedValueUsage(prop[key], key);\n }\n } else if (\n currentKey !== undefined &&\n typeof prop === 'object' &&\n prop.value !== undefined\n ) {\n // if shared value is passed insted of its value, throw an error\n throw new Error(\n `invalid value passed to \\`${currentKey}\\`, maybe you forgot to use \\`.value\\`?`\n );\n }\n}\n\nexport function useAnimatedStyle<T extends AnimatedStyle>(\n updater: BasicWorkletFunction<T>,\n dependencies?: DependencyList,\n adapters?: AdapterWorkletFunction | AdapterWorkletFunction[]\n): AnimatedStyleResult {\n const viewsRef: ViewRefSet<any> = makeViewsRefSet();\n const viewDescriptors: ViewDescriptorsSet = makeViewDescriptorsSet();\n const initRef = useRef<AnimationRef>();\n const inputs = Object.values(updater._closure ?? {});\n const adaptersArray: AdapterWorkletFunction[] = adapters\n ? Array.isArray(adapters)\n ? adapters\n : [adapters]\n : [];\n const adaptersHash = adapters ? buildWorkletsHash(adaptersArray) : null;\n const animationsActive = useSharedValue<boolean>(true);\n const animatedStyle: MutableRefObject<AnimatedStyle> = useRef<AnimatedStyle>(\n {}\n );\n\n // build dependencies\n if (!dependencies) {\n dependencies = [...inputs, updater.__workletHash];\n } else {\n dependencies.push(updater.__workletHash);\n }\n adaptersHash && dependencies.push(adaptersHash);\n\n if (!initRef.current) {\n const initialStyle: AnimatedStyle = initialUpdaterRun(updater);\n validateAnimatedStyles(initialStyle);\n initRef.current = {\n initial: {\n value: initialStyle,\n updater: updater,\n },\n remoteState: makeRemote({ last: initialStyle }),\n sharableViewDescriptors: makeMutable([]),\n };\n viewDescriptors.rebuildsharableViewDescriptors(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n initRef.current!.sharableViewDescriptors\n );\n }\n dependencies.push(initRef.current?.sharableViewDescriptors.value);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { initial, remoteState, sharableViewDescriptors } = initRef.current!;\n const maybeViewRef = NativeReanimatedModule.native ? undefined : viewsRef;\n\n useEffect(() => {\n let fun;\n let updaterFn = updater as BasicWorkletFunctionOptional<T>;\n let optimalization = updater.__optimalization;\n if (adapters) {\n updaterFn = () => {\n 'worklet';\n const newValues = updater();\n adaptersArray.forEach((adapter) => {\n adapter(newValues);\n });\n return newValues;\n };\n }\n\n if (canApplyOptimalisation(updaterFn) && !shouldBeUseWeb()) {\n if (hasColorProps(updaterFn())) {\n updaterFn = () => {\n 'worklet';\n const newValues = updaterFn();\n const oldValues = remoteState.last;\n const diff = styleDiff<T>(oldValues, newValues);\n remoteState.last = Object.assign({}, oldValues, newValues);\n parseColors(diff);\n return diff;\n };\n } else {\n updaterFn = () => {\n 'worklet';\n const newValues = updaterFn();\n const oldValues = remoteState.last;\n const diff = styleDiff<T>(oldValues, newValues);\n remoteState.last = Object.assign({}, oldValues, newValues);\n return diff;\n };\n }\n } else if (!shouldBeUseWeb()) {\n optimalization = 0;\n updaterFn = () => {\n 'worklet';\n const style = updaterFn();\n parseColors(style);\n return style;\n };\n }\n if (typeof updater.__optimalization !== undefined) {\n updaterFn.__optimalization = optimalization;\n }\n\n if (isJest()) {\n fun = () => {\n 'worklet';\n jestStyleUpdater(\n sharableViewDescriptors,\n updater,\n remoteState,\n maybeViewRef,\n animationsActive,\n animatedStyle,\n adaptersArray\n );\n };\n } else {\n fun = () => {\n 'worklet';\n styleUpdater(\n sharableViewDescriptors,\n updaterFn,\n remoteState,\n maybeViewRef,\n animationsActive\n );\n };\n }\n const mapperId = startMapper(\n fun,\n inputs,\n [],\n updaterFn,\n // TODO fix this\n sharableViewDescriptors\n );\n return () => {\n stopMapper(mapperId);\n };\n }, dependencies);\n\n useEffect(() => {\n animationsActive.value = true;\n return () => {\n // initRef.current = null;\n // viewsRef = null;\n animationsActive.value = false;\n };\n }, []);\n\n checkSharedValueUsage(initial.value);\n\n if (process.env.JEST_WORKER_ID) {\n return { viewDescriptors, initial: initial, viewsRef, animatedStyle };\n } else {\n return { viewDescriptors, initial: initial, viewsRef };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["prepareAnimation","animatedProp","lastAnimation","lastValue","Array","isArray","forEach","prop","index","onFrame","animation","value","current","undefined","callStart","timestamp","onStart","getTimestamp","Object","keys","key","runAnimations","result","animationsActive","allFinished","entry","finished","callback","k","styleUpdater","viewDescriptors","updater","state","maybeViewRef","animations","newValues","oldValues","last","hasAnimations","isAnimated","frame","_timestamp","isAnimationCancelled","isAnimationRunning","updates","propName","updateProps","requestAnimationFrame","_frameTimestamp","assign","style","getStyleWithoutAnimations","diff","styleDiff","jestStyleUpdater","animatedStyle","adapters","length","updatePropsJestWrapper","checkSharedValueUsage","currentKey","element","Error","useAnimatedStyle","dependencies","viewsRef","makeViewsRefSet","initRef","useRef","inputs","values","_closure","adaptersArray","adaptersHash","buildWorkletsHash","useSharedValue","__workletHash","push","initialStyle","initialUpdaterRun","validateAnimatedStyles","initial","remoteState","makeRemote","makeViewDescriptorsSet","sharableViewDescriptors","NativeReanimatedModule","native","useEffect","fun","updaterFn","adapter","shouldBeUseWeb","parseColors","isJest","mapperId","startMapper","stopMapper","process","env","JEST_WORKER_ID"],"sources":["useAnimatedStyle.ts"],"sourcesContent":["/* global _frameTimestamp */\nimport { MutableRefObject, useEffect, useRef } from 'react';\n\nimport { startMapper, stopMapper, makeRemote, getTimestamp } from '../core';\nimport updateProps, { updatePropsJestWrapper } from '../UpdateProps';\nimport { initialUpdaterRun } from '../animation';\nimport NativeReanimatedModule from '../NativeReanimated';\nimport { useSharedValue } from './useSharedValue';\nimport {\n buildWorkletsHash,\n getStyleWithoutAnimations,\n isAnimated,\n parseColors,\n styleDiff,\n validateAnimatedStyles,\n} from './utils';\nimport { DependencyList, Descriptor } from './commonTypes';\nimport {\n makeViewDescriptorsSet,\n makeViewsRefSet,\n ViewDescriptorsSet,\n ViewRefSet,\n} from '../ViewDescriptorsSet';\nimport { isJest, shouldBeUseWeb } from '../PlatformChecker';\nimport {\n AnimationObject,\n Timestamp,\n AdapterWorkletFunction,\n AnimatedStyle,\n BasicWorkletFunction,\n BasicWorkletFunctionOptional,\n NestedObjectValues,\n SharedValue,\n} from '../commonTypes';\nexport interface AnimatedStyleResult {\n viewDescriptors: ViewDescriptorsSet;\n initial: AnimatedStyle;\n viewsRef: ViewRefSet<any>;\n animatedStyle?: MutableRefObject<AnimatedStyle>;\n}\n\ninterface AnimatedState {\n last: AnimatedStyle;\n animations: AnimatedStyle;\n isAnimationRunning: boolean;\n isAnimationCancelled: boolean;\n}\n\ninterface AnimationRef {\n initial: {\n value: AnimatedStyle;\n updater: () => AnimatedStyle;\n };\n remoteState: AnimatedState;\n viewDescriptors: ViewDescriptorsSet;\n}\n\nfunction prepareAnimation(\n animatedProp: AnimatedStyle,\n lastAnimation: AnimatedStyle,\n lastValue: AnimatedStyle\n): void {\n 'worklet';\n if (Array.isArray(animatedProp)) {\n animatedProp.forEach((prop, index) => {\n prepareAnimation(\n prop,\n lastAnimation && lastAnimation[index],\n lastValue && lastValue[index]\n );\n });\n // return animatedProp;\n }\n if (typeof animatedProp === 'object' && animatedProp.onFrame) {\n const animation = animatedProp;\n\n let value = animation.current;\n if (lastValue !== undefined) {\n if (typeof lastValue === 'object') {\n if (lastValue.value !== undefined) {\n // previously it was a shared value\n value = lastValue.value;\n } else if (lastValue.onFrame !== undefined) {\n if (lastAnimation?.current !== undefined) {\n // it was an animation before, copy its state\n value = lastAnimation.current;\n } else if (lastValue?.current !== undefined) {\n // it was initialized\n value = lastValue.current;\n }\n }\n } else {\n // previously it was a plain value, just set it as starting point\n value = lastValue;\n }\n }\n\n animation.callStart = (timestamp: Timestamp) => {\n animation.onStart(animation, value, timestamp, lastAnimation);\n };\n animation.callStart(getTimestamp());\n animation.callStart = null;\n } else if (typeof animatedProp === 'object') {\n // it is an object\n Object.keys(animatedProp).forEach((key) =>\n prepareAnimation(\n animatedProp[key],\n lastAnimation && lastAnimation[key],\n lastValue && lastValue[key]\n )\n );\n }\n}\n\nfunction runAnimations(\n animation: AnimatedStyle,\n timestamp: Timestamp,\n key: number | string,\n result: AnimatedStyle,\n animationsActive: SharedValue<boolean>\n): boolean {\n 'worklet';\n if (!animationsActive.value) {\n return true;\n }\n if (Array.isArray(animation)) {\n result[key] = [];\n let allFinished = true;\n animation.forEach((entry, index) => {\n if (\n !runAnimations(entry, timestamp, index, result[key], animationsActive)\n ) {\n allFinished = false;\n }\n });\n return allFinished;\n } else if (typeof animation === 'object' && animation.onFrame) {\n let finished = true;\n if (!animation.finished) {\n if (animation.callStart) {\n animation.callStart(timestamp);\n animation.callStart = null;\n }\n finished = animation.onFrame(animation, timestamp);\n animation.timestamp = timestamp;\n if (finished) {\n animation.finished = true;\n animation.callback && animation.callback(true /* finished */);\n }\n }\n result[key] = animation.current;\n return finished;\n } else if (typeof animation === 'object') {\n result[key] = {};\n let allFinished = true;\n Object.keys(animation).forEach((k) => {\n if (\n !runAnimations(\n animation[k],\n timestamp,\n k,\n result[key],\n animationsActive\n )\n ) {\n allFinished = false;\n }\n });\n return allFinished;\n } else {\n result[key] = animation;\n return true;\n }\n}\n\nfunction styleUpdater(\n viewDescriptors: SharedValue<Descriptor[]>,\n updater: BasicWorkletFunction<AnimatedStyle>,\n state: AnimatedState,\n maybeViewRef: ViewRefSet<any> | undefined,\n animationsActive: SharedValue<boolean>\n): void {\n 'worklet';\n const animations = state.animations ?? {};\n const newValues = updater() ?? {};\n const oldValues = state.last;\n\n let hasAnimations = false;\n for (const key in newValues) {\n const value = newValues[key];\n if (isAnimated(value)) {\n prepareAnimation(value, animations[key], oldValues[key]);\n animations[key] = value;\n hasAnimations = true;\n } else {\n delete animations[key];\n }\n }\n\n if (hasAnimations) {\n const frame = (_timestamp?: Timestamp) => {\n const { animations, last, isAnimationCancelled } = state;\n const timestamp = _timestamp ?? getTimestamp();\n if (isAnimationCancelled) {\n state.isAnimationRunning = false;\n return;\n }\n\n const updates: AnimatedStyle = {};\n let allFinished = true;\n for (const propName in animations) {\n const finished = runAnimations(\n animations[propName],\n timestamp,\n propName,\n updates,\n animationsActive\n );\n if (finished) {\n last[propName] = updates[propName];\n delete animations[propName];\n } else {\n allFinished = false;\n }\n }\n\n if (updates) {\n updateProps(viewDescriptors, updates, maybeViewRef);\n }\n\n if (!allFinished) {\n requestAnimationFrame(frame);\n } else {\n state.isAnimationRunning = false;\n }\n };\n\n state.animations = animations;\n if (!state.isAnimationRunning) {\n state.isAnimationCancelled = false;\n state.isAnimationRunning = true;\n if (_frameTimestamp) {\n frame(_frameTimestamp);\n } else {\n requestAnimationFrame(frame);\n }\n }\n state.last = Object.assign({}, oldValues, newValues);\n const style = getStyleWithoutAnimations(state.last);\n if (style) {\n updateProps(viewDescriptors, style, maybeViewRef);\n }\n } else {\n state.isAnimationCancelled = true;\n state.animations = [];\n\n const diff = styleDiff(oldValues, newValues);\n state.last = Object.assign({}, oldValues, newValues);\n if (diff) {\n updateProps(viewDescriptors, newValues, maybeViewRef);\n }\n }\n}\n\nfunction jestStyleUpdater(\n viewDescriptors: SharedValue<Descriptor[]>,\n updater: BasicWorkletFunction<AnimatedStyle>,\n state: AnimatedState,\n maybeViewRef: ViewRefSet<any> | undefined,\n animationsActive: SharedValue<boolean>,\n animatedStyle: MutableRefObject<AnimatedStyle>,\n adapters: AdapterWorkletFunction[] = []\n): void {\n 'worklet';\n const animations: AnimatedStyle = state.animations ?? {};\n const newValues = updater() ?? {};\n const oldValues = state.last;\n\n // extract animated props\n let hasAnimations = false;\n Object.keys(animations).forEach((key) => {\n const value = newValues[key];\n if (!isAnimated(value)) {\n delete animations[key];\n }\n });\n Object.keys(newValues).forEach((key) => {\n const value = newValues[key];\n if (isAnimated(value)) {\n prepareAnimation(value, animations[key], oldValues[key]);\n animations[key] = value;\n hasAnimations = true;\n }\n });\n\n function frame(_timestamp?: Timestamp) {\n const { animations, last, isAnimationCancelled } = state;\n const timestamp = _timestamp ?? getTimestamp();\n if (isAnimationCancelled) {\n state.isAnimationRunning = false;\n return;\n }\n\n const updates: AnimatedStyle = {};\n let allFinished = true;\n Object.keys(animations).forEach((propName) => {\n const finished = runAnimations(\n animations[propName],\n timestamp,\n propName,\n updates,\n animationsActive\n );\n if (finished) {\n last[propName] = updates[propName];\n delete animations[propName];\n } else {\n allFinished = false;\n }\n });\n\n if (Object.keys(updates).length) {\n updatePropsJestWrapper(\n viewDescriptors,\n updates,\n maybeViewRef,\n animatedStyle,\n adapters\n );\n }\n\n if (!allFinished) {\n requestAnimationFrame(frame);\n } else {\n state.isAnimationRunning = false;\n }\n }\n\n if (hasAnimations) {\n state.animations = animations;\n if (!state.isAnimationRunning) {\n state.isAnimationCancelled = false;\n state.isAnimationRunning = true;\n if (_frameTimestamp) {\n frame(_frameTimestamp);\n } else {\n requestAnimationFrame(frame);\n }\n }\n } else {\n state.isAnimationCancelled = true;\n state.animations = [];\n }\n\n // calculate diff\n const diff = styleDiff(oldValues, newValues);\n state.last = Object.assign({}, oldValues, newValues);\n\n if (Object.keys(diff).length !== 0) {\n updatePropsJestWrapper(\n viewDescriptors,\n diff,\n maybeViewRef,\n animatedStyle,\n adapters\n );\n }\n}\n\n// check for invalid usage of shared values in returned object\nfunction checkSharedValueUsage(\n prop: NestedObjectValues<AnimationObject>,\n currentKey?: string\n): void {\n if (Array.isArray(prop)) {\n // if it's an array (i.ex. transform) validate all its elements\n for (const element of prop) {\n checkSharedValueUsage(element, currentKey);\n }\n } else if (typeof prop === 'object' && prop.value === undefined) {\n // if it's a nested object, run validation for all its props\n for (const key of Object.keys(prop)) {\n checkSharedValueUsage(prop[key], key);\n }\n } else if (\n currentKey !== undefined &&\n typeof prop === 'object' &&\n prop.value !== undefined\n ) {\n // if shared value is passed insted of its value, throw an error\n throw new Error(\n `invalid value passed to \\`${currentKey}\\`, maybe you forgot to use \\`.value\\`?`\n );\n }\n}\n\nexport function useAnimatedStyle<T extends AnimatedStyle>(\n updater: BasicWorkletFunction<T>,\n dependencies?: DependencyList,\n adapters?: AdapterWorkletFunction | AdapterWorkletFunction[]\n): AnimatedStyleResult {\n const viewsRef: ViewRefSet<any> = makeViewsRefSet();\n const initRef = useRef<AnimationRef>();\n const inputs = Object.values(updater._closure ?? {});\n const adaptersArray: AdapterWorkletFunction[] = adapters\n ? Array.isArray(adapters)\n ? adapters\n : [adapters]\n : [];\n const adaptersHash = adapters ? buildWorkletsHash(adaptersArray) : null;\n const animationsActive = useSharedValue<boolean>(true);\n const animatedStyle: MutableRefObject<AnimatedStyle> = useRef<AnimatedStyle>(\n {}\n );\n\n // build dependencies\n if (!dependencies) {\n dependencies = [...inputs, updater.__workletHash];\n } else {\n dependencies.push(updater.__workletHash);\n }\n adaptersHash && dependencies.push(adaptersHash);\n\n if (!initRef.current) {\n const initialStyle: AnimatedStyle = initialUpdaterRun(updater);\n validateAnimatedStyles(initialStyle);\n initRef.current = {\n initial: {\n value: initialStyle,\n updater: updater,\n },\n remoteState: makeRemote<AnimatedState>({\n last: initialStyle,\n animations: {},\n isAnimationCancelled: false,\n isAnimationRunning: false,\n }),\n viewDescriptors: makeViewDescriptorsSet(),\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { initial, remoteState, viewDescriptors } = initRef.current!;\n const sharableViewDescriptors = viewDescriptors.sharableViewDescriptors;\n const maybeViewRef = NativeReanimatedModule.native ? undefined : viewsRef;\n\n dependencies.push(sharableViewDescriptors);\n\n useEffect(() => {\n let fun;\n let updaterFn = updater as BasicWorkletFunctionOptional<T>;\n if (adapters) {\n updaterFn = () => {\n 'worklet';\n const newValues = updater();\n adaptersArray.forEach((adapter) => {\n adapter(newValues);\n });\n return newValues;\n };\n }\n\n if (!shouldBeUseWeb()) {\n updaterFn = () => {\n 'worklet';\n const style = updaterFn();\n parseColors(style);\n return style;\n };\n }\n\n if (isJest()) {\n fun = () => {\n 'worklet';\n jestStyleUpdater(\n sharableViewDescriptors,\n updater,\n remoteState,\n maybeViewRef,\n animationsActive,\n animatedStyle,\n adaptersArray\n );\n };\n } else {\n fun = () => {\n 'worklet';\n styleUpdater(\n sharableViewDescriptors,\n updaterFn,\n remoteState,\n maybeViewRef,\n animationsActive\n );\n };\n }\n const mapperId = startMapper(fun, inputs);\n return () => {\n stopMapper(mapperId);\n };\n }, dependencies);\n\n useEffect(() => {\n animationsActive.value = true;\n return () => {\n // initRef.current = null;\n // viewsRef = null;\n animationsActive.value = false;\n };\n }, []);\n\n checkSharedValueUsage(initial.value);\n\n if (process.env.JEST_WORKER_ID) {\n return { viewDescriptors, initial: initial, viewsRef, animatedStyle };\n } else {\n return { viewDescriptors, initial: initial, viewsRef };\n }\n}\n"],"mappings":"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"}
|
|
@@ -12,10 +12,11 @@ var _animation = require("../animation");
|
|
|
12
12
|
var _core = require("../core");
|
|
13
13
|
|
|
14
14
|
function useSharedValue(init) {
|
|
15
|
-
|
|
15
|
+
let oneWayReadsOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
16
|
+
const ref = (0, _react.useRef)((0, _core.makeMutable)(init, oneWayReadsOnly));
|
|
16
17
|
|
|
17
18
|
if (ref.current === null) {
|
|
18
|
-
ref.current = (0, _core.makeMutable)(init);
|
|
19
|
+
ref.current = (0, _core.makeMutable)(init, oneWayReadsOnly);
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
(0, _react.useEffect)(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSharedValue","init","ref","useRef","makeMutable","current","useEffect","cancelAnimation"],"sources":["useSharedValue.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { cancelAnimation } from '../animation';\nimport { SharedValue } from '../commonTypes';\nimport { makeMutable } from '../core';\n\nexport function useSharedValue<T>(init: T): SharedValue<T> {\n const ref = useRef<SharedValue<T>>(makeMutable(init));\n\n if (ref.current === null) {\n ref.current = makeMutable(init);\n }\n\n useEffect(() => {\n return () => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n cancelAnimation(ref.current!);\n };\n }, []);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return ref.current!;\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEO,SAASA,cAAT,
|
|
1
|
+
{"version":3,"names":["useSharedValue","init","oneWayReadsOnly","ref","useRef","makeMutable","current","useEffect","cancelAnimation"],"sources":["useSharedValue.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { cancelAnimation } from '../animation';\nimport { SharedValue } from '../commonTypes';\nimport { makeMutable } from '../core';\n\nexport function useSharedValue<T>(\n init: T,\n oneWayReadsOnly = false\n): SharedValue<T> {\n const ref = useRef<SharedValue<T>>(makeMutable(init, oneWayReadsOnly));\n\n if (ref.current === null) {\n ref.current = makeMutable(init, oneWayReadsOnly);\n }\n\n useEffect(() => {\n return () => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n cancelAnimation(ref.current!);\n };\n }, []);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return ref.current!;\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEO,SAASA,cAAT,CACLC,IADK,EAGW;EAAA,IADhBC,eACgB,uEADE,KACF;EAChB,MAAMC,GAAG,GAAG,IAAAC,aAAA,EAAuB,IAAAC,iBAAA,EAAYJ,IAAZ,EAAkBC,eAAlB,CAAvB,CAAZ;;EAEA,IAAIC,GAAG,CAACG,OAAJ,KAAgB,IAApB,EAA0B;IACxBH,GAAG,CAACG,OAAJ,GAAc,IAAAD,iBAAA,EAAYJ,IAAZ,EAAkBC,eAAlB,CAAd;EACD;;EAED,IAAAK,gBAAA,EAAU,MAAM;IACd,OAAO,MAAM;MACX;MACA,IAAAC,0BAAA,EAAgBL,GAAG,CAACG,OAApB;IACD,CAHD;EAID,CALD,EAKG,EALH,EAPgB,CAchB;;EACA,OAAOH,GAAG,CAACG,OAAX;AACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEvent","handler","eventNames","rebuild","initRef","useRef","current","WorkletEventHandler","updateWorklet","useHandler","handlers","dependencies","context","makeRemote","savedDependencies","useEffect","buildDependencies","doDependenciesDiffer","areDependenciesEqual","useWeb","isWeb","isJest","buildWorkletsHash","Object","values","reduce","acc","worklet","__workletHash","toString","handlersList","filter","undefined","map","workletHash","closure","_closure","push","nextDeps","prevDeps","is","x","y","objectIs","areHookInputsEqual","length","i","hasColorProps","updates","colorPropsSet","Set","colorProps","key","has","parseColors","indexOf","processedColor","processColor","canApplyOptimalisation","upadterFn","FUNCTIONLESS_FLAG","STATEMENTLESS_FLAG","optimalization","__optimalization","isAnimated","prop","propsToCheck","currentProp","pop","Array","isArray","item","onFrame","styleDiff","oldStyle","newStyle","diff","value","oldValue","getStyleWithoutAnimations","validateAnimatedStyles","styles","Error"],"sources":["utils.ts"],"sourcesContent":["import { MutableRefObject, useEffect, useRef } from 'react';\nimport { processColor } from '../Colors';\nimport {\n AnimatedStyle,\n Context,\n NativeEvent,\n NestedObjectValues,\n StyleProps,\n WorkletFunction,\n AnimationObject,\n} from '../commonTypes';\nimport { makeRemote } from '../core';\nimport { isWeb, isJest } from '../PlatformChecker';\nimport { colorProps } from '../UpdateProps';\nimport WorkletEventHandler from '../WorkletEventHandler';\nimport { ContextWithDependencies, DependencyList } from './commonTypes';\n\ninterface Handler<T, TContext extends Context> extends WorkletFunction {\n (event: T, context: TContext): void;\n}\n\ninterface Handlers<T, TContext extends Context> {\n [key: string]: Handler<T, TContext> | undefined;\n}\n\nexport interface UseHandlerContext<TContext extends Context> {\n context: TContext;\n doDependenciesDiffer: boolean;\n useWeb: boolean;\n}\n\nexport function useEvent<T extends NativeEvent<T>>(\n handler: (event: T) => void,\n eventNames: string[] = [],\n rebuild = false\n): MutableRefObject<WorkletEventHandler<T> | null> {\n const initRef = useRef<WorkletEventHandler<T> | null>(null);\n if (initRef.current === null) {\n initRef.current = new WorkletEventHandler(handler, eventNames);\n } else if (rebuild) {\n initRef.current.updateWorklet(handler);\n }\n\n return initRef;\n}\n\nexport function useHandler<T, TContext extends Context>(\n handlers: Handlers<T, TContext>,\n dependencies?: DependencyList\n): UseHandlerContext<TContext> {\n const initRef = useRef<ContextWithDependencies<TContext> | null>(null);\n if (initRef.current === null) {\n initRef.current = {\n context: makeRemote({}),\n savedDependencies: [],\n };\n }\n\n useEffect(() => {\n return () => {\n initRef.current = null;\n };\n }, []);\n\n const { context, savedDependencies } = initRef.current;\n\n dependencies = buildDependencies(dependencies, handlers);\n\n const doDependenciesDiffer = !areDependenciesEqual(\n dependencies,\n savedDependencies\n );\n initRef.current.savedDependencies = dependencies;\n const useWeb = isWeb() || isJest();\n\n return { context, doDependenciesDiffer, useWeb };\n}\n\n// builds one big hash from multiple worklets' hashes\nexport function buildWorkletsHash(\n handlers: Record<string, WorkletFunction> | Array<WorkletFunction>\n): string {\n return Object.values(handlers).reduce(\n (acc: string, worklet: WorkletFunction) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n acc + worklet.__workletHash!.toString(),\n ''\n );\n}\n\n// builds dependencies array for gesture handlers\nexport function buildDependencies(\n dependencies: DependencyList,\n handlers: Record<string, WorkletFunction | undefined>\n): Array<unknown> {\n const handlersList: WorkletFunction[] = Object.values(handlers).filter(\n (handler) => handler !== undefined\n ) as WorkletFunction[];\n if (!dependencies) {\n dependencies = handlersList.map((handler) => {\n return {\n workletHash: handler.__workletHash,\n closure: handler._closure,\n };\n });\n } else {\n dependencies.push(buildWorkletsHash(handlersList));\n }\n return dependencies;\n}\n\n// this is supposed to work as useEffect comparison\nexport function areDependenciesEqual(\n nextDeps: DependencyList,\n prevDeps: DependencyList\n): boolean {\n function is(x: number, y: number) {\n /* eslint-disable no-self-compare */\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y);\n /* eslint-enable no-self-compare */\n }\n const objectIs: (nextDeps: unknown, prevDeps: unknown) => boolean =\n typeof Object.is === 'function' ? Object.is : is;\n\n function areHookInputsEqual(\n nextDeps: DependencyList,\n prevDeps: DependencyList\n ): boolean {\n if (!nextDeps || !prevDeps || prevDeps.length !== nextDeps.length) {\n return false;\n }\n for (let i = 0; i < prevDeps.length; ++i) {\n if (!objectIs(nextDeps[i], prevDeps[i])) {\n return false;\n }\n }\n return true;\n }\n\n return areHookInputsEqual(nextDeps, prevDeps);\n}\n\nexport function hasColorProps(updates: AnimatedStyle): boolean {\n const colorPropsSet = new Set(colorProps);\n for (const key in updates) {\n if (colorPropsSet.has(key)) {\n return true;\n }\n }\n return false;\n}\n\nexport function parseColors(updates: AnimatedStyle): void {\n 'worklet';\n for (const key in updates) {\n if (colorProps.indexOf(key) !== -1) {\n // value could be an animation in which case processColor will recognize it and will return undefined\n // -> in such a case we don't want to override style of that key\n const processedColor = processColor(updates[key]);\n if (processedColor !== undefined) {\n updates[key] = processedColor;\n }\n }\n }\n}\n\nexport function canApplyOptimalisation(upadterFn: WorkletFunction): number {\n const FUNCTIONLESS_FLAG = 0b00000001;\n const STATEMENTLESS_FLAG = 0b00000010;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const optimalization = upadterFn.__optimalization!;\n return (\n optimalization & FUNCTIONLESS_FLAG && optimalization & STATEMENTLESS_FLAG\n );\n}\n\nexport function isAnimated(prop: NestedObjectValues<AnimationObject>): boolean {\n 'worklet';\n const propsToCheck: NestedObjectValues<AnimationObject>[] = [prop];\n while (propsToCheck.length > 0) {\n const currentProp: NestedObjectValues<AnimationObject> =\n propsToCheck.pop() as NestedObjectValues<AnimationObject>;\n if (Array.isArray(currentProp)) {\n for (const item of currentProp) {\n propsToCheck.push(item);\n }\n } else if (currentProp?.onFrame !== undefined) {\n return true;\n } else if (typeof currentProp === 'object') {\n for (const item of Object.values(currentProp)) {\n propsToCheck.push(item);\n }\n }\n // if none of the above, it's not the animated prop, check next one\n }\n\n // when none of the props were animated return false\n return false;\n}\n\nexport function styleDiff<T extends AnimatedStyle>(\n oldStyle: AnimatedStyle,\n newStyle: AnimatedStyle\n): Partial<T> {\n 'worklet';\n const diff: any = {};\n for (const key in oldStyle) {\n if (newStyle[key] === undefined) {\n diff[key] = null;\n }\n }\n for (const key in newStyle) {\n const value = newStyle[key];\n const oldValue = oldStyle[key];\n\n if (isAnimated(value)) {\n // do nothing\n continue;\n }\n if (oldValue !== value) {\n diff[key] = value;\n }\n }\n return diff;\n}\n\nexport function getStyleWithoutAnimations(newStyle: AnimatedStyle): StyleProps {\n 'worklet';\n const diff: StyleProps = {};\n\n for (const key in newStyle) {\n const value = newStyle[key];\n if (isAnimated(value)) {\n continue;\n }\n diff[key] = value;\n }\n return diff;\n}\n\nexport const validateAnimatedStyles = (styles: AnimatedStyle): void => {\n 'worklet';\n if (typeof styles !== 'object') {\n throw new Error(\n `useAnimatedStyle has to return an object, found ${typeof styles} instead`\n );\n } else if (Array.isArray(styles)) {\n throw new Error(\n 'useAnimatedStyle has to return an object and cannot return static styles combined with dynamic ones. Please do merging where a component receives props.'\n );\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useEvent","handler","eventNames","rebuild","initRef","useRef","current","WorkletEventHandler","updateWorklet","useHandler","handlers","dependencies","context","makeRemote","savedDependencies","useEffect","buildDependencies","doDependenciesDiffer","areDependenciesEqual","useWeb","isWeb","isJest","buildWorkletsHash","Object","values","reduce","acc","worklet","__workletHash","toString","handlersList","filter","undefined","map","workletHash","closure","_closure","push","nextDeps","prevDeps","is","x","y","objectIs","areHookInputsEqual","length","i","hasColorProps","updates","colorPropsSet","Set","colorProps","key","has","parseColors","indexOf","processedColor","processColor","canApplyOptimalisation","upadterFn","FUNCTIONLESS_FLAG","STATEMENTLESS_FLAG","optimalization","__optimalization","isAnimated","prop","propsToCheck","currentProp","pop","Array","isArray","item","onFrame","styleDiff","oldStyle","newStyle","diff","value","oldValue","getStyleWithoutAnimations","validateAnimatedStyles","styles","Error"],"sources":["utils.ts"],"sourcesContent":["import { MutableRefObject, useEffect, useRef } from 'react';\nimport { processColor } from '../Colors';\nimport {\n AnimatedStyle,\n Context,\n NativeEvent,\n NestedObjectValues,\n StyleProps,\n WorkletFunction,\n AnimationObject,\n} from '../commonTypes';\nimport { makeRemote } from '../core';\nimport { isWeb, isJest } from '../PlatformChecker';\nimport { colorProps } from '../UpdateProps';\nimport WorkletEventHandler from '../WorkletEventHandler';\nimport { ContextWithDependencies, DependencyList } from './commonTypes';\n\ninterface Handler<T, TContext extends Context> extends WorkletFunction {\n (event: T, context: TContext): void;\n}\n\ninterface Handlers<T, TContext extends Context> {\n [key: string]: Handler<T, TContext> | undefined;\n}\n\nexport interface UseHandlerContext<TContext extends Context> {\n context: TContext;\n doDependenciesDiffer: boolean;\n useWeb: boolean;\n}\n\nexport function useEvent<T extends NativeEvent<T>>(\n handler: (event: T) => void,\n eventNames: string[] = [],\n rebuild = false\n): MutableRefObject<WorkletEventHandler<T> | null> {\n const initRef = useRef<WorkletEventHandler<T> | null>(null);\n if (initRef.current === null) {\n initRef.current = new WorkletEventHandler(handler, eventNames);\n } else if (rebuild) {\n initRef.current.updateWorklet(handler);\n }\n\n return initRef;\n}\n\nexport function useHandler<T, TContext extends Context>(\n handlers: Handlers<T, TContext>,\n dependencies?: DependencyList\n): UseHandlerContext<TContext> {\n const initRef = useRef<ContextWithDependencies<TContext> | null>(null);\n if (initRef.current === null) {\n initRef.current = {\n context: makeRemote<TContext>({} as TContext),\n savedDependencies: [],\n };\n }\n\n useEffect(() => {\n return () => {\n initRef.current = null;\n };\n }, []);\n\n const { context, savedDependencies } = initRef.current;\n\n dependencies = buildDependencies(dependencies, handlers);\n\n const doDependenciesDiffer = !areDependenciesEqual(\n dependencies,\n savedDependencies\n );\n initRef.current.savedDependencies = dependencies;\n const useWeb = isWeb() || isJest();\n\n return { context, doDependenciesDiffer, useWeb };\n}\n\n// builds one big hash from multiple worklets' hashes\nexport function buildWorkletsHash(\n handlers: Record<string, WorkletFunction> | Array<WorkletFunction>\n): string {\n return Object.values(handlers).reduce(\n (acc: string, worklet: WorkletFunction) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n acc + worklet.__workletHash!.toString(),\n ''\n );\n}\n\n// builds dependencies array for gesture handlers\nexport function buildDependencies(\n dependencies: DependencyList,\n handlers: Record<string, WorkletFunction | undefined>\n): Array<unknown> {\n const handlersList: WorkletFunction[] = Object.values(handlers).filter(\n (handler) => handler !== undefined\n ) as WorkletFunction[];\n if (!dependencies) {\n dependencies = handlersList.map((handler) => {\n return {\n workletHash: handler.__workletHash,\n closure: handler._closure,\n };\n });\n } else {\n dependencies.push(buildWorkletsHash(handlersList));\n }\n return dependencies;\n}\n\n// this is supposed to work as useEffect comparison\nexport function areDependenciesEqual(\n nextDeps: DependencyList,\n prevDeps: DependencyList\n): boolean {\n function is(x: number, y: number) {\n /* eslint-disable no-self-compare */\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y);\n /* eslint-enable no-self-compare */\n }\n const objectIs: (nextDeps: unknown, prevDeps: unknown) => boolean =\n typeof Object.is === 'function' ? Object.is : is;\n\n function areHookInputsEqual(\n nextDeps: DependencyList,\n prevDeps: DependencyList\n ): boolean {\n if (!nextDeps || !prevDeps || prevDeps.length !== nextDeps.length) {\n return false;\n }\n for (let i = 0; i < prevDeps.length; ++i) {\n if (!objectIs(nextDeps[i], prevDeps[i])) {\n return false;\n }\n }\n return true;\n }\n\n return areHookInputsEqual(nextDeps, prevDeps);\n}\n\nexport function hasColorProps(updates: AnimatedStyle): boolean {\n const colorPropsSet = new Set(colorProps);\n for (const key in updates) {\n if (colorPropsSet.has(key)) {\n return true;\n }\n }\n return false;\n}\n\nexport function parseColors(updates: AnimatedStyle): void {\n 'worklet';\n for (const key in updates) {\n if (colorProps.indexOf(key) !== -1) {\n // value could be an animation in which case processColor will recognize it and will return undefined\n // -> in such a case we don't want to override style of that key\n const processedColor = processColor(updates[key]);\n if (processedColor !== undefined) {\n updates[key] = processedColor;\n }\n }\n }\n}\n\nexport function canApplyOptimalisation(upadterFn: WorkletFunction): number {\n const FUNCTIONLESS_FLAG = 0b00000001;\n const STATEMENTLESS_FLAG = 0b00000010;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const optimalization = upadterFn.__optimalization!;\n return (\n optimalization & FUNCTIONLESS_FLAG && optimalization & STATEMENTLESS_FLAG\n );\n}\n\nexport function isAnimated(prop: NestedObjectValues<AnimationObject>): boolean {\n 'worklet';\n const propsToCheck: NestedObjectValues<AnimationObject>[] = [prop];\n while (propsToCheck.length > 0) {\n const currentProp: NestedObjectValues<AnimationObject> =\n propsToCheck.pop() as NestedObjectValues<AnimationObject>;\n if (Array.isArray(currentProp)) {\n for (const item of currentProp) {\n propsToCheck.push(item);\n }\n } else if (currentProp?.onFrame !== undefined) {\n return true;\n } else if (typeof currentProp === 'object') {\n for (const item of Object.values(currentProp)) {\n propsToCheck.push(item);\n }\n }\n // if none of the above, it's not the animated prop, check next one\n }\n\n // when none of the props were animated return false\n return false;\n}\n\nexport function styleDiff<T extends AnimatedStyle>(\n oldStyle: AnimatedStyle,\n newStyle: AnimatedStyle\n): Partial<T> {\n 'worklet';\n const diff: any = {};\n for (const key in oldStyle) {\n if (newStyle[key] === undefined) {\n diff[key] = null;\n }\n }\n for (const key in newStyle) {\n const value = newStyle[key];\n const oldValue = oldStyle[key];\n\n if (isAnimated(value)) {\n // do nothing\n continue;\n }\n if (oldValue !== value) {\n diff[key] = value;\n }\n }\n return diff;\n}\n\nexport function getStyleWithoutAnimations(newStyle: AnimatedStyle): StyleProps {\n 'worklet';\n const diff: StyleProps = {};\n\n for (const key in newStyle) {\n const value = newStyle[key];\n if (isAnimated(value)) {\n continue;\n }\n diff[key] = value;\n }\n return diff;\n}\n\nexport const validateAnimatedStyles = (styles: AnimatedStyle): void => {\n 'worklet';\n if (typeof styles !== 'object') {\n throw new Error(\n `useAnimatedStyle has to return an object, found ${typeof styles} instead`\n );\n } else if (Array.isArray(styles)) {\n throw new Error(\n 'useAnimatedStyle has to return an object and cannot return static styles combined with dynamic ones. Please do merging where a component receives props.'\n );\n }\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Extrapolate","EXTEND","CLAMP","IDENTITY","interpolateColorsHSV","value","inputRange","colors","h","interpolate","s","v","hsvToColor","interpolateColorsRGB","r","g","b","a","rgbaColor","getInterpolateRGB","i","length","color","processedColor","processColor","undefined","push","red","green","blue","opacity","getInterpolateHSV","RGBtoHSV","interpolateColor","outputRange","colorSpace","Error","ColorSpace","useInterpolateConfig","RGB","useSharedValue","cache","makeMutable","interpolateSharableColor","interpolateConfig","HSV"],"sources":["interpolateColor.ts"],"sourcesContent":["import {\n hsvToColor,\n RGBtoHSV,\n rgbaColor,\n processColor,\n red,\n green,\n blue,\n opacity,\n} from './Colors';\nimport { makeMutable } from './core';\nimport { interpolate } from './interpolation';\nimport { SharedValue } from './commonTypes';\nimport { useSharedValue } from './hook/useSharedValue';\n\nexport const Extrapolate = {\n EXTEND: 'extend',\n CLAMP: 'clamp',\n IDENTITY: 'identity',\n};\n\nconst interpolateColorsHSV = (\n value: number,\n inputRange: readonly number[],\n colors: InterpolateHSV\n) => {\n 'worklet';\n const h = interpolate(value, inputRange, colors.h, Extrapolate.CLAMP);\n const s = interpolate(value, inputRange, colors.s, Extrapolate.CLAMP);\n const v = interpolate(value, inputRange, colors.v, Extrapolate.CLAMP);\n return hsvToColor(h, s, v);\n};\n\nconst interpolateColorsRGB = (\n value: number,\n inputRange: readonly number[],\n colors: InterpolateRGB\n) => {\n 'worklet';\n const r = interpolate(value, inputRange, colors.r, Extrapolate.CLAMP);\n const g = interpolate(value, inputRange, colors.g, Extrapolate.CLAMP);\n const b = interpolate(value, inputRange, colors.b, Extrapolate.CLAMP);\n const a = interpolate(value, inputRange, colors.a, Extrapolate.CLAMP);\n return rgbaColor(r, g, b, a);\n};\n\ninterface InterpolateRGB {\n r: number[];\n g: number[];\n b: number[];\n a: number[];\n}\n\nconst getInterpolateRGB = (\n colors: readonly (string | number)[]\n): InterpolateRGB => {\n 'worklet';\n\n const r = [];\n const g = [];\n const b = [];\n const a = [];\n for (let i = 0; i < colors.length; ++i) {\n const color = colors[i];\n const processedColor = processColor(color);\n // explicit check in case if processedColor is 0\n if (processedColor !== null && processedColor !== undefined) {\n r.push(red(processedColor));\n g.push(green(processedColor));\n b.push(blue(processedColor));\n a.push(opacity(processedColor));\n }\n }\n return { r, g, b, a };\n};\n\ninterface InterpolateHSV {\n h: number[];\n s: number[];\n v: number[];\n}\n\nconst getInterpolateHSV = (\n colors: readonly (string | number)[]\n): InterpolateHSV => {\n 'worklet';\n const h = [];\n const s = [];\n const v = [];\n for (let i = 0; i < colors.length; ++i) {\n const color = colors[i];\n const processedColor = RGBtoHSV(processColor(color) as any);\n if (processedColor) {\n h.push(processedColor.h);\n s.push(processedColor.s);\n v.push(processedColor.v);\n }\n }\n return { h, s, v };\n};\n\nexport const interpolateColor = (\n value: number,\n inputRange: readonly number[],\n outputRange: readonly (string | number)[],\n colorSpace: 'RGB' | 'HSV' = 'RGB'\n): string | number => {\n 'worklet';\n if (colorSpace === 'HSV') {\n return interpolateColorsHSV(\n value,\n inputRange,\n getInterpolateHSV(outputRange)\n );\n } else if (colorSpace === 'RGB') {\n return interpolateColorsRGB(\n value,\n inputRange,\n getInterpolateRGB(outputRange)\n );\n }\n throw new Error(\n `Invalid color space provided: ${colorSpace}. Supported values are: ['RGB', 'HSV']`\n );\n};\n\nexport enum ColorSpace {\n RGB = 0,\n HSV = 1,\n}\n\nexport interface InterpolateConfig {\n inputRange: readonly number[];\n outputRange: readonly (string | number)[];\n colorSpace: ColorSpace;\n cache: SharedValue<InterpolateRGB | InterpolateHSV | null>;\n}\n\nexport function useInterpolateConfig(\n inputRange: readonly number[],\n outputRange: readonly (string | number)[],\n colorSpace = ColorSpace.RGB\n): SharedValue<InterpolateConfig> {\n return useSharedValue({\n inputRange,\n outputRange,\n colorSpace,\n cache: makeMutable(null),\n });\n}\n\nexport const interpolateSharableColor = (\n value: number,\n interpolateConfig: SharedValue<InterpolateConfig>\n): string | number => {\n 'worklet';\n let colors = interpolateConfig.value.cache.value;\n if (interpolateConfig.value.colorSpace === ColorSpace.RGB) {\n if (!colors) {\n colors = getInterpolateRGB(interpolateConfig.value.outputRange);\n interpolateConfig.value.cache.value = colors;\n }\n return interpolateColorsRGB(\n value,\n interpolateConfig.value.inputRange,\n colors as InterpolateRGB\n );\n } else if (interpolateConfig.value.colorSpace === ColorSpace.HSV) {\n if (!colors) {\n colors = getInterpolateHSV(interpolateConfig.value.outputRange);\n interpolateConfig.value.cache.value = colors;\n }\n return interpolateColorsHSV(\n value,\n interpolateConfig.value.inputRange,\n colors as InterpolateHSV\n );\n }\n throw new Error(\n `Invalid color space provided: ${interpolateConfig.value.colorSpace}. Supported values are: ['RGB', 'HSV']`\n );\n};\n"],"mappings":";;;;;;;;AAAA;;AAUA;;AACA;;AAEA;;AAEO,MAAMA,WAAW,GAAG;EACzBC,MAAM,EAAE,QADiB;EAEzBC,KAAK,EAAE,OAFkB;EAGzBC,QAAQ,EAAE;AAHe,CAApB;;;AAMP,MAAMC,oBAAoB,GAAG,CAC3BC,KAD2B,EAE3BC,UAF2B,EAG3BC,MAH2B,KAIxB;EACH;;EACA,MAAMC,CAAC,GAAG,IAAAC,0BAAA,EAAYJ,KAAZ,EAAmBC,UAAnB,EAA+BC,MAAM,CAACC,CAAtC,EAAyCR,WAAW,CAACE,KAArD,CAAV;EACA,MAAMQ,CAAC,GAAG,IAAAD,0BAAA,EAAYJ,KAAZ,EAAmBC,UAAnB,EAA+BC,MAAM,CAACG,CAAtC,EAAyCV,WAAW,CAACE,KAArD,CAAV;EACA,MAAMS,CAAC,GAAG,IAAAF,0BAAA,EAAYJ,KAAZ,EAAmBC,UAAnB,EAA+BC,MAAM,CAACI,CAAtC,EAAyCX,WAAW,CAACE,KAArD,CAAV;EACA,OAAO,IAAAU,kBAAA,EAAWJ,CAAX,EAAcE,CAAd,EAAiBC,CAAjB,CAAP;AACD,CAVD;;AAYA,MAAME,oBAAoB,GAAG,CAC3BR,KAD2B,EAE3BC,UAF2B,EAG3BC,MAH2B,KAIxB;EACH;;EACA,MAAMO,CAAC,GAAG,IAAAL,0BAAA,EAAYJ,KAAZ,EAAmBC,UAAnB,EAA+BC,MAAM,CAACO,CAAtC,EAAyCd,WAAW,CAACE,KAArD,CAAV;EACA,MAAMa,CAAC,GAAG,IAAAN,0BAAA,EAAYJ,KAAZ,EAAmBC,UAAnB,EAA+BC,MAAM,CAACQ,CAAtC,EAAyCf,WAAW,CAACE,KAArD,CAAV;EACA,MAAMc,CAAC,GAAG,IAAAP,0BAAA,EAAYJ,KAAZ,EAAmBC,UAAnB,EAA+BC,MAAM,CAACS,CAAtC,EAAyChB,WAAW,CAACE,KAArD,CAAV;EACA,MAAMe,CAAC,GAAG,IAAAR,0BAAA,EAAYJ,KAAZ,EAAmBC,UAAnB,EAA+BC,MAAM,CAACU,CAAtC,EAAyCjB,WAAW,CAACE,KAArD,CAAV;EACA,OAAO,IAAAgB,iBAAA,EAAUJ,CAAV,EAAaC,CAAb,EAAgBC,CAAhB,EAAmBC,CAAnB,CAAP;AACD,CAXD;;AAoBA,MAAME,iBAAiB,GACrBZ,MADwB,IAEL;EACnB;;EAEA,MAAMO,CAAC,GAAG,EAAV;EACA,MAAMC,CAAC,GAAG,EAAV;EACA,MAAMC,CAAC,GAAG,EAAV;EACA,MAAMC,CAAC,GAAG,EAAV;;EACA,KAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGb,MAAM,CAACc,MAA3B,EAAmC,EAAED,CAArC,EAAwC;IACtC,MAAME,KAAK,GAAGf,MAAM,CAACa,CAAD,CAApB;IACA,MAAMG,cAAc,GAAG,IAAAC,oBAAA,EAAaF,KAAb,CAAvB,CAFsC,CAGtC;;IACA,IAAIC,cAAc,KAAK,IAAnB,IAA2BA,cAAc,KAAKE,SAAlD,EAA6D;MAC3DX,CAAC,CAACY,IAAF,CAAO,IAAAC,WAAA,EAAIJ,cAAJ,CAAP;MACAR,CAAC,CAACW,IAAF,CAAO,IAAAE,aAAA,EAAML,cAAN,CAAP;MACAP,CAAC,CAACU,IAAF,CAAO,IAAAG,YAAA,EAAKN,cAAL,CAAP;MACAN,CAAC,CAACS,IAAF,CAAO,IAAAI,eAAA,EAAQP,cAAR,CAAP;IACD;EACF;;EACD,OAAO;IAAET,CAAF;IAAKC,CAAL;IAAQC,CAAR;IAAWC;EAAX,CAAP;AACD,CArBD;;AA6BA,MAAMc,iBAAiB,GACrBxB,MADwB,IAEL;EACnB;;EACA,MAAMC,CAAC,GAAG,EAAV;EACA,MAAME,CAAC,GAAG,EAAV;EACA,MAAMC,CAAC,GAAG,EAAV;;EACA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGb,MAAM,CAACc,MAA3B,EAAmC,EAAED,CAArC,EAAwC;IACtC,MAAME,KAAK,GAAGf,MAAM,CAACa,CAAD,CAApB;IACA,MAAMG,cAAc,GAAG,IAAAS,gBAAA,EAAS,IAAAR,oBAAA,EAAaF,KAAb,CAAT,CAAvB;;IACA,IAAIC,cAAJ,EAAoB;MAClBf,CAAC,CAACkB,IAAF,CAAOH,cAAc,CAACf,CAAtB;MACAE,CAAC,CAACgB,IAAF,CAAOH,cAAc,CAACb,CAAtB;MACAC,CAAC,CAACe,IAAF,CAAOH,cAAc,CAACZ,CAAtB;IACD;EACF;;EACD,OAAO;IAAEH,CAAF;IAAKE,CAAL;IAAQC;EAAR,CAAP;AACD,CAjBD;;AAmBO,MAAMsB,gBAAgB,GAAG,UAC9B5B,KAD8B,EAE9BC,UAF8B,EAG9B4B,WAH8B,EAKV;EACpB;;EADoB,IADpBC,UACoB,uEADQ,KACR;;EAEpB,IAAIA,UAAU,KAAK,KAAnB,EAA0B;IACxB,OAAO/B,oBAAoB,CACzBC,KADyB,EAEzBC,UAFyB,EAGzByB,iBAAiB,CAACG,WAAD,CAHQ,CAA3B;EAKD,CAND,MAMO,IAAIC,UAAU,KAAK,KAAnB,EAA0B;IAC/B,OAAOtB,oBAAoB,CACzBR,KADyB,EAEzBC,UAFyB,EAGzBa,iBAAiB,CAACe,WAAD,CAHQ,CAA3B;EAKD;;EACD,MAAM,IAAIE,KAAJ,CACH,iCAAgCD,UAAW,wCADxC,CAAN;AAGD,CAvBM;;;IAyBKE,U;;;WAAAA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;GAAAA,U,0BAAAA,U;;AAYL,SAASC,oBAAT,CACLhC,UADK,EAEL4B,WAFK,EAI2B;EAAA,IADhCC,UACgC,uEADnBE,UAAU,CAACE,GACQ;EAChC,OAAO,IAAAC,8BAAA,
|
|
1
|
+
{"version":3,"names":["Extrapolate","EXTEND","CLAMP","IDENTITY","interpolateColorsHSV","value","inputRange","colors","h","interpolate","s","v","hsvToColor","interpolateColorsRGB","r","g","b","a","rgbaColor","getInterpolateRGB","i","length","color","processedColor","processColor","undefined","push","red","green","blue","opacity","getInterpolateHSV","RGBtoHSV","interpolateColor","outputRange","colorSpace","Error","ColorSpace","useInterpolateConfig","RGB","useSharedValue","cache","makeMutable","interpolateSharableColor","interpolateConfig","HSV"],"sources":["interpolateColor.ts"],"sourcesContent":["import {\n hsvToColor,\n RGBtoHSV,\n rgbaColor,\n processColor,\n red,\n green,\n blue,\n opacity,\n} from './Colors';\nimport { makeMutable } from './core';\nimport { interpolate } from './interpolation';\nimport { SharedValue } from './commonTypes';\nimport { useSharedValue } from './hook/useSharedValue';\n\nexport const Extrapolate = {\n EXTEND: 'extend',\n CLAMP: 'clamp',\n IDENTITY: 'identity',\n};\n\nconst interpolateColorsHSV = (\n value: number,\n inputRange: readonly number[],\n colors: InterpolateHSV\n) => {\n 'worklet';\n const h = interpolate(value, inputRange, colors.h, Extrapolate.CLAMP);\n const s = interpolate(value, inputRange, colors.s, Extrapolate.CLAMP);\n const v = interpolate(value, inputRange, colors.v, Extrapolate.CLAMP);\n return hsvToColor(h, s, v);\n};\n\nconst interpolateColorsRGB = (\n value: number,\n inputRange: readonly number[],\n colors: InterpolateRGB\n) => {\n 'worklet';\n const r = interpolate(value, inputRange, colors.r, Extrapolate.CLAMP);\n const g = interpolate(value, inputRange, colors.g, Extrapolate.CLAMP);\n const b = interpolate(value, inputRange, colors.b, Extrapolate.CLAMP);\n const a = interpolate(value, inputRange, colors.a, Extrapolate.CLAMP);\n return rgbaColor(r, g, b, a);\n};\n\ninterface InterpolateRGB {\n r: number[];\n g: number[];\n b: number[];\n a: number[];\n}\n\nconst getInterpolateRGB = (\n colors: readonly (string | number)[]\n): InterpolateRGB => {\n 'worklet';\n\n const r = [];\n const g = [];\n const b = [];\n const a = [];\n for (let i = 0; i < colors.length; ++i) {\n const color = colors[i];\n const processedColor = processColor(color);\n // explicit check in case if processedColor is 0\n if (processedColor !== null && processedColor !== undefined) {\n r.push(red(processedColor));\n g.push(green(processedColor));\n b.push(blue(processedColor));\n a.push(opacity(processedColor));\n }\n }\n return { r, g, b, a };\n};\n\ninterface InterpolateHSV {\n h: number[];\n s: number[];\n v: number[];\n}\n\nconst getInterpolateHSV = (\n colors: readonly (string | number)[]\n): InterpolateHSV => {\n 'worklet';\n const h = [];\n const s = [];\n const v = [];\n for (let i = 0; i < colors.length; ++i) {\n const color = colors[i];\n const processedColor = RGBtoHSV(processColor(color) as any);\n if (processedColor) {\n h.push(processedColor.h);\n s.push(processedColor.s);\n v.push(processedColor.v);\n }\n }\n return { h, s, v };\n};\n\nexport const interpolateColor = (\n value: number,\n inputRange: readonly number[],\n outputRange: readonly (string | number)[],\n colorSpace: 'RGB' | 'HSV' = 'RGB'\n): string | number => {\n 'worklet';\n if (colorSpace === 'HSV') {\n return interpolateColorsHSV(\n value,\n inputRange,\n getInterpolateHSV(outputRange)\n );\n } else if (colorSpace === 'RGB') {\n return interpolateColorsRGB(\n value,\n inputRange,\n getInterpolateRGB(outputRange)\n );\n }\n throw new Error(\n `Invalid color space provided: ${colorSpace}. Supported values are: ['RGB', 'HSV']`\n );\n};\n\nexport enum ColorSpace {\n RGB = 0,\n HSV = 1,\n}\n\nexport interface InterpolateConfig {\n inputRange: readonly number[];\n outputRange: readonly (string | number)[];\n colorSpace: ColorSpace;\n cache: SharedValue<InterpolateRGB | InterpolateHSV | null>;\n}\n\nexport function useInterpolateConfig(\n inputRange: readonly number[],\n outputRange: readonly (string | number)[],\n colorSpace = ColorSpace.RGB\n): SharedValue<InterpolateConfig> {\n return useSharedValue<InterpolateConfig>({\n inputRange,\n outputRange,\n colorSpace,\n cache: makeMutable<InterpolateRGB | InterpolateHSV | null>(null),\n });\n}\n\nexport const interpolateSharableColor = (\n value: number,\n interpolateConfig: SharedValue<InterpolateConfig>\n): string | number => {\n 'worklet';\n let colors = interpolateConfig.value.cache.value;\n if (interpolateConfig.value.colorSpace === ColorSpace.RGB) {\n if (!colors) {\n colors = getInterpolateRGB(interpolateConfig.value.outputRange);\n interpolateConfig.value.cache.value = colors;\n }\n return interpolateColorsRGB(\n value,\n interpolateConfig.value.inputRange,\n colors as InterpolateRGB\n );\n } else if (interpolateConfig.value.colorSpace === ColorSpace.HSV) {\n if (!colors) {\n colors = getInterpolateHSV(interpolateConfig.value.outputRange);\n interpolateConfig.value.cache.value = colors;\n }\n return interpolateColorsHSV(\n value,\n interpolateConfig.value.inputRange,\n colors as InterpolateHSV\n );\n }\n throw new Error(\n `Invalid color space provided: ${interpolateConfig.value.colorSpace}. Supported values are: ['RGB', 'HSV']`\n );\n};\n"],"mappings":"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"}
|