@momo-kits/foundation 0.81.43 → 0.81.49
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.tsx +29 -12
- package/Application/Components.tsx +178 -174
- package/Application/ModalScreen.tsx +4 -17
- package/Application/NavigationContainer.tsx +9 -30
- package/Application/Navigator.ts +14 -9
- package/Application/StackScreen.tsx +25 -28
- package/Application/index.ts +10 -1
- package/Application/types.ts +30 -17
- package/Application/utils.tsx +14 -0
- package/Assets/icon.json +83 -5
- package/Assets/icon_bank.json +506 -0
- package/Badge/Badge.tsx +1 -1
- package/Badge/BadgeRibbon.tsx +2 -2
- package/Badge/styles.ts +5 -2
- package/Button/index.tsx +4 -5
- package/CheckBox/index.tsx +1 -2
- package/Icon/index.tsx +7 -2
- package/Icon/types.ts +1 -1
- package/IconButton/index.tsx +0 -1
- package/Input/Input.tsx +26 -7
- package/Input/InputDropDown.tsx +1 -6
- package/Input/InputMoney.tsx +14 -6
- package/Input/InputOTP.tsx +12 -9
- package/Input/InputSearch.tsx +8 -12
- package/Input/InputTextArea.tsx +4 -6
- package/Input/common.tsx +5 -3
- package/Input/index.tsx +2 -6
- package/Input/styles.ts +1 -3
- package/Layout/Card.tsx +8 -9
- package/Layout/Item.tsx +0 -1
- package/Layout/ItemList.tsx +39 -33
- package/Layout/Screen.tsx +1 -3
- package/Layout/Section.tsx +4 -4
- package/Pagination/PaginationNumber.tsx +1 -1
- package/Pagination/PaginationScroll.tsx +0 -1
- package/Popup/PopupNotify.tsx +28 -32
- package/Popup/PopupPromotion.tsx +24 -28
- package/Radio/index.tsx +1 -2
- package/Skeleton/index.tsx +1 -1
- package/Switch/index.tsx +0 -1
- package/Tag/index.tsx +2 -4
- package/Text/index.tsx +2 -2
- package/Text/styles.ts +38 -0
- package/Text/types.ts +18 -24
- package/Title/index.tsx +2 -2
- package/package.json +2 -2
- package/publish.sh +1 -1
- package/verify.js +37 -39
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, {useEffect, useRef, useState} from 'react';
|
|
1
|
+
import React, {useContext, useEffect, useRef, useState} from 'react';
|
|
2
2
|
import {BottomSheetModalProvider} from '@gorhom/bottom-sheet';
|
|
3
3
|
import {SafeAreaProvider} from 'react-native-safe-area-context';
|
|
4
4
|
import {
|
|
@@ -6,13 +6,13 @@ import {
|
|
|
6
6
|
NavigationContainerRef,
|
|
7
7
|
} from '@react-navigation/native';
|
|
8
8
|
import {createStackNavigator} from '@react-navigation/stack';
|
|
9
|
-
import {DeviceEventEmitter
|
|
9
|
+
import {DeviceEventEmitter} from 'react-native';
|
|
10
10
|
import StackScreen from './StackScreen';
|
|
11
11
|
import ModalScreen from './ModalScreen';
|
|
12
12
|
import Navigator from './Navigator';
|
|
13
13
|
import {getDialogOptions, getModalOptions, getStackOptions} from './utils';
|
|
14
14
|
import {LocalizationObject, NavigationContainerProps} from './types';
|
|
15
|
-
import {ApplicationContext} from './index';
|
|
15
|
+
import {ApplicationContext, MiniAppContext} from './index';
|
|
16
16
|
import kitLocalization from '../Assets/language.json';
|
|
17
17
|
|
|
18
18
|
const Stack = createStackNavigator();
|
|
@@ -23,43 +23,26 @@ const NavigationContainer: React.FC<NavigationContainerProps> = ({
|
|
|
23
23
|
options,
|
|
24
24
|
maxApi,
|
|
25
25
|
localization,
|
|
26
|
-
trackingInfo,
|
|
27
26
|
}) => {
|
|
27
|
+
const context = useContext(MiniAppContext);
|
|
28
28
|
const navigationRef = React.useRef<NavigationContainerRef>(null);
|
|
29
29
|
const navigator = useRef(new Navigator(navigationRef));
|
|
30
30
|
const [showGrid, setShowGrid] = useState(false);
|
|
31
|
-
const
|
|
32
|
-
const [config, setConfig] = useState<any>(undefined);
|
|
33
|
-
let assets = theme.assets;
|
|
34
|
-
if (config && theme.assets?.headerBackground) {
|
|
35
|
-
assets = {...assets, headerBackground: config.navigationBar?.headerBar};
|
|
36
|
-
}
|
|
31
|
+
const config = useRef<any>();
|
|
37
32
|
|
|
38
33
|
/**
|
|
39
34
|
* handle mini language & listen change
|
|
40
35
|
* engine only shake to enable grid view
|
|
41
36
|
*/
|
|
42
37
|
useEffect(() => {
|
|
43
|
-
maxApi?.getLanguage?.((lang: 'vi' | 'en') => {
|
|
44
|
-
setLanguage(lang);
|
|
45
|
-
});
|
|
46
|
-
const listener = maxApi?.observer?.('language', (lang: 'vi' | 'en') => {
|
|
47
|
-
setLanguage(lang);
|
|
48
|
-
});
|
|
49
38
|
const subscription = DeviceEventEmitter.addListener(
|
|
50
39
|
'onChangeGrid',
|
|
51
40
|
enable => {
|
|
52
41
|
setShowGrid(!!enable);
|
|
53
42
|
},
|
|
54
43
|
);
|
|
55
|
-
|
|
56
|
-
const result = JSON.parse(
|
|
57
|
-
NativeModules?.ConfigsModule?.getConfigSync?.('DESIGN_SYSTEM'),
|
|
58
|
-
);
|
|
59
|
-
setConfig(result);
|
|
60
|
-
} catch (e) {}
|
|
44
|
+
|
|
61
45
|
return () => {
|
|
62
|
-
listener?.remove?.();
|
|
63
46
|
subscription?.remove?.();
|
|
64
47
|
};
|
|
65
48
|
}, []);
|
|
@@ -68,13 +51,13 @@ const NavigationContainer: React.FC<NavigationContainerProps> = ({
|
|
|
68
51
|
* inject data for navigator
|
|
69
52
|
*/
|
|
70
53
|
navigator.current.maxApi = maxApi;
|
|
71
|
-
navigator.current.trackingInfo = trackingInfo;
|
|
72
54
|
|
|
73
55
|
/**
|
|
74
56
|
* translate
|
|
75
57
|
* @param key
|
|
76
58
|
*/
|
|
77
59
|
const translate = (key: string) => {
|
|
60
|
+
const language: 'vi' | 'en' = context?.language ?? 'vi';
|
|
78
61
|
const mergedLocalization: LocalizationObject = {
|
|
79
62
|
vi: {...localization?.vi, ...kitLocalization.vi},
|
|
80
63
|
en: {...localization?.en, ...kitLocalization.en},
|
|
@@ -87,14 +70,10 @@ const NavigationContainer: React.FC<NavigationContainerProps> = ({
|
|
|
87
70
|
<BottomSheetModalProvider>
|
|
88
71
|
<ApplicationContext.Provider
|
|
89
72
|
value={{
|
|
90
|
-
theme: {
|
|
91
|
-
...theme,
|
|
92
|
-
assets: assets,
|
|
93
|
-
},
|
|
94
73
|
navigator: navigator.current,
|
|
74
|
+
config: config.current,
|
|
75
|
+
theme,
|
|
95
76
|
showGrid,
|
|
96
|
-
language,
|
|
97
|
-
config,
|
|
98
77
|
translate,
|
|
99
78
|
}}>
|
|
100
79
|
<ReactNavigationContainer
|
package/Application/Navigator.ts
CHANGED
|
@@ -4,15 +4,14 @@ import {
|
|
|
4
4
|
HeaderToolkitProps,
|
|
5
5
|
ModalParams,
|
|
6
6
|
ScreenParams,
|
|
7
|
-
TrackingInfo,
|
|
8
7
|
} from './types';
|
|
9
8
|
|
|
10
9
|
class Navigator {
|
|
11
10
|
ref?: any;
|
|
12
11
|
toolkitConfig?: HeaderToolkitProps;
|
|
13
12
|
maxApi?: any;
|
|
14
|
-
trackingInfo?: TrackingInfo;
|
|
15
13
|
dismissData?: any;
|
|
14
|
+
toolkitCallback?: (item: any) => void;
|
|
16
15
|
|
|
17
16
|
constructor(navigation: any) {
|
|
18
17
|
this.ref = navigation;
|
|
@@ -111,15 +110,21 @@ class Navigator {
|
|
|
111
110
|
};
|
|
112
111
|
|
|
113
112
|
/**
|
|
114
|
-
*
|
|
115
|
-
* @param
|
|
116
|
-
|
|
113
|
+
* dismiss a feature data
|
|
114
|
+
* @param data
|
|
115
|
+
*/
|
|
116
|
+
setDismissData = (data: any) => {
|
|
117
|
+
this.dismissData = data;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* set callback function for toolkit
|
|
117
122
|
* @param callback
|
|
118
123
|
*/
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
124
|
+
setToolkitCallback = (
|
|
125
|
+
callback: (item: {key: string; action: string}) => void,
|
|
126
|
+
) => {
|
|
127
|
+
this.toolkitCallback = callback;
|
|
123
128
|
};
|
|
124
129
|
}
|
|
125
130
|
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import React, {useContext, useEffect, useLayoutEffect} from 'react';
|
|
2
2
|
import {ScreenParams} from './types';
|
|
3
3
|
import Navigation from './Navigation';
|
|
4
|
-
import {ApplicationContext} from './index';
|
|
4
|
+
import {ApplicationContext, MiniAppContext} from './index';
|
|
5
5
|
import {GridSystem} from '../Layout';
|
|
6
6
|
import {useHeaderHeight} from '@react-navigation/stack';
|
|
7
7
|
|
|
8
8
|
const StackScreen: React.FC<ScreenParams> = props => {
|
|
9
|
-
const {screen: Component, options}: ScreenParams = props.route.params;
|
|
10
9
|
const {theme, showGrid, navigator} = useContext(ApplicationContext);
|
|
10
|
+
const context = useContext(MiniAppContext);
|
|
11
|
+
|
|
12
|
+
const {screen: Component, options}: ScreenParams = props.route.params;
|
|
11
13
|
const navigation = new Navigation(props.navigation, theme);
|
|
12
14
|
const heightHeader = useHeaderHeight();
|
|
13
15
|
|
|
@@ -31,36 +33,31 @@ const StackScreen: React.FC<ScreenParams> = props => {
|
|
|
31
33
|
* tracking for screen
|
|
32
34
|
*/
|
|
33
35
|
useEffect(() => {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
const tracking = {
|
|
37
|
+
...context,
|
|
38
|
+
screen_name: Component.name,
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const routes = props.navigation.getState()?.routes || [];
|
|
42
|
+
const routesLength = routes.length;
|
|
43
|
+
let pre_screen_name = '';
|
|
44
|
+
if (routesLength > 1) {
|
|
45
|
+
pre_screen_name = routes[routesLength - 2]?.params?.screen?.name;
|
|
46
|
+
}
|
|
42
47
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
48
|
+
navigator?.maxApi?.trackEvent?.('service_frame_displayed', {
|
|
49
|
+
...tracking,
|
|
50
|
+
pre_screen_name,
|
|
51
|
+
trigger_id: '111378000000000000',
|
|
52
|
+
});
|
|
49
53
|
|
|
50
|
-
|
|
54
|
+
return props.navigation.addListener('beforeRemove', () => {
|
|
55
|
+
navigator?.maxApi?.trackEvent?.('service_icon_clicked', {
|
|
51
56
|
...tracking,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
return props.navigation.addListener('beforeRemove', () => {
|
|
57
|
-
navigator?.maxApi?.trackEvent?.('service_icon_clicked', {
|
|
58
|
-
...tracking,
|
|
59
|
-
trigger_id: '111154000000000000',
|
|
60
|
-
icon_name: 'back',
|
|
61
|
-
});
|
|
57
|
+
trigger_id: '111154000000000000',
|
|
58
|
+
icon_name: 'back',
|
|
62
59
|
});
|
|
63
|
-
}
|
|
60
|
+
});
|
|
64
61
|
}, []);
|
|
65
62
|
|
|
66
63
|
return (
|
package/Application/index.ts
CHANGED
|
@@ -13,12 +13,21 @@ import {
|
|
|
13
13
|
import BottomTab from './BottomTab';
|
|
14
14
|
import {createContext} from 'react';
|
|
15
15
|
import {defaultContext} from '../Consts';
|
|
16
|
+
import {MiniAppInfo} from './types';
|
|
16
17
|
|
|
17
18
|
const ApplicationContext = createContext(defaultContext);
|
|
19
|
+
const MiniAppContext = createContext<MiniAppInfo>({
|
|
20
|
+
appId: '',
|
|
21
|
+
buildNumber: 0,
|
|
22
|
+
code: '',
|
|
23
|
+
toolkitConfig: {},
|
|
24
|
+
fromCode: '',
|
|
25
|
+
});
|
|
18
26
|
|
|
19
27
|
export {
|
|
20
|
-
NavigationContainer,
|
|
21
28
|
ApplicationContext,
|
|
29
|
+
MiniAppContext,
|
|
30
|
+
NavigationContainer,
|
|
22
31
|
Screen,
|
|
23
32
|
BottomTab,
|
|
24
33
|
NavigationButton,
|
package/Application/types.ts
CHANGED
|
@@ -67,10 +67,19 @@ export type Context = {
|
|
|
67
67
|
theme: Theme;
|
|
68
68
|
navigator?: Navigator;
|
|
69
69
|
showGrid?: boolean;
|
|
70
|
-
language?: 'vi' | 'en';
|
|
71
70
|
translate?: (key: string) => string;
|
|
72
71
|
};
|
|
73
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
|
+
|
|
74
83
|
export type LocalizationObject = {
|
|
75
84
|
vi: {
|
|
76
85
|
[key: string]: string;
|
|
@@ -80,21 +89,12 @@ export type LocalizationObject = {
|
|
|
80
89
|
};
|
|
81
90
|
};
|
|
82
91
|
|
|
83
|
-
export type TrackingInfo = {
|
|
84
|
-
[key: string]: any;
|
|
85
|
-
code: string;
|
|
86
|
-
appId: string;
|
|
87
|
-
buildNumber: number;
|
|
88
|
-
flowPartnerId?: string;
|
|
89
|
-
};
|
|
90
|
-
|
|
91
92
|
export type NavigationContainerProps = {
|
|
92
93
|
screen: Screen;
|
|
93
94
|
options?: NavigationOptions;
|
|
94
95
|
theme: Theme;
|
|
95
96
|
maxApi: any;
|
|
96
97
|
localization?: LocalizationObject;
|
|
97
|
-
trackingInfo?: TrackingInfo;
|
|
98
98
|
};
|
|
99
99
|
|
|
100
100
|
export type NavigationScreenProps = {
|
|
@@ -127,9 +127,20 @@ export type NavigationButtonProps = {
|
|
|
127
127
|
tintColor?: string;
|
|
128
128
|
useBorder?: boolean;
|
|
129
129
|
onPress: () => void;
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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;
|
|
133
144
|
};
|
|
134
145
|
|
|
135
146
|
export interface NavigationOptions extends StackNavigationOptions {
|
|
@@ -138,12 +149,15 @@ export interface NavigationOptions extends StackNavigationOptions {
|
|
|
138
149
|
surface?: boolean;
|
|
139
150
|
hiddenBack?: boolean;
|
|
140
151
|
customTitle?: TitleCustomProps;
|
|
152
|
+
toolkitParams?: {
|
|
153
|
+
pinnedTool?: PinnedToolType;
|
|
154
|
+
runtimeTools?: RuntimeToolType[];
|
|
155
|
+
};
|
|
141
156
|
}
|
|
142
157
|
|
|
143
158
|
export interface HeaderBackProps extends NavigationButtonProps {
|
|
144
159
|
preventBack?: PopupNotifyProps;
|
|
145
160
|
onPressLeftHeader?: () => void;
|
|
146
|
-
accessibilityLabel?: string;
|
|
147
161
|
}
|
|
148
162
|
|
|
149
163
|
export type HeaderBackgroundProps = {
|
|
@@ -166,9 +180,7 @@ export type TitleCustomProps = {
|
|
|
166
180
|
export type HeaderToolkitProps = {
|
|
167
181
|
[key: string]: any;
|
|
168
182
|
appCode: string;
|
|
169
|
-
|
|
170
|
-
type: string;
|
|
171
|
-
onAction?: (action: string) => void;
|
|
183
|
+
configs: any[];
|
|
172
184
|
};
|
|
173
185
|
|
|
174
186
|
export type HeaderAnimatedProps = {
|
|
@@ -188,6 +200,7 @@ export type BottomTabItemProps = {
|
|
|
188
200
|
};
|
|
189
201
|
|
|
190
202
|
export type BottomTabProps = {
|
|
203
|
+
nested?: boolean;
|
|
191
204
|
tabs: BottomTabItemProps[];
|
|
192
205
|
initialRouteName?: string;
|
|
193
206
|
navigation: Navigation;
|
package/Application/utils.tsx
CHANGED
|
@@ -126,6 +126,20 @@ const getOptions = (params: NavigationOptions, theme: Theme) => {
|
|
|
126
126
|
};
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
+
options = {
|
|
130
|
+
...options,
|
|
131
|
+
headerRight: (props: any) => {
|
|
132
|
+
return (
|
|
133
|
+
<HeaderToolkitAction
|
|
134
|
+
preventBack={params.preventBack}
|
|
135
|
+
pinnedTool={params.toolkitParams?.pinnedTool}
|
|
136
|
+
runtimeTools={params.toolkitParams?.runtimeTools}
|
|
137
|
+
{...props}
|
|
138
|
+
/>
|
|
139
|
+
);
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
|
|
129
143
|
return {
|
|
130
144
|
...params,
|
|
131
145
|
...options,
|
package/Assets/icon.json
CHANGED
|
@@ -801,7 +801,7 @@
|
|
|
801
801
|
"uri": "https://img.mservice.com.vn/app/img/kits/navigation_minus_circle_full.png"
|
|
802
802
|
},
|
|
803
803
|
"navigation_more_horiz": {
|
|
804
|
-
"uri": "
|
|
804
|
+
"uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAgKADAAQAAAABAAAAgAAAAABIjgR3AAAFAklEQVR4Ae2aS4tcRRiGM2rEO14SY7wFURGc+CPEyyYJLnSlaCCKLgSzUNBNRAMSF0LIRhGDBMQQMAQ3Zin+A/VHKOIlTm4aJ5fx+VBCT5Puru9UleOE54OX7nO66n2rnj7dp+ucXrPGkoAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhLoTmCue8JYwNLS0m3s2ooeQXeiJfQj+h59NTc39zuP3Yr89ZhH/mYU+RdQ5H+HIn+Bx25F/u2YR/48ivzzKPK/RUfJP87j5VdM/EH0BTqHJtVZXjiI7mtNAM+H0BF0Hk2qyP8MbeqQ/zC+X6Jp+Yu8fgDd2zp/Rf2Y0E4UcEvrLxq+3GrQeL2OMvlnaL+jYf6b+E078Hl5Wf3J1gut8lfUh4nsWza13Mae2sET92Euclnr3Q3yP1nmmNvYVZu/ov2Z62u5+V6y9UtDJ4FbfPJra3tF/lu14fR/dmj+ivZj4A+gOKfVVnwd3pOdDH3inJ/52p80ztO8sHFA/jz9pp3vJ+WN7z/Jjvjh2KWu6OL6j+l7PKxt4H8NHu8O8InTx1UD+o13uY4d74zvLNh+nzYt+N6Az9sFeYOadFkGcsTewmh+Ri3egJjYGbSOJdLp2JhV5MdS7yfU4g2IuMiN/BjHzCI/vjF+QK34nsBrPfmLM8OTDVoBGo/dwo5Wb354x7fAk/GksGKd3XJu1+P3eGF2NNuGWr354XcTejSetK6WkEbHFhdZWlfGM9O2dJwZz0zbHvmlnk0/JaOhcYWrdWU8M21Lx5nxzLTtkV/q2e0AiMurrSvjmWlbOs6MZ6Ztj/xSz24HQFzbbl0Zz0zb0nFmPDNte+SXenY7AOLGSuvKeGbalo4z45lp2yO/1LPpL9WLoSyDbmTjV3T1xZ11T7LLsJuJ+wW1WomklmHMfx3ZsQy9ErWoY5hsYBl4roXZqEeXVQADPUnI56NBlc8PlK7BI4e2Czwcqswc7f4pnoujO6Y9p20c/IentUm+th/P5m9+cgy55nwK7kZ/oNo6gUH6Uih9NqG4q1dbCxjEfxhSRZ/7UYtL4b/hE99oq68Y+POopi7Q+ZmhM6fvjppw+kb+UxX5r1Tmx72EuKi2eosJ7BoIIeC/UTtzPHZX5O9skL9nYH68+a/W5v8v+jOR59CpBIjjtH261eDx2o7irl5pxdf+4E/++LjxehFlTofHaL913GdVbzOhO9BHKG5vTqo438cfSOJmTtPCcyP6GE07EOPA24vS5/xZg8XzLrQfTTsQ48D7AN06y6/V6y1vWBSNicnFjZ3H0KX+FPp15td2UeBYo3/z48bOZhSXbOOqXVy4ibX7N/9B/rXkPIHmUeSP/ik08s+yz5KABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISuJwI/A2lzL3lHltsxwAAAABJRU5ErkJggg=="
|
|
805
805
|
},
|
|
806
806
|
"navigation_more_vert": {
|
|
807
807
|
"uri": "https://img.mservice.com.vn/app/img/kits/navigation_more_vert.png"
|
|
@@ -822,7 +822,7 @@
|
|
|
822
822
|
"uri": "https://img.mservice.com.vn/app/img/kits/navigation_scan.png"
|
|
823
823
|
},
|
|
824
824
|
"navigation_search": {
|
|
825
|
-
"uri": "
|
|
825
|
+
"uri": "data:image/webp;base64,UklGRqwEAABXRUJQVlA4TKAEAAAvf8AfEDVIchtJkqT6/6fZ21hkukWeZouKkARJtmlbtm3btm3b741sjWzbtm3btm184xkLgiS5cZsGUuXbsJOAoPSD88dlwMVKiDwdxtRJ4UUP+XlwcpVn1A0I4dWOVnEMET7n62avxi24FD4tSyT9AJCpq/YI7oQjYZj3Bp2zU3A/dBDfF0y+bsBMGCK3KTpOwFyoR70h9Nreo+EvXyi7Ye4vmA7TaLcCQy4ohB90NoLaKqiEL1HbwOH84sdyqk+aQC5smHLkKViZWT8vXlACZQ/EfAcXOJa5bPO4uGm51A91wtzix3+w5I88UhfXAw5GL6Rh6Bvcu77smyD4N4okpNkXWIVGSPVXWz7DqyjYN+vEa3yZctrvunwjw9gGSmW3/EXx6ZILFiTM/BYx2FjwRqzabUHmhe1UtXBWS4RTBMW1xt/MLYm5eiGKXqSGnsX3ZwPNaMUsvYMYtGoL/eIymuGauS66JIzSmOMkP4NE9z9GeAdfELGdrxqK0cgj0sqM6Sa/a6NuxI5BCrENnHO763RvvF7jUlV4B8hOY7PHVvq/EQNSCJpHAyS1AQaWs8QZxHGq40oLu9a32IIU5Mc3dx7z76wGipNE0TT28W8WfnHd4hSrhz5MTSKvuW7C9q931W1Cqjo3KK/1Xpxx0ThVVBKTtWVLZhdU/9P8A3OUvIRheXDUmz4AwVFp0fKJsExgwmKUm8BJe26nmggb7XqpWr1t6BK1k7Al0togegyMTiKcCKjv2xwFliaRT7jUWQ3slyZeNnUmAjeTGCdM6wylAzGTqCcc68wGLieRSnjW2QrsjY6sieA6V4Hl0Q1noqx+xM5Xp4NC9hqYbcPXOgJiJ/CzjVmrg2pN5eIsk5YwGiUu4VZmI0E3imGipQtpeqS7Mwqhz7RnhlvFBQTahwu2nArmUGUm4TVMUmKkCRtIMA4jDVIQKpKX2Bov2XGiuQeVl+ahH2HxCD/eGhmpdp/ox2GOV4234PWe6CtUrTMmu9LIaxIkDAqIR75jqOAH4qMhdie299sGnAIaPkDeczWQe8fQNv/F4fAbJLZLZz/U5xQ9DaGDWLMvMq1zLv7mZDl8xMkgiGTU+gbfzDvX0csGFiceYNdAMQ1yyD1zz3AAMsrFdQOtHyCHUcRTb+Q3yBR2z/X7Wp3uxDvS7vj6AAtEu4OTKLAIr2Jg3W/2JsEyXGPrphKwCmds770kKhnewXuzhKITLMMJJ9iXYZX3vdBvlzANg3X4p5wK1CsjLpcfQ96OCV0juBL+6xVIFd2vawEMvEyl2fg+47xrQpIDroZHR1ZNGDJry5VPMBCusXZfjI83cDf2T2JOCxQSdb1VItAwzelXs8e2Vx5ajif5kvHVGvZLGMI9jrH9PWfsmAepWH9mLrH4mrJ2zYNAkLO7fOpjCHHRirfLA5G8In9usCX8x/Zm8zwHOnnhJr1d4E47rx9b24ncI2ARZClMrVFL9t344dKeZb1yBDL6ua+byl1jLl39vktXq8Ty/ET6+NRwHp84H59sXghPT24vhKcnqRfCw9MetPPs9EHyhfDUQKrhx2WS58GBkw030p/3/nUYBw=="
|
|
826
826
|
},
|
|
827
827
|
"navigation_search_add": {
|
|
828
828
|
"uri": "https://img.mservice.com.vn/app/img/kits/navigation_search_add.png"
|
|
@@ -2640,7 +2640,7 @@
|
|
|
2640
2640
|
"uri": "https://img.mservice.io/momo_app_v2/new_version/img/appx_icon/16_navigation_close_circle_full.png"
|
|
2641
2641
|
},
|
|
2642
2642
|
"16_navigation_close_circle": {
|
|
2643
|
-
"uri": "
|
|
2643
|
+
"uri": "data:image/webp;base64,UklGRkICAABXRUJQVlA4TDUCAAAvP8APEM8x//M//wzbRlKcvMws3D1DYBwIAASMF4YAQCHQAAED7AAg8AMYB0DhQCMgGAnwAARuAAHcAABsSCQMYAgFAFIhSQDYtJHKzMzMzB3//2mWbdmahaMVR/QfgiS5cZsB4DskKoXzC7H/FklUBov99fENkd/zoJJwTKqzegmDvEIn5Y706CFQEo3Y0dm9m0AL9yIHNC/CSkLTlvhY5+N50q2XslGo+8lZ5w3HrchshMJhWGStRMGrHm0yFuSOArKtYpyqbhWnjgFvdw84tbF+RSfo1x2rGeX1LBlDS5gpLyPcafAvfvoxK4kC/IM4BnjRsxGzFB/gPZh4g6+tjdnDl+b4S1wAfXYgEQzghIkePM1NYsHDeqZUvYFbk24I4NJbWs9ISFqqG+X5NG/Ch3lZE3/AyZG+zjxAtGvs4/27pid6e//R6A6UkZSOjpBUVebCSzWZ93NNCgE3g441SFVWmQqoJvNB4xhI4pXu5JdkqKHwVtRgnNcQQClNmP4P2kJRU9XghLaMAE8qKgNQpphRijTms2SgspRMGKlI44lkqbKXdBmpSOOuJKhcJXVGKtI4SK4qD0mJEWphHEDkqnwlWcYo3jgrCfTQv6H/Cf1B5HG7+D15UyHLW3zdyDurG+R1i75u0tdtRN9o2/SNAqZv0Pct8r5J37fJ5wbyuYV+biKf22znxpb93Eg+t5LPzeRzO/XeQL63UO9NLve2tXlvW4eU672xOliqe+NywInY/4owAA=="
|
|
2644
2644
|
},
|
|
2645
2645
|
"16_navigation_close": {
|
|
2646
2646
|
"uri": "https://img.mservice.io/momo_app_v2/new_version/img/appx_icon/16_navigation_close.png"
|
|
@@ -3918,7 +3918,7 @@
|
|
|
3918
3918
|
"uri": "https://img.mservice.com.vn/app/img/kits/Phonebook-outline.png"
|
|
3919
3919
|
},
|
|
3920
3920
|
"ic_back": {
|
|
3921
|
-
"uri": "
|
|
3921
|
+
"uri": "data:image/webp;base64,UklGRqIBAABXRUJQVlA4TJYBAAAvX8AXEFVActtIkjT//zRn9WzKYwOJRgQkAADLRtvOtm3btm3b9r1svWzbtm3btu27OHIkN26abK9JbpFIPuE+bAQmFS5c6qcQhrE34CPEZKHr9/kJf0SiUPENfAnNTcj4eH7FaRKiXoGBmyJ4PQILPUGwuwUmtHpgdLFV0RO1461eyDmQ2tsahZYTgY2tGZg54VjcWoabE4aprU1EOaEa3tpHnhOS7q1TNDkhaN66wpQTnKqtOxw5QRVsPeHvLRfSt16J9ZS49UGup/Ctb+o9BW790u/JbeufZU82/jecggWWvy3fnrT8bAX1pORrK7YnKe9byT1RetrKAe2hcqsM7PZwMVEP/h5A/Eb52039I3LfPlL/IUkvkHvA/7q+Lgm+t76u8ikm2/q+cC/37/e1/L5cTGHf1xUH1EX5ui4IqMLv69ID6up4X+AS01se0Ncc0Jcd0Ffm++JgIvxBX9+fS/TnKsHE8O1cqD/XKia+b+Zy/bniAXPRZlAd5ZjmA+bS1WDq51MVI+R2A4tKRx51UL6PD3EB"
|
|
3922
3922
|
},
|
|
3923
3923
|
"share": {
|
|
3924
3924
|
"uri": "https://img.mservice.com.vn/app/img/mini-app-center/share.png"
|
|
@@ -3936,7 +3936,7 @@
|
|
|
3936
3936
|
"uri": "https://img.mservice.com.vn/app/img/kits/error_mess_icon.png"
|
|
3937
3937
|
},
|
|
3938
3938
|
"media_fail": {
|
|
3939
|
-
"uri": "
|
|
3939
|
+
"uri": "data:image/png;base64,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"
|
|
3940
3940
|
},
|
|
3941
3941
|
"ic_checked": {
|
|
3942
3942
|
"uri": "https://img.mservice.com.vn/app/img/kits/checked_ic.png"
|
|
@@ -3949,5 +3949,83 @@
|
|
|
3949
3949
|
},
|
|
3950
3950
|
"ic_money_bag": {
|
|
3951
3951
|
"uri": "https://static.momocdn.net/app/img/kits/ic_money_bag.png"
|
|
3952
|
+
},
|
|
3953
|
+
"basic_flaged": {
|
|
3954
|
+
"uri": "https://static.momocdn.net/app/img/kits/basic_flaged.png"
|
|
3955
|
+
},
|
|
3956
|
+
"basic_user": {
|
|
3957
|
+
"uri": "https://static.momocdn.net/app/img/kits/basic_user.png"
|
|
3958
|
+
},
|
|
3959
|
+
"media_player_play_not": {
|
|
3960
|
+
"uri": "https://static.momocdn.net/app/img/kits/media_player_play_not.png"
|
|
3961
|
+
},
|
|
3962
|
+
"navigation_AR": {
|
|
3963
|
+
"uri": "https://static.momocdn.net/app/img/kits/navigation_AR.png"
|
|
3964
|
+
},
|
|
3965
|
+
"navigation_scan_barcode": {
|
|
3966
|
+
"uri": "https://static.momocdn.net/app/img/kits/navigation_scan_barcode.png"
|
|
3967
|
+
},
|
|
3968
|
+
"notifications_follow": {
|
|
3969
|
+
"uri": "https://static.momocdn.net/app/img/kits/notifications_follow.png"
|
|
3970
|
+
},
|
|
3971
|
+
"notifications_followed": {
|
|
3972
|
+
"uri": "https://static.momocdn.net/app/img/kits/notifications_followed.png"
|
|
3973
|
+
},
|
|
3974
|
+
"notifications_unfollow": {
|
|
3975
|
+
"uri": "https://static.momocdn.net/app/img/kits/notifications_unfollow.png"
|
|
3976
|
+
},
|
|
3977
|
+
"reaction_disliked": {
|
|
3978
|
+
"uri": "https://static.momocdn.net/app/img/kits/reaction_disliked.png"
|
|
3979
|
+
},
|
|
3980
|
+
"reaction_liked": {
|
|
3981
|
+
"uri": "https://static.momocdn.net/app/img/kits/reaction_liked.png"
|
|
3982
|
+
},
|
|
3983
|
+
"travel_247": {
|
|
3984
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_247.png"
|
|
3985
|
+
},
|
|
3986
|
+
"travel_children_area": {
|
|
3987
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_children_area.png"
|
|
3988
|
+
},
|
|
3989
|
+
"travel_cooker": {
|
|
3990
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_cooker.png"
|
|
3991
|
+
},
|
|
3992
|
+
"travel_dishwasher": {
|
|
3993
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_dishwasher.png"
|
|
3994
|
+
},
|
|
3995
|
+
"travel_electronic_stove": {
|
|
3996
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_electronic_stove.png"
|
|
3997
|
+
},
|
|
3998
|
+
"travel_friend_group": {
|
|
3999
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_friend_group.png"
|
|
4000
|
+
},
|
|
4001
|
+
"travel_gas_stove": {
|
|
4002
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_gas_stove.png"
|
|
4003
|
+
},
|
|
4004
|
+
"travel_kid_area": {
|
|
4005
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_kid_area.png"
|
|
4006
|
+
},
|
|
4007
|
+
"travel_led_Light": {
|
|
4008
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_led_Light.png"
|
|
4009
|
+
},
|
|
4010
|
+
"travel_light": {
|
|
4011
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_light.png"
|
|
4012
|
+
},
|
|
4013
|
+
"travel_music": {
|
|
4014
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_music.png"
|
|
4015
|
+
},
|
|
4016
|
+
"travel_outdoor_table": {
|
|
4017
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_outdoor_table.png"
|
|
4018
|
+
},
|
|
4019
|
+
"travel_private_room": {
|
|
4020
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_private_room.png"
|
|
4021
|
+
},
|
|
4022
|
+
"travel_romantic": {
|
|
4023
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_romantic.png"
|
|
4024
|
+
},
|
|
4025
|
+
"travel_smoking": {
|
|
4026
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_smoking.png"
|
|
4027
|
+
},
|
|
4028
|
+
"travel_suitcase": {
|
|
4029
|
+
"uri": "https://static.momocdn.net/app/img/kits/travel_suitcase.png"
|
|
3952
4030
|
}
|
|
3953
4031
|
}
|