@swiftbrowser/swift 0.0.0-stage → 0.2.0
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/Package.swift +214 -0
- package/README.md +10 -2
- package/Sources/AVFoundation/AVFoundation.swift +131 -0
- package/Sources/AVFoundation/Asset.swift +487 -0
- package/Sources/AVFoundation/AudioSession.swift +144 -0
- package/Sources/AVFoundation/CMTime.swift +303 -0
- package/Sources/AVFoundation/Capture.swift +688 -0
- package/Sources/AVFoundation/Player.swift +749 -0
- package/Sources/AVFoundation/PlayerView.swift +117 -0
- package/Sources/AVKit/AVKit.swift +132 -0
- package/Sources/Accelerate/Accelerate.swift +122 -0
- package/Sources/AppIntents/AppIntents.swift +144 -0
- package/Sources/AppIntents/Parameters.swift +220 -0
- package/Sources/AppIntents/Shortcuts.swift +159 -0
- package/Sources/AudioToolbox/AudioToolbox.swift +55 -0
- package/Sources/AuthenticationServices/AuthenticationServices.swift +257 -0
- package/Sources/AuthenticationServices/Authorization.swift +251 -0
- package/Sources/Charts/Charts.swift +61 -0
- package/Sources/Combine/AnyCancellable.swift +65 -0
- package/Sources/Combine/AnyPublisher.swift +148 -0
- package/Sources/Combine/AnySubscriber.swift +230 -0
- package/Sources/Combine/Cancellable.swift +35 -0
- package/Sources/Combine/Codable.swift +29 -0
- package/Sources/Combine/CombineIdentifier.swift +45 -0
- package/Sources/Combine/Concurrency/ConcurrencyHelpers.swift +24 -0
- package/Sources/Combine/Concurrency/Future+Concurrency.swift +136 -0
- package/Sources/Combine/Concurrency/GENERATED-Publisher+Concurrency.swift +397 -0
- package/Sources/Combine/CurrentValueSubject.swift +252 -0
- package/Sources/Combine/CustomCombineIdentifierConvertible.swift +28 -0
- package/Sources/Combine/Future.swift +228 -0
- package/Sources/Combine/GENERATED-RootProtocols.swift +426 -0
- package/Sources/Combine/Helpers/ConduitBase.swift +40 -0
- package/Sources/Combine/Helpers/ConduitList.swift +59 -0
- package/Sources/Combine/Helpers/DebugHook.swift +177 -0
- package/Sources/Combine/Helpers/FilterProducer.swift +174 -0
- package/Sources/Combine/Helpers/Locking.swift +30 -0
- package/Sources/Combine/Helpers/PartialCompletion.swift +26 -0
- package/Sources/Combine/Helpers/ReduceProducer.swift +249 -0
- package/Sources/Combine/Helpers/SubjectSubscriber.swift +96 -0
- package/Sources/Combine/Helpers/SubscriberTap.swift +69 -0
- package/Sources/Combine/Helpers/SubscriptionStatus.swift +33 -0
- package/Sources/Combine/Helpers/SubscriptionTap.swift +33 -0
- package/Sources/Combine/Helpers/Utils.swift +30 -0
- package/Sources/Combine/Helpers/Violations.swift +33 -0
- package/Sources/Combine/ImmediateScheduler.swift +178 -0
- package/Sources/Combine/LICENSE +21 -0
- package/Sources/Combine/NotificationPublisher.swift +48 -0
- package/Sources/Combine/ObjectWillChange.swift +46 -0
- package/Sources/Combine/PassthroughSubject.swift +222 -0
- package/Sources/Combine/Publisher+Subscribe.swift +53 -0
- package/Sources/Combine/Publishers/Deferred.swift +48 -0
- package/Sources/Combine/Publishers/Empty.swift +54 -0
- package/Sources/Combine/Publishers/Fail.swift +42 -0
- package/Sources/Combine/Publishers/GENERATED-Publishers.Catch.swift +673 -0
- package/Sources/Combine/Publishers/GENERATED-Publishers.Encode.swift +388 -0
- package/Sources/Combine/Publishers/GENERATED-Publishers.MapKeyPath.swift +384 -0
- package/Sources/Combine/Publishers/Just.swift +313 -0
- package/Sources/Combine/Publishers/Optional.Publisher.swift +315 -0
- package/Sources/Combine/Publishers/Publishers.AllSatisfy.swift +217 -0
- package/Sources/Combine/Publishers/Publishers.AssertNoFailure.swift +158 -0
- package/Sources/Combine/Publishers/Publishers.Autoconnect.swift +193 -0
- package/Sources/Combine/Publishers/Publishers.Breakpoint.swift +231 -0
- package/Sources/Combine/Publishers/Publishers.Buffer.swift +356 -0
- package/Sources/Combine/Publishers/Publishers.Collect.swift +102 -0
- package/Sources/Combine/Publishers/Publishers.CollectByCount.swift +195 -0
- package/Sources/Combine/Publishers/Publishers.CompactMap.swift +241 -0
- package/Sources/Combine/Publishers/Publishers.Comparison.swift +371 -0
- package/Sources/Combine/Publishers/Publishers.Concatenate.swift +474 -0
- package/Sources/Combine/Publishers/Publishers.Contains.swift +293 -0
- package/Sources/Combine/Publishers/Publishers.Count.swift +87 -0
- package/Sources/Combine/Publishers/Publishers.Debounce.swift +332 -0
- package/Sources/Combine/Publishers/Publishers.Delay.swift +269 -0
- package/Sources/Combine/Publishers/Publishers.Drop.swift +155 -0
- package/Sources/Combine/Publishers/Publishers.DropUntilOutput.swift +283 -0
- package/Sources/Combine/Publishers/Publishers.DropWhile.swift +378 -0
- package/Sources/Combine/Publishers/Publishers.Filter.swift +248 -0
- package/Sources/Combine/Publishers/Publishers.First.swift +261 -0
- package/Sources/Combine/Publishers/Publishers.FlatMap.swift +533 -0
- package/Sources/Combine/Publishers/Publishers.HandleEvents.swift +260 -0
- package/Sources/Combine/Publishers/Publishers.IgnoreOutput.swift +109 -0
- package/Sources/Combine/Publishers/Publishers.Last.swift +252 -0
- package/Sources/Combine/Publishers/Publishers.MakeConnectable.swift +82 -0
- package/Sources/Combine/Publishers/Publishers.Map.swift +351 -0
- package/Sources/Combine/Publishers/Publishers.MapError.swift +140 -0
- package/Sources/Combine/Publishers/Publishers.MeasureInterval.swift +187 -0
- package/Sources/Combine/Publishers/Publishers.Multicast.swift +284 -0
- package/Sources/Combine/Publishers/Publishers.Output.swift +241 -0
- package/Sources/Combine/Publishers/Publishers.PrefixUntilOutput.swift +197 -0
- package/Sources/Combine/Publishers/Publishers.PrefixWhile.swift +176 -0
- package/Sources/Combine/Publishers/Publishers.Print.swift +206 -0
- package/Sources/Combine/Publishers/Publishers.ReceiveOn.swift +227 -0
- package/Sources/Combine/Publishers/Publishers.Reduce.swift +204 -0
- package/Sources/Combine/Publishers/Publishers.RemoveDuplicates.swift +264 -0
- package/Sources/Combine/Publishers/Publishers.ReplaceEmpty.swift +201 -0
- package/Sources/Combine/Publishers/Publishers.ReplaceError.swift +211 -0
- package/Sources/Combine/Publishers/Publishers.Retry.swift +274 -0
- package/Sources/Combine/Publishers/Publishers.Scan.swift +331 -0
- package/Sources/Combine/Publishers/Publishers.Sequence.swift +437 -0
- package/Sources/Combine/Publishers/Publishers.SetFailureType.swift +120 -0
- package/Sources/Combine/Publishers/Publishers.Share.swift +104 -0
- package/Sources/Combine/Publishers/Publishers.SubscribeOn.swift +197 -0
- package/Sources/Combine/Publishers/Publishers.SwitchToLatest.swift +444 -0
- package/Sources/Combine/Publishers/Publishers.Throttle.swift +359 -0
- package/Sources/Combine/Publishers/Publishers.Timeout.swift +301 -0
- package/Sources/Combine/Publishers/Publishers.Zip.swift +720 -0
- package/Sources/Combine/Publishers/Publishers.swift +13 -0
- package/Sources/Combine/Publishers/Record.swift +237 -0
- package/Sources/Combine/Publishers/Result.Publisher.swift +337 -0
- package/Sources/Combine/Result.swift +46 -0
- package/Sources/Combine/Scheduler.swift +89 -0
- package/Sources/Combine/Schedulers.swift +211 -0
- package/Sources/Combine/Subject+Void.swift +17 -0
- package/Sources/Combine/Subscriber+Void.swift +20 -0
- package/Sources/Combine/Subscribers/Subscribers.Assign.swift +175 -0
- package/Sources/Combine/Subscribers/Subscribers.Completion.swift +90 -0
- package/Sources/Combine/Subscribers/Subscribers.Demand.swift +476 -0
- package/Sources/Combine/Subscribers/Subscribers.Sink.swift +206 -0
- package/Sources/Combine/Subscribers/Subscribers.swift +9 -0
- package/Sources/Combine/Subscription.swift +22 -0
- package/Sources/Combine/Subscriptions.swift +42 -0
- package/Sources/Combine/SwiftUIObservation.swift +10 -0
- package/Sources/Combine/_Introspection.swift +107 -0
- package/Sources/CommonCrypto/CommonCrypto.swift +80 -0
- package/Sources/Compression/Compression.swift +365 -0
- package/Sources/Compression/Deflate.swift +407 -0
- package/Sources/Compression/Zlib.swift +179 -0
- package/Sources/CoreFoundationTypes/CoreFoundationTypes.swift +101 -0
- package/Sources/CoreGraphics/CoreGraphics.swift +411 -0
- package/Sources/CoreGraphics/ProjectionTransforms.swift +28 -0
- package/Sources/CoreHaptics/CoreHaptics.swift +399 -0
- package/Sources/CoreImage/CIColor.swift +41 -0
- package/Sources/CoreImage/CIContext.swift +31 -0
- package/Sources/CoreImage/CIDetector.swift +57 -0
- package/Sources/CoreImage/CIFilter.swift +243 -0
- package/Sources/CoreImage/CIFilterBuiltins.swift +136 -0
- package/Sources/CoreImage/CIImage.swift +162 -0
- package/Sources/CoreImage/QRCode.swift +393 -0
- package/Sources/CoreLocation/Coordinate.swift +30 -0
- package/Sources/CoreLocation/Location.swift +65 -0
- package/Sources/CoreML/Evaluation.swift +414 -0
- package/Sources/CoreML/FeatureValue.swift +266 -0
- package/Sources/CoreML/Model.swift +269 -0
- package/Sources/CoreML/MultiArray.swift +92 -0
- package/Sources/CoreML/Specification.swift +233 -0
- package/Sources/CoreText/CoreText.swift +64 -0
- package/Sources/CoreTransferable/CoreTransferable.swift +606 -0
- package/Sources/CryptoKit/ChaChaPoly.swift +258 -0
- package/Sources/CryptoKit/CryptoKit.swift +375 -0
- package/Sources/CryptoKit/Curve25519.swift +317 -0
- package/Sources/CryptoKit/P256.swift +321 -0
- package/Sources/FoundationBridge/AppStorage.swift +165 -0
- package/Sources/FoundationBridge/AssetResources.swift +90 -0
- package/Sources/FoundationBridge/AsyncBytes.swift +128 -0
- package/Sources/FoundationBridge/AsyncImage.swift +116 -0
- package/Sources/FoundationBridge/AttributedStrings.swift +16 -0
- package/Sources/FoundationBridge/Bundle.swift +119 -0
- package/Sources/FoundationBridge/CombineExports.swift +8 -0
- package/Sources/FoundationBridge/CoreFoundation.swift +77 -0
- package/Sources/FoundationBridge/Dispatch.swift +458 -0
- package/Sources/FoundationBridge/EnvironmentFoundation.swift +41 -0
- package/Sources/FoundationBridge/FileImporter.swift +128 -0
- package/Sources/FoundationBridge/FileSystem.swift +68 -0
- package/Sources/FoundationBridge/FoundationBridge.swift +29 -0
- package/Sources/FoundationBridge/HostResolution.swift +31 -0
- package/Sources/FoundationBridge/ItemProvider.swift +655 -0
- package/Sources/FoundationBridge/KeyValueObserving.swift +138 -0
- package/Sources/FoundationBridge/Links.swift +127 -0
- package/Sources/FoundationBridge/ListFormatter.swift +32 -0
- package/Sources/FoundationBridge/Locale.swift +86 -0
- package/Sources/FoundationBridge/Localization.swift +149 -0
- package/Sources/FoundationBridge/Locks.swift +50 -0
- package/Sources/FoundationBridge/Markdown.swift +527 -0
- package/Sources/FoundationBridge/MeasurementFormat.swift +95 -0
- package/Sources/FoundationBridge/NotificationCenter.swift +154 -0
- package/Sources/FoundationBridge/OpenURLHandlers.swift +60 -0
- package/Sources/FoundationBridge/Operation.swift +195 -0
- package/Sources/FoundationBridge/ProcessInfo.swift +32 -0
- package/Sources/FoundationBridge/RelativeDateTimeFormatter.swift +136 -0
- package/Sources/FoundationBridge/SceneStorage.swift +78 -0
- package/Sources/FoundationBridge/SecurityExports.swift +8 -0
- package/Sources/FoundationBridge/Selector.swift +226 -0
- package/Sources/FoundationBridge/StringComparators.swift +17 -0
- package/Sources/FoundationBridge/Table.swift +211 -0
- package/Sources/FoundationBridge/TextAttributes.swift +42 -0
- package/Sources/FoundationBridge/Timer.swift +53 -0
- package/Sources/FoundationBridge/UITextChecker.swift +30 -0
- package/Sources/FoundationBridge/URLSession.swift +718 -0
- package/Sources/FoundationBridge/UserDefaults.swift +183 -0
- package/Sources/FoundationBridge/WebAuthRedirects.swift +227 -0
- package/Sources/FoundationBridge/WebSocket.swift +187 -0
- package/Sources/FoundationModels/FoundationModels.swift +1098 -0
- package/Sources/ImageIO/GIF.swift +72 -0
- package/Sources/ImageIO/ImageIO.swift +248 -0
- package/Sources/ImageIO/ImageTypes.swift +28 -0
- package/Sources/LinkPresentation/LinkPresentation.swift +249 -0
- package/Sources/LocalAuthentication/LAContext.swift +86 -0
- package/Sources/MapKit/Geometry.swift +223 -0
- package/Sources/MapKit/Map.swift +638 -0
- package/Sources/MapKit/MapView.swift +229 -0
- package/Sources/MobileCoreServices/MobileCoreServices.swift +28 -0
- package/Sources/NaturalLanguage/LanguageIdentifier.swift +317 -0
- package/Sources/NaturalLanguage/NaturalLanguage.swift +135 -0
- package/Sources/OSLog/OSLog.swift +6 -0
- package/Sources/Photos/Photos.swift +572 -0
- package/Sources/PhotosUI/PhotosPicker.swift +248 -0
- package/Sources/PhotosUI/PhotosPickerItem.swift +261 -0
- package/Sources/QuickLook/QuickLook.swift +168 -0
- package/Sources/SafariServices/SafariServices.swift +106 -0
- package/Sources/Security/Security.swift +332 -0
- package/Sources/StoreKit/AppStore.swift +207 -0
- package/Sources/StoreKit/Products.swift +280 -0
- package/Sources/StoreKit/RequestReview.swift +28 -0
- package/Sources/StoreKit/StoreKit1.swift +486 -0
- package/Sources/StoreKit/StoreViews.swift +428 -0
- package/Sources/StoreKit/Transactions.swift +197 -0
- package/Sources/SwiftData/Macros.swift +58 -0
- package/Sources/SwiftData/ModelActor.swift +38 -0
- package/Sources/SwiftData/ModelContainer.swift +129 -0
- package/Sources/SwiftData/ModelContext.swift +451 -0
- package/Sources/SwiftData/PersistentModel.swift +238 -0
- package/Sources/SwiftData/Properties.swift +261 -0
- package/Sources/SwiftData/Query.swift +256 -0
- package/Sources/SwiftData/Schema.swift +192 -0
- package/Sources/SwiftData/Store.swift +146 -0
- package/Sources/SwiftData/StringPredicates.swift +125 -0
- package/Sources/SwiftDataMacros/EntryMacro.swift +82 -0
- package/Sources/SwiftDataMacros/GenerableMacro.swift +183 -0
- package/Sources/SwiftDataMacros/ModelActorMacro.swift +46 -0
- package/Sources/SwiftDataMacros/ModelMacro.swift +260 -0
- package/Sources/SwiftDataMacros/Plugin.swift +18 -0
- package/Sources/SwiftDataMacros/PredicateMacro.swift +1244 -0
- package/Sources/SwiftUI/API/Accessibility.swift +181 -0
- package/Sources/SwiftUI/API/AccessibilityExtras.swift +33 -0
- package/Sources/SwiftUI/API/AccessibilityFocus.swift +63 -0
- package/Sources/SwiftUI/API/Alert.swift +221 -0
- package/Sources/SwiftUI/API/AlignmentGuides.swift +65 -0
- package/Sources/SwiftUI/API/Animation.swift +285 -0
- package/Sources/SwiftUI/API/App.swift +87 -0
- package/Sources/SwiftUI/API/BindingCollections.swift +35 -0
- package/Sources/SwiftUI/API/BindingForEach.swift +27 -0
- package/Sources/SwiftUI/API/Bitmaps.swift +254 -0
- package/Sources/SwiftUI/API/ButtonStyles.swift +96 -0
- package/Sources/SwiftUI/API/Canvas.swift +337 -0
- package/Sources/SwiftUI/API/Color.swift +237 -0
- package/Sources/SwiftUI/API/ColorEffects.swift +52 -0
- package/Sources/SwiftUI/API/ColorPickerAndLabeledContent.swift +138 -0
- package/Sources/SwiftUI/API/ColorSpaces.swift +161 -0
- package/Sources/SwiftUI/API/Commands.swift +106 -0
- package/Sources/SwiftUI/API/ContainerBackground.swift +28 -0
- package/Sources/SwiftUI/API/ContentShape.swift +33 -0
- package/Sources/SwiftUI/API/ContentSizeCategory.swift +35 -0
- package/Sources/SwiftUI/API/ContentUnavailable.swift +101 -0
- package/Sources/SwiftUI/API/Controls.swift +300 -0
- package/Sources/SwiftUI/API/CustomLayout.swift +442 -0
- package/Sources/SwiftUI/API/CustomToolbarContent.swift +46 -0
- package/Sources/SwiftUI/API/Decorations.swift +92 -0
- package/Sources/SwiftUI/API/EditMode.swift +212 -0
- package/Sources/SwiftUI/API/Effects.swift +388 -0
- package/Sources/SwiftUI/API/Entry.swift +8 -0
- package/Sources/SwiftUI/API/Environment.swift +439 -0
- package/Sources/SwiftUI/API/EnvironmentSendable.swift +6 -0
- package/Sources/SwiftUI/API/Focus.swift +137 -0
- package/Sources/SwiftUI/API/Font.swift +131 -0
- package/Sources/SwiftUI/API/Gauge.swift +290 -0
- package/Sources/SwiftUI/API/Geometry.swift +89 -0
- package/Sources/SwiftUI/API/GeometryEffects.swift +232 -0
- package/Sources/SwiftUI/API/GeometryReader.swift +135 -0
- package/Sources/SwiftUI/API/GestureState.swift +65 -0
- package/Sources/SwiftUI/API/Gestures.swift +342 -0
- package/Sources/SwiftUI/API/Glass.swift +127 -0
- package/Sources/SwiftUI/API/Grid.swift +188 -0
- package/Sources/SwiftUI/API/GroupBoxAndControlGroup.swift +130 -0
- package/Sources/SwiftUI/API/KeyPress.swift +54 -0
- package/Sources/SwiftUI/API/LabelStyle.swift +124 -0
- package/Sources/SwiftUI/API/Layout.swift +220 -0
- package/Sources/SwiftUI/API/LazyStacks.swift +49 -0
- package/Sources/SwiftUI/API/LegacyAlert.swift +97 -0
- package/Sources/SwiftUI/API/Lists.swift +331 -0
- package/Sources/SwiftUI/API/Menu.swift +58 -0
- package/Sources/SwiftUI/API/Modifiers.swift +313 -0
- package/Sources/SwiftUI/API/MoreModifiers.swift +100 -0
- package/Sources/SwiftUI/API/Namespace.swift +44 -0
- package/Sources/SwiftUI/API/Navigation.swift +386 -0
- package/Sources/SwiftUI/API/NavigationDestinationBindings.swift +55 -0
- package/Sources/SwiftUI/API/ObservableObject.swift +293 -0
- package/Sources/SwiftUI/API/OnChange.swift +48 -0
- package/Sources/SwiftUI/API/Path.swift +543 -0
- package/Sources/SwiftUI/API/Phase8Controls.swift +411 -0
- package/Sources/SwiftUI/API/PhaseAnimator.swift +130 -0
- package/Sources/SwiftUI/API/Picker.swift +185 -0
- package/Sources/SwiftUI/API/PointerAndKeyboard.swift +77 -0
- package/Sources/SwiftUI/API/Popover.swift +41 -0
- package/Sources/SwiftUI/API/Preferences.swift +262 -0
- package/Sources/SwiftUI/API/Presentation.swift +122 -0
- package/Sources/SwiftUI/API/PresentationExtras.swift +60 -0
- package/Sources/SwiftUI/API/Primitives.swift +517 -0
- package/Sources/SwiftUI/API/Publishers.swift +107 -0
- package/Sources/SwiftUI/API/Redaction.swift +75 -0
- package/Sources/SwiftUI/API/RowActions.swift +84 -0
- package/Sources/SwiftUI/API/Scenes.swift +131 -0
- package/Sources/SwiftUI/API/ScrollModifiers.swift +132 -0
- package/Sources/SwiftUI/API/ScrollTargets.swift +104 -0
- package/Sources/SwiftUI/API/ScrollViewReader.swift +144 -0
- package/Sources/SwiftUI/API/SectionSupplements.swift +96 -0
- package/Sources/SwiftUI/API/Shape.swift +214 -0
- package/Sources/SwiftUI/API/ShapeStyle.swift +409 -0
- package/Sources/SwiftUI/API/ShapeTrim.swift +78 -0
- package/Sources/SwiftUI/API/Sharing.swift +193 -0
- package/Sources/SwiftUI/API/StackLayouts.swift +199 -0
- package/Sources/SwiftUI/API/State.swift +144 -0
- package/Sources/SwiftUI/API/StatusGaps.swift +121 -0
- package/Sources/SwiftUI/API/StrokeStyle.swift +30 -0
- package/Sources/SwiftUI/API/SymbolEffects.swift +203 -0
- package/Sources/SwiftUI/API/TabContent.swift +841 -0
- package/Sources/SwiftUI/API/Table.swift +382 -0
- package/Sources/SwiftUI/API/Tabs.swift +263 -0
- package/Sources/SwiftUI/API/Tasks.swift +35 -0
- package/Sources/SwiftUI/API/Text.swift +386 -0
- package/Sources/SwiftUI/API/TextDates.swift +61 -0
- package/Sources/SwiftUI/API/TextDecorations.swift +52 -0
- package/Sources/SwiftUI/API/TextFieldAxis.swift +103 -0
- package/Sources/SwiftUI/API/TextFieldCommit.swift +52 -0
- package/Sources/SwiftUI/API/Timeline.swift +212 -0
- package/Sources/SwiftUI/API/Toolbar.swift +251 -0
- package/Sources/SwiftUI/API/Transfer.swift +145 -0
- package/Sources/SwiftUI/API/UnevenRoundedRectangle.swift +66 -0
- package/Sources/SwiftUI/API/Video.swift +64 -0
- package/Sources/SwiftUI/API/View.swift +215 -0
- package/Sources/SwiftUI/API/ViewModifier.swift +43 -0
- package/Sources/SwiftUI/API/VisualEffect.swift +155 -0
- package/Sources/SwiftUI/API/Windows.swift +25 -0
- package/Sources/SwiftUI/Charts/Axis.swift +325 -0
- package/Sources/SwiftUI/Charts/AxisFormatsAndRanges.swift +68 -0
- package/Sources/SwiftUI/Charts/Chart.swift +660 -0
- package/Sources/SwiftUI/Charts/ChartContent.swift +376 -0
- package/Sources/SwiftUI/Charts/ChartProxy.swift +57 -0
- package/Sources/SwiftUI/Charts/Marks.swift +204 -0
- package/Sources/SwiftUI/Charts/Plottable.swift +99 -0
- package/Sources/SwiftUI/Charts/Scales.swift +326 -0
- package/Sources/SwiftUI/Localization/Localization.swift +498 -0
- package/Sources/SwiftUI/Localization/PluralRules.swift +127 -0
- package/Sources/SwiftUI/Runtime/Executor.swift +85 -0
- package/Sources/SwiftUI/Runtime/Exports.swift +101 -0
- package/Sources/SwiftUI/Runtime/ImageSource.swift +310 -0
- package/Sources/SwiftUI/Runtime/JSON.swift +143 -0
- package/Sources/SwiftUI/Runtime/JSONParser.swift +443 -0
- package/Sources/SwiftUI/Runtime/LazyRows.swift +99 -0
- package/Sources/SwiftUI/Runtime/Measurements.swift +140 -0
- package/Sources/SwiftUI/Runtime/Ops.swift +152 -0
- package/Sources/SwiftUI/Runtime/Reconciler.swift +219 -0
- package/Sources/SwiftUI/Runtime/Replay.swift +382 -0
- package/Sources/SwiftUI/Runtime/Runtime.swift +2146 -0
- package/Sources/SwiftUI/Runtime/Sameness.swift +152 -0
- package/Sources/SwiftUI/Runtime/ViewPath.swift +89 -0
- package/Sources/SwiftUI/Runtime/ViewTraits.swift +175 -0
- package/Sources/SwiftUI/Runtime/WebAuthHeadless.swift +49 -0
- package/Sources/Symbols/Symbols.swift +25 -0
- package/Sources/Translation/Translation.swift +423 -0
- package/Sources/UIKit/Activity.swift +213 -0
- package/Sources/UIKit/Alerts.swift +69 -0
- package/Sources/UIKit/AppDelegate.swift +222 -0
- package/Sources/UIKit/Appearance.swift +84 -0
- package/Sources/UIKit/ColorConversions.swift +70 -0
- package/Sources/UIKit/Controls.swift +225 -0
- package/Sources/UIKit/Device.swift +200 -0
- package/Sources/UIKit/Feedback.swift +65 -0
- package/Sources/UIKit/Font.swift +307 -0
- package/Sources/UIKit/Graphics.swift +204 -0
- package/Sources/UIKit/HostingController.swift +185 -0
- package/Sources/UIKit/Identity.swift +24 -0
- package/Sources/UIKit/Introspectable.swift +510 -0
- package/Sources/UIKit/Pasteboard.swift +363 -0
- package/Sources/UIKit/PhotoAlbum.swift +81 -0
- package/Sources/UIKit/RemoteNotifications.swift +15 -0
- package/Sources/UIKit/Representable.swift +288 -0
- package/Sources/UIKit/SafeArea.swift +12 -0
- package/Sources/UIKit/SceneDelegates.swift +132 -0
- package/Sources/UIKit/Scenes.swift +40 -0
- package/Sources/UIKit/ScrollView.swift +157 -0
- package/Sources/UIKit/ShortcutItems.swift +67 -0
- package/Sources/UIKit/SymbolConfiguration.swift +124 -0
- package/Sources/UIKit/TargetAction.swift +123 -0
- package/Sources/UIKit/TextPaste.swift +161 -0
- package/Sources/UIKit/TextView.swift +538 -0
- package/Sources/UIKit/UIKit.swift +292 -0
- package/Sources/UIKit/UIView.swift +855 -0
- package/Sources/UIKit/ViewTranslation.swift +311 -0
- package/Sources/UniformTypeIdentifiers/UTType.swift +196 -0
- package/Sources/UserNotifications/Content.swift +370 -0
- package/Sources/UserNotifications/NotificationCenter.swift +309 -0
- package/Sources/WeatherKit/WeatherKit.swift +228 -0
- package/Sources/WebKit/WebKit.swift +245 -0
- package/Sources/os/os.swift +376 -0
- package/Sources/zlib/zlib.swift +6 -0
- package/index.d.ts +2 -0
- package/index.mjs +16 -0
- package/manifest.d.mts +2 -0
- package/manifest.mjs +39 -0
- package/package.json +30 -4
- package/sync-sources.mjs +33 -0
|
@@ -0,0 +1,510 @@
|
|
|
1
|
+
// UIKit's scroll views, text inputs, controls, windows, view controllers and
|
|
2
|
+
// presentation controllers, as declarations. SwiftUI-Introspect (the real
|
|
3
|
+
// package, built against the shim) types its closures with them: on iOS
|
|
4
|
+
// SwiftUI draws a `List` with a `UICollectionView`, a `TextField` with a
|
|
5
|
+
// `UITextField`, and the library finds that object next to its own probe
|
|
6
|
+
// view controller and hands it to the app. In the browser no UIKit object is
|
|
7
|
+
// under a SwiftUI view, so the search finds nothing and nothing is handed
|
|
8
|
+
// over, but the closures, and code that customizes these classes, have to
|
|
9
|
+
// compile.
|
|
10
|
+
// Like the views in UIView.swift they keep their state and draw nothing.
|
|
11
|
+
|
|
12
|
+
import Foundation
|
|
13
|
+
import FoundationBridge
|
|
14
|
+
import SwiftUI
|
|
15
|
+
|
|
16
|
+
// MARK: - Scroll views
|
|
17
|
+
|
|
18
|
+
// `UIScrollView` is in ScrollView.swift (a representable's is drawn).
|
|
19
|
+
|
|
20
|
+
/// A table view (SwiftUI's `List` up to iOS 15).
|
|
21
|
+
@MainActor
|
|
22
|
+
open class UITableView: UIScrollView {
|
|
23
|
+
public enum Style: Int, Sendable { case plain, grouped, insetGrouped }
|
|
24
|
+
|
|
25
|
+
open var style: Style = .plain
|
|
26
|
+
open var rowHeight: CGFloat = 44
|
|
27
|
+
open var backgroundView: UIView?
|
|
28
|
+
open var separatorColor: UIColor?
|
|
29
|
+
open var allowsSelection = true
|
|
30
|
+
|
|
31
|
+
open func reloadData() {}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/// A collection view (SwiftUI's `List` from iOS 16).
|
|
35
|
+
@MainActor
|
|
36
|
+
open class UICollectionView: UIScrollView {
|
|
37
|
+
open var backgroundView: UIView?
|
|
38
|
+
open var allowsSelection = true
|
|
39
|
+
|
|
40
|
+
open func reloadData() {}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/// A table view's row.
|
|
44
|
+
@MainActor
|
|
45
|
+
open class UITableViewCell: UIView {
|
|
46
|
+
public let contentView = UIView()
|
|
47
|
+
open var backgroundView: UIView?
|
|
48
|
+
open var selectedBackgroundView: UIView?
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/// A collection view's cell.
|
|
52
|
+
@MainActor
|
|
53
|
+
open class UICollectionViewCell: UIView {
|
|
54
|
+
public let contentView = UIView()
|
|
55
|
+
open var backgroundView: UIView?
|
|
56
|
+
open var selectedBackgroundView: UIView?
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// MARK: - Text
|
|
60
|
+
|
|
61
|
+
/// A one-line text field.
|
|
62
|
+
@MainActor
|
|
63
|
+
open class UITextField: UIControl {
|
|
64
|
+
open var text: String?
|
|
65
|
+
open var placeholder: String?
|
|
66
|
+
open var font: UIFont?
|
|
67
|
+
open var textColor: UIColor?
|
|
68
|
+
open var isSecureTextEntry = false
|
|
69
|
+
open var keyboardType: UIKeyboardType = .default
|
|
70
|
+
public private(set) var isFirstResponder = false
|
|
71
|
+
|
|
72
|
+
@discardableResult open func becomeFirstResponder() -> Bool {
|
|
73
|
+
isFirstResponder = true
|
|
74
|
+
return true
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@discardableResult open func resignFirstResponder() -> Bool {
|
|
78
|
+
isFirstResponder = false
|
|
79
|
+
return true
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// `UITextView` is in TextView.swift (a representable's is drawn and edited).
|
|
84
|
+
|
|
85
|
+
/// A search bar (`.searchable`).
|
|
86
|
+
@MainActor
|
|
87
|
+
open class UISearchBar: UIView {
|
|
88
|
+
open var text: String?
|
|
89
|
+
open var placeholder: String?
|
|
90
|
+
public let searchTextField = UITextField()
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// MARK: - Controls
|
|
94
|
+
|
|
95
|
+
/// A switch (`Toggle`).
|
|
96
|
+
@MainActor
|
|
97
|
+
open class UISwitch: UIControl {
|
|
98
|
+
open var isOn = false
|
|
99
|
+
open var onTintColor: UIColor?
|
|
100
|
+
|
|
101
|
+
open func setOn(_ on: Bool, animated: Bool) { isOn = on }
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/// A slider (`Slider`).
|
|
105
|
+
@MainActor
|
|
106
|
+
open class UISlider: UIControl {
|
|
107
|
+
open var value: Float = 0
|
|
108
|
+
open var minimumValue: Float = 0
|
|
109
|
+
open var maximumValue: Float = 1
|
|
110
|
+
open var minimumTrackTintColor: UIColor?
|
|
111
|
+
open var maximumTrackTintColor: UIColor?
|
|
112
|
+
|
|
113
|
+
open func setValue(_ value: Float, animated: Bool) { self.value = value }
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/// A stepper (`Stepper`).
|
|
117
|
+
@MainActor
|
|
118
|
+
open class UIStepper: UIControl {
|
|
119
|
+
open var value: Double = 0
|
|
120
|
+
open var minimumValue: Double = 0
|
|
121
|
+
open var maximumValue: Double = 100
|
|
122
|
+
open var stepValue: Double = 1
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/// A date picker (`DatePicker`).
|
|
126
|
+
@MainActor
|
|
127
|
+
open class UIDatePicker: UIControl {
|
|
128
|
+
open var date = Date()
|
|
129
|
+
open var minimumDate: Date?
|
|
130
|
+
open var maximumDate: Date?
|
|
131
|
+
open var minuteInterval = 1
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/// A segmented control (`Picker` with the segmented style).
|
|
135
|
+
@MainActor
|
|
136
|
+
open class UISegmentedControl: UIControl {
|
|
137
|
+
open var selectedSegmentIndex = -1
|
|
138
|
+
open var numberOfSegments: Int { 0 }
|
|
139
|
+
open var selectedSegmentTintColor: UIColor?
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/// A wheel picker (`Picker` with the wheel style).
|
|
143
|
+
@MainActor
|
|
144
|
+
open class UIPickerView: UIView {
|
|
145
|
+
open func reloadAllComponents() {}
|
|
146
|
+
open func selectedRow(inComponent component: Int) -> Int { -1 }
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/// A progress bar (`ProgressView` with the linear style).
|
|
150
|
+
@MainActor
|
|
151
|
+
open class UIProgressView: UIView {
|
|
152
|
+
open var progress: Float = 0
|
|
153
|
+
open var progressTintColor: UIColor?
|
|
154
|
+
open var trackTintColor: UIColor?
|
|
155
|
+
|
|
156
|
+
open func setProgress(_ progress: Float, animated: Bool) { self.progress = progress }
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/// A color well (`ColorPicker`).
|
|
160
|
+
@MainActor
|
|
161
|
+
open class UIColorWell: UIControl {
|
|
162
|
+
open var selectedColor: UIColor?
|
|
163
|
+
open var supportsAlpha = true
|
|
164
|
+
open var title: String?
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/// A page control (the dots of a `TabView` with the page style).
|
|
168
|
+
@MainActor
|
|
169
|
+
open class UIPageControl: UIControl {
|
|
170
|
+
open var numberOfPages = 0
|
|
171
|
+
open var currentPage = 0
|
|
172
|
+
open var hidesForSinglePage = false
|
|
173
|
+
open var pageIndicatorTintColor: UIColor?
|
|
174
|
+
open var currentPageIndicatorTintColor: UIColor?
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// MARK: - Bars and windows
|
|
178
|
+
|
|
179
|
+
/// A navigation controller's bar.
|
|
180
|
+
@MainActor
|
|
181
|
+
open class UINavigationBar: UIView {
|
|
182
|
+
open var prefersLargeTitles = false
|
|
183
|
+
open var isTranslucent = true
|
|
184
|
+
open var barTintColor: UIColor?
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/// A tab bar controller's bar.
|
|
188
|
+
@MainActor
|
|
189
|
+
open class UITabBar: UIView {
|
|
190
|
+
open var isTranslucent = true
|
|
191
|
+
open var barTintColor: UIColor?
|
|
192
|
+
open var unselectedItemTintColor: UIColor?
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/// A window and its root view controller.
|
|
196
|
+
@MainActor
|
|
197
|
+
open class UIWindow: UIView {
|
|
198
|
+
open var rootViewController: UIViewController?
|
|
199
|
+
public private(set) var isKeyWindow = false
|
|
200
|
+
/// The scene the window belongs to; the page's one scene when made from it.
|
|
201
|
+
open weak var windowScene: UIWindowScene?
|
|
202
|
+
|
|
203
|
+
/// A window in `windowScene`. It is kept and never drawn: SwiftUI draws the page.
|
|
204
|
+
public convenience init(windowScene: UIWindowScene) {
|
|
205
|
+
self.init(frame: .zero)
|
|
206
|
+
self.windowScene = windowScene
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
open func makeKeyAndVisible() {
|
|
210
|
+
isKeyWindow = true
|
|
211
|
+
isHidden = false
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
open func makeKey() { isKeyWindow = true }
|
|
215
|
+
open func resignKey() { isKeyWindow = false }
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// MARK: - View controllers
|
|
219
|
+
|
|
220
|
+
/// The status bar's style: dark content, light content, or whichever suits the interface style.
|
|
221
|
+
public enum UIStatusBarStyle: Int, Sendable {
|
|
222
|
+
case `default` = 0
|
|
223
|
+
case lightContent = 1
|
|
224
|
+
case darkContent = 3
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/// A view controller: its view (made on first use), children and
|
|
228
|
+
/// presentations, kept. Nothing reaches the screen.
|
|
229
|
+
@MainActor
|
|
230
|
+
open class UIViewController {
|
|
231
|
+
open var title: String?
|
|
232
|
+
open var overrideUserInterfaceStyle: UIUserInterfaceStyle = .unspecified
|
|
233
|
+
open var modalPresentationStyle: UIModalPresentationStyle = .automatic
|
|
234
|
+
open var preferredContentSize: CGSize = .zero
|
|
235
|
+
/// Kept: a representable's view is laid out in the SwiftUI safe area.
|
|
236
|
+
open var additionalSafeAreaInsets: UIEdgeInsets = .zero
|
|
237
|
+
/// The status bar is the page's (the phone frame draws its own): these are asked, and not used.
|
|
238
|
+
open var preferredStatusBarStyle: UIStatusBarStyle { .default }
|
|
239
|
+
open var prefersStatusBarHidden: Bool { false }
|
|
240
|
+
open func setNeedsStatusBarAppearanceUpdate() {}
|
|
241
|
+
/// Asked, and not used: the page stays portrait.
|
|
242
|
+
open var supportedInterfaceOrientations: UIInterfaceOrientationMask { .allButUpsideDown }
|
|
243
|
+
open var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation { .portrait }
|
|
244
|
+
open var shouldAutorotate: Bool { true }
|
|
245
|
+
/// Not called: the page's taps reach buttons and SwiftUI views (Controls.swift).
|
|
246
|
+
open func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {}
|
|
247
|
+
open func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {}
|
|
248
|
+
open func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {}
|
|
249
|
+
open func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {}
|
|
250
|
+
public private(set) weak var parent: UIViewController?
|
|
251
|
+
public private(set) var children: [UIViewController] = []
|
|
252
|
+
public private(set) weak var presentingViewController: UIViewController?
|
|
253
|
+
public private(set) var presentedViewController: UIViewController?
|
|
254
|
+
private var loadedView: UIView?
|
|
255
|
+
/// Set while a `UIViewControllerRepresentable` shows the controller: its
|
|
256
|
+
/// environment's `dismiss` (Representable.swift).
|
|
257
|
+
var _representableDismiss: (() -> Void)?
|
|
258
|
+
|
|
259
|
+
public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: FoundationBridge.Bundle?) {}
|
|
260
|
+
|
|
261
|
+
public convenience init() { self.init(nibName: nil, bundle: nil) }
|
|
262
|
+
|
|
263
|
+
public required init?(coder: NSCoder) {}
|
|
264
|
+
|
|
265
|
+
/// The root view, made by `loadView()` (then `viewDidLoad()`) the first time it is read.
|
|
266
|
+
open var view: UIView! {
|
|
267
|
+
get {
|
|
268
|
+
if loadedView == nil {
|
|
269
|
+
loadView()
|
|
270
|
+
if loadedView == nil { loadedView = UIView() }
|
|
271
|
+
viewDidLoad()
|
|
272
|
+
}
|
|
273
|
+
return loadedView
|
|
274
|
+
}
|
|
275
|
+
set { loadedView = newValue }
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
public var viewIfLoaded: UIView? { loadedView }
|
|
279
|
+
public var isViewLoaded: Bool { loadedView != nil }
|
|
280
|
+
|
|
281
|
+
open func loadView() { loadedView = UIView() }
|
|
282
|
+
open func loadViewIfNeeded() { _ = view }
|
|
283
|
+
open func viewDidLoad() {}
|
|
284
|
+
open func viewWillAppear(_ animated: Bool) {}
|
|
285
|
+
open func viewDidAppear(_ animated: Bool) {}
|
|
286
|
+
open func viewWillDisappear(_ animated: Bool) {}
|
|
287
|
+
open func viewDidDisappear(_ animated: Bool) {}
|
|
288
|
+
open func viewWillLayoutSubviews() {}
|
|
289
|
+
open func viewDidLayoutSubviews() {}
|
|
290
|
+
|
|
291
|
+
open func addChild(_ childController: UIViewController) {
|
|
292
|
+
childController.removeFromParent()
|
|
293
|
+
children.append(childController)
|
|
294
|
+
childController.parent = self
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
open func removeFromParent() {
|
|
298
|
+
parent?.children.removeAll { $0 === self }
|
|
299
|
+
parent = nil
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
open func willMove(toParent parent: UIViewController?) {}
|
|
303
|
+
open func didMove(toParent parent: UIViewController?) {}
|
|
304
|
+
|
|
305
|
+
/// Records the presentation, and tells the presented controller it
|
|
306
|
+
/// appeared (SafariServices' controller opens its tab then); nothing is shown.
|
|
307
|
+
open func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil) {
|
|
308
|
+
presentedViewController = viewControllerToPresent
|
|
309
|
+
viewControllerToPresent.presentingViewController = self
|
|
310
|
+
viewControllerToPresent.viewWillAppear(flag)
|
|
311
|
+
viewControllerToPresent.viewDidAppear(flag)
|
|
312
|
+
completion?()
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/// Kept: the page never rotates or resizes a controller's view this way.
|
|
316
|
+
open func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {}
|
|
317
|
+
|
|
318
|
+
open func dismiss(animated flag: Bool, completion: (() -> Void)? = nil) {
|
|
319
|
+
if presentedViewController == nil, presentingViewController == nil, let dismissRepresentable = _representableDismiss {
|
|
320
|
+
// Shown by a representable: dismiss the SwiftUI presentation it is in, as on iOS.
|
|
321
|
+
dismissRepresentable()
|
|
322
|
+
completion?()
|
|
323
|
+
return
|
|
324
|
+
}
|
|
325
|
+
let dismissed: UIViewController?
|
|
326
|
+
if let presented = presentedViewController {
|
|
327
|
+
presented.presentingViewController = nil
|
|
328
|
+
presentedViewController = nil
|
|
329
|
+
dismissed = presented
|
|
330
|
+
} else {
|
|
331
|
+
presentingViewController?.presentedViewController = nil
|
|
332
|
+
presentingViewController = nil
|
|
333
|
+
dismissed = self
|
|
334
|
+
}
|
|
335
|
+
dismissed?.viewWillDisappear(flag)
|
|
336
|
+
dismissed?.viewDidDisappear(flag)
|
|
337
|
+
completion?()
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
private func nearest<Controller: UIViewController>(_ type: Controller.Type) -> Controller? {
|
|
341
|
+
var current = parent
|
|
342
|
+
while let controller = current {
|
|
343
|
+
if let match = controller as? Controller { return match }
|
|
344
|
+
current = controller.parent
|
|
345
|
+
}
|
|
346
|
+
return nil
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
open var navigationController: UINavigationController? { nearest(UINavigationController.self) }
|
|
350
|
+
open var tabBarController: UITabBarController? { nearest(UITabBarController.self) }
|
|
351
|
+
open var splitViewController: UISplitViewController? { nearest(UISplitViewController.self) }
|
|
352
|
+
|
|
353
|
+
/// Nothing is presented through a presentation controller in the browser.
|
|
354
|
+
open var presentationController: UIPresentationController? { nil }
|
|
355
|
+
open var sheetPresentationController: UISheetPresentationController? { nil }
|
|
356
|
+
open var popoverPresentationController: UIPopoverPresentationController? { nil }
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
public enum UIModalPresentationStyle: Int, Sendable {
|
|
360
|
+
case fullScreen = 0, pageSheet, formSheet, currentContext, custom, overFullScreen, overCurrentContext, popover
|
|
361
|
+
case none = -1
|
|
362
|
+
case automatic = -2
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/// A navigation stack of view controllers.
|
|
366
|
+
@MainActor
|
|
367
|
+
open class UINavigationController: UIViewController {
|
|
368
|
+
public let navigationBar = UINavigationBar()
|
|
369
|
+
open var isNavigationBarHidden = false
|
|
370
|
+
|
|
371
|
+
open var viewControllers: [UIViewController] {
|
|
372
|
+
get { children }
|
|
373
|
+
set {
|
|
374
|
+
for child in children { child.removeFromParent() }
|
|
375
|
+
for controller in newValue { addChild(controller) }
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
open var topViewController: UIViewController? { children.last }
|
|
380
|
+
/// What is showing: a controller the top one presents, else the top one.
|
|
381
|
+
open var visibleViewController: UIViewController? { topViewController?.presentedViewController ?? topViewController }
|
|
382
|
+
|
|
383
|
+
public convenience init(rootViewController: UIViewController) {
|
|
384
|
+
self.init(nibName: nil, bundle: nil)
|
|
385
|
+
addChild(rootViewController)
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
open func pushViewController(_ viewController: UIViewController, animated: Bool) {
|
|
389
|
+
addChild(viewController)
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
@discardableResult
|
|
393
|
+
open func popViewController(animated: Bool) -> UIViewController? {
|
|
394
|
+
guard children.count > 1, let top = children.last else { return nil }
|
|
395
|
+
top.removeFromParent()
|
|
396
|
+
return top
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
open func setNavigationBarHidden(_ hidden: Bool, animated: Bool) { isNavigationBarHidden = hidden }
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
/// Tabs of view controllers.
|
|
403
|
+
@MainActor
|
|
404
|
+
open class UITabBarController: UIViewController {
|
|
405
|
+
public let tabBar = UITabBar()
|
|
406
|
+
open var selectedIndex = 0
|
|
407
|
+
|
|
408
|
+
open var viewControllers: [UIViewController]? {
|
|
409
|
+
get { children }
|
|
410
|
+
set {
|
|
411
|
+
for child in children { child.removeFromParent() }
|
|
412
|
+
for controller in newValue ?? [] { addChild(controller) }
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
open var selectedViewController: UIViewController? {
|
|
417
|
+
children.indices.contains(selectedIndex) ? children[selectedIndex] : nil
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/// Columns of view controllers (`NavigationSplitView`).
|
|
422
|
+
@MainActor
|
|
423
|
+
open class UISplitViewController: UIViewController {
|
|
424
|
+
open var preferredPrimaryColumnWidthFraction: CGFloat = 0.4
|
|
425
|
+
open var presentsWithGesture = true
|
|
426
|
+
|
|
427
|
+
open var viewControllers: [UIViewController] {
|
|
428
|
+
get { children }
|
|
429
|
+
set {
|
|
430
|
+
for child in children { child.removeFromParent() }
|
|
431
|
+
for controller in newValue { addChild(controller) }
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
// MARK: - Presentation controllers
|
|
437
|
+
|
|
438
|
+
/// What presents a view controller (a sheet, a full-screen cover, a popover).
|
|
439
|
+
@MainActor
|
|
440
|
+
open class UIPresentationController {
|
|
441
|
+
public let presentedViewController: UIViewController
|
|
442
|
+
public let presentingViewController: UIViewController?
|
|
443
|
+
open weak var delegate: (any UIAdaptivePresentationControllerDelegate)?
|
|
444
|
+
|
|
445
|
+
public init(presentedViewController: UIViewController, presenting presentingViewController: UIViewController?) {
|
|
446
|
+
self.presentedViewController = presentedViewController
|
|
447
|
+
self.presentingViewController = presentingViewController
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/// A sheet's presentation controller.
|
|
452
|
+
@MainActor
|
|
453
|
+
open class UISheetPresentationController: UIPresentationController {
|
|
454
|
+
open var prefersGrabberVisible = false
|
|
455
|
+
open var preferredCornerRadius: CGFloat?
|
|
456
|
+
open var prefersScrollingExpandsWhenScrolledToEdge = true
|
|
457
|
+
/// The heights the sheet may rest at; kept (nothing is shown).
|
|
458
|
+
open var detents: [Detent] = [.large()]
|
|
459
|
+
open var selectedDetentIdentifier: Detent.Identifier?
|
|
460
|
+
open var largestUndimmedDetentIdentifier: Detent.Identifier?
|
|
461
|
+
open var prefersEdgeAttachedInCompactHeight = false
|
|
462
|
+
open var widthFollowsPreferredContentSizeWhenEdgeAttached = false
|
|
463
|
+
|
|
464
|
+
open func animateChanges(_ changes: () -> Void) { changes() }
|
|
465
|
+
|
|
466
|
+
/// A height a sheet rests at.
|
|
467
|
+
@MainActor
|
|
468
|
+
public final class Detent {
|
|
469
|
+
public struct Identifier: RawRepresentable, Hashable, Sendable {
|
|
470
|
+
public let rawValue: String
|
|
471
|
+
public init(rawValue: String) { self.rawValue = rawValue }
|
|
472
|
+
public init(_ rawValue: String) { self.rawValue = rawValue }
|
|
473
|
+
public static let medium = Identifier("com.apple.UIKit.medium")
|
|
474
|
+
public static let large = Identifier("com.apple.UIKit.large")
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
public let identifier: Identifier
|
|
478
|
+
let resolver: ((any UISheetPresentationControllerDetentResolutionContext) -> CGFloat?)?
|
|
479
|
+
|
|
480
|
+
init(identifier: Identifier, resolver: ((any UISheetPresentationControllerDetentResolutionContext) -> CGFloat?)?) {
|
|
481
|
+
self.identifier = identifier
|
|
482
|
+
self.resolver = resolver
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
public static func medium() -> Detent { Detent(identifier: .medium, resolver: nil) }
|
|
486
|
+
public static func large() -> Detent { Detent(identifier: .large, resolver: nil) }
|
|
487
|
+
|
|
488
|
+
public static func custom(identifier: Identifier? = nil, resolver: @escaping (any UISheetPresentationControllerDetentResolutionContext) -> CGFloat?) -> Detent {
|
|
489
|
+
Detent(identifier: identifier ?? Identifier(UUID().uuidString), resolver: resolver)
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
/// The height of a detent that is not custom: nil (resolved by the system).
|
|
493
|
+
public static let systemDetentValue: CGFloat? = nil
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
/// What a custom detent's resolver is told: the largest height a sheet may have.
|
|
498
|
+
@MainActor
|
|
499
|
+
public protocol UISheetPresentationControllerDetentResolutionContext {
|
|
500
|
+
var containerTraitCollection: UITraitCollection { get }
|
|
501
|
+
var maximumDetentValue: CGFloat { get }
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/// A popover's presentation controller.
|
|
505
|
+
@MainActor
|
|
506
|
+
open class UIPopoverPresentationController: UIPresentationController {
|
|
507
|
+
open var sourceView: UIView?
|
|
508
|
+
open var sourceRect: CGRect = .zero
|
|
509
|
+
open var backgroundColor: UIColor?
|
|
510
|
+
}
|