@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,199 @@
1
+ /// `VStackLayout`, `HStackLayout`, `ZStackLayout` and `AnyLayout` (iOS 16):
2
+ /// the stacks as `Layout` values, so that a view can switch its layout
3
+ /// (`let layout = isCompact ? AnyLayout(VStackLayout()) : AnyLayout(HStackLayout())`).
4
+ ///
5
+ /// Used as a container (`VStackLayout(spacing: 0) { … }`), a stack layout is
6
+ /// the stack itself: the same `vstack` / `hstack` / `zstack` element, laid out
7
+ /// by the page. `AnyLayout` does the same for a stack it wraps, and is a
8
+ /// custom `layout` element (Phase 6) for any other layout. Switching an
9
+ /// `AnyLayout` between kinds rebuilds its content (approximation: SwiftUI
10
+ /// keeps the children's state and animates them to their new places).
11
+ ///
12
+ /// Their `Layout` methods compute the stacks in Swift too, for a custom
13
+ /// layout that delegates to one: subviews get the proposal (a vertical
14
+ /// stack's height and a horizontal stack's width shared evenly), are placed
15
+ /// one after the other `spacing` apart (8 by default) and aligned across
16
+ /// the axis.
17
+
18
+ public struct VStackLayout: Layout {
19
+ public var alignment: HorizontalAlignment
20
+ public var spacing: CGFloat?
21
+
22
+ public init(alignment: HorizontalAlignment = .center, spacing: CGFloat? = nil) {
23
+ self.alignment = alignment
24
+ self.spacing = spacing
25
+ }
26
+
27
+ public static var layoutProperties: LayoutProperties {
28
+ var properties = LayoutProperties()
29
+ properties.stackOrientation = .vertical
30
+ return properties
31
+ }
32
+
33
+ public func sizeThatFits(proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) -> CGSize {
34
+ let sizes = _stackSizes(subviews, proposal: proposal, vertical: true)
35
+ let gap = spacing ?? 8
36
+ return CGSize(width: sizes.map(\.width).max() ?? 0,
37
+ height: sizes.map(\.height).reduce(0, +) + gap * CGFloat(max(0, sizes.count - 1)))
38
+ }
39
+
40
+ public func placeSubviews(in bounds: CGRect, proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) {
41
+ let sizes = _stackSizes(subviews, proposal: proposal, vertical: true)
42
+ var y = bounds.minY
43
+ for (subview, size) in zip(subviews, sizes) {
44
+ let x: CGFloat = switch alignment.name {
45
+ case "leading": bounds.minX
46
+ case "trailing": bounds.maxX - size.width
47
+ default: bounds.midX - size.width / 2
48
+ }
49
+ subview.place(at: CGPoint(x: x, y: y), anchor: .topLeading, proposal: ProposedViewSize(size))
50
+ y += size.height + (spacing ?? 8)
51
+ }
52
+ }
53
+
54
+ /// The stack itself: a `VStack` of the content.
55
+ public func callAsFunction<V: View>(@ViewBuilder _ content: () -> V) -> some View {
56
+ VStack(alignment: alignment, spacing: spacing, content: content)
57
+ }
58
+ }
59
+
60
+ public struct HStackLayout: Layout {
61
+ public var alignment: VerticalAlignment
62
+ public var spacing: CGFloat?
63
+
64
+ public init(alignment: VerticalAlignment = .center, spacing: CGFloat? = nil) {
65
+ self.alignment = alignment
66
+ self.spacing = spacing
67
+ }
68
+
69
+ public static var layoutProperties: LayoutProperties {
70
+ var properties = LayoutProperties()
71
+ properties.stackOrientation = .horizontal
72
+ return properties
73
+ }
74
+
75
+ public func sizeThatFits(proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) -> CGSize {
76
+ let sizes = _stackSizes(subviews, proposal: proposal, vertical: false)
77
+ let gap = spacing ?? 8
78
+ return CGSize(width: sizes.map(\.width).reduce(0, +) + gap * CGFloat(max(0, sizes.count - 1)),
79
+ height: sizes.map(\.height).max() ?? 0)
80
+ }
81
+
82
+ public func placeSubviews(in bounds: CGRect, proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) {
83
+ let sizes = _stackSizes(subviews, proposal: proposal, vertical: false)
84
+ var x = bounds.minX
85
+ for (subview, size) in zip(subviews, sizes) {
86
+ let y: CGFloat = switch alignment.name {
87
+ case "top": bounds.minY
88
+ case "bottom": bounds.maxY - size.height
89
+ default: bounds.midY - size.height / 2
90
+ }
91
+ subview.place(at: CGPoint(x: x, y: y), anchor: .topLeading, proposal: ProposedViewSize(size))
92
+ x += size.width + (spacing ?? 8)
93
+ }
94
+ }
95
+
96
+ /// The stack itself: an `HStack` of the content.
97
+ public func callAsFunction<V: View>(@ViewBuilder _ content: () -> V) -> some View {
98
+ HStack(alignment: alignment, spacing: spacing, content: content)
99
+ }
100
+ }
101
+
102
+ public struct ZStackLayout: Layout {
103
+ public var alignment: Alignment
104
+
105
+ public init(alignment: Alignment = .center) {
106
+ self.alignment = alignment
107
+ }
108
+
109
+ public func sizeThatFits(proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) -> CGSize {
110
+ let sizes = subviews.map { $0.sizeThatFits(proposal) }
111
+ return CGSize(width: sizes.map(\.width).max() ?? 0, height: sizes.map(\.height).max() ?? 0)
112
+ }
113
+
114
+ public func placeSubviews(in bounds: CGRect, proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) {
115
+ for subview in subviews {
116
+ let size = subview.sizeThatFits(proposal)
117
+ let x: CGFloat = switch alignment.horizontal.name {
118
+ case "leading": bounds.minX
119
+ case "trailing": bounds.maxX - size.width
120
+ default: bounds.midX - size.width / 2
121
+ }
122
+ let y: CGFloat = switch alignment.vertical.name {
123
+ case "top": bounds.minY
124
+ case "bottom": bounds.maxY - size.height
125
+ default: bounds.midY - size.height / 2
126
+ }
127
+ subview.place(at: CGPoint(x: x, y: y), anchor: .topLeading, proposal: ProposedViewSize(size))
128
+ }
129
+ }
130
+
131
+ /// The stack itself: a `ZStack` of the content.
132
+ public func callAsFunction<V: View>(@ViewBuilder _ content: () -> V) -> some View {
133
+ ZStack(alignment: alignment, content: content)
134
+ }
135
+ }
136
+
137
+ /// Each subview's size along a stack: the proposal's length along the axis
138
+ /// shared evenly, the full proposal across it.
139
+ func _stackSizes(_ subviews: LayoutSubviews, proposal: ProposedViewSize, vertical: Bool) -> [CGSize] {
140
+ let count = CGFloat(max(1, subviews.count))
141
+ let share: ProposedViewSize = vertical
142
+ ? ProposedViewSize(width: proposal.width, height: proposal.height.map { $0 / count })
143
+ : ProposedViewSize(width: proposal.width.map { $0 / count }, height: proposal.height)
144
+ return subviews.map { $0.sizeThatFits(share) }
145
+ }
146
+
147
+ /// A layout chosen at run time.
148
+ public struct AnyLayout: Layout {
149
+ let base: any Layout
150
+
151
+ public init<L: Layout>(_ layout: L) {
152
+ if let any = layout as? AnyLayout { base = any.base } else { base = layout }
153
+ }
154
+
155
+ public typealias Cache = _AnyLayoutCache
156
+
157
+ public static var layoutProperties: LayoutProperties { LayoutProperties() }
158
+
159
+ public func makeCache(subviews: Subviews) -> Cache {
160
+ func make<L: Layout>(_ layout: L) -> Any { layout.makeCache(subviews: subviews) }
161
+ return _AnyLayoutCache(value: make(base))
162
+ }
163
+
164
+ public func updateCache(_ cache: inout Cache, subviews: Subviews) {
165
+ cache = makeCache(subviews: subviews)
166
+ }
167
+
168
+ public func sizeThatFits(proposal: ProposedViewSize, subviews: Subviews, cache: inout Cache) -> CGSize {
169
+ func size<L: Layout>(_ layout: L) -> CGSize {
170
+ var typed = cache.value as! L.Cache
171
+ defer { cache.value = typed }
172
+ return layout.sizeThatFits(proposal: proposal, subviews: subviews, cache: &typed)
173
+ }
174
+ return size(base)
175
+ }
176
+
177
+ public func placeSubviews(in bounds: CGRect, proposal: ProposedViewSize, subviews: Subviews, cache: inout Cache) {
178
+ func place<L: Layout>(_ layout: L) {
179
+ var typed = cache.value as! L.Cache
180
+ layout.placeSubviews(in: bounds, proposal: proposal, subviews: subviews, cache: &typed)
181
+ cache.value = typed
182
+ }
183
+ place(base)
184
+ }
185
+
186
+ /// The wrapped stack's own element for a stack layout, else a `layout` element.
187
+ public func callAsFunction<V: View>(@ViewBuilder _ content: () -> V) -> some View {
188
+ let content = content()
189
+ if let stack = base as? VStackLayout { return AnyView(stack { content }) }
190
+ if let stack = base as? HStackLayout { return AnyView(stack { content }) }
191
+ if let stack = base as? ZStackLayout { return AnyView(stack { content }) }
192
+ return AnyView(_LayoutView(layout: self, content: content))
193
+ }
194
+ }
195
+
196
+ /// `AnyLayout`'s cache: the wrapped layout's.
197
+ public struct _AnyLayoutCache {
198
+ var value: Any
199
+ }
@@ -0,0 +1,144 @@
1
+ /// Marker protocol matching SwiftUI's, so user code that constrains on it compiles.
2
+ public protocol DynamicProperty {
3
+ mutating func update()
4
+ }
5
+
6
+ extension DynamicProperty {
7
+ public mutating func update() {}
8
+ }
9
+
10
+ /// Type-erased access to a `State` box, used by the runtime to carry storage
11
+ /// across re-renders and to observe mutations.
12
+ protocol _AnyStateBox: AnyObject {
13
+ var _anyValue: Any { get set }
14
+ var _onChange: (() -> Void)? { get set }
15
+ /// Shares the persistent storage of a box from a previous render, so that
16
+ /// closures captured earlier keep writing to the live value.
17
+ func _adopt(_ previous: any _AnyStateBox)
18
+ }
19
+
20
+ /// Views expose their `State` properties to the runtime through this protocol.
21
+ protocol _StateProperty: _RuntimeProperty {
22
+ var _box: any _AnyStateBox { get }
23
+ }
24
+
25
+ /// The persistent value behind a `State`; survives the view struct being
26
+ /// recreated because every box for the same mounted view shares it.
27
+ final class _StateStorage<Value> {
28
+ var value: Value {
29
+ didSet { onChange?() }
30
+ }
31
+ var onChange: (() -> Void)?
32
+
33
+ init(_ value: Value) { self.value = value }
34
+ }
35
+
36
+ final class _StateBox<Value>: _AnyStateBox {
37
+ var storage: _StateStorage<Value>
38
+
39
+ var value: Value {
40
+ get { storage.value }
41
+ set { storage.value = newValue }
42
+ }
43
+
44
+ var _onChange: (() -> Void)? {
45
+ get { storage.onChange }
46
+ set { storage.onChange = newValue }
47
+ }
48
+
49
+ init(_ value: Value) { storage = _StateStorage(value) }
50
+
51
+ var _anyValue: Any {
52
+ get { storage.value }
53
+ set { storage.value = newValue as! Value }
54
+ }
55
+
56
+ func _adopt(_ previous: any _AnyStateBox) {
57
+ guard let previous = previous as? _StateBox<Value> else { return }
58
+ storage = previous.storage
59
+ }
60
+ }
61
+
62
+ /// A property wrapper that reads and writes a value managed by the runtime.
63
+ ///
64
+ /// A view struct is recreated every time its parent's body runs; the runtime
65
+ /// finds `State` properties by reflection and moves the previous values into
66
+ /// the new struct, so the value persists for as long as the view stays mounted.
67
+ @propertyWrapper
68
+ public struct State<Value>: DynamicProperty {
69
+ let box: _StateBox<Value>
70
+
71
+ public init(wrappedValue: Value) {
72
+ box = _StateBox(wrappedValue)
73
+ }
74
+
75
+ public init(initialValue: Value) {
76
+ self.init(wrappedValue: initialValue)
77
+ }
78
+
79
+ public var wrappedValue: Value {
80
+ get { box.value }
81
+ nonmutating set { box.value = newValue }
82
+ }
83
+
84
+ public var projectedValue: Binding<Value> {
85
+ let box = self.box
86
+ return Binding(get: { box.value }, set: { box.value = $0 })
87
+ }
88
+ }
89
+
90
+ extension State where Value: ExpressibleByNilLiteral {
91
+ public init() { self.init(wrappedValue: nil) }
92
+ }
93
+
94
+ extension State: _StateProperty {
95
+ var _box: any _AnyStateBox { box }
96
+ }
97
+
98
+ /// A two-way connection to a value owned elsewhere.
99
+ @propertyWrapper
100
+ @dynamicMemberLookup
101
+ public struct Binding<Value>: DynamicProperty {
102
+ let getter: () -> Value
103
+ let setter: (Value) -> Void
104
+ /// What the binding points at, for a binding the runtime re-creates on
105
+ /// every pass (a node's edit mode); nil for every other binding, which
106
+ /// then never compares equal (see `_Sameness`).
107
+ let identity: _RuntimeKey?
108
+
109
+ public init(get: @escaping () -> Value, set: @escaping (Value) -> Void) {
110
+ getter = get
111
+ setter = set
112
+ identity = nil
113
+ }
114
+
115
+ init(identity: _RuntimeKey, get: @escaping () -> Value, set: @escaping (Value) -> Void) {
116
+ getter = get
117
+ setter = set
118
+ self.identity = identity
119
+ }
120
+
121
+ public static func constant(_ value: Value) -> Binding<Value> {
122
+ Binding(get: { value }, set: { _ in })
123
+ }
124
+
125
+ public var wrappedValue: Value {
126
+ get { getter() }
127
+ nonmutating set { setter(newValue) }
128
+ }
129
+
130
+ public var projectedValue: Binding<Value> { self }
131
+
132
+ /// The binding itself: what a `$name` closure parameter (`ForEach($items) { $item in … }`)
133
+ /// is made from. It must be declared in the type for the compiler to find it.
134
+ public init(projectedValue: Binding<Value>) {
135
+ self = projectedValue
136
+ }
137
+
138
+ public subscript<Subject>(dynamicMember keyPath: WritableKeyPath<Value, Subject>) -> Binding<Subject> {
139
+ Binding<Subject>(
140
+ get: { self.wrappedValue[keyPath: keyPath] },
141
+ set: { self.wrappedValue[keyPath: keyPath] = $0 }
142
+ )
143
+ }
144
+ }
@@ -0,0 +1,121 @@
1
+ import Foundation
2
+
3
+ // Smaller SwiftUI API that Ice Cubes' status rows and composer use.
4
+
5
+ extension LocalizedStringKey.StringInterpolation {
6
+ /// `"Closes in \(date, style: .timer)"`: the date formatted as
7
+ /// `Text(date, style:)` formats it, when the text is made (TextDates.swift).
8
+ public mutating func appendInterpolation(_ date: Date, style: Text.DateStyle) {
9
+ _append(.string(Text._format(date, style: style, now: Date())), specifier: "%@")
10
+ }
11
+ }
12
+
13
+ extension AnyTransition {
14
+ /// Moves in from `edge` while fading in, and out toward the opposite edge
15
+ /// while fading out (iOS 16).
16
+ public static func push(from edge: Edge) -> AnyTransition {
17
+ let opposite: Edge = switch edge {
18
+ case .top: .bottom
19
+ case .bottom: .top
20
+ case .leading: .trailing
21
+ case .trailing: .leading
22
+ }
23
+ return .asymmetric(insertion: .move(edge: edge).combined(with: .opacity),
24
+ removal: .move(edge: opposite).combined(with: .opacity))
25
+ }
26
+ }
27
+
28
+ /// Space between toolbar items (iOS 26), which separates Liquid Glass
29
+ /// groups. The page lays a placement's items out in a row of its own, so the
30
+ /// spacer adds nothing.
31
+ nonisolated public struct ToolbarSpacer: ToolbarContent {
32
+ public init(_ sizing: SpacerSizing = .flexible, placement: ToolbarItemPlacement = .automatic) {}
33
+ nonisolated public var _toolbarItems: [any View] { [] }
34
+ }
35
+
36
+ /// How much room a `ToolbarSpacer` takes.
37
+ public struct SpacerSizing: Hashable, Sendable {
38
+ let name: String
39
+ public static let flexible = SpacerSizing(name: "flexible")
40
+ public static let fixed = SpacerSizing(name: "fixed")
41
+ }
42
+
43
+ nonisolated extension View {
44
+ /// Accepted: the actions are for assistive technologies the page does not bridge.
45
+ public func accessibilityActions<Content: View>(@ViewBuilder _ content: () -> Content) -> some View { self }
46
+ }
47
+
48
+ /// The view's tint as a style (`.foregroundStyle(.tint)`): the nearest
49
+ /// `.tint(_:)`, else the accent color, resolved by the page.
50
+ public struct TintShapeStyle: ShapeStyle, Hashable {
51
+ public init() {}
52
+ public var _json: _JSON { .object(["name": .string("tint")]) }
53
+ }
54
+
55
+ extension ShapeStyle where Self == TintShapeStyle {
56
+ public static var tint: TintShapeStyle { TintShapeStyle() }
57
+ }
58
+
59
+ private struct _DefaultMinListRowHeightKey: EnvironmentKey {
60
+ static var defaultValue: CGFloat { 44 }
61
+ }
62
+
63
+ private struct _DefaultMinListHeaderHeightKey: EnvironmentKey {
64
+ static var defaultValue: CGFloat? { nil }
65
+ }
66
+
67
+ extension EnvironmentValues {
68
+ /// A list row's minimum height, 44 by default: the page sizes a `List`'s
69
+ /// rows to their content, at least this (the list's `minRowHeight` prop).
70
+ public var defaultMinListRowHeight: CGFloat {
71
+ get { self[_DefaultMinListRowHeightKey.self] }
72
+ set { self[_DefaultMinListRowHeightKey.self] = newValue }
73
+ }
74
+
75
+ /// A list section header's minimum height; recorded.
76
+ public var defaultMinListHeaderHeight: CGFloat? {
77
+ get { self[_DefaultMinListHeaderHeightKey.self] }
78
+ set { self[_DefaultMinListHeaderHeightKey.self] = newValue }
79
+ }
80
+ }
81
+
82
+ extension GeometryProxy {
83
+ /// Zero: the page does not report the safe area to Swift.
84
+ public var safeAreaInsets: EdgeInsets { EdgeInsets() }
85
+ }
86
+
87
+ nonisolated extension View {
88
+ /// The navigation title from a localized key (the key's text: no string tables are loaded).
89
+ public func navigationTitle(_ titleKey: LocalizedStringKey) -> some View {
90
+ navigationTitle(Text(titleKey))
91
+ }
92
+ }
93
+
94
+ extension Font {
95
+ /// The same font: digits keep their proportional widths on the page.
96
+ public func monospacedDigit() -> Font { self }
97
+ }
98
+
99
+ nonisolated extension View {
100
+ /// The sheet's detents with the one `selection` names first, so the page
101
+ /// presents the sheet at it (the page reports no resizing: the binding
102
+ /// changes only when the app sets it).
103
+ public func presentationDetents(_ detents: Set<PresentationDetent>, selection: Binding<PresentationDetent>) -> some View {
104
+ let sorted = detents.sorted { ($0._order, $0.name) < ($1._order, $1.name) }
105
+ let selected = selection.wrappedValue
106
+ let ordered = sorted.contains(selected) ? [selected] + sorted.filter { $0 != selected } : sorted
107
+ return _DetentsView(content: self, detents: ordered.map(\.name))
108
+ }
109
+ }
110
+
111
+ extension SearchFieldPlacement {
112
+ /// When the navigation bar's search field shows.
113
+ public enum NavigationBarDrawerDisplayMode: Hashable, Sendable {
114
+ case automatic, always
115
+ }
116
+
117
+ /// The search field in the navigation bar's drawer; the page always shows it there.
118
+ public static func navigationBarDrawer(displayMode: NavigationBarDrawerDisplayMode) -> SearchFieldPlacement {
119
+ .navigationBarDrawer
120
+ }
121
+ }
@@ -0,0 +1,30 @@
1
+ /// The line cap of a stroke (CoreGraphics' `CGLineCap`).
2
+ public enum CGLineCap: Int32, Hashable, Sendable {
3
+ case butt, round, square
4
+ }
5
+
6
+ /// The line join of a stroke (CoreGraphics' `CGLineJoin`).
7
+ public enum CGLineJoin: Int32, Hashable, Sendable {
8
+ case miter, round, bevel
9
+ }
10
+
11
+ /// How a line is stroked. Charts read `lineWidth`; the other fields are kept
12
+ /// for source compatibility.
13
+ public struct StrokeStyle: Equatable, Sendable {
14
+ public var lineWidth: CGFloat
15
+ public var lineCap: CGLineCap
16
+ public var lineJoin: CGLineJoin
17
+ public var miterLimit: CGFloat
18
+ public var dash: [CGFloat]
19
+ public var dashPhase: CGFloat
20
+
21
+ public init(lineWidth: CGFloat = 1, lineCap: CGLineCap = .butt, lineJoin: CGLineJoin = .miter,
22
+ miterLimit: CGFloat = 10, dash: [CGFloat] = [], dashPhase: CGFloat = 0) {
23
+ self.lineWidth = lineWidth
24
+ self.lineCap = lineCap
25
+ self.lineJoin = lineJoin
26
+ self.miterLimit = miterLimit
27
+ self.dash = dash
28
+ self.dashPhase = dashPhase
29
+ }
30
+ }