diff --git a/Package.swift b/Package.swift index a31e2cc..83f2ffb 100644 --- a/Package.swift +++ b/Package.swift @@ -16,6 +16,10 @@ let package = Package( .library( name: "MacBackend", targets: ["MacBackend"] + ), + .library( + name: "Core", + targets: ["Core"] ) ], dependencies: [ @@ -25,13 +29,17 @@ let package = Package( ], targets: [ .target( - name: "MacBackend", + name: "Core", dependencies: [ .product(name: "Meta", package: "Meta"), .product(name: "MetaSQLite", package: "meta-sqlite"), .product(name: "LevenshteinTransformations", package: "levenshtein-transformations") ] ), + .target( + name: "MacBackend", + dependencies: ["Core"] + ), .executableTarget( name: "Demo", dependencies: ["MacBackend"] diff --git a/Sources/MacBackend/Menu/Divider.swift b/Sources/Core/Menu/Divider.swift similarity index 100% rename from Sources/MacBackend/Menu/Divider.swift rename to Sources/Core/Menu/Divider.swift diff --git a/Sources/MacBackend/Menu/Menu.swift b/Sources/Core/Menu/Menu.swift similarity index 100% rename from Sources/MacBackend/Menu/Menu.swift rename to Sources/Core/Menu/Menu.swift diff --git a/Sources/MacBackend/Menu/MenuButton.swift b/Sources/Core/Menu/MenuButton.swift similarity index 100% rename from Sources/MacBackend/Menu/MenuButton.swift rename to Sources/Core/Menu/MenuButton.swift diff --git a/Sources/MacBackend/Menu/MenuCollection.swift b/Sources/Core/Menu/MenuCollection.swift similarity index 100% rename from Sources/MacBackend/Menu/MenuCollection.swift rename to Sources/Core/Menu/MenuCollection.swift diff --git a/Sources/MacBackend/Menu/MenuContext.swift b/Sources/Core/Menu/MenuContext.swift similarity index 100% rename from Sources/MacBackend/Menu/MenuContext.swift rename to Sources/Core/Menu/MenuContext.swift diff --git a/Sources/MacBackend/Menu/MenuEitherView.swift b/Sources/Core/Menu/MenuEitherView.swift similarity index 100% rename from Sources/MacBackend/Menu/MenuEitherView.swift rename to Sources/Core/Menu/MenuEitherView.swift diff --git a/Sources/MacBackend/Menu/ServicesMenu.swift b/Sources/Core/Menu/ServicesMenu.swift similarity index 100% rename from Sources/MacBackend/Menu/ServicesMenu.swift rename to Sources/Core/Menu/ServicesMenu.swift diff --git a/Sources/MacBackend/Model/Enumerations/Edge.swift b/Sources/Core/Model/Enumerations/Edge.swift similarity index 100% rename from Sources/MacBackend/Model/Enumerations/Edge.swift rename to Sources/Core/Model/Enumerations/Edge.swift diff --git a/Sources/MacBackend/Model/Enumerations/Font.swift b/Sources/Core/Model/Enumerations/Font.swift similarity index 100% rename from Sources/MacBackend/Model/Enumerations/Font.swift rename to Sources/Core/Model/Enumerations/Font.swift diff --git a/Sources/MacBackend/Model/Enumerations/Icon.swift b/Sources/Core/Model/Enumerations/Icon.swift similarity index 100% rename from Sources/MacBackend/Model/Enumerations/Icon.swift rename to Sources/Core/Model/Enumerations/Icon.swift diff --git a/Sources/MacBackend/Model/Enumerations/KeyboardShortcut.swift b/Sources/Core/Model/Enumerations/KeyboardShortcut.swift similarity index 100% rename from Sources/MacBackend/Model/Enumerations/KeyboardShortcut.swift rename to Sources/Core/Model/Enumerations/KeyboardShortcut.swift diff --git a/Sources/MacBackend/Model/Extensions/Meta.Binding.swift b/Sources/Core/Model/Extensions/Meta.Binding.swift similarity index 100% rename from Sources/MacBackend/Model/Extensions/Meta.Binding.swift rename to Sources/Core/Model/Extensions/Meta.Binding.swift diff --git a/Sources/MacBackend/Model/Extensions/Set.swift b/Sources/Core/Model/Extensions/Set.swift similarity index 100% rename from Sources/MacBackend/Model/Extensions/Set.swift rename to Sources/Core/Model/Extensions/Set.swift diff --git a/Sources/MacBackend/Model/MacApp.swift b/Sources/Core/Model/MacApp.swift similarity index 100% rename from Sources/MacBackend/Model/MacApp.swift rename to Sources/Core/Model/MacApp.swift diff --git a/Sources/MacBackend/Model/MacMainView.swift b/Sources/Core/Model/MacMainView.swift similarity index 100% rename from Sources/MacBackend/Model/MacMainView.swift rename to Sources/Core/Model/MacMainView.swift diff --git a/Sources/MacBackend/Model/MacSceneElement.swift b/Sources/Core/Model/MacSceneElement.swift similarity index 100% rename from Sources/MacBackend/Model/MacSceneElement.swift rename to Sources/Core/Model/MacSceneElement.swift diff --git a/Sources/MacBackend/Model/MacWidget.swift b/Sources/Core/Model/MacWidget.swift similarity index 100% rename from Sources/MacBackend/Model/MacWidget.swift rename to Sources/Core/Model/MacWidget.swift diff --git a/Sources/MacBackend/Model/SwiftUI/MacBackendView.swift b/Sources/Core/Model/SwiftUI/MacBackendView.swift similarity index 100% rename from Sources/MacBackend/Model/SwiftUI/MacBackendView.swift rename to Sources/Core/Model/SwiftUI/MacBackendView.swift diff --git a/Sources/MacBackend/Model/SwiftUI/SwiftUIWidget.swift b/Sources/Core/Model/SwiftUI/SwiftUIWidget.swift similarity index 100% rename from Sources/MacBackend/Model/SwiftUI/SwiftUIWidget.swift rename to Sources/Core/Model/SwiftUI/SwiftUIWidget.swift diff --git a/Sources/MacBackend/View/Alert.swift b/Sources/Core/View/Alert.swift similarity index 89% rename from Sources/MacBackend/View/Alert.swift rename to Sources/Core/View/Alert.swift index 8621da1..2711ea8 100644 --- a/Sources/MacBackend/View/Alert.swift +++ b/Sources/Core/View/Alert.swift @@ -26,6 +26,19 @@ public struct Alert: SwiftUIWidget { [.mainContent: child] } + /// Initialize the alert. + /// - Parameters: + /// - title: The alert's title. + /// - description: The alert's description. + /// - isPresented: Whether the alert is presented. + /// - child: The wrapped view. + public init(title: String, description: String, isPresented: Meta.Binding, child: Meta.AnyView) { + self.title = title + self.description = description + self.isPresented = isPresented + self.child = child + } + /// An alert action. enum Action { @@ -146,19 +159,3 @@ public struct Alert: SwiftUIWidget { } } - -extension Meta.AnyView { - - // swiftlint:disable function_default_parameter_at_end - /// Add an alert to a view. - /// - Parameters: - /// - title: The title. - /// - description: The description. - /// - isPresented: Whether the alert is visible. - /// - Returns: The alert. - public func alert(_ title: String, description: String = "", isPresented: Meta.Binding) -> Alert { - .init(title: title, description: description, isPresented: isPresented, child: self) - } - // swiftlint:enable function_default_parameter_at_end - -} diff --git a/Sources/MacBackend/View/Button.swift b/Sources/Core/View/Button.swift similarity index 100% rename from Sources/MacBackend/View/Button.swift rename to Sources/Core/View/Button.swift diff --git a/Sources/MacBackend/View/EitherView.swift b/Sources/Core/View/EitherView.swift similarity index 100% rename from Sources/MacBackend/View/EitherView.swift rename to Sources/Core/View/EitherView.swift diff --git a/Sources/MacBackend/View/Label.swift b/Sources/Core/View/Label.swift similarity index 100% rename from Sources/MacBackend/View/Label.swift rename to Sources/Core/View/Label.swift diff --git a/Sources/MacBackend/View/List.swift b/Sources/Core/View/List.swift similarity index 100% rename from Sources/MacBackend/View/List.swift rename to Sources/Core/View/List.swift diff --git a/Sources/MacBackend/View/NavigationSplitView.swift b/Sources/Core/View/NavigationSplitView.swift similarity index 100% rename from Sources/MacBackend/View/NavigationSplitView.swift rename to Sources/Core/View/NavigationSplitView.swift diff --git a/Sources/MacBackend/View/PaddingView.swift b/Sources/Core/View/PaddingView.swift similarity index 62% rename from Sources/MacBackend/View/PaddingView.swift rename to Sources/Core/View/PaddingView.swift index ecbdbc9..f609def 100644 --- a/Sources/MacBackend/View/PaddingView.swift +++ b/Sources/Core/View/PaddingView.swift @@ -8,7 +8,7 @@ import SwiftUI /// The padding view. -struct PaddingView: SwiftUIWidget { +public struct PaddingView: SwiftUIWidget { /// The padding. var padding: Double @@ -18,29 +18,27 @@ struct PaddingView: SwiftUIWidget { var child: Meta.AnyView /// The wrapped views. - var wrappedViews: [String: Meta.AnyView] { + public var wrappedViews: [String: Meta.AnyView] { [.mainContent: child] } + /// Initialize the padding view. + /// - Parameters: + /// - padding: The padding. + /// - edges: The edges. + /// - child: The wrapped view. + public init(padding: Double, edges: Set, child: Meta.AnyView) { + self.padding = padding + self.edges = edges + self.child = child + } + /// Get the SwiftUI view. /// - Parameter properties: The widget data. /// - Returns: The SwiftUI view. - static func view(properties: Self) -> some SwiftUI.View { + public static func view(properties: Self) -> some SwiftUI.View { MacBackendView(.mainContent) .padding(properties.edges.swiftUI, properties.padding) } } - -extension Meta.AnyView { - - /// Set the padding. - /// - Parameters: - /// - padding: The padding. - /// - edges: The edges. - /// - Returns: The view. - public func padding(_ padding: Double, edges: Set = .all) -> Meta.AnyView { - PaddingView(padding: padding, edges: edges, child: self) - } - -} diff --git a/Sources/MacBackend/View/ScrollView.swift b/Sources/Core/View/ScrollView.swift similarity index 100% rename from Sources/MacBackend/View/ScrollView.swift rename to Sources/Core/View/ScrollView.swift diff --git a/Sources/MacBackend/View/Spacer.swift b/Sources/Core/View/Spacer.swift similarity index 100% rename from Sources/MacBackend/View/Spacer.swift rename to Sources/Core/View/Spacer.swift diff --git a/Sources/MacBackend/View/Text.swift b/Sources/Core/View/Text.swift similarity index 100% rename from Sources/MacBackend/View/Text.swift rename to Sources/Core/View/Text.swift diff --git a/Sources/MacBackend/View/VStack.swift b/Sources/Core/View/VStack.swift similarity index 100% rename from Sources/MacBackend/View/VStack.swift rename to Sources/Core/View/VStack.swift diff --git a/Sources/MacBackend/Window/MenuBar.swift b/Sources/Core/Window/MenuBar.swift similarity index 100% rename from Sources/MacBackend/Window/MenuBar.swift rename to Sources/Core/Window/MenuBar.swift diff --git a/Sources/MacBackend/Window/Window.swift b/Sources/Core/Window/Window.swift similarity index 100% rename from Sources/MacBackend/Window/Window.swift rename to Sources/Core/Window/Window.swift diff --git a/Sources/MacBackend/AnyView.swift b/Sources/MacBackend/AnyView.swift new file mode 100644 index 0000000..b19666a --- /dev/null +++ b/Sources/MacBackend/AnyView.swift @@ -0,0 +1,33 @@ +// +// AnyView.swift +// MacBackend +// +// Created by david-swift on 04.12.2024. +// + +@_exported import Core + +extension AnyView { + + // swiftlint:disable function_default_parameter_at_end + /// Add an alert to a view. + /// - Parameters: + /// - title: The title. + /// - description: The description. + /// - isPresented: Whether the alert is visible. + /// - Returns: The alert. + public func alert(_ title: String, description: String = "", isPresented: Meta.Binding) -> Alert { + .init(title: title, description: description, isPresented: isPresented, child: self) + } + // swiftlint:enable function_default_parameter_at_end + + /// Set the padding. + /// - Parameters: + /// - padding: The padding. + /// - edges: The edges. + /// - Returns: The view. + public func padding(_ padding: Double, edges: Set = .all) -> Meta.AnyView { + PaddingView(padding: padding, edges: edges, child: self) + } + +}