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/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
- [super updateProps:props oldProps:oldProps];
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
@@ -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":"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","ignoreList":[]}
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":";;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,MAAMC,qBAAqB,GAAG,CAAC,IAAI,CAAC;AACpC;;AAEA;AACA,MAAMC,qBAAyD,GAAG;EAChEnB,OAAO,EAAE,SAAS;EAClBC,UAAU,EAAE,WAAW;EACvBC,UAAU,EAAE,WAAW;EACvBkB,KAAK,EAAE,WAAW;EAClBjB,MAAM,EAAE,WAAW;EACnBC,MAAM,EAAE,WAAW;EACnBC,MAAM,EAAE,WAAW;EACnBC,OAAO,EAAE,WAAW;EACpBC,OAAO,EAAE,WAAW;EACpBC,YAAY,EAAE,cAAc;EAC5Ba,eAAe,EAAE;AACnB,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;AAgCD,OAAO,SAASC,QAAQA,CAAC;EACvBC,OAAO;EACPC,cAAc;EACdC,UAAU;EACVC,eAAe;EACfC,gBAAgB,GAAG,KAAK;EACxBC,eAAe;EACfC,KAAK;EACL,GAAGC;AACU,CAAC,EAAE;EAChB;EACA;EACA;EACA,IAAIC,kBAAkB,GAAG,CAAC;EAC1B,IAAIR,OAAO,EAAE5B,OAAO,IAAI,IAAI,EAAEoC,kBAAkB,IAAI3B,YAAY;EAChE,IAAImB,OAAO,EAAE3B,UAAU,IAAI,IAAI,EAAEmC,kBAAkB,IAAI1B,gBAAgB;EACvE,IAAIkB,OAAO,EAAE1B,UAAU,IAAI,IAAI,EAAEkC,kBAAkB,IAAIzB,gBAAgB;EACvE,IAAIiB,OAAO,EAAEzB,MAAM,IAAI,IAAI,IAAIyB,OAAO,EAAER,KAAK,IAAI,IAAI,EACnDgB,kBAAkB,IAAIxB,YAAY;EACpC,IAAIgB,OAAO,EAAExB,MAAM,IAAI,IAAI,IAAIwB,OAAO,EAAER,KAAK,IAAI,IAAI,EACnDgB,kBAAkB,IAAIvB,YAAY;EACpC,IAAIe,OAAO,EAAEvB,MAAM,IAAI,IAAI,EAAE+B,kBAAkB,IAAItB,WAAW;EAC9D,IAAIc,OAAO,EAAEtB,OAAO,IAAI,IAAI,EAAE8B,kBAAkB,IAAIrB,aAAa;EACjE,IAAIa,OAAO,EAAErB,OAAO,IAAI,IAAI,EAAE6B,kBAAkB,IAAIpB,aAAa;EACjE,IAAIY,OAAO,EAAEpB,YAAY,IAAI,IAAI,EAAE4B,kBAAkB,IAAInB,kBAAkB;EAC3E,IAAIW,OAAO,EAAEP,eAAe,IAAI,IAAI,EAClCe,kBAAkB,IAAIlB,qBAAqB;EAC7C;;EAEA;EACA,MAAMmB,QAAQ,GAAG;IACf,GAAGtC,QAAQ;IACX,GAAG6B,OAAO;IACVzB,MAAM,EAAEyB,OAAO,EAAEzB,MAAM,IAAIyB,OAAO,EAAER,KAAK,IAAIrB,QAAQ,CAACI,MAAM;IAC5DC,MAAM,EAAEwB,OAAO,EAAExB,MAAM,IAAIwB,OAAO,EAAER,KAAK,IAAIrB,QAAQ,CAACK,MAAM;IAC5DE,OAAO,EAAEsB,OAAO,EAAEtB,OAAO,IAAIP,QAAQ,CAACO,OAAO;IAC7CC,OAAO,EAAEqB,OAAO,EAAErB,OAAO,IAAIR,QAAQ,CAACQ;EACxC,CAAC;;EAED;EACA;EACA;EACA;EACA,MAAM+B,OAAO,GAAGT,cAAc,IAAID,OAAO;EACzC,MAAMW,eAAe,GAAG;IACtB,GAAGxC,QAAQ;IACX,GAAGuC,OAAO;IACVnC,MAAM,EAAEmC,OAAO,EAAEnC,MAAM,IAAImC,OAAO,EAAElB,KAAK,IAAIrB,QAAQ,CAACI,MAAM;IAC5DC,MAAM,EAAEkC,OAAO,EAAElC,MAAM,IAAIkC,OAAO,EAAElB,KAAK,IAAIrB,QAAQ,CAACK,MAAM;IAC5DE,OAAO,EAAEgC,OAAO,EAAEhC,OAAO,IAAIP,QAAQ,CAACO,OAAO;IAC7CC,OAAO,EAAE+B,OAAO,EAAE/B,OAAO,IAAIR,QAAQ,CAACQ;EACxC,CAAC;;EAED;EACA,MAAMiC,WAAW,GAAGZ,OAAO,EAAEP,eAAe,IAAI,aAAa;EAC7D,MAAMoB,cAAc,GAAGZ,cAAc,EAAER,eAAe,IAAImB,WAAW;;EAErE;EACA,IAAIE,UAA8B,GAAGR,KAAK;EAC1C,IAAIN,OAAO,IAAIM,KAAK,EAAE;IACpB,MAAMS,IAAI,GAAGhD,UAAU,CAACiD,OAAO,CAACV,KAAK,CAA4B;IACjE,IAAIS,IAAI,EAAE;MACR,MAAME,WAAW,GAAG,IAAIC,GAAG,CAAS,CAAC;MACrC,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACrB,OAAO,CAAC,EAA4B;QAChE,IAAIA,OAAO,CAACmB,GAAG,CAAC,IAAI,IAAI,EAAE;UACxB,MAAMG,QAAQ,GAAG/B,qBAAqB,CAAC4B,GAAG,CAAC;UAC3C,IAAIG,QAAQ,IAAIA,QAAQ,IAAIP,IAAI,EAAE;YAChCE,WAAW,CAACM,GAAG,CAACD,QAAQ,CAAC;UAC3B;QACF;MACF;MACA,IAAIL,WAAW,CAACO,IAAI,GAAG,CAAC,EAAE;QACxB,IAAIC,OAAO,EAAE;UACXC,OAAO,CAACC,IAAI,CACV,sBAAsB,CAAC,GAAGV,WAAW,CAAC,CAACW,IAAI,CACzC,IACF,CAAC,oCAAoC,GACnC,qEACJ,CAAC;QACH;QACA,MAAMC,OAAgC,GAAG,CAAC,CAAC;QAC3C,KAAK,MAAM,CAACC,CAAC,EAAEC,CAAC,CAAC,IAAIX,MAAM,CAACY,OAAO,CAACjB,IAAI,CAAC,EAAE;UACzC,IAAI,CAACE,WAAW,CAACgB,GAAG,CAACH,CAAC,CAAC,EAAE;YACvBD,OAAO,CAACC,CAAC,CAAC,GAAGC,CAAC;UAChB;QACF;QACAjB,UAAU,GAAGe,OAAoB;MACnC;IACF;EACF;;EAEA;EACA,MAAMK,cAAc,GAAGhC,UAAU,EAAEiC,IAAI,IAAI,QAAQ;EACnD,MAAMC,kBAAkB,GACtBlC,UAAU,EAAEiC,IAAI,KAAK,QAAQ,GAAGjC,UAAU,CAACmC,QAAQ,IAAI,GAAG,GAAG,GAAG;EAClE,MAAMC,SAAS,GACbpC,UAAU,EAAEiC,IAAI,KAAK,QAAQ,GACzBjC,UAAU,CAACqC,MAAM,IAAI,WAAW,GAChC,WAAW;EACjB,IAAId,OAAO,EAAE;IACX,IAAIe,KAAK,CAACC,OAAO,CAACH,SAAS,CAAC,EAAE;MAC5B,IAAKA,SAAS,CAAcI,MAAM,KAAK,CAAC,EAAE;QACxChB,OAAO,CAACC,IAAI,CACV,gFAAgF,GAC7EW,SAAS,CAAcI,MAAM,GAC9B,IACJ,CAAC;MACH;MACA,IACEJ,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAChBA,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAChBA,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAChBA,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAChB;QACAZ,OAAO,CAACC,IAAI,CACV,sEACF,CAAC;MACH;IACF;EACF;EACA,MAAMgB,MAAmB,GAAGH,KAAK,CAACC,OAAO,CAACH,SAAS,CAAC,GAChDA,SAAS,GACT5C,cAAc,CAAC4C,SAAS,CAAE;EAC9B,MAAMM,iBAAiB,GACrB1C,UAAU,EAAEiC,IAAI,KAAK,QAAQ,GAAGjC,UAAU,CAAC2C,OAAO,IAAI,EAAE,GAAG,EAAE;EAC/D,MAAMC,mBAAmB,GACvB5C,UAAU,EAAEiC,IAAI,KAAK,QAAQ,GAAGjC,UAAU,CAAC6C,SAAS,IAAI,GAAG,GAAG,GAAG;EACnE,MAAMC,cAAc,GAClB9C,UAAU,EAAEiC,IAAI,KAAK,QAAQ,GAAGjC,UAAU,CAAC+C,IAAI,IAAI,CAAC,GAAG,CAAC;EAC1D,MAAMC,cAAc,GAClBhD,UAAU,EAAEiC,IAAI,KAAK,QAAQ,GAAGjC,UAAU,CAACiD,IAAI,IAAI,MAAM,GAAG,MAAM;EACpE,MAAMC,eAAe,GACnBlD,UAAU,EAAEiC,IAAI,KAAK,QAAQ,IAAIjC,UAAU,EAAEiC,IAAI,KAAK,QAAQ,GAC1DjC,UAAU,CAACmD,KAAK,IAAI,CAAC,GACrB,CAAC;EAEP,MAAMC,mBAAmB,GAAGnD,eAAe,GACtCoD,KAA6C,IAC5CpD,eAAe,CAACoD,KAAK,CAACC,WAAW,CAAC,GACpCC,SAAS;EAEb,oBACEvF,IAAA,CAACF,cAAc;IACbsC,KAAK,EAAEQ,UAAW;IAClBX,eAAe,EAAEmD,mBAAoB;IACrC9C,kBAAkB,EAAEA,kBAAmB;IACvCkD,cAAc,EAAEjD,QAAQ,CAACrC,OAAQ;IACjCuF,iBAAiB,EAAElD,QAAQ,CAACpC,UAAW;IACvCuF,iBAAiB,EAAEnD,QAAQ,CAACnC,UAAW;IACvCuF,aAAa,EAAEpD,QAAQ,CAAClC,MAAO;IAC/BuF,aAAa,EAAErD,QAAQ,CAACjC,MAAO;IAC/BuF,aAAa,EAAEtD,QAAQ,CAAChC,MAAO;IAC/BuF,cAAc,EAAEvD,QAAQ,CAAC/B,OAAQ;IACjCuF,cAAc,EAAExD,QAAQ,CAAC9B,OAAQ;IACjCuF,mBAAmB,EAAEzD,QAAQ,CAAC7B,YAAa;IAC3CuF,sBAAsB,EAAEvD,WAAY;IACpCwD,qBAAqB,EAAEzD,eAAe,CAACvC,OAAQ;IAC/CiG,wBAAwB,EAAE1D,eAAe,CAACtC,UAAW;IACrDiG,wBAAwB,EAAE3D,eAAe,CAACrC,UAAW;IACrDiG,oBAAoB,EAAE5D,eAAe,CAACpC,MAAO;IAC7CiG,oBAAoB,EAAE7D,eAAe,CAACnC,MAAO;IAC7CiG,oBAAoB,EAAE9D,eAAe,CAAClC,MAAO;IAC7CiG,qBAAqB,EAAE/D,eAAe,CAACjC,OAAQ;IAC/CiG,qBAAqB,EAAEhE,eAAe,CAAChC,OAAQ;IAC/CiG,0BAA0B,EAAEjE,eAAe,CAAC/B,YAAa;IACzDiG,6BAA6B,EAAEhE,cAAe;IAC9CqB,cAAc,EAAEA,cAAe;IAC/BE,kBAAkB,EAAEA,kBAAmB;IACvC0C,sBAAsB,EAAEnC,MAAO;IAC/BC,iBAAiB,EAAEA,iBAAkB;IACrCE,mBAAmB,EAAEA,mBAAoB;IACzCE,cAAc,EAAEA,cAAe;IAC/BE,cAAc,EAAEA,cAAe;IAC/BE,eAAe,EAAEA,eAAgB;IACjChD,gBAAgB,EAAEA,gBAAiB;IACnC2E,gBAAgB,EAAE1E,eAAe,EAAE2E,CAAC,IAAI,GAAI;IAC5CC,gBAAgB,EAAE5E,eAAe,EAAE6E,CAAC,IAAI,GAAI;IAAA,GACxC3E;EAAI,CACT,CAAC;AAEN","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":"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","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>;
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
 
3
- export { EaseView } from "./EaseView.js";
3
+ export { EaseView } from './EaseView';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["EaseView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,eAAY","ignoreList":[]}
1
+ {"version":3,"names":["EaseView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,YAAY","ignoreList":[]}
@@ -1,2 +1,4 @@
1
1
  "use strict";
2
+
3
+ export {};
2
4
  //# sourceMappingURL=types.js.map
@@ -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;AAkDjB,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,2CA8Jf"}
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<{