@momo-kits/native-kits 0.154.1-beta.7 → 0.154.1-beta.8

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.
@@ -0,0 +1,107 @@
1
+ package vn.momo.kits.application
2
+
3
+ import androidx.compose.runtime.Immutable
4
+ import androidx.compose.runtime.staticCompositionLocalOf
5
+ import vn.momo.kits.components.TrustBannerData
6
+
7
+
8
+ private fun Map<String, Any?>?.string(key: String): String? =
9
+ (this?.get(key) as? String)
10
+
11
+ @Suppress("UNCHECKED_CAST")
12
+ private fun Map<String, Any?>?.mapStringAny(key: String): Map<String, Any?> =
13
+ (this?.get(key) as? Map<String, Any?>) ?: emptyMap()
14
+
15
+ @Suppress("UNCHECKED_CAST")
16
+ private fun Map<String, Any?>?.listOfMapStringAny(key: String): List<Map<String, Any>> =
17
+ (this?.get(key) as? List<Map<String, Any>>) ?: emptyList()
18
+
19
+ @Immutable
20
+ data class FeatureFlags(
21
+ val showBaseLineDebug: Boolean? = false,
22
+ )
23
+
24
+ @Immutable
25
+ data class KitConfig(
26
+ val trustBanner: TrustBannerData? = null,
27
+ val headerBar: String? = null,
28
+ val headerGradient: String? = null,
29
+ )
30
+
31
+ @Immutable
32
+ data class MiniAppContext(
33
+ val appIcon: String = "",
34
+ val appName: Any? = null,
35
+ val appId: String = "",
36
+ val appCode: String = "",
37
+ val description: Any? = null,
38
+ val support: Map<String, Any?> = emptyMap(),
39
+ val toolkitConfig: Map<String, Any?> = emptyMap(),
40
+ val providerId: String = "",
41
+ val permissions: List<Map<String, Any>>? = emptyList(),
42
+ val features: FeatureFlags? = null,
43
+ ) {
44
+ companion object {
45
+ private const val KEY_ICON = "icon"
46
+ private const val KEY_NAME = "name"
47
+ private const val KEY_APP_ID = "appId"
48
+ private const val KEY_CODE = "code"
49
+ private const val KEY_DESCRIPTION = "description"
50
+ private const val KEY_SUPPORT = "support"
51
+ private const val KEY_TOOLKIT_CFG = "toolkitConfig"
52
+ private const val KEY_PERMISSIONS = "permissions"
53
+ private const val KEY_ORIGIN_APP = "originAppId"
54
+
55
+ fun toMap(context: MiniAppContext?): Map<String, Any?> = mapOf(
56
+ "icon" to (context?.appIcon ?: ""),
57
+ "name" to context?.appName,
58
+ "appId" to (context?.appId ?: ""),
59
+ "code" to (context?.appCode ?: ""),
60
+ "description" to (context?.description ?: ""),
61
+ "support" to (context?.support ?: emptyMap()),
62
+ "toolkitConfig" to (context?.toolkitConfig ?: emptyMap()),
63
+ "providerId" to (context?.providerId ?: ""),
64
+ "permissions" to (context?.permissions ?: emptyList()),
65
+ )
66
+
67
+ fun fromMap(data: Map<String, Any?>?): MiniAppContext = MiniAppContext(
68
+ appIcon = data.string(KEY_ICON) ?: "",
69
+ appName = data?.get(KEY_NAME),
70
+ appId = data.string(KEY_APP_ID) ?: "",
71
+ appCode = data.string(KEY_CODE) ?: "",
72
+ description = data?.get(KEY_DESCRIPTION),
73
+ support = data.mapStringAny(KEY_SUPPORT),
74
+ toolkitConfig = data.mapStringAny(KEY_TOOLKIT_CFG),
75
+ providerId = computeProviderId(
76
+ originAppId = data.string(KEY_ORIGIN_APP),
77
+ appId = data.string(KEY_APP_ID)
78
+ ),
79
+ permissions = data.listOfMapStringAny(KEY_PERMISSIONS),
80
+ )
81
+
82
+ private fun computeProviderId(originAppId: String?, appId: String?): String {
83
+ val id = when {
84
+ !originAppId.isNullOrBlank() -> originAppId
85
+ !appId.isNullOrBlank() -> appId
86
+ else -> null
87
+ } ?: return "unknown"
88
+
89
+ val parts = id.split('.')
90
+ return parts.getOrNull(1) ?: "unknown"
91
+ }
92
+ }
93
+ }
94
+
95
+ val ApplicationContext = staticCompositionLocalOf<MiniAppContext?> {
96
+ null
97
+ }
98
+
99
+ val AppConfig = staticCompositionLocalOf<KitConfig?> {
100
+ null
101
+ }
102
+
103
+ val AppLanguage = staticCompositionLocalOf<String?> {
104
+ null
105
+ }
106
+
107
+ internal val ScaleSizeMaxRate = staticCompositionLocalOf<Float?> { null }
@@ -32,6 +32,7 @@ import vn.momo.kits.components.DotSize
32
32
  import vn.momo.kits.components.Icon
