diff --git a/Demo/SwiftUIExtensionsDemo iOS/ContentView.swift b/Demo/SwiftUIExtensionsDemo iOS/ContentView.swift deleted file mode 100644 index a78593c..0000000 --- a/Demo/SwiftUIExtensionsDemo iOS/ContentView.swift +++ /dev/null @@ -1,95 +0,0 @@ -import SwiftUI - -struct ContentView: View { - - var body: some View { - NavigationView { - List { - Section(header: Text("Layouts")) { - NavigationLink(destination: ModularGridView()) { - HStack { - Image(systemName: "square.grid.3x2.fill") - Text("Modular Grid") - } - } - - NavigationLink(destination: StaggeredGridView()) { - HStack { - Image(systemName: "rectangle.3.offgrid.fill") - Text("Staggered Grid") - } - } - } - - Section(header: Text("Data Visualization")) { - NavigationLink(destination: ChartsView()) { - HStack { - Image(systemName: "chart.pie.fill") - Text("Charts") - } - } - } - - - Section(header: Text("Sliders")) { - NavigationLink(destination: HorizontalSliderExamplesView()) { - HStack { - Image(systemName: "square.split.1x2.fill") - Text("Horizontal") - } - } - - NavigationLink(destination: VerticalSliderExamplesView()) { - HStack { - Image(systemName: "square.split.2x1.fill") - Text("Vertical") - } - } - - NavigationLink(destination: PointSliderExamplesView()) { - HStack { - Image(systemName: "square.split.2x2.fill") - Text("Point") - } - } - } - - Section(header: Text("Shapes")) { - NavigationLink(destination: RegularPolygonsView()) { - HStack { - Image(systemName: "square.fill") - Text("Regular Polygons") - } - } - - NavigationLink(destination: LinesView()) { - HStack { - Image(systemName: "pencil.and.outline") - Text("Lines") - } - } - - NavigationLink(destination: PatternsView()) { - HStack { - Image(systemName: "rectangle.split.3x3.fill") - Text("Patterns") - } - } - } - } - .listStyle( - GroupedListStyle() - ) - .navigationBarTitle(Text("SwiftUI Extensions")) - } - .navigationViewStyle( - StackNavigationViewStyle() - ) - } -} - -struct ContentView_Previews: PreviewProvider { - static var previews: some View { - ContentView() - } -} diff --git a/Demo/SwiftUIExtensionsDemo iOS/DataVisualization/ChartsView.swift b/Demo/SwiftUIExtensionsDemo iOS/DataVisualization/ChartsView.swift deleted file mode 100644 index 0df19eb..0000000 --- a/Demo/SwiftUIExtensionsDemo iOS/DataVisualization/ChartsView.swift +++ /dev/null @@ -1,157 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct ChartsView: View { - @State var data1: [CGFloat] = (2010...2020).map { _ in .random(in: 0.1...1.0) } - @State var data2: [CGFloat] = (0..<50).map { _ in .random(in: 0.1...1.0) } - @State var data3: [CGFloat] = (0..<100).map { _ in .random(in: 0.1...1.0) } - - @State var data4: [CGFloat] = (0..<100).map { _ in .random(in: 0.4...1.0) } - @State var data5: [CGFloat] = (0..<100).map { _ in .random(in: 0.1...0.3) } - @State var data6: [CGFloat] = (0..<100).map { _ in .random(in: 0.3...0.4) } - - @State var matrixData1: [[CGFloat]] = (0..<20).map { _ in (0..<3).map { _ in CGFloat.random(in: 0.00...0.33) } } - - var body: some View { - ScrollView { - HStack { - VStack { - AxisLabels(.vertical, data: 1...10, id: \.self) { - Text("\(110 - $0 * 10)") - .fontWeight(.bold) - .font(Font.system(size: 8)) - .foregroundColor(.secondary) - } - .frame(width: 20) - - Rectangle().foregroundColor(.clear).frame(width: 20, height: 20) - } - - - VStack { - Chart(data: data1) - .chartStyle( - LineChartStyle(.quadCurve, lineColor: .blue, lineWidth: 5) - ) - .padding() - .background( - GridPattern(horizontalLines: 10 + 1, verticalLines: data1.count + 1) - .inset(by: 1) - .stroke(Color.gray.opacity(0.1), style: .init(lineWidth: 2, lineCap: .round)) - ) - .frame(height: 300) - - - AxisLabels(.horizontal, data: 2010...2020, id: \.self) { - Text("\($0)".replacingOccurrences(of: ",", with: "")) - .fontWeight(.bold) - .font(Font.system(size: 8)) - .foregroundColor(.secondary) - } - .frame(height: 20) - .padding(.horizontal, 1) - } - .layoutPriority(1) - } - - .padding() - - - Chart(data: data2) - .chartStyle( - AreaChartStyle(.quadCurve, fill: - LinearGradient(gradient: .init(colors: [Color.red.opacity(0.8), Color.red.opacity(0.2)]), startPoint: .top, endPoint: .bottom) - ) - ) - .background( - Color.gray.opacity(0.1) - .overlay( - GridPattern(horizontalLines: data2.count) - .inset(by: 1) - .stroke(Color.red.opacity(0.2), style: .init(lineWidth: 1, lineCap: .round)) - ) - ) - .cornerRadius(16) - .frame(height: 300) - .padding() - - Chart(data: data3) - .chartStyle( - ColumnChartStyle(column: Capsule().foregroundColor(.green), spacing: 2) - ) - .padding() - .background(Color.gray.opacity(0.1)) - .cornerRadius(16) - .frame(height: 300) - .padding() - - Chart(data: matrixData1) - .chartStyle( - StackedColumnChartStyle(spacing: 2, colors: [.yellow, .orange, .red]) - ) - .background( - Color.gray.opacity(0.1) - .overlay( - GridPattern(horizontalLines: data2.count) - .inset(by: 1) - .stroke(Color.red.opacity(0.2), style: .init(lineWidth: 1, lineCap: .round)) - ) - ) - .cornerRadius(16) - .frame(height: 300) - .padding() - - Chart(data: matrixData1) - .chartStyle( - StackedAreaChartStyle(.quadCurve, colors: [.yellow, .orange, .red]) - ) - .background( - Color.gray.opacity(0.1) - .overlay( - GridPattern(horizontalLines: data2.count) - .inset(by: 1) - .stroke(Color.red.opacity(0.2), style: .init(lineWidth: 1, lineCap: .round)) - ) - ) - .cornerRadius(16) - .frame(height: 300) - .padding() - - ZStack { - Chart(data: data4) - .chartStyle( - LineChartStyle(.quadCurve, lineColor: .purple, lineWidth: 3) - ) - - Chart(data: data4) - .chartStyle( - AreaChartStyle(.quadCurve, fill: - LinearGradient(gradient: .init(colors: [Color.purple.opacity(0.8), Color.purple.opacity(0.2)]), startPoint: .top, endPoint: .bottom) - ) - ) - - Chart(data: data5) - .chartStyle( - ColumnChartStyle(column: Color.white.opacity(0.5), spacing: 2) - ) - - Chart(data: data6) - .chartStyle( - LineChartStyle(.line, lineColor: Color.white.opacity(0.2), lineWidth: 3) - ) - } - .padding() - .background(Color.gray.opacity(0.1)) - .cornerRadius(16) - .frame(height: 300) - .padding() - } - .navigationBarTitle("Charts") - } -} - -struct ChartsView_Previews: PreviewProvider { - static var previews: some View { - ChartsView() - } -} diff --git a/Demo/SwiftUIExtensionsDemo iOS/Shapes/LinesView.swift b/Demo/SwiftUIExtensionsDemo iOS/Shapes/LinesView.swift deleted file mode 100644 index c4ee94a..0000000 --- a/Demo/SwiftUIExtensionsDemo iOS/Shapes/LinesView.swift +++ /dev/null @@ -1,31 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct LinesView: View { - var body: some View { - ScrollView { - Line(unitPoints: [ - UnitPoint(x: 0.0, y: 0.1), - UnitPoint(x: 0.5, y: 0.9), - UnitPoint(x: 1.0, y: 0.1) - ]) - .stroke(Color.red, style: .init(lineWidth: 4, lineCap: .round)) - .frame(height: 200) - .padding() - - QuadCurve(unitData: [ - 0.1, 0.9, 0.1 - ]) - .stroke(Color.blue, style: .init(lineWidth: 2, lineCap: .round)) - .frame(height: 200) - .padding() - } - .navigationBarTitle("Lines") - } -} - -struct LinesView_Previews: PreviewProvider { - static var previews: some View { - LinesView() - } -} diff --git a/Demo/SwiftUIExtensionsDemo iOS/Shapes/PatternsView.swift b/Demo/SwiftUIExtensionsDemo iOS/Shapes/PatternsView.swift deleted file mode 100644 index b2c00cc..0000000 --- a/Demo/SwiftUIExtensionsDemo iOS/Shapes/PatternsView.swift +++ /dev/null @@ -1,39 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct PatternsView: View { - var body: some View { - ScrollView { - GridPattern(horizontalLines: 20, verticalLines: 40) - .stroke(Color.white.opacity(0.3), style: .init(lineWidth: 1, lineCap: .round)) - .frame(height: 200) - .background(Color.blue) - .padding() - - - LinearGradient(gradient: Gradient(colors: [.orange, .red, .blue, .purple]), startPoint: .topLeading, endPoint: .bottomTrailing) - .frame(height: 200) - .clipShape( - GridPattern(horizontalLines: 25, verticalLines: 25).inset(by: 1).stroke(lineWidth: 1) - ) - .padding() - - LinearGradient(gradient: Gradient(colors: [.purple, .red, .orange]), startPoint: .topLeading, endPoint: .bottomTrailing) - .frame(height: 200) - .clipShape( - GridPattern(horizontalLines: 10) - .inset(by: 2) - .stroke(style: .init(lineWidth: 4, lineCap: .round, lineJoin: .round, miterLimit: 2, dash: [10], dashPhase: 0)) - ) - .padding() - - } - .navigationBarTitle("Patterns") - } -} - -struct PatternsView_Previews: PreviewProvider { - static var previews: some View { - PatternsView() - } -} diff --git a/Demo/SwiftUIExtensionsDemo iOS/Shapes/RegularPolygonsView.swift b/Demo/SwiftUIExtensionsDemo iOS/Shapes/RegularPolygonsView.swift deleted file mode 100644 index 073c150..0000000 --- a/Demo/SwiftUIExtensionsDemo iOS/Shapes/RegularPolygonsView.swift +++ /dev/null @@ -1,40 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct RegularPolygonsView: View { - var body: some View { - HStack(alignment: .center, spacing: 16) { - RegularPolygon(sides: 4) - .strokeBorder(lineWidth: 20) - .foregroundColor(.blue) - - Pentagon() - .strokeBorder(lineWidth: 20) - .foregroundColor(.yellow) - - Hexagon() - .foregroundColor(.orange) - - Heptagon() - .foregroundColor(.blue) - - Octagon() - .foregroundColor(.pink) - - Nonagon() - .foregroundColor(.red) - - Decagon() - .foregroundColor(.green) - } - .frame(height: 100) - .padding() - .navigationBarTitle("Regular Polygons") - } -} - -struct ShapesView_Previews: PreviewProvider { - static var previews: some View { - RegularPolygonsView() - } -} diff --git a/Demo/SwiftUIExtensionsDemo iOS/Sliders/HorizontalSliderExamplesView.swift b/Demo/SwiftUIExtensionsDemo iOS/Sliders/HorizontalSliderExamplesView.swift deleted file mode 100644 index c710ad1..0000000 --- a/Demo/SwiftUIExtensionsDemo iOS/Sliders/HorizontalSliderExamplesView.swift +++ /dev/null @@ -1,235 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct HorizontalSliderExamplesView: View { - @EnvironmentObject var model: Model - - var body: some View { - ScrollView { - Group { - - HSlider(value: $model.value1) - -// ValueSlider(value: $model.value1) -// .background(Color.yellow) -// .valueSliderStyle( -// HorizontalValueSliderStyle( -// track: { HorizontalValueTrack(value: $0) }, -// thumbSize: CGSize(width: 32, height: 32), -// options: .interactiveTrack -// ) -// ) - - - HSlider(value: $model.value2, - configuration: .init( - thumbSize: CGSize(width: 16, height: 32) - ) - ) - - HSlider(value: $model.value3, track: - LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .leading, endPoint: .trailing) - .frame(height: 8) - .cornerRadius(4) - ) - - HSlider( - value: $model.value4, - track: - HTrack( - value: model.value4, - view: Rectangle() - .foregroundColor(.green) - .frame(height: 8), - configuration: .init( - offsets: 8 - ) - ) - .background(Color.white) - .frame(height: 8) - .cornerRadius(3) - .overlay( - Capsule().strokeBorder(Color.white.opacity(0.5), lineWidth: 1) - ) - .animation( - .spring(response: 0.7, dampingFraction: 0.4) - ), - configuration: .init( - thumbSize: CGSize(width: 16, height: 16) - ) - - ) - - HSlider( - value: $model.value5, - track: - LinearGradient(gradient: Gradient(colors: [.purple, .blue, .purple]), startPoint: .leading, endPoint: .trailing) - .frame(height: 6) - .cornerRadius(3), - configuration: .init( - thumbSize: CGSize(width: 48, height: 16) - ) - ) - - HSlider( - value: $model.value6, - track: - ZStack { - HTrack( - value: model.value6, - view: Rectangle().foregroundColor(.white).opacity(0.2), - mask: Rectangle() - ) - - HTrack( - value: model.value6, - view: LinearGradient(gradient: Gradient(colors: [.purple, .blue, .purple]), startPoint: .leading, endPoint: .trailing).opacity(0.8), - mask: Rectangle() - ) - .overlay( - Capsule().strokeBorder(Color.white.opacity(0.5), lineWidth: 2) - ) - .animation(.easeInOut(duration: 1.0)) - } - .background(Capsule().foregroundColor(Color.secondary.opacity(0.25))) - .frame(height: 32) - .cornerRadius(16), - thumb: EmptyView(), - configuration: .init( - options: .interactiveTrack, - thumbSize: .zero - ) - ) - } - - Group { - HorizontalRangeSlider(range: $model.range1) - - HRangeSlider( - range: $model.range2, - track: - HRangeTrack( - range: model.range2, - view: Capsule().foregroundColor(.purple), - mask: Rectangle(), - configuration: .init( - lowerOffset: 32, - upperOffset: 48 - ) - ) - .background(Capsule().foregroundColor(Color.purple.opacity(0.25))) - .frame(height: 8), - lowerThumb: Circle().foregroundColor(.purple), - upperThumb: Circle().foregroundColor(.purple), - configuration: .init( - thumbSize: CGSize(width: 32, height: 32) - ) - ) - - HRangeSlider( - range: $model.range3, - track: - HRangeTrack( - range: model.range3, - view: LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .leading, endPoint: .trailing), - configuration: .init( - offsets: 32 - ) - ) - .background(LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .leading, endPoint: .trailing).opacity(0.25)) - .frame(height: 32) - .cornerRadius(16), - lowerThumb: HalfCapsule().foregroundColor(.white).shadow(radius: 3), - upperThumb: HalfCapsule().rotation(Angle(degrees: 180)).foregroundColor(.white).shadow(radius: 3), - configuration: .init( - thumbSize: CGSize(width: 32, height: 32) - ) - ) - - HRangeSlider( - range: $model.range4, - track: - HRangeTrack( - range: model.range4, - view: LinearGradient(gradient: Gradient(colors: [.purple, .blue, .purple]), startPoint: .leading, endPoint: .trailing), - mask: Rectangle(), - configuration: .init( - offsets: 16 - ) - ) - .mask(Ellipse()) - .background(Ellipse().foregroundColor(Color.secondary.opacity(0.25))) - .overlay(Ellipse().strokeBorder(Color.white.opacity(0.5), lineWidth: 1)) - .padding(.vertical, 8), - configuration: .init( - thumbSize: CGSize(width: 16, height: 64) - ) - ) - .frame(height: 64) - - HRangeSlider( - range: $model.range5, - in: 0.0...1.0, - step: 0.01, - track: - HRangeTrack( - range: model.range5, - view: LinearGradient(gradient: Gradient(colors: [.yellow, .orange, .red]), startPoint: .leading, endPoint: .trailing), - mask: Rectangle(), - configuration: .init( - offsets: 32 - ) - ) - .background(Color.secondary.opacity(0.25)) - .cornerRadius(16), - lowerThumb: HalfCapsule().foregroundColor(.white).shadow(radius: 3), - upperThumb: HalfCapsule().rotation(Angle(degrees: 180)).foregroundColor(.white).shadow(radius: 3), - configuration: .init( - thumbSize: CGSize(width: 32, height: 64) - ) - - ) - .frame(height: 64) - - HRangeSlider( - range: $model.range6, - track: HRangeTrack( - range: model.range6, - view: - ZStack { - LinearGradient(gradient: Gradient(colors: [.blue, .red]), startPoint: .leading, endPoint: .trailing) - VStack { - Text("Any View") - .font(.largeTitle) - .foregroundColor(Color.white) - Text("Place any view here and it will be masked to a selected value range") - .font(.title) - .foregroundColor(Color.white.opacity(0.5)) - } - }, - mask: RoundedRectangle(cornerRadius: 10), - configuration: .init( - offsets: 8 - ) - ) - .background(Color.secondary.opacity(0.25)), - configuration: .init( - thumbSize: CGSize(width: 8, height: 64) - ) - ) - .cornerRadius(8) - .frame(height: 128) - } - - } - .padding() - .navigationBarTitle("Horizontal Sliders") - } -} - - -struct HorizontalSliderExamplesView_Previews: PreviewProvider { - static var previews: some View { - HorizontalSliderExamplesView().environmentObject(Model.preview) - } -} diff --git a/Demo/SwiftUIExtensionsDemo iOS/Sliders/PointSliderExamplesView.swift b/Demo/SwiftUIExtensionsDemo iOS/Sliders/PointSliderExamplesView.swift deleted file mode 100644 index ebb6fb6..0000000 --- a/Demo/SwiftUIExtensionsDemo iOS/Sliders/PointSliderExamplesView.swift +++ /dev/null @@ -1,110 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct PointSliderExamplesView: View { - @EnvironmentObject var model: Model - - var body: some View { - ScrollView { - Group { - XYSlider( - x: $model.pointX1, - y: $model.pointY1, - track: - ZStack { - LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .leading, endPoint: .trailing) - LinearGradient(gradient: Gradient(colors: [.white, .clear]), startPoint: .bottom, endPoint: .top).blendMode(.hardLight) - }, - thumb: - Circle() - .foregroundColor(.white) - .shadow(radius: 3), - configuration: .init( - options: .interactiveTrack, - thumbSize: CGSize(width: 48, height: 48) - ) - ) - .overlay( - RoundedRectangle(cornerRadius: 24) - .strokeBorder(lineWidth: 4) - .foregroundColor(Color.white) - ) - .cornerRadius(24) - .frame(height: 256) - .shadow(radius: 3) - .padding() - - HStack { - XYSlider( - x: $model.pointX2, - y: $model.pointY2, - track: - RoundedRectangle(cornerRadius: 24) - .foregroundColor( - Color(hue: 0.67, saturation: model.pointY2, brightness: 1.0) - ), - thumb: - ZStack { - Capsule().frame(width: 12).foregroundColor(.white) - Capsule().frame(height: 12).foregroundColor(.white) - } - .compositingGroup() - .rotationEffect(Angle(radians: model.pointX2 * 10)) - .shadow(radius: 3), - configuration: .init( - options: .interactiveTrack, - thumbSize: CGSize(width: 48, height: 48) - ) - ) - .frame(height: 256) - .shadow(radius: 3) - .padding() - - XYSlider( - x: $model.pointX3, - y: $model.pointY3, - track: - ZStack { - LinearGradient(gradient: Gradient(colors: [.blue, .red]), startPoint: .leading, endPoint: .trailing) - VStack { - Text("Any View") - .font(.largeTitle) - .foregroundColor(Color.white) - Text("Place any view here") - .font(.title) - .foregroundColor(Color.white.opacity(0.5)) - } - } - .cornerRadius(24), - thumb: - Capsule() - .foregroundColor(.white) - .shadow(radius: 3), - configuration: .init( - options: .interactiveTrack, - thumbSize: CGSize(width: 96, height: 48) - ) - ) - .frame(height: 256) - .shadow(radius: 3) - .padding() - } - - XYSlider(x: $model.pointX4, y: $model.pointY4) - .frame(height: 256) - .padding() - - } - - } - .padding() - .navigationBarTitle("Point Sliders") - } -} - - -struct PointSliderExamplesView_Previews: PreviewProvider { - static var previews: some View { - PointSliderExamplesView().environmentObject(Model.preview) - } -} diff --git a/Demo/SwiftUIExtensionsDemo iOS/Sliders/VerticalSliderExamplesView.swift b/Demo/SwiftUIExtensionsDemo iOS/Sliders/VerticalSliderExamplesView.swift deleted file mode 100644 index 72a9cd9..0000000 --- a/Demo/SwiftUIExtensionsDemo iOS/Sliders/VerticalSliderExamplesView.swift +++ /dev/null @@ -1,189 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct VerticalSliderExamplesView: View { - @EnvironmentObject var model: Model - - var body: some View { - ScrollView(.horizontal) { - HStack { - Group { - VSlider(value: $model.value1) - - VSlider(value: $model.value2, - configuration: .init( - thumbSize: CGSize(width: 16, height: 32) - ) - ) - - VSlider(value: $model.value3, track: - LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .bottom, endPoint: .top) - .frame(width: 8) - .cornerRadius(4) - ) - - VSlider( - value: $model.value4, - track: - VTrack( - value: model.value4, - view: Rectangle() - .foregroundColor(.green) - .frame(width: 8), - configuration: .init( - offsets: 8 - ) - ) - .background(Color.white) - .frame(width: 8) - .cornerRadius(3) - .overlay( - Capsule().strokeBorder(Color.white.opacity(0.5), lineWidth: 1) - ) - .animation( - .spring(response: 0.7, dampingFraction: 0.4) - ), - configuration: .init( - thumbSize: CGSize(width: 16, height: 16) - ) - ) - - VSlider( - value: $model.value5, - track: - LinearGradient(gradient: Gradient(colors: [.purple, .blue, .purple]), startPoint: .bottom, endPoint: .top) - .frame(width: 6) - .cornerRadius(3), - configuration: .init( - thumbSize: CGSize(width: 16, height: 48) - ) - ) - - VSlider( - value: $model.value6, - track: - ZStack { - VTrack( - value: model.value6, - view: Rectangle().foregroundColor(.white).opacity(0.3), - mask: Rectangle() - ) - - VTrack( - value: model.value6, - view: LinearGradient(gradient: Gradient(colors: [.purple, .blue, .purple]), startPoint: .leading, endPoint: .trailing).opacity(0.7), - mask: Rectangle() - ) - .overlay( - Capsule().strokeBorder(Color.white.opacity(0.5), lineWidth: 2) - ) - .animation(.easeInOut(duration: 1.0)) - } - .background(Capsule().foregroundColor(Color.secondary.opacity(0.25))) - .frame(width: 32) - .cornerRadius(16), - thumb: EmptyView(), - configuration: .init( - options: .interactiveTrack, - thumbSize: .zero - ) - ) - } - - Group { - VRangeSlider(range: $model.range1) - - VRangeSlider( - range: $model.range2, - track: - VRangeTrack( - range: model.range2, - view: Capsule().foregroundColor(.purple), - mask: Rectangle(), - configuration: .init( - lowerOffset: 32, - upperOffset: 48 - ) - ) - .background(Capsule().foregroundColor(Color.purple.opacity(0.25))) - .frame(width: 8), - lowerThumb: Circle().foregroundColor(.purple), - upperThumb: Circle().foregroundColor(.purple), - configuration: .init( - lowerThumbSize: CGSize(width: 32, height: 32), - upperThumbSize: CGSize(width: 48, height: 48) - ) - ) - - VRangeSlider( - range: $model.range3, - track: VRangeTrack( - range: model.range3, - value: LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .bottom, endPoint: .top), - configuration: .init( - offsets: 16 - ) - ) - .background(LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .bottom, endPoint: .top).opacity(0.25)) - .frame(width: 8) - .cornerRadius(4), - configuration: .init( - thumbSize: CGSize(width: 32, height: 16) - ) - ) - - VRangeSlider( - range: $model.range4, - track: - VRangeTrack( - range: model.range4, - view: LinearGradient(gradient: Gradient(colors: [.purple, .blue, .purple]), startPoint: .bottom, endPoint: .top), - mask: Rectangle(), - configuration: .init( - offsets: 16 - ) - ) - .mask(Ellipse()) - .background(Ellipse().foregroundColor(Color.secondary.opacity(0.25))) - .overlay(Ellipse().strokeBorder(Color.white.opacity(0.5), lineWidth: 1)) - .padding(.horizontal, 8), - configuration: .init( - thumbSize: CGSize(width: 64, height: 16) - ) - ) - .frame(width: 64) - - VRangeSlider( - range: $model.range5, - track: - VRangeTrack( - range: model.range5, - view: LinearGradient(gradient: Gradient(colors: [.yellow, .orange, .red]), startPoint: .bottom, endPoint: .top), - mask: Rectangle(), - configuration: .init( - offsets: 32 - ) - ) - .background(Color.secondary.opacity(0.25)) - .cornerRadius(16), - lowerThumb: Capsule().foregroundColor(.white).shadow(radius: 3), - upperThumb: Capsule().foregroundColor(.white).shadow(radius: 3), - configuration: .init( - thumbSize: CGSize(width: 64, height: 32) - ) - ) - .frame(width: 64) - } - } - - } - .padding() - .navigationBarTitle("Vertical Sliders") - } -} - -struct VerticalSliderExamplesView_Previews: PreviewProvider { - static var previews: some View { - VerticalSliderExamplesView().environmentObject(Model.preview) - } -} diff --git a/Demo/SwiftUIExtensionsDemo macOS/ContentView.swift b/Demo/SwiftUIExtensionsDemo macOS/ContentView.swift deleted file mode 100644 index bcc640a..0000000 --- a/Demo/SwiftUIExtensionsDemo macOS/ContentView.swift +++ /dev/null @@ -1,68 +0,0 @@ -import SwiftUI - -struct ContentView: View { - var body: some View { - NavigationView { - List { - Section(header: Text("Layouts")) { - NavigationLink(destination: ModularGridView()) { - Text("Modular Grid") - } - - NavigationLink(destination: StaggeredGridView()) { - Text("Staggered Grid") - } - } - - Section(header: Text("Data Visualization")) { - NavigationLink(destination: ChartsView()) { - Text("Charts") - } - } - - Section(header: Text("Sliders")) { - NavigationLink(destination: HorizontalSliderExamplesView()) { - Text("Horizontal") - } - - NavigationLink(destination: VerticalSliderExamplesView()) { - Text("Vertical") - } - - NavigationLink(destination: PointSliderExamplesView()) { - Text("Point") - } - } - - Section(header: Text("Shapes")) { - NavigationLink(destination: RegularPolygonsView()) { - Text("Regular Polygons") - } - - NavigationLink(destination: LinesView()) { - Text("Lines") - } - - NavigationLink(destination: PatternsView()) { - Text("Patterns") - } - } - } - .frame(minWidth: 200, maxWidth: 300) - .listStyle(SidebarListStyle()) - - } - .navigationViewStyle( - DoubleColumnNavigationViewStyle() - ) - .frame(maxWidth: .infinity, maxHeight: .infinity) - } -} - - -struct ContentView_Previews: PreviewProvider { - static var previews: some View { - ContentView() - } -} - diff --git a/Demo/SwiftUIExtensionsDemo macOS/DataVisualization/ChartsView.swift b/Demo/SwiftUIExtensionsDemo macOS/DataVisualization/ChartsView.swift deleted file mode 100644 index e278841..0000000 --- a/Demo/SwiftUIExtensionsDemo macOS/DataVisualization/ChartsView.swift +++ /dev/null @@ -1,156 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct ChartsView: View { - @State var data1: [CGFloat] = (2010...2020).map { _ in .random(in: 0.1...1.0) } - @State var data2: [CGFloat] = (0..<50).map { _ in .random(in: 0.1...1.0) } - @State var data3: [CGFloat] = (0..<100).map { _ in .random(in: 0.1...1.0) } - - @State var data4: [CGFloat] = (0..<100).map { _ in .random(in: 0.4...1.0) } - @State var data5: [CGFloat] = (0..<100).map { _ in .random(in: 0.1...0.3) } - @State var data6: [CGFloat] = (0..<100).map { _ in .random(in: 0.3...0.4) } - - @State var matrixData1: [[CGFloat]] = (0..<20).map { _ in (0..<3).map { _ in CGFloat.random(in: 0.00...0.33) } } - - var body: some View { - ScrollView { - HStack { - VStack { - AxisLabels(.vertical, data: 1...10, id: \.self) { - Text("\(110 - $0 * 10)") - .fontWeight(.bold) - .font(Font.system(size: 8)) - .foregroundColor(.secondary) - } - .frame(width: 20) - - Rectangle().foregroundColor(.clear).frame(width: 20, height: 20) - } - - - VStack { - Chart(data: data1) - .chartStyle( - LineChartStyle(.quadCurve, lineColor: .blue, lineWidth: 5) - ) - .padding() - .background( - GridPattern(horizontalLines: 10 + 1, verticalLines: data1.count + 1) - .inset(by: 1) - .stroke(Color.gray.opacity(0.1), style: .init(lineWidth: 2, lineCap: .round)) - ) - .frame(height: 300) - - - AxisLabels(.horizontal, data: 2010...2020, id: \.self) { - Text("\($0)".replacingOccurrences(of: ",", with: "")) - .fontWeight(.bold) - .font(Font.system(size: 8)) - .foregroundColor(.secondary) - } - .frame(height: 20) - .padding(.horizontal, 1) - } - .layoutPriority(1) - } - - .padding() - - - Chart(data: data2) - .chartStyle( - AreaChartStyle(.quadCurve, fill: - LinearGradient(gradient: .init(colors: [Color.red.opacity(0.8), Color.red.opacity(0.2)]), startPoint: .top, endPoint: .bottom) - ) - ) - .background( - Color.gray.opacity(0.1) - .overlay( - GridPattern(horizontalLines: data2.count) - .inset(by: 1) - .stroke(Color.red.opacity(0.2), style: .init(lineWidth: 1, lineCap: .round)) - ) - ) - .cornerRadius(16) - .frame(height: 300) - .padding() - - Chart(data: data3) - .chartStyle( - ColumnChartStyle(column: Capsule().foregroundColor(.green), spacing: 2) - ) - .padding() - .background(Color.gray.opacity(0.1)) - .cornerRadius(16) - .frame(height: 300) - .padding() - - Chart(data: matrixData1) - .chartStyle( - StackedColumnChartStyle(spacing: 2, colors: [.yellow, .orange, .red]) - ) - .background( - Color.gray.opacity(0.1) - .overlay( - GridPattern(horizontalLines: data2.count) - .inset(by: 1) - .stroke(Color.red.opacity(0.2), style: .init(lineWidth: 1, lineCap: .round)) - ) - ) - .cornerRadius(16) - .frame(height: 300) - .padding() - - Chart(data: matrixData1) - .chartStyle( - StackedAreaChartStyle(.quadCurve, colors: [.yellow, .orange, .red]) - ) - .background( - Color.gray.opacity(0.1) - .overlay( - GridPattern(horizontalLines: data2.count) - .inset(by: 1) - .stroke(Color.red.opacity(0.2), style: .init(lineWidth: 1, lineCap: .round)) - ) - ) - .cornerRadius(16) - .frame(height: 300) - .padding() - - ZStack { - Chart(data: data4) - .chartStyle( - LineChartStyle(.quadCurve, lineColor: .purple, lineWidth: 3) - ) - - Chart(data: data4) - .chartStyle( - AreaChartStyle(.quadCurve, fill: - LinearGradient(gradient: .init(colors: [Color.purple.opacity(0.8), Color.purple.opacity(0.2)]), startPoint: .top, endPoint: .bottom) - ) - ) - - Chart(data: data5) - .chartStyle( - ColumnChartStyle(column: Color.white.opacity(0.5), spacing: 2) - ) - - Chart(data: data6) - .chartStyle( - LineChartStyle(.line, lineColor: Color.white.opacity(0.2), lineWidth: 3) - ) - } - .padding() - .background(Color.gray.opacity(0.1)) - .cornerRadius(16) - .frame(height: 300) - .padding() - } - } -} - -struct ChartsView_Previews: PreviewProvider { - static var previews: some View { - ChartsView() - } -} diff --git a/Demo/SwiftUIExtensionsDemo macOS/Shapes/LinesView.swift b/Demo/SwiftUIExtensionsDemo macOS/Shapes/LinesView.swift deleted file mode 100644 index 85c5113..0000000 --- a/Demo/SwiftUIExtensionsDemo macOS/Shapes/LinesView.swift +++ /dev/null @@ -1,30 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct LinesView: View { - var body: some View { - ScrollView { - Line(unitPoints: [ - UnitPoint(x: 0.0, y: 0.1), - UnitPoint(x: 0.5, y: 0.9), - UnitPoint(x: 1.0, y: 0.1) - ]) - .stroke(Color.red, style: .init(lineWidth: 4, lineCap: .round)) - .frame(height: 200) - .padding() - - QuadCurve(unitData: [ - 0.1, 0.9, 0.1 - ]) - .stroke(Color.blue, style: .init(lineWidth: 2, lineCap: .round)) - .frame(height: 200) - .padding() - } - } -} - -struct LinesView_Previews: PreviewProvider { - static var previews: some View { - LinesView() - } -} diff --git a/Demo/SwiftUIExtensionsDemo macOS/Shapes/PatternsView.swift b/Demo/SwiftUIExtensionsDemo macOS/Shapes/PatternsView.swift deleted file mode 100644 index 2b98699..0000000 --- a/Demo/SwiftUIExtensionsDemo macOS/Shapes/PatternsView.swift +++ /dev/null @@ -1,38 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct PatternsView: View { - var body: some View { - ScrollView { - GridPattern(horizontalLines: 20, verticalLines: 40) - .stroke(Color.white.opacity(0.3), style: .init(lineWidth: 1, lineCap: .round)) - .frame(height: 200) - .background(Color.blue) - .padding() - - - LinearGradient(gradient: Gradient(colors: [.orange, .red, .blue, .purple]), startPoint: .topLeading, endPoint: .bottomTrailing) - .frame(height: 200) - .clipShape( - GridPattern(horizontalLines: 25, verticalLines: 25).inset(by: 1).stroke(lineWidth: 1) - ) - .padding() - - LinearGradient(gradient: Gradient(colors: [.purple, .red, .orange]), startPoint: .topLeading, endPoint: .bottomTrailing) - .frame(height: 200) - .clipShape( - GridPattern(horizontalLines: 10) - .inset(by: 2) - .stroke(style: .init(lineWidth: 4, lineCap: .round, lineJoin: .round, miterLimit: 2, dash: [10], dashPhase: 0)) - ) - .padding() - - } - } -} - -struct PatternsView_Previews: PreviewProvider { - static var previews: some View { - PatternsView() - } -} diff --git a/Demo/SwiftUIExtensionsDemo macOS/Shapes/RegularPolygonsView.swift b/Demo/SwiftUIExtensionsDemo macOS/Shapes/RegularPolygonsView.swift deleted file mode 100644 index 59ac2c7..0000000 --- a/Demo/SwiftUIExtensionsDemo macOS/Shapes/RegularPolygonsView.swift +++ /dev/null @@ -1,42 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct RegularPolygonsView: View { - var body: some View { - ScrollView { - HStack(alignment: .center, spacing: 16) { - RegularPolygon(sides: 4) - .strokeBorder(lineWidth: 20) - .foregroundColor(.blue) - - Pentagon() - .strokeBorder(lineWidth: 20) - .foregroundColor(.yellow) - - Hexagon() - .foregroundColor(.orange) - - Heptagon() - .foregroundColor(.blue) - - Octagon() - .foregroundColor(.pink) - - Nonagon() - .foregroundColor(.red) - - Decagon() - .foregroundColor(.green) - } - .frame(height: 100) - .padding() - } - - } -} - -struct ShapesView_Previews: PreviewProvider { - static var previews: some View { - RegularPolygonsView() - } -} diff --git a/Demo/SwiftUIExtensionsDemo macOS/Sliders/HorizontalSliderExamplesView.swift b/Demo/SwiftUIExtensionsDemo macOS/Sliders/HorizontalSliderExamplesView.swift deleted file mode 100644 index a34f927..0000000 --- a/Demo/SwiftUIExtensionsDemo macOS/Sliders/HorizontalSliderExamplesView.swift +++ /dev/null @@ -1,234 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct HorizontalSliderExamplesView: View { - @EnvironmentObject var model: Model - - var body: some View { - ScrollView { - Group { - - HSlider(value: $model.value1) - -// ValueSlider(value: $model.value1) -// .background(Color.yellow) -// .valueSliderStyle( -// HorizontalValueSliderStyle( -// track: { HorizontalValueTrack(value: $0) }, -// thumbSize: CGSize(width: 32, height: 32), -// options: .interactiveTrack -// ) -// ) - - - HSlider(value: $model.value2, - configuration: .init( - thumbSize: CGSize(width: 16, height: 32) - ) - ) - - HSlider(value: $model.value3, track: - LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .leading, endPoint: .trailing) - .frame(height: 8) - .cornerRadius(4) - ) - - HSlider( - value: $model.value4, - track: - HTrack( - value: model.value4, - view: Rectangle() - .foregroundColor(.green) - .frame(height: 8), - configuration: .init( - offsets: 8 - ) - ) - .background(Color.white) - .frame(height: 8) - .cornerRadius(3) - .overlay( - Capsule().strokeBorder(Color.white.opacity(0.5), lineWidth: 1) - ) - .animation( - .spring(response: 0.7, dampingFraction: 0.4) - ), - configuration: .init( - thumbSize: CGSize(width: 16, height: 16) - ) - - ) - - HSlider( - value: $model.value5, - track: - LinearGradient(gradient: Gradient(colors: [.purple, .blue, .purple]), startPoint: .leading, endPoint: .trailing) - .frame(height: 6) - .cornerRadius(3), - configuration: .init( - thumbSize: CGSize(width: 48, height: 16) - ) - ) - - HSlider( - value: $model.value6, - track: - ZStack { - HTrack( - value: model.value6, - view: Rectangle().foregroundColor(.white).opacity(0.2), - mask: Rectangle() - ) - - HTrack( - value: model.value6, - view: LinearGradient(gradient: Gradient(colors: [.purple, .blue, .purple]), startPoint: .leading, endPoint: .trailing).opacity(0.8), - mask: Rectangle() - ) - .overlay( - Capsule().strokeBorder(Color.white.opacity(0.5), lineWidth: 2) - ) - .animation(.easeInOut(duration: 1.0)) - } - .background(Capsule().foregroundColor(Color.secondary.opacity(0.25))) - .frame(height: 32) - .cornerRadius(16), - thumb: EmptyView(), - configuration: .init( - options: .interactiveTrack, - thumbSize: .zero - ) - ) - } - - Group { - HorizontalRangeSlider(range: $model.range1) - - HRangeSlider( - range: $model.range2, - track: - HRangeTrack( - range: model.range2, - view: Capsule().foregroundColor(.purple), - mask: Rectangle(), - configuration: .init( - lowerOffset: 32, - upperOffset: 48 - ) - ) - .background(Capsule().foregroundColor(Color.purple.opacity(0.25))) - .frame(height: 8), - lowerThumb: Circle().foregroundColor(.purple), - upperThumb: Circle().foregroundColor(.purple), - configuration: .init( - thumbSize: CGSize(width: 32, height: 32) - ) - ) - - HRangeSlider( - range: $model.range3, - track: - HRangeTrack( - range: model.range3, - view: LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .leading, endPoint: .trailing), - configuration: .init( - offsets: 32 - ) - ) - .background(LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .leading, endPoint: .trailing).opacity(0.25)) - .frame(height: 32) - .cornerRadius(16), - lowerThumb: HalfCapsule().foregroundColor(.white).shadow(radius: 3), - upperThumb: HalfCapsule().rotation(Angle(degrees: 180)).foregroundColor(.white).shadow(radius: 3), - configuration: .init( - thumbSize: CGSize(width: 32, height: 32) - ) - ) - - HRangeSlider( - range: $model.range4, - track: - HRangeTrack( - range: model.range4, - view: LinearGradient(gradient: Gradient(colors: [.purple, .blue, .purple]), startPoint: .leading, endPoint: .trailing), - mask: Rectangle(), - configuration: .init( - offsets: 16 - ) - ) - .mask(Ellipse()) - .background(Ellipse().foregroundColor(Color.secondary.opacity(0.25))) - .overlay(Ellipse().strokeBorder(Color.white.opacity(0.5), lineWidth: 1)) - .padding(.vertical, 8), - configuration: .init( - thumbSize: CGSize(width: 16, height: 64) - ) - ) - .frame(height: 64) - - HRangeSlider( - range: $model.range5, - in: 0.0...1.0, - step: 0.01, - track: - HRangeTrack( - range: model.range5, - view: LinearGradient(gradient: Gradient(colors: [.yellow, .orange, .red]), startPoint: .leading, endPoint: .trailing), - mask: Rectangle(), - configuration: .init( - offsets: 32 - ) - ) - .background(Color.secondary.opacity(0.25)) - .cornerRadius(16), - lowerThumb: HalfCapsule().foregroundColor(.white).shadow(radius: 3), - upperThumb: HalfCapsule().rotation(Angle(degrees: 180)).foregroundColor(.white).shadow(radius: 3), - configuration: .init( - thumbSize: CGSize(width: 32, height: 64) - ) - - ) - .frame(height: 64) - - HRangeSlider( - range: $model.range6, - track: HRangeTrack( - range: model.range6, - view: - ZStack { - LinearGradient(gradient: Gradient(colors: [.blue, .red]), startPoint: .leading, endPoint: .trailing) - VStack { - Text("Any View") - .font(.largeTitle) - .foregroundColor(Color.white) - Text("Place any view here and it will be masked to a selected value range") - .font(.title) - .foregroundColor(Color.white.opacity(0.5)) - } - }, - mask: RoundedRectangle(cornerRadius: 10), - configuration: .init( - offsets: 8 - ) - ) - .background(Color.secondary.opacity(0.25)), - configuration: .init( - thumbSize: CGSize(width: 8, height: 64) - ) - ) - .cornerRadius(8) - .frame(height: 128) - } - - } - .padding() - } -} - - -struct HorizontalSliderExamplesView_Previews: PreviewProvider { - static var previews: some View { - HorizontalSliderExamplesView().environmentObject(Model.preview) - } -} diff --git a/Demo/SwiftUIExtensionsDemo macOS/Sliders/PointSliderExamplesView.swift b/Demo/SwiftUIExtensionsDemo macOS/Sliders/PointSliderExamplesView.swift deleted file mode 100644 index 270e1e0..0000000 --- a/Demo/SwiftUIExtensionsDemo macOS/Sliders/PointSliderExamplesView.swift +++ /dev/null @@ -1,109 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct PointSliderExamplesView: View { - @EnvironmentObject var model: Model - - var body: some View { - ScrollView { - Group { - XYSlider( - x: $model.pointX1, - y: $model.pointY1, - track: - ZStack { - LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .leading, endPoint: .trailing) - LinearGradient(gradient: Gradient(colors: [.white, .clear]), startPoint: .bottom, endPoint: .top).blendMode(.hardLight) - }, - thumb: - Circle() - .foregroundColor(.white) - .shadow(radius: 3), - configuration: .init( - options: .interactiveTrack, - thumbSize: CGSize(width: 48, height: 48) - ) - ) - .overlay( - RoundedRectangle(cornerRadius: 24) - .strokeBorder(lineWidth: 4) - .foregroundColor(Color.white) - ) - .cornerRadius(24) - .frame(height: 256) - .shadow(radius: 3) - .padding() - - HStack { - XYSlider( - x: $model.pointX2, - y: $model.pointY2, - track: - RoundedRectangle(cornerRadius: 24) - .foregroundColor( - Color(hue: 0.67, saturation: model.pointY2, brightness: 1.0) - ), - thumb: - ZStack { - Capsule().frame(width: 12).foregroundColor(.white) - Capsule().frame(height: 12).foregroundColor(.white) - } - .compositingGroup() - .rotationEffect(Angle(radians: model.pointX2 * 10)) - .shadow(radius: 3), - configuration: .init( - options: .interactiveTrack, - thumbSize: CGSize(width: 48, height: 48) - ) - ) - .frame(height: 256) - .shadow(radius: 3) - .padding() - - XYSlider( - x: $model.pointX3, - y: $model.pointY3, - track: - ZStack { - LinearGradient(gradient: Gradient(colors: [.blue, .red]), startPoint: .leading, endPoint: .trailing) - VStack { - Text("Any View") - .font(.largeTitle) - .foregroundColor(Color.white) - Text("Place any view here") - .font(.title) - .foregroundColor(Color.white.opacity(0.5)) - } - } - .cornerRadius(24), - thumb: - Capsule() - .foregroundColor(.white) - .shadow(radius: 3), - configuration: .init( - options: .interactiveTrack, - thumbSize: CGSize(width: 96, height: 48) - ) - ) - .frame(height: 256) - .shadow(radius: 3) - .padding() - } - - XYSlider(x: $model.pointX4, y: $model.pointY4) - .frame(height: 256) - .padding() - - } - - } - .padding() - } -} - - -struct PointSliderExamplesView_Previews: PreviewProvider { - static var previews: some View { - PointSliderExamplesView().environmentObject(Model.preview) - } -} diff --git a/Demo/SwiftUIExtensionsDemo macOS/Sliders/VerticalSliderExamplesView.swift b/Demo/SwiftUIExtensionsDemo macOS/Sliders/VerticalSliderExamplesView.swift deleted file mode 100644 index e9be634..0000000 --- a/Demo/SwiftUIExtensionsDemo macOS/Sliders/VerticalSliderExamplesView.swift +++ /dev/null @@ -1,188 +0,0 @@ -import SwiftUI -import SwiftUIExtensions - -struct VerticalSliderExamplesView: View { - @EnvironmentObject var model: Model - - var body: some View { - ScrollView(.horizontal) { - HStack { - Group { - VSlider(value: $model.value1) - - VSlider(value: $model.value2, - configuration: .init( - thumbSize: CGSize(width: 16, height: 32) - ) - ) - - VSlider(value: $model.value3, track: - LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .bottom, endPoint: .top) - .frame(width: 8) - .cornerRadius(4) - ) - - VSlider( - value: $model.value4, - track: - VTrack( - value: model.value4, - view: Rectangle() - .foregroundColor(.green) - .frame(width: 8), - configuration: .init( - offsets: 8 - ) - ) - .background(Color.white) - .frame(width: 8) - .cornerRadius(3) - .overlay( - Capsule().strokeBorder(Color.white.opacity(0.5), lineWidth: 1) - ) - .animation( - .spring(response: 0.7, dampingFraction: 0.4) - ), - configuration: .init( - thumbSize: CGSize(width: 16, height: 16) - ) - ) - - VSlider( - value: $model.value5, - track: - LinearGradient(gradient: Gradient(colors: [.purple, .blue, .purple]), startPoint: .bottom, endPoint: .top) - .frame(width: 6) - .cornerRadius(3), - configuration: .init( - thumbSize: CGSize(width: 16, height: 48) - ) - ) - - VSlider( - value: $model.value6, - track: - ZStack { - VTrack( - value: model.value6, - view: Rectangle().foregroundColor(.white).opacity(0.3), - mask: Rectangle() - ) - - VTrack( - value: model.value6, - view: LinearGradient(gradient: Gradient(colors: [.purple, .blue, .purple]), startPoint: .leading, endPoint: .trailing).opacity(0.7), - mask: Rectangle() - ) - .overlay( - Capsule().strokeBorder(Color.white.opacity(0.5), lineWidth: 2) - ) - .animation(.easeInOut(duration: 1.0)) - } - .background(Capsule().foregroundColor(Color.secondary.opacity(0.25))) - .frame(width: 32) - .cornerRadius(16), - thumb: EmptyView(), - configuration: .init( - options: .interactiveTrack, - thumbSize: .zero - ) - ) - } - - Group { - VRangeSlider(range: $model.range1) - - VRangeSlider( - range: $model.range2, - track: - VRangeTrack( - range: model.range2, - view: Capsule().foregroundColor(.purple), - mask: Rectangle(), - configuration: .init( - lowerOffset: 32, - upperOffset: 48 - ) - ) - .background(Capsule().foregroundColor(Color.purple.opacity(0.25))) - .frame(width: 8), - lowerThumb: Circle().foregroundColor(.purple), - upperThumb: Circle().foregroundColor(.purple), - configuration: .init( - lowerThumbSize: CGSize(width: 32, height: 32), - upperThumbSize: CGSize(width: 48, height: 48) - ) - ) - - VRangeSlider( - range: $model.range3, - track: VRangeTrack( - range: model.range3, - value: LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .bottom, endPoint: .top), - configuration: .init( - offsets: 16 - ) - ) - .background(LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .bottom, endPoint: .top).opacity(0.25)) - .frame(width: 8) - .cornerRadius(4), - configuration: .init( - thumbSize: CGSize(width: 32, height: 16) - ) - ) - - VRangeSlider( - range: $model.range4, - track: - VRangeTrack( - range: model.range4, - view: LinearGradient(gradient: Gradient(colors: [.purple, .blue, .purple]), startPoint: .bottom, endPoint: .top), - mask: Rectangle(), - configuration: .init( - offsets: 16 - ) - ) - .mask(Ellipse()) - .background(Ellipse().foregroundColor(Color.secondary.opacity(0.25))) - .overlay(Ellipse().strokeBorder(Color.white.opacity(0.5), lineWidth: 1)) - .padding(.horizontal, 8), - configuration: .init( - thumbSize: CGSize(width: 64, height: 16) - ) - ) - .frame(width: 64) - - VRangeSlider( - range: $model.range5, - track: - VRangeTrack( - range: model.range5, - view: LinearGradient(gradient: Gradient(colors: [.yellow, .orange, .red]), startPoint: .bottom, endPoint: .top), - mask: Rectangle(), - configuration: .init( - offsets: 32 - ) - ) - .background(Color.secondary.opacity(0.25)) - .cornerRadius(16), - lowerThumb: Capsule().foregroundColor(.white).shadow(radius: 3), - upperThumb: Capsule().foregroundColor(.white).shadow(radius: 3), - configuration: .init( - thumbSize: CGSize(width: 64, height: 32) - ) - ) - .frame(width: 64) - } - } - - } - .padding() - } -} - -struct VerticalSliderExamplesView_Previews: PreviewProvider { - static var previews: some View { - VerticalSliderExamplesView().environmentObject(Model.preview) - } -} diff --git a/Demo/SwiftUIExtensionsDemo.xcodeproj/project.pbxproj b/Demo/SwiftUIExtensionsDemo.xcodeproj/project.pbxproj deleted file mode 100644 index ec47667..0000000 --- a/Demo/SwiftUIExtensionsDemo.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1748 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 52; - objects = { - -/* Begin PBXBuildFile section */ - FA01CE5F23A3871200954D66 /* VerticalSliderExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA01CE5C23A3871100954D66 /* VerticalSliderExamplesView.swift */; }; - FA01CE6023A3871200954D66 /* PointSliderExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA01CE5D23A3871100954D66 /* PointSliderExamplesView.swift */; }; - FA01CE6123A3871200954D66 /* HorizontalSliderExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA01CE5E23A3871200954D66 /* HorizontalSliderExamplesView.swift */; }; - FA2C326E23A35EA0002DF6F7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA2C326D23A35EA0002DF6F7 /* AppDelegate.swift */; }; - FA2C327023A35EA0002DF6F7 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA2C326F23A35EA0002DF6F7 /* ContentView.swift */; }; - FA2C327223A35EA1002DF6F7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA2C327123A35EA1002DF6F7 /* Assets.xcassets */; }; - FA2C327523A35EA1002DF6F7 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA2C327423A35EA1002DF6F7 /* Preview Assets.xcassets */; }; - FA2C327823A35EA1002DF6F7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA2C327623A35EA1002DF6F7 /* LaunchScreen.storyboard */; }; - FA2C328123A35F58002DF6F7 /* StaggeredGridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA2C328023A35F58002DF6F7 /* StaggeredGridView.swift */; }; - FA2C328323A35F73002DF6F7 /* ModularGridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA2C328223A35F73002DF6F7 /* ModularGridView.swift */; }; - FA2C328623A35FE6002DF6F7 /* Color+Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C458239DE7330037BFE3 /* Color+Random.swift */; }; - FA2C328723A35FE6002DF6F7 /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C459239DE7330037BFE3 /* Item.swift */; }; - FA2C328823A35FE6002DF6F7 /* Card.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C45B239DE7330037BFE3 /* Card.swift */; }; - FA2C328923A35FE6002DF6F7 /* SharedAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA37C45A239DE7330037BFE3 /* SharedAssets.xcassets */; }; - FA2C329123A3704B002DF6F7 /* PatternsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA2C328E23A3704B002DF6F7 /* PatternsView.swift */; }; - FA2C329223A3704B002DF6F7 /* RegularPolygonsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA2C328F23A3704B002DF6F7 /* RegularPolygonsView.swift */; }; - FA2C329323A3704B002DF6F7 /* LinesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA2C329023A3704B002DF6F7 /* LinesView.swift */; }; - FA2C329823A3725A002DF6F7 /* PatternsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA2C329523A37259002DF6F7 /* PatternsView.swift */; }; - FA2C329923A3725A002DF6F7 /* LinesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA2C329623A37259002DF6F7 /* LinesView.swift */; }; - FA2C329A23A3725A002DF6F7 /* RegularPolygonsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA2C329723A37259002DF6F7 /* RegularPolygonsView.swift */; }; - FA2C329D23A37993002DF6F7 /* ChartsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA2C329C23A37993002DF6F7 /* ChartsView.swift */; }; - FA37C437239DE2560037BFE3 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C436239DE2560037BFE3 /* AppDelegate.swift */; }; - FA37C439239DE2560037BFE3 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C438239DE2560037BFE3 /* SceneDelegate.swift */; }; - FA37C43B239DE2560037BFE3 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C43A239DE2560037BFE3 /* ContentView.swift */; }; - FA37C43D239DE2570037BFE3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA37C43C239DE2570037BFE3 /* Assets.xcassets */; }; - FA37C440239DE2570037BFE3 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA37C43F239DE2570037BFE3 /* Preview Assets.xcassets */; }; - FA37C443239DE2570037BFE3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA37C441239DE2570037BFE3 /* LaunchScreen.storyboard */; }; - FA37C44F239DE6820037BFE3 /* ModularGridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C44A239DE6820037BFE3 /* ModularGridView.swift */; }; - FA37C450239DE6820037BFE3 /* ModularGridSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C44B239DE6820037BFE3 /* ModularGridSettingsView.swift */; }; - FA37C451239DE6820037BFE3 /* StaggeredGridSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C44D239DE6820037BFE3 /* StaggeredGridSettingsView.swift */; }; - FA37C452239DE6820037BFE3 /* StaggeredGridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C44E239DE6820037BFE3 /* StaggeredGridView.swift */; }; - FA37C455239DE6B60037BFE3 /* SwiftUIExtensions in Frameworks */ = {isa = PBXBuildFile; productRef = FA37C454239DE6B60037BFE3 /* SwiftUIExtensions */; }; - FA37C45C239DE7330037BFE3 /* Color+Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C458239DE7330037BFE3 /* Color+Random.swift */; }; - FA37C45D239DE7330037BFE3 /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C459239DE7330037BFE3 /* Item.swift */; }; - FA37C45E239DE7330037BFE3 /* SharedAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA37C45A239DE7330037BFE3 /* SharedAssets.xcassets */; }; - FA37C45F239DE7330037BFE3 /* Card.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C45B239DE7330037BFE3 /* Card.swift */; }; - FA37C467239DE9960037BFE3 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C466239DE9960037BFE3 /* AppDelegate.swift */; }; - FA37C469239DE9960037BFE3 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C468239DE9960037BFE3 /* ContentView.swift */; }; - FA37C46B239DE9990037BFE3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA37C46A239DE9990037BFE3 /* Assets.xcassets */; }; - FA37C46E239DE9990037BFE3 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA37C46D239DE9990037BFE3 /* Preview Assets.xcassets */; }; - FA37C471239DE9990037BFE3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA37C46F239DE9990037BFE3 /* Main.storyboard */; }; - FA37C478239DE9A50037BFE3 /* SwiftUIExtensions in Frameworks */ = {isa = PBXBuildFile; productRef = FA37C477239DE9A50037BFE3 /* SwiftUIExtensions */; }; - FA37C480239DEB200037BFE3 /* ModularGridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C47B239DEB200037BFE3 /* ModularGridView.swift */; }; - FA37C481239DEB200037BFE3 /* ModularGridSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C47C239DEB200037BFE3 /* ModularGridSettingsView.swift */; }; - FA37C482239DEB200037BFE3 /* StaggeredGridSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C47E239DEB200037BFE3 /* StaggeredGridSettingsView.swift */; }; - FA37C483239DEB200037BFE3 /* StaggeredGridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C47F239DEB200037BFE3 /* StaggeredGridView.swift */; }; - FA37C484239DEB2C0037BFE3 /* Color+Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C458239DE7330037BFE3 /* Color+Random.swift */; }; - FA37C485239DEB2C0037BFE3 /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C459239DE7330037BFE3 /* Item.swift */; }; - FA37C486239DEB2C0037BFE3 /* Card.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C45B239DE7330037BFE3 /* Card.swift */; }; - FA37C487239DEB2C0037BFE3 /* SharedAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA37C45A239DE7330037BFE3 /* SharedAssets.xcassets */; }; - FA4AB23423B96F61007B0422 /* SwiftUIExtensions in Frameworks */ = {isa = PBXBuildFile; productRef = FA4AB23323B96F61007B0422 /* SwiftUIExtensions */; }; - FA90447823B975620090B6DA /* Grid in Frameworks */ = {isa = PBXBuildFile; productRef = FA90447723B975620090B6DA /* Grid */; }; - FA90447A23B975CA0090B6DA /* Grid in Frameworks */ = {isa = PBXBuildFile; productRef = FA90447923B975CA0090B6DA /* Grid */; }; - FAB94A0823A37B7500EBEB8C /* ChartsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB94A0723A37B7500EBEB8C /* ChartsView.swift */; }; - FAB94A1323A384BA00EBEB8C /* HalfCapsule.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB94A1123A384B900EBEB8C /* HalfCapsule.swift */; }; - FAB94A1423A384BA00EBEB8C /* HalfCapsule.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB94A1123A384B900EBEB8C /* HalfCapsule.swift */; }; - FAB94A1523A384BA00EBEB8C /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB94A1223A384B900EBEB8C /* Model.swift */; }; - FAB94A1623A384BA00EBEB8C /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB94A1223A384B900EBEB8C /* Model.swift */; }; - FAB94A1B23A3850100EBEB8C /* VerticalSliderExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB94A1823A3850000EBEB8C /* VerticalSliderExamplesView.swift */; }; - FAB94A1C23A3850100EBEB8C /* HorizontalSliderExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB94A1923A3850000EBEB8C /* HorizontalSliderExamplesView.swift */; }; - FAB94A1D23A3850100EBEB8C /* PointSliderExamplesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAB94A1A23A3850000EBEB8C /* PointSliderExamplesView.swift */; }; - FAD4B55723A35A2400308E28 /* SwiftUIExtensionsDemo WatchKit App.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = FAD4B55623A35A2300308E28 /* SwiftUIExtensionsDemo WatchKit App.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - FAD4B55D23A35A2400308E28 /* Interface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FAD4B55B23A35A2400308E28 /* Interface.storyboard */; }; - FAD4B55F23A35A2800308E28 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FAD4B55E23A35A2800308E28 /* Assets.xcassets */; }; - FAD4B56623A35A2800308E28 /* SwiftUIExtensionsDemo WatchKit Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = FAD4B56523A35A2800308E28 /* SwiftUIExtensionsDemo WatchKit Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - FAD4B56B23A35A2800308E28 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD4B56A23A35A2800308E28 /* ContentView.swift */; }; - FAD4B56D23A35A2800308E28 /* HostingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD4B56C23A35A2800308E28 /* HostingController.swift */; }; - FAD4B56F23A35A2800308E28 /* ExtensionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD4B56E23A35A2800308E28 /* ExtensionDelegate.swift */; }; - FAD4B57123A35A2800308E28 /* NotificationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD4B57023A35A2800308E28 /* NotificationController.swift */; }; - FAD4B57323A35A2800308E28 /* NotificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD4B57223A35A2800308E28 /* NotificationView.swift */; }; - FAD4B57523A35A2900308E28 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FAD4B57423A35A2900308E28 /* Assets.xcassets */; }; - FAD4B57823A35A2900308E28 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FAD4B57723A35A2900308E28 /* Preview Assets.xcassets */; }; - FAD4B58C23A35C8300308E28 /* ModularGridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD4B58B23A35C8300308E28 /* ModularGridView.swift */; }; - FAD4B58E23A35C9500308E28 /* StaggeredGridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD4B58D23A35C9500308E28 /* StaggeredGridView.swift */; }; - FAD4B58F23A35CC400308E28 /* Color+Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C458239DE7330037BFE3 /* Color+Random.swift */; }; - FAD4B59023A35CC400308E28 /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C459239DE7330037BFE3 /* Item.swift */; }; - FAD4B59123A35CCC00308E28 /* Card.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA37C45B239DE7330037BFE3 /* Card.swift */; }; - FAD4B59223A35CCC00308E28 /* SharedAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA37C45A239DE7330037BFE3 /* SharedAssets.xcassets */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - FAD4B55823A35A2400308E28 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = FA800E29239DE09A005D2211 /* Project object */; - proxyType = 1; - remoteGlobalIDString = FAD4B55523A35A2300308E28; - remoteInfo = "SwiftUIExtensionsDemo WatchKit App"; - }; - FAD4B56723A35A2800308E28 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = FA800E29239DE09A005D2211 /* Project object */; - proxyType = 1; - remoteGlobalIDString = FAD4B56423A35A2800308E28; - remoteInfo = "SwiftUIExtensionsDemo WatchKit Extension"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - FAD4B57E23A35A2900308E28 /* Embed App Extensions */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 13; - files = ( - FAD4B56623A35A2800308E28 /* SwiftUIExtensionsDemo WatchKit Extension.appex in Embed App Extensions */, - ); - name = "Embed App Extensions"; - runOnlyForDeploymentPostprocessing = 0; - }; - FAD4B58223A35A2900308E28 /* Embed Watch Content */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "$(CONTENTS_FOLDER_PATH)/Watch"; - dstSubfolderSpec = 16; - files = ( - FAD4B55723A35A2400308E28 /* SwiftUIExtensionsDemo WatchKit App.app in Embed Watch Content */, - ); - name = "Embed Watch Content"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - FA01CE5C23A3871100954D66 /* VerticalSliderExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerticalSliderExamplesView.swift; sourceTree = ""; }; - FA01CE5D23A3871100954D66 /* PointSliderExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PointSliderExamplesView.swift; sourceTree = ""; }; - FA01CE5E23A3871200954D66 /* HorizontalSliderExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HorizontalSliderExamplesView.swift; sourceTree = ""; }; - FA2C326B23A35EA0002DF6F7 /* SwiftUIExtensionsDemo tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "SwiftUIExtensionsDemo tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - FA2C326D23A35EA0002DF6F7 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - FA2C326F23A35EA0002DF6F7 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - FA2C327123A35EA1002DF6F7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - FA2C327423A35EA1002DF6F7 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - FA2C327723A35EA1002DF6F7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - FA2C327923A35EA1002DF6F7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - FA2C328023A35F58002DF6F7 /* StaggeredGridView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaggeredGridView.swift; sourceTree = ""; }; - FA2C328223A35F73002DF6F7 /* ModularGridView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModularGridView.swift; sourceTree = ""; }; - FA2C328E23A3704B002DF6F7 /* PatternsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PatternsView.swift; sourceTree = ""; }; - FA2C328F23A3704B002DF6F7 /* RegularPolygonsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegularPolygonsView.swift; sourceTree = ""; }; - FA2C329023A3704B002DF6F7 /* LinesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LinesView.swift; sourceTree = ""; }; - FA2C329523A37259002DF6F7 /* PatternsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PatternsView.swift; sourceTree = ""; }; - FA2C329623A37259002DF6F7 /* LinesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LinesView.swift; sourceTree = ""; }; - FA2C329723A37259002DF6F7 /* RegularPolygonsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegularPolygonsView.swift; sourceTree = ""; }; - FA2C329C23A37993002DF6F7 /* ChartsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChartsView.swift; sourceTree = ""; }; - FA37C433239DE2560037BFE3 /* SwiftUIExtensionsDemo iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "SwiftUIExtensionsDemo iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - FA37C436239DE2560037BFE3 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - FA37C438239DE2560037BFE3 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - FA37C43A239DE2560037BFE3 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - FA37C43C239DE2570037BFE3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - FA37C43F239DE2570037BFE3 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - FA37C442239DE2570037BFE3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - FA37C444239DE2570037BFE3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - FA37C44A239DE6820037BFE3 /* ModularGridView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModularGridView.swift; sourceTree = ""; }; - FA37C44B239DE6820037BFE3 /* ModularGridSettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModularGridSettingsView.swift; sourceTree = ""; }; - FA37C44D239DE6820037BFE3 /* StaggeredGridSettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaggeredGridSettingsView.swift; sourceTree = ""; }; - FA37C44E239DE6820037BFE3 /* StaggeredGridView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaggeredGridView.swift; sourceTree = ""; }; - FA37C458239DE7330037BFE3 /* Color+Random.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Color+Random.swift"; sourceTree = ""; }; - FA37C459239DE7330037BFE3 /* Item.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Item.swift; sourceTree = ""; }; - FA37C45A239DE7330037BFE3 /* SharedAssets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = SharedAssets.xcassets; sourceTree = ""; }; - FA37C45B239DE7330037BFE3 /* Card.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Card.swift; sourceTree = ""; }; - FA37C464239DE9960037BFE3 /* SwiftUIExtensionsDemo macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "SwiftUIExtensionsDemo macOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - FA37C466239DE9960037BFE3 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - FA37C468239DE9960037BFE3 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - FA37C46A239DE9990037BFE3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - FA37C46D239DE9990037BFE3 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - FA37C470239DE9990037BFE3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - FA37C472239DE9990037BFE3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - FA37C473239DE9990037BFE3 /* SwiftUIExtensionsDemo_macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SwiftUIExtensionsDemo_macOS.entitlements; sourceTree = ""; }; - FA37C47B239DEB200037BFE3 /* ModularGridView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModularGridView.swift; sourceTree = ""; }; - FA37C47C239DEB200037BFE3 /* ModularGridSettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModularGridSettingsView.swift; sourceTree = ""; }; - FA37C47E239DEB200037BFE3 /* StaggeredGridSettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaggeredGridSettingsView.swift; sourceTree = ""; }; - FA37C47F239DEB200037BFE3 /* StaggeredGridView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaggeredGridView.swift; sourceTree = ""; }; - FA800E30239DE144005D2211 /* Grid */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Grid; path = ..; sourceTree = ""; }; - FAB94A0723A37B7500EBEB8C /* ChartsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChartsView.swift; sourceTree = ""; }; - FAB94A1123A384B900EBEB8C /* HalfCapsule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HalfCapsule.swift; sourceTree = ""; }; - FAB94A1223A384B900EBEB8C /* Model.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Model.swift; sourceTree = ""; }; - FAB94A1823A3850000EBEB8C /* VerticalSliderExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerticalSliderExamplesView.swift; sourceTree = ""; }; - FAB94A1923A3850000EBEB8C /* HorizontalSliderExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HorizontalSliderExamplesView.swift; sourceTree = ""; }; - FAB94A1A23A3850000EBEB8C /* PointSliderExamplesView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PointSliderExamplesView.swift; sourceTree = ""; }; - FAD4B55323A35A2300308E28 /* SwiftUIExtensionsDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftUIExtensionsDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; - FAD4B55623A35A2300308E28 /* SwiftUIExtensionsDemo WatchKit App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "SwiftUIExtensionsDemo WatchKit App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - FAD4B55C23A35A2400308E28 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Interface.storyboard; sourceTree = ""; }; - FAD4B55E23A35A2800308E28 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - FAD4B56023A35A2800308E28 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - FAD4B56523A35A2800308E28 /* SwiftUIExtensionsDemo WatchKit Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "SwiftUIExtensionsDemo WatchKit Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; - FAD4B56A23A35A2800308E28 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - FAD4B56C23A35A2800308E28 /* HostingController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HostingController.swift; sourceTree = ""; }; - FAD4B56E23A35A2800308E28 /* ExtensionDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionDelegate.swift; sourceTree = ""; }; - FAD4B57023A35A2800308E28 /* NotificationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationController.swift; sourceTree = ""; }; - FAD4B57223A35A2800308E28 /* NotificationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationView.swift; sourceTree = ""; }; - FAD4B57423A35A2900308E28 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - FAD4B57723A35A2900308E28 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - FAD4B57923A35A2900308E28 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - FAD4B57A23A35A2900308E28 /* PushNotificationPayload.apns */ = {isa = PBXFileReference; lastKnownFileType = text; path = PushNotificationPayload.apns; sourceTree = ""; }; - FAD4B58B23A35C8300308E28 /* ModularGridView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModularGridView.swift; sourceTree = ""; }; - FAD4B58D23A35C9500308E28 /* StaggeredGridView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaggeredGridView.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - FA2C326823A35EA0002DF6F7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - FA90447A23B975CA0090B6DA /* Grid in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FA37C430239DE2560037BFE3 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - FA4AB23423B96F61007B0422 /* SwiftUIExtensions in Frameworks */, - FA37C455239DE6B60037BFE3 /* SwiftUIExtensions in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FA37C461239DE9960037BFE3 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - FA37C478239DE9A50037BFE3 /* SwiftUIExtensions in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FAD4B56223A35A2800308E28 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - FA90447823B975620090B6DA /* Grid in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - FA01CE5B23A386FE00954D66 /* Sliders */ = { - isa = PBXGroup; - children = ( - FA01CE5E23A3871200954D66 /* HorizontalSliderExamplesView.swift */, - FA01CE5D23A3871100954D66 /* PointSliderExamplesView.swift */, - FA01CE5C23A3871100954D66 /* VerticalSliderExamplesView.swift */, - ); - path = Sliders; - sourceTree = ""; - }; - FA2C326C23A35EA0002DF6F7 /* SwiftUIExtensionsDemo tvOS */ = { - isa = PBXGroup; - children = ( - FA2C327D23A35EFA002DF6F7 /* Layouts */, - FA2C326D23A35EA0002DF6F7 /* AppDelegate.swift */, - FA2C326F23A35EA0002DF6F7 /* ContentView.swift */, - FA2C327123A35EA1002DF6F7 /* Assets.xcassets */, - FA2C327623A35EA1002DF6F7 /* LaunchScreen.storyboard */, - FA2C327923A35EA1002DF6F7 /* Info.plist */, - FA2C327323A35EA1002DF6F7 /* Preview Content */, - ); - path = "SwiftUIExtensionsDemo tvOS"; - sourceTree = ""; - }; - FA2C327323A35EA1002DF6F7 /* Preview Content */ = { - isa = PBXGroup; - children = ( - FA2C327423A35EA1002DF6F7 /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; - FA2C327D23A35EFA002DF6F7 /* Layouts */ = { - isa = PBXGroup; - children = ( - FA2C327F23A35F12002DF6F7 /* StaggeredGrid */, - FA2C327E23A35F0B002DF6F7 /* ModularGrid */, - ); - path = Layouts; - sourceTree = ""; - }; - FA2C327E23A35F0B002DF6F7 /* ModularGrid */ = { - isa = PBXGroup; - children = ( - FA2C328223A35F73002DF6F7 /* ModularGridView.swift */, - ); - path = ModularGrid; - sourceTree = ""; - }; - FA2C327F23A35F12002DF6F7 /* StaggeredGrid */ = { - isa = PBXGroup; - children = ( - FA2C328023A35F58002DF6F7 /* StaggeredGridView.swift */, - ); - path = StaggeredGrid; - sourceTree = ""; - }; - FA2C328D23A37034002DF6F7 /* Shapes */ = { - isa = PBXGroup; - children = ( - FA2C329023A3704B002DF6F7 /* LinesView.swift */, - FA2C328E23A3704B002DF6F7 /* PatternsView.swift */, - FA2C328F23A3704B002DF6F7 /* RegularPolygonsView.swift */, - ); - path = Shapes; - sourceTree = ""; - }; - FA2C329423A37236002DF6F7 /* Shapes */ = { - isa = PBXGroup; - children = ( - FA2C329623A37259002DF6F7 /* LinesView.swift */, - FA2C329523A37259002DF6F7 /* PatternsView.swift */, - FA2C329723A37259002DF6F7 /* RegularPolygonsView.swift */, - ); - path = Shapes; - sourceTree = ""; - }; - FA2C329B23A3797F002DF6F7 /* DataVisualization */ = { - isa = PBXGroup; - children = ( - FA2C329C23A37993002DF6F7 /* ChartsView.swift */, - ); - path = DataVisualization; - sourceTree = ""; - }; - FA37C434239DE2560037BFE3 /* Products */ = { - isa = PBXGroup; - children = ( - FA37C433239DE2560037BFE3 /* SwiftUIExtensionsDemo iOS.app */, - FA37C464239DE9960037BFE3 /* SwiftUIExtensionsDemo macOS.app */, - FAD4B55323A35A2300308E28 /* SwiftUIExtensionsDemo.app */, - FAD4B55623A35A2300308E28 /* SwiftUIExtensionsDemo WatchKit App.app */, - FAD4B56523A35A2800308E28 /* SwiftUIExtensionsDemo WatchKit Extension.appex */, - FA2C326B23A35EA0002DF6F7 /* SwiftUIExtensionsDemo tvOS.app */, - ); - name = Products; - sourceTree = ""; - }; - FA37C435239DE2560037BFE3 /* SwiftUIExtensionsDemo iOS */ = { - isa = PBXGroup; - children = ( - FA37C436239DE2560037BFE3 /* AppDelegate.swift */, - FA37C438239DE2560037BFE3 /* SceneDelegate.swift */, - FA37C43A239DE2560037BFE3 /* ContentView.swift */, - FA37C448239DE6250037BFE3 /* Layouts */, - FA2C329B23A3797F002DF6F7 /* DataVisualization */, - FAB94A1723A384CD00EBEB8C /* Sliders */, - FA2C328D23A37034002DF6F7 /* Shapes */, - FA37C43C239DE2570037BFE3 /* Assets.xcassets */, - FA37C441239DE2570037BFE3 /* LaunchScreen.storyboard */, - FA37C444239DE2570037BFE3 /* Info.plist */, - FA37C43E239DE2570037BFE3 /* Preview Content */, - ); - path = "SwiftUIExtensionsDemo iOS"; - sourceTree = ""; - }; - FA37C43E239DE2570037BFE3 /* Preview Content */ = { - isa = PBXGroup; - children = ( - FA37C43F239DE2570037BFE3 /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; - FA37C448239DE6250037BFE3 /* Layouts */ = { - isa = PBXGroup; - children = ( - FA37C449239DE6820037BFE3 /* ModularGrid */, - FA37C44C239DE6820037BFE3 /* StaggeredGrid */, - ); - path = Layouts; - sourceTree = ""; - }; - FA37C449239DE6820037BFE3 /* ModularGrid */ = { - isa = PBXGroup; - children = ( - FA37C44A239DE6820037BFE3 /* ModularGridView.swift */, - FA37C44B239DE6820037BFE3 /* ModularGridSettingsView.swift */, - ); - path = ModularGrid; - sourceTree = ""; - }; - FA37C44C239DE6820037BFE3 /* StaggeredGrid */ = { - isa = PBXGroup; - children = ( - FA37C44D239DE6820037BFE3 /* StaggeredGridSettingsView.swift */, - FA37C44E239DE6820037BFE3 /* StaggeredGridView.swift */, - ); - path = StaggeredGrid; - sourceTree = ""; - }; - FA37C453239DE6B60037BFE3 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; - FA37C456239DE6EA0037BFE3 /* SwiftUIExtensionsDemo */ = { - isa = PBXGroup; - children = ( - FAB94A0923A3844100EBEB8C /* Sliders */, - FA37C457239DE7330037BFE3 /* Layouts */, - ); - path = SwiftUIExtensionsDemo; - sourceTree = ""; - }; - FA37C457239DE7330037BFE3 /* Layouts */ = { - isa = PBXGroup; - children = ( - FA37C458239DE7330037BFE3 /* Color+Random.swift */, - FA37C459239DE7330037BFE3 /* Item.swift */, - FA37C45B239DE7330037BFE3 /* Card.swift */, - FA37C45A239DE7330037BFE3 /* SharedAssets.xcassets */, - ); - path = Layouts; - sourceTree = ""; - }; - FA37C465239DE9960037BFE3 /* SwiftUIExtensionsDemo macOS */ = { - isa = PBXGroup; - children = ( - FA37C466239DE9960037BFE3 /* AppDelegate.swift */, - FA37C468239DE9960037BFE3 /* ContentView.swift */, - FA37C479239DEAF10037BFE3 /* Layouts */, - FAB94A0623A37B6200EBEB8C /* DataVisualization */, - FA01CE5B23A386FE00954D66 /* Sliders */, - FA2C329423A37236002DF6F7 /* Shapes */, - FA37C46A239DE9990037BFE3 /* Assets.xcassets */, - FA37C46F239DE9990037BFE3 /* Main.storyboard */, - FA37C472239DE9990037BFE3 /* Info.plist */, - FA37C473239DE9990037BFE3 /* SwiftUIExtensionsDemo_macOS.entitlements */, - FA37C46C239DE9990037BFE3 /* Preview Content */, - ); - path = "SwiftUIExtensionsDemo macOS"; - sourceTree = ""; - }; - FA37C46C239DE9990037BFE3 /* Preview Content */ = { - isa = PBXGroup; - children = ( - FA37C46D239DE9990037BFE3 /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; - FA37C479239DEAF10037BFE3 /* Layouts */ = { - isa = PBXGroup; - children = ( - FA37C47A239DEB200037BFE3 /* ModularGrid */, - FA37C47D239DEB200037BFE3 /* StaggeredGrid */, - ); - path = Layouts; - sourceTree = ""; - }; - FA37C47A239DEB200037BFE3 /* ModularGrid */ = { - isa = PBXGroup; - children = ( - FA37C47B239DEB200037BFE3 /* ModularGridView.swift */, - FA37C47C239DEB200037BFE3 /* ModularGridSettingsView.swift */, - ); - path = ModularGrid; - sourceTree = ""; - }; - FA37C47D239DEB200037BFE3 /* StaggeredGrid */ = { - isa = PBXGroup; - children = ( - FA37C47E239DEB200037BFE3 /* StaggeredGridSettingsView.swift */, - FA37C47F239DEB200037BFE3 /* StaggeredGridView.swift */, - ); - path = StaggeredGrid; - sourceTree = ""; - }; - FA800E28239DE09A005D2211 = { - isa = PBXGroup; - children = ( - FA37C456239DE6EA0037BFE3 /* SwiftUIExtensionsDemo */, - FA37C435239DE2560037BFE3 /* SwiftUIExtensionsDemo iOS */, - FA37C465239DE9960037BFE3 /* SwiftUIExtensionsDemo macOS */, - FAD4B55A23A35A2400308E28 /* SwiftUIExtensionsDemo WatchKit App */, - FAD4B56923A35A2800308E28 /* SwiftUIExtensionsDemo WatchKit Extension */, - FA2C326C23A35EA0002DF6F7 /* SwiftUIExtensionsDemo tvOS */, - FA37C434239DE2560037BFE3 /* Products */, - FA37C453239DE6B60037BFE3 /* Frameworks */, - FA800E30239DE144005D2211 /* Grid */, - ); - sourceTree = ""; - }; - FAB94A0623A37B6200EBEB8C /* DataVisualization */ = { - isa = PBXGroup; - children = ( - FAB94A0723A37B7500EBEB8C /* ChartsView.swift */, - ); - path = DataVisualization; - sourceTree = ""; - }; - FAB94A0923A3844100EBEB8C /* Sliders */ = { - isa = PBXGroup; - children = ( - FAB94A1123A384B900EBEB8C /* HalfCapsule.swift */, - FAB94A1223A384B900EBEB8C /* Model.swift */, - ); - path = Sliders; - sourceTree = ""; - }; - FAB94A1723A384CD00EBEB8C /* Sliders */ = { - isa = PBXGroup; - children = ( - FAB94A1923A3850000EBEB8C /* HorizontalSliderExamplesView.swift */, - FAB94A1A23A3850000EBEB8C /* PointSliderExamplesView.swift */, - FAB94A1823A3850000EBEB8C /* VerticalSliderExamplesView.swift */, - ); - path = Sliders; - sourceTree = ""; - }; - FAD4B55A23A35A2400308E28 /* SwiftUIExtensionsDemo WatchKit App */ = { - isa = PBXGroup; - children = ( - FAD4B55B23A35A2400308E28 /* Interface.storyboard */, - FAD4B55E23A35A2800308E28 /* Assets.xcassets */, - FAD4B56023A35A2800308E28 /* Info.plist */, - ); - path = "SwiftUIExtensionsDemo WatchKit App"; - sourceTree = ""; - }; - FAD4B56923A35A2800308E28 /* SwiftUIExtensionsDemo WatchKit Extension */ = { - isa = PBXGroup; - children = ( - FAD4B56A23A35A2800308E28 /* ContentView.swift */, - FAD4B58823A35C2700308E28 /* Layouts */, - FAD4B56C23A35A2800308E28 /* HostingController.swift */, - FAD4B56E23A35A2800308E28 /* ExtensionDelegate.swift */, - FAD4B57023A35A2800308E28 /* NotificationController.swift */, - FAD4B57223A35A2800308E28 /* NotificationView.swift */, - FAD4B57423A35A2900308E28 /* Assets.xcassets */, - FAD4B57923A35A2900308E28 /* Info.plist */, - FAD4B57A23A35A2900308E28 /* PushNotificationPayload.apns */, - FAD4B57623A35A2900308E28 /* Preview Content */, - ); - path = "SwiftUIExtensionsDemo WatchKit Extension"; - sourceTree = ""; - }; - FAD4B57623A35A2900308E28 /* Preview Content */ = { - isa = PBXGroup; - children = ( - FAD4B57723A35A2900308E28 /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; - FAD4B58823A35C2700308E28 /* Layouts */ = { - isa = PBXGroup; - children = ( - FAD4B58923A35C3000308E28 /* ModularGrid */, - FAD4B58A23A35C4700308E28 /* StaggeredGrid */, - ); - path = Layouts; - sourceTree = ""; - }; - FAD4B58923A35C3000308E28 /* ModularGrid */ = { - isa = PBXGroup; - children = ( - FAD4B58B23A35C8300308E28 /* ModularGridView.swift */, - ); - path = ModularGrid; - sourceTree = ""; - }; - FAD4B58A23A35C4700308E28 /* StaggeredGrid */ = { - isa = PBXGroup; - children = ( - FAD4B58D23A35C9500308E28 /* StaggeredGridView.swift */, - ); - path = StaggeredGrid; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - FA2C326A23A35EA0002DF6F7 /* SwiftUIExtensionsDemo tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = FA2C327C23A35EA1002DF6F7 /* Build configuration list for PBXNativeTarget "SwiftUIExtensionsDemo tvOS" */; - buildPhases = ( - FA2C326723A35EA0002DF6F7 /* Sources */, - FA2C326823A35EA0002DF6F7 /* Frameworks */, - FA2C326923A35EA0002DF6F7 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "SwiftUIExtensionsDemo tvOS"; - packageProductDependencies = ( - FA90447923B975CA0090B6DA /* Grid */, - ); - productName = "SwiftUIExtensionsDemo tvOS"; - productReference = FA2C326B23A35EA0002DF6F7 /* SwiftUIExtensionsDemo tvOS.app */; - productType = "com.apple.product-type.application"; - }; - FA37C432239DE2560037BFE3 /* SwiftUIExtensionsDemo iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = FA37C447239DE2570037BFE3 /* Build configuration list for PBXNativeTarget "SwiftUIExtensionsDemo iOS" */; - buildPhases = ( - FA37C42F239DE2560037BFE3 /* Sources */, - FA37C430239DE2560037BFE3 /* Frameworks */, - FA37C431239DE2560037BFE3 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "SwiftUIExtensionsDemo iOS"; - packageProductDependencies = ( - FA37C454239DE6B60037BFE3 /* SwiftUIExtensions */, - FA4AB23323B96F61007B0422 /* SwiftUIExtensions */, - ); - productName = "SwiftUIExtensionsDemo iOS"; - productReference = FA37C433239DE2560037BFE3 /* SwiftUIExtensionsDemo iOS.app */; - productType = "com.apple.product-type.application"; - }; - FA37C463239DE9960037BFE3 /* SwiftUIExtensionsDemo macOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = FA37C474239DE9990037BFE3 /* Build configuration list for PBXNativeTarget "SwiftUIExtensionsDemo macOS" */; - buildPhases = ( - FA37C460239DE9960037BFE3 /* Sources */, - FA37C461239DE9960037BFE3 /* Frameworks */, - FA37C462239DE9960037BFE3 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "SwiftUIExtensionsDemo macOS"; - packageProductDependencies = ( - FA37C477239DE9A50037BFE3 /* SwiftUIExtensions */, - ); - productName = "SwiftUIExtensionsDemo macOS"; - productReference = FA37C464239DE9960037BFE3 /* SwiftUIExtensionsDemo macOS.app */; - productType = "com.apple.product-type.application"; - }; - FAD4B55223A35A2300308E28 /* SwiftUIExtensionsDemo */ = { - isa = PBXNativeTarget; - buildConfigurationList = FAD4B58323A35A2900308E28 /* Build configuration list for PBXNativeTarget "SwiftUIExtensionsDemo" */; - buildPhases = ( - FAD4B55123A35A2300308E28 /* Resources */, - FAD4B58223A35A2900308E28 /* Embed Watch Content */, - ); - buildRules = ( - ); - dependencies = ( - FAD4B55923A35A2400308E28 /* PBXTargetDependency */, - ); - name = SwiftUIExtensionsDemo; - productName = SwiftUIExtensionsDemo; - productReference = FAD4B55323A35A2300308E28 /* SwiftUIExtensionsDemo.app */; - productType = "com.apple.product-type.application.watchapp2-container"; - }; - FAD4B55523A35A2300308E28 /* SwiftUIExtensionsDemo WatchKit App */ = { - isa = PBXNativeTarget; - buildConfigurationList = FAD4B57F23A35A2900308E28 /* Build configuration list for PBXNativeTarget "SwiftUIExtensionsDemo WatchKit App" */; - buildPhases = ( - FAD4B55423A35A2300308E28 /* Resources */, - FAD4B57E23A35A2900308E28 /* Embed App Extensions */, - ); - buildRules = ( - ); - dependencies = ( - FAD4B56823A35A2800308E28 /* PBXTargetDependency */, - ); - name = "SwiftUIExtensionsDemo WatchKit App"; - productName = "SwiftUIExtensionsDemo WatchKit App"; - productReference = FAD4B55623A35A2300308E28 /* SwiftUIExtensionsDemo WatchKit App.app */; - productType = "com.apple.product-type.application.watchapp2"; - }; - FAD4B56423A35A2800308E28 /* SwiftUIExtensionsDemo WatchKit Extension */ = { - isa = PBXNativeTarget; - buildConfigurationList = FAD4B57B23A35A2900308E28 /* Build configuration list for PBXNativeTarget "SwiftUIExtensionsDemo WatchKit Extension" */; - buildPhases = ( - FAD4B56123A35A2800308E28 /* Sources */, - FAD4B56223A35A2800308E28 /* Frameworks */, - FAD4B56323A35A2800308E28 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "SwiftUIExtensionsDemo WatchKit Extension"; - packageProductDependencies = ( - FA90447723B975620090B6DA /* Grid */, - ); - productName = "SwiftUIExtensionsDemo WatchKit Extension"; - productReference = FAD4B56523A35A2800308E28 /* SwiftUIExtensionsDemo WatchKit Extension.appex */; - productType = "com.apple.product-type.watchkit2-extension"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - FA800E29239DE09A005D2211 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1130; - LastUpgradeCheck = 1130; - TargetAttributes = { - FA2C326A23A35EA0002DF6F7 = { - CreatedOnToolsVersion = 11.3; - }; - FA37C432239DE2560037BFE3 = { - CreatedOnToolsVersion = 11.2.1; - }; - FA37C463239DE9960037BFE3 = { - CreatedOnToolsVersion = 11.2.1; - }; - FAD4B55223A35A2300308E28 = { - CreatedOnToolsVersion = 11.3; - }; - FAD4B55523A35A2300308E28 = { - CreatedOnToolsVersion = 11.3; - }; - FAD4B56423A35A2800308E28 = { - CreatedOnToolsVersion = 11.3; - }; - }; - }; - buildConfigurationList = FA800E2C239DE09A005D2211 /* Build configuration list for PBXProject "SwiftUIExtensionsDemo" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = FA800E28239DE09A005D2211; - packageReferences = ( - FA4AB23223B96F61007B0422 /* XCRemoteSwiftPackageReference "swiftui-extensions" */, - ); - productRefGroup = FA37C434239DE2560037BFE3 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - FA37C432239DE2560037BFE3 /* SwiftUIExtensionsDemo iOS */, - FA37C463239DE9960037BFE3 /* SwiftUIExtensionsDemo macOS */, - FAD4B55223A35A2300308E28 /* SwiftUIExtensionsDemo */, - FAD4B55523A35A2300308E28 /* SwiftUIExtensionsDemo WatchKit App */, - FAD4B56423A35A2800308E28 /* SwiftUIExtensionsDemo WatchKit Extension */, - FA2C326A23A35EA0002DF6F7 /* SwiftUIExtensionsDemo tvOS */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - FA2C326923A35EA0002DF6F7 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FA2C327823A35EA1002DF6F7 /* LaunchScreen.storyboard in Resources */, - FA2C327523A35EA1002DF6F7 /* Preview Assets.xcassets in Resources */, - FA2C327223A35EA1002DF6F7 /* Assets.xcassets in Resources */, - FA2C328923A35FE6002DF6F7 /* SharedAssets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FA37C431239DE2560037BFE3 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FA37C443239DE2570037BFE3 /* LaunchScreen.storyboard in Resources */, - FA37C440239DE2570037BFE3 /* Preview Assets.xcassets in Resources */, - FA37C43D239DE2570037BFE3 /* Assets.xcassets in Resources */, - FA37C45E239DE7330037BFE3 /* SharedAssets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FA37C462239DE9960037BFE3 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FA37C471239DE9990037BFE3 /* Main.storyboard in Resources */, - FA37C46E239DE9990037BFE3 /* Preview Assets.xcassets in Resources */, - FA37C46B239DE9990037BFE3 /* Assets.xcassets in Resources */, - FA37C487239DEB2C0037BFE3 /* SharedAssets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FAD4B55123A35A2300308E28 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FAD4B55423A35A2300308E28 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FAD4B55F23A35A2800308E28 /* Assets.xcassets in Resources */, - FAD4B55D23A35A2400308E28 /* Interface.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FAD4B56323A35A2800308E28 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FAD4B59223A35CCC00308E28 /* SharedAssets.xcassets in Resources */, - FAD4B57823A35A2900308E28 /* Preview Assets.xcassets in Resources */, - FAD4B57523A35A2900308E28 /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - FA2C326723A35EA0002DF6F7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FA2C327023A35EA0002DF6F7 /* ContentView.swift in Sources */, - FA2C328323A35F73002DF6F7 /* ModularGridView.swift in Sources */, - FA2C328823A35FE6002DF6F7 /* Card.swift in Sources */, - FA2C326E23A35EA0002DF6F7 /* AppDelegate.swift in Sources */, - FA2C328623A35FE6002DF6F7 /* Color+Random.swift in Sources */, - FA2C328723A35FE6002DF6F7 /* Item.swift in Sources */, - FA2C328123A35F58002DF6F7 /* StaggeredGridView.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FA37C42F239DE2560037BFE3 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FAB94A1D23A3850100EBEB8C /* PointSliderExamplesView.swift in Sources */, - FA37C45C239DE7330037BFE3 /* Color+Random.swift in Sources */, - FA2C329323A3704B002DF6F7 /* LinesView.swift in Sources */, - FA2C329123A3704B002DF6F7 /* PatternsView.swift in Sources */, - FA37C45D239DE7330037BFE3 /* Item.swift in Sources */, - FAB94A1323A384BA00EBEB8C /* HalfCapsule.swift in Sources */, - FA37C437239DE2560037BFE3 /* AppDelegate.swift in Sources */, - FA37C44F239DE6820037BFE3 /* ModularGridView.swift in Sources */, - FAB94A1523A384BA00EBEB8C /* Model.swift in Sources */, - FA37C450239DE6820037BFE3 /* ModularGridSettingsView.swift in Sources */, - FA2C329D23A37993002DF6F7 /* ChartsView.swift in Sources */, - FAB94A1C23A3850100EBEB8C /* HorizontalSliderExamplesView.swift in Sources */, - FA37C439239DE2560037BFE3 /* SceneDelegate.swift in Sources */, - FA37C452239DE6820037BFE3 /* StaggeredGridView.swift in Sources */, - FA2C329223A3704B002DF6F7 /* RegularPolygonsView.swift in Sources */, - FA37C45F239DE7330037BFE3 /* Card.swift in Sources */, - FA37C451239DE6820037BFE3 /* StaggeredGridSettingsView.swift in Sources */, - FA37C43B239DE2560037BFE3 /* ContentView.swift in Sources */, - FAB94A1B23A3850100EBEB8C /* VerticalSliderExamplesView.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FA37C460239DE9960037BFE3 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FAB94A1623A384BA00EBEB8C /* Model.swift in Sources */, - FA37C484239DEB2C0037BFE3 /* Color+Random.swift in Sources */, - FA01CE6023A3871200954D66 /* PointSliderExamplesView.swift in Sources */, - FA37C486239DEB2C0037BFE3 /* Card.swift in Sources */, - FA37C480239DEB200037BFE3 /* ModularGridView.swift in Sources */, - FA01CE5F23A3871200954D66 /* VerticalSliderExamplesView.swift in Sources */, - FA2C329823A3725A002DF6F7 /* PatternsView.swift in Sources */, - FA37C482239DEB200037BFE3 /* StaggeredGridSettingsView.swift in Sources */, - FA37C469239DE9960037BFE3 /* ContentView.swift in Sources */, - FA37C485239DEB2C0037BFE3 /* Item.swift in Sources */, - FA01CE6123A3871200954D66 /* HorizontalSliderExamplesView.swift in Sources */, - FA37C481239DEB200037BFE3 /* ModularGridSettingsView.swift in Sources */, - FAB94A0823A37B7500EBEB8C /* ChartsView.swift in Sources */, - FA2C329A23A3725A002DF6F7 /* RegularPolygonsView.swift in Sources */, - FAB94A1423A384BA00EBEB8C /* HalfCapsule.swift in Sources */, - FA37C467239DE9960037BFE3 /* AppDelegate.swift in Sources */, - FA37C483239DEB200037BFE3 /* StaggeredGridView.swift in Sources */, - FA2C329923A3725A002DF6F7 /* LinesView.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FAD4B56123A35A2800308E28 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FAD4B58F23A35CC400308E28 /* Color+Random.swift in Sources */, - FAD4B59023A35CC400308E28 /* Item.swift in Sources */, - FAD4B56D23A35A2800308E28 /* HostingController.swift in Sources */, - FAD4B56B23A35A2800308E28 /* ContentView.swift in Sources */, - FAD4B57123A35A2800308E28 /* NotificationController.swift in Sources */, - FAD4B58C23A35C8300308E28 /* ModularGridView.swift in Sources */, - FAD4B58E23A35C9500308E28 /* StaggeredGridView.swift in Sources */, - FAD4B59123A35CCC00308E28 /* Card.swift in Sources */, - FAD4B56F23A35A2800308E28 /* ExtensionDelegate.swift in Sources */, - FAD4B57323A35A2800308E28 /* NotificationView.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - FAD4B55923A35A2400308E28 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = FAD4B55523A35A2300308E28 /* SwiftUIExtensionsDemo WatchKit App */; - targetProxy = FAD4B55823A35A2400308E28 /* PBXContainerItemProxy */; - }; - FAD4B56823A35A2800308E28 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = FAD4B56423A35A2800308E28 /* SwiftUIExtensionsDemo WatchKit Extension */; - targetProxy = FAD4B56723A35A2800308E28 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - FA2C327623A35EA1002DF6F7 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - FA2C327723A35EA1002DF6F7 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; - FA37C441239DE2570037BFE3 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - FA37C442239DE2570037BFE3 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; - FA37C46F239DE9990037BFE3 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - FA37C470239DE9990037BFE3 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - FAD4B55B23A35A2400308E28 /* Interface.storyboard */ = { - isa = PBXVariantGroup; - children = ( - FAD4B55C23A35A2400308E28 /* Base */, - ); - name = Interface.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - FA2C327A23A35EA1002DF6F7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_ASSET_PATHS = "\"SwiftUIExtensionsDemo tvOS/Preview Content\""; - ENABLE_PREVIEWS = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "SwiftUIExtensionsDemo tvOS/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.swiftextensions.SwiftUIExtensionsDemo-tvOS"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 13.2; - }; - name = Debug; - }; - FA2C327B23A35EA1002DF6F7 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_ASSET_PATHS = "\"SwiftUIExtensionsDemo tvOS/Preview Content\""; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_PREVIEWS = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "SwiftUIExtensionsDemo tvOS/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.swiftextensions.SwiftUIExtensionsDemo-tvOS"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 13.2; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - FA37C445239DE2570037BFE3 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_ASSET_PATHS = "\"SwiftUIExtensionsDemo iOS/Preview Content\""; - ENABLE_PREVIEWS = YES; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "SwiftUIExtensionsDemo iOS/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.swiftextensions.SwiftUIExtensionsDemo-iOS"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - FA37C446239DE2570037BFE3 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_ASSET_PATHS = "\"SwiftUIExtensionsDemo iOS/Preview Content\""; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_PREVIEWS = YES; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "SwiftUIExtensionsDemo iOS/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.swiftextensions.SwiftUIExtensionsDemo-iOS"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - FA37C475239DE9990037BFE3 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_ENTITLEMENTS = "SwiftUIExtensionsDemo macOS/SwiftUIExtensionsDemo_macOS.entitlements"; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_ASSET_PATHS = "\"SwiftUIExtensionsDemo macOS/Preview Content\""; - ENABLE_PREVIEWS = YES; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "SwiftUIExtensionsDemo macOS/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.15; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.swiftextensions.SwiftUIExtensionsDemo-macOS"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - FA37C476239DE9990037BFE3 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_ENTITLEMENTS = "SwiftUIExtensionsDemo macOS/SwiftUIExtensionsDemo_macOS.entitlements"; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_ASSET_PATHS = "\"SwiftUIExtensionsDemo macOS/Preview Content\""; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_PREVIEWS = YES; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "SwiftUIExtensionsDemo macOS/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.15; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.swiftextensions.SwiftUIExtensionsDemo-macOS"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - FA800E2D239DE09A005D2211 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - ONLY_ACTIVE_ARCH = YES; - }; - name = Debug; - }; - FA800E2E239DE09A005D2211 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - }; - name = Release; - }; - FAD4B57C23A35A2900308E28 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_ASSET_PATHS = "\"SwiftUIExtensionsDemo WatchKit Extension/Preview Content\""; - ENABLE_PREVIEWS = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "SwiftUIExtensionsDemo WatchKit Extension/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.swiftextensions.SwiftUIExtensionsDemo.watchkitapp.watchkitextension; - PRODUCT_NAME = "${TARGET_NAME}"; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 6.1; - }; - name = Debug; - }; - FAD4B57D23A35A2900308E28 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_ASSET_PATHS = "\"SwiftUIExtensionsDemo WatchKit Extension/Preview Content\""; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_PREVIEWS = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = "SwiftUIExtensionsDemo WatchKit Extension/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.swiftextensions.SwiftUIExtensionsDemo.watchkitapp.watchkitextension; - PRODUCT_NAME = "${TARGET_NAME}"; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 4; - VALIDATE_PRODUCT = YES; - WATCHOS_DEPLOYMENT_TARGET = 6.1; - }; - name = Release; - }; - FAD4B58023A35A2900308E28 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IBSC_MODULE = SwiftUIExtensionsDemo_WatchKit_Extension; - INFOPLIST_FILE = "SwiftUIExtensionsDemo WatchKit App/Info.plist"; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.swiftextensions.SwiftUIExtensionsDemo.watchkitapp; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 6.1; - }; - name = Debug; - }; - FAD4B58123A35A2900308E28 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - IBSC_MODULE = SwiftUIExtensionsDemo_WatchKit_Extension; - INFOPLIST_FILE = "SwiftUIExtensionsDemo WatchKit App/Info.plist"; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.swiftextensions.SwiftUIExtensionsDemo.watchkitapp; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 4; - VALIDATE_PRODUCT = YES; - WATCHOS_DEPLOYMENT_TARGET = 6.1; - }; - name = Release; - }; - FAD4B58423A35A2900308E28 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.swiftextensions.SwiftUIExtensionsDemo; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - FAD4B58523A35A2900308E28 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.swiftextensions.SwiftUIExtensionsDemo; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - FA2C327C23A35EA1002DF6F7 /* Build configuration list for PBXNativeTarget "SwiftUIExtensionsDemo tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FA2C327A23A35EA1002DF6F7 /* Debug */, - FA2C327B23A35EA1002DF6F7 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - FA37C447239DE2570037BFE3 /* Build configuration list for PBXNativeTarget "SwiftUIExtensionsDemo iOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FA37C445239DE2570037BFE3 /* Debug */, - FA37C446239DE2570037BFE3 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - FA37C474239DE9990037BFE3 /* Build configuration list for PBXNativeTarget "SwiftUIExtensionsDemo macOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FA37C475239DE9990037BFE3 /* Debug */, - FA37C476239DE9990037BFE3 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - FA800E2C239DE09A005D2211 /* Build configuration list for PBXProject "SwiftUIExtensionsDemo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FA800E2D239DE09A005D2211 /* Debug */, - FA800E2E239DE09A005D2211 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - FAD4B57B23A35A2900308E28 /* Build configuration list for PBXNativeTarget "SwiftUIExtensionsDemo WatchKit Extension" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FAD4B57C23A35A2900308E28 /* Debug */, - FAD4B57D23A35A2900308E28 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - FAD4B57F23A35A2900308E28 /* Build configuration list for PBXNativeTarget "SwiftUIExtensionsDemo WatchKit App" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FAD4B58023A35A2900308E28 /* Debug */, - FAD4B58123A35A2900308E28 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - FAD4B58323A35A2900308E28 /* Build configuration list for PBXNativeTarget "SwiftUIExtensionsDemo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FAD4B58423A35A2900308E28 /* Debug */, - FAD4B58523A35A2900308E28 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCRemoteSwiftPackageReference section */ - FA4AB23223B96F61007B0422 /* XCRemoteSwiftPackageReference "swiftui-extensions" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "git@github.com:swift-extensions/swiftui-extensions.git"; - requirement = { - branch = master; - kind = branch; - }; - }; -/* End XCRemoteSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - FA37C454239DE6B60037BFE3 /* SwiftUIExtensions */ = { - isa = XCSwiftPackageProductDependency; - productName = SwiftUIExtensions; - }; - FA37C477239DE9A50037BFE3 /* SwiftUIExtensions */ = { - isa = XCSwiftPackageProductDependency; - productName = SwiftUIExtensions; - }; - FA4AB23323B96F61007B0422 /* SwiftUIExtensions */ = { - isa = XCSwiftPackageProductDependency; - package = FA4AB23223B96F61007B0422 /* XCRemoteSwiftPackageReference "swiftui-extensions" */; - productName = SwiftUIExtensions; - }; - FA90447723B975620090B6DA /* Grid */ = { - isa = XCSwiftPackageProductDependency; - productName = Grid; - }; - FA90447923B975CA0090B6DA /* Grid */ = { - isa = XCSwiftPackageProductDependency; - productName = Grid; - }; -/* End XCSwiftPackageProductDependency section */ - }; - rootObject = FA800E29239DE09A005D2211 /* Project object */; -} diff --git a/Demo/SwiftUIExtensionsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Demo/SwiftUIExtensionsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/Demo/SwiftUIExtensionsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Demo/SwiftUIExtensionsDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Demo/SwiftUIExtensionsDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/Demo/SwiftUIExtensionsDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/Demo/SwiftUIExtensionsDemo/Sliders/HalfCapsule.swift b/Demo/SwiftUIExtensionsDemo/Sliders/HalfCapsule.swift deleted file mode 100644 index 6e71ba0..0000000 --- a/Demo/SwiftUIExtensionsDemo/Sliders/HalfCapsule.swift +++ /dev/null @@ -1,44 +0,0 @@ -import Foundation -import SwiftUI - -public struct HalfCapsule: View, InsettableShape { - private let inset: CGFloat - - public func inset(by amount: CGFloat) -> HalfCapsule { - HalfCapsule(inset: self.inset + amount) - } - - public func path(in rect: CGRect) -> Path { - let width = rect.size.width - inset * 2 - let height = rect.size.height - inset * 2 - let heightRadius = height / 2 - let widthRadius = width / 2 - let minRadius = min(heightRadius, widthRadius) - return Path { path in - path.move(to: CGPoint(x: width, y: 0)) - path.addArc(center: CGPoint(x: minRadius, y: minRadius), radius: minRadius, startAngle: Angle(degrees: 270), endAngle: Angle(degrees: 180), clockwise: true) - path.addArc(center: CGPoint(x: minRadius, y: height - minRadius), radius: minRadius, startAngle: Angle(degrees: 180), endAngle: Angle(degrees: 90), clockwise: true) - path.addLine(to: CGPoint(x: width, y: height)) - path.closeSubpath() - }.offsetBy(dx: inset, dy: inset) - } - - public var body: some View { - GeometryReader { geometry in - self.path(in: CGRect(x: 0, y: 0, width: geometry.size.width, height: geometry.size.height)) - } - } - - public init(inset: CGFloat = 0) { - self.inset = inset - } -} - -#if DEBUG - -struct CustomKnob_Previews: PreviewProvider { - static var previews: some View { - HalfCapsule() - } -} -#endif diff --git a/Demo/SwiftUIExtensionsDemo/Sliders/Model.swift b/Demo/SwiftUIExtensionsDemo/Sliders/Model.swift deleted file mode 100644 index 3bf474e..0000000 --- a/Demo/SwiftUIExtensionsDemo/Sliders/Model.swift +++ /dev/null @@ -1,40 +0,0 @@ -import Foundation - -final class Model: ObservableObject { - var value = 0.5 - @Published var value1 = 0.5 - @Published var value2 = 0.5 - @Published var value3 = 0.5 - @Published var value4 = 0.5 - @Published var value5 = 0.5 - @Published var value6 = 0.5 - - @Published var range1 = 0.1...0.9 - @Published var range2 = 0.1...0.9 - @Published var range3 = 0.1...0.9 - @Published var range4 = 0.1...0.9 - @Published var range5 = 0.1...0.9 - @Published var range6 = 0.1...0.9 - @Published var range7 = 0.1...0.9 - @Published var range8 = 0.1...0.9 - @Published var range9 = 0.1...0.9 - @Published var range10 = 0.3...0.7 - - @Published var pointX1 = 0.5 - @Published var pointY1 = 0.5 - - @Published var pointX2 = 0.5 - @Published var pointY2 = 0.5 - - @Published var pointX3 = 0.5 - @Published var pointY3 = 0.5 - - @Published var pointX4 = 0.5 - @Published var pointY4 = 0.5 - - init() {} -} - -extension Model { - static let preview = Model() -} diff --git a/Demo/SwiftUIExtensionsDemo iOS/AppDelegate.swift b/GridDemo iOS/AppDelegate.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo iOS/AppDelegate.swift rename to GridDemo iOS/AppDelegate.swift diff --git a/Demo/SwiftUIExtensionsDemo iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/GridDemo iOS/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo iOS/Assets.xcassets/AppIcon.appiconset/Contents.json rename to GridDemo iOS/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo WatchKit App/Assets.xcassets/Contents.json b/GridDemo iOS/Assets.xcassets/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit App/Assets.xcassets/Contents.json rename to GridDemo iOS/Assets.xcassets/Contents.json diff --git a/GridDemo iOS/Assets.xcassets/first.imageset/Contents.json b/GridDemo iOS/Assets.xcassets/first.imageset/Contents.json new file mode 100644 index 0000000..33a7451 --- /dev/null +++ b/GridDemo iOS/Assets.xcassets/first.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "first.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GridDemo iOS/Assets.xcassets/first.imageset/first.pdf b/GridDemo iOS/Assets.xcassets/first.imageset/first.pdf new file mode 100644 index 0000000..47d911d Binary files /dev/null and b/GridDemo iOS/Assets.xcassets/first.imageset/first.pdf differ diff --git a/GridDemo iOS/Assets.xcassets/second.imageset/Contents.json b/GridDemo iOS/Assets.xcassets/second.imageset/Contents.json new file mode 100644 index 0000000..03bd9c9 --- /dev/null +++ b/GridDemo iOS/Assets.xcassets/second.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "second.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GridDemo iOS/Assets.xcassets/second.imageset/second.pdf b/GridDemo iOS/Assets.xcassets/second.imageset/second.pdf new file mode 100644 index 0000000..401614e Binary files /dev/null and b/GridDemo iOS/Assets.xcassets/second.imageset/second.pdf differ diff --git a/Demo/SwiftUIExtensionsDemo iOS/Base.lproj/LaunchScreen.storyboard b/GridDemo iOS/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from Demo/SwiftUIExtensionsDemo iOS/Base.lproj/LaunchScreen.storyboard rename to GridDemo iOS/Base.lproj/LaunchScreen.storyboard diff --git a/GridDemo iOS/ContentView.swift b/GridDemo iOS/ContentView.swift new file mode 100644 index 0000000..bd6c0d9 --- /dev/null +++ b/GridDemo iOS/ContentView.swift @@ -0,0 +1,39 @@ +import SwiftUI + +struct ContentView: View { + + var body: some View { + NavigationView { + List { + Section { + NavigationLink(destination: ModularGridView()) { + HStack { + Image(systemName: "square.grid.3x2.fill") + Text("Modular Grid") + } + } + + NavigationLink(destination: StaggeredGridView()) { + HStack { + Image(systemName: "rectangle.3.offgrid.fill") + Text("Staggered Grid") + } + } + } + } + .listStyle( + GroupedListStyle() + ) + .navigationBarTitle(Text("Grid")) + } + .navigationViewStyle( + StackNavigationViewStyle() + ) + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/Demo/SwiftUIExtensionsDemo iOS/Info.plist b/GridDemo iOS/Info.plist similarity index 100% rename from Demo/SwiftUIExtensionsDemo iOS/Info.plist rename to GridDemo iOS/Info.plist diff --git a/Demo/SwiftUIExtensionsDemo iOS/Layouts/ModularGrid/ModularGridSettingsView.swift b/GridDemo iOS/ModularGrid/ModularGridSettingsView.swift similarity index 99% rename from Demo/SwiftUIExtensionsDemo iOS/Layouts/ModularGrid/ModularGridSettingsView.swift rename to GridDemo iOS/ModularGrid/ModularGridSettingsView.swift index 6bd7a84..7d8cefa 100644 --- a/Demo/SwiftUIExtensionsDemo iOS/Layouts/ModularGrid/ModularGridSettingsView.swift +++ b/GridDemo iOS/ModularGrid/ModularGridSettingsView.swift @@ -1,5 +1,5 @@ import SwiftUI -import SwiftUIExtensions +import Grid struct ModularGridSettingsView: View { @Environment(\.presentationMode) var presentationMode diff --git a/Demo/SwiftUIExtensionsDemo iOS/Layouts/ModularGrid/ModularGridView.swift b/GridDemo iOS/ModularGrid/ModularGridView.swift similarity index 97% rename from Demo/SwiftUIExtensionsDemo iOS/Layouts/ModularGrid/ModularGridView.swift rename to GridDemo iOS/ModularGrid/ModularGridView.swift index c102346..d42d7a9 100644 --- a/Demo/SwiftUIExtensionsDemo iOS/Layouts/ModularGrid/ModularGridView.swift +++ b/GridDemo iOS/ModularGrid/ModularGridView.swift @@ -1,5 +1,5 @@ import SwiftUI -import SwiftUIExtensions +import Grid struct ModularGridView: View { @State var items: [Item] = (0...100).map { Item(number: $0) } diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Contents.json b/GridDemo iOS/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Contents.json rename to GridDemo iOS/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo iOS/SceneDelegate.swift b/GridDemo iOS/SceneDelegate.swift similarity index 97% rename from Demo/SwiftUIExtensionsDemo iOS/SceneDelegate.swift rename to GridDemo iOS/SceneDelegate.swift index 5964a64..dcee5d0 100644 --- a/Demo/SwiftUIExtensionsDemo iOS/SceneDelegate.swift +++ b/GridDemo iOS/SceneDelegate.swift @@ -12,7 +12,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). // Create the SwiftUI view that provides the window contents. - let contentView = ContentView().environmentObject(Model()) + let contentView = ContentView() // Use a UIHostingController as window root view controller. if let windowScene = scene as? UIWindowScene { diff --git a/Demo/SwiftUIExtensionsDemo iOS/Layouts/StaggeredGrid/StaggeredGridSettingsView.swift b/GridDemo iOS/StaggeredGrid/StaggeredGridSettingsView.swift similarity index 98% rename from Demo/SwiftUIExtensionsDemo iOS/Layouts/StaggeredGrid/StaggeredGridSettingsView.swift rename to GridDemo iOS/StaggeredGrid/StaggeredGridSettingsView.swift index e59cfd4..f96b2f2 100644 --- a/Demo/SwiftUIExtensionsDemo iOS/Layouts/StaggeredGrid/StaggeredGridSettingsView.swift +++ b/GridDemo iOS/StaggeredGrid/StaggeredGridSettingsView.swift @@ -1,5 +1,5 @@ import SwiftUI -import SwiftUIExtensions +import Grid struct StaggeredGridSettingsView: View { @Environment(\.presentationMode) var presentationMode diff --git a/Demo/SwiftUIExtensionsDemo iOS/Layouts/StaggeredGrid/StaggeredGridView.swift b/GridDemo iOS/StaggeredGrid/StaggeredGridView.swift similarity index 97% rename from Demo/SwiftUIExtensionsDemo iOS/Layouts/StaggeredGrid/StaggeredGridView.swift rename to GridDemo iOS/StaggeredGrid/StaggeredGridView.swift index dc6bd2b..4b65fba 100644 --- a/Demo/SwiftUIExtensionsDemo iOS/Layouts/StaggeredGrid/StaggeredGridView.swift +++ b/GridDemo iOS/StaggeredGrid/StaggeredGridView.swift @@ -1,5 +1,5 @@ import SwiftUI -import SwiftUIExtensions +import Grid struct StaggeredGridView: View { @State var showSettings: Bool = false diff --git a/Demo/SwiftUIExtensionsDemo macOS/AppDelegate.swift b/GridDemo macOS/AppDelegate.swift similarity index 93% rename from Demo/SwiftUIExtensionsDemo macOS/AppDelegate.swift rename to GridDemo macOS/AppDelegate.swift index 66226d2..faa38d6 100644 --- a/Demo/SwiftUIExtensionsDemo macOS/AppDelegate.swift +++ b/GridDemo macOS/AppDelegate.swift @@ -6,9 +6,10 @@ class AppDelegate: NSObject, NSApplicationDelegate { var window: NSWindow! + func applicationDidFinishLaunching(_ aNotification: Notification) { // Create the SwiftUI view that provides the window contents. - let contentView = ContentView().environmentObject(Model()) + let contentView = ContentView() // Create the window and set the content view. window = NSWindow( diff --git a/Demo/SwiftUIExtensionsDemo macOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/GridDemo macOS/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo macOS/Assets.xcassets/AppIcon.appiconset/Contents.json rename to GridDemo macOS/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Preview Content/Preview Assets.xcassets/Contents.json b/GridDemo macOS/Assets.xcassets/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Preview Content/Preview Assets.xcassets/Contents.json rename to GridDemo macOS/Assets.xcassets/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo macOS/Base.lproj/Main.storyboard b/GridDemo macOS/Base.lproj/Main.storyboard similarity index 98% rename from Demo/SwiftUIExtensionsDemo macOS/Base.lproj/Main.storyboard rename to GridDemo macOS/Base.lproj/Main.storyboard index 4b019de..eb464fc 100644 --- a/Demo/SwiftUIExtensionsDemo macOS/Base.lproj/Main.storyboard +++ b/GridDemo macOS/Base.lproj/Main.storyboard @@ -10,11 +10,11 @@ - + - + - + @@ -28,7 +28,7 @@ - + @@ -46,7 +46,7 @@ - + @@ -659,7 +659,7 @@ - + diff --git a/GridDemo macOS/ContentView.swift b/GridDemo macOS/ContentView.swift new file mode 100644 index 0000000..1d6a36f --- /dev/null +++ b/GridDemo macOS/ContentView.swift @@ -0,0 +1,33 @@ +import SwiftUI + +struct ContentView: View { + var body: some View { + NavigationView { + List { + Section { + NavigationLink(destination: ModularGridView()) { + Text("Modular Grid") + } + + NavigationLink(destination: StaggeredGridView()) { + Text("Staggered Grid") + } + } + } + .frame(minWidth: 200, maxWidth: 300) + .listStyle(SidebarListStyle()) + + } + .navigationViewStyle( + DoubleColumnNavigationViewStyle() + ) + .frame(maxWidth: .infinity, maxHeight: .infinity) + } +} + + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/Demo/SwiftUIExtensionsDemo macOS/SwiftUIExtensionsDemo_macOS.entitlements b/GridDemo macOS/GridDemo_macOS.entitlements similarity index 100% rename from Demo/SwiftUIExtensionsDemo macOS/SwiftUIExtensionsDemo_macOS.entitlements rename to GridDemo macOS/GridDemo_macOS.entitlements diff --git a/Demo/SwiftUIExtensionsDemo macOS/Info.plist b/GridDemo macOS/Info.plist similarity index 100% rename from Demo/SwiftUIExtensionsDemo macOS/Info.plist rename to GridDemo macOS/Info.plist diff --git a/Demo/SwiftUIExtensionsDemo macOS/Layouts/ModularGrid/ModularGridSettingsView.swift b/GridDemo macOS/ModularGrid/ModularGridSettingsView.swift similarity index 98% rename from Demo/SwiftUIExtensionsDemo macOS/Layouts/ModularGrid/ModularGridSettingsView.swift rename to GridDemo macOS/ModularGrid/ModularGridSettingsView.swift index 08943e8..3b14c13 100644 --- a/Demo/SwiftUIExtensionsDemo macOS/Layouts/ModularGrid/ModularGridSettingsView.swift +++ b/GridDemo macOS/ModularGrid/ModularGridSettingsView.swift @@ -1,5 +1,5 @@ import SwiftUI -import SwiftUIExtensions +import Grid struct ModularGridSettingsView: View { @Environment(\.presentationMode) var presentationMode diff --git a/Demo/SwiftUIExtensionsDemo macOS/Layouts/ModularGrid/ModularGridView.swift b/GridDemo macOS/ModularGrid/ModularGridView.swift similarity index 98% rename from Demo/SwiftUIExtensionsDemo macOS/Layouts/ModularGrid/ModularGridView.swift rename to GridDemo macOS/ModularGrid/ModularGridView.swift index f83623b..fcae07c 100644 --- a/Demo/SwiftUIExtensionsDemo macOS/Layouts/ModularGrid/ModularGridView.swift +++ b/GridDemo macOS/ModularGrid/ModularGridView.swift @@ -1,5 +1,5 @@ import SwiftUI -import SwiftUIExtensions +import Grid struct ModularGridView: View { @State var selection: Int = 0 diff --git a/Demo/SwiftUIExtensionsDemo iOS/Assets.xcassets/Contents.json b/GridDemo macOS/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo iOS/Assets.xcassets/Contents.json rename to GridDemo macOS/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo macOS/Layouts/StaggeredGrid/StaggeredGridSettingsView.swift b/GridDemo macOS/StaggeredGrid/StaggeredGridSettingsView.swift similarity index 98% rename from Demo/SwiftUIExtensionsDemo macOS/Layouts/StaggeredGrid/StaggeredGridSettingsView.swift rename to GridDemo macOS/StaggeredGrid/StaggeredGridSettingsView.swift index 31aaee5..778b4d4 100644 --- a/Demo/SwiftUIExtensionsDemo macOS/Layouts/StaggeredGrid/StaggeredGridSettingsView.swift +++ b/GridDemo macOS/StaggeredGrid/StaggeredGridSettingsView.swift @@ -1,5 +1,5 @@ import SwiftUI -import SwiftUIExtensions +import Grid struct StaggeredGridSettingsView: View { @Environment(\.presentationMode) var presentationMode diff --git a/Demo/SwiftUIExtensionsDemo macOS/Layouts/StaggeredGrid/StaggeredGridView.swift b/GridDemo macOS/StaggeredGrid/StaggeredGridView.swift similarity index 97% rename from Demo/SwiftUIExtensionsDemo macOS/Layouts/StaggeredGrid/StaggeredGridView.swift rename to GridDemo macOS/StaggeredGrid/StaggeredGridView.swift index 75b34cb..cc905d8 100644 --- a/Demo/SwiftUIExtensionsDemo macOS/Layouts/StaggeredGrid/StaggeredGridView.swift +++ b/GridDemo macOS/StaggeredGrid/StaggeredGridView.swift @@ -1,5 +1,5 @@ import SwiftUI -import SwiftUIExtensions +import Grid struct StaggeredGridView: View { @State var showSettings: Bool = false diff --git a/Demo/SwiftUIExtensionsDemo tvOS/AppDelegate.swift b/GridDemo tvOS/AppDelegate.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/AppDelegate.swift rename to GridDemo tvOS/AppDelegate.swift diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo iOS/Preview Content/Preview Assets.xcassets/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo iOS/Preview Content/Preview Assets.xcassets/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo macOS/Assets.xcassets/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo macOS/Assets.xcassets/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo macOS/Preview Content/Preview Assets.xcassets/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo macOS/Preview Content/Preview Assets.xcassets/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json b/GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json rename to GridDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json b/GridDemo tvOS/Assets.xcassets/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json rename to GridDemo tvOS/Assets.xcassets/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Base.lproj/LaunchScreen.storyboard b/GridDemo tvOS/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Base.lproj/LaunchScreen.storyboard rename to GridDemo tvOS/Base.lproj/LaunchScreen.storyboard diff --git a/Demo/SwiftUIExtensionsDemo tvOS/ContentView.swift b/GridDemo tvOS/ContentView.swift similarity index 91% rename from Demo/SwiftUIExtensionsDemo tvOS/ContentView.swift rename to GridDemo tvOS/ContentView.swift index 21cdaf5..770fd09 100644 --- a/Demo/SwiftUIExtensionsDemo tvOS/ContentView.swift +++ b/GridDemo tvOS/ContentView.swift @@ -4,7 +4,7 @@ struct ContentView: View { var body: some View { NavigationView { List { - Section(header: Text("Layouts")) { + Section { NavigationLink(destination: ModularGridView()) { HStack { Image(systemName: "square.grid.3x2.fill") @@ -27,7 +27,7 @@ struct ContentView: View { } } - .navigationBarTitle("SwiftUI Extensions") + .navigationBarTitle("Grid") .listStyle( GroupedListStyle() ) @@ -41,3 +41,4 @@ struct ContentView_Previews: PreviewProvider { ContentView() } } + diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Info.plist b/GridDemo tvOS/Info.plist similarity index 96% rename from Demo/SwiftUIExtensionsDemo tvOS/Info.plist rename to GridDemo tvOS/Info.plist index a41fc4b..2f0c6be 100644 --- a/Demo/SwiftUIExtensionsDemo tvOS/Info.plist +++ b/GridDemo tvOS/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - $(MARKETING_VERSION) + 1.0 CFBundleVersion 1 LSRequiresIPhoneOS diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Layouts/ModularGrid/ModularGridView.swift b/GridDemo tvOS/ModularGrid/ModularGridView.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Layouts/ModularGrid/ModularGridView.swift rename to GridDemo tvOS/ModularGrid/ModularGridView.swift diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json b/GridDemo tvOS/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json rename to GridDemo tvOS/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Layouts/StaggeredGrid/StaggeredGridView.swift b/GridDemo tvOS/StaggeredGrid/StaggeredGridView.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Layouts/StaggeredGrid/StaggeredGridView.swift rename to GridDemo tvOS/StaggeredGrid/StaggeredGridView.swift diff --git a/Demo/SwiftUIExtensionsDemo WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json b/GridDemo watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json rename to GridDemo watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Contents.json b/GridDemo watchOS WatchKit App/Assets.xcassets/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Contents.json rename to GridDemo watchOS WatchKit App/Assets.xcassets/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo WatchKit App/Base.lproj/Interface.storyboard b/GridDemo watchOS WatchKit App/Base.lproj/Interface.storyboard similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit App/Base.lproj/Interface.storyboard rename to GridDemo watchOS WatchKit App/Base.lproj/Interface.storyboard diff --git a/Demo/SwiftUIExtensionsDemo WatchKit App/Info.plist b/GridDemo watchOS WatchKit App/Info.plist similarity index 94% rename from Demo/SwiftUIExtensionsDemo WatchKit App/Info.plist rename to GridDemo watchOS WatchKit App/Info.plist index e71c8a6..d68fb14 100644 --- a/Demo/SwiftUIExtensionsDemo WatchKit App/Info.plist +++ b/GridDemo watchOS WatchKit App/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - SwiftUIExtensionsDemo WatchKit App + GridDemo watchOS WatchKit App CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json b/GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json rename to GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json b/GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json rename to GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json b/GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json rename to GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json b/GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json rename to GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json b/GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json rename to GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json b/GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json rename to GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json b/GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json rename to GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json b/GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json rename to GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json b/GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json rename to GridDemo watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/Contents.json b/GridDemo watchOS WatchKit Extension/Assets.xcassets/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Assets.xcassets/Contents.json rename to GridDemo watchOS WatchKit Extension/Assets.xcassets/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/ContentView.swift b/GridDemo watchOS WatchKit Extension/ContentView.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/ContentView.swift rename to GridDemo watchOS WatchKit Extension/ContentView.swift diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/ExtensionDelegate.swift b/GridDemo watchOS WatchKit Extension/ExtensionDelegate.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/ExtensionDelegate.swift rename to GridDemo watchOS WatchKit Extension/ExtensionDelegate.swift diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/HostingController.swift b/GridDemo watchOS WatchKit Extension/HostingController.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/HostingController.swift rename to GridDemo watchOS WatchKit Extension/HostingController.swift diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Info.plist b/GridDemo watchOS WatchKit Extension/Info.plist similarity index 89% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Info.plist rename to GridDemo watchOS WatchKit Extension/Info.plist index 150251d..17ebffd 100644 --- a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Info.plist +++ b/GridDemo watchOS WatchKit Extension/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - SwiftUIExtensionsDemo WatchKit Extension + GridDemo watchOS WatchKit Extension CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -25,7 +25,7 @@ NSExtensionAttributes WKAppBundleIdentifier - com.swiftextensions.SwiftUIExtensionsDemo.watchkitapp + com.swiftextensions.GridDemo-watchOS.watchkitapp NSExtensionPointIdentifier com.apple.watchkit diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Layouts/ModularGrid/ModularGridView.swift b/GridDemo watchOS WatchKit Extension/ModularGrid/ModularGridView.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Layouts/ModularGrid/ModularGridView.swift rename to GridDemo watchOS WatchKit Extension/ModularGrid/ModularGridView.swift diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/NotificationController.swift b/GridDemo watchOS WatchKit Extension/NotificationController.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/NotificationController.swift rename to GridDemo watchOS WatchKit Extension/NotificationController.swift diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/NotificationView.swift b/GridDemo watchOS WatchKit Extension/NotificationView.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/NotificationView.swift rename to GridDemo watchOS WatchKit Extension/NotificationView.swift diff --git a/Demo/SwiftUIExtensionsDemo tvOS/Preview Content/Preview Assets.xcassets/Contents.json b/GridDemo watchOS WatchKit Extension/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo tvOS/Preview Content/Preview Assets.xcassets/Contents.json rename to GridDemo watchOS WatchKit Extension/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/PushNotificationPayload.apns b/GridDemo watchOS WatchKit Extension/PushNotificationPayload.apns similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/PushNotificationPayload.apns rename to GridDemo watchOS WatchKit Extension/PushNotificationPayload.apns diff --git a/Demo/SwiftUIExtensionsDemo WatchKit Extension/Layouts/StaggeredGrid/StaggeredGridView.swift b/GridDemo watchOS WatchKit Extension/StaggeredGrid/StaggeredGridView.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo WatchKit Extension/Layouts/StaggeredGrid/StaggeredGridView.swift rename to GridDemo watchOS WatchKit Extension/StaggeredGrid/StaggeredGridView.swift diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/Card.swift b/GridDemo/Card.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/Card.swift rename to GridDemo/Card.swift diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/Color+Random.swift b/GridDemo/Color+Random.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/Color+Random.swift rename to GridDemo/Color+Random.swift diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/Item.swift b/GridDemo/Item.swift similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/Item.swift rename to GridDemo/Item.swift diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/1.imageset/1.jpg b/GridDemo/SharedAssets.xcassets/1.imageset/1.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/1.imageset/1.jpg rename to GridDemo/SharedAssets.xcassets/1.imageset/1.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/1.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/1.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/1.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/1.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/10.imageset/10.jpg b/GridDemo/SharedAssets.xcassets/10.imageset/10.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/10.imageset/10.jpg rename to GridDemo/SharedAssets.xcassets/10.imageset/10.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/10.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/10.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/10.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/10.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/11.imageset/11.jpg b/GridDemo/SharedAssets.xcassets/11.imageset/11.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/11.imageset/11.jpg rename to GridDemo/SharedAssets.xcassets/11.imageset/11.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/11.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/11.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/11.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/11.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/12.imageset/12.jpg b/GridDemo/SharedAssets.xcassets/12.imageset/12.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/12.imageset/12.jpg rename to GridDemo/SharedAssets.xcassets/12.imageset/12.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/12.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/12.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/12.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/12.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/13.imageset/13.jpg b/GridDemo/SharedAssets.xcassets/13.imageset/13.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/13.imageset/13.jpg rename to GridDemo/SharedAssets.xcassets/13.imageset/13.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/13.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/13.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/13.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/13.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/14.imageset/14.jpg b/GridDemo/SharedAssets.xcassets/14.imageset/14.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/14.imageset/14.jpg rename to GridDemo/SharedAssets.xcassets/14.imageset/14.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/14.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/14.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/14.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/14.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/15.imageset/15.jpg b/GridDemo/SharedAssets.xcassets/15.imageset/15.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/15.imageset/15.jpg rename to GridDemo/SharedAssets.xcassets/15.imageset/15.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/15.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/15.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/15.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/15.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/16.imageset/16.jpg b/GridDemo/SharedAssets.xcassets/16.imageset/16.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/16.imageset/16.jpg rename to GridDemo/SharedAssets.xcassets/16.imageset/16.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/16.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/16.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/16.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/16.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/17.imageset/17.jpg b/GridDemo/SharedAssets.xcassets/17.imageset/17.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/17.imageset/17.jpg rename to GridDemo/SharedAssets.xcassets/17.imageset/17.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/17.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/17.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/17.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/17.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/18.imageset/18.jpg b/GridDemo/SharedAssets.xcassets/18.imageset/18.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/18.imageset/18.jpg rename to GridDemo/SharedAssets.xcassets/18.imageset/18.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/18.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/18.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/18.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/18.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/19.imageset/19.jpg b/GridDemo/SharedAssets.xcassets/19.imageset/19.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/19.imageset/19.jpg rename to GridDemo/SharedAssets.xcassets/19.imageset/19.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/19.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/19.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/19.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/19.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/2.imageset/2.jpg b/GridDemo/SharedAssets.xcassets/2.imageset/2.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/2.imageset/2.jpg rename to GridDemo/SharedAssets.xcassets/2.imageset/2.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/2.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/2.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/2.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/2.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/20.imageset/20.jpg b/GridDemo/SharedAssets.xcassets/20.imageset/20.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/20.imageset/20.jpg rename to GridDemo/SharedAssets.xcassets/20.imageset/20.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/20.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/20.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/20.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/20.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/21.imageset/21.jpg b/GridDemo/SharedAssets.xcassets/21.imageset/21.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/21.imageset/21.jpg rename to GridDemo/SharedAssets.xcassets/21.imageset/21.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/21.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/21.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/21.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/21.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/22.imageset/22.jpg b/GridDemo/SharedAssets.xcassets/22.imageset/22.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/22.imageset/22.jpg rename to GridDemo/SharedAssets.xcassets/22.imageset/22.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/22.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/22.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/22.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/22.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/23.imageset/23.jpg b/GridDemo/SharedAssets.xcassets/23.imageset/23.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/23.imageset/23.jpg rename to GridDemo/SharedAssets.xcassets/23.imageset/23.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/23.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/23.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/23.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/23.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/24.imageset/24.jpg b/GridDemo/SharedAssets.xcassets/24.imageset/24.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/24.imageset/24.jpg rename to GridDemo/SharedAssets.xcassets/24.imageset/24.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/24.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/24.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/24.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/24.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/25.imageset/25.jpg b/GridDemo/SharedAssets.xcassets/25.imageset/25.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/25.imageset/25.jpg rename to GridDemo/SharedAssets.xcassets/25.imageset/25.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/25.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/25.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/25.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/25.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/26.imageset/26.jpg b/GridDemo/SharedAssets.xcassets/26.imageset/26.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/26.imageset/26.jpg rename to GridDemo/SharedAssets.xcassets/26.imageset/26.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/26.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/26.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/26.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/26.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/27.imageset/27.jpg b/GridDemo/SharedAssets.xcassets/27.imageset/27.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/27.imageset/27.jpg rename to GridDemo/SharedAssets.xcassets/27.imageset/27.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/27.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/27.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/27.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/27.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/28.imageset/28.jpg b/GridDemo/SharedAssets.xcassets/28.imageset/28.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/28.imageset/28.jpg rename to GridDemo/SharedAssets.xcassets/28.imageset/28.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/28.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/28.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/28.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/28.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/29.imageset/29.jpg b/GridDemo/SharedAssets.xcassets/29.imageset/29.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/29.imageset/29.jpg rename to GridDemo/SharedAssets.xcassets/29.imageset/29.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/29.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/29.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/29.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/29.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/3.imageset/3.jpg b/GridDemo/SharedAssets.xcassets/3.imageset/3.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/3.imageset/3.jpg rename to GridDemo/SharedAssets.xcassets/3.imageset/3.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/3.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/3.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/3.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/3.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/30.imageset/30.jpg b/GridDemo/SharedAssets.xcassets/30.imageset/30.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/30.imageset/30.jpg rename to GridDemo/SharedAssets.xcassets/30.imageset/30.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/30.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/30.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/30.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/30.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/31.imageset/31.jpg b/GridDemo/SharedAssets.xcassets/31.imageset/31.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/31.imageset/31.jpg rename to GridDemo/SharedAssets.xcassets/31.imageset/31.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/31.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/31.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/31.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/31.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/32.imageset/32.jpg b/GridDemo/SharedAssets.xcassets/32.imageset/32.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/32.imageset/32.jpg rename to GridDemo/SharedAssets.xcassets/32.imageset/32.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/32.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/32.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/32.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/32.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/33.imageset/33.jpg b/GridDemo/SharedAssets.xcassets/33.imageset/33.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/33.imageset/33.jpg rename to GridDemo/SharedAssets.xcassets/33.imageset/33.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/33.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/33.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/33.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/33.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/34.imageset/34.jpg b/GridDemo/SharedAssets.xcassets/34.imageset/34.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/34.imageset/34.jpg rename to GridDemo/SharedAssets.xcassets/34.imageset/34.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/34.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/34.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/34.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/34.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/35.imageset/35.jpg b/GridDemo/SharedAssets.xcassets/35.imageset/35.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/35.imageset/35.jpg rename to GridDemo/SharedAssets.xcassets/35.imageset/35.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/35.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/35.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/35.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/35.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/36.imageset/36.jpg b/GridDemo/SharedAssets.xcassets/36.imageset/36.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/36.imageset/36.jpg rename to GridDemo/SharedAssets.xcassets/36.imageset/36.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/36.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/36.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/36.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/36.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/37.imageset/37.jpg b/GridDemo/SharedAssets.xcassets/37.imageset/37.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/37.imageset/37.jpg rename to GridDemo/SharedAssets.xcassets/37.imageset/37.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/37.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/37.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/37.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/37.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/38.imageset/38.jpg b/GridDemo/SharedAssets.xcassets/38.imageset/38.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/38.imageset/38.jpg rename to GridDemo/SharedAssets.xcassets/38.imageset/38.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/38.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/38.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/38.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/38.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/39.imageset/39.jpg b/GridDemo/SharedAssets.xcassets/39.imageset/39.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/39.imageset/39.jpg rename to GridDemo/SharedAssets.xcassets/39.imageset/39.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/39.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/39.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/39.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/39.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/4.imageset/4.jpg b/GridDemo/SharedAssets.xcassets/4.imageset/4.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/4.imageset/4.jpg rename to GridDemo/SharedAssets.xcassets/4.imageset/4.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/4.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/4.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/4.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/4.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/40.imageset/40.jpg b/GridDemo/SharedAssets.xcassets/40.imageset/40.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/40.imageset/40.jpg rename to GridDemo/SharedAssets.xcassets/40.imageset/40.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/40.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/40.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/40.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/40.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/41.imageset/41.jpg b/GridDemo/SharedAssets.xcassets/41.imageset/41.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/41.imageset/41.jpg rename to GridDemo/SharedAssets.xcassets/41.imageset/41.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/41.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/41.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/41.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/41.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/42.imageset/42.jpg b/GridDemo/SharedAssets.xcassets/42.imageset/42.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/42.imageset/42.jpg rename to GridDemo/SharedAssets.xcassets/42.imageset/42.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/42.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/42.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/42.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/42.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/43.imageset/43.jpg b/GridDemo/SharedAssets.xcassets/43.imageset/43.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/43.imageset/43.jpg rename to GridDemo/SharedAssets.xcassets/43.imageset/43.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/43.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/43.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/43.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/43.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/44.imageset/44.jpg b/GridDemo/SharedAssets.xcassets/44.imageset/44.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/44.imageset/44.jpg rename to GridDemo/SharedAssets.xcassets/44.imageset/44.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/44.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/44.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/44.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/44.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/45.imageset/45.jpg b/GridDemo/SharedAssets.xcassets/45.imageset/45.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/45.imageset/45.jpg rename to GridDemo/SharedAssets.xcassets/45.imageset/45.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/45.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/45.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/45.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/45.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/46.imageset/46.jpg b/GridDemo/SharedAssets.xcassets/46.imageset/46.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/46.imageset/46.jpg rename to GridDemo/SharedAssets.xcassets/46.imageset/46.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/46.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/46.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/46.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/46.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/47.imageset/47.jpg b/GridDemo/SharedAssets.xcassets/47.imageset/47.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/47.imageset/47.jpg rename to GridDemo/SharedAssets.xcassets/47.imageset/47.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/47.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/47.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/47.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/47.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/48.imageset/48.jpg b/GridDemo/SharedAssets.xcassets/48.imageset/48.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/48.imageset/48.jpg rename to GridDemo/SharedAssets.xcassets/48.imageset/48.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/48.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/48.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/48.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/48.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/49.imageset/49.jpg b/GridDemo/SharedAssets.xcassets/49.imageset/49.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/49.imageset/49.jpg rename to GridDemo/SharedAssets.xcassets/49.imageset/49.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/49.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/49.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/49.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/49.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/5.imageset/5.jpg b/GridDemo/SharedAssets.xcassets/5.imageset/5.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/5.imageset/5.jpg rename to GridDemo/SharedAssets.xcassets/5.imageset/5.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/5.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/5.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/5.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/5.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/50.imageset/50.jpg b/GridDemo/SharedAssets.xcassets/50.imageset/50.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/50.imageset/50.jpg rename to GridDemo/SharedAssets.xcassets/50.imageset/50.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/50.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/50.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/50.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/50.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/51.imageset/51.jpg b/GridDemo/SharedAssets.xcassets/51.imageset/51.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/51.imageset/51.jpg rename to GridDemo/SharedAssets.xcassets/51.imageset/51.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/51.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/51.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/51.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/51.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/52.imageset/52.jpg b/GridDemo/SharedAssets.xcassets/52.imageset/52.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/52.imageset/52.jpg rename to GridDemo/SharedAssets.xcassets/52.imageset/52.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/52.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/52.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/52.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/52.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/53.imageset/53.jpg b/GridDemo/SharedAssets.xcassets/53.imageset/53.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/53.imageset/53.jpg rename to GridDemo/SharedAssets.xcassets/53.imageset/53.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/53.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/53.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/53.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/53.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/54.imageset/54.jpg b/GridDemo/SharedAssets.xcassets/54.imageset/54.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/54.imageset/54.jpg rename to GridDemo/SharedAssets.xcassets/54.imageset/54.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/54.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/54.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/54.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/54.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/55.imageset/55.jpg b/GridDemo/SharedAssets.xcassets/55.imageset/55.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/55.imageset/55.jpg rename to GridDemo/SharedAssets.xcassets/55.imageset/55.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/55.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/55.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/55.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/55.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/56.imageset/56.jpg b/GridDemo/SharedAssets.xcassets/56.imageset/56.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/56.imageset/56.jpg rename to GridDemo/SharedAssets.xcassets/56.imageset/56.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/56.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/56.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/56.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/56.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/57.imageset/57.jpg b/GridDemo/SharedAssets.xcassets/57.imageset/57.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/57.imageset/57.jpg rename to GridDemo/SharedAssets.xcassets/57.imageset/57.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/57.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/57.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/57.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/57.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/58.imageset/58.jpg b/GridDemo/SharedAssets.xcassets/58.imageset/58.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/58.imageset/58.jpg rename to GridDemo/SharedAssets.xcassets/58.imageset/58.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/58.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/58.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/58.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/58.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/59.imageset/59.jpg b/GridDemo/SharedAssets.xcassets/59.imageset/59.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/59.imageset/59.jpg rename to GridDemo/SharedAssets.xcassets/59.imageset/59.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/59.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/59.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/59.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/59.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/6.imageset/6.jpg b/GridDemo/SharedAssets.xcassets/6.imageset/6.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/6.imageset/6.jpg rename to GridDemo/SharedAssets.xcassets/6.imageset/6.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/6.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/6.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/6.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/6.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/60.imageset/60.jpg b/GridDemo/SharedAssets.xcassets/60.imageset/60.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/60.imageset/60.jpg rename to GridDemo/SharedAssets.xcassets/60.imageset/60.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/60.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/60.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/60.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/60.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/61.imageset/61.jpg b/GridDemo/SharedAssets.xcassets/61.imageset/61.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/61.imageset/61.jpg rename to GridDemo/SharedAssets.xcassets/61.imageset/61.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/61.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/61.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/61.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/61.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/62.imageset/62.jpg b/GridDemo/SharedAssets.xcassets/62.imageset/62.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/62.imageset/62.jpg rename to GridDemo/SharedAssets.xcassets/62.imageset/62.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/62.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/62.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/62.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/62.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/63.imageset/63.jpg b/GridDemo/SharedAssets.xcassets/63.imageset/63.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/63.imageset/63.jpg rename to GridDemo/SharedAssets.xcassets/63.imageset/63.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/63.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/63.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/63.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/63.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/64.imageset/64.jpg b/GridDemo/SharedAssets.xcassets/64.imageset/64.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/64.imageset/64.jpg rename to GridDemo/SharedAssets.xcassets/64.imageset/64.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/64.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/64.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/64.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/64.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/65.imageset/65.jpg b/GridDemo/SharedAssets.xcassets/65.imageset/65.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/65.imageset/65.jpg rename to GridDemo/SharedAssets.xcassets/65.imageset/65.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/65.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/65.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/65.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/65.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/66.imageset/66.jpg b/GridDemo/SharedAssets.xcassets/66.imageset/66.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/66.imageset/66.jpg rename to GridDemo/SharedAssets.xcassets/66.imageset/66.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/66.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/66.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/66.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/66.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/67.imageset/67.jpg b/GridDemo/SharedAssets.xcassets/67.imageset/67.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/67.imageset/67.jpg rename to GridDemo/SharedAssets.xcassets/67.imageset/67.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/67.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/67.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/67.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/67.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/68.imageset/68.jpg b/GridDemo/SharedAssets.xcassets/68.imageset/68.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/68.imageset/68.jpg rename to GridDemo/SharedAssets.xcassets/68.imageset/68.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/68.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/68.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/68.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/68.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/69.imageset/69.jpg b/GridDemo/SharedAssets.xcassets/69.imageset/69.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/69.imageset/69.jpg rename to GridDemo/SharedAssets.xcassets/69.imageset/69.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/69.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/69.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/69.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/69.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/7.imageset/7.jpg b/GridDemo/SharedAssets.xcassets/7.imageset/7.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/7.imageset/7.jpg rename to GridDemo/SharedAssets.xcassets/7.imageset/7.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/7.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/7.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/7.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/7.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/8.imageset/8.jpg b/GridDemo/SharedAssets.xcassets/8.imageset/8.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/8.imageset/8.jpg rename to GridDemo/SharedAssets.xcassets/8.imageset/8.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/8.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/8.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/8.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/8.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/9.imageset/9.jpg b/GridDemo/SharedAssets.xcassets/9.imageset/9.jpg similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/9.imageset/9.jpg rename to GridDemo/SharedAssets.xcassets/9.imageset/9.jpg diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/9.imageset/Contents.json b/GridDemo/SharedAssets.xcassets/9.imageset/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/9.imageset/Contents.json rename to GridDemo/SharedAssets.xcassets/9.imageset/Contents.json diff --git a/Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/Contents.json b/GridDemo/SharedAssets.xcassets/Contents.json similarity index 100% rename from Demo/SwiftUIExtensionsDemo/Layouts/SharedAssets.xcassets/Contents.json rename to GridDemo/SharedAssets.xcassets/Contents.json diff --git a/LICENSE b/LICENSE index 6a43252..9fca77d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 SwiftUIExtensions. +Copyright (c) 2019 SwiftExtensions. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Package.swift b/Package.swift index daedc3b..426b749 100644 --- a/Package.swift +++ b/Package.swift @@ -4,23 +4,15 @@ import PackageDescription let package = Package( - name: "swiftui-extensions", + name: "Grid", platforms: [ .iOS(.v13), .macOS(.v10_15), .watchOS(.v6), .tvOS(.v13) ], products: [ - .library(name: "SwiftUIExtensions", targets: ["SwiftUIExtensions"]), - .library(name: "Grid", targets: ["Grid"]), - .library(name: "Sliders", targets: ["Sliders"]), - .library(name: "Shapes", targets: ["Shapes"]), - .library(name: "Chart", targets: ["Chart"]), + .library(name: "Grid", targets: ["Grid"]) ], targets: [ - .target(name: "SwiftUIExtensions", dependencies: ["Grid", "Sliders", "Shapes", "Chart"]), .target(name: "Grid", dependencies: []), - .target(name: "Sliders", dependencies: []), - .target(name: "Shapes", dependencies: []), - .target(name: "Chart", dependencies: ["Shapes"]), - .testTarget(name: "SwiftUIExtensionsTests", dependencies: ["SwiftUIExtensions"]) + .testTarget(name: "GridTests", dependencies: ["Grid"]) ] ) diff --git a/README.md b/README.md index c4727ee..e6a1091 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,23 @@ -# SwiftUI Extensions -Collection of useful SwiftUI extensions and elements +# SwiftUI Grid +SwiftUI Grid view layout with custom styles. -[![Build Status](https://github.com/swift-extensions/swiftui-extensions/workflows/ci/badge.svg)](https://github.com/swift-extensions/swiftui-extensions/actions) +[![Build Status](https://github.com/swift-extensions/grid/workflows/ci/badge.svg)](https://github.com/swift-extensions/grid/actions) -- Grid based layouts -- Sliders (horizontal, vertical, point) -- Custom shapes -- Data charts +## Features +- ZStack based layout +- Vertical and horizontal scrolling - Supports all apple platforms -- SwiftUI code patterns (Styles, EnvironmentValues, ViewBuilder) +- Custom styles (ModularGridStyle, StaggeredGridStyle) +- SwiftUI code patterns (StyleStructs, EnvironmentValues, ViewBuilder) - Active development for production apps -Open `/Demo/SwiftUIExtensionsDemo.xcodeproj` for more examples for iOS, macOS, watchOS and tvOS +Open `GridDemo.xcodeproj` for more examples for iOS, macOS, watchOS and tvOS -## Grid +## Styles -### Modular Grid +### ModularGridStyle (Default)
- +
```swift @@ -30,10 +30,10 @@ Grid(colors) { ) ``` -### Staggered Grid +### StaggeredGridStyle
- +
```swift @@ -47,7 +47,7 @@ Grid(1...69, id: \.self) { index in ) ``` -#### Tracks +## Tracks Tracks setting allows you to customize grid behaviour to your specific use-case. Both Modular and Staggered grid use tracks value to calculate layout. In Modular layout both columns and rows are tracks. ```swift @@ -58,7 +58,7 @@ public enum Tracks: Hashable { } ``` -##### Count +### Count Grid is split into equal fractions of size provided by a parent view. ```swift @@ -66,21 +66,21 @@ ModularGridStyle(columns: 3, rows: 3) StaggeredGridStyle(tracks: 8) ``` -##### Fixed +### Fixed Item size is fixed to a specific width or height. ```swift ModularGridStyle(columns: .fixed(100), rows: .fixed(100)) StaggeredGridStyle(tracks: .fixed(100)) ``` -##### Min +### Min Autolayout respecting a min item width or height. ```swift ModularGridStyle(columns: .min(100), rows: .min(100)) StaggeredGridStyle(tracks: .min(100)) ``` -#### Preferences +## Preferences Get item size and position with preferences ```swift struct CardsView: View { @@ -112,197 +112,6 @@ struct CardsView: View { } ``` -## Sliders - -Highly customizable sliders and tracks - -
- -
- -### Simple gradient value slider style -```swift -HSlider(value: $value, track: - LinearGradient(gradient: Gradient(colors: [.red, .orange, .yellow, .green, .blue, .purple, .pink]), startPoint: .leading, endPoint: .trailing) - .frame(height: 8) - .cornerRadius(4) -) -``` - -### Multivalue track -```swift -ZStack { - HTrack(value: value1, view: Capsule().foregroundColor(.red)).opacity(0.5) - HTrack(value: value2, view: Capsule().foregroundColor(.blue)).opacity(0.5) - HTrack(value: value3, view: Capsule().foregroundColor(.green)).opacity(0.5) -} -.animation(.spring()) -.frame(height: 8) -.background(Color.secondary.opacity(0.25)) -``` - -### Complex range slider style -```swift -HRangeSlider(range: $range, in: 0.0...1.0, step: 0.01, - track: - HRangeTrack( - range: range, - view: LinearGradient(gradient: Gradient(colors: [.yellow, .orange, .red]), startPoint: .leading, endPoint: .trailing), - mask: Rectangle(), - configuration: .init( - offsets: 32 - ) - ) - .background(Color.secondary.opacity(0.25)) - .cornerRadius(16) - .padding(.vertical, 8) - .animation(.easeInOut(duration: 0.5)), - lowerThumb: - Capsule() - .foregroundColor(.white), - upperThumb: - Capsule() - .foregroundColor(.white), - configuration: .init( - thumbSize: CGSize(width: 32, height: 64), - thumbInteractiveSize: CGSize(width: 44, height: 64) - ), - onEditingChanged: { print($0) } -) -.frame(height: 64) -``` - -### Complex point slider style -```swift -XYSlider(x: $x, y: $y, - track: - RoundedRectangle(cornerRadius: 24) - .foregroundColor( - Color(hue: 0.67, saturation: y, brightness: 1.0) - ), - thumb: - ZStack { - Capsule().frame(width: 12).foregroundColor(.white) - Capsule().frame(height: 12).foregroundColor(.white) - } - .compositingGroup() - .rotationEffect(Angle(radians: x * 10)) - .shadow(radius: 3), - configuration: .init( - options: .interactiveTrack, - thumbSize: CGSize(width: 48, height: 48) - ) -) -.frame(height: 256) -.shadow(radius: 3) -.padding() -``` - -## Chart - -Build custom charts with SwiftUI - -
- -
- -### Line Chart -
- -
- -```swift -Chart(data: [0.1, 0.3, 0.2, 0.5, 0.4, 0.9, 0.1]) - .chartStyle( - LineChartStyle(.quadCurve, lineColor: .blue, lineWidth: 5) - ) -``` - -### Area Chart -
- -
- -```swift -Chart(data: [0.1, 0.3, 0.2, 0.5, 0.4, 0.9, 0.1]) - .chartStyle( - AreaChartStyle(.quadCurve, fill: - LinearGradient(gradient: .init(colors: [Color.blue.opacity(0.2), Color.blue.opacity(0.05)]), startPoint: .top, endPoint: .bottom) - ) - ) -``` - -### Stacked Area Chart - -```swift -Chart(data: matrix) - .chartStyle( - StackedAreaChartStyle(.quadCurve, colors: [.yellow, .orange, .red]) - ) -``` - -### Column Chart -
- -
- -```swift -Chart(data: [0.1, 0.3, 0.2, 0.5, 0.4, 0.9, 0.1]) - .chartStyle( - ColumnChartStyle(column: Capsule().foregroundColor(.green), spacing: 2) - ) -``` - -### Stacked Column Chart - -```swift -Chart(data: matrix) - .chartStyle( - StackedColumnChartStyle(spacing: 2, colors: [.yellow, .orange, .red]) - ) -``` - -## Shapes - -### Regular Polygons -
- -
- -```swift -Pentagon() -Hexagon() -RegularPolygon(sides: 32) -``` - -### Lines and Curves -
- -
- -```swift -QuadCurve(unitPoints: [ - UnitPoint(x: 0.1, y: 0.1), - UnitPoint(x: 0.5, y: 0.9), - UnitPoint(x: 0.9, y: 0.1) -]) -.stroke(Color.blue, style: .init(lineWidth: 2, lineCap: .round)) -.frame(height: 200) -``` - -### Patterns -
- -
- -```swift -GridPattern(horizontalLines: 20, verticalLines: 40) - .stroke(Color.white.opacity(0.3), style: .init(lineWidth: 1, lineCap: .round)) - .frame(height: 200) - .background(Color.blue) - .padding() -``` - ## SDKs - iOS 13+ - Mac Catalyst 13.0+ @@ -311,14 +120,11 @@ GridPattern(horizontalLines: 20, verticalLines: 40) - Xcode 11.0+ ## Roadmap -- Animations -- 'CSS Grid'-like features for Modular Grid -- View Modifiers -- Rounded regular polygons -- Bar chart style +- Item rearranging +- 'CSS Grid'-like features -## Code Contibutions +## Code Contributions Feel free to contribute via fork/pull request to master branch. If you want to request a feature or report a bug please start a new issue. -## Coffee Contibutions -If you find this project useful please consider becoming a sponsor. +## Coffee Contributions +If you find this project useful please consider becoming my GitHub sponsor. diff --git a/Resources/DataVisualizations/areaChart.png b/Resources/DataVisualizations/areaChart.png deleted file mode 100644 index 9af7bd0..0000000 Binary files a/Resources/DataVisualizations/areaChart.png and /dev/null differ diff --git a/Resources/DataVisualizations/columnChart.png b/Resources/DataVisualizations/columnChart.png deleted file mode 100644 index 03eb0b9..0000000 Binary files a/Resources/DataVisualizations/columnChart.png and /dev/null differ diff --git a/Resources/DataVisualizations/customChart.png b/Resources/DataVisualizations/customChart.png deleted file mode 100644 index b3326cb..0000000 Binary files a/Resources/DataVisualizations/customChart.png and /dev/null differ diff --git a/Resources/DataVisualizations/lineChart.png b/Resources/DataVisualizations/lineChart.png deleted file mode 100644 index 5e946c6..0000000 Binary files a/Resources/DataVisualizations/lineChart.png and /dev/null differ diff --git a/Resources/Shapes/lines.png b/Resources/Shapes/lines.png deleted file mode 100644 index 2f5b897..0000000 Binary files a/Resources/Shapes/lines.png and /dev/null differ diff --git a/Resources/Shapes/patterns.png b/Resources/Shapes/patterns.png deleted file mode 100644 index ca291c3..0000000 Binary files a/Resources/Shapes/patterns.png and /dev/null differ diff --git a/Resources/Shapes/regularRectangles.png b/Resources/Shapes/regularRectangles.png deleted file mode 100644 index ef66acc..0000000 Binary files a/Resources/Shapes/regularRectangles.png and /dev/null differ diff --git a/Resources/Sliders/sliders.png b/Resources/Sliders/sliders.png deleted file mode 100644 index 7029e9f..0000000 Binary files a/Resources/Sliders/sliders.png and /dev/null differ diff --git a/Resources/Layouts/modularGrid.png b/Resources/modularGrid.png similarity index 100% rename from Resources/Layouts/modularGrid.png rename to Resources/modularGrid.png diff --git a/Resources/Layouts/staggeredGrid.png b/Resources/staggeredGrid.png similarity index 100% rename from Resources/Layouts/staggeredGrid.png rename to Resources/staggeredGrid.png diff --git a/Sources/Chart/AxisLabels.swift b/Sources/Chart/AxisLabels.swift deleted file mode 100644 index e586524..0000000 --- a/Sources/Chart/AxisLabels.swift +++ /dev/null @@ -1,39 +0,0 @@ -import SwiftUI - -public struct AxisLabels: View { - let axis: Axis - let labels: [AnyView] - - public var body: some View { - GeometryReader { geometry in - if self.axis == .horizontal { - HStack(spacing: 0) { - ForEach(0..(_ axis: Axis = .horizontal, data: Data, @ViewBuilder label: @escaping (Data.Element) -> Label) where Content == ForEach, Data : RandomAccessCollection, Label : View, Data.Element : Identifiable { - self.axis = axis - self.labels = data.map({ AnyView(label($0)) }) - } - - public init(_ axis: Axis = .horizontal, data: Data, id: KeyPath, @ViewBuilder label: @escaping (Data.Element) -> Label) where Content == ForEach, Data : RandomAccessCollection, ID : Hashable, Label : View { - self.axis = axis - self.labels = data.map({ AnyView(label($0)) }) - } - - public init