react-native-reanimated 3.4.0 → 3.4.2

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.
Files changed (148) hide show
  1. package/lib/module/Animated.js +60 -1
  2. package/lib/module/Animated.js.map +1 -1
  3. package/lib/module/createAnimatedComponent.js.map +1 -1
  4. package/lib/module/reanimated2/Easing.js +8 -0
  5. package/lib/module/reanimated2/Easing.js.map +1 -1
  6. package/lib/module/reanimated2/UpdateProps.js +2 -2
  7. package/lib/module/reanimated2/UpdateProps.js.map +1 -1
  8. package/lib/module/reanimated2/animation/commonTypes.js.map +1 -1
  9. package/lib/module/reanimated2/animation/decay.js.map +1 -1
  10. package/lib/module/reanimated2/animation/index.js +1 -1
  11. package/lib/module/reanimated2/animation/index.js.map +1 -1
  12. package/lib/module/reanimated2/animation/springUtils.js.map +1 -1
  13. package/lib/module/reanimated2/animation/styleAnimation.js +2 -2
  14. package/lib/module/reanimated2/animation/styleAnimation.js.map +1 -1
  15. package/lib/module/reanimated2/animation/timing.js.map +1 -1
  16. package/lib/module/reanimated2/animation/transformationMatrix/matrixUtils.js +6 -0
  17. package/lib/module/reanimated2/animation/transformationMatrix/matrixUtils.js.map +1 -1
  18. package/lib/module/reanimated2/animation/util.js +4 -19
  19. package/lib/module/reanimated2/animation/util.js.map +1 -1
  20. package/lib/module/reanimated2/commonTypes.js.map +1 -1
  21. package/lib/module/reanimated2/component/FlatList.js.map +1 -1
  22. package/lib/module/reanimated2/component/ScrollView.js.map +1 -1
  23. package/lib/module/reanimated2/core.js +16 -0
  24. package/lib/module/reanimated2/core.js.map +1 -1
  25. package/lib/module/reanimated2/fabricUtils.js +3 -1
  26. package/lib/module/reanimated2/fabricUtils.js.map +1 -1
  27. package/lib/module/reanimated2/globals.d.js.map +1 -1
  28. package/lib/module/reanimated2/helperTypes.js.map +1 -1
  29. package/lib/module/reanimated2/hook/commonTypes.js.map +1 -1
  30. package/lib/module/reanimated2/hook/index.js.map +1 -1
  31. package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js +1 -1
  32. package/lib/module/reanimated2/hook/useAnimatedGestureHandler.js.map +1 -1
  33. package/lib/module/reanimated2/hook/useAnimatedRef.js +2 -2
  34. package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
  35. package/lib/module/reanimated2/hook/useAnimatedStyle.js +1 -1
  36. package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  37. package/lib/module/reanimated2/hook/utils.js +2 -27
  38. package/lib/module/reanimated2/hook/utils.js.map +1 -1
  39. package/lib/module/reanimated2/index.js.map +1 -1
  40. package/lib/module/reanimated2/interpolateColor.js.map +1 -1
  41. package/lib/module/reanimated2/js-reanimated/commonTypes.js.map +1 -1
  42. package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
  43. package/lib/module/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.js.map +1 -1
  44. package/lib/module/reanimated2/layoutReanimation/animationBuilder/Keyframe.js.map +1 -1
  45. package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
  46. package/lib/module/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.js.map +1 -1
  47. package/lib/module/reanimated2/layoutReanimation/index.js.map +1 -1
  48. package/lib/module/reanimated2/mappers.js +1 -1
  49. package/lib/module/reanimated2/mappers.js.map +1 -1
  50. package/lib/module/reanimated2/mock.js +26 -0
  51. package/lib/module/reanimated2/mock.js.map +1 -1
  52. package/lib/module/reanimated2/mutables.js +0 -1
  53. package/lib/module/reanimated2/mutables.js.map +1 -1
  54. package/lib/module/reanimated2/platform-specific/checkCppVersion.js +3 -0
  55. package/lib/module/reanimated2/platform-specific/checkCppVersion.js.map +1 -1
  56. package/lib/module/reanimated2/platform-specific/jsVersion.js +1 -1
  57. package/lib/module/reanimated2/platform-specific/jsVersion.js.map +1 -1
  58. package/lib/module/reanimated2/valueSetter.js +0 -1
  59. package/lib/module/reanimated2/valueSetter.js.map +1 -1
  60. package/lib/module/setAndForwardRef.js.map +1 -1
  61. package/lib/typescript/Animated.d.ts +68 -3
  62. package/lib/typescript/createAnimatedComponent.d.ts +1 -26
  63. package/lib/typescript/reanimated2/Easing.d.ts +17 -9
  64. package/lib/typescript/reanimated2/UpdateProps.d.ts +5 -5
  65. package/lib/typescript/reanimated2/animation/commonTypes.d.ts +4 -3
  66. package/lib/typescript/reanimated2/animation/decay.d.ts +2 -4
  67. package/lib/typescript/reanimated2/animation/index.d.ts +3 -3
  68. package/lib/typescript/reanimated2/animation/springUtils.d.ts +1 -0
  69. package/lib/typescript/reanimated2/animation/styleAnimation.d.ts +2 -6
  70. package/lib/typescript/reanimated2/animation/timing.d.ts +4 -7
  71. package/lib/typescript/reanimated2/animation/transformationMatrix/matrixUtils.d.ts +1 -1
  72. package/lib/typescript/reanimated2/animation/util.d.ts +2 -4
  73. package/lib/typescript/reanimated2/commonTypes.d.ts +0 -4
  74. package/lib/typescript/reanimated2/component/FlatList.d.ts +2 -1
  75. package/lib/typescript/reanimated2/component/ScrollView.d.ts +1 -1
  76. package/lib/typescript/reanimated2/core.d.ts +12 -0
  77. package/lib/typescript/reanimated2/helperTypes.d.ts +11 -7
  78. package/lib/typescript/reanimated2/hook/commonTypes.d.ts +2 -2
  79. package/lib/typescript/reanimated2/hook/index.d.ts +1 -1
  80. package/lib/typescript/reanimated2/hook/useAnimatedGestureHandler.d.ts +2 -2
  81. package/lib/typescript/reanimated2/hook/useAnimatedRef.d.ts +4 -4
  82. package/lib/typescript/reanimated2/hook/useAnimatedStyle.d.ts +4 -5
  83. package/lib/typescript/reanimated2/hook/utils.d.ts +3 -11
  84. package/lib/typescript/reanimated2/index.d.ts +3 -1
  85. package/lib/typescript/reanimated2/interpolateColor.d.ts +2 -3
  86. package/lib/typescript/reanimated2/js-reanimated/commonTypes.d.ts +1 -43
  87. package/lib/typescript/reanimated2/js-reanimated/index.d.ts +3 -2
  88. package/lib/typescript/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.d.ts +4 -4
  89. package/lib/typescript/reanimated2/layoutReanimation/animationBuilder/Keyframe.d.ts +0 -11
  90. package/lib/typescript/reanimated2/layoutReanimation/animationBuilder/commonTypes.d.ts +3 -3
  91. package/lib/typescript/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.d.ts +13 -13
  92. package/lib/typescript/reanimated2/layoutReanimation/index.d.ts +1 -0
  93. package/lib/typescript/reanimated2/mappers.d.ts +0 -12
  94. package/lib/typescript/reanimated2/mock.d.ts +1 -76
  95. package/lib/typescript/reanimated2/mutables.d.ts +0 -1
  96. package/lib/typescript/reanimated2/platform-specific/jsVersion.d.ts +1 -1
  97. package/lib/typescript/reanimated2/valueSetter.d.ts +0 -1
  98. package/lib/typescript/setAndForwardRef.d.ts +1 -1
  99. package/package.json +3 -1
  100. package/src/Animated.ts +80 -6
  101. package/src/createAnimatedComponent.tsx +2 -2
  102. package/src/reanimated2/Easing.ts +18 -8
  103. package/src/reanimated2/UpdateProps.ts +13 -17
  104. package/src/reanimated2/animation/commonTypes.ts +3 -3
  105. package/src/reanimated2/animation/decay.ts +3 -1
  106. package/src/reanimated2/animation/index.ts +3 -3
  107. package/src/reanimated2/animation/springUtils.ts +2 -0
  108. package/src/reanimated2/animation/styleAnimation.ts +5 -5
  109. package/src/reanimated2/animation/timing.ts +6 -4
  110. package/src/reanimated2/animation/transformationMatrix/matrixUtils.tsx +4 -1
  111. package/src/reanimated2/animation/util.ts +5 -29
  112. package/src/reanimated2/commonTypes.ts +0 -25
  113. package/src/reanimated2/component/FlatList.tsx +3 -1
  114. package/src/reanimated2/component/ScrollView.tsx +1 -1
  115. package/src/reanimated2/core.ts +16 -0
  116. package/src/reanimated2/fabricUtils.ts +1 -0
  117. package/src/reanimated2/globals.d.ts +3 -3
  118. package/src/reanimated2/helperTypes.ts +17 -7
  119. package/src/reanimated2/hook/commonTypes.ts +2 -3
  120. package/src/reanimated2/hook/index.ts +4 -1
  121. package/src/reanimated2/hook/useAnimatedGestureHandler.ts +2 -2
  122. package/src/reanimated2/hook/useAnimatedRef.ts +13 -10
  123. package/src/reanimated2/hook/useAnimatedStyle.ts +27 -26
  124. package/src/reanimated2/hook/utils.ts +5 -31
  125. package/src/reanimated2/index.ts +13 -1
  126. package/src/reanimated2/interpolateColor.ts +2 -2
  127. package/src/reanimated2/js-reanimated/commonTypes.ts +3 -3
  128. package/src/reanimated2/js-reanimated/index.ts +4 -3
  129. package/src/reanimated2/layoutReanimation/animationBuilder/ComplexAnimationBuilder.ts +4 -4
  130. package/src/reanimated2/layoutReanimation/animationBuilder/Keyframe.ts +5 -5
  131. package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +3 -3
  132. package/src/reanimated2/layoutReanimation/defaultTransitions/CurvedTransition.ts +13 -13
  133. package/src/reanimated2/layoutReanimation/index.ts +1 -0
  134. package/src/reanimated2/mappers.ts +2 -2
  135. package/src/reanimated2/mock.ts +27 -0
  136. package/src/reanimated2/mutables.ts +0 -1
  137. package/src/reanimated2/platform-specific/checkCppVersion.ts +2 -0
  138. package/src/reanimated2/platform-specific/jsVersion.ts +1 -1
  139. package/src/reanimated2/valueSetter.ts +0 -1
  140. package/src/setAndForwardRef.ts +1 -1
  141. package/lib/module/reanimated2/js-reanimated/Mapper.js +0 -69
  142. package/lib/module/reanimated2/js-reanimated/Mapper.js.map +0 -1
  143. package/lib/module/reanimated2/js-reanimated/MapperRegistry.js +0 -109
  144. package/lib/module/reanimated2/js-reanimated/MapperRegistry.js.map +0 -1
  145. package/lib/typescript/reanimated2/js-reanimated/Mapper.d.ts +0 -14
  146. package/lib/typescript/reanimated2/js-reanimated/MapperRegistry.d.ts +0 -14
  147. package/src/reanimated2/js-reanimated/Mapper.ts +0 -94
  148. package/src/reanimated2/js-reanimated/MapperRegistry.ts +0 -133
