@momo-kits/native-kits 0.167.1-duo.5-debug → 0.167.1-duo.6

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 (167) hide show
  1. package/CLAUDE.md +8 -3
  2. package/ios/Application/HeaderRight.swift +25 -12
  3. package/ios/Application/Layout/ScreenLayout.swift +196 -0
  4. package/ios/Application/Navigation/BottomTab/BottomTab.swift +30 -9
  5. package/ios/Application/Navigation/BottomTab/BottomTabBar.swift +5 -2
  6. package/ios/Application/Navigation/BottomTab/DuoTabBar.swift +275 -0
  7. package/ios/Application/Navigation/HeaderUser.swift +4 -1
  8. package/ios/Application/Navigation/NavigationContainer.swift +3 -0
  9. package/ios/Application/Navigation/Overplay/BottomSheet.swift +41 -4
  10. package/ios/Application/Navigation/Overplay/ModalScreen.swift +5 -1
  11. package/ios/Application/Navigation/component/DuoScrollGradient.swift +55 -0
  12. package/ios/Application/Navigation/component/Header.swift +9 -3
  13. package/ios/Application/Navigation/component/HeaderBackground.swift +3 -2
  14. package/ios/Application/Navigation/component/NavigationFooter.swift +1 -1
  15. package/ios/Application/Navigation/component/NavigationHeaderRight.swift +61 -9
  16. package/ios/Application/Navigation/component/SideBar.swift +155 -0
  17. package/ios/Application/StackScreen.swift +135 -18
  18. package/ios/Popup/PopupDisplay.swift +84 -68
  19. package/ios/Popup/PopupLayout.swift +45 -0
  20. package/ios/Popup/PopupNotify.swift +43 -32
  21. package/ios/Popup/PopupPromotion.swift +17 -5
  22. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/DuoTabDemo.swift +76 -0
  23. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/Home.swift +1 -0
  24. package/ios-demo/Sources/MoMoUIKitsDemo/SampleDemos/IPhoneDuoDemo.swift +170 -0
  25. package/package.json +1 -1
  26. package/build.gradle.kts +0 -11
  27. package/compose/build.gradle.kts +0 -190
  28. package/compose/build.gradle.kts.backup +0 -190
  29. package/compose/compose.podspec +0 -47
  30. package/compose/src/androidMain/kotlin/vn/momo/kits/const/HostFont.android.kt +0 -19
  31. package/compose/src/androidMain/kotlin/vn/momo/kits/navigation/ScrollToTop.android.kt +0 -6
  32. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/BackGesture.android.kt +0 -12
  33. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/OsFontScale.android.kt +0 -7
  34. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +0 -151
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +0 -52
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +0 -124
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +0 -183
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +0 -207
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +0 -39
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +0 -86
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +0 -76
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +0 -76
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +0 -293
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +0 -33
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +0 -831
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Localize.kt +0 -269
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +0 -110
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +0 -378
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/application/WidgetContainer.kt +0 -56
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +0 -69
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +0 -157
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +0 -82
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +0 -32
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +0 -338
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BaselineView.kt +0 -175
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +0 -356
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +0 -113
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +0 -89
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +0 -128
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +0 -209
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +0 -542
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +0 -49
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +0 -76
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +0 -125
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +0 -231
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +0 -189
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +0 -475
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +0 -114
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +0 -266
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +0 -240
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +0 -223
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +0 -264
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +0 -185
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +0 -343
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +0 -108
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +0 -56
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +0 -41
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +0 -84
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +0 -40
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +0 -334
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +0 -98
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +0 -310
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +0 -59
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +0 -87
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +0 -21
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +0 -90
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +0 -323
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +0 -220
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +0 -473
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +0 -122
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +0 -199
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +0 -91
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +0 -552
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +0 -88
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +0 -125
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +0 -207
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +0 -498
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +0 -176
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +0 -182
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +0 -193
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +0 -29
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +0 -234
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +0 -188
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +0 -325
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/const/HostFont.kt +0 -16
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/const/KitDesignSystem.kt +0 -18
  107. package/compose/src/commonMain/kotlin/vn/momo/kits/const/KitFontScale.kt +0 -22
  108. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +0 -12
  109. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +0 -16
  110. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +0 -188
  111. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +0 -297
  112. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +0 -54
  113. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +0 -50
  114. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/ScreenLayout.kt +0 -157
  115. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +0 -41
  116. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +0 -52
  117. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +0 -66
  118. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +0 -11
  119. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +0 -104
  120. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +0 -48
  121. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +0 -51
  122. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +0 -299
  123. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/HostBackGestureBridge.kt +0 -58
  124. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +0 -129
  125. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +0 -106
  126. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +0 -205
  127. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +0 -393
  128. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ScrollToTop.kt +0 -8
  129. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +0 -622
  130. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackTransition.kt +0 -148
  131. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/SwipeBackHaptic.kt +0 -35
  132. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +0 -175
  133. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +0 -232
  134. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +0 -86
  135. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +0 -169
  136. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +0 -381
  137. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +0 -83
  138. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderJourney.kt +0 -105
  139. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderLocation.kt +0 -74
  140. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +0 -347
  141. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +0 -37
  142. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +0 -363
  143. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SideBar.kt +0 -169
  144. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +0 -132
  145. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +0 -127
  146. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/BackGesture.kt +0 -12
  147. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/ComposeLottieAnimation.kt +0 -91
  148. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/OsFontScale.kt +0 -9
  149. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +0 -71
  150. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +0 -1329
  151. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +0 -55
  152. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Tracking.kt +0 -15
  153. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +0 -118
  154. package/compose/src/iosMain/kotlin/vn/momo/kits/const/HostFont.ios.kt +0 -40
  155. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/HostBackGesture.ios.kt +0 -45
  156. package/compose/src/iosMain/kotlin/vn/momo/kits/navigation/ScrollToTop.ios.kt +0 -32
  157. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/BackGesture.ios.kt +0 -38
  158. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/OsFontScale.ios.kt +0 -66
  159. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +0 -213
  160. package/gradle/libs.versions.toml +0 -69
  161. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  162. package/gradle/wrapper/gradle-wrapper.properties +0 -8
  163. package/gradle.properties +0 -26
  164. package/gradlew +0 -252
  165. package/gradlew.bat +0 -94
  166. package/ios-demo/README.md +0 -120
  167. package/settings.gradle.kts +0 -64
