@hua-labs/motion-core 2.0.0 → 2.1.0-alpha.0.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.
Files changed (130) hide show
  1. package/README.md +16 -19
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/core/MotionEngine.d.ts +111 -0
  4. package/dist/core/MotionEngine.d.ts.map +1 -0
  5. package/dist/core/MotionEngine.js +206 -0
  6. package/dist/core/MotionEngine.js.map +1 -0
  7. package/dist/core/PerformanceOptimizer.d.ts +124 -0
  8. package/dist/core/PerformanceOptimizer.d.ts.map +1 -0
  9. package/dist/core/PerformanceOptimizer.js +334 -0
  10. package/dist/core/PerformanceOptimizer.js.map +1 -0
  11. package/dist/core/TransitionEffects.d.ts +76 -0
  12. package/dist/core/TransitionEffects.d.ts.map +1 -0
  13. package/dist/core/TransitionEffects.js +321 -0
  14. package/dist/core/TransitionEffects.js.map +1 -0
  15. package/dist/hooks/useBounceIn.d.ts +11 -2
  16. package/dist/hooks/useBounceIn.d.ts.map +1 -1
  17. package/dist/hooks/useBounceIn.js +48 -114
  18. package/dist/hooks/useBounceIn.js.map +1 -1
  19. package/dist/hooks/useClickToggle.d.ts +28 -13
  20. package/dist/hooks/useClickToggle.d.ts.map +1 -1
  21. package/dist/hooks/useClickToggle.js +125 -90
  22. package/dist/hooks/useClickToggle.js.map +1 -1
  23. package/dist/hooks/useFadeIn.d.ts +0 -14
  24. package/dist/hooks/useFadeIn.d.ts.map +1 -1
  25. package/dist/hooks/useFadeIn.js +17 -43
  26. package/dist/hooks/useFadeIn.js.map +1 -1
  27. package/dist/hooks/useFocusToggle.d.ts +28 -13
  28. package/dist/hooks/useFocusToggle.d.ts.map +1 -1
  29. package/dist/hooks/useFocusToggle.js +125 -87
  30. package/dist/hooks/useFocusToggle.js.map +1 -1
  31. package/dist/hooks/useGesture.d.ts +45 -0
  32. package/dist/hooks/useGesture.d.ts.map +1 -0
  33. package/dist/hooks/useGesture.js +274 -0
  34. package/dist/hooks/useGesture.js.map +1 -0
  35. package/dist/hooks/useGestureMotion.d.ts +26 -0
  36. package/dist/hooks/useGestureMotion.d.ts.map +1 -0
  37. package/dist/hooks/useGestureMotion.js +167 -0
  38. package/dist/hooks/useGestureMotion.js.map +1 -0
  39. package/dist/hooks/useGradient.d.ts +10 -21
  40. package/dist/hooks/useGradient.d.ts.map +1 -1
  41. package/dist/hooks/useGradient.js +70 -127
  42. package/dist/hooks/useGradient.js.map +1 -1
  43. package/dist/hooks/useHoverMotion.d.ts +4 -14
  44. package/dist/hooks/useHoverMotion.d.ts.map +1 -1
  45. package/dist/hooks/useHoverMotion.js +31 -82
  46. package/dist/hooks/useHoverMotion.js.map +1 -1
  47. package/dist/hooks/useMotionState.d.ts +27 -24
  48. package/dist/hooks/useMotionState.d.ts.map +1 -1
  49. package/dist/hooks/useMotionState.js +186 -103
  50. package/dist/hooks/useMotionState.js.map +1 -1
  51. package/dist/hooks/usePageMotions.d.ts +17 -0
  52. package/dist/hooks/usePageMotions.d.ts.map +1 -0
  53. package/dist/hooks/usePageMotions.js +352 -0
  54. package/dist/hooks/usePageMotions.js.map +1 -0
  55. package/dist/hooks/usePulse.d.ts +8 -1
  56. package/dist/hooks/usePulse.d.ts.map +1 -1
  57. package/dist/hooks/usePulse.js +75 -101
  58. package/dist/hooks/usePulse.js.map +1 -1
  59. package/dist/hooks/useRepeat.d.ts +17 -22
  60. package/dist/hooks/useRepeat.d.ts.map +1 -1
  61. package/dist/hooks/useRepeat.js +48 -162
  62. package/dist/hooks/useRepeat.js.map +1 -1
  63. package/dist/hooks/useScaleIn.d.ts +12 -2
  64. package/dist/hooks/useScaleIn.d.ts.map +1 -1
  65. package/dist/hooks/useScaleIn.js +46 -85
  66. package/dist/hooks/useScaleIn.js.map +1 -1
  67. package/dist/hooks/useScrollProgress.d.ts +8 -18
  68. package/dist/hooks/useScrollProgress.d.ts.map +1 -1
  69. package/dist/hooks/useScrollProgress.js +28 -130
  70. package/dist/hooks/useScrollProgress.js.map +1 -1
  71. package/dist/hooks/useScrollReveal.d.ts +12 -15
  72. package/dist/hooks/useScrollReveal.d.ts.map +1 -1
  73. package/dist/hooks/useScrollReveal.js +93 -72
  74. package/dist/hooks/useScrollReveal.js.map +1 -1
  75. package/dist/hooks/useSimplePageMotion.d.ts +29 -0
  76. package/dist/hooks/useSimplePageMotion.d.ts.map +1 -0
  77. package/dist/hooks/useSimplePageMotion.js +145 -0
  78. package/dist/hooks/useSimplePageMotion.js.map +1 -0
  79. package/dist/hooks/useSlideLeft.d.ts +12 -2
  80. package/dist/hooks/useSlideLeft.d.ts.map +1 -1
  81. package/dist/hooks/useSlideLeft.js +46 -85
  82. package/dist/hooks/useSlideLeft.js.map +1 -1
  83. package/dist/hooks/useSlideRight.d.ts +12 -2
  84. package/dist/hooks/useSlideRight.d.ts.map +1 -1
  85. package/dist/hooks/useSlideRight.js +46 -85
  86. package/dist/hooks/useSlideRight.js.map +1 -1
  87. package/dist/hooks/useSlideUp.d.ts.map +1 -1
  88. package/dist/hooks/useSlideUp.js +40 -29
  89. package/dist/hooks/useSlideUp.js.map +1 -1
  90. package/dist/hooks/useSmartMotion.d.ts +31 -0
  91. package/dist/hooks/useSmartMotion.d.ts.map +1 -0
  92. package/dist/hooks/useSmartMotion.js +257 -0
  93. package/dist/hooks/useSmartMotion.js.map +1 -0
  94. package/dist/hooks/useSpringMotion.d.ts +14 -24
  95. package/dist/hooks/useSpringMotion.d.ts.map +1 -1
  96. package/dist/hooks/useSpringMotion.js +109 -161
  97. package/dist/hooks/useSpringMotion.js.map +1 -1
  98. package/dist/hooks/useToggleMotion.d.ts +16 -0
  99. package/dist/hooks/useToggleMotion.d.ts.map +1 -0
  100. package/dist/hooks/useToggleMotion.js +53 -0
  101. package/dist/hooks/useToggleMotion.js.map +1 -0
  102. package/dist/hooks/useUnifiedMotion.d.ts +51 -0
  103. package/dist/hooks/useUnifiedMotion.d.ts.map +1 -0
  104. package/dist/hooks/useUnifiedMotion.js +106 -0
  105. package/dist/hooks/useUnifiedMotion.js.map +1 -0
  106. package/dist/index.d.ts +14 -10
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +37 -17
  109. package/dist/index.js.map +1 -1
  110. package/dist/managers/MotionStateManager.d.ts +63 -0
  111. package/dist/managers/MotionStateManager.d.ts.map +1 -0
  112. package/dist/managers/MotionStateManager.js +159 -0
  113. package/dist/managers/MotionStateManager.js.map +1 -0
  114. package/dist/presets/index.d.ts +16 -0
  115. package/dist/presets/index.d.ts.map +1 -0
  116. package/dist/presets/index.js +120 -0
  117. package/dist/presets/index.js.map +1 -0
  118. package/dist/types/common.d.ts +155 -0
  119. package/dist/types/common.d.ts.map +1 -0
  120. package/dist/types/common.js +5 -0
  121. package/dist/types/common.js.map +1 -0
  122. package/dist/types/index.d.ts +63 -95
  123. package/dist/types/index.d.ts.map +1 -1
  124. package/dist/types/index.js +2 -2
  125. package/dist/types/index.js.map +1 -1
  126. package/dist/utils/easing.d.ts +80 -26
  127. package/dist/utils/easing.d.ts.map +1 -1
  128. package/dist/utils/easing.js +202 -67
  129. package/dist/utils/easing.js.map +1 -1
  130. package/package.json +15 -15
