@momo-kits/foundation 0.75.1-beta.8 → 0.75.2-beta.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/Application/BottomTab/BottomTabBar.tsx +478 -0
- package/Application/BottomTab/index.tsx +134 -0
- package/Application/Components.tsx +552 -0
- package/Application/ModalScreen.tsx +244 -0
- package/Application/Navigation.ts +50 -0
- package/Application/NavigationContainer.tsx +128 -0
- package/Application/Navigator.ts +151 -0
- package/Application/StackScreen.tsx +146 -0
- package/Application/index.ts +37 -0
- package/{Navigation → Application}/types.ts +96 -27
- package/Application/utils.tsx +175 -0
- package/Assets/DotAnimation.json +256 -0
- package/Assets/SpinnerAnimation.json +1027 -0
- package/Assets/icon.json +89 -5
- package/Assets/icon_bank.json +506 -0
- package/Assets/language.json +202 -0
- package/Badge/Badge.tsx +56 -0
- package/Badge/BadgeDot.tsx +11 -0
- package/Badge/BadgeRibbon.tsx +125 -0
- package/Badge/Shape.tsx +29 -0
- package/Badge/index.tsx +7 -0
- package/Badge/styles.ts +58 -0
- package/Badge/types.ts +63 -0
- package/Button/index.tsx +90 -39
- package/Button/styles.ts +19 -0
- package/CheckBox/index.tsx +58 -43
- package/CheckBox/styles.ts +1 -1
- package/CheckBox/types.ts +6 -4
- package/Consts/colors+spacing+radius.ts +18 -0
- package/Consts/styles.ts +0 -26
- package/Consts/theme.ts +5 -1
- package/Divider/index.tsx +3 -1
- package/Icon/index.tsx +14 -10
- package/Icon/types.ts +4 -3
- package/IconButton/index.tsx +24 -15
- package/Image/index.tsx +63 -45
- package/Image/styles.ts +1 -9
- package/Image/types.ts +5 -1
- package/Input/Input.tsx +227 -115
- package/Input/InputDropDown.tsx +132 -0
- package/Input/InputMoney.tsx +174 -110
- package/Input/InputOTP.tsx +257 -0
- package/Input/InputSearch.tsx +160 -130
- package/Input/InputTextArea.tsx +149 -121
- package/Input/common.tsx +43 -18
- package/Input/index.tsx +205 -17
- package/Input/styles.ts +44 -7
- package/Input/utils.ts +2 -2
- package/Layout/Card.tsx +154 -62
- package/Layout/FloatingButton.tsx +128 -0
- package/Layout/GridSystem.tsx +35 -23
- package/Layout/Item.tsx +56 -0
- package/Layout/ItemList.tsx +55 -0
- package/Layout/ItemSectionList.tsx +39 -0
- package/Layout/Screen.tsx +378 -0
- package/Layout/Section.tsx +74 -39
- package/Layout/index.ts +14 -3
- package/Layout/styles.ts +101 -0
- package/Layout/types.ts +1 -39
- package/Layout/utils.ts +42 -37
- package/Loader/DotLoader.tsx +37 -0
- package/Loader/Loader.tsx +13 -0
- package/Loader/ProgressBar.tsx +44 -0
- package/Loader/Spinner.tsx +29 -0
- package/Loader/index.tsx +4 -0
- package/Loader/styles.ts +10 -0
- package/Loader/types.ts +35 -0
- package/Loader/utils.ts +25 -0
- package/Pagination/Dot.tsx +1 -1
- package/Pagination/PaginationDot.tsx +8 -3
- package/Pagination/PaginationNumber.tsx +8 -7
- package/Pagination/PaginationScroll.tsx +1 -1
- package/Pagination/PaginationWhiteDot.tsx +8 -5
- package/Pagination/styles.ts +3 -0
- package/Pagination/types.ts +2 -0
- package/Popup/PopupNotify.tsx +102 -44
- package/Popup/PopupPromotion.tsx +63 -22
- package/Popup/types.ts +15 -4
- package/Radio/index.tsx +35 -21
- package/Radio/types.ts +7 -5
- package/Skeleton/index.tsx +1 -1
- package/Skeleton/types.ts +3 -0
- package/Switch/index.tsx +35 -24
- package/Switch/types.ts +5 -3
- package/Tag/index.tsx +1 -1
- package/Text/index.tsx +32 -26
- package/Text/styles.ts +38 -0
- package/Text/types.ts +25 -13
- package/Text/utils.ts +14 -0
- package/Title/index.tsx +186 -0
- package/Title/styles.ts +79 -0
- package/Title/types.ts +20 -0
- package/code-scanner.js +143 -0
- package/index.ts +17 -3
- package/migrate_typo.js +56 -0
- package/package.json +44 -39
- package/publish.sh +2 -5
- package/tsconfig.json +24 -0
- package/verify.js +47 -0
- package/Assets/header-background.png +0 -0
- package/Layout/ScreenContainer.tsx +0 -122
- package/Navigation/BottomTab.tsx +0 -39
- package/Navigation/Components.tsx +0 -365
- package/Navigation/ModalScreen.tsx +0 -226
- package/Navigation/Navigation.ts +0 -44
- package/Navigation/NavigationButton.tsx +0 -54
- package/Navigation/NavigationContainer.tsx +0 -77
- package/Navigation/Navigator.ts +0 -82
- package/Navigation/Observer.ts +0 -79
- package/Navigation/StackScreen.tsx +0 -27
- package/Navigation/index.ts +0 -14
- package/Navigation/utils.tsx +0 -137
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import {Platform} from 'react-native';
|
|
2
|
+
import {NavigationContainer} from './NavigationContainer';
|
|
3
|
+
import Screen from '../Layout/Screen';
|
|
4
|
+
import {
|
|
5
|
+
HeaderAnimated,
|
|
6
|
+
HeaderBackground,
|
|
7
|
+
HeaderCustom,
|
|
8
|
+
HeaderRightAction,
|
|
9
|
+
HeaderTitle,
|
|
10
|
+
NavigationButton,
|
|
11
|
+
} from './Components';
|
|
12
|
+
import BottomTab from './BottomTab';
|
|
13
|
+
import {createContext} from 'react';
|
|
14
|
+
import {defaultContext} from '../Consts';
|
|
15
|
+
|
|
16
|
+
const Context = createContext({});
|
|
17
|
+
const ApplicationContext = createContext(defaultContext);
|
|
18
|
+
|
|
19
|
+
const MiniAppContext = (Platform as any).MiniAppContext ?? Context;
|
|
20
|
+
const ScreenContext = (Platform as any).ScreenContext ?? Context;
|
|
21
|
+
const ComponentContext = (Platform as any).ComponentContext ?? Context;
|
|
22
|
+
|
|
23
|
+
export {
|
|
24
|
+
ApplicationContext,
|
|
25
|
+
MiniAppContext,
|
|
26
|
+
ScreenContext,
|
|
27
|
+
ComponentContext,
|
|
28
|
+
NavigationContainer,
|
|
29
|
+
Screen,
|
|
30
|
+
BottomTab,
|
|
31
|
+
NavigationButton,
|
|
32
|
+
HeaderTitle,
|
|
33
|
+
HeaderBackground,
|
|
34
|
+
HeaderRightAction,
|
|
35
|
+
HeaderCustom,
|
|
36
|
+
HeaderAnimated,
|
|
37
|
+
};
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {StackNavigationOptions} from '@react-navigation/stack';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import
|
|
3
|
+
import {Animated, FlatListProps, ViewProps} from 'react-native';
|
|
4
4
|
import {PopupNotifyProps} from '../Popup/types';
|
|
5
|
+
import Navigation from './Navigation';
|
|
6
|
+
import Navigator from './Navigator';
|
|
7
|
+
|
|
8
|
+
type Screen = React.ComponentType<NavigationScreenProps>;
|
|
5
9
|
|
|
6
10
|
export type Theme = {
|
|
7
11
|
dark: boolean;
|
|
@@ -59,71 +63,111 @@ export type Theme = {
|
|
|
59
63
|
};
|
|
60
64
|
|
|
61
65
|
export type Context = {
|
|
66
|
+
[key: string]: any;
|
|
62
67
|
theme: Theme;
|
|
63
68
|
navigator?: Navigator;
|
|
69
|
+
showGrid?: boolean;
|
|
70
|
+
translate?: (key: string) => string;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export type MiniAppInfo = {
|
|
74
|
+
[key: string]: any;
|
|
75
|
+
code: string;
|
|
76
|
+
appId: string;
|
|
77
|
+
buildNumber: number;
|
|
78
|
+
flowPartnerId?: string;
|
|
79
|
+
toolkitConfig?: any;
|
|
80
|
+
fromCode?: string;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
export type LocalizationObject = {
|
|
84
|
+
vi: {
|
|
85
|
+
[key: string]: string;
|
|
86
|
+
};
|
|
87
|
+
en: {
|
|
88
|
+
[key: string]: string;
|
|
89
|
+
};
|
|
64
90
|
};
|
|
65
91
|
|
|
66
92
|
export type NavigationContainerProps = {
|
|
67
|
-
screen:
|
|
93
|
+
screen: Screen;
|
|
68
94
|
options?: NavigationOptions;
|
|
69
95
|
theme: Theme;
|
|
70
|
-
maxApi
|
|
96
|
+
maxApi: any;
|
|
97
|
+
localization?: LocalizationObject;
|
|
98
|
+
initialParams?: any;
|
|
71
99
|
};
|
|
72
100
|
|
|
73
|
-
export
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
scrollViewProps?: ScrollViewProps;
|
|
79
|
-
footerComponent?: React.ElementType;
|
|
80
|
-
}
|
|
101
|
+
export type NavigationScreenProps = {
|
|
102
|
+
[key: string]: any;
|
|
103
|
+
options?: NavigationOptions;
|
|
104
|
+
navigation: Navigation;
|
|
105
|
+
};
|
|
81
106
|
|
|
82
107
|
export type ScreenParams = {
|
|
83
108
|
[key: string]: any;
|
|
84
|
-
screen:
|
|
109
|
+
screen: Screen;
|
|
85
110
|
options?: NavigationOptions;
|
|
86
111
|
};
|
|
87
112
|
|
|
88
113
|
export interface ModalParams extends ScreenParams {
|
|
89
114
|
[key: string]: any;
|
|
90
|
-
|
|
91
|
-
onDismiss?: (mounted?: boolean) => void;
|
|
115
|
+
onDismiss?: () => void;
|
|
92
116
|
barrierDismissible?: boolean;
|
|
93
117
|
}
|
|
94
118
|
|
|
95
119
|
export interface BottomSheetParams extends ScreenParams {
|
|
96
120
|
[key: string]: any;
|
|
97
121
|
onDismiss?: () => void;
|
|
122
|
+
footerComponent?: React.ReactNode;
|
|
123
|
+
flatListProps?: FlatListProps<any>;
|
|
98
124
|
}
|
|
99
125
|
|
|
100
126
|
export type NavigationButtonProps = {
|
|
101
127
|
icon: string;
|
|
102
128
|
tintColor?: string;
|
|
103
|
-
backgroundColor?: string;
|
|
104
129
|
useBorder?: boolean;
|
|
105
130
|
onPress: () => void;
|
|
131
|
+
badgeType?: 'dot' | 'number';
|
|
132
|
+
badgeValue?: number;
|
|
106
133
|
accessibilityLabel?: string;
|
|
107
134
|
};
|
|
108
135
|
|
|
109
|
-
export type
|
|
136
|
+
export type PinnedToolType = {
|
|
137
|
+
key: string;
|
|
138
|
+
badgeValue?: number;
|
|
139
|
+
badgeType?: 'number' | 'dot';
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
export type RuntimeToolType = {
|
|
143
|
+
title: {vi: string; en: string};
|
|
144
|
+
icon: string;
|
|
145
|
+
key: string;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
export interface NavigationOptions extends StackNavigationOptions {
|
|
110
149
|
preventBack?: PopupNotifyProps;
|
|
150
|
+
onPressLeftHeader?: () => void;
|
|
111
151
|
surface?: boolean;
|
|
112
|
-
|
|
113
|
-
headerTitleAlign?: 'left' | 'center';
|
|
152
|
+
hiddenBack?: boolean;
|
|
114
153
|
customTitle?: TitleCustomProps;
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
154
|
+
toolkitParams?: {
|
|
155
|
+
pinnedTool?: PinnedToolType;
|
|
156
|
+
runtimeTools?: RuntimeToolType[];
|
|
157
|
+
preventClose?: PopupNotifyProps;
|
|
158
|
+
};
|
|
159
|
+
}
|
|
118
160
|
|
|
119
161
|
export interface HeaderBackProps extends NavigationButtonProps {
|
|
120
162
|
preventBack?: PopupNotifyProps;
|
|
163
|
+
onPressLeftHeader?: () => void;
|
|
121
164
|
}
|
|
122
165
|
|
|
123
166
|
export type HeaderBackgroundProps = {
|
|
124
167
|
image?: string | null;
|
|
125
168
|
backgroundColor?: string | null;
|
|
126
169
|
animatedValue?: Animated.Value;
|
|
170
|
+
useBorder?: boolean;
|
|
127
171
|
};
|
|
128
172
|
|
|
129
173
|
export type TitleCustomProps = {
|
|
@@ -139,19 +183,44 @@ export type TitleCustomProps = {
|
|
|
139
183
|
export type HeaderToolkitProps = {
|
|
140
184
|
[key: string]: any;
|
|
141
185
|
appCode: string;
|
|
142
|
-
|
|
143
|
-
type: string;
|
|
144
|
-
onAction?: (action: string) => void;
|
|
186
|
+
configs: any[];
|
|
145
187
|
};
|
|
146
188
|
|
|
189
|
+
export interface HeaderAnimatedProps extends ViewProps {
|
|
190
|
+
animatedValue: Animated.Value;
|
|
191
|
+
image: string;
|
|
192
|
+
}
|
|
193
|
+
|
|
147
194
|
export type BottomTabItemProps = {
|
|
195
|
+
name: string;
|
|
148
196
|
label: string;
|
|
149
197
|
icon: string;
|
|
150
198
|
showDot?: boolean;
|
|
151
|
-
badgeLabel?: string;
|
|
152
|
-
screen:
|
|
199
|
+
badgeLabel?: string | number;
|
|
200
|
+
screen: Screen;
|
|
201
|
+
options: NavigationOptions;
|
|
153
202
|
};
|
|
154
203
|
|
|
155
204
|
export type BottomTabProps = {
|
|
205
|
+
nested?: boolean;
|
|
156
206
|
tabs: BottomTabItemProps[];
|
|
207
|
+
initialRouteName?: string;
|
|
208
|
+
navigation: Navigation;
|
|
209
|
+
listeners?: {
|
|
210
|
+
tabPress?: any;
|
|
211
|
+
focus?: any;
|
|
212
|
+
};
|
|
213
|
+
floatingButton?: FloatingButtonProps;
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
export type FloatingButtonProps = {
|
|
217
|
+
container?: React.ReactNode;
|
|
218
|
+
icon: string | React.ReactNode;
|
|
219
|
+
label: string;
|
|
220
|
+
onPress: () => void;
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
export type AnimatedHeader = {
|
|
224
|
+
type: 'default' | 'surface';
|
|
225
|
+
component?: (props?: any) => React.ReactElement;
|
|
157
226
|
};
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
StackNavigationOptions,
|
|
4
|
+
TransitionPresets,
|
|
5
|
+
} from '@react-navigation/stack';
|
|
6
|
+
import {
|
|
7
|
+
HeaderBackground,
|
|
8
|
+
HeaderCustom,
|
|
9
|
+
HeaderLeft,
|
|
10
|
+
HeaderTitle,
|
|
11
|
+
HeaderToolkitAction,
|
|
12
|
+
} from './Components';
|
|
13
|
+
import {NavigationOptions, Theme} from './types';
|
|
14
|
+
import {Colors} from '../Consts';
|
|
15
|
+
import {Platform} from 'react-native';
|
|
16
|
+
const isIOS = Platform.OS === 'ios';
|
|
17
|
+
/**
|
|
18
|
+
* default options for stack screen
|
|
19
|
+
*/
|
|
20
|
+
const getStackOptions = (): StackNavigationOptions => {
|
|
21
|
+
return {
|
|
22
|
+
headerTitleAlign: 'left',
|
|
23
|
+
headerTitle: HeaderTitle,
|
|
24
|
+
headerBackground: (props: any) => <HeaderBackground {...props} />,
|
|
25
|
+
headerLeft: (props: any) => <HeaderLeft {...props} />,
|
|
26
|
+
headerRight: (props: any) => <HeaderToolkitAction {...props} />,
|
|
27
|
+
headerTintColor: Colors.black_01,
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* default options for dialog screen
|
|
33
|
+
*/
|
|
34
|
+
const getDialogOptions = (): StackNavigationOptions => {
|
|
35
|
+
return {
|
|
36
|
+
headerTitleAlign: 'left',
|
|
37
|
+
headerTitle: HeaderTitle,
|
|
38
|
+
headerLeft: (props: any) => <HeaderLeft {...props} />,
|
|
39
|
+
headerBackground: (props: any) => <HeaderBackground {...props} />,
|
|
40
|
+
headerTintColor: Colors.black_01,
|
|
41
|
+
...TransitionPresets.ModalTransition,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* default options for modal screen
|
|
47
|
+
*/
|
|
48
|
+
const getModalOptions = (): StackNavigationOptions => {
|
|
49
|
+
return {
|
|
50
|
+
headerShown: false,
|
|
51
|
+
headerBackground: undefined,
|
|
52
|
+
cardStyle: {backgroundColor: 'transparent'},
|
|
53
|
+
cardOverlayEnabled: true,
|
|
54
|
+
animationEnabled: false,
|
|
55
|
+
cardStyleInterpolator: ({current: {progress}}) => ({
|
|
56
|
+
cardStyle: {
|
|
57
|
+
opacity: progress.interpolate({
|
|
58
|
+
inputRange: [0, 0.5, 0.9, 1],
|
|
59
|
+
outputRange: [0, 0.25, 0.7, 1],
|
|
60
|
+
}),
|
|
61
|
+
},
|
|
62
|
+
overlayStyle: {
|
|
63
|
+
opacity: progress.interpolate({
|
|
64
|
+
inputRange: [0, 0.5, 0.9, 1],
|
|
65
|
+
outputRange: [0, 0.2, 0.4, 0.6],
|
|
66
|
+
extrapolate: 'clamp',
|
|
67
|
+
}),
|
|
68
|
+
},
|
|
69
|
+
}),
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* build react-navigation options
|
|
75
|
+
*/
|
|
76
|
+
const getOptions = (params: NavigationOptions, theme: Theme) => {
|
|
77
|
+
let options = {};
|
|
78
|
+
|
|
79
|
+
if (
|
|
80
|
+
typeof params.onPressLeftHeader === 'function' ||
|
|
81
|
+
params.preventBack !== undefined ||
|
|
82
|
+
typeof params.hiddenBack === 'boolean'
|
|
83
|
+
) {
|
|
84
|
+
options = {
|
|
85
|
+
...options,
|
|
86
|
+
headerLeft: params.hiddenBack
|
|
87
|
+
? null
|
|
88
|
+
: (props: any) => (
|
|
89
|
+
<HeaderLeft
|
|
90
|
+
{...props}
|
|
91
|
+
preventBack={params.preventBack}
|
|
92
|
+
onPressLeftHeader={params.onPressLeftHeader}
|
|
93
|
+
/>
|
|
94
|
+
),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (typeof params.surface == 'boolean') {
|
|
99
|
+
if (params.surface) {
|
|
100
|
+
options = {
|
|
101
|
+
...options,
|
|
102
|
+
headerTintColor: theme.colors.text.default,
|
|
103
|
+
headerBackground: () => (
|
|
104
|
+
<HeaderBackground
|
|
105
|
+
image={null}
|
|
106
|
+
backgroundColor={theme.colors.background.surface}
|
|
107
|
+
useBorder={true}
|
|
108
|
+
/>
|
|
109
|
+
),
|
|
110
|
+
};
|
|
111
|
+
} else {
|
|
112
|
+
options = {
|
|
113
|
+
...options,
|
|
114
|
+
headerTintColor: Colors.black_01,
|
|
115
|
+
headerBackground: HeaderBackground,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (params.customTitle) {
|
|
121
|
+
options = {
|
|
122
|
+
...options,
|
|
123
|
+
headerTitleAlign: 'left',
|
|
124
|
+
headerTitle: (props: any) => {
|
|
125
|
+
return <HeaderCustom {...params.customTitle} {...props} />;
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if (params.toolkitParams) {
|
|
131
|
+
options = {
|
|
132
|
+
...options,
|
|
133
|
+
headerRight: (props: any) => {
|
|
134
|
+
return <HeaderToolkitAction {...params.toolkitParams} {...props} />;
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return {
|
|
140
|
+
...params,
|
|
141
|
+
...options,
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
const getAccessibilityID = (
|
|
146
|
+
key = '',
|
|
147
|
+
override: string | undefined = undefined,
|
|
148
|
+
) => {
|
|
149
|
+
if (isIOS) {
|
|
150
|
+
return {
|
|
151
|
+
accessible: true,
|
|
152
|
+
testID: override || key,
|
|
153
|
+
};
|
|
154
|
+
} else {
|
|
155
|
+
return {
|
|
156
|
+
accessibilityLabel: override || key,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
const formatNameLength = (name = '') => {
|
|
162
|
+
let formattedName = name;
|
|
163
|
+
if (formattedName.length > 100) {
|
|
164
|
+
formattedName = formattedName.substring(0, 100);
|
|
165
|
+
}
|
|
166
|
+
return formattedName;
|
|
167
|
+
};
|
|
168
|
+
export {
|
|
169
|
+
getStackOptions,
|
|
170
|
+
getDialogOptions,
|
|
171
|
+
getModalOptions,
|
|
172
|
+
getOptions,
|
|
173
|
+
formatNameLength,
|
|
174
|
+
getAccessibilityID,
|
|
175
|
+
};
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
{
|
|
2
|
+
"v": "4.8.0",
|
|
3
|
+
"meta": {"g": "LottieFiles AE 3.2.2", "a": "", "k": "", "d": "", "tc": ""},
|
|
4
|
+
"fr": 60,
|
|
5
|
+
"ip": 10,
|
|
6
|
+
"op": 54,
|
|
7
|
+
"w": 52,
|
|
8
|
+
"h": 20,
|
|
9
|
+
"nm": "Dot 10",
|
|
10
|
+
"ddd": 0,
|
|
11
|
+
"assets": [
|
|
12
|
+
{
|
|
13
|
+
"id": "comp_0",
|
|
14
|
+
"layers": [
|
|
15
|
+
{
|
|
16
|
+
"ddd": 0,
|
|
17
|
+
"ind": 1,
|
|
18
|
+
"ty": 4,
|
|
19
|
+
"nm": "1",
|
|
20
|
+
"sr": 1,
|
|
21
|
+
"ks": {
|
|
22
|
+
"o": {"a": 0, "k": 100, "ix": 11},
|
|
23
|
+
"r": {"a": 0, "k": 0, "ix": 10},
|
|
24
|
+
"p": {
|
|
25
|
+
"a": 1,
|
|
26
|
+
"k": [
|
|
27
|
+
{
|
|
28
|
+
"i": {"x": 0.711, "y": 1},
|
|
29
|
+
"o": {"x": 0.26, "y": 0.24},
|
|
30
|
+
"t": 0,
|
|
31
|
+
"s": [-14, 11, 0],
|
|
32
|
+
"to": [0, -1.172, 0],
|
|
33
|
+
"ti": [0, -0.21, 0]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"i": {"x": 0.667, "y": 1},
|
|
37
|
+
"o": {"x": 0.333, "y": 0},
|
|
38
|
+
"t": 17,
|
|
39
|
+
"s": [-14, 5, 0],
|
|
40
|
+
"to": [0, 0.333, 0],
|
|
41
|
+
"ti": [0, -1, 0]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"i": {"x": 0.833, "y": 0.542},
|
|
45
|
+
"o": {"x": 0.333, "y": 0},
|
|
46
|
+
"t": 30,
|
|
47
|
+
"s": [-14, 13, 0],
|
|
48
|
+
"to": [0, 1, 0],
|
|
49
|
+
"ti": [0, 0.333, 0]
|
|
50
|
+
},
|
|
51
|
+
{"t": 45, "s": [-14, 11, 0]}
|
|
52
|
+
],
|
|
53
|
+
"ix": 2
|
|
54
|
+
},
|
|
55
|
+
"a": {"a": 0, "k": [-40, 0, 0], "ix": 1},
|
|
56
|
+
"s": {"a": 0, "k": [100, 100, 100], "ix": 6}
|
|
57
|
+
},
|
|
58
|
+
"ao": 0,
|
|
59
|
+
"shapes": [
|
|
60
|
+
{
|
|
61
|
+
"ty": "gr",
|
|
62
|
+
"it": [
|
|
63
|
+
{
|
|
64
|
+
"d": 1,
|
|
65
|
+
"ty": "el",
|
|
66
|
+
"s": {"a": 0, "k": [12, 12], "ix": 2},
|
|
67
|
+
"p": {"a": 0, "k": [0, 0], "ix": 3},
|
|
68
|
+
"nm": "Ellipse Path 1",
|
|
69
|
+
"mn": "ADBE Vector Shape - Ellipse",
|
|
70
|
+
"hd": false
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"ty": "st",
|
|
74
|
+
"c": {"a": 0, "k": [1, 1, 1, 1], "ix": 3},
|
|
75
|
+
"o": {"a": 0, "k": 100, "ix": 4},
|
|
76
|
+
"w": {"a": 0, "k": 0, "ix": 5},
|
|
77
|
+
"lc": 1,
|
|
78
|
+
"lj": 1,
|
|
79
|
+
"ml": 4,
|
|
80
|
+
"bm": 0,
|
|
81
|
+
"nm": "Stroke 1",
|
|
82
|
+
"mn": "ADBE Vector Graphic - Stroke",
|
|
83
|
+
"hd": false
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"ty": "fl",
|
|
87
|
+
"c": {
|
|
88
|
+
"a": 1,
|
|
89
|
+
"k": [
|
|
90
|
+
{
|
|
91
|
+
"i": {"x": [0.833], "y": [0.833]},
|
|
92
|
+
"o": {"x": [0.167], "y": [0.167]},
|
|
93
|
+
"t": 0,
|
|
94
|
+
"s": [0.968627510819, 0.674509803922, 0.835294177485, 1]
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"i": {"x": [0.833], "y": [0.833]},
|
|
98
|
+
"o": {"x": [0.167], "y": [0.167]},
|
|
99
|
+
"t": 17,
|
|
100
|
+
"s": [0.921568632126, 0.184313729405, 0.588235318661, 1]
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"t": 35,
|
|
104
|
+
"s": [0.968627510819, 0.674509803922, 0.835294177485, 1]
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
"ix": 4
|
|
108
|
+
},
|
|
109
|
+
"o": {"a": 0, "k": 100, "ix": 5},
|
|
110
|
+
"r": 1,
|
|
111
|
+
"bm": 0,
|
|
112
|
+
"nm": "Fill 1",
|
|
113
|
+
"mn": "ADBE Vector Graphic - Fill",
|
|
114
|
+
"hd": false
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"ty": "tr",
|
|
118
|
+
"p": {"a": 0, "k": [-20, 1], "ix": 2},
|
|
119
|
+
"a": {"a": 0, "k": [0, 0], "ix": 1},
|
|
120
|
+
"s": {"a": 0, "k": [100, 100], "ix": 3},
|
|
121
|
+
"r": {"a": 0, "k": 0, "ix": 6},
|
|
122
|
+
"o": {"a": 0, "k": 100, "ix": 7},
|
|
123
|
+
"sk": {"a": 0, "k": 0, "ix": 4},
|
|
124
|
+
"sa": {"a": 0, "k": 0, "ix": 5},
|
|
125
|
+
"nm": "Transform"
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
"nm": "Ellipse 1",
|
|
129
|
+
"np": 3,
|
|
130
|
+
"cix": 2,
|
|
131
|
+
"bm": 0,
|
|
132
|
+
"ix": 1,
|
|
133
|
+
"mn": "ADBE Vector Group",
|
|
134
|
+
"hd": false
|
|
135
|
+
}
|
|
136
|
+
],
|
|
137
|
+
"ip": 0,
|
|
138
|
+
"op": 45,
|
|
139
|
+
"st": 0,
|
|
140
|
+
"bm": 0
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"layers": [
|
|
146
|
+
{
|
|
147
|
+
"ddd": 0,
|
|
148
|
+
"ind": 1,
|
|
149
|
+
"ty": 0,
|
|
150
|
+
"nm": "Dot 0",
|
|
151
|
+
"refId": "comp_0",
|
|
152
|
+
"sr": 1,
|
|
153
|
+
"ks": {
|
|
154
|
+
"o": {"a": 0, "k": 100, "ix": 11},
|
|
155
|
+
"r": {"a": 0, "k": 0, "ix": 10},
|
|
156
|
+
"p": {"a": 0, "k": [6, 10, 0], "ix": 2},
|
|
157
|
+
"a": {"a": 0, "k": [-34, 10, 0], "ix": 1},
|
|
158
|
+
"s": {"a": 0, "k": [100, 100, 100], "ix": 6}
|
|
159
|
+
},
|
|
160
|
+
"ao": 0,
|
|
161
|
+
"tm": {
|
|
162
|
+
"a": 1,
|
|
163
|
+
"k": [
|
|
164
|
+
{
|
|
165
|
+
"i": {"x": [0.833], "y": [0.833]},
|
|
166
|
+
"o": {"x": [0.167], "y": [0.167]},
|
|
167
|
+
"t": 10,
|
|
168
|
+
"s": [0]
|
|
169
|
+
},
|
|
170
|
+
{"t": 54, "s": [0.733]}
|
|
171
|
+
],
|
|
172
|
+
"ix": 2,
|
|
173
|
+
"x": "var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"
|
|
174
|
+
},
|
|
175
|
+
"w": 12,
|
|
176
|
+
"h": 20,
|
|
177
|
+
"ip": 10,
|
|
178
|
+
"op": 90,
|
|
179
|
+
"st": 10,
|
|
180
|
+
"bm": 0
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"ddd": 0,
|
|
184
|
+
"ind": 2,
|
|
185
|
+
"ty": 0,
|
|
186
|
+
"nm": "Dot 0",
|
|
187
|
+
"refId": "comp_0",
|
|
188
|
+
"sr": 1,
|
|
189
|
+
"ks": {
|
|
190
|
+
"o": {"a": 0, "k": 100, "ix": 11},
|
|
191
|
+
"r": {"a": 0, "k": 0, "ix": 10},
|
|
192
|
+
"p": {"a": 0, "k": [6, 10, 0], "ix": 2},
|
|
193
|
+
"a": {"a": 0, "k": [-14, 10, 0], "ix": 1},
|
|
194
|
+
"s": {"a": 0, "k": [100, 100, 100], "ix": 6}
|
|
195
|
+
},
|
|
196
|
+
"ao": 0,
|
|
197
|
+
"tm": {
|
|
198
|
+
"a": 1,
|
|
199
|
+
"k": [
|
|
200
|
+
{
|
|
201
|
+
"i": {"x": [0.833], "y": [0.833]},
|
|
202
|
+
"o": {"x": [0.167], "y": [0.167]},
|
|
203
|
+
"t": 5,
|
|
204
|
+
"s": [0]
|
|
205
|
+
},
|
|
206
|
+
{"t": 49, "s": [0.733]}
|
|
207
|
+
],
|
|
208
|
+
"ix": 2,
|
|
209
|
+
"x": "var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"
|
|
210
|
+
},
|
|
211
|
+
"w": 12,
|
|
212
|
+
"h": 20,
|
|
213
|
+
"ip": 5,
|
|
214
|
+
"op": 85,
|
|
215
|
+
"st": 5,
|
|
216
|
+
"bm": 0
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"ddd": 0,
|
|
220
|
+
"ind": 3,
|
|
221
|
+
"ty": 0,
|
|
222
|
+
"nm": "Dot 0",
|
|
223
|
+
"refId": "comp_0",
|
|
224
|
+
"sr": 1,
|
|
225
|
+
"ks": {
|
|
226
|
+
"o": {"a": 0, "k": 100, "ix": 11},
|
|
227
|
+
"r": {"a": 0, "k": 0, "ix": 10},
|
|
228
|
+
"p": {"a": 0, "k": [6, 10, 0], "ix": 2},
|
|
229
|
+
"a": {"a": 0, "k": [6, 10, 0], "ix": 1},
|
|
230
|
+
"s": {"a": 0, "k": [100, 100, 100], "ix": 6}
|
|
231
|
+
},
|
|
232
|
+
"ao": 0,
|
|
233
|
+
"tm": {
|
|
234
|
+
"a": 1,
|
|
235
|
+
"k": [
|
|
236
|
+
{
|
|
237
|
+
"i": {"x": [0.833], "y": [0.833]},
|
|
238
|
+
"o": {"x": [0.167], "y": [0.167]},
|
|
239
|
+
"t": 0,
|
|
240
|
+
"s": [0]
|
|
241
|
+
},
|
|
242
|
+
{"t": 44, "s": [0.733]}
|
|
243
|
+
],
|
|
244
|
+
"ix": 2,
|
|
245
|
+
"x": "var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"
|
|
246
|
+
},
|
|
247
|
+
"w": 12,
|
|
248
|
+
"h": 20,
|
|
249
|
+
"ip": 0,
|
|
250
|
+
"op": 80,
|
|
251
|
+
"st": 0,
|
|
252
|
+
"bm": 0
|
|
253
|
+
}
|
|
254
|
+
],
|
|
255
|
+
"markers": []
|
|
256
|
+
}
|