react-native-ease 0.1.0-alpha.0 → 0.3.0
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.
- package/.claude-plugin/marketplace.json +21 -0
- package/.claude-plugin/plugin.json +5 -0
- package/README.md +122 -74
- package/android/src/main/java/com/ease/EaseView.kt +111 -16
- package/android/src/main/java/com/ease/EaseViewManager.kt +18 -0
- package/ios/EaseView.mm +99 -2
- package/lib/module/EaseView.js +12 -1
- package/lib/module/EaseView.js.map +1 -1
- package/lib/module/EaseView.web.js +210 -0
- package/lib/module/EaseView.web.js.map +1 -0
- package/lib/module/EaseViewNativeComponent.ts +4 -0
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js +2 -0
- package/lib/typescript/src/EaseView.d.ts.map +1 -1
- package/lib/typescript/src/EaseView.web.d.ts +16 -0
- package/lib/typescript/src/EaseView.web.d.ts.map +1 -0
- package/lib/typescript/src/EaseViewNativeComponent.d.ts +4 -1
- package/lib/typescript/src/EaseViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +7 -0
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +7 -5
- package/skills/react-native-ease-refactor/SKILL.md +399 -0
- package/src/EaseView.tsx +15 -0
- package/src/EaseView.web.tsx +295 -0
- package/src/EaseViewNativeComponent.ts +4 -0
- package/src/types.ts +8 -0
package/ios/EaseView.mm
CHANGED
|
@@ -9,12 +9,18 @@
|
|
|
9
9
|
|
|
10
10
|
#import "RCTFabricComponentsPlugins.h"
|
|
11
11
|
|
|
12
|
+
// Forward-declare private method so we can override it.
|
|
13
|
+
@interface RCTViewComponentView ()
|
|
14
|
+
- (void)invalidateLayer;
|
|
15
|
+
@end
|
|
16
|
+
|
|
12
17
|
using namespace facebook::react;
|
|
13
18
|
|
|
14
19
|
// Animation key constants
|
|
15
20
|
static NSString *const kAnimKeyOpacity = @"ease_opacity";
|
|
16
21
|
static NSString *const kAnimKeyTransform = @"ease_transform";
|
|
17
22
|
static NSString *const kAnimKeyCornerRadius = @"ease_cornerRadius";
|
|
23
|
+
static NSString *const kAnimKeyBackgroundColor = @"ease_backgroundColor";
|
|
18
24
|
|
|
19
25
|
static inline CGFloat degreesToRadians(CGFloat degrees) {
|
|
20
26
|
return degrees * M_PI / 180.0;
|
|
@@ -47,6 +53,7 @@ static const int kMaskRotate = 1 << 5;
|
|
|
47
53
|
static const int kMaskRotateX = 1 << 6;
|
|
48
54
|
static const int kMaskRotateY = 1 << 7;
|
|
49
55
|
static const int kMaskBorderRadius = 1 << 8;
|
|
56
|
+
static const int kMaskBackgroundColor = 1 << 9;
|
|
50
57
|
static const int kMaskAnyTransform = kMaskTranslateX | kMaskTranslateY |
|
|
51
58
|
kMaskScaleX | kMaskScaleY | kMaskRotate |
|
|
52
59
|
kMaskRotateX | kMaskRotateY;
|
|
@@ -187,6 +194,11 @@ static const int kMaskAnyTransform = kMaskTranslateX | kMaskTranslateY |
|
|
|
187
194
|
toValue:toValue
|
|
188
195
|
props:props
|
|
189
196
|
loop:loop];
|
|
197
|
+
if (props.transitionDelay > 0) {
|
|
198
|
+
animation.beginTime =
|
|
199
|
+
CACurrentMediaTime() + (props.transitionDelay / 1000.0);
|
|
200
|
+
animation.fillMode = kCAFillModeBackwards;
|
|
201
|
+
}
|
|
190
202
|
[animation setValue:@(_animationBatchId) forKey:@"easeBatchId"];
|
|
191
203
|
animation.delegate = self;
|
|
192
204
|
[self.layer addAnimation:animation forKey:animationKey];
|
|
@@ -217,6 +229,8 @@ static const int kMaskAnyTransform = kMaskTranslateX | kMaskTranslateY |
|
|
|
217
229
|
const auto &newViewProps =
|
|
218
230
|
*std::static_pointer_cast<const EaseViewProps>(props);
|
|
219
231
|
|
|
232
|
+
[super updateProps:props oldProps:oldProps];
|
|
233
|
+
|
|
220
234
|
[CATransaction begin];
|
|
221
235
|
[CATransaction setDisableActions:YES];
|
|
222
236
|
|
|
@@ -255,6 +269,11 @@ static const int kMaskAnyTransform = kMaskTranslateX | kMaskTranslateY |
|
|
|
255
269
|
(mask & kMaskBorderRadius) && newViewProps.initialAnimateBorderRadius !=
|
|
256
270
|
newViewProps.animateBorderRadius;
|
|
257
271
|
|
|
272
|
+
BOOL hasInitialBackgroundColor =
|
|
273
|
+
(mask & kMaskBackgroundColor) &&
|
|
274
|
+
newViewProps.initialAnimateBackgroundColor !=
|
|
275
|
+
newViewProps.animateBackgroundColor;
|
|
276
|
+
|
|
258
277
|
BOOL hasInitialTransform = NO;
|
|
259
278
|
CATransform3D initialT = CATransform3DIdentity;
|
|
260
279
|
CATransform3D targetT = CATransform3DIdentity;
|
|
@@ -265,7 +284,8 @@ static const int kMaskAnyTransform = kMaskTranslateX | kMaskTranslateY |
|
|
|
265
284
|
hasInitialTransform = !CATransform3DEqualToTransform(initialT, targetT);
|
|
266
285
|
}
|
|
267
286
|
|
|
268
|
-
if (hasInitialOpacity || hasInitialTransform || hasInitialBorderRadius
|
|
287
|
+
if (hasInitialOpacity || hasInitialTransform || hasInitialBorderRadius ||
|
|
288
|
+
hasInitialBackgroundColor) {
|
|
269
289
|
// Set initial values
|
|
270
290
|
if (mask & kMaskOpacity)
|
|
271
291
|
self.layer.opacity = newViewProps.initialAnimateOpacity;
|
|
@@ -277,6 +297,11 @@ static const int kMaskAnyTransform = kMaskTranslateX | kMaskTranslateY |
|
|
|
277
297
|
newViewProps.initialAnimateBorderRadius > 0 ||
|
|
278
298
|
newViewProps.animateBorderRadius > 0;
|
|
279
299
|
}
|
|
300
|
+
if (mask & kMaskBackgroundColor)
|
|
301
|
+
self.layer.backgroundColor =
|
|
302
|
+
RCTUIColorFromSharedColor(
|
|
303
|
+
newViewProps.initialAnimateBackgroundColor)
|
|
304
|
+
.CGColor;
|
|
280
305
|
|
|
281
306
|
// Animate from initial to target
|
|
282
307
|
if (hasInitialOpacity) {
|
|
@@ -307,6 +332,22 @@ static const int kMaskAnyTransform = kMaskTranslateX | kMaskTranslateY |
|
|
|
307
332
|
props:newViewProps
|
|
308
333
|
loop:YES];
|
|
309
334
|
}
|
|
335
|
+
if (hasInitialBackgroundColor) {
|
|
336
|
+
self.layer.backgroundColor =
|
|
337
|
+
RCTUIColorFromSharedColor(newViewProps.animateBackgroundColor)
|
|
338
|
+
.CGColor;
|
|
339
|
+
[self applyAnimationForKeyPath:@"backgroundColor"
|
|
340
|
+
animationKey:kAnimKeyBackgroundColor
|
|
341
|
+
fromValue:(__bridge id)RCTUIColorFromSharedColor(
|
|
342
|
+
newViewProps
|
|
343
|
+
.initialAnimateBackgroundColor)
|
|
344
|
+
.CGColor
|
|
345
|
+
toValue:(__bridge id)RCTUIColorFromSharedColor(
|
|
346
|
+
newViewProps.animateBackgroundColor)
|
|
347
|
+
.CGColor
|
|
348
|
+
props:newViewProps
|
|
349
|
+
loop:YES];
|
|
350
|
+
}
|
|
310
351
|
} else {
|
|
311
352
|
// No initial animation — set target values directly
|
|
312
353
|
if (mask & kMaskOpacity)
|
|
@@ -317,6 +358,10 @@ static const int kMaskAnyTransform = kMaskTranslateX | kMaskTranslateY |
|
|
|
317
358
|
self.layer.cornerRadius = newViewProps.animateBorderRadius;
|
|
318
359
|
self.layer.masksToBounds = newViewProps.animateBorderRadius > 0;
|
|
319
360
|
}
|
|
361
|
+
if (mask & kMaskBackgroundColor)
|
|
362
|
+
self.layer.backgroundColor =
|
|
363
|
+
RCTUIColorFromSharedColor(newViewProps.animateBackgroundColor)
|
|
364
|
+
.CGColor;
|
|
320
365
|
}
|
|
321
366
|
} else if (newViewProps.transitionType == EaseViewTransitionType::None) {
|
|
322
367
|
// No transition — set values immediately
|
|
@@ -329,6 +374,10 @@ static const int kMaskAnyTransform = kMaskTranslateX | kMaskTranslateY |
|
|
|
329
374
|
self.layer.cornerRadius = newViewProps.animateBorderRadius;
|
|
330
375
|
self.layer.masksToBounds = newViewProps.animateBorderRadius > 0;
|
|
331
376
|
}
|
|
377
|
+
if (mask & kMaskBackgroundColor)
|
|
378
|
+
self.layer.backgroundColor =
|
|
379
|
+
RCTUIColorFromSharedColor(newViewProps.animateBackgroundColor)
|
|
380
|
+
.CGColor;
|
|
332
381
|
if (_eventEmitter) {
|
|
333
382
|
auto emitter =
|
|
334
383
|
std::static_pointer_cast<const EaseViewEventEmitter>(_eventEmitter);
|
|
@@ -389,11 +438,58 @@ static const int kMaskAnyTransform = kMaskTranslateX | kMaskTranslateY |
|
|
|
389
438
|
props:newViewProps
|
|
390
439
|
loop:NO];
|
|
391
440
|
}
|
|
441
|
+
|
|
442
|
+
if ((mask & kMaskBackgroundColor) &&
|
|
443
|
+
oldViewProps.animateBackgroundColor !=
|
|
444
|
+
newViewProps.animateBackgroundColor) {
|
|
445
|
+
CGColorRef fromColor = (__bridge CGColorRef)
|
|
446
|
+
[self presentationValueForKeyPath:@"backgroundColor"];
|
|
447
|
+
CGColorRef toColor =
|
|
448
|
+
RCTUIColorFromSharedColor(newViewProps.animateBackgroundColor)
|
|
449
|
+
.CGColor;
|
|
450
|
+
self.layer.backgroundColor = toColor;
|
|
451
|
+
[self applyAnimationForKeyPath:@"backgroundColor"
|
|
452
|
+
animationKey:kAnimKeyBackgroundColor
|
|
453
|
+
fromValue:(__bridge id)fromColor
|
|
454
|
+
toValue:(__bridge id)toColor
|
|
455
|
+
props:newViewProps
|
|
456
|
+
loop:NO];
|
|
457
|
+
}
|
|
392
458
|
}
|
|
393
459
|
|
|
394
460
|
[CATransaction commit];
|
|
461
|
+
}
|
|
395
462
|
|
|
396
|
-
|
|
463
|
+
- (void)invalidateLayer {
|
|
464
|
+
[super invalidateLayer];
|
|
465
|
+
|
|
466
|
+
// super resets layer.opacity, layer.cornerRadius, and layer.backgroundColor
|
|
467
|
+
// from style props. Re-apply our animated values.
|
|
468
|
+
const auto &viewProps =
|
|
469
|
+
*std::static_pointer_cast<const EaseViewProps>(_props);
|
|
470
|
+
int mask = viewProps.animatedProperties;
|
|
471
|
+
|
|
472
|
+
if (!(mask & (kMaskOpacity | kMaskBorderRadius | kMaskBackgroundColor))) {
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
[CATransaction begin];
|
|
477
|
+
[CATransaction setDisableActions:YES];
|
|
478
|
+
if (mask & kMaskOpacity) {
|
|
479
|
+
[self.layer removeAnimationForKey:@"opacity"];
|
|
480
|
+
self.layer.opacity = viewProps.animateOpacity;
|
|
481
|
+
}
|
|
482
|
+
if (mask & kMaskBorderRadius) {
|
|
483
|
+
[self.layer removeAnimationForKey:@"cornerRadius"];
|
|
484
|
+
self.layer.cornerRadius = viewProps.animateBorderRadius;
|
|
485
|
+
self.layer.masksToBounds = viewProps.animateBorderRadius > 0;
|
|
486
|
+
}
|
|
487
|
+
if (mask & kMaskBackgroundColor) {
|
|
488
|
+
[self.layer removeAnimationForKey:@"backgroundColor"];
|
|
489
|
+
self.layer.backgroundColor =
|
|
490
|
+
RCTUIColorFromSharedColor(viewProps.animateBackgroundColor).CGColor;
|
|
491
|
+
}
|
|
492
|
+
[CATransaction commit];
|
|
397
493
|
}
|
|
398
494
|
|
|
399
495
|
#pragma mark - CAAnimationDelegate
|
|
@@ -430,6 +526,7 @@ static const int kMaskAnyTransform = kMaskTranslateX | kMaskTranslateY |
|
|
|
430
526
|
self.layer.transform = CATransform3DIdentity;
|
|
431
527
|
self.layer.cornerRadius = 0;
|
|
432
528
|
self.layer.masksToBounds = NO;
|
|
529
|
+
self.layer.backgroundColor = nil;
|
|
433
530
|
}
|
|
434
531
|
|
|
435
532
|
@end
|
package/lib/module/EaseView.js
CHANGED
|
@@ -27,6 +27,7 @@ const MASK_ROTATE = 1 << 5;
|
|
|
27
27
|
const MASK_ROTATE_X = 1 << 6;
|
|
28
28
|
const MASK_ROTATE_Y = 1 << 7;
|
|
29
29
|
const MASK_BORDER_RADIUS = 1 << 8;
|
|
30
|
+
const MASK_BACKGROUND_COLOR = 1 << 9;
|
|
30
31
|
/* eslint-enable no-bitwise */
|
|
31
32
|
|
|
32
33
|
/** Maps animate prop keys to style keys that conflict. */
|
|
@@ -40,7 +41,8 @@ const ANIMATE_TO_STYLE_KEYS = {
|
|
|
40
41
|
rotate: 'transform',
|
|
41
42
|
rotateX: 'transform',
|
|
42
43
|
rotateY: 'transform',
|
|
43
|
-
borderRadius: 'borderRadius'
|
|
44
|
+
borderRadius: 'borderRadius',
|
|
45
|
+
backgroundColor: 'backgroundColor'
|
|
44
46
|
};
|
|
45
47
|
|
|
46
48
|
/** Preset easing curves as cubic bezier control points. */
|
|
@@ -73,6 +75,7 @@ export function EaseView({
|
|
|
73
75
|
if (animate?.rotateX != null) animatedProperties |= MASK_ROTATE_X;
|
|
74
76
|
if (animate?.rotateY != null) animatedProperties |= MASK_ROTATE_Y;
|
|
75
77
|
if (animate?.borderRadius != null) animatedProperties |= MASK_BORDER_RADIUS;
|
|
78
|
+
if (animate?.backgroundColor != null) animatedProperties |= MASK_BACKGROUND_COLOR;
|
|
76
79
|
/* eslint-enable no-bitwise */
|
|
77
80
|
|
|
78
81
|
// Resolve animate values (identity defaults for non-animated — safe values).
|
|
@@ -99,6 +102,10 @@ export function EaseView({
|
|
|
99
102
|
rotateY: initial?.rotateY ?? IDENTITY.rotateY
|
|
100
103
|
};
|
|
101
104
|
|
|
105
|
+
// Resolve backgroundColor — passed as ColorValue directly (codegen handles conversion)
|
|
106
|
+
const animBgColor = animate?.backgroundColor ?? 'transparent';
|
|
107
|
+
const initialBgColor = initialAnimate?.backgroundColor ?? animBgColor;
|
|
108
|
+
|
|
102
109
|
// Strip style keys that conflict with animated properties
|
|
103
110
|
let cleanStyle = style;
|
|
104
111
|
if (animate && style) {
|
|
@@ -147,6 +154,7 @@ export function EaseView({
|
|
|
147
154
|
const transitionStiffness = transition?.type === 'spring' ? transition.stiffness ?? 120 : 120;
|
|
148
155
|
const transitionMass = transition?.type === 'spring' ? transition.mass ?? 1 : 1;
|
|
149
156
|
const transitionLoop = transition?.type === 'timing' ? transition.loop ?? 'none' : 'none';
|
|
157
|
+
const transitionDelay = transition?.type === 'timing' || transition?.type === 'spring' ? transition.delay ?? 0 : 0;
|
|
150
158
|
const handleTransitionEnd = onTransitionEnd ? event => onTransitionEnd(event.nativeEvent) : undefined;
|
|
151
159
|
return /*#__PURE__*/_jsx(NativeEaseView, {
|
|
152
160
|
style: cleanStyle,
|
|
@@ -161,6 +169,7 @@ export function EaseView({
|
|
|
161
169
|
animateRotateX: resolved.rotateX,
|
|
162
170
|
animateRotateY: resolved.rotateY,
|
|
163
171
|
animateBorderRadius: resolved.borderRadius,
|
|
172
|
+
animateBackgroundColor: animBgColor,
|
|
164
173
|
initialAnimateOpacity: resolvedInitial.opacity,
|
|
165
174
|
initialAnimateTranslateX: resolvedInitial.translateX,
|
|
166
175
|
initialAnimateTranslateY: resolvedInitial.translateY,
|
|
@@ -170,6 +179,7 @@ export function EaseView({
|
|
|
170
179
|
initialAnimateRotateX: resolvedInitial.rotateX,
|
|
171
180
|
initialAnimateRotateY: resolvedInitial.rotateY,
|
|
172
181
|
initialAnimateBorderRadius: resolvedInitial.borderRadius,
|
|
182
|
+
initialAnimateBackgroundColor: initialBgColor,
|
|
173
183
|
transitionType: transitionType,
|
|
174
184
|
transitionDuration: transitionDuration,
|
|
175
185
|
transitionEasingBezier: bezier,
|
|
@@ -177,6 +187,7 @@ export function EaseView({
|
|
|
177
187
|
transitionStiffness: transitionStiffness,
|
|
178
188
|
transitionMass: transitionMass,
|
|
179
189
|
transitionLoop: transitionLoop,
|
|
190
|
+
transitionDelay: transitionDelay,
|
|
180
191
|
useHardwareLayer: useHardwareLayer,
|
|
181
192
|
transformOriginX: transformOrigin?.x ?? 0.5,
|
|
182
193
|
transformOriginY: transformOrigin?.y ?? 0.5,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","NativeEaseView","jsx","_jsx","IDENTITY","opacity","translateX","translateY","scaleX","scaleY","rotate","rotateX","rotateY","borderRadius","MASK_OPACITY","MASK_TRANSLATE_X","MASK_TRANSLATE_Y","MASK_SCALE_X","MASK_SCALE_Y","MASK_ROTATE","MASK_ROTATE_X","MASK_ROTATE_Y","MASK_BORDER_RADIUS","ANIMATE_TO_STYLE_KEYS","scale","EASING_PRESETS","linear","easeIn","easeOut","easeInOut","EaseView","animate","initialAnimate","transition","onTransitionEnd","useHardwareLayer","transformOrigin","style","rest","animatedProperties","resolved","initial","resolvedInitial","cleanStyle","flat","flatten","conflicting","Set","key","Object","keys","styleKey","add","size","__DEV__","console","warn","join","cleaned","k","v","entries","has","transitionType","type","transitionDuration","duration","rawEasing","easing","Array","isArray","length","bezier","transitionDamping","damping","transitionStiffness","stiffness","transitionMass","mass","transitionLoop","loop","handleTransitionEnd","event","nativeEvent","undefined","animateOpacity","animateTranslateX","animateTranslateY","animateScaleX","animateScaleY","animateRotate","animateRotateX","animateRotateY","animateBorderRadius","initialAnimateOpacity","initialAnimateTranslateX","initialAnimateTranslateY","initialAnimateScaleX","initialAnimateScaleY","initialAnimateRotate","initialAnimateRotateX","initialAnimateRotateY","initialAnimateBorderRadius","transitionEasingBezier","transformOriginX","x","transformOriginY","y"],"sourceRoot":"../../src","sources":["EaseView.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAwC,cAAc;AACzE,OAAOC,cAAc,MAAM,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AASvD;AACA,MAAMC,QAAQ,GAAG;EACfC,OAAO,EAAE,CAAC;EACVC,UAAU,EAAE,CAAC;EACbC,UAAU,EAAE,CAAC;EACbC,MAAM,EAAE,CAAC;EACTC,MAAM,EAAE,CAAC;EACTC,MAAM,EAAE,CAAC;EACTC,OAAO,EAAE,CAAC;EACVC,OAAO,EAAE,CAAC;EACVC,YAAY,EAAE;AAChB,CAAC;;AAED;AACA;AACA,MAAMC,YAAY,GAAG,CAAC,IAAI,CAAC;AAC3B,MAAMC,gBAAgB,GAAG,CAAC,IAAI,CAAC;AAC/B,MAAMC,gBAAgB,GAAG,CAAC,IAAI,CAAC;AAC/B,MAAMC,YAAY,GAAG,CAAC,IAAI,CAAC;AAC3B,MAAMC,YAAY,GAAG,CAAC,IAAI,CAAC;AAC3B,MAAMC,WAAW,GAAG,CAAC,IAAI,CAAC;AAC1B,MAAMC,aAAa,GAAG,CAAC,IAAI,CAAC;AAC5B,MAAMC,aAAa,GAAG,CAAC,IAAI,CAAC;AAC5B,MAAMC,kBAAkB,GAAG,CAAC,IAAI,CAAC;AACjC;;AAEA;AACA,MAAMC,qBAAyD,GAAG;
|
|
1
|
+
{"version":3,"names":["StyleSheet","NativeEaseView","jsx","_jsx","IDENTITY","opacity","translateX","translateY","scaleX","scaleY","rotate","rotateX","rotateY","borderRadius","MASK_OPACITY","MASK_TRANSLATE_X","MASK_TRANSLATE_Y","MASK_SCALE_X","MASK_SCALE_Y","MASK_ROTATE","MASK_ROTATE_X","MASK_ROTATE_Y","MASK_BORDER_RADIUS","MASK_BACKGROUND_COLOR","ANIMATE_TO_STYLE_KEYS","scale","backgroundColor","EASING_PRESETS","linear","easeIn","easeOut","easeInOut","EaseView","animate","initialAnimate","transition","onTransitionEnd","useHardwareLayer","transformOrigin","style","rest","animatedProperties","resolved","initial","resolvedInitial","animBgColor","initialBgColor","cleanStyle","flat","flatten","conflicting","Set","key","Object","keys","styleKey","add","size","__DEV__","console","warn","join","cleaned","k","v","entries","has","transitionType","type","transitionDuration","duration","rawEasing","easing","Array","isArray","length","bezier","transitionDamping","damping","transitionStiffness","stiffness","transitionMass","mass","transitionLoop","loop","transitionDelay","delay","handleTransitionEnd","event","nativeEvent","undefined","animateOpacity","animateTranslateX","animateTranslateY","animateScaleX","animateScaleY","animateRotate","animateRotateX","animateRotateY","animateBorderRadius","animateBackgroundColor","initialAnimateOpacity","initialAnimateTranslateX","initialAnimateTranslateY","initialAnimateScaleX","initialAnimateScaleY","initialAnimateRotate","initialAnimateRotateX","initialAnimateRotateY","initialAnimateBorderRadius","initialAnimateBackgroundColor","transitionEasingBezier","transformOriginX","x","transformOriginY","y"],"sourceRoot":"../../src","sources":["EaseView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useEffect, useRef, useState, useCallback } from 'react';
|
|
4
|
+
import { View } from 'react-native';
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
/** Identity values used as defaults for animate/initialAnimate. */
|
|
7
|
+
const IDENTITY = {
|
|
8
|
+
opacity: 1,
|
|
9
|
+
translateX: 0,
|
|
10
|
+
translateY: 0,
|
|
11
|
+
scaleX: 1,
|
|
12
|
+
scaleY: 1,
|
|
13
|
+
rotate: 0,
|
|
14
|
+
rotateX: 0,
|
|
15
|
+
rotateY: 0,
|
|
16
|
+
borderRadius: 0
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/** Preset easing curves as cubic bezier control points. */
|
|
20
|
+
const EASING_PRESETS = {
|
|
21
|
+
linear: [0, 0, 1, 1],
|
|
22
|
+
easeIn: [0.42, 0, 1, 1],
|
|
23
|
+
easeOut: [0, 0, 0.58, 1],
|
|
24
|
+
easeInOut: [0.42, 0, 0.58, 1]
|
|
25
|
+
};
|
|
26
|
+
function resolveAnimateValues(props) {
|
|
27
|
+
return {
|
|
28
|
+
...IDENTITY,
|
|
29
|
+
...props,
|
|
30
|
+
scaleX: props?.scaleX ?? props?.scale ?? IDENTITY.scaleX,
|
|
31
|
+
scaleY: props?.scaleY ?? props?.scale ?? IDENTITY.scaleY,
|
|
32
|
+
rotateX: props?.rotateX ?? IDENTITY.rotateX,
|
|
33
|
+
rotateY: props?.rotateY ?? IDENTITY.rotateY,
|
|
34
|
+
backgroundColor: props?.backgroundColor
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function buildTransform(vals) {
|
|
38
|
+
const parts = [];
|
|
39
|
+
if (vals.translateX !== 0 || vals.translateY !== 0) {
|
|
40
|
+
parts.push(`translate(${vals.translateX}px, ${vals.translateY}px)`);
|
|
41
|
+
}
|
|
42
|
+
if (vals.scaleX !== 1 || vals.scaleY !== 1) {
|
|
43
|
+
parts.push(vals.scaleX === vals.scaleY ? `scale(${vals.scaleX})` : `scale(${vals.scaleX}, ${vals.scaleY})`);
|
|
44
|
+
}
|
|
45
|
+
if (vals.rotate !== 0) {
|
|
46
|
+
parts.push(`rotate(${vals.rotate}deg)`);
|
|
47
|
+
}
|
|
48
|
+
if (vals.rotateX !== 0) {
|
|
49
|
+
parts.push(`rotateX(${vals.rotateX}deg)`);
|
|
50
|
+
}
|
|
51
|
+
if (vals.rotateY !== 0) {
|
|
52
|
+
parts.push(`rotateY(${vals.rotateY}deg)`);
|
|
53
|
+
}
|
|
54
|
+
return parts.length > 0 ? parts.join(' ') : 'none';
|
|
55
|
+
}
|
|
56
|
+
function resolveEasing(transition) {
|
|
57
|
+
if (!transition || transition.type !== 'timing') {
|
|
58
|
+
return 'cubic-bezier(0.42, 0, 0.58, 1)';
|
|
59
|
+
}
|
|
60
|
+
const easing = transition.easing ?? 'easeInOut';
|
|
61
|
+
const bezier = Array.isArray(easing) ? easing : EASING_PRESETS[easing];
|
|
62
|
+
return `cubic-bezier(${bezier[0]}, ${bezier[1]}, ${bezier[2]}, ${bezier[3]})`;
|
|
63
|
+
}
|
|
64
|
+
function resolveDuration(transition) {
|
|
65
|
+
if (!transition) return 300;
|
|
66
|
+
if (transition.type === 'timing') return transition.duration ?? 300;
|
|
67
|
+
if (transition.type === 'none') return 0;
|
|
68
|
+
const damping = transition.damping ?? 15;
|
|
69
|
+
const mass = transition.mass ?? 1;
|
|
70
|
+
const tau = 2 * mass / damping;
|
|
71
|
+
return Math.round(tau * 4 * 1000);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** CSS transition properties that we animate. */
|
|
75
|
+
const TRANSITION_PROPS = ['opacity', 'transform', 'border-radius', 'background-color'];
|
|
76
|
+
|
|
77
|
+
/** Counter for unique keyframe names. */
|
|
78
|
+
let keyframeCounter = 0;
|
|
79
|
+
export function EaseView({
|
|
80
|
+
animate,
|
|
81
|
+
initialAnimate,
|
|
82
|
+
transition,
|
|
83
|
+
onTransitionEnd,
|
|
84
|
+
useHardwareLayer: _useHardwareLayer,
|
|
85
|
+
transformOrigin,
|
|
86
|
+
style,
|
|
87
|
+
children
|
|
88
|
+
}) {
|
|
89
|
+
const resolved = resolveAnimateValues(animate);
|
|
90
|
+
const hasInitial = initialAnimate != null;
|
|
91
|
+
const [mounted, setMounted] = useState(!hasInitial);
|
|
92
|
+
// On web, View ref gives us the underlying DOM element.
|
|
93
|
+
const viewRef = useRef(null);
|
|
94
|
+
const animationNameRef = useRef(null);
|
|
95
|
+
const getElement = useCallback(() => viewRef.current, []);
|
|
96
|
+
|
|
97
|
+
// For initialAnimate: render initial values first, then animate on mount.
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
if (hasInitial) {
|
|
100
|
+
getElement()?.getBoundingClientRect();
|
|
101
|
+
setMounted(true);
|
|
102
|
+
}
|
|
103
|
+
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
104
|
+
|
|
105
|
+
const displayValues = !mounted && hasInitial ? resolveAnimateValues(initialAnimate) : resolved;
|
|
106
|
+
const duration = resolveDuration(transition);
|
|
107
|
+
const easing = resolveEasing(transition);
|
|
108
|
+
const originX = ((transformOrigin?.x ?? 0.5) * 100).toFixed(1);
|
|
109
|
+
const originY = ((transformOrigin?.y ?? 0.5) * 100).toFixed(1);
|
|
110
|
+
const transitionType = transition?.type ?? 'timing';
|
|
111
|
+
const loopMode = transition?.type === 'timing' ? transition.loop : undefined;
|
|
112
|
+
const transitionCss = transitionType === 'none' || !mounted && hasInitial ? 'none' : TRANSITION_PROPS.map(prop => `${prop} ${duration}ms ${easing}`).join(', ');
|
|
113
|
+
|
|
114
|
+
// Apply CSS transition/animation properties imperatively (not in RN style spec).
|
|
115
|
+
useEffect(() => {
|
|
116
|
+
const el = getElement();
|
|
117
|
+
if (!el) return;
|
|
118
|
+
if (!loopMode) {
|
|
119
|
+
const springTransition = transitionType === 'spring' ? TRANSITION_PROPS.map(prop => `${prop} ${duration}ms cubic-bezier(0.25, 0.46, 0.45, 0.94)`).join(', ') : null;
|
|
120
|
+
el.style.transition = springTransition ?? transitionCss;
|
|
121
|
+
}
|
|
122
|
+
el.style.transformOrigin = `${originX}% ${originY}%`;
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// Handle transitionend event via DOM listener.
|
|
126
|
+
useEffect(() => {
|
|
127
|
+
const el = getElement();
|
|
128
|
+
if (!el || !onTransitionEnd) return;
|
|
129
|
+
const handler = e => {
|
|
130
|
+
if (e.target !== e.currentTarget) return;
|
|
131
|
+
if (e.propertyName !== 'opacity' && e.propertyName !== 'transform') return;
|
|
132
|
+
onTransitionEnd({
|
|
133
|
+
finished: true
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
el.addEventListener('transitionend', handler);
|
|
137
|
+
return () => el.removeEventListener('transitionend', handler);
|
|
138
|
+
}, [onTransitionEnd, getElement]);
|
|
139
|
+
|
|
140
|
+
// Handle loop animations via CSS @keyframes.
|
|
141
|
+
useEffect(() => {
|
|
142
|
+
const el = getElement();
|
|
143
|
+
if (!loopMode || !el) {
|
|
144
|
+
if (animationNameRef.current) {
|
|
145
|
+
const cleanEl = getElement();
|
|
146
|
+
if (cleanEl) cleanEl.style.animation = '';
|
|
147
|
+
animationNameRef.current = null;
|
|
148
|
+
}
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const fromValues = initialAnimate ? resolveAnimateValues(initialAnimate) : resolveAnimateValues(undefined);
|
|
152
|
+
const toValues = resolveAnimateValues(animate);
|
|
153
|
+
const fromTransform = buildTransform(fromValues);
|
|
154
|
+
const toTransform = buildTransform(toValues);
|
|
155
|
+
const name = `ease-loop-${++keyframeCounter}`;
|
|
156
|
+
animationNameRef.current = name;
|
|
157
|
+
|
|
158
|
+
// Only include border-radius/background-color in keyframes when explicitly
|
|
159
|
+
// set by the user, to avoid overriding values from the style prop.
|
|
160
|
+
const hasBorderRadius = initialAnimate?.borderRadius != null || animate?.borderRadius != null;
|
|
161
|
+
const hasBgColor = initialAnimate?.backgroundColor != null || animate?.backgroundColor != null;
|
|
162
|
+
const fromBlock = [`opacity: ${fromValues.opacity}`, `transform: ${fromTransform}`, hasBorderRadius ? `border-radius: ${fromValues.borderRadius}px` : '', hasBgColor && fromValues.backgroundColor ? `background-color: ${fromValues.backgroundColor}` : ''].filter(Boolean).join('; ');
|
|
163
|
+
const toBlock = [`opacity: ${toValues.opacity}`, `transform: ${toTransform}`, hasBorderRadius ? `border-radius: ${toValues.borderRadius}px` : '', hasBgColor && toValues.backgroundColor ? `background-color: ${toValues.backgroundColor}` : ''].filter(Boolean).join('; ');
|
|
164
|
+
const keyframes = `@keyframes ${name} { from { ${fromBlock} } to { ${toBlock} } }`;
|
|
165
|
+
const styleEl = document.createElement('style');
|
|
166
|
+
styleEl.textContent = keyframes;
|
|
167
|
+
document.head.appendChild(styleEl);
|
|
168
|
+
const direction = loopMode === 'reverse' ? 'alternate' : 'normal';
|
|
169
|
+
el.style.transition = 'none';
|
|
170
|
+
el.style.animation = `${name} ${duration}ms ${easing} infinite ${direction}`;
|
|
171
|
+
return () => {
|
|
172
|
+
styleEl.remove();
|
|
173
|
+
el.style.animation = '';
|
|
174
|
+
animationNameRef.current = null;
|
|
175
|
+
};
|
|
176
|
+
}, [loopMode, animate, initialAnimate, duration, easing, getElement]);
|
|
177
|
+
|
|
178
|
+
// Build animated style using RN transform array format.
|
|
179
|
+
// react-native-web converts these to CSS transform strings.
|
|
180
|
+
const animatedStyle = {
|
|
181
|
+
opacity: displayValues.opacity,
|
|
182
|
+
transform: [{
|
|
183
|
+
translateX: displayValues.translateX
|
|
184
|
+
}, {
|
|
185
|
+
translateY: displayValues.translateY
|
|
186
|
+
}, {
|
|
187
|
+
scaleX: displayValues.scaleX
|
|
188
|
+
}, {
|
|
189
|
+
scaleY: displayValues.scaleY
|
|
190
|
+
}, {
|
|
191
|
+
rotate: `${displayValues.rotate}deg`
|
|
192
|
+
}, {
|
|
193
|
+
rotateX: `${displayValues.rotateX}deg`
|
|
194
|
+
}, {
|
|
195
|
+
rotateY: `${displayValues.rotateY}deg`
|
|
196
|
+
}],
|
|
197
|
+
...(displayValues.borderRadius > 0 ? {
|
|
198
|
+
borderRadius: displayValues.borderRadius
|
|
199
|
+
} : {}),
|
|
200
|
+
...(displayValues.backgroundColor ? {
|
|
201
|
+
backgroundColor: displayValues.backgroundColor
|
|
202
|
+
} : {})
|
|
203
|
+
};
|
|
204
|
+
return /*#__PURE__*/_jsx(View, {
|
|
205
|
+
ref: viewRef,
|
|
206
|
+
style: [style, animatedStyle],
|
|
207
|
+
children: children
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=EaseView.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","useState","useCallback","View","jsx","_jsx","IDENTITY","opacity","translateX","translateY","scaleX","scaleY","rotate","rotateX","rotateY","borderRadius","EASING_PRESETS","linear","easeIn","easeOut","easeInOut","resolveAnimateValues","props","scale","backgroundColor","buildTransform","vals","parts","push","length","join","resolveEasing","transition","type","easing","bezier","Array","isArray","resolveDuration","duration","damping","mass","tau","Math","round","TRANSITION_PROPS","keyframeCounter","EaseView","animate","initialAnimate","onTransitionEnd","useHardwareLayer","_useHardwareLayer","transformOrigin","style","children","resolved","hasInitial","mounted","setMounted","viewRef","animationNameRef","getElement","current","getBoundingClientRect","displayValues","originX","x","toFixed","originY","y","transitionType","loopMode","loop","undefined","transitionCss","map","prop","el","springTransition","handler","e","target","currentTarget","propertyName","finished","addEventListener","removeEventListener","cleanEl","animation","fromValues","toValues","fromTransform","toTransform","name","hasBorderRadius","hasBgColor","fromBlock","filter","Boolean","toBlock","keyframes","styleEl","document","createElement","textContent","head","appendChild","direction","remove","animatedStyle","transform","ref"],"sourceRoot":"../../src","sources":["EaseView.web.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,WAAW,QAAQ,OAAO;AACvE,SAASC,IAAI,QAAwC,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AASpE;AACA,MAAMC,QAAmE,GAAG;EAC1EC,OAAO,EAAE,CAAC;EACVC,UAAU,EAAE,CAAC;EACbC,UAAU,EAAE,CAAC;EACbC,MAAM,EAAE,CAAC;EACTC,MAAM,EAAE,CAAC;EACTC,MAAM,EAAE,CAAC;EACTC,OAAO,EAAE,CAAC;EACVC,OAAO,EAAE,CAAC;EACVC,YAAY,EAAE;AAChB,CAAC;;AAED;AACA,MAAMC,cAA2C,GAAG;EAClDC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACpBC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACvBC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EACxBC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAC9B,CAAC;AAcD,SAASC,oBAAoBA,CAACC,KAA+B,EAI3D;EACA,OAAO;IACL,GAAGhB,QAAQ;IACX,GAAGgB,KAAK;IACRZ,MAAM,EAAEY,KAAK,EAAEZ,MAAM,IAAIY,KAAK,EAAEC,KAAK,IAAIjB,QAAQ,CAACI,MAAM;IACxDC,MAAM,EAAEW,KAAK,EAAEX,MAAM,IAAIW,KAAK,EAAEC,KAAK,IAAIjB,QAAQ,CAACK,MAAM;IACxDE,OAAO,EAAES,KAAK,EAAET,OAAO,IAAIP,QAAQ,CAACO,OAAO;IAC3CC,OAAO,EAAEQ,KAAK,EAAER,OAAO,IAAIR,QAAQ,CAACQ,OAAO;IAC3CU,eAAe,EAAEF,KAAK,EAAEE;EAC1B,CAAC;AACH;AAEA,SAASC,cAAcA,CAACC,IAA6C,EAAU;EAC7E,MAAMC,KAAe,GAAG,EAAE;EAC1B,IAAID,IAAI,CAAClB,UAAU,KAAK,CAAC,IAAIkB,IAAI,CAACjB,UAAU,KAAK,CAAC,EAAE;IAClDkB,KAAK,CAACC,IAAI,CAAC,aAAaF,IAAI,CAAClB,UAAU,OAAOkB,IAAI,CAACjB,UAAU,KAAK,CAAC;EACrE;EACA,IAAIiB,IAAI,CAAChB,MAAM,KAAK,CAAC,IAAIgB,IAAI,CAACf,MAAM,KAAK,CAAC,EAAE;IAC1CgB,KAAK,CAACC,IAAI,CACRF,IAAI,CAAChB,MAAM,KAAKgB,IAAI,CAACf,MAAM,GACvB,SAASe,IAAI,CAAChB,MAAM,GAAG,GACvB,SAASgB,IAAI,CAAChB,MAAM,KAAKgB,IAAI,CAACf,MAAM,GAC1C,CAAC;EACH;EACA,IAAIe,IAAI,CAACd,MAAM,KAAK,CAAC,EAAE;IACrBe,KAAK,CAACC,IAAI,CAAC,UAAUF,IAAI,CAACd,MAAM,MAAM,CAAC;EACzC;EACA,IAAIc,IAAI,CAACb,OAAO,KAAK,CAAC,EAAE;IACtBc,KAAK,CAACC,IAAI,CAAC,WAAWF,IAAI,CAACb,OAAO,MAAM,CAAC;EAC3C;EACA,IAAIa,IAAI,CAACZ,OAAO,KAAK,CAAC,EAAE;IACtBa,KAAK,CAACC,IAAI,CAAC,WAAWF,IAAI,CAACZ,OAAO,MAAM,CAAC;EAC3C;EACA,OAAOa,KAAK,CAACE,MAAM,GAAG,CAAC,GAAGF,KAAK,CAACG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM;AACpD;AAEA,SAASC,aAAaA,CAACC,UAAkC,EAAU;EACjE,IAAI,CAACA,UAAU,IAAIA,UAAU,CAACC,IAAI,KAAK,QAAQ,EAAE;IAC/C,OAAO,gCAAgC;EACzC;EACA,MAAMC,MAAM,GAAGF,UAAU,CAACE,MAAM,IAAI,WAAW;EAC/C,MAAMC,MAAmB,GAAGC,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,GAC7CA,MAAM,GACNlB,cAAc,CAACkB,MAAM,CAAE;EAC3B,OAAO,gBAAgBC,MAAM,CAAC,CAAC,CAAC,KAAKA,MAAM,CAAC,CAAC,CAAC,KAAKA,MAAM,CAAC,CAAC,CAAC,KAAKA,MAAM,CAAC,CAAC,CAAC,GAAG;AAC/E;AAEA,SAASG,eAAeA,CAACN,UAAkC,EAAU;EACnE,IAAI,CAACA,UAAU,EAAE,OAAO,GAAG;EAC3B,IAAIA,UAAU,CAACC,IAAI,KAAK,QAAQ,EAAE,OAAOD,UAAU,CAACO,QAAQ,IAAI,GAAG;EACnE,IAAIP,UAAU,CAACC,IAAI,KAAK,MAAM,EAAE,OAAO,CAAC;EACxC,MAAMO,OAAO,GAAGR,UAAU,CAACQ,OAAO,IAAI,EAAE;EACxC,MAAMC,IAAI,GAAGT,UAAU,CAACS,IAAI,IAAI,CAAC;EACjC,MAAMC,GAAG,GAAI,CAAC,GAAGD,IAAI,GAAID,OAAO;EAChC,OAAOG,IAAI,CAACC,KAAK,CAACF,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;AACnC;;AAEA;AACA,MAAMG,gBAAgB,GAAG,CACvB,SAAS,EACT,WAAW,EACX,eAAe,EACf,kBAAkB,CACnB;;AAED;AACA,IAAIC,eAAe,GAAG,CAAC;AAEvB,OAAO,SAASC,QAAQA,CAAC;EACvBC,OAAO;EACPC,cAAc;EACdjB,UAAU;EACVkB,eAAe;EACfC,gBAAgB,EAAEC,iBAAiB;EACnCC,eAAe;EACfC,KAAK;EACLC;AACa,CAAC,EAAE;EAChB,MAAMC,QAAQ,GAAGnC,oBAAoB,CAAC2B,OAAO,CAAC;EAC9C,MAAMS,UAAU,GAAGR,cAAc,IAAI,IAAI;EACzC,MAAM,CAACS,OAAO,EAAEC,UAAU,CAAC,GAAG1D,QAAQ,CAAC,CAACwD,UAAU,CAAC;EACnD;EACA,MAAMG,OAAO,GAAG5D,MAAM,CAAkC,IAAI,CAAC;EAC7D,MAAM6D,gBAAgB,GAAG7D,MAAM,CAAgB,IAAI,CAAC;EAEpD,MAAM8D,UAAU,GAAG5D,WAAW,CAC5B,MAAM0D,OAAO,CAACG,OAAwC,EACtD,EACF,CAAC;;EAED;EACAhE,SAAS,CAAC,MAAM;IACd,IAAI0D,UAAU,EAAE;MACdK,UAAU,CAAC,CAAC,EAAEE,qBAAqB,CAAC,CAAC;MACrCL,UAAU,CAAC,IAAI,CAAC;IAClB;EACF,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;EAER,MAAMM,aAAa,GACjB,CAACP,OAAO,IAAID,UAAU,GAAGpC,oBAAoB,CAAC4B,cAAc,CAAC,GAAGO,QAAQ;EAE1E,MAAMjB,QAAQ,GAAGD,eAAe,CAACN,UAAU,CAAC;EAC5C,MAAME,MAAM,GAAGH,aAAa,CAACC,UAAU,CAAC;EAExC,MAAMkC,OAAO,GAAG,CAAC,CAACb,eAAe,EAAEc,CAAC,IAAI,GAAG,IAAI,GAAG,EAAEC,OAAO,CAAC,CAAC,CAAC;EAC9D,MAAMC,OAAO,GAAG,CAAC,CAAChB,eAAe,EAAEiB,CAAC,IAAI,GAAG,IAAI,GAAG,EAAEF,OAAO,CAAC,CAAC,CAAC;EAE9D,MAAMG,cAAc,GAAGvC,UAAU,EAAEC,IAAI,IAAI,QAAQ;EACnD,MAAMuC,QAAQ,GAAGxC,UAAU,EAAEC,IAAI,KAAK,QAAQ,GAAGD,UAAU,CAACyC,IAAI,GAAGC,SAAS;EAE5E,MAAMC,aAAa,GACjBJ,cAAc,KAAK,MAAM,IAAK,CAACb,OAAO,IAAID,UAAW,GACjD,MAAM,GACNZ,gBAAgB,CAAC+B,GAAG,CAAEC,IAAI,IAAK,GAAGA,IAAI,IAAItC,QAAQ,MAAML,MAAM,EAAE,CAAC,CAACJ,IAAI,CACpE,IACF,CAAC;;EAEP;EACA/B,SAAS,CAAC,MAAM;IACd,MAAM+E,EAAE,GAAGhB,UAAU,CAAC,CAAC;IACvB,IAAI,CAACgB,EAAE,EAAE;IAET,IAAI,CAACN,QAAQ,EAAE;MACb,MAAMO,gBAAgB,GACpBR,cAAc,KAAK,QAAQ,GACvB1B,gBAAgB,CAAC+B,GAAG,CACjBC,IAAI,IACH,GAAGA,IAAI,IAAItC,QAAQ,yCACvB,CAAC,CAACT,IAAI,CAAC,IAAI,CAAC,GACZ,IAAI;MACVgD,EAAE,CAACxB,KAAK,CAACtB,UAAU,GAAG+C,gBAAgB,IAAIJ,aAAa;IACzD;IACAG,EAAE,CAACxB,KAAK,CAACD,eAAe,GAAG,GAAGa,OAAO,KAAKG,OAAO,GAAG;EACtD,CAAC,CAAC;;EAEF;EACAtE,SAAS,CAAC,MAAM;IACd,MAAM+E,EAAE,GAAGhB,UAAU,CAAC,CAAC;IACvB,IAAI,CAACgB,EAAE,IAAI,CAAC5B,eAAe,EAAE;IAE7B,MAAM8B,OAAO,GAAIC,CAAkB,IAAK;MACtC,IAAIA,CAAC,CAACC,MAAM,KAAKD,CAAC,CAACE,aAAa,EAAE;MAClC,IAAIF,CAAC,CAACG,YAAY,KAAK,SAAS,IAAIH,CAAC,CAACG,YAAY,KAAK,WAAW,EAChE;MACFlC,eAAe,CAAC;QAAEmC,QAAQ,EAAE;MAAK,CAAC,CAAC;IACrC,CAAC;IAEDP,EAAE,CAACQ,gBAAgB,CAAC,eAAe,EAAEN,OAAO,CAAC;IAC7C,OAAO,MAAMF,EAAE,CAACS,mBAAmB,CAAC,eAAe,EAAEP,OAAO,CAAC;EAC/D,CAAC,EAAE,CAAC9B,eAAe,EAAEY,UAAU,CAAC,CAAC;;EAEjC;EACA/D,SAAS,CAAC,MAAM;IACd,MAAM+E,EAAE,GAAGhB,UAAU,CAAC,CAAC;IACvB,IAAI,CAACU,QAAQ,IAAI,CAACM,EAAE,EAAE;MACpB,IAAIjB,gBAAgB,CAACE,OAAO,EAAE;QAC5B,MAAMyB,OAAO,GAAG1B,UAAU,CAAC,CAAC;QAC5B,IAAI0B,OAAO,EAAEA,OAAO,CAAClC,KAAK,CAACmC,SAAS,GAAG,EAAE;QACzC5B,gBAAgB,CAACE,OAAO,GAAG,IAAI;MACjC;MACA;IACF;IAEA,MAAM2B,UAAU,GAAGzC,cAAc,GAC7B5B,oBAAoB,CAAC4B,cAAc,CAAC,GACpC5B,oBAAoB,CAACqD,SAAS,CAAC;IACnC,MAAMiB,QAAQ,GAAGtE,oBAAoB,CAAC2B,OAAO,CAAC;IAE9C,MAAM4C,aAAa,GAAGnE,cAAc,CAACiE,UAAU,CAAC;IAChD,MAAMG,WAAW,GAAGpE,cAAc,CAACkE,QAAQ,CAAC;IAE5C,MAAMG,IAAI,GAAG,aAAa,EAAEhD,eAAe,EAAE;IAC7Ce,gBAAgB,CAACE,OAAO,GAAG+B,IAAI;;IAE/B;IACA;IACA,MAAMC,eAAe,GACnB9C,cAAc,EAAElC,YAAY,IAAI,IAAI,IAAIiC,OAAO,EAAEjC,YAAY,IAAI,IAAI;IACvE,MAAMiF,UAAU,GACd/C,cAAc,EAAEzB,eAAe,IAAI,IAAI,IACvCwB,OAAO,EAAExB,eAAe,IAAI,IAAI;IAElC,MAAMyE,SAAS,GAAG,CAChB,YAAYP,UAAU,CAACnF,OAAO,EAAE,EAChC,cAAcqF,aAAa,EAAE,EAC7BG,eAAe,GAAG,kBAAkBL,UAAU,CAAC3E,YAAY,IAAI,GAAG,EAAE,EACpEiF,UAAU,IAAIN,UAAU,CAAClE,eAAe,GACpC,qBAAqBkE,UAAU,CAAClE,eAAe,EAAE,GACjD,EAAE,CACP,CACE0E,MAAM,CAACC,OAAO,CAAC,CACfrE,IAAI,CAAC,IAAI,CAAC;IAEb,MAAMsE,OAAO,GAAG,CACd,YAAYT,QAAQ,CAACpF,OAAO,EAAE,EAC9B,cAAcsF,WAAW,EAAE,EAC3BE,eAAe,GAAG,kBAAkBJ,QAAQ,CAAC5E,YAAY,IAAI,GAAG,EAAE,EAClEiF,UAAU,IAAIL,QAAQ,CAACnE,eAAe,GAClC,qBAAqBmE,QAAQ,CAACnE,eAAe,EAAE,GAC/C,EAAE,CACP,CACE0E,MAAM,CAACC,OAAO,CAAC,CACfrE,IAAI,CAAC,IAAI,CAAC;IAEb,MAAMuE,SAAS,GAAG,cAAcP,IAAI,aAAaG,SAAS,WAAWG,OAAO,MAAM;IAElF,MAAME,OAAO,GAAGC,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC;IAC/CF,OAAO,CAACG,WAAW,GAAGJ,SAAS;IAC/BE,QAAQ,CAACG,IAAI,CAACC,WAAW,CAACL,OAAO,CAAC;IAElC,MAAMM,SAAS,GAAGpC,QAAQ,KAAK,SAAS,GAAG,WAAW,GAAG,QAAQ;IACjEM,EAAE,CAACxB,KAAK,CAACtB,UAAU,GAAG,MAAM;IAC5B8C,EAAE,CAACxB,KAAK,CAACmC,SAAS,GAAG,GAAGK,IAAI,IAAIvD,QAAQ,MAAML,MAAM,aAAa0E,SAAS,EAAE;IAE5E,OAAO,MAAM;MACXN,OAAO,CAACO,MAAM,CAAC,CAAC;MAChB/B,EAAE,CAACxB,KAAK,CAACmC,SAAS,GAAG,EAAE;MACvB5B,gBAAgB,CAACE,OAAO,GAAG,IAAI;IACjC,CAAC;EACH,CAAC,EAAE,CAACS,QAAQ,EAAExB,OAAO,EAAEC,cAAc,EAAEV,QAAQ,EAAEL,MAAM,EAAE4B,UAAU,CAAC,CAAC;;EAErE;EACA;EACA,MAAMgD,aAAwB,GAAG;IAC/BvG,OAAO,EAAE0D,aAAa,CAAC1D,OAAO;IAC9BwG,SAAS,EAAE,CACT;MAAEvG,UAAU,EAAEyD,aAAa,CAACzD;IAAW,CAAC,EACxC;MAAEC,UAAU,EAAEwD,aAAa,CAACxD;IAAW,CAAC,EACxC;MAAEC,MAAM,EAAEuD,aAAa,CAACvD;IAAO,CAAC,EAChC;MAAEC,MAAM,EAAEsD,aAAa,CAACtD;IAAO,CAAC,EAChC;MAAEC,MAAM,EAAE,GAAGqD,aAAa,CAACrD,MAAM;IAAM,CAAC,EACxC;MAAEC,OAAO,EAAE,GAAGoD,aAAa,CAACpD,OAAO;IAAM,CAAC,EAC1C;MAAEC,OAAO,EAAE,GAAGmD,aAAa,CAACnD,OAAO;IAAM,CAAC,CAC3C;IACD,IAAImD,aAAa,CAAClD,YAAY,GAAG,CAAC,GAC9B;MAAEA,YAAY,EAAEkD,aAAa,CAAClD;IAAa,CAAC,GAC5C,CAAC,CAAC,CAAC;IACP,IAAIkD,aAAa,CAACzC,eAAe,GAC7B;MAAEA,eAAe,EAAEyC,aAAa,CAACzC;IAAgB,CAAC,GAClD,CAAC,CAAC;EACR,CAAC;EAED,oBACEnB,IAAA,CAACF,IAAI;IAAC6G,GAAG,EAAEpD,OAAQ;IAACN,KAAK,EAAE,CAACA,KAAK,EAAEwD,aAAa,CAAE;IAAAvD,QAAA,EAC/CA;EAAQ,CACL,CAAC;AAEX","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
type CodegenTypes,
|
|
4
4
|
type ViewProps,
|
|
5
5
|
type HostComponent,
|
|
6
|
+
type ColorValue,
|
|
6
7
|
} from 'react-native';
|
|
7
8
|
|
|
8
9
|
export interface NativeProps extends ViewProps {
|
|
@@ -19,6 +20,7 @@ export interface NativeProps extends ViewProps {
|
|
|
19
20
|
animateRotateX?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.0>;
|
|
20
21
|
animateRotateY?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.0>;
|
|
21
22
|
animateBorderRadius?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.0>;
|
|
23
|
+
animateBackgroundColor?: ColorValue;
|
|
22
24
|
|
|
23
25
|
// Initial values for enter animations
|
|
24
26
|
initialAnimateOpacity?: CodegenTypes.WithDefault<CodegenTypes.Float, 1.0>;
|
|
@@ -33,6 +35,7 @@ export interface NativeProps extends ViewProps {
|
|
|
33
35
|
CodegenTypes.Float,
|
|
34
36
|
0.0
|
|
35
37
|
>;
|
|
38
|
+
initialAnimateBackgroundColor?: ColorValue;
|
|
36
39
|
|
|
37
40
|
// Transition config
|
|
38
41
|
transitionType?: CodegenTypes.WithDefault<
|
|
@@ -49,6 +52,7 @@ export interface NativeProps extends ViewProps {
|
|
|
49
52
|
'none' | 'repeat' | 'reverse',
|
|
50
53
|
'none'
|
|
51
54
|
>;
|
|
55
|
+
transitionDelay?: CodegenTypes.WithDefault<CodegenTypes.Int32, 0>;
|
|
52
56
|
|
|
53
57
|
// Transform origin (0–1 fractions, default center)
|
|
54
58
|
transformOriginX?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.5>;
|
package/lib/module/index.js
CHANGED
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EaseView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,
|
|
1
|
+
{"version":3,"names":["EaseView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,YAAY","ignoreList":[]}
|
package/lib/module/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EaseView.d.ts","sourceRoot":"","sources":["../../../src/EaseView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAkB,MAAM,cAAc,CAAC;AAE1E,OAAO,KAAK,EACV,YAAY,EAEZ,UAAU,EACV,kBAAkB,EAClB,eAAe,EAChB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"EaseView.d.ts","sourceRoot":"","sources":["../../../src/EaseView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAkB,MAAM,cAAc,CAAC;AAE1E,OAAO,KAAK,EACV,YAAY,EAEZ,UAAU,EACV,kBAAkB,EAClB,eAAe,EAChB,MAAM,SAAS,CAAC;AAoDjB,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG;IACtC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,kDAAkD;IAClD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,wGAAwG;IACxG,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD;;;;;;;;;;;;;;;OAeG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gGAAgG;IAChG,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,cAAc,EACd,UAAU,EACV,eAAe,EACf,gBAAwB,EACxB,eAAe,EACf,KAAK,EACL,GAAG,IAAI,EACR,EAAE,aAAa,2CA2Kf"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type ViewStyle, type StyleProp } from 'react-native';
|
|
3
|
+
import type { AnimateProps, Transition, TransitionEndEvent, TransformOrigin } from './types';
|
|
4
|
+
export type EaseViewProps = {
|
|
5
|
+
animate?: AnimateProps;
|
|
6
|
+
initialAnimate?: AnimateProps;
|
|
7
|
+
transition?: Transition;
|
|
8
|
+
onTransitionEnd?: (event: TransitionEndEvent) => void;
|
|
9
|
+
/** No-op on web. */
|
|
10
|
+
useHardwareLayer?: boolean;
|
|
11
|
+
transformOrigin?: TransformOrigin;
|
|
12
|
+
style?: StyleProp<ViewStyle>;
|
|
13
|
+
children?: React.ReactNode;
|
|
14
|
+
};
|
|
15
|
+
export declare function EaseView({ animate, initialAnimate, transition, onTransitionEnd, useHardwareLayer: _useHardwareLayer, transformOrigin, style, children, }: EaseViewProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=EaseView.web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EaseView.web.d.ts","sourceRoot":"","sources":["../../../src/EaseView.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EACV,YAAY,EAEZ,UAAU,EACV,kBAAkB,EAClB,eAAe,EAChB,MAAM,SAAS,CAAC;AAuBjB,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD,oBAAoB;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AA0EF,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,cAAc,EACd,UAAU,EACV,eAAe,EACf,gBAAgB,EAAE,iBAAiB,EACnC,eAAe,EACf,KAAK,EACL,QAAQ,GACT,EAAE,aAAa,2CA0Kf"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CodegenTypes, type ViewProps, type HostComponent } from 'react-native';
|
|
1
|
+
import { type CodegenTypes, type ViewProps, type HostComponent, type ColorValue } from 'react-native';
|
|
2
2
|
export interface NativeProps extends ViewProps {
|
|
3
3
|
animatedProperties?: CodegenTypes.WithDefault<CodegenTypes.Int32, 0>;
|
|
4
4
|
animateOpacity?: CodegenTypes.WithDefault<CodegenTypes.Float, 1.0>;
|
|
@@ -10,6 +10,7 @@ export interface NativeProps extends ViewProps {
|
|
|
10
10
|
animateRotateX?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.0>;
|
|
11
11
|
animateRotateY?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.0>;
|
|
12
12
|
animateBorderRadius?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.0>;
|
|
13
|
+
animateBackgroundColor?: ColorValue;
|
|
13
14
|
initialAnimateOpacity?: CodegenTypes.WithDefault<CodegenTypes.Float, 1.0>;
|
|
14
15
|
initialAnimateTranslateX?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.0>;
|
|
15
16
|
initialAnimateTranslateY?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.0>;
|
|
@@ -19,6 +20,7 @@ export interface NativeProps extends ViewProps {
|
|
|
19
20
|
initialAnimateRotateX?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.0>;
|
|
20
21
|
initialAnimateRotateY?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.0>;
|
|
21
22
|
initialAnimateBorderRadius?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.0>;
|
|
23
|
+
initialAnimateBackgroundColor?: ColorValue;
|
|
22
24
|
transitionType?: CodegenTypes.WithDefault<'timing' | 'spring' | 'none', 'timing'>;
|
|
23
25
|
transitionDuration?: CodegenTypes.WithDefault<CodegenTypes.Int32, 300>;
|
|
24
26
|
transitionEasingBezier?: ReadonlyArray<CodegenTypes.Float>;
|
|
@@ -26,6 +28,7 @@ export interface NativeProps extends ViewProps {
|
|
|
26
28
|
transitionStiffness?: CodegenTypes.WithDefault<CodegenTypes.Float, 120.0>;
|
|
27
29
|
transitionMass?: CodegenTypes.WithDefault<CodegenTypes.Float, 1.0>;
|
|
28
30
|
transitionLoop?: CodegenTypes.WithDefault<'none' | 'repeat' | 'reverse', 'none'>;
|
|
31
|
+
transitionDelay?: CodegenTypes.WithDefault<CodegenTypes.Int32, 0>;
|
|
29
32
|
transformOriginX?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.5>;
|
|
30
33
|
transformOriginY?: CodegenTypes.WithDefault<CodegenTypes.Float, 0.5>;
|
|
31
34
|
onTransitionEnd?: CodegenTypes.DirectEventHandler<Readonly<{
|