@hua-labs/motion-core 2.1.0-alpha.6 → 2.1.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/README.md +16 -10
  2. package/dist/index.d.mts +1091 -0
  3. package/dist/index.d.ts +1091 -35
  4. package/dist/index.js +4241 -65
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +4187 -0
  7. package/dist/index.mjs.map +1 -0
  8. package/package.json +7 -4
  9. package/dist/.tsbuildinfo +0 -1
  10. package/dist/core/MotionEngine.d.ts +0 -111
  11. package/dist/core/MotionEngine.d.ts.map +0 -1
  12. package/dist/core/MotionEngine.js +0 -206
  13. package/dist/core/MotionEngine.js.map +0 -1
  14. package/dist/core/PerformanceOptimizer.d.ts +0 -124
  15. package/dist/core/PerformanceOptimizer.d.ts.map +0 -1
  16. package/dist/core/PerformanceOptimizer.js +0 -334
  17. package/dist/core/PerformanceOptimizer.js.map +0 -1
  18. package/dist/core/TransitionEffects.d.ts +0 -76
  19. package/dist/core/TransitionEffects.d.ts.map +0 -1
  20. package/dist/core/TransitionEffects.js +0 -321
  21. package/dist/core/TransitionEffects.js.map +0 -1
  22. package/dist/hooks/useBounceIn.d.ts +0 -12
  23. package/dist/hooks/useBounceIn.d.ts.map +0 -1
  24. package/dist/hooks/useBounceIn.js +0 -75
  25. package/dist/hooks/useBounceIn.js.map +0 -1
  26. package/dist/hooks/useButtonEffect.d.ts +0 -48
  27. package/dist/hooks/useButtonEffect.d.ts.map +0 -1
  28. package/dist/hooks/useButtonEffect.js +0 -311
  29. package/dist/hooks/useButtonEffect.js.map +0 -1
  30. package/dist/hooks/useCardList.d.ts +0 -23
  31. package/dist/hooks/useCardList.d.ts.map +0 -1
  32. package/dist/hooks/useCardList.js +0 -119
  33. package/dist/hooks/useCardList.js.map +0 -1
  34. package/dist/hooks/useClickToggle.d.ts +0 -30
  35. package/dist/hooks/useClickToggle.d.ts.map +0 -1
  36. package/dist/hooks/useClickToggle.js +0 -137
  37. package/dist/hooks/useClickToggle.js.map +0 -1
  38. package/dist/hooks/useFadeIn.d.ts +0 -3
  39. package/dist/hooks/useFadeIn.d.ts.map +0 -1
  40. package/dist/hooks/useFadeIn.js +0 -107
  41. package/dist/hooks/useFadeIn.js.map +0 -1
  42. package/dist/hooks/useFocusToggle.d.ts +0 -30
  43. package/dist/hooks/useFocusToggle.d.ts.map +0 -1
  44. package/dist/hooks/useFocusToggle.js +0 -137
  45. package/dist/hooks/useFocusToggle.js.map +0 -1
  46. package/dist/hooks/useGesture.d.ts +0 -45
  47. package/dist/hooks/useGesture.d.ts.map +0 -1
  48. package/dist/hooks/useGesture.js +0 -274
  49. package/dist/hooks/useGesture.js.map +0 -1
  50. package/dist/hooks/useGestureMotion.d.ts +0 -26
  51. package/dist/hooks/useGestureMotion.d.ts.map +0 -1
  52. package/dist/hooks/useGestureMotion.js +0 -167
  53. package/dist/hooks/useGestureMotion.js.map +0 -1
  54. package/dist/hooks/useGradient.d.ts +0 -14
  55. package/dist/hooks/useGradient.d.ts.map +0 -1
  56. package/dist/hooks/useGradient.js +0 -87
  57. package/dist/hooks/useGradient.js.map +0 -1
  58. package/dist/hooks/useHoverMotion.d.ts +0 -5
  59. package/dist/hooks/useHoverMotion.d.ts.map +0 -1
  60. package/dist/hooks/useHoverMotion.js +0 -48
  61. package/dist/hooks/useHoverMotion.js.map +0 -1
  62. package/dist/hooks/useLoadingSpinner.d.ts +0 -30
  63. package/dist/hooks/useLoadingSpinner.d.ts.map +0 -1
  64. package/dist/hooks/useLoadingSpinner.js +0 -283
  65. package/dist/hooks/useLoadingSpinner.js.map +0 -1
  66. package/dist/hooks/useMotion.d.ts +0 -103
  67. package/dist/hooks/useMotion.d.ts.map +0 -1
  68. package/dist/hooks/useMotion.js +0 -266
  69. package/dist/hooks/useMotion.js.map +0 -1
  70. package/dist/hooks/useMotionState.d.ts +0 -29
  71. package/dist/hooks/useMotionState.d.ts.map +0 -1
  72. package/dist/hooks/useMotionState.js +0 -202
  73. package/dist/hooks/useMotionState.js.map +0 -1
  74. package/dist/hooks/useNavigation.d.ts +0 -40
  75. package/dist/hooks/useNavigation.d.ts.map +0 -1
  76. package/dist/hooks/useNavigation.js +0 -212
  77. package/dist/hooks/useNavigation.js.map +0 -1
  78. package/dist/hooks/usePageMotions.d.ts +0 -17
  79. package/dist/hooks/usePageMotions.d.ts.map +0 -1
  80. package/dist/hooks/usePageMotions.js +0 -352
  81. package/dist/hooks/usePageMotions.js.map +0 -1
  82. package/dist/hooks/usePulse.d.ts +0 -10
  83. package/dist/hooks/usePulse.d.ts.map +0 -1
  84. package/dist/hooks/usePulse.js +0 -108
  85. package/dist/hooks/usePulse.js.map +0 -1
  86. package/dist/hooks/useRepeat.d.ts +0 -21
  87. package/dist/hooks/useRepeat.d.ts.map +0 -1
  88. package/dist/hooks/useRepeat.js +0 -65
  89. package/dist/hooks/useRepeat.js.map +0 -1
  90. package/dist/hooks/useScaleIn.d.ts +0 -13
  91. package/dist/hooks/useScaleIn.d.ts.map +0 -1
  92. package/dist/hooks/useScaleIn.js +0 -72
  93. package/dist/hooks/useScaleIn.js.map +0 -1
  94. package/dist/hooks/useScrollProgress.d.ts +0 -11
  95. package/dist/hooks/useScrollProgress.d.ts.map +0 -1
  96. package/dist/hooks/useScrollProgress.js +0 -37
  97. package/dist/hooks/useScrollProgress.js.map +0 -1
  98. package/dist/hooks/useScrollReveal.d.ts +0 -14
  99. package/dist/hooks/useScrollReveal.d.ts.map +0 -1
  100. package/dist/hooks/useScrollReveal.js +0 -116
  101. package/dist/hooks/useScrollReveal.js.map +0 -1
  102. package/dist/hooks/useScrollToggle.d.ts +0 -17
  103. package/dist/hooks/useScrollToggle.d.ts.map +0 -1
  104. package/dist/hooks/useScrollToggle.js +0 -119
  105. package/dist/hooks/useScrollToggle.js.map +0 -1
  106. package/dist/hooks/useSimplePageMotion.d.ts +0 -29
  107. package/dist/hooks/useSimplePageMotion.d.ts.map +0 -1
  108. package/dist/hooks/useSimplePageMotion.js +0 -145
  109. package/dist/hooks/useSimplePageMotion.js.map +0 -1
  110. package/dist/hooks/useSkeleton.d.ts +0 -21
  111. package/dist/hooks/useSkeleton.d.ts.map +0 -1
  112. package/dist/hooks/useSkeleton.js +0 -139
  113. package/dist/hooks/useSkeleton.js.map +0 -1
  114. package/dist/hooks/useSlideDown.d.ts +0 -25
  115. package/dist/hooks/useSlideDown.d.ts.map +0 -1
  116. package/dist/hooks/useSlideDown.js +0 -263
  117. package/dist/hooks/useSlideDown.js.map +0 -1
  118. package/dist/hooks/useSlideLeft.d.ts +0 -13
  119. package/dist/hooks/useSlideLeft.d.ts.map +0 -1
  120. package/dist/hooks/useSlideLeft.js +0 -72
  121. package/dist/hooks/useSlideLeft.js.map +0 -1
  122. package/dist/hooks/useSlideRight.d.ts +0 -13
  123. package/dist/hooks/useSlideRight.d.ts.map +0 -1
  124. package/dist/hooks/useSlideRight.js +0 -72
  125. package/dist/hooks/useSlideRight.js.map +0 -1
  126. package/dist/hooks/useSlideUp.d.ts +0 -3
  127. package/dist/hooks/useSlideUp.d.ts.map +0 -1
  128. package/dist/hooks/useSlideUp.js +0 -122
  129. package/dist/hooks/useSlideUp.js.map +0 -1
  130. package/dist/hooks/useSmartMotion.d.ts +0 -31
  131. package/dist/hooks/useSmartMotion.d.ts.map +0 -1
  132. package/dist/hooks/useSmartMotion.js +0 -257
  133. package/dist/hooks/useSmartMotion.js.map +0 -1
  134. package/dist/hooks/useSpringMotion.d.ts +0 -22
  135. package/dist/hooks/useSpringMotion.d.ts.map +0 -1
  136. package/dist/hooks/useSpringMotion.js +0 -133
  137. package/dist/hooks/useSpringMotion.js.map +0 -1
  138. package/dist/hooks/useStaggerMotion.d.ts +0 -81
  139. package/dist/hooks/useStaggerMotion.d.ts.map +0 -1
  140. package/dist/hooks/useStaggerMotion.js +0 -113
  141. package/dist/hooks/useStaggerMotion.js.map +0 -1
  142. package/dist/hooks/useToggleMotion.d.ts +0 -16
  143. package/dist/hooks/useToggleMotion.d.ts.map +0 -1
  144. package/dist/hooks/useToggleMotion.js +0 -53
  145. package/dist/hooks/useToggleMotion.js.map +0 -1
  146. package/dist/hooks/useUnifiedMotion.d.ts +0 -51
  147. package/dist/hooks/useUnifiedMotion.d.ts.map +0 -1
  148. package/dist/hooks/useUnifiedMotion.js +0 -106
  149. package/dist/hooks/useUnifiedMotion.js.map +0 -1
  150. package/dist/hooks/useVisibilityToggle.d.ts +0 -15
  151. package/dist/hooks/useVisibilityToggle.d.ts.map +0 -1
  152. package/dist/hooks/useVisibilityToggle.js +0 -106
  153. package/dist/hooks/useVisibilityToggle.js.map +0 -1
  154. package/dist/index.d.ts.map +0 -1
  155. package/dist/managers/MotionStateManager.d.ts +0 -63
  156. package/dist/managers/MotionStateManager.d.ts.map +0 -1
  157. package/dist/managers/MotionStateManager.js +0 -159
  158. package/dist/managers/MotionStateManager.js.map +0 -1
  159. package/dist/presets/index.d.ts +0 -16
  160. package/dist/presets/index.d.ts.map +0 -1
  161. package/dist/presets/index.js +0 -120
  162. package/dist/presets/index.js.map +0 -1
  163. package/dist/types/common.d.ts +0 -155
  164. package/dist/types/common.d.ts.map +0 -1
  165. package/dist/types/common.js +0 -5
  166. package/dist/types/common.js.map +0 -1
  167. package/dist/types/index.d.ts +0 -77
  168. package/dist/types/index.d.ts.map +0 -1
  169. package/dist/types/index.js +0 -5
  170. package/dist/types/index.js.map +0 -1
  171. package/dist/utils/easing.d.ts +0 -98
  172. package/dist/utils/easing.d.ts.map +0 -1
  173. package/dist/utils/easing.js +0 -233
  174. package/dist/utils/easing.js.map +0 -1
