@mks2508/mks-ui 0.2.1 → 0.3.2

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 (155) hide show
  1. package/dist/react-ui/hooks/Animation/UseAutoHeight.js +7 -7
  2. package/dist/react-ui/hooks/DOM/UseIsInView.js +3 -3
  3. package/dist/react-ui/hooks/Formatting/UseListFormat.d.ts +49 -0
  4. package/dist/react-ui/hooks/Formatting/UseListFormat.d.ts.map +1 -0
  5. package/dist/react-ui/hooks/Formatting/UseListFormat.js +105 -0
  6. package/dist/react-ui/hooks/State/UseControlledState.js +4 -4
  7. package/dist/react-ui/hooks/State/UseDataState.js +5 -5
  8. package/dist/react-ui/hooks/index.d.ts +2 -0
  9. package/dist/react-ui/hooks/index.d.ts.map +1 -1
  10. package/dist/react-ui/hooks/index.js +1 -0
  11. package/dist/react-ui/index.js +22 -1
  12. package/dist/react-ui/lib/get-strict-context.js +3 -3
  13. package/dist/react-ui/primitives/CountingNumber/index.js +3 -3
  14. package/dist/react-ui/primitives/Highlight/index.js +26 -26
  15. package/dist/react-ui/primitives/Slot/index.js +3 -3
  16. package/dist/react-ui/primitives/index.d.ts +1 -0
  17. package/dist/react-ui/primitives/index.d.ts.map +1 -1
  18. package/dist/react-ui/primitives/index.js +18 -0
  19. package/dist/react-ui/primitives/waapi/Morph/Morph.types.d.ts +76 -0
  20. package/dist/react-ui/primitives/waapi/Morph/Morph.types.d.ts.map +1 -0
  21. package/dist/react-ui/primitives/waapi/Morph/MorphContext.d.ts +11 -0
  22. package/dist/react-ui/primitives/waapi/Morph/MorphContext.d.ts.map +1 -0
  23. package/dist/react-ui/primitives/waapi/Morph/MorphContext.js +19 -0
  24. package/dist/react-ui/primitives/waapi/Morph/index.d.ts +23 -0
  25. package/dist/react-ui/primitives/waapi/Morph/index.d.ts.map +1 -0
  26. package/dist/react-ui/primitives/waapi/Morph/index.js +45 -0
  27. package/dist/react-ui/primitives/waapi/Morph/techniques/index.d.ts +12 -0
  28. package/dist/react-ui/primitives/waapi/Morph/techniques/index.d.ts.map +1 -0
  29. package/dist/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.d.ts +38 -0
  30. package/dist/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.d.ts.map +1 -0
  31. package/dist/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.js +78 -0
  32. package/dist/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.d.ts +23 -0
  33. package/dist/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.d.ts.map +1 -0
  34. package/dist/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.js +140 -0
  35. package/dist/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.d.ts +28 -0
  36. package/dist/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.d.ts.map +1 -0
  37. package/dist/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.js +77 -0
  38. package/dist/react-ui/primitives/waapi/Morph/useMorph.d.ts +27 -0
  39. package/dist/react-ui/primitives/waapi/Morph/useMorph.d.ts.map +1 -0
  40. package/dist/react-ui/primitives/waapi/Morph/useMorph.js +86 -0
  41. package/dist/react-ui/primitives/waapi/Reorder/Reorder.types.d.ts +168 -0
  42. package/dist/react-ui/primitives/waapi/Reorder/Reorder.types.d.ts.map +1 -0
  43. package/dist/react-ui/primitives/waapi/Reorder/index.d.ts +25 -0
  44. package/dist/react-ui/primitives/waapi/Reorder/index.d.ts.map +1 -0
  45. package/dist/react-ui/primitives/waapi/Reorder/index.js +186 -0
  46. package/dist/react-ui/primitives/waapi/Reorder/useReorder.d.ts +26 -0
  47. package/dist/react-ui/primitives/waapi/Reorder/useReorder.d.ts.map +1 -0
  48. package/dist/react-ui/primitives/waapi/Reorder/useReorder.js +48 -0
  49. package/dist/react-ui/primitives/waapi/Reorder/useReorderPresence.d.ts +33 -0
  50. package/dist/react-ui/primitives/waapi/Reorder/useReorderPresence.d.ts.map +1 -0
  51. package/dist/react-ui/primitives/waapi/Reorder/useReorderPresence.js +137 -0
  52. package/dist/react-ui/primitives/waapi/Reorder/utils/separatorCoordination.d.ts +47 -0
  53. package/dist/react-ui/primitives/waapi/Reorder/utils/separatorCoordination.d.ts.map +1 -0
  54. package/dist/react-ui/primitives/waapi/Reorder/utils/separatorCoordination.js +72 -0
  55. package/dist/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.styles.d.ts +10 -0
  56. package/dist/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.styles.d.ts.map +1 -0
  57. package/dist/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.types.d.ts +74 -0
  58. package/dist/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.types.d.ts.map +1 -0
  59. package/dist/react-ui/primitives/waapi/SlidingNumber/index.d.ts +33 -0
  60. package/dist/react-ui/primitives/waapi/SlidingNumber/index.d.ts.map +1 -0
  61. package/dist/react-ui/primitives/waapi/SlidingNumber/index.js +354 -0
  62. package/dist/react-ui/primitives/waapi/SlidingText/SlidingText.styles.d.ts +25 -0
  63. package/dist/react-ui/primitives/waapi/SlidingText/SlidingText.styles.d.ts.map +1 -0
  64. package/dist/react-ui/primitives/waapi/SlidingText/SlidingText.types.d.ts +57 -0
  65. package/dist/react-ui/primitives/waapi/SlidingText/SlidingText.types.d.ts.map +1 -0
  66. package/dist/react-ui/primitives/waapi/SlidingText/index.d.ts +26 -0
  67. package/dist/react-ui/primitives/waapi/SlidingText/index.d.ts.map +1 -0
  68. package/dist/react-ui/primitives/waapi/SlidingText/index.js +105 -0
  69. package/dist/react-ui/primitives/waapi/core/animationConstants.d.ts +156 -0
  70. package/dist/react-ui/primitives/waapi/core/animationConstants.d.ts.map +1 -0
  71. package/dist/react-ui/primitives/waapi/core/animationConstants.js +180 -0
  72. package/dist/react-ui/primitives/waapi/core/index.d.ts +16 -0
  73. package/dist/react-ui/primitives/waapi/core/index.d.ts.map +1 -0
  74. package/dist/react-ui/primitives/waapi/core/index.js +5 -0
  75. package/dist/react-ui/primitives/waapi/core/types.d.ts +143 -0
  76. package/dist/react-ui/primitives/waapi/core/types.d.ts.map +1 -0
  77. package/dist/react-ui/primitives/waapi/core/useAnimationOrchestrator.d.ts +32 -0
  78. package/dist/react-ui/primitives/waapi/core/useAnimationOrchestrator.d.ts.map +1 -0
  79. package/dist/react-ui/primitives/waapi/core/useAnimationOrchestrator.js +322 -0
  80. package/dist/react-ui/primitives/waapi/core/useElementRegistry.d.ts +21 -0
  81. package/dist/react-ui/primitives/waapi/core/useElementRegistry.d.ts.map +1 -0
  82. package/dist/react-ui/primitives/waapi/core/useElementRegistry.js +65 -0
  83. package/dist/react-ui/primitives/waapi/core/useFLIPAnimation.d.ts +20 -0
  84. package/dist/react-ui/primitives/waapi/core/useFLIPAnimation.d.ts.map +1 -0
  85. package/dist/react-ui/primitives/waapi/core/useFLIPAnimation.js +99 -0
  86. package/dist/react-ui/primitives/waapi/core/usePositionCapture.d.ts +24 -0
  87. package/dist/react-ui/primitives/waapi/core/usePositionCapture.d.ts.map +1 -0
  88. package/dist/react-ui/primitives/waapi/core/usePositionCapture.js +75 -0
  89. package/dist/react-ui/primitives/waapi/index.d.ts +33 -0
  90. package/dist/react-ui/primitives/waapi/index.d.ts.map +1 -0
  91. package/dist/react-ui/primitives/waapi/index.js +18 -0
  92. package/dist/react-ui/ui/Accordion/index.js +3 -3
  93. package/dist/react-ui/ui/Button/index.js +8 -8
  94. package/dist/react-ui/ui/Combobox/index.js +2 -2
  95. package/dist/react-ui/ui/DataCard/DataCard.styles.d.ts +35 -0
  96. package/dist/react-ui/ui/DataCard/DataCard.styles.d.ts.map +1 -0
  97. package/dist/react-ui/ui/DataCard/DataCard.styles.js +114 -0
  98. package/dist/react-ui/ui/DataCard/DataCard.types.d.ts +135 -0
  99. package/dist/react-ui/ui/DataCard/DataCard.types.d.ts.map +1 -0
  100. package/dist/react-ui/ui/DataCard/index.d.ts +129 -0
  101. package/dist/react-ui/ui/DataCard/index.d.ts.map +1 -0
  102. package/dist/react-ui/ui/DataCard/index.js +276 -0
  103. package/dist/react-ui/ui/Menu/index.js +2 -2
  104. package/dist/react-ui/ui/Switch/index.js +3 -3
  105. package/dist/react-ui/ui/Tabs/index.js +3 -3
  106. package/dist/react-ui/ui/TextFlow/TextFlow.styles.d.ts +16 -0
  107. package/dist/react-ui/ui/TextFlow/TextFlow.styles.d.ts.map +1 -0
  108. package/dist/react-ui/ui/TextFlow/TextFlow.types.d.ts +101 -0
  109. package/dist/react-ui/ui/TextFlow/TextFlow.types.d.ts.map +1 -0
  110. package/dist/react-ui/ui/TextFlow/index.d.ts +26 -0
  111. package/dist/react-ui/ui/TextFlow/index.d.ts.map +1 -0
  112. package/dist/react-ui/ui/TextFlow/index.js +187 -0
  113. package/dist/react-ui/ui/index.d.ts +2 -0
  114. package/dist/react-ui/ui/index.d.ts.map +1 -1
  115. package/dist/react-ui/ui/index.js +3 -0
  116. package/package.json +6 -2
  117. package/src/react-ui/hooks/Formatting/UseListFormat.ts +134 -0
  118. package/src/react-ui/hooks/index.ts +3 -0
  119. package/src/react-ui/primitives/index.ts +3 -0
  120. package/src/react-ui/primitives/waapi/Morph/Morph.types.ts +106 -0
  121. package/src/react-ui/primitives/waapi/Morph/MorphContext.tsx +21 -0
  122. package/src/react-ui/primitives/waapi/Morph/index.tsx +56 -0
  123. package/src/react-ui/primitives/waapi/Morph/techniques/index.ts +12 -0
  124. package/src/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.ts +88 -0
  125. package/src/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.ts +175 -0
  126. package/src/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.ts +86 -0
  127. package/src/react-ui/primitives/waapi/Morph/useMorph.ts +100 -0
  128. package/src/react-ui/primitives/waapi/Reorder/Reorder.types.ts +177 -0
  129. package/src/react-ui/primitives/waapi/Reorder/index.tsx +260 -0
  130. package/src/react-ui/primitives/waapi/Reorder/useReorder.ts +46 -0
  131. package/src/react-ui/primitives/waapi/Reorder/useReorderPresence.ts +208 -0
  132. package/src/react-ui/primitives/waapi/Reorder/utils/separatorCoordination.ts +104 -0
  133. package/src/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.styles.ts +14 -0
  134. package/src/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.types.ts +84 -0
  135. package/src/react-ui/primitives/waapi/SlidingNumber/index.tsx +474 -0
  136. package/src/react-ui/primitives/waapi/SlidingText/SlidingText.styles.ts +32 -0
  137. package/src/react-ui/primitives/waapi/SlidingText/SlidingText.types.ts +69 -0
  138. package/src/react-ui/primitives/waapi/SlidingText/index.tsx +140 -0
  139. package/src/react-ui/primitives/waapi/core/animationConstants.ts +215 -0
  140. package/src/react-ui/primitives/waapi/core/index.ts +53 -0
  141. package/src/react-ui/primitives/waapi/core/types.ts +200 -0
  142. package/src/react-ui/primitives/waapi/core/useAnimationOrchestrator.ts +429 -0
  143. package/src/react-ui/primitives/waapi/core/useElementRegistry.ts +80 -0
  144. package/src/react-ui/primitives/waapi/core/useFLIPAnimation.ts +137 -0
  145. package/src/react-ui/primitives/waapi/core/usePositionCapture.ts +105 -0
  146. package/src/react-ui/primitives/waapi/index.ts +116 -0
  147. package/src/react-ui/styles/animations.css +369 -0
  148. package/src/react-ui/ui/DataCard/DataCard.styles.ts +150 -0
  149. package/src/react-ui/ui/DataCard/DataCard.types.ts +146 -0
  150. package/src/react-ui/ui/DataCard/index.tsx +406 -0
  151. package/src/react-ui/ui/TextFlow/TextFlow.styles.ts +36 -0
  152. package/src/react-ui/ui/TextFlow/TextFlow.types.ts +118 -0
  153. package/src/react-ui/ui/TextFlow/index.tsx +276 -0
  154. package/src/react-ui/ui/index.ts +4 -0
  155. /package/dist/react-ui/components/MorphingPopover/{morphing-popover.module-CgbYV_HS.css → morphing-popover.module-BycNI8nU.css} +0 -0
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Obtains responsive animation duration for the current device.
3
+ * Returns 0 if the user prefers reduced motion, 60% on mobile.
4
+ * @param baseDuration - Base duration in ms
5
+ * @returns Adjusted duration for the current device
6
+ */
7
+ export declare const getResponsiveDuration: (baseDuration: number) => number;
8
+ /**
9
+ * Obtains responsive stagger delay for the current device.
10
+ * Returns 0 if the user prefers reduced motion, 50% on mobile.
11
+ * @param baseDelay - Base delay in ms
12
+ * @returns Adjusted delay for the current device
13
+ */
14
+ export declare const getResponsiveStagger: (baseDelay: number) => number;
15
+ /** Core timing constants (ms) */
16
+ export declare const TIMING: {
17
+ readonly ENTER_DURATION: 200;
18
+ readonly EXIT_DURATION: 180;
19
+ readonly COLLAPSE_DURATION: 200;
20
+ readonly FLIP_DURATION: 300;
21
+ readonly ENTER_STAGGER: 15;
22
+ readonly EXIT_STAGGER: 0;
23
+ readonly COLLAPSE_DELAY: 30;
24
+ readonly FLIP_DELAY_PERCENT: 0.25;
25
+ readonly MIN_DELTA_PX: 1;
26
+ };
27
+ /** Transform offsets (px/deg) */
28
+ export declare const TRANSFORMS: {
29
+ readonly OFFSET_Y_ENTER: 8;
30
+ readonly OFFSET_Y_EXIT: -8;
31
+ readonly OFFSET_X: 16;
32
+ readonly SCALE_ENTER: 0.85;
33
+ readonly SCALE_EXIT: 0.85;
34
+ readonly ROTATE_EXIT: 0;
35
+ };
36
+ /** Visual effects */
37
+ export declare const EFFECTS: {
38
+ readonly BLUR_ENTER: 4;
39
+ readonly BLUR_EXIT: 2;
40
+ };
41
+ /** Research-based easing curves (Material Design + CSS-Tricks + Josh W. Comeau) */
42
+ export declare const EASINGS: {
43
+ readonly MATERIAL_DECELERATE: "cubic-bezier(0, 0, 0.2, 1)";
44
+ readonly MATERIAL_ACCELERATE: "cubic-bezier(0.4, 0, 1, 1)";
45
+ readonly MATERIAL_STANDARD: "cubic-bezier(0.4, 0, 0.2, 1)";
46
+ readonly EASE_REORDER: "cubic-bezier(0.215, 0.61, 0.355, 1)";
47
+ readonly EASE_OUT_CUBIC: "cubic-bezier(0.33, 1, 0.68, 1)";
48
+ readonly EASE_IN_CUBIC: "cubic-bezier(0.32, 0, 0.67, 0)";
49
+ readonly EASE_IN_OUT: "cubic-bezier(0.42, 0, 0.58, 1)";
50
+ readonly EASE_OUT_EXPO: "cubic-bezier(0.16, 1, 0.3, 1)";
51
+ readonly EASE_FLIP: "cubic-bezier(0.2, 0, 0.2, 1)";
52
+ readonly SPRING_GENTLE: "linear(0, 0.009, 0.035 2.1%, 0.141 4.4%, 0.723 12.9%, 0.938 16.7%, 1.017 19.4%, 1.067, 1.099 24.3%, 1.108 26%, 1.100, 1.078 30.1%, 1.049 32.5%, 0.994 37.3%, 0.981 40.2%, 0.974 43.4%, 0.975 50.2%, 0.997 62.5%, 1.001 74.7%, 1)";
53
+ readonly SPRING_SNAPPY: "linear(0, 0.006, 0.024 2%, 0.096 4.2%, 0.397 9.3%, 0.861 15.8%, 1.002 18.7%, 1.093 21.4%, 1.143 24%, 1.156, 1.149 28.3%, 1.115 31.5%, 1.022 40%, 0.988 47.1%, 0.984 55.1%, 0.998 72.3%, 1.001 85.4%, 1)";
54
+ };
55
+ /** Responsive animation configurations with accessibility */
56
+ export declare const RESPONSIVE_CONFIGS: {
57
+ readonly tokenEnter: {
58
+ readonly duration: number;
59
+ readonly stagger: number;
60
+ readonly easing: "cubic-bezier(0, 0, 0.2, 1)";
61
+ readonly blur: 4;
62
+ readonly offsetY: 8;
63
+ readonly scale: 0.85;
64
+ };
65
+ readonly tokenExit: {
66
+ readonly duration: number;
67
+ readonly stagger: number;
68
+ readonly easing: "cubic-bezier(0.4, 0, 1, 1)";
69
+ readonly blur: 2;
70
+ readonly offsetY: -8;
71
+ readonly scale: 0.85;
72
+ };
73
+ readonly collapse: {
74
+ readonly duration: number;
75
+ readonly delay: 30;
76
+ readonly easing: "cubic-bezier(0.4, 0, 0.2, 1)";
77
+ };
78
+ readonly flip: {
79
+ readonly duration: number;
80
+ readonly delayPercent: 0.25;
81
+ readonly easing: "cubic-bezier(0.215, 0.61, 0.355, 1)";
82
+ };
83
+ };
84
+ /** Legacy defaults for backward compatibility */
85
+ export declare const ANIMATION_DEFAULTS: {
86
+ DURATION_ENTER: 200;
87
+ DURATION_EXIT: 180;
88
+ DURATION_FLIP: 300;
89
+ STAGGER_DELAY: 15;
90
+ OFFSET_VERTICAL: 8;
91
+ OFFSET_HORIZONTAL: 16;
92
+ BLUR_AMOUNT: 4;
93
+ EASING_ENTER: "cubic-bezier(0.33, 1, 0.68, 1)";
94
+ EASING_EXIT: "cubic-bezier(0.32, 0, 0.67, 0)";
95
+ EASING_FLIP: "linear(0, 0.009, 0.035 2.1%, 0.141 4.4%, 0.723 12.9%, 0.938 16.7%, 1.017 19.4%, 1.067, 1.099 24.3%, 1.108 26%, 1.100, 1.078 30.1%, 1.049 32.5%, 0.994 37.3%, 0.981 40.2%, 0.974 43.4%, 0.975 50.2%, 0.997 62.5%, 1.001 74.7%, 1)";
96
+ SPRING_EASING: "linear(0, 0.009, 0.035 2.1%, 0.141 4.4%, 0.723 12.9%, 0.938 16.7%, 1.017 19.4%, 1.067, 1.099 24.3%, 1.108 26%, 1.100, 1.078 30.1%, 1.049 32.5%, 0.994 37.3%, 0.981 40.2%, 0.974 43.4%, 0.975 50.2%, 0.997 62.5%, 1.001 74.7%, 1)";
97
+ };
98
+ /** Composite presets for specific use cases */
99
+ export declare const ANIMATION_CONFIGS: {
100
+ readonly tokenEnter: {
101
+ readonly duration: 200;
102
+ readonly stagger: 15;
103
+ readonly easing: "cubic-bezier(0, 0, 0.2, 1)";
104
+ readonly blur: 4;
105
+ readonly offsetY: 8;
106
+ readonly scale: 0.85;
107
+ };
108
+ readonly tokenExit: {
109
+ readonly duration: 180;
110
+ readonly stagger: 0;
111
+ readonly easing: "cubic-bezier(0.4, 0, 1, 1)";
112
+ readonly blur: 2;
113
+ readonly offsetY: -8;
114
+ readonly scale: 0.85;
115
+ };
116
+ readonly collapse: {
117
+ readonly duration: 200;
118
+ readonly delay: 30;
119
+ readonly easing: "cubic-bezier(0.4, 0, 0.2, 1)";
120
+ };
121
+ readonly flip: {
122
+ readonly duration: 300;
123
+ readonly delayPercent: 0.25;
124
+ readonly easing: "cubic-bezier(0.215, 0.61, 0.355, 1)";
125
+ };
126
+ };
127
+ /** High-level animation presets */
128
+ export declare const PRESETS: {
129
+ newToken: {
130
+ mode: "character";
131
+ direction: "vertical";
132
+ staggerDelay: number;
133
+ blur: boolean;
134
+ widthAnimation: boolean;
135
+ duration: number;
136
+ initial: "initial";
137
+ };
138
+ existingToken: {
139
+ mode: "none";
140
+ blur: boolean;
141
+ widthAnimation: boolean;
142
+ initial: false;
143
+ };
144
+ placeholder: {
145
+ mode: "word";
146
+ direction: "vertical";
147
+ blur: boolean;
148
+ widthAnimation: boolean;
149
+ duration: number;
150
+ };
151
+ separator: {
152
+ duration: number;
153
+ widthAnimation: boolean;
154
+ };
155
+ };
156
+ //# sourceMappingURL=animationConstants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animationConstants.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/primitives/waapi/core/animationConstants.ts"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,cAAc,MAAM,KAAG,MAY5D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,WAAW,MAAM,KAAG,MAQxD,CAAC;AAEF,iCAAiC;AACjC,eAAO,MAAM,MAAM;;;;;;;;;;CAaT,CAAC;AAEX,iCAAiC;AACjC,eAAO,MAAM,UAAU;;;;;;;CASb,CAAC;AAEX,qBAAqB;AACrB,eAAO,MAAM,OAAO;;;CAGV,CAAC;AAEX,mFAAmF;AACnF,eAAO,MAAM,OAAO;;;;;;;;;;;;CAiBV,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BrB,CAAC;AAEX,iDAAiD;AACjD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;CAgB9B,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BpB,CAAC;AAEX,mCAAmC;AACnC,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BnB,CAAC"}
@@ -0,0 +1,180 @@
1
+ //#region src/react-ui/primitives/waapi/core/animationConstants.ts
2
+ /**
3
+ * Obtains responsive animation duration for the current device.
4
+ * Returns 0 if the user prefers reduced motion, 60% on mobile.
5
+ * @param baseDuration - Base duration in ms
6
+ * @returns Adjusted duration for the current device
7
+ */
8
+ const getResponsiveDuration = (baseDuration) => {
9
+ if (typeof window === "undefined") return baseDuration;
10
+ if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return 0;
11
+ if (window.innerWidth < 768) return Math.round(baseDuration * .6);
12
+ return baseDuration;
13
+ };
14
+ /**
15
+ * Obtains responsive stagger delay for the current device.
16
+ * Returns 0 if the user prefers reduced motion, 50% on mobile.
17
+ * @param baseDelay - Base delay in ms
18
+ * @returns Adjusted delay for the current device
19
+ */
20
+ const getResponsiveStagger = (baseDelay) => {
21
+ if (typeof window === "undefined") return baseDelay;
22
+ if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return 0;
23
+ return window.innerWidth < 768 ? Math.round(baseDelay * .5) : baseDelay;
24
+ };
25
+ /** Core timing constants (ms) */
26
+ const TIMING = {
27
+ ENTER_DURATION: 200,
28
+ EXIT_DURATION: 180,
29
+ COLLAPSE_DURATION: 200,
30
+ FLIP_DURATION: 300,
31
+ ENTER_STAGGER: 15,
32
+ EXIT_STAGGER: 0,
33
+ COLLAPSE_DELAY: 30,
34
+ FLIP_DELAY_PERCENT: .25,
35
+ MIN_DELTA_PX: 1
36
+ };
37
+ /** Transform offsets (px/deg) */
38
+ const TRANSFORMS = {
39
+ OFFSET_Y_ENTER: 8,
40
+ OFFSET_Y_EXIT: -8,
41
+ OFFSET_X: 16,
42
+ SCALE_ENTER: .85,
43
+ SCALE_EXIT: .85,
44
+ ROTATE_EXIT: 0
45
+ };
46
+ /** Visual effects */
47
+ const EFFECTS = {
48
+ BLUR_ENTER: 4,
49
+ BLUR_EXIT: 2
50
+ };
51
+ /** Research-based easing curves (Material Design + CSS-Tricks + Josh W. Comeau) */
52
+ const EASINGS = {
53
+ MATERIAL_DECELERATE: "cubic-bezier(0, 0, 0.2, 1)",
54
+ MATERIAL_ACCELERATE: "cubic-bezier(0.4, 0, 1, 1)",
55
+ MATERIAL_STANDARD: "cubic-bezier(0.4, 0, 0.2, 1)",
56
+ EASE_REORDER: "cubic-bezier(0.215, 0.61, 0.355, 1)",
57
+ EASE_OUT_CUBIC: "cubic-bezier(0.33, 1, 0.68, 1)",
58
+ EASE_IN_CUBIC: "cubic-bezier(0.32, 0, 0.67, 0)",
59
+ EASE_IN_OUT: "cubic-bezier(0.42, 0, 0.58, 1)",
60
+ EASE_OUT_EXPO: "cubic-bezier(0.16, 1, 0.3, 1)",
61
+ EASE_FLIP: "cubic-bezier(0.2, 0, 0.2, 1)",
62
+ SPRING_GENTLE: `linear(0, 0.009, 0.035 2.1%, 0.141 4.4%, 0.723 12.9%, 0.938 16.7%, 1.017 19.4%, 1.067, 1.099 24.3%, 1.108 26%, 1.100, 1.078 30.1%, 1.049 32.5%, 0.994 37.3%, 0.981 40.2%, 0.974 43.4%, 0.975 50.2%, 0.997 62.5%, 1.001 74.7%, 1)`,
63
+ SPRING_SNAPPY: `linear(0, 0.006, 0.024 2%, 0.096 4.2%, 0.397 9.3%, 0.861 15.8%, 1.002 18.7%, 1.093 21.4%, 1.143 24%, 1.156, 1.149 28.3%, 1.115 31.5%, 1.022 40%, 0.988 47.1%, 0.984 55.1%, 0.998 72.3%, 1.001 85.4%, 1)`
64
+ };
65
+ /** Responsive animation configurations with accessibility */
66
+ const RESPONSIVE_CONFIGS = {
67
+ tokenEnter: {
68
+ get duration() {
69
+ return getResponsiveDuration(TIMING.ENTER_DURATION);
70
+ },
71
+ get stagger() {
72
+ return getResponsiveStagger(TIMING.ENTER_STAGGER);
73
+ },
74
+ easing: EASINGS.MATERIAL_DECELERATE,
75
+ blur: EFFECTS.BLUR_ENTER,
76
+ offsetY: TRANSFORMS.OFFSET_Y_ENTER,
77
+ scale: TRANSFORMS.SCALE_ENTER
78
+ },
79
+ tokenExit: {
80
+ get duration() {
81
+ return getResponsiveDuration(TIMING.EXIT_DURATION);
82
+ },
83
+ get stagger() {
84
+ return getResponsiveStagger(TIMING.EXIT_STAGGER);
85
+ },
86
+ easing: EASINGS.MATERIAL_ACCELERATE,
87
+ blur: EFFECTS.BLUR_EXIT,
88
+ offsetY: TRANSFORMS.OFFSET_Y_EXIT,
89
+ scale: TRANSFORMS.SCALE_EXIT
90
+ },
91
+ collapse: {
92
+ get duration() {
93
+ return getResponsiveDuration(TIMING.COLLAPSE_DURATION);
94
+ },
95
+ delay: TIMING.COLLAPSE_DELAY,
96
+ easing: EASINGS.MATERIAL_STANDARD
97
+ },
98
+ flip: {
99
+ get duration() {
100
+ return getResponsiveDuration(TIMING.FLIP_DURATION);
101
+ },
102
+ delayPercent: TIMING.FLIP_DELAY_PERCENT,
103
+ easing: EASINGS.EASE_REORDER
104
+ }
105
+ };
106
+ /** Legacy defaults for backward compatibility */
107
+ const ANIMATION_DEFAULTS = {
108
+ DURATION_ENTER: TIMING.ENTER_DURATION,
109
+ DURATION_EXIT: TIMING.EXIT_DURATION,
110
+ DURATION_FLIP: TIMING.FLIP_DURATION,
111
+ STAGGER_DELAY: TIMING.ENTER_STAGGER,
112
+ OFFSET_VERTICAL: TRANSFORMS.OFFSET_Y_ENTER,
113
+ OFFSET_HORIZONTAL: TRANSFORMS.OFFSET_X,
114
+ BLUR_AMOUNT: EFFECTS.BLUR_ENTER,
115
+ EASING_ENTER: EASINGS.EASE_OUT_CUBIC,
116
+ EASING_EXIT: EASINGS.EASE_IN_CUBIC,
117
+ EASING_FLIP: EASINGS.SPRING_GENTLE,
118
+ SPRING_EASING: EASINGS.SPRING_GENTLE
119
+ };
120
+ /** Composite presets for specific use cases */
121
+ const ANIMATION_CONFIGS = {
122
+ tokenEnter: {
123
+ duration: TIMING.ENTER_DURATION,
124
+ stagger: TIMING.ENTER_STAGGER,
125
+ easing: EASINGS.MATERIAL_DECELERATE,
126
+ blur: EFFECTS.BLUR_ENTER,
127
+ offsetY: TRANSFORMS.OFFSET_Y_ENTER,
128
+ scale: TRANSFORMS.SCALE_ENTER
129
+ },
130
+ tokenExit: {
131
+ duration: TIMING.EXIT_DURATION,
132
+ stagger: TIMING.EXIT_STAGGER,
133
+ easing: EASINGS.MATERIAL_ACCELERATE,
134
+ blur: EFFECTS.BLUR_EXIT,
135
+ offsetY: TRANSFORMS.OFFSET_Y_EXIT,
136
+ scale: TRANSFORMS.SCALE_EXIT
137
+ },
138
+ collapse: {
139
+ duration: TIMING.COLLAPSE_DURATION,
140
+ delay: TIMING.COLLAPSE_DELAY,
141
+ easing: EASINGS.MATERIAL_STANDARD
142
+ },
143
+ flip: {
144
+ duration: TIMING.FLIP_DURATION,
145
+ delayPercent: TIMING.FLIP_DELAY_PERCENT,
146
+ easing: EASINGS.EASE_REORDER
147
+ }
148
+ };
149
+ /** High-level animation presets */
150
+ const PRESETS = {
151
+ newToken: {
152
+ mode: "character",
153
+ direction: "vertical",
154
+ staggerDelay: 15,
155
+ blur: true,
156
+ widthAnimation: true,
157
+ duration: 200,
158
+ initial: "initial"
159
+ },
160
+ existingToken: {
161
+ mode: "none",
162
+ blur: false,
163
+ widthAnimation: false,
164
+ initial: false
165
+ },
166
+ placeholder: {
167
+ mode: "word",
168
+ direction: "vertical",
169
+ blur: true,
170
+ widthAnimation: false,
171
+ duration: 150
172
+ },
173
+ separator: {
174
+ duration: 100,
175
+ widthAnimation: true
176
+ }
177
+ };
178
+
179
+ //#endregion
180
+ export { ANIMATION_CONFIGS, ANIMATION_DEFAULTS, EASINGS, EFFECTS, PRESETS, RESPONSIVE_CONFIGS, TIMING, TRANSFORMS, getResponsiveDuration, getResponsiveStagger };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * WAAPI Core — FLIP animation infrastructure.
3
+ *
4
+ * Provides the composable hooks and constants that power
5
+ * Reorder, Morph, and other WAAPI primitives.
6
+ *
7
+ * @module primitives/waapi/core
8
+ */
9
+ export { TIMING, TRANSFORMS, EFFECTS, EASINGS, RESPONSIVE_CONFIGS, ANIMATION_CONFIGS, ANIMATION_DEFAULTS, PRESETS, getResponsiveDuration, getResponsiveStagger, } from './animationConstants';
10
+ export type { IFLIPDelta, IAnimationTiming, IPositionRect, IElementRegistryAPI, IElementRegistryCallbacks, IPositionCaptureAPI, IPositionCaptureOptions, IFLIPAnimationAPI, IFLIPAnimationOptions, IExitOptions, IEnterOptions, IAnimationOrchestratorConfig, IAnimationOrchestratorAPI, IOrchestratorState, IAnimationEvent, } from './types';
11
+ export type { FLIPBehavior, ExitPositionStrategy, AnimationPhase, } from './types';
12
+ export { useElementRegistry } from './useElementRegistry';
13
+ export { usePositionCapture } from './usePositionCapture';
14
+ export { useFLIPAnimation } from './useFLIPAnimation';
15
+ export { useAnimationOrchestrator } from './useAnimationOrchestrator';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/primitives/waapi/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,MAAM,EACN,UAAU,EACV,OAAO,EACP,OAAO,EACP,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,OAAO,EACP,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,4BAA4B,EAC5B,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { ANIMATION_CONFIGS, ANIMATION_DEFAULTS, EASINGS, EFFECTS, PRESETS, RESPONSIVE_CONFIGS, TIMING, TRANSFORMS, getResponsiveDuration, getResponsiveStagger } from "./animationConstants.js";
2
+ import { useElementRegistry } from "./useElementRegistry.js";
3
+ import { usePositionCapture } from "./usePositionCapture.js";
4
+ import { useFLIPAnimation } from "./useFLIPAnimation.js";
5
+ import { useAnimationOrchestrator } from "./useAnimationOrchestrator.js";
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Core types for headless animation primitives.
3
+ * Based on WAAPI (Web Animations API) patterns.
4
+ *
5
+ * @module primitives/waapi/core/types
6
+ */
7
+ /** Calculated delta between two captured positions of an element */
8
+ export interface IFLIPDelta {
9
+ id: string;
10
+ deltaX: number;
11
+ deltaY: number;
12
+ deltaWidth: number;
13
+ deltaHeight: number;
14
+ isSignificant: boolean;
15
+ }
16
+ /** Timing configuration for a single animation */
17
+ export interface IAnimationTiming {
18
+ duration: number;
19
+ delay?: number;
20
+ easing: string;
21
+ fill?: FillMode;
22
+ }
23
+ /** Captured position rectangle */
24
+ export interface IPositionRect {
25
+ x: number;
26
+ y: number;
27
+ width: number;
28
+ height: number;
29
+ }
30
+ /** API for tracking DOM elements by ID */
31
+ export interface IElementRegistryAPI {
32
+ register: (id: string, el: HTMLElement | null) => void;
33
+ unregister: (id: string) => void;
34
+ get: (id: string) => HTMLElement | undefined;
35
+ getAll: () => Map<string, HTMLElement>;
36
+ has: (id: string) => boolean;
37
+ clear: () => void;
38
+ size: number;
39
+ }
40
+ /** Callbacks for element registry lifecycle events */
41
+ export interface IElementRegistryCallbacks {
42
+ onRegister?: (id: string, el: HTMLElement) => void;
43
+ onUnregister?: (id: string) => void;
44
+ }
45
+ /** API for capturing element positions and calculating FLIP deltas */
46
+ export interface IPositionCaptureAPI {
47
+ capture: (excludeIds?: Set<string>) => Map<string, DOMRect>;
48
+ getPosition: (id: string) => DOMRect | undefined;
49
+ calculateDeltas: (before: Map<string, DOMRect>, after: Map<string, DOMRect>) => Map<string, IFLIPDelta>;
50
+ getLastCapture: () => Map<string, DOMRect>;
51
+ clear: () => void;
52
+ }
53
+ /** Options for position capture behavior */
54
+ export interface IPositionCaptureOptions {
55
+ minDeltaPx?: number;
56
+ }
57
+ /** Options for individual FLIP animations */
58
+ export interface IFLIPAnimationOptions {
59
+ duration?: number;
60
+ easing?: string;
61
+ onStart?: (id: string) => void;
62
+ onComplete?: (id: string) => void;
63
+ }
64
+ /** API for executing FLIP animations */
65
+ export interface IFLIPAnimationAPI {
66
+ animate: (element: HTMLElement, delta: IFLIPDelta, options?: IFLIPAnimationOptions) => Animation;
67
+ animateAll: (elements: Map<string, HTMLElement>, deltas: Map<string, IFLIPDelta>, options?: IFLIPAnimationOptions) => Promise<void>;
68
+ cancel: (id: string) => void;
69
+ cancelAll: () => void;
70
+ isAnimating: (id?: string) => boolean;
71
+ }
72
+ /** Options for exit animations */
73
+ export interface IExitOptions {
74
+ duration?: number;
75
+ easing?: string;
76
+ collapseWidth?: boolean;
77
+ additionalIds?: string[];
78
+ onComplete?: () => void;
79
+ }
80
+ /** Options for enter animations */
81
+ export interface IEnterOptions {
82
+ duration?: number;
83
+ easing?: string;
84
+ stagger?: number;
85
+ onComplete?: () => void;
86
+ }
87
+ /**
88
+ * Controls which elements animate when an item exits.
89
+ * - `'all'`: All remaining elements animate to fill the gap (default)
90
+ * - `'siblings-after'`: Only elements after the exiting one animate
91
+ * - `'none'`: No FLIP animation, item exits in-place
92
+ */
93
+ export type FLIPBehavior = 'all' | 'siblings-after' | 'none';
94
+ /**
95
+ * Controls how the exiting element is positioned during exit animation.
96
+ * - `'absolute-fixed'`: Position absolute with fixed coordinates (default)
97
+ * - `'in-place'`: Stay in flow, no position change
98
+ * - `'custom'`: Consumer handles positioning via CSS/callbacks
99
+ */
100
+ export type ExitPositionStrategy = 'absolute-fixed' | 'in-place' | 'custom';
101
+ /** Configuration for the animation orchestrator */
102
+ export interface IAnimationOrchestratorConfig {
103
+ exitDuration?: number;
104
+ flipDuration?: number;
105
+ enterDuration?: number;
106
+ exitEasing?: string;
107
+ flipEasing?: string;
108
+ enterEasing?: string;
109
+ flipBehavior?: FLIPBehavior;
110
+ exitPositionStrategy?: ExitPositionStrategy;
111
+ minDeltaPx?: number;
112
+ onExitComplete?: (id: string) => void;
113
+ onEnterComplete?: (id: string) => void;
114
+ }
115
+ /** Full API surface of the animation orchestrator */
116
+ export interface IAnimationOrchestratorAPI {
117
+ registry: IElementRegistryAPI;
118
+ positions: IPositionCaptureAPI;
119
+ flip: IFLIPAnimationAPI;
120
+ registerElement: (id: string, el: HTMLElement | null) => void;
121
+ startExit: (id: string, options?: IExitOptions) => Promise<void>;
122
+ startEnter: (id: string, options?: IEnterOptions) => Promise<void>;
123
+ isAnimating: (id?: string) => boolean;
124
+ cancelAnimation: (id: string) => void;
125
+ cancelAllAnimations: () => void;
126
+ capturePositions: (excludeIds?: Set<string>) => Map<string, DOMRect>;
127
+ }
128
+ /** Internal state tracked by the orchestrator */
129
+ export interface IOrchestratorState {
130
+ animatingIds: Set<string>;
131
+ positions: Map<string, DOMRect>;
132
+ activeAnimations: Map<string, Animation[]>;
133
+ }
134
+ /** Phase of an animation lifecycle */
135
+ export type AnimationPhase = 'idle' | 'exit' | 'flip' | 'enter' | 'completed';
136
+ /** Animation event emitted during orchestration */
137
+ export interface IAnimationEvent {
138
+ id: string;
139
+ phase: AnimationPhase;
140
+ timestamp: number;
141
+ duration?: number;
142
+ }
143
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/primitives/waapi/core/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,oEAAoE;AACpE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,0CAA0C;AAC1C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAC7C,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,sDAAsD;AACtD,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,KAAK,IAAI,CAAC;IACnD,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAMD,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5D,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC;IACjD,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxG,cAAc,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,6CAA6C;AAC7C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,SAAS,CAAC;IACjG,UAAU,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpI,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CACvC;AAMD,kCAAkC;AAClC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAMD;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAM5E,mDAAmD;AACnD,MAAM,WAAW,4BAA4B;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAE5C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,qDAAqD;AACrD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,IAAI,EAAE,iBAAiB,CAAC;IAExB,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9D,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,gBAAgB,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtE;AAMD,iDAAiD;AACjD,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;CAC5C;AAMD,sCAAsC;AACtC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAE9E,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,cAAc,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,32 @@
1
+ import type { IAnimationOrchestratorAPI, IAnimationOrchestratorConfig } from './types';
2
+ /**
3
+ * Main animation orchestrator hook.
4
+ * Composes useElementRegistry, usePositionCapture, and useFLIPAnimation
5
+ * into a full FLIP exit/enter pipeline.
6
+ *
7
+ * Handles the full exit animation sequence:
8
+ * 1. Capture positions of remaining elements (FIRST)
9
+ * 2. Apply position:absolute to exiting element
10
+ * 3. Force synchronous reflow
11
+ * 4. Capture AFTER positions (LAST)
12
+ * 5. Calculate INVERT deltas and PLAY FLIP animations
13
+ * 6. Run exit animation (per-token stagger or whole-element)
14
+ * 7. Wait for all animations to complete
15
+ * 8. Cleanup and notify completion
16
+ *
17
+ * @param config - Optional orchestrator configuration
18
+ * @returns Full orchestrator API
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * const orchestrator = useAnimationOrchestrator({
23
+ * onExitComplete: (id) => removeFromList(id)
24
+ * });
25
+ *
26
+ * <div ref={el => orchestrator.registerElement('item-1', el)} />
27
+ *
28
+ * await orchestrator.startExit('item-1');
29
+ * ```
30
+ */
31
+ export declare function useAnimationOrchestrator(config?: IAnimationOrchestratorConfig): IAnimationOrchestratorAPI;
32
+ //# sourceMappingURL=useAnimationOrchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnimationOrchestrator.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/primitives/waapi/core/useAnimationOrchestrator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,yBAAyB,EACzB,4BAA4B,EAI7B,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,CAAC,EAAE,4BAA4B,GACpC,yBAAyB,CAgY3B"}