@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.
Files changed (32) hide show
  1. package/.claude/settings.local.json +62 -0
  2. package/compose/build.gradle.kts +2 -1
  3. package/compose/build.gradle.kts.backup +1 -0
  4. package/compose/compose.podspec +1 -1
  5. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +3 -10
  6. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +11 -9
  7. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +40 -55
  8. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +69 -26
  9. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +17 -0
  10. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +3 -6
  11. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +22 -21
  12. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +4 -0
  13. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +19 -40
  14. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +11 -6
  15. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +3 -4
  16. package/gradle/libs.versions.toml +2 -0
  17. package/gradle.properties +1 -1
  18. package/ios/Application/ApplicationEnvironment.swift +0 -1
  19. package/ios/Typography/Text.swift +7 -12
  20. package/ios/Typography/Typography.swift +9 -14
  21. package/local.properties +2 -2
  22. package/package.json +1 -1
  23. package/example/ios/Example.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  24. package/example/ios/Example.xcworkspace/xcuserdata/huynhdung.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  25. package/example/ios/Example.xcworkspace/xcuserdata/huynhdung.xcuserdatad/xcschemes/xcschememanagement.plist +0 -5
  26. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +0 -58
  27. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/Pods-Example.xcscheme +0 -58
  28. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/SDWebImage.xcscheme +0 -58
  29. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +0 -58
  30. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/SkeletonUI.xcscheme +0 -58
  31. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/huynhdung.xcuserdatad/xcschemes/xcschememanagement.plist +0 -46
  32. 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
- miniappContext: MiniAppContext? = null,
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, miniappContext)
38
+ val mergedContext = MiniAppContext.merge(parentContext, miniAppContext)
39
39
 
40
- var observerFontScaleConfig by remember { mutableStateOf(mergedContext?.fontScaleConfig) }
41
- LaunchedEffect(maxApi) {
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.observer(FONT_SCALE_OBSERVER_KEY).collect { data ->
45
- observerFontScaleConfig = parseFontScaleConfig(data)
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 const val FONT_SCALE_OBSERVER_KEY = "font_scale_config"
150
-
151
- private fun parseFontScaleConfig(raw: Map<String, Any?>?): FontScaleConfig? {
152
- if (raw.isNullOrEmpty()) return null
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(bottomTabIndex = bottomTabIndex, id = id)
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 0.dp)
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(bottomTabIndex: Int, id: Int) {
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 (bottomTabIndex != -1) return@Box
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.fillMaxWidth().height(getScreenHeight()), contentAlignment = Alignment.BottomCenter) {
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
@@ -18,7 +18,7 @@ kotlin.apple.xcodeCompatibility.nowarn=true
18
18
  name="ComposeKits"
19
19
  group=vn.momo.kits
20
20
  artifact.id=kits
21
- version=0.163.1-beta.7
21
+ version=0.163.1-beta.8
22
22
 
23
23
  repo=GitLab
24
24
  url=https://gitlab.mservice.com.vn/api/v4/projects/5400/packages/maven
@@ -46,6 +46,5 @@ public class ApplicationEnvironment: ObservableObject {
46
46
  self.applicationContext = applicationContext
47
47
  self.composeApi = composeApi
48
48
  self.config = config
49
- FontScaleStore.shared.bind(composeApi)
50
49
  }
51
50
  }
@@ -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
- if !config.useOSFontScale {
10
- let customRate = config.userScaleRate ?? 1
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 osFontScale = scaledFont.pointSize / defaultFont.pointSize
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
- if osFontScale > 1 {
27
- fontSizeOSScale = min(fontSizeOSScale * osFontScale, fontSizeOSScale * maxFontScale)
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
- if !config.useOSFontScale {
20
- let customRate = config.userScaleRate ?? 1
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 osFontScale = scaledFont.pointSize / defaultFont.pointSize
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
- if osFontScale > 1 {
37
- fontSize = min(fontSize * osFontScale, fontSize * maxFontScale)
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
- #Wed Aug 21 14:20:12 ICT 2024
8
- sdk.dir=/Users/huynhdung/Library/Android/sdk
7
+ #Tue Jun 02 17:05:32 ICT 2026
8
+ sdk.dir=/Users/sophia/Library/Android/sdk
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@momo-kits/native-kits",
3
- "version": "0.163.1-beta.7-debug",
3
+ "version": "0.163.1-beta.8-debug",
4
4
  "private": false,
5
5
  "dependencies": {},
6
6
  "devDependencies": {},
@@ -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>
@@ -1,5 +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
- </plist>
@@ -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>