@momo-kits/foundation 0.74.2-react-native.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/Application/BottomTab.tsx +120 -0
  2. package/Application/Components.tsx +534 -0
  3. package/Application/ModalScreen.tsx +268 -0
  4. package/Application/Navigation.ts +50 -0
  5. package/Application/NavigationContainer.tsx +120 -0
  6. package/Application/Navigator.ts +131 -0
  7. package/Application/StackScreen.tsx +71 -0
  8. package/Application/index.ts +41 -0
  9. package/Application/types.ts +216 -0
  10. package/Application/utils.tsx +151 -0
  11. package/Assets/DotAnimation.json +256 -0
  12. package/Assets/SpinnerAnimation.json +1027 -0
  13. package/Assets/icon.json +4031 -0
  14. package/Assets/icon_bank.json +506 -0
  15. package/Assets/language.json +202 -0
  16. package/Badge/Badge.tsx +56 -0
  17. package/Badge/BadgeDot.tsx +11 -0
  18. package/Badge/BadgeRibbon.tsx +125 -0
  19. package/Badge/Shape.tsx +29 -0
  20. package/Badge/index.tsx +7 -0
  21. package/Badge/styles.ts +58 -0
  22. package/Badge/types.ts +63 -0
  23. package/Button/index.tsx +310 -0
  24. package/Button/styles.ts +60 -0
  25. package/CheckBox/index.tsx +65 -0
  26. package/CheckBox/styles.ts +15 -0
  27. package/CheckBox/types.ts +38 -0
  28. package/Consts/colors+spacing+radius.ts +218 -0
  29. package/Consts/index.ts +4 -0
  30. package/Consts/styles.ts +52 -0
  31. package/Consts/theme.ts +125 -0
  32. package/Divider/index.tsx +21 -0
  33. package/Icon/index.tsx +41 -0
  34. package/Icon/types.ts +27 -0
  35. package/IconButton/index.tsx +139 -0
  36. package/IconButton/styles.ts +19 -0
  37. package/Image/index.tsx +83 -0
  38. package/Image/styles.ts +5 -0
  39. package/Image/types.ts +5 -0
  40. package/Input/Input.tsx +192 -0
  41. package/Input/InputDropDown.tsx +114 -0
  42. package/Input/InputMoney.tsx +163 -0
  43. package/Input/InputOTP.tsx +235 -0
  44. package/Input/InputSearch.tsx +151 -0
  45. package/Input/InputTextArea.tsx +159 -0
  46. package/Input/common.tsx +129 -0
  47. package/Input/index.tsx +251 -0
  48. package/Input/styles.ts +160 -0
  49. package/Input/utils.ts +69 -0
  50. package/Layout/Card.tsx +180 -0
  51. package/Layout/GridSystem.tsx +136 -0
  52. package/Layout/Item.tsx +56 -0
  53. package/Layout/ItemList.tsx +55 -0
  54. package/Layout/ItemSectionList.tsx +39 -0
  55. package/Layout/Screen.tsx +355 -0
  56. package/Layout/Section.tsx +179 -0
  57. package/Layout/index.ts +29 -0
  58. package/Layout/styles.ts +97 -0
  59. package/Layout/types.ts +23 -0
  60. package/Layout/utils.ts +55 -0
  61. package/Loader/DotLoader.tsx +37 -0
  62. package/Loader/Loader.tsx +13 -0
  63. package/Loader/ProgressBar.tsx +44 -0
  64. package/Loader/Spinner.tsx +28 -0
  65. package/Loader/index.tsx +4 -0
  66. package/Loader/styles.ts +10 -0
  67. package/Loader/types.ts +35 -0
  68. package/Loader/utils.ts +25 -0
  69. package/Pagination/Dot.tsx +16 -0
  70. package/Pagination/PaginationDot.tsx +38 -0
  71. package/Pagination/PaginationNumber.tsx +24 -0
  72. package/Pagination/PaginationScroll.tsx +88 -0
  73. package/Pagination/PaginationWhiteDot.tsx +35 -0
  74. package/Pagination/index.tsx +25 -0
  75. package/Pagination/styles.ts +50 -0
  76. package/Pagination/types.ts +40 -0
  77. package/Popup/PopupNotify.tsx +266 -0
  78. package/Popup/PopupPromotion.tsx +120 -0
  79. package/Popup/index.tsx +4 -0
  80. package/Popup/types.ts +87 -0
  81. package/Radio/index.tsx +64 -0
  82. package/Radio/styles.ts +11 -0
  83. package/Radio/types.ts +38 -0
  84. package/Skeleton/index.tsx +72 -0
  85. package/Skeleton/styles.ts +5 -0
  86. package/Skeleton/types.ts +6 -0
  87. package/Switch/index.tsx +37 -0
  88. package/Switch/styles.ts +23 -0
  89. package/Switch/types.ts +26 -0
  90. package/Tag/index.tsx +79 -0
  91. package/Tag/styles.ts +24 -0
  92. package/Tag/types.ts +36 -0
  93. package/Text/index.tsx +110 -0
  94. package/Text/styles.ts +73 -0
  95. package/Text/types.ts +34 -0
  96. package/Text/utils.ts +14 -0
  97. package/Title/index.tsx +132 -0
  98. package/Title/styles.ts +52 -0
  99. package/Title/types.ts +52 -0
  100. package/code-scanner.js +51 -0
  101. package/index.ts +51 -0
  102. package/package.json +36 -0
  103. package/publish.sh +23 -0
  104. package/tsconfig.json +24 -0
  105. package/verify.js +44 -0
