@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.
Files changed (400) hide show
  1. package/Package.swift +214 -0
  2. package/README.md +10 -2
  3. package/Sources/AVFoundation/AVFoundation.swift +131 -0
  4. package/Sources/AVFoundation/Asset.swift +487 -0
  5. package/Sources/AVFoundation/AudioSession.swift +144 -0
  6. package/Sources/AVFoundation/CMTime.swift +303 -0
  7. package/Sources/AVFoundation/Capture.swift +688 -0
  8. package/Sources/AVFoundation/Player.swift +749 -0
  9. package/Sources/AVFoundation/PlayerView.swift +117 -0
  10. package/Sources/AVKit/AVKit.swift +132 -0
  11. package/Sources/Accelerate/Accelerate.swift +122 -0
  12. package/Sources/AppIntents/AppIntents.swift +144 -0
  13. package/Sources/AppIntents/Parameters.swift +220 -0
  14. package/Sources/AppIntents/Shortcuts.swift +159 -0
  15. package/Sources/AudioToolbox/AudioToolbox.swift +55 -0
  16. package/Sources/AuthenticationServices/AuthenticationServices.swift +257 -0
  17. package/Sources/AuthenticationServices/Authorization.swift +251 -0
  18. package/Sources/Charts/Charts.swift +61 -0
  19. package/Sources/Combine/AnyCancellable.swift +65 -0
  20. package/Sources/Combine/AnyPublisher.swift +148 -0
  21. package/Sources/Combine/AnySubscriber.swift +230 -0
  22. package/Sources/Combine/Cancellable.swift +35 -0
  23. package/Sources/Combine/Codable.swift +29 -0
  24. package/Sources/Combine/CombineIdentifier.swift +45 -0
  25. package/Sources/Combine/Concurrency/ConcurrencyHelpers.swift +24 -0
  26. package/Sources/Combine/Concurrency/Future+Concurrency.swift +136 -0
  27. package/Sources/Combine/Concurrency/GENERATED-Publisher+Concurrency.swift +397 -0
  28. package/Sources/Combine/CurrentValueSubject.swift +252 -0
  29. package/Sources/Combine/CustomCombineIdentifierConvertible.swift +28 -0
  30. package/Sources/Combine/Future.swift +228 -0
  31. package/Sources/Combine/GENERATED-RootProtocols.swift +426 -0
  32. package/Sources/Combine/Helpers/ConduitBase.swift +40 -0
  33. package/Sources/Combine/Helpers/ConduitList.swift +59 -0
  34. package/Sources/Combine/Helpers/DebugHook.swift +177 -0
  35. package/Sources/Combine/Helpers/FilterProducer.swift +174 -0
  36. package/Sources/Combine/Helpers/Locking.swift +30 -0
  37. package/Sources/Combine/Helpers/PartialCompletion.swift +26 -0
  38. package/Sources/Combine/Helpers/ReduceProducer.swift +249 -0
  39. package/Sources/Combine/Helpers/SubjectSubscriber.swift +96 -0
  40. package/Sources/Combine/Helpers/SubscriberTap.swift +69 -0
  41. package/Sources/Combine/Helpers/SubscriptionStatus.swift +33 -0
  42. package/Sources/Combine/Helpers/SubscriptionTap.swift +33 -0
  43. package/Sources/Combine/Helpers/Utils.swift +30 -0
  44. package/Sources/Combine/Helpers/Violations.swift +33 -0
  45. package/Sources/Combine/ImmediateScheduler.swift +178 -0
  46. package/Sources/Combine/LICENSE +21 -0
  47. package/Sources/Combine/NotificationPublisher.swift +48 -0
  48. package/Sources/Combine/ObjectWillChange.swift +46 -0
  49. package/Sources/Combine/PassthroughSubject.swift +222 -0
  50. package/Sources/Combine/Publisher+Subscribe.swift +53 -0
  51. package/Sources/Combine/Publishers/Deferred.swift +48 -0
  52. package/Sources/Combine/Publishers/Empty.swift +54 -0
  53. package/Sources/Combine/Publishers/Fail.swift +42 -0
  54. package/Sources/Combine/Publishers/GENERATED-Publishers.Catch.swift +673 -0
  55. package/Sources/Combine/Publishers/GENERATED-Publishers.Encode.swift +388 -0
  56. package/Sources/Combine/Publishers/GENERATED-Publishers.MapKeyPath.swift +384 -0
  57. package/Sources/Combine/Publishers/Just.swift +313 -0
  58. package/Sources/Combine/Publishers/Optional.Publisher.swift +315 -0
  59. package/Sources/Combine/Publishers/Publishers.AllSatisfy.swift +217 -0
  60. package/Sources/Combine/Publishers/Publishers.AssertNoFailure.swift +158 -0
  61. package/Sources/Combine/Publishers/Publishers.Autoconnect.swift +193 -0
  62. package/Sources/Combine/Publishers/Publishers.Breakpoint.swift +231 -0
  63. package/Sources/Combine/Publishers/Publishers.Buffer.swift +356 -0
  64. package/Sources/Combine/Publishers/Publishers.Collect.swift +102 -0
  65. package/Sources/Combine/Publishers/Publishers.CollectByCount.swift +195 -0
  66. package/Sources/Combine/Publishers/Publishers.CompactMap.swift +241 -0
  67. package/Sources/Combine/Publishers/Publishers.Comparison.swift +371 -0
  68. package/Sources/Combine/Publishers/Publishers.Concatenate.swift +474 -0
  69. package/Sources/Combine/Publishers/Publishers.Contains.swift +293 -0
  70. package/Sources/Combine/Publishers/Publishers.Count.swift +87 -0
  71. package/Sources/Combine/Publishers/Publishers.Debounce.swift +332 -0
  72. package/Sources/Combine/Publishers/Publishers.Delay.swift +269 -0
  73. package/Sources/Combine/Publishers/Publishers.Drop.swift +155 -0
  74. package/Sources/Combine/Publishers/Publishers.DropUntilOutput.swift +283 -0
  75. package/Sources/Combine/Publishers/Publishers.DropWhile.swift +378 -0
  76. package/Sources/Combine/Publishers/Publishers.Filter.swift +248 -0
  77. package/Sources/Combine/Publishers/Publishers.First.swift +261 -0
  78. package/Sources/Combine/Publishers/Publishers.FlatMap.swift +533 -0
  79. package/Sources/Combine/Publishers/Publishers.HandleEvents.swift +260 -0
  80. package/Sources/Combine/Publishers/Publishers.IgnoreOutput.swift +109 -0
  81. package/Sources/Combine/Publishers/Publishers.Last.swift +252 -0
  82. package/Sources/Combine/Publishers/Publishers.MakeConnectable.swift +82 -0
  83. package/Sources/Combine/Publishers/Publishers.Map.swift +351 -0
  84. package/Sources/Combine/Publishers/Publishers.MapError.swift +140 -0
  85. package/Sources/Combine/Publishers/Publishers.MeasureInterval.swift +187 -0
  86. package/Sources/Combine/Publishers/Publishers.Multicast.swift +284 -0
  87. package/Sources/Combine/Publishers/Publishers.Output.swift +241 -0
  88. package/Sources/Combine/Publishers/Publishers.PrefixUntilOutput.swift +197 -0
  89. package/Sources/Combine/Publishers/Publishers.PrefixWhile.swift +176 -0
  90. package/Sources/Combine/Publishers/Publishers.Print.swift +206 -0
  91. package/Sources/Combine/Publishers/Publishers.ReceiveOn.swift +227 -0
  92. package/Sources/Combine/Publishers/Publishers.Reduce.swift +204 -0
  93. package/Sources/Combine/Publishers/Publishers.RemoveDuplicates.swift +264 -0
  94. package/Sources/Combine/Publishers/Publishers.ReplaceEmpty.swift +201 -0
  95. package/Sources/Combine/Publishers/Publishers.ReplaceError.swift +211 -0
  96. package/Sources/Combine/Publishers/Publishers.Retry.swift +274 -0
  97. package/Sources/Combine/Publishers/Publishers.Scan.swift +331 -0
  98. package/Sources/Combine/Publishers/Publishers.Sequence.swift +437 -0
  99. package/Sources/Combine/Publishers/Publishers.SetFailureType.swift +120 -0
  100. package/Sources/Combine/Publishers/Publishers.Share.swift +104 -0
  101. package/Sources/Combine/Publishers/Publishers.SubscribeOn.swift +197 -0
  102. package/Sources/Combine/Publishers/Publishers.SwitchToLatest.swift +444 -0
  103. package/Sources/Combine/Publishers/Publishers.Throttle.swift +359 -0
  104. package/Sources/Combine/Publishers/Publishers.Timeout.swift +301 -0
  105. package/Sources/Combine/Publishers/Publishers.Zip.swift +720 -0
  106. package/Sources/Combine/Publishers/Publishers.swift +13 -0
  107. package/Sources/Combine/Publishers/Record.swift +237 -0
  108. package/Sources/Combine/Publishers/Result.Publisher.swift +337 -0
  109. package/Sources/Combine/Result.swift +46 -0
  110. package/Sources/Combine/Scheduler.swift +89 -0
  111. package/Sources/Combine/Schedulers.swift +211 -0
  112. package/Sources/Combine/Subject+Void.swift +17 -0
  113. package/Sources/Combine/Subscriber+Void.swift +20 -0
  114. package/Sources/Combine/Subscribers/Subscribers.Assign.swift +175 -0
  115. package/Sources/Combine/Subscribers/Subscribers.Completion.swift +90 -0
  116. package/Sources/Combine/Subscribers/Subscribers.Demand.swift +476 -0
  117. package/Sources/Combine/Subscribers/Subscribers.Sink.swift +206 -0
  118. package/Sources/Combine/Subscribers/Subscribers.swift +9 -0
  119. package/Sources/Combine/Subscription.swift +22 -0
  120. package/Sources/Combine/Subscriptions.swift +42 -0
  121. package/Sources/Combine/SwiftUIObservation.swift +10 -0
  122. package/Sources/Combine/_Introspection.swift +107 -0
  123. package/Sources/CommonCrypto/CommonCrypto.swift +80 -0
  124. package/Sources/Compression/Compression.swift +365 -0
  125. package/Sources/Compression/Deflate.swift +407 -0
  126. package/Sources/Compression/Zlib.swift +179 -0
  127. package/Sources/CoreFoundationTypes/CoreFoundationTypes.swift +101 -0
  128. package/Sources/CoreGraphics/CoreGraphics.swift +411 -0
  129. package/Sources/CoreGraphics/ProjectionTransforms.swift +28 -0
  130. package/Sources/CoreHaptics/CoreHaptics.swift +399 -0
  131. package/Sources/CoreImage/CIColor.swift +41 -0
  132. package/Sources/CoreImage/CIContext.swift +31 -0
  133. package/Sources/CoreImage/CIDetector.swift +57 -0
  134. package/Sources/CoreImage/CIFilter.swift +243 -0
  135. package/Sources/CoreImage/CIFilterBuiltins.swift +136 -0
  136. package/Sources/CoreImage/CIImage.swift +162 -0
  137. package/Sources/CoreImage/QRCode.swift +393 -0
  138. package/Sources/CoreLocation/Coordinate.swift +30 -0
  139. package/Sources/CoreLocation/Location.swift +65 -0
  140. package/Sources/CoreML/Evaluation.swift +414 -0
  141. package/Sources/CoreML/FeatureValue.swift +266 -0
  142. package/Sources/CoreML/Model.swift +269 -0
  143. package/Sources/CoreML/MultiArray.swift +92 -0
  144. package/Sources/CoreML/Specification.swift +233 -0
  145. package/Sources/CoreText/CoreText.swift +64 -0
  146. package/Sources/CoreTransferable/CoreTransferable.swift +606 -0
  147. package/Sources/CryptoKit/ChaChaPoly.swift +258 -0
  148. package/Sources/CryptoKit/CryptoKit.swift +375 -0
  149. package/Sources/CryptoKit/Curve25519.swift +317 -0
  150. package/Sources/CryptoKit/P256.swift +321 -0
  151. package/Sources/FoundationBridge/AppStorage.swift +165 -0
  152. package/Sources/FoundationBridge/AssetResources.swift +90 -0
  153. package/Sources/FoundationBridge/AsyncBytes.swift +128 -0
  154. package/Sources/FoundationBridge/AsyncImage.swift +116 -0
  155. package/Sources/FoundationBridge/AttributedStrings.swift +16 -0
  156. package/Sources/FoundationBridge/Bundle.swift +119 -0
  157. package/Sources/FoundationBridge/CombineExports.swift +8 -0
  158. package/Sources/FoundationBridge/CoreFoundation.swift +77 -0
  159. package/Sources/FoundationBridge/Dispatch.swift +458 -0
  160. package/Sources/FoundationBridge/EnvironmentFoundation.swift +41 -0
  161. package/Sources/FoundationBridge/FileImporter.swift +128 -0
  162. package/Sources/FoundationBridge/FileSystem.swift +68 -0
  163. package/Sources/FoundationBridge/FoundationBridge.swift +29 -0
  164. package/Sources/FoundationBridge/HostResolution.swift +31 -0
  165. package/Sources/FoundationBridge/ItemProvider.swift +655 -0
  166. package/Sources/FoundationBridge/KeyValueObserving.swift +138 -0
  167. package/Sources/FoundationBridge/Links.swift +127 -0
  168. package/Sources/FoundationBridge/ListFormatter.swift +32 -0
  169. package/Sources/FoundationBridge/Locale.swift +86 -0
  170. package/Sources/FoundationBridge/Localization.swift +149 -0
  171. package/Sources/FoundationBridge/Locks.swift +50 -0
  172. package/Sources/FoundationBridge/Markdown.swift +527 -0
  173. package/Sources/FoundationBridge/MeasurementFormat.swift +95 -0
  174. package/Sources/FoundationBridge/NotificationCenter.swift +154 -0
  175. package/Sources/FoundationBridge/OpenURLHandlers.swift +60 -0
  176. package/Sources/FoundationBridge/Operation.swift +195 -0
  177. package/Sources/FoundationBridge/ProcessInfo.swift +32 -0
  178. package/Sources/FoundationBridge/RelativeDateTimeFormatter.swift +136 -0
  179. package/Sources/FoundationBridge/SceneStorage.swift +78 -0
  180. package/Sources/FoundationBridge/SecurityExports.swift +8 -0
  181. package/Sources/FoundationBridge/Selector.swift +226 -0
  182. package/Sources/FoundationBridge/StringComparators.swift +17 -0
  183. package/Sources/FoundationBridge/Table.swift +211 -0
  184. package/Sources/FoundationBridge/TextAttributes.swift +42 -0
  185. package/Sources/FoundationBridge/Timer.swift +53 -0
  186. package/Sources/FoundationBridge/UITextChecker.swift +30 -0
  187. package/Sources/FoundationBridge/URLSession.swift +718 -0
  188. package/Sources/FoundationBridge/UserDefaults.swift +183 -0
  189. package/Sources/FoundationBridge/WebAuthRedirects.swift +227 -0
  190. package/Sources/FoundationBridge/WebSocket.swift +187 -0
  191. package/Sources/FoundationModels/FoundationModels.swift +1098 -0
  192. package/Sources/ImageIO/GIF.swift +72 -0
  193. package/Sources/ImageIO/ImageIO.swift +248 -0
  194. package/Sources/ImageIO/ImageTypes.swift +28 -0
  195. package/Sources/LinkPresentation/LinkPresentation.swift +249 -0
  196. package/Sources/LocalAuthentication/LAContext.swift +86 -0
  197. package/Sources/MapKit/Geometry.swift +223 -0
  198. package/Sources/MapKit/Map.swift +638 -0
  199. package/Sources/MapKit/MapView.swift +229 -0
  200. package/Sources/MobileCoreServices/MobileCoreServices.swift +28 -0
  201. package/Sources/NaturalLanguage/LanguageIdentifier.swift +317 -0
  202. package/Sources/NaturalLanguage/NaturalLanguage.swift +135 -0
  203. package/Sources/OSLog/OSLog.swift +6 -0
  204. package/Sources/Photos/Photos.swift +572 -0
  205. package/Sources/PhotosUI/PhotosPicker.swift +248 -0
  206. package/Sources/PhotosUI/PhotosPickerItem.swift +261 -0
  207. package/Sources/QuickLook/QuickLook.swift +168 -0
  208. package/Sources/SafariServices/SafariServices.swift +106 -0
  209. package/Sources/Security/Security.swift +332 -0
  210. package/Sources/StoreKit/AppStore.swift +207 -0
  211. package/Sources/StoreKit/Products.swift +280 -0
  212. package/Sources/StoreKit/RequestReview.swift +28 -0
  213. package/Sources/StoreKit/StoreKit1.swift +486 -0
  214. package/Sources/StoreKit/StoreViews.swift +428 -0
  215. package/Sources/StoreKit/Transactions.swift +197 -0
  216. package/Sources/SwiftData/Macros.swift +58 -0
  217. package/Sources/SwiftData/ModelActor.swift +38 -0
  218. package/Sources/SwiftData/ModelContainer.swift +129 -0
  219. package/Sources/SwiftData/ModelContext.swift +451 -0
  220. package/Sources/SwiftData/PersistentModel.swift +238 -0
  221. package/Sources/SwiftData/Properties.swift +261 -0
  222. package/Sources/SwiftData/Query.swift +256 -0
  223. package/Sources/SwiftData/Schema.swift +192 -0
  224. package/Sources/SwiftData/Store.swift +146 -0
  225. package/Sources/SwiftData/StringPredicates.swift +125 -0
  226. package/Sources/SwiftDataMacros/EntryMacro.swift +82 -0
  227. package/Sources/SwiftDataMacros/GenerableMacro.swift +183 -0
  228. package/Sources/SwiftDataMacros/ModelActorMacro.swift +46 -0
  229. package/Sources/SwiftDataMacros/ModelMacro.swift +260 -0
  230. package/Sources/SwiftDataMacros/Plugin.swift +18 -0
  231. package/Sources/SwiftDataMacros/PredicateMacro.swift +1244 -0
  232. package/Sources/SwiftUI/API/Accessibility.swift +181 -0
  233. package/Sources/SwiftUI/API/AccessibilityExtras.swift +33 -0
  234. package/Sources/SwiftUI/API/AccessibilityFocus.swift +63 -0
  235. package/Sources/SwiftUI/API/Alert.swift +221 -0
  236. package/Sources/SwiftUI/API/AlignmentGuides.swift +65 -0
  237. package/Sources/SwiftUI/API/Animation.swift +285 -0
  238. package/Sources/SwiftUI/API/App.swift +87 -0
  239. package/Sources/SwiftUI/API/BindingCollections.swift +35 -0
  240. package/Sources/SwiftUI/API/BindingForEach.swift +27 -0
  241. package/Sources/SwiftUI/API/Bitmaps.swift +254 -0
  242. package/Sources/SwiftUI/API/ButtonStyles.swift +96 -0
  243. package/Sources/SwiftUI/API/Canvas.swift +337 -0
  244. package/Sources/SwiftUI/API/Color.swift +237 -0
  245. package/Sources/SwiftUI/API/ColorEffects.swift +52 -0
  246. package/Sources/SwiftUI/API/ColorPickerAndLabeledContent.swift +138 -0
  247. package/Sources/SwiftUI/API/ColorSpaces.swift +161 -0
  248. package/Sources/SwiftUI/API/Commands.swift +106 -0
  249. package/Sources/SwiftUI/API/ContainerBackground.swift +28 -0
  250. package/Sources/SwiftUI/API/ContentShape.swift +33 -0
  251. package/Sources/SwiftUI/API/ContentSizeCategory.swift +35 -0
  252. package/Sources/SwiftUI/API/ContentUnavailable.swift +101 -0
  253. package/Sources/SwiftUI/API/Controls.swift +300 -0
  254. package/Sources/SwiftUI/API/CustomLayout.swift +442 -0
  255. package/Sources/SwiftUI/API/CustomToolbarContent.swift +46 -0
  256. package/Sources/SwiftUI/API/Decorations.swift +92 -0
  257. package/Sources/SwiftUI/API/EditMode.swift +212 -0
  258. package/Sources/SwiftUI/API/Effects.swift +388 -0
  259. package/Sources/SwiftUI/API/Entry.swift +8 -0
  260. package/Sources/SwiftUI/API/Environment.swift +439 -0
  261. package/Sources/SwiftUI/API/EnvironmentSendable.swift +6 -0
  262. package/Sources/SwiftUI/API/Focus.swift +137 -0
  263. package/Sources/SwiftUI/API/Font.swift +131 -0
  264. package/Sources/SwiftUI/API/Gauge.swift +290 -0
  265. package/Sources/SwiftUI/API/Geometry.swift +89 -0
  266. package/Sources/SwiftUI/API/GeometryEffects.swift +232 -0
  267. package/Sources/SwiftUI/API/GeometryReader.swift +135 -0
  268. package/Sources/SwiftUI/API/GestureState.swift +65 -0
  269. package/Sources/SwiftUI/API/Gestures.swift +342 -0
  270. package/Sources/SwiftUI/API/Glass.swift +127 -0
  271. package/Sources/SwiftUI/API/Grid.swift +188 -0
  272. package/Sources/SwiftUI/API/GroupBoxAndControlGroup.swift +130 -0
  273. package/Sources/SwiftUI/API/KeyPress.swift +54 -0
  274. package/Sources/SwiftUI/API/LabelStyle.swift +124 -0
  275. package/Sources/SwiftUI/API/Layout.swift +220 -0
  276. package/Sources/SwiftUI/API/LazyStacks.swift +49 -0
  277. package/Sources/SwiftUI/API/LegacyAlert.swift +97 -0
  278. package/Sources/SwiftUI/API/Lists.swift +331 -0
  279. package/Sources/SwiftUI/API/Menu.swift +58 -0
  280. package/Sources/SwiftUI/API/Modifiers.swift +313 -0
  281. package/Sources/SwiftUI/API/MoreModifiers.swift +100 -0
  282. package/Sources/SwiftUI/API/Namespace.swift +44 -0
  283. package/Sources/SwiftUI/API/Navigation.swift +386 -0
  284. package/Sources/SwiftUI/API/NavigationDestinationBindings.swift +55 -0
  285. package/Sources/SwiftUI/API/ObservableObject.swift +293 -0
  286. package/Sources/SwiftUI/API/OnChange.swift +48 -0
  287. package/Sources/SwiftUI/API/Path.swift +543 -0
  288. package/Sources/SwiftUI/API/Phase8Controls.swift +411 -0
  289. package/Sources/SwiftUI/API/PhaseAnimator.swift +130 -0
  290. package/Sources/SwiftUI/API/Picker.swift +185 -0
  291. package/Sources/SwiftUI/API/PointerAndKeyboard.swift +77 -0
  292. package/Sources/SwiftUI/API/Popover.swift +41 -0
  293. package/Sources/SwiftUI/API/Preferences.swift +262 -0
  294. package/Sources/SwiftUI/API/Presentation.swift +122 -0
  295. package/Sources/SwiftUI/API/PresentationExtras.swift +60 -0
  296. package/Sources/SwiftUI/API/Primitives.swift +517 -0
  297. package/Sources/SwiftUI/API/Publishers.swift +107 -0
  298. package/Sources/SwiftUI/API/Redaction.swift +75 -0
  299. package/Sources/SwiftUI/API/RowActions.swift +84 -0
  300. package/Sources/SwiftUI/API/Scenes.swift +131 -0
  301. package/Sources/SwiftUI/API/ScrollModifiers.swift +132 -0
  302. package/Sources/SwiftUI/API/ScrollTargets.swift +104 -0
  303. package/Sources/SwiftUI/API/ScrollViewReader.swift +144 -0
  304. package/Sources/SwiftUI/API/SectionSupplements.swift +96 -0
  305. package/Sources/SwiftUI/API/Shape.swift +214 -0
  306. package/Sources/SwiftUI/API/ShapeStyle.swift +409 -0
  307. package/Sources/SwiftUI/API/ShapeTrim.swift +78 -0
  308. package/Sources/SwiftUI/API/Sharing.swift +193 -0
  309. package/Sources/SwiftUI/API/StackLayouts.swift +199 -0
  310. package/Sources/SwiftUI/API/State.swift +144 -0
  311. package/Sources/SwiftUI/API/StatusGaps.swift +121 -0
  312. package/Sources/SwiftUI/API/StrokeStyle.swift +30 -0
  313. package/Sources/SwiftUI/API/SymbolEffects.swift +203 -0
  314. package/Sources/SwiftUI/API/TabContent.swift +841 -0
  315. package/Sources/SwiftUI/API/Table.swift +382 -0
  316. package/Sources/SwiftUI/API/Tabs.swift +263 -0
  317. package/Sources/SwiftUI/API/Tasks.swift +35 -0
  318. package/Sources/SwiftUI/API/Text.swift +386 -0
  319. package/Sources/SwiftUI/API/TextDates.swift +61 -0
  320. package/Sources/SwiftUI/API/TextDecorations.swift +52 -0
  321. package/Sources/SwiftUI/API/TextFieldAxis.swift +103 -0
  322. package/Sources/SwiftUI/API/TextFieldCommit.swift +52 -0
  323. package/Sources/SwiftUI/API/Timeline.swift +212 -0
  324. package/Sources/SwiftUI/API/Toolbar.swift +251 -0
  325. package/Sources/SwiftUI/API/Transfer.swift +145 -0
  326. package/Sources/SwiftUI/API/UnevenRoundedRectangle.swift +66 -0
  327. package/Sources/SwiftUI/API/Video.swift +64 -0
  328. package/Sources/SwiftUI/API/View.swift +215 -0
  329. package/Sources/SwiftUI/API/ViewModifier.swift +43 -0
  330. package/Sources/SwiftUI/API/VisualEffect.swift +155 -0
  331. package/Sources/SwiftUI/API/Windows.swift +25 -0
  332. package/Sources/SwiftUI/Charts/Axis.swift +325 -0
  333. package/Sources/SwiftUI/Charts/AxisFormatsAndRanges.swift +68 -0
  334. package/Sources/SwiftUI/Charts/Chart.swift +660 -0
  335. package/Sources/SwiftUI/Charts/ChartContent.swift +376 -0
  336. package/Sources/SwiftUI/Charts/ChartProxy.swift +57 -0
  337. package/Sources/SwiftUI/Charts/Marks.swift +204 -0
  338. package/Sources/SwiftUI/Charts/Plottable.swift +99 -0
  339. package/Sources/SwiftUI/Charts/Scales.swift +326 -0
  340. package/Sources/SwiftUI/Localization/Localization.swift +498 -0
  341. package/Sources/SwiftUI/Localization/PluralRules.swift +127 -0
  342. package/Sources/SwiftUI/Runtime/Executor.swift +85 -0
  343. package/Sources/SwiftUI/Runtime/Exports.swift +101 -0
  344. package/Sources/SwiftUI/Runtime/ImageSource.swift +310 -0
  345. package/Sources/SwiftUI/Runtime/JSON.swift +143 -0
  346. package/Sources/SwiftUI/Runtime/JSONParser.swift +443 -0
  347. package/Sources/SwiftUI/Runtime/LazyRows.swift +99 -0
  348. package/Sources/SwiftUI/Runtime/Measurements.swift +140 -0
  349. package/Sources/SwiftUI/Runtime/Ops.swift +152 -0
  350. package/Sources/SwiftUI/Runtime/Reconciler.swift +219 -0
  351. package/Sources/SwiftUI/Runtime/Replay.swift +382 -0
  352. package/Sources/SwiftUI/Runtime/Runtime.swift +2146 -0
  353. package/Sources/SwiftUI/Runtime/Sameness.swift +152 -0
  354. package/Sources/SwiftUI/Runtime/ViewPath.swift +89 -0
  355. package/Sources/SwiftUI/Runtime/ViewTraits.swift +175 -0
  356. package/Sources/SwiftUI/Runtime/WebAuthHeadless.swift +49 -0
  357. package/Sources/Symbols/Symbols.swift +25 -0
  358. package/Sources/Translation/Translation.swift +423 -0
  359. package/Sources/UIKit/Activity.swift +213 -0
  360. package/Sources/UIKit/Alerts.swift +69 -0
  361. package/Sources/UIKit/AppDelegate.swift +222 -0
  362. package/Sources/UIKit/Appearance.swift +84 -0
  363. package/Sources/UIKit/ColorConversions.swift +70 -0
  364. package/Sources/UIKit/Controls.swift +225 -0
  365. package/Sources/UIKit/Device.swift +200 -0
  366. package/Sources/UIKit/Feedback.swift +65 -0
  367. package/Sources/UIKit/Font.swift +307 -0
  368. package/Sources/UIKit/Graphics.swift +204 -0
  369. package/Sources/UIKit/HostingController.swift +185 -0
  370. package/Sources/UIKit/Identity.swift +24 -0
  371. package/Sources/UIKit/Introspectable.swift +510 -0
  372. package/Sources/UIKit/Pasteboard.swift +363 -0
  373. package/Sources/UIKit/PhotoAlbum.swift +81 -0
  374. package/Sources/UIKit/RemoteNotifications.swift +15 -0
  375. package/Sources/UIKit/Representable.swift +288 -0
  376. package/Sources/UIKit/SafeArea.swift +12 -0
  377. package/Sources/UIKit/SceneDelegates.swift +132 -0
  378. package/Sources/UIKit/Scenes.swift +40 -0
  379. package/Sources/UIKit/ScrollView.swift +157 -0
  380. package/Sources/UIKit/ShortcutItems.swift +67 -0
  381. package/Sources/UIKit/SymbolConfiguration.swift +124 -0
  382. package/Sources/UIKit/TargetAction.swift +123 -0
  383. package/Sources/UIKit/TextPaste.swift +161 -0
  384. package/Sources/UIKit/TextView.swift +538 -0
  385. package/Sources/UIKit/UIKit.swift +292 -0
  386. package/Sources/UIKit/UIView.swift +855 -0
  387. package/Sources/UIKit/ViewTranslation.swift +311 -0
  388. package/Sources/UniformTypeIdentifiers/UTType.swift +196 -0
  389. package/Sources/UserNotifications/Content.swift +370 -0
  390. package/Sources/UserNotifications/NotificationCenter.swift +309 -0
  391. package/Sources/WeatherKit/WeatherKit.swift +228 -0
  392. package/Sources/WebKit/WebKit.swift +245 -0
  393. package/Sources/os/os.swift +376 -0
  394. package/Sources/zlib/zlib.swift +6 -0
  395. package/index.d.ts +2 -0
  396. package/index.mjs +16 -0
  397. package/manifest.d.mts +2 -0
  398. package/manifest.mjs +39 -0
  399. package/package.json +30 -4
  400. package/sync-sources.mjs +33 -0
