@momo-kits/native-kits 0.163.1-beta.7-debug → 0.163.1-beta.8-debug
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/.claude/settings.local.json +62 -0
- package/compose/build.gradle.kts +2 -1
- package/compose/build.gradle.kts.backup +1 -0
- package/compose/compose.podspec +1 -1
- package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +3 -10
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +11 -9
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +40 -55
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +69 -26
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +17 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +3 -6
- package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +22 -21
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +4 -0
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +19 -40
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +11 -6
- package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +3 -4
- package/gradle/libs.versions.toml +2 -0
- package/gradle.properties +1 -1
- package/ios/Application/ApplicationEnvironment.swift +0 -1
- package/ios/Typography/Text.swift +7 -12
- package/ios/Typography/Typography.swift +9 -14
- package/local.properties +2 -2
- package/package.json +1 -1
- package/example/ios/Example.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
- package/example/ios/Example.xcworkspace/xcuserdata/huynhdung.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/example/ios/Example.xcworkspace/xcuserdata/huynhdung.xcuserdatad/xcschemes/xcschememanagement.plist +0 -5
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/Pods-Example.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/SDWebImage.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/SkeletonUI.xcscheme +0 -58
- package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/xcschememanagement.plist +0 -46
- package/ios/Application/FontScaleStore.swift +0 -59
|
@@ -16,6 +16,10 @@ class Navigation(
|
|
|
16
16
|
val currentOptions: State<NavigationOptions> get() = _options
|
|
17
17
|
val options: NavigationOptions get() = _options.value
|
|
18
18
|
|
|
19
|
+
private val _isBottomTabRoot = mutableStateOf(false)
|
|
20
|
+
internal val isBottomTabRoot: Boolean get() = _isBottomTabRoot.value
|
|
21
|
+
internal fun markAsBottomTabRoot() { _isBottomTabRoot.value = true }
|
|
22
|
+
|
|
19
23
|
fun setOptions(
|
|
20
24
|
onBackHandler: (() -> Unit)? = null,
|
|
21
25
|
hiddenBack: Boolean? = null,
|
|
@@ -22,8 +22,8 @@ fun NavigationContainer(
|
|
|
22
22
|
initialScreen: @Composable () -> Unit,
|
|
23
23
|
options: NavigationOptions? = null,
|
|
24
24
|
initialTheme: Theme = defaultTheme,
|
|
25
|
-
|
|
26
|
-
maxApi: IMaxApi
|
|
25
|
+
miniAppContext: MiniAppContext? = null,
|
|
26
|
+
maxApi: IMaxApi? = null,
|
|
27
27
|
setNavigator: ((Navigator) -> Unit)? = null,
|
|
28
28
|
statusBarHeight: Dp? = null,
|
|
29
29
|
localize: Localize? = null,
|
|
@@ -35,23 +35,24 @@ fun NavigationContainer(
|
|
|
35
35
|
val navigationBarHeight = getNavigationBarHeight()
|
|
36
36
|
|
|
37
37
|
val parentContext = LocalContext.current
|
|
38
|
-
val mergedContext = MiniAppContext.merge(parentContext,
|
|
38
|
+
val mergedContext = MiniAppContext.merge(parentContext, miniAppContext)
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
val theme = remember { mutableStateOf(initialTheme) }
|
|
41
|
+
val fallbackLocalize = remember { Localize() }
|
|
42
|
+
|
|
43
|
+
val resolvedLocalize = localize ?: fallbackLocalize
|
|
44
|
+
|
|
45
|
+
LaunchedEffect(maxApi, resolvedLocalize) {
|
|
42
46
|
val api = maxApi ?: return@LaunchedEffect
|
|
43
47
|
runCatching {
|
|
44
|
-
api.
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
api.getLanguage(callback = { data ->
|
|
49
|
+
if (parseLanguage(data) == Localize.EN) {
|
|
50
|
+
resolvedLocalize.changeLanguage(Localize.EN)
|
|
51
|
+
}
|
|
52
|
+
})
|
|
47
53
|
}
|
|
48
54
|
}
|
|
49
55
|
|
|
50
|
-
val theme = remember { mutableStateOf(initialTheme) }
|
|
51
|
-
|
|
52
|
-
val fallbackLocalize = remember { Localize() }
|
|
53
|
-
val resolvedLocalize = localize ?: fallbackLocalize
|
|
54
|
-
|
|
55
56
|
val screenId = rememberSaveable { registry.nextId() }
|
|
56
57
|
registry.bind(screenId, initialScreenName, initialScreen, options)
|
|
57
58
|
val startDestination = remember(screenId) { DynamicScreenRoute(screenId) }
|
|
@@ -66,7 +67,6 @@ fun NavigationContainer(
|
|
|
66
67
|
AppNavigationBar provides navigationBarHeight,
|
|
67
68
|
LocalContext provides mergedContext,
|
|
68
69
|
LocalLocalize provides resolvedLocalize,
|
|
69
|
-
LocalFontScaleConfig provides (observerFontScaleConfig ?: LocalFontScaleConfig.current),
|
|
70
70
|
) {
|
|
71
71
|
LaunchedEffect(Unit) {
|
|
72
72
|
setNavigator?.invoke(navigator)
|
|
@@ -146,30 +146,9 @@ val LocalMaxApi = staticCompositionLocalOf<IMaxApi?> {
|
|
|
146
146
|
error("No MaxApi provided")
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
private
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
if (
|
|
153
|
-
@Suppress("UNCHECKED_CAST")
|
|
154
|
-
val data = (raw["response"] as? Map<String, Any?>)
|
|
155
|
-
?: (raw["data"] as? Map<String, Any?>)
|
|
156
|
-
?: raw
|
|
157
|
-
if (!data.containsKey("useOSFontScale") && !data.containsKey("userScaleRate")) return null
|
|
158
|
-
val useOS = when (val v = data["useOSFontScale"]) {
|
|
159
|
-
is Boolean -> v
|
|
160
|
-
is String -> v.equals("true", ignoreCase = true)
|
|
161
|
-
is Number -> v.toInt() != 0
|
|
162
|
-
else -> true
|
|
163
|
-
}
|
|
164
|
-
val rate = when (val v = data["userScaleRate"]) {
|
|
165
|
-
is Number -> v.toFloat()
|
|
166
|
-
is String -> v.toFloatOrNull()
|
|
167
|
-
else -> null
|
|
168
|
-
}
|
|
169
|
-
val osScale = when (val v = data["osFontScale"]) {
|
|
170
|
-
is Number -> v.toFloat()
|
|
171
|
-
is String -> v.toFloatOrNull()
|
|
172
|
-
else -> null
|
|
173
|
-
}
|
|
174
|
-
return FontScaleConfig(useOSFontScale = useOS, userScaleRate = rate, osFontScale = osScale)
|
|
149
|
+
private fun parseLanguage(raw: Map<String, Any?>?): String? {
|
|
150
|
+
val code = (raw?.get("response") as? String)?.trim()?.lowercase()
|
|
151
|
+
if (code.isNullOrEmpty()) return null
|
|
152
|
+
return if (code.startsWith(Localize.EN)) Localize.EN else Localize.VI
|
|
175
153
|
}
|
|
154
|
+
|
|
@@ -96,6 +96,8 @@ internal fun StackScreen(
|
|
|
96
96
|
val navigation = remember { Navigation(id = id, bottomTabIndex = bottomTabIndex, initOptions = navigationOptions, registry = screenRegistry) }
|
|
97
97
|
|
|
98
98
|
val options by navigation.currentOptions
|
|
99
|
+
val isBottomTabChild = bottomTabIndex != -1
|
|
100
|
+
val isBottomTabRoot = navigation.isBottomTabRoot
|
|
99
101
|
|
|
100
102
|
// Auto tracking state
|
|
101
103
|
val trackingState = remember {
|
|
@@ -193,7 +195,7 @@ internal fun StackScreen(
|
|
|
193
195
|
}
|
|
194
196
|
|
|
195
197
|
Column(Modifier.zIndex(2f).fillMaxSize()) {
|
|
196
|
-
MainContent(content = content)
|
|
198
|
+
MainContent(content = content, isBottomTab = isBottomTabRoot)
|
|
197
199
|
FooterContent()
|
|
198
200
|
}
|
|
199
201
|
|
|
@@ -201,7 +203,7 @@ internal fun StackScreen(
|
|
|
201
203
|
FloatingContent()
|
|
202
204
|
}
|
|
203
205
|
|
|
204
|
-
OverplayView(
|
|
206
|
+
OverplayView(isBottomTabChild = isBottomTabChild, id = id)
|
|
205
207
|
}
|
|
206
208
|
}
|
|
207
209
|
}
|
|
@@ -213,10 +215,11 @@ internal fun FloatingContent() {
|
|
|
213
215
|
val density = LocalDensity.current
|
|
214
216
|
val footerHeightPx = LocalFooterHeightPx.current
|
|
215
217
|
val scrollState = LocalScrollState.current
|
|
218
|
+
val navigationBar = AppNavigationBar.current
|
|
216
219
|
|
|
217
220
|
val fabProps = options.floatingButtonProps ?: return
|
|
218
221
|
val bottomPadding = fabProps.bottom
|
|
219
|
-
?: (Spacing.M + if (options.footerComponent != null) with(density) { footerHeightPx.intValue.toDp() } else
|
|
222
|
+
?: (Spacing.M + if (options.footerComponent != null) with(density) { footerHeightPx.intValue.toDp() } else navigationBar)
|
|
220
223
|
|
|
221
224
|
FloatingButton(
|
|
222
225
|
scrollPosition = fabProps.scrollState?.value ?: scrollState.value,
|
|
@@ -232,11 +235,12 @@ internal fun FloatingContent() {
|
|
|
232
235
|
}
|
|
233
236
|
|
|
234
237
|
@Composable
|
|
235
|
-
internal fun ColumnScope.MainContent(content: @Composable () -> Unit) {
|
|
238
|
+
internal fun ColumnScope.MainContent(content: @Composable () -> Unit, isBottomTab: Boolean) {
|
|
236
239
|
val options = LocalOptions.current
|
|
237
240
|
val inputSearchType = getInputSearchType(options)
|
|
238
241
|
val density = LocalDensity.current
|
|
239
242
|
val scrollState = LocalScrollState.current
|
|
243
|
+
val navigationBar = AppNavigationBar.current
|
|
240
244
|
|
|
241
245
|
Spacer(
|
|
242
246
|
Modifier.height(
|
|
@@ -260,6 +264,7 @@ internal fun ColumnScope.MainContent(content: @Composable () -> Unit) {
|
|
|
260
264
|
.conditional(options.scrollData.scrollable && options.scrollData.scrollState is ScrollState) {
|
|
261
265
|
verticalScroll(scrollState)
|
|
262
266
|
}
|
|
267
|
+
.padding(bottom = if (options.footerComponent != null || isBottomTab) 0.dp else navigationBar)
|
|
263
268
|
) {
|
|
264
269
|
ScreenContent(content = content)
|
|
265
270
|
}
|
|
@@ -303,12 +308,12 @@ internal fun keyboardSizeState(): State<Dp> {
|
|
|
303
308
|
}
|
|
304
309
|
|
|
305
310
|
@Composable
|
|
306
|
-
internal fun OverplayView(
|
|
311
|
+
internal fun OverplayView(isBottomTabChild: Boolean, id: Int) {
|
|
307
312
|
val overplayType = OverplayComponentRegistry.getOverplayType()
|
|
308
313
|
|
|
309
314
|
if (overplayType != null) {
|
|
310
315
|
Box(Modifier.zIndex(if (overplayType == OverplayComponentType.SNACK_BAR) 3f else 7f).fillMaxSize()) {
|
|
311
|
-
if (
|
|
316
|
+
if (isBottomTabChild) return@Box
|
|
312
317
|
if (OverplayComponentRegistry.currentRootId() != id) return@Box
|
|
313
318
|
OverplayComponentRegistry.OverlayComponent()
|
|
314
319
|
}
|
|
@@ -23,7 +23,6 @@ import vn.momo.kits.navigation.LocalNavigator
|
|
|
23
23
|
import vn.momo.kits.navigation.NavigationOptions
|
|
24
24
|
import vn.momo.kits.navigation.StackScreen
|
|
25
25
|
import vn.momo.kits.navigation.component.HeaderType
|
|
26
|
-
import vn.momo.kits.platform.getScreenHeight
|
|
27
26
|
|
|
28
27
|
private var bottomTabOptionItems : MutableList<NavigationOptions?> = mutableListOf()
|
|
29
28
|
internal fun setBottomTabOption(index: Int, options: NavigationOptions){
|
|
@@ -52,15 +51,15 @@ fun BottomTab(
|
|
|
52
51
|
|
|
53
52
|
|
|
54
53
|
LaunchedEffect(Unit){
|
|
54
|
+
navigation.markAsBottomTabRoot()
|
|
55
55
|
navigation.setOptions(
|
|
56
56
|
headerType = HeaderType.None
|
|
57
57
|
)
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
Box(modifier = Modifier.
|
|
60
|
+
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.BottomCenter) {
|
|
61
61
|
Box(modifier = Modifier
|
|
62
62
|
.fillMaxSize()
|
|
63
|
-
.padding(bottom = BOTTOM_TAB_BAR_HEIGHT.dp + AppNavigationBar.current)
|
|
64
63
|
) {
|
|
65
64
|
NavHost(
|
|
66
65
|
navController = navController,
|
|
@@ -127,7 +126,7 @@ fun BottomTab(
|
|
|
127
126
|
onTabSelected = {
|
|
128
127
|
val currentRoute = navController.currentBackStackEntry?.destination?.route
|
|
129
128
|
val targetRoute = "option$it"
|
|
130
|
-
if (currentRoute != targetRoute){
|
|
129
|
+
if (currentRoute != targetRoute) {
|
|
131
130
|
navController.navigate(targetRoute)
|
|
132
131
|
}
|
|
133
132
|
}
|
|
@@ -21,6 +21,7 @@ maxapi = "0.1.1"
|
|
|
21
21
|
vanniktechMavenPublish = "0.34.0"
|
|
22
22
|
kits = "0.159.1-beta.7"
|
|
23
23
|
nativemaxapi = "0.0.6"
|
|
24
|
+
gif-image = "0.1.2"
|
|
24
25
|
|
|
25
26
|
[libraries]
|
|
26
27
|
ktor-client-core = { group = "io.ktor", name = "ktor-client-core", version.ref = "ktor-version" }
|
|
@@ -53,6 +54,7 @@ androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "a
|
|
|
53
54
|
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" }
|
|
54
55
|
material = { module = "com.google.android.material:material", version.ref = "material" }
|
|
55
56
|
|
|
57
|
+
gif-image = { module = "vn.momo.kits:gif-image", version.ref = "gif-image" }
|
|
56
58
|
[plugins]
|
|
57
59
|
jetbrains-kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
|
|
58
60
|
jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
package/gradle.properties
CHANGED
|
@@ -1,30 +1,27 @@
|
|
|
1
1
|
import SwiftUI
|
|
2
2
|
|
|
3
3
|
public func scaleSize(_ size: CGFloat, _ scaleRate: CGFloat? = nil) -> CGFloat {
|
|
4
|
-
let config = FontScaleStore.shared.config
|
|
5
4
|
let defaultScreenSize: CGFloat = 375
|
|
6
5
|
let maxFontScale: CGFloat = scaleRate ?? 1.5
|
|
7
6
|
let maxDeviceScale: CGFloat = 5
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return customRate > 1 ? size * customRate : size
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
let deviceScale = UIScreen.main.bounds.width / defaultScreenSize
|
|
8
|
+
let deviceWidth = UIScreen.main.bounds.width
|
|
9
|
+
let deviceScale = deviceWidth / defaultScreenSize
|
|
15
10
|
|
|
16
11
|
let defaultFont = UIFont.systemFont(ofSize: UIFont.labelFontSize)
|
|
17
12
|
let scaledFont = UIFontMetrics.default.scaledFont(for: defaultFont)
|
|
18
|
-
let
|
|
13
|
+
let fontScale = scaledFont.pointSize / defaultFont.pointSize
|
|
19
14
|
|
|
20
15
|
var fontSizeDeviceScale = size
|
|
21
16
|
var fontSizeOSScale = size
|
|
22
17
|
|
|
18
|
+
|
|
23
19
|
if deviceScale > 1 {
|
|
24
20
|
fontSizeDeviceScale = min(fontSizeDeviceScale * deviceScale, fontSizeDeviceScale + maxDeviceScale)
|
|
25
21
|
}
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
|
|
23
|
+
if fontScale > 1 {
|
|
24
|
+
fontSizeOSScale = min(fontSizeOSScale * fontScale, fontSizeOSScale * maxFontScale)
|
|
28
25
|
}
|
|
29
26
|
|
|
30
27
|
return max(fontSizeDeviceScale, fontSizeOSScale)
|
|
@@ -121,7 +118,6 @@ public struct MomoText: View {
|
|
|
121
118
|
private let content: String
|
|
122
119
|
private let typography: TypographyStyle
|
|
123
120
|
private let color: Color
|
|
124
|
-
@ObservedObject private var fontScale = FontScaleStore.shared
|
|
125
121
|
|
|
126
122
|
public init(
|
|
127
123
|
_ content: String,
|
|
@@ -134,7 +130,6 @@ public struct MomoText: View {
|
|
|
134
130
|
}
|
|
135
131
|
|
|
136
132
|
public var body: some View {
|
|
137
|
-
_ = fontScale.config
|
|
138
133
|
let text = SwiftUI.Text(content)
|
|
139
134
|
.font(.system(size: scaleSize(typography.fontSize), weight: typography.fontWeight))
|
|
140
135
|
.foregroundColor(color)
|
|
@@ -11,35 +11,30 @@ public extension View {
|
|
|
11
11
|
|
|
12
12
|
public extension Font {
|
|
13
13
|
static func appFont(size: CGFloat) -> Font {
|
|
14
|
-
let config = FontScaleStore.shared.config
|
|
15
14
|
let defaultScreenSize: CGFloat = 375
|
|
16
15
|
let maxFontScale: CGFloat = 1.5
|
|
17
16
|
let maxDeviceScale: CGFloat = 5
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
let scaled = customRate > 1 ? size * customRate : size
|
|
22
|
-
return Font.system(size: scaled)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
let deviceScale = UIScreen.main.bounds.width / defaultScreenSize
|
|
18
|
+
let deviceWidth = UIScreen.main.bounds.width
|
|
19
|
+
let deviceScale = deviceWidth / defaultScreenSize
|
|
26
20
|
|
|
27
21
|
let defaultFont = UIFont.systemFont(ofSize: UIFont.labelFontSize)
|
|
28
22
|
let scaledFont = UIFontMetrics.default.scaledFont(for: defaultFont)
|
|
29
|
-
let
|
|
23
|
+
let fontScale = scaledFont.pointSize / defaultFont.pointSize
|
|
30
24
|
|
|
31
25
|
var fontSize = size
|
|
32
26
|
|
|
33
27
|
if deviceScale > 1 {
|
|
34
28
|
fontSize = min(fontSize * deviceScale, fontSize + maxDeviceScale)
|
|
35
29
|
}
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
|
|
31
|
+
if fontScale > 1 {
|
|
32
|
+
fontSize = min(fontSize * fontScale, fontSize * maxFontScale)
|
|
38
33
|
}
|
|
39
34
|
|
|
40
35
|
return Font.system(size: fontSize)
|
|
41
36
|
}
|
|
42
|
-
|
|
37
|
+
|
|
43
38
|
// New supported typography styles
|
|
44
39
|
static let headline_default_bold = appFont(size: 24).weight(.bold)
|
|
45
40
|
static let header_m_bold = appFont(size: 18).weight(.bold)
|
|
@@ -57,7 +52,7 @@ public extension Font {
|
|
|
57
52
|
static let action_s_bold = appFont(size: 14).weight(.bold)
|
|
58
53
|
static let action_xs_bold = appFont(size: 12).weight(.bold)
|
|
59
54
|
static let action_xxs_bold = appFont(size: 10).weight(.bold)
|
|
60
|
-
|
|
55
|
+
|
|
61
56
|
// Legacy styles
|
|
62
57
|
static let headline_default = appFont(size: 28).weight(.semibold)
|
|
63
58
|
static let headline_s = appFont(size: 24).weight(.semibold)
|
|
@@ -82,7 +77,7 @@ public extension Font {
|
|
|
82
77
|
static let action_xxs = appFont(size: 10).weight(.bold)
|
|
83
78
|
static let action_xs = appFont(size: 12).weight(.bold)
|
|
84
79
|
static let action_s = appFont(size: 15).weight(.bold)
|
|
85
|
-
|
|
80
|
+
|
|
86
81
|
// deprecated
|
|
87
82
|
static let h1 = appFont(size: 36).weight(.semibold) //headline_xl
|
|
88
83
|
static let h2 = appFont(size: 32).weight(.semibold)
|
package/local.properties
CHANGED
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
# Location of the SDK. This is only used by Gradle.
|
|
5
5
|
# For customization when using a Version Control System, please read the
|
|
6
6
|
# header note.
|
|
7
|
-
#
|
|
8
|
-
sdk.dir=/Users/
|
|
7
|
+
#Tue Jun 02 17:05:32 ICT 2026
|
|
8
|
+
sdk.dir=/Users/sophia/Library/Android/sdk
|
package/package.json
CHANGED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>SchemeUserState</key>
|
|
6
|
-
<dict>
|
|
7
|
-
<key>Example.xcscheme_^#shared#^_</key>
|
|
8
|
-
<dict>
|
|
9
|
-
<key>orderHint</key>
|
|
10
|
-
<integer>0</integer>
|
|
11
|
-
</dict>
|
|
12
|
-
</dict>
|
|
13
|
-
</dict>
|
|
14
|
-
</plist>
|
|
Binary file
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<Scheme
|
|
3
|
-
LastUpgradeVersion = "1600"
|
|
4
|
-
version = "1.3">
|
|
5
|
-
<BuildAction
|
|
6
|
-
parallelizeBuildables = "YES"
|
|
7
|
-
buildImplicitDependencies = "YES">
|
|
8
|
-
<BuildActionEntries>
|
|
9
|
-
<BuildActionEntry
|
|
10
|
-
buildForTesting = "YES"
|
|
11
|
-
buildForRunning = "YES"
|
|
12
|
-
buildForProfiling = "YES"
|
|
13
|
-
buildForArchiving = "YES"
|
|
14
|
-
buildForAnalyzing = "YES">
|
|
15
|
-
<BuildableReference
|
|
16
|
-
BuildableIdentifier = "primary"
|
|
17
|
-
BlueprintIdentifier = "3B6FB503A75BF5BC1FA6F30BC06B9D28"
|
|
18
|
-
BuildableName = "MoMoUIKits.framework"
|
|
19
|
-
BlueprintName = "MoMoUIKits"
|
|
20
|
-
ReferencedContainer = "container:Pods.xcodeproj">
|
|
21
|
-
</BuildableReference>
|
|
22
|
-
</BuildActionEntry>
|
|
23
|
-
</BuildActionEntries>
|
|
24
|
-
</BuildAction>
|
|
25
|
-
<TestAction
|
|
26
|
-
buildConfiguration = "Debug"
|
|
27
|
-
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
-
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
-
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
30
|
-
<Testables>
|
|
31
|
-
</Testables>
|
|
32
|
-
</TestAction>
|
|
33
|
-
<LaunchAction
|
|
34
|
-
buildConfiguration = "Debug"
|
|
35
|
-
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
36
|
-
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
37
|
-
launchStyle = "0"
|
|
38
|
-
useCustomWorkingDirectory = "NO"
|
|
39
|
-
ignoresPersistentStateOnLaunch = "NO"
|
|
40
|
-
debugDocumentVersioning = "YES"
|
|
41
|
-
debugServiceExtension = "internal"
|
|
42
|
-
allowLocationSimulation = "YES">
|
|
43
|
-
</LaunchAction>
|
|
44
|
-
<ProfileAction
|
|
45
|
-
buildConfiguration = "Release"
|
|
46
|
-
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
47
|
-
savedToolIdentifier = ""
|
|
48
|
-
useCustomWorkingDirectory = "NO"
|
|
49
|
-
debugDocumentVersioning = "YES">
|
|
50
|
-
</ProfileAction>
|
|
51
|
-
<AnalyzeAction
|
|
52
|
-
buildConfiguration = "Debug">
|
|
53
|
-
</AnalyzeAction>
|
|
54
|
-
<ArchiveAction
|
|
55
|
-
buildConfiguration = "Release"
|
|
56
|
-
revealArchiveInOrganizer = "YES">
|
|
57
|
-
</ArchiveAction>
|
|
58
|
-
</Scheme>
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<Scheme
|
|
3
|
-
LastUpgradeVersion = "1600"
|
|
4
|
-
version = "1.3">
|
|
5
|
-
<BuildAction
|
|
6
|
-
parallelizeBuildables = "YES"
|
|
7
|
-
buildImplicitDependencies = "YES">
|
|
8
|
-
<BuildActionEntries>
|
|
9
|
-
<BuildActionEntry
|
|
10
|
-
buildForTesting = "YES"
|
|
11
|
-
buildForRunning = "YES"
|
|
12
|
-
buildForProfiling = "YES"
|
|
13
|
-
buildForArchiving = "YES"
|
|
14
|
-
buildForAnalyzing = "YES">
|
|
15
|
-
<BuildableReference
|
|
16
|
-
BuildableIdentifier = "primary"
|
|
17
|
-
BlueprintIdentifier = "0AEE99A309977BD12A049FF48AF9BA4B"
|
|
18
|
-
BuildableName = "Pods_Example.framework"
|
|
19
|
-
BlueprintName = "Pods-Example"
|
|
20
|
-
ReferencedContainer = "container:Pods.xcodeproj">
|
|
21
|
-
</BuildableReference>
|
|
22
|
-
</BuildActionEntry>
|
|
23
|
-
</BuildActionEntries>
|
|
24
|
-
</BuildAction>
|
|
25
|
-
<TestAction
|
|
26
|
-
buildConfiguration = "Debug"
|
|
27
|
-
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
-
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
-
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
30
|
-
<Testables>
|
|
31
|
-
</Testables>
|
|
32
|
-
</TestAction>
|
|
33
|
-
<LaunchAction
|
|
34
|
-
buildConfiguration = "Debug"
|
|
35
|
-
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
36
|
-
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
37
|
-
launchStyle = "0"
|
|
38
|
-
useCustomWorkingDirectory = "NO"
|
|
39
|
-
ignoresPersistentStateOnLaunch = "NO"
|
|
40
|
-
debugDocumentVersioning = "YES"
|
|
41
|
-
debugServiceExtension = "internal"
|
|
42
|
-
allowLocationSimulation = "YES">
|
|
43
|
-
</LaunchAction>
|
|
44
|
-
<ProfileAction
|
|
45
|
-
buildConfiguration = "Release"
|
|
46
|
-
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
47
|
-
savedToolIdentifier = ""
|
|
48
|
-
useCustomWorkingDirectory = "NO"
|
|
49
|
-
debugDocumentVersioning = "YES">
|
|
50
|
-
</ProfileAction>
|
|
51
|
-
<AnalyzeAction
|
|
52
|
-
buildConfiguration = "Debug">
|
|
53
|
-
</AnalyzeAction>
|
|
54
|
-
<ArchiveAction
|
|
55
|
-
buildConfiguration = "Release"
|
|
56
|
-
revealArchiveInOrganizer = "YES">
|
|
57
|
-
</ArchiveAction>
|
|
58
|
-
</Scheme>
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<Scheme
|
|
3
|
-
LastUpgradeVersion = "1600"
|
|
4
|
-
version = "1.3">
|
|
5
|
-
<BuildAction
|
|
6
|
-
parallelizeBuildables = "YES"
|
|
7
|
-
buildImplicitDependencies = "YES">
|
|
8
|
-
<BuildActionEntries>
|
|
9
|
-
<BuildActionEntry
|
|
10
|
-
buildForTesting = "YES"
|
|
11
|
-
buildForRunning = "YES"
|
|
12
|
-
buildForProfiling = "YES"
|
|
13
|
-
buildForArchiving = "YES"
|
|
14
|
-
buildForAnalyzing = "YES">
|
|
15
|
-
<BuildableReference
|
|
16
|
-
BuildableIdentifier = "primary"
|
|
17
|
-
BlueprintIdentifier = "3847153A6E5EEFB86565BA840768F429"
|
|
18
|
-
BuildableName = "SDWebImage.framework"
|
|
19
|
-
BlueprintName = "SDWebImage"
|
|
20
|
-
ReferencedContainer = "container:Pods.xcodeproj">
|
|
21
|
-
</BuildableReference>
|
|
22
|
-
</BuildActionEntry>
|
|
23
|
-
</BuildActionEntries>
|
|
24
|
-
</BuildAction>
|
|
25
|
-
<TestAction
|
|
26
|
-
buildConfiguration = "Debug"
|
|
27
|
-
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
-
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
-
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
30
|
-
<Testables>
|
|
31
|
-
</Testables>
|
|
32
|
-
</TestAction>
|
|
33
|
-
<LaunchAction
|
|
34
|
-
buildConfiguration = "Debug"
|
|
35
|
-
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
36
|
-
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
37
|
-
launchStyle = "0"
|
|
38
|
-
useCustomWorkingDirectory = "NO"
|
|
39
|
-
ignoresPersistentStateOnLaunch = "NO"
|
|
40
|
-
debugDocumentVersioning = "YES"
|
|
41
|
-
debugServiceExtension = "internal"
|
|
42
|
-
allowLocationSimulation = "YES">
|
|
43
|
-
</LaunchAction>
|
|
44
|
-
<ProfileAction
|
|
45
|
-
buildConfiguration = "Release"
|
|
46
|
-
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
47
|
-
savedToolIdentifier = ""
|
|
48
|
-
useCustomWorkingDirectory = "NO"
|
|
49
|
-
debugDocumentVersioning = "YES">
|
|
50
|
-
</ProfileAction>
|
|
51
|
-
<AnalyzeAction
|
|
52
|
-
buildConfiguration = "Debug">
|
|
53
|
-
</AnalyzeAction>
|
|
54
|
-
<ArchiveAction
|
|
55
|
-
buildConfiguration = "Release"
|
|
56
|
-
revealArchiveInOrganizer = "YES">
|
|
57
|
-
</ArchiveAction>
|
|
58
|
-
</Scheme>
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<Scheme
|
|
3
|
-
LastUpgradeVersion = "1600"
|
|
4
|
-
version = "1.3">
|
|
5
|
-
<BuildAction
|
|
6
|
-
parallelizeBuildables = "YES"
|
|
7
|
-
buildImplicitDependencies = "YES">
|
|
8
|
-
<BuildActionEntries>
|
|
9
|
-
<BuildActionEntry
|
|
10
|
-
buildForTesting = "YES"
|
|
11
|
-
buildForRunning = "YES"
|
|
12
|
-
buildForProfiling = "YES"
|
|
13
|
-
buildForArchiving = "YES"
|
|
14
|
-
buildForAnalyzing = "YES">
|
|
15
|
-
<BuildableReference
|
|
16
|
-
BuildableIdentifier = "primary"
|
|
17
|
-
BlueprintIdentifier = "92EBFA3E7005B4C18A9C0B44324EB80F"
|
|
18
|
-
BuildableName = "SDWebImageSwiftUI.framework"
|
|
19
|
-
BlueprintName = "SDWebImageSwiftUI"
|
|
20
|
-
ReferencedContainer = "container:Pods.xcodeproj">
|
|
21
|
-
</BuildableReference>
|
|
22
|
-
</BuildActionEntry>
|
|
23
|
-
</BuildActionEntries>
|
|
24
|
-
</BuildAction>
|
|
25
|
-
<TestAction
|
|
26
|
-
buildConfiguration = "Debug"
|
|
27
|
-
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
-
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
-
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
30
|
-
<Testables>
|
|
31
|
-
</Testables>
|
|
32
|
-
</TestAction>
|
|
33
|
-
<LaunchAction
|
|
34
|
-
buildConfiguration = "Debug"
|
|
35
|
-
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
36
|
-
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
37
|
-
launchStyle = "0"
|
|
38
|
-
useCustomWorkingDirectory = "NO"
|
|
39
|
-
ignoresPersistentStateOnLaunch = "NO"
|
|
40
|
-
debugDocumentVersioning = "YES"
|
|
41
|
-
debugServiceExtension = "internal"
|
|
42
|
-
allowLocationSimulation = "YES">
|
|
43
|
-
</LaunchAction>
|
|
44
|
-
<ProfileAction
|
|
45
|
-
buildConfiguration = "Release"
|
|
46
|
-
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
47
|
-
savedToolIdentifier = ""
|
|
48
|
-
useCustomWorkingDirectory = "NO"
|
|
49
|
-
debugDocumentVersioning = "YES">
|
|
50
|
-
</ProfileAction>
|
|
51
|
-
<AnalyzeAction
|
|
52
|
-
buildConfiguration = "Debug">
|
|
53
|
-
</AnalyzeAction>
|
|
54
|
-
<ArchiveAction
|
|
55
|
-
buildConfiguration = "Release"
|
|
56
|
-
revealArchiveInOrganizer = "YES">
|
|
57
|
-
</ArchiveAction>
|
|
58
|
-
</Scheme>
|