@hua-labs/motion-core 2.1.0-alpha.0.2 → 2.1.0-alpha.10

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 (170) hide show
  1. package/README.md +48 -232
  2. package/dist/index.d.mts +1091 -0
  3. package/dist/index.d.ts +1091 -33
  4. package/dist/index.js +4241 -62
  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 +15 -8
  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/useToggleMotion.d.ts +0 -16
  139. package/dist/hooks/useToggleMotion.d.ts.map +0 -1
  140. package/dist/hooks/useToggleMotion.js +0 -53
  141. package/dist/hooks/useToggleMotion.js.map +0 -1
  142. package/dist/hooks/useUnifiedMotion.d.ts +0 -51
  143. package/dist/hooks/useUnifiedMotion.d.ts.map +0 -1
  144. package/dist/hooks/useUnifiedMotion.js +0 -106
  145. package/dist/hooks/useUnifiedMotion.js.map +0 -1
  146. package/dist/hooks/useVisibilityToggle.d.ts +0 -15
  147. package/dist/hooks/useVisibilityToggle.d.ts.map +0 -1
  148. package/dist/hooks/useVisibilityToggle.js +0 -106
  149. package/dist/hooks/useVisibilityToggle.js.map +0 -1
  150. package/dist/index.d.ts.map +0 -1
  151. package/dist/managers/MotionStateManager.d.ts +0 -63
  152. package/dist/managers/MotionStateManager.d.ts.map +0 -1
  153. package/dist/managers/MotionStateManager.js +0 -159
  154. package/dist/managers/MotionStateManager.js.map +0 -1
  155. package/dist/presets/index.d.ts +0 -16
  156. package/dist/presets/index.d.ts.map +0 -1
  157. package/dist/presets/index.js +0 -120
  158. package/dist/presets/index.js.map +0 -1
  159. package/dist/types/common.d.ts +0 -155
  160. package/dist/types/common.d.ts.map +0 -1
  161. package/dist/types/common.js +0 -5
  162. package/dist/types/common.js.map +0 -1
  163. package/dist/types/index.d.ts +0 -77
  164. package/dist/types/index.d.ts.map +0 -1
  165. package/dist/types/index.js +0 -5
  166. package/dist/types/index.js.map +0 -1
  167. package/dist/utils/easing.d.ts +0 -98
  168. package/dist/utils/easing.d.ts.map +0 -1
  169. package/dist/utils/easing.js +0 -233
  170. package/dist/utils/easing.js.map +0 -1
