@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,313 @@
1
+ /// How `aspectRatio` fits content into the proposed space.
2
+ public enum ContentMode: Hashable, Sendable {
3
+ case fit, fill
4
+ }
5
+
6
+ /// The style a `styled` element applies to the box around its child.
7
+ /// See docs/ops-protocol.md.
8
+ struct _Style: Equatable {
9
+ struct Frame: Equatable {
10
+ var width: CGFloat?
11
+ var height: CGFloat?
12
+ var minWidth: CGFloat?
13
+ var maxWidth: CGFloat?
14
+ var minHeight: CGFloat?
15
+ var maxHeight: CGFloat?
16
+ var alignment: Alignment = .center
17
+
18
+ var _json: _JSON {
19
+ func dimension(_ value: CGFloat?) -> _JSON? {
20
+ guard let value else { return nil }
21
+ return value == .infinity ? .string("infinity") : .number(value)
22
+ }
23
+ var object: [String: _JSON] = ["alignment": .string(alignment._name)]
24
+ if let v = dimension(width) { object["width"] = v }
25
+ if let v = dimension(height) { object["height"] = v }
26
+ if let v = dimension(minWidth) { object["minWidth"] = v }
27
+ if let v = dimension(maxWidth) { object["maxWidth"] = v }
28
+ if let v = dimension(minHeight) { object["minHeight"] = v }
29
+ if let v = dimension(maxHeight) { object["maxHeight"] = v }
30
+ return .object(object)
31
+ }
32
+ }
33
+
34
+ var padding: EdgeInsets?
35
+ var font: Font?
36
+ var foreground: (any ShapeStyle)?
37
+ var background: (any ShapeStyle)?
38
+ var frame: Frame?
39
+ var cornerRadius: CGFloat?
40
+ /// `.clipShape(.containerRelative)`: clipped to the container's corners.
41
+ var clipsToContainerShape = false
42
+ /// `.background(_:)`: painted in the container's shape (`.containerShape`).
43
+ var backgroundInContainerShape = false
44
+ var opacity: Double?
45
+ var disabled: Bool?
46
+ var layoutPriority: Double?
47
+ /// `-1` clears an inherited limit (`lineLimit(nil)`).
48
+ var lineLimit: Int?
49
+ var multilineTextAlignment: TextAlignment?
50
+ var fixedSize: (horizontal: Bool, vertical: Bool)?
51
+ var transition: AnyTransition?
52
+ /// `.aspectRatio` / `.scaledToFit` / `.scaledToFill`; a nil ratio means the
53
+ /// child's ideal size decides.
54
+ var aspectRatio: (ratio: CGFloat?, contentMode: ContentMode)?
55
+ /// Hints with no layout logic in Swift (`offset`, `rotation`, `shadow`,
56
+ /// `badge`, `tint`, ...), passed through to the renderer by key.
57
+ var extras: [String: _JSON] = [:]
58
+
59
+ static func == (lhs: _Style, rhs: _Style) -> Bool { lhs._json == rhs._json }
60
+
61
+ var _json: _JSON {
62
+ var object: [String: _JSON] = [:]
63
+ if let padding { object["padding"] = padding._json }
64
+ if let font { object["font"] = font._json }
65
+ if let foreground { object["foreground"] = foreground._json }
66
+ if let background { object["background"] = background._json }
67
+ if let frame { object["frame"] = frame._json }
68
+ if let cornerRadius { object["cornerRadius"] = .number(cornerRadius) }
69
+ if let opacity { object["opacity"] = .number(opacity) }
70
+ if let disabled { object["disabled"] = .bool(disabled) }
71
+ if let layoutPriority { object["layoutPriority"] = .number(layoutPriority) }
72
+ if let lineLimit { object["lineLimit"] = lineLimit < 0 ? .null : .number(Double(lineLimit)) }
73
+ if let multilineTextAlignment { object["multilineTextAlignment"] = .string(multilineTextAlignment.name) }
74
+ if let fixedSize {
75
+ object["fixedSize"] = .object(["horizontal": .bool(fixedSize.horizontal), "vertical": .bool(fixedSize.vertical)])
76
+ }
77
+ if let transition { object["transition"] = transition._json }
78
+ if let aspectRatio {
79
+ object["aspectRatio"] = .object([
80
+ "ratio": aspectRatio.ratio.map(_JSON.number) ?? .null,
81
+ "contentMode": .string(aspectRatio.contentMode == .fit ? "fit" : "fill"),
82
+ ])
83
+ }
84
+ for (key, value) in extras { object[key] = value }
85
+ return .object(object)
86
+ }
87
+ }
88
+
89
+ /// The view a modifier produces. Nesting preserves modifier order.
90
+ public struct _StyledView<Content: View> {
91
+ let content: Content
92
+ let style: _Style
93
+ }
94
+ extension _StyledView: _PrimitiveView {}
95
+ extension _StyledView: _EnvironmentModifying {
96
+ /// A font with a text style or a size is the environment's `font` below
97
+ /// (a weight or design alone changes the font the page draws, not that).
98
+ func _apply(to environment: inout EnvironmentValues) {
99
+ if let font = style.font, font.textStyle != nil || font.size != nil { environment.font = font }
100
+ }
101
+ }
102
+ extension _StyledView: _HostView {
103
+ var _kind: String { "styled" }
104
+ func _props(in environment: EnvironmentValues) -> _JSON {
105
+ var resolved = style
106
+ // `.background()` paints the background style in context, which
107
+ // `.backgroundStyle(_:)` sets (the system background by default).
108
+ if style.background is BackgroundStyle, let contextual = environment._backgroundStyle {
109
+ resolved.background = contextual
110
+ }
111
+ // The container's shape (`.containerShape`): a background is painted
112
+ // in it, and `.clipShape(.containerRelative)` clips to it.
113
+ let container = environment._containerShapeRadius
114
+ if style.clipsToContainerShape { resolved.cornerRadius = container ?? 0 }
115
+ if style.backgroundInContainerShape, let container, container > 0 {
116
+ resolved.extras["backgroundCornerRadius"] = .number(container)
117
+ }
118
+ return .object(["style": resolved._json])
119
+ }
120
+ var _content: [any View] { [content] }
121
+ }
122
+
123
+ /// A modifier applied to a group (`ForEach`, `Group`, a tuple, a conditional)
124
+ /// styles each of the group's views, as in SwiftUI, instead of wrapping the
125
+ /// group in one box. Single views still get one `styled` element.
126
+ public struct _StyledGroup<Content: View> {
127
+ let content: Content
128
+ let style: _Style
129
+ }
130
+ extension _StyledGroup: _PrimitiveView {}
131
+ extension _StyledGroup: _GroupView {
132
+ var _children: [any View] {
133
+ // A modifier on a `Section` styles its rows (the section stays a direct
134
+ // child of its list, which is how the layout recognizes it).
135
+ if let section = content as? any _SectionView { return [section._stylingRows(style)] }
136
+ if let group = content as? any _GroupView, group._spreads {
137
+ return group._children.map { _StyledView(content: AnyView($0), style: style) }
138
+ }
139
+ return [_StyledView(content: content, style: style)]
140
+ }
141
+
142
+ var _keys: [AnyHashable]? {
143
+ if let group = content as? any _GroupView, group._spreads {
144
+ return group._keys
145
+ }
146
+ return nil
147
+ }
148
+
149
+ // Asked of the content alone: a chain of modifiers asks each level once,
150
+ // where computing the content's children and keys at every level made
151
+ // the cost double with each modifier.
152
+ var _spreads: Bool {
153
+ guard let group = content as? any _GroupView, group._spreads else { return false }
154
+ // A styled section is one child; it keeps the section's keys.
155
+ if content is any _SectionView { return group._keys != nil }
156
+ return true
157
+ }
158
+ }
159
+
160
+ nonisolated extension View {
161
+ func _styled(_ configure: (inout _Style) -> Void) -> _StyledGroup<Self> {
162
+ var style = _Style()
163
+ configure(&style)
164
+ return _StyledGroup(content: self, style: style)
165
+ }
166
+
167
+ // MARK: Padding
168
+
169
+ public func padding(_ edges: Edge.Set = .all, _ length: CGFloat? = nil) -> some View {
170
+ let amount = length ?? 16
171
+ return _styled {
172
+ $0.padding = EdgeInsets(
173
+ top: edges.contains(.top) ? amount : 0,
174
+ leading: edges.contains(.leading) ? amount : 0,
175
+ bottom: edges.contains(.bottom) ? amount : 0,
176
+ trailing: edges.contains(.trailing) ? amount : 0
177
+ )
178
+ }
179
+ }
180
+
181
+ /// The padding a scene's content takes from its edges: 16 points on
182
+ /// iPhone, as `.padding()`.
183
+ public func scenePadding(_ edges: Edge.Set = .all) -> some View {
184
+ padding(edges, 16)
185
+ }
186
+
187
+ public func scenePadding(_ padding: ScenePadding, edges: Edge.Set = .all) -> some View {
188
+ self.padding(edges, 16)
189
+ }
190
+
191
+ public func padding(_ length: CGFloat) -> some View {
192
+ padding(.all, length)
193
+ }
194
+
195
+ public func padding(_ insets: EdgeInsets) -> some View {
196
+ _styled { $0.padding = insets }
197
+ }
198
+
199
+ // MARK: Typography
200
+
201
+ public func font(_ font: Font?) -> some View {
202
+ _styled { $0.font = font }
203
+ }
204
+
205
+ public func fontWeight(_ weight: Font.Weight?) -> some View {
206
+ _styled { $0.font = weight.map { Font(size: nil, weight: $0, design: nil) } }
207
+ }
208
+
209
+ public func bold(_ isActive: Bool = true) -> some View {
210
+ _styled { $0.font = isActive ? Font(size: nil, weight: .bold, design: nil) : nil }
211
+ }
212
+
213
+ // MARK: Color
214
+
215
+ public func foregroundStyle<S: ShapeStyle>(_ style: S) -> some View {
216
+ _styled { $0.foreground = style }
217
+ }
218
+
219
+ public func foregroundColor(_ color: Color?) -> some View {
220
+ _styled { $0.foreground = color }
221
+ }
222
+
223
+ /// Hierarchical foreground styles: the primary style paints everything.
224
+ public func foregroundStyle<S1: ShapeStyle, S2: ShapeStyle>(_ primary: S1, _ secondary: S2) -> some View {
225
+ _styled { $0.foreground = primary }
226
+ }
227
+
228
+ public func foregroundStyle<S1: ShapeStyle, S2: ShapeStyle, S3: ShapeStyle>(_ primary: S1, _ secondary: S2,
229
+ _ tertiary: S3) -> some View {
230
+ _styled { $0.foreground = primary }
231
+ }
232
+
233
+ /// A paint behind the view: a color, gradient or material filling its box.
234
+ /// Painted in the container's shape (`.containerShape`), else the box, as in SwiftUI.
235
+ public func background<S: ShapeStyle>(_ style: S, ignoresSafeAreaEdges edges: Edge.Set = .all) -> some View {
236
+ _styled {
237
+ $0.background = style
238
+ $0.backgroundInContainerShape = true
239
+ }
240
+ }
241
+
242
+ /// The system background color behind the view.
243
+ public func background(ignoresSafeAreaEdges edges: Edge.Set = .all) -> some View {
244
+ _styled {
245
+ $0.background = BackgroundStyle()
246
+ $0.backgroundInContainerShape = true
247
+ }
248
+ }
249
+
250
+ public func opacity(_ opacity: Double) -> some View {
251
+ _styled { $0.opacity = opacity }
252
+ }
253
+
254
+ // MARK: Layout
255
+
256
+ public func frame(width: CGFloat? = nil, height: CGFloat? = nil, alignment: Alignment = .center) -> some View {
257
+ _styled { $0.frame = _Style.Frame(width: width, height: height, alignment: alignment) }
258
+ }
259
+
260
+ public func frame(minWidth: CGFloat? = nil, idealWidth: CGFloat? = nil, maxWidth: CGFloat? = nil,
261
+ minHeight: CGFloat? = nil, idealHeight: CGFloat? = nil, maxHeight: CGFloat? = nil,
262
+ alignment: Alignment = .center) -> some View {
263
+ _styled {
264
+ $0.frame = _Style.Frame(width: idealWidth, height: idealHeight,
265
+ minWidth: minWidth, maxWidth: maxWidth,
266
+ minHeight: minHeight, maxHeight: maxHeight,
267
+ alignment: alignment)
268
+ }
269
+ }
270
+
271
+ /// Constrains the view to an aspect ratio: `fit` is the largest such box
272
+ /// inside the proposal, `fill` the smallest covering it. A nil ratio uses
273
+ /// the child's ideal size (what `Image.resizable().scaledToFit()` wants).
274
+ public func aspectRatio(_ aspectRatio: CGFloat? = nil, contentMode: ContentMode) -> some View {
275
+ _styled { $0.aspectRatio = (aspectRatio, contentMode) }
276
+ }
277
+
278
+ public func aspectRatio(_ aspectRatio: CGSize, contentMode: ContentMode) -> some View {
279
+ _styled { $0.aspectRatio = (aspectRatio.height == 0 ? nil : aspectRatio.width / aspectRatio.height, contentMode) }
280
+ }
281
+
282
+ public func scaledToFit() -> some View { aspectRatio(nil, contentMode: .fit) }
283
+
284
+ public func scaledToFill() -> some View { aspectRatio(nil, contentMode: .fill) }
285
+
286
+ /// Names the view for `ScrollViewProxy.scrollTo(_:anchor:)` inside a
287
+ /// `ScrollViewReader` (ScrollViewReader.swift); elsewhere it adds nothing
288
+ /// to the rendered tree. A changed id does not reset the view's state.
289
+ public func id<ID: Hashable>(_ id: ID) -> some View {
290
+ _IdentifiedView(content: self, id: AnyHashable(id))
291
+ }
292
+
293
+ /// A compositing hint; accepted for source compatibility and currently
294
+ /// without effect on the rendered tree.
295
+ public func compositingGroup() -> some View { self }
296
+
297
+ public func cornerRadius(_ radius: CGFloat, antialiased: Bool = true) -> some View {
298
+ _styled { $0.cornerRadius = radius }
299
+ }
300
+
301
+ public func clipShape<S: Shape>(_ shape: S) -> some View {
302
+ _styled {
303
+ $0.cornerRadius = shape._cornerRadius
304
+ $0.clipsToContainerShape = shape is ContainerRelativeShape
305
+ }
306
+ }
307
+ }
308
+
309
+ /// The kind of scene padding (`.minimum`); iPhone has one.
310
+ public struct ScenePadding: Equatable, Sendable {
311
+ public static let minimum = ScenePadding()
312
+ public static let navigationBar = ScenePadding()
313
+ }
@@ -0,0 +1,100 @@
1
+ // Smaller modifiers Ice Cubes uses.
2
+ //
3
+ // Drawn: `.border(_:width:)` (a stroke inside the view's box, as an
4
+ // overlay), `.edgesIgnoringSafeArea(_:)` (`.ignoresSafeArea(edges:)`),
5
+ // `.safeAreaBar(edge:…)` (iOS 26; as `.safeAreaInset`, see
6
+ // ScrollModifiers.swift) and `.scrollPosition(id:anchor:)` (setting the
7
+ // binding scrolls to the view with that `.id`, as `ScrollViewProxy.scrollTo`;
8
+ // scrolling by hand does not update the binding).
9
+ //
10
+ // Accepted without effect: `.buttonBorderShape(_:)` (bordered buttons stay
11
+ // capsules), `.truncationMode(_:)` (text truncates at its tail),
12
+ // `.lineSpacing(_:)` (lines keep the font's line height),
13
+ // `.controlGroupStyle(_:)`, `.listRowHoverEffectDisabled(_:)`,
14
+ // `.searchScopes(_:scopes:)` (no scope bar is drawn under the search field)
15
+ // and, on toolbar items, `.sharedBackgroundVisibility(_:)` and
16
+ // `.matchedTransitionSource(id:in:)`.
17
+
18
+ public struct ButtonBorderShape: Equatable, Sendable {
19
+ let name: String
20
+ public static let automatic = ButtonBorderShape(name: "automatic")
21
+ public static let capsule = ButtonBorderShape(name: "capsule")
22
+ public static let circle = ButtonBorderShape(name: "circle")
23
+ public static let roundedRectangle = ButtonBorderShape(name: "roundedRectangle")
24
+ public static func roundedRectangle(radius: CGFloat) -> ButtonBorderShape { .roundedRectangle }
25
+ }
26
+
27
+ public protocol ControlGroupStyle {}
28
+ public struct AutomaticControlGroupStyle: ControlGroupStyle { public init() {} }
29
+ public struct MenuControlGroupStyle: ControlGroupStyle { public init() {} }
30
+ public struct CompactMenuControlGroupStyle: ControlGroupStyle { public init() {} }
31
+ public struct NavigationControlGroupStyle: ControlGroupStyle { public init() {} }
32
+ public struct PaletteControlGroupStyle: ControlGroupStyle { public init() {} }
33
+ extension ControlGroupStyle where Self == AutomaticControlGroupStyle {
34
+ public static var automatic: AutomaticControlGroupStyle { AutomaticControlGroupStyle() }
35
+ }
36
+ extension ControlGroupStyle where Self == MenuControlGroupStyle {
37
+ public static var menu: MenuControlGroupStyle { MenuControlGroupStyle() }
38
+ }
39
+ extension ControlGroupStyle where Self == CompactMenuControlGroupStyle {
40
+ public static var compactMenu: CompactMenuControlGroupStyle { CompactMenuControlGroupStyle() }
41
+ }
42
+ extension ControlGroupStyle where Self == NavigationControlGroupStyle {
43
+ public static var navigation: NavigationControlGroupStyle { NavigationControlGroupStyle() }
44
+ }
45
+ extension ControlGroupStyle where Self == PaletteControlGroupStyle {
46
+ public static var palette: PaletteControlGroupStyle { PaletteControlGroupStyle() }
47
+ }
48
+
49
+ /// When a search's scope bar shows; accepted.
50
+ public struct SearchScopeActivation: Sendable {
51
+ let name: String
52
+ public static let automatic = SearchScopeActivation(name: "automatic")
53
+ public static let onTextEntry = SearchScopeActivation(name: "onTextEntry")
54
+ public static let onSearchPresentation = SearchScopeActivation(name: "onSearchPresentation")
55
+ }
56
+
57
+ nonisolated extension View {
58
+ public func border<S: ShapeStyle>(_ content: S, width: CGFloat = 1) -> some View {
59
+ overlay { Rectangle().strokeBorder(content, lineWidth: width) }
60
+ }
61
+
62
+ public func edgesIgnoringSafeArea(_ edges: Edge.Set) -> some View {
63
+ ignoresSafeArea(.all, edges: edges)
64
+ }
65
+
66
+ public func safeAreaBar<V: View>(edge: VerticalEdge, alignment: HorizontalAlignment = .center,
67
+ spacing: CGFloat? = nil, @ViewBuilder content: () -> V) -> some View {
68
+ safeAreaInset(edge: edge, alignment: alignment, spacing: spacing, content: content)
69
+ }
70
+
71
+ public func buttonBorderShape(_ shape: ButtonBorderShape) -> some View { self }
72
+ public func truncationMode(_ mode: Text.TruncationMode) -> some View { self }
73
+ public func lineSpacing(_ lineSpacing: CGFloat) -> some View { self }
74
+ public func controlGroupStyle<S: ControlGroupStyle>(_ style: S) -> some View { self }
75
+ public func listRowHoverEffectDisabled(_ disabled: Bool = true) -> some View { self }
76
+
77
+ public func searchScopes<V: Hashable, S: View>(_ scope: Binding<V>, @ViewBuilder scopes: () -> S) -> some View { self }
78
+ public func searchScopes<V: Hashable, S: View>(_ scope: Binding<V>, activation: SearchScopeActivation,
79
+ @ViewBuilder _ scopes: () -> S) -> some View { self }
80
+ }
81
+
82
+ extension View {
83
+ /// Scrolls to the view whose `.id` the binding holds whenever the binding
84
+ /// changes (see the top of this file).
85
+ public func scrollPosition<ID: Hashable>(id: Binding<ID?>, anchor: UnitPoint? = nil) -> some View {
86
+ ScrollViewReader { proxy in
87
+ self.onChange(of: id.wrappedValue) { _, target in
88
+ if let target { proxy.scrollTo(target, anchor: anchor) }
89
+ }
90
+ }
91
+ }
92
+ }
93
+
94
+ extension ToolbarContent {
95
+ /// Accepted: toolbar items share the bar's background.
96
+ public nonisolated func sharedBackgroundVisibility(_ visibility: Visibility) -> Self { self }
97
+
98
+ /// Accepted (no zoom transitions on the page).
99
+ public nonisolated func matchedTransitionSource<ID: Hashable>(id: ID, in namespace: Namespace.ID) -> Self { self }
100
+ }
@@ -0,0 +1,44 @@
1
+ // `@Namespace` and `.matchedGeometryEffect`. A namespace is an identifier
2
+ // that lasts as long as its view is mounted (its storage is a `State`), so
3
+ // code that passes it around or keys things by it (ButtonKit's triggers, Ice
4
+ // Cubes' media viewer) works. The page does not animate a view from one
5
+ // place to another, so `.matchedGeometryEffect` leaves the view as it is:
6
+ // the change happens without the shared-element animation.
7
+
8
+ /// An identifier for a group of matched views, stable while the view is mounted.
9
+ @propertyWrapper
10
+ public struct Namespace: DynamicProperty {
11
+ public struct ID: Hashable, Sendable {
12
+ let value: Int
13
+ }
14
+
15
+ nonisolated(unsafe) static var lastID = 0
16
+ let state: State<ID>
17
+
18
+ public init() {
19
+ Namespace.lastID += 1
20
+ state = State(wrappedValue: ID(value: Namespace.lastID))
21
+ }
22
+
23
+ public var wrappedValue: ID { state.wrappedValue }
24
+ }
25
+
26
+ extension Namespace: _StateProperty {
27
+ var _box: any _AnyStateBox { state.box }
28
+ }
29
+
30
+ /// Which of a view's geometry `.matchedGeometryEffect` would match.
31
+ public struct MatchedGeometryProperties: OptionSet, Hashable, Sendable {
32
+ public let rawValue: UInt32
33
+ public init(rawValue: UInt32) { self.rawValue = rawValue }
34
+ public static let position = MatchedGeometryProperties(rawValue: 1)
35
+ public static let size = MatchedGeometryProperties(rawValue: 2)
36
+ public static let frame: MatchedGeometryProperties = [.position, .size]
37
+ }
38
+
39
+ nonisolated extension View {
40
+ /// The view unchanged: the page has no shared-element animation.
41
+ public func matchedGeometryEffect<ID: Hashable>(id: ID, in namespace: Namespace.ID,
42
+ properties: MatchedGeometryProperties = .frame,
43
+ anchor: UnitPoint = .center, isSource: Bool = true) -> some View { self }
44
+ }