@@ -1,15 +1,30 @@
1
- import { BaseMotionOptions, InteractionReturn, MotionElement } from '../types';
2
- export interface ClickToggleOptions extends BaseMotionOptions {
3
- clickScale?: number;
4
- clickOpacity?: number;
5
- clickRotate?: number;
6
- clickTranslateY?: number;
7
- clickTranslateX?: number;
8
- initialScale?: number;
9
- initialOpacity?: number;
10
- initialRotate?: number;
11
- initialTranslateY?: number;
12
- initialTranslateX?: number;
1
+ interface ClickToggleOptions {
2
+ initialState?: boolean;
3
+ toggleOnClick?: boolean;
4
+ toggleOnDoubleClick?: boolean;
5
+ toggleOnRightClick?: boolean;
6
+ toggleOnEnter?: boolean;
7
+ toggleOnSpace?: boolean;
8
+ autoReset?: boolean;
9
+ resetDelay?: number;
10
+ preventDefault?: boolean;
11
+ stopPropagation?: boolean;
12
+ showOnMount?: boolean;
13
13
  }
14
- export declare function useClickToggle<T extends MotionElement = HTMLDivElement>(options?: ClickToggleOptions): InteractionReturn<T>;
14
+ interface ClickToggleReturn {
15
+ isActive: boolean;
16
+ mounted: boolean;
17
+ toggle: () => void;
18
+ activate: () => void;
19
+ deactivate: () => void;
20
+ reset: () => void;
21
+ clickHandlers: {
22
+ onClick?: (event: React.MouseEvent) => void;
23
+ onDoubleClick?: (event: React.MouseEvent) => void;
24
+ onContextMenu?: (event: React.MouseEvent) => void;
25
+ onKeyDown?: (event: React.KeyboardEvent) => void;
26
+ };
27
+ }
28
+ export declare function useClickToggle(options?: ClickToggleOptions): ClickToggleReturn;
29
+ export {};
15
30
  //# sourceMappingURL=useClickToggle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useClickToggle.d.ts","sourceRoot":"","sources":["../../src/hooks/useClickToggle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE9E,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,aAAa,GAAG,cAAc,EACrE,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAAC,CAAC,CAAC,CA+HtB"}
1
+ {"version":3,"file":"useClickToggle.d.ts","sourceRoot":"","sources":["../../src/hooks/useClickToggle.ts"],"names":[],"mappings":"AAEA,UAAU,kBAAkB;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,aAAa,EAAE;QACb,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;QAC3C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;QACjD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;QACjD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAA;KACjD,CAAA;CACF;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CAgKlF"}
@@ -1,102 +1,137 @@
1
- import { useRef, useState, useCallback, useEffect } from 'react';
1
+ import { useState, useEffect, useRef, useCallback } from 'react';
2
2
  export function useClickToggle(options = {}) {
3
- const { duration = 300, easing = 'ease-out', clickScale = 0.95, clickOpacity = 0.8, clickRotate = 0, clickTranslateY = 0, clickTranslateX = 0, initialScale = 1, initialOpacity = 1, initialRotate = 0, initialTranslateY = 0, initialTranslateX = 0, onComplete, onStart, onStop, onReset } = options;
4
- const ref = useRef(null);
5
- const [isClicked, setIsClicked] = useState(false);
6
- const [isAnimating, setIsAnimating] = useState(false);
7
- const [progress, setProgress] = useState(0);
8
- // 클릭 시작
9
- const handleMouseDown = useCallback(() => {
10
- setIsClicked(true);
11
- setIsAnimating(true);
12
- setProgress(0);
13
- onStart?.();
14
- // 애니메이션 완료 시
15
- setTimeout(() => {
16
- setIsAnimating(false);
17
- setProgress(1);
18
- onComplete?.();
19
- }, duration);
20
- }, [duration, onStart, onComplete]);
21
- // 클릭 종료
22
- const handleMouseUp = useCallback(() => {
23
- setIsClicked(false);
24
- setIsAnimating(true);
25
- setProgress(1);
26
- // 애니메이션 완료 시
27
- setTimeout(() => {
28
- setIsAnimating(false);
29
- setProgress(0);
30
- }, duration);
31
- }, [duration]);
32
- // 모션 시작 함수 (프로그래매틱 제어용)
33
- const start = useCallback(() => {
34
- handleMouseDown();
35
- }, [handleMouseDown]);
36
- // 모션 중단 함수
37
- const stop = useCallback(() => {
38
- setIsAnimating(false);
39
- onStop?.();
40
- }, [onStop]);
41
- // 모션 리셋 함수
42
- const reset = useCallback(() => {
43
- setIsClicked(false);
44
- setIsAnimating(false);
45
- setProgress(0);
46
- onReset?.();
47
- }, [onReset]);
48
- // 모션 일시정지 함수
49
- const pause = useCallback(() => {
50
- setIsAnimating(false);
3
+ const { initialState = false, toggleOnClick = true, toggleOnDoubleClick = false, toggleOnRightClick = false, toggleOnEnter = true, toggleOnSpace = true, autoReset = false, resetDelay = 3000, preventDefault = false, stopPropagation = false, showOnMount = false } = options;
4
+ const [isActive, setIsActive] = useState(showOnMount ? initialState : false);
5
+ const [mounted, setMounted] = useState(false);
6
+ const resetTimeoutRef = useRef(null);
7
+ // 하이드레이션 이슈 해결을 위한 mounted 상태 관리
8
+ useEffect(() => {
9
+ setMounted(true);
51
10
  }, []);
52
- // 모션 재개 함수
53
- const resume = useCallback(() => {
54
- if (isClicked) {
55
- setIsAnimating(true);
11
+ // 자동 리셋 타이머 관리
12
+ const startResetTimer = useCallback(() => {
13
+ if (!autoReset || resetDelay <= 0)
14
+ return;
15
+ // 기존 타이머 클리어
16
+ if (resetTimeoutRef.current !== null) {
17
+ clearTimeout(resetTimeoutRef.current);
56
18
  }
57
- }, [isClicked]);
58
- // 이벤트 리스너 설정
59
- useEffect(() => {
60
- const element = ref.current;
61
- if (!element)
19
+ // 새 타이머 설정
20
+ resetTimeoutRef.current = window.setTimeout(() => {
21
+ setIsActive(false);
22
+ resetTimeoutRef.current = null;
23
+ }, resetDelay);
24
+ }, [autoReset, resetDelay]);
25
+ // 토글 함수
26
+ const toggle = useCallback(() => {
27
+ if (!mounted)
28
+ return;
29
+ setIsActive(prev => {
30
+ const newState = !prev;
31
+ // 자동 리셋 타이머 시작
32
+ if (newState && autoReset) {
33
+ startResetTimer();
34
+ }
35
+ else if (!newState && resetTimeoutRef.current !== null) {
36
+ // 비활성화 시 타이머 클리어
37
+ clearTimeout(resetTimeoutRef.current);
38
+ resetTimeoutRef.current = null;
39
+ }
40
+ return newState;
41
+ });
42
+ }, [mounted, autoReset, startResetTimer]);
43
+ // 활성화 함수
44
+ const activate = useCallback(() => {
45
+ if (!mounted || isActive)
46
+ return;
47
+ setIsActive(true);
48
+ if (autoReset) {
49
+ startResetTimer();
50
+ }
51
+ }, [mounted, isActive, autoReset, startResetTimer]);
52
+ // 비활성화 함수
53
+ const deactivate = useCallback(() => {
54
+ if (!mounted || !isActive)
55
+ return;
56
+ setIsActive(false);
57
+ if (resetTimeoutRef.current !== null) {
58
+ clearTimeout(resetTimeoutRef.current);
59
+ resetTimeoutRef.current = null;
60
+ }
61
+ }, [mounted, isActive]);
62
+ // 리셋 함수
63
+ const reset = useCallback(() => {
64
+ setIsActive(initialState);
65
+ if (resetTimeoutRef.current !== null) {
66
+ clearTimeout(resetTimeoutRef.current);
67
+ resetTimeoutRef.current = null;
68
+ }
69
+ }, [initialState]);
70
+ // 클릭 핸들러
71
+ const handleClick = useCallback((event) => {
72
+ if (!toggleOnClick)
73
+ return;
74
+ if (preventDefault)
75
+ event.preventDefault();
76
+ if (stopPropagation)
77
+ event.stopPropagation();
78
+ toggle();
79
+ }, [toggleOnClick, preventDefault, stopPropagation, toggle]);
80
+ // 더블클릭 핸들러
81
+ const handleDoubleClick = useCallback((event) => {
82
+ if (!toggleOnDoubleClick)
62
83
  return;
63
- element.addEventListener('mousedown', handleMouseDown);
64
- element.addEventListener('mouseup', handleMouseUp);
65
- element.addEventListener('mouseleave', handleMouseUp); // 마우스가 요소를 벗어나면 클릭 상태 해제
84
+ if (preventDefault)
85
+ event.preventDefault();
86
+ if (stopPropagation)
87
+ event.stopPropagation();
88
+ toggle();
89
+ }, [toggleOnDoubleClick, preventDefault, stopPropagation, toggle]);
90
+ // 우클릭 핸들러
91
+ const handleContextMenu = useCallback((event) => {
92
+ if (!toggleOnRightClick)
93
+ return;
94
+ if (preventDefault)
95
+ event.preventDefault();
96
+ if (stopPropagation)
97
+ event.stopPropagation();
98
+ toggle();
99
+ }, [toggleOnRightClick, preventDefault, stopPropagation, toggle]);
100
+ // 키보드 핸들러
101
+ const handleKeyDown = useCallback((event) => {
102
+ const shouldToggle = (event.key === 'Enter' && toggleOnEnter) ||
103
+ (event.key === ' ' && toggleOnSpace);
104
+ if (!shouldToggle)
105
+ return;
106
+ if (preventDefault)
107
+ event.preventDefault();
108
+ if (stopPropagation)
109
+ event.stopPropagation();
110
+ toggle();
111
+ }, [toggleOnEnter, toggleOnSpace, preventDefault, stopPropagation, toggle]);
112
+ // 클린업
113
+ useEffect(() => {
66
114
  return () => {
67
- element.removeEventListener('mousedown', handleMouseDown);
68
- element.removeEventListener('mouseup', handleMouseUp);
69
- element.removeEventListener('mouseleave', handleMouseUp);
115
+ if (resetTimeoutRef.current !== null) {
116
+ clearTimeout(resetTimeoutRef.current);
117
+ }
70
118
  };
71
- }, [handleMouseDown, handleMouseUp]);
72
- // 스타일 계산
73
- const style = {
74
- transform: `
75
- scale(${isClicked ? clickScale : initialScale})
76
- rotate(${isClicked ? clickRotate : initialRotate}deg)
77
- translate(${isClicked ? clickTranslateX : initialTranslateX}px, ${isClicked ? clickTranslateY : initialTranslateY}px)
78
- `,
79
- opacity: isClicked ? clickOpacity : initialOpacity,
80
- transition: `all ${duration}ms ${easing}`,
81
- willChange: 'transform, opacity',
82
- cursor: 'pointer'
119
+ }, []);
120
+ // 클릭 핸들러 객체 생성
121
+ const clickHandlers = {
122
+ ...(toggleOnClick && { onClick: handleClick }),
123
+ ...(toggleOnDoubleClick && { onDoubleClick: handleDoubleClick }),
124
+ ...(toggleOnRightClick && { onContextMenu: handleContextMenu }),
125
+ ...((toggleOnEnter || toggleOnSpace) && { onKeyDown: handleKeyDown })
83
126
  };
84
127
  return {
85
- ref,
86
- isVisible: isClicked,
87
- isAnimating,
88
- style,
89
- progress,
90
- start,
91
- stop,
128
+ isActive,
129
+ mounted,
130
+ toggle,
131
+ activate,
132
+ deactivate,
92
133
  reset,
93
- pause,
94
- resume,
95
- // 새로운 직관적 API 추가
96
- click: handleMouseDown,
97
- release: handleMouseUp,
98
- // 상태 속성 추가
99
- isClicked
134
+ clickHandlers
100
135
  };
101
136
  }
102
137
  //# sourceMappingURL=useClickToggle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useClickToggle.js","sourceRoot":"","sources":["../../src/hooks/useClickToggle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useClickToggle.js","sourceRoot":"","sources":["../../src/hooks/useClickToggle.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,3 @@
1
1
  import { FadeInOptions, BaseMotionReturn, MotionElement } from '../types';
2
- /**
3
- * 요소가 화면에 나타날 때 페이드인 효과를 적용합니다
4
- *
5
- * @example
6
- * ```tsx
7
- * const { ref, style } = useFadeIn({
8
- * delay: 200, // 지연 시간
9
- * duration: 700, // 지속 시간
10
- * triggerOnce: true // 한 번만 실행
11
- * })
12
- *
13
- * return <div ref={ref} style={style}>페이드인 효과</div>
14
- * ```
15
- */
16
2
  export declare function useFadeIn<T extends MotionElement = HTMLDivElement>(options?: FadeInOptions): BaseMotionReturn<T>;
17
3
  //# sourceMappingURL=useFadeIn.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFadeIn.d.ts","sourceRoot":"","sources":["../../src/hooks/useFadeIn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAEzE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,aAAa,GAAG,cAAc,EAChE,OAAO,GAAE,aAAkB,GAC1B,gBAAgB,CAAC,CAAC,CAAC,CAgJrB"}
1
+ {"version":3,"file":"useFadeIn.d.ts","sourceRoot":"","sources":["../../src/hooks/useFadeIn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAEzE,wBAAgB,SAAS,CAAC,CAAC,SAAS,aAAa,GAAG,cAAc,EAChE,OAAO,GAAE,aAAkB,GAC1B,gBAAgB,CAAC,CAAC,CAAC,CAmIrB"}
@@ -1,18 +1,4 @@
1
- import { useRef, useState, useEffect, useCallback } from 'react';
2
- /**
3
- * 요소가 화면에 나타날 때 페이드인 효과를 적용합니다
4
- *
5
- * @example
6
- * ```tsx
7
- * const { ref, style } = useFadeIn({
8
- * delay: 200, // 지연 시간
9
- * duration: 700, // 지속 시간
10
- * triggerOnce: true // 한 번만 실행
11
- * })
12
- *
13
- * return <div ref={ref} style={style}>페이드인 효과</div>
14
- * ```
15
- */
1
+ import { useRef, useState, useEffect, useCallback, useMemo } from 'react';
16
2
  export function useFadeIn(options = {}) {
17
3
  const { delay = 0, duration = 700, threshold = 0.1, triggerOnce = true, easing = 'ease-out', autoStart = true, initialOpacity = 0, targetOpacity = 1, onComplete, onStart, onStop, onReset } = options;
18
4
  const ref = useRef(null);
@@ -65,20 +51,6 @@ export function useFadeIn(options = {}) {
65
51
  setProgress(0);
66
52
  onReset?.();
67
53
  }, [stop, onReset]);
68
- // 모션 일시정지 함수
69
- const pause = useCallback(() => {
70
- if (timeoutRef.current) {
71
- clearTimeout(timeoutRef.current);
72
- timeoutRef.current = null;
73
- }
74
- setIsAnimating(false);
75
- }, []);
76
- // 모션 재개 함수
77
- const resume = useCallback(() => {
78
- if (!isVisible && !isAnimating) {
79
- start();
80
- }
81
- }, [isVisible, isAnimating, start]);
82
54
  // Intersection Observer 설정
83
55
  useEffect(() => {
84
56
  if (!ref.current || !autoStart)
@@ -100,23 +72,27 @@ export function useFadeIn(options = {}) {
100
72
  }
101
73
  };
102
74
  }, [autoStart, threshold, triggerOnce, start]);
75
+ // 자동 시작이 비활성화된 경우 수동 시작
76
+ useEffect(() => {
77
+ if (!autoStart) {
78
+ start();
79
+ }
80
+ }, [autoStart, start]);
103
81
  // 컴포넌트 언마운트 시 정리
104
82
  useEffect(() => {
105
83
  return () => {
106
- if (timeoutRef.current) {
107
- clearTimeout(timeoutRef.current);
108
- }
109
- if (motionRef.current) {
110
- cancelAnimationFrame(motionRef.current);
111
- }
84
+ stop();
112
85
  };
113
- }, []);
114
- // 스타일 계산
115
- const style = {
86
+ }, [stop]);
87
+ // 스타일 계산 (React 19 호환) - 메모이제이션으로 불필요한 리렌더링 방지
88
+ const style = useMemo(() => ({
116
89
  opacity: isVisible ? targetOpacity : initialOpacity,
117
90
  transition: `opacity ${duration}ms ${easing}`,
118
- willChange: 'opacity'
119
- };
91
+ '--motion-delay': `${delay}ms`,
92
+ '--motion-duration': `${duration}ms`,
93
+ '--motion-easing': easing,
94
+ '--motion-progress': `${progress}`
95
+ }), [isVisible, targetOpacity, initialOpacity, duration, easing, delay, progress]);
120
96
  return {
121
97
  ref,
122
98
  isVisible,
@@ -125,9 +101,7 @@ export function useFadeIn(options = {}) {
125
101
  progress,
126
102
  start,
127
103
  stop,
128
- reset,
129
- pause,
130
- resume
104
+ reset
131
105
  };
132
106
  }
133
107
  //# sourceMappingURL=useFadeIn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFadeIn.js","sourceRoot":"","sources":["../../src/hooks/useFadeIn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useFadeIn.js","sourceRoot":"","sources":["../../src/hooks/useFadeIn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAGzE,MAAM,UAAU,SAAS,CACvB,UAAyB,EAAE;IAE3B,MAAM,EACJ,KAAK,GAAG,CAAC,EACT,QAAQ,GAAG,GAAG,EACd,SAAS,GAAG,GAAG,EACf,WAAW,GAAG,IAAI,EAClB,MAAM,GAAG,UAAU,EACnB,SAAS,GAAG,IAAI,EAChB,cAAc,GAAG,CAAC,EAClB,aAAa,GAAG,CAAC,EACjB,UAAU,EACV,OAAO,EACP,MAAM,EACN,OAAO,EACR,GAAG,OAAO,CAAA;IAEX,MAAM,GAAG,GAAG,MAAM,CAAI,IAAI,CAAC,CAAA;IAC3B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC3C,MAAM,WAAW,GAAG,MAAM,CAA8B,IAAI,CAAC,CAAA;IAC7D,MAAM,SAAS,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAA;IAC7C,MAAM,UAAU,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAA;IAE9C,WAAW;IACX,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,IAAI,WAAW;YAAE,OAAM;QAEvB,cAAc,CAAC,IAAI,CAAC,CAAA;QACpB,WAAW,CAAC,CAAC,CAAC,CAAA;QACd,OAAO,EAAE,EAAE,CAAA;QAEX,WAAW;QACX,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBAC1C,YAAY,CAAC,IAAI,CAAC,CAAA;gBAClB,WAAW,CAAC,CAAC,CAAC,CAAA;gBACd,cAAc,CAAC,KAAK,CAAC,CAAA;gBACrB,UAAU,EAAE,EAAE,CAAA;YAChB,CAAC,EAAE,KAAK,CAAC,CAAA;QACX,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,CAAA;YAClB,WAAW,CAAC,CAAC,CAAC,CAAA;YACd,cAAc,CAAC,KAAK,CAAC,CAAA;YACrB,UAAU,EAAE,EAAE,CAAA;QAChB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;IAE7C,WAAW;IACX,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;YAChC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAA;QAC3B,CAAC;QACD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACvC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAA;QAC1B,CAAC;QACD,cAAc,CAAC,KAAK,CAAC,CAAA;QACrB,MAAM,EAAE,EAAE,CAAA;IACZ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,WAAW;IACX,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,IAAI,EAAE,CAAA;QACN,YAAY,CAAC,KAAK,CAAC,CAAA;QACnB,WAAW,CAAC,CAAC,CAAC,CAAA;QACd,OAAO,EAAE,EAAE,CAAA;IACb,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;IAEnB,2BAA2B;IAC3B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS;YAAE,OAAM;QAEtC,WAAW,CAAC,OAAO,GAAG,IAAI,oBAAoB,CAC5C,CAAC,OAAO,EAAE,EAAE;YACV,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;oBACzB,KAAK,EAAE,CAAA;oBACP,IAAI,WAAW,EAAE,CAAC;wBAChB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,CAAA;oBACnC,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,EACD,EAAE,SAAS,EAAE,CACd,CAAA;QAED,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAExC,OAAO,GAAG,EAAE;YACV,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxB,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,CAAA;YAClC,CAAC;QACH,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAA;IAE9C,wBAAwB;IACxB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,KAAK,EAAE,CAAA;QACT,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;IAEtB,iBAAiB;IACjB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,IAAI,EAAE,CAAA;QACR,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,+CAA+C;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;QACnD,UAAU,EAAE,WAAW,QAAQ,MAAM,MAAM,EAAE;QAC7C,gBAAgB,EAAE,GAAG,KAAK,IAAI;QAC9B,mBAAmB,EAAE,GAAG,QAAQ,IAAI;QACpC,iBAAiB,EAAE,MAAM;QACzB,mBAAmB,EAAE,GAAG,QAAQ,EAAE;KACzB,CAAA,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE3F,OAAO;QACL,GAAG;QACH,SAAS;QACT,WAAW;QACX,KAAK;QACL,QAAQ;QACR,KAAK;QACL,IAAI;QACJ,KAAK;KACN,CAAA;AACH,CAAC"}
@@ -1,15 +1,30 @@
1
- import { BaseMotionOptions, InteractionReturn, MotionElement } from '../types';
2
- export interface FocusToggleOptions extends BaseMotionOptions {
3
- focusScale?: number;
4
- focusOpacity?: number;
5
- focusRotate?: number;
6
- focusTranslateY?: number;
7
- focusTranslateX?: number;
8
- initialScale?: number;
9
- initialOpacity?: number;
10
- initialRotate?: number;
11
- initialTranslateY?: number;
12
- initialTranslateX?: number;
1
+ interface FocusToggleOptions {
2
+ initialState?: boolean;
3
+ toggleOnFocus?: boolean;
4
+ toggleOnBlur?: boolean;
5
+ toggleOnFocusIn?: boolean;
6
+ toggleOnFocusOut?: boolean;
7
+ autoReset?: boolean;
8
+ resetDelay?: number;
9
+ preventDefault?: boolean;
10
+ stopPropagation?: boolean;
11
+ showOnMount?: boolean;
13
12
  }
14
- export declare function useFocusToggle<T extends MotionElement = HTMLDivElement>(options?: FocusToggleOptions): InteractionReturn<T>;
13
+ interface FocusToggleReturn {
14
+ isActive: boolean;
15
+ mounted: boolean;
16
+ toggle: () => void;
17
+ activate: () => void;
18
+ deactivate: () => void;
19
+ reset: () => void;
20
+ focusHandlers: {
21
+ onFocus?: (event: React.FocusEvent) => void;
22
+ onBlur?: (event: React.FocusEvent) => void;
23
+ onFocusIn?: (event: React.FocusEvent) => void;
24
+ onFocusOut?: (event: React.FocusEvent) => void;
25
+ };
26
+ ref: React.RefObject<HTMLElement | null>;
27
+ }
28
+ export declare function useFocusToggle(options?: FocusToggleOptions): FocusToggleReturn;
29
+ export {};
15
30
  //# sourceMappingURL=useFocusToggle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusToggle.d.ts","sourceRoot":"","sources":["../../src/hooks/useFocusToggle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE9E,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,aAAa,GAAG,cAAc,EACrE,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAAC,CAAC,CAAC,CA6HtB"}
1
+ {"version":3,"file":"useFocusToggle.d.ts","sourceRoot":"","sources":["../../src/hooks/useFocusToggle.ts"],"names":[],"mappings":"AAEA,UAAU,kBAAkB;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,aAAa,EAAE;QACb,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;QAC3C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;QAC1C,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;QAC7C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;KAC/C,CAAA;IACD,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;CACzC;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CA6JlF"}