@@ -1 +1 @@
1
- {"version":3,"names":["bisectRoot","_ref","min","max","func","maxIterations","ACCURACY","idx","current","Math","abs","initialCalculations","mass","arguments","length","undefined","config","configIsInvalid","zeta","omega0","omega1","useDuration","stiffness","k","dampingRatio","sqrt","damping","c","m","calculateNewMassToMatchDuration","x0","v0","restSpeedThreshold","threshold","duration","durationForMass","amplitude","exp","log","criticallyDampedSpringCalculations","animation","precalculatedValues","toValue","t","criticallyDampedEnvelope","criticallyDampedPosition","criticallyDampedVelocity","position","velocity","underDampedSpringCalculations","sin1","sin","cos1","cos","underDampedEnvelope","underDampedFrag1","underDampedPosition","underDampedVelocity","isAnimationTerminatingCalculation","startValue","isOvershooting","overshootClamping","isVelocity","isDisplacement","restDisplacementThreshold"],"sources":["springUtils.ts"],"sourcesContent":["import type { Animation, AnimatableValue, Timestamp } from '../commonTypes';\n\nexport type SpringConfig = {\n stiffness?: number;\n overshootClamping?: boolean;\n restDisplacementThreshold?: number;\n restSpeedThreshold?: number;\n velocity?: number;\n} & (\n | {\n mass?: number;\n damping?: number;\n duration?: never;\n dampingRatio?: never;\n }\n | {\n mass?: never;\n damping?: never;\n duration?: number;\n dampingRatio?: number;\n }\n);\n\nexport interface SpringConfigInner {\n useDuration: boolean;\n configIsInvalid: boolean;\n}\n\nexport interface SpringAnimation extends Animation<SpringAnimation> {\n current: AnimatableValue;\n toValue: AnimatableValue;\n velocity: number;\n lastTimestamp: Timestamp;\n startTimestamp: Timestamp;\n startValue: number;\n zeta: number;\n omega0: number;\n omega1: number;\n}\n\nexport interface InnerSpringAnimation\n extends Omit<SpringAnimation, 'toValue' | 'current'> {\n toValue: number;\n current: number;\n}\n\nfunction bisectRoot({\n min,\n max,\n func,\n maxIterations = 20,\n}: {\n min: number;\n max: number;\n func: (x: number) => number;\n maxIterations?: number;\n}) {\n 'worklet';\n const ACCURACY = 0.00005;\n let idx = maxIterations;\n let current = (max + min) / 2;\n while (Math.abs(func(current)) > ACCURACY && idx > 0) {\n idx -= 1;\n\n if (func(current) < 0) {\n min = current;\n } else {\n max = current;\n }\n current = (min + max) / 2;\n }\n return current;\n}\n\nexport function initialCalculations(\n mass = 0,\n config: Record<keyof SpringConfig, any> & SpringConfigInner\n): {\n zeta: number;\n omega0: number;\n omega1: number;\n} {\n 'worklet';\n\n if (config.configIsInvalid) {\n return { zeta: 0, omega0: 0, omega1: 0 };\n }\n\n if (config.useDuration) {\n const { stiffness: k, dampingRatio: zeta } = config;\n\n /** omega0 and omega1 denote angular frequency and natural angular frequency, see this link for formulas:\n * https://courses.lumenlearning.com/suny-osuniversityphysics/chapter/15-5-damped-oscillations/\n */\n const omega0 = Math.sqrt(k / mass);\n const omega1 = omega0 * Math.sqrt(1 - zeta ** 2);\n\n return { zeta, omega0, omega1 };\n } else {\n const { damping: c, mass: m, stiffness: k } = config;\n\n const zeta = c / (2 * Math.sqrt(k * m)); // damping ratio\n const omega0 = Math.sqrt(k / m); // undamped angular frequency of the oscillator (rad/ms)\n const omega1 = omega0 * Math.sqrt(1 - zeta ** 2); // exponential decay\n\n return { zeta, omega0, omega1 };\n }\n}\n\nexport function calculateNewMassToMatchDuration(\n x0: number,\n config: Record<keyof SpringConfig, any> & SpringConfigInner,\n v0: number\n) {\n 'worklet';\n if (config.configIsInvalid) {\n return 0;\n }\n\n /** Use this formula: https://phys.libretexts.org/Bookshelves/University_Physics/Book%3A_University_Physics_(OpenStax)/Book%3A_University_Physics_I_-_Mechanics_Sound_Oscillations_and_Waves_(OpenStax)/15%3A_Oscillations/15.06%3A_Damped_Oscillations\n * to find the asymptote and estimate the damping that gives us the expected duration \n\n ⎛ ⎛ c⎞ ⎞ \n ⎜-⎜──⎟ ⋅ duration⎟ \n ⎝ ⎝2m⎠ ⎠ \n A ⋅ e = threshold\n\n \n Amplitude calculated using \"Conservation of energy\"\n _________________\n ╱ 2 2\n ╱ m ⋅ v0 + k ⋅ x0 \n amplitude = ╱ ─────────────────\n ╲╱ k \n\n And replace mass with damping ratio which is provided: m = (c^2)/(4 * k * zeta^2) \n */\n const {\n stiffness: k,\n dampingRatio: zeta,\n restSpeedThreshold: threshold,\n duration,\n } = config;\n\n const durationForMass = (mass: number) => {\n 'worklet';\n const amplitude =\n (mass * v0 * v0 + k * x0 * x0) / (Math.exp(1 - 0.5 * zeta) * k);\n const c = zeta * 2 * Math.sqrt(k * mass);\n return (\n 1000 * ((-2 * mass) / c) * Math.log((threshold * 0.01) / amplitude) -\n duration\n );\n };\n\n // Bisection turns out to be much faster than Newton's method in our case\n return bisectRoot({ min: 0, max: 100, func: durationForMass });\n}\n\nexport function criticallyDampedSpringCalculations(\n animation: InnerSpringAnimation,\n precalculatedValues: {\n v0: number;\n x0: number;\n omega0: number;\n t: number;\n }\n): { position: number; velocity: number } {\n 'worklet';\n const { toValue } = animation;\n\n const { v0, x0, omega0, t } = precalculatedValues;\n\n const criticallyDampedEnvelope = Math.exp(-omega0 * t);\n const criticallyDampedPosition =\n toValue - criticallyDampedEnvelope * (x0 + (v0 + omega0 * x0) * t);\n\n const criticallyDampedVelocity =\n criticallyDampedEnvelope *\n (v0 * (t * omega0 - 1) + t * x0 * omega0 * omega0);\n\n return {\n position: criticallyDampedPosition,\n velocity: criticallyDampedVelocity,\n };\n}\n\nexport function underDampedSpringCalculations(\n animation: InnerSpringAnimation,\n precalculatedValues: {\n zeta: number;\n v0: number;\n x0: number;\n omega0: number;\n omega1: number;\n t: number;\n }\n): { position: number; velocity: number } {\n 'worklet';\n const { toValue, current, velocity } = animation;\n\n const { zeta, t, omega0, omega1 } = precalculatedValues;\n\n const v0 = -velocity;\n const x0 = toValue - current;\n\n const sin1 = Math.sin(omega1 * t);\n const cos1 = Math.cos(omega1 * t);\n\n // under damped\n const underDampedEnvelope = Math.exp(-zeta * omega0 * t);\n const underDampedFrag1 =\n underDampedEnvelope *\n (sin1 * ((v0 + zeta * omega0 * x0) / omega1) + x0 * cos1);\n\n const underDampedPosition = toValue - underDampedFrag1;\n // This looks crazy -- it's actually just the derivative of the oscillation function\n const underDampedVelocity =\n zeta * omega0 * underDampedFrag1 -\n underDampedEnvelope *\n (cos1 * (v0 + zeta * omega0 * x0) - omega1 * x0 * sin1);\n\n return { position: underDampedPosition, velocity: underDampedVelocity };\n}\n\nexport function isAnimationTerminatingCalculation(\n animation: InnerSpringAnimation,\n config: Partial<SpringConfig> &\n Required<\n Pick<SpringConfig, 'restSpeedThreshold' | 'restDisplacementThreshold'>\n >\n): {\n isOvershooting: boolean;\n isVelocity: boolean;\n isDisplacement: boolean;\n} {\n 'worklet';\n const { toValue, velocity, startValue, current } = animation;\n\n const isOvershooting = config.overshootClamping\n ? (current > toValue && startValue < toValue) ||\n (current < toValue && startValue > toValue)\n : false;\n\n const isVelocity = Math.abs(velocity) < config.restSpeedThreshold;\n const isDisplacement =\n Math.abs(toValue - current) < config.restDisplacementThreshold;\n\n return { isOvershooting, isVelocity, isDisplacement };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["bisectRoot","_ref","min","max","func","maxIterations","ACCURACY","idx","current","Math","abs","initialCalculations","mass","arguments","length","undefined","config","configIsInvalid","zeta","omega0","omega1","useDuration","stiffness","k","dampingRatio","sqrt","damping","c","m","calculateNewMassToMatchDuration","x0","v0","restSpeedThreshold","threshold","duration","durationForMass","amplitude","exp","log","criticallyDampedSpringCalculations","animation","precalculatedValues","toValue","t","criticallyDampedEnvelope","criticallyDampedPosition","criticallyDampedVelocity","position","velocity","underDampedSpringCalculations","sin1","sin","cos1","cos","underDampedEnvelope","underDampedFrag1","underDampedPosition","underDampedVelocity","isAnimationTerminatingCalculation","startValue","isOvershooting","overshootClamping","isVelocity","isDisplacement","restDisplacementThreshold"],"sources":["springUtils.ts"],"sourcesContent":["import type { Animation, AnimatableValue, Timestamp } from '../commonTypes';\n\nexport type SpringConfig = {\n stiffness?: number;\n overshootClamping?: boolean;\n restDisplacementThreshold?: number;\n restSpeedThreshold?: number;\n velocity?: number;\n} & (\n | {\n mass?: number;\n damping?: number;\n duration?: never;\n dampingRatio?: never;\n }\n | {\n mass?: never;\n damping?: never;\n duration?: number;\n dampingRatio?: number;\n }\n);\n\nexport type WithSpringConfig = SpringConfig;\n\nexport interface SpringConfigInner {\n useDuration: boolean;\n configIsInvalid: boolean;\n}\n\nexport interface SpringAnimation extends Animation<SpringAnimation> {\n current: AnimatableValue;\n toValue: AnimatableValue;\n velocity: number;\n lastTimestamp: Timestamp;\n startTimestamp: Timestamp;\n startValue: number;\n zeta: number;\n omega0: number;\n omega1: number;\n}\n\nexport interface InnerSpringAnimation\n extends Omit<SpringAnimation, 'toValue' | 'current'> {\n toValue: number;\n current: number;\n}\n\nfunction bisectRoot({\n min,\n max,\n func,\n maxIterations = 20,\n}: {\n min: number;\n max: number;\n func: (x: number) => number;\n maxIterations?: number;\n}) {\n 'worklet';\n const ACCURACY = 0.00005;\n let idx = maxIterations;\n let current = (max + min) / 2;\n while (Math.abs(func(current)) > ACCURACY && idx > 0) {\n idx -= 1;\n\n if (func(current) < 0) {\n min = current;\n } else {\n max = current;\n }\n current = (min + max) / 2;\n }\n return current;\n}\n\nexport function initialCalculations(\n mass = 0,\n config: Record<keyof SpringConfig, any> & SpringConfigInner\n): {\n zeta: number;\n omega0: number;\n omega1: number;\n} {\n 'worklet';\n\n if (config.configIsInvalid) {\n return { zeta: 0, omega0: 0, omega1: 0 };\n }\n\n if (config.useDuration) {\n const { stiffness: k, dampingRatio: zeta } = config;\n\n /** omega0 and omega1 denote angular frequency and natural angular frequency, see this link for formulas:\n * https://courses.lumenlearning.com/suny-osuniversityphysics/chapter/15-5-damped-oscillations/\n */\n const omega0 = Math.sqrt(k / mass);\n const omega1 = omega0 * Math.sqrt(1 - zeta ** 2);\n\n return { zeta, omega0, omega1 };\n } else {\n const { damping: c, mass: m, stiffness: k } = config;\n\n const zeta = c / (2 * Math.sqrt(k * m)); // damping ratio\n const omega0 = Math.sqrt(k / m); // undamped angular frequency of the oscillator (rad/ms)\n const omega1 = omega0 * Math.sqrt(1 - zeta ** 2); // exponential decay\n\n return { zeta, omega0, omega1 };\n }\n}\n\nexport function calculateNewMassToMatchDuration(\n x0: number,\n config: Record<keyof SpringConfig, any> & SpringConfigInner,\n v0: number\n) {\n 'worklet';\n if (config.configIsInvalid) {\n return 0;\n }\n\n /** Use this formula: https://phys.libretexts.org/Bookshelves/University_Physics/Book%3A_University_Physics_(OpenStax)/Book%3A_University_Physics_I_-_Mechanics_Sound_Oscillations_and_Waves_(OpenStax)/15%3A_Oscillations/15.06%3A_Damped_Oscillations\n * to find the asymptote and estimate the damping that gives us the expected duration \n\n ⎛ ⎛ c⎞ ⎞ \n ⎜-⎜──⎟ ⋅ duration⎟ \n ⎝ ⎝2m⎠ ⎠ \n A ⋅ e = threshold\n\n \n Amplitude calculated using \"Conservation of energy\"\n _________________\n ╱ 2 2\n ╱ m ⋅ v0 + k ⋅ x0 \n amplitude = ╱ ─────────────────\n ╲╱ k \n\n And replace mass with damping ratio which is provided: m = (c^2)/(4 * k * zeta^2) \n */\n const {\n stiffness: k,\n dampingRatio: zeta,\n restSpeedThreshold: threshold,\n duration,\n } = config;\n\n const durationForMass = (mass: number) => {\n 'worklet';\n const amplitude =\n (mass * v0 * v0 + k * x0 * x0) / (Math.exp(1 - 0.5 * zeta) * k);\n const c = zeta * 2 * Math.sqrt(k * mass);\n return (\n 1000 * ((-2 * mass) / c) * Math.log((threshold * 0.01) / amplitude) -\n duration\n );\n };\n\n // Bisection turns out to be much faster than Newton's method in our case\n return bisectRoot({ min: 0, max: 100, func: durationForMass });\n}\n\nexport function criticallyDampedSpringCalculations(\n animation: InnerSpringAnimation,\n precalculatedValues: {\n v0: number;\n x0: number;\n omega0: number;\n t: number;\n }\n): { position: number; velocity: number } {\n 'worklet';\n const { toValue } = animation;\n\n const { v0, x0, omega0, t } = precalculatedValues;\n\n const criticallyDampedEnvelope = Math.exp(-omega0 * t);\n const criticallyDampedPosition =\n toValue - criticallyDampedEnvelope * (x0 + (v0 + omega0 * x0) * t);\n\n const criticallyDampedVelocity =\n criticallyDampedEnvelope *\n (v0 * (t * omega0 - 1) + t * x0 * omega0 * omega0);\n\n return {\n position: criticallyDampedPosition,\n velocity: criticallyDampedVelocity,\n };\n}\n\nexport function underDampedSpringCalculations(\n animation: InnerSpringAnimation,\n precalculatedValues: {\n zeta: number;\n v0: number;\n x0: number;\n omega0: number;\n omega1: number;\n t: number;\n }\n): { position: number; velocity: number } {\n 'worklet';\n const { toValue, current, velocity } = animation;\n\n const { zeta, t, omega0, omega1 } = precalculatedValues;\n\n const v0 = -velocity;\n const x0 = toValue - current;\n\n const sin1 = Math.sin(omega1 * t);\n const cos1 = Math.cos(omega1 * t);\n\n // under damped\n const underDampedEnvelope = Math.exp(-zeta * omega0 * t);\n const underDampedFrag1 =\n underDampedEnvelope *\n (sin1 * ((v0 + zeta * omega0 * x0) / omega1) + x0 * cos1);\n\n const underDampedPosition = toValue - underDampedFrag1;\n // This looks crazy -- it's actually just the derivative of the oscillation function\n const underDampedVelocity =\n zeta * omega0 * underDampedFrag1 -\n underDampedEnvelope *\n (cos1 * (v0 + zeta * omega0 * x0) - omega1 * x0 * sin1);\n\n return { position: underDampedPosition, velocity: underDampedVelocity };\n}\n\nexport function isAnimationTerminatingCalculation(\n animation: InnerSpringAnimation,\n config: Partial<SpringConfig> &\n Required<\n Pick<SpringConfig, 'restSpeedThreshold' | 'restDisplacementThreshold'>\n >\n): {\n isOvershooting: boolean;\n isVelocity: boolean;\n isDisplacement: boolean;\n} {\n 'worklet';\n const { toValue, velocity, startValue, current } = animation;\n\n const isOvershooting = config.overshootClamping\n ? (current > toValue && startValue < toValue) ||\n (current < toValue && startValue > toValue)\n : false;\n\n const isVelocity = Math.abs(velocity) < config.restSpeedThreshold;\n const isDisplacement =\n Math.abs(toValue - current) < config.restDisplacementThreshold;\n\n return { isOvershooting, isVelocity, isDisplacement };\n}\n"],"mappings":"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"}
@@ -5,7 +5,7 @@ import { processColor } from '../Colors';
5
5
 
6
6
  // resolves path to value for nested objects
7
7
  // if path cannot be resolved returns undefined
8
- export function resolvePath(obj, path) {
8
+ function resolvePath(obj, path) {
9
9
  'worklet';
10
10
 
11
11
  const keys = Array.isArray(path) ? path : [path];
@@ -21,7 +21,7 @@ export function resolvePath(obj, path) {
21
21
 
22
22
  // set value at given path
23
23
 
24
- export function setPath(obj, path, value) {
24
+ function setPath(obj, path, value) {
25
25
  'worklet';
26
26
 
27
27
  const keys = Array.isArray(path) ? path : [path];
@@ -1 +1 @@
1
- {"version":3,"names":["defineAnimation","withTiming","ColorProperties","processColor","resolvePath","obj","path","keys","Array","isArray","reduce","acc","current","undefined","setPath","value","currObj","i","length","withStyleAnimation","styleAnimations","onFrame","animation","now","stillGoing","entriesToCheck","currentEntry","pop","index","push","concat","key","Object","currentStyleAnimation","finished","callback","includes","onStart","previousAnimation","prevAnimation","prevVal","console","warn","join","currentAnimation","duration","animationsToCheck","element","values","isHigherOrder"],"sources":["styleAnimation.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport type {\n Timestamp,\n AnimatableValue,\n AnimationObject,\n Animation,\n AnimatedStyle,\n NestedObject,\n NestedObjectValues,\n} from '../commonTypes';\nimport type { StyleLayoutAnimation } from './commonTypes';\nimport { withTiming } from './timing';\nimport { ColorProperties } from '../UpdateProps';\nimport { processColor } from '../Colors';\n\n// resolves path to value for nested objects\n// if path cannot be resolved returns undefined\nexport function resolvePath<T>(\n obj: NestedObject<T>,\n path: AnimatableValue[] | AnimatableValue\n): NestedObjectValues<T> | undefined {\n 'worklet';\n const keys: AnimatableValue[] = Array.isArray(path) ? path : [path];\n return keys.reduce<NestedObjectValues<T> | undefined>((acc, current) => {\n if (Array.isArray(acc) && typeof current === 'number') {\n return acc[current];\n } else if (\n acc !== null &&\n typeof acc === 'object' &&\n (current as number | string) in acc\n ) {\n return (acc as { [key: string]: NestedObjectValues<T> })[\n current as number | string\n ];\n }\n return undefined;\n }, obj);\n}\n\n// set value at given path\ntype Path = Array<string | number> | string | number;\nexport function setPath<T>(\n obj: NestedObject<T>,\n path: Path,\n value: NestedObjectValues<T>\n): void {\n 'worklet';\n const keys: Path = Array.isArray(path) ? path : [path];\n let currObj: NestedObjectValues<T> = obj;\n for (let i = 0; i < keys.length - 1; i++) {\n // creates entry if there isn't one\n currObj = currObj as { [key: string]: NestedObjectValues<T> };\n if (!(keys[i] in currObj)) {\n // if next key is a number create an array\n if (typeof keys[i + 1] === 'number') {\n currObj[keys[i]] = [];\n } else {\n currObj[keys[i]] = {};\n }\n }\n currObj = currObj[keys[i]];\n }\n\n (currObj as { [key: string]: NestedObjectValues<T> })[keys[keys.length - 1]] =\n value;\n}\n\ninterface NestedObjectEntry<T> {\n value: NestedObjectValues<T>;\n path: (string | number)[];\n}\n\nexport function withStyleAnimation(\n styleAnimations: AnimatedStyle\n): StyleLayoutAnimation {\n 'worklet';\n return defineAnimation<StyleLayoutAnimation>({}, () => {\n 'worklet';\n\n const onFrame = (\n animation: StyleLayoutAnimation,\n now: Timestamp\n ): boolean => {\n let stillGoing = false;\n const entriesToCheck: NestedObjectEntry<AnimationObject>[] = [\n { value: animation.styleAnimations, path: [] },\n ];\n while (entriesToCheck.length > 0) {\n const currentEntry: NestedObjectEntry<AnimationObject> =\n entriesToCheck.pop() as NestedObjectEntry<AnimationObject>;\n if (Array.isArray(currentEntry.value)) {\n for (let index = 0; index < currentEntry.value.length; index++) {\n entriesToCheck.push({\n value: currentEntry.value[index],\n path: currentEntry.path.concat(index),\n });\n }\n } else if (\n typeof currentEntry.value === 'object' &&\n currentEntry.value.onFrame === undefined\n ) {\n // nested object\n for (const key of Object.keys(currentEntry.value)) {\n entriesToCheck.push({\n value: currentEntry.value[key],\n path: currentEntry.path.concat(key),\n });\n }\n } else {\n const currentStyleAnimation: AnimationObject =\n currentEntry.value as AnimationObject;\n if (currentStyleAnimation.finished) {\n continue;\n }\n const finished = currentStyleAnimation.onFrame(\n currentStyleAnimation,\n now\n );\n if (finished) {\n currentStyleAnimation.finished = true;\n if (currentStyleAnimation.callback) {\n currentStyleAnimation.callback(true);\n }\n } else {\n stillGoing = true;\n }\n\n if (ColorProperties.includes(currentEntry.path[0] as string)) {\n currentStyleAnimation.current = processColor(\n currentStyleAnimation.current\n ) as number;\n }\n\n setPath(\n animation.current,\n currentEntry.path,\n currentStyleAnimation.current\n );\n }\n }\n return !stillGoing;\n };\n\n const onStart = (\n animation: StyleLayoutAnimation,\n value: AnimatedStyle,\n now: Timestamp,\n previousAnimation: StyleLayoutAnimation\n ): void => {\n const entriesToCheck: NestedObjectEntry<\n AnimationObject | AnimatableValue\n >[] = [{ value: styleAnimations, path: [] }];\n while (entriesToCheck.length > 0) {\n const currentEntry: NestedObjectEntry<\n AnimationObject | AnimatableValue\n > = entriesToCheck.pop() as NestedObjectEntry<\n AnimationObject | AnimatableValue\n >;\n if (Array.isArray(currentEntry.value)) {\n for (let index = 0; index < currentEntry.value.length; index++) {\n entriesToCheck.push({\n value: currentEntry.value[index],\n path: currentEntry.path.concat(index),\n });\n }\n } else if (\n typeof currentEntry.value === 'object' &&\n currentEntry.value.onStart === undefined\n ) {\n for (const key of Object.keys(currentEntry.value)) {\n entriesToCheck.push({\n value: currentEntry.value[key],\n path: currentEntry.path.concat(key),\n });\n }\n } else {\n const prevAnimation = resolvePath(\n previousAnimation?.styleAnimations,\n currentEntry.path\n );\n let prevVal = resolvePath(value, currentEntry.path);\n if (prevAnimation && !prevVal) {\n prevVal = prevAnimation.current;\n }\n if (prevVal === undefined) {\n console.warn(\n `Initial values for animation are missing for property ${currentEntry.path.join(\n '.'\n )}`\n );\n }\n setPath(animation.current, currentEntry.path, prevVal);\n let currentAnimation: AnimationObject;\n if (\n typeof currentEntry.value !== 'object' ||\n !currentEntry.value.onStart\n ) {\n currentAnimation = withTiming(\n currentEntry.value as AnimatableValue,\n { duration: 0 }\n ) as AnimationObject; // TODO TYPESCRIPT this temporary cast is to get rid of .d.ts file.\n setPath(\n animation.styleAnimations,\n currentEntry.path,\n currentAnimation\n );\n } else {\n currentAnimation = currentEntry.value as Animation<AnimationObject>;\n }\n currentAnimation.onStart(\n currentAnimation,\n prevVal,\n now,\n prevAnimation\n );\n }\n }\n };\n\n const callback = (finished: boolean): void => {\n if (!finished) {\n const animationsToCheck: NestedObjectValues<AnimationObject>[] = [\n styleAnimations,\n ];\n while (animationsToCheck.length > 0) {\n const currentAnimation: NestedObjectValues<AnimationObject> =\n animationsToCheck.pop() as NestedObjectValues<AnimationObject>;\n if (Array.isArray(currentAnimation)) {\n for (const element of currentAnimation) {\n animationsToCheck.push(element);\n }\n } else if (\n typeof currentAnimation === 'object' &&\n currentAnimation.onStart === undefined\n ) {\n for (const value of Object.values(currentAnimation)) {\n animationsToCheck.push(value);\n }\n } else {\n const currentStyleAnimation: AnimationObject =\n currentAnimation as AnimationObject;\n if (\n !currentStyleAnimation.finished &&\n currentStyleAnimation.callback\n ) {\n currentStyleAnimation.callback(false);\n }\n }\n }\n }\n };\n\n return {\n isHigherOrder: true,\n onFrame,\n onStart,\n current: {},\n styleAnimations,\n callback,\n } as StyleLayoutAnimation;\n });\n}\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,QAAQ;AAWxC,SAASC,UAAU,QAAQ,UAAU;AACrC,SAASC,eAAe,QAAQ,gBAAgB;AAChD,SAASC,YAAY,QAAQ,WAAW;;AAExC;AACA;AACA,OAAO,SAASC,WAAWA,CACzBC,GAAoB,EACpBC,IAAyC,EACN;EACnC,SAAS;;EACT,MAAMC,IAAuB,GAAGC,KAAK,CAACC,OAAO,CAACH,IAAI,CAAC,GAAGA,IAAI,GAAG,CAACA,IAAI,CAAC;EACnE,OAAOC,IAAI,CAACG,MAAM,CAAoC,CAACC,GAAG,EAAEC,OAAO,KAAK;IACtE,IAAIJ,KAAK,CAACC,OAAO,CAACE,GAAG,CAAC,IAAI,OAAOC,OAAO,KAAK,QAAQ,EAAE;MACrD,OAAOD,GAAG,CAACC,OAAO,CAAC;IACrB,CAAC,MAAM,IACLD,GAAG,KAAK,IAAI,IACZ,OAAOA,GAAG,KAAK,QAAQ,IACtBC,OAAO,IAAwBD,GAAG,EACnC;MACA,OAAQA,GAAG,CACTC,OAAO,CACR;IACH;IACA,OAAOC,SAAS;EAClB,CAAC,EAAER,GAAG,CAAC;AACT;;AAEA;;AAEA,OAAO,SAASS,OAAOA,CACrBT,GAAoB,EACpBC,IAAU,EACVS,KAA4B,EACtB;EACN,SAAS;;EACT,MAAMR,IAAU,GAAGC,KAAK,CAACC,OAAO,CAACH,IAAI,CAAC,GAAGA,IAAI,GAAG,CAACA,IAAI,CAAC;EACtD,IAAIU,OAA8B,GAAGX,GAAG;EACxC,KAAK,IAAIY,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,IAAI,CAACW,MAAM,GAAG,CAAC,EAAED,CAAC,EAAE,EAAE;IACxC;IACAD,OAAO,GAAGA,OAAmD;IAC7D,IAAI,EAAET,IAAI,CAACU,CAAC,CAAC,IAAID,OAAO,CAAC,EAAE;MACzB;MACA,IAAI,OAAOT,IAAI,CAACU,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;QACnCD,OAAO,CAACT,IAAI,CAACU,CAAC,CAAC,CAAC,GAAG,EAAE;MACvB,CAAC,MAAM;QACLD,OAAO,CAACT,IAAI,CAACU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACvB;IACF;IACAD,OAAO,GAAGA,OAAO,CAACT,IAAI,CAACU,CAAC,CAAC,CAAC;EAC5B;EAECD,OAAO,CAA8CT,IAAI,CAACA,IAAI,CAACW,MAAM,GAAG,CAAC,CAAC,CAAC,GAC1EH,KAAK;AACT;AAOA,OAAO,SAASI,kBAAkBA,CAChCC,eAA8B,EACR;EACtB,SAAS;;EACT,OAAOpB,eAAe,CAAuB,CAAC,CAAC,EAAE,MAAM;IACrD,SAAS;;IAET,MAAMqB,OAAO,GAAGA,CACdC,SAA+B,EAC/BC,GAAc,KACF;MACZ,IAAIC,UAAU,GAAG,KAAK;MACtB,MAAMC,cAAoD,GAAG,CAC3D;QAAEV,KAAK,EAAEO,SAAS,CAACF,eAAe;QAAEd,IAAI,EAAE;MAAG,CAAC,CAC/C;MACD,OAAOmB,cAAc,CAACP,MAAM,GAAG,CAAC,EAAE;QAChC,MAAMQ,YAAgD,GACpDD,cAAc,CAACE,GAAG,EAAwC;QAC5D,IAAInB,KAAK,CAACC,OAAO,CAACiB,YAAY,CAACX,KAAK,CAAC,EAAE;UACrC,KAAK,IAAIa,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGF,YAAY,CAACX,KAAK,CAACG,MAAM,EAAEU,KAAK,EAAE,EAAE;YAC9DH,cAAc,CAACI,IAAI,CAAC;cAClBd,KAAK,EAAEW,YAAY,CAACX,KAAK,CAACa,KAAK,CAAC;cAChCtB,IAAI,EAAEoB,YAAY,CAACpB,IAAI,CAACwB,MAAM,CAACF,KAAK;YACtC,CAAC,CAAC;UACJ;QACF,CAAC,MAAM,IACL,OAAOF,YAAY,CAACX,KAAK,KAAK,QAAQ,IACtCW,YAAY,CAACX,KAAK,CAACM,OAAO,KAAKR,SAAS,EACxC;UACA;UACA,KAAK,MAAMkB,GAAG,IAAIC,MAAM,CAACzB,IAAI,CAACmB,YAAY,CAACX,KAAK,CAAC,EAAE;YACjDU,cAAc,CAACI,IAAI,CAAC;cAClBd,KAAK,EAAEW,YAAY,CAACX,KAAK,CAACgB,GAAG,CAAC;cAC9BzB,IAAI,EAAEoB,YAAY,CAACpB,IAAI,CAACwB,MAAM,CAACC,GAAG;YACpC,CAAC,CAAC;UACJ;QACF,CAAC,MAAM;UACL,MAAME,qBAAsC,GAC1CP,YAAY,CAACX,KAAwB;UACvC,IAAIkB,qBAAqB,CAACC,QAAQ,EAAE;YAClC;UACF;UACA,MAAMA,QAAQ,GAAGD,qBAAqB,CAACZ,OAAO,CAC5CY,qBAAqB,EACrBV,GAAG,CACJ;UACD,IAAIW,QAAQ,EAAE;YACZD,qBAAqB,CAACC,QAAQ,GAAG,IAAI;YACrC,IAAID,qBAAqB,CAACE,QAAQ,EAAE;cAClCF,qBAAqB,CAACE,QAAQ,CAAC,IAAI,CAAC;YACtC;UACF,CAAC,MAAM;YACLX,UAAU,GAAG,IAAI;UACnB;UAEA,IAAItB,eAAe,CAACkC,QAAQ,CAACV,YAAY,CAACpB,IAAI,CAAC,CAAC,CAAC,CAAW,EAAE;YAC5D2B,qBAAqB,CAACrB,OAAO,GAAGT,YAAY,CAC1C8B,qBAAqB,CAACrB,OAAO,CACpB;UACb;UAEAE,OAAO,CACLQ,SAAS,CAACV,OAAO,EACjBc,YAAY,CAACpB,IAAI,EACjB2B,qBAAqB,CAACrB,OAAO,CAC9B;QACH;MACF;MACA,OAAO,CAACY,UAAU;IACpB,CAAC;IAED,MAAMa,OAAO,GAAGA,CACdf,SAA+B,EAC/BP,KAAoB,EACpBQ,GAAc,EACde,iBAAuC,KAC9B;MACT,MAAMb,cAEH,GAAG,CAAC;QAAEV,KAAK,EAAEK,eAAe;QAAEd,IAAI,EAAE;MAAG,CAAC,CAAC;MAC5C,OAAOmB,cAAc,CAACP,MAAM,GAAG,CAAC,EAAE;QAChC,MAAMQ,YAEL,GAAGD,cAAc,CAACE,GAAG,EAErB;QACD,IAAInB,KAAK,CAACC,OAAO,CAACiB,YAAY,CAACX,KAAK,CAAC,EAAE;UACrC,KAAK,IAAIa,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGF,YAAY,CAACX,KAAK,CAACG,MAAM,EAAEU,KAAK,EAAE,EAAE;YAC9DH,cAAc,CAACI,IAAI,CAAC;cAClBd,KAAK,EAAEW,YAAY,CAACX,KAAK,CAACa,KAAK,CAAC;cAChCtB,IAAI,EAAEoB,YAAY,CAACpB,IAAI,CAACwB,MAAM,CAACF,KAAK;YACtC,CAAC,CAAC;UACJ;QACF,CAAC,MAAM,IACL,OAAOF,YAAY,CAACX,KAAK,KAAK,QAAQ,IACtCW,YAAY,CAACX,KAAK,CAACsB,OAAO,KAAKxB,SAAS,EACxC;UACA,KAAK,MAAMkB,GAAG,IAAIC,MAAM,CAACzB,IAAI,CAACmB,YAAY,CAACX,KAAK,CAAC,EAAE;YACjDU,cAAc,CAACI,IAAI,CAAC;cAClBd,KAAK,EAAEW,YAAY,CAACX,KAAK,CAACgB,GAAG,CAAC;cAC9BzB,IAAI,EAAEoB,YAAY,CAACpB,IAAI,CAACwB,MAAM,CAACC,GAAG;YACpC,CAAC,CAAC;UACJ;QACF,CAAC,MAAM;UACL,MAAMQ,aAAa,GAAGnC,WAAW,CAC/BkC,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAElB,eAAe,EAClCM,YAAY,CAACpB,IAAI,CAClB;UACD,IAAIkC,OAAO,GAAGpC,WAAW,CAACW,KAAK,EAAEW,YAAY,CAACpB,IAAI,CAAC;UACnD,IAAIiC,aAAa,IAAI,CAACC,OAAO,EAAE;YAC7BA,OAAO,GAAGD,aAAa,CAAC3B,OAAO;UACjC;UACA,IAAI4B,OAAO,KAAK3B,SAAS,EAAE;YACzB4B,OAAO,CAACC,IAAI,CACT,yDAAwDhB,YAAY,CAACpB,IAAI,CAACqC,IAAI,CAC7E,GAAG,CACH,EAAC,CACJ;UACH;UACA7B,OAAO,CAACQ,SAAS,CAACV,OAAO,EAAEc,YAAY,CAACpB,IAAI,EAAEkC,OAAO,CAAC;UACtD,IAAII,gBAAiC;UACrC,IACE,OAAOlB,YAAY,CAACX,KAAK,KAAK,QAAQ,IACtC,CAACW,YAAY,CAACX,KAAK,CAACsB,OAAO,EAC3B;YACAO,gBAAgB,GAAG3C,UAAU,CAC3ByB,YAAY,CAACX,KAAK,EAClB;cAAE8B,QAAQ,EAAE;YAAE,CAAC,CACG,CAAC,CAAC;YACtB/B,OAAO,CACLQ,SAAS,CAACF,eAAe,EACzBM,YAAY,CAACpB,IAAI,EACjBsC,gBAAgB,CACjB;UACH,CAAC,MAAM;YACLA,gBAAgB,GAAGlB,YAAY,CAACX,KAAmC;UACrE;UACA6B,gBAAgB,CAACP,OAAO,CACtBO,gBAAgB,EAChBJ,OAAO,EACPjB,GAAG,EACHgB,aAAa,CACd;QACH;MACF;IACF,CAAC;IAED,MAAMJ,QAAQ,GAAID,QAAiB,IAAW;MAC5C,IAAI,CAACA,QAAQ,EAAE;QACb,MAAMY,iBAAwD,GAAG,CAC/D1B,eAAe,CAChB;QACD,OAAO0B,iBAAiB,CAAC5B,MAAM,GAAG,CAAC,EAAE;UACnC,MAAM0B,gBAAqD,GACzDE,iBAAiB,CAACnB,GAAG,EAAyC;UAChE,IAAInB,KAAK,CAACC,OAAO,CAACmC,gBAAgB,CAAC,EAAE;YACnC,KAAK,MAAMG,OAAO,IAAIH,gBAAgB,EAAE;cACtCE,iBAAiB,CAACjB,IAAI,CAACkB,OAAO,CAAC;YACjC;UACF,CAAC,MAAM,IACL,OAAOH,gBAAgB,KAAK,QAAQ,IACpCA,gBAAgB,CAACP,OAAO,KAAKxB,SAAS,EACtC;YACA,KAAK,MAAME,KAAK,IAAIiB,MAAM,CAACgB,MAAM,CAACJ,gBAAgB,CAAC,EAAE;cACnDE,iBAAiB,CAACjB,IAAI,CAACd,KAAK,CAAC;YAC/B;UACF,CAAC,MAAM;YACL,MAAMkB,qBAAsC,GAC1CW,gBAAmC;YACrC,IACE,CAACX,qBAAqB,CAACC,QAAQ,IAC/BD,qBAAqB,CAACE,QAAQ,EAC9B;cACAF,qBAAqB,CAACE,QAAQ,CAAC,KAAK,CAAC;YACvC;UACF;QACF;MACF;IACF,CAAC;IAED,OAAO;MACLc,aAAa,EAAE,IAAI;MACnB5B,OAAO;MACPgB,OAAO;MACPzB,OAAO,EAAE,CAAC,CAAC;MACXQ,eAAe;MACfe;IACF,CAAC;EACH,CAAC,CAAC;AACJ"}
1
+ {"version":3,"names":["defineAnimation","withTiming","ColorProperties","processColor","resolvePath","obj","path","keys","Array","isArray","reduce","acc","current","undefined","setPath","value","currObj","i","length","withStyleAnimation","styleAnimations","onFrame","animation","now","stillGoing","entriesToCheck","currentEntry","pop","index","push","concat","key","Object","currentStyleAnimation","finished","callback","includes","onStart","previousAnimation","prevAnimation","prevVal","console","warn","join","currentAnimation","duration","animationsToCheck","element","values","isHigherOrder"],"sources":["styleAnimation.ts"],"sourcesContent":["import { defineAnimation } from './util';\nimport type {\n Timestamp,\n AnimatableValue,\n AnimationObject,\n Animation,\n NestedObject,\n NestedObjectValues,\n} from '../commonTypes';\nimport type { AnimatedStyle } from '../helperTypes';\nimport type { StyleLayoutAnimation } from './commonTypes';\nimport { withTiming } from './timing';\nimport { ColorProperties } from '../UpdateProps';\nimport { processColor } from '../Colors';\n\n// resolves path to value for nested objects\n// if path cannot be resolved returns undefined\nfunction resolvePath<T>(\n obj: NestedObject<T>,\n path: AnimatableValue[] | AnimatableValue\n): NestedObjectValues<T> | undefined {\n 'worklet';\n const keys: AnimatableValue[] = Array.isArray(path) ? path : [path];\n return keys.reduce<NestedObjectValues<T> | undefined>((acc, current) => {\n if (Array.isArray(acc) && typeof current === 'number') {\n return acc[current];\n } else if (\n acc !== null &&\n typeof acc === 'object' &&\n (current as number | string) in acc\n ) {\n return (acc as { [key: string]: NestedObjectValues<T> })[\n current as number | string\n ];\n }\n return undefined;\n }, obj);\n}\n\n// set value at given path\ntype Path = Array<string | number> | string | number;\nfunction setPath<T>(\n obj: NestedObject<T>,\n path: Path,\n value: NestedObjectValues<T>\n): void {\n 'worklet';\n const keys: Path = Array.isArray(path) ? path : [path];\n let currObj: NestedObjectValues<T> = obj;\n for (let i = 0; i < keys.length - 1; i++) {\n // creates entry if there isn't one\n currObj = currObj as { [key: string]: NestedObjectValues<T> };\n if (!(keys[i] in currObj)) {\n // if next key is a number create an array\n if (typeof keys[i + 1] === 'number') {\n currObj[keys[i]] = [];\n } else {\n currObj[keys[i]] = {};\n }\n }\n currObj = currObj[keys[i]];\n }\n\n (currObj as { [key: string]: NestedObjectValues<T> })[keys[keys.length - 1]] =\n value;\n}\n\ninterface NestedObjectEntry<T> {\n value: NestedObjectValues<T>;\n path: (string | number)[];\n}\n\nexport function withStyleAnimation(\n styleAnimations: AnimatedStyle<any>\n): StyleLayoutAnimation {\n 'worklet';\n return defineAnimation<StyleLayoutAnimation>({}, () => {\n 'worklet';\n\n const onFrame = (\n animation: StyleLayoutAnimation,\n now: Timestamp\n ): boolean => {\n let stillGoing = false;\n const entriesToCheck: NestedObjectEntry<AnimationObject>[] = [\n { value: animation.styleAnimations, path: [] },\n ];\n while (entriesToCheck.length > 0) {\n const currentEntry: NestedObjectEntry<AnimationObject> =\n entriesToCheck.pop() as NestedObjectEntry<AnimationObject>;\n if (Array.isArray(currentEntry.value)) {\n for (let index = 0; index < currentEntry.value.length; index++) {\n entriesToCheck.push({\n value: currentEntry.value[index],\n path: currentEntry.path.concat(index),\n });\n }\n } else if (\n typeof currentEntry.value === 'object' &&\n currentEntry.value.onFrame === undefined\n ) {\n // nested object\n for (const key of Object.keys(currentEntry.value)) {\n entriesToCheck.push({\n value: currentEntry.value[key],\n path: currentEntry.path.concat(key),\n });\n }\n } else {\n const currentStyleAnimation: AnimationObject =\n currentEntry.value as AnimationObject;\n if (currentStyleAnimation.finished) {\n continue;\n }\n const finished = currentStyleAnimation.onFrame(\n currentStyleAnimation,\n now\n );\n if (finished) {\n currentStyleAnimation.finished = true;\n if (currentStyleAnimation.callback) {\n currentStyleAnimation.callback(true);\n }\n } else {\n stillGoing = true;\n }\n\n if (ColorProperties.includes(currentEntry.path[0] as string)) {\n currentStyleAnimation.current = processColor(\n currentStyleAnimation.current\n ) as number;\n }\n\n setPath(\n animation.current,\n currentEntry.path,\n currentStyleAnimation.current\n );\n }\n }\n return !stillGoing;\n };\n\n const onStart = (\n animation: StyleLayoutAnimation,\n value: AnimatedStyle<any>,\n now: Timestamp,\n previousAnimation: StyleLayoutAnimation\n ): void => {\n const entriesToCheck: NestedObjectEntry<\n AnimationObject | AnimatableValue\n >[] = [{ value: styleAnimations, path: [] }];\n while (entriesToCheck.length > 0) {\n const currentEntry: NestedObjectEntry<\n AnimationObject | AnimatableValue\n > = entriesToCheck.pop() as NestedObjectEntry<\n AnimationObject | AnimatableValue\n >;\n if (Array.isArray(currentEntry.value)) {\n for (let index = 0; index < currentEntry.value.length; index++) {\n entriesToCheck.push({\n value: currentEntry.value[index],\n path: currentEntry.path.concat(index),\n });\n }\n } else if (\n typeof currentEntry.value === 'object' &&\n currentEntry.value.onStart === undefined\n ) {\n for (const key of Object.keys(currentEntry.value)) {\n entriesToCheck.push({\n value: currentEntry.value[key],\n path: currentEntry.path.concat(key),\n });\n }\n } else {\n const prevAnimation = resolvePath(\n previousAnimation?.styleAnimations,\n currentEntry.path\n );\n let prevVal = resolvePath(value, currentEntry.path);\n if (prevAnimation && !prevVal) {\n prevVal = prevAnimation.current;\n }\n if (prevVal === undefined) {\n console.warn(\n `Initial values for animation are missing for property ${currentEntry.path.join(\n '.'\n )}`\n );\n }\n setPath(animation.current, currentEntry.path, prevVal);\n let currentAnimation: AnimationObject;\n if (\n typeof currentEntry.value !== 'object' ||\n !currentEntry.value.onStart\n ) {\n currentAnimation = withTiming(\n currentEntry.value as AnimatableValue,\n { duration: 0 }\n ) as AnimationObject; // TODO TYPESCRIPT this temporary cast is to get rid of .d.ts file.\n setPath(\n animation.styleAnimations,\n currentEntry.path,\n currentAnimation\n );\n } else {\n currentAnimation = currentEntry.value as Animation<AnimationObject>;\n }\n currentAnimation.onStart(\n currentAnimation,\n prevVal,\n now,\n prevAnimation\n );\n }\n }\n };\n\n const callback = (finished: boolean): void => {\n if (!finished) {\n const animationsToCheck: NestedObjectValues<AnimationObject>[] = [\n styleAnimations,\n ];\n while (animationsToCheck.length > 0) {\n const currentAnimation: NestedObjectValues<AnimationObject> =\n animationsToCheck.pop() as NestedObjectValues<AnimationObject>;\n if (Array.isArray(currentAnimation)) {\n for (const element of currentAnimation) {\n animationsToCheck.push(element);\n }\n } else if (\n typeof currentAnimation === 'object' &&\n currentAnimation.onStart === undefined\n ) {\n for (const value of Object.values(currentAnimation)) {\n animationsToCheck.push(value);\n }\n } else {\n const currentStyleAnimation: AnimationObject =\n currentAnimation as AnimationObject;\n if (\n !currentStyleAnimation.finished &&\n currentStyleAnimation.callback\n ) {\n currentStyleAnimation.callback(false);\n }\n }\n }\n }\n };\n\n return {\n isHigherOrder: true,\n onFrame,\n onStart,\n current: {},\n styleAnimations,\n callback,\n } as StyleLayoutAnimation;\n });\n}\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,QAAQ;AAWxC,SAASC,UAAU,QAAQ,UAAU;AACrC,SAASC,eAAe,QAAQ,gBAAgB;AAChD,SAASC,YAAY,QAAQ,WAAW;;AAExC;AACA;AACA,SAASC,WAAWA,CAClBC,GAAoB,EACpBC,IAAyC,EACN;EACnC,SAAS;;EACT,MAAMC,IAAuB,GAAGC,KAAK,CAACC,OAAO,CAACH,IAAI,CAAC,GAAGA,IAAI,GAAG,CAACA,IAAI,CAAC;EACnE,OAAOC,IAAI,CAACG,MAAM,CAAoC,CAACC,GAAG,EAAEC,OAAO,KAAK;IACtE,IAAIJ,KAAK,CAACC,OAAO,CAACE,GAAG,CAAC,IAAI,OAAOC,OAAO,KAAK,QAAQ,EAAE;MACrD,OAAOD,GAAG,CAACC,OAAO,CAAC;IACrB,CAAC,MAAM,IACLD,GAAG,KAAK,IAAI,IACZ,OAAOA,GAAG,KAAK,QAAQ,IACtBC,OAAO,IAAwBD,GAAG,EACnC;MACA,OAAQA,GAAG,CACTC,OAAO,CACR;IACH;IACA,OAAOC,SAAS;EAClB,CAAC,EAAER,GAAG,CAAC;AACT;;AAEA;;AAEA,SAASS,OAAOA,CACdT,GAAoB,EACpBC,IAAU,EACVS,KAA4B,EACtB;EACN,SAAS;;EACT,MAAMR,IAAU,GAAGC,KAAK,CAACC,OAAO,CAACH,IAAI,CAAC,GAAGA,IAAI,GAAG,CAACA,IAAI,CAAC;EACtD,IAAIU,OAA8B,GAAGX,GAAG;EACxC,KAAK,IAAIY,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,IAAI,CAACW,MAAM,GAAG,CAAC,EAAED,CAAC,EAAE,EAAE;IACxC;IACAD,OAAO,GAAGA,OAAmD;IAC7D,IAAI,EAAET,IAAI,CAACU,CAAC,CAAC,IAAID,OAAO,CAAC,EAAE;MACzB;MACA,IAAI,OAAOT,IAAI,CAACU,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;QACnCD,OAAO,CAACT,IAAI,CAACU,CAAC,CAAC,CAAC,GAAG,EAAE;MACvB,CAAC,MAAM;QACLD,OAAO,CAACT,IAAI,CAACU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACvB;IACF;IACAD,OAAO,GAAGA,OAAO,CAACT,IAAI,CAACU,CAAC,CAAC,CAAC;EAC5B;EAECD,OAAO,CAA8CT,IAAI,CAACA,IAAI,CAACW,MAAM,GAAG,CAAC,CAAC,CAAC,GAC1EH,KAAK;AACT;AAOA,OAAO,SAASI,kBAAkBA,CAChCC,eAAmC,EACb;EACtB,SAAS;;EACT,OAAOpB,eAAe,CAAuB,CAAC,CAAC,EAAE,MAAM;IACrD,SAAS;;IAET,MAAMqB,OAAO,GAAGA,CACdC,SAA+B,EAC/BC,GAAc,KACF;MACZ,IAAIC,UAAU,GAAG,KAAK;MACtB,MAAMC,cAAoD,GAAG,CAC3D;QAAEV,KAAK,EAAEO,SAAS,CAACF,eAAe;QAAEd,IAAI,EAAE;MAAG,CAAC,CAC/C;MACD,OAAOmB,cAAc,CAACP,MAAM,GAAG,CAAC,EAAE;QAChC,MAAMQ,YAAgD,GACpDD,cAAc,CAACE,GAAG,EAAwC;QAC5D,IAAInB,KAAK,CAACC,OAAO,CAACiB,YAAY,CAACX,KAAK,CAAC,EAAE;UACrC,KAAK,IAAIa,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGF,YAAY,CAACX,KAAK,CAACG,MAAM,EAAEU,KAAK,EAAE,EAAE;YAC9DH,cAAc,CAACI,IAAI,CAAC;cAClBd,KAAK,EAAEW,YAAY,CAACX,KAAK,CAACa,KAAK,CAAC;cAChCtB,IAAI,EAAEoB,YAAY,CAACpB,IAAI,CAACwB,MAAM,CAACF,KAAK;YACtC,CAAC,CAAC;UACJ;QACF,CAAC,MAAM,IACL,OAAOF,YAAY,CAACX,KAAK,KAAK,QAAQ,IACtCW,YAAY,CAACX,KAAK,CAACM,OAAO,KAAKR,SAAS,EACxC;UACA;UACA,KAAK,MAAMkB,GAAG,IAAIC,MAAM,CAACzB,IAAI,CAACmB,YAAY,CAACX,KAAK,CAAC,EAAE;YACjDU,cAAc,CAACI,IAAI,CAAC;cAClBd,KAAK,EAAEW,YAAY,CAACX,KAAK,CAACgB,GAAG,CAAC;cAC9BzB,IAAI,EAAEoB,YAAY,CAACpB,IAAI,CAACwB,MAAM,CAACC,GAAG;YACpC,CAAC,CAAC;UACJ;QACF,CAAC,MAAM;UACL,MAAME,qBAAsC,GAC1CP,YAAY,CAACX,KAAwB;UACvC,IAAIkB,qBAAqB,CAACC,QAAQ,EAAE;YAClC;UACF;UACA,MAAMA,QAAQ,GAAGD,qBAAqB,CAACZ,OAAO,CAC5CY,qBAAqB,EACrBV,GAAG,CACJ;UACD,IAAIW,QAAQ,EAAE;YACZD,qBAAqB,CAACC,QAAQ,GAAG,IAAI;YACrC,IAAID,qBAAqB,CAACE,QAAQ,EAAE;cAClCF,qBAAqB,CAACE,QAAQ,CAAC,IAAI,CAAC;YACtC;UACF,CAAC,MAAM;YACLX,UAAU,GAAG,IAAI;UACnB;UAEA,IAAItB,eAAe,CAACkC,QAAQ,CAACV,YAAY,CAACpB,IAAI,CAAC,CAAC,CAAC,CAAW,EAAE;YAC5D2B,qBAAqB,CAACrB,OAAO,GAAGT,YAAY,CAC1C8B,qBAAqB,CAACrB,OAAO,CACpB;UACb;UAEAE,OAAO,CACLQ,SAAS,CAACV,OAAO,EACjBc,YAAY,CAACpB,IAAI,EACjB2B,qBAAqB,CAACrB,OAAO,CAC9B;QACH;MACF;MACA,OAAO,CAACY,UAAU;IACpB,CAAC;IAED,MAAMa,OAAO,GAAGA,CACdf,SAA+B,EAC/BP,KAAyB,EACzBQ,GAAc,EACde,iBAAuC,KAC9B;MACT,MAAMb,cAEH,GAAG,CAAC;QAAEV,KAAK,EAAEK,eAAe;QAAEd,IAAI,EAAE;MAAG,CAAC,CAAC;MAC5C,OAAOmB,cAAc,CAACP,MAAM,GAAG,CAAC,EAAE;QAChC,MAAMQ,YAEL,GAAGD,cAAc,CAACE,GAAG,EAErB;QACD,IAAInB,KAAK,CAACC,OAAO,CAACiB,YAAY,CAACX,KAAK,CAAC,EAAE;UACrC,KAAK,IAAIa,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGF,YAAY,CAACX,KAAK,CAACG,MAAM,EAAEU,KAAK,EAAE,EAAE;YAC9DH,cAAc,CAACI,IAAI,CAAC;cAClBd,KAAK,EAAEW,YAAY,CAACX,KAAK,CAACa,KAAK,CAAC;cAChCtB,IAAI,EAAEoB,YAAY,CAACpB,IAAI,CAACwB,MAAM,CAACF,KAAK;YACtC,CAAC,CAAC;UACJ;QACF,CAAC,MAAM,IACL,OAAOF,YAAY,CAACX,KAAK,KAAK,QAAQ,IACtCW,YAAY,CAACX,KAAK,CAACsB,OAAO,KAAKxB,SAAS,EACxC;UACA,KAAK,MAAMkB,GAAG,IAAIC,MAAM,CAACzB,IAAI,CAACmB,YAAY,CAACX,KAAK,CAAC,EAAE;YACjDU,cAAc,CAACI,IAAI,CAAC;cAClBd,KAAK,EAAEW,YAAY,CAACX,KAAK,CAACgB,GAAG,CAAC;cAC9BzB,IAAI,EAAEoB,YAAY,CAACpB,IAAI,CAACwB,MAAM,CAACC,GAAG;YACpC,CAAC,CAAC;UACJ;QACF,CAAC,MAAM;UACL,MAAMQ,aAAa,GAAGnC,WAAW,CAC/BkC,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAElB,eAAe,EAClCM,YAAY,CAACpB,IAAI,CAClB;UACD,IAAIkC,OAAO,GAAGpC,WAAW,CAACW,KAAK,EAAEW,YAAY,CAACpB,IAAI,CAAC;UACnD,IAAIiC,aAAa,IAAI,CAACC,OAAO,EAAE;YAC7BA,OAAO,GAAGD,aAAa,CAAC3B,OAAO;UACjC;UACA,IAAI4B,OAAO,KAAK3B,SAAS,EAAE;YACzB4B,OAAO,CAACC,IAAI,CACT,yDAAwDhB,YAAY,CAACpB,IAAI,CAACqC,IAAI,CAC7E,GAAG,CACH,EAAC,CACJ;UACH;UACA7B,OAAO,CAACQ,SAAS,CAACV,OAAO,EAAEc,YAAY,CAACpB,IAAI,EAAEkC,OAAO,CAAC;UACtD,IAAII,gBAAiC;UACrC,IACE,OAAOlB,YAAY,CAACX,KAAK,KAAK,QAAQ,IACtC,CAACW,YAAY,CAACX,KAAK,CAACsB,OAAO,EAC3B;YACAO,gBAAgB,GAAG3C,UAAU,CAC3ByB,YAAY,CAACX,KAAK,EAClB;cAAE8B,QAAQ,EAAE;YAAE,CAAC,CACG,CAAC,CAAC;YACtB/B,OAAO,CACLQ,SAAS,CAACF,eAAe,EACzBM,YAAY,CAACpB,IAAI,EACjBsC,gBAAgB,CACjB;UACH,CAAC,MAAM;YACLA,gBAAgB,GAAGlB,YAAY,CAACX,KAAmC;UACrE;UACA6B,gBAAgB,CAACP,OAAO,CACtBO,gBAAgB,EAChBJ,OAAO,EACPjB,GAAG,EACHgB,aAAa,CACd;QACH;MACF;IACF,CAAC;IAED,MAAMJ,QAAQ,GAAID,QAAiB,IAAW;MAC5C,IAAI,CAACA,QAAQ,EAAE;QACb,MAAMY,iBAAwD,GAAG,CAC/D1B,eAAe,CAChB;QACD,OAAO0B,iBAAiB,CAAC5B,MAAM,GAAG,CAAC,EAAE;UACnC,MAAM0B,gBAAqD,GACzDE,iBAAiB,CAACnB,GAAG,EAAyC;UAChE,IAAInB,KAAK,CAACC,OAAO,CAACmC,gBAAgB,CAAC,EAAE;YACnC,KAAK,MAAMG,OAAO,IAAIH,gBAAgB,EAAE;cACtCE,iBAAiB,CAACjB,IAAI,CAACkB,OAAO,CAAC;YACjC;UACF,CAAC,MAAM,IACL,OAAOH,gBAAgB,KAAK,QAAQ,IACpCA,gBAAgB,CAACP,OAAO,KAAKxB,SAAS,EACtC;YACA,KAAK,MAAME,KAAK,IAAIiB,MAAM,CAACgB,MAAM,CAACJ,gBAAgB,CAAC,EAAE;cACnDE,iBAAiB,CAACjB,IAAI,CAACd,KAAK,CAAC;YAC/B;UACF,CAAC,MAAM;YACL,MAAMkB,qBAAsC,GAC1CW,gBAAmC;YACrC,IACE,CAACX,qBAAqB,CAACC,QAAQ,IAC/BD,qBAAqB,CAACE,QAAQ,EAC9B;cACAF,qBAAqB,CAACE,QAAQ,CAAC,KAAK,CAAC;YACvC;UACF;QACF;MACF;IACF,CAAC;IAED,OAAO;MACLc,aAAa,EAAE,IAAI;MACnB5B,OAAO;MACPgB,OAAO;MACPzB,OAAO,EAAE,CAAC,CAAC;MACXQ,eAAe;MACfe;IACF,CAAC;EACH,CAAC,CAAC;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"names":["Easing","defineAnimation","withTiming","toValue","userConfig","callback","config","duration","easing","inOut","quad","Object","keys","forEach","key","timing","animation","now","startTime","startValue","runtime","current","progress","onStart","value","previousAnimation","type","factory","onFrame"],"sources":["timing.ts"],"sourcesContent":["import type { EasingFn, EasingFactoryFn } from '../Easing';\nimport { Easing } from '../Easing';\nimport { defineAnimation } from './util';\nimport type {\n Animation,\n AnimationCallback,\n Timestamp,\n AnimatableValue,\n} from '../commonTypes';\n\ninterface TimingConfig {\n duration?: number;\n easing?: EasingFn | EasingFactoryFn;\n}\n\nexport interface TimingAnimation extends Animation<TimingAnimation> {\n type: string;\n easing: EasingFn;\n startValue: AnimatableValue;\n startTime: Timestamp;\n progress: number;\n toValue: AnimatableValue;\n current: AnimatableValue;\n}\n\nexport interface InnerTimingAnimation\n extends Omit<TimingAnimation, 'toValue' | 'current'> {\n toValue: number;\n current: number;\n}\n\n// TODO TYPESCRIPT This is temporary type put in here to get rid of our .d.ts file\ntype withTimingType = <T extends AnimatableValue>(\n toValue: T,\n userConfig?: TimingConfig,\n callback?: AnimationCallback\n) => T;\n\nexport const withTiming = function (\n toValue: AnimatableValue,\n userConfig?: TimingConfig,\n callback?: AnimationCallback\n): Animation<TimingAnimation> {\n 'worklet';\n\n return defineAnimation<TimingAnimation>(toValue, () => {\n 'worklet';\n const config: Required<TimingConfig> = {\n duration: 300,\n easing: Easing.inOut(Easing.quad),\n };\n if (userConfig) {\n Object.keys(userConfig).forEach(\n (key) =>\n ((config as any)[key] = userConfig[key as keyof typeof userConfig])\n );\n }\n\n function timing(animation: InnerTimingAnimation, now: Timestamp): boolean {\n const { toValue, startTime, startValue } = animation;\n const runtime = now - startTime;\n\n if (runtime >= config.duration) {\n // reset startTime to avoid reusing finished animation config in `start` method\n animation.startTime = 0;\n animation.current = toValue;\n return true;\n }\n const progress = animation.easing(runtime / config.duration);\n animation.current =\n (startValue as number) + (toValue - (startValue as number)) * progress;\n return false;\n }\n\n function onStart(\n animation: TimingAnimation,\n value: number,\n now: Timestamp,\n previousAnimation: Animation<TimingAnimation>\n ): void {\n if (\n previousAnimation &&\n (previousAnimation as TimingAnimation).type === 'timing' &&\n (previousAnimation as TimingAnimation).toValue === toValue &&\n (previousAnimation as TimingAnimation).startTime\n ) {\n // to maintain continuity of timing animations we check if we are starting\n // new timing over the old one with the same parameters. If so, we want\n // to copy animation timeline properties\n animation.startTime = (previousAnimation as TimingAnimation).startTime;\n animation.startValue = (\n previousAnimation as TimingAnimation\n ).startValue;\n } else {\n animation.startTime = now;\n animation.startValue = value;\n }\n animation.current = value;\n if (typeof config.easing === 'object') {\n animation.easing = config.easing.factory();\n } else {\n animation.easing = config.easing;\n }\n }\n\n return {\n type: 'timing',\n onFrame: timing,\n onStart: onStart as (animation: TimingAnimation, now: number) => boolean,\n progress: 0,\n toValue,\n startValue: 0,\n startTime: 0,\n easing: () => 0,\n current: toValue,\n callback,\n } as TimingAnimation;\n });\n} as withTimingType;\n"],"mappings":"AACA,SAASA,MAAM,QAAQ,WAAW;AAClC,SAASC,eAAe,QAAQ,QAAQ;;AA6BxC;;AAOA,OAAO,MAAMC,UAAU,GAAG,SAAAA,CACxBC,OAAwB,EACxBC,UAAyB,EACzBC,QAA4B,EACA;EAC5B,SAAS;;EAET,OAAOJ,eAAe,CAAkBE,OAAO,EAAE,MAAM;IACrD,SAAS;;IACT,MAAMG,MAA8B,GAAG;MACrCC,QAAQ,EAAE,GAAG;MACbC,MAAM,EAAER,MAAM,CAACS,KAAK,CAACT,MAAM,CAACU,IAAI;IAClC,CAAC;IACD,IAAIN,UAAU,EAAE;MACdO,MAAM,CAACC,IAAI,CAACR,UAAU,CAAC,CAACS,OAAO,CAC5BC,GAAG,IACAR,MAAM,CAASQ,GAAG,CAAC,GAAGV,UAAU,CAACU,GAAG,CAA6B,CACtE;IACH;IAEA,SAASC,MAAMA,CAACC,SAA+B,EAAEC,GAAc,EAAW;MACxE,MAAM;QAAEd,OAAO;QAAEe,SAAS;QAAEC;MAAW,CAAC,GAAGH,SAAS;MACpD,MAAMI,OAAO,GAAGH,GAAG,GAAGC,SAAS;MAE/B,IAAIE,OAAO,IAAId,MAAM,CAACC,QAAQ,EAAE;QAC9B;QACAS,SAAS,CAACE,SAAS,GAAG,CAAC;QACvBF,SAAS,CAACK,OAAO,GAAGlB,OAAO;QAC3B,OAAO,IAAI;MACb;MACA,MAAMmB,QAAQ,GAAGN,SAAS,CAACR,MAAM,CAACY,OAAO,GAAGd,MAAM,CAACC,QAAQ,CAAC;MAC5DS,SAAS,CAACK,OAAO,GACdF,UAAU,GAAc,CAAChB,OAAO,GAAIgB,UAAqB,IAAIG,QAAQ;MACxE,OAAO,KAAK;IACd;IAEA,SAASC,OAAOA,CACdP,SAA0B,EAC1BQ,KAAa,EACbP,GAAc,EACdQ,iBAA6C,EACvC;MACN,IACEA,iBAAiB,IAChBA,iBAAiB,CAAqBC,IAAI,KAAK,QAAQ,IACvDD,iBAAiB,CAAqBtB,OAAO,KAAKA,OAAO,IACzDsB,iBAAiB,CAAqBP,SAAS,EAChD;QACA;QACA;QACA;QACAF,SAAS,CAACE,SAAS,GAAIO,iBAAiB,CAAqBP,SAAS;QACtEF,SAAS,CAACG,UAAU,GAClBM,iBAAiB,CACjBN,UAAU;MACd,CAAC,MAAM;QACLH,SAAS,CAACE,SAAS,GAAGD,GAAG;QACzBD,SAAS,CAACG,UAAU,GAAGK,KAAK;MAC9B;MACAR,SAAS,CAACK,OAAO,GAAGG,KAAK;MACzB,IAAI,OAAOlB,MAAM,CAACE,MAAM,KAAK,QAAQ,EAAE;QACrCQ,SAAS,CAACR,MAAM,GAAGF,MAAM,CAACE,MAAM,CAACmB,OAAO,EAAE;MAC5C,CAAC,MAAM;QACLX,SAAS,CAACR,MAAM,GAAGF,MAAM,CAACE,MAAM;MAClC;IACF;IAEA,OAAO;MACLkB,IAAI,EAAE,QAAQ;MACdE,OAAO,EAAEb,MAAM;MACfQ,OAAO,EAAEA,OAA+D;MACxED,QAAQ,EAAE,CAAC;MACXnB,OAAO;MACPgB,UAAU,EAAE,CAAC;MACbD,SAAS,EAAE,CAAC;MACZV,MAAM,EAAEA,CAAA,KAAM,CAAC;MACfa,OAAO,EAAElB,OAAO;MAChBE;IACF,CAAC;EACH,CAAC,CAAC;AACJ,CAAmB"}
1
+ {"version":3,"names":["Easing","defineAnimation","withTiming","toValue","userConfig","callback","config","duration","easing","inOut","quad","Object","keys","forEach","key","timing","animation","now","startTime","startValue","runtime","current","progress","onStart","value","previousAnimation","type","factory","onFrame"],"sources":["timing.ts"],"sourcesContent":["import type { EasingFunction, EasingFunctionFactory } from '../Easing';\nimport { Easing } from '../Easing';\nimport { defineAnimation } from './util';\nimport type {\n Animation,\n AnimationCallback,\n Timestamp,\n AnimatableValue,\n} from '../commonTypes';\n\ninterface TimingConfig {\n duration?: number;\n easing?: EasingFunction | EasingFunctionFactory;\n}\n\nexport type WithTimingConfig = TimingConfig;\n\nexport interface TimingAnimation extends Animation<TimingAnimation> {\n type: string;\n easing: EasingFunction;\n startValue: AnimatableValue;\n startTime: Timestamp;\n progress: number;\n toValue: AnimatableValue;\n current: AnimatableValue;\n}\n\ninterface InnerTimingAnimation\n extends Omit<TimingAnimation, 'toValue' | 'current'> {\n toValue: number;\n current: number;\n}\n\n// TODO TYPESCRIPT This is temporary type put in here to get rid of our .d.ts file\ntype withTimingType = <T extends AnimatableValue>(\n toValue: T,\n userConfig?: TimingConfig,\n callback?: AnimationCallback\n) => T;\n\nexport const withTiming = function (\n toValue: AnimatableValue,\n userConfig?: TimingConfig,\n callback?: AnimationCallback\n): Animation<TimingAnimation> {\n 'worklet';\n\n return defineAnimation<TimingAnimation>(toValue, () => {\n 'worklet';\n const config: Required<TimingConfig> = {\n duration: 300,\n easing: Easing.inOut(Easing.quad),\n };\n if (userConfig) {\n Object.keys(userConfig).forEach(\n (key) =>\n ((config as any)[key] = userConfig[key as keyof typeof userConfig])\n );\n }\n\n function timing(animation: InnerTimingAnimation, now: Timestamp): boolean {\n const { toValue, startTime, startValue } = animation;\n const runtime = now - startTime;\n\n if (runtime >= config.duration) {\n // reset startTime to avoid reusing finished animation config in `start` method\n animation.startTime = 0;\n animation.current = toValue;\n return true;\n }\n const progress = animation.easing(runtime / config.duration);\n animation.current =\n (startValue as number) + (toValue - (startValue as number)) * progress;\n return false;\n }\n\n function onStart(\n animation: TimingAnimation,\n value: number,\n now: Timestamp,\n previousAnimation: Animation<TimingAnimation>\n ): void {\n if (\n previousAnimation &&\n (previousAnimation as TimingAnimation).type === 'timing' &&\n (previousAnimation as TimingAnimation).toValue === toValue &&\n (previousAnimation as TimingAnimation).startTime\n ) {\n // to maintain continuity of timing animations we check if we are starting\n // new timing over the old one with the same parameters. If so, we want\n // to copy animation timeline properties\n animation.startTime = (previousAnimation as TimingAnimation).startTime;\n animation.startValue = (\n previousAnimation as TimingAnimation\n ).startValue;\n } else {\n animation.startTime = now;\n animation.startValue = value;\n }\n animation.current = value;\n if (typeof config.easing === 'object') {\n animation.easing = config.easing.factory();\n } else {\n animation.easing = config.easing;\n }\n }\n\n return {\n type: 'timing',\n onFrame: timing,\n onStart: onStart as (animation: TimingAnimation, now: number) => boolean,\n progress: 0,\n toValue,\n startValue: 0,\n startTime: 0,\n easing: () => 0,\n current: toValue,\n callback,\n } as TimingAnimation;\n });\n} as withTimingType;\n"],"mappings":"AACA,SAASA,MAAM,QAAQ,WAAW;AAClC,SAASC,eAAe,QAAQ,QAAQ;;AA+BxC;;AAOA,OAAO,MAAMC,UAAU,GAAG,SAAAA,CACxBC,OAAwB,EACxBC,UAAyB,EACzBC,QAA4B,EACA;EAC5B,SAAS;;EAET,OAAOJ,eAAe,CAAkBE,OAAO,EAAE,MAAM;IACrD,SAAS;;IACT,MAAMG,MAA8B,GAAG;MACrCC,QAAQ,EAAE,GAAG;MACbC,MAAM,EAAER,MAAM,CAACS,KAAK,CAACT,MAAM,CAACU,IAAI;IAClC,CAAC;IACD,IAAIN,UAAU,EAAE;MACdO,MAAM,CAACC,IAAI,CAACR,UAAU,CAAC,CAACS,OAAO,CAC5BC,GAAG,IACAR,MAAM,CAASQ,GAAG,CAAC,GAAGV,UAAU,CAACU,GAAG,CAA6B,CACtE;IACH;IAEA,SAASC,MAAMA,CAACC,SAA+B,EAAEC,GAAc,EAAW;MACxE,MAAM;QAAEd,OAAO;QAAEe,SAAS;QAAEC;MAAW,CAAC,GAAGH,SAAS;MACpD,MAAMI,OAAO,GAAGH,GAAG,GAAGC,SAAS;MAE/B,IAAIE,OAAO,IAAId,MAAM,CAACC,QAAQ,EAAE;QAC9B;QACAS,SAAS,CAACE,SAAS,GAAG,CAAC;QACvBF,SAAS,CAACK,OAAO,GAAGlB,OAAO;QAC3B,OAAO,IAAI;MACb;MACA,MAAMmB,QAAQ,GAAGN,SAAS,CAACR,MAAM,CAACY,OAAO,GAAGd,MAAM,CAACC,QAAQ,CAAC;MAC5DS,SAAS,CAACK,OAAO,GACdF,UAAU,GAAc,CAAChB,OAAO,GAAIgB,UAAqB,IAAIG,QAAQ;MACxE,OAAO,KAAK;IACd;IAEA,SAASC,OAAOA,CACdP,SAA0B,EAC1BQ,KAAa,EACbP,GAAc,EACdQ,iBAA6C,EACvC;MACN,IACEA,iBAAiB,IAChBA,iBAAiB,CAAqBC,IAAI,KAAK,QAAQ,IACvDD,iBAAiB,CAAqBtB,OAAO,KAAKA,OAAO,IACzDsB,iBAAiB,CAAqBP,SAAS,EAChD;QACA;QACA;QACA;QACAF,SAAS,CAACE,SAAS,GAAIO,iBAAiB,CAAqBP,SAAS;QACtEF,SAAS,CAACG,UAAU,GAClBM,iBAAiB,CACjBN,UAAU;MACd,CAAC,MAAM;QACLH,SAAS,CAACE,SAAS,GAAGD,GAAG;QACzBD,SAAS,CAACG,UAAU,GAAGK,KAAK;MAC9B;MACAR,SAAS,CAACK,OAAO,GAAGG,KAAK;MACzB,IAAI,OAAOlB,MAAM,CAACE,MAAM,KAAK,QAAQ,EAAE;QACrCQ,SAAS,CAACR,MAAM,GAAGF,MAAM,CAACE,MAAM,CAACmB,OAAO,EAAE;MAC5C,CAAC,MAAM;QACLX,SAAS,CAACR,MAAM,GAAGF,MAAM,CAACE,MAAM;MAClC;IACF;IAEA,OAAO;MACLkB,IAAI,EAAE,QAAQ;MACdE,OAAO,EAAEb,MAAM;MACfQ,OAAO,EAAEA,OAA+D;MACxED,QAAQ,EAAE,CAAC;MACXnB,OAAO;MACPgB,UAAU,EAAE,CAAC;MACbD,SAAS,EAAE,CAAC;MACZV,MAAM,EAAEA,CAAA,KAAM,CAAC;MACfa,OAAO,EAAElB,OAAO;MAChBE;IACF,CAAC;EACH,CAAC,CAAC;AACJ,CAAmB"}
@@ -3,6 +3,8 @@ export function isAffineMatrixFlat(x) {
3
3
 
4
4
  return Array.isArray(x) && x.length === 16 && x.every(element => typeof element === 'number' && !isNaN(element));
5
5
  }
6
+
7
+ // ts-prune-ignore-next This function is exported to be tested
6
8
  export function isAffineMatrix(x) {
7
9
  'worklet';
8
10
 
@@ -13,6 +15,8 @@ export function flatten(matrix) {
13
15
 
14
16
  return matrix.flat();
15
17
  }
18
+
19
+ // ts-prune-ignore-next This function is exported to be tested
16
20
  export function unflatten(m) {
17
21
  'worklet';
18
22
 
@@ -130,6 +134,8 @@ function gramSchmidtAlgorithm(matrix) {
130
134
  skewMatrix: transposeMatrix(skewMatrix)
131
135
  };
132
136
  }
137
+
138
+ // ts-prune-ignore-next This function is exported to be tested
133
139
  export function decomposeMatrix(unknownTypeMatrix) {
134
140
  'worklet';
135
141
 
@@ -1 +1 @@
1
- {"version":3,"names":["isAffineMatrixFlat","x","Array","isArray","length","every","element","isNaN","isAffineMatrix","row","flatten","matrix","flat","unflatten","m","maybeFlattenMatrix","multiplyMatrices","a","b","subtractMatrices","maybeFlatA","maybeFlatB","isFlatOnStart","c","map","_","i","addMatrices","scaleMatrix","scalar","getRotationMatrix","angle","axis","arguments","undefined","cos","Math","sin","norm3d","y","z","sqrt","transposeMatrix","assertVectorsHaveEqualLengths","__DEV__","Error","innerProduct","reduce","acc","projection","u","s","e","subtractVectors","scaleVector","gramSchmidtAlgorithm","a0","a1","a2","a3","u0","u1","u2","u3","e0","e1","e2","e3","rotationMatrix","skewMatrix","decomposeMatrix","unknownTypeMatrix","forEach","translationMatrix","sx","sy","sz","rotationAndSkewMatrix","decomposeMatrixIntoMatricesAndAngles","sinRy","ry","asin","rx","rz","atan2"],"sources":["matrixUtils.tsx"],"sourcesContent":["type FixedLengthArray<\n T,\n L extends number,\n PassedObject = [T, ...Array<T>]\n> = PassedObject & {\n readonly length: L;\n [I: number]: T;\n};\n\nexport type AffineMatrix = FixedLengthArray<FixedLengthArray<number, 4>, 4>;\n\nexport type AffineMatrixFlat = FixedLengthArray<number, 16>;\n\nexport type TransformMatrixDecomposition = Record<\n 'translationMatrix' | 'scaleMatrix' | 'rotationMatrix' | 'skewMatrix',\n AffineMatrix\n>;\n\ntype Axis = 'x' | 'y' | 'z';\n\ninterface TansformMatrixDecompositionWithAngles\n extends TransformMatrixDecomposition {\n rx: number;\n ry: number;\n rz: number;\n}\n\nexport function isAffineMatrixFlat(x: unknown): x is AffineMatrixFlat {\n 'worklet';\n return (\n Array.isArray(x) &&\n x.length === 16 &&\n x.every((element) => typeof element === 'number' && !isNaN(element))\n );\n}\n\nexport function isAffineMatrix(x: unknown): x is AffineMatrix {\n 'worklet';\n return (\n Array.isArray(x) &&\n x.length === 4 &&\n x.every(\n (row) =>\n Array.isArray(row) &&\n row.length === 4 &&\n row.every((element) => typeof element === 'number' && !isNaN(element))\n )\n );\n}\n\nexport function flatten(matrix: AffineMatrix): AffineMatrixFlat {\n 'worklet';\n return matrix.flat() as AffineMatrixFlat;\n}\n\nexport function unflatten(m: AffineMatrixFlat): AffineMatrix {\n 'worklet';\n return [\n [m[0], m[1], m[2], m[3]],\n [m[4], m[5], m[6], m[7]],\n [m[8], m[9], m[10], m[11]],\n [m[12], m[13], m[14], m[15]],\n ] as AffineMatrix;\n}\n\nfunction maybeFlattenMatrix(\n matrix: AffineMatrix | AffineMatrixFlat\n): AffineMatrixFlat {\n 'worklet';\n return isAffineMatrix(matrix) ? flatten(matrix) : matrix;\n}\n\nexport function multiplyMatrices(\n a: AffineMatrix,\n b: AffineMatrix\n): AffineMatrix {\n 'worklet';\n return [\n [\n a[0][0] * b[0][0] +\n a[0][1] * b[1][0] +\n a[0][2] * b[2][0] +\n a[0][3] * b[3][0],\n\n a[0][0] * b[0][1] +\n a[0][1] * b[1][1] +\n a[0][2] * b[2][1] +\n a[0][3] * b[3][1],\n\n a[0][0] * b[0][2] +\n a[0][1] * b[1][2] +\n a[0][2] * b[2][2] +\n a[0][3] * b[3][2],\n\n a[0][0] * b[0][3] +\n a[0][1] * b[1][3] +\n a[0][2] * b[2][3] +\n a[0][3] * b[3][3],\n ],\n [\n a[1][0] * b[0][0] +\n a[1][1] * b[1][0] +\n a[1][2] * b[2][0] +\n a[1][3] * b[3][0],\n\n a[1][0] * b[0][1] +\n a[1][1] * b[1][1] +\n a[1][2] * b[2][1] +\n a[1][3] * b[3][1],\n\n a[1][0] * b[0][2] +\n a[1][1] * b[1][2] +\n a[1][2] * b[2][2] +\n a[1][3] * b[3][2],\n\n a[1][0] * b[0][3] +\n a[1][1] * b[1][3] +\n a[1][2] * b[2][3] +\n a[1][3] * b[3][3],\n ],\n [\n a[2][0] * b[0][0] +\n a[2][1] * b[1][0] +\n a[2][2] * b[2][0] +\n a[2][3] * b[3][0],\n\n a[2][0] * b[0][1] +\n a[2][1] * b[1][1] +\n a[2][2] * b[2][1] +\n a[2][3] * b[3][1],\n\n a[2][0] * b[0][2] +\n a[2][1] * b[1][2] +\n a[2][2] * b[2][2] +\n a[2][3] * b[3][2],\n\n a[2][0] * b[0][3] +\n a[2][1] * b[1][3] +\n a[2][2] * b[2][3] +\n a[2][3] * b[3][3],\n ],\n [\n a[3][0] * b[0][0] +\n a[3][1] * b[1][0] +\n a[3][2] * b[2][0] +\n a[3][3] * b[3][0],\n\n a[3][0] * b[0][1] +\n a[3][1] * b[1][1] +\n a[3][2] * b[2][1] +\n a[3][3] * b[3][1],\n\n a[3][0] * b[0][2] +\n a[3][1] * b[1][2] +\n a[3][2] * b[2][2] +\n a[3][3] * b[3][2],\n\n a[3][0] * b[0][3] +\n a[3][1] * b[1][3] +\n a[3][2] * b[2][3] +\n a[3][3] * b[3][3],\n ],\n ];\n}\n\nexport function subtractMatrices<T extends AffineMatrixFlat | AffineMatrix>(\n maybeFlatA: T,\n maybeFlatB: T\n): T {\n 'worklet';\n const isFlatOnStart = isAffineMatrixFlat(maybeFlatA);\n const a: AffineMatrixFlat = maybeFlattenMatrix(maybeFlatA);\n const b: AffineMatrixFlat = maybeFlattenMatrix(maybeFlatB);\n\n const c = a.map((_, i) => a[i] - b[i]) as AffineMatrixFlat;\n return isFlatOnStart ? (c as T) : (unflatten(c) as T);\n}\n\nexport function addMatrices<T extends AffineMatrixFlat | AffineMatrix>(\n maybeFlatA: T,\n maybeFlatB: T\n): T {\n 'worklet';\n const isFlatOnStart = isAffineMatrixFlat(maybeFlatA);\n const a = maybeFlattenMatrix(maybeFlatA);\n const b = maybeFlattenMatrix(maybeFlatB);\n\n const c = a.map((_, i) => a[i] + b[i]) as AffineMatrixFlat;\n return isFlatOnStart ? (c as T) : (unflatten(c) as T);\n}\n\nexport function scaleMatrix<T extends AffineMatrixFlat | AffineMatrix>(\n maybeFlatA: T,\n scalar: number\n): T {\n 'worklet';\n const isFlatOnStart = isAffineMatrixFlat(maybeFlatA);\n const a = maybeFlattenMatrix(maybeFlatA);\n\n const b = a.map((x) => x * scalar) as AffineMatrixFlat;\n return isFlatOnStart ? (b as T) : (unflatten(b) as T);\n}\n\nexport function getRotationMatrix(\n angle: number,\n axis: Axis = 'z'\n): AffineMatrix {\n 'worklet';\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n switch (axis) {\n case 'z':\n return [\n [cos, sin, 0, 0],\n [-sin, cos, 0, 0],\n [0, 0, 1, 0],\n [0, 0, 0, 1],\n ];\n case 'y':\n return [\n [cos, 0, -sin, 0],\n [0, 1, 0, 0],\n [sin, 0, cos, 0],\n [0, 0, 0, 1],\n ];\n case 'x':\n return [\n [1, 0, 0, 0],\n [0, cos, sin, 0],\n [0, -sin, cos, 0],\n [0, 0, 0, 1],\n ];\n }\n}\n\nfunction norm3d(x: number, y: number, z: number) {\n 'worklet';\n return Math.sqrt(x * x + y * y + z * z);\n}\n\nfunction transposeMatrix(matrix: AffineMatrix): AffineMatrix {\n 'worklet';\n const m = flatten(matrix);\n return [\n [m[0], m[4], m[8], m[12]],\n [m[1], m[5], m[9], m[13]],\n [m[2], m[6], m[10], m[14]],\n [m[3], m[7], m[11], m[15]],\n ];\n}\n\nfunction assertVectorsHaveEqualLengths(a: number[], b: number[]) {\n 'worklet';\n if (__DEV__ && a.length !== b.length) {\n throw new Error(\n `Cannot calculate inner product of two vectors of different lengths. Length of ${a} is ${a.length} and length of ${b} is ${b.length}.`\n );\n }\n}\n\nfunction innerProduct(a: number[], b: number[]) {\n 'worklet';\n assertVectorsHaveEqualLengths(a, b);\n return a.reduce((acc, _, i) => acc + a[i] * b[i], 0);\n}\n\nfunction projection(u: number[], a: number[]) {\n 'worklet';\n assertVectorsHaveEqualLengths(u, a);\n const s = innerProduct(u, a) / innerProduct(u, u);\n return u.map((e) => e * s);\n}\n\nfunction subtractVectors(a: number[], b: number[]) {\n 'worklet';\n assertVectorsHaveEqualLengths(a, b);\n return a.map((_, i) => a[i] - b[i]);\n}\n\nfunction scaleVector(u: number[], a: number) {\n 'worklet';\n return u.map((e) => e * a);\n}\n\nfunction gramSchmidtAlgorithm(matrix: AffineMatrix): {\n rotationMatrix: AffineMatrix;\n skewMatrix: AffineMatrix;\n} {\n // Gram-Schmidt orthogonalization decomposes any matrix with non-zero determinant into an orthogonal and a triangular matrix\n // These matrices are equal to rotation and skew matrices respectively, because we apply it to transformation matrix\n // That is expected to already have extracted the remaining transforms (scale & translation)\n 'worklet';\n const [a0, a1, a2, a3] = matrix;\n\n const u0 = a0;\n const u1 = subtractVectors(a1, projection(u0, a1));\n const u2 = subtractVectors(\n subtractVectors(a2, projection(u0, a2)),\n projection(u1, a2)\n );\n const u3 = subtractVectors(\n subtractVectors(\n subtractVectors(a3, projection(u0, a3)),\n projection(u1, a3)\n ),\n projection(u2, a3)\n );\n\n const [e0, e1, e2, e3] = [u0, u1, u2, u3].map((u) =>\n scaleVector(u, 1 / Math.sqrt(innerProduct(u, u)))\n );\n\n const rotationMatrix: AffineMatrix = [\n [e0[0], e1[0], e2[0], e3[0]],\n [e0[1], e1[1], e2[1], e3[1]],\n [e0[2], e1[2], e2[2], e3[2]],\n [e0[3], e1[3], e2[3], e3[3]],\n ];\n\n const skewMatrix: AffineMatrix = [\n [\n innerProduct(e0, a0),\n innerProduct(e0, a1),\n innerProduct(e0, a2),\n innerProduct(e0, a3),\n ],\n [0, innerProduct(e1, a1), innerProduct(e1, a2), innerProduct(e1, a3)],\n [0, 0, innerProduct(e2, a2), innerProduct(e2, a3)],\n [0, 0, 0, innerProduct(e3, a3)],\n ];\n return {\n rotationMatrix: transposeMatrix(rotationMatrix),\n skewMatrix: transposeMatrix(skewMatrix),\n };\n}\n\nexport function decomposeMatrix(\n unknownTypeMatrix: AffineMatrixFlat | AffineMatrix\n): TransformMatrixDecomposition {\n 'worklet';\n const matrix = maybeFlattenMatrix(unknownTypeMatrix);\n\n // normalize matrix\n if (matrix[15] === 0) {\n throw new Error('Invalid transform matrix!');\n }\n matrix.forEach((_, i) => (matrix[i] /= matrix[15]));\n\n const translationMatrix: AffineMatrix = [\n [1, 0, 0, 0],\n [0, 1, 0, 0],\n [0, 0, 1, 0],\n [matrix[12], matrix[13], matrix[14], 1],\n ];\n const sx = matrix[15] * norm3d(matrix[0], matrix[4], matrix[8]);\n const sy = matrix[15] * norm3d(matrix[1], matrix[5], matrix[9]);\n const sz = matrix[15] * norm3d(matrix[2], matrix[6], matrix[10]);\n\n const scaleMatrix: AffineMatrix = [\n [sx, 0, 0, 0],\n [0, sy, 0, 0],\n [0, 0, sz, 0],\n [0, 0, 0, 1],\n ];\n\n const rotationAndSkewMatrix: AffineMatrix = [\n [matrix[0] / sx, matrix[1] / sx, matrix[2] / sx, 0],\n [matrix[4] / sy, matrix[5] / sy, matrix[6] / sy, 0],\n [matrix[8] / sz, matrix[9] / sz, matrix[10] / sz, 0],\n [0, 0, 0, 1],\n ];\n\n const { rotationMatrix, skewMatrix } = gramSchmidtAlgorithm(\n rotationAndSkewMatrix\n );\n\n return {\n translationMatrix,\n scaleMatrix,\n rotationMatrix,\n skewMatrix,\n };\n}\n\nexport function decomposeMatrixIntoMatricesAndAngles(\n matrix: AffineMatrixFlat | AffineMatrix\n): TansformMatrixDecompositionWithAngles {\n 'worklet';\n const { scaleMatrix, rotationMatrix, translationMatrix, skewMatrix } =\n decomposeMatrix(matrix);\n\n const sinRy = -rotationMatrix[0][2];\n\n const ry = Math.asin(sinRy);\n let rx;\n let rz;\n if (sinRy === 1 || sinRy === -1) {\n rz = 0;\n rx = Math.atan2(sinRy * rotationMatrix[0][1], sinRy * rotationMatrix[0][2]);\n } else {\n rz = Math.atan2(rotationMatrix[0][1], rotationMatrix[0][0]);\n rx = Math.atan2(rotationMatrix[1][2], rotationMatrix[2][2]);\n }\n\n return {\n scaleMatrix,\n rotationMatrix,\n translationMatrix,\n skewMatrix,\n rx: rx || 0,\n ry: ry || 0,\n rz: rz || 0,\n };\n}\n"],"mappings":"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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,EACD,CACED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,EACD,CACED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,EACD,CACED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,C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"}
1
+ {"version":3,"names":["isAffineMatrixFlat","x","Array","isArray","length","every","element","isNaN","isAffineMatrix","row","flatten","matrix","flat","unflatten","m","maybeFlattenMatrix","multiplyMatrices","a","b","subtractMatrices","maybeFlatA","maybeFlatB","isFlatOnStart","c","map","_","i","addMatrices","scaleMatrix","scalar","getRotationMatrix","angle","axis","arguments","undefined","cos","Math","sin","norm3d","y","z","sqrt","transposeMatrix","assertVectorsHaveEqualLengths","__DEV__","Error","innerProduct","reduce","acc","projection","u","s","e","subtractVectors","scaleVector","gramSchmidtAlgorithm","a0","a1","a2","a3","u0","u1","u2","u3","e0","e1","e2","e3","rotationMatrix","skewMatrix","decomposeMatrix","unknownTypeMatrix","forEach","translationMatrix","sx","sy","sz","rotationAndSkewMatrix","decomposeMatrixIntoMatricesAndAngles","sinRy","ry","asin","rx","rz","atan2"],"sources":["matrixUtils.tsx"],"sourcesContent":["type FixedLengthArray<\n T,\n L extends number,\n PassedObject = [T, ...Array<T>]\n> = PassedObject & {\n readonly length: L;\n [I: number]: T;\n};\n\nexport type AffineMatrix = FixedLengthArray<FixedLengthArray<number, 4>, 4>;\n\nexport type AffineMatrixFlat = FixedLengthArray<number, 16>;\n\ntype TransformMatrixDecomposition = Record<\n 'translationMatrix' | 'scaleMatrix' | 'rotationMatrix' | 'skewMatrix',\n AffineMatrix\n>;\n\ntype Axis = 'x' | 'y' | 'z';\n\ninterface TansformMatrixDecompositionWithAngles\n extends TransformMatrixDecomposition {\n rx: number;\n ry: number;\n rz: number;\n}\n\nexport function isAffineMatrixFlat(x: unknown): x is AffineMatrixFlat {\n 'worklet';\n return (\n Array.isArray(x) &&\n x.length === 16 &&\n x.every((element) => typeof element === 'number' && !isNaN(element))\n );\n}\n\n// ts-prune-ignore-next This function is exported to be tested\nexport function isAffineMatrix(x: unknown): x is AffineMatrix {\n 'worklet';\n return (\n Array.isArray(x) &&\n x.length === 4 &&\n x.every(\n (row) =>\n Array.isArray(row) &&\n row.length === 4 &&\n row.every((element) => typeof element === 'number' && !isNaN(element))\n )\n );\n}\n\nexport function flatten(matrix: AffineMatrix): AffineMatrixFlat {\n 'worklet';\n return matrix.flat() as AffineMatrixFlat;\n}\n\n// ts-prune-ignore-next This function is exported to be tested\nexport function unflatten(m: AffineMatrixFlat): AffineMatrix {\n 'worklet';\n return [\n [m[0], m[1], m[2], m[3]],\n [m[4], m[5], m[6], m[7]],\n [m[8], m[9], m[10], m[11]],\n [m[12], m[13], m[14], m[15]],\n ] as AffineMatrix;\n}\n\nfunction maybeFlattenMatrix(\n matrix: AffineMatrix | AffineMatrixFlat\n): AffineMatrixFlat {\n 'worklet';\n return isAffineMatrix(matrix) ? flatten(matrix) : matrix;\n}\n\nexport function multiplyMatrices(\n a: AffineMatrix,\n b: AffineMatrix\n): AffineMatrix {\n 'worklet';\n return [\n [\n a[0][0] * b[0][0] +\n a[0][1] * b[1][0] +\n a[0][2] * b[2][0] +\n a[0][3] * b[3][0],\n\n a[0][0] * b[0][1] +\n a[0][1] * b[1][1] +\n a[0][2] * b[2][1] +\n a[0][3] * b[3][1],\n\n a[0][0] * b[0][2] +\n a[0][1] * b[1][2] +\n a[0][2] * b[2][2] +\n a[0][3] * b[3][2],\n\n a[0][0] * b[0][3] +\n a[0][1] * b[1][3] +\n a[0][2] * b[2][3] +\n a[0][3] * b[3][3],\n ],\n [\n a[1][0] * b[0][0] +\n a[1][1] * b[1][0] +\n a[1][2] * b[2][0] +\n a[1][3] * b[3][0],\n\n a[1][0] * b[0][1] +\n a[1][1] * b[1][1] +\n a[1][2] * b[2][1] +\n a[1][3] * b[3][1],\n\n a[1][0] * b[0][2] +\n a[1][1] * b[1][2] +\n a[1][2] * b[2][2] +\n a[1][3] * b[3][2],\n\n a[1][0] * b[0][3] +\n a[1][1] * b[1][3] +\n a[1][2] * b[2][3] +\n a[1][3] * b[3][3],\n ],\n [\n a[2][0] * b[0][0] +\n a[2][1] * b[1][0] +\n a[2][2] * b[2][0] +\n a[2][3] * b[3][0],\n\n a[2][0] * b[0][1] +\n a[2][1] * b[1][1] +\n a[2][2] * b[2][1] +\n a[2][3] * b[3][1],\n\n a[2][0] * b[0][2] +\n a[2][1] * b[1][2] +\n a[2][2] * b[2][2] +\n a[2][3] * b[3][2],\n\n a[2][0] * b[0][3] +\n a[2][1] * b[1][3] +\n a[2][2] * b[2][3] +\n a[2][3] * b[3][3],\n ],\n [\n a[3][0] * b[0][0] +\n a[3][1] * b[1][0] +\n a[3][2] * b[2][0] +\n a[3][3] * b[3][0],\n\n a[3][0] * b[0][1] +\n a[3][1] * b[1][1] +\n a[3][2] * b[2][1] +\n a[3][3] * b[3][1],\n\n a[3][0] * b[0][2] +\n a[3][1] * b[1][2] +\n a[3][2] * b[2][2] +\n a[3][3] * b[3][2],\n\n a[3][0] * b[0][3] +\n a[3][1] * b[1][3] +\n a[3][2] * b[2][3] +\n a[3][3] * b[3][3],\n ],\n ];\n}\n\nexport function subtractMatrices<T extends AffineMatrixFlat | AffineMatrix>(\n maybeFlatA: T,\n maybeFlatB: T\n): T {\n 'worklet';\n const isFlatOnStart = isAffineMatrixFlat(maybeFlatA);\n const a: AffineMatrixFlat = maybeFlattenMatrix(maybeFlatA);\n const b: AffineMatrixFlat = maybeFlattenMatrix(maybeFlatB);\n\n const c = a.map((_, i) => a[i] - b[i]) as AffineMatrixFlat;\n return isFlatOnStart ? (c as T) : (unflatten(c) as T);\n}\n\nexport function addMatrices<T extends AffineMatrixFlat | AffineMatrix>(\n maybeFlatA: T,\n maybeFlatB: T\n): T {\n 'worklet';\n const isFlatOnStart = isAffineMatrixFlat(maybeFlatA);\n const a = maybeFlattenMatrix(maybeFlatA);\n const b = maybeFlattenMatrix(maybeFlatB);\n\n const c = a.map((_, i) => a[i] + b[i]) as AffineMatrixFlat;\n return isFlatOnStart ? (c as T) : (unflatten(c) as T);\n}\n\nexport function scaleMatrix<T extends AffineMatrixFlat | AffineMatrix>(\n maybeFlatA: T,\n scalar: number\n): T {\n 'worklet';\n const isFlatOnStart = isAffineMatrixFlat(maybeFlatA);\n const a = maybeFlattenMatrix(maybeFlatA);\n\n const b = a.map((x) => x * scalar) as AffineMatrixFlat;\n return isFlatOnStart ? (b as T) : (unflatten(b) as T);\n}\n\nexport function getRotationMatrix(\n angle: number,\n axis: Axis = 'z'\n): AffineMatrix {\n 'worklet';\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n switch (axis) {\n case 'z':\n return [\n [cos, sin, 0, 0],\n [-sin, cos, 0, 0],\n [0, 0, 1, 0],\n [0, 0, 0, 1],\n ];\n case 'y':\n return [\n [cos, 0, -sin, 0],\n [0, 1, 0, 0],\n [sin, 0, cos, 0],\n [0, 0, 0, 1],\n ];\n case 'x':\n return [\n [1, 0, 0, 0],\n [0, cos, sin, 0],\n [0, -sin, cos, 0],\n [0, 0, 0, 1],\n ];\n }\n}\n\nfunction norm3d(x: number, y: number, z: number) {\n 'worklet';\n return Math.sqrt(x * x + y * y + z * z);\n}\n\nfunction transposeMatrix(matrix: AffineMatrix): AffineMatrix {\n 'worklet';\n const m = flatten(matrix);\n return [\n [m[0], m[4], m[8], m[12]],\n [m[1], m[5], m[9], m[13]],\n [m[2], m[6], m[10], m[14]],\n [m[3], m[7], m[11], m[15]],\n ];\n}\n\nfunction assertVectorsHaveEqualLengths(a: number[], b: number[]) {\n 'worklet';\n if (__DEV__ && a.length !== b.length) {\n throw new Error(\n `Cannot calculate inner product of two vectors of different lengths. Length of ${a} is ${a.length} and length of ${b} is ${b.length}.`\n );\n }\n}\n\nfunction innerProduct(a: number[], b: number[]) {\n 'worklet';\n assertVectorsHaveEqualLengths(a, b);\n return a.reduce((acc, _, i) => acc + a[i] * b[i], 0);\n}\n\nfunction projection(u: number[], a: number[]) {\n 'worklet';\n assertVectorsHaveEqualLengths(u, a);\n const s = innerProduct(u, a) / innerProduct(u, u);\n return u.map((e) => e * s);\n}\n\nfunction subtractVectors(a: number[], b: number[]) {\n 'worklet';\n assertVectorsHaveEqualLengths(a, b);\n return a.map((_, i) => a[i] - b[i]);\n}\n\nfunction scaleVector(u: number[], a: number) {\n 'worklet';\n return u.map((e) => e * a);\n}\n\nfunction gramSchmidtAlgorithm(matrix: AffineMatrix): {\n rotationMatrix: AffineMatrix;\n skewMatrix: AffineMatrix;\n} {\n // Gram-Schmidt orthogonalization decomposes any matrix with non-zero determinant into an orthogonal and a triangular matrix\n // These matrices are equal to rotation and skew matrices respectively, because we apply it to transformation matrix\n // That is expected to already have extracted the remaining transforms (scale & translation)\n 'worklet';\n const [a0, a1, a2, a3] = matrix;\n\n const u0 = a0;\n const u1 = subtractVectors(a1, projection(u0, a1));\n const u2 = subtractVectors(\n subtractVectors(a2, projection(u0, a2)),\n projection(u1, a2)\n );\n const u3 = subtractVectors(\n subtractVectors(\n subtractVectors(a3, projection(u0, a3)),\n projection(u1, a3)\n ),\n projection(u2, a3)\n );\n\n const [e0, e1, e2, e3] = [u0, u1, u2, u3].map((u) =>\n scaleVector(u, 1 / Math.sqrt(innerProduct(u, u)))\n );\n\n const rotationMatrix: AffineMatrix = [\n [e0[0], e1[0], e2[0], e3[0]],\n [e0[1], e1[1], e2[1], e3[1]],\n [e0[2], e1[2], e2[2], e3[2]],\n [e0[3], e1[3], e2[3], e3[3]],\n ];\n\n const skewMatrix: AffineMatrix = [\n [\n innerProduct(e0, a0),\n innerProduct(e0, a1),\n innerProduct(e0, a2),\n innerProduct(e0, a3),\n ],\n [0, innerProduct(e1, a1), innerProduct(e1, a2), innerProduct(e1, a3)],\n [0, 0, innerProduct(e2, a2), innerProduct(e2, a3)],\n [0, 0, 0, innerProduct(e3, a3)],\n ];\n return {\n rotationMatrix: transposeMatrix(rotationMatrix),\n skewMatrix: transposeMatrix(skewMatrix),\n };\n}\n\n// ts-prune-ignore-next This function is exported to be tested\nexport function decomposeMatrix(\n unknownTypeMatrix: AffineMatrixFlat | AffineMatrix\n): TransformMatrixDecomposition {\n 'worklet';\n const matrix = maybeFlattenMatrix(unknownTypeMatrix);\n\n // normalize matrix\n if (matrix[15] === 0) {\n throw new Error('Invalid transform matrix!');\n }\n matrix.forEach((_, i) => (matrix[i] /= matrix[15]));\n\n const translationMatrix: AffineMatrix = [\n [1, 0, 0, 0],\n [0, 1, 0, 0],\n [0, 0, 1, 0],\n [matrix[12], matrix[13], matrix[14], 1],\n ];\n const sx = matrix[15] * norm3d(matrix[0], matrix[4], matrix[8]);\n const sy = matrix[15] * norm3d(matrix[1], matrix[5], matrix[9]);\n const sz = matrix[15] * norm3d(matrix[2], matrix[6], matrix[10]);\n\n const scaleMatrix: AffineMatrix = [\n [sx, 0, 0, 0],\n [0, sy, 0, 0],\n [0, 0, sz, 0],\n [0, 0, 0, 1],\n ];\n\n const rotationAndSkewMatrix: AffineMatrix = [\n [matrix[0] / sx, matrix[1] / sx, matrix[2] / sx, 0],\n [matrix[4] / sy, matrix[5] / sy, matrix[6] / sy, 0],\n [matrix[8] / sz, matrix[9] / sz, matrix[10] / sz, 0],\n [0, 0, 0, 1],\n ];\n\n const { rotationMatrix, skewMatrix } = gramSchmidtAlgorithm(\n rotationAndSkewMatrix\n );\n\n return {\n translationMatrix,\n scaleMatrix,\n rotationMatrix,\n skewMatrix,\n };\n}\n\nexport function decomposeMatrixIntoMatricesAndAngles(\n matrix: AffineMatrixFlat | AffineMatrix\n): TansformMatrixDecompositionWithAngles {\n 'worklet';\n const { scaleMatrix, rotationMatrix, translationMatrix, skewMatrix } =\n decomposeMatrix(matrix);\n\n const sinRy = -rotationMatrix[0][2];\n\n const ry = Math.asin(sinRy);\n let rx;\n let rz;\n if (sinRy === 1 || sinRy === -1) {\n rz = 0;\n rx = Math.atan2(sinRy * rotationMatrix[0][1], sinRy * rotationMatrix[0][2]);\n } else {\n rz = Math.atan2(rotationMatrix[0][1], rotationMatrix[0][0]);\n rx = Math.atan2(rotationMatrix[1][2], rotationMatrix[2][2]);\n }\n\n return {\n scaleMatrix,\n rotationMatrix,\n translationMatrix,\n skewMatrix,\n rx: rx || 0,\n ry: ry || 0,\n rz: rz || 0,\n };\n}\n"],"mappings":"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,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,EACD,CACED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,EACD,CACED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,EACD,CACED,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAEnBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACfD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACjBD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,CACF;AACH;AAEA,OAAO,SAASC,gBAAgBA,CAC9BC,UAAa,EACbC,UAAa,EACV;EACH,SAAS;;EACT,MAAMC,aAAa,GAAGtB,kBAAkB,CAACoB,UAAU,CAAC;EACpD,MAAMH,CAAmB,GAAGF,kBAAkB,CAACK,UAAU,CAAC;EAC1D,MAAMF,CAAmB,GAAGH,kBAAkB,CAACM,UAAU,CAAC;EAE1D,MAAME,CAAC,GAAGN,CAAC,CAACO,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKT,CAAC,CAACS,CAAC,CAAC,GAAGR,CAAC,CAACQ,CAAC,CAAC,CAAqB;EAC1D,OAAOJ,aAAa,GAAIC,CAAC,GAAUV,SAAS,CAACU,CAAC,CAAO;AACvD;AAEA,OAAO,SAASI,WAAWA,CACzBP,UAAa,EACbC,UAAa,EACV;EACH,SAAS;;EACT,MAAMC,aAAa,GAAGtB,kBAAkB,CAACoB,UAAU,CAAC;EACpD,MAAMH,CAAC,GAAGF,kBAAkB,CAACK,UAAU,CAAC;EACxC,MAAMF,CAAC,GAAGH,kBAAkB,CAACM,UAAU,CAAC;EAExC,MAAME,CAAC,GAAGN,CAAC,CAACO,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKT,CAAC,CAACS,CAAC,CAAC,GAAGR,CAAC,CAACQ,CAAC,CAAC,CAAqB;EAC1D,OAAOJ,aAAa,GAAIC,CAAC,GAAUV,SAAS,CAACU,CAAC,CAAO;AACvD;AAEA,OAAO,SAASK,WAAWA,CACzBR,UAAa,EACbS,MAAc,EACX;EACH,SAAS;;EACT,MAAMP,aAAa,GAAGtB,kBAAkB,CAACoB,UAAU,CAAC;EACpD,MAAMH,CAAC,GAAGF,kBAAkB,CAACK,UAAU,CAAC;EAExC,MAAMF,CAAC,GAAGD,CAAC,CAACO,GAAG,CAAEvB,CAAC,IAAKA,CAAC,GAAG4B,MAAM,CAAqB;EACtD,OAAOP,aAAa,GAAIJ,CAAC,GAAUL,SAAS,CAACK,CAAC,CAAO;AACvD;AAEA,OAAO,SAASY,iBAAiBA,CAC/BC,KAAa,EAEC;EACd,SAAS;;EAAC,IAFVC,IAAU,GAAAC,SAAA,CAAA7B,MAAA,QAAA6B,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,GAAG;EAGhB,MAAME,GAAG,GAAGC,IAAI,CAACD,GAAG,CAACJ,KAAK,CAAC;EAC3B,MAAMM,GAAG,GAAGD,IAAI,CAACC,GAAG,CAACN,KAAK,CAAC;EAC3B,QAAQC,IAAI;IACV,KAAK,GAAG;MACN,OAAO,CACL,CAACG,GAAG,EAAEE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAChB,CAAC,CAACA,GAAG,EAAEF,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EACjB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACb;IACH,KAAK,GAAG;MACN,OAAO,CACL,CAACA,GAAG,EAAE,CAAC,EAAE,CAACE,GAAG,EAAE,CAAC,CAAC,EACjB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACZ,CAACA,GAAG,EAAE,CAAC,EAAEF,GAAG,EAAE,CAAC,CAAC,EAChB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACb;IACH,KAAK,GAAG;MACN,OAAO,CACL,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACZ,CAAC,CAAC,EAAEA,GAAG,EAAEE,GAAG,EAAE,CAAC,CAAC,EAChB,CAAC,CAAC,EAAE,CAACA,GAAG,EAAEF,GAAG,EAAE,CAAC,CAAC,EACjB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACb;EAAC;AAER;AAEA,SAASG,MAAMA,CAACrC,CAAS,EAAEsC,CAAS,EAAEC,CAAS,EAAE;EAC/C,SAAS;;EACT,OAAOJ,IAAI,CAACK,IAAI,CAACxC,CAAC,GAAGA,CAAC,GAAGsC,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC,CAAC;AACzC;AAEA,SAASE,eAAeA,CAAC/B,MAAoB,EAAgB;EAC3D,SAAS;;EACT,MAAMG,CAAC,GAAGJ,OAAO,CAACC,MAAM,CAAC;EACzB,OAAO,CACL,CAACG,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,EAAE,CAAC,CAAC,EACzB,CAACA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,EAAE,CAAC,CAAC,EACzB,CAACA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,EAAE,CAAC,EAAEA,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,CAACA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,EAAE,CAAC,EAAEA,CAAC,CAAC,EAAE,CAAC,CAAC,CAC3B;AACH;AAEA,SAAS6B,6BAA6BA,CAAC1B,CAAW,EAAEC,CAAW,EAAE;EAC/D,SAAS;;EACT,IAAI0B,OAAO,IAAI3B,CAAC,CAACb,MAAM,KAAKc,CAAC,CAACd,MAAM,EAAE;IACpC,MAAM,IAAIyC,KAAK,CACZ,iFAAgF5B,CAAE,OAAMA,CAAC,CAACb,MAAO,kBAAiBc,CAAE,OAAMA,CAAC,CAACd,MAAO,GAAE,CACvI;EACH;AACF;AAEA,SAAS0C,YAAYA,CAAC7B,CAAW,EAAEC,CAAW,EAAE;EAC9C,SAAS;;EACTyB,6BAA6B,CAAC1B,CAAC,EAAEC,CAAC,CAAC;EACnC,OAAOD,CAAC,CAAC8B,MAAM,CAAC,CAACC,GAAG,EAAEvB,CAAC,EAAEC,CAAC,KAAKsB,GAAG,GAAG/B,CAAC,CAACS,CAAC,CAAC,GAAGR,CAAC,CAACQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD;AAEA,SAASuB,UAAUA,CAACC,CAAW,EAAEjC,CAAW,EAAE;EAC5C,SAAS;;EACT0B,6BAA6B,CAACO,CAAC,EAAEjC,CAAC,CAAC;EACnC,MAAMkC,CAAC,GAAGL,YAAY,CAACI,CAAC,EAAEjC,CAAC,CAAC,GAAG6B,YAAY,CAACI,CAAC,EAAEA,CAAC,CAAC;EACjD,OAAOA,CAAC,CAAC1B,GAAG,CAAE4B,CAAC,IAAKA,CAAC,GAAGD,CAAC,CAAC;AAC5B;AAEA,SAASE,eAAeA,CAACpC,CAAW,EAAEC,CAAW,EAAE;EACjD,SAAS;;EACTyB,6BAA6B,CAAC1B,CAAC,EAAEC,CAAC,CAAC;EACnC,OAAOD,CAAC,CAACO,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKT,CAAC,CAACS,CAAC,CAAC,GAAGR,CAAC,CAACQ,CAAC,CAAC,CAAC;AACrC;AAEA,SAAS4B,WAAWA,CAACJ,CAAW,EAAEjC,CAAS,EAAE;EAC3C,SAAS;;EACT,OAAOiC,CAAC,CAAC1B,GAAG,CAAE4B,CAAC,IAAKA,CAAC,GAAGnC,CAAC,CAAC;AAC5B;AAEA,SAASsC,oBAAoBA,CAAC5C,MAAoB,EAGhD;EACA;EACA;EACA;EACA,SAAS;;EACT,MAAM,CAAC6C,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAGhD,MAAM;EAE/B,MAAMiD,EAAE,GAAGJ,EAAE;EACb,MAAMK,EAAE,GAAGR,eAAe,CAACI,EAAE,EAAER,UAAU,CAACW,EAAE,EAAEH,EAAE,CAAC,CAAC;EAClD,MAAMK,EAAE,GAAGT,eAAe,CACxBA,eAAe,CAACK,EAAE,EAAET,UAAU,CAACW,EAAE,EAAEF,EAAE,CAAC,CAAC,EACvCT,UAAU,CAACY,EAAE,EAAEH,EAAE,CAAC,CACnB;EACD,MAAMK,EAAE,GAAGV,eAAe,CACxBA,eAAe,CACbA,eAAe,CAACM,EAAE,EAAEV,UAAU,CAACW,EAAE,EAAED,EAAE,CAAC,CAAC,EACvCV,UAAU,CAACY,EAAE,EAAEF,EAAE,CAAC,CACnB,EACDV,UAAU,CAACa,EAAE,EAAEH,EAAE,CAAC,CACnB;EAED,MAAM,CAACK,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAG,CAACP,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,CAACvC,GAAG,CAAE0B,CAAC,IAC9CI,WAAW,CAACJ,CAAC,EAAE,CAAC,GAAGd,IAAI,CAACK,IAAI,CAACK,YAAY,CAACI,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAClD;EAED,MAAMkB,cAA4B,GAAG,CACnC,CAACJ,EAAE,CAAC,CAAC,CAAC,EAAEC,EAAE,CAAC,CAAC,CAAC,EAAEC,EAAE,CAAC,CAAC,CAAC,EAAEC,EAAE,CAAC,CAAC,CAAC,CAAC,EAC5B,CAACH,EAAE,CAAC,CAAC,CAAC,EAAEC,EAAE,CAAC,CAAC,CAAC,EAAEC,EAAE,CAAC,CAAC,CAAC,EAAEC,EAAE,CAAC,CAAC,CAAC,CAAC,EAC5B,CAACH,EAAE,CAAC,CAAC,CAAC,EAAEC,EAAE,CAAC,CAAC,CAAC,EAAEC,EAAE,CAAC,CAAC,CAAC,EAAEC,EAAE,CAAC,CAAC,CAAC,CAAC,EAC5B,CAACH,EAAE,CAAC,CAAC,CAAC,EAAEC,EAAE,CAAC,CAAC,CAAC,EAAEC,EAAE,CAAC,CAAC,CAAC,EAAEC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC7B;EAED,MAAME,UAAwB,GAAG,CAC/B,CACEvB,YAAY,CAACkB,EAAE,EAAER,EAAE,CAAC,EACpBV,YAAY,CAACkB,EAAE,EAAEP,EAAE,CAAC,EACpBX,YAAY,CAACkB,EAAE,EAAEN,EAAE,CAAC,EACpBZ,YAAY,CAACkB,EAAE,EAAEL,EAAE,CAAC,CACrB,EACD,CAAC,CAAC,EAAEb,YAAY,CAACmB,EAAE,EAAER,EAAE,CAAC,EAAEX,YAAY,CAACmB,EAAE,EAAEP,EAAE,CAAC,EAAEZ,YAAY,CAACmB,EAAE,EAAEN,EAAE,CAAC,CAAC,EACrE,CAAC,CAAC,EAAE,CAAC,EAAEb,YAAY,CAACoB,EAAE,EAAER,EAAE,CAAC,EAAEZ,YAAY,CAACoB,EAAE,EAAEP,EAAE,CAAC,CAAC,EAClD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEb,YAAY,CAACqB,EAAE,EAAER,EAAE,CAAC,CAAC,CAChC;EACD,OAAO;IACLS,cAAc,EAAE1B,eAAe,CAAC0B,cAAc,CAAC;IAC/CC,UAAU,EAAE3B,eAAe,CAAC2B,UAAU;EACxC,CAAC;AACH;;AAEA;AACA,OAAO,SAASC,eAAeA,CAC7BC,iBAAkD,EACpB;EAC9B,SAAS;;EACT,MAAM5D,MAAM,GAAGI,kBAAkB,CAACwD,iBAAiB,CAAC;;EAEpD;EACA,IAAI5D,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;IACpB,MAAM,IAAIkC,KAAK,CAAC,2BAA2B,CAAC;EAC9C;EACAlC,MAAM,CAAC6D,OAAO,CAAC,CAAC/C,CAAC,EAAEC,CAAC,KAAMf,MAAM,CAACe,CAAC,CAAC,IAAIf,MAAM,CAAC,EAAE,CAAE,CAAC;EAEnD,MAAM8D,iBAA+B,GAAG,CACtC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACZ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACZ,CAAC9D,MAAM,CAAC,EAAE,CAAC,EAAEA,MAAM,CAAC,EAAE,CAAC,EAAEA,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACxC;EACD,MAAM+D,EAAE,GAAG/D,MAAM,CAAC,EAAE,CAAC,GAAG2B,MAAM,CAAC3B,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC;EAC/D,MAAMgE,EAAE,GAAGhE,MAAM,CAAC,EAAE,CAAC,GAAG2B,MAAM,CAAC3B,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC;EAC/D,MAAMiE,EAAE,GAAGjE,MAAM,CAAC,EAAE,CAAC,GAAG2B,MAAM,CAAC3B,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,EAAE,CAAC,CAAC;EAEhE,MAAMiB,WAAyB,GAAG,CAChC,CAAC8C,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACb,CAAC,CAAC,EAAEC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EACb,CAAC,CAAC,EAAE,CAAC,EAAEC,EAAE,EAAE,CAAC,CAAC,EACb,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACb;EAED,MAAMC,qBAAmC,GAAG,CAC1C,CAAClE,MAAM,CAAC,CAAC,CAAC,GAAG+D,EAAE,EAAE/D,MAAM,CAAC,CAAC,CAAC,GAAG+D,EAAE,EAAE/D,MAAM,CAAC,CAAC,CAAC,GAAG+D,EAAE,EAAE,CAAC,CAAC,EACnD,CAAC/D,MAAM,CAAC,CAAC,CAAC,GAAGgE,EAAE,EAAEhE,MAAM,CAAC,CAAC,CAAC,GAAGgE,EAAE,EAAEhE,MAAM,CAAC,CAAC,CAAC,GAAGgE,EAAE,EAAE,CAAC,CAAC,EACnD,CAAChE,MAAM,CAAC,CAAC,CAAC,GAAGiE,EAAE,EAAEjE,MAAM,CAAC,CAAC,CAAC,GAAGiE,EAAE,EAAEjE,MAAM,CAAC,EAAE,CAAC,GAAGiE,EAAE,EAAE,CAAC,CAAC,EACpD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACb;EAED,MAAM;IAAER,cAAc;IAAEC;EAAW,CAAC,GAAGd,oBAAoB,CACzDsB,qBAAqB,CACtB;EAED,OAAO;IACLJ,iBAAiB;IACjB7C,WAAW;IACXwC,cAAc;IACdC;EACF,CAAC;AACH;AAEA,OAAO,SAASS,oCAAoCA,CAClDnE,MAAuC,EACA;EACvC,SAAS;;EACT,MAAM;IAAEiB,WAAW;IAAEwC,cAAc;IAAEK,iBAAiB;IAAEJ;EAAW,CAAC,GAClEC,eAAe,CAAC3D,MAAM,CAAC;EAEzB,MAAMoE,KAAK,GAAG,CAACX,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAEnC,MAAMY,EAAE,GAAG5C,IAAI,CAAC6C,IAAI,CAACF,KAAK,CAAC;EAC3B,IAAIG,EAAE;EACN,IAAIC,EAAE;EACN,IAAIJ,KAAK,KAAK,CAAC,IAAIA,KAAK,KAAK,CAAC,CAAC,EAAE;IAC/BI,EAAE,GAAG,CAAC;IACND,EAAE,GAAG9C,IAAI,CAACgD,KAAK,CAACL,KAAK,GAAGX,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEW,KAAK,GAAGX,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7E,CAAC,MAAM;IACLe,EAAE,GAAG/C,IAAI,CAACgD,KAAK,CAAChB,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3Dc,EAAE,GAAG9C,IAAI,CAACgD,KAAK,CAAChB,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7D;EAEA,OAAO;IACLxC,WAAW;IACXwC,cAAc;IACdK,iBAAiB;IACjBJ,UAAU;IACVa,EAAE,EAAEA,EAAE,IAAI,CAAC;IACXF,EAAE,EAAEA,EAAE,IAAI,CAAC;IACXG,EAAE,EAAEA,EAAE,IAAI;EACZ,CAAC;AACH"}
@@ -120,7 +120,7 @@ function decorateAnimation(animation) {
120
120
  animation[i].current = RGBACurrent[index];
121
121
  const result = animation[i].onFrame(animation[i], timestamp);
122
122
  // We really need to assign this value to result, instead of passing it directly - otherwise once "finished" is false, onFrame won't be called
123
- finished &&= result;
123
+ finished = finished && result;
124
124
  res.push(animation[i].current);
125
125
  });
126
126
  animation.current = rgbaArrayToRGBAColor(toGammaSpace(res));
@@ -145,7 +145,7 @@ function decorateAnimation(animation) {
145
145
  let finished = true;
146
146
  const result = animation[0].onFrame(animation[0], timestamp);
147
147
  // We really need to assign this value to result, instead of passing it directly - otherwise once "finished" is false, onFrame won't be called
148
- finished &&= result;
148
+ finished = finished && result;
149
149
  const progress = animation[0].current / 100;
150
150
  const transforms = ['translationMatrix', 'scaleMatrix', 'skewMatrix'];
151
151
  const mappedTransforms = [];
@@ -177,7 +177,7 @@ function decorateAnimation(animation) {
177
177
  animation.current.forEach((_, i) => {
178
178
  const result = animation[i].onFrame(animation[i], timestamp);
179
179
  // We really need to assign this value to result, instead of passing it directly - otherwise once "finished" is false, onFrame won't be called
180
- finished &&= result;
180
+ finished = finished && result;
181
181
  animation.current[i] = animation[i].current;
182
182
  });
183
183
  return finished;
@@ -198,7 +198,7 @@ function decorateAnimation(animation) {
198
198
  for (const key in animation.current) {
199
199
  const result = animation[key].onFrame(animation[key], timestamp);
200
200
  // We really need to assign this value to result, instead of passing it directly - otherwise once "finished" is false, onFrame won't be called
201
- finished &&= result;
201
+ finished = finished && result;
202
202
  newObject[key] = animation[key].current;
203
203
  }
204
204
  animation.current = newObject;
@@ -255,19 +255,4 @@ export function cancelAnimation(sharedValue) {
255
255
  // setting the current value cancels the animation if one is currently running
256
256
  sharedValue.value = sharedValue.value; // eslint-disable-line no-self-assign
257
257
  }
258
-
259
- // TODO it should work only if there was no animation before.
260
- export function withStartValue(startValue, animation) {
261
- 'worklet';
262
-
263
- return defineAnimation(startValue, () => {
264
- 'worklet';
265
-
266
- if (!_WORKLET && typeof animation === 'function') {
267
- animation = animation();
268
- }
269
- animation.current = startValue;
270
- return animation;
271
- });
272
- }
273
258
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["isColor","convertToRGBA","rgbaArrayToRGBAColor","toGammaSpace","toLinearSpace","NativeReanimatedModule","flatten","multiplyMatrices","scaleMatrix","addMatrices","decomposeMatrixIntoMatricesAndAngles","isAffineMatrixFlat","subtractMatrices","getRotationMatrix","IN_STYLE_UPDATER","initialUpdaterRun","updater","result","recognizePrefixSuffix","value","match","Error","prefix","suffix","number","strippedValue","parseFloat","applyProgressToMatrix","progress","a","b","applyProgressToNumber","decorateAnimation","animation","isHigherOrder","baseOnStart","onStart","baseOnFrame","onFrame","animationCopy","Object","assign","callback","prefNumberSuffOnStart","timestamp","previousAnimation","__prefix","__suffix","strippedCurrent","strippedToValue","toValue","current","startValue","paPrefix","paSuffix","paStrippedValue","prefNumberSuffOnFrame","res","tab","colorOnStart","RGBAValue","RGBACurrent","RGBAToValue","forEach","i","index","undefined","push","colorOnFrame","finished","transformationMatrixOnStart","startMatrices","stopMatrices","transformationMatrixOnFrame","transforms","mappedTransforms","key","_","currentTranslation","currentScale","skewMatrix","rotations","mappedRotations","angle","rotationMatrixX","rotationMatrixY","rotationMatrixZ","rotationMatrix","updated","arrayOnStart","v","arrayOnFrame","objectOnStart","objectOnFrame","newObject","Array","isArray","IS_NATIVE","native","defineAnimation","starting","factory","create","_WORKLET","cancelAnimation","sharedValue","withStartValue"],"sources":["util.ts"],"sourcesContent":["import type {\n HigherOrderAnimation,\n NextAnimation,\n StyleLayoutAnimation,\n} from './commonTypes';\nimport type { ParsedColorArray } from '../Colors';\nimport {\n isColor,\n convertToRGBA,\n rgbaArrayToRGBAColor,\n toGammaSpace,\n toLinearSpace,\n} from '../Colors';\n\nimport type {\n AnimatedStyle,\n SharedValue,\n AnimatableValue,\n Animation,\n AnimationObject,\n Timestamp,\n AnimatableValueObject,\n} from '../commonTypes';\nimport NativeReanimatedModule from '../NativeReanimated';\nimport {\n AffineMatrixFlat,\n AffineMatrix,\n flatten,\n multiplyMatrices,\n scaleMatrix,\n addMatrices,\n decomposeMatrixIntoMatricesAndAngles,\n isAffineMatrixFlat,\n subtractMatrices,\n getRotationMatrix,\n} from './transformationMatrix/matrixUtils';\n\nlet IN_STYLE_UPDATER = false;\n\nexport type UserUpdater = () => AnimatedStyle;\n\nexport function initialUpdaterRun<T>(updater: () => T): T {\n IN_STYLE_UPDATER = true;\n const result = updater();\n IN_STYLE_UPDATER = false;\n return result;\n}\n\ninterface RecognizedPrefixSuffix {\n prefix?: string;\n suffix?: string;\n strippedValue: number;\n}\n\nfunction recognizePrefixSuffix(value: string | number): RecognizedPrefixSuffix {\n 'worklet';\n if (typeof value === 'string') {\n const match = value.match(\n /([A-Za-z]*)(-?\\d*\\.?\\d*)([eE][-+]?[0-9]+)?([A-Za-z%]*)/\n );\n if (!match) {\n throw Error(\n \"Couldn't parse animation value. Check if there isn't any typo.\"\n );\n }\n const prefix = match[1];\n const suffix = match[4];\n // number with scientific notation\n const number = match[2] + (match[3] ?? '');\n return { prefix, suffix, strippedValue: parseFloat(number) };\n } else {\n return { strippedValue: value };\n }\n}\n\nfunction applyProgressToMatrix(\n progress: number,\n a: AffineMatrix,\n b: AffineMatrix\n) {\n 'worklet';\n return addMatrices(a, scaleMatrix(subtractMatrices(b, a), progress));\n}\n\nfunction applyProgressToNumber(progress: number, a: number, b: number) {\n 'worklet';\n return a + progress * (b - a);\n}\n\nfunction decorateAnimation<T extends AnimationObject | StyleLayoutAnimation>(\n animation: T\n): void {\n 'worklet';\n if ((animation as HigherOrderAnimation).isHigherOrder) {\n return;\n }\n\n const baseOnStart = (animation as Animation<AnimationObject>).onStart;\n const baseOnFrame = (animation as Animation<AnimationObject>).onFrame;\n const animationCopy = Object.assign({}, animation);\n delete animationCopy.callback;\n\n const prefNumberSuffOnStart = (\n animation: Animation<AnimationObject>,\n value: string | number,\n timestamp: number,\n previousAnimation: Animation<AnimationObject>\n ) => {\n // recognize prefix, suffix, and updates stripped value on animation start\n const { prefix, suffix, strippedValue } = recognizePrefixSuffix(value);\n animation.__prefix = prefix;\n animation.__suffix = suffix;\n animation.strippedCurrent = strippedValue;\n const { strippedValue: strippedToValue } = recognizePrefixSuffix(\n animation.toValue as string | number\n );\n animation.current = strippedValue;\n animation.startValue = strippedValue;\n animation.toValue = strippedToValue;\n if (previousAnimation && previousAnimation !== animation) {\n const {\n prefix: paPrefix,\n suffix: paSuffix,\n strippedValue: paStrippedValue,\n } = recognizePrefixSuffix(previousAnimation.current as string | number);\n previousAnimation.current = paStrippedValue;\n previousAnimation.__prefix = paPrefix;\n previousAnimation.__suffix = paSuffix;\n }\n\n baseOnStart(animation, strippedValue, timestamp, previousAnimation);\n\n animation.current =\n (animation.__prefix ?? '') +\n animation.current +\n (animation.__suffix ?? '');\n\n if (previousAnimation && previousAnimation !== animation) {\n previousAnimation.current =\n (previousAnimation.__prefix ?? '') +\n previousAnimation.current +\n (previousAnimation.__suffix ?? '');\n }\n };\n const prefNumberSuffOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: number\n ) => {\n animation.current = animation.strippedCurrent;\n const res = baseOnFrame(animation, timestamp);\n animation.strippedCurrent = animation.current;\n animation.current =\n (animation.__prefix ?? '') +\n animation.current +\n (animation.__suffix ?? '');\n return res;\n };\n\n const tab = ['R', 'G', 'B', 'A'];\n const colorOnStart = (\n animation: Animation<AnimationObject>,\n value: string | number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n let RGBAValue: ParsedColorArray;\n let RGBACurrent: ParsedColorArray;\n let RGBAToValue: ParsedColorArray;\n const res: Array<number> = [];\n if (isColor(value)) {\n RGBACurrent = toLinearSpace(convertToRGBA(animation.current));\n RGBAValue = toLinearSpace(convertToRGBA(value));\n if (animation.toValue) {\n RGBAToValue = toLinearSpace(convertToRGBA(animation.toValue));\n }\n }\n tab.forEach((i, index) => {\n animation[i] = Object.assign({}, animationCopy);\n animation[i].current = RGBACurrent[index];\n animation[i].toValue = RGBAToValue ? RGBAToValue[index] : undefined;\n animation[i].onStart(\n animation[i],\n RGBAValue[index],\n timestamp,\n previousAnimation ? previousAnimation[i] : undefined\n );\n res.push(animation[i].current);\n });\n\n animation.current = rgbaArrayToRGBAColor(\n toGammaSpace(res as ParsedColorArray)\n );\n };\n\n const colorOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n const RGBACurrent = toLinearSpace(convertToRGBA(animation.current));\n const res: Array<number> = [];\n let finished = true;\n tab.forEach((i, index) => {\n animation[i].current = RGBACurrent[index];\n const result = animation[i].onFrame(animation[i], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished &&= result;\n res.push(animation[i].current);\n });\n\n animation.current = rgbaArrayToRGBAColor(\n toGammaSpace(res as ParsedColorArray)\n );\n return finished;\n };\n\n const transformationMatrixOnStart = (\n animation: Animation<AnimationObject>,\n value: AffineMatrixFlat,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n const toValue = animation.toValue as AffineMatrixFlat;\n\n animation.startMatrices = decomposeMatrixIntoMatricesAndAngles(value);\n animation.stopMatrices = decomposeMatrixIntoMatricesAndAngles(toValue);\n\n // We create an animation copy to animate single value between 0 and 100\n // We set limits from 0 to 100 (instead of 0-1) to make spring look good\n // with default thresholds.\n\n animation[0] = Object.assign({}, animationCopy);\n animation[0].current = 0;\n animation[0].toValue = 100;\n animation[0].onStart(\n animation[0],\n 0,\n timestamp,\n previousAnimation ? previousAnimation[0] : undefined\n );\n\n animation.current = value;\n };\n\n const transformationMatrixOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n const result = animation[0].onFrame(animation[0], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished &&= result;\n\n const progress = animation[0].current / 100;\n\n const transforms = ['translationMatrix', 'scaleMatrix', 'skewMatrix'];\n const mappedTransforms: Array<AffineMatrix> = [];\n\n transforms.forEach((key, _) =>\n mappedTransforms.push(\n applyProgressToMatrix(\n progress,\n animation.startMatrices[key],\n animation.stopMatrices[key]\n )\n )\n );\n\n const [currentTranslation, currentScale, skewMatrix] = mappedTransforms;\n\n const rotations: Array<'x' | 'y' | 'z'> = ['x', 'y', 'z'];\n const mappedRotations: Array<AffineMatrix> = [];\n\n rotations.forEach((key, _) => {\n const angle = applyProgressToNumber(\n progress,\n animation.startMatrices['r' + key],\n animation.stopMatrices['r' + key]\n );\n mappedRotations.push(getRotationMatrix(angle, key));\n });\n\n const [rotationMatrixX, rotationMatrixY, rotationMatrixZ] = mappedRotations;\n\n const rotationMatrix = multiplyMatrices(\n rotationMatrixX,\n multiplyMatrices(rotationMatrixY, rotationMatrixZ)\n );\n\n const updated = flatten(\n multiplyMatrices(\n multiplyMatrices(\n currentScale,\n multiplyMatrices(skewMatrix, rotationMatrix)\n ),\n currentTranslation\n )\n );\n\n animation.current = updated;\n\n return finished;\n };\n\n const arrayOnStart = (\n animation: Animation<AnimationObject>,\n value: Array<number>,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n value.forEach((v, i) => {\n animation[i] = Object.assign({}, animationCopy);\n animation[i].current = v;\n animation[i].toValue = (animation.toValue as Array<number>)[i];\n animation[i].onStart(\n animation[i],\n v,\n timestamp,\n previousAnimation ? previousAnimation[i] : undefined\n );\n });\n\n animation.current = value;\n };\n\n const arrayOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n (animation.current as Array<number>).forEach((_, i) => {\n const result = animation[i].onFrame(animation[i], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished &&= result;\n (animation.current as Array<number>)[i] = animation[i].current;\n });\n\n return finished;\n };\n\n const objectOnStart = (\n animation: Animation<AnimationObject>,\n value: AnimatableValueObject,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n for (const key in value) {\n animation[key] = Object.assign({}, animationCopy);\n animation[key].onStart = animation.onStart;\n\n animation[key].current = value[key];\n animation[key].toValue = (animation.toValue as AnimatableValueObject)[\n key\n ];\n animation[key].onStart(\n animation[key],\n value[key],\n timestamp,\n previousAnimation ? previousAnimation[key] : undefined\n );\n }\n animation.current = value;\n };\n\n const objectOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n const newObject: AnimatableValueObject = {};\n for (const key in animation.current as AnimatableValueObject) {\n const result = animation[key].onFrame(animation[key], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished &&= result;\n newObject[key] = animation[key].current;\n }\n animation.current = newObject;\n return finished;\n };\n\n animation.onStart = (\n animation: Animation<AnimationObject>,\n value: number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ) => {\n if (isColor(value)) {\n colorOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = colorOnFrame;\n return;\n } else if (isAffineMatrixFlat(value)) {\n transformationMatrixOnStart(\n animation,\n value,\n timestamp,\n previousAnimation\n );\n animation.onFrame = transformationMatrixOnFrame;\n return;\n } else if (Array.isArray(value)) {\n arrayOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = arrayOnFrame;\n return;\n } else if (typeof value === 'string') {\n prefNumberSuffOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = prefNumberSuffOnFrame;\n return;\n } else if (typeof value === 'object' && value !== null) {\n objectOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = objectOnFrame;\n return;\n }\n baseOnStart(animation, value, timestamp, previousAnimation);\n };\n}\n\ntype AnimationToDecoration<\n T extends AnimationObject | StyleLayoutAnimation,\n U extends AnimationObject | StyleLayoutAnimation\n> = T extends StyleLayoutAnimation\n ? Record<string, unknown>\n : U | (() => U) | AnimatableValue;\n\nconst IS_NATIVE = NativeReanimatedModule.native;\n\nexport function defineAnimation<\n T extends AnimationObject | StyleLayoutAnimation, // type that's supposed to be returned\n U extends AnimationObject | StyleLayoutAnimation = T // type that's received\n>(starting: AnimationToDecoration<T, U>, factory: () => T): T {\n 'worklet';\n if (IN_STYLE_UPDATER) {\n return starting as unknown as T;\n }\n const create = () => {\n 'worklet';\n const animation = factory();\n decorateAnimation<U>(animation as unknown as U);\n return animation;\n };\n\n if (_WORKLET || !IS_NATIVE) {\n return create();\n }\n // @ts-ignore: eslint-disable-line\n return create;\n}\n\nexport function cancelAnimation<T>(sharedValue: SharedValue<T>): void {\n 'worklet';\n // setting the current value cancels the animation if one is currently running\n sharedValue.value = sharedValue.value; // eslint-disable-line no-self-assign\n}\n\n// TODO it should work only if there was no animation before.\nexport function withStartValue(\n startValue: AnimatableValue,\n animation: NextAnimation<AnimationObject>\n): Animation<AnimationObject> {\n 'worklet';\n return defineAnimation(startValue, () => {\n 'worklet';\n if (!_WORKLET && typeof animation === 'function') {\n animation = animation();\n }\n (animation as Animation<AnimationObject>).current = startValue;\n return animation as Animation<AnimationObject>;\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["isColor","convertToRGBA","rgbaArrayToRGBAColor","toGammaSpace","toLinearSpace","NativeReanimatedModule","flatten","multiplyMatrices","scaleMatrix","addMatrices","decomposeMatrixIntoMatricesAndAngles","isAffineMatrixFlat","subtractMatrices","getRotationMatrix","IN_STYLE_UPDATER","initialUpdaterRun","updater","result","recognizePrefixSuffix","value","match","Error","prefix","suffix","number","strippedValue","parseFloat","applyProgressToMatrix","progress","a","b","applyProgressToNumber","decorateAnimation","animation","isHigherOrder","baseOnStart","onStart","baseOnFrame","onFrame","animationCopy","Object","assign","callback","prefNumberSuffOnStart","timestamp","previousAnimation","__prefix","__suffix","strippedCurrent","strippedToValue","toValue","current","startValue","paPrefix","paSuffix","paStrippedValue","prefNumberSuffOnFrame","res","tab","colorOnStart","RGBAValue","RGBACurrent","RGBAToValue","forEach","i","index","undefined","push","colorOnFrame","finished","transformationMatrixOnStart","startMatrices","stopMatrices","transformationMatrixOnFrame","transforms","mappedTransforms","key","_","currentTranslation","currentScale","skewMatrix","rotations","mappedRotations","angle","rotationMatrixX","rotationMatrixY","rotationMatrixZ","rotationMatrix","updated","arrayOnStart","v","arrayOnFrame","objectOnStart","objectOnFrame","newObject","Array","isArray","IS_NATIVE","native","defineAnimation","starting","factory","create","_WORKLET","cancelAnimation","sharedValue"],"sources":["util.ts"],"sourcesContent":["import type { HigherOrderAnimation, StyleLayoutAnimation } from './commonTypes';\nimport type { ParsedColorArray } from '../Colors';\nimport {\n isColor,\n convertToRGBA,\n rgbaArrayToRGBAColor,\n toGammaSpace,\n toLinearSpace,\n} from '../Colors';\nimport type {\n SharedValue,\n AnimatableValue,\n Animation,\n AnimationObject,\n Timestamp,\n AnimatableValueObject,\n} from '../commonTypes';\nimport NativeReanimatedModule from '../NativeReanimated';\nimport {\n AffineMatrixFlat,\n AffineMatrix,\n flatten,\n multiplyMatrices,\n scaleMatrix,\n addMatrices,\n decomposeMatrixIntoMatricesAndAngles,\n isAffineMatrixFlat,\n subtractMatrices,\n getRotationMatrix,\n} from './transformationMatrix/matrixUtils';\n\nlet IN_STYLE_UPDATER = false;\n\nexport function initialUpdaterRun<T>(updater: () => T): T {\n IN_STYLE_UPDATER = true;\n const result = updater();\n IN_STYLE_UPDATER = false;\n return result;\n}\n\ninterface RecognizedPrefixSuffix {\n prefix?: string;\n suffix?: string;\n strippedValue: number;\n}\n\nfunction recognizePrefixSuffix(value: string | number): RecognizedPrefixSuffix {\n 'worklet';\n if (typeof value === 'string') {\n const match = value.match(\n /([A-Za-z]*)(-?\\d*\\.?\\d*)([eE][-+]?[0-9]+)?([A-Za-z%]*)/\n );\n if (!match) {\n throw Error(\n \"Couldn't parse animation value. Check if there isn't any typo.\"\n );\n }\n const prefix = match[1];\n const suffix = match[4];\n // number with scientific notation\n const number = match[2] + (match[3] ?? '');\n return { prefix, suffix, strippedValue: parseFloat(number) };\n } else {\n return { strippedValue: value };\n }\n}\n\nfunction applyProgressToMatrix(\n progress: number,\n a: AffineMatrix,\n b: AffineMatrix\n) {\n 'worklet';\n return addMatrices(a, scaleMatrix(subtractMatrices(b, a), progress));\n}\n\nfunction applyProgressToNumber(progress: number, a: number, b: number) {\n 'worklet';\n return a + progress * (b - a);\n}\n\nfunction decorateAnimation<T extends AnimationObject | StyleLayoutAnimation>(\n animation: T\n): void {\n 'worklet';\n if ((animation as HigherOrderAnimation).isHigherOrder) {\n return;\n }\n\n const baseOnStart = (animation as Animation<AnimationObject>).onStart;\n const baseOnFrame = (animation as Animation<AnimationObject>).onFrame;\n const animationCopy = Object.assign({}, animation);\n delete animationCopy.callback;\n\n const prefNumberSuffOnStart = (\n animation: Animation<AnimationObject>,\n value: string | number,\n timestamp: number,\n previousAnimation: Animation<AnimationObject>\n ) => {\n // recognize prefix, suffix, and updates stripped value on animation start\n const { prefix, suffix, strippedValue } = recognizePrefixSuffix(value);\n animation.__prefix = prefix;\n animation.__suffix = suffix;\n animation.strippedCurrent = strippedValue;\n const { strippedValue: strippedToValue } = recognizePrefixSuffix(\n animation.toValue as string | number\n );\n animation.current = strippedValue;\n animation.startValue = strippedValue;\n animation.toValue = strippedToValue;\n if (previousAnimation && previousAnimation !== animation) {\n const {\n prefix: paPrefix,\n suffix: paSuffix,\n strippedValue: paStrippedValue,\n } = recognizePrefixSuffix(previousAnimation.current as string | number);\n previousAnimation.current = paStrippedValue;\n previousAnimation.__prefix = paPrefix;\n previousAnimation.__suffix = paSuffix;\n }\n\n baseOnStart(animation, strippedValue, timestamp, previousAnimation);\n\n animation.current =\n (animation.__prefix ?? '') +\n animation.current +\n (animation.__suffix ?? '');\n\n if (previousAnimation && previousAnimation !== animation) {\n previousAnimation.current =\n (previousAnimation.__prefix ?? '') +\n previousAnimation.current +\n (previousAnimation.__suffix ?? '');\n }\n };\n const prefNumberSuffOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: number\n ) => {\n animation.current = animation.strippedCurrent;\n const res = baseOnFrame(animation, timestamp);\n animation.strippedCurrent = animation.current;\n animation.current =\n (animation.__prefix ?? '') +\n animation.current +\n (animation.__suffix ?? '');\n return res;\n };\n\n const tab = ['R', 'G', 'B', 'A'];\n const colorOnStart = (\n animation: Animation<AnimationObject>,\n value: string | number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n let RGBAValue: ParsedColorArray;\n let RGBACurrent: ParsedColorArray;\n let RGBAToValue: ParsedColorArray;\n const res: Array<number> = [];\n if (isColor(value)) {\n RGBACurrent = toLinearSpace(convertToRGBA(animation.current));\n RGBAValue = toLinearSpace(convertToRGBA(value));\n if (animation.toValue) {\n RGBAToValue = toLinearSpace(convertToRGBA(animation.toValue));\n }\n }\n tab.forEach((i, index) => {\n animation[i] = Object.assign({}, animationCopy);\n animation[i].current = RGBACurrent[index];\n animation[i].toValue = RGBAToValue ? RGBAToValue[index] : undefined;\n animation[i].onStart(\n animation[i],\n RGBAValue[index],\n timestamp,\n previousAnimation ? previousAnimation[i] : undefined\n );\n res.push(animation[i].current);\n });\n\n animation.current = rgbaArrayToRGBAColor(\n toGammaSpace(res as ParsedColorArray)\n );\n };\n\n const colorOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n const RGBACurrent = toLinearSpace(convertToRGBA(animation.current));\n const res: Array<number> = [];\n let finished = true;\n tab.forEach((i, index) => {\n animation[i].current = RGBACurrent[index];\n const result = animation[i].onFrame(animation[i], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished = finished && result;\n res.push(animation[i].current);\n });\n\n animation.current = rgbaArrayToRGBAColor(\n toGammaSpace(res as ParsedColorArray)\n );\n return finished;\n };\n\n const transformationMatrixOnStart = (\n animation: Animation<AnimationObject>,\n value: AffineMatrixFlat,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n const toValue = animation.toValue as AffineMatrixFlat;\n\n animation.startMatrices = decomposeMatrixIntoMatricesAndAngles(value);\n animation.stopMatrices = decomposeMatrixIntoMatricesAndAngles(toValue);\n\n // We create an animation copy to animate single value between 0 and 100\n // We set limits from 0 to 100 (instead of 0-1) to make spring look good\n // with default thresholds.\n\n animation[0] = Object.assign({}, animationCopy);\n animation[0].current = 0;\n animation[0].toValue = 100;\n animation[0].onStart(\n animation[0],\n 0,\n timestamp,\n previousAnimation ? previousAnimation[0] : undefined\n );\n\n animation.current = value;\n };\n\n const transformationMatrixOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n const result = animation[0].onFrame(animation[0], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished = finished && result;\n\n const progress = animation[0].current / 100;\n\n const transforms = ['translationMatrix', 'scaleMatrix', 'skewMatrix'];\n const mappedTransforms: Array<AffineMatrix> = [];\n\n transforms.forEach((key, _) =>\n mappedTransforms.push(\n applyProgressToMatrix(\n progress,\n animation.startMatrices[key],\n animation.stopMatrices[key]\n )\n )\n );\n\n const [currentTranslation, currentScale, skewMatrix] = mappedTransforms;\n\n const rotations: Array<'x' | 'y' | 'z'> = ['x', 'y', 'z'];\n const mappedRotations: Array<AffineMatrix> = [];\n\n rotations.forEach((key, _) => {\n const angle = applyProgressToNumber(\n progress,\n animation.startMatrices['r' + key],\n animation.stopMatrices['r' + key]\n );\n mappedRotations.push(getRotationMatrix(angle, key));\n });\n\n const [rotationMatrixX, rotationMatrixY, rotationMatrixZ] = mappedRotations;\n\n const rotationMatrix = multiplyMatrices(\n rotationMatrixX,\n multiplyMatrices(rotationMatrixY, rotationMatrixZ)\n );\n\n const updated = flatten(\n multiplyMatrices(\n multiplyMatrices(\n currentScale,\n multiplyMatrices(skewMatrix, rotationMatrix)\n ),\n currentTranslation\n )\n );\n\n animation.current = updated;\n\n return finished;\n };\n\n const arrayOnStart = (\n animation: Animation<AnimationObject>,\n value: Array<number>,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n value.forEach((v, i) => {\n animation[i] = Object.assign({}, animationCopy);\n animation[i].current = v;\n animation[i].toValue = (animation.toValue as Array<number>)[i];\n animation[i].onStart(\n animation[i],\n v,\n timestamp,\n previousAnimation ? previousAnimation[i] : undefined\n );\n });\n\n animation.current = value;\n };\n\n const arrayOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n (animation.current as Array<number>).forEach((_, i) => {\n const result = animation[i].onFrame(animation[i], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished = finished && result;\n (animation.current as Array<number>)[i] = animation[i].current;\n });\n\n return finished;\n };\n\n const objectOnStart = (\n animation: Animation<AnimationObject>,\n value: AnimatableValueObject,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ): void => {\n for (const key in value) {\n animation[key] = Object.assign({}, animationCopy);\n animation[key].onStart = animation.onStart;\n\n animation[key].current = value[key];\n animation[key].toValue = (animation.toValue as AnimatableValueObject)[\n key\n ];\n animation[key].onStart(\n animation[key],\n value[key],\n timestamp,\n previousAnimation ? previousAnimation[key] : undefined\n );\n }\n animation.current = value;\n };\n\n const objectOnFrame = (\n animation: Animation<AnimationObject>,\n timestamp: Timestamp\n ): boolean => {\n let finished = true;\n const newObject: AnimatableValueObject = {};\n for (const key in animation.current as AnimatableValueObject) {\n const result = animation[key].onFrame(animation[key], timestamp);\n // We really need to assign this value to result, instead of passing it directly - otherwise once \"finished\" is false, onFrame won't be called\n finished = finished && result;\n newObject[key] = animation[key].current;\n }\n animation.current = newObject;\n return finished;\n };\n\n animation.onStart = (\n animation: Animation<AnimationObject>,\n value: number,\n timestamp: Timestamp,\n previousAnimation: Animation<AnimationObject>\n ) => {\n if (isColor(value)) {\n colorOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = colorOnFrame;\n return;\n } else if (isAffineMatrixFlat(value)) {\n transformationMatrixOnStart(\n animation,\n value,\n timestamp,\n previousAnimation\n );\n animation.onFrame = transformationMatrixOnFrame;\n return;\n } else if (Array.isArray(value)) {\n arrayOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = arrayOnFrame;\n return;\n } else if (typeof value === 'string') {\n prefNumberSuffOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = prefNumberSuffOnFrame;\n return;\n } else if (typeof value === 'object' && value !== null) {\n objectOnStart(animation, value, timestamp, previousAnimation);\n animation.onFrame = objectOnFrame;\n return;\n }\n baseOnStart(animation, value, timestamp, previousAnimation);\n };\n}\n\ntype AnimationToDecoration<\n T extends AnimationObject | StyleLayoutAnimation,\n U extends AnimationObject | StyleLayoutAnimation\n> = T extends StyleLayoutAnimation\n ? Record<string, unknown>\n : U | (() => U) | AnimatableValue;\n\nconst IS_NATIVE = NativeReanimatedModule.native;\n\nexport function defineAnimation<\n T extends AnimationObject | StyleLayoutAnimation, // type that's supposed to be returned\n U extends AnimationObject | StyleLayoutAnimation = T // type that's received\n>(starting: AnimationToDecoration<T, U>, factory: () => T): T {\n 'worklet';\n if (IN_STYLE_UPDATER) {\n return starting as unknown as T;\n }\n const create = () => {\n 'worklet';\n const animation = factory();\n decorateAnimation<U>(animation as unknown as U);\n return animation;\n };\n\n if (_WORKLET || !IS_NATIVE) {\n return create();\n }\n // @ts-ignore: eslint-disable-line\n return create;\n}\n\nexport function cancelAnimation<T>(sharedValue: SharedValue<T>): void {\n 'worklet';\n // setting the current value cancels the animation if one is currently running\n sharedValue.value = sharedValue.value; // eslint-disable-line no-self-assign\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["SensorType","IOSReferenceFrame","InterfaceOrientation","KeyboardState"],"sources":["commonTypes.ts"],"sourcesContent":["import type {\n PerpectiveTransform,\n RotateTransform,\n RotateXTransform,\n RotateYTransform,\n RotateZTransform,\n ScaleTransform,\n ScaleXTransform,\n ScaleYTransform,\n TranslateXTransform,\n TranslateYTransform,\n SkewXTransform,\n SkewYTransform,\n MatrixTransform,\n ViewStyle,\n TextStyle,\n} from 'react-native';\n\nexport type TransformProperty =\n | PerpectiveTransform\n | RotateTransform\n | RotateXTransform\n | RotateYTransform\n | RotateZTransform\n | ScaleTransform\n | ScaleXTransform\n | ScaleYTransform\n | TranslateXTransform\n | TranslateYTransform\n | SkewXTransform\n | SkewYTransform\n | MatrixTransform;\n\nexport interface StyleProps extends ViewStyle, TextStyle {\n originX?: number;\n originY?: number;\n [key: string]: any;\n}\n\nexport interface AnimatedStyle extends Record<string, AnimationObject> {\n [key: string]: any;\n transform?: Array<\n | Record<'matrix', number[] | AnimationObject>\n | Partial<\n Record<\n | 'perspective'\n | 'scale'\n | 'scaleX'\n | 'scaleY'\n | 'translateX'\n | 'translateY',\n number | AnimationObject\n >\n >\n | Partial<\n Record<\n 'rotate' | 'rotateX' | 'rotateY' | 'rotateZ' | 'skewX' | 'skewY',\n string | AnimationObject\n >\n >\n | Record<string, AnimationObject>\n >;\n}\n\nexport interface SharedValue<T> {\n value: T;\n addListener: (listenerID: number, listener: (value: T) => void) => void;\n removeListener: (listenerID: number) => void;\n modify: (modifier: (value: T) => T) => void;\n}\n\n// The below type is used for HostObjects returned by the JSI API that don't have\n// any accessible fields or methods but can carry data that is accessed from the\n// c++ side. We add a field to the type to make it possible for typescript to recognize\n// which JSI methods accept those types as arguments and to be able to correctly type\n// check other methods that may use them. However, this field is not actually defined\n// nor should be used for anything else as assigning any data to those objects will\n// throw an error.\nexport type ShareableRef<T> = {\n __hostObjectShareableJSRef: T;\n};\n\nexport type ShareableSyncDataHolderRef<T> = {\n __hostObjectShareableJSRefSyncDataHolder: T;\n};\n\nexport type MapperRegistry = {\n start: (\n mapperID: number,\n worklet: () => void,\n inputs: SharedValue<any>[],\n outputs?: SharedValue<any>[]\n ) => void;\n stop: (mapperID: number) => void;\n};\n\nexport type Context = Record<string, unknown>;\n\nexport interface WorkletFunction {\n _closure?: Context;\n __workletHash?: number;\n}\n\nexport interface BasicWorkletFunction<T> extends WorkletFunction {\n (): T;\n}\n\nexport interface BasicWorkletFunctionOptional<T> extends WorkletFunction {\n (): Partial<T>;\n}\n\nexport interface NativeEvent<T> {\n nativeEvent: T;\n}\nexport interface ComplexWorkletFunction<A extends any[], R>\n extends WorkletFunction {\n (...args: A): R;\n __remoteFunction?: (...args: A) => R;\n}\n\nexport interface NestedObject<T> {\n [key: string]: NestedObjectValues<T>;\n}\n\nexport type NestedObjectValues<T> =\n | T\n | Array<NestedObjectValues<T>>\n | NestedObject<T>;\n\nexport interface AdapterWorkletFunction extends WorkletFunction {\n (value: NestedObject<string | number | AnimationObject>): void;\n}\n\ntype Animatable = number | string | Array<number>;\n\nexport type AnimatableValueObject = { [key: string]: Animatable };\n\nexport type AnimatableValue = Animatable | AnimatableValueObject;\n\nexport interface AnimationObject {\n [key: string]: any;\n callback?: AnimationCallback;\n current?: AnimatableValue;\n toValue?: AnimationObject['current'];\n startValue?: AnimationObject['current'];\n finished?: boolean;\n strippedCurrent?: number;\n cancelled?: boolean;\n\n __prefix?: string;\n __suffix?: string;\n onFrame: (animation: any, timestamp: Timestamp) => boolean;\n onStart: (\n nextAnimation: any,\n current: any,\n timestamp: Timestamp,\n previousAnimation: any\n ) => void;\n}\n\nexport interface Animation<T extends AnimationObject> extends AnimationObject {\n onFrame: (animation: T, timestamp: Timestamp) => boolean;\n onStart: (\n nextAnimation: T,\n current: AnimatableValue,\n timestamp: Timestamp,\n previousAnimation: Animation<any> | null | T\n ) => void;\n}\n\nexport enum SensorType {\n ACCELEROMETER = 1,\n GYROSCOPE = 2,\n GRAVITY = 3,\n MAGNETIC_FIELD = 4,\n ROTATION = 5,\n}\nexport enum IOSReferenceFrame {\n XArbitraryZVertical,\n XArbitraryCorrectedZVertical,\n XMagneticNorthZVertical,\n XTrueNorthZVertical,\n Auto,\n}\n\nexport type SensorConfig = {\n interval: number | 'auto';\n adjustToInterfaceOrientation: boolean;\n iosReferenceFrame: IOSReferenceFrame;\n};\n\nexport type AnimatedSensor<T extends Value3D | ValueRotation> = {\n sensor: SharedValue<T>;\n unregister: () => void;\n isAvailable: boolean;\n config: SensorConfig;\n};\n\nexport interface NumericAnimation {\n current?: number;\n}\n\nexport type AnimationCallback = (\n finished?: boolean,\n current?: AnimatableValue\n) => void;\n\nexport type Timestamp = number;\n\nexport type Value3D = {\n x: number;\n y: number;\n z: number;\n interfaceOrientation: InterfaceOrientation;\n};\n\nexport type ValueRotation = {\n qw: number;\n qx: number;\n qy: number;\n qz: number;\n yaw: number;\n pitch: number;\n roll: number;\n interfaceOrientation: InterfaceOrientation;\n};\n\nexport enum InterfaceOrientation {\n ROTATION_0 = 0,\n ROTATION_90 = 90,\n ROTATION_180 = 180,\n ROTATION_270 = 270,\n}\n\nexport type ShadowNodeWrapper = object;\n\nexport enum KeyboardState {\n UNKNOWN = 0,\n OPENING = 1,\n OPEN = 2,\n CLOSING = 3,\n CLOSED = 4,\n}\n\nexport type AnimatedKeyboardInfo = {\n height: SharedValue<number>;\n state: SharedValue<KeyboardState>;\n};\n\nexport interface MeasuredDimensions {\n x: number;\n y: number;\n width: number;\n height: number;\n pageX: number;\n pageY: number;\n}\n\nexport interface AnimatedKeyboardOptions {\n isStatusBarTranslucentAndroid?: boolean;\n}\n"],"mappings":"AAuEA;AACA;AACA;AACA;AACA;AACA;AACA;AA6FA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAOtB,WAAYC,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAkD7B,WAAYC,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAShC,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA"}
1
+ {"version":3,"names":["SensorType","IOSReferenceFrame","InterfaceOrientation","KeyboardState"],"sources":["commonTypes.ts"],"sourcesContent":["import type {\n PerpectiveTransform,\n RotateTransform,\n RotateXTransform,\n RotateYTransform,\n RotateZTransform,\n ScaleTransform,\n ScaleXTransform,\n ScaleYTransform,\n TranslateXTransform,\n TranslateYTransform,\n SkewXTransform,\n SkewYTransform,\n MatrixTransform,\n ViewStyle,\n TextStyle,\n} from 'react-native';\n\nexport type TransformProperty =\n | PerpectiveTransform\n | RotateTransform\n | RotateXTransform\n | RotateYTransform\n | RotateZTransform\n | ScaleTransform\n | ScaleXTransform\n | ScaleYTransform\n | TranslateXTransform\n | TranslateYTransform\n | SkewXTransform\n | SkewYTransform\n | MatrixTransform;\n\nexport interface StyleProps extends ViewStyle, TextStyle {\n originX?: number;\n originY?: number;\n [key: string]: any;\n}\n\nexport interface SharedValue<T> {\n value: T;\n addListener: (listenerID: number, listener: (value: T) => void) => void;\n removeListener: (listenerID: number) => void;\n modify: (modifier: (value: T) => T) => void;\n}\n\n// The below type is used for HostObjects returned by the JSI API that don't have\n// any accessible fields or methods but can carry data that is accessed from the\n// c++ side. We add a field to the type to make it possible for typescript to recognize\n// which JSI methods accept those types as arguments and to be able to correctly type\n// check other methods that may use them. However, this field is not actually defined\n// nor should be used for anything else as assigning any data to those objects will\n// throw an error.\nexport type ShareableRef<T> = {\n __hostObjectShareableJSRef: T;\n};\n\nexport type ShareableSyncDataHolderRef<T> = {\n __hostObjectShareableJSRefSyncDataHolder: T;\n};\n\nexport type MapperRegistry = {\n start: (\n mapperID: number,\n worklet: () => void,\n inputs: SharedValue<any>[],\n outputs?: SharedValue<any>[]\n ) => void;\n stop: (mapperID: number) => void;\n};\n\nexport type Context = Record<string, unknown>;\n\nexport interface WorkletFunction {\n _closure?: Context;\n __workletHash?: number;\n}\n\nexport interface BasicWorkletFunction<T> extends WorkletFunction {\n (): T;\n}\n\nexport interface BasicWorkletFunctionOptional<T> extends WorkletFunction {\n (): Partial<T>;\n}\n\nexport interface NativeEvent<T> {\n nativeEvent: T;\n}\nexport interface ComplexWorkletFunction<A extends any[], R>\n extends WorkletFunction {\n (...args: A): R;\n __remoteFunction?: (...args: A) => R;\n}\n\nexport interface NestedObject<T> {\n [key: string]: NestedObjectValues<T>;\n}\n\nexport type NestedObjectValues<T> =\n | T\n | Array<NestedObjectValues<T>>\n | NestedObject<T>;\n\nexport interface AdapterWorkletFunction extends WorkletFunction {\n (value: NestedObject<string | number | AnimationObject>): void;\n}\n\ntype Animatable = number | string | Array<number>;\n\nexport type AnimatableValueObject = { [key: string]: Animatable };\n\nexport type AnimatableValue = Animatable | AnimatableValueObject;\n\nexport interface AnimationObject {\n [key: string]: any;\n callback?: AnimationCallback;\n current?: AnimatableValue;\n toValue?: AnimationObject['current'];\n startValue?: AnimationObject['current'];\n finished?: boolean;\n strippedCurrent?: number;\n cancelled?: boolean;\n\n __prefix?: string;\n __suffix?: string;\n onFrame: (animation: any, timestamp: Timestamp) => boolean;\n onStart: (\n nextAnimation: any,\n current: any,\n timestamp: Timestamp,\n previousAnimation: any\n ) => void;\n}\n\nexport interface Animation<T extends AnimationObject> extends AnimationObject {\n onFrame: (animation: T, timestamp: Timestamp) => boolean;\n onStart: (\n nextAnimation: T,\n current: AnimatableValue,\n timestamp: Timestamp,\n previousAnimation: Animation<any> | null | T\n ) => void;\n}\n\nexport enum SensorType {\n ACCELEROMETER = 1,\n GYROSCOPE = 2,\n GRAVITY = 3,\n MAGNETIC_FIELD = 4,\n ROTATION = 5,\n}\nexport enum IOSReferenceFrame {\n XArbitraryZVertical,\n XArbitraryCorrectedZVertical,\n XMagneticNorthZVertical,\n XTrueNorthZVertical,\n Auto,\n}\n\nexport type SensorConfig = {\n interval: number | 'auto';\n adjustToInterfaceOrientation: boolean;\n iosReferenceFrame: IOSReferenceFrame;\n};\n\nexport type AnimatedSensor<T extends Value3D | ValueRotation> = {\n sensor: SharedValue<T>;\n unregister: () => void;\n isAvailable: boolean;\n config: SensorConfig;\n};\n\nexport interface NumericAnimation {\n current?: number;\n}\n\nexport type AnimationCallback = (\n finished?: boolean,\n current?: AnimatableValue\n) => void;\n\nexport type Timestamp = number;\n\nexport type Value3D = {\n x: number;\n y: number;\n z: number;\n interfaceOrientation: InterfaceOrientation;\n};\n\nexport type ValueRotation = {\n qw: number;\n qx: number;\n qy: number;\n qz: number;\n yaw: number;\n pitch: number;\n roll: number;\n interfaceOrientation: InterfaceOrientation;\n};\n\nexport enum InterfaceOrientation {\n ROTATION_0 = 0,\n ROTATION_90 = 90,\n ROTATION_180 = 180,\n ROTATION_270 = 270,\n}\n\nexport type ShadowNodeWrapper = object;\n\nexport enum KeyboardState {\n UNKNOWN = 0,\n OPENING = 1,\n OPEN = 2,\n CLOSING = 3,\n CLOSED = 4,\n}\n\nexport type AnimatedKeyboardInfo = {\n height: SharedValue<number>;\n state: SharedValue<KeyboardState>;\n};\n\nexport interface MeasuredDimensions {\n x: number;\n y: number;\n width: number;\n height: number;\n pageX: number;\n pageY: number;\n}\n\nexport interface AnimatedKeyboardOptions {\n isStatusBarTranslucentAndroid?: boolean;\n}\n"],"mappings":"AA8CA;AACA;AACA;AACA;AACA;AACA;AACA;AA6FA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAOtB,WAAYC,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAkD7B,WAAYC,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAApBA,oBAAoB,CAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAShC,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA"}