33
33
  import vn.momo.kits.const.AppTheme
34
34
  import vn.momo.kits.const.Colors
35
+ import vn.momo.kits.const.Spacing
35
36
 
36
37
  @Stable
37
38
  data class HeaderRightData(
@@ -77,11 +78,7 @@ data class NavigationButtonConfig(
77
78
  val onPress: () -> Unit
78
79
  )
79
80
 
80
- object Spacing {
81
- val M = 16.dp
82
- val S = 8.dp
83
- val XXS = 2.dp
84
- }
81
+
85
82
 
86
83
  @Deprecated("Use vn.momo.kits.navigation.component.HeaderRight instead", ReplaceWith("vn.momo.kits.navigation.component.HeaderRight"))
87
84
  @Composable
@@ -2,7 +2,6 @@ package vn.momo.kits.application
2
2
 
3
3
  import androidx.compose.runtime.Composable
4
4
  import androidx.compose.runtime.CompositionLocalProvider
5
- import androidx.compose.runtime.Immutable
6
5
  import androidx.compose.runtime.LaunchedEffect
7
6
  import androidx.compose.runtime.getValue
8
7
  import androidx.compose.runtime.mutableStateOf
@@ -10,7 +9,6 @@ import androidx.compose.runtime.remember
10
9
  import androidx.compose.runtime.setValue
11
10
  import androidx.compose.runtime.staticCompositionLocalOf
12
11
  import androidx.compose.ui.unit.Dp
13
- import vn.momo.kits.components.TrustBannerData
14
12
  import vn.momo.kits.const.AppStatusBar
15
13
  import vn.momo.kits.const.AppTheme
16
14
  import vn.momo.kits.const.Theme
@@ -64,114 +62,12 @@ class Navigator {
64
62
  }
65
63
  }
66
64
 
