@tamagui/animations-css 2.7.7 → 3.0.0-beta.643.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"names":["normalizeTransition","getAnimatedProperties","hasAnimation","hasNormalizedAnimation","getEffectiveAnimation","getAnimationConfigsForKeys","useIsomorphicLayoutEffect","ResetPresence","usePresence","transformsToString","React","_type_of","obj","Symbol","constructor","EXTRACT_MS_REGEX","EXTRACT_S_REGEX","extractDuration","animation","msMatch","match","Number","parseInt","sMatch","Math","round","parseFloat","MS_DURATION_REGEX","S_DURATION_REGEX","applyDurationOverride","durationMs","msReplaced","replace","sReplaced","TRANSFORM_KEYS","buildTransformString","style","parts","x","y","_style_x","_style_y","push","scale","scaleX","scaleY","rotate","val","unit","includes","rotateX","rotateY","rotateZ","skewX","skewY","join","applyStylesToNode","node","transformStr","transform","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","iterator","_step","next","done","key","value","opacity","String","backgroundColor","color","err","return","createAnimations","animations","reactionListeners","WeakMap","inputStyle","outputStyle","useAnimatedNumber","initial","setVal","useState","finishTimerRef","useRef","getInstance","getValue","setValue","config","onFinish","current","clearTimeout","type","duration","setTimeout","listeners","get","forEach","listener","stop","useAnimatedNumberReaction","param","onValue","useEffect","instance","queue","Set","set","add","delete","useAnimatedNumberStyle","getStyle","useAnimatedNumbersStyle","vals","map","v","useAnimations","props","presence","componentState","stateRef","styleState","_normalized_config","isHydrating","unmounted","isEntering","isExiting","sendExitComplete","wasEnteringRef","justFinishedEntering","exitCycleIdRef","exitCompletedRef","wasExitingRef","exitInterruptedRef","sendExitCompleteRef","lastNonExitingStyleRef","justStartedExiting","justStoppedExiting","host","computedStyle","getComputedStyle","_styleState_effectiveTransition","effectiveTransition","transition","normalized","animationState","effectiveAnimationKey","defaultAnimation","animatedProperties","hasDefault","default","enter","exit","hasPerPropertyConfigs","length","keys","animateOnly","_normalized_config2","cycleId","completeExit","_sendExitCompleteRef_current","call","rafId","wasInterrupted","ignoreCancelEvents","enterStyle","exitStyle","delayStr2","delay","durationOverride2","exitTransitionString","key2","propAnimation","properties","animationValue2","filter","Boolean","getResetValue","_style_opacity","_ref","_ref1","resetStyle","resetValue","offsetHeight","resetStyle1","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","_step1","key1","resetValue1","requestAnimationFrame","maxDuration","animationConfigs","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","values","_step2","animationValue","_normalized_delay","fallbackTimeout","timeoutId","transitioningProps","completedCount","onFinishAnimation","event","target","eventProp","propertyName"],"sources":["../../src/createAnimations.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"createAnimations.native.js","names":["hasNormalizedAnimation"],"sources":["esm/createAnimations.native.js"],"sourcesContent":["import { normalizeTransition, getAnimatedProperties, hasAnimation as hasNormalizedAnimation, getEffectiveAnimation } from \"@tamagui/animation-helpers\";\nimport { useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { ResetPresence, usePresence } from \"@tamagui/use-presence\";\nimport { transformsToString } from \"@tamagui/web\";\nimport React from \"react\";\nimport { useAnimatedNumber, useAnimatedNumberReaction, useAnimatedNumberStyle, useAnimatedNumbersStyle } from \"./animated-number\";\nvar hasRAF = typeof requestAnimationFrame !== \"undefined\";\nfunction waitForAnimations(node) {\n if (typeof node.getAnimations !== \"function\") {\n return Promise.resolve(true);\n }\n return new Promise(function(resolve) {\n var check = function() {\n var animations = node.getAnimations();\n if (animations.length === 0) {\n resolve(true);\n return;\n }\n Promise.all(animations.map(function(a) {\n return a.finished;\n })).then(function() {\n return resolve(true);\n }).catch(function() {\n var remaining = node.getAnimations();\n if (remaining.some(function(a) {\n return a.playState === \"running\" || a.pending;\n })) {\n check();\n return;\n }\n resolve(false);\n });\n };\n if (hasRAF) {\n requestAnimationFrame(check);\n } else {\n check();\n }\n });\n}\nvar DURATION_REGEX = /(\\d+(?:\\.\\d+)?)\\s*(?:ms|s(?!tiffness))/;\nfunction applyDurationOverride(animation, durationMs) {\n var replaced = animation.replace(DURATION_REGEX, `${durationMs}ms`);\n return replaced === animation ? `${durationMs}ms ${animation}` : replaced;\n}\nvar CSS_TRANSFORM_PROPERTIES = {\n transform: [\n \"translate\",\n \"scale\",\n \"rotate\",\n \"transform\"\n ],\n x: [\n \"translate\"\n ],\n y: [\n \"translate\"\n ],\n scale: [\n \"scale\"\n ],\n scaleX: [\n \"scale\"\n ],\n scaleY: [\n \"scale\"\n ],\n rotate: [\n \"rotate\"\n ],\n rotateX: [\n \"transform\"\n ],\n rotateY: [\n \"transform\"\n ],\n rotateZ: [\n \"transform\"\n ],\n skewX: [\n \"transform\"\n ],\n skewY: [\n \"transform\"\n ]\n};\nvar getCSSProperties = function(key) {\n return CSS_TRANSFORM_PROPERTIES[key] || [\n key\n ];\n};\nvar hyphenatedPropertyCache = {};\nvar emptyProperties = [];\nfunction hyphenateProperty(property) {\n var _hyphenatedPropertyCache, _property;\n if (property.startsWith(\"--\")) return property;\n return (_hyphenatedPropertyCache = hyphenatedPropertyCache)[_property = property] || (_hyphenatedPropertyCache[_property] = property.replace(/[A-Z]/g, function(letter) {\n return `-${letter.toLowerCase()}`;\n }));\n}\nfunction getLifecycleCSSProperties(keys) {\n if (!(keys === null || keys === void 0 ? void 0 : keys.size)) return emptyProperties;\n var properties = /* @__PURE__ */ new Set();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = keys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = getCSSProperties(key)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var property = _step1.value;\n properties.add(hyphenateProperty(property));\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return [\n ...properties\n ].sort();\n}\nfunction readComputedProperties(node, properties) {\n var computed = getComputedStyle(node);\n var values = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = properties[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var property = _step.value;\n var value = computed.getPropertyValue(property);\n if (value) values[property] = value;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return values;\n}\nfunction applyCSSProperties(node, values) {\n for (var property in values) {\n node.style.setProperty(property, values[property]);\n }\n}\nfunction clearCSSProperties(node, properties) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = properties[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var property = _step.value;\n node.style.removeProperty(property);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\nfunction createAnimations(animations) {\n return {\n animations,\n usePresence,\n ResetPresence,\n inputStyle: \"css\",\n outputStyle: \"css\",\n useAnimatedNumber,\n useAnimatedNumberReaction,\n useAnimatedNumberStyle,\n useAnimatedNumbersStyle,\n // @ts-ignore - styleState is added by createComponent\n useAnimations: function(param) {\n var { props, presence, style, componentState, stateRef, styleState, onTransition } = param;\n var _styleState_programLifecycleStyleKeys;\n var isHydrating = componentState.unmounted === true;\n var isEntering = !!componentState.unmounted;\n var isExiting = (presence === null || presence === void 0 ? void 0 : presence[0]) === false;\n var sendExitComplete = presence === null || presence === void 0 ? void 0 : presence[1];\n var onTransitionRef = React.useRef(onTransition);\n onTransitionRef.current = onTransition;\n var emit = function(phase, cause, finished) {\n var _onTransitionRef_current;\n (_onTransitionRef_current = onTransitionRef.current) === null || _onTransitionRef_current === void 0 ? void 0 : _onTransitionRef_current.call(onTransitionRef, phase === \"end\" ? {\n phase,\n cause,\n finished\n } : {\n phase,\n cause\n });\n };\n var wasEnteringRef = React.useRef(isEntering);\n var justFinishedEntering = wasEnteringRef.current && !isEntering;\n React.useEffect(function() {\n wasEnteringRef.current = isEntering;\n });\n var exitCycleIdRef = React.useRef(0);\n var exitCompletedRef = React.useRef(false);\n var wasExitingRef = React.useRef(false);\n var sendExitCompleteRef = React.useRef(sendExitComplete);\n var lastMountedStyleRef = React.useRef({});\n sendExitCompleteRef.current = sendExitComplete;\n var exitCSSProperties = getLifecycleCSSProperties(styleState === null || styleState === void 0 ? void 0 : (_styleState_programLifecycleStyleKeys = styleState.programLifecycleStyleKeys) === null || _styleState_programLifecycleStyleKeys === void 0 ? void 0 : _styleState_programLifecycleStyleKeys.exit);\n var exitCSSPropertiesSignature = exitCSSProperties.join(\"\\0\");\n var enterCycleIdRef = React.useRef(0);\n var enterStartedRef = React.useRef(false);\n var updateCycleIdRef = React.useRef(0);\n var updateInFlightRef = React.useRef(false);\n var prevUpdateSigRef = React.useRef(null);\n var exitStartedRef = React.useRef(false);\n var justStartedExiting = isExiting && !wasExitingRef.current;\n var justStoppedExiting = !isExiting && wasExitingRef.current;\n if (justStartedExiting) {\n exitCycleIdRef.current++;\n exitCompletedRef.current = false;\n }\n if (justStoppedExiting) {\n exitCycleIdRef.current++;\n }\n React.useEffect(function() {\n wasExitingRef.current = isExiting;\n });\n useIsomorphicLayoutEffect(function() {\n if (isExiting) return;\n var host = stateRef.current.host;\n if (!host || !exitCSSProperties.length) {\n lastMountedStyleRef.current = {};\n return;\n }\n var node = host;\n var capture = function() {\n if (stateRef.current.host !== node || wasExitingRef.current) return;\n lastMountedStyleRef.current = readComputedProperties(node, exitCSSProperties);\n };\n if (justFinishedEntering) {\n void waitForAnimations(node).then(capture);\n } else {\n capture();\n }\n }, [\n isExiting,\n justFinishedEntering,\n exitCSSPropertiesSignature\n ]);\n var _styleState_effectiveTransition;\n var effectiveTransition = (_styleState_effectiveTransition = styleState === null || styleState === void 0 ? void 0 : styleState.effectiveTransition) !== null && _styleState_effectiveTransition !== void 0 ? _styleState_effectiveTransition : props.transition;\n var normalized = normalizeTransition(effectiveTransition);\n var animationState = isExiting ? \"exit\" : isEntering || justFinishedEntering ? \"enter\" : \"default\";\n var effectiveAnimationKey = getEffectiveAnimation(normalized, animationState);\n var defaultAnimation = effectiveAnimationKey ? animations[effectiveAnimationKey] : null;\n var animatedProperties = getAnimatedProperties(normalized);\n var hasDefault = normalized.default !== null || normalized.enter !== null || normalized.exit !== null;\n var hasPerPropertyConfigs = animatedProperties.length > 0;\n var keys;\n if (props.animateOnly) {\n keys = props.animateOnly;\n } else if (hasPerPropertyConfigs && !hasDefault) {\n keys = animatedProperties;\n } else if (hasPerPropertyConfigs && hasDefault) {\n keys = [\n \"all\",\n ...animatedProperties\n ];\n } else {\n keys = [\n \"all\"\n ];\n }\n var transition;\n var getTransition = function() {\n var _normalized_config;\n if (transition !== void 0) return transition;\n var delay = normalized.delay ? ` ${normalized.delay}ms` : \"\";\n var duration = (_normalized_config = normalized.config) === null || _normalized_config === void 0 ? void 0 : _normalized_config.duration;\n transition = keys.flatMap(function(key) {\n var propertyAnimation = normalized.properties[key];\n var animation = defaultAnimation;\n if (typeof propertyAnimation === \"string\") {\n animation = animations[propertyAnimation];\n } else if (propertyAnimation === null || propertyAnimation === void 0 ? void 0 : propertyAnimation.type) {\n animation = animations[propertyAnimation.type];\n }\n if (animation && duration) {\n animation = applyDurationOverride(animation, duration);\n }\n return animation ? getCSSProperties(key).map(function(property) {\n return `${property} ${animation}${delay}`;\n }) : [];\n }).join(\", \");\n return transition;\n };\n useIsomorphicLayoutEffect(function() {\n var host = stateRef.current.host;\n if (!sendExitComplete || !isExiting || !host) return;\n var node = host;\n var cycleId = exitCycleIdRef.current;\n if (!exitStartedRef.current) {\n exitStartedRef.current = true;\n emit(\"start\", \"exit\");\n }\n var completeExit = function() {\n var finished = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;\n var _sendExitCompleteRef_current;\n if (cycleId !== exitCycleIdRef.current) return;\n if (exitCompletedRef.current) return;\n exitCompletedRef.current = true;\n if (exitStartedRef.current) {\n exitStartedRef.current = false;\n emit(\"end\", \"exit\", finished);\n }\n (_sendExitCompleteRef_current = sendExitCompleteRef.current) === null || _sendExitCompleteRef_current === void 0 ? void 0 : _sendExitCompleteRef_current.call(sendExitCompleteRef);\n };\n if (keys.length === 0) {\n completeExit();\n return;\n }\n var rafId;\n var disposed = false;\n var mountedStyle = lastMountedStyleRef.current;\n var canRestart = exitCSSProperties.length > 0 && Object.keys(mountedStyle).length > 0;\n var exitTarget;\n if (canRestart) {\n node.style.transition = \"none\";\n exitTarget = readComputedProperties(node, exitCSSProperties);\n applyCSSProperties(node, mountedStyle);\n void node.offsetHeight;\n rafId = requestAnimationFrame(function() {\n if (cycleId !== exitCycleIdRef.current) return;\n node.style.transition = getTransition();\n void node.offsetHeight;\n applyCSSProperties(node, exitTarget);\n });\n }\n void waitForAnimations(node).then(function(finished) {\n if (!disposed) completeExit(finished);\n });\n return function() {\n disposed = true;\n if (rafId !== void 0) cancelAnimationFrame(rafId);\n clearCSSProperties(node, exitCSSProperties);\n node.style.transition = \"\";\n };\n }, [\n isExiting,\n exitCSSPropertiesSignature\n ]);\n var styleSignature = onTransition ? (function() {\n var { transition: _t, ...rest } = style;\n var _styleState_classNames;\n return `${JSON.stringify((_styleState_classNames = styleState === null || styleState === void 0 ? void 0 : styleState.classNames) !== null && _styleState_classNames !== void 0 ? _styleState_classNames : null)}|${JSON.stringify(rest)}`;\n })() : \"\";\n useIsomorphicLayoutEffect(function() {\n var host = stateRef.current.host;\n if (!onTransitionRef.current || isExiting || !justFinishedEntering || !host) {\n return;\n }\n var node = host;\n var cycleId = ++enterCycleIdRef.current;\n enterStartedRef.current = true;\n emit(\"start\", \"enter\");\n void waitForAnimations(node).then(function(finished) {\n if (cycleId !== enterCycleIdRef.current || !enterStartedRef.current) return;\n enterStartedRef.current = false;\n emit(\"end\", \"enter\", finished);\n });\n }, [\n justFinishedEntering,\n isExiting\n ]);\n useIsomorphicLayoutEffect(function() {\n var host = stateRef.current.host;\n if (!onTransitionRef.current || isEntering || justFinishedEntering || isExiting || !host) {\n prevUpdateSigRef.current = styleSignature;\n return;\n }\n if (prevUpdateSigRef.current === null) {\n prevUpdateSigRef.current = styleSignature;\n return;\n }\n if (styleSignature === prevUpdateSigRef.current) return;\n prevUpdateSigRef.current = styleSignature;\n var node = host;\n if (updateInFlightRef.current) {\n emit(\"end\", \"update\", false);\n }\n updateInFlightRef.current = true;\n var cycleId = ++updateCycleIdRef.current;\n emit(\"start\", \"update\");\n void waitForAnimations(node).then(function(finished) {\n if (cycleId !== updateCycleIdRef.current) return;\n updateInFlightRef.current = false;\n emit(\"end\", \"update\", finished);\n });\n }, [\n styleSignature,\n isEntering,\n justFinishedEntering,\n isExiting\n ]);\n useIsomorphicLayoutEffect(function() {\n if (justStartedExiting && enterStartedRef.current) {\n enterCycleIdRef.current++;\n enterStartedRef.current = false;\n emit(\"end\", \"enter\", false);\n }\n if (justStoppedExiting && exitStartedRef.current && !exitCompletedRef.current) {\n exitStartedRef.current = false;\n emit(\"end\", \"exit\", false);\n }\n }, [\n justStartedExiting,\n justStoppedExiting\n ]);\n if (isHydrating) {\n return null;\n }\n if (!hasNormalizedAnimation(normalized)) {\n return null;\n }\n if (Array.isArray(style.transform)) {\n style.transform = transformsToString(style.transform);\n }\n style.transition = getTransition();\n if (process.env.NODE_ENV === \"development\" && props[\"debug\"] === \"verbose\") {\n console.info(\"CSS animation\", {\n props,\n animations,\n normalized,\n defaultAnimation,\n style,\n isEntering,\n isExiting\n });\n }\n return {\n style,\n className: isEntering ? \"t_unmounted\" : \"\"\n };\n }\n };\n}\nexport {\n createAnimations\n};\n//# sourceMappingURL=createAnimations.js.map\n"],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -1,2 +1 @@
1
- export * from "./createAnimations.mjs";
2
- //# sourceMappingURL=index.js.map
1
+ export * from "./createAnimations.mjs"
@@ -1,2 +1 @@
1
- export * from "./createAnimations.mjs";
2
- //# sourceMappingURL=index.mjs.map
1
+ export * from "./createAnimations.mjs"
@@ -1,2 +1 @@
1
- export * from "./createAnimations.native.js";
2
- //# sourceMappingURL=index.native.js.map
1
+ export * from "./createAnimations.native.js"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/animations-css",
3
- "version": "2.7.7",
3
+ "version": "3.0.0-beta.643.1",
4
4
  "gitHead": "a49cc7ea6b93ba384e77a4880ae48ac4a5635c14",