@@ -0,0 +1,376 @@
1
+ // `ChartContent`, its result builder, the structural content types and the
2
+ // mark modifiers. Content resolves to `_RawMark`s (one per data point) that
3
+ // Chart.swift scales into the `chart` element's unit-coordinate marks.
4
+
5
+ /// The content of a `Chart`: marks, groups of marks, or a type with a `body`.
6
+ /// Unlike `View` it is not main-actor isolated: the runtime resolves it from
7
+ /// the (nonisolated) `_HostView` requirements.
8
+ public protocol ChartContent {
9
+ associatedtype Body: ChartContent
10
+ @ChartContentBuilder var body: Self.Body { get }
11
+ }
12
+
13
+ extension Never: @preconcurrency ChartContent {}
14
+
15
+ /// Content the resolver reads directly instead of evaluating `body`.
16
+ public protocol _PrimitiveChartContent: ChartContent where Body == Never {}
17
+
18
+ extension _PrimitiveChartContent {
19
+ public var body: Never { fatalError("\(Self.self) is primitive chart content and has no body") }
20
+ }
21
+
22
+ /// Internal: contributes raw marks.
23
+ protocol _ChartContentNode {
24
+ func _collect(into collector: inout _ChartCollector, modifiers: _MarkModifiers)
25
+ }
26
+
27
+ extension ChartContent {
28
+ func _collectAny(into collector: inout _ChartCollector, modifiers: _MarkModifiers) {
29
+ if let node = self as? any _ChartContentNode {
30
+ node._collect(into: &collector, modifiers: modifiers)
31
+ } else {
32
+ body._collectAny(into: &collector, modifiers: modifiers)
33
+ }
34
+ }
35
+ }
36
+
37
+ // MARK: - Raw marks
38
+
39
+ /// An annotation view attached to a mark.
40
+ struct _MarkAnnotation {
41
+ var position: AnnotationPosition
42
+ var alignment: Alignment
43
+ var spacing: Double
44
+ var content: any View
45
+ }
46
+
47
+ /// Everything the modifiers set; an inner modifier overrides an outer one.
48
+ struct _MarkModifiers {
49
+ var style: (any ShapeStyle)?
50
+ var styleBy: _LabelledValue?
51
+ var symbolBy: _LabelledValue?
52
+ var symbol: String?
53
+ var symbolSize: Double?
54
+ var interpolation = "linear"
55
+ var opacity = 1.0
56
+ var lineWidth: Double?
57
+ var cornerRadius = 0.0
58
+ var mask: (any ChartContent)?
59
+ var annotations: [_MarkAnnotation] = []
60
+ }
61
+
62
+ enum _RawMarkKind: Equatable {
63
+ case bar, rectangle, line, area, point, rule
64
+ }
65
+
66
+ /// One mark before scaling.
67
+ struct _RawMark {
68
+ var kind: _RawMarkKind
69
+ var x: _PlottableValue?
70
+ var xStart: _PlottableValue?
71
+ var xEnd: _PlottableValue?
72
+ var y: _PlottableValue?
73
+ var yStart: _PlottableValue?
74
+ var yEnd: _PlottableValue?
75
+ var series: _PlottableValue?
76
+ var width: MarkDimension?
77
+ var height: MarkDimension?
78
+ var modifiers = _MarkModifiers()
79
+
80
+ var xValues: [_PlottableValue] { [x, xStart, xEnd].compactMap { $0 } }
81
+ var yValues: [_PlottableValue] { [y, yStart, yEnd].compactMap { $0 } }
82
+ }
83
+
84
+ struct _ChartCollector {
85
+ var marks: [_RawMark] = []
86
+ }
87
+
88
+ // MARK: - Structural content
89
+
90
+ public struct _EmptyChartContent {
91
+ public init() {}
92
+ }
93
+ extension _EmptyChartContent: _PrimitiveChartContent {}
94
+ extension _EmptyChartContent: _ChartContentNode {
95
+ func _collect(into collector: inout _ChartCollector, modifiers: _MarkModifiers) {}
96
+ }
97
+
98
+ public struct _TupleChartContent<T> {
99
+ let children: [any ChartContent]
100
+ }
101
+ extension _TupleChartContent: _PrimitiveChartContent {}
102
+ extension _TupleChartContent: _ChartContentNode {
103
+ func _collect(into collector: inout _ChartCollector, modifiers: _MarkModifiers) {
104
+ for child in children { child._collectAny(into: &collector, modifiers: modifiers) }
105
+ }
106
+ }
107
+
108
+ public struct _ConditionalChartContent<TrueContent: ChartContent, FalseContent: ChartContent> {
109
+ enum Storage {
110
+ case trueContent(TrueContent)
111
+ case falseContent(FalseContent)
112
+ }
113
+ let storage: Storage
114
+ }
115
+ extension _ConditionalChartContent: _PrimitiveChartContent {}
116
+ extension _ConditionalChartContent: _ChartContentNode {
117
+ func _collect(into collector: inout _ChartCollector, modifiers: _MarkModifiers) {
118
+ switch storage {
119
+ case .trueContent(let content): content._collectAny(into: &collector, modifiers: modifiers)
120
+ case .falseContent(let content): content._collectAny(into: &collector, modifiers: modifiers)
121
+ }
122
+ }
123
+ }
124
+
125
+ extension Optional: ChartContent where Wrapped: ChartContent {
126
+ public typealias Body = Never
127
+ public var body: Never { fatalError("Optional is primitive chart content and has no body") }
128
+ }
129
+ extension Optional: _ChartContentNode where Wrapped: ChartContent {
130
+ func _collect(into collector: inout _ChartCollector, modifiers: _MarkModifiers) {
131
+ if case .some(let content) = self { content._collectAny(into: &collector, modifiers: modifiers) }
132
+ }
133
+ }
134
+
135
+ public struct _ArrayChartContent<Element: ChartContent> {
136
+ let elements: [Element]
137
+ }
138
+ extension _ArrayChartContent: _PrimitiveChartContent {}
139
+ extension _ArrayChartContent: _ChartContentNode {
140
+ func _collect(into collector: inout _ChartCollector, modifiers: _MarkModifiers) {
141
+ for element in elements { element._collectAny(into: &collector, modifiers: modifiers) }
142
+ }
143
+ }
144
+
145
+ /// Type-erased chart content.
146
+ public struct AnyChartContent {
147
+ let storage: any ChartContent
148
+ public init<C: ChartContent>(_ content: C) { storage = content }
149
+ }
150
+ extension AnyChartContent: _PrimitiveChartContent {}
151
+ extension AnyChartContent: _ChartContentNode {
152
+ func _collect(into collector: inout _ChartCollector, modifiers: _MarkModifiers) {
153
+ storage._collectAny(into: &collector, modifiers: modifiers)
154
+ }
155
+ }
156
+
157
+ /// `ForEach` over chart content: one mark group per element, with modifiers
158
+ /// applied to the `ForEach` distributed to each element's marks.
159
+ extension ForEach: ChartContent where Content: ChartContent {
160
+ public typealias Body = Never
161
+ public var body: Never { fatalError("ForEach is primitive chart content and has no body") }
162
+ }
163
+ extension ForEach: _ChartContentNode where Content: ChartContent {
164
+ func _collect(into collector: inout _ChartCollector, modifiers: _MarkModifiers) {
165
+ for element in data { content(element)._collectAny(into: &collector, modifiers: modifiers) }
166
+ }
167
+ }
168
+
169
+ extension ForEach where Content: ChartContent {
170
+ public init(_ data: Data, id: KeyPath<Data.Element, ID>,
171
+ @ChartContentBuilder content: @escaping (Data.Element) -> Content) {
172
+ self.init(_data: data, id: { $0[keyPath: id] }, content: content)
173
+ }
174
+ }
175
+
176
+ extension ForEach where Content: ChartContent, Data.Element: Identifiable, ID == Data.Element.ID {
177
+ public init(_ data: Data, @ChartContentBuilder content: @escaping (Data.Element) -> Content) {
178
+ self.init(_data: data, id: { $0.id }, content: content)
179
+ }
180
+ }
181
+
182
+ extension ForEach where Content: ChartContent, Data == Range<Int>, ID == Int {
183
+ public init(_ data: Range<Int>, @ChartContentBuilder content: @escaping (Int) -> Content) {
184
+ self.init(_data: data, id: { $0 }, content: content)
185
+ }
186
+ }
187
+
188
+ // MARK: - ChartContentBuilder
189
+
190
+ @resultBuilder
191
+ public enum ChartContentBuilder {
192
+ public static func buildBlock() -> _EmptyChartContent { _EmptyChartContent() }
193
+
194
+ public static func buildBlock<Content: ChartContent>(_ content: Content) -> Content { content }
195
+
196
+ public static func buildBlock<each Content: ChartContent>(
197
+ _ content: repeat each Content
198
+ ) -> _TupleChartContent<(repeat each Content)> {
199
+ var children: [any ChartContent] = []
200
+ for child in repeat each content { children.append(child) }
201
+ return _TupleChartContent(children: children)
202
+ }
203
+
204
+ public static func buildExpression<Content: ChartContent>(_ content: Content) -> Content { content }
205
+
206
+ public static func buildOptional<Content: ChartContent>(_ content: Content?) -> Content? { content }
207
+
208
+ public static func buildEither<TrueContent: ChartContent, FalseContent: ChartContent>(
209
+ first: TrueContent
210
+ ) -> _ConditionalChartContent<TrueContent, FalseContent> {
211
+ _ConditionalChartContent(storage: .trueContent(first))
212
+ }
213
+
214
+ public static func buildEither<TrueContent: ChartContent, FalseContent: ChartContent>(
215
+ second: FalseContent
216
+ ) -> _ConditionalChartContent<TrueContent, FalseContent> {
217
+ _ConditionalChartContent(storage: .falseContent(second))
218
+ }
219
+
220
+ public static func buildArray<Content: ChartContent>(_ components: [Content]) -> _ArrayChartContent<Content> {
221
+ _ArrayChartContent(elements: components)
222
+ }
223
+
224
+ public static func buildLimitedAvailability<Content: ChartContent>(_ content: Content) -> AnyChartContent {
225
+ AnyChartContent(content)
226
+ }
227
+ }
228
+
229
+ // MARK: - Modifiers
230
+
231
+ /// Content with a modifier applied to every mark beneath it.
232
+ public struct _ModifiedChartContent<Content: ChartContent> {
233
+ let content: Content
234
+ let transform: (inout _MarkModifiers) -> Void
235
+ }
236
+ extension _ModifiedChartContent: _PrimitiveChartContent {}
237
+ extension _ModifiedChartContent: _ChartContentNode {
238
+ func _collect(into collector: inout _ChartCollector, modifiers: _MarkModifiers) {
239
+ // Outer modifiers run first so that the mark's own (inner) ones win.
240
+ var modified = modifiers
241
+ transform(&modified)
242
+ content._collectAny(into: &collector, modifiers: modified)
243
+ }
244
+ }
245
+
246
+ /// Where an annotation sits relative to its mark (also the legend position).
247
+ public enum AnnotationPosition: Hashable, Sendable {
248
+ case automatic, top, bottom, leading, trailing, overlay
249
+ case topLeading, topTrailing, bottomLeading, bottomTrailing
250
+
251
+ /// The protocol's position and the alignment it implies.
252
+ var _resolved: (position: String, alignment: Alignment?) {
253
+ switch self {
254
+ case .automatic, .top: ("top", nil)
255
+ case .bottom: ("bottom", nil)
256
+ case .leading: ("leading", nil)
257
+ case .trailing: ("trailing", nil)
258
+ case .overlay: ("overlay", nil)
259
+ case .topLeading: ("top", .leading)
260
+ case .topTrailing: ("top", .trailing)
261
+ case .bottomLeading: ("bottom", .leading)
262
+ case .bottomTrailing: ("bottom", .trailing)
263
+ }
264
+ }
265
+ }
266
+
267
+ /// How a line or area is interpolated between its points.
268
+ public enum InterpolationMethod: Hashable, Sendable {
269
+ case linear, cardinal, catmullRom, monotone, stepStart, stepCenter, stepEnd
270
+
271
+ var _name: String {
272
+ switch self {
273
+ case .linear: "linear"
274
+ case .cardinal: "cardinal"
275
+ case .catmullRom: "catmullRom"
276
+ case .monotone: "monotone"
277
+ case .stepStart: "stepStart"
278
+ case .stepCenter: "stepCenter"
279
+ case .stepEnd: "stepEnd"
280
+ }
281
+ }
282
+
283
+ public static func cardinal(tension: CGFloat) -> InterpolationMethod { .cardinal }
284
+ public static func catmullRom(alpha: CGFloat) -> InterpolationMethod { .catmullRom }
285
+ }
286
+
287
+ /// The shape of a point or legend symbol.
288
+ public struct BasicChartSymbolShape: Hashable, Sendable {
289
+ let name: String
290
+
291
+ public static let circle = BasicChartSymbolShape(name: "circle")
292
+ public static let square = BasicChartSymbolShape(name: "square")
293
+ public static let triangle = BasicChartSymbolShape(name: "triangle")
294
+ public static let diamond = BasicChartSymbolShape(name: "diamond")
295
+ public static let pentagon = BasicChartSymbolShape(name: "diamond")
296
+ public static let cross = BasicChartSymbolShape(name: "cross")
297
+ public static let plus = BasicChartSymbolShape(name: "plus")
298
+ public static let asterisk = BasicChartSymbolShape(name: "asterisk")
299
+ }
300
+
301
+ /// The symbol palette for `symbol(by:)`, in the protocol's order.
302
+ let _chartSymbolPalette = ["circle", "square", "triangle", "diamond", "cross", "plus", "asterisk"]
303
+
304
+ /// The color palette for `foregroundStyle(by:)`.
305
+ let _chartColorPalette: [Color] = [.blue, .green, .orange, .purple, .red, .teal,
306
+ .yellow, .pink, .indigo, .mint, .cyan, .brown]
307
+
308
+ extension ChartContent {
309
+ func _modified(_ transform: @escaping (inout _MarkModifiers) -> Void) -> _ModifiedChartContent<Self> {
310
+ _ModifiedChartContent(content: self, transform: transform)
311
+ }
312
+
313
+ public func foregroundStyle<S: ShapeStyle>(_ style: S) -> some ChartContent {
314
+ _modified { $0.style = style }
315
+ }
316
+
317
+ public func foregroundStyle<Value: Plottable>(by value: PlottableValue<Value>) -> some ChartContent {
318
+ let erased = value._erased
319
+ return _modified { $0.styleBy = erased }
320
+ }
321
+
322
+ public func symbol<Value: Plottable>(by value: PlottableValue<Value>) -> some ChartContent {
323
+ let erased = value._erased
324
+ return _modified { $0.symbolBy = erased }
325
+ }
326
+
327
+ public func symbol(_ shape: BasicChartSymbolShape) -> some ChartContent {
328
+ _modified { $0.symbol = shape.name }
329
+ }
330
+
331
+ public func symbolSize(_ area: CGFloat) -> some ChartContent {
332
+ // SwiftUI takes an area in points²; the protocol wants a diameter.
333
+ let diameter = area.squareRoot()
334
+ return _modified { $0.symbolSize = diameter }
335
+ }
336
+
337
+ public func symbolSize(_ size: CGSize) -> some ChartContent {
338
+ _modified { $0.symbolSize = min(size.width, size.height) }
339
+ }
340
+
341
+ public func interpolationMethod(_ method: InterpolationMethod) -> some ChartContent {
342
+ _modified { $0.interpolation = method._name }
343
+ }
344
+
345
+ public func opacity(_ opacity: Double) -> some ChartContent {
346
+ _modified { $0.opacity = max(0, min(1, opacity)) }
347
+ }
348
+
349
+ public func lineStyle(_ style: StrokeStyle) -> some ChartContent {
350
+ _modified { $0.lineWidth = style.lineWidth }
351
+ }
352
+
353
+ public func cornerRadius(_ radius: CGFloat, style: RoundedCornerStyle = .continuous) -> some ChartContent {
354
+ _modified { $0.cornerRadius = radius }
355
+ }
356
+
357
+ /// Clips the marks with the geometry of the first area or rectangle mark
358
+ /// in `content`, which is scaled like the chart's own marks.
359
+ public func mask<C: ChartContent>(@ChartContentBuilder _ content: () -> C) -> some ChartContent {
360
+ let mask = content()
361
+ return _modified { $0.mask = mask }
362
+ }
363
+
364
+ public func annotation<C: View>(position: AnnotationPosition = .automatic, alignment: Alignment = .center,
365
+ spacing: CGFloat? = nil,
366
+ @ViewBuilder content: () -> C) -> some ChartContent {
367
+ let view = content()
368
+ let annotation = _MarkAnnotation(position: position, alignment: alignment, spacing: spacing ?? 4, content: view)
369
+ return _modified { $0.annotations.append(annotation) }
370
+ }
371
+
372
+ /// Accepted for source compatibility; the shim has no accessibility tree.
373
+ public func accessibilityLabel(_ label: String) -> some ChartContent { self }
374
+ public func accessibilityValue(_ value: String) -> some ChartContent { self }
375
+ public func accessibilityHidden(_ hidden: Bool) -> some ChartContent { self }
376
+ }
@@ -0,0 +1,57 @@
1
+ /// `ChartProxy`, `.chartOverlay`, `.chartBackground` and the selection
2
+ /// modifiers. The page lays charts out and draws their marks (Phase 7), so
3
+ /// the Swift side knows no plot geometry: a proxy maps no value to a
4
+ /// position or back (nil), and its plot frame is unknown (nil). An overlay
5
+ /// or background is drawn over or under the chart with that proxy. The
6
+ /// page reports no taps or drags on a chart, so a selection binding is
7
+ /// never set by the viewer.
8
+
9
+ /// Positions in a chart's plot, for overlays: unknown in the browser.
10
+ public struct ChartProxy {
11
+ init() {}
12
+
13
+ /// Nil: the plot's geometry is the page's.
14
+ public func position<P: Plottable>(forX value: P) -> CGFloat? { nil }
15
+ public func position<P: Plottable>(forY value: P) -> CGFloat? { nil }
16
+ public func position<X: Plottable, Y: Plottable>(for value: (x: X, y: Y)) -> CGPoint? { nil }
17
+ public func value<P: Plottable>(atX position: CGFloat, as type: P.Type = P.self) -> P? { nil }
18
+ public func value<P: Plottable>(atY position: CGFloat, as type: P.Type = P.self) -> P? { nil }
19
+ public func value<X: Plottable, Y: Plottable>(at location: CGPoint, as type: (X, Y).Type = (X, Y).self) -> (X, Y)? { nil }
20
+ /// Nil: the plot's frame is the page's.
21
+ public var plotFrame: Anchor<CGRect>? { nil }
22
+ /// Zero.
23
+ public var plotSize: CGSize { .zero }
24
+ }
25
+
26
+ nonisolated extension View {
27
+ /// Draws `content` over the chart with a proxy (see the file comment).
28
+ public func chartOverlay<V: View>(alignment: Alignment = .center,
29
+ @ViewBuilder content: @escaping (ChartProxy) -> V) -> some View {
30
+ overlay(alignment: alignment) { content(ChartProxy()) }
31
+ }
32
+
33
+ /// Draws `content` under the chart with a proxy (see the file comment).
34
+ public func chartBackground<V: View>(alignment: Alignment = .center,
35
+ @ViewBuilder content: @escaping (ChartProxy) -> V) -> some View {
36
+ background(alignment: alignment) { content(ChartProxy()) }
37
+ }
38
+
39
+ /// Styles the chart's plot area with `content`. The page lays the plot
40
+ /// out inside the chart, so the plot is not a view of its own here:
41
+ /// `content` gets the whole chart (an overlay covers the axes too).
42
+ public func chartPlotStyle<Content: View>(@ViewBuilder content: @escaping (ChartPlotContent) -> Content) -> some View {
43
+ content(ChartPlotContent(content: AnyView(self)))
44
+ }
45
+
46
+ /// Accepted: the viewer cannot select a value on the page.
47
+ public func chartXSelection<P: Plottable>(value: Binding<P?>) -> some View { self }
48
+ public func chartXSelection<P: Plottable & Comparable>(range: Binding<ClosedRange<P>?>) -> some View { self }
49
+ public func chartYSelection<P: Plottable>(value: Binding<P?>) -> some View { self }
50
+ public func chartYSelection<P: Plottable & Comparable>(range: Binding<ClosedRange<P>?>) -> some View { self }
51
+ }
52
+
53
+ /// The plot area `chartPlotStyle` styles: here, the whole chart (see there).
54
+ public struct ChartPlotContent: View {
55
+ let content: AnyView
56
+ public var body: some View { content }
57
+ }
@@ -0,0 +1,204 @@
1
+ // The marks: BarMark, LineMark, AreaMark, PointMark, RuleMark, RectangleMark.
2
+ // Each is one `_RawMark`; Chart.swift groups lines and areas by series.
3
+
4
+ /// The width (or height) of a bar or rectangle.
5
+ public enum MarkDimension: Equatable, Sendable {
6
+ /// 80 % of the band.
7
+ case automatic
8
+ /// A fraction of the band.
9
+ case ratio(CGFloat)
10
+ /// Points, centered on the value.
11
+ case fixed(CGFloat)
12
+ /// The band inset by points on each side (treated as `automatic`).
13
+ case inset(CGFloat)
14
+ }
15
+
16
+ extension MarkDimension: ExpressibleByFloatLiteral, ExpressibleByIntegerLiteral {
17
+ public init(floatLiteral value: Double) { self = .fixed(value) }
18
+ public init(integerLiteral value: Int) { self = .fixed(CGFloat(value)) }
19
+ }
20
+
21
+ /// A mark that resolves to one `_RawMark`.
22
+ protocol _SingleMark: _PrimitiveChartContent, _ChartContentNode {
23
+ var _raw: _RawMark { get }
24
+ }
25
+
26
+ extension _SingleMark {
27
+ func _collect(into collector: inout _ChartCollector, modifiers: _MarkModifiers) {
28
+ var mark = _raw
29
+ mark.modifiers = modifiers
30
+ collector.marks.append(mark)
31
+ }
32
+ }
33
+
34
+ // MARK: - BarMark
35
+
36
+ public struct BarMark {
37
+ let _raw: _RawMark
38
+
39
+ public init<X: Plottable, Y: Plottable>(x: PlottableValue<X>, y: PlottableValue<Y>,
40
+ width: MarkDimension = .automatic, stacking: MarkStackingMethod = .standard) {
41
+ _raw = _RawMark(kind: .bar, x: x.value._plottableValue, y: y.value._plottableValue, width: width)
42
+ }
43
+
44
+ public init<X: Plottable, Y: Plottable>(x: PlottableValue<X>, yStart: PlottableValue<Y>, yEnd: PlottableValue<Y>,
45
+ width: MarkDimension = .automatic) {
46
+ _raw = _RawMark(kind: .bar, x: x.value._plottableValue,
47
+ yStart: yStart.value._plottableValue, yEnd: yEnd.value._plottableValue, width: width)
48
+ }
49
+
50
+ public init<X: Plottable, Y: Plottable>(xStart: PlottableValue<X>, xEnd: PlottableValue<X>, y: PlottableValue<Y>,
51
+ height: MarkDimension = .automatic) {
52
+ _raw = _RawMark(kind: .bar, xStart: xStart.value._plottableValue, xEnd: xEnd.value._plottableValue,
53
+ y: y.value._plottableValue, height: height)
54
+ }
55
+
56
+ public init<X: Plottable>(x: PlottableValue<X>, width: MarkDimension = .automatic,
57
+ stacking: MarkStackingMethod = .standard) {
58
+ _raw = _RawMark(kind: .bar, x: x.value._plottableValue, width: width)
59
+ }
60
+
61
+ public init<Y: Plottable>(y: PlottableValue<Y>, height: MarkDimension = .automatic,
62
+ stacking: MarkStackingMethod = .standard) {
63
+ _raw = _RawMark(kind: .bar, y: y.value._plottableValue, height: height)
64
+ }
65
+ }
66
+
67
+ /// Accepted for source compatibility; the shim does not stack bars.
68
+ public enum MarkStackingMethod: Hashable, Sendable {
69
+ case standard, normalized, center, unstacked
70
+ }
71
+
72
+ // MARK: - LineMark
73
+
74
+ public struct LineMark {
75
+ let _raw: _RawMark
76
+
77
+ public init<X: Plottable, Y: Plottable>(x: PlottableValue<X>, y: PlottableValue<Y>) {
78
+ _raw = _RawMark(kind: .line, x: x.value._plottableValue, y: y.value._plottableValue)
79
+ }
80
+
81
+ public init<X: Plottable, Y: Plottable, S: Plottable>(x: PlottableValue<X>, y: PlottableValue<Y>,
82
+ series: PlottableValue<S>) {
83
+ _raw = _RawMark(kind: .line, x: x.value._plottableValue, y: y.value._plottableValue,
84
+ series: series.value._plottableValue)
85
+ }
86
+ }
87
+
88
+ // MARK: - AreaMark
89
+
90
+ public struct AreaMark {
91
+ let _raw: _RawMark
92
+
93
+ public init<X: Plottable, Y: Plottable>(x: PlottableValue<X>, y: PlottableValue<Y>,
94
+ stacking: MarkStackingMethod = .standard) {
95
+ _raw = _RawMark(kind: .area, x: x.value._plottableValue, y: y.value._plottableValue)
96
+ }
97
+
98
+ public init<X: Plottable, Y: Plottable, S: Plottable>(x: PlottableValue<X>, y: PlottableValue<Y>,
99
+ series: PlottableValue<S>,
100
+ stacking: MarkStackingMethod = .standard) {
101
+ _raw = _RawMark(kind: .area, x: x.value._plottableValue, y: y.value._plottableValue,
102
+ series: series.value._plottableValue)
103
+ }
104
+
105
+ public init<X: Plottable, Y: Plottable>(x: PlottableValue<X>, yStart: PlottableValue<Y>, yEnd: PlottableValue<Y>) {
106
+ _raw = _RawMark(kind: .area, x: x.value._plottableValue,
107
+ yStart: yStart.value._plottableValue, yEnd: yEnd.value._plottableValue)
108
+ }
109
+
110
+ public init<X: Plottable, Y: Plottable, S: Plottable>(x: PlottableValue<X>, yStart: PlottableValue<Y>,
111
+ yEnd: PlottableValue<Y>, series: PlottableValue<S>) {
112
+ _raw = _RawMark(kind: .area, x: x.value._plottableValue,
113
+ yStart: yStart.value._plottableValue, yEnd: yEnd.value._plottableValue,
114
+ series: series.value._plottableValue)
115
+ }
116
+ }
117
+
118
+ // MARK: - PointMark
119
+
120
+ public struct PointMark {
121
+ let _raw: _RawMark
122
+
123
+ public init<X: Plottable, Y: Plottable>(x: PlottableValue<X>, y: PlottableValue<Y>) {
124
+ _raw = _RawMark(kind: .point, x: x.value._plottableValue, y: y.value._plottableValue)
125
+ }
126
+ }
127
+
128
+ // MARK: - RuleMark
129
+
130
+ public struct RuleMark {
131
+ let _raw: _RawMark
132
+
133
+ /// A horizontal rule across the plot.
134
+ public init<Y: Plottable>(y: PlottableValue<Y>) {
135
+ _raw = _RawMark(kind: .rule, y: y.value._plottableValue)
136
+ }
137
+
138
+ /// A vertical rule across the plot.
139
+ public init<X: Plottable>(x: PlottableValue<X>) {
140
+ _raw = _RawMark(kind: .rule, x: x.value._plottableValue)
141
+ }
142
+
143
+ public init<X: Plottable, Y: Plottable>(x: PlottableValue<X>, yStart: PlottableValue<Y>, yEnd: PlottableValue<Y>) {
144
+ _raw = _RawMark(kind: .rule, x: x.value._plottableValue,
145
+ yStart: yStart.value._plottableValue, yEnd: yEnd.value._plottableValue)
146
+ }
147
+
148
+ public init<X: Plottable, Y: Plottable>(xStart: PlottableValue<X>, xEnd: PlottableValue<X>, y: PlottableValue<Y>) {
149
+ _raw = _RawMark(kind: .rule, xStart: xStart.value._plottableValue, xEnd: xEnd.value._plottableValue,
150
+ y: y.value._plottableValue)
151
+ }
152
+ }
153
+
154
+ // MARK: - RectangleMark
155
+
156
+ public struct RectangleMark {
157
+ let _raw: _RawMark
158
+
159
+ /// A band between two x values across the plot's height.
160
+ public init<X: Plottable>(xStart: PlottableValue<X>, xEnd: PlottableValue<X>) {
161
+ _raw = _RawMark(kind: .rectangle, xStart: xStart.value._plottableValue, xEnd: xEnd.value._plottableValue)
162
+ }
163
+
164
+ /// A band between two y values across the plot's width.
165
+ public init<Y: Plottable>(yStart: PlottableValue<Y>, yEnd: PlottableValue<Y>) {
166
+ _raw = _RawMark(kind: .rectangle, yStart: yStart.value._plottableValue, yEnd: yEnd.value._plottableValue)
167
+ }
168
+
169
+ public init<X: Plottable, Y: Plottable>(xStart: PlottableValue<X>, xEnd: PlottableValue<X>,
170
+ yStart: PlottableValue<Y>, yEnd: PlottableValue<Y>) {
171
+ _raw = _RawMark(kind: .rectangle, xStart: xStart.value._plottableValue, xEnd: xEnd.value._plottableValue,
172
+ yStart: yStart.value._plottableValue, yEnd: yEnd.value._plottableValue)
173
+ }
174
+
175
+ public init<X: Plottable, Y: Plottable>(x: PlottableValue<X>, yStart: PlottableValue<Y>, yEnd: PlottableValue<Y>,
176
+ width: MarkDimension = .automatic) {
177
+ _raw = _RawMark(kind: .rectangle, x: x.value._plottableValue,
178
+ yStart: yStart.value._plottableValue, yEnd: yEnd.value._plottableValue, width: width)
179
+ }
180
+
181
+ public init<X: Plottable, Y: Plottable>(xStart: PlottableValue<X>, xEnd: PlottableValue<X>, y: PlottableValue<Y>,
182
+ height: MarkDimension = .automatic) {
183
+ _raw = _RawMark(kind: .rectangle, xStart: xStart.value._plottableValue, xEnd: xEnd.value._plottableValue,
184
+ y: y.value._plottableValue, height: height)
185
+ }
186
+
187
+ public init<X: Plottable, Y: Plottable>(x: PlottableValue<X>, y: PlottableValue<Y>,
188
+ width: MarkDimension = .automatic, height: MarkDimension = .automatic) {
189
+ _raw = _RawMark(kind: .rectangle, x: x.value._plottableValue, y: y.value._plottableValue,
190
+ width: width, height: height)
191
+ }
192
+ }
193
+
194
+ extension BarMark: _SingleMark {}
195
+
196
+ extension LineMark: _SingleMark {}
197
+
198
+ extension AreaMark: _SingleMark {}
199
+
200
+ extension PointMark: _SingleMark {}
201
+
202
+ extension RuleMark: _SingleMark {}
203
+
204
+ extension RectangleMark: _SingleMark {}