Skip to content
This repository was archived by the owner on Nov 3, 2025. It is now read-only.

Commit fba8b03

Browse files
committed
✨ (transitions) support slide transitions
1 parent 475e436 commit fba8b03

31 files changed

Lines changed: 979 additions & 79 deletions

__mocks__/react.js

Lines changed: 0 additions & 8 deletions
This file was deleted.

example/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"version": "0.0.1",
44
"private": true,
55
"scripts": {
6+
"postinstall": "patch-package",
67
"start": "node ../node_modules/react-native/local-cli/cli.js start",
78
"test:lint": "cd .. && yarn tslint example/src/**/*.ts{,x} && cd example",
89
"test:unit": "cd .. && yarn jest --config=example/jest.config.js && cd example",

example/src/canals/SignIn/FirstName.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export class FirstName extends Component<IProps> {
88
render() {
99
return (
1010
<View style={styles.container}>
11-
<Text>Waht is your first name ?</Text>
11+
<Text>What is your first name ?</Text>
1212
<TextInput placeholder="Type here" />
1313
<Button title="Next" onPress={this.props.onNext} />
1414
</View>

example/src/canals/SignIn/SignIn.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React, { Component } from 'react';
22
import { createCanal } from 'react-gondola';
3+
import { SlideLeft, SlideUp, RotateCrazy } from 'react-gondola/transitions';
34
import { FirstName } from './FirstName';
45
import { LastName } from './LastName';
56
import { Confirm } from './Confirm';
@@ -32,11 +33,17 @@ export class SignIn extends Component {
3233
},
3334
{
3435
Component: LastName,
36+
Transitioner: SlideLeft,
3537
name: 'lastName',
3638
onBack: this.goBackward,
3739
props: { onNext: this.goForward }
3840
},
39-
{ name: 'confirm', Component: Confirm, onBack: this.goBackward }
41+
{
42+
Component: Confirm,
43+
Transitioner: RotateCrazy,
44+
name: 'confirm',
45+
onBack: this.goBackward
46+
}
4047
]);
4148

4249
render() {

example/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"moduleResolution": "node",
3030
"paths": {
3131
"react-gondola": ["../../src"],
32+
"react-gondola/*": ["../../src/*"],
3233
"mobx": ["../node_modules/mobx"],
3334
"mobx-react": ["../node_modules/mobx-react"],
3435
"react": ["../node_modules/react"],

jest/setup.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,17 @@ configure({
44
enforceActions: 'observed',
55
});
66

7-
Date.now = jest.fn(() => 0);
7+
Date.now = jest.fn(() => 0);
8+
9+
jest.mock('react-native-reanimated/src/ReanimatedEventEmitter');
10+
jest.mock('react-native-reanimated/src/ReanimatedModule', () => ({
11+
configureNativeProps: () => {},
12+
connectNodes: () => {},
13+
disconnectNodes: () => {},
14+
createNode: () => {},
15+
configureProps: () => {},
16+
getValue: () => {},
17+
dropNode: () => {},
18+
}));
19+
jest.mock('react-native-reanimated/src/derived/evaluateOnce');
20+
jest.mock('react-native-reanimated/src/core/AnimatedProps');

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@
5555
"mobx": "^5.9.4",
5656
"mobx-react": "^5.4.3",
5757
"mobx-utils": "^5.4.0",
58+
"patch-package": "^6.1.2",
59+
"postinstall-postinstall": "^2.0.0",
5860
"prettier": "^1.16.4",
5961
"react": "16.8.6",
6062
"react-dom": "16.8.6",
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
diff --git a/node_modules/react-native-reanimated/react-native-reanimated.d.ts b/node_modules/react-native-reanimated/react-native-reanimated.d.ts
2+
index 7a30d62..506a2a7 100644
3+
--- a/node_modules/react-native-reanimated/react-native-reanimated.d.ts
4+
+++ b/node_modules/react-native-reanimated/react-native-reanimated.d.ts
5+
@@ -12,6 +12,7 @@ declare module 'react-native-reanimated' {
6+
ViewStyle,
7+
TextStyle,
8+
ImageStyle,
9+
+ TransformsStyle
10+
} from 'react-native';
11+
namespace Animated {
12+
class AnimatedNode<T> {
13+
@@ -64,11 +65,11 @@ declare module 'react-native-reanimated' {
14+
right: Adaptable<number>
15+
) => AnimatedNode<T>;
16+
type UnaryOperator = (value: Adaptable<number>) => AnimatedNode<number>;
17+
- type MultiOperator = (
18+
+ type MultiOperator<T = number> = (
19+
a: Adaptable<number>,
20+
b: Adaptable<number>,
21+
...others: Adaptable<number>[]
22+
- ) => AnimatedNode<number>;
23+
+ ) => AnimatedNode<T>;
24+
25+
export interface DecayState {
26+
finished: AnimatedValue<number>;
27+
@@ -141,8 +142,10 @@ declare module 'react-native-reanimated' {
28+
29+
export const SpringUtils: SpringUtils
30+
31+
+ type AnimatedTransform = { [P in keyof TransformsStyle["transform"]]: Animated.Adaptable<TransformsStyle["transform"][P]> };
32+
+
33+
type AnimateStyle<S extends object> = {
34+
- [K in keyof S]: S[K] extends ReadonlyArray<any>
35+
+ [K in keyof S]: K extends 'transform' ? AnimatedTransform : (S[K] extends ReadonlyArray<any>
36+
? ReadonlyArray<AnimateStyle<S[K][0]>>
37+
: S[K] extends object
38+
? AnimateStyle<S[K]>
39+
@@ -151,7 +154,7 @@ declare module 'react-native-reanimated' {
40+
| AnimatedNode<
41+
// allow `number` where `string` normally is to support colors
42+
S[K] extends string ? S[K] | number : S[K]
43+
- >
44+
+ >)
45+
};
46+
47+
type AnimateProps<
48+
@@ -195,6 +198,7 @@ declare module 'react-native-reanimated' {
49+
export const pow: MultiOperator;
50+
export const modulo: MultiOperator;
51+
export const sqrt: UnaryOperator;
52+
+ export const log: UnaryOperator;
53+
export const sin: UnaryOperator;
54+
export const cos: UnaryOperator;
55+
export const tan: UnaryOperator;

src/FullScreenPortal.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ export class FullScreenPortal extends ReactComponent {
1818
if (this.fullScreenStack.current) {
1919
return (
2020
this.fullScreenStack.current &&
21-
this.fullScreenStack.current.map(({ Component, name }) => (
22-
<View style={StyleSheet.absoluteFill} key={name}>
23-
<Component />
24-
</View>
25-
))
21+
this.fullScreenStack.current.map(
22+
({ Component, name, isAuthorized }) => (
23+
<Component isAuthorized={isAuthorized} key={name} />
24+
)
25+
)
2626
);
2727
}
2828
return null;

src/Navigation/Stop.d.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
import { ComponentType } from 'react';
22

33
export interface IStop {
4-
Component: ComponentType;
4+
Component: ComponentType<IStopComponentProps>;
55
isFullScreen?: boolean;
66
name: string;
7+
isAuthorized: boolean;
8+
}
9+
10+
export interface IStopComponentProps {
11+
isAuthorized: boolean;
712
}

0 commit comments

Comments
 (0)