5
5
  "license": "MIT",
6
6
  "source": "src/index.ts",
@@ -24,6 +24,15 @@
24
24
  "import": "./dist/esm/index.mjs",
25
25
  "require": "./dist/cjs/index.cjs",
26
26
  "default": "./dist/esm/index.mjs"
27
+ },
28
+ "./animated-number": {
29
+ "types": "./types/animated-number.d.ts",
30
+ "react-native": "./dist/esm/animated-number.native.js",
31
+ "browser": "./dist/esm/animated-number.mjs",
32
+ "module": "./dist/esm/animated-number.mjs",
33
+ "import": "./dist/esm/animated-number.mjs",
34
+ "require": "./dist/cjs/animated-number.cjs",
35
+ "default": "./dist/esm/animated-number.mjs"
27
36
  }
28
37
  },
29
38
  "publishConfig": {
@@ -36,14 +45,14 @@
36
45
  "clean:build": "tamagui-build clean:build"
37
46
  },
38
47
  "dependencies": {
39
- "@tamagui/animation-helpers": "2.7.7",
40
- "@tamagui/constants": "2.7.7",
41
- "@tamagui/cubic-bezier-animator": "2.7.7",
42
- "@tamagui/use-presence": "2.7.7",
43
- "@tamagui/web": "2.7.7"
48
+ "@tamagui/animation-helpers": "3.0.0-beta.643.1",
49
+ "@tamagui/constants": "3.0.0-beta.643.1",
50
+ "@tamagui/cubic-bezier-animator": "3.0.0-beta.643.1",
51
+ "@tamagui/use-presence": "3.0.0-beta.643.1",
52
+ "@tamagui/web": "3.0.0-beta.643.1"
44
53
  },
