From d2b49b8d7aa8f430503442bb49b24a60e4ad8143 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sat, 10 Oct 2026 00:08:57 +0800 Subject: [PATCH] feat(environment): update control size support --- AGENTS.md | 5 ++ .../Shared/basic/OpenSwiftUI.xcconfig | 2 +- Configurations/Shared/basic/SwiftUI.xcconfig | 2 +- Package.resolved | 2 +- Package.swift | 2 + .../Control/ControlSize/ControlSize.swift | 27 -------- .../Data/EnvironmentKeys/ControlSize.swift} | 69 ++++++++++++++++--- 7 files changed, 71 insertions(+), 38 deletions(-) delete mode 100644 Sources/OpenSwiftUI/View/Control/ControlSize/ControlSize.swift rename Sources/{OpenSwiftUI/View/Control/ControlSize/ControlSizeKey.swift => OpenSwiftUICore/Data/EnvironmentKeys/ControlSize.swift} (54%) diff --git a/AGENTS.md b/AGENTS.md index fd7688573..e3107a116 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -13,6 +13,11 @@ This project is in active development and contains multiple Swift packages with ## Verification Scope +- After changing `Package.swift`, delete `Package.resolved` and run + `swift package resolve` in the same checkout to regenerate the lockfile and + its `originHash`. Use the normal remote dependency configuration, review the + diff for unintended dependency changes, and include the regenerated lockfile + with the manifest change. Do not edit or copy the hash manually. - The commands below are references, not a checklist to run after every edit. - Use source inspection and `git diff --check` for small Swift-only edits and implementation audits. Do not run package, Xcode, Tuist, XCFramework, or DocC diff --git a/Configurations/Shared/basic/OpenSwiftUI.xcconfig b/Configurations/Shared/basic/OpenSwiftUI.xcconfig index 4471e7a16..482939eab 100644 --- a/Configurations/Shared/basic/OpenSwiftUI.xcconfig +++ b/Configurations/Shared/basic/OpenSwiftUI.xcconfig @@ -4,4 +4,4 @@ GCC_PREPROCESSOR_DEFINITIONS_OPENSWIFTUI = OPENSWIFTUI=1 SWIFT_ACTIVE_COMPILATION_CONDITIONS_OPENSWIFTUI = OPENSWIFTUI -OPENSWIFTUI_AVAILABILITY_MACRO = "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v1_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v1_4:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v2_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_macOS_v2_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v2_1:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v2_3:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v3_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v3_2:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v3_4:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v4_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v4_1:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v4_4:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_1:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_2:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_4:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_5:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v6_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v7_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v8_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" +OPENSWIFTUI_AVAILABILITY_MACRO = "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v1_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v1_4:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v2_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_macOS_v2_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v2_1:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v2_3:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v3_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_iOS_v3_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v3_2:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v3_4:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v4_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_watchOS_v4_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v4_1:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v4_4:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_1:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_2:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_4:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_5:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v6_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v7_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v8_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" diff --git a/Configurations/Shared/basic/SwiftUI.xcconfig b/Configurations/Shared/basic/SwiftUI.xcconfig index 40b822015..3ccb145cf 100644 --- a/Configurations/Shared/basic/SwiftUI.xcconfig +++ b/Configurations/Shared/basic/SwiftUI.xcconfig @@ -2,4 +2,4 @@ OPENSWIFTUI_TARGET_BUNDLE_ID = SwiftUI SWIFT_INCLUDE_PATHS = $(inherited) $(SRCROOT)/Modules/Platform/cocoa -OPENSWIFTUI_AVAILABILITY_MACRO = "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v1_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v1_4:iOS 13.4, macOS 10.15.4, tvOS 13.4, watchOS 6.2" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v2_0:iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_macOS_v2_0:macOS 11.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v2_1:iOS 14.2, macOS 11.0, tvOS 14.1, watchOS 7.1" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v2_3:iOS 14.5, macOS 11.3, tvOS 14.5, watchOS 7.4" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v3_0:iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v3_2:iOS 15.2, macOS 12.1, tvOS 15.2, watchOS 8.3" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v3_4:iOS 15.4, macOS 12.3, tvOS 15.4, watchOS 8.5" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v4_0:iOS 16.0, macOS 13.0, tvOS 16.0, watchOS 9.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v4_1:iOS 16.1, macOS 13.0, tvOS 16.1, watchOS 9.1" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v4_4:iOS 16.4, macOS 13.3, tvOS 16.4, watchOS 9.4" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_0:iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_1:iOS 17.1, macOS 14.1, tvOS 17.1, watchOS 10.1, visionOS 1.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_2:iOS 17.2, macOS 14.2, tvOS 17.2, watchOS 10.2, visionOS 1.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_4:iOS 17.4, macOS 14.4, tvOS 17.4, watchOS 10.4, visionOS 1.1" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_5:iOS 17.5, macOS 14.5, tvOS 17.5, watchOS 10.5, visionOS 1.2" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v6_0:iOS 18.0, macOS 15.0, tvOS 18.0, watchOS 11.0, visionOS 2.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v7_0:iOS 26.0, macOS 26.0, tvOS 26.0, watchOS 26.0, visionOS 26.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v8_0:iOS 27.0, macOS 27.0, tvOS 27.0, watchOS 27.0, visionOS 27.0" +OPENSWIFTUI_AVAILABILITY_MACRO = "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v1_0:iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v1_4:iOS 13.4, macOS 10.15.4, tvOS 13.4, watchOS 6.2" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v2_0:iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_macOS_v2_0:macOS 11.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v2_1:iOS 14.2, macOS 11.0, tvOS 14.1, watchOS 7.1" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v2_3:iOS 14.5, macOS 11.3, tvOS 14.5, watchOS 7.4" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v3_0:iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_iOS_v3_0:iOS 15.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v3_2:iOS 15.2, macOS 12.1, tvOS 15.2, watchOS 8.3" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v3_4:iOS 15.4, macOS 12.3, tvOS 15.4, watchOS 8.5" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v4_0:iOS 16.0, macOS 13.0, tvOS 16.0, watchOS 9.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_watchOS_v4_0:watchOS 9.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v4_1:iOS 16.1, macOS 13.0, tvOS 16.1, watchOS 9.1" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v4_4:iOS 16.4, macOS 13.3, tvOS 16.4, watchOS 9.4" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_0:iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_1:iOS 17.1, macOS 14.1, tvOS 17.1, watchOS 10.1, visionOS 1.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_2:iOS 17.2, macOS 14.2, tvOS 17.2, watchOS 10.2, visionOS 1.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_4:iOS 17.4, macOS 14.4, tvOS 17.4, watchOS 10.4, visionOS 1.1" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v5_5:iOS 17.5, macOS 14.5, tvOS 17.5, watchOS 10.5, visionOS 1.2" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v6_0:iOS 18.0, macOS 15.0, tvOS 18.0, watchOS 11.0, visionOS 2.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v7_0:iOS 26.0, macOS 26.0, tvOS 26.0, watchOS 26.0, visionOS 26.0" "-Xfrontend" "-enable-experimental-feature" "-Xfrontend" "AvailabilityMacro=OpenSwiftUI_v8_0:iOS 27.0, macOS 27.0, tvOS 27.0, watchOS 27.0, visionOS 27.0" diff --git a/Package.resolved b/Package.resolved index 8738b63ac..8a3ba8d9b 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "b9cd83e5a8955692d34005fe5b0dcad4a04a07410fe5f7259bfaf260e772467e", + "originHash" : "e3222a34d445aa44027b74788fe9c150efda64d17f830def58446bb622d6986c", "pins" : [ { "identity" : "darwinprivateframeworks", diff --git a/Package.swift b/Package.swift index 3f83fde97..0d31cc51c 100644 --- a/Package.swift +++ b/Package.swift @@ -503,9 +503,11 @@ extension [SwiftSetting] { .enableExperimentalFeature("AvailabilityMacro=OpenSwiftUI_v2_1:\(ignoreAvailability ? minimumVersion : "iOS 14.2, macOS 11.0, tvOS 14.1, watchOS 7.1")"), .enableExperimentalFeature("AvailabilityMacro=OpenSwiftUI_v2_3:\(ignoreAvailability ? minimumVersion : "iOS 14.5, macOS 11.3, tvOS 14.5, watchOS 7.4")"), .enableExperimentalFeature("AvailabilityMacro=OpenSwiftUI_v3_0:\(ignoreAvailability ? minimumVersion : "iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0")"), + .enableExperimentalFeature("AvailabilityMacro=OpenSwiftUI_iOS_v3_0:\(ignoreAvailability ? minimumVersion : "iOS 15.0")"), .enableExperimentalFeature("AvailabilityMacro=OpenSwiftUI_v3_2:\(ignoreAvailability ? minimumVersion : "iOS 15.2, macOS 12.1, tvOS 15.2, watchOS 8.3")"), .enableExperimentalFeature("AvailabilityMacro=OpenSwiftUI_v3_4:\(ignoreAvailability ? minimumVersion : "iOS 15.4, macOS 12.3, tvOS 15.4, watchOS 8.5")"), .enableExperimentalFeature("AvailabilityMacro=OpenSwiftUI_v4_0:\(ignoreAvailability ? minimumVersion : "iOS 16.0, macOS 13.0, tvOS 16.0, watchOS 9.0")"), + .enableExperimentalFeature("AvailabilityMacro=OpenSwiftUI_watchOS_v4_0:\(ignoreAvailability ? minimumVersion : "watchOS 9.0")"), .enableExperimentalFeature("AvailabilityMacro=OpenSwiftUI_v4_1:\(ignoreAvailability ? minimumVersion : "iOS 16.1, macOS 13.0, tvOS 16.1, watchOS 9.1")"), .enableExperimentalFeature("AvailabilityMacro=OpenSwiftUI_v4_4:\(ignoreAvailability ? minimumVersion : "iOS 16.4, macOS 13.3, tvOS 16.4, watchOS 9.4")"), .enableExperimentalFeature("AvailabilityMacro=OpenSwiftUI_v5_0:\(ignoreAvailability ? minimumVersion : "iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0")"), diff --git a/Sources/OpenSwiftUI/View/Control/ControlSize/ControlSize.swift b/Sources/OpenSwiftUI/View/Control/ControlSize/ControlSize.swift deleted file mode 100644 index 538c5c7cc..000000000 --- a/Sources/OpenSwiftUI/View/Control/ControlSize/ControlSize.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// ControlSize.swift -// OpenSwiftUI -// -// Audited for RELEASE_2023 -// Status: Complete - -/// The size classes, like regular or small, that you can apply to controls -/// within a view. -@available(tvOS, unavailable) -public enum ControlSize: CaseIterable, Sendable { - /// A control version that is minimally sized. - case mini - - /// A control version that is proportionally smaller size for space-constrained views. - case small - - /// A control version that is the default size. - case regular - - /// A control version that is prominently sized. - case large - - case extraLarge -} - -extension ControlSize: Hashable {} diff --git a/Sources/OpenSwiftUI/View/Control/ControlSize/ControlSizeKey.swift b/Sources/OpenSwiftUICore/Data/EnvironmentKeys/ControlSize.swift similarity index 54% rename from Sources/OpenSwiftUI/View/Control/ControlSize/ControlSizeKey.swift rename to Sources/OpenSwiftUICore/Data/EnvironmentKeys/ControlSize.swift index 579cfa124..a809b46f8 100644 --- a/Sources/OpenSwiftUI/View/Control/ControlSize/ControlSizeKey.swift +++ b/Sources/OpenSwiftUICore/Data/EnvironmentKeys/ControlSize.swift @@ -1,26 +1,79 @@ // -// ControlSizeKey.swift -// OpenSwiftUI +// ControlSize.swift +// OpenSwiftUICore // -// Audited for 3.5.2 +// Audited for 6.5.4 // Status: Complete -// ID: 50E368DED9ACE8B6BEC08FF7781AF4B1 +// ID: B084178BA9D46D059A1FB75185D1E85C (SwiftUICore) + +package import OpenAttributeGraphShims + +/// The size classes, like regular or small, that you can apply to controls +/// within a view. +@available(OpenSwiftUI_v1_0, *) +@available(OpenSwiftUI_iOS_v3_0, *) +@available(OpenSwiftUI_watchOS_v4_0, *) +@available(tvOS, unavailable) +public enum ControlSize: CaseIterable, Sendable { + /// A control version that is minimally sized. + case mini + + /// A control version that is proportionally smaller size for space-constrained views. + case small + + /// A control version that is the default size. + case regular + + /// A control version that is prominently sized. + @available(OpenSwiftUI_macOS_v2_0, *) + case large + + @available(OpenSwiftUI_v5_0, *) + case extraLarge + + public static var allCases: [ControlSize] { + [.mini, .small, .regular, .large, .extraLarge] + } +} + +extension ControlSize: Hashable {} private struct ControlSizeKey: EnvironmentKey { - static let defaultValue: ControlSize = .regular + static let defaultValue: ControlSize? = nil } +@available(OpenSwiftUI_v1_0, *) +@available(OpenSwiftUI_iOS_v3_0, *) +@available(OpenSwiftUI_watchOS_v4_0, *) +@available(tvOS, unavailable) extension EnvironmentValues { /// The size to apply to controls within a view. /// /// The default is ``ControlSize/regular``. - @available(tvOS, unavailable) public var controlSize: ControlSize { + get { self[ControlSizeKey.self] ?? .regular } + set { self[ControlSizeKey.self] = newValue } + } + + package var explicitControlSize: ControlSize? { get { self[ControlSizeKey.self] } set { self[ControlSizeKey.self] = newValue } } } +extension CachedEnvironment.ID { + static let controlSize: CachedEnvironment.ID = .init() +} + +extension _GraphInputs { + package var controlSize: Attribute { + mapEnvironment(id: .controlSize) { $0.controlSize } + } +} + +@available(OpenSwiftUI_v1_0, *) +@available(OpenSwiftUI_iOS_v3_0, *) +@available(OpenSwiftUI_watchOS_v4_0, *) @available(tvOS, unavailable) extension View { /// Sets the size for controls within this view. @@ -64,12 +117,12 @@ extension View { /// } /// /// ![A screenshot showing several controls of various - /// sizes.](SwiftUI-View-controlSize.png) + /// sizes.](OpenSwiftUI-View-controlSize.png) /// /// - Parameter controlSize: One of the control sizes specified in the /// ``ControlSize`` enumeration. @inlinable - public func controlSize(_ controlSize: ControlSize) -> some View { + nonisolated public func controlSize(_ controlSize: ControlSize) -> some View { environment(\.controlSize, controlSize) } }