@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,325 @@
|
|
|
1
|
+
// Axes: `chartXAxis { AxisMarks(values:) { value in AxisGridLine(); AxisTick();
|
|
2
|
+
// AxisValueLabel() } }`, `AxisValue`, and the axis builders. The resolved
|
|
3
|
+
// axis JSON is produced in Chart.swift.
|
|
4
|
+
|
|
5
|
+
// MARK: - AxisValue
|
|
6
|
+
|
|
7
|
+
/// A tick's value, handed to the `AxisMarks` content closure.
|
|
8
|
+
public struct AxisValue {
|
|
9
|
+
/// The tick's position among the axis's ticks.
|
|
10
|
+
public let index: Int
|
|
11
|
+
/// How many ticks the axis has.
|
|
12
|
+
public let count: Int
|
|
13
|
+
let value: _PlottableValue
|
|
14
|
+
|
|
15
|
+
/// The value as a plottable type (`value.as(Double.self)`, `.as(Date.self)`).
|
|
16
|
+
public func `as`<T: Plottable>(_ type: T.Type) -> T? {
|
|
17
|
+
T(_plottableValue: value)
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// MARK: - Axis marks (grid line, tick, label)
|
|
22
|
+
|
|
23
|
+
/// What an `AxisMarks` closure produces for one tick.
|
|
24
|
+
public protocol AxisMark {
|
|
25
|
+
var _items: [_AxisMarkItem] { get }
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
public enum _AxisMarkLabel {
|
|
29
|
+
/// The default text for the value.
|
|
30
|
+
case automatic
|
|
31
|
+
case text(String)
|
|
32
|
+
case view(any View)
|
|
33
|
+
/// `AxisValueLabel(format:)`: the value formatted (nil: the default text).
|
|
34
|
+
case formatted((_PlottableValue) -> String?)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public enum _AxisMarkItem {
|
|
38
|
+
case gridLine
|
|
39
|
+
case tick
|
|
40
|
+
case label(_AxisMarkLabel)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public struct AxisGridLine: AxisMark {
|
|
44
|
+
public init(centered: Bool? = nil, stroke: StrokeStyle? = nil) {}
|
|
45
|
+
public var _items: [_AxisMarkItem] { [.gridLine] }
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public struct AxisTick: AxisMark {
|
|
49
|
+
public init(centered: Bool? = nil, length: CGFloat? = nil, stroke: StrokeStyle? = nil) {}
|
|
50
|
+
public init(centered: Bool? = nil, length: AxisTickLength, stroke: StrokeStyle? = nil) {}
|
|
51
|
+
public var _items: [_AxisMarkItem] { [.tick] }
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/// Accepted for source compatibility; the renderer draws 4 pt ticks.
|
|
55
|
+
public enum AxisTickLength: Equatable, Sendable {
|
|
56
|
+
case automatic
|
|
57
|
+
case label
|
|
58
|
+
case length(CGFloat)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public struct AxisValueLabel: AxisMark {
|
|
62
|
+
let label: _AxisMarkLabel
|
|
63
|
+
|
|
64
|
+
/// The default text for the value.
|
|
65
|
+
public init(centered: Bool? = nil, anchor: UnitPoint? = nil, multiLabelAlignment: Alignment? = nil,
|
|
66
|
+
offsetsMarks: Bool? = nil, horizontalSpacing: CGFloat? = nil, verticalSpacing: CGFloat? = nil) {
|
|
67
|
+
label = .automatic
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
public init(_ titleKey: LocalizedStringKey, centered: Bool? = nil, anchor: UnitPoint? = nil,
|
|
71
|
+
multiLabelAlignment: Alignment? = nil, offsetsMarks: Bool? = nil,
|
|
72
|
+
horizontalSpacing: CGFloat? = nil, verticalSpacing: CGFloat? = nil) {
|
|
73
|
+
label = .text(titleKey.key)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@_disfavoredOverload
|
|
77
|
+
public init<S: StringProtocol>(_ title: S, centered: Bool? = nil, anchor: UnitPoint? = nil,
|
|
78
|
+
multiLabelAlignment: Alignment? = nil, offsetsMarks: Bool? = nil,
|
|
79
|
+
horizontalSpacing: CGFloat? = nil, verticalSpacing: CGFloat? = nil) {
|
|
80
|
+
label = .text(String(title))
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/// A view as the label: becomes a `chartitem` child of the chart.
|
|
84
|
+
public init<C: View>(centered: Bool? = nil, anchor: UnitPoint? = nil, multiLabelAlignment: Alignment? = nil,
|
|
85
|
+
offsetsMarks: Bool? = nil, horizontalSpacing: CGFloat? = nil,
|
|
86
|
+
verticalSpacing: CGFloat? = nil, @ViewBuilder content: () -> C) {
|
|
87
|
+
label = .view(content())
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
init(_label: _AxisMarkLabel) {
|
|
91
|
+
label = _label
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
public var _items: [_AxisMarkItem] { [.label(label)] }
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/// The marks an `AxisMarks` closure built for one tick.
|
|
98
|
+
public struct _AxisMarkList: AxisMark {
|
|
99
|
+
public let _items: [_AxisMarkItem]
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@resultBuilder
|
|
103
|
+
public enum AxisMarkBuilder {
|
|
104
|
+
public static func buildBlock(_ parts: any AxisMark...) -> _AxisMarkList {
|
|
105
|
+
_AxisMarkList(_items: parts.flatMap(\._items))
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
public static func buildExpression<M: AxisMark>(_ mark: M) -> _AxisMarkList { _AxisMarkList(_items: mark._items) }
|
|
109
|
+
|
|
110
|
+
public static func buildOptional(_ list: _AxisMarkList?) -> _AxisMarkList { list ?? _AxisMarkList(_items: []) }
|
|
111
|
+
|
|
112
|
+
public static func buildEither(first: _AxisMarkList) -> _AxisMarkList { first }
|
|
113
|
+
public static func buildEither(second: _AxisMarkList) -> _AxisMarkList { second }
|
|
114
|
+
|
|
115
|
+
public static func buildArray(_ lists: [_AxisMarkList]) -> _AxisMarkList {
|
|
116
|
+
_AxisMarkList(_items: lists.flatMap(\._items))
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// MARK: - AxisMarks
|
|
121
|
+
|
|
122
|
+
/// Which side of the plot an axis sits on.
|
|
123
|
+
public enum AxisMarkPosition: Hashable, Sendable {
|
|
124
|
+
case automatic, bottom, top, leading, trailing
|
|
125
|
+
|
|
126
|
+
var _name: String? {
|
|
127
|
+
switch self {
|
|
128
|
+
case .automatic: nil
|
|
129
|
+
case .bottom: "bottom"
|
|
130
|
+
case .top: "top"
|
|
131
|
+
case .leading: "leading"
|
|
132
|
+
case .trailing: "trailing"
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/// Accepted for source compatibility; every preset renders the same marks.
|
|
138
|
+
public enum AxisMarkPreset: Hashable, Sendable {
|
|
139
|
+
case automatic, extended, aligned, inset
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/// How an axis picks its tick values.
|
|
143
|
+
public struct AxisMarkValues: Equatable {
|
|
144
|
+
enum Spec: Equatable {
|
|
145
|
+
case automatic(_TickOptions)
|
|
146
|
+
case stride(Double, roundLowerBound: Bool, roundUpperBound: Bool)
|
|
147
|
+
case explicit([_PlottableValue])
|
|
148
|
+
}
|
|
149
|
+
let spec: Spec
|
|
150
|
+
|
|
151
|
+
public static var automatic: AxisMarkValues { AxisMarkValues(spec: .automatic(_TickOptions())) }
|
|
152
|
+
|
|
153
|
+
public static func automatic(desiredCount: Int? = nil, roundLowerBound: Bool? = nil,
|
|
154
|
+
roundUpperBound: Bool? = nil) -> AxisMarkValues {
|
|
155
|
+
AxisMarkValues(spec: .automatic(_TickOptions(desiredCount: desiredCount, minimumStride: nil,
|
|
156
|
+
roundLowerBound: roundLowerBound ?? true,
|
|
157
|
+
roundUpperBound: roundUpperBound ?? true)))
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
public static func automatic(minimumStride: Double, desiredCount: Int? = nil, roundLowerBound: Bool? = nil,
|
|
161
|
+
roundUpperBound: Bool? = nil) -> AxisMarkValues {
|
|
162
|
+
AxisMarkValues(spec: .automatic(_TickOptions(desiredCount: desiredCount, minimumStride: minimumStride,
|
|
163
|
+
roundLowerBound: roundLowerBound ?? true,
|
|
164
|
+
roundUpperBound: roundUpperBound ?? true)))
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/// Ticks every `stride` along a numeric axis.
|
|
168
|
+
public static func stride(by stride: Double, roundLowerBound: Bool? = nil,
|
|
169
|
+
roundUpperBound: Bool? = nil) -> AxisMarkValues {
|
|
170
|
+
AxisMarkValues(spec: .stride(stride, roundLowerBound: roundLowerBound ?? true,
|
|
171
|
+
roundUpperBound: roundUpperBound ?? true))
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/// The marks of one axis: ticks at `values`, each drawn as `content` says
|
|
176
|
+
/// (grid line, tick and label by default).
|
|
177
|
+
public struct AxisMarks: AxisContent {
|
|
178
|
+
let position: AxisMarkPosition
|
|
179
|
+
let values: AxisMarkValues
|
|
180
|
+
let content: ((AxisValue) -> _AxisMarkList)?
|
|
181
|
+
|
|
182
|
+
public init(preset: AxisMarkPreset = .automatic, position: AxisMarkPosition = .automatic,
|
|
183
|
+
values: AxisMarkValues = .automatic, stroke: StrokeStyle? = nil) {
|
|
184
|
+
self.position = position
|
|
185
|
+
self.values = values
|
|
186
|
+
content = nil
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
public init(preset: AxisMarkPreset = .automatic, position: AxisMarkPosition = .automatic,
|
|
190
|
+
values: AxisMarkValues = .automatic,
|
|
191
|
+
@AxisMarkBuilder content: @escaping (AxisValue) -> _AxisMarkList) {
|
|
192
|
+
self.position = position
|
|
193
|
+
self.values = values
|
|
194
|
+
self.content = content
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/// Ticks exactly at `values`.
|
|
198
|
+
public init<T: Plottable>(preset: AxisMarkPreset = .automatic, position: AxisMarkPosition = .automatic,
|
|
199
|
+
values: [T], stroke: StrokeStyle? = nil) {
|
|
200
|
+
self.position = position
|
|
201
|
+
self.values = AxisMarkValues(spec: .explicit(values.map(\._plottableValue)))
|
|
202
|
+
content = nil
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
public init<T: Plottable>(preset: AxisMarkPreset = .automatic, position: AxisMarkPosition = .automatic,
|
|
206
|
+
values: [T], @AxisMarkBuilder content: @escaping (AxisValue) -> _AxisMarkList) {
|
|
207
|
+
self.position = position
|
|
208
|
+
self.values = AxisMarkValues(spec: .explicit(values.map(\._plottableValue)))
|
|
209
|
+
self.content = content
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
public var _axisMarks: [AxisMarks] { [self] }
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// MARK: - AxisContent
|
|
216
|
+
|
|
217
|
+
/// The content of `chartXAxis { }` / `chartYAxis { }`: one or more `AxisMarks`.
|
|
218
|
+
public protocol AxisContent {
|
|
219
|
+
var _axisMarks: [AxisMarks] { get }
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
public struct _AxisContentList: AxisContent {
|
|
223
|
+
public let _axisMarks: [AxisMarks]
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
@resultBuilder
|
|
227
|
+
public enum AxisContentBuilder {
|
|
228
|
+
public static func buildBlock(_ parts: any AxisContent...) -> _AxisContentList {
|
|
229
|
+
_AxisContentList(_axisMarks: parts.flatMap(\._axisMarks))
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
public static func buildExpression<C: AxisContent>(_ content: C) -> _AxisContentList {
|
|
233
|
+
_AxisContentList(_axisMarks: content._axisMarks)
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
public static func buildOptional(_ list: _AxisContentList?) -> _AxisContentList {
|
|
237
|
+
list ?? _AxisContentList(_axisMarks: [])
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
public static func buildEither(first: _AxisContentList) -> _AxisContentList { first }
|
|
241
|
+
public static func buildEither(second: _AxisContentList) -> _AxisContentList { second }
|
|
242
|
+
|
|
243
|
+
public static func buildArray(_ lists: [_AxisContentList]) -> _AxisContentList {
|
|
244
|
+
_AxisContentList(_axisMarks: lists.flatMap(\._axisMarks))
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// MARK: - Chart modifiers (environment)
|
|
249
|
+
|
|
250
|
+
/// An axis as configured by `chartXAxis` / `chartYAxis`.
|
|
251
|
+
struct _AxisSpec {
|
|
252
|
+
var hidden = false
|
|
253
|
+
/// Empty: the default `AxisMarks()`.
|
|
254
|
+
var marks: [AxisMarks] = []
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/// Everything the `chart...` view modifiers set, read by the nearest `Chart`.
|
|
258
|
+
struct _ChartConfig {
|
|
259
|
+
var xAxis = _AxisSpec()
|
|
260
|
+
var yAxis = _AxisSpec()
|
|
261
|
+
var legendHidden = false
|
|
262
|
+
var legendPosition = AnnotationPosition.automatic
|
|
263
|
+
var xDomain = _ScaleDomainSpec.automatic(includesZero: nil, reversed: false)
|
|
264
|
+
var yDomain = _ScaleDomainSpec.automatic(includesZero: nil, reversed: false)
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
enum _ChartConfigKey: EnvironmentKey {
|
|
268
|
+
static var defaultValue: _ChartConfig { _ChartConfig() }
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
extension EnvironmentValues {
|
|
272
|
+
var _chartConfig: _ChartConfig {
|
|
273
|
+
get { self[_ChartConfigKey.self] }
|
|
274
|
+
set { self[_ChartConfigKey.self] = newValue }
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
nonisolated extension View {
|
|
279
|
+
func _chartConfig(_ configure: @escaping (inout _ChartConfig) -> Void) -> some View {
|
|
280
|
+
_EnvironmentView(content: self) { configure(&$0._chartConfig) }
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
public func chartXAxis<C: AxisContent>(@AxisContentBuilder content: () -> C) -> some View {
|
|
284
|
+
let marks = content()._axisMarks
|
|
285
|
+
return _chartConfig { $0.xAxis = _AxisSpec(hidden: false, marks: marks) }
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
public func chartYAxis<C: AxisContent>(@AxisContentBuilder content: () -> C) -> some View {
|
|
289
|
+
let marks = content()._axisMarks
|
|
290
|
+
return _chartConfig { $0.yAxis = _AxisSpec(hidden: false, marks: marks) }
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
public func chartXAxis(_ visibility: Visibility) -> some View {
|
|
294
|
+
_chartConfig { $0.xAxis.hidden = visibility == .hidden }
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
public func chartYAxis(_ visibility: Visibility) -> some View {
|
|
298
|
+
_chartConfig { $0.yAxis.hidden = visibility == .hidden }
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
public func chartXScale<D: ScaleDomain>(domain: D) -> some View {
|
|
302
|
+
let spec = domain._domainSpec
|
|
303
|
+
return _chartConfig { $0.xDomain = spec }
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
public func chartYScale<D: ScaleDomain>(domain: D) -> some View {
|
|
307
|
+
let spec = domain._domainSpec
|
|
308
|
+
return _chartConfig { $0.yDomain = spec }
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
public func chartLegend(_ visibility: Visibility) -> some View {
|
|
312
|
+
_chartConfig { $0.legendHidden = visibility == .hidden }
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
public func chartLegend(position: AnnotationPosition = .automatic, alignment: Alignment? = nil,
|
|
316
|
+
spacing: CGFloat? = nil) -> some View {
|
|
317
|
+
_chartConfig { $0.legendHidden = false; $0.legendPosition = position }
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/// A custom legend view is not rendered; the position still applies.
|
|
321
|
+
public func chartLegend<C: View>(position: AnnotationPosition = .automatic, alignment: Alignment? = nil,
|
|
322
|
+
spacing: CGFloat? = nil, @ViewBuilder content: () -> C) -> some View {
|
|
323
|
+
_chartConfig { $0.legendHidden = false; $0.legendPosition = position }
|
|
324
|
+
}
|
|
325
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// `AxisValueLabel(format:)` and the scale ranges of `.chartXScale(range:)`.
|
|
2
|
+
//
|
|
3
|
+
// A formatted label is the tick's value converted to the format's input
|
|
4
|
+
// type and formatted with it (the default text when the value is of
|
|
5
|
+
// another type). A scale range (`.plotDimension(startPadding:endPadding:)`,
|
|
6
|
+
// a range of points) is accepted: the page maps the domain to the whole plot.
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
extension AxisValueLabel {
|
|
11
|
+
/// The value formatted with `format` (`.dateTime.month().day()`, `.number`…).
|
|
12
|
+
public init<F: FormatStyle>(format: F, centered: Bool? = nil, anchor: UnitPoint? = nil,
|
|
13
|
+
multiLabelAlignment: Alignment? = nil, collisionResolution: AxisValueLabelCollisionResolution = .automatic,
|
|
14
|
+
offsetsMarks: Bool? = nil, orientation: AxisValueLabelOrientation = .automatic,
|
|
15
|
+
horizontalSpacing: CGFloat? = nil, verticalSpacing: CGFloat? = nil)
|
|
16
|
+
where F.FormatInput: Plottable, F.FormatOutput == String {
|
|
17
|
+
self.init(_label: .formatted { value in F.FormatInput(_plottableValue: value).map { format.format($0) } })
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/// How overlapping axis labels are resolved; accepted.
|
|
22
|
+
public struct AxisValueLabelCollisionResolution: Hashable, Sendable {
|
|
23
|
+
let name: String
|
|
24
|
+
public static let automatic = AxisValueLabelCollisionResolution(name: "automatic")
|
|
25
|
+
public static let greedy = AxisValueLabelCollisionResolution(name: "greedy")
|
|
26
|
+
public static let truncate = AxisValueLabelCollisionResolution(name: "truncate")
|
|
27
|
+
public static let disabled = AxisValueLabelCollisionResolution(name: "disabled")
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/// Which way axis labels run; accepted (labels are horizontal).
|
|
31
|
+
public struct AxisValueLabelOrientation: Hashable, Sendable {
|
|
32
|
+
let name: String
|
|
33
|
+
public static let automatic = AxisValueLabelOrientation(name: "automatic")
|
|
34
|
+
public static let horizontal = AxisValueLabelOrientation(name: "horizontal")
|
|
35
|
+
public static let vertical = AxisValueLabelOrientation(name: "vertical")
|
|
36
|
+
public static let verticalReversed = AxisValueLabelOrientation(name: "verticalReversed")
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/// The points a scale maps its domain to; accepted.
|
|
40
|
+
public protocol ScaleRange {}
|
|
41
|
+
|
|
42
|
+
/// The plot's length along the axis, less the paddings.
|
|
43
|
+
public struct PlotDimensionScaleRange: ScaleRange, Hashable, Sendable {}
|
|
44
|
+
|
|
45
|
+
extension ScaleRange where Self == PlotDimensionScaleRange {
|
|
46
|
+
public static var plotDimension: PlotDimensionScaleRange { PlotDimensionScaleRange() }
|
|
47
|
+
public static func plotDimension(padding: CGFloat) -> PlotDimensionScaleRange { PlotDimensionScaleRange() }
|
|
48
|
+
public static func plotDimension(startPadding: CGFloat = 0, endPadding: CGFloat = 0) -> PlotDimensionScaleRange {
|
|
49
|
+
PlotDimensionScaleRange()
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
extension ClosedRange: ScaleRange where Bound == CGFloat {}
|
|
54
|
+
|
|
55
|
+
nonisolated extension View {
|
|
56
|
+
/// Accepted (see the file comment).
|
|
57
|
+
public func chartXScale<R: ScaleRange>(range: R) -> some View { self }
|
|
58
|
+
public func chartYScale<R: ScaleRange>(range: R) -> some View { self }
|
|
59
|
+
|
|
60
|
+
/// The domain, as `chartXScale(domain:)`; the range is accepted.
|
|
61
|
+
public func chartXScale<D: ScaleDomain, R: ScaleRange>(domain: D, range: R) -> some View {
|
|
62
|
+
chartXScale(domain: domain)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public func chartYScale<D: ScaleDomain, R: ScaleRange>(domain: D, range: R) -> some View {
|
|
66
|
+
chartYScale(domain: domain)
|
|
67
|
+
}
|
|
68
|
+
}
|