45
54
  "devDependencies": {
46
- "@tamagui/build": "2.7.7",
55
+ "@tamagui/build": "3.0.0-beta.643.1",
47
56
  "react": ">=19",
48
57
  "react-dom": "*"
49
58
  },
@@ -0,0 +1,262 @@
1
+ import type {
2
+ AnimatedNumberStrategy,
3
+ UniversalAnimatedNumber,
4
+ UseAnimatedNumberReaction,
5
+ UseAnimatedNumberStyle,
6
+ UseAnimatedNumbersStyle,
7
+ } from '@tamagui/web'
8
+ import React from 'react'
9
+ import { unstable_batchedUpdates } from 'react-dom'
10
+
11
+ /**
12
+ * The optional animated-number leaf.
13
+ *
14
+ * Zero-runtime mode rewrites the four public animated-number imports here, so
15
+ * this module must reach the config, the provider and the component runtime
16
+ * through nothing but types. It owns the CSS driver's rAF timing and spring
17
+ * engine, cancellation, completion callbacks, listener notification and the
18
+ * linked-style render. `createAnimations` uses these same functions, so there is
19
+ * one implementation rather than two.
20
+ */
21
+
22
+ // rAF-driven animated number is browser-only. read (don't call) at module scope
23
+ // so ssr never touches requestAnimationFrame.
24
+ const hasRAF = typeof requestAnimationFrame !== 'undefined'
25
+
26
+ type CSSAnimatedNumberInstance = {
27
+ current: number
28
+ target: number
29
+ listeners: Set<(value: number) => void>
30
+ styleHost: object | null
31
+ raf: number | null
32
+ finish: (() => void) | null
33
+ renderTarget: () => void
34
+ cancel: () => void
35
+ }
36
+
37
+ type CSSAnimatedNumber = UniversalAnimatedNumber<CSSAnimatedNumberInstance>
38
+
39
+ function notifyAnimatedNumber(instance: CSSAnimatedNumberInstance, value: number) {
40
+ instance.current = value
41
+ if (instance.listeners.size === 0) return
42
+ unstable_batchedUpdates(() => {
43
+ for (const listener of instance.listeners) listener(value)
44
+ })
45
+ }
46
+
47
+ function useAnimatedNumberStyles(
48
+ values: CSSAnimatedNumber[],
49
+ getStyle: (...current: number[]) => any
50
+ ) {
51
+ const token = React.useRef<object>(null)
52
+ token.current ||= {}
53
+ const [, renderLinkedValue] = React.useReducer((value) => value + 1, 0)
54
+ const instances = values.map((value) => value.getInstance())
55
+ for (const instance of instances) {
56
+ if (!instance.styleHost) instance.styleHost = token.current
57
+ }
58
+
59
+ React.useEffect(() => {
60
+ const listener = () => renderLinkedValue()
61
+ for (const instance of instances) {
62
+ if (instance.styleHost !== token.current) instance.listeners.add(listener)
63
+ }
64
+ return () => {
65
+ for (const instance of instances) {
66
+ instance.listeners.delete(listener)
67
+ if (instance.styleHost === token.current) instance.styleHost = null
68
+ }
69
+ }
70
+ }, instances)
71
+
72
+ return getStyle(
73
+ ...instances.map((instance) =>
74
+ instance.styleHost === token.current ? instance.target : instance.current
75
+ )
76
+ )
77
+ }
78
+
79
+ export function useAnimatedNumber(initial: number): CSSAnimatedNumber {
80
+ const [, renderTarget] = React.useReducer((value) => value + 1, 0)
81
+ const instanceRef = React.useRef<CSSAnimatedNumberInstance>(null)
82
+
83
+ if (!instanceRef.current) {
84
+ instanceRef.current = {
85
+ current: initial,
86
+ target: initial,
87
+ listeners: new Set(),
88
+ styleHost: null,
89
+ raf: null,
90
+ finish: null,
91
+ renderTarget,
92
+ cancel() {
93
+ if (this.raf !== null) cancelAnimationFrame(this.raf)
94
+ this.raf = null
95
+ this.finish = null
96
+ },
97
+ }
98
+ }
99
+
100
+ const instance = instanceRef.current
101
+ instance.renderTarget = renderTarget
102
+ React.useEffect(() => () => instance.cancel(), [instance])
103
+
104
+ return React.useMemo(
105
+ () => ({
106
+ getInstance() {
107
+ return instance
108
+ },
109
+ getValue() {
110
+ return instance.current
111
+ },
112
+ setValue(next, config = { type: 'spring' }, onFinish) {
113
+ instance.cancel()
114
+ const from = instance.current
115
+ instance.target = next
116
+ if (instance.styleHost) instance.renderTarget()
117
+
118
+ if (
119
+ !hasRAF ||
120
+ config.type === 'direct' ||
121
+ (config.type === 'timing' && config.duration === 0) ||
122
+ from === next
123
+ ) {
124
+ notifyAnimatedNumber(instance, next)
125
+ onFinish?.()
126
+ return
127
+ }
128
+
129
+ // css transitions interpolate the host. js only ticks when a
130
+ // reaction, linked style, or completion callback needs live values.
131
+ if (instance.listeners.size === 0 && !onFinish) {
132
+ instance.current = next
133
+ return
134
+ }
135
+
136
+ instance.finish = onFinish ?? null
137
+ const settle = () => {
138
+ instance.raf = null
139
+ notifyAnimatedNumber(instance, next)
140
+ const finish = instance.finish
141
+ instance.finish = null
142
+ finish?.()
143
+ }
144
+
145
+ if (config.type === 'timing') {
146
+ const startedAt = performance.now()
147
+ const tick = () => {
148
+ const progress = Math.min(
149
+ 1,
150
+ (performance.now() - startedAt) / config.duration
151
+ )
152
+ if (progress === 1) {
153
+ settle()
154
+ return
155
+ }
156
+ notifyAnimatedNumber(instance, from + (next - from) * progress)
157
+ instance.raf = requestAnimationFrame(tick)
158
+ }
159
+ instance.raf = requestAnimationFrame(tick)
160
+ return
161
+ }
162
+
163
+ const {
164
+ stiffness = 300,
165
+ damping = 35,
166
+ mass = 1,
167
+ overshootClamping,
168
+ restSpeedThreshold: restSpeed = 0.001,
169
+ restDisplacementThreshold: restDisplacement = 0.001,
170
+ } = config as Extract<AnimatedNumberStrategy, { type: 'spring' }>
171
+ const displacement = from - next
172
+ const decayRate = damping / (2 * mass)
173
+ const naturalFrequency = Math.sqrt(stiffness / mass)
174
+ const startedAt = performance.now()
175
+
176
+ const tick = () => {
177
+ const elapsed = (performance.now() - startedAt) / 1000
178
+ let value: number
179
+ let velocity: number
180
+ if (decayRate < naturalFrequency) {
181
+ const dampedFrequency = Math.sqrt(naturalFrequency ** 2 - decayRate ** 2)
182
+ const b = (decayRate * displacement) / dampedFrequency
183
+ const decay = Math.exp(-decayRate * elapsed)
184
+ const cos = Math.cos(dampedFrequency * elapsed)
185
+ const sin = Math.sin(dampedFrequency * elapsed)
186
+ value = next + decay * (displacement * cos + b * sin)
187
+ velocity =
188
+ decay *
189
+ ((-decayRate * displacement + b * dampedFrequency) * cos +
190
+ (-decayRate * b - displacement * dampedFrequency) * sin)
191
+ } else if (decayRate === naturalFrequency) {
192
+ const b = decayRate * displacement
193
+ const decay = Math.exp(-decayRate * elapsed)
194
+ value = next + (displacement + b * elapsed) * decay
195
+ velocity = (b - decayRate * (displacement + b * elapsed)) * decay
196
+ } else {
197
+ const frequency = Math.sqrt(decayRate ** 2 - naturalFrequency ** 2)
198
+ const slowRoot = -decayRate + frequency
199
+ const fastRoot = -decayRate - frequency
200
+ const slowCoefficient = (-fastRoot * displacement) / (slowRoot - fastRoot)
201
+ const fastCoefficient = displacement - slowCoefficient
202
+ value =
203
+ next +
204
+ slowCoefficient * Math.exp(slowRoot * elapsed) +
205
+ fastCoefficient * Math.exp(fastRoot * elapsed)
206
+ velocity =
207
+ slowCoefficient * slowRoot * Math.exp(slowRoot * elapsed) +
208
+ fastCoefficient * fastRoot * Math.exp(fastRoot * elapsed)
209
+ }
210
+
211
+ if (
212
+ overshootClamping &&
213
+ ((from < next && value > next) || (from > next && value < next))
214
+ ) {
215
+ value = next
216
+ velocity = 0
217
+ }
218
+
219
+ if (
220
+ Math.abs(velocity) <= restSpeed &&
221
+ Math.abs(next - value) <= restDisplacement
222
+ ) {
223
+ settle()
224
+ return
225
+ }
226
+
227
+ notifyAnimatedNumber(instance, value)
228
+ instance.raf = requestAnimationFrame(tick)
229
+ }
230
+ instance.raf = requestAnimationFrame(tick)
231
+ },
232
+ stop() {
233
+ instance.cancel()
234
+ },
235
+ }),
236
+ [instance]
237
+ )
238
+ }
239
+
240
+ export const useAnimatedNumberReaction: UseAnimatedNumberReaction = (
241
+ { value },
242
+ onValue
243
+ ) => {
244
+ const onValueRef = React.useRef(onValue)
245
+ onValueRef.current = onValue
246
+ React.useEffect(() => {
247
+ const instance = value.getInstance() as CSSAnimatedNumberInstance
248
+ const listener = (current: number) => onValueRef.current(current)
249
+ instance.listeners.add(listener)
250
+ return () => {
251
+ instance.listeners.delete(listener)
252
+ }
253
+ }, [value])
254
+ }
255
+
256
+ export const useAnimatedNumberStyle: UseAnimatedNumberStyle = (val, getStyle) =>
257
+ useAnimatedNumberStyles([val as CSSAnimatedNumber], getStyle)
258
+
259
+ export const useAnimatedNumbersStyle: UseAnimatedNumbersStyle = (vals, getStyle) =>
260
+ useAnimatedNumberStyles(vals as CSSAnimatedNumber[], getStyle)
261
+
262
+ export type { CSSAnimatedNumber, CSSAnimatedNumberInstance }