diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..e272efe --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +# editorconfig.org + +root = true + +[*] +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/Sources/ConfettiSwiftUI.swift b/Sources/ConfettiSwiftUI.swift index 8a58ed5..f97d20c 100644 --- a/Sources/ConfettiSwiftUI.swift +++ b/Sources/ConfettiSwiftUI.swift @@ -7,8 +7,8 @@ import SwiftUI -public enum ConfettiType:CaseIterable, Hashable { - +public enum ConfettiType:CaseIterable, Equatable { + public enum Shape { case circle case triangle @@ -19,27 +19,35 @@ public enum ConfettiType:CaseIterable, Hashable { case shape(Shape) case text(String) + case image(Image) + + @available(*, deprecated, message: "Use ConfettiType.image(_:) with Image(systemName:) instead") case sfSymbol(symbolName: String) - case image(String) - - public var view:AnyView{ + + @available(*, deprecated, message: "Use ConfettiType.image(_:) with an Image instead") + public static func image(_ name: String) -> ConfettiType { + return .image(Image(name)) + } + + @ViewBuilder + public var view: some View { switch self { case .shape(.square): - return AnyView(Rectangle()) + Rectangle() case .shape(.triangle): - return AnyView(Triangle()) + Triangle() case .shape(.slimRectangle): - return AnyView(SlimRectangle()) + SlimRectangle() case .shape(.roundedCross): - return AnyView(RoundedCross()) + RoundedCross() case let .text(text): - return AnyView(Text(text)) + Text(text) case .sfSymbol(let symbolName): - return AnyView(Image(systemName: symbolName)) + Image(systemName: symbolName) case .image(let image): - return AnyView(Image(image).resizable()) + image.resizable() default: - return AnyView(Circle()) + Circle() } }