67
- @Immutable
68
- data class MiniAppContext(
69
- val appIcon: String = "",
70
- val appName: Any? = null,
71
- val appId: String = "",
72
- val appCode: String = "",
73
- val description: Any? = null,
74
- val support: Map<String, Any?> = emptyMap(),
75
- val toolkitConfig: Map<String, Any?> = emptyMap(),
76
- val providerId: String = "",
77
- val permissions: List<Map<String, Any>>? = emptyList(),
78
- val features: FeatureFlags? = null,
79
- ) {
80
- companion object {
81
- private const val KEY_ICON = "icon"
82
- private const val KEY_NAME = "name"
83
- private const val KEY_APP_ID = "appId"
84
- private const val KEY_CODE = "code"
85
- private const val KEY_DESCRIPTION = "description"
86
- private const val KEY_SUPPORT = "support"
87
- private const val KEY_TOOLKIT_CFG = "toolkitConfig"
88
- private const val KEY_PERMISSIONS = "permissions"
89
- private const val KEY_ORIGIN_APP = "originAppId"
90
-
91
- fun toMap(context: MiniAppContext?): Map<String, Any?> = mapOf(
92
- "icon" to (context?.appIcon ?: ""),
93
- "name" to context?.appName,
94
- "appId" to (context?.appId ?: ""),
95
- "code" to (context?.appCode ?: ""),
96
- "description" to (context?.description ?: ""),
97
- "support" to (context?.support ?: emptyMap()),
98
- "toolkitConfig" to (context?.toolkitConfig ?: emptyMap()),
99
- "providerId" to (context?.providerId ?: ""),
100
- "permissions" to (context?.permissions ?: emptyList()),
101
- )
102
-
103
- fun fromMap(data: Map<String, Any?>?): MiniAppContext = MiniAppContext(
104
- appIcon = data.string(KEY_ICON) ?: "",
105
- appName = data?.get(KEY_NAME),
106
- appId = data.string(KEY_APP_ID) ?: "",
107
- appCode = data.string(KEY_CODE) ?: "",
108
- description = data?.get(KEY_DESCRIPTION),
109
- support = data.mapStringAny(KEY_SUPPORT),
110
- toolkitConfig = data.mapStringAny(KEY_TOOLKIT_CFG),
111
- providerId = computeProviderId(
112
- originAppId = data.string(KEY_ORIGIN_APP),
113
- appId = data.string(KEY_APP_ID)
114
- ),
115
- permissions = data.listOfMapStringAny(KEY_PERMISSIONS),
116
- )
117
-
118
- private fun computeProviderId(originAppId: String?, appId: String?): String {
119
- val id = when {
120
- !originAppId.isNullOrBlank() -> originAppId
121
- !appId.isNullOrBlank() -> appId
122
- else -> null
123
- } ?: return "unknown"
124
-
125
- val parts = id.split('.')
126
- return parts.getOrNull(1) ?: "unknown"
127
- }
128
- }
129
- }
130
65
 
131
- private fun Map<String, Any?>?.string(key: String): String? =
132
- (this?.get(key) as? String)
133
66
 
134
- @Suppress("UNCHECKED_CAST")
135
- private fun Map<String, Any?>?.mapStringAny(key: String): Map<String, Any?> =
136
- (this?.get(key) as? Map<String, Any?>) ?: emptyMap()
137
-
138
- @Suppress("UNCHECKED_CAST")
139
- private fun Map<String, Any?>?.listOfMapStringAny(key: String): List<Map<String, Any>> =
140
- (this?.get(key) as? List<Map<String, Any>>) ?: emptyList()
141
67
 
142
68
  @Deprecated("Use LocalApi instead", ReplaceWith("LocalApi"))
143
69
  val PlatformApi = staticCompositionLocalOf<Any?> { null }
144
70
 
145
- @Deprecated("Use LocalNavigator instead", ReplaceWith("LocalNavigator"))
146
- val AppNavigator = staticCompositionLocalOf<Navigator?> {
147
- null
148
- }
149
-
150
- val ApplicationContext = staticCompositionLocalOf<MiniAppContext?> {
151
- null
152
- }
153
-
154
- val AppConfig = staticCompositionLocalOf<KitConfig?> {
155
- null
156
- }
157
-
158
- val AppLanguage = staticCompositionLocalOf<String?> {
159
- null
160
- }
161
-
162
- @Immutable
163
- data class FeatureFlags(
164
- val showBaseLineDebug: Boolean? = false,
165
- )
166
-
167
- @Immutable
168
- data class KitConfig(
169
- val trustBanner: TrustBannerData? = null,
170
- val headerBar: String? = null,
171
- val headerGradient: String? = null,
172
- )
173
-
174
- internal var DesignSystemWhiteList: Boolean? = null
175
71
 
176
72
  @Deprecated("Use NavigationContainer instead", ReplaceWith("NavigationContainer"))
177
73
  @Composable
