@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,303 @@
|
|
|
1
|
+
// Core Media's time types, which `import AVFoundation` brings along on Apple
|
|
2
|
+
// platforms (no app the shim has met imports CoreMedia by name, so they live
|
|
3
|
+
// here). A `CMTime` is a rational number of seconds, `value / timescale`, with
|
|
4
|
+
// flags for the values that are not numbers (invalid, indefinite, the two
|
|
5
|
+
// infinities), as in Core Media: times compare and hash by the number they
|
|
6
|
+
// stand for (1/2 == 2/4), sums of different timescales use their least common
|
|
7
|
+
// multiple (or the larger timescale, rounded, when that overflows), and an
|
|
8
|
+
// invalid operand gives an invalid result.
|
|
9
|
+
|
|
10
|
+
import Foundation
|
|
11
|
+
|
|
12
|
+
public typealias CMTimeValue = Int64
|
|
13
|
+
public typealias CMTimeScale = Int32
|
|
14
|
+
public typealias CMTimeEpoch = Int64
|
|
15
|
+
|
|
16
|
+
public struct CMTimeFlags: OptionSet, Hashable, Sendable, Codable {
|
|
17
|
+
public let rawValue: UInt32
|
|
18
|
+
public init(rawValue: UInt32) { self.rawValue = rawValue }
|
|
19
|
+
public static let valid = CMTimeFlags(rawValue: 1)
|
|
20
|
+
public static let hasBeenRounded = CMTimeFlags(rawValue: 2)
|
|
21
|
+
public static let positiveInfinity = CMTimeFlags(rawValue: 4)
|
|
22
|
+
public static let negativeInfinity = CMTimeFlags(rawValue: 8)
|
|
23
|
+
public static let indefinite = CMTimeFlags(rawValue: 16)
|
|
24
|
+
public static let impliedValueFlagsMask: CMTimeFlags = [.positiveInfinity, .negativeInfinity, .indefinite]
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/// How a conversion to another timescale rounds.
|
|
28
|
+
public enum CMTimeRoundingMethod: UInt32, Sendable {
|
|
29
|
+
case roundHalfAwayFromZero = 1, roundTowardZero, roundAwayFromZero, quickTime, roundTowardPositiveInfinity, roundTowardNegativeInfinity
|
|
30
|
+
public static let `default` = CMTimeRoundingMethod.roundHalfAwayFromZero
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public struct CMTime: Sendable, Codable, CustomStringConvertible {
|
|
34
|
+
public var value: CMTimeValue
|
|
35
|
+
public var timescale: CMTimeScale
|
|
36
|
+
public var flags: CMTimeFlags
|
|
37
|
+
public var epoch: CMTimeEpoch
|
|
38
|
+
|
|
39
|
+
public init(value: CMTimeValue, timescale: CMTimeScale, flags: CMTimeFlags, epoch: CMTimeEpoch) {
|
|
40
|
+
self.value = value
|
|
41
|
+
self.timescale = timescale
|
|
42
|
+
self.flags = flags
|
|
43
|
+
self.epoch = epoch
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/// `value / timescale` seconds; a timescale of 0 or less is invalid.
|
|
47
|
+
public init(value: CMTimeValue, timescale: CMTimeScale) {
|
|
48
|
+
self.init(value: value, timescale: timescale, flags: timescale > 0 ? .valid : [], epoch: 0)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/// `seconds` rounded to the nearest `1 / preferredTimescale`; a NaN is
|
|
52
|
+
/// invalid and an infinity is that infinity.
|
|
53
|
+
public init(seconds: Double, preferredTimescale: CMTimeScale) {
|
|
54
|
+
if seconds.isNaN || preferredTimescale <= 0 {
|
|
55
|
+
self = .invalid
|
|
56
|
+
} else if seconds.isInfinite {
|
|
57
|
+
self = seconds > 0 ? .positiveInfinity : .negativeInfinity
|
|
58
|
+
} else {
|
|
59
|
+
let scaled = seconds * Double(preferredTimescale)
|
|
60
|
+
let rounded = scaled.rounded(.toNearestOrAwayFromZero)
|
|
61
|
+
guard abs(rounded) < 9.2e18 else {
|
|
62
|
+
self = seconds > 0 ? .positiveInfinity : .negativeInfinity
|
|
63
|
+
return
|
|
64
|
+
}
|
|
65
|
+
var flags: CMTimeFlags = .valid
|
|
66
|
+
if rounded != scaled { flags.insert(.hasBeenRounded) }
|
|
67
|
+
self.init(value: CMTimeValue(rounded), timescale: preferredTimescale, flags: flags, epoch: 0)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
public static let zero = CMTime(value: 0, timescale: 1)
|
|
72
|
+
public static let invalid = CMTime(value: 0, timescale: 0, flags: [], epoch: 0)
|
|
73
|
+
public static let indefinite = CMTime(value: 0, timescale: 0, flags: [.valid, .indefinite], epoch: 0)
|
|
74
|
+
public static let positiveInfinity = CMTime(value: 0, timescale: 0, flags: [.valid, .positiveInfinity], epoch: 0)
|
|
75
|
+
public static let negativeInfinity = CMTime(value: 0, timescale: 0, flags: [.valid, .negativeInfinity], epoch: 0)
|
|
76
|
+
|
|
77
|
+
public var isValid: Bool { flags.contains(.valid) }
|
|
78
|
+
public var isIndefinite: Bool { isValid && flags.contains(.indefinite) }
|
|
79
|
+
public var isPositiveInfinity: Bool { isValid && flags.contains(.positiveInfinity) }
|
|
80
|
+
public var isNegativeInfinity: Bool { isValid && flags.contains(.negativeInfinity) }
|
|
81
|
+
/// A finite number of seconds: valid, and neither indefinite nor infinite.
|
|
82
|
+
public var isNumeric: Bool { isValid && flags.isDisjoint(with: .impliedValueFlagsMask) }
|
|
83
|
+
public var hasBeenRounded: Bool { isNumeric && flags.contains(.hasBeenRounded) }
|
|
84
|
+
|
|
85
|
+
/// The time in seconds: NaN when invalid or indefinite, ±infinity for the infinities.
|
|
86
|
+
public var seconds: Double {
|
|
87
|
+
if isPositiveInfinity { return .infinity }
|
|
88
|
+
if isNegativeInfinity { return -.infinity }
|
|
89
|
+
guard isNumeric else { return .nan }
|
|
90
|
+
return Double(value) / Double(timescale)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/// The same time in another timescale, rounded by `method`.
|
|
94
|
+
public func convertScale(_ newTimescale: Int32, method: CMTimeRoundingMethod) -> CMTime {
|
|
95
|
+
guard isNumeric, newTimescale > 0 else { return newTimescale > 0 ? self : .invalid }
|
|
96
|
+
if newTimescale == timescale { return self }
|
|
97
|
+
let exact = Double(value) * Double(newTimescale) / Double(timescale)
|
|
98
|
+
let rounded: Double
|
|
99
|
+
switch method {
|
|
100
|
+
case .roundHalfAwayFromZero, .quickTime: rounded = exact.rounded(.toNearestOrAwayFromZero)
|
|
101
|
+
case .roundTowardZero: rounded = exact.rounded(.towardZero)
|
|
102
|
+
case .roundAwayFromZero: rounded = exact.rounded(.awayFromZero)
|
|
103
|
+
case .roundTowardPositiveInfinity: rounded = exact.rounded(.up)
|
|
104
|
+
case .roundTowardNegativeInfinity: rounded = exact.rounded(.down)
|
|
105
|
+
}
|
|
106
|
+
var flags = flags
|
|
107
|
+
if rounded != exact { flags.insert(.hasBeenRounded) }
|
|
108
|
+
return CMTime(value: CMTimeValue(rounded), timescale: newTimescale, flags: flags, epoch: epoch)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
public var description: String {
|
|
112
|
+
if !isValid { return "CMTime(invalid)" }
|
|
113
|
+
if isIndefinite { return "CMTime(indefinite)" }
|
|
114
|
+
if isPositiveInfinity { return "CMTime(+infinity)" }
|
|
115
|
+
if isNegativeInfinity { return "CMTime(-infinity)" }
|
|
116
|
+
return "CMTime(\(value)/\(timescale) = \(seconds)s)"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// MARK: - Comparing
|
|
121
|
+
|
|
122
|
+
extension CMTime: Comparable, Hashable {
|
|
123
|
+
/// Core Media's order: invalid times are equal to each other and greater
|
|
124
|
+
/// than everything else; then −∞ < numbers < +∞ < indefinite.
|
|
125
|
+
private var rank: Int {
|
|
126
|
+
if !isValid { return 4 }
|
|
127
|
+
if isIndefinite { return 3 }
|
|
128
|
+
if isPositiveInfinity { return 2 }
|
|
129
|
+
if isNegativeInfinity { return 0 }
|
|
130
|
+
return 1
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
public static func == (lhs: CMTime, rhs: CMTime) -> Bool { CMTimeCompare(lhs, rhs) == 0 }
|
|
134
|
+
public static func < (lhs: CMTime, rhs: CMTime) -> Bool { CMTimeCompare(lhs, rhs) < 0 }
|
|
135
|
+
|
|
136
|
+
public func hash(into hasher: inout Hasher) {
|
|
137
|
+
hasher.combine(rank)
|
|
138
|
+
guard rank == 1 else { return }
|
|
139
|
+
// Equal rationals hash alike: reduce the fraction.
|
|
140
|
+
let divisor = gcd(abs(value), CMTimeValue(timescale))
|
|
141
|
+
hasher.combine(value / max(divisor, 1))
|
|
142
|
+
hasher.combine(CMTimeValue(timescale) / max(divisor, 1))
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/// −1, 0 or 1 as `time1` is less than, equal to or greater than `time2`.
|
|
147
|
+
public func CMTimeCompare(_ time1: CMTime, _ time2: CMTime) -> Int32 {
|
|
148
|
+
let (a, b) = (time1, time2)
|
|
149
|
+
let rankA = rankOf(a), rankB = rankOf(b)
|
|
150
|
+
if rankA != rankB { return rankA < rankB ? -1 : 1 }
|
|
151
|
+
guard rankA == 1 else { return 0 }
|
|
152
|
+
// value1 / scale1 vs value2 / scale2, exactly where the products fit.
|
|
153
|
+
let (left, leftOverflow) = a.value.multipliedReportingOverflow(by: CMTimeValue(b.timescale))
|
|
154
|
+
let (right, rightOverflow) = b.value.multipliedReportingOverflow(by: CMTimeValue(a.timescale))
|
|
155
|
+
if !leftOverflow, !rightOverflow { return left < right ? -1 : (left > right ? 1 : 0) }
|
|
156
|
+
let x = a.seconds, y = b.seconds
|
|
157
|
+
return x < y ? -1 : (x > y ? 1 : 0)
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
private func rankOf(_ time: CMTime) -> Int {
|
|
161
|
+
if !time.isValid { return 4 }
|
|
162
|
+
if time.isIndefinite { return 3 }
|
|
163
|
+
if time.isPositiveInfinity { return 2 }
|
|
164
|
+
if time.isNegativeInfinity { return 0 }
|
|
165
|
+
return 1
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
private func gcd(_ a: CMTimeValue, _ b: CMTimeValue) -> CMTimeValue {
|
|
169
|
+
var (x, y) = (a, b)
|
|
170
|
+
while y != 0 { (x, y) = (y, x % y) }
|
|
171
|
+
return x
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// MARK: - Arithmetic
|
|
175
|
+
|
|
176
|
+
extension CMTime {
|
|
177
|
+
public static func + (lhs: CMTime, rhs: CMTime) -> CMTime { CMTimeAdd(lhs, rhs) }
|
|
178
|
+
public static func - (lhs: CMTime, rhs: CMTime) -> CMTime { CMTimeSubtract(lhs, rhs) }
|
|
179
|
+
public static func += (lhs: inout CMTime, rhs: CMTime) { lhs = lhs + rhs }
|
|
180
|
+
public static func -= (lhs: inout CMTime, rhs: CMTime) { lhs = lhs - rhs }
|
|
181
|
+
public static func * (time: CMTime, multiplier: Int32) -> CMTime { CMTimeMultiply(time, multiplier: multiplier) }
|
|
182
|
+
public static func * (multiplier: Int32, time: CMTime) -> CMTime { CMTimeMultiply(time, multiplier: multiplier) }
|
|
183
|
+
public static func * (time: CMTime, multiplier: Float64) -> CMTime { CMTimeMultiplyByFloat64(time, multiplier: multiplier) }
|
|
184
|
+
public static func * (multiplier: Float64, time: CMTime) -> CMTime { CMTimeMultiplyByFloat64(time, multiplier: multiplier) }
|
|
185
|
+
public static func *= (time: inout CMTime, multiplier: Int32) { time = time * multiplier }
|
|
186
|
+
public static func *= (time: inout CMTime, multiplier: Float64) { time = time * multiplier }
|
|
187
|
+
public static prefix func - (time: CMTime) -> CMTime {
|
|
188
|
+
if time.isPositiveInfinity { return .negativeInfinity }
|
|
189
|
+
if time.isNegativeInfinity { return .positiveInfinity }
|
|
190
|
+
guard time.isNumeric else { return time }
|
|
191
|
+
var negated = time
|
|
192
|
+
negated.value = -time.value
|
|
193
|
+
return negated
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
public func CMTimeMake(value: Int64, timescale: Int32) -> CMTime {
|
|
198
|
+
CMTime(value: value, timescale: timescale)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
public func CMTimeMakeWithSeconds(_ seconds: Float64, preferredTimescale: Int32) -> CMTime {
|
|
202
|
+
CMTime(seconds: seconds, preferredTimescale: preferredTimescale)
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
public func CMTimeMakeWithEpoch(value: Int64, timescale: Int32, epoch: Int64) -> CMTime {
|
|
206
|
+
CMTime(value: value, timescale: timescale, flags: timescale > 0 ? .valid : [], epoch: epoch)
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
public func CMTimeGetSeconds(_ time: CMTime) -> Float64 { time.seconds }
|
|
210
|
+
|
|
211
|
+
public func CMTimeConvertScale(_ time: CMTime, timescale newTimescale: Int32, method: CMTimeRoundingMethod) -> CMTime {
|
|
212
|
+
time.convertScale(newTimescale, method: method)
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/// The sum or difference of two numeric times, in a timescale both fit
|
|
216
|
+
/// (their least common multiple, or the larger one, rounded); the special
|
|
217
|
+
/// values combine as Core Media's do.
|
|
218
|
+
private func combine(_ lhs: CMTime, _ rhs: CMTime, subtract: Bool) -> CMTime {
|
|
219
|
+
guard lhs.isValid, rhs.isValid else { return .invalid }
|
|
220
|
+
let right = subtract ? -rhs : rhs
|
|
221
|
+
if lhs.isIndefinite || right.isIndefinite { return .indefinite }
|
|
222
|
+
if lhs.isPositiveInfinity || lhs.isNegativeInfinity || right.isPositiveInfinity || right.isNegativeInfinity {
|
|
223
|
+
let plus = lhs.isPositiveInfinity || right.isPositiveInfinity
|
|
224
|
+
let minus = lhs.isNegativeInfinity || right.isNegativeInfinity
|
|
225
|
+
if plus, minus { return .invalid }
|
|
226
|
+
return plus ? .positiveInfinity : .negativeInfinity
|
|
227
|
+
}
|
|
228
|
+
var timescale = lhs.timescale
|
|
229
|
+
if lhs.timescale != right.timescale {
|
|
230
|
+
let common = CMTimeValue(lhs.timescale) / gcd(CMTimeValue(lhs.timescale), CMTimeValue(right.timescale)) * CMTimeValue(right.timescale)
|
|
231
|
+
timescale = common <= CMTimeValue(Int32.max) ? Int32(common) : max(lhs.timescale, right.timescale)
|
|
232
|
+
}
|
|
233
|
+
let a = lhs.convertScale(timescale, method: .default)
|
|
234
|
+
let b = right.convertScale(timescale, method: .default)
|
|
235
|
+
let (sum, overflow) = a.value.addingReportingOverflow(b.value)
|
|
236
|
+
if overflow { return sum < 0 ? .positiveInfinity : .negativeInfinity }
|
|
237
|
+
var flags: CMTimeFlags = .valid
|
|
238
|
+
if a.flags.contains(.hasBeenRounded) || b.flags.contains(.hasBeenRounded) { flags.insert(.hasBeenRounded) }
|
|
239
|
+
return CMTime(value: sum, timescale: timescale, flags: flags, epoch: lhs.epoch)
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
public func CMTimeAdd(_ lhs: CMTime, _ rhs: CMTime) -> CMTime { combine(lhs, rhs, subtract: false) }
|
|
243
|
+
public func CMTimeSubtract(_ lhs: CMTime, _ rhs: CMTime) -> CMTime { combine(lhs, rhs, subtract: true) }
|
|
244
|
+
|
|
245
|
+
public func CMTimeMultiply(_ time: CMTime, multiplier: Int32) -> CMTime {
|
|
246
|
+
guard time.isNumeric else {
|
|
247
|
+
if multiplier < 0 { return -time }
|
|
248
|
+
return multiplier == 0 && (time.isPositiveInfinity || time.isNegativeInfinity) ? .invalid : time
|
|
249
|
+
}
|
|
250
|
+
let (product, overflow) = time.value.multipliedReportingOverflow(by: CMTimeValue(multiplier))
|
|
251
|
+
if overflow { return (time.value < 0) != (multiplier < 0) ? .negativeInfinity : .positiveInfinity }
|
|
252
|
+
var result = time
|
|
253
|
+
result.value = product
|
|
254
|
+
return result
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
public func CMTimeMultiplyByFloat64(_ time: CMTime, multiplier: Float64) -> CMTime {
|
|
258
|
+
guard time.isNumeric else { return multiplier < 0 ? -time : time }
|
|
259
|
+
return CMTime(seconds: time.seconds * multiplier, preferredTimescale: time.timescale)
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
public func CMTimeMultiplyByRatio(_ time: CMTime, multiplier: Int32, divisor: Int32) -> CMTime {
|
|
263
|
+
guard divisor != 0 else { return .invalid }
|
|
264
|
+
guard time.isNumeric else { return time }
|
|
265
|
+
return CMTime(seconds: time.seconds * Double(multiplier) / Double(divisor), preferredTimescale: time.timescale)
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
public func CMTimeMinimum(_ time1: CMTime, _ time2: CMTime) -> CMTime { time2 < time1 ? time2 : time1 }
|
|
269
|
+
public func CMTimeMaximum(_ time1: CMTime, _ time2: CMTime) -> CMTime { time2 > time1 ? time2 : time1 }
|
|
270
|
+
public func CMTimeAbsoluteValue(_ time: CMTime) -> CMTime { time < .zero ? -time : time }
|
|
271
|
+
|
|
272
|
+
// MARK: - Ranges
|
|
273
|
+
|
|
274
|
+
public struct CMTimeRange: Hashable, Sendable, Codable {
|
|
275
|
+
public var start: CMTime
|
|
276
|
+
public var duration: CMTime
|
|
277
|
+
|
|
278
|
+
public init(start: CMTime, duration: CMTime) {
|
|
279
|
+
self.start = start
|
|
280
|
+
self.duration = duration
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
public init(start: CMTime, end: CMTime) {
|
|
284
|
+
self.init(start: start, duration: end - start)
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
public static let zero = CMTimeRange(start: .zero, duration: .zero)
|
|
288
|
+
public static let invalid = CMTimeRange(start: .invalid, duration: .invalid)
|
|
289
|
+
|
|
290
|
+
public var end: CMTime { start + duration }
|
|
291
|
+
public var isValid: Bool { start.isValid && duration.isValid && !(duration < .zero) && !duration.isIndefinite }
|
|
292
|
+
public var isEmpty: Bool { isValid && duration == .zero }
|
|
293
|
+
public var isIndefinite: Bool { start.isIndefinite || duration.isIndefinite }
|
|
294
|
+
|
|
295
|
+
public func containsTime(_ time: CMTime) -> Bool { time >= start && time < end }
|
|
296
|
+
public func containsTimeRange(_ range: CMTimeRange) -> Bool { range.start >= start && range.end <= end }
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
public func CMTimeRangeMake(start: CMTime, duration: CMTime) -> CMTimeRange {
|
|
300
|
+
CMTimeRange(start: start, duration: duration)
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
public func CMTimeRangeGetEnd(_ range: CMTimeRange) -> CMTime { range.end }
|