react-native-candle 0.1.42 → 0.1.44

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 (160) hide show
  1. package/ReactNativeCandle.podspec +1 -1
  2. package/ios/Sources/CandleActionViewModel.swift +4 -7
  3. package/ios/Sources/CandleLinkSheetWrapperView.swift +40 -59
  4. package/ios/Sources/CandleLinkViewModel.swift +21 -31
  5. package/ios/Sources/CandleTradeExecutionSheetWrapper.swift +14 -23
  6. package/ios/Sources/HostingViewController.swift +26 -26
  7. package/ios/Sources/RNCandle.swift +159 -1307
  8. package/ios/Sources/Types.swift +847 -0
  9. package/ios/Sources/UIApplication++.swift +5 -9
  10. package/lib/commonjs/context.js +17 -0
  11. package/lib/commonjs/context.js.map +1 -0
  12. package/lib/commonjs/index.js +17 -407
  13. package/lib/commonjs/index.js.map +1 -1
  14. package/lib/commonjs/package.json +1 -0
  15. package/lib/commonjs/provider.js +117 -0
  16. package/lib/commonjs/provider.js.map +1 -0
  17. package/lib/commonjs/types.js +271 -0
  18. package/lib/commonjs/types.js.map +1 -0
  19. package/lib/module/context.js +12 -0
  20. package/lib/module/context.js.map +1 -0
  21. package/lib/module/index.js +2 -408
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/module/package.json +1 -0
  24. package/lib/module/provider.js +111 -0
  25. package/lib/module/provider.js.map +1 -0
  26. package/lib/module/types.js +256 -0
  27. package/lib/module/types.js.map +1 -0
  28. package/lib/typescript/commonjs/src/context.d.ts +47 -0
  29. package/lib/typescript/commonjs/src/context.d.ts.map +1 -0
  30. package/lib/typescript/commonjs/src/index.d.ts +4 -166
  31. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/src/provider.d.ts +8 -0
  33. package/lib/typescript/commonjs/src/provider.d.ts.map +1 -0
  34. package/lib/typescript/commonjs/src/specs/RNCandle.nitro.d.ts +22 -24
  35. package/lib/typescript/commonjs/src/specs/RNCandle.nitro.d.ts.map +1 -1
  36. package/lib/typescript/commonjs/src/types.d.ts +125 -0
  37. package/lib/typescript/commonjs/src/types.d.ts.map +1 -0
  38. package/lib/typescript/module/src/context.d.ts +47 -0
  39. package/lib/typescript/module/src/context.d.ts.map +1 -0
  40. package/lib/typescript/module/src/index.d.ts +4 -166
  41. package/lib/typescript/module/src/index.d.ts.map +1 -1
  42. package/lib/typescript/module/src/provider.d.ts +8 -0
  43. package/lib/typescript/module/src/provider.d.ts.map +1 -0
  44. package/lib/typescript/module/src/specs/RNCandle.nitro.d.ts +22 -24
  45. package/lib/typescript/module/src/specs/RNCandle.nitro.d.ts.map +1 -1
  46. package/lib/typescript/module/src/types.d.ts +125 -0
  47. package/lib/typescript/module/src/types.d.ts.map +1 -0
  48. package/nitrogen/generated/.gitattributes +1 -1
  49. package/nitrogen/generated/ios/ReactNativeCandle-Swift-Cxx-Bridge.cpp +15 -31
  50. package/nitrogen/generated/ios/ReactNativeCandle-Swift-Cxx-Bridge.hpp +379 -242
  51. package/nitrogen/generated/ios/ReactNativeCandle-Swift-Cxx-Umbrella.hpp +23 -22
  52. package/nitrogen/generated/ios/ReactNativeCandleAutolinking.mm +1 -1
  53. package/nitrogen/generated/ios/ReactNativeCandleAutolinking.swift +2 -4
  54. package/nitrogen/generated/ios/c++/HybridRNCandleSpecSwift.hpp +36 -42
  55. package/nitrogen/generated/ios/swift/ActiveLinkedAccountDetails.swift +6 -3
  56. package/nitrogen/generated/ios/swift/AssetAccount.swift +6 -3
  57. package/nitrogen/generated/ios/swift/AssetAccountKind.swift +4 -4
  58. package/nitrogen/generated/ios/swift/AssetAccountRef.swift +5 -5
  59. package/nitrogen/generated/ios/swift/{AssetAccountQuery.swift → AssetAccountsQuery.swift} +7 -6
  60. package/nitrogen/generated/ios/swift/Counterparty.swift +8 -3
  61. package/nitrogen/generated/ios/swift/CounterpartyKind.swift +42 -0
  62. package/nitrogen/generated/ios/swift/FiatAccount.swift +4 -2
  63. package/nitrogen/generated/ios/swift/FiatAsset.swift +2 -1
  64. package/nitrogen/generated/ios/swift/FiatAssetQuoteRequest.swift +4 -2
  65. package/nitrogen/generated/ios/swift/FiatAssetRef.swift +2 -1
  66. package/nitrogen/generated/ios/swift/Func_void_LinkedAccount.swift +5 -5
  67. package/nitrogen/generated/ios/swift/HybridRNCandleSpec.swift +7 -7
  68. package/nitrogen/generated/ios/swift/HybridRNCandleSpec_cxx.swift +40 -65
  69. package/nitrogen/generated/ios/swift/LinkedAccountDetails.swift +15 -3
  70. package/nitrogen/generated/ios/swift/{StatePayload.swift → LinkedAccountState.swift} +6 -6
  71. package/nitrogen/generated/ios/swift/LinkedAccountStatusRef.swift +4 -3
  72. package/nitrogen/generated/ios/swift/MarketAccount.swift +5 -5
  73. package/nitrogen/generated/ios/swift/MarketAssetKind.swift +38 -0
  74. package/nitrogen/generated/ios/swift/MarketAssetQuoteRequest.swift +11 -8
  75. package/nitrogen/generated/ios/swift/MarketTradeAsset.swift +7 -7
  76. package/nitrogen/generated/ios/swift/MarketTradeAssetRef.swift +5 -5
  77. package/nitrogen/generated/ios/swift/MerchantCounterparty.swift +2 -1
  78. package/nitrogen/generated/ios/swift/TradeAsset.swift +10 -5
  79. package/nitrogen/generated/ios/swift/TradeAssetKind.swift +54 -0
  80. package/nitrogen/generated/ios/swift/TradeAssetQuoteRequest.swift +15 -4
  81. package/nitrogen/generated/ios/swift/TradeAssetRef.swift +11 -5
  82. package/nitrogen/generated/ios/swift/TradeExecutionResult.swift +4 -2
  83. package/nitrogen/generated/ios/swift/{TradeQuoteRequest.swift → TradeQuotesRequest.swift} +7 -6
  84. package/nitrogen/generated/ios/swift/{TradeQuery.swift → TradesQuery.swift} +29 -45
  85. package/nitrogen/generated/ios/swift/TransportAssetQuoteRequest.swift +12 -6
  86. package/nitrogen/generated/shared/c++/ACHAccountKind.hpp +7 -9
  87. package/nitrogen/generated/shared/c++/ACHDetails.hpp +7 -9
  88. package/nitrogen/generated/shared/c++/ActiveLinkedAccountDetails.hpp +4 -6
  89. package/nitrogen/generated/shared/c++/Address.hpp +4 -6
  90. package/nitrogen/generated/shared/c++/AssetAccount.hpp +14 -16
  91. package/nitrogen/generated/shared/c++/AssetAccountKind.hpp +15 -17
  92. package/nitrogen/generated/shared/c++/AssetAccountRef.hpp +12 -12
  93. package/nitrogen/generated/shared/c++/{AssetAccountQuery.hpp → AssetAccountsQuery.hpp} +14 -16
  94. package/nitrogen/generated/shared/c++/AssetAccountsResponse.hpp +11 -13
  95. package/nitrogen/generated/shared/c++/Coordinates.hpp +4 -6
  96. package/nitrogen/generated/shared/c++/Counterparty.hpp +14 -16
  97. package/nitrogen/generated/shared/c++/CounterpartyKind.hpp +80 -0
  98. package/nitrogen/generated/shared/c++/FiatAccount.hpp +16 -18
  99. package/nitrogen/generated/shared/c++/FiatAsset.hpp +7 -9
  100. package/nitrogen/generated/shared/c++/FiatAssetQuoteRequest.hpp +4 -6
  101. package/nitrogen/generated/shared/c++/FiatAssetRef.hpp +4 -6
  102. package/nitrogen/generated/shared/c++/FiatMarketAccountKind.hpp +13 -15
  103. package/nitrogen/generated/shared/c++/HybridRNCandleSpec.cpp +1 -2
  104. package/nitrogen/generated/shared/c++/HybridRNCandleSpec.hpp +17 -27
  105. package/nitrogen/generated/shared/c++/InactiveLinkedAccountDetails.hpp +4 -6
  106. package/nitrogen/generated/shared/c++/LinkedAccount.hpp +10 -12
  107. package/nitrogen/generated/shared/c++/LinkedAccountDetails.hpp +14 -16
  108. package/nitrogen/generated/shared/c++/LinkedAccountRef.hpp +4 -6
  109. package/nitrogen/generated/shared/c++/{StatePayload.hpp → LinkedAccountState.hpp} +15 -17
  110. package/nitrogen/generated/shared/c++/LinkedAccountStatusRef.hpp +15 -17
  111. package/nitrogen/generated/shared/c++/MarketAccount.hpp +18 -17
  112. package/nitrogen/generated/shared/c++/MarketAssetKind.hpp +76 -0
  113. package/nitrogen/generated/shared/c++/MarketAssetQuoteRequest.hpp +12 -12
  114. package/nitrogen/generated/shared/c++/MarketTradeAsset.hpp +15 -14
  115. package/nitrogen/generated/shared/c++/MarketTradeAssetRef.hpp +12 -12
  116. package/nitrogen/generated/shared/c++/MerchantCounterparty.hpp +8 -10
  117. package/nitrogen/generated/shared/c++/MerchantLocation.hpp +4 -6
  118. package/nitrogen/generated/shared/c++/NothingAsset.hpp +4 -6
  119. package/nitrogen/generated/shared/c++/NothingAssetQuoteRequest.hpp +4 -6
  120. package/nitrogen/generated/shared/c++/NothingAssetRef.hpp +4 -6
  121. package/nitrogen/generated/shared/c++/OtherAsset.hpp +4 -6
  122. package/nitrogen/generated/shared/c++/OtherAssetRef.hpp +4 -6
  123. package/nitrogen/generated/shared/c++/PresentationBackground.hpp +7 -9
  124. package/nitrogen/generated/shared/c++/PresentationStyle.hpp +7 -9
  125. package/nitrogen/generated/shared/c++/Service.hpp +163 -165
  126. package/nitrogen/generated/shared/c++/ServiceCounterparty.hpp +7 -9
  127. package/nitrogen/generated/shared/c++/Trade.hpp +16 -18
  128. package/nitrogen/generated/shared/c++/TradeAsset.hpp +20 -22
  129. package/nitrogen/generated/shared/c++/TradeAssetKind.hpp +92 -0
  130. package/nitrogen/generated/shared/c++/TradeAssetQuoteRequest.hpp +17 -19
  131. package/nitrogen/generated/shared/c++/TradeAssetRef.hpp +20 -22
  132. package/nitrogen/generated/shared/c++/TradeExecutionResult.hpp +8 -10
  133. package/nitrogen/generated/shared/c++/TradeQuote.hpp +10 -12
  134. package/nitrogen/generated/shared/c++/{TradeQuoteRequest.hpp → TradeQuotesRequest.hpp} +17 -19
  135. package/nitrogen/generated/shared/c++/TradeQuotesResponse.hpp +11 -13
  136. package/nitrogen/generated/shared/c++/TradeRef.hpp +10 -12
  137. package/nitrogen/generated/shared/c++/TradeState.hpp +9 -11
  138. package/nitrogen/generated/shared/c++/TradesQuery.hpp +89 -0
  139. package/nitrogen/generated/shared/c++/TradesResponse.hpp +11 -13
  140. package/nitrogen/generated/shared/c++/TransportAccount.hpp +10 -12
  141. package/nitrogen/generated/shared/c++/TransportAccountKind.hpp +9 -11
  142. package/nitrogen/generated/shared/c++/TransportAsset.hpp +19 -21
  143. package/nitrogen/generated/shared/c++/TransportAssetQuoteRequest.hpp +16 -18
  144. package/nitrogen/generated/shared/c++/TransportAssetRef.hpp +4 -6
  145. package/nitrogen/generated/shared/c++/UnavailableLinkedAccountDetails.hpp +4 -6
  146. package/nitrogen/generated/shared/c++/UserCounterparty.hpp +4 -6
  147. package/nitrogen/generated/shared/c++/WireDetails.hpp +4 -6
  148. package/package.json +9 -11
  149. package/src/context.ts +86 -0
  150. package/src/index.ts +4 -634
  151. package/src/provider.tsx +152 -0
  152. package/src/specs/RNCandle.nitro.ts +38 -29
  153. package/src/types.ts +462 -0
  154. package/nitrogen/generated/ios/swift/AppUser.swift +0 -75
  155. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +0 -44
  156. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__shared_ptr_AnyMap__.swift +0 -47
  157. package/nitrogen/generated/ios/swift/ToolCall.swift +0 -44
  158. package/nitrogen/generated/shared/c++/AppUser.hpp +0 -78
  159. package/nitrogen/generated/shared/c++/ToolCall.hpp +0 -73
  160. package/nitrogen/generated/shared/c++/TradeQuery.hpp +0 -86
