@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,26 +1,21 @@
1
- import { BaseMotionOptions, BaseMotionReturn, MotionElement } from '../types';
2
- export interface RepeatOptions extends BaseMotionOptions {
3
- repeatCount?: number;
4
- repeatDelay?: number;
5
- repeatDirection?: 'forward' | 'reverse' | 'alternate';
6
- repeatMode?: 'loop' | 'bounce' | 'ping-pong';
1
+ export interface RepeatConfig {
2
+ duration?: number;
3
+ delay?: number;
7
4
  autoStart?: boolean;
8
- initialScale?: number;
9
- initialOpacity?: number;
10
- initialRotate?: number;
11
- initialTranslateY?: number;
12
- initialTranslateX?: number;
13
- targetScale?: number;
14
- targetOpacity?: number;
15
- targetRotate?: number;
16
- targetTranslateY?: number;
17
- targetTranslateX?: number;
5
+ type?: 'pulse' | 'bounce' | 'wave' | 'fade';
6
+ intensity?: number;
18
7
  }
19
- export declare function useRepeat<T extends MotionElement = HTMLDivElement>(options?: RepeatOptions): BaseMotionReturn<T> & {
20
- repeatCount: number;
21
- currentRepeat: number;
22
- isRepeating: boolean;
23
- repeatDirection: 'forward' | 'reverse' | 'alternate';
24
- repeatMode: 'loop' | 'bounce' | 'ping-pong';
8
+ export interface RepeatState {
9
+ scale: number;
10
+ opacity: number;
11
+ isAnimating: boolean;
12
+ }
13
+ export declare function useRepeat(config?: RepeatConfig): {
14
+ ref: (element: HTMLDivElement | null) => void;
15
+ scale: number;
16
+ opacity: number;
17
+ isAnimating: boolean;
18
+ start: () => void;
19
+ stop: () => void;
25
20
  };
26
21
  //# sourceMappingURL=useRepeat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRepeat.d.ts","sourceRoot":"","sources":["../../src/hooks/useRepeat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7E,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAA;IACrD,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAA;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,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;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,aAAa,GAAG,cAAc,EAChE,OAAO,GAAE,aAAkB,GAC1B,gBAAgB,CAAC,CAAC,CAAC,GAAG;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,eAAe,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAA;IACpD,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAA;CAC5C,CA2NA"}
1
+ {"version":3,"file":"useRepeat.d.ts","sourceRoot":"","sources":["../../src/hooks/useRepeat.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,OAAO,CAAA;CACrB;AAED,wBAAgB,SAAS,CAAC,MAAM,GAAE,YAAiB;mBA+DxB,cAAc,GAAG,IAAI;;;;;;EAc/C"}
@@ -1,179 +1,65 @@
1
- import { useRef, useState, useEffect, useCallback } from 'react';
2
- export function useRepeat(options = {}) {
3
- const { duration = 1000, easing = 'ease-in-out', repeatCount = -1, // 기본값: 무한 반복
4
- repeatDelay = 0, repeatDirection = 'forward', repeatMode = 'loop', autoStart = true, initialScale = 1, initialOpacity = 1, initialRotate = 0, initialTranslateY = 0, initialTranslateX = 0, targetScale = 1.2, targetOpacity = 0.8, targetRotate = 10, targetTranslateY = -10, targetTranslateX = 0, onComplete, onStart, onStop, onReset } = options;
1
+ import { useRef, useState, useEffect } from 'react';
2
+ export function useRepeat(config = {}) {
3
+ const { duration = 1000, delay = 0, autoStart = true, type = 'pulse', intensity = 0.1 } = config;
5
4
  const ref = useRef(null);
6
- const [isVisible, setIsVisible] = useState(false);
5
+ const [scale, setScale] = useState(1);
6
+ const [opacity, setOpacity] = useState(1);
7
7
  const [isAnimating, setIsAnimating] = useState(false);
8
- const [progress, setProgress] = useState(0);
9
- const [currentRepeat, setCurrentRepeat] = useState(0);
10
- const [isRepeating, setIsRepeating] = useState(false);
11
- const [animationDirection, setAnimationDirection] = useState('forward');
12
- // 애니메이션 루프 함수
13
- const runAnimation = useCallback(() => {
14
- if (!isRepeating)
15
- return;
8
+ const animate = () => {
16
9
  setIsAnimating(true);
17
- setProgress(0);
18
- onStart?.();
19
- // 애니메이션 진행
20
- const startTime = Date.now();
21
- const animate = () => {
22
- if (!isRepeating)
23
- return;
24
- const elapsed = Date.now() - startTime;
25
- const currentProgress = Math.min(elapsed / duration, 1);
26
- // 이징 적용
27
- const easedProgress = currentProgress;
28
- setProgress(easedProgress);
29
- if (currentProgress < 1) {
30
- requestAnimationFrame(animate);
31
- }
32
- else {
33
- // 애니메이션 완료
34
- setIsAnimating(false);
35
- setProgress(1);
36
- // 반복 방향 결정
37
- let nextDirection = animationDirection;
38
- if (repeatDirection === 'alternate') {
39
- nextDirection = animationDirection === 'forward' ? 'reverse' : 'forward';
40
- setAnimationDirection(nextDirection);
41
- }
42
- // 반복 카운트 증가
43
- const nextRepeat = currentRepeat + 1;
44
- setCurrentRepeat(nextRepeat);
45
- // 반복 조건 확인
46
- if (repeatCount === -1 || nextRepeat < repeatCount) {
47
- // 지연 후 다음 반복
48
- setTimeout(() => {
49
- if (isRepeating) {
50
- runAnimation();
51
- }
52
- }, repeatDelay);
53
- }
54
- else {
55
- // 반복 완료
56
- setIsRepeating(false);
57
- onComplete?.();
58
- }
59
- }
60
- };
61
- requestAnimationFrame(animate);
62
- }, [isRepeating, duration, onStart, onComplete, currentRepeat, repeatCount, repeatDelay, repeatMode, animationDirection]);
63
- // 반복 시작 함수
64
- const startRepeat = useCallback(() => {
65
- if (isRepeating)
66
- return;
67
- setIsRepeating(true);
68
- setCurrentRepeat(0);
69
- setAnimationDirection('forward');
70
- runAnimation();
71
- }, [isRepeating, runAnimation]);
72
- // 반복 중단 함수
73
- const stopRepeat = useCallback(() => {
74
- setIsRepeating(false);
75
- setIsAnimating(false);
76
- onStop?.();
77
- }, [onStop]);
78
- // 반복 일시정지 함수
79
- const pauseRepeat = useCallback(() => {
80
- setIsRepeating(false);
81
- setIsAnimating(false);
82
- }, []);
83
- // 반복 재개 함수
84
- const resumeRepeat = useCallback(() => {
85
- if (!isRepeating && currentRepeat < (repeatCount === -1 ? Infinity : repeatCount)) {
86
- setIsRepeating(true);
87
- runAnimation();
88
- }
89
- }, [isRepeating, currentRepeat, repeatCount, runAnimation]);
90
- // 모션 시작 함수
91
- const start = useCallback(() => {
92
- if (!isVisible) {
93
- setIsVisible(true);
94
- startRepeat();
10
+ switch (type) {
11
+ case 'pulse':
12
+ setScale(1 + intensity);
13
+ setTimeout(() => setScale(1), duration / 2);
14
+ break;
15
+ case 'bounce':
16
+ setScale(1 + intensity);
17
+ setTimeout(() => setScale(1 - intensity), duration / 3);
18
+ setTimeout(() => setScale(1), duration);
19
+ break;
20
+ case 'wave':
21
+ setScale(1 + intensity);
22
+ setTimeout(() => setScale(1 - intensity), duration / 2);
23
+ setTimeout(() => setScale(1), duration);
24
+ break;
25
+ case 'fade':
26
+ setOpacity(0.5);
27
+ setTimeout(() => setOpacity(1), duration / 2);
28
+ break;
95
29
  }
96
- }, [isVisible, startRepeat]);
97
- // 모션 중단 함수
98
- const stop = useCallback(() => {
99
- stopRepeat();
100
- }, [stopRepeat]);
101
- // 모션 리셋 함수
102
- const reset = useCallback(() => {
103
- setIsVisible(false);
30
+ setTimeout(() => {
31
+ setIsAnimating(false);
32
+ if (autoStart) {
33
+ animate();
34
+ }
35
+ }, duration);
36
+ };
37
+ const start = () => {
38
+ setTimeout(() => animate(), delay);
39
+ };
40
+ const stop = () => {
104
41
  setIsAnimating(false);
105
- setProgress(0);
106
- setCurrentRepeat(0);
107
- setIsRepeating(false);
108
- setAnimationDirection('forward');
109
- onReset?.();
110
- }, [onReset]);
111
- // 모션 일시정지 함수
112
- const pause = useCallback(() => {
113
- pauseRepeat();
114
- }, [pauseRepeat]);
115
- // 모션 재개 함수
116
- const resume = useCallback(() => {
117
- if (isVisible) {
118
- resumeRepeat();
119
- }
120
- }, [isVisible, resumeRepeat]);
121
- // 자동 시작
42
+ setScale(1);
43
+ setOpacity(1);
44
+ };
122
45
  useEffect(() => {
123
46
  if (autoStart) {
124
- startRepeat();
47
+ start();
125
48
  }
126
- }, [autoStart, startRepeat]);
127
- // 컴포넌트 언마운트 시 정리
128
- useEffect(() => {
129
- return () => {
130
- setIsRepeating(false);
131
- };
49
+ return () => stop();
132
50
  }, []);
133
- // 현재 진행률에 따른 스타일 계산
134
- const getCurrentStyle = () => {
135
- let currentProgress = progress;
136
- // 반복 방향에 따른 진행률 조정
137
- if (animationDirection === 'reverse') {
138
- currentProgress = 1 - progress;
139
- }
140
- // 반복 모드에 따른 진행률 조정
141
- if (repeatMode === 'bounce') {
142
- currentProgress = Math.sin(currentProgress * Math.PI);
51
+ const setRef = (element) => {
52
+ if (ref.current !== element) {
53
+ ref.current = element;
143
54
  }
144
- const scale = initialScale + (targetScale - initialScale) * currentProgress;
145
- const opacity = initialOpacity + (targetOpacity - initialOpacity) * currentProgress;
146
- const rotate = initialRotate + (targetRotate - initialRotate) * currentProgress;
147
- const translateY = initialTranslateY + (targetTranslateY - initialTranslateY) * currentProgress;
148
- const translateX = initialTranslateX + (targetTranslateX - initialTranslateX) * currentProgress;
149
- return {
150
- transform: `
151
- scale(${scale})
152
- rotate(${rotate}deg)
153
- translate(${translateX}px, ${translateY}px)
154
- `,
155
- opacity,
156
- transition: `all ${duration}ms ${easing}`,
157
- willChange: 'transform, opacity'
158
- };
159
55
  };
160
- const style = getCurrentStyle();
161
56
  return {
162
- ref,
163
- isVisible,
57
+ ref: setRef,
58
+ scale,
59
+ opacity,
164
60
  isAnimating,
165
- style,
166
- progress,
167
61
  start,
168
- stop,
169
- reset,
170
- pause,
171
- resume,
172
- repeatCount,
173
- currentRepeat,
174
- isRepeating,
175
- repeatDirection,
176
- repeatMode
62
+ stop
177
63
  };
178
64
  }
179
65
  //# sourceMappingURL=useRepeat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRepeat.js","sourceRoot":"","sources":["../../src/hooks/useRepeat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAqBhE,MAAM,UAAU,SAAS,CACvB,UAAyB,EAAE;IAQ3B,MAAM,EACJ,QAAQ,GAAG,IAAI,EACf,MAAM,GAAG,aAAa,EACtB,WAAW,GAAG,CAAC,CAAC,EAAE,aAAa;IAC/B,WAAW,GAAG,CAAC,EACf,eAAe,GAAG,SAAS,EAC3B,UAAU,GAAG,MAAM,EACnB,SAAS,GAAG,IAAI,EAChB,YAAY,GAAG,CAAC,EAChB,cAAc,GAAG,CAAC,EAClB,aAAa,GAAG,CAAC,EACjB,iBAAiB,GAAG,CAAC,EACrB,iBAAiB,GAAG,CAAC,EACrB,WAAW,GAAG,GAAG,EACjB,aAAa,GAAG,GAAG,EACnB,YAAY,GAAG,EAAE,EACjB,gBAAgB,GAAG,CAAC,EAAE,EACtB,gBAAgB,GAAG,CAAC,EACpB,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACrC,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,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACrD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrD,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAwB,SAAS,CAAC,CAAA;IAE9F,cAAc;IACd,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,cAAc,CAAC,IAAI,CAAC,CAAA;QACpB,WAAW,CAAC,CAAC,CAAC,CAAA;QACd,OAAO,EAAE,EAAE,CAAA;QAEX,WAAW;QACX,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,CAAC,WAAW;gBAAE,OAAM;YAExB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;YACtC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAA;YAEvD,QAAQ;YACR,MAAM,aAAa,GAAG,eAAe,CAAA;YACrC,WAAW,CAAC,aAAa,CAAC,CAAA;YAE1B,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;gBACxB,qBAAqB,CAAC,OAAO,CAAC,CAAA;YAChC,CAAC;iBAAM,CAAC;gBACN,WAAW;gBACX,cAAc,CAAC,KAAK,CAAC,CAAA;gBACrB,WAAW,CAAC,CAAC,CAAC,CAAA;gBAEd,WAAW;gBACX,IAAI,aAAa,GAAG,kBAAkB,CAAA;gBACtC,IAAI,eAAe,KAAK,WAAW,EAAE,CAAC;oBACpC,aAAa,GAAG,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;oBACxE,qBAAqB,CAAC,aAAa,CAAC,CAAA;gBACtC,CAAC;gBAED,YAAY;gBACZ,MAAM,UAAU,GAAG,aAAa,GAAG,CAAC,CAAA;gBACpC,gBAAgB,CAAC,UAAU,CAAC,CAAA;gBAE5B,WAAW;gBACX,IAAI,WAAW,KAAK,CAAC,CAAC,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;oBACnD,aAAa;oBACb,UAAU,CAAC,GAAG,EAAE;wBACd,IAAI,WAAW,EAAE,CAAC;4BAChB,YAAY,EAAE,CAAA;wBAChB,CAAC;oBACH,CAAC,EAAE,WAAW,CAAC,CAAA;gBACjB,CAAC;qBAAM,CAAC;oBACN,QAAQ;oBACR,cAAc,CAAC,KAAK,CAAC,CAAA;oBACrB,UAAU,EAAE,EAAE,CAAA;gBAChB,CAAC;YACH,CAAC;QACH,CAAC,CAAA;QAED,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAA;IAEzH,WAAW;IACX,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,IAAI,WAAW;YAAE,OAAM;QAEvB,cAAc,CAAC,IAAI,CAAC,CAAA;QACpB,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACnB,qBAAqB,CAAC,SAAS,CAAC,CAAA;QAChC,YAAY,EAAE,CAAA;IAChB,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAA;IAE/B,WAAW;IACX,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,cAAc,CAAC,KAAK,CAAC,CAAA;QACrB,cAAc,CAAC,KAAK,CAAC,CAAA;QACrB,MAAM,EAAE,EAAE,CAAA;IACZ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,aAAa;IACb,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,cAAc,CAAC,KAAK,CAAC,CAAA;QACrB,cAAc,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,WAAW;IACX,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC,WAAW,IAAI,aAAa,GAAG,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;YAClF,cAAc,CAAC,IAAI,CAAC,CAAA;YACpB,YAAY,EAAE,CAAA;QAChB,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAA;IAE3D,WAAW;IACX,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,CAAA;YAClB,WAAW,EAAE,CAAA;QACf,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAA;IAE5B,WAAW;IACX,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,UAAU,EAAE,CAAA;IACd,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAEhB,WAAW;IACX,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,YAAY,CAAC,KAAK,CAAC,CAAA;QACnB,cAAc,CAAC,KAAK,CAAC,CAAA;QACrB,WAAW,CAAC,CAAC,CAAC,CAAA;QACd,gBAAgB,CAAC,CAAC,CAAC,CAAA;QACnB,cAAc,CAAC,KAAK,CAAC,CAAA;QACrB,qBAAqB,CAAC,SAAS,CAAC,CAAA;QAChC,OAAO,EAAE,EAAE,CAAA;IACb,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,aAAa;IACb,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,WAAW,EAAE,CAAA;IACf,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,WAAW;IACX,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,EAAE,CAAA;QAChB,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;IAE7B,QAAQ;IACR,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,EAAE,CAAC;YACd,WAAW,EAAE,CAAA;QACf,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAA;IAE5B,iBAAiB;IACjB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,cAAc,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,oBAAoB;IACpB,MAAM,eAAe,GAAG,GAAwB,EAAE;QAChD,IAAI,eAAe,GAAG,QAAQ,CAAA;QAE9B,mBAAmB;QACnB,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,eAAe,GAAG,CAAC,GAAG,QAAQ,CAAA;QAChC,CAAC;QAED,mBAAmB;QACnB,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5B,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;QACvD,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,eAAe,CAAA;QAC3E,MAAM,OAAO,GAAG,cAAc,GAAG,CAAC,aAAa,GAAG,cAAc,CAAC,GAAG,eAAe,CAAA;QACnF,MAAM,MAAM,GAAG,aAAa,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC,GAAG,eAAe,CAAA;QAC/E,MAAM,UAAU,GAAG,iBAAiB,GAAG,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,eAAe,CAAA;QAC/F,MAAM,UAAU,GAAG,iBAAiB,GAAG,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,eAAe,CAAA;QAE/F,OAAO;YACL,SAAS,EAAE;gBACD,KAAK;iBACJ,MAAM;oBACH,UAAU,OAAO,UAAU;OACxC;YACD,OAAO;YACP,UAAU,EAAE,OAAO,QAAQ,MAAM,MAAM,EAAE;YACzC,UAAU,EAAE,oBAAoB;SACjC,CAAA;IACH,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,eAAe,EAAE,CAAA;IAE/B,OAAO;QACL,GAAG;QACH,SAAS;QACT,WAAW;QACX,KAAK;QACL,QAAQ;QACR,KAAK;QACL,IAAI;QACJ,KAAK;QACL,KAAK;QACL,MAAM;QACN,WAAW;QACX,aAAa;QACb,WAAW;QACX,eAAe;QACf,UAAU;KACX,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"useRepeat.js","sourceRoot":"","sources":["../../src/hooks/useRepeat.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAgB1D,MAAM,UAAU,SAAS,CAAC,SAAuB,EAAE;IACjD,MAAM,EACJ,QAAQ,GAAG,IAAI,EACf,KAAK,GAAG,CAAC,EACT,SAAS,GAAG,IAAI,EAChB,IAAI,GAAG,OAAO,EACd,SAAS,GAAG,GAAG,EAChB,GAAG,MAAM,CAAA;IAEV,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACrC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACzC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAErD,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,cAAc,CAAC,IAAI,CAAC,CAAA;QAEpB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;gBACvB,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAA;gBAC3C,MAAK;YACP,KAAK,QAAQ;gBACX,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;gBACvB,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAA;gBACvD,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;gBACvC,MAAK;YACP,KAAK,MAAM;gBACT,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;gBACvB,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAA;gBACvD,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;gBACvC,MAAK;YACP,KAAK,MAAM;gBACT,UAAU,CAAC,GAAG,CAAC,CAAA;gBACf,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAA;gBAC7C,MAAK;QACT,CAAC;QAED,UAAU,CAAC,GAAG,EAAE;YACd,cAAc,CAAC,KAAK,CAAC,CAAA;YACrB,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC,EAAE,QAAQ,CAAC,CAAA;IACd,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAA;IACpC,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,cAAc,CAAC,KAAK,CAAC,CAAA;QACrB,QAAQ,CAAC,CAAC,CAAC,CAAA;QACX,UAAU,CAAC,CAAC,CAAC,CAAA;IACf,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,EAAE,CAAA;QACT,CAAC;QACD,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;IACrB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,MAAM,GAAG,CAAC,OAA8B,EAAE,EAAE;QAChD,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC3B,GAAW,CAAC,OAAO,GAAG,OAAO,CAAA;QAChC,CAAC;IACH,CAAC,CAAA;IAED,OAAO;QACL,GAAG,EAAE,MAAM;QACX,KAAK;QACL,OAAO;QACP,WAAW;QACX,KAAK;QACL,IAAI;KACL,CAAA;AACH,CAAC"}
@@ -1,3 +1,13 @@
1
- import { ScaleOptions, BaseMotionReturn, MotionElement } from '../types';
2
- export declare function useScaleIn<T extends MotionElement = HTMLDivElement>(options?: ScaleOptions): BaseMotionReturn<T>;
1
+ import { BaseMotionReturn, MotionElement } from '../types';
2
+ export interface ScaleInOptions {
3
+ scale?: number;
4
+ duration?: number;
5
+ delay?: number;
6
+ autoStart?: boolean;
7
+ easing?: string;
8
+ }
9
+ export declare function useScaleIn<T extends MotionElement = HTMLDivElement>(options?: ScaleInOptions): BaseMotionReturn<T> & {
10
+ scale: number;
11
+ opacity: number;
12
+ };
3
13
  //# sourceMappingURL=useScaleIn.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScaleIn.d.ts","sourceRoot":"","sources":["../../src/hooks/useScaleIn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExE,wBAAgB,UAAU,CAAC,CAAC,SAAS,aAAa,GAAG,cAAc,EACjE,OAAO,GAAE,YAAiB,GACzB,gBAAgB,CAAC,CAAC,CAAC,CAqIrB"}
1
+ {"version":3,"file":"useScaleIn.d.ts","sourceRoot":"","sources":["../../src/hooks/useScaleIn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE1D,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,aAAa,GAAG,cAAc,EACjE,OAAO,GAAE,cAAmB,GAC3B,gBAAgB,CAAC,CAAC,CAAC,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,CAqFA"}
@@ -1,111 +1,72 @@
1
- import { useRef, useState, useEffect, useCallback } from 'react';
1
+ import { useRef, useState, useEffect, useCallback, useMemo } from 'react';
2
2
  export function useScaleIn(options = {}) {
3
- const { delay = 0, duration = 700, threshold = 0.1, triggerOnce = true, easing = 'ease-out', autoStart = true, initialScale = 0.5, targetScale = 1, onComplete, onStart, onStop, onReset } = options;
3
+ const { scale: initialScale = 0, duration = 1000, delay = 0, autoStart = true, easing = 'ease-out' } = options;
4
4
  const ref = useRef(null);
5
- const [isVisible, setIsVisible] = useState(false);
5
+ const [scale, setScale] = useState(autoStart ? initialScale : 1);
6
+ const [opacity, setOpacity] = useState(autoStart ? 0 : 1);
6
7
  const [isAnimating, setIsAnimating] = useState(false);
7
- const [progress, setProgress] = useState(0);
8
- const observerRef = useRef(null);
9
- const timeoutRef = useRef(null);
10
- // 모션 시작 함수
8
+ const [isVisible, setIsVisible] = useState(autoStart ? false : true);
9
+ const [progress, setProgress] = useState(autoStart ? 0 : 1);
11
10
  const start = useCallback(() => {
12
- if (isAnimating)
13
- return;
14
11
  setIsAnimating(true);
12
+ setScale(initialScale);
13
+ setOpacity(0);
15
14
  setProgress(0);
16
- onStart?.();
17
- // 지연 시간 적용
18
- if (delay > 0) {
19
- timeoutRef.current = window.setTimeout(() => {
20
- setIsVisible(true);
21
- setProgress(1);
22
- setIsAnimating(false);
23
- onComplete?.();
24
- }, delay);
25
- }
26
- else {
27
- setIsVisible(true);
15
+ setTimeout(() => {
28
16
  setProgress(1);
17
+ setScale(1);
18
+ setOpacity(1);
19
+ setIsVisible(true);
29
20
  setIsAnimating(false);
30
- onComplete?.();
31
- }
32
- }, [delay, isAnimating, onStart, onComplete]);
33
- // 모션 중단 함수
34
- const stop = useCallback(() => {
35
- if (timeoutRef.current) {
36
- clearTimeout(timeoutRef.current);
37
- timeoutRef.current = null;
38
- }
39
- setIsAnimating(false);
40
- onStop?.();
41
- }, [onStop]);
42
- // 모션 리셋 함수
21
+ }, delay);
22
+ }, [delay, initialScale]);
43
23
  const reset = useCallback(() => {
44
- stop();
45
- setIsVisible(false);
24
+ // 즉시 초기 상태로 복원 (모션 없이)
25
+ setScale(initialScale);
26
+ setOpacity(0);
46
27
  setProgress(0);
47
- onReset?.();
48
- }, [stop, onReset]);
49
- // 모션 일시정지 함수
50
- const pause = useCallback(() => {
51
- if (timeoutRef.current) {
52
- clearTimeout(timeoutRef.current);
53
- timeoutRef.current = null;
28
+ setIsVisible(false);
29
+ setIsAnimating(false);
30
+ // DOM 요소가 있다면 즉시 스타일 적용
31
+ if (ref.current) {
32
+ const element = ref.current;
33
+ element.style.transition = 'none';
34
+ element.style.opacity = '0';
35
+ element.style.transform = `scale(${initialScale})`;
36
+ // 다음 프레임에서 transition 복원
37
+ requestAnimationFrame(() => {
38
+ element.style.transition = '';
39
+ });
54
40
  }
41
+ }, [initialScale]);
42
+ const stop = useCallback(() => {
55
43
  setIsAnimating(false);
56
44
  }, []);
57
- // 모션 재개 함수
58
- const resume = useCallback(() => {
59
- if (!isVisible && !isAnimating) {
45
+ useEffect(() => {
46
+ if (autoStart) {
60
47
  start();
61
48
  }
62
- }, [isVisible, isAnimating, start]);
63
- // Intersection Observer 설정
64
- useEffect(() => {
65
- if (!ref.current || !autoStart)
66
- return;
67
- observerRef.current = new IntersectionObserver((entries) => {
68
- entries.forEach((entry) => {
69
- if (entry.isIntersecting) {
70
- start();
71
- if (triggerOnce) {
72
- observerRef.current?.disconnect();
73
- }
74
- }
75
- });
76
- }, { threshold });
77
- observerRef.current.observe(ref.current);
78
- return () => {
79
- if (observerRef.current) {
80
- observerRef.current.disconnect();
81
- }
82
- };
83
- }, [autoStart, threshold, triggerOnce, start]);
84
- // 컴포넌트 언마운트 시 정리
85
- useEffect(() => {
86
- return () => {
87
- if (timeoutRef.current) {
88
- clearTimeout(timeoutRef.current);
89
- }
90
- };
91
- }, []);
92
- // 스타일 계산
93
- const style = {
94
- transform: `scale(${isVisible ? targetScale : initialScale})`,
95
- transition: `transform ${duration}ms ${easing}`,
96
- willChange: 'transform'
97
- };
49
+ }, [autoStart, start]);
50
+ // 스타일 계산 - 메모이제이션으로 불필요한 리렌더링 방지
51
+ const style = useMemo(() => ({
52
+ transform: `scale(${scale})`,
53
+ opacity,
54
+ transition: `all ${duration}ms ${easing}`,
55
+ '--motion-delay': `${delay}ms`,
56
+ '--motion-duration': `${duration}ms`,
57
+ '--motion-easing': easing
58
+ }), [scale, opacity, duration, easing, delay]);
98
59
  return {
99
60
  ref,
61
+ scale,
62
+ opacity,
100
63
  isVisible,
101
64
  isAnimating,
102
65
  style,
103
66
  progress,
104
67
  start,
105
- stop,
106
68
  reset,
107
- pause,
108
- resume
69
+ stop
109
70
  };
110
71
  }
111
72
  //# sourceMappingURL=useScaleIn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScaleIn.js","sourceRoot":"","sources":["../../src/hooks/useScaleIn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useScaleIn.js","sourceRoot":"","sources":["../../src/hooks/useScaleIn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAWzE,MAAM,UAAU,UAAU,CACxB,UAA0B,EAAE;IAK5B,MAAM,EACJ,KAAK,EAAE,YAAY,GAAG,CAAC,EACvB,QAAQ,GAAG,IAAI,EACf,KAAK,GAAG,CAAC,EACT,SAAS,GAAG,IAAI,EAChB,MAAM,GAAG,UAAU,EACpB,GAAG,OAAO,CAAA;IAEX,MAAM,GAAG,GAAG,MAAM,CAAI,IAAI,CAAC,CAAA;IAC3B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACpE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE3D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,cAAc,CAAC,IAAI,CAAC,CAAA;QACpB,QAAQ,CAAC,YAAY,CAAC,CAAA;QACtB,UAAU,CAAC,CAAC,CAAC,CAAA;QACb,WAAW,CAAC,CAAC,CAAC,CAAA;QAEd,UAAU,CAAC,GAAG,EAAE;YACd,WAAW,CAAC,CAAC,CAAC,CAAA;YACd,QAAQ,CAAC,CAAC,CAAC,CAAA;YACX,UAAU,CAAC,CAAC,CAAC,CAAA;YACb,YAAY,CAAC,IAAI,CAAC,CAAA;YAClB,cAAc,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC,EAAE,KAAK,CAAC,CAAA;IACX,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAA;IAEzB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,uBAAuB;QACvB,QAAQ,CAAC,YAAY,CAAC,CAAA;QACtB,UAAU,CAAC,CAAC,CAAC,CAAA;QACb,WAAW,CAAC,CAAC,CAAC,CAAA;QACd,YAAY,CAAC,KAAK,CAAC,CAAA;QACnB,cAAc,CAAC,KAAK,CAAC,CAAA;QAErB,wBAAwB;QACxB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;YAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAA;YACjC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;YAC3B,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,YAAY,GAAG,CAAA;YAElD,yBAAyB;YACzB,qBAAqB,CAAC,GAAG,EAAE;gBACzB,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAA;YAC/B,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAElB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,cAAc,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,EAAE,CAAA;QACT,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;IAEtB,iCAAiC;IACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3B,SAAS,EAAE,SAAS,KAAK,GAAG;QAC5B,OAAO;QACP,UAAU,EAAE,OAAO,QAAQ,MAAM,MAAM,EAAE;QACzC,gBAAgB,EAAE,GAAG,KAAK,IAAI;QAC9B,mBAAmB,EAAE,GAAG,QAAQ,IAAI;QACpC,iBAAiB,EAAE,MAAM;KAChB,CAAA,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IAEvD,OAAO;QACL,GAAG;QACH,KAAK;QACL,OAAO;QACP,SAAS;QACT,WAAW;QACX,KAAK;QACL,QAAQ;QACR,KAAK;QACL,KAAK;QACL,IAAI;KACL,CAAA;AACH,CAAC"}
@@ -1,21 +1,11 @@
1
- import { BaseMotionOptions, BaseMotionReturn, MotionElement } from '../types';
2
- export interface ScrollProgressOptions extends BaseMotionOptions {
3
- progressScale?: number;
4
- progressOpacity?: number;
5
- progressRotate?: number;
6
- progressTranslateY?: number;
7
- progressTranslateX?: number;
8
- initialScale?: number;
9
- initialOpacity?: number;
10
- initialRotate?: number;
11
- initialTranslateY?: number;
12
- initialTranslateX?: number;
13
- scrollThreshold?: number;
14
- progressDirection?: 'horizontal' | 'vertical' | 'both';
1
+ interface ScrollProgressOptions {
2
+ target?: number;
3
+ offset?: number;
4
+ showOnMount?: boolean;
15
5
  }
16
- export declare function useScrollProgress<T extends MotionElement = HTMLDivElement>(options?: ScrollProgressOptions): BaseMotionReturn<T> & {
17
- scrollProgress: number;
18
- scrollDirection: 'up' | 'down' | null;
19
- scrollVelocity: number;
6
+ export declare function useScrollProgress(options?: ScrollProgressOptions): {
7
+ progress: number;
8
+ mounted: boolean;
20
9
  };
10
+ export {};
21
11
  //# sourceMappingURL=useScrollProgress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollProgress.d.ts","sourceRoot":"","sources":["../../src/hooks/useScrollProgress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7E,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,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;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,MAAM,CAAA;CACvD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,aAAa,GAAG,cAAc,EACxE,OAAO,GAAE,qBAA0B,GAClC,gBAAgB,CAAC,CAAC,CAAC,GAAG;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAA;IACrC,cAAc,EAAE,MAAM,CAAA;CACvB,CA6KA"}
1
+ {"version":3,"file":"useScrollProgress.d.ts","sourceRoot":"","sources":["../../src/hooks/useScrollProgress.ts"],"names":[],"mappings":"AAEA,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,qBAA0B;;;EA8CpE"}