@@ -188,7 +84,6 @@ fun ApplicationContainer(
188
84
  var appTheme by remember { mutableStateOf(theme) }
189
85
 
190
86
  LaunchedEffect(Unit) {
191
- DesignSystemWhiteList = isWhiteList
192
87
  try {
193
88
  val headerBar = config?.headerBar
194
89
  if (headerBar != null && appTheme.assets.headerBackground == null) {
@@ -208,7 +103,6 @@ fun ApplicationContainer(
208
103
  CompositionLocalProvider(
209
104
  AppTheme provides appTheme,
210
105
  PlatformApi provides composeApi,
211
- AppNavigator provides Navigator(),
212
106
  AppStatusBar provides appStatusBarHeight,
213
107
  ApplicationContext provides applicationContext,
214
108
  AppConfig provides config,
@@ -2,9 +2,7 @@ package vn.momo.kits.components
2
2
 
3
3
  import androidx.compose.runtime.Composable
4
4
  import androidx.compose.runtime.CompositionLocalProvider
5
- import androidx.compose.runtime.staticCompositionLocalOf
6
-
7
- internal val ScaleSizeMaxRate = staticCompositionLocalOf<Float?> { null }
5
+ import vn.momo.kits.application.ScaleSizeMaxRate
8
6
 
9
7
  @Composable
10
8
  fun ScaleSizeScope(
@@ -17,12 +17,10 @@ import androidx.compose.ui.draw.clip
17
17
  import androidx.compose.ui.graphics.Color
18
18
  import androidx.compose.ui.layout.ContentScale
19
19
  import androidx.compose.ui.unit.dp
20
- import androidx.compose.ui.unit.sp
21
20
  import vn.momo.kits.application.AppConfig
22
21
  import vn.momo.kits.application.AppLanguage
23
- import vn.momo.kits.modifier.noFeedbackClickable
24
- import vn.momo.kits.components.Text
25
22
  import vn.momo.kits.const.Typography
23
+ import vn.momo.kits.modifier.noFeedbackClickable
26
24
 
27
25
  val defaultBanner = TrustBannerData(
28
26
  content = mapOf(
@@ -15,10 +15,8 @@ import androidx.compose.ui.unit.sp
15
15
  import org.jetbrains.compose.resources.Font
16
16
  import org.jetbrains.compose.resources.FontResource
17
17
  import org.jetbrains.compose.resources.InternalResourceApi
18
- import vn.momo.kits.components.ScaleSizeMaxRate
18
+ import vn.momo.kits.application.ScaleSizeMaxRate
19
19
  import vn.momo.kits.platform.getScreenDimensions
20
- import kotlin.math.max
21
- import kotlin.math.min
22
20
  import vn.momo.uikits.resources.Res
23
21
  import vn.momo.uikits.resources.momosignature
24
22
  import vn.momo.uikits.resources.momotrustdisplay
@@ -31,6 +29,8 @@ import vn.momo.uikits.resources.sfprotext_regular
31
29
  import vn.momo.uikits.resources.sfprotext_semibold
32
30
  import vn.momo.uikits.resources.sfprotext_thin
33
31
  import vn.momo.uikits.resources.sfprotext_ultralight
32
+ import kotlin.math.max
33
+ import kotlin.math.min
34
34
 
35
35
  const val DEFAULT_SCREEN_SIZE = 375f
36
36
  const val MAX_FONT_SCALE = 1.5f
@@ -26,11 +26,11 @@ import androidx.compose.ui.graphics.Color
26
26
  import androidx.compose.ui.unit.dp
27
27
  import vn.momo.kits.application.ApplicationContext
28
28
  import vn.momo.kits.application.MiniAppContext
29
- import vn.momo.kits.application.Spacing
30
29
  import vn.momo.kits.components.BadgeDot
31
30
  import vn.momo.kits.components.DotSize
32
31
  import vn.momo.kits.components.Icon
33
32
  import vn.momo.kits.const.Colors
33
+ import vn.momo.kits.const.Spacing
34
34
  import vn.momo.kits.modifier.activeOpacityClickable
35
35
  import vn.momo.kits.navigation.LocalMaxApi
36
36
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@momo-kits/native-kits",
3
- "version": "0.154.1-beta.7",
3
+ "version": "0.154.1-beta.8",
4
4
  "private": false,
5
5
  "dependencies": {
6
6
  "@momo-platform/native-max-api": "1.0.18"