@@ -1,127 +0,0 @@
1
- package vn.momo.kits.navigation.tracking
2
-
3
- import vn.momo.kits.application.MiniAppContext
4
- import vn.momo.maxapi.IMaxApi
5
- import kotlin.time.Clock
6
- import kotlin.time.ExperimentalTime
7
-
8
- class ScreenTrackingState {
9
- @OptIn(ExperimentalTime::class)
10
- var time: Long = Clock.System.now().toEpochMilliseconds()
11
- var releaseNavigated: Boolean = false
12
- var releaseLoad: Boolean = false
13
- var releaseInteraction: Boolean = false
14
- var previousScreenName: String? = null
15
- var action: String = "push"
16
- }
17
-
18
- object ScreenTracker {
19
-
20
- private var lastScreenName: String? = null
21
-
22
- fun trackScreenNavigated(
23
- maxApi: IMaxApi?,
24
- context: MiniAppContext?,
25
- screenName: String,
26
- action: String,
27
- state: ScreenTrackingState
28
- ) {
29
- if (state.releaseNavigated) return
30
-
31
- val previousScreen = lastScreenName
32
- lastScreenName = screenName
33
-
34
- maxApi?.track(
35
- eventName = "auto_screen_navigated",
36
- params = buildBaseParams(context, screenName).apply {
37
- put("pre_screen_name", previousScreen)
38
- put("state", "navigated")
39
- put("action", action)
40
- }
41
- )
42
-
43
- state.releaseNavigated = true
44
- state.previousScreenName = previousScreen
45
- }
46
-
47
- fun trackScreenDisplayed(
48
- maxApi: IMaxApi?,
49
- context: MiniAppContext?,
50
- screenName: String,
51
- duration: Long,
52
- state: ScreenTrackingState
53
- ) {
54
- if (state.releaseLoad) return
55
-
56
- maxApi?.track(
57
- eventName = "auto_screen_displayed",
58
- params = buildBaseParams(context, screenName).apply {
59
- put("state", "load")
60
- put("duration", duration)
61
- }
62
- )
63
-
64
- state.releaseLoad = true
65
- }
66
-
67
- fun trackScreenInteracted(
68
- maxApi: IMaxApi?,
69
- context: MiniAppContext?,
70
- screenName: String,
71
- duration: Long,
72
- totalDuration: Long,
73
- state: ScreenTrackingState
74
- ) {
75
- if (state.releaseInteraction) return
76
-
77
- maxApi?.track(
78
- eventName = "auto_screen_interacted",
79
- params = buildBaseParams(context, screenName).apply {
80
- put("state", "interaction")
81
- put("duration", duration)
82
- put("total_duration", totalDuration)
83
- }
84
- )
85
-
86
- state.releaseInteraction = true
87
- }
88
-
89
- private fun buildBaseParams(
90
- context: MiniAppContext?,
91
- screenName: String,
92
- componentName: String = "Screen"
93
- ): MutableMap<String, Any?> {
94
- return mutableMapOf(
95
- "app_id" to context?.appId,
96
- "feature_code" to context?.appCode,
97
- "screen_name" to screenName,
98
- "component_name" to componentName,
99
- "tracking_source" to 1
100
- )
101
- }
102
-
103
- fun trackPopupDisplayed(
104
- maxApi: IMaxApi?,
105
- context: MiniAppContext?,
106
- parentScreenName: String?
107
- ) {
108
- maxApi?.track(
109
- eventName = "auto_popup_displayed",
110
- params = mutableMapOf<String, Any?>(
111
- "screen_name" to parentScreenName,
112
- "tracking_source" to 1,
113
- "app_id" to context?.appId,
114
- "feature_code" to context?.appCode,
115
- "kits_version" to null,
116
- "component_name" to "Modal"
117
- )
118
- )
119
- }
120
-
121
- fun getLastScreenName(): String? = lastScreenName
122
-
123
- @Suppress("UNUSED")
124
- fun reset() {
125
- lastScreenName = null
126
- }
127
- }
@@ -1,12 +0,0 @@
1
- package vn.momo.kits.platform
2
-
3
- import androidx.compose.runtime.Composable
4
- import androidx.compose.runtime.State
5
-
6
- /** Fraction of container width, `null` when idle. Observe only — consuming would steal the
7
- * gesture from NavHost. Always `null` on Android. */
8
- @Composable
9
- expect fun rememberBackGestureProgress(): State<Float?>
10
-
11
- /** Android is a no-op: no host-owned recogniser to hand the gesture to. */
12
- expect fun reportFloatingArrowBack(shouldUse: Boolean)
@@ -1,91 +0,0 @@
1
- package vn.momo.kits.platform
2
-
3
- import androidx.compose.foundation.Image
4
- import androidx.compose.foundation.background
5
- import androidx.compose.foundation.layout.Box
6
- import androidx.compose.foundation.layout.fillMaxSize
7
- import androidx.compose.runtime.Composable
8
- import androidx.compose.runtime.LaunchedEffect
9
- import androidx.compose.runtime.getValue
10
- import androidx.compose.runtime.rememberUpdatedState
11
- import androidx.compose.runtime.snapshotFlow
12
- import androidx.compose.ui.Modifier
13
- import androidx.compose.ui.graphics.Color
14
- import io.github.alexzhirkevich.compottie.ExperimentalCompottieApi
15
- import io.github.alexzhirkevich.compottie.LottieCompositionSpec
16
- import io.github.alexzhirkevich.compottie.animateLottieCompositionAsState
17
- import io.github.alexzhirkevich.compottie.dynamic.rememberLottieDynamicProperties
18
- import io.github.alexzhirkevich.compottie.rememberLottieComposition
19
- import io.github.alexzhirkevich.compottie.rememberLottiePainter
20
- import vn.momo.kits.utils.readJson
21
-
22
- @OptIn(ExperimentalCompottieApi::class)
23
- @Composable
24
- internal fun ComposeLottieAnimation(
25
- path: String,
26
- tintColor: Color?,
27
- bgColor: Color?,
28
- iterations: Int,
29
- isPlaying: Boolean,
30
- onEvent: ((String) -> Unit)?,
31
- modifier: Modifier,
32
- ) {
33
- val json = readJson(path)
34
-
35
- if (json.isEmpty()) {
36
- Box(modifier.background(bgColor ?: Color.Transparent))
37
- return
38
- }
39
-
40
- val composition by rememberLottieComposition(json) {
41
- LottieCompositionSpec.JsonString(json)
42
- }
43
-
44
- val dynamicProperties = if (tintColor != null) {
45
- rememberLottieDynamicProperties(tintColor) {
46
- shapeLayer("**") {
47
- fill("**") { color { tintColor } }
48
- stroke("**") { color { tintColor } }
49
- }
50
- }
51
- } else {
52
- null
53
- }
54
-
55
- val lottieState = animateLottieCompositionAsState(
56
- composition = composition,
57
- iterations = iterations,
58
- isPlaying = isPlaying,
59
- restartOnPlay = false,
60
- )
61
-
62
- val currentOnEvent by rememberUpdatedState(onEvent)
63
-
64
- LaunchedEffect(isPlaying) {
65
- currentOnEvent?.invoke(if (isPlaying) LottieEvent.Start else LottieEvent.Pause)
66
- }
67
-
68
- LaunchedEffect(lottieState) {
69
- var armed = false
70
- snapshotFlow { lottieState.isAtEnd }.collect { atEnd ->
71
- if (!atEnd) armed = true
72
- else if (armed) { armed = false; currentOnEvent?.invoke(LottieEvent.Finish) }
73
- }
74
- }
75
-
76
- Box(modifier.background(bgColor ?: Color.Transparent)) {
77
- Image(
78
- painter = rememberLottiePainter(
79
- composition = composition,
80
- progress = lottieState::value,
81
- dynamicProperties = dynamicProperties,
82
- enableExpressions = false,
83
- expressionEngineFactory = { _, _ ->
84
- error("Lottie JS expressions are disabled in MoMo kits")
85
- },
86
- ),
87
- contentDescription = null,
88
- modifier = Modifier.fillMaxSize(),
89
- )
90
- }
91
- }
@@ -1,9 +0,0 @@
1
- package vn.momo.kits.platform
2
-
3
- import androidx.compose.runtime.Composable
4
-
5
- // Overrides LocalDensity.fontScale with the live OS Dynamic Type scale so text re-scales while a
6
- // screen is visible. Wrapped inside the containers so every screen is covered, not just callers of
7
- // the app-level wrappers.
8
- @Composable
9
- expect fun ProvideOsFontScale(content: @Composable () -> Unit)
@@ -1,71 +0,0 @@
1
- package vn.momo.kits.platform
2
-
3
- import androidx.compose.runtime.Composable
4
- import androidx.compose.ui.Modifier
5
- import androidx.compose.ui.graphics.Color
6
- import androidx.compose.ui.graphics.NativePaint
7
- import androidx.compose.ui.unit.Dp
8
- import vn.momo.kits.navigation.Navigator
9
-
10
- data class ScreenDimension(
11
- val width: Int,
12
- val height: Int,
13
- )
14
-
15
- expect fun getPlatformName(): String
16
-
17
- @Composable
18
- expect fun getScreenDimensions(): ScreenDimension
19
-
20
- expect fun NativePaint.setMaskFilter(blurRadius: Float)
21
-
22
- @Composable
23
- expect fun getStatusBarHeight(): Dp
24
-
25
- @Composable
26
- expect fun BackHandler(enabled: Boolean, onBack: () -> Unit)
27
-
28
- @Suppress("ParamsComparedByRef")
29
- @Composable
30
- expect fun ProvideNavigationEventDispatcherOwner(navigator: Navigator, content: @Composable () -> Unit)
31
-
32
- @Composable
33
- expect fun getScreenHeight(): Dp
34
-
35
- sealed interface OSVersion {
36
- val value: Int
37
- data class Android(val sdk: Int) : OSVersion { override val value: Int get() = sdk }
38
- data class IOS(val major: Int) : OSVersion { override val value: Int get() = major }
39
-
40
- operator fun compareTo(other: Int): Int = value.compareTo(other)
41
- }
42
- expect fun getOSVersion(): OSVersion
43
-
44
- fun supportsImePadding(): Boolean = when (val v = getOSVersion()) {
45
- is OSVersion.Android -> v.sdk > 29
46
- is OSVersion.IOS -> true
47
- }
48
- const val LottieIterateForever: Int = Int.MAX_VALUE
49
-
50
- object LottieEvent {
51
- const val Start = "start"
52
- const val Pause = "pause"
53
- const val Finish = "finish"
54
- }
55
-
56
- @Composable
57
- expect fun LottieAnimation(
58
- path: String,
59
- tintColor: Color? = null,
60
- bgColor: Color? = null,
61
- placedAsOverlay: Boolean = false,
62
- iterations: Int = LottieIterateForever,
63
- isPlaying: Boolean = true,
64
- onEvent: ((String) -> Unit)? = null,
65
- modifier: Modifier = Modifier,
66
- useCompose: Boolean = false
67
- )
68
-
69
- expect fun NativePaint.setColor(
70
- color: Color = Color.Black
71
- )