@@ -1,53 +0,0 @@
1
- import { useRef, useState, useEffect, useCallback } from 'react';
2
- export function useToggleMotion(options = {}) {
3
- const { duration = 300, delay = 0, easing = 'ease-in-out' } = options;
4
- const elementRef = useRef(null);
5
- const [isVisible, setIsVisible] = useState(false);
6
- const [isAnimating, setIsAnimating] = useState(false);
7
- const show = useCallback(() => {
8
- setIsVisible(true);
9
- setIsAnimating(true);
10
- }, []);
11
- const hide = useCallback(() => {
12
- setIsVisible(false);
13
- setIsAnimating(true);
14
- }, []);
15
- const toggle = useCallback(() => {
16
- if (isVisible) {
17
- hide();
18
- }
19
- else {
20
- show();
21
- }
22
- }, [isVisible, show, hide]);
23
- useEffect(() => {
24
- if (!elementRef.current)
25
- return;
26
- const element = elementRef.current;
27
- element.style.transition = `opacity ${duration}ms ${easing}, transform ${duration}ms ${easing}`;
28
- if (isVisible) {
29
- element.style.opacity = '1';
30
- element.style.transform = 'translateY(0) scale(1)';
31
- }
32
- else {
33
- element.style.opacity = '0';
34
- element.style.transform = 'translateY(10px) scale(0.95)';
35
- }
36
- const handleTransitionEnd = () => {
37
- setIsAnimating(false);
38
- };
39
- element.addEventListener('transitionend', handleTransitionEnd);
40
- return () => {
41
- element.removeEventListener('transitionend', handleTransitionEnd);
42
- };
43
- }, [isVisible, duration, easing]);
44
- return {
45
- ref: elementRef,
46
- isVisible,
47
- isAnimating,
48
- show,
49
- hide,
50
- toggle
51
- };
52
- }
53
- //# sourceMappingURL=useToggleMotion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useToggleMotion.js","sourceRoot":"","sources":["../../src/hooks/useToggleMotion.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAQvE,MAAM,UAAU,eAAe,CAAC,UAA+B,EAAE;IAC/D,MAAM,EAAE,QAAQ,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,OAAO,CAAA;IACrE,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAA;IACtD,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;IAErD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,YAAY,CAAC,IAAI,CAAC,CAAA;QAClB,cAAc,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,YAAY,CAAC,KAAK,CAAC,CAAA;QACnB,cAAc,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,EAAE,CAAA;QACR,CAAC;aAAM,CAAC;YACN,IAAI,EAAE,CAAA;QACR,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAE3B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,OAAM;QAE/B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;QAClC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,WAAW,QAAQ,MAAM,MAAM,eAAe,QAAQ,MAAM,MAAM,EAAE,CAAA;QAE/F,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;YAC3B,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,wBAAwB,CAAA;QACpD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;YAC3B,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,8BAA8B,CAAA;QAC1D,CAAC;QAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,cAAc,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC,CAAA;QAED,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAA;QAC9D,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,mBAAmB,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAA;QACnE,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;IAEjC,OAAO;QACL,GAAG,EAAE,UAAU;QACf,SAAS;QACT,WAAW;QACX,IAAI;QACJ,IAAI;QACJ,MAAM;KACP,CAAA;AACH,CAAC"}
@@ -1,51 +0,0 @@
1
- /**
2
- * @hua-labs/motion-core - useUnifiedMotion
3
- *
4
- * 통합 Motion Hook - 단일 타입으로 여러 motion hook 중 하나를 선택
5
- * Unified Motion Hook - Select one of multiple motion hooks with a single type
6
- *
7
- * React Rules of Hooks를 준수하면서 필요한 motion hook만 활성화합니다.
8
- * Respects React Rules of Hooks while only activating the necessary motion hook.
9
- */
10
- import type { BaseMotionReturn, MotionElement, EntranceType, BaseMotionOptions } from '../types';
11
- /**
12
- * useUnifiedMotion options
13
- */
14
- export interface UseUnifiedMotionOptions extends Omit<BaseMotionOptions, 'autoStart'> {
15
- /**
16
- * Motion type to use
17
- */
18
- type: EntranceType;
19
- /**
20
- * Auto start animation
21
- * @default false
22
- */
23
- autoStart?: boolean;
24
- }
25
- /**
26
- * 통합 Motion Hook
27
- *
28
- * 단일 타입으로 여러 motion hook 중 하나를 선택합니다.
29
- * React Rules of Hooks를 준수하기 위해 모든 hook을 호출하지만,
30
- * 실제로는 선택된 hook만 활성화됩니다.
31
- *
32
- * Selects one of multiple motion hooks with a single type.
33
- * All hooks are called to respect React Rules of Hooks,
34
- * but only the selected hook is actually activated.
35
- *
36
- * @param options - Motion options
37
- * @returns Motion result with ref and control functions
38
- *
39
- * @example
40
- * ```tsx
41
- * const motion = useUnifiedMotion({
42
- * type: 'fadeIn',
43
- * duration: 600,
44
- * autoStart: false,
45
- * });
46
- *
47
- * return <div ref={motion.ref} style={motion.style}>Content</div>;
48
- * ```
49
- */
50
- export declare function useUnifiedMotion<T extends MotionElement = HTMLDivElement>(options: UseUnifiedMotionOptions): BaseMotionReturn<T>;
51
- //# sourceMappingURL=useUnifiedMotion.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useUnifiedMotion.d.ts","sourceRoot":"","sources":["../../src/hooks/useUnifiedMotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAQjG;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC;IACnF;;OAEG;IACH,IAAI,EAAE,YAAY,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,aAAa,GAAG,cAAc,EACvE,OAAO,EAAE,uBAAuB,GAC/B,gBAAgB,CAAC,CAAC,CAAC,CAwErB"}
@@ -1,106 +0,0 @@
1
- /**
2
- * @hua-labs/motion-core - useUnifiedMotion
3
- *
4
- * 통합 Motion Hook - 단일 타입으로 여러 motion hook 중 하나를 선택
5
- * Unified Motion Hook - Select one of multiple motion hooks with a single type
6
- *
7
- * React Rules of Hooks를 준수하면서 필요한 motion hook만 활성화합니다.
8
- * Respects React Rules of Hooks while only activating the necessary motion hook.
9
- */
10
- import { useFadeIn } from './useFadeIn';
11
- import { useSlideUp } from './useSlideUp';
12
- import { useSlideLeft } from './useSlideLeft';
13
- import { useSlideRight } from './useSlideRight';
14
- import { useScaleIn } from './useScaleIn';
15
- import { useBounceIn } from './useBounceIn';
16
- /**
17
- * 통합 Motion Hook
18
- *
19
- * 단일 타입으로 여러 motion hook 중 하나를 선택합니다.
20
- * React Rules of Hooks를 준수하기 위해 모든 hook을 호출하지만,
21
- * 실제로는 선택된 hook만 활성화됩니다.
22
- *
23
- * Selects one of multiple motion hooks with a single type.
24
- * All hooks are called to respect React Rules of Hooks,
25
- * but only the selected hook is actually activated.
26
- *
27
- * @param options - Motion options
28
- * @returns Motion result with ref and control functions
29
- *
30
- * @example
31
- * ```tsx
32
- * const motion = useUnifiedMotion({
33
- * type: 'fadeIn',
34
- * duration: 600,
35
- * autoStart: false,
36
- * });
37
- *
38
- * return <div ref={motion.ref} style={motion.style}>Content</div>;
39
- * ```
40
- */
41
- export function useUnifiedMotion(options) {
42
- const { type, duration = 600, autoStart = false, delay, easing, ...restOptions } = options;
43
- // React Rules of Hooks를 준수하기 위해 모든 hook을 호출
44
- // 하지만 실제로는 선택된 hook만 활성화
45
- // Call all hooks to respect React Rules of Hooks
46
- // But only the selected hook is actually activated
47
- const fadeInResult = useFadeIn({
48
- duration,
49
- autoStart: false, // 항상 false로 설정하고 수동으로 start 호출
50
- delay,
51
- easing,
52
- ...restOptions,
53
- });
54
- const slideUpResult = useSlideUp({
55
- duration,
56
- autoStart: false,
57
- delay,
58
- easing,
59
- ...restOptions,
60
- });
61
- const slideLeftResult = useSlideLeft({
62
- duration,
63
- autoStart: false,
64
- delay,
65
- easing,
66
- ...restOptions,
67
- });
68
- const slideRightResult = useSlideRight({
69
- duration,
70
- autoStart: false,
71
- delay,
72
- easing,
73
- ...restOptions,
74
- });
75
- const scaleInResult = useScaleIn({
76
- duration,
77
- autoStart: false,
78
- delay,
79
- easing,
80
- ...restOptions,
81
- });
82
- const bounceInResult = useBounceIn({
83
- duration,
84
- autoStart: false,
85
- delay,
86
- ...restOptions,
87
- });
88
- // 선택된 motion result 반환
89
- // Return the selected motion result
90
- switch (type) {
91
- case 'slideUp':
92
- return slideUpResult;
93
- case 'slideLeft':
94
- return slideLeftResult;
95
- case 'slideRight':
96
- return slideRightResult;
97
- case 'scaleIn':
98
- return scaleInResult;
99
- case 'bounceIn':
100
- return bounceInResult;
101
- case 'fadeIn':
102
- default:
103
- return fadeInResult;
104
- }
105
- }
106
- //# sourceMappingURL=useUnifiedMotion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useUnifiedMotion.js","sourceRoot":"","sources":["../../src/hooks/useUnifiedMotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAkB5C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAgC;IAEhC,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,GAAG,EAAE,SAAS,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC;IAE3F,4CAA4C;IAC5C,yBAAyB;IACzB,iDAAiD;IACjD,mDAAmD;IAEnD,MAAM,YAAY,GAAG,SAAS,CAAI;QAChC,QAAQ;QACR,SAAS,EAAE,KAAK,EAAE,+BAA+B;QACjD,KAAK;QACL,MAAM;QACN,GAAG,WAAW;KACf,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,UAAU,CAAI;QAClC,QAAQ;QACR,SAAS,EAAE,KAAK;QAChB,KAAK;QACL,MAAM;QACN,GAAG,WAAW;KACf,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,YAAY,CAAI;QACtC,QAAQ;QACR,SAAS,EAAE,KAAK;QAChB,KAAK;QACL,MAAM;QACN,GAAG,WAAW;KACf,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,aAAa,CAAI;QACxC,QAAQ;QACR,SAAS,EAAE,KAAK;QAChB,KAAK;QACL,MAAM;QACN,GAAG,WAAW;KACf,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,UAAU,CAAI;QAClC,QAAQ;QACR,SAAS,EAAE,KAAK;QAChB,KAAK;QACL,MAAM;QACN,GAAG,WAAW;KACf,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,WAAW,CAAI;QACpC,QAAQ;QACR,SAAS,EAAE,KAAK;QAChB,KAAK;QACL,GAAG,WAAW;KACf,CAAC,CAAC;IAEH,uBAAuB;IACvB,oCAAoC;IACpC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC;QACvB,KAAK,WAAW;YACd,OAAO,eAAe,CAAC;QACzB,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC;QAC1B,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,cAAc,CAAC;QACxB,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,YAAY,CAAC;IACxB,CAAC;AACH,CAAC"}
@@ -1,15 +0,0 @@
1
- import { BaseMotionOptions, InteractionReturn, MotionElement } from '../types';
2
- export interface VisibilityToggleOptions extends BaseMotionOptions {
3
- showScale?: number;
4
- showOpacity?: number;
5
- showRotate?: number;
6
- showTranslateY?: number;
7
- showTranslateX?: number;
8
- hideScale?: number;
9
- hideOpacity?: number;
10
- hideRotate?: number;
11
- hideTranslateY?: number;
12
- hideTranslateX?: number;
13
- }
14
- export declare function useVisibilityToggle<T extends MotionElement = HTMLDivElement>(options?: VisibilityToggleOptions): InteractionReturn<T>;
15
- //# sourceMappingURL=useVisibilityToggle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useVisibilityToggle.d.ts","sourceRoot":"","sources":["../../src/hooks/useVisibilityToggle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE9E,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,aAAa,GAAG,cAAc,EAC1E,OAAO,GAAE,uBAA4B,GACpC,iBAAiB,CAAC,CAAC,CAAC,CAoItB"}
@@ -1,106 +0,0 @@
1
- import { useRef, useState, useCallback } from 'react';
2
- export function useVisibilityToggle(options = {}) {
3
- const { duration = 300, easing = 'ease-out', showScale = 1, showOpacity = 1, showRotate = 0, showTranslateY = 0, showTranslateX = 0, hideScale = 0.8, hideOpacity = 0, hideRotate = 0, hideTranslateY = 20, hideTranslateX = 0, onComplete, onStart, onStop, onReset } = options;
4
- const ref = useRef(null);
5
- const [isVisible, setIsVisible] = useState(false);
6
- const [isAnimating, setIsAnimating] = useState(false);
7
- const [progress, setProgress] = useState(0);
8
- // 가시성 토글 함수
9
- const toggle = useCallback(() => {
10
- setIsAnimating(true);
11
- setProgress(0);
12
- onStart?.();
13
- const newVisibility = !isVisible;
14
- setIsVisible(newVisibility);
15
- // 애니메이션 완료 시
16
- setTimeout(() => {
17
- setIsAnimating(false);
18
- setProgress(1);
19
- onComplete?.();
20
- }, duration);
21
- }, [isVisible, duration, onStart, onComplete]);
22
- // 표시 함수
23
- const show = useCallback(() => {
24
- if (!isVisible) {
25
- setIsAnimating(true);
26
- setProgress(0);
27
- onStart?.();
28
- setIsVisible(true);
29
- setTimeout(() => {
30
- setIsAnimating(false);
31
- setProgress(1);
32
- onComplete?.();
33
- }, duration);
34
- }
35
- }, [isVisible, duration, onStart, onComplete]);
36
- // 숨김 함수
37
- const hide = useCallback(() => {
38
- if (isVisible) {
39
- setIsAnimating(true);
40
- setProgress(1);
41
- onStart?.();
42
- setIsVisible(false);
43
- setTimeout(() => {
44
- setIsAnimating(false);
45
- setProgress(0);
46
- onComplete?.();
47
- }, duration);
48
- }
49
- }, [isVisible, duration, onStart, onComplete]);
50
- // 모션 시작 함수 (프로그래매틱 제어용)
51
- const start = useCallback(() => {
52
- if (!isVisible) {
53
- toggle();
54
- }
55
- }, [isVisible, toggle]);
56
- // 모션 중단 함수
57
- const stop = useCallback(() => {
58
- setIsAnimating(false);
59
- onStop?.();
60
- }, [onStop]);
61
- // 모션 리셋 함수
62
- const reset = useCallback(() => {
63
- setIsVisible(false);
64
- setIsAnimating(false);
65
- setProgress(0);
66
- onReset?.();
67
- }, [onReset]);
68
- // 모션 일시정지 함수
69
- const pause = useCallback(() => {
70
- setIsAnimating(false);
71
- }, []);
72
- // 모션 재개 함수
73
- const resume = useCallback(() => {
74
- if (isVisible) {
75
- setIsAnimating(true);
76
- }
77
- }, [isVisible]);
78
- // 스타일 계산
79
- const style = {
80
- transform: `
81
- scale(${isVisible ? showScale : hideScale})
82
- rotate(${isVisible ? showRotate : hideRotate}deg)
83
- translate(${isVisible ? showTranslateX : hideTranslateX}px, ${isVisible ? showTranslateY : hideTranslateY}px)
84
- `,
85
- opacity: isVisible ? showOpacity : hideOpacity,
86
- transition: `all ${duration}ms ${easing}`,
87
- willChange: 'transform, opacity'
88
- };
89
- return {
90
- ref,
91
- isVisible,
92
- isAnimating,
93
- style,
94
- progress,
95
- start,
96
- stop,
97
- reset,
98
- pause,
99
- resume,
100
- // 추가 메서드
101
- toggle,
102
- show,
103
- hide
104
- };
105
- }
106
- //# sourceMappingURL=useVisibilityToggle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useVisibilityToggle.js","sourceRoot":"","sources":["../../src/hooks/useVisibilityToggle.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,MAAM,EACZ,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAA;AAOpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAGjE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAOvE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAGjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGvD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAG7D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAOzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAM3D,cAAc,WAAW,CAAA;AAMzB,OAAO,EACL,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAClC,UAAU,EAAE,WAAW,EAAE,aAAa,EACtC,KAAK,cAAc,EAAE,KAAK,UAAU,EACrC,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACL,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EACtD,mBAAmB,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EACtE,MAAM,gBAAgB,CAAA;AAMvB,YAAY,EAEV,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,SAAS,EAKT,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EAAE,mBAAmB;AAGlC,YAAY,EACZ,YAAY,EAGZ,YAAY,EACZ,aAAa,EACb,mBAAmB,EAGnB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,SAAS,CAAA"}
@@ -1,63 +0,0 @@
1
- import { MotionState, MotionElement } from '../types';
2
- /**
3
- * MotionStateManager - 모션 상태 관리 클래스
4
- *
5
- * 상태 충돌 문제 해결을 위해 3가지 상태를 분리:
6
- * - internalVisibility: 내부 로직 (초기화, 리셋 등)
7
- * - triggeredVisibility: 외부 트리거 (Intersection Observer)
8
- * - finalVisibility: 최종 계산된 상태
9
- */
10
- export declare class MotionStateManager {
11
- private states;
12
- private listeners;
13
- /**
14
- * 요소의 상태를 초기화
15
- */
16
- initializeElement(elementId: string, config: MotionElement): void;
17
- /**
18
- * 내부 가시성 상태 업데이트 (초기화, 리셋 등)
19
- */
20
- setInternalVisibility(elementId: string, visible: boolean): void;
21
- /**
22
- * 외부 트리거 가시성 상태 업데이트 (Intersection Observer)
23
- */
24
- setTriggeredVisibility(elementId: string, visible: boolean): void;
25
- /**
26
- * 모션 값 업데이트
27
- */
28
- updateMotionValues(elementId: string, values: Partial<MotionState>): void;
29
- /**
30
- * 최종 상태 계산
31
- */
32
- private computeFinalState;
33
- /**
34
- * 현재 상태 조회
35
- */
36
- getState(elementId: string): MotionState | undefined;
37
- /**
38
- * 모든 상태 조회
39
- */
40
- getAllStates(): Map<string, MotionState>;
41
- /**
42
- * 상태 변경 리스너 등록
43
- */
44
- subscribe(elementId: string, listener: (state: MotionState) => void): () => void;
45
- /**
46
- * 리스너들에게 상태 변경 알림
47
- */
48
- notifyListeners(elementId: string, state: MotionState): void;
49
- /**
50
- * 모든 상태 초기화
51
- */
52
- reset(): void;
53
- /**
54
- * 특정 요소 상태 초기화
55
- */
56
- resetElement(elementId: string): void;
57
- /**
58
- * 디버그용 상태 출력
59
- */
60
- debug(): void;
61
- }
62
- export declare const motionStateManager: MotionStateManager;
63
- //# sourceMappingURL=MotionStateManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MotionStateManager.d.ts","sourceRoot":"","sources":["../../src/managers/MotionStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAErD;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,SAAS,CAA4D;IAE7E;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAmBjE;;OAEG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAShE;;OAEG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IASjE;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAQzE;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIpD;;OAEG;IACH,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAIxC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI;IAgBhF;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI;IAe5D;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKrC;;OAEG;IACH,KAAK,IAAI,IAAI;CAed;AAGD,eAAO,MAAM,kBAAkB,oBAA2B,CAAA"}
@@ -1,159 +0,0 @@
1
- /**
2
- * MotionStateManager - 모션 상태 관리 클래스
3
- *
4
- * 상태 충돌 문제 해결을 위해 3가지 상태를 분리:
5
- * - internalVisibility: 내부 로직 (초기화, 리셋 등)
6
- * - triggeredVisibility: 외부 트리거 (Intersection Observer)
7
- * - finalVisibility: 최종 계산된 상태
8
- */
9
- export class MotionStateManager {
10
- constructor() {
11
- this.states = new Map();
12
- this.listeners = new Map();
13
- }
14
- /**
15
- * 요소의 상태를 초기화
16
- */
17
- initializeElement(elementId, config) {
18
- const initialState = {
19
- internalVisibility: false, // 초기에 숨김 상태로 시작 (스크롤 리빌용)
20
- triggeredVisibility: false, // Intersection Observer가 아직 트리거되지 않음
21
- finalVisibility: false, // 초기에 숨김 상태로 시작
22
- opacity: 0, // 초기에 투명 상태로 시작
23
- translateY: 20, // 초기에 아래로 이동된 상태로 시작
24
- translateX: 0,
25
- scale: 0.95, // 초기에 약간 축소된 상태로 시작
26
- rotation: 0,
27
- isHovered: false,
28
- isClicked: false,
29
- isAnimating: false
30
- };
31
- this.states.set(elementId, initialState);
32
- this.computeFinalState(elementId);
33
- }
34
- /**
35
- * 내부 가시성 상태 업데이트 (초기화, 리셋 등)
36
- */
37
- setInternalVisibility(elementId, visible) {
38
- const state = this.states.get(elementId);
39
- if (!state)
40
- return;
41
- state.internalVisibility = visible;
42
- this.computeFinalState(elementId);
43
- this.notifyListeners(elementId, state);
44
- }
45
- /**
46
- * 외부 트리거 가시성 상태 업데이트 (Intersection Observer)
47
- */
48
- setTriggeredVisibility(elementId, visible) {
49
- const state = this.states.get(elementId);
50
- if (!state)
51
- return;
52
- state.triggeredVisibility = visible;
53
- this.computeFinalState(elementId);
54
- this.notifyListeners(elementId, state);
55
- }
56
- /**
57
- * 모션 값 업데이트
58
- */
59
- updateMotionValues(elementId, values) {
60
- const state = this.states.get(elementId);
61
- if (!state)
62
- return;
63
- Object.assign(state, values);
64
- this.notifyListeners(elementId, state);
65
- }
66
- /**
67
- * 최종 상태 계산
68
- */
69
- computeFinalState(elementId) {
70
- const state = this.states.get(elementId);
71
- if (!state)
72
- return;
73
- // 내부 또는 외부 트리거 중 하나라도 true면 최종적으로 보임
74
- state.finalVisibility = state.internalVisibility || state.triggeredVisibility;
75
- // 모션 중 상태 업데이트
76
- state.isAnimating = state.finalVisibility && (state.opacity < 1 || state.translateY > 0);
77
- }
78
- /**
79
- * 현재 상태 조회
80
- */
81
- getState(elementId) {
82
- return this.states.get(elementId);
83
- }
84
- /**
85
- * 모든 상태 조회
86
- */
87
- getAllStates() {
88
- return new Map(this.states);
89
- }
90
- /**
91
- * 상태 변경 리스너 등록
92
- */
93
- subscribe(elementId, listener) {
94
- if (!this.listeners.has(elementId)) {
95
- this.listeners.set(elementId, new Set());
96
- }
97
- this.listeners.get(elementId).add(listener);
98
- // 구독 해제 함수 반환
99
- return () => {
100
- const listeners = this.listeners.get(elementId);
101
- if (listeners) {
102
- listeners.delete(listener);
103
- }
104
- };
105
- }
106
- /**
107
- * 리스너들에게 상태 변경 알림
108
- */
109
- notifyListeners(elementId, state) {
110
- const listeners = this.listeners.get(elementId);
111
- if (!listeners)
112
- return;
113
- listeners.forEach(listener => {
114
- try {
115
- listener(state);
116
- }
117
- catch (error) {
118
- if (process.env.NODE_ENV === 'development') {
119
- console.error(`MotionStateManager listener error for ${elementId}:`, error);
120
- }
121
- }
122
- });
123
- }
124
- /**
125
- * 모든 상태 초기화
126
- */
127
- reset() {
128
- this.states.clear();
129
- this.listeners.clear();
130
- }
131
- /**
132
- * 특정 요소 상태 초기화
133
- */
134
- resetElement(elementId) {
135
- this.states.delete(elementId);
136
- this.listeners.delete(elementId);
137
- }
138
- /**
139
- * 디버그용 상태 출력
140
- */
141
- debug() {
142
- if (process.env.NODE_ENV === 'development') {
143
- console.log('MotionStateManager Debug:');
144
- this.states.forEach((state, elementId) => {
145
- console.log(` ${elementId}:`, {
146
- internalVisibility: state.internalVisibility,
147
- triggeredVisibility: state.triggeredVisibility,
148
- finalVisibility: state.finalVisibility,
149
- opacity: state.opacity,
150
- translateY: state.translateY,
151
- isAnimating: state.isAnimating
152
- });
153
- });
154
- }
155
- }
156
- }
157
- // 싱글톤 인스턴스
158
- export const motionStateManager = new MotionStateManager();
159
- //# sourceMappingURL=MotionStateManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MotionStateManager.js","sourceRoot":"","sources":["../../src/managers/MotionStateManager.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import type { MotionPreset, PresetConfig, PageType, PageMotionsConfig } from '../types';
2
- export declare const MOTION_PRESETS: PresetConfig;
3
- export declare const PAGE_MOTIONS: Record<PageType, PageMotionsConfig>;
4
- /**
5
- * 프리셋과 커스텀 설정을 병합
6
- */
7
- export declare function mergeWithPreset(preset: MotionPreset, custom?: Partial<MotionPreset>): MotionPreset;
8
- /**
9
- * 페이지 타입으로 프리셋 가져오기
10
- */
11
- export declare function getPagePreset(pageType: PageType): PageMotionsConfig;
12
- /**
13
- * 모션 타입으로 기본 프리셋 가져오기
14
- */
15
- export declare function getMotionPreset(type: string): MotionPreset;
16
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAMvF,eAAO,MAAM,cAAc,EAAE,YA2C5B,CAAA;AAMD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CA4C5D,CAAA;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EACpB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GACjC,YAAY,CAKd;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,CAEnE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAE1D"}