@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,131 @@
1
+ public struct Font: Hashable, Sendable {
2
+ public struct Weight: Hashable, Sendable {
3
+ let name: String
4
+ public static let ultraLight = Weight(name: "ultraLight")
5
+ public static let thin = Weight(name: "thin")
6
+ public static let light = Weight(name: "light")
7
+ public static let regular = Weight(name: "regular")
8
+ public static let medium = Weight(name: "medium")
9
+ public static let semibold = Weight(name: "semibold")
10
+ public static let bold = Weight(name: "bold")
11
+ public static let heavy = Weight(name: "heavy")
12
+ public static let black = Weight(name: "black")
13
+ }
14
+
15
+ public enum Design: Hashable, Sendable {
16
+ case `default`, serif, rounded, monospaced
17
+
18
+ var name: String {
19
+ switch self {
20
+ case .default: "default"
21
+ case .serif: "serif"
22
+ case .rounded: "rounded"
23
+ case .monospaced: "monospaced"
24
+ }
25
+ }
26
+ }
27
+
28
+ public enum TextStyle: Hashable, Sendable, CaseIterable {
29
+ case largeTitle, title, title2, title3, headline, subheadline
30
+ case body, callout, footnote, caption, caption2
31
+
32
+ var name: String {
33
+ switch self {
34
+ case .largeTitle: "largeTitle"
35
+ case .title: "title"
36
+ case .title2: "title2"
37
+ case .title3: "title3"
38
+ case .headline: "headline"
39
+ case .subheadline: "subheadline"
40
+ case .body: "body"
41
+ case .callout: "callout"
42
+ case .footnote: "footnote"
43
+ case .caption: "caption"
44
+ case .caption2: "caption2"
45
+ }
46
+ }
47
+ }
48
+
49
+ /// Either a text style (scaled by Dynamic Type in the renderer) or a fixed size.
50
+ var textStyle: TextStyle?
51
+ var size: CGFloat?
52
+ var relativeTo: TextStyle?
53
+ var weight: Weight?
54
+ var design: Design?
55
+
56
+ public static let largeTitle = Font(textStyle: .largeTitle)
57
+ public static let title = Font(textStyle: .title)
58
+ public static let title2 = Font(textStyle: .title2)
59
+ public static let title3 = Font(textStyle: .title3)
60
+ public static let headline = Font(textStyle: .headline)
61
+ public static let subheadline = Font(textStyle: .subheadline)
62
+ public static let body = Font(textStyle: .body)
63
+ public static let callout = Font(textStyle: .callout)
64
+ public static let footnote = Font(textStyle: .footnote)
65
+ public static let caption = Font(textStyle: .caption)
66
+ public static let caption2 = Font(textStyle: .caption2)
67
+
68
+ init(textStyle: TextStyle) {
69
+ self.textStyle = textStyle
70
+ }
71
+
72
+ init(size: CGFloat?, weight: Weight?, design: Design?) {
73
+ self.size = size
74
+ self.weight = weight
75
+ self.design = design
76
+ }
77
+
78
+ public static func system(_ style: TextStyle, design: Design? = nil, weight: Weight? = nil) -> Font {
79
+ var font = Font(textStyle: style)
80
+ font.weight = weight
81
+ font.design = design
82
+ return font
83
+ }
84
+
85
+ public static func system(size: CGFloat, weight: Weight? = nil, design: Design? = nil) -> Font {
86
+ Font(size: size, weight: weight, design: design)
87
+ }
88
+
89
+ /// A custom font. The browser cannot load app fonts, so the name is
90
+ /// accepted for source compatibility and the system font is used.
91
+ public static func custom(_ name: String, size: CGFloat) -> Font {
92
+ var font = Font(size: size, weight: nil, design: nil)
93
+ font.relativeTo = .body
94
+ return font
95
+ }
96
+
97
+ /// A custom font whose size scales with Dynamic Type like `textStyle`.
98
+ public static func custom(_ name: String, size: CGFloat, relativeTo textStyle: TextStyle) -> Font {
99
+ var font = Font(size: size, weight: nil, design: nil)
100
+ font.relativeTo = textStyle
101
+ return font
102
+ }
103
+
104
+ /// A custom font at a fixed size that does not scale.
105
+ public static func custom(_ name: String, fixedSize: CGFloat) -> Font {
106
+ Font(size: fixedSize, weight: nil, design: nil)
107
+ }
108
+
109
+ public func weight(_ weight: Weight) -> Font {
110
+ var copy = self
111
+ copy.weight = weight
112
+ return copy
113
+ }
114
+
115
+ public func bold() -> Font { weight(.bold) }
116
+ public func monospaced() -> Font {
117
+ var copy = self
118
+ copy.design = .monospaced
119
+ return copy
120
+ }
121
+
122
+ var _json: _JSON {
123
+ var object: [String: _JSON] = [:]
124
+ if let textStyle { object["textStyle"] = .string(textStyle.name) }
125
+ if let size { object["size"] = .number(size) }
126
+ if let relativeTo { object["relativeTo"] = .string(relativeTo.name) }
127
+ if let weight { object["weight"] = .string(weight.name) }
128
+ if let design { object["design"] = .string(design.name) }
129
+ return .object(object)
130
+ }
131
+ }
@@ -0,0 +1,290 @@
1
+ // Gauge and its styles, plus `labelsHidden()`. See docs/ops-protocol.md (Phase 6).
2
+
3
+ // MARK: - Styles
4
+
5
+ /// The appearance of a `Gauge`. The shim's styles are names the renderer draws;
6
+ /// a custom conformance renders as `automatic`.
7
+ public protocol GaugeStyle {}
8
+
9
+ protocol _NamedGaugeStyle {
10
+ var _name: String { get }
11
+ }
12
+
13
+ public struct DefaultGaugeStyle: GaugeStyle, _NamedGaugeStyle, Sendable {
14
+ public init() {}
15
+ var _name: String { "automatic" }
16
+ }
17
+
18
+ public struct LinearCapacityGaugeStyle: GaugeStyle, _NamedGaugeStyle, Sendable {
19
+ public init() {}
20
+ var _name: String { "linearCapacity" }
21
+ }
22
+
23
+ public struct AccessoryLinearGaugeStyle: GaugeStyle, _NamedGaugeStyle, Sendable {
24
+ public init() {}
25
+ var _name: String { "accessoryLinear" }
26
+ }
27
+
28
+ public struct AccessoryCircularGaugeStyle: GaugeStyle, _NamedGaugeStyle, Sendable {
29
+ public init() {}
30
+ var _name: String { "accessoryCircular" }
31
+ }
32
+
33
+ public struct AccessoryCircularCapacityGaugeStyle: GaugeStyle, _NamedGaugeStyle, Sendable {
34
+ public init() {}
35
+ var _name: String { "accessoryCircularCapacity" }
36
+ }
37
+
38
+ extension GaugeStyle where Self == DefaultGaugeStyle {
39
+ public static var automatic: DefaultGaugeStyle { DefaultGaugeStyle() }
40
+ }
41
+ extension GaugeStyle where Self == LinearCapacityGaugeStyle {
42
+ public static var linearCapacity: LinearCapacityGaugeStyle { LinearCapacityGaugeStyle() }
43
+ }
44
+ extension GaugeStyle where Self == AccessoryLinearGaugeStyle {
45
+ public static var accessoryLinear: AccessoryLinearGaugeStyle { AccessoryLinearGaugeStyle() }
46
+ }
47
+ extension GaugeStyle where Self == AccessoryCircularGaugeStyle {
48
+ public static var accessoryCircular: AccessoryCircularGaugeStyle { AccessoryCircularGaugeStyle() }
49
+ }
50
+ extension GaugeStyle where Self == AccessoryCircularCapacityGaugeStyle {
51
+ public static var accessoryCircularCapacity: AccessoryCircularCapacityGaugeStyle { AccessoryCircularCapacityGaugeStyle() }
52
+ }
53
+
54
+ // MARK: - Environment
55
+
56
+ enum _GaugeStyleKey: EnvironmentKey { static let defaultValue = "automatic" }
57
+ enum _LabelsHiddenKey: EnvironmentKey { static let defaultValue = false }
58
+
59
+ extension EnvironmentValues {
60
+ /// The name of the gauge style set by `.gaugeStyle(_:)`.
61
+ var gaugeStyle: String {
62
+ get { self[_GaugeStyleKey.self] }
63
+ set { self[_GaugeStyleKey.self] = newValue }
64
+ }
65
+
66
+ /// Set by `.labelsHidden()`: controls omit their label.
67
+ var labelsHidden: Bool {
68
+ get { self[_LabelsHiddenKey.self] }
69
+ set { self[_LabelsHiddenKey.self] = newValue }
70
+ }
71
+ }
72
+
73
+ nonisolated extension View {
74
+ public func gaugeStyle<S: GaugeStyle>(_ style: S) -> some View {
75
+ environment(\.gaugeStyle, (style as? any _NamedGaugeStyle)?._name ?? "automatic")
76
+ }
77
+
78
+ /// Hides the labels of controls in this view (gauges, toggles, pickers).
79
+ public func labelsHidden() -> some View {
80
+ environment(\.labelsHidden, true)
81
+ }
82
+ }
83
+
84
+ // MARK: - Gauge
85
+
86
+ /// Shows a value within a range. Kind `gauge`; the children are the label
87
+ /// (unless `EmptyView` or hidden) followed by the current value label.
88
+ public struct Gauge<Label: View, CurrentValueLabel: View, BoundsLabel: View, MarkedValueLabel: View> {
89
+ /// `value` normalized into 0…1 over `bounds`.
90
+ let normalizedValue: Double
91
+ let label: Label
92
+ let currentValueLabel: CurrentValueLabel
93
+
94
+ static func normalize<V: BinaryFloatingPoint>(_ value: V, in bounds: ClosedRange<V>) -> Double {
95
+ let lower = Double(bounds.lowerBound)
96
+ let upper = Double(bounds.upperBound)
97
+ guard upper > lower else { return 0 }
98
+ let fraction = (Double(value) - lower) / (upper - lower)
99
+ return max(0, min(1, fraction))
100
+ }
101
+ }
102
+
103
+ extension Gauge where CurrentValueLabel == EmptyView, BoundsLabel == EmptyView, MarkedValueLabel == EmptyView {
104
+ public init<V: BinaryFloatingPoint>(value: V, in bounds: ClosedRange<V> = 0...1,
105
+ @ViewBuilder label: () -> Label) {
106
+ normalizedValue = Self.normalize(value, in: bounds)
107
+ self.label = label()
108
+ currentValueLabel = EmptyView()
109
+ }
110
+ }
111
+
112
+ extension Gauge where BoundsLabel == EmptyView, MarkedValueLabel == EmptyView {
113
+ public init<V: BinaryFloatingPoint>(value: V, in bounds: ClosedRange<V> = 0...1,
114
+ @ViewBuilder label: () -> Label,
115
+ @ViewBuilder currentValueLabel: () -> CurrentValueLabel) {
116
+ normalizedValue = Self.normalize(value, in: bounds)
117
+ self.label = label()
118
+ self.currentValueLabel = currentValueLabel()
119
+ }
120
+ }
121
+
122
+ extension Gauge where MarkedValueLabel == EmptyView {
123
+ /// Bounds labels are accepted for source compatibility and not rendered.
124
+ public init<V: BinaryFloatingPoint>(value: V, in bounds: ClosedRange<V> = 0...1,
125
+ @ViewBuilder label: () -> Label,
126
+ @ViewBuilder currentValueLabel: () -> CurrentValueLabel,
127
+ @ViewBuilder minimumValueLabel: () -> BoundsLabel,
128
+ @ViewBuilder maximumValueLabel: () -> BoundsLabel) {
129
+ normalizedValue = Self.normalize(value, in: bounds)
130
+ self.label = label()
131
+ self.currentValueLabel = currentValueLabel()
132
+ }
133
+ }
134
+
135
+ extension Gauge: _PrimitiveView {}
136
+ extension Gauge: _HostView {
137
+ var _kind: String { "gauge" }
138
+
139
+ private var hasCurrentValueLabel: Bool { !(CurrentValueLabel.self is EmptyView.Type) }
140
+
141
+ private func hasLabel(in environment: EnvironmentValues) -> Bool {
142
+ !(Label.self is EmptyView.Type) && !environment.labelsHidden
143
+ }
144
+
145
+ func _props(in environment: EnvironmentValues) -> _JSON {
146
+ .object([
147
+ "value": .number(normalizedValue),
148
+ "style": .string(environment.gaugeStyle),
149
+ "hasLabel": .bool(hasLabel(in: environment)),
150
+ "hasCurrentValueLabel": .bool(hasCurrentValueLabel),
151
+ ])
152
+ }
153
+
154
+ var _content: [any View] {
155
+ // `_content` has no environment, so the label goes through a group
156
+ // that reads `labelsHidden` itself and drops the label when set.
157
+ var children: [any View] = []
158
+ if !(Label.self is EmptyView.Type) { children.append(_GaugeLabel(label: label)) }
159
+ if hasCurrentValueLabel { children.append(currentValueLabel) }
160
+ return children
161
+ }
162
+ }
163
+
164
+ // MARK: - ProgressView
165
+
166
+ /// Progress toward a total. A determinate progress view draws as a
167
+ /// `linearCapacity` gauge with its label; an indeterminate one (no value)
168
+ /// has no spinner in the protocol and shows its label, or an hourglass
169
+ /// symbol when it has none.
170
+ public struct ProgressView<Label: View, CurrentValueLabel: View>: View {
171
+ /// Progress in 0…1, nil when indeterminate.
172
+ let fraction: Double?
173
+ let label: Label?
174
+ let currentValueLabel: CurrentValueLabel?
175
+
176
+ public var body: some View {
177
+ if let fraction {
178
+ Gauge(value: fraction, in: 0...1) {
179
+ if let label { label }
180
+ } currentValueLabel: {
181
+ if let currentValueLabel { currentValueLabel }
182
+ }
183
+ .gaugeStyle(.linearCapacity)
184
+ } else if let label {
185
+ label.foregroundStyle(.secondary)
186
+ } else {
187
+ Image(systemName: "hourglass").foregroundStyle(.secondary)
188
+ }
189
+ }
190
+
191
+ static func fraction<V: BinaryFloatingPoint>(_ value: V?, total: V) -> Double? {
192
+ guard let value, total > 0 else { return nil }
193
+ return max(0, min(1, Double(value) / Double(total)))
194
+ }
195
+ }
196
+
197
+ extension ProgressView where Label == EmptyView, CurrentValueLabel == EmptyView {
198
+ public init() {
199
+ fraction = nil
200
+ label = nil
201
+ currentValueLabel = nil
202
+ }
203
+
204
+ public init<V: BinaryFloatingPoint>(value: V?, total: V = 1.0) {
205
+ fraction = Self.fraction(value, total: total)
206
+ label = nil
207
+ currentValueLabel = nil
208
+ }
209
+ }
210
+
211
+ extension ProgressView where Label == Text, CurrentValueLabel == EmptyView {
212
+ @_disfavoredOverload
213
+ public init<S: StringProtocol>(_ title: S) {
214
+ fraction = nil
215
+ label = Text(title)
216
+ currentValueLabel = nil
217
+ }
218
+
219
+ public init(_ titleKey: LocalizedStringKey) {
220
+ fraction = nil
221
+ label = Text(titleKey)
222
+ currentValueLabel = nil
223
+ }
224
+
225
+ public init<S: StringProtocol, V: BinaryFloatingPoint>(_ title: S, value: V?, total: V = 1.0) {
226
+ fraction = Self.fraction(value, total: total)
227
+ label = Text(title)
228
+ currentValueLabel = nil
229
+ }
230
+
231
+ public init<V: BinaryFloatingPoint>(_ titleKey: LocalizedStringKey, value: V?, total: V = 1.0) {
232
+ fraction = Self.fraction(value, total: total)
233
+ label = Text(titleKey)
234
+ currentValueLabel = nil
235
+ }
236
+ }
237
+
238
+ extension ProgressView where CurrentValueLabel == EmptyView {
239
+ public init(@ViewBuilder label: () -> Label) {
240
+ fraction = nil
241
+ self.label = label()
242
+ currentValueLabel = nil
243
+ }
244
+
245
+ public init<V: BinaryFloatingPoint>(value: V?, total: V = 1.0, @ViewBuilder label: () -> Label) {
246
+ fraction = Self.fraction(value, total: total)
247
+ self.label = label()
248
+ currentValueLabel = nil
249
+ }
250
+ }
251
+
252
+ extension ProgressView {
253
+ public init<V: BinaryFloatingPoint>(value: V?, total: V = 1.0, @ViewBuilder label: () -> Label,
254
+ @ViewBuilder currentValueLabel: () -> CurrentValueLabel) {
255
+ fraction = Self.fraction(value, total: total)
256
+ self.label = label()
257
+ self.currentValueLabel = currentValueLabel()
258
+ }
259
+ }
260
+
261
+ /// `.progressViewStyle`: accepted for source compatibility.
262
+ public protocol ProgressViewStyle {}
263
+ public struct DefaultProgressViewStyle: ProgressViewStyle { public init() {} }
264
+ public struct LinearProgressViewStyle: ProgressViewStyle { public init() {} }
265
+ public struct CircularProgressViewStyle: ProgressViewStyle { public init() {} }
266
+ extension ProgressViewStyle where Self == DefaultProgressViewStyle {
267
+ public static var automatic: DefaultProgressViewStyle { DefaultProgressViewStyle() }
268
+ }
269
+ extension ProgressViewStyle where Self == LinearProgressViewStyle {
270
+ public static var linear: LinearProgressViewStyle { LinearProgressViewStyle() }
271
+ }
272
+ extension ProgressViewStyle where Self == CircularProgressViewStyle {
273
+ public static var circular: CircularProgressViewStyle { CircularProgressViewStyle() }
274
+ }
275
+
276
+ nonisolated extension View {
277
+ public func progressViewStyle<S: ProgressViewStyle>(_ style: S) -> some View { self }
278
+ }
279
+
280
+ /// Contributes the gauge's label unless `labelsHidden` is set in the environment.
281
+ struct _GaugeLabel<Label: View> {
282
+ let label: Label
283
+ @Environment(\.labelsHidden) private var labelsHidden
284
+
285
+ init(label: Label) { self.label = label }
286
+ }
287
+ extension _GaugeLabel: _PrimitiveView {}
288
+ extension _GaugeLabel: _GroupView {
289
+ var _children: [any View] { labelsHidden ? [] : [label] }
290
+ }
@@ -0,0 +1,89 @@
1
+ /// SwiftUI vends `CGFloat` through CoreGraphics. The shim provides its own
2
+ /// alias and geometry types and never imports Foundation (that would link its
3
+ /// 10 MB and ICU into every lean app). An app that also imports Foundation
4
+ /// gets both declarations; the CLI's generated `_SwiftBrowserFoundation.swift`
5
+ /// settles them with typealiases on the shim's (docs/ops-protocol.md, "Phase 11").
6
+ public typealias CGFloat = Double
7
+
8
+ public enum Edge: Int8, CaseIterable, Hashable, Sendable {
9
+ case top, leading, bottom, trailing
10
+
11
+ public struct Set: OptionSet, Sendable {
12
+ public let rawValue: Int8
13
+ public init(rawValue: Int8) { self.rawValue = rawValue }
14
+
15
+ public static let top = Set(rawValue: 1 << 0)
16
+ public static let leading = Set(rawValue: 1 << 1)
17
+ public static let bottom = Set(rawValue: 1 << 2)
18
+ public static let trailing = Set(rawValue: 1 << 3)
19
+ public static let horizontal: Set = [.leading, .trailing]
20
+ public static let vertical: Set = [.top, .bottom]
21
+ public static let all: Set = [.top, .leading, .bottom, .trailing]
22
+ }
23
+ }
24
+
25
+ public struct EdgeInsets: Equatable, Sendable {
26
+ public var top: CGFloat
27
+ public var leading: CGFloat
28
+ public var bottom: CGFloat
29
+ public var trailing: CGFloat
30
+
31
+ public init(top: CGFloat, leading: CGFloat, bottom: CGFloat, trailing: CGFloat) {
32
+ self.top = top
33
+ self.leading = leading
34
+ self.bottom = bottom
35
+ self.trailing = trailing
36
+ }
37
+
38
+ public init() { self.init(top: 0, leading: 0, bottom: 0, trailing: 0) }
39
+
40
+ var _json: _JSON {
41
+ .object(["top": .number(top), "leading": .number(leading),
42
+ "bottom": .number(bottom), "trailing": .number(trailing)])
43
+ }
44
+ }
45
+
46
+ public struct HorizontalAlignment: Equatable, Sendable {
47
+ let name: String
48
+ public static let leading = HorizontalAlignment(name: "leading")
49
+ public static let center = HorizontalAlignment(name: "center")
50
+ public static let trailing = HorizontalAlignment(name: "trailing")
51
+ }
52
+
53
+ public struct VerticalAlignment: Equatable, Sendable {
54
+ let name: String
55
+ public static let top = VerticalAlignment(name: "top")
56
+ public static let center = VerticalAlignment(name: "center")
57
+ public static let bottom = VerticalAlignment(name: "bottom")
58
+ /// Baseline alignment is approximated as `center` by the renderer.
59
+ public static let firstTextBaseline = VerticalAlignment(name: "center")
60
+ public static let lastTextBaseline = VerticalAlignment(name: "center")
61
+ }
62
+
63
+ public struct Alignment: Equatable, Sendable {
64
+ public var horizontal: HorizontalAlignment
65
+ public var vertical: VerticalAlignment
66
+
67
+ public init(horizontal: HorizontalAlignment, vertical: VerticalAlignment) {
68
+ self.horizontal = horizontal
69
+ self.vertical = vertical
70
+ }
71
+
72
+ public static let center = Alignment(horizontal: .center, vertical: .center)
73
+ public static let leading = Alignment(horizontal: .leading, vertical: .center)
74
+ public static let trailing = Alignment(horizontal: .trailing, vertical: .center)
75
+ public static let top = Alignment(horizontal: .center, vertical: .top)
76
+ public static let bottom = Alignment(horizontal: .center, vertical: .bottom)
77
+ public static let topLeading = Alignment(horizontal: .leading, vertical: .top)
78
+ public static let topTrailing = Alignment(horizontal: .trailing, vertical: .top)
79
+ public static let bottomLeading = Alignment(horizontal: .leading, vertical: .bottom)
80
+ public static let bottomTrailing = Alignment(horizontal: .trailing, vertical: .bottom)
81
+
82
+ var _name: String {
83
+ switch (vertical.name, horizontal.name) {
84
+ case ("center", let h): h
85
+ case (let v, "center"): v
86
+ case (let v, let h): v + h.prefix(1).uppercased() + h.dropFirst()
87
+ }
88
+ }
89
+ }