@hua-labs/motion-core 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks-native/useFadeIn.ts","../src/hooks-native/useSlide.ts","../src/hooks-native/useScaleIn.ts","../src/hooks-native/useBounceIn.ts","../src/hooks-native/useSpringMotion.ts","../src/hooks-native/usePulse.ts","../src/hooks-native/useStagger.ts"],"names":["useMotionProfile","getEasing","easeOut","useRef","Animated","useState","useCallback","useEffect","easeInOut","useMemo"],"mappings":"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","file":"native.cjs","sourcesContent":["import { useRef, useEffect, useState, useCallback } from 'react'\nimport { Animated } from 'react-native'\nimport { useMotionProfile } from '../profiles/MotionProfileContext'\nimport { getEasing, easeOut } from '../utils/easing'\nimport type { NativeMotionReturn, NativeMotionOptions } from './types'\n\nexport interface NativeFadeInOptions extends NativeMotionOptions {\n initialOpacity?: number\n targetOpacity?: number\n}\n\nexport function useFadeIn(options: NativeFadeInOptions = {}): NativeMotionReturn {\n const profile = useMotionProfile()\n const {\n duration = profile.base.duration,\n delay = 0,\n easing = getEasing(profile.base.easing) || easeOut,\n autoStart = true,\n useNativeDriver = true,\n initialOpacity = profile.entrance.fade.initialOpacity,\n targetOpacity = 1,\n onComplete,\n onStart,\n } = options\n\n const opacity = useRef(new Animated.Value(initialOpacity)).current\n const [isAnimating, setIsAnimating] = useState(false)\n const [isVisible, setIsVisible] = useState(false)\n const [progress, setProgress] = useState(0)\n const animRef = useRef<Animated.CompositeAnimation | null>(null)\n\n const start = useCallback(() => {\n if (isAnimating) return\n setIsAnimating(true)\n onStart?.()\n\n animRef.current = Animated.timing(opacity, {\n toValue: targetOpacity,\n duration,\n delay,\n easing,\n useNativeDriver,\n })\n animRef.current.start(({ finished }) => {\n if (finished) {\n setIsVisible(true)\n setIsAnimating(false)\n setProgress(1)\n onComplete?.()\n }\n })\n }, [opacity, duration, delay, easing, useNativeDriver, targetOpacity, isAnimating, onStart, onComplete])\n\n const stop = useCallback(() => {\n animRef.current?.stop()\n setIsAnimating(false)\n }, [])\n\n const reset = useCallback(() => {\n animRef.current?.stop()\n opacity.setValue(initialOpacity)\n setIsAnimating(false)\n setIsVisible(false)\n setProgress(0)\n }, [opacity, initialOpacity])\n\n useEffect(() => {\n if (autoStart) start()\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n return () => { animRef.current?.stop() }\n }, [])\n\n return {\n style: { opacity },\n isVisible,\n isAnimating,\n progress,\n start,\n stop,\n reset,\n }\n}\n","import { useRef, useEffect, useState, useCallback } from 'react'\nimport { Animated } from 'react-native'\nimport { useMotionProfile } from '../profiles/MotionProfileContext'\nimport { getEasing, easeOut } from '../utils/easing'\nimport type { NativeMotionReturn, NativeMotionOptions } from './types'\n\nexport interface NativeSlideOptions extends NativeMotionOptions {\n distance?: number\n}\n\ntype SlideDirection = 'up' | 'down' | 'left' | 'right'\n\nfunction useSlideBase(direction: SlideDirection, options: NativeSlideOptions = {}): NativeMotionReturn {\n const profile = useMotionProfile()\n const {\n duration = profile.base.duration,\n delay = 0,\n easing = getEasing(profile.entrance.slide.easing) || easeOut,\n distance = profile.entrance.slide.distance,\n autoStart = true,\n useNativeDriver = true,\n onComplete,\n onStart,\n } = options\n\n const isVertical = direction === 'up' || direction === 'down'\n const sign = direction === 'up' || direction === 'left' ? 1 : -1\n const initialValue = sign * distance\n\n const translate = useRef(new Animated.Value(initialValue)).current\n const opacity = useRef(new Animated.Value(0)).current\n const [isAnimating, setIsAnimating] = useState(false)\n const [isVisible, setIsVisible] = useState(false)\n const [progress, setProgress] = useState(0)\n const animRef = useRef<Animated.CompositeAnimation | null>(null)\n\n const start = useCallback(() => {\n if (isAnimating) return\n setIsAnimating(true)\n onStart?.()\n\n animRef.current = Animated.parallel([\n Animated.timing(translate, {\n toValue: 0,\n duration,\n delay,\n easing,\n useNativeDriver,\n }),\n Animated.timing(opacity, {\n toValue: 1,\n duration,\n delay,\n easing,\n useNativeDriver,\n }),\n ])\n animRef.current.start(({ finished }) => {\n if (finished) {\n setIsVisible(true)\n setIsAnimating(false)\n setProgress(1)\n onComplete?.()\n }\n })\n }, [translate, opacity, duration, delay, easing, useNativeDriver, isAnimating, onStart, onComplete])\n\n const stop = useCallback(() => {\n animRef.current?.stop()\n setIsAnimating(false)\n }, [])\n\n const reset = useCallback(() => {\n animRef.current?.stop()\n translate.setValue(initialValue)\n opacity.setValue(0)\n setIsAnimating(false)\n setIsVisible(false)\n setProgress(0)\n }, [translate, opacity, initialValue])\n\n useEffect(() => {\n if (autoStart) start()\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n return () => { animRef.current?.stop() }\n }, [])\n\n const style = isVertical\n ? { opacity, transform: [{ translateY: translate }] }\n : { opacity, transform: [{ translateX: translate }] }\n\n return {\n style,\n isVisible,\n isAnimating,\n progress,\n start,\n stop,\n reset,\n }\n}\n\nexport function useSlideUp(options: NativeSlideOptions = {}): NativeMotionReturn {\n return useSlideBase('up', options)\n}\n\nexport function useSlideDown(options: NativeSlideOptions = {}): NativeMotionReturn {\n return useSlideBase('down', options)\n}\n\nexport function useSlideLeft(options: NativeSlideOptions = {}): NativeMotionReturn {\n return useSlideBase('left', options)\n}\n\nexport function useSlideRight(options: NativeSlideOptions = {}): NativeMotionReturn {\n return useSlideBase('right', options)\n}\n","import { useRef, useEffect, useState, useCallback } from 'react'\nimport { Animated } from 'react-native'\nimport { useMotionProfile } from '../profiles/MotionProfileContext'\nimport { getEasing, easeOut } from '../utils/easing'\nimport type { NativeMotionReturn, NativeMotionOptions } from './types'\n\nexport interface NativeScaleInOptions extends NativeMotionOptions {\n initialScale?: number\n targetScale?: number\n}\n\nexport function useScaleIn(options: NativeScaleInOptions = {}): NativeMotionReturn {\n const profile = useMotionProfile()\n const {\n duration = profile.base.duration,\n delay = 0,\n easing = getEasing(profile.base.easing) || easeOut,\n autoStart = true,\n useNativeDriver = true,\n initialScale = profile.entrance.scale.from,\n targetScale = 1,\n onComplete,\n onStart,\n } = options\n\n const scale = useRef(new Animated.Value(initialScale)).current\n const opacity = useRef(new Animated.Value(0)).current\n const [isAnimating, setIsAnimating] = useState(false)\n const [isVisible, setIsVisible] = useState(false)\n const [progress, setProgress] = useState(0)\n const animRef = useRef<Animated.CompositeAnimation | null>(null)\n\n const start = useCallback(() => {\n if (isAnimating) return\n setIsAnimating(true)\n onStart?.()\n\n animRef.current = Animated.parallel([\n Animated.timing(scale, {\n toValue: targetScale,\n duration,\n delay,\n easing,\n useNativeDriver,\n }),\n Animated.timing(opacity, {\n toValue: 1,\n duration,\n delay,\n easing,\n useNativeDriver,\n }),\n ])\n animRef.current.start(({ finished }) => {\n if (finished) {\n setIsVisible(true)\n setIsAnimating(false)\n setProgress(1)\n onComplete?.()\n }\n })\n }, [scale, opacity, duration, delay, easing, useNativeDriver, targetScale, isAnimating, onStart, onComplete])\n\n const stop = useCallback(() => {\n animRef.current?.stop()\n setIsAnimating(false)\n }, [])\n\n const reset = useCallback(() => {\n animRef.current?.stop()\n scale.setValue(initialScale)\n opacity.setValue(0)\n setIsAnimating(false)\n setIsVisible(false)\n setProgress(0)\n }, [scale, opacity, initialScale])\n\n useEffect(() => {\n if (autoStart) start()\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n return () => { animRef.current?.stop() }\n }, [])\n\n return {\n style: {\n opacity,\n transform: [{ scale }],\n },\n isVisible,\n isAnimating,\n progress,\n start,\n stop,\n reset,\n }\n}\n","import { useRef, useEffect, useState, useCallback } from 'react'\nimport { Animated } from 'react-native'\nimport { useMotionProfile } from '../profiles/MotionProfileContext'\nimport type { NativeMotionReturn, NativeMotionOptions } from './types'\n\nexport interface NativeBounceInOptions extends NativeMotionOptions {\n initialScale?: number\n /** Spring friction (lower = more bouncy) @default 4 */\n friction?: number\n /** Spring tension @default 80 */\n tension?: number\n}\n\nexport function useBounceIn(options: NativeBounceInOptions = {}): NativeMotionReturn {\n const profile = useMotionProfile()\n const {\n delay = 0,\n autoStart = true,\n useNativeDriver = true,\n initialScale = 0.3,\n friction = 4,\n tension = 80,\n onComplete,\n onStart,\n } = options\n\n const scale = useRef(new Animated.Value(initialScale)).current\n const opacity = useRef(new Animated.Value(0)).current\n const [isAnimating, setIsAnimating] = useState(false)\n const [isVisible, setIsVisible] = useState(false)\n const [progress, setProgress] = useState(0)\n const animRef = useRef<Animated.CompositeAnimation | null>(null)\n\n const start = useCallback(() => {\n if (isAnimating) return\n setIsAnimating(true)\n onStart?.()\n\n animRef.current = Animated.parallel([\n Animated.spring(scale, {\n toValue: 1,\n friction,\n tension,\n useNativeDriver,\n delay,\n }),\n Animated.timing(opacity, {\n toValue: 1,\n duration: 200,\n delay,\n useNativeDriver,\n }),\n ])\n animRef.current.start(({ finished }) => {\n if (finished) {\n setIsVisible(true)\n setIsAnimating(false)\n setProgress(1)\n onComplete?.()\n }\n })\n }, [scale, opacity, friction, tension, delay, useNativeDriver, isAnimating, onStart, onComplete])\n\n const stop = useCallback(() => {\n animRef.current?.stop()\n setIsAnimating(false)\n }, [])\n\n const reset = useCallback(() => {\n animRef.current?.stop()\n scale.setValue(initialScale)\n opacity.setValue(0)\n setIsAnimating(false)\n setIsVisible(false)\n setProgress(0)\n }, [scale, opacity, initialScale])\n\n useEffect(() => {\n if (autoStart) start()\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n return () => { animRef.current?.stop() }\n }, [])\n\n return {\n style: {\n opacity,\n transform: [{ scale }],\n },\n isVisible,\n isAnimating,\n progress,\n start,\n stop,\n reset,\n }\n}\n","import { useRef, useEffect, useState, useCallback } from 'react'\nimport { Animated } from 'react-native'\nimport { useMotionProfile } from '../profiles/MotionProfileContext'\nimport type { NativeMotionOptions } from './types'\n\nexport interface NativeSpringMotionOptions extends NativeMotionOptions {\n from: number\n to: number\n friction?: number\n tension?: number\n enabled?: boolean\n}\n\nexport interface NativeSpringMotionReturn {\n value: Animated.Value\n isAnimating: boolean\n start: () => void\n stop: () => void\n reset: () => void\n animateTo: (toValue: number) => void\n}\n\nexport function useSpringMotion(options: NativeSpringMotionOptions): NativeSpringMotionReturn {\n const profile = useMotionProfile()\n const {\n from,\n to,\n friction = Math.sqrt(4 * profile.spring.mass * profile.spring.stiffness) / (2 * profile.spring.damping) * 10 || 26,\n tension = profile.spring.stiffness / 2 || 170,\n autoStart = true,\n useNativeDriver = true,\n enabled = true,\n onComplete,\n onStart,\n } = options\n\n const value = useRef(new Animated.Value(from)).current\n const [isAnimating, setIsAnimating] = useState(false)\n const animRef = useRef<Animated.CompositeAnimation | null>(null)\n\n const animateTo = useCallback((toValue: number) => {\n if (!enabled) return\n setIsAnimating(true)\n onStart?.()\n\n animRef.current?.stop()\n animRef.current = Animated.spring(value, {\n toValue,\n friction,\n tension,\n useNativeDriver,\n })\n animRef.current.start(({ finished }) => {\n if (finished) {\n setIsAnimating(false)\n onComplete?.()\n }\n })\n }, [value, friction, tension, useNativeDriver, enabled, onStart, onComplete])\n\n const start = useCallback(() => {\n animateTo(to)\n }, [animateTo, to])\n\n const stop = useCallback(() => {\n animRef.current?.stop()\n setIsAnimating(false)\n }, [])\n\n const reset = useCallback(() => {\n animRef.current?.stop()\n value.setValue(from)\n setIsAnimating(false)\n }, [value, from])\n\n useEffect(() => {\n if (autoStart && enabled) start()\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n return () => { animRef.current?.stop() }\n }, [])\n\n return { value, isAnimating, start, stop, reset, animateTo }\n}\n","import { useRef, useEffect, useState, useCallback } from 'react'\nimport { Animated } from 'react-native'\nimport { getEasing, easeInOut } from '../utils/easing'\nimport type { NativeMotionReturn, NativeMotionOptions } from './types'\n\nexport interface NativePulseOptions extends NativeMotionOptions {\n /** Min opacity @default 0.3 */\n minOpacity?: number\n /** Number of iterations (Infinity for forever) @default Infinity */\n iterations?: number\n}\n\nexport function usePulse(options: NativePulseOptions = {}): NativeMotionReturn {\n const {\n duration = 1500,\n autoStart = true,\n useNativeDriver = true,\n easing = getEasing('easeInOut') || easeInOut,\n minOpacity = 0.3,\n iterations = -1,\n onStart,\n } = options\n\n const opacity = useRef(new Animated.Value(1)).current\n const [isAnimating, setIsAnimating] = useState(false)\n const animRef = useRef<Animated.CompositeAnimation | null>(null)\n\n const start = useCallback(() => {\n if (isAnimating) return\n setIsAnimating(true)\n onStart?.()\n\n const pulse = Animated.sequence([\n Animated.timing(opacity, {\n toValue: minOpacity,\n duration: duration / 2,\n easing,\n useNativeDriver,\n }),\n Animated.timing(opacity, {\n toValue: 1,\n duration: duration / 2,\n easing,\n useNativeDriver,\n }),\n ])\n\n animRef.current = iterations === -1 || iterations === Infinity\n ? Animated.loop(pulse)\n : Animated.loop(pulse, { iterations })\n\n animRef.current.start(({ finished }) => {\n if (finished) setIsAnimating(false)\n })\n }, [opacity, duration, easing, useNativeDriver, minOpacity, iterations, isAnimating, onStart])\n\n const stop = useCallback(() => {\n animRef.current?.stop()\n setIsAnimating(false)\n }, [])\n\n const reset = useCallback(() => {\n animRef.current?.stop()\n opacity.setValue(1)\n setIsAnimating(false)\n }, [opacity])\n\n useEffect(() => {\n if (autoStart) start()\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n return () => { animRef.current?.stop() }\n }, [])\n\n return {\n style: { opacity },\n isVisible: true,\n isAnimating,\n progress: 0,\n start,\n stop,\n reset,\n }\n}\n","import { useRef, useEffect, useState, useCallback, useMemo } from 'react'\nimport { Animated } from 'react-native'\nimport { useMotionProfile } from '../profiles/MotionProfileContext'\nimport { getEasing, easeOut } from '../utils/easing'\nimport type { NativeMotionOptions } from './types'\n\nexport interface NativeStaggerOptions extends NativeMotionOptions {\n /** Number of items */\n count: number\n /** Delay between each item (ms) @default 100 */\n staggerDelay?: number\n /** Motion type @default 'fadeIn' */\n motionType?: 'fadeIn' | 'slideUp' | 'scaleIn'\n /** Slide distance (px, for slideUp) @default 20 */\n distance?: number\n}\n\nexport interface NativeStaggerItem {\n style: {\n opacity: Animated.Value\n transform?: Array<{ translateY: Animated.Value } | { scale: Animated.Value }>\n }\n}\n\nexport interface NativeStaggerReturn {\n items: NativeStaggerItem[]\n isVisible: boolean\n start: () => void\n stop: () => void\n reset: () => void\n}\n\nexport function useStagger(options: NativeStaggerOptions): NativeStaggerReturn {\n const profile = useMotionProfile()\n const {\n count,\n staggerDelay = profile.stagger.perItem,\n duration = profile.base.duration,\n easing = getEasing(profile.base.easing) || easeOut,\n autoStart = true,\n useNativeDriver = true,\n motionType = 'fadeIn',\n distance = profile.entrance.slide.distance,\n onComplete,\n onStart,\n } = options\n\n const [isVisible, setIsVisible] = useState(false)\n const animRef = useRef<Animated.CompositeAnimation | null>(null)\n\n // Create animated values for each item (stable across renders)\n const animatedValues = useRef(\n Array.from({ length: count }, () => ({\n opacity: new Animated.Value(0),\n translateY: new Animated.Value(distance),\n scale: new Animated.Value(0.8),\n }))\n ).current\n\n // Rebuild if count changes\n useEffect(() => {\n while (animatedValues.length < count) {\n animatedValues.push({\n opacity: new Animated.Value(0),\n translateY: new Animated.Value(distance),\n scale: new Animated.Value(0.8),\n })\n }\n }, [count, animatedValues, distance])\n\n const start = useCallback(() => {\n setIsVisible(false)\n onStart?.()\n\n const animations = animatedValues.slice(0, count).map((v) => {\n const itemAnims: Animated.CompositeAnimation[] = [\n Animated.timing(v.opacity, {\n toValue: 1,\n duration,\n easing,\n useNativeDriver,\n }),\n ]\n\n if (motionType === 'slideUp') {\n itemAnims.push(\n Animated.timing(v.translateY, {\n toValue: 0,\n duration,\n easing,\n useNativeDriver,\n })\n )\n } else if (motionType === 'scaleIn') {\n itemAnims.push(\n Animated.timing(v.scale, {\n toValue: 1,\n duration,\n easing,\n useNativeDriver,\n })\n )\n }\n\n return Animated.parallel(itemAnims)\n })\n\n animRef.current = Animated.stagger(staggerDelay, animations)\n animRef.current.start(({ finished }) => {\n if (finished) {\n setIsVisible(true)\n onComplete?.()\n }\n })\n }, [animatedValues, count, staggerDelay, duration, easing, useNativeDriver, motionType, onStart, onComplete])\n\n const stop = useCallback(() => {\n animRef.current?.stop()\n }, [])\n\n const reset = useCallback(() => {\n animRef.current?.stop()\n animatedValues.forEach((v) => {\n v.opacity.setValue(0)\n v.translateY.setValue(distance)\n v.scale.setValue(0.8)\n })\n setIsVisible(false)\n }, [animatedValues, distance])\n\n useEffect(() => {\n if (autoStart) start()\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n return () => { animRef.current?.stop() }\n }, [])\n\n const items = useMemo<NativeStaggerItem[]>(() => {\n return animatedValues.slice(0, count).map((v) => {\n if (motionType === 'slideUp') {\n return { style: { opacity: v.opacity, transform: [{ translateY: v.translateY }] } }\n }\n if (motionType === 'scaleIn') {\n return { style: { opacity: v.opacity, transform: [{ scale: v.scale }] } }\n }\n return { style: { opacity: v.opacity } }\n })\n }, [animatedValues, count, motionType])\n\n return { items, isVisible, start, stop, reset }\n}\n"]}
@@ -0,0 +1,177 @@
1
+ import { M as MotionElement, _ as MotionState } from './springPhysics-DLyZ4nbx.mjs';
2
+ export { B as BaseMotionOptions, e as BounceOptions, p as BuiltInProfileName, D as DeepPartial, q as EasingFunction, r as EasingType, F as FadeInOptions, u as MOTION_PRESETS, v as MotionCallback, x as MotionDirection, y as MotionEasing, z as MotionEngine, A as MotionFrame, C as MotionInstance, J as MotionOptions, L as MotionProfile, N as MotionProfileBase, O as MotionProfileEntrance, Q as MotionProfileInteraction, U as MotionProfileProvider, V as MotionProfileProviderProps, X as MotionProfileSpring, Y as MotionProfileStagger, Z as MotionProgressCallback, a0 as MotionTrigger, a3 as PAGE_MOTIONS, f as PulseOptions, a7 as ReducedMotionStrategy, d as ScaleOptions, S as SlideOptions, a8 as SpringConfig, g as SpringOptions, a9 as SpringPhysicsConfig, aa as SpringResult, ab as TransitionEffects, ac as TransitionOptions, ad as TransitionType, ae as applyEasing, af as calculateSpring, ag as easeIn, ah as easeInOut, ai as easeInOutQuad, aj as easeInQuad, ak as easeOut, al as easeOutQuad, am as easingPresets, an as getAvailableEasings, ao as getEasing, ap as getMotionPreset, aq as getPagePreset, ar as getPresetEasing, as as hua, at as isEasingFunction, au as isValidEasing, av as linear, aw as mergeProfileOverrides, ax as mergeWithPreset, ay as motionEngine, az as neutral, aA as resolveProfile, aB as safeApplyEasing, aC as transitionEffects, aD as useMotionProfile } from './springPhysics-DLyZ4nbx.mjs';
3
+ import { ViewStyle, Animated } from 'react-native';
4
+ import 'react';
5
+
6
+ /**
7
+ * MotionStateManager - 모션 상태 관리 클래스
8
+ *
9
+ * 상태 충돌 문제 해결을 위해 3가지 상태를 분리:
10
+ * - internalVisibility: 내부 로직 (초기화, 리셋 등)
11
+ * - triggeredVisibility: 외부 트리거 (Intersection Observer)
12
+ * - finalVisibility: 최종 계산된 상태
13
+ */
14
+ declare class MotionStateManager {
15
+ private states;
16
+ private listeners;
17
+ /**
18
+ * 요소의 상태를 초기화
19
+ */
20
+ initializeElement(elementId: string, config: MotionElement): void;
21
+ /**
22
+ * 내부 가시성 상태 업데이트 (초기화, 리셋 등)
23
+ */
24
+ setInternalVisibility(elementId: string, visible: boolean): void;
25
+ /**
26
+ * 외부 트리거 가시성 상태 업데이트 (Intersection Observer)
27
+ */
28
+ setTriggeredVisibility(elementId: string, visible: boolean): void;
29
+ /**
30
+ * 모션 값 업데이트
31
+ */
32
+ updateMotionValues(elementId: string, values: Partial<MotionState>): void;
33
+ /**
34
+ * 최종 상태 계산
35
+ */
36
+ private computeFinalState;
37
+ /**
38
+ * 현재 상태 조회
39
+ */
40
+ getState(elementId: string): MotionState | undefined;
41
+ /**
42
+ * 모든 상태 조회
43
+ */
44
+ getAllStates(): Map<string, MotionState>;
45
+ /**
46
+ * 상태 변경 리스너 등록
47
+ */
48
+ subscribe(elementId: string, listener: (state: MotionState) => void): () => void;
49
+ /**
50
+ * 리스너들에게 상태 변경 알림
51
+ */
52
+ notifyListeners(elementId: string, state: MotionState): void;
53
+ /**
54
+ * 모든 상태 초기화
55
+ */
56
+ reset(): void;
57
+ /**
58
+ * 특정 요소 상태 초기화
59
+ */
60
+ resetElement(elementId: string): void;
61
+ /**
62
+ * 디버그용 상태 출력
63
+ */
64
+ debug(): void;
65
+ }
66
+
67
+ /** Animated-compatible style — each property can be a static value or Animated.Value */
68
+ type NativeAnimatedStyle = {
69
+ [K in keyof ViewStyle]?: ViewStyle[K] | Animated.Value | Animated.AnimatedInterpolation;
70
+ };
71
+ /**
72
+ * Native motion hook return type.
73
+ * style is an Animated-compatible object for use with Animated.View.
74
+ */
75
+ interface NativeMotionReturn {
76
+ style: NativeAnimatedStyle;
77
+ isVisible: boolean;
78
+ isAnimating: boolean;
79
+ progress: number;
80
+ start: () => void;
81
+ stop: () => void;
82
+ reset: () => void;
83
+ }
84
+ interface NativeMotionOptions {
85
+ duration?: number;
86
+ delay?: number;
87
+ easing?: (t: number) => number;
88
+ autoStart?: boolean;
89
+ useNativeDriver?: boolean;
90
+ onComplete?: () => void;
91
+ onStart?: () => void;
92
+ }
93
+
94
+ interface NativeFadeInOptions extends NativeMotionOptions {
95
+ initialOpacity?: number;
96
+ targetOpacity?: number;
97
+ }
98
+ declare function useFadeIn(options?: NativeFadeInOptions): NativeMotionReturn;
99
+
100
+ interface NativeSlideOptions extends NativeMotionOptions {
101
+ distance?: number;
102
+ }
103
+ declare function useSlideUp(options?: NativeSlideOptions): NativeMotionReturn;
104
+ declare function useSlideDown(options?: NativeSlideOptions): NativeMotionReturn;
105
+ declare function useSlideLeft(options?: NativeSlideOptions): NativeMotionReturn;
106
+ declare function useSlideRight(options?: NativeSlideOptions): NativeMotionReturn;
107
+
108
+ interface NativeScaleInOptions extends NativeMotionOptions {
109
+ initialScale?: number;
110
+ targetScale?: number;
111
+ }
112
+ declare function useScaleIn(options?: NativeScaleInOptions): NativeMotionReturn;
113
+
114
+ interface NativeBounceInOptions extends NativeMotionOptions {
115
+ initialScale?: number;
116
+ /** Spring friction (lower = more bouncy) @default 4 */
117
+ friction?: number;
118
+ /** Spring tension @default 80 */
119
+ tension?: number;
120
+ }
121
+ declare function useBounceIn(options?: NativeBounceInOptions): NativeMotionReturn;
122
+
123
+ interface NativeSpringMotionOptions extends NativeMotionOptions {
124
+ from: number;
125
+ to: number;
126
+ friction?: number;
127
+ tension?: number;
128
+ enabled?: boolean;
129
+ }
130
+ interface NativeSpringMotionReturn {
131
+ value: Animated.Value;
132
+ isAnimating: boolean;
133
+ start: () => void;
134
+ stop: () => void;
135
+ reset: () => void;
136
+ animateTo: (toValue: number) => void;
137
+ }
138
+ declare function useSpringMotion(options: NativeSpringMotionOptions): NativeSpringMotionReturn;
139
+
140
+ interface NativePulseOptions extends NativeMotionOptions {
141
+ /** Min opacity @default 0.3 */
142
+ minOpacity?: number;
143
+ /** Number of iterations (Infinity for forever) @default Infinity */
144
+ iterations?: number;
145
+ }
146
+ declare function usePulse(options?: NativePulseOptions): NativeMotionReturn;
147
+
148
+ interface NativeStaggerOptions extends NativeMotionOptions {
149
+ /** Number of items */
150
+ count: number;
151
+ /** Delay between each item (ms) @default 100 */
152
+ staggerDelay?: number;
153
+ /** Motion type @default 'fadeIn' */
154
+ motionType?: 'fadeIn' | 'slideUp' | 'scaleIn';
155
+ /** Slide distance (px, for slideUp) @default 20 */
156
+ distance?: number;
157
+ }
158
+ interface NativeStaggerItem {
159
+ style: {
160
+ opacity: Animated.Value;
161
+ transform?: Array<{
162
+ translateY: Animated.Value;
163
+ } | {
164
+ scale: Animated.Value;
165
+ }>;
166
+ };
167
+ }
168
+ interface NativeStaggerReturn {
169
+ items: NativeStaggerItem[];
170
+ isVisible: boolean;
171
+ start: () => void;
172
+ stop: () => void;
173
+ reset: () => void;
174
+ }
175
+ declare function useStagger(options: NativeStaggerOptions): NativeStaggerReturn;
176
+
177
+ export { MotionStateManager, type NativeBounceInOptions, type NativeFadeInOptions, type NativeMotionOptions, type NativeMotionReturn, type NativePulseOptions, type NativeScaleInOptions, type NativeSlideOptions, type NativeSpringMotionOptions, type NativeSpringMotionReturn, type NativeStaggerItem, type NativeStaggerOptions, type NativeStaggerReturn, useBounceIn, useFadeIn, usePulse, useScaleIn, useSlideDown, useSlideLeft, useSlideRight, useSlideUp, useSpringMotion, useStagger };
@@ -0,0 +1,177 @@
1
+ import { M as MotionElement, _ as MotionState } from './springPhysics-DLyZ4nbx.js';
2
+ export { B as BaseMotionOptions, e as BounceOptions, p as BuiltInProfileName, D as DeepPartial, q as EasingFunction, r as EasingType, F as FadeInOptions, u as MOTION_PRESETS, v as MotionCallback, x as MotionDirection, y as MotionEasing, z as MotionEngine, A as MotionFrame, C as MotionInstance, J as MotionOptions, L as MotionProfile, N as MotionProfileBase, O as MotionProfileEntrance, Q as MotionProfileInteraction, U as MotionProfileProvider, V as MotionProfileProviderProps, X as MotionProfileSpring, Y as MotionProfileStagger, Z as MotionProgressCallback, a0 as MotionTrigger, a3 as PAGE_MOTIONS, f as PulseOptions, a7 as ReducedMotionStrategy, d as ScaleOptions, S as SlideOptions, a8 as SpringConfig, g as SpringOptions, a9 as SpringPhysicsConfig, aa as SpringResult, ab as TransitionEffects, ac as TransitionOptions, ad as TransitionType, ae as applyEasing, af as calculateSpring, ag as easeIn, ah as easeInOut, ai as easeInOutQuad, aj as easeInQuad, ak as easeOut, al as easeOutQuad, am as easingPresets, an as getAvailableEasings, ao as getEasing, ap as getMotionPreset, aq as getPagePreset, ar as getPresetEasing, as as hua, at as isEasingFunction, au as isValidEasing, av as linear, aw as mergeProfileOverrides, ax as mergeWithPreset, ay as motionEngine, az as neutral, aA as resolveProfile, aB as safeApplyEasing, aC as transitionEffects, aD as useMotionProfile } from './springPhysics-DLyZ4nbx.js';
3
+ import { ViewStyle, Animated } from 'react-native';
4
+ import 'react';
5
+
6
+ /**
7
+ * MotionStateManager - 모션 상태 관리 클래스
8
+ *
9
+ * 상태 충돌 문제 해결을 위해 3가지 상태를 분리:
10
+ * - internalVisibility: 내부 로직 (초기화, 리셋 등)
11
+ * - triggeredVisibility: 외부 트리거 (Intersection Observer)
12
+ * - finalVisibility: 최종 계산된 상태
13
+ */
14
+ declare class MotionStateManager {
15
+ private states;
16
+ private listeners;
17
+ /**
18
+ * 요소의 상태를 초기화
19
+ */
20
+ initializeElement(elementId: string, config: MotionElement): void;
21
+ /**
22
+ * 내부 가시성 상태 업데이트 (초기화, 리셋 등)
23
+ */
24
+ setInternalVisibility(elementId: string, visible: boolean): void;
25
+ /**
26
+ * 외부 트리거 가시성 상태 업데이트 (Intersection Observer)
27
+ */
28
+ setTriggeredVisibility(elementId: string, visible: boolean): void;
29
+ /**
30
+ * 모션 값 업데이트
31
+ */
32
+ updateMotionValues(elementId: string, values: Partial<MotionState>): void;
33
+ /**
34
+ * 최종 상태 계산
35
+ */
36
+ private computeFinalState;
37
+ /**
38
+ * 현재 상태 조회
39
+ */
40
+ getState(elementId: string): MotionState | undefined;
41
+ /**
42
+ * 모든 상태 조회
43
+ */
44
+ getAllStates(): Map<string, MotionState>;
45
+ /**
46
+ * 상태 변경 리스너 등록
47
+ */
48
+ subscribe(elementId: string, listener: (state: MotionState) => void): () => void;
49
+ /**
50
+ * 리스너들에게 상태 변경 알림
51
+ */
52
+ notifyListeners(elementId: string, state: MotionState): void;
53
+ /**
54
+ * 모든 상태 초기화
55
+ */
56
+ reset(): void;
57
+ /**
58
+ * 특정 요소 상태 초기화
59
+ */
60
+ resetElement(elementId: string): void;
61
+ /**
62
+ * 디버그용 상태 출력
63
+ */
64
+ debug(): void;
65
+ }
66
+
67
+ /** Animated-compatible style — each property can be a static value or Animated.Value */
68
+ type NativeAnimatedStyle = {
69
+ [K in keyof ViewStyle]?: ViewStyle[K] | Animated.Value | Animated.AnimatedInterpolation;
70
+ };
71
+ /**
72
+ * Native motion hook return type.
73
+ * style is an Animated-compatible object for use with Animated.View.
74
+ */
75
+ interface NativeMotionReturn {
76
+ style: NativeAnimatedStyle;
77
+ isVisible: boolean;
78
+ isAnimating: boolean;
79
+ progress: number;
80
+ start: () => void;
81
+ stop: () => void;
82
+ reset: () => void;
83
+ }
84
+ interface NativeMotionOptions {
85
+ duration?: number;
86
+ delay?: number;
87
+ easing?: (t: number) => number;
88
+ autoStart?: boolean;
89
+ useNativeDriver?: boolean;
90
+ onComplete?: () => void;
91
+ onStart?: () => void;
92
+ }
93
+
94
+ interface NativeFadeInOptions extends NativeMotionOptions {
95
+ initialOpacity?: number;
96
+ targetOpacity?: number;
97
+ }
98
+ declare function useFadeIn(options?: NativeFadeInOptions): NativeMotionReturn;
99
+
100
+ interface NativeSlideOptions extends NativeMotionOptions {
101
+ distance?: number;
102
+ }
103
+ declare function useSlideUp(options?: NativeSlideOptions): NativeMotionReturn;
104
+ declare function useSlideDown(options?: NativeSlideOptions): NativeMotionReturn;
105
+ declare function useSlideLeft(options?: NativeSlideOptions): NativeMotionReturn;
106
+ declare function useSlideRight(options?: NativeSlideOptions): NativeMotionReturn;
107
+
108
+ interface NativeScaleInOptions extends NativeMotionOptions {
109
+ initialScale?: number;
110
+ targetScale?: number;
111
+ }
112
+ declare function useScaleIn(options?: NativeScaleInOptions): NativeMotionReturn;
113
+
114
+ interface NativeBounceInOptions extends NativeMotionOptions {
115
+ initialScale?: number;
116
+ /** Spring friction (lower = more bouncy) @default 4 */
117
+ friction?: number;
118
+ /** Spring tension @default 80 */
119
+ tension?: number;
120
+ }
121
+ declare function useBounceIn(options?: NativeBounceInOptions): NativeMotionReturn;
122
+
123
+ interface NativeSpringMotionOptions extends NativeMotionOptions {
124
+ from: number;
125
+ to: number;
126
+ friction?: number;
127
+ tension?: number;
128
+ enabled?: boolean;
129
+ }
130
+ interface NativeSpringMotionReturn {
131
+ value: Animated.Value;
132
+ isAnimating: boolean;
133
+ start: () => void;
134
+ stop: () => void;
135
+ reset: () => void;
136
+ animateTo: (toValue: number) => void;
137
+ }
138
+ declare function useSpringMotion(options: NativeSpringMotionOptions): NativeSpringMotionReturn;
139
+
140
+ interface NativePulseOptions extends NativeMotionOptions {
141
+ /** Min opacity @default 0.3 */
142
+ minOpacity?: number;
143
+ /** Number of iterations (Infinity for forever) @default Infinity */
144
+ iterations?: number;
145
+ }
146
+ declare function usePulse(options?: NativePulseOptions): NativeMotionReturn;
147
+
148
+ interface NativeStaggerOptions extends NativeMotionOptions {
149
+ /** Number of items */
150
+ count: number;
151
+ /** Delay between each item (ms) @default 100 */
152
+ staggerDelay?: number;
153
+ /** Motion type @default 'fadeIn' */
154
+ motionType?: 'fadeIn' | 'slideUp' | 'scaleIn';
155
+ /** Slide distance (px, for slideUp) @default 20 */
156
+ distance?: number;
157
+ }
158
+ interface NativeStaggerItem {
159
+ style: {
160
+ opacity: Animated.Value;
161
+ transform?: Array<{
162
+ translateY: Animated.Value;
163
+ } | {
164
+ scale: Animated.Value;
165
+ }>;
166
+ };
167
+ }
168
+ interface NativeStaggerReturn {
169
+ items: NativeStaggerItem[];
170
+ isVisible: boolean;
171
+ start: () => void;
172
+ stop: () => void;
173
+ reset: () => void;
174
+ }
175
+ declare function useStagger(options: NativeStaggerOptions): NativeStaggerReturn;
176
+
177
+ export { MotionStateManager, type NativeBounceInOptions, type NativeFadeInOptions, type NativeMotionOptions, type NativeMotionReturn, type NativePulseOptions, type NativeScaleInOptions, type NativeSlideOptions, type NativeSpringMotionOptions, type NativeSpringMotionReturn, type NativeStaggerItem, type NativeStaggerOptions, type NativeStaggerReturn, useBounceIn, useFadeIn, usePulse, useScaleIn, useSlideDown, useSlideLeft, useSlideRight, useSlideUp, useSpringMotion, useStagger };