@@ -1,26 +0,0 @@
1
- interface GestureMotionOptions {
2
- gestureType: 'hover' | 'drag' | 'pinch' | 'swipe' | 'tilt';
3
- duration?: number;
4
- easing?: string;
5
- sensitivity?: number;
6
- enabled?: boolean;
7
- onGestureStart?: () => void;
8
- onGestureEnd?: () => void;
9
- }
10
- interface GestureState {
11
- isActive: boolean;
12
- x: number;
13
- y: number;
14
- deltaX: number;
15
- deltaY: number;
16
- scale: number;
17
- rotation: number;
18
- }
19
- export declare function useGestureMotion(options: GestureMotionOptions): {
20
- ref: import("react").RefObject<HTMLElement | null>;
21
- gestureState: GestureState;
22
- motionStyle: import("react").CSSProperties;
23
- isActive: boolean;
24
- };
25
- export {};
26
- //# sourceMappingURL=useGestureMotion.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useGestureMotion.d.ts","sourceRoot":"","sources":["../../src/hooks/useGestureMotion.ts"],"names":[],"mappings":"AAEA,UAAU,oBAAoB;IAC5B,WAAW,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CAC1B;AAED,UAAU,YAAY;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB;;;;;EAuM7D"}
@@ -1,167 +0,0 @@
1
- import { useRef, useEffect, useState, useCallback } from 'react';
2
- export function useGestureMotion(options) {
3
- const { gestureType, duration = 300, easing = 'ease-out', sensitivity = 1, enabled = true, onGestureStart, onGestureEnd } = options;
4
- const elementRef = useRef(null);
5
- const [gestureState, setGestureState] = useState({
6
- isActive: false,
7
- x: 0,
8
- y: 0,
9
- deltaX: 0,
10
- deltaY: 0,
11
- scale: 1,
12
- rotation: 0
13
- });
14
- const [motionStyle, setMotionStyle] = useState({});
15
- // 제스처 시작점 저장
16
- const startPoint = useRef({ x: 0, y: 0 });
17
- const isDragging = useRef(false);
18
- // 모션 스타일 업데이트
19
- const updateMotionStyle = useCallback(() => {
20
- if (!enabled)
21
- return;
22
- const { isActive, deltaX, deltaY, scale, rotation } = gestureState;
23
- let transform = '';
24
- switch (gestureType) {
25
- case 'hover':
26
- transform = isActive
27
- ? `scale(${1 + sensitivity * 0.05}) translateY(-${sensitivity * 2}px)`
28
- : 'scale(1) translateY(0)';
29
- break;
30
- case 'drag':
31
- transform = isActive
32
- ? `translate(${deltaX * sensitivity}px, ${deltaY * sensitivity}px)`
33
- : 'translate(0, 0)';
34
- break;
35
- case 'pinch':
36
- transform = `scale(${scale})`;
37
- break;
38
- case 'swipe':
39
- transform = isActive
40
- ? `translateX(${deltaX * sensitivity}px) rotateY(${deltaX * 0.1}deg)`
41
- : 'translateX(0) rotateY(0)';
42
- break;
43
- case 'tilt':
44
- transform = isActive
45
- ? `rotateX(${deltaY * 0.1}deg) rotateY(${deltaX * 0.1}deg)`
46
- : 'rotateX(0) rotateY(0)';
47
- break;
48
- }
49
- setMotionStyle({
50
- transform,
51
- transition: isActive ? 'none' : `all ${duration}ms ${easing}`,
52
- cursor: gestureType === 'drag' && isActive ? 'grabbing' : 'pointer'
53
- });
54
- }, [gestureState, gestureType, enabled, duration, easing, sensitivity]);
55
- // 마우스 이벤트 핸들러
56
- const handleMouseDown = useCallback((e) => {
57
- if (!enabled || gestureType !== 'drag')
58
- return;
59
- isDragging.current = true;
60
- startPoint.current = { x: e.clientX, y: e.clientY };
61
- setGestureState(prev => ({ ...prev, isActive: true }));
62
- onGestureStart?.();
63
- }, [enabled, gestureType, onGestureStart]);
64
- const handleMouseMove = useCallback((e) => {
65
- if (!enabled || !isDragging.current)
66
- return;
67
- const deltaX = e.clientX - startPoint.current.x;
68
- const deltaY = e.clientY - startPoint.current.y;
69
- setGestureState(prev => ({
70
- ...prev,
71
- x: e.clientX,
72
- y: e.clientY,
73
- deltaX,
74
- deltaY
75
- }));
76
- }, [enabled]);
77
- const handleMouseUp = useCallback(() => {
78
- if (!enabled)
79
- return;
80
- isDragging.current = false;
81
- setGestureState(prev => ({ ...prev, isActive: false }));
82
- onGestureEnd?.();
83
- }, [enabled, onGestureEnd]);
84
- // 호버 이벤트 핸들러
85
- const handleMouseEnter = useCallback(() => {
86
- if (!enabled || gestureType !== 'hover')
87
- return;
88
- setGestureState(prev => ({ ...prev, isActive: true }));
89
- onGestureStart?.();
90
- }, [enabled, gestureType, onGestureStart]);
91
- const handleMouseLeave = useCallback(() => {
92
- if (!enabled || gestureType !== 'hover')
93
- return;
94
- setGestureState(prev => ({ ...prev, isActive: false }));
95
- onGestureEnd?.();
96
- }, [enabled, gestureType, onGestureEnd]);
97
- // 터치 이벤트 핸들러 (모바일 지원)
98
- const handleTouchStart = useCallback((e) => {
99
- if (!enabled)
100
- return;
101
- const touch = e.touches[0];
102
- startPoint.current = { x: touch.clientX, y: touch.clientY };
103
- setGestureState(prev => ({ ...prev, isActive: true }));
104
- onGestureStart?.();
105
- }, [enabled, onGestureStart]);
106
- const handleTouchMove = useCallback((e) => {
107
- if (!enabled)
108
- return;
109
- const touch = e.touches[0];
110
- const deltaX = touch.clientX - startPoint.current.x;
111
- const deltaY = touch.clientY - startPoint.current.y;
112
- setGestureState(prev => ({
113
- ...prev,
114
- x: touch.clientX,
115
- y: touch.clientY,
116
- deltaX,
117
- deltaY
118
- }));
119
- }, [enabled]);
120
- const handleTouchEnd = useCallback(() => {
121
- if (!enabled)
122
- return;
123
- setGestureState(prev => ({ ...prev, isActive: false }));
124
- onGestureEnd?.();
125
- }, [enabled, onGestureEnd]);
126
- // 이벤트 리스너 등록
127
- useEffect(() => {
128
- if (!elementRef.current)
129
- return;
130
- const element = elementRef.current;
131
- // 마우스 이벤트
132
- if (gestureType === 'hover') {
133
- element.addEventListener('mouseenter', handleMouseEnter);
134
- element.addEventListener('mouseleave', handleMouseLeave);
135
- }
136
- else if (gestureType === 'drag') {
137
- element.addEventListener('mousedown', handleMouseDown);
138
- document.addEventListener('mousemove', handleMouseMove);
139
- document.addEventListener('mouseup', handleMouseUp);
140
- }
141
- // 터치 이벤트
142
- element.addEventListener('touchstart', handleTouchStart);
143
- element.addEventListener('touchmove', handleTouchMove);
144
- element.addEventListener('touchend', handleTouchEnd);
145
- return () => {
146
- element.removeEventListener('mouseenter', handleMouseEnter);
147
- element.removeEventListener('mouseleave', handleMouseLeave);
148
- element.removeEventListener('mousedown', handleMouseDown);
149
- document.removeEventListener('mousemove', handleMouseMove);
150
- document.removeEventListener('mouseup', handleMouseUp);
151
- element.removeEventListener('touchstart', handleTouchStart);
152
- element.removeEventListener('touchmove', handleTouchMove);
153
- element.removeEventListener('touchend', handleTouchEnd);
154
- };
155
- }, [gestureType, handleMouseEnter, handleMouseLeave, handleMouseDown, handleMouseMove, handleMouseUp, handleTouchStart, handleTouchMove, handleTouchEnd]);
156
- // 모션 스타일 업데이트
157
- useEffect(() => {
158
- updateMotionStyle();
159
- }, [updateMotionStyle]);
160
- return {
161
- ref: elementRef,
162
- gestureState,
163
- motionStyle,
164
- isActive: gestureState.isActive
165
- };
166
- }
167
- //# sourceMappingURL=useGestureMotion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useGestureMotion.js","sourceRoot":"","sources":["../../src/hooks/useGestureMotion.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { BaseMotionReturn, MotionElement } from '../types';
2
- export interface GradientOptions {
3
- colors?: string[];
4
- duration?: number;
5
- direction?: 'horizontal' | 'vertical' | 'diagonal';
6
- size?: number;
7
- easing?: 'linear' | 'ease-in-out' | 'ease-in' | 'ease-out';
8
- autoStart?: boolean;
9
- }
10
- export declare function useGradient<T extends MotionElement = HTMLDivElement>(options?: GradientOptions): BaseMotionReturn<T> & {
11
- style: React.CSSProperties;
12
- };
13
- export declare const createGradientKeyframes: (name?: string) => void;
14
- //# sourceMappingURL=useGradient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useGradient.d.ts","sourceRoot":"","sources":["../../src/hooks/useGradient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAa,MAAM,UAAU,CAAA;AAErE,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,CAAA;IAClD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CAAA;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAID,wBAAgB,WAAW,CAAC,CAAC,SAAS,aAAa,GAAG,cAAc,EAClE,OAAO,GAAE,eAAoB,GAC5B,gBAAgB,CAAC,CAAC,CAAC,GAAG;IACvB,KAAK,EAAE,KAAK,CAAC,aAAa,CAAA;CAC3B,CAsFA;AAGD,eAAO,MAAM,uBAAuB,GAAI,OAAM,MAAwB,SAarE,CAAA"}
@@ -1,87 +0,0 @@
1
- import { useState, useEffect, useCallback } from 'react';
2
- const defaultColors = ['#60a5fa', '#34d399', '#fbbf24', '#f87171'];
3
- export function useGradient(options = {}) {
4
- const { colors = defaultColors, duration = 6000, direction = 'diagonal', size = 300, easing = 'ease-in-out', autoStart = false } = options;
5
- const [isAnimating, setIsAnimating] = useState(autoStart);
6
- const [isVisible, setIsVisible] = useState(true);
7
- const [motionProgress, setMotionProgress] = useState(0);
8
- const getGradientStyle = useCallback(() => {
9
- const gradientDirection = direction === 'horizontal' ? '90deg' :
10
- direction === 'vertical' ? '180deg' : '135deg';
11
- const background = `linear-gradient(${gradientDirection}, ${colors.join(', ')})`;
12
- const backgroundSize = `${size}% ${size}%`;
13
- const easingFunction = easing === 'linear' ? 'linear' :
14
- easing === 'ease-in' ? 'ease-in' :
15
- easing === 'ease-out' ? 'ease-out' : 'ease-in-out';
16
- return {
17
- background,
18
- backgroundSize,
19
- animation: isAnimating ? `gradientShift ${duration}ms ${easingFunction} infinite` : 'none',
20
- backgroundPosition: isAnimating ? undefined : `${motionProgress}% 50%`
21
- };
22
- }, [colors, direction, size, duration, easing, isAnimating, motionProgress]);
23
- const start = useCallback(() => {
24
- setIsAnimating(true);
25
- }, []);
26
- const pause = useCallback(() => {
27
- setIsAnimating(false);
28
- }, []);
29
- const resume = useCallback(() => {
30
- setIsAnimating(true);
31
- }, []);
32
- const reset = useCallback(() => {
33
- // 모션 완전 정지
34
- setIsAnimating(false);
35
- // 진행률 초기화
36
- setMotionProgress(0);
37
- }, []);
38
- const stop = useCallback(() => {
39
- setIsAnimating(false);
40
- }, []);
41
- useEffect(() => {
42
- if (!isAnimating) {
43
- const interval = setInterval(() => {
44
- setMotionProgress(prev => {
45
- const newProgress = prev + (100 / (duration / 16)); // 60fps 기준
46
- return newProgress >= 100 ? 0 : newProgress;
47
- });
48
- }, 16);
49
- return () => clearInterval(interval);
50
- }
51
- }, [isAnimating, duration]);
52
- // 초기 상태 설정만 하고 이후에는 수동으로 제어
53
- useEffect(() => {
54
- setIsAnimating(autoStart);
55
- }, [autoStart]);
56
- return {
57
- ref: { current: null }, // useGradient는 ref를 직접 사용하지 않음
58
- isVisible,
59
- isAnimating,
60
- style: getGradientStyle(),
61
- progress: motionProgress / 100,
62
- start,
63
- pause,
64
- resume,
65
- reset,
66
- stop
67
- };
68
- }
69
- // CSS 키프레임 생성 함수
70
- export const createGradientKeyframes = (name = 'gradientShift') => {
71
- const style = document.createElement('style');
72
- style.textContent = `
73
- @keyframes ${name} {
74
- 0%, 100% { background-position: 0% 50%; }
75
- 50% { background-position: 100% 50%; }
76
- }
77
- `;
78
- if (!document.head.querySelector(`style[data-gradient="${name}"]`)) {
79
- style.setAttribute('data-gradient', name);
80
- document.head.appendChild(style);
81
- }
82
- };
83
- // 자동으로 키프레임 생성
84
- if (typeof document !== 'undefined') {
85
- createGradientKeyframes();
86
- }
87
- //# sourceMappingURL=useGradient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useGradient.js","sourceRoot":"","sources":["../../src/hooks/useGradient.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export declare function useHoverMotion(motionHook: (() => any) | any, options?: {
2
- onHover?: 'start' | 'reverse';
3
- onLeave?: 'reverse' | 'reset';
4
- }): any;
5
- //# sourceMappingURL=useHoverMotion.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useHoverMotion.d.ts","sourceRoot":"","sources":["../../src/hooks/useHoverMotion.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAC5B,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,EAC7B,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;CACzB,OAuDP"}
@@ -1,48 +0,0 @@
1
- import { useRef, useEffect, useCallback } from 'react';
2
- export function useHoverMotion(motionHook, options = {}) {
3
- const { onHover = 'start', onLeave = 'reverse' } = options;
4
- const elementRef = useRef(null);
5
- const motionRef = useRef(null);
6
- // motion 객체를 ref로 안정화
7
- if (!motionRef.current) {
8
- motionRef.current = typeof motionHook === 'function' ? motionHook() : motionHook;
9
- }
10
- const handleMouseEnter = useCallback(() => {
11
- if (onHover === 'start') {
12
- motionRef.current?.start();
13
- }
14
- else if (onHover === 'reverse') {
15
- motionRef.current?.reset();
16
- }
17
- }, [onHover]);
18
- const handleMouseLeave = useCallback(() => {
19
- if (onLeave === 'reverse') {
20
- motionRef.current?.stop(); // stop 사용으로 현재 상태 유지
21
- }
22
- else if (onLeave === 'reset') {
23
- motionRef.current?.reset(); // reset 사용으로 초기 상태로 복원
24
- }
25
- }, [onLeave]);
26
- useEffect(() => {
27
- const element = elementRef.current;
28
- if (!element)
29
- return;
30
- element.addEventListener('mouseenter', handleMouseEnter);
31
- element.addEventListener('mouseleave', handleMouseLeave);
32
- return () => {
33
- element.removeEventListener('mouseenter', handleMouseEnter);
34
- element.removeEventListener('mouseleave', handleMouseLeave);
35
- };
36
- }, [handleMouseEnter, handleMouseLeave]);
37
- const setRef = useCallback((element) => {
38
- elementRef.current = element;
39
- if (motionRef.current?.ref) {
40
- motionRef.current.ref(element);
41
- }
42
- }, []);
43
- return {
44
- ...motionRef.current,
45
- ref: setRef
46
- };
47
- }
48
- //# sourceMappingURL=useHoverMotion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useHoverMotion.js","sourceRoot":"","sources":["../../src/hooks/useHoverMotion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEtD,MAAM,UAAU,cAAc,CAC5B,UAA6B,EAC7B,UAGI,EAAE;IAEN,MAAM,EACJ,OAAO,GAAG,OAAO,EACjB,OAAO,GAAG,SAAS,EACpB,GAAG,OAAO,CAAA;IAEX,MAAM,UAAU,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,MAAM,CAAM,IAAI,CAAC,CAAA;IAEnC,sBAAsB;IACtB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvB,SAAS,CAAC,OAAO,GAAG,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAA;IAClF,CAAC;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;QAC5B,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;QAC5B,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAA,CAAC,qBAAqB;QACjD,CAAC;aAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YAC/B,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA,CAAC,uBAAuB;QACpD,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;QAClC,IAAI,CAAC,OAAO;YAAE,OAAM;QAEpB,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAA;QACxD,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAA;QAExD,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAA;YAC3D,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAA;QAC7D,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAExC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,OAA2B,EAAE,EAAE;QACzD,UAAU,CAAC,OAAO,GAAG,OAAO,CAAA;QAC5B,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;YAC3B,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAChC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO;QACL,GAAG,SAAS,CAAC,OAAO;QACpB,GAAG,EAAE,MAAM;KACZ,CAAA;AACH,CAAC"}
@@ -1,30 +0,0 @@
1
- import { BaseMotionOptions, BaseMotionReturn, MotionElement } from '../types';
2
- export interface LoadingSpinnerOptions extends BaseMotionOptions {
3
- type?: 'rotate' | 'pulse' | 'bounce' | 'wave' | 'dots' | 'bars' | 'custom';
4
- rotationSpeed?: number;
5
- pulseSpeed?: number;
6
- bounceHeight?: number;
7
- waveCount?: number;
8
- dotCount?: number;
9
- barCount?: number;
10
- color?: string;
11
- backgroundColor?: string;
12
- size?: number;
13
- thickness?: number;
14
- autoStart?: boolean;
15
- infinite?: boolean;
16
- }
17
- export declare function useLoadingSpinner<T extends MotionElement = HTMLDivElement>(options?: LoadingSpinnerOptions): BaseMotionReturn<T> & {
18
- isLoading: boolean;
19
- spinnerType: string;
20
- rotationAngle: number;
21
- pulseScale: number;
22
- bounceOffset: number;
23
- waveProgress: number;
24
- dotProgress: number;
25
- barProgress: number;
26
- startLoading: () => void;
27
- stopLoading: () => void;
28
- setLoadingState: (loading: boolean) => void;
29
- };
30
- //# sourceMappingURL=useLoadingSpinner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useLoadingSpinner.d.ts","sourceRoot":"","sources":["../../src/hooks/useLoadingSpinner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7E,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAE9D,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;IAG1E,aAAa,CAAC,EAAE,MAAM,CAAA;IAGtB,UAAU,CAAC,EAAE,MAAM,CAAA;IAGnB,YAAY,CAAC,EAAE,MAAM,CAAA;IAGrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAGlB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAGjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAGjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IAGxB,IAAI,CAAC,EAAE,MAAM,CAAA;IAGb,SAAS,CAAC,EAAE,MAAM,CAAA;IAGlB,SAAS,CAAC,EAAE,OAAO,CAAA;IAGnB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,aAAa,GAAG,cAAc,EACxE,OAAO,GAAE,qBAA0B,GAClC,gBAAgB,CAAC,CAAC,CAAC,GAAG;IACvB,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CAC5C,CAyUA"}