@@ -30,7 +30,7 @@ Pod::Spec.new do |s|
30
30
  load 'nitrogen/generated/ios/ReactNativeCandle+autolinking.rb'
31
31
  add_nitrogen_files(s)
32
32
 
33
- s.dependency 'Candle', '3.0.364-beta'
33
+ s.dependency 'Candle', '3.0.395-beta'
34
34
  s.dependency 'React-jsi'
35
35
  s.dependency 'React-callinvoker'
36
36
  install_modules_dependencies(s)
@@ -1,13 +1,10 @@
1
1
  import Candle
2
2
  import Combine
3
3
 
4
- @available(iOS 17.0, *)
5
- final class CandleActionViewModel: ObservableObject {
4
+ @available(iOS 17.0, *) final class CandleActionViewModel: ObservableObject {
6
5
 
7
- @Published var tradeQuote: Models.TradeQuote?
8
- @Published var tradeResult: Result<Candle.Models.Trade, Candle.Models.ExecuteTrade.Error>?
6
+ @Published var tradeQuote: Models.TradeQuote?
7
+ @Published var tradeResult: Result<Candle.Models.Trade, Candle.Models.ExecuteTrade.Error>?
9
8
 
10
- init(tradeQuote: Models.TradeQuote?) {
11
- self.tradeQuote = tradeQuote
12
- }
9
+ init(tradeQuote: Models.TradeQuote?) { self.tradeQuote = tradeQuote }
13
10
  }
@@ -1,68 +1,49 @@
1
1
  import Candle
2
2
  import SwiftUI
3
3
 
4
- @available(iOS 17.0, *)
5
- struct CandleLinkSheetWrapper: View {
4
+ @available(iOS 17.0, *) struct CandleLinkSheetWrapper: View {
6
5
 
7
- let candleClient: CandleClient
6
+ @ObservedObject var viewModel = CandleLinkViewModel()
8
7
 
9
- @ObservedObject var viewModel: CandleLinkViewModel
10
-
11
- init(appUser: Candle.Models.AppUser, accessGroup: String?) {
12
- self.candleClient = CandleClient(appUser: appUser, accessGroup: accessGroup)
13
- self.viewModel = CandleLinkViewModel(candleClient: candleClient)
14
- }
15
-
16
- var body: some View {
17
- if let services = viewModel.services {
18
- if let service = services.first, services.count == 1 {
19
- Spacer()
20
- .candleLinkSheet(
21
- isPresented: $viewModel.showSheet,
22
- service: service.toRNModel,
23
- customerName: viewModel.customerName,
24
- cornerRadius: viewModel.cornerRadius,
25
- showDynamicLoading: viewModel.showDynamicLoading,
26
- presentationStyle: viewModel.toCandlePresentationStyle,
27
- presentationBackground: viewModel.toCandlePresentationBackground
28
- ) { newLinkedAccount in
29
- viewModel.linkedAccount = newLinkedAccount
30
- }
31
- .onChange(of: viewModel.showSheet) { _, newValue in
32
- Task { @MainActor in
33
- viewModel.isPresented = newValue
8
+ var body: some View {
9
+ if let services = viewModel.services {
10
+ if let service = services.first, services.count == 1 {
11
+ Spacer()
12
+ .candleLinkSheet(
13
+ isPresented: $viewModel.showSheet,
14
+ service: .init(reactModel: service),
15
+ customerName: viewModel.customerName,
16
+ cornerRadius: viewModel.cornerRadius,
17
+ showDynamicLoading: viewModel.showDynamicLoading,
18
+ presentationStyle: viewModel.toCandlePresentationStyle,
19
+ presentationBackground: viewModel.toCandlePresentationBackground
20
+ ) { newLinkedAccount in viewModel.linkedAccount = newLinkedAccount }
21
+ .onChange(of: viewModel.showSheet) { _, newValue in
22
+ Task { @MainActor in viewModel.isPresented = newValue }
23
+ }
24
+ } else {
25
+ Spacer()
26
+ .candleLinkSheet(
27
+ isPresented: $viewModel.showSheet,
28
+ customerName: viewModel.customerName,
29
+ cornerRadius: viewModel.cornerRadius,
30
+ services: services.map(Models.Service.init(reactModel:)),
31
+ showDynamicLoading: viewModel.showDynamicLoading,
32
+ presentationStyle: viewModel.toCandlePresentationStyle,
33
+ presentationBackground: viewModel.toCandlePresentationBackground
34
+ ) { newLinkedAccount in viewModel.linkedAccount = newLinkedAccount }
34
35
  }
35
- }
36
- .environment(candleClient)
37
- } else {
38
- Spacer()
39
- .candleLinkSheet(
40
- isPresented: $viewModel.showSheet,
41
- customerName: viewModel.customerName,
42
- cornerRadius: viewModel.cornerRadius,
43
- services: services.map(\.toRNModel),
44
- showDynamicLoading: viewModel.showDynamicLoading,
45
- presentationStyle: viewModel.toCandlePresentationStyle,
46
- presentationBackground: viewModel.toCandlePresentationBackground
47
- ) { newLinkedAccount in
48
- viewModel.linkedAccount = newLinkedAccount
49
- }
50
- .environment(candleClient)
51
- }
52
- } else {
53
- Spacer()
54
- .candleLinkSheet(
55
- isPresented: $viewModel.showSheet,
56
- customerName: viewModel.customerName,
57
- cornerRadius: viewModel.cornerRadius,
58
- services: .supported,
59
- showDynamicLoading: viewModel.showDynamicLoading,
60
- presentationStyle: viewModel.toCandlePresentationStyle,
61
- presentationBackground: viewModel.toCandlePresentationBackground
62
- ) { newLinkedAccount in
63
- viewModel.linkedAccount = newLinkedAccount
36
+ } else {
37
+ Spacer()
38
+ .candleLinkSheet(
39
+ isPresented: $viewModel.showSheet,
40
+ customerName: viewModel.customerName,
41
+ cornerRadius: viewModel.cornerRadius,
42
+ services: .supported,
43
+ showDynamicLoading: viewModel.showDynamicLoading,
44
+ presentationStyle: viewModel.toCandlePresentationStyle,
45
+ presentationBackground: viewModel.toCandlePresentationBackground
46
+ ) { newLinkedAccount in viewModel.linkedAccount = newLinkedAccount }
64
47
  }
65
- .environment(candleClient)
66
48
  }
67
- }
68
49
  }
@@ -1,41 +1,31 @@
1
1
  import Candle
2
2
  import SwiftUI
3
3
 
4
- @available(iOS 17.0, *)
5
- final class CandleLinkViewModel: ObservableObject {
4
+ @available(iOS 17.0, *) final class CandleLinkViewModel: ObservableObject {
6
5
 
7
- let candleClient: CandleClient
6
+ @Published var showSheet = false
7
+ @Published var linkedAccount: Models.LinkedAccount?
8
+ @Published var isPresented: Bool = false
9
+ @Published var services: [Service]?
10
+ @Published var cornerRadius: Double = 0
11
+ @Published var customerName: String?
12
+ @Published var showDynamicLoading: Bool = false
13
+ @Published var presentationBackground: PresentationBackground = .default
14
+ @Published var presentationStyle: PresentationStyle = .fullscreen
8
15
 
9
- @Published var showSheet = false
10
- @Published var linkedAccount: Models.LinkedAccount?
11
- @Published var isPresented: Bool = false
12
- @Published var services: [Service]?
13
- @Published var cornerRadius: Double = 0
14
- @Published var customerName: String?
15
- @Published var showDynamicLoading: Bool = false
16
- @Published var presentationBackground: PresentationBackground = .default
17
- @Published var presentationStyle: PresentationStyle = .fullscreen
16
+ init() {}
18
17
 
19
- init(candleClient: Candle.CandleClient) {
20
- self.candleClient = candleClient
21
- }
22
-
23
- @available(iOS 17.0, *)
24
- var toCandlePresentationStyle: Candle.PresentationStyle {
25
- switch presentationStyle {
26
- case .fullscreen:
27
- return .fullScreen
28
- case .sheet:
29
- return .sheet
18
+ @available(iOS 17.0, *) var toCandlePresentationStyle: Candle.PresentationStyle {
19
+ switch presentationStyle {
20
+ case .fullscreen: return .fullScreen
21
+ case .sheet: return .sheet
22
+ }
30
23
  }
31
- }
32
24
 
33
- var toCandlePresentationBackground: AnyShapeStyle? {
34
- switch presentationBackground {
35
- case .default:
36
- return nil
37
- case .blur:
38
- return AnyShapeStyle(Material.regular)
25
+ var toCandlePresentationBackground: AnyShapeStyle? {
26
+ switch presentationBackground {
27
+ case .default: return nil
28
+ case .blur: return AnyShapeStyle(Material.regular)
29
+ }
39
30
  }
40
- }
41
31
  }
@@ -1,31 +1,22 @@
1
1
  import Candle
2
2
  import SwiftUI
3
3
 
4
- @available(iOS 17.0, *)
5
- struct CandleTradeExecutionSheetWrapper: View {
4
+ @available(iOS 17.0, *) struct CandleTradeExecutionSheetWrapper: View {
6
5
 
7
- let candleClient: CandleClient
6
+ @ObservedObject var viewModel: CandleActionViewModel
7
+ let presentationBackground: PresentationBackground
8
8
 
9
- @ObservedObject var viewModel: CandleActionViewModel
10
- let presentationBackground: PresentationBackground
11
-
12
- var toCandlePresentationBackground: AnyShapeStyle {
13
- switch presentationBackground {
14
- case .default:
15
- return AnyShapeStyle(Material.regular)
16
- case .blur:
17
- return AnyShapeStyle(Material.ultraThick)
9
+ var toCandlePresentationBackground: AnyShapeStyle {
10
+ switch presentationBackground {
11
+ case .default: return AnyShapeStyle(Material.regular)
12
+ case .blur: return AnyShapeStyle(Material.ultraThick)
13
+ }
18
14
  }
19
- }
20
15
 
21
- var body: some View {
22
- Color.clear
23
- .candleTradeExecutionSheet(
24
- item: $viewModel.tradeQuote,
25
- presentationBackground: toCandlePresentationBackground
26
- ) { result in
27
- viewModel.tradeResult = result
28
- }
29
- .environment(candleClient)
30
- }
16
+ var body: some View {
17
+ Color.clear.candleTradeExecutionSheet(
18
+ item: $viewModel.tradeQuote,
19
+ presentationBackground: toCandlePresentationBackground
20
+ ) { result in viewModel.tradeResult = result }
21
+ }
31
22
  }
@@ -2,35 +2,35 @@ import SwiftUI
2
2
  import UIKit
3
3
 
4
4
  extension UIViewController {
5
- func embed(_ child: UIViewController) {
6
- addChild(child)
7
- view.insertSubview(child.view, belowSubview: view.subviews.first ?? view)
8
- child.view.pinEdges(to: view)
9
- child.didMove(toParent: self)
10
- }
5
+ func embed(_ child: UIViewController) {
6
+ addChild(child)
7
+ view.insertSubview(child.view, belowSubview: view.subviews.first ?? view)
8
+ child.view.pinEdges(to: view)
9
+ child.didMove(toParent: self)
10
+ }
11
11
 
12
- func embedOnTop(_ child: UIViewController) {
13
- addChild(child)
14
- view.insertSubview(child.view, aboveSubview: view)
15
- child.view.pinEdges(to: view)
16
- child.didMove(toParent: self)
17
- }
12
+ func embedOnTop(_ child: UIViewController) {
13
+ addChild(child)
14
+ view.insertSubview(child.view, aboveSubview: view)
15
+ child.view.pinEdges(to: view)
16
+ child.didMove(toParent: self)
17
+ }
18
18
 
19
- func removeEmbedded(_ child: UIViewController) {
20
- child.willMove(toParent: nil)
21
- child.view.removeFromSuperview()
22
- child.removeFromParent()
23
- }
19
+ func removeEmbedded(_ child: UIViewController) {
20
+ child.willMove(toParent: nil)
21
+ child.view.removeFromSuperview()
22
+ child.removeFromParent()
23
+ }
24
24
  }
25
25
 
26
26
  extension UIView {
27
- func pinEdges(to superview: UIView) {
28
- translatesAutoresizingMaskIntoConstraints = false
29
- NSLayoutConstraint.activate([
30
- leadingAnchor.constraint(equalTo: superview.leadingAnchor),
31
- trailingAnchor.constraint(equalTo: superview.trailingAnchor),
32
- topAnchor.constraint(equalTo: superview.topAnchor),
33
- bottomAnchor.constraint(equalTo: superview.bottomAnchor),
34
- ])
35
- }
27
+ func pinEdges(to superview: UIView) {
28
+ translatesAutoresizingMaskIntoConstraints = false
29
+ NSLayoutConstraint.activate([
30
+ leadingAnchor.constraint(equalTo: superview.leadingAnchor),
31
+ trailingAnchor.constraint(equalTo: superview.trailingAnchor),
32
+ topAnchor.constraint(equalTo: superview.topAnchor),
33
+ bottomAnchor.constraint(equalTo: superview.bottomAnchor),
34
+ ])
35
+ }
36
36
  }