@@ -0,0 +1,216 @@
1
+ import {Animated} from 'react-native';
2
+ import {StackNavigationOptions} from '@react-navigation/stack';
3
+ import React from 'react';
4
+ import Navigator from './Navigator';
5
+ import {PopupNotifyProps} from '../Popup/types';
6
+ import Navigation from './Navigation';
7
+
8
+ type Screen = React.ComponentType<NavigationScreenProps>;
9
+
10
+ export type Theme = {
11
+ dark: boolean;
12
+ colors: {
13
+ primary: string;
14
+ secondary: string;
15
+ background: {
16
+ default: string;
17
+ surface: string;
18
+ tonal: string;
19
+ pressed: string;
20
+ selected: string;
21
+ disable: string;
22
+ };
23
+ text: {
24
+ default: string;
25
+ secondary: string;
26
+ hint: string;
27
+ disable: string;
28
+ };
29
+ border: {
30
+ default: string;
31
+ disable: string;
32
+ };
33
+ success: {
34
+ primary: string;
35
+ secondary: string;
36
+ container: string;
37
+ };
38
+ warning: {
39
+ primary: string;
40
+ secondary: string;
41
+ container: string;
42
+ };
43
+ error: {
44
+ primary: string;
45
+ secondary: string;
46
+ container: string;
47
+ };
48
+ highlight: {
49
+ primary: string;
50
+ secondary: string;
51
+ container: string;
52
+ };
53
+ interactive: {
54
+ primary: string;
55
+ secondary: string;
56
+ container: string;
57
+ };
58
+ };
59
+ font: string;
60
+ assets?: {
61
+ headerBackground?: string;
62
+ };
63
+ };
64
+
65
+ export type Context = {
66
+ [key: string]: any;
67
+ theme: Theme;
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?: object;
80
+ fromCode?: string;
81
+ };
82
+
83
+ export type LocalizationObject = {
84
+ vi: {
85
+ [key: string]: string;
86
+ };
87
+ en: {
88
+ [key: string]: string;
89
+ };
90
+ };
91
+
92
+ export type NavigationContainerProps = {
93
+ screen: Screen;
94
+ options?: NavigationOptions;
95
+ theme: Theme;
96
+ maxApi: any;
97
+ localization?: LocalizationObject;
98
+ };
99
+
100
+ export type NavigationScreenProps = {
101
+ [key: string]: any;
102
+ options?: NavigationOptions;
103
+ navigation: Navigation;
104
+ };
105
+
106
+ export type ScreenParams = {
107
+ [key: string]: any;
108
+ screen: Screen;
109
+ options?: NavigationOptions;
110
+ };
111
+
112
+ export interface ModalParams extends ScreenParams {
113
+ [key: string]: any;
114
+ onDismiss?: () => void;
115
+ barrierDismissible?: boolean;
116
+ }
117
+
118
+ export interface BottomSheetParams extends ScreenParams {
119
+ [key: string]: any;
120
+ onDismiss?: () => void;
121
+ snapPoint?: '30%' | '50%' | '70%' | '90%' | 'content';
122
+ indicatorColor?: string;
123
+ }
124
+
125
+ export type NavigationButtonProps = {
126
+ icon: string;
127
+ tintColor?: string;
128
+ useBorder?: boolean;
129
+ onPress: () => void;
130
+ badgeType?: 'dot' | 'number';
131
+ badgeValue?: number;
132
+ };
133
+
134
+ export type PinnedToolType = {
135
+ key: string;
136
+ badgeValue?: number;
137
+ badgeType?: 'number' | 'dot';
138
+ };
139
+
140
+ export type RuntimeToolType = {
141
+ title: {vi: string; en: string};
142
+ icon: string;
143
+ key: string;
144
+ };
145
+
146
+ export interface NavigationOptions extends StackNavigationOptions {
147
+ preventBack?: PopupNotifyProps;
148
+ onPressLeftHeader?: () => void;
149
+ surface?: boolean;
150
+ hiddenBack?: boolean;
151
+ customTitle?: TitleCustomProps;
152
+ toolkitParams?: {
153
+ pinnedTool?: PinnedToolType;
154
+ runtimeTools?: RuntimeToolType[];
155
+ };
156
+ }
157
+
158
+ export interface HeaderBackProps extends NavigationButtonProps {
159
+ preventBack?: PopupNotifyProps;
160
+ onPressLeftHeader?: () => void;
161
+ }
162
+
163
+ export type HeaderBackgroundProps = {
164
+ image?: string | null;
165
+ backgroundColor?: string | null;
166
+ animatedValue?: Animated.Value;
167
+ useBorder?: boolean;
168
+ };
169
+
170
+ export type TitleCustomProps = {
171
+ title?: string;
172
+ subTitle?: string;
173
+ image?: string;
174
+ imageShape?: 'circle' | 'square';
175
+ dotColor?: string;
176
+ tintColor?: string;
177
+ content?: React.ReactNode;
178
+ };
179
+
180
+ export type HeaderToolkitProps = {
181
+ [key: string]: any;
182
+ appCode: string;
183
+ configs: any[];
184
+ };
185
+
186
+ export type HeaderAnimatedProps = {
187
+ animatedValue: Animated.Value;
188
+ image: string;
189
+ onPress?: () => void;
190
+ };
191
+
192
+ export type BottomTabItemProps = {
193
+ name: string;
194
+ label: string;
195
+ icon: string;
196
+ showDot?: boolean;
197
+ badgeLabel?: string;
198
+ screen: Screen;
199
+ options: NavigationOptions;
200
+ };
201
+
202
+ export type BottomTabProps = {
203
+ nested?: boolean;
204
+ tabs: BottomTabItemProps[];
205
+ initialRouteName?: string;
206
+ navigation: Navigation;
207
+ listeners?: {
208
+ tabPress?: any;
209
+ focus?: any;
210
+ };
211
+ };
212
+
213
+ export type AnimatedHeader = {
214
+ type: 'default' | 'surface';
215
+ component?: (props?: any) => React.ReactElement;
216
+ };
@@ -0,0 +1,151 @@
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
+
16
+ /**
17
+ * default options for stack screen
18
+ */
19
+ const getStackOptions = (): StackNavigationOptions => {
20
+ return {
21
+ headerTitleAlign: 'left',
22
+ headerTitle: HeaderTitle,
23
+ headerBackground: (props: any) => <HeaderBackground {...props} />,
24
+ headerLeft: (props: any) => <HeaderLeft {...props} />,
25
+ headerRight: (props: any) => <HeaderToolkitAction {...props} />,
26
+ headerTintColor: Colors.black_01,
27
+ };
28
+ };
29
+
30
+ /**
31
+ * default options for dialog screen
32
+ */
33
+ const getDialogOptions = (): StackNavigationOptions => {
34
+ return {
35
+ headerTitleAlign: 'left',
36
+ headerTitle: HeaderTitle,
37
+ headerLeft: (props: any) => <HeaderLeft {...props} />,
38
+ headerBackground: (props: any) => <HeaderBackground {...props} />,
39
+ headerTintColor: Colors.black_01,
40
+ ...TransitionPresets.ModalTransition,
41
+ };
42
+ };
43
+
44
+ /**
45
+ * default options for modal screen
46
+ */
47
+ const getModalOptions = (): StackNavigationOptions => {
48
+ return {
49
+ headerShown: false,
50
+ headerBackground: undefined,
51
+ cardStyle: {backgroundColor: 'transparent'},
52
+ cardOverlayEnabled: true,
53
+ animationEnabled: false,
54
+ cardStyleInterpolator: ({current: {progress}}) => ({
55
+ cardStyle: {
56
+ opacity: progress.interpolate({
57
+ inputRange: [0, 0.5, 0.9, 1],
58
+ outputRange: [0, 0.25, 0.7, 1],
59
+ }),
60
+ },
61
+ overlayStyle: {
62
+ opacity: progress.interpolate({
63
+ inputRange: [0, 0.5, 0.9, 1],
64
+ outputRange: [0, 0.2, 0.4, 0.6],
65
+ extrapolate: 'clamp',
66
+ }),
67
+ },
68
+ }),
69
+ };
70
+ };
71
+
72
+ /**
73
+ * build react-navigation options
74
+ */
75
+ const getOptions = (params: NavigationOptions, theme: Theme) => {
76
+ let options = {};
77
+
78
+ if (
79
+ typeof params.onPressLeftHeader === 'function' ||
80
+ params.preventBack !== undefined ||
81
+ typeof params.hiddenBack === 'boolean'
82
+ ) {
83
+ options = {
84
+ ...options,
85
+ headerLeft: params.hiddenBack
86
+ ? null
87
+ : (props: any) => (
88
+ <HeaderLeft
89
+ {...props}
90
+ preventBack={params.preventBack}
91
+ onPressLeftHeader={params.onPressLeftHeader}
92
+ />
93
+ ),
94
+ };
95
+ }
96
+
97
+ if (typeof params.surface == 'boolean') {
98
+ if (params.surface) {
99
+ options = {
100
+ ...options,
101
+ headerTintColor: theme.colors.text.default,
102
+ headerBackground: () => (
103
+ <HeaderBackground
104
+ image={null}
105
+ backgroundColor={theme.colors.background.surface}
106
+ useBorder={true}
107
+ />
108
+ ),
109
+ };
110
+ } else {
111
+ options = {
112
+ ...options,
113
+ headerTintColor: Colors.black_01,
114
+ headerBackground: HeaderBackground,
115
+ };
116
+ }
117
+ }
118
+
119
+ if (params.customTitle) {
120
+ options = {
121
+ ...options,
122
+ headerTitleAlign: 'left',
123
+ headerTitle: (props: any) => {
124
+ return <HeaderCustom {...params.customTitle} {...props} />;
125
+ },
126
+ };
127
+ }
128
+
129
+ if (params.toolkitParams) {
130
+ options = {
131
+ ...options,
132
+ headerRight: (props: any) => {
133
+ return (
134
+ <HeaderToolkitAction
135
+ preventBack={params.preventBack}
136
+ pinnedTool={params.toolkitParams?.pinnedTool}
137
+ runtimeTools={params.toolkitParams?.runtimeTools}
138
+ {...props}
139
+ />
140
+ );
141
+ },
142
+ };
143
+ }
144
+
145
+ return {
146
+ ...params,
147
+ ...options,
148
+ };
149
+ };
150
+
151
+ export {getStackOptions, getDialogOptions, getModalOptions, getOptions};
@@ -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
+ }