[
  {
    "path": ".gitignore",
    "content": "# Xcode\n#\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n## User settings\nxcuserdata/\n\n## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)\n*.xcscmblueprint\n*.xccheckout\n\n## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)\nbuild/\nDerivedData/\n*.moved-aside\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\n\n## Obj-C/Swift specific\n*.hmap\n\n## App packaging\n*.ipa\n*.dSYM.zip\n*.dSYM\n\n## Playgrounds\ntimeline.xctimeline\nplayground.xcworkspace\n\n# Swift Package Manager\n#\n# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.\n# Packages/\n# Package.pins\n# Package.resolved\n# *.xcodeproj\n#\n# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata\n# hence it is not needed unless you have added a package configuration file to your project\n# .swiftpm\n\n.build/\n\n# CocoaPods\n#\n# We recommend against adding the Pods directory to your .gitignore. However\n# you should judge for yourself, the pros and cons are mentioned at:\n# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control\n#\n# Pods/\n#\n# Add this line if you want to avoid checking in source code from the Xcode workspace\n# *.xcworkspace\n\n# Carthage\n#\n# Add this line if you want to avoid checking in source code from Carthage dependencies.\n# Carthage/Checkouts\n\nCarthage/Build/\n\n# Accio dependency management\nDependencies/\n.accio/\n\n# fastlane\n#\n# It is recommended to not store the screenshots in the git repo.\n# Instead, use fastlane to re-generate the screenshots whenever they are needed.\n# For more information about the recommended setup visit:\n# https://docs.fastlane.tools/best-practices/source-control/#source-control\n\nfastlane/report.xml\nfastlane/Preview.html\nfastlane/screenshots/**/*.png\nfastlane/test_output\n\n# Code Injection\n#\n# After new code Injection tools there's a generated folder /iOSInjectionProject\n# https://github.com/johnno1962/injectionforxcode\n\niOSInjectionProject/\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/AccentColor.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    {\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.imagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.imagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.imagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.imagestacklayer\"\n    },\n    {\n      \"filename\" : \"Middle.imagestacklayer\"\n    },\n    {\n      \"filename\" : \"Back.imagestacklayer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json",
    "content": "{\n  \"assets\" : [\n    {\n      \"filename\" : \"App Icon - App Store.imagestack\",\n      \"idiom\" : \"tv\",\n      \"role\" : \"primary-app-icon\",\n      \"size\" : \"1280x768\"\n    },\n    {\n      \"filename\" : \"App Icon.imagestack\",\n      \"idiom\" : \"tv\",\n      \"role\" : \"primary-app-icon\",\n      \"size\" : \"400x240\"\n    },\n    {\n      \"filename\" : \"Top Shelf Image Wide.imageset\",\n      \"idiom\" : \"tv\",\n      \"role\" : \"top-shelf-image-wide\",\n      \"size\" : \"2320x720\"\n    },\n    {\n      \"filename\" : \"Top Shelf Image.imageset\",\n      \"idiom\" : \"tv\",\n      \"role\" : \"top-shelf-image\",\n      \"size\" : \"1920x720\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"tv-marketing\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv-marketing\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"tv-marketing\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"tv-marketing\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/AxisSegmentedViewExample__tvOS_App.swift",
    "content": "//\n//  AxisSegmentedViewExample__tvOS_App.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/27.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\n\n@main\nstruct AxisSegmentedViewExample__tvOS_App: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n        }\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/27.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nstruct ContentView: View {\n    \n    @State private var tabViewSelection: Int = 0\n\n    var body: some View {\n        TabView(selection: $tabViewSelection) {\n            SegmentedListView(axisMode: .horizontal)\n                .tag(0)\n                .tabItem {\n                    Image(systemName: \"rectangle.arrowtriangle.2.inward\")\n                    Text(\"Horizontal\")\n                }\n            \n            SegmentedListView(axisMode: .vertical)\n                .tag(1)\n                .tabItem {\n                    Image(systemName: \"rectangle.portrait.arrowtriangle.2.inward\")\n                    Text(\"Vertical\")\n                }\n            \n            WithoutStyleView()\n                .tag(2)\n                .tabItem {\n                    Image(systemName: \"cpu\")\n                    Text(\"Without style\")\n                }\n            \n            CustomStyleView()\n                .tag(3)\n                .tabItem {\n                    Image(systemName: \"skew\")\n                    Text(\"Custom Style\")\n                }\n                .padding()\n        }\n        .navigationTitle(Text(\"AxisSegmentedView\"))\n        .padding()\n    }\n}\n\nstruct ContentView_Previews: PreviewProvider {\n    static var previews: some View {\n        ContentView()\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/CustomStyle.swift",
    "content": "//\n//  CustomStyle.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/25.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\npublic struct CustomStyle: View {\n    \n    @EnvironmentObject var stateValue: ASStateValue\n\n    let color: Color\n    public init(color: Color = .purple) {\n        self.color = color\n    }\n    \n    private var selectionView: some View {\n        RoundedRectangle(cornerRadius: 5)\n            .fill(Color.yellow)\n    }\n    \n    public var body: some View {\n        let selectionFrame = stateValue.selectionFrame\n        ZStack(alignment: .topLeading) {\n            Color.clear\n            RoundedRectangle(cornerRadius: 5)\n                .stroke()\n                .fill(color)\n                .frame(width: selectionFrame.width, height: selectionFrame.height)\n                .offset(x: selectionFrame.origin.x, y: selectionFrame.origin.y)\n        }\n        .animation(.easeInOut, value: stateValue.selectionIndex)\n    }\n}\n\nstruct CustomStyle_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview(constant: .init()) {\n            CustomStyle()\n                .preferredColorScheme(.dark)\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/CustomStyleView.swift",
    "content": "//\n//  CustomStyleView.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/26.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nstruct CustomStyleView: View {\n    \n    @State private var selection: Int = 0\n    \n    var body: some View {\n        AxisSegmentedView(selection: $selection, constant: .init()) {\n            Image(systemName: \"align.horizontal.left\")\n                .itemTag(0, selectArea: 0) {\n                    SelectionItemView(\"align.horizontal.left.fill\")\n                }\n            Image(systemName: \"align.horizontal.right\")\n                .itemTag(1, selectArea: 560) {\n                    SelectionItemView(\"align.horizontal.right.fill\")\n                }\n            Image(systemName: \"align.vertical.top\")\n                .itemTag(2, selectArea: 0) {\n                    SelectionItemView(\"align.vertical.top.fill\")\n                }\n            Image(systemName: \"align.vertical.bottom\")\n                .itemTag(3, selectArea: 560) {\n                    SelectionItemView(\"align.vertical.bottom.fill\")\n                }\n        } style: {\n            CustomStyle(color: .red)\n        }\n        .frame(height: 80)\n    }\n}\n\nstruct CustomStyleView_Previews: PreviewProvider {\n    static var previews: some View {\n        CustomStyleView()\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/SegmentedListView.swift",
    "content": "//\n//  SegmentedListView.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nenum StyleType: String {\n    case ASNormalStyle\n    case ASViscosityStyle\n    \n    case ASBasicStyle\n    case ASCapsuleStyle\n    case ASJellyStyle\n    case ASLineStyle\n    case ASNeumorphismStyle\n    case ASScaleStyle\n}\n\n\nstruct SegmentedListView: View {\n    \n    let axisMode: ASAxisMode\n    \n    @StateObject private var normalValue:       NormalValue = .init()\n    @StateObject private var viscosityValue:    ViscosityValue = .init()\n    \n    @StateObject private var basicValue:        BasicValue = .init()\n    @StateObject private var capsuleValue:      CapsuleValue = .init()\n    @StateObject private var jellyValue:        JellyValue = .init()\n    @StateObject private var lineValue:         LineValue = .init()\n    @StateObject private var neumorphismValue:  NeumorphismValue = .init()\n    @StateObject private var scaleValue:        ScaleValue = .init()\n    \n    var content: some View {\n        Group {\n            SegmentedViewWithControl(title: \"ABNormalStyle\", styleType: .ASNormalStyle, axisMode: axisMode, constant: $normalValue.constant, tabs: {\n                Group {\n                    Text(\"Clear\")\n                        .font(.callout)\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(0, selectArea: normalValue.selectArea0) {\n                            HStack {\n                                Image(systemName: \"checkmark.circle\")\n                                Text(\"Clear\")\n                            }\n                            .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                            .font(.callout)\n                            .foregroundColor(Color.white)\n                        }\n                    Text(\"Confusing\")\n                        .font(.callout)\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(1, selectArea: normalValue.selectArea1) {\n                            HStack {\n                                Image(systemName: \"checkmark.circle\")\n                                Text(\"Confusing\")\n                            }\n                            .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                            .font(.callout)\n                            .foregroundColor(Color.white)\n                        }\n                }\n            }, style: {\n                ASNormalStyle { _ in\n                    RoundedRectangle(cornerRadius: 5)\n                        .fill(Color(hex: 0x191919))\n                        .overlay(\n                            RoundedRectangle(cornerRadius: 5)\n                                .stroke()\n                                .fill(Color(hex: 0x282828))\n                        )\n                        .padding(3.5)\n                }\n                .background(Color(hex: 0x0B0C10))\n                .clipShape(RoundedRectangle(cornerRadius: 5))\n            })\n            SegmentedViewWithControl(title: \"ASViscosityStyle\", styleType: .ASViscosityStyle, axisMode: axisMode, constant: $viscosityValue.constant, tabs: {\n                Group {\n                    Text(\"Store\")\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .font(.callout)\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(0, selectArea: viscosityValue.selectArea0) {\n                            Text(\"Store\")\n                                .font(.callout)\n                                .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                                .foregroundColor(Color.white)\n                        }\n                    Text(\"Library\")\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .font(.callout)\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(1, selectArea: viscosityValue.selectArea1) {\n                            Text(\"Library\")\n                                .font(.callout)\n                                .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                                .foregroundColor(Color.white)\n                        }\n                    Text(\"Downloads\")\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .font(.callout)\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(2, selectArea: viscosityValue.selectArea2) {\n                            Text(\"Downloads\")\n                                .font(.callout)\n                                .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                                .foregroundColor(Color.white)\n                        }\n                }\n            }, style: {\n                ASViscosityStyle { _ in\n                    Capsule()\n                        .fill(LinearGradient(colors: [Color(hex: 0x222222), Color(hex: 0x111111)],\n                                             startPoint: axisMode == .horizontal ? UnitPoint.top : UnitPoint.leading,\n                                             endPoint: axisMode == .horizontal ? UnitPoint.bottom : UnitPoint.trailing))\n                        .overlay(\n                            Capsule()\n                                .stroke()\n                                .fill(Color.black)\n                        )\n                        .padding(2)\n                }\n                .background(Color.black.opacity(0.2))\n                .clipShape(Capsule())\n                .innerShadow(Capsule(), radius: 1, opacity: 0.5, isDark: true)\n            })\n            \n            SegmentedViewWithControl(title: \"ASBasicStyle\", styleType: .ASBasicStyle, axisMode: axisMode, constant: $basicValue.constant, tabs: {\n                Group {\n                    Text(\"Male\")\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .font(.callout)\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(0, selectArea: basicValue.selectArea0) {\n                            Text(\"Male\")\n                                .font(.callout)\n                                .fixedSize()\n                                .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                                .foregroundColor(Color.white)\n                        }\n                    Text(\"Female\")\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .font(.callout)\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(1, selectArea: basicValue.selectArea1) {\n                            Text(\"Female\")\n                                .font(.callout)\n                                .fixedSize()\n                                .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                                .foregroundColor(Color.white)\n                        }\n                    Text(\"Other\")\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .font(.callout)\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(2, selectArea: basicValue.selectArea2) {\n                            Text(\"Other\")\n                                .font(.callout)\n                                .fixedSize()\n                                .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                                .foregroundColor(Color.white)\n                        }\n                }\n            }, style: {\n                ASBasicStyle(backgroundColor: basicValue.backgroundColor,\n                             foregroundColor: basicValue.foregroundColor,\n                             cornerRadius: basicValue.cornerRadius,\n                             padding: basicValue.padding,\n                             isApplySelectionCornerRadius: basicValue.isApplySelectionCornerRadius,\n                             movementMode: basicValue.movementMode)\n            })\n            \n            SegmentedViewWithControl(title: \"ASJellyStyle\", styleType: .ASJellyStyle, axisMode: axisMode, constant: $jellyValue.constant, tabs: {\n                Group {\n                    Image(systemName: \"align.horizontal.left\")\n                        .itemTag(0, selectArea: jellyValue.selectArea0) {\n                            SelectionItemView(\"align.horizontal.left.fill\")\n                        }\n                    Image(systemName: \"align.horizontal.right\")\n                        .itemTag(1, selectArea: jellyValue.selectArea1) {\n                            SelectionItemView(\"align.horizontal.right.fill\")\n                        }\n                    Image(systemName: \"align.vertical.top\")\n                        .itemTag(2, selectArea: jellyValue.selectArea2) {\n                            SelectionItemView(\"align.vertical.top.fill\")\n                        }\n                    Image(systemName: \"align.vertical.bottom\")\n                        .itemTag(3, selectArea: jellyValue.selectArea3) {\n                            SelectionItemView(\"align.vertical.bottom.fill\")\n                        }\n                }\n            }, style: {\n                ASJellyStyle(backgroundColor: jellyValue.backgroundColor,\n                             foregroundColor: jellyValue.foregroundColor,\n                             jellyRadius: jellyValue.jellyRadius,\n                             jellyDepth: jellyValue.jellyDepth,\n                             jellyEdge: jellyValue.jellyEdge)\n//                                .overlay(\n//                                    RoundedRectangle(cornerRadius: 11)\n//                                        .stroke(.purple, lineWidth: 1)\n//                                        .padding(1)\n//                                )\n//                                .clipShape(RoundedRectangle(cornerRadius: 11))\n            })\n            \n            SegmentedViewWithControl(title: \"ASLineStyle\", styleType: .ASLineStyle, axisMode: axisMode, constant: $lineValue.constant, tabs: {\n                Group {\n                    Image(systemName: \"align.horizontal.left\")\n                        .itemTag(0, selectArea: lineValue.selectArea0) {\n                            SelectionItemView(\"align.horizontal.left.fill\")\n                        }\n                    Image(systemName: \"align.horizontal.right\")\n                        .itemTag(1, selectArea: lineValue.selectArea1) {\n                            SelectionItemView(\"align.horizontal.right.fill\")\n                        }\n                    Image(systemName: \"align.vertical.top\")\n                        .itemTag(2, selectArea: lineValue.selectArea2) {\n                            SelectionItemView(\"align.vertical.top.fill\")\n                        }\n                    Image(systemName: \"align.vertical.bottom\")\n                        .itemTag(3, selectArea: lineValue.selectArea3) {\n                            SelectionItemView(\"align.vertical.bottom.fill\")\n                        }\n                }\n            }, style: {\n                ASLineStyle(lineColor: lineValue.lineColor,\n                            lineSmallWidth: lineValue.lineSmallWidth,\n                            lineLargeScale: lineValue.lineLargeScale,\n                            lineEdge: lineValue.lineEdge,\n                            movementMode: lineValue.movementMode)\n                .overlay(\n                    Rectangle()\n                        .stroke()\n                        .fill(Color(hex: 0x303030))\n                )\n            })\n            \n            SegmentedViewWithControl(title: \"ASCapsuleStyle\", styleType: .ASCapsuleStyle, axisMode: axisMode, constant: $capsuleValue.constant, tabs: {\n                Group {\n                    Image(systemName: \"align.horizontal.left\")\n                        .itemTag(0, selectArea: capsuleValue.selectArea0) {\n                            SelectionItemView(\"align.horizontal.left.fill\")\n                        }\n                    Image(systemName: \"align.horizontal.right\")\n                        .itemTag(1, selectArea: capsuleValue.selectArea1) {\n                            SelectionItemView(\"align.horizontal.right.fill\")\n                        }\n                    Image(systemName: \"align.vertical.top\")\n                        .itemTag(2, selectArea: capsuleValue.selectArea2) {\n                            SelectionItemView(\"align.vertical.top.fill\")\n                        }\n                    Image(systemName: \"align.vertical.bottom\")\n                        .itemTag(3, selectArea: capsuleValue.selectArea3) {\n                            SelectionItemView(\"align.vertical.bottom.fill\")\n                        }\n                }\n            }, style: {\n                ASCapsuleStyle(backgroundColor: capsuleValue.backgroundColor,\n                               foregroundColor: capsuleValue.foregroundColor,\n                               movementMode: capsuleValue.movementMode)\n            })\n\n            SegmentedViewWithControl(title: \"ASNeumorphismStyle\", styleType: .ASNeumorphismStyle, axisMode: axisMode, constant: $neumorphismValue.constant, area: 120, tabs: {\n                Group {\n                    Image(systemName: \"align.horizontal.left\")\n                        .itemTag(0, selectArea: neumorphismValue.selectArea0) {\n                            SelectionItemView(\"align.horizontal.left.fill\")\n                        }\n                    Image(systemName: \"align.horizontal.right\")\n                        .itemTag(1, selectArea: neumorphismValue.selectArea1) {\n                            SelectionItemView(\"align.horizontal.right.fill\")\n                        }\n                    Image(systemName: \"align.vertical.top\")\n                        .itemTag(2, selectArea: neumorphismValue.selectArea2) {\n                            SelectionItemView(\"align.vertical.top.fill\")\n                        }\n                    Image(systemName: \"align.vertical.bottom\")\n                        .itemTag(3, selectArea: neumorphismValue.selectArea3) {\n                            SelectionItemView(\"align.vertical.bottom.fill\")\n                        }\n                }\n            }, style: {\n                ASNeumorphismStyle(backgroundColor: neumorphismValue.backgroundColor,\n                                   foregroundColor: neumorphismValue.foregroundColor,\n                                   cornerRadius: neumorphismValue.cornerRadius,\n                                   padding: neumorphismValue.padding,\n                                   shadowRadius: neumorphismValue.shadowRadius,\n                                   shadowOpacity: neumorphismValue.shadowOpacity,\n                                   isInner: neumorphismValue.isInner,\n                                   movementMode: neumorphismValue.movementMode)\n            })\n            \n            SegmentedViewWithControl(title: \"ASScaleStyle\", styleType: .ASScaleStyle, axisMode: axisMode, constant: $scaleValue.constant, tabs: {\n                Group {\n                    Image(systemName: \"align.horizontal.left\")\n                        .itemTag(0, selectArea: scaleValue.selectArea0) {\n                            SelectionItemView(\"align.horizontal.left.fill\")\n                        }\n                    Image(systemName: \"align.horizontal.right\")\n                        .itemTag(1, selectArea: scaleValue.selectArea1) {\n                            SelectionItemView(\"align.horizontal.right.fill\")\n                        }\n                    Image(systemName: \"align.vertical.top\")\n                        .itemTag(2, selectArea: scaleValue.selectArea2) {\n                            SelectionItemView(\"align.vertical.top.fill\")\n                        }\n                    Image(systemName: \"align.vertical.bottom\")\n                        .itemTag(3, selectArea: scaleValue.selectArea3) {\n                            SelectionItemView(\"align.vertical.bottom.fill\")\n                        }\n                }\n            }, style: {\n                ASScaleStyle(backgroundColor: scaleValue.backgroundColor,\n                             foregroundColor: scaleValue.foregroundColor,\n                             cornerRadius: scaleValue.cornerRadius,\n                             minimumScale: scaleValue.minimumScale)\n            })\n        }\n    }\n    var body: some View {\n        ZStack {\n            if axisMode == .horizontal {\n                ScrollView {\n                    VStack(spacing: 20) {\n                        content\n                    }\n                    .padding(.horizontal, 5)\n                }\n            }else {\n                ScrollView(.horizontal) {\n                    HStack(spacing: 20) {\n                        content\n                    }\n                    .padding(.vertical, 5)\n                }\n            }\n        }\n        .environmentObject(normalValue)\n        .environmentObject(viscosityValue)\n        .environmentObject(basicValue)\n        .environmentObject(capsuleValue)\n        .environmentObject(jellyValue)\n        .environmentObject(lineValue)\n        .environmentObject(neumorphismValue)\n        .environmentObject(scaleValue)\n    }\n}\n\nstruct SegmentedListView_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedListView(axisMode: .horizontal)\n            .padding()\n            .preferredColorScheme(.dark)\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/SegmentedViewWithControl.swift",
    "content": "//\n//  SegmentedViewWithControl.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nstruct SegmentedViewWithControl<Tabs: View, Style: View> : View {\n    \n    @State private var isShowControlView: Bool = false\n    @State private var selection: Int = 0\n    @State private var maxSelectArea: CGFloat = 0\n\n    @EnvironmentObject private var normalValue:         NormalValue\n    @EnvironmentObject private var viscosityValue:      ViscosityValue\n    \n    @EnvironmentObject private var basicValue:          BasicValue\n    @EnvironmentObject private var capsuleValue:        CapsuleValue\n    @EnvironmentObject private var jellyValue:          JellyValue\n    @EnvironmentObject private var lineValue:           LineValue\n    @EnvironmentObject private var neumorphismValue:    NeumorphismValue\n    @EnvironmentObject private var scaleValue:          ScaleValue\n    \n    let title: String\n    let styleType: StyleType\n    let axisMode: ASAxisMode\n    @Binding var constant: ASConstant\n    let area: CGFloat\n    var tabs: () -> Tabs\n    var style: () -> Style\n    \n    init(title: String,\n         styleType: StyleType,\n         axisMode: ASAxisMode = .horizontal,\n         constant: Binding<ASConstant>,\n         area: CGFloat = 80,\n         @ViewBuilder tabs: @escaping () -> Tabs,\n         @ViewBuilder style: @escaping () -> Style) {\n        self.title = title\n        self.styleType = styleType\n        self.axisMode = axisMode\n        _constant = constant\n        self.area = area\n        self.tabs = tabs\n        self.style = style\n    }\n    \n    private var segmentedView: some View {\n        AxisSegmentedView(selection: $selection, constant: constant, {\n            tabs()\n        }, style: {\n            style()\n        })\n        .font(.system(size: 20))\n    }\n    \n    private var controlView: some View {\n        ZStack {\n            Color(hex: 0x030303)\n                .cornerRadius(8)\n            ScrollView {\n                VStack {\n                    getStyleControlView()\n                    VStack(alignment: .leading, spacing: 8) {\n                        Text(\"● Divide Line\").opacity(0.5).font(.caption)\n                        HStack {\n                            Text(\"isShowSelectionLine\")\n                            Spacer()\n                            Toggle(isOn: $constant.divideLine.isShowSelectionLine) {}\n                        }\n                    }\n                    .padding()\n                    \n                    VStack(alignment: .leading, spacing: 8) {\n                        Text(\"● Active\").opacity(0.5).font(.caption)\n                        HStack {\n                            Text(\"ActivatedGeometryEffect\")\n                            Spacer()\n                            Toggle(isOn: $constant.isActivatedGeometryEffect) {}\n                        }\n                    }\n                    .padding()\n                }\n            }\n            .font(.footnote)\n            .labelsHidden()\n        }\n    }\n    \n    var body: some View {\n        ZStack {\n            ZStack {\n                if constant.axisMode == .horizontal {\n                    segmentedView\n                        .frame(height: area)\n                }else {\n                    segmentedView\n                        .frame(width: area)\n                }\n            }\n            .padding(10)\n        }\n        .background(\n            GeometryReader { proxy in\n                Color(hex: 0x15151A)\n                    .cornerRadius(8)\n                    .onAppear {\n                        self.maxSelectArea = constant.axisMode == .horizontal ? proxy.size.width * 0.5 : proxy.size.height * 0.5\n                    }\n            }\n        )\n        .onAppear {\n            DispatchQueue.main.async {\n                constant.axisMode = axisMode\n            }\n        }\n    }\n    \n    private func getStyleControlView() -> some View {\n        Group {\n            VStack(alignment: .leading, spacing: 8) {\n                HStack {\n                    Text(\"● \" + title).opacity(0.5).font(.caption)\n                    Spacer()\n                }\n                switch styleType {\n                case .ASBasicStyle:\n                    Group {\n                        HStack {\n                            Text(\"isApplySelectionCornerRadius\")\n                            Spacer()\n                            Toggle(isOn: $basicValue.isApplySelectionCornerRadius) {}\n                        }\n                        HStack {\n                            Text(\"Movement Mode\")\n                            Spacer()\n                            Picker(selection: $basicValue.movementMode) {\n                                Text(\"Normal\").tag(ASMovementMode.normal)\n                                Text(\"Viscosity\").tag(ASMovementMode.viscosity)\n                            } label: {}\n                                .pickerStyle(.segmented)\n                        }\n                    }\n                case .ASCapsuleStyle:\n                    Group {\n                        HStack {\n                            Text(\"Movement Mode\")\n                            Spacer()\n                            Picker(selection: $capsuleValue.movementMode) {\n                                Text(\"Normal\").tag(ASMovementMode.normal)\n                                Text(\"Viscosity\").tag(ASMovementMode.viscosity)\n                            } label: {}\n                                .pickerStyle(.segmented)\n                        }\n                    }\n                case .ASJellyStyle:\n                    Group {\n                        HStack {\n                            Text(\"Jelly Edge\")\n                            Spacer()\n                            Picker(selection: $jellyValue.jellyEdge) {\n                                Text(\"Bottom/Trailing\").tag(ASEdgeMode.bottomTrailing)\n                                Text(\"Top/Leading\").tag(ASEdgeMode.topLeading)\n                            } label: {}\n                                .pickerStyle(.segmented)\n                        }\n                    }\n                case .ASLineStyle:\n                    Group {\n                        HStack {\n                            Text(\"Line Edge\")\n                            Spacer()\n                            Picker(selection: $lineValue.lineEdge) {\n                                Text(\"Bottom/Trailing\").tag(ASEdgeMode.bottomTrailing)\n                                Text(\"Top/Leading\").tag(ASEdgeMode.topLeading)\n                            } label: {}\n                                .pickerStyle(.segmented)\n                        }\n                        HStack {\n                            Text(\"Movement Mode\")\n                            Spacer()\n                            Picker(selection: $lineValue.movementMode) {\n                                Text(\"Normal\").tag(ASMovementMode.normal)\n                                Text(\"Viscosity\").tag(ASMovementMode.viscosity)\n                            } label: {}\n                                .pickerStyle(.segmented)\n                        }\n                    }\n                case .ASNeumorphismStyle:\n                    Group {\n                        HStack {\n                            Text(\"isInner\")\n                            Spacer()\n                            Toggle(isOn: $neumorphismValue.isInner) {}\n                        }\n                        HStack {\n                            Text(\"Movement Mode\")\n                            Spacer()\n                            Picker(selection: $neumorphismValue.movementMode) {\n                                Text(\"Normal\").tag(ASMovementMode.normal)\n                                Text(\"Viscosity\").tag(ASMovementMode.viscosity)\n                            } label: {}\n                                .pickerStyle(.segmented)\n                        }\n                    }\n                default: EmptyView()\n                }\n            }\n            .padding()\n        }\n    }\n}\n\nstruct SegmentedViewWithControl_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewWithControl(title: \"ABBasicStyle\", styleType: .ASBasicStyle, axisMode: .horizontal, constant: .constant(ASConstant.init()), tabs: {\n            Group {\n                Image(systemName: \"align.horizontal.left\")\n                    .itemTag(0, selectArea: 0) {\n                        SelectionItemView(\"align.horizontal.left.fill\")\n                    }\n                Image(systemName: \"align.horizontal.right\")\n                    .itemTag(1, selectArea: 0) {\n                        SelectionItemView(\"align.horizontal.right.fill\")\n                    }\n                Image(systemName: \"align.vertical.top\")\n                    .itemTag(2, selectArea: 0) {\n                        SelectionItemView(\"align.vertical.top.fill\")\n                    }\n                Image(systemName: \"align.vertical.bottom\")\n                    .itemTag(3, selectArea: 0) {\n                        SelectionItemView(\"align.vertical.bottom.fill\")\n                    }\n            }\n        }, style: {\n            ASBasicStyle()\n        })\n        .padding()\n        .preferredColorScheme(.dark)\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/SelectionItemView.swift",
    "content": "//\n//  SelectionItemView.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nstruct SelectionItemView: View {\n    \n    @EnvironmentObject private var stateValue: ASStateValue\n    @State private var scale: CGFloat = 1\n    \n    let iconName: String\n    \n    init(_ iconName: String) {\n        self.iconName = iconName\n    }\n    \n    var body: some View {\n        Image(systemName: iconName)\n            .foregroundColor(Color.white)\n            .scaleEffect(scale)\n            .onAppear {\n                scale = 1\n                if !stateValue.isInitialRun {\n                    withAnimation(.easeInOut(duration: 0.26)) {\n                        scale = 1.2\n                    }\n                    withAnimation(.easeInOut(duration: 0.26).delay(0.26)) {\n                        scale = 1\n                    }\n                }\n            }\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/ViewModel/BacisValue.swift",
    "content": "//\n//  BacisValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass BasicValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color.white.opacity(0.2), scale: 0.3))\n    \n    @Published var backgroundColor: Color = .gray.opacity(0.3)\n    @Published var foregroundColor: Color = .black.opacity(0.7)\n    @Published var cornerRadius: CGFloat = 6\n    @Published var padding: CGFloat = 3\n    @Published var isApplySelectionCornerRadius: Bool = true\n    @Published var movementMode: ASMovementMode = .viscosity\n    \n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/ViewModel/CapsuleValue.swift",
    "content": "//\n//  CapsuleValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass CapsuleValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x444444), scale: 0))\n    \n    @Published var backgroundColor: Color = .gray.opacity(0.4)\n    @Published var foregroundColor: Color = Color.blue\n    @Published var movementMode: ASMovementMode = .viscosity\n    \n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n    @Published var selectArea3: CGFloat = 0\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/ViewModel/JellyValue.swift",
    "content": "//\n//  JellyValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass JellyValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x444444), scale: 0))\n    \n    @Published var backgroundColor: Color = .gray.opacity(0.1)\n    @Published var foregroundColor: Color = .purple\n    @Published var jellyRadius: CGFloat = 110\n    @Published var jellyDepth: CGFloat = 0.9\n    @Published var jellyEdge: ASEdgeMode = .bottomTrailing\n    \n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n    @Published var selectArea3: CGFloat = 0\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/ViewModel/LineValue.swift",
    "content": "//\n//  LineValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass LineValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x202020), scale: 0))\n    \n    @Published var lineColor: Color = .blue\n    @Published var lineSmallWidth: CGFloat = 2\n    @Published var lineLargeScale: CGFloat = 1.0\n    @Published var lineEdge: ASEdgeMode = .bottomTrailing\n    @Published var movementMode: ASMovementMode = .viscosity\n    \n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n    @Published var selectArea3: CGFloat = 0\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/ViewModel/NeumorphismValue.swift",
    "content": "//\n//  NeumorphismValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass NeumorphismValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x444444), scale: 0))\n    \n    @Published var backgroundColor: Color = .clear\n    @Published var foregroundColor: Color = .clear\n    @Published var cornerRadius: CGFloat = 11\n    @Published var padding: CGFloat = 12\n    @Published var shadowRadius: CGFloat = 5\n    @Published var shadowOpacity: CGFloat = 0.7\n    @Published var isInner: Bool = false\n    @Published var movementMode: ASMovementMode = .viscosity\n\n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n    @Published var selectArea3: CGFloat = 0\n    \n    init(backgroundColor: Color = Color(hex: 0x31353A),\n         foregroundColor: Color = Color(hex: 0x31353A),\n         cornerRadius: CGFloat = 11,\n         padding: CGFloat = 12,\n         shadowRadius: CGFloat = 5,\n         shadowOpacity: CGFloat = 0.7,\n         isInner: Bool = false,\n         movementMode: ASMovementMode = .viscosity) {\n        \n        self.backgroundColor = backgroundColor\n        self.foregroundColor = foregroundColor\n        self.cornerRadius = cornerRadius\n        self.padding = padding\n        self.shadowRadius = shadowRadius\n        self.isInner = isInner\n        self.movementMode = movementMode\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/ViewModel/NormalValue.swift",
    "content": "//\n//  NormalValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/24.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass NormalValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x444444), scale: 0))\n    \n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/ViewModel/ScaleValue.swift",
    "content": "//\n//  ScaleValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass ScaleValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x444444), scale: 0))\n    \n    @Published var backgroundColor: Color = .clear\n    @Published var foregroundColor: Color = Color.blue\n    @Published var cornerRadius: CGFloat = 11\n    @Published var minimumScale: CGFloat = 0.1\n    \n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n    @Published var selectArea3: CGFloat = 0\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/ViewModel/ViscosityValue.swift",
    "content": "//\n//  ViscosityValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/24.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass ViscosityValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x444444), scale: 0))\n\n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample (tvOS)/WithoutStyleView.swift",
    "content": "//\n//  WithoutStyleView.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nstruct WithoutStyleView: View {\n\n    @State private var selection: Int = 0\n    @State private var constant = ASConstant(axisMode: .horizontal)\n\n    var body: some View {\n        AxisSegmentedView(selection: $selection, constant: constant) {\n            TabViews()\n        }\n    }\n}\n\nstruct TabViews: View {\n    \n    @State private var maxArea1: CGFloat = 600\n    @EnvironmentObject private var stateValue: ASStateValue\n    \n    let colors = [Color(hex: 0x295A76), Color(hex: 0x7FACAA), Color(hex: 0xEBF4CC), Color(hex: 0xE79875), Color(hex: 0xBA523C), Color(hex: 0x295A76)]\n    \n    var listView: some View {\n        List(0...100, id: \\.self) { index in\n            Button {\n                print(\"click\")\n            } label: {\n                Text(\"Index \\(index)\")\n            }\n        }.listStyle(.plain)\n    }\n    \n    var body: some View {\n        Group {\n            Rectangle()\n                .fill(colors[0])\n                .overlay(\n                    Text(\"0\")\n                )\n                .itemTag(0, selectArea: maxArea1) {\n                    Circle()\n                        .fill(.red)\n                        .overlay(\n                            Text(\"0\")\n                        )\n                }\n            Rectangle()\n                .fill(colors[1])\n                .overlay(\n                    Text(\"1\")\n                )\n                .itemTag(1, selectArea: maxArea1) {\n                    listView\n                }\n            Rectangle()\n                .fill(colors[2])\n                .overlay(\n                    Text(\"2\")\n                )\n                .itemTag(2, selectArea: maxArea1) {\n                    listView\n                }\n            Rectangle()\n                .fill(colors[3])\n                .overlay(\n                    Text(\"3\")\n                )\n                .itemTag(3, selectArea: maxArea1) {\n                    listView\n                }\n        }\n    }\n}\n\nstruct WithoutStyleView_Previews: PreviewProvider {\n    static var previews: some View {\n        WithoutStyleView()\n            .preferredColorScheme(.dark)\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 55;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t4B0EE0EA27E4B84E005B804E /* AxisSegmentedViewExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B0EE0DA27E4B84D005B804E /* AxisSegmentedViewExampleApp.swift */; };\n\t\t4B0EE0EB27E4B84E005B804E /* AxisSegmentedViewExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B0EE0DA27E4B84D005B804E /* AxisSegmentedViewExampleApp.swift */; };\n\t\t4B0EE0EC27E4B84E005B804E /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B0EE0DB27E4B84D005B804E /* ContentView.swift */; };\n\t\t4B0EE0ED27E4B84E005B804E /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B0EE0DB27E4B84D005B804E /* ContentView.swift */; };\n\t\t4B0EE0EE27E4B84E005B804E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4B0EE0DC27E4B84E005B804E /* Assets.xcassets */; };\n\t\t4B0EE0EF27E4B84E005B804E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4B0EE0DC27E4B84E005B804E /* Assets.xcassets */; };\n\t\t4B0EE0FC27E4BE88005B804E /* AxisSegmentedView in Frameworks */ = {isa = PBXBuildFile; productRef = 4B0EE0FB27E4BE88005B804E /* AxisSegmentedView */; };\n\t\t4B0EE0FE27E4BE8C005B804E /* AxisSegmentedView in Frameworks */ = {isa = PBXBuildFile; productRef = 4B0EE0FD27E4BE8B005B804E /* AxisSegmentedView */; };\n\t\t4B4D2CDA27EFFD6800EE251F /* AxisSegmentedViewExample__tvOS_App.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2CD927EFFD6800EE251F /* AxisSegmentedViewExample__tvOS_App.swift */; };\n\t\t4B4D2CDC27EFFD6800EE251F /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2CDB27EFFD6800EE251F /* ContentView.swift */; };\n\t\t4B4D2CDE27EFFD6900EE251F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4B4D2CDD27EFFD6900EE251F /* Assets.xcassets */; };\n\t\t4B4D2CE127EFFD6900EE251F /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4B4D2CE027EFFD6900EE251F /* Preview Assets.xcassets */; };\n\t\t4B4D2CE627EFFE3700EE251F /* AxisSegmentedView in Frameworks */ = {isa = PBXBuildFile; productRef = 4B4D2CE527EFFE3700EE251F /* AxisSegmentedView */; };\n\t\t4B4D2CE727EFFE7200EE251F /* Color+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6EC27EAFEBB00663DED /* Color+Extensions.swift */; };\n\t\t4B4D2D0227F0043F00EE251F /* SegmentedListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2CFE27F0043F00EE251F /* SegmentedListView.swift */; };\n\t\t4B4D2D0327F0043F00EE251F /* CustomStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2D0027F0043F00EE251F /* CustomStyle.swift */; };\n\t\t4B4D2D0427F0043F00EE251F /* WithoutStyleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2CFF27F0043F00EE251F /* WithoutStyleView.swift */; };\n\t\t4B4D2D0527F0043F00EE251F /* SegmentedViewWithControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2CFD27F0043F00EE251F /* SegmentedViewWithControl.swift */; };\n\t\t4B4D2D0627F0043F00EE251F /* SelectionItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2D0127F0043F00EE251F /* SelectionItemView.swift */; };\n\t\t4B4D2D0727F0043F00EE251F /* CustomStyleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2CFC27F0043F00EE251F /* CustomStyleView.swift */; };\n\t\t4B4D2D1127F004B600EE251F /* SelectionItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6E927EAEF6D00663DED /* SelectionItemView.swift */; };\n\t\t4B4D2D1227F004B600EE251F /* SelectionItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6E927EAEF6D00663DED /* SelectionItemView.swift */; };\n\t\t4B4D2D1327F004C000EE251F /* SegmentedListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6E327EAEECD00663DED /* SegmentedListView.swift */; };\n\t\t4B4D2D1427F004C000EE251F /* SegmentedListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6E327EAEECD00663DED /* SegmentedListView.swift */; };\n\t\t4B4D2D1527F004C300EE251F /* SegmentedViewWithControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6E627EAEF2000663DED /* SegmentedViewWithControl.swift */; };\n\t\t4B4D2D1627F004C300EE251F /* SegmentedViewWithControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6E627EAEF2000663DED /* SegmentedViewWithControl.swift */; };\n\t\t4B4D2D1727F004C600EE251F /* WithoutStyleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB70227EB69EA00663DED /* WithoutStyleView.swift */; };\n\t\t4B4D2D1827F004C600EE251F /* WithoutStyleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB70227EB69EA00663DED /* WithoutStyleView.swift */; };\n\t\t4B4D2D1927F004C900EE251F /* CustomStyleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4A605827EF6052008D69AF /* CustomStyleView.swift */; };\n\t\t4B4D2D1A27F004C900EE251F /* CustomStyleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4A605827EF6052008D69AF /* CustomStyleView.swift */; };\n\t\t4B4D2D1B27F004CC00EE251F /* CustomStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B3D010A27EE014F000A8506 /* CustomStyle.swift */; };\n\t\t4B4D2D1C27F004CC00EE251F /* CustomStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B3D010A27EE014F000A8506 /* CustomStyle.swift */; };\n\t\t4B4D2D1D27F0051900EE251F /* BacisValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2D0E27F0045200EE251F /* BacisValue.swift */; };\n\t\t4B4D2D1E27F0052300EE251F /* NormalValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2D0A27F0045200EE251F /* NormalValue.swift */; };\n\t\t4B4D2D1F27F0052500EE251F /* ViscosityValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2D0B27F0045200EE251F /* ViscosityValue.swift */; };\n\t\t4B4D2D2027F0052800EE251F /* CapsuleValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2D1027F0045200EE251F /* CapsuleValue.swift */; };\n\t\t4B4D2D2127F0052A00EE251F /* JellyValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2D0F27F0045200EE251F /* JellyValue.swift */; };\n\t\t4B4D2D2227F0052C00EE251F /* LineValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2D0927F0045200EE251F /* LineValue.swift */; };\n\t\t4B4D2D2327F0052E00EE251F /* NeumorphismValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2D0C27F0045200EE251F /* NeumorphismValue.swift */; };\n\t\t4B4D2D2427F0053100EE251F /* ScaleValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D2D0D27F0045200EE251F /* ScaleValue.swift */; };\n\t\t4BA1E34F27EC28D0002DE9F3 /* NormalValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA1E34E27EC28D0002DE9F3 /* NormalValue.swift */; };\n\t\t4BA1E35027EC28D0002DE9F3 /* NormalValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA1E34E27EC28D0002DE9F3 /* NormalValue.swift */; };\n\t\t4BA1E35227EC2903002DE9F3 /* ViscosityValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA1E35127EC2903002DE9F3 /* ViscosityValue.swift */; };\n\t\t4BA1E35327EC2903002DE9F3 /* ViscosityValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA1E35127EC2903002DE9F3 /* ViscosityValue.swift */; };\n\t\t4BFBB6ED27EAFEBB00663DED /* Color+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6EC27EAFEBB00663DED /* Color+Extensions.swift */; };\n\t\t4BFBB6EE27EAFEBB00663DED /* Color+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6EC27EAFEBB00663DED /* Color+Extensions.swift */; };\n\t\t4BFBB6F127EB4EDA00663DED /* BacisValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6F027EB4EDA00663DED /* BacisValue.swift */; };\n\t\t4BFBB6F227EB4EDA00663DED /* BacisValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6F027EB4EDA00663DED /* BacisValue.swift */; };\n\t\t4BFBB6F427EB4F4300663DED /* CapsuleValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6F327EB4F4300663DED /* CapsuleValue.swift */; };\n\t\t4BFBB6F527EB4F4300663DED /* CapsuleValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6F327EB4F4300663DED /* CapsuleValue.swift */; };\n\t\t4BFBB6F727EB4F8B00663DED /* JellyValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6F627EB4F8B00663DED /* JellyValue.swift */; };\n\t\t4BFBB6F827EB4F8B00663DED /* JellyValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6F627EB4F8B00663DED /* JellyValue.swift */; };\n\t\t4BFBB6FA27EB4FCC00663DED /* LineValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6F927EB4FCC00663DED /* LineValue.swift */; };\n\t\t4BFBB6FB27EB4FCC00663DED /* LineValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6F927EB4FCC00663DED /* LineValue.swift */; };\n\t\t4BFBB6FD27EB501000663DED /* NeumorphismValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6FC27EB501000663DED /* NeumorphismValue.swift */; };\n\t\t4BFBB6FE27EB501000663DED /* NeumorphismValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6FC27EB501000663DED /* NeumorphismValue.swift */; };\n\t\t4BFBB70027EB504300663DED /* ScaleValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6FF27EB504300663DED /* ScaleValue.swift */; };\n\t\t4BFBB70127EB504300663DED /* ScaleValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFBB6FF27EB504300663DED /* ScaleValue.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t4B0EE0DA27E4B84D005B804E /* AxisSegmentedViewExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AxisSegmentedViewExampleApp.swift; sourceTree = \"<group>\"; };\n\t\t4B0EE0DB27E4B84D005B804E /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t4B0EE0DC27E4B84E005B804E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t4B0EE0E127E4B84E005B804E /* AxisSegmentedViewExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AxisSegmentedViewExample.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t4B0EE0E727E4B84E005B804E /* AxisSegmentedViewExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AxisSegmentedViewExample.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t4B0EE0E927E4B84E005B804E /* macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOS.entitlements; sourceTree = \"<group>\"; };\n\t\t4B0EE0F927E4B875005B804E /* AxisSegmentedView */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = AxisSegmentedView; path = ..; sourceTree = \"<group>\"; };\n\t\t4B3D010A27EE014F000A8506 /* CustomStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomStyle.swift; sourceTree = \"<group>\"; };\n\t\t4B4A605827EF6052008D69AF /* CustomStyleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomStyleView.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2CD727EFFD6800EE251F /* AxisSegmentedViewExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AxisSegmentedViewExample.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t4B4D2CD927EFFD6800EE251F /* AxisSegmentedViewExample__tvOS_App.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AxisSegmentedViewExample__tvOS_App.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2CDB27EFFD6800EE251F /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2CDD27EFFD6900EE251F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t4B4D2CE027EFFD6900EE251F /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t4B4D2CFC27F0043F00EE251F /* CustomStyleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomStyleView.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2CFD27F0043F00EE251F /* SegmentedViewWithControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegmentedViewWithControl.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2CFE27F0043F00EE251F /* SegmentedListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegmentedListView.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2CFF27F0043F00EE251F /* WithoutStyleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WithoutStyleView.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2D0027F0043F00EE251F /* CustomStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomStyle.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2D0127F0043F00EE251F /* SelectionItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectionItemView.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2D0927F0045200EE251F /* LineValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineValue.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2D0A27F0045200EE251F /* NormalValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NormalValue.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2D0B27F0045200EE251F /* ViscosityValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViscosityValue.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2D0C27F0045200EE251F /* NeumorphismValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NeumorphismValue.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2D0D27F0045200EE251F /* ScaleValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScaleValue.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2D0E27F0045200EE251F /* BacisValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BacisValue.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2D0F27F0045200EE251F /* JellyValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyValue.swift; sourceTree = \"<group>\"; };\n\t\t4B4D2D1027F0045200EE251F /* CapsuleValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CapsuleValue.swift; sourceTree = \"<group>\"; };\n\t\t4BA1E34E27EC28D0002DE9F3 /* NormalValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NormalValue.swift; sourceTree = \"<group>\"; };\n\t\t4BA1E35127EC2903002DE9F3 /* ViscosityValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViscosityValue.swift; sourceTree = \"<group>\"; };\n\t\t4BFBB6E327EAEECD00663DED /* SegmentedListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegmentedListView.swift; sourceTree = \"<group>\"; };\n\t\t4BFBB6E627EAEF2000663DED /* SegmentedViewWithControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegmentedViewWithControl.swift; sourceTree = \"<group>\"; };\n\t\t4BFBB6E927EAEF6D00663DED /* SelectionItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectionItemView.swift; sourceTree = \"<group>\"; };\n\t\t4BFBB6EC27EAFEBB00663DED /* Color+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Color+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\t4BFBB6F027EB4EDA00663DED /* BacisValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BacisValue.swift; sourceTree = \"<group>\"; };\n\t\t4BFBB6F327EB4F4300663DED /* CapsuleValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CapsuleValue.swift; sourceTree = \"<group>\"; };\n\t\t4BFBB6F627EB4F8B00663DED /* JellyValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyValue.swift; sourceTree = \"<group>\"; };\n\t\t4BFBB6F927EB4FCC00663DED /* LineValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineValue.swift; sourceTree = \"<group>\"; };\n\t\t4BFBB6FC27EB501000663DED /* NeumorphismValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NeumorphismValue.swift; sourceTree = \"<group>\"; };\n\t\t4BFBB6FF27EB504300663DED /* ScaleValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScaleValue.swift; sourceTree = \"<group>\"; };\n\t\t4BFBB70227EB69EA00663DED /* WithoutStyleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WithoutStyleView.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t4B0EE0DE27E4B84E005B804E /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t4B0EE0FC27E4BE88005B804E /* AxisSegmentedView in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t4B0EE0E427E4B84E005B804E /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t4B0EE0FE27E4BE8C005B804E /* AxisSegmentedView in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t4B4D2CD427EFFD6800EE251F /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t4B4D2CE627EFFE3700EE251F /* AxisSegmentedView in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t4B0EE0D427E4B84D005B804E = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t4B0EE0F827E4B875005B804E /* Packages */,\n\t\t\t\t4B0EE0D927E4B84D005B804E /* Shared */,\n\t\t\t\t4B0EE0E827E4B84E005B804E /* macOS */,\n\t\t\t\t4B4D2CD827EFFD6800EE251F /* AxisSegmentedViewExample (tvOS) */,\n\t\t\t\t4B0EE0E227E4B84E005B804E /* Products */,\n\t\t\t\t4B0EE0FA27E4BE88005B804E /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t4B0EE0D927E4B84D005B804E /* Shared */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t4B0EE0DA27E4B84D005B804E /* AxisSegmentedViewExampleApp.swift */,\n\t\t\t\t4BFBB6EC27EAFEBB00663DED /* Color+Extensions.swift */,\n\t\t\t\t4B0EE0DB27E4B84D005B804E /* ContentView.swift */,\n\t\t\t\t4BFBB6E927EAEF6D00663DED /* SelectionItemView.swift */,\n\t\t\t\t4BFBB6E327EAEECD00663DED /* SegmentedListView.swift */,\n\t\t\t\t4BFBB6E627EAEF2000663DED /* SegmentedViewWithControl.swift */,\n\t\t\t\t4BFBB70227EB69EA00663DED /* WithoutStyleView.swift */,\n\t\t\t\t4B4A605827EF6052008D69AF /* CustomStyleView.swift */,\n\t\t\t\t4B3D010A27EE014F000A8506 /* CustomStyle.swift */,\n\t\t\t\t4BFBB6EF27EB4EC100663DED /* ViewModel */,\n\t\t\t\t4B0EE0DC27E4B84E005B804E /* Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = Shared;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t4B0EE0E227E4B84E005B804E /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t4B0EE0E127E4B84E005B804E /* AxisSegmentedViewExample.app */,\n\t\t\t\t4B0EE0E727E4B84E005B804E /* AxisSegmentedViewExample.app */,\n\t\t\t\t4B4D2CD727EFFD6800EE251F /* AxisSegmentedViewExample.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t4B0EE0E827E4B84E005B804E /* macOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t4B0EE0E927E4B84E005B804E /* macOS.entitlements */,\n\t\t\t);\n\t\t\tpath = macOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t4B0EE0F827E4B875005B804E /* Packages */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t4B0EE0F927E4B875005B804E /* AxisSegmentedView */,\n\t\t\t);\n\t\t\tname = Packages;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t4B0EE0FA27E4BE88005B804E /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t4B4D2CD827EFFD6800EE251F /* AxisSegmentedViewExample (tvOS) */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t4B4D2CD927EFFD6800EE251F /* AxisSegmentedViewExample__tvOS_App.swift */,\n\t\t\t\t4B4D2CDB27EFFD6800EE251F /* ContentView.swift */,\n\t\t\t\t4B4D2D0827F0044C00EE251F /* ViewModel */,\n\t\t\t\t4B4D2D0127F0043F00EE251F /* SelectionItemView.swift */,\n\t\t\t\t4B4D2CFE27F0043F00EE251F /* SegmentedListView.swift */,\n\t\t\t\t4B4D2CFD27F0043F00EE251F /* SegmentedViewWithControl.swift */,\n\t\t\t\t4B4D2CFF27F0043F00EE251F /* WithoutStyleView.swift */,\n\t\t\t\t4B4D2CFC27F0043F00EE251F /* CustomStyleView.swift */,\n\t\t\t\t4B4D2D0027F0043F00EE251F /* CustomStyle.swift */,\n\t\t\t\t4B4D2CDD27EFFD6900EE251F /* Assets.xcassets */,\n\t\t\t\t4B4D2CDF27EFFD6900EE251F /* Preview Content */,\n\t\t\t);\n\t\t\tpath = \"AxisSegmentedViewExample (tvOS)\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t4B4D2CDF27EFFD6900EE251F /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t4B4D2CE027EFFD6900EE251F /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t4B4D2D0827F0044C00EE251F /* ViewModel */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t4B4D2D0E27F0045200EE251F /* BacisValue.swift */,\n\t\t\t\t4B4D2D0A27F0045200EE251F /* NormalValue.swift */,\n\t\t\t\t4B4D2D0B27F0045200EE251F /* ViscosityValue.swift */,\n\t\t\t\t4B4D2D1027F0045200EE251F /* CapsuleValue.swift */,\n\t\t\t\t4B4D2D0F27F0045200EE251F /* JellyValue.swift */,\n\t\t\t\t4B4D2D0927F0045200EE251F /* LineValue.swift */,\n\t\t\t\t4B4D2D0C27F0045200EE251F /* NeumorphismValue.swift */,\n\t\t\t\t4B4D2D0D27F0045200EE251F /* ScaleValue.swift */,\n\t\t\t);\n\t\t\tpath = ViewModel;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t4BFBB6EF27EB4EC100663DED /* ViewModel */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t4BFBB6F027EB4EDA00663DED /* BacisValue.swift */,\n\t\t\t\t4BA1E34E27EC28D0002DE9F3 /* NormalValue.swift */,\n\t\t\t\t4BA1E35127EC2903002DE9F3 /* ViscosityValue.swift */,\n\t\t\t\t4BFBB6F327EB4F4300663DED /* CapsuleValue.swift */,\n\t\t\t\t4BFBB6F627EB4F8B00663DED /* JellyValue.swift */,\n\t\t\t\t4BFBB6F927EB4FCC00663DED /* LineValue.swift */,\n\t\t\t\t4BFBB6FC27EB501000663DED /* NeumorphismValue.swift */,\n\t\t\t\t4BFBB6FF27EB504300663DED /* ScaleValue.swift */,\n\t\t\t);\n\t\t\tpath = ViewModel;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t4B0EE0E027E4B84E005B804E /* AxisSegmentedViewExample (iOS) */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 4B0EE0F227E4B84E005B804E /* Build configuration list for PBXNativeTarget \"AxisSegmentedViewExample (iOS)\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t4B0EE0DD27E4B84E005B804E /* Sources */,\n\t\t\t\t4B0EE0DE27E4B84E005B804E /* Frameworks */,\n\t\t\t\t4B0EE0DF27E4B84E005B804E /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"AxisSegmentedViewExample (iOS)\";\n\t\t\tpackageProductDependencies = (\n\t\t\t\t4B0EE0FB27E4BE88005B804E /* AxisSegmentedView */,\n\t\t\t);\n\t\t\tproductName = \"AxisSegmentedViewExample (iOS)\";\n\t\t\tproductReference = 4B0EE0E127E4B84E005B804E /* AxisSegmentedViewExample.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t4B0EE0E627E4B84E005B804E /* AxisSegmentedViewExample (macOS) */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 4B0EE0F527E4B84E005B804E /* Build configuration list for PBXNativeTarget \"AxisSegmentedViewExample (macOS)\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t4B0EE0E327E4B84E005B804E /* Sources */,\n\t\t\t\t4B0EE0E427E4B84E005B804E /* Frameworks */,\n\t\t\t\t4B0EE0E527E4B84E005B804E /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"AxisSegmentedViewExample (macOS)\";\n\t\t\tpackageProductDependencies = (\n\t\t\t\t4B0EE0FD27E4BE8B005B804E /* AxisSegmentedView */,\n\t\t\t);\n\t\t\tproductName = \"AxisSegmentedViewExample (macOS)\";\n\t\t\tproductReference = 4B0EE0E727E4B84E005B804E /* AxisSegmentedViewExample.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t4B4D2CD627EFFD6800EE251F /* AxisSegmentedViewExample (tvOS) */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 4B4D2CE227EFFD6900EE251F /* Build configuration list for PBXNativeTarget \"AxisSegmentedViewExample (tvOS)\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t4B4D2CD327EFFD6800EE251F /* Sources */,\n\t\t\t\t4B4D2CD427EFFD6800EE251F /* Frameworks */,\n\t\t\t\t4B4D2CD527EFFD6800EE251F /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"AxisSegmentedViewExample (tvOS)\";\n\t\t\tpackageProductDependencies = (\n\t\t\t\t4B4D2CE527EFFE3700EE251F /* AxisSegmentedView */,\n\t\t\t);\n\t\t\tproductName = \"AxisSegmentedViewExample (tvOS)\";\n\t\t\tproductReference = 4B4D2CD727EFFD6800EE251F /* AxisSegmentedViewExample.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t4B0EE0D527E4B84D005B804E /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tBuildIndependentTargetsInParallel = 1;\n\t\t\t\tLastSwiftUpdateCheck = 1330;\n\t\t\t\tLastUpgradeCheck = 1330;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t4B0EE0E027E4B84E005B804E = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 13.3;\n\t\t\t\t\t};\n\t\t\t\t\t4B0EE0E627E4B84E005B804E = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 13.3;\n\t\t\t\t\t};\n\t\t\t\t\t4B4D2CD627EFFD6800EE251F = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 13.3;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 4B0EE0D827E4B84D005B804E /* Build configuration list for PBXProject \"AxisSegmentedViewExample\" */;\n\t\t\tcompatibilityVersion = \"Xcode 13.0\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 4B0EE0D427E4B84D005B804E;\n\t\t\tproductRefGroup = 4B0EE0E227E4B84E005B804E /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t4B0EE0E027E4B84E005B804E /* AxisSegmentedViewExample (iOS) */,\n\t\t\t\t4B0EE0E627E4B84E005B804E /* AxisSegmentedViewExample (macOS) */,\n\t\t\t\t4B4D2CD627EFFD6800EE251F /* AxisSegmentedViewExample (tvOS) */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t4B0EE0DF27E4B84E005B804E /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t4B0EE0EE27E4B84E005B804E /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t4B0EE0E527E4B84E005B804E /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t4B0EE0EF27E4B84E005B804E /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t4B4D2CD527EFFD6800EE251F /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t4B4D2CE127EFFD6900EE251F /* Preview Assets.xcassets in Resources */,\n\t\t\t\t4B4D2CDE27EFFD6900EE251F /* Assets.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t4B0EE0DD27E4B84E005B804E /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t4BFBB6F727EB4F8B00663DED /* JellyValue.swift in Sources */,\n\t\t\t\t4BFBB6F127EB4EDA00663DED /* BacisValue.swift in Sources */,\n\t\t\t\t4B4D2D1B27F004CC00EE251F /* CustomStyle.swift in Sources */,\n\t\t\t\t4B4D2D1127F004B600EE251F /* SelectionItemView.swift in Sources */,\n\t\t\t\t4B0EE0EC27E4B84E005B804E /* ContentView.swift in Sources */,\n\t\t\t\t4B0EE0EA27E4B84E005B804E /* AxisSegmentedViewExampleApp.swift in Sources */,\n\t\t\t\t4B4D2D1527F004C300EE251F /* SegmentedViewWithControl.swift in Sources */,\n\t\t\t\t4BFBB6FD27EB501000663DED /* NeumorphismValue.swift in Sources */,\n\t\t\t\t4B4D2D1927F004C900EE251F /* CustomStyleView.swift in Sources */,\n\t\t\t\t4BFBB70027EB504300663DED /* ScaleValue.swift in Sources */,\n\t\t\t\t4B4D2D1327F004C000EE251F /* SegmentedListView.swift in Sources */,\n\t\t\t\t4BA1E34F27EC28D0002DE9F3 /* NormalValue.swift in Sources */,\n\t\t\t\t4BFBB6FA27EB4FCC00663DED /* LineValue.swift in Sources */,\n\t\t\t\t4BFBB6ED27EAFEBB00663DED /* Color+Extensions.swift in Sources */,\n\t\t\t\t4B4D2D1727F004C600EE251F /* WithoutStyleView.swift in Sources */,\n\t\t\t\t4BFBB6F427EB4F4300663DED /* CapsuleValue.swift in Sources */,\n\t\t\t\t4BA1E35227EC2903002DE9F3 /* ViscosityValue.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t4B0EE0E327E4B84E005B804E /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t4BFBB6F827EB4F8B00663DED /* JellyValue.swift in Sources */,\n\t\t\t\t4BFBB6F227EB4EDA00663DED /* BacisValue.swift in Sources */,\n\t\t\t\t4B4D2D1C27F004CC00EE251F /* CustomStyle.swift in Sources */,\n\t\t\t\t4B4D2D1227F004B600EE251F /* SelectionItemView.swift in Sources */,\n\t\t\t\t4B0EE0ED27E4B84E005B804E /* ContentView.swift in Sources */,\n\t\t\t\t4B0EE0EB27E4B84E005B804E /* AxisSegmentedViewExampleApp.swift in Sources */,\n\t\t\t\t4B4D2D1627F004C300EE251F /* SegmentedViewWithControl.swift in Sources */,\n\t\t\t\t4BFBB6FE27EB501000663DED /* NeumorphismValue.swift in Sources */,\n\t\t\t\t4B4D2D1A27F004C900EE251F /* CustomStyleView.swift in Sources */,\n\t\t\t\t4BFBB70127EB504300663DED /* ScaleValue.swift in Sources */,\n\t\t\t\t4B4D2D1427F004C000EE251F /* SegmentedListView.swift in Sources */,\n\t\t\t\t4BA1E35027EC28D0002DE9F3 /* NormalValue.swift in Sources */,\n\t\t\t\t4BFBB6FB27EB4FCC00663DED /* LineValue.swift in Sources */,\n\t\t\t\t4BFBB6EE27EAFEBB00663DED /* Color+Extensions.swift in Sources */,\n\t\t\t\t4B4D2D1827F004C600EE251F /* WithoutStyleView.swift in Sources */,\n\t\t\t\t4BFBB6F527EB4F4300663DED /* CapsuleValue.swift in Sources */,\n\t\t\t\t4BA1E35327EC2903002DE9F3 /* ViscosityValue.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t4B4D2CD327EFFD6800EE251F /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t4B4D2D1D27F0051900EE251F /* BacisValue.swift in Sources */,\n\t\t\t\t4B4D2D0327F0043F00EE251F /* CustomStyle.swift in Sources */,\n\t\t\t\t4B4D2D2227F0052C00EE251F /* LineValue.swift in Sources */,\n\t\t\t\t4B4D2CDC27EFFD6800EE251F /* ContentView.swift in Sources */,\n\t\t\t\t4B4D2D0527F0043F00EE251F /* SegmentedViewWithControl.swift in Sources */,\n\t\t\t\t4B4D2D2327F0052E00EE251F /* NeumorphismValue.swift in Sources */,\n\t\t\t\t4B4D2CDA27EFFD6800EE251F /* AxisSegmentedViewExample__tvOS_App.swift in Sources */,\n\t\t\t\t4B4D2D1F27F0052500EE251F /* ViscosityValue.swift in Sources */,\n\t\t\t\t4B4D2D2427F0053100EE251F /* ScaleValue.swift in Sources */,\n\t\t\t\t4B4D2D0627F0043F00EE251F /* SelectionItemView.swift in Sources */,\n\t\t\t\t4B4D2D2027F0052800EE251F /* CapsuleValue.swift in Sources */,\n\t\t\t\t4B4D2D0427F0043F00EE251F /* WithoutStyleView.swift in Sources */,\n\t\t\t\t4B4D2D0727F0043F00EE251F /* CustomStyleView.swift in Sources */,\n\t\t\t\t4B4D2CE727EFFE7200EE251F /* Color+Extensions.swift in Sources */,\n\t\t\t\t4B4D2D0227F0043F00EE251F /* SegmentedListView.swift in Sources */,\n\t\t\t\t4B4D2D2127F0052A00EE251F /* JellyValue.swift in Sources */,\n\t\t\t\t4B4D2D1E27F0052300EE251F /* NormalValue.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\t4B0EE0F027E4B84E005B804E /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++17\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t4B0EE0F127E4B84E005B804E /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++17\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-O\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t4B0EE0F327E4B84E005B804E /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = SM6445X39C;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchScreen_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 14.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.devstore.AxisSegmentedViewExample;\n\t\t\t\tPRODUCT_NAME = AxisSegmentedViewExample;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t4B0EE0F427E4B84E005B804E /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = SM6445X39C;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchScreen_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = \"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tINFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = \"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 14.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.devstore.AxisSegmentedViewExample;\n\t\t\t\tPRODUCT_NAME = AxisSegmentedViewExample;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t4B0EE0F627E4B84E005B804E /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = SM6445X39C;\n\t\t\t\tENABLE_HARDENED_RUNTIME = YES;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_NSHumanReadableCopyright = \"\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 11.0;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.devstore.AxisSegmentedViewExample;\n\t\t\t\tPRODUCT_NAME = AxisSegmentedViewExample;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t4B0EE0F727E4B84E005B804E /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_TEAM = SM6445X39C;\n\t\t\t\tENABLE_HARDENED_RUNTIME = YES;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_NSHumanReadableCopyright = \"\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 11.0;\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.devstore.AxisSegmentedViewExample;\n\t\t\t\tPRODUCT_NAME = AxisSegmentedViewExample;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t4B4D2CE327EFFD6900EE251F /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = \"App Icon & Top Shelf Image\";\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"AxisSegmentedViewExample (tvOS)/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = SM6445X39C;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchScreen_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UIUserInterfaceStyle = Automatic;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.devstore.AxisSegmentedViewExample;\n\t\t\t\tPRODUCT_NAME = AxisSegmentedViewExample;\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 15.4;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t4B4D2CE427EFFD6900EE251F /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = \"App Icon & Top Shelf Image\";\n\t\t\t\tASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"AxisSegmentedViewExample (tvOS)/Preview Content\\\"\";\n\t\t\t\tDEVELOPMENT_TEAM = SM6445X39C;\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tGENERATE_INFOPLIST_FILE = YES;\n\t\t\t\tINFOPLIST_KEY_UILaunchScreen_Generation = YES;\n\t\t\t\tINFOPLIST_KEY_UIUserInterfaceStyle = Automatic;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tMARKETING_VERSION = 1.0;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.devstore.AxisSegmentedViewExample;\n\t\t\t\tPRODUCT_NAME = AxisSegmentedViewExample;\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tSWIFT_EMIT_LOC_STRINGS = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = 3;\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 15.4;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t4B0EE0D827E4B84D005B804E /* Build configuration list for PBXProject \"AxisSegmentedViewExample\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t4B0EE0F027E4B84E005B804E /* Debug */,\n\t\t\t\t4B0EE0F127E4B84E005B804E /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t4B0EE0F227E4B84E005B804E /* Build configuration list for PBXNativeTarget \"AxisSegmentedViewExample (iOS)\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t4B0EE0F327E4B84E005B804E /* Debug */,\n\t\t\t\t4B0EE0F427E4B84E005B804E /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t4B0EE0F527E4B84E005B804E /* Build configuration list for PBXNativeTarget \"AxisSegmentedViewExample (macOS)\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t4B0EE0F627E4B84E005B804E /* Debug */,\n\t\t\t\t4B0EE0F727E4B84E005B804E /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t4B4D2CE227EFFD6900EE251F /* Build configuration list for PBXNativeTarget \"AxisSegmentedViewExample (tvOS)\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t4B4D2CE327EFFD6900EE251F /* Debug */,\n\t\t\t\t4B4D2CE427EFFD6900EE251F /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\n/* Begin XCSwiftPackageProductDependency section */\n\t\t4B0EE0FB27E4BE88005B804E /* AxisSegmentedView */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = AxisSegmentedView;\n\t\t};\n\t\t4B0EE0FD27E4BE8B005B804E /* AxisSegmentedView */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = AxisSegmentedView;\n\t\t};\n\t\t4B4D2CE527EFFE3700EE251F /* AxisSegmentedView */ = {\n\t\t\tisa = XCSwiftPackageProductDependency;\n\t\t\tproductName = AxisSegmentedView;\n\t\t};\n/* End XCSwiftPackageProductDependency section */\n\t};\n\trootObject = 4B0EE0D527E4B84D005B804E /* Project object */;\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "AxisSegmentedViewExample/AxisSegmentedViewExample.xcodeproj/xcshareddata/xcschemes/AxisSegmentedView.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1330\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"AxisSegmentedView\"\n               BuildableName = \"AxisSegmentedView\"\n               BlueprintName = \"AxisSegmentedView\"\n               ReferencedContainer = \"container:..\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"AxisSegmentedView\"\n            BuildableName = \"AxisSegmentedView\"\n            BlueprintName = \"AxisSegmentedView\"\n            ReferencedContainer = \"container:..\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/Assets.xcassets/AccentColor.colorset/Contents.json",
    "content": "{\n  \"colors\" : [\n    {\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"2x\",\n      \"size\" : \"20x20\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"3x\",\n      \"size\" : \"20x20\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"2x\",\n      \"size\" : \"29x29\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"3x\",\n      \"size\" : \"29x29\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"2x\",\n      \"size\" : \"40x40\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"3x\",\n      \"size\" : \"40x40\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"2x\",\n      \"size\" : \"60x60\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"scale\" : \"3x\",\n      \"size\" : \"60x60\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"1x\",\n      \"size\" : \"20x20\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"2x\",\n      \"size\" : \"20x20\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"1x\",\n      \"size\" : \"29x29\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"2x\",\n      \"size\" : \"29x29\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"1x\",\n      \"size\" : \"40x40\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"2x\",\n      \"size\" : \"40x40\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"1x\",\n      \"size\" : \"76x76\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"2x\",\n      \"size\" : \"76x76\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"scale\" : \"2x\",\n      \"size\" : \"83.5x83.5\"\n    },\n    {\n      \"idiom\" : \"ios-marketing\",\n      \"scale\" : \"1x\",\n      \"size\" : \"1024x1024\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"16x16\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"16x16\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"32x32\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"32x32\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"128x128\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"128x128\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"256x256\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"256x256\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"1x\",\n      \"size\" : \"512x512\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"scale\" : \"2x\",\n      \"size\" : \"512x512\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/Assets.xcassets/image.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"filename\" : \"olimpia-campean-IkhxVv5Mkn4-unsplash.jpg\",\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"properties\" : {\n    \"template-rendering-intent\" : \"original\"\n  }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/AxisSegmentedViewExampleApp.swift",
    "content": "//\n//  AxisSegmentedViewExampleApp.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/18.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\n\n@main\nstruct AxisSegmentedViewExampleApp: App {\n    var body: some Scene {\n        WindowGroup {\n            ContentView()\n        }\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/Color+Extensions.swift",
    "content": "//\n//  Color+Extensions.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2021/12/08.\n//  Copyright (c) 2021 jasu All rights reserved.\n//\n\nimport SwiftUI\n\npublic extension Color {\n\n    init(hex: UInt, alpha: Double = 1) {\n        self.init(\n            .sRGB,\n            red: Double((hex >> 16) & 0xff) / 255,\n            green: Double((hex >> 08) & 0xff) / 255,\n            blue: Double((hex >> 00) & 0xff) / 255,\n            opacity: alpha\n        )\n    }\n    \n    init(hex: String) {\n        let hex = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted)\n        var int: UInt64 = 0\n        Scanner(string: hex).scanHexInt64(&int)\n        let a, r, g, b: UInt64\n        switch hex.count {\n        case 3: // RGB (12-bit)\n            (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)\n        case 6: // RGB (24-bit)\n            (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)\n        case 8: // ARGB (32-bit)\n            (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)\n        default:\n            (a, r, g, b) = (1, 1, 1, 0)\n        }\n        \n        self.init(\n            .sRGB,\n            red: Double(r) / 255,\n            green: Double(g) / 255,\n            blue:  Double(b) / 255,\n            opacity: Double(a) / 255\n        )\n    }\n    \n    static var random: Color {\n        return Color(\n            red: .random(in: 0...1),\n            green: .random(in: 0...1),\n            blue: .random(in: 0...1)\n        )\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/ContentView.swift",
    "content": "//\n//  ContentView.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/18.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nstruct ContentView: View {\n    \n    @State private var tabViewSelection: Int = 0\n    \n    private var content: some View {\n        TabView(selection: $tabViewSelection) {\n            SegmentedListView(axisMode: .horizontal)\n                .tag(0)\n                .tabItem {\n                    Image(systemName: \"rectangle.arrowtriangle.2.inward\")\n                    Text(\"Horizontal\")\n                }\n            \n            SegmentedListView(axisMode: .vertical)\n                .tag(1)\n                .tabItem {\n                    Image(systemName: \"rectangle.portrait.arrowtriangle.2.inward\")\n                    Text(\"Vertical\")\n                }\n            \n            WithoutStyleView()\n                .tag(2)\n                .tabItem {\n                    Image(systemName: \"cpu\")\n                    Text(\"Without style\")\n                }\n            \n            CustomStyleView()\n                .tag(3)\n                .tabItem {\n                    Image(systemName: \"skew\")\n                    Text(\"Custom Style\")\n                }\n                .padding()\n        }\n        .navigationTitle(Text(\"AxisSegmentedView\"))\n    }\n    var body: some View {\n        ZStack {\n#if os(iOS)\n            NavigationView {\n                content\n                    .navigationBarTitleDisplayMode(.inline)\n            }\n            .navigationViewStyle(.stack)\n#else\n            content\n                .padding()\n#endif\n        }\n        .preferredColorScheme(.dark)\n    }\n}\n\nstruct ContentView_Previews: PreviewProvider {\n    static var previews: some View {\n        ContentView().preferredColorScheme(.dark)\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/CustomStyle.swift",
    "content": "//\n//  CustomStyle.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/25.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\npublic struct CustomStyle: View {\n    \n    @EnvironmentObject var stateValue: ASStateValue\n\n    let color: Color\n    public init(color: Color = .purple) {\n        self.color = color\n    }\n    \n    private var selectionView: some View {\n        RoundedRectangle(cornerRadius: 5)\n            .fill(Color.yellow)\n    }\n    \n    public var body: some View {\n        let selectionFrame = stateValue.selectionFrame\n        ZStack(alignment: .topLeading) {\n            Color.clear\n            RoundedRectangle(cornerRadius: 5)\n                .stroke()\n                .fill(color)\n                .frame(width: selectionFrame.width, height: selectionFrame.height)\n                .offset(x: selectionFrame.origin.x, y: selectionFrame.origin.y)\n        }\n        .animation(.easeInOut, value: stateValue.selectionIndex)\n    }\n}\n\nstruct CustomStyle_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview(constant: .init()) {\n            CustomStyle()\n                .preferredColorScheme(.dark)\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/CustomStyleView.swift",
    "content": "//\n//  CustomStyleView.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/26.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nstruct CustomStyleView: View {\n    \n    @State private var selection: Int = 0\n    \n    var body: some View {\n        HStack {\n            AxisSegmentedView(selection: $selection, constant: .init(axisMode: .vertical)) {\n                Image(systemName: \"align.horizontal.left\")\n                    .itemTag(0, selectArea: 0) {\n                        SelectionItemView(\"align.horizontal.left.fill\")\n                    }\n                Image(systemName: \"align.horizontal.right\")\n                    .itemTag(1, selectArea: 260) {\n                        SelectionItemView(\"align.horizontal.right.fill\")\n                    }\n                Image(systemName: \"align.vertical.top\")\n                    .itemTag(2, selectArea: 0) {\n                        SelectionItemView(\"align.vertical.top.fill\")\n                    }\n                Image(systemName: \"align.vertical.bottom\")\n                    .itemTag(3, selectArea: 260) {\n                        SelectionItemView(\"align.vertical.bottom.fill\")\n                    }\n            } style: {\n                CustomStyle(color: .blue)\n            } onTapReceive: { selectionTap in\n                /// Imperative syntax\n                print(\"---------------------\")\n                print(\"Selection : \", selectionTap)\n                print(\"Already selected : \", self.selection == selectionTap)\n            }\n            .frame(width: 44)\n            \n            AxisSegmentedView(selection: $selection, constant: .init()) {\n                Image(systemName: \"align.horizontal.left\")\n                    .itemTag(0, selectArea: 0) {\n                        SelectionItemView(\"align.horizontal.left.fill\")\n                    }\n                Image(systemName: \"align.horizontal.right\")\n                    .itemTag(1, selectArea: 160) {\n                        SelectionItemView(\"align.horizontal.right.fill\")\n                    }\n                Image(systemName: \"align.vertical.top\")\n                    .itemTag(2, selectArea: 0) {\n                        SelectionItemView(\"align.vertical.top.fill\")\n                    }\n                Image(systemName: \"align.vertical.bottom\")\n                    .itemTag(3, selectArea: 160) {\n                        SelectionItemView(\"align.vertical.bottom.fill\")\n                    }\n            } style: {\n                CustomStyle(color: .red)\n            } onTapReceive: { selectionTap in\n                /// Imperative syntax\n                print(\"---------------------\")\n                print(\"Selection : \", selectionTap)\n                print(\"Already selected : \", self.selection == selectionTap)\n            }\n            .frame(height: 44)\n        }\n    }\n}\n\nstruct CustomStyleView_Previews: PreviewProvider {\n    static var previews: some View {\n        CustomStyleView()\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/SegmentedListView.swift",
    "content": "//\n//  SegmentedListView.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nenum StyleType: String {\n    case ASNormalStyle\n    case ASViscosityStyle\n    \n    case ASBasicStyle\n    case ASCapsuleStyle\n    case ASJellyStyle\n    case ASLineStyle\n    case ASNeumorphismStyle\n    case ASScaleStyle\n}\n\n\nstruct SegmentedListView: View {\n    \n    let axisMode: ASAxisMode\n    \n    @StateObject private var normalValue:       NormalValue = .init()\n    @StateObject private var viscosityValue:    ViscosityValue = .init()\n    \n    @StateObject private var basicValue:        BasicValue = .init()\n    @StateObject private var capsuleValue:      CapsuleValue = .init()\n    @StateObject private var jellyValue:        JellyValue = .init()\n    @StateObject private var lineValue:         LineValue = .init()\n    @StateObject private var neumorphismValue:  NeumorphismValue = .init()\n    @StateObject private var scaleValue:        ScaleValue = .init()\n    \n    var content: some View {\n        Group {\n            SegmentedViewWithControl(title: \"ABNormalStyle\", styleType: .ASNormalStyle, axisMode: axisMode, constant: $normalValue.constant, tabs: {\n                Group {\n                    Text(\"Clear\")\n                        .font(.callout)\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(0, selectArea: normalValue.selectArea0) {\n                            HStack {\n                                Image(systemName: \"checkmark.circle\")\n                                Text(\"Clear\")\n                            }\n                            .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                            .font(.callout)\n                            .foregroundColor(Color.white)\n                        }\n                    Text(\"Confusing\")\n                        .font(.callout)\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(1, selectArea: normalValue.selectArea1) {\n                            HStack {\n                                Image(systemName: \"checkmark.circle\")\n                                Text(\"Confusing\")\n                            }\n                            .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                            .font(.callout)\n                            .foregroundColor(Color.white)\n                        }\n                }\n            }, style: {\n                ASNormalStyle { _ in\n                    RoundedRectangle(cornerRadius: 5)\n                        .fill(Color(hex: 0x191919))\n                        .overlay(\n                            RoundedRectangle(cornerRadius: 5)\n                                .stroke()\n                                .fill(Color(hex: 0x282828))\n                        )\n                        .padding(3.5)\n                }\n                .background(Color(hex: 0x0B0C10))\n                .clipShape(RoundedRectangle(cornerRadius: 5))\n            })\n            SegmentedViewWithControl(title: \"ASViscosityStyle\", styleType: .ASViscosityStyle, axisMode: axisMode, constant: $viscosityValue.constant, tabs: {\n                Group {\n                    Text(\"Store\")\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .font(.callout)\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(0, selectArea: viscosityValue.selectArea0) {\n                            Text(\"Store\")\n                                .font(.callout)\n                                .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                                .foregroundColor(Color.white)\n                        }\n                    Text(\"Library\")\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .font(.callout)\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(1, selectArea: viscosityValue.selectArea1) {\n                            Text(\"Library\")\n                                .font(.callout)\n                                .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                                .foregroundColor(Color.white)\n                        }\n                    Text(\"Downloads\")\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .font(.callout)\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(2, selectArea: viscosityValue.selectArea2) {\n                            Text(\"Downloads\")\n                                .font(.callout)\n                                .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                                .foregroundColor(Color.white)\n                        }\n                }\n            }, style: {\n                ASViscosityStyle { _ in\n                    Capsule()\n                        .fill(LinearGradient(colors: [Color(hex: 0x222222), Color(hex: 0x111111)],\n                                             startPoint: axisMode == .horizontal ? UnitPoint.top : UnitPoint.leading,\n                                             endPoint: axisMode == .horizontal ? UnitPoint.bottom : UnitPoint.trailing))\n                        .overlay(\n                            Capsule()\n                                .stroke()\n                                .fill(Color.black)\n                        )\n                        .padding(2)\n                }\n                .background(Color.black.opacity(0.2))\n                .clipShape(Capsule())\n                .innerShadow(Capsule(), radius: 1, opacity: 0.5, isDark: true)\n            })\n            \n            SegmentedViewWithControl(title: \"ASBasicStyle\", styleType: .ASBasicStyle, axisMode: axisMode, constant: $basicValue.constant, tabs: {\n                Group {\n                    Text(\"Male\")\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .font(.callout)\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(0, selectArea: basicValue.selectArea0) {\n                            Text(\"Male\")\n                                .font(.callout)\n                                .fixedSize()\n                                .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                                .foregroundColor(Color.white)\n                        }\n                    Text(\"Female\")\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .font(.callout)\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(1, selectArea: basicValue.selectArea1) {\n                            Text(\"Female\")\n                                .font(.callout)\n                                .fixedSize()\n                                .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                                .foregroundColor(Color.white)\n                        }\n                    Text(\"Other\")\n                        .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                        .font(.callout)\n                        .foregroundColor(Color.white.opacity(0.5))\n                        .itemTag(2, selectArea: basicValue.selectArea2) {\n                            Text(\"Other\")\n                                .font(.callout)\n                                .fixedSize()\n                                .rotationEffect(Angle(degrees: axisMode == .horizontal ? 0 : -90))\n                                .foregroundColor(Color.white)\n                        }\n                }\n            }, style: {\n                ASBasicStyle(backgroundColor: basicValue.backgroundColor,\n                             foregroundColor: basicValue.foregroundColor,\n                             cornerRadius: basicValue.cornerRadius,\n                             padding: basicValue.padding,\n                             isApplySelectionCornerRadius: basicValue.isApplySelectionCornerRadius,\n                             movementMode: basicValue.movementMode)\n            })\n            \n            SegmentedViewWithControl(title: \"ASJellyStyle\", styleType: .ASJellyStyle, axisMode: axisMode, constant: $jellyValue.constant, tabs: {\n                Group {\n                    Image(systemName: \"align.horizontal.left\")\n                        .itemTag(0, selectArea: jellyValue.selectArea0) {\n                            SelectionItemView(\"align.horizontal.left.fill\")\n                        }\n                    Image(systemName: \"align.horizontal.right\")\n                        .itemTag(1, selectArea: jellyValue.selectArea1) {\n                            SelectionItemView(\"align.horizontal.right.fill\")\n                        }\n                    Image(systemName: \"align.vertical.top\")\n                        .itemTag(2, selectArea: jellyValue.selectArea2) {\n                            SelectionItemView(\"align.vertical.top.fill\")\n                        }\n                    Image(systemName: \"align.vertical.bottom\")\n                        .itemTag(3, selectArea: jellyValue.selectArea3) {\n                            SelectionItemView(\"align.vertical.bottom.fill\")\n                        }\n                }\n            }, style: {\n                ASJellyStyle(backgroundColor: jellyValue.backgroundColor,\n                             foregroundColor: jellyValue.foregroundColor,\n                             jellyRadius: jellyValue.jellyRadius,\n                             jellyDepth: jellyValue.jellyDepth,\n                             jellyEdge: jellyValue.jellyEdge)\n//                                .overlay(\n//                                    RoundedRectangle(cornerRadius: 11)\n//                                        .stroke(.purple, lineWidth: 1)\n//                                        .padding(1)\n//                                )\n//                                .clipShape(RoundedRectangle(cornerRadius: 11))\n            })\n            \n            SegmentedViewWithControl(title: \"ASLineStyle\", styleType: .ASLineStyle, axisMode: axisMode, constant: $lineValue.constant, tabs: {\n                Group {\n                    Image(systemName: \"align.horizontal.left\")\n                        .itemTag(0, selectArea: lineValue.selectArea0) {\n                            SelectionItemView(\"align.horizontal.left.fill\")\n                        }\n                    Image(systemName: \"align.horizontal.right\")\n                        .itemTag(1, selectArea: lineValue.selectArea1) {\n                            SelectionItemView(\"align.horizontal.right.fill\")\n                        }\n                    Image(systemName: \"align.vertical.top\")\n                        .itemTag(2, selectArea: lineValue.selectArea2) {\n                            SelectionItemView(\"align.vertical.top.fill\")\n                        }\n                    Image(systemName: \"align.vertical.bottom\")\n                        .itemTag(3, selectArea: lineValue.selectArea3) {\n                            SelectionItemView(\"align.vertical.bottom.fill\")\n                        }\n                }\n            }, style: {\n                ASLineStyle(lineColor: lineValue.lineColor,\n                            lineSmallWidth: lineValue.lineSmallWidth,\n                            lineLargeScale: lineValue.lineLargeScale,\n                            lineEdge: lineValue.lineEdge,\n                            movementMode: lineValue.movementMode)\n                .overlay(\n                    Rectangle()\n                        .stroke()\n                        .fill(Color(hex: 0x303030))\n                )\n            })\n            \n            SegmentedViewWithControl(title: \"ASCapsuleStyle\", styleType: .ASCapsuleStyle, axisMode: axisMode, constant: $capsuleValue.constant, tabs: {\n                Group {\n                    Image(systemName: \"align.horizontal.left\")\n                        .itemTag(0, selectArea: capsuleValue.selectArea0) {\n                            SelectionItemView(\"align.horizontal.left.fill\")\n                        }\n                    Image(systemName: \"align.horizontal.right\")\n                        .itemTag(1, selectArea: capsuleValue.selectArea1) {\n                            SelectionItemView(\"align.horizontal.right.fill\")\n                        }\n                    Image(systemName: \"align.vertical.top\")\n                        .itemTag(2, selectArea: capsuleValue.selectArea2) {\n                            SelectionItemView(\"align.vertical.top.fill\")\n                        }\n                    Image(systemName: \"align.vertical.bottom\")\n                        .itemTag(3, selectArea: capsuleValue.selectArea3) {\n                            SelectionItemView(\"align.vertical.bottom.fill\")\n                        }\n                }\n            }, style: {\n                ASCapsuleStyle(backgroundColor: capsuleValue.backgroundColor,\n                               foregroundColor: capsuleValue.foregroundColor,\n                               movementMode: capsuleValue.movementMode)\n            })\n\n            SegmentedViewWithControl(title: \"ASNeumorphismStyle\", styleType: .ASNeumorphismStyle, axisMode: axisMode, constant: $neumorphismValue.constant, area: 70, tabs: {\n                Group {\n                    Image(systemName: \"align.horizontal.left\")\n                        .itemTag(0, selectArea: neumorphismValue.selectArea0) {\n                            SelectionItemView(\"align.horizontal.left.fill\")\n                        }\n                    Image(systemName: \"align.horizontal.right\")\n                        .itemTag(1, selectArea: neumorphismValue.selectArea1) {\n                            SelectionItemView(\"align.horizontal.right.fill\")\n                        }\n                    Image(systemName: \"align.vertical.top\")\n                        .itemTag(2, selectArea: neumorphismValue.selectArea2) {\n                            SelectionItemView(\"align.vertical.top.fill\")\n                        }\n                    Image(systemName: \"align.vertical.bottom\")\n                        .itemTag(3, selectArea: neumorphismValue.selectArea3) {\n                            SelectionItemView(\"align.vertical.bottom.fill\")\n                        }\n                }\n            }, style: {\n                ASNeumorphismStyle(backgroundColor: neumorphismValue.backgroundColor,\n                                   foregroundColor: neumorphismValue.foregroundColor,\n                                   cornerRadius: neumorphismValue.cornerRadius,\n                                   padding: neumorphismValue.padding,\n                                   shadowRadius: neumorphismValue.shadowRadius,\n                                   shadowOpacity: neumorphismValue.shadowOpacity,\n                                   isInner: neumorphismValue.isInner,\n                                   movementMode: neumorphismValue.movementMode)\n            })\n            \n            SegmentedViewWithControl(title: \"ASScaleStyle\", styleType: .ASScaleStyle, axisMode: axisMode, constant: $scaleValue.constant, tabs: {\n                Group {\n                    Image(systemName: \"align.horizontal.left\")\n                        .itemTag(0, selectArea: scaleValue.selectArea0) {\n                            SelectionItemView(\"align.horizontal.left.fill\")\n                        }\n                    Image(systemName: \"align.horizontal.right\")\n                        .itemTag(1, selectArea: scaleValue.selectArea1) {\n                            SelectionItemView(\"align.horizontal.right.fill\")\n                        }\n                    Image(systemName: \"align.vertical.top\")\n                        .itemTag(2, selectArea: scaleValue.selectArea2) {\n                            SelectionItemView(\"align.vertical.top.fill\")\n                        }\n                    Image(systemName: \"align.vertical.bottom\")\n                        .itemTag(3, selectArea: scaleValue.selectArea3) {\n                            SelectionItemView(\"align.vertical.bottom.fill\")\n                        }\n                }\n            }, style: {\n                ASScaleStyle(backgroundColor: scaleValue.backgroundColor,\n                             foregroundColor: scaleValue.foregroundColor,\n                             cornerRadius: scaleValue.cornerRadius,\n                             minimumScale: scaleValue.minimumScale)\n            })\n        }\n    }\n    var body: some View {\n        ZStack {\n            if axisMode == .horizontal {\n                ScrollView {\n                    VStack(spacing: 20) {\n                        content\n                    }\n                    .padding(.horizontal, 5)\n                }\n            }else {\n                ScrollView(.horizontal) {\n                    HStack(spacing: 20) {\n                        content\n                    }\n                    .padding(.vertical, 5)\n                }\n            }\n        }\n        .environmentObject(normalValue)\n        .environmentObject(viscosityValue)\n        .environmentObject(basicValue)\n        .environmentObject(capsuleValue)\n        .environmentObject(jellyValue)\n        .environmentObject(lineValue)\n        .environmentObject(neumorphismValue)\n        .environmentObject(scaleValue)\n    }\n}\n\nstruct SegmentedListView_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedListView(axisMode: .horizontal)\n            .padding()\n            .preferredColorScheme(.dark)\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/SegmentedViewWithControl.swift",
    "content": "//\n//  SegmentedViewWithControl.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nstruct SegmentedViewWithControl<Tabs: View, Style: View> : View {\n    \n    @State private var isShowControlView: Bool = false\n    @State private var selection: Int = 0\n    @State private var maxSelectArea: CGFloat = 0\n\n    @EnvironmentObject private var normalValue:         NormalValue\n    @EnvironmentObject private var viscosityValue:      ViscosityValue\n    \n    @EnvironmentObject private var basicValue:          BasicValue\n    @EnvironmentObject private var capsuleValue:        CapsuleValue\n    @EnvironmentObject private var jellyValue:          JellyValue\n    @EnvironmentObject private var lineValue:           LineValue\n    @EnvironmentObject private var neumorphismValue:    NeumorphismValue\n    @EnvironmentObject private var scaleValue:          ScaleValue\n    \n    let title: String\n    let styleType: StyleType\n    let axisMode: ASAxisMode\n    @Binding var constant: ASConstant\n    let area: CGFloat\n    var tabs: () -> Tabs\n    var style: () -> Style\n    \n    init(title: String,\n         styleType: StyleType,\n         axisMode: ASAxisMode = .horizontal,\n         constant: Binding<ASConstant>,\n         area: CGFloat = 44,\n         @ViewBuilder tabs: @escaping () -> Tabs,\n         @ViewBuilder style: @escaping () -> Style) {\n        self.title = title\n        self.styleType = styleType\n        self.axisMode = axisMode\n        _constant = constant\n        self.area = area\n        self.tabs = tabs\n        self.style = style\n    }\n    \n    private var segmentedView: some View {\n        AxisSegmentedView(selection: $selection, constant: constant) {\n            tabs()\n        } style: {\n            style()\n        } onTapReceive: { selectionTap in\n            /// Imperative syntax\n            print(\"---------------------\")\n            print(\"Selection : \", selectionTap)\n            print(\"Already selected : \", self.selection == selectionTap)\n        }\n        .font(.system(size: 20))\n    }\n    \n    private var controlView: some View {\n        ZStack {\n            Color(hex: 0x030303)\n                .cornerRadius(8)\n            ScrollView {\n                VStack {\n                    getStyleControlView()\n                    VStack(alignment: .leading, spacing: 8) {\n                        Text(\"● Divide Line\").opacity(0.5).font(.caption)\n                        HStack {\n                            Text(\"Color\")\n                            Spacer()\n                            ColorPicker(selection: $constant.divideLine.color) {}\n                        }\n                        HStack {\n                            Text(\"Width\")\n                            Spacer()\n                            Slider(value: $constant.divideLine.width, in: 0...5)\n                            Spacer()\n                            Text(\"\\(constant.divideLine.width, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"Scale\")\n                            Spacer()\n                            Slider(value: $constant.divideLine.scale, in: 0...1)\n                            Spacer()\n                            Text(\"\\(constant.divideLine.scale, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"isShowSelectionLine\")\n                            Spacer()\n                            Toggle(isOn: $constant.divideLine.isShowSelectionLine) {}\n                        }\n                    }\n                    .padding()\n                    \n                    VStack(alignment: .leading, spacing: 8) {\n                        Text(\"● Active\").opacity(0.5).font(.caption)\n                        HStack {\n                            Text(\"ActivatedGeometryEffect\")\n                            Spacer()\n                            Toggle(isOn: $constant.isActivatedGeometryEffect) {}\n                        }\n                        HStack {\n                            Text(\"ActivatedVibration\")\n                            Spacer()\n                            Toggle(isOn: $constant.isActivatedVibration) {}\n                        }\n                    }\n                    .padding()\n                }\n            }\n            .font(.footnote)\n            .labelsHidden()\n        }\n    }\n    \n    var body: some View {\n        ZStack {\n            ZStack {\n                if constant.axisMode == .horizontal {\n                    VStack {\n                        HStack {\n                            Text(title)\n                                .font(.caption)\n                                .foregroundColor(Color.white.opacity(0.6))\n                            Spacer()\n                            Image(systemName: \"chevron.down\")\n                                .frame(width: 36, height: 36)\n                                .rotationEffect(Angle(degrees: isShowControlView ? -180 : 0))\n                                .contentShape(Rectangle())\n                        }\n                        .frame(height: 36)\n                        .contentShape(Rectangle())\n                        .onTapGesture {\n                            withAnimation(.easeInOut) {\n                                isShowControlView.toggle()\n                            }\n                        }\n                        \n                        VStack(spacing: 0) {\n                            segmentedView\n                                .frame(height: area)\n                            Spacer().frame(height: 10)\n                            controlView\n                                .opacity(isShowControlView ? 1 : 0)\n                                .frame(height: isShowControlView ? 400 : 0)\n                        }\n                    }\n                }else {\n                    VStack {\n                        HStack {\n                            Text(title)\n                                .font(.caption)\n                                .foregroundColor(Color.white.opacity(0.6))\n                            Spacer()\n                            Image(systemName: \"chevron.right\")\n                                .frame(width: 36, height: 36)\n                                .rotationEffect(Angle(degrees: isShowControlView ? -180 : 0))\n                                .contentShape(Rectangle())\n                        }\n                        .frame(height: 36)\n                        .contentShape(Rectangle())\n                        .onTapGesture {\n                            withAnimation(.easeInOut) {\n                                isShowControlView.toggle()\n                            }\n                        }\n                        HStack(spacing: 0) {\n                            segmentedView\n                                .frame(width: area)\n                            Spacer().frame(width: 10)\n                            controlView\n                                .frame(width: 260)\n                                .mask(\n                                    Rectangle()\n                                        .frame(width: isShowControlView ? 260 : 0)\n                                )\n                                .opacity(isShowControlView ? 1 : 0)\n                                .frame(width: isShowControlView ? 260 : 0)\n                        }\n                    }\n                }\n            }\n            .padding(10)\n        }\n        .background(\n            GeometryReader { proxy in\n                Color(hex: 0x15151A)\n                    .cornerRadius(8)\n                    .onAppear {\n                        self.maxSelectArea = constant.axisMode == .horizontal ? proxy.size.width * 0.5 : proxy.size.height * 0.5\n                    }\n            }\n        )\n        .onAppear {\n            constant.axisMode = axisMode\n        }\n    }\n    \n    private func getStyleControlView() -> some View {\n        Group {\n            VStack(alignment: .leading, spacing: 8) {\n                HStack {\n                    Text(\"● \" + title).opacity(0.5).font(.caption)\n                    Spacer()\n                }\n                switch styleType {\n                case .ASNormalStyle:\n                    VStack(alignment: .leading, spacing: 8) {\n                        Text(\"● SelectArea\").opacity(0.5).font(.caption)\n                        HStack {\n                            Text(\"0\")\n                                .font(.system(size: 16))\n                            Spacer()\n                            Slider(value: $normalValue.selectArea0, in: 0...maxSelectArea)\n                            Spacer()\n                            Text(\"\\(normalValue.selectArea0, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"1\")\n                                .font(.system(size: 16))\n                            Spacer()\n                            Slider(value: $normalValue.selectArea1, in: 0...maxSelectArea)\n                            Spacer()\n                            Text(\"\\(normalValue.selectArea1, specifier: \"%.2f\")\")\n                        }\n                    }\n                    .padding(.top, 20)\n                case .ASViscosityStyle:\n                    VStack(alignment: .leading, spacing: 8) {\n                        Text(\"● SelectArea\").opacity(0.5).font(.caption)\n                        HStack {\n                            Text(\"0\")\n                                .font(.system(size: 16))\n                            Spacer()\n                            Slider(value: $viscosityValue.selectArea0, in: 0...maxSelectArea)\n                            Spacer()\n                            Text(\"\\(viscosityValue.selectArea0, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"1\")\n                                .font(.system(size: 16))\n                            Spacer()\n                            Slider(value: $viscosityValue.selectArea1, in: 0...maxSelectArea)\n                            Spacer()\n                            Text(\"\\(viscosityValue.selectArea1, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"2\")\n                                .font(.system(size: 16))\n                            Spacer()\n                            Slider(value: $viscosityValue.selectArea2, in: 0...maxSelectArea)\n                            Spacer()\n                            Text(\"\\(viscosityValue.selectArea2, specifier: \"%.2f\")\")\n                        }\n                    }\n                    .padding(.top, 20)\n                case .ASBasicStyle:\n                    Group {\n                        HStack {\n                            Text(\"Background Color\")\n                            Spacer()\n                            ColorPicker(selection: $basicValue.backgroundColor) {}\n                        }\n                        HStack {\n                            Text(\"Foreground Color\")\n                            Spacer()\n                            ColorPicker(selection: $basicValue.foregroundColor) {}\n                        }\n                        HStack {\n                            Text(\"Corner Raddius\")\n                            Spacer()\n                            Slider(value: $basicValue.cornerRadius, in: 0...22)\n                            Spacer()\n                            Text(\"\\(basicValue.cornerRadius, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"Padding\")\n                            Spacer()\n                            Slider(value: $basicValue.padding, in: 0...6)\n                            Spacer()\n                            Text(\"\\(basicValue.padding, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"isApplySelectionCornerRadius\")\n                            Spacer()\n                            Toggle(isOn: $basicValue.isApplySelectionCornerRadius) {}\n                        }\n                        HStack {\n                            Text(\"Movement Mode\")\n                            Spacer()\n                            Picker(selection: $basicValue.movementMode) {\n                                Text(\"Normal\").tag(ASMovementMode.normal)\n                                Text(\"Viscosity\").tag(ASMovementMode.viscosity)\n                            } label: {}\n                                .pickerStyle(.segmented)\n                        }\n                        \n                        VStack(alignment: .leading, spacing: 8) {\n                            Text(\"● SelectArea\").opacity(0.5).font(.caption)\n                            HStack {\n                                Text(\"0\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $basicValue.selectArea0, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(basicValue.selectArea0, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"1\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $basicValue.selectArea1, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(basicValue.selectArea1, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"2\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $basicValue.selectArea2, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(basicValue.selectArea2, specifier: \"%.2f\")\")\n                            }\n                        }\n                        .padding(.top, 20)\n                    }\n                case .ASCapsuleStyle:\n                    Group {\n                        HStack {\n                            Text(\"Background Color\")\n                            Spacer()\n                            ColorPicker(selection: $capsuleValue.backgroundColor) {}\n                        }\n                        HStack {\n                            Text(\"Foreground Color\")\n                            Spacer()\n                            ColorPicker(selection: $capsuleValue.foregroundColor) {}\n                        }\n                        HStack {\n                            Text(\"Movement Mode\")\n                            Spacer()\n                            Picker(selection: $capsuleValue.movementMode) {\n                                Text(\"Normal\").tag(ASMovementMode.normal)\n                                Text(\"Viscosity\").tag(ASMovementMode.viscosity)\n                            } label: {}\n                                .pickerStyle(.segmented)\n                        }\n                        \n                        VStack(alignment: .leading, spacing: 8) {\n                            Text(\"● SelectArea\").opacity(0.5).font(.caption)\n                            HStack {\n                                Text(\"0\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $capsuleValue.selectArea0, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(capsuleValue.selectArea0, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"1\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $capsuleValue.selectArea1, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(capsuleValue.selectArea1, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"2\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $capsuleValue.selectArea2, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(capsuleValue.selectArea2, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"3\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $capsuleValue.selectArea3, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(capsuleValue.selectArea3, specifier: \"%.2f\")\")\n                            }\n                        }\n                        .padding(.top, 20)\n                    }\n                case .ASJellyStyle:\n                    Group {\n                        HStack {\n                            Text(\"Background Color\")\n                            Spacer()\n                            ColorPicker(selection: $jellyValue.backgroundColor) {}\n                        }\n                        HStack {\n                            Text(\"Foreground Color\")\n                            Spacer()\n                            ColorPicker(selection: $jellyValue.foregroundColor) {}\n                        }\n                        HStack {\n                            Text(\"Jelly Raddius\")\n                            Spacer()\n                            Slider(value: $jellyValue.jellyRadius, in: 0...100)\n                            Spacer()\n                            Text(\"\\(jellyValue.jellyRadius, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"Jelly Depth\")\n                            Spacer()\n                            Slider(value: $jellyValue.jellyDepth, in: 0...1.0)\n                            Spacer()\n                            Text(\"\\(jellyValue.jellyDepth, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"Jelly Edge\")\n                            Spacer()\n                            Picker(selection: $jellyValue.jellyEdge) {\n                                Text(\"Bottom/Trailing\").tag(ASEdgeMode.bottomTrailing)\n                                Text(\"Top/Leading\").tag(ASEdgeMode.topLeading)\n                            } label: {}\n                                .pickerStyle(.segmented)\n                        }\n                        \n                        VStack(alignment: .leading, spacing: 8) {\n                            Text(\"● SelectArea\").opacity(0.5).font(.caption)\n                            HStack {\n                                Text(\"0\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $jellyValue.selectArea0, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(jellyValue.selectArea0, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"1\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $jellyValue.selectArea1, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(jellyValue.selectArea1, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"2\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $jellyValue.selectArea2, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(jellyValue.selectArea2, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"3\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $jellyValue.selectArea3, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(jellyValue.selectArea3, specifier: \"%.2f\")\")\n                            }\n                        }\n                        .padding(.top, 20)\n                    }\n                case .ASLineStyle:\n                    Group {\n                        HStack {\n                            Text(\"Line Color\")\n                            Spacer()\n                            ColorPicker(selection: $lineValue.lineColor) {}\n                        }\n                        HStack {\n                            Text(\"Line Small Width\")\n                            Spacer()\n                            Slider(value: $lineValue.lineSmallWidth, in: 0...6)\n                            Spacer()\n                            Text(\"\\(lineValue.lineSmallWidth, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"Line Large Scale\")\n                            Spacer()\n                            Slider(value: $lineValue.lineLargeScale, in: 0...1)\n                            Spacer()\n                            Text(\"\\(lineValue.lineLargeScale, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"Line Edge\")\n                            Spacer()\n                            Picker(selection: $lineValue.lineEdge) {\n                                Text(\"Bottom/Trailing\").tag(ASEdgeMode.bottomTrailing)\n                                Text(\"Top/Leading\").tag(ASEdgeMode.topLeading)\n                            } label: {}\n                                .pickerStyle(.segmented)\n                        }\n                        HStack {\n                            Text(\"Movement Mode\")\n                            Spacer()\n                            Picker(selection: $lineValue.movementMode) {\n                                Text(\"Normal\").tag(ASMovementMode.normal)\n                                Text(\"Viscosity\").tag(ASMovementMode.viscosity)\n                            } label: {}\n                                .pickerStyle(.segmented)\n                        }\n                        \n                        VStack(alignment: .leading, spacing: 8) {\n                            Text(\"● SelectArea\").opacity(0.5).font(.caption)\n                            HStack {\n                                Text(\"0\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $lineValue.selectArea0, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(lineValue.selectArea0, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"1\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $lineValue.selectArea1, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(lineValue.selectArea1, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"2\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $lineValue.selectArea2, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(lineValue.selectArea2, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"3\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $lineValue.selectArea3, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(lineValue.selectArea3, specifier: \"%.2f\")\")\n                            }\n                        }\n                        .padding(.top, 20)\n                    }\n                case .ASNeumorphismStyle:\n                    Group {\n                        HStack {\n                            Text(\"Background Color\")\n                            Spacer()\n                            ColorPicker(selection: $neumorphismValue.backgroundColor) {}\n                        }\n                        HStack {\n                            Text(\"Foreground Color\")\n                            Spacer()\n                            ColorPicker(selection: $neumorphismValue.foregroundColor) {}\n                        }\n                        HStack {\n                            Text(\"Corner Raddius\")\n                            Spacer()\n                            Slider(value: $neumorphismValue.cornerRadius, in: 0...35)\n                            Spacer()\n                            Text(\"\\(neumorphismValue.cornerRadius, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"Shadow Raddius\")\n                            Spacer()\n                            Slider(value: $neumorphismValue.shadowRadius, in: 0...7)\n                            Spacer()\n                            Text(\"\\(neumorphismValue.shadowRadius, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"Padding\")\n                            Spacer()\n                            Slider(value: $neumorphismValue.padding, in: 0...12)\n                            Spacer()\n                            Text(\"\\(neumorphismValue.padding, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"Shadow Opacity\")\n                            Spacer()\n                            Slider(value: $neumorphismValue.shadowOpacity, in: 0...1)\n                            Spacer()\n                            Text(\"\\(neumorphismValue.shadowOpacity, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"isInner\")\n                            Spacer()\n                            Toggle(isOn: $neumorphismValue.isInner) {}\n                        }\n                        HStack {\n                            Text(\"Movement Mode\")\n                            Spacer()\n                            Picker(selection: $neumorphismValue.movementMode) {\n                                Text(\"Normal\").tag(ASMovementMode.normal)\n                                Text(\"Viscosity\").tag(ASMovementMode.viscosity)\n                            } label: {}\n                                .pickerStyle(.segmented)\n                        }\n                        \n                        VStack(alignment: .leading, spacing: 8) {\n                            Text(\"● SelectArea\").opacity(0.5).font(.caption)\n                            HStack {\n                                Text(\"0\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $neumorphismValue.selectArea0, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(neumorphismValue.selectArea0, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"1\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $neumorphismValue.selectArea1, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(neumorphismValue.selectArea1, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"2\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $neumorphismValue.selectArea2, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(neumorphismValue.selectArea2, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"3\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $neumorphismValue.selectArea3, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(neumorphismValue.selectArea3, specifier: \"%.2f\")\")\n                            }\n                        }\n                        .padding(.top, 20)\n                    }\n                case .ASScaleStyle:\n                    Group {\n                        HStack {\n                            Text(\"Background Color\")\n                            Spacer()\n                            ColorPicker(selection: $scaleValue.backgroundColor) {}\n                        }\n                        HStack {\n                            Text(\"Foreground Color\")\n                            Spacer()\n                            ColorPicker(selection: $scaleValue.foregroundColor) {}\n                        }\n                        HStack {\n                            Text(\"Corner Raddius\")\n                            Spacer()\n                            Slider(value: $scaleValue.cornerRadius, in: 0...22)\n                            Spacer()\n                            Text(\"\\(scaleValue.cornerRadius, specifier: \"%.2f\")\")\n                        }\n                        HStack {\n                            Text(\"Minimum Scale\")\n                            Spacer()\n                            Slider(value: $scaleValue.minimumScale, in: 0...1)\n                            Spacer()\n                            Text(\"\\(scaleValue.minimumScale, specifier: \"%.2f\")\")\n                        }\n                        \n                        VStack(alignment: .leading, spacing: 8) {\n                            Text(\"● SelectArea\").opacity(0.5).font(.caption)\n                            HStack {\n                                Text(\"0\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $scaleValue.selectArea0, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(scaleValue.selectArea0, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"1\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $scaleValue.selectArea1, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(scaleValue.selectArea1, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"2\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $scaleValue.selectArea2, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(scaleValue.selectArea2, specifier: \"%.2f\")\")\n                            }\n                            HStack {\n                                Text(\"3\")\n                                    .font(.system(size: 16))\n                                Spacer()\n                                Slider(value: $scaleValue.selectArea3, in: 0...maxSelectArea)\n                                Spacer()\n                                Text(\"\\(scaleValue.selectArea3, specifier: \"%.2f\")\")\n                            }\n                        }\n                        .padding(.top, 20)\n                    }\n                }\n            }\n            .padding()\n        }\n    }\n}\n\nstruct SegmentedViewWithControl_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewWithControl(title: \"ABBasicStyle\", styleType: .ASBasicStyle, axisMode: .horizontal, constant: .constant(ASConstant.init()), tabs: {\n            Group {\n                Image(systemName: \"align.horizontal.left\")\n                    .itemTag(0, selectArea: 0) {\n                        SelectionItemView(\"align.horizontal.left.fill\")\n                    }\n                Image(systemName: \"align.horizontal.right\")\n                    .itemTag(1, selectArea: 0) {\n                        SelectionItemView(\"align.horizontal.right.fill\")\n                    }\n                Image(systemName: \"align.vertical.top\")\n                    .itemTag(2, selectArea: 0) {\n                        SelectionItemView(\"align.vertical.top.fill\")\n                    }\n                Image(systemName: \"align.vertical.bottom\")\n                    .itemTag(3, selectArea: 0) {\n                        SelectionItemView(\"align.vertical.bottom.fill\")\n                    }\n            }\n        }, style: {\n            ASBasicStyle()\n        })\n        .padding()\n        .preferredColorScheme(.dark)\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/SelectionItemView.swift",
    "content": "//\n//  SelectionItemView.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nstruct SelectionItemView: View {\n    \n    @EnvironmentObject private var stateValue: ASStateValue\n    @State private var scale: CGFloat = 1\n    \n    let iconName: String\n    \n    init(_ iconName: String) {\n        self.iconName = iconName\n    }\n    \n    var body: some View {\n        Image(systemName: iconName)\n            .foregroundColor(Color.white)\n            .scaleEffect(scale)\n            .onAppear {\n                scale = 1\n                if !stateValue.isInitialRun {\n                    withAnimation(.easeInOut(duration: 0.26)) {\n                        scale = 1.2\n                    }\n                    withAnimation(.easeInOut(duration: 0.26).delay(0.26)) {\n                        scale = 1\n                    }\n                }\n            }\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/ViewModel/BacisValue.swift",
    "content": "//\n//  BacisValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass BasicValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color.white.opacity(0.2), scale: 0.3))\n    \n    @Published var backgroundColor: Color = .gray.opacity(0.3)\n    @Published var foregroundColor: Color = .black.opacity(0.7)\n    @Published var cornerRadius: CGFloat = 6\n    @Published var padding: CGFloat = 3\n    @Published var isApplySelectionCornerRadius: Bool = true\n    @Published var movementMode: ASMovementMode = .viscosity\n    \n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/ViewModel/CapsuleValue.swift",
    "content": "//\n//  CapsuleValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass CapsuleValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x444444), scale: 0))\n    \n    @Published var backgroundColor: Color = .gray.opacity(0.4)\n    @Published var foregroundColor: Color = Color.blue\n    @Published var movementMode: ASMovementMode = .viscosity\n    \n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n    @Published var selectArea3: CGFloat = 0\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/ViewModel/JellyValue.swift",
    "content": "//\n//  JellyValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass JellyValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x444444), scale: 0))\n    \n    @Published var backgroundColor: Color = .gray.opacity(0.1)\n    @Published var foregroundColor: Color = .purple\n    @Published var jellyRadius: CGFloat = 56\n    @Published var jellyDepth: CGFloat = 0.9\n    @Published var jellyEdge: ASEdgeMode = .bottomTrailing\n    \n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n    @Published var selectArea3: CGFloat = 0\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/ViewModel/LineValue.swift",
    "content": "//\n//  LineValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass LineValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x202020), scale: 0))\n    \n    @Published var lineColor: Color = .blue\n    @Published var lineSmallWidth: CGFloat = 2\n    @Published var lineLargeScale: CGFloat = 1.0\n    @Published var lineEdge: ASEdgeMode = .bottomTrailing\n    @Published var movementMode: ASMovementMode = .viscosity\n    \n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n    @Published var selectArea3: CGFloat = 0\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/ViewModel/NeumorphismValue.swift",
    "content": "//\n//  NeumorphismValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass NeumorphismValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x444444), scale: 0))\n    \n    @Published var backgroundColor: Color = .clear\n    @Published var foregroundColor: Color = .clear\n    @Published var cornerRadius: CGFloat = 11\n    @Published var padding: CGFloat = 12\n    @Published var shadowRadius: CGFloat = 5\n    @Published var shadowOpacity: CGFloat = 0.7\n    @Published var isInner: Bool = false\n    @Published var movementMode: ASMovementMode = .viscosity\n\n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n    @Published var selectArea3: CGFloat = 0\n    \n    init(backgroundColor: Color = Color(hex: 0x31353A),\n         foregroundColor: Color = Color(hex: 0x31353A),\n         cornerRadius: CGFloat = 11,\n         padding: CGFloat = 12,\n         shadowRadius: CGFloat = 5,\n         shadowOpacity: CGFloat = 0.7,\n         isInner: Bool = false,\n         movementMode: ASMovementMode = .viscosity) {\n        \n        self.backgroundColor = backgroundColor\n        self.foregroundColor = foregroundColor\n        self.cornerRadius = cornerRadius\n        self.padding = padding\n        self.shadowRadius = shadowRadius\n        self.isInner = isInner\n        self.movementMode = movementMode\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/ViewModel/NormalValue.swift",
    "content": "//\n//  NormalValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/24.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass NormalValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x444444), scale: 0))\n    \n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/ViewModel/ScaleValue.swift",
    "content": "//\n//  ScaleValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass ScaleValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x444444), scale: 0))\n    \n    @Published var backgroundColor: Color = .clear\n    @Published var foregroundColor: Color = Color.blue\n    @Published var cornerRadius: CGFloat = 11\n    @Published var minimumScale: CGFloat = 0.1\n    \n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n    @Published var selectArea3: CGFloat = 0\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/ViewModel/ViscosityValue.swift",
    "content": "//\n//  ViscosityValue.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/24.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nclass ViscosityValue: ObservableObject {\n    \n    @Published var constant = ASConstant(divideLine: .init(color: Color(hex: 0x444444), scale: 0))\n\n    @Published var selectArea0: CGFloat = 0\n    @Published var selectArea1: CGFloat = 0\n    @Published var selectArea2: CGFloat = 0\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/Shared/WithoutStyleView.swift",
    "content": "//\n//  WithoutStyleView.swift\n//  AxisSegmentedViewExample\n//\n//  Created by jasu on 2022/03/23.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n\nimport SwiftUI\nimport AxisSegmentedView\n\nstruct WithoutStyleView: View {\n    \n    @State private var selection1: Int = 0\n    @State private var constant1 = ASConstant(axisMode: .vertical)\n    \n    @State private var selection2: Int = 0\n    @State private var constant2 = ASConstant(axisMode: .horizontal)\n\n    var body: some View {\n        VStack {\n            AxisSegmentedView(selection: $selection1, constant: constant1) {\n                TabViews()\n            } onTapReceive: { selectionTap in\n                /// Imperative syntax\n                print(\"---------------------\")\n                print(\"Selection : \", selectionTap)\n                print(\"Already selected : \", self.selection1 == selectionTap)\n            }\n            .clipped()\n            AxisSegmentedView(selection: $selection2, constant: constant2) {\n                TabViews()\n            } onTapReceive: { selectionTap in\n                /// Imperative syntax\n                print(\"---------------------\")\n                print(\"Selection : \", selectionTap)\n                print(\"Already selected : \", self.selection2 == selectionTap)\n            }\n            .clipped()\n        }\n    }\n}\n\nstruct TabViews: View {\n    \n    @State private var maxArea1: CGFloat = 200\n    @EnvironmentObject private var stateValue: ASStateValue\n    \n    let colors = [Color(hex: 0x295A76), Color(hex: 0x7FACAA), Color(hex: 0xEBF4CC), Color(hex: 0xE79875), Color(hex: 0xBA523C), Color(hex: 0x295A76)]\n    \n    var listView: some View {\n        List(0...100, id: \\.self) { index in\n            Button {\n                print(\"click\")\n            } label: {\n                Text(\"Index \\(index)\")\n            }\n        }.listStyle(.plain)\n    }\n    \n    var body: some View {\n        Group {\n            Rectangle()\n                .fill(colors[0])\n                .overlay(\n                    Text(\"0\")\n                )\n                .itemTag(0, selectArea: maxArea1) {\n                    Rectangle()\n                        .fill(.red)\n                        .overlay(\n                            Text(\"0\")\n                        )\n                }\n            Rectangle()\n                .fill(colors[1])\n                .overlay(\n                    Text(\"1\")\n                )\n                .itemTag(1, selectArea: maxArea1) {\n                    listView\n                }\n            Rectangle()\n                .fill(colors[2])\n                .overlay(\n                    Text(\"2\")\n                )\n                .itemTag(2, selectArea: maxArea1) {\n                    listView\n                }\n            Rectangle()\n                .fill(colors[3])\n                .overlay(\n                    Text(\"3\")\n                )\n                .itemTag(3, selectArea: maxArea1) {\n                    listView\n                }\n        }\n    }\n}\n\nstruct WithoutStyleView_Previews: PreviewProvider {\n    static var previews: some View {\n        WithoutStyleView()\n            .preferredColorScheme(.dark)\n    }\n}\n"
  },
  {
    "path": "AxisSegmentedViewExample/macOS/macOS.entitlements",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n    <key>com.apple.security.app-sandbox</key>\n    <true/>\n    <key>com.apple.security.files.user-selected.read-only</key>\n    <true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2022 jasu\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "Package.swift",
    "content": "// swift-tools-version: 5.6\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"AxisSegmentedView\",\n    platforms: [\n        .iOS(.v14),\n        .tvOS(.v14),\n        .macOS(.v11)\n    ],\n    products: [\n        // Products define the executables and libraries a package produces, and make them visible to other packages.\n        .library(\n            name: \"AxisSegmentedView\",\n            targets: [\"AxisSegmentedView\"]),\n    ],\n    dependencies: [\n        // Dependencies declare other packages that this package depends on.\n        // .package(url: /* package url */, from: \"1.0.0\"),\n    ],\n    targets: [\n        // Targets are the basic building blocks of a package. A target can define a module or a test suite.\n        // Targets can depend on other targets in this package, and on products in packages this package depends on.\n        .target(\n            name: \"AxisSegmentedView\",\n            dependencies: []),\n        .testTarget(\n            name: \"AxisSegmentedViewTests\",\n            dependencies: [\"AxisSegmentedView\"]),\n    ]\n)\n"
  },
  {
    "path": "README.md",
    "content": "# **AxisSegmentedView for SwiftUI**\nA library that allows you to easily create various styles of segmented views. Supports iOS, macOS and tvOS.\n\n[![Platforms](https://img.shields.io/badge/Platforms-iOS%20%7C%20macOS-blue?style=flat-square)](https://developer.apple.com/macOS)\n[![iOS](https://img.shields.io/badge/iOS-14.0-blue.svg)](https://developer.apple.com/iOS)\n[![macOS](https://img.shields.io/badge/macOS-11.0-blue.svg)](https://developer.apple.com/macOS)\n[![tvOS](https://img.shields.io/badge/tvOS-14.0-blue.svg)](https://developer.apple.com/tvOS)\n[![instagram](https://img.shields.io/badge/instagram-@dev.fabula-orange.svg?style=flat-square)](https://www.instagram.com/dev.fabula)\n[![SPM](https://img.shields.io/badge/SPM-compatible-red?style=flat-square)](https://developer.apple.com/documentation/swift_packages/package/)\n[![MIT](https://img.shields.io/badge/licenses-MIT-red.svg)](https://opensource.org/licenses/MIT)  \n\n## Screenshot\n|Horizontal|Vertical|For use without style|\n|:---:|:---:|:---:|\n|<img src=\"Markdown/AxisSegmentedView1.png\">|<img src=\"Markdown/AxisSegmentedView2.png\">|<img src=\"Markdown/AxisSegmentedView3.png\">|\n\n\nhttps://user-images.githubusercontent.com/1617304/160249891-a2fe15f2-5b07-4c2c-a204-fa9bd8981989.mov\n\n\n## Example\n[https://fabulaapp.page.link/234](https://fabulaapp.page.link/234)\n\n## Usages\n```swift\nAxisSegmentedView(selection: $selection, constant: .init()) {\n    Image(systemName: \"align.horizontal.left\")\n        .itemTag(0, selectArea: 0) {\n            Image(systemName: \"align.horizontal.left.fill\")\n        }\n    Image(systemName: \"align.horizontal.right\")\n        .itemTag(1, selectArea: 160) {\n            Image(systemName: \"align.horizontal.right.fill\")\n        }\n    Image(systemName: \"align.vertical.top\")\n        .itemTag(2, selectArea: 0) {\n            Image(systemName: \"align.vertical.top.fill\")\n        }\n    Image(systemName: \"align.vertical.bottom\")\n        .itemTag(3, selectArea: 160) {\n            Image(systemName: \"align.vertical.bottom.fill\")\n        }\n} style: {\n    ASBasicStyle()\n} onTapReceive: { selectionTap in\n    /// Imperative syntax\n    print(\"---------------------\")\n    print(\"Selection : \", selectionTap)\n    print(\"Already selected : \", self.selection == selectionTap)\n}\n.frame(height: 44)\n```\n\n## Usages - For use without style\n```swift\nvar listView: some View {\n    List(0...100, id: \\.self) { index in\n        Button {\n            print(\"click\")\n        } label: {\n            Text(\"Index \\(index)\")\n        }\n    }.listStyle(.plain)\n}\n    \nAxisSegmentedView(selection: $selection, constant: .init()) {\n    Rectangle()\n        .overlay(\n            Text(\"0\")\n        )\n        .itemTag(0, selectArea: maxArea1) {\n            Rectangle()\n                .overlay(\n                    Text(\"0\")\n                )\n        }\n    Rectangle()\n        .overlay(\n            Text(\"1\")\n        )\n        .itemTag(1, selectArea: maxArea1) {\n            listView\n        }\n    Rectangle()\n        .overlay(\n            Text(\"2\")\n        )\n        .itemTag(2, selectArea: maxArea1) {\n            listView\n        }\n    Rectangle()\n        .overlay(\n            Text(\"3\")\n        )\n        .itemTag(3, selectArea: maxArea1) {\n            listView\n        }\n}\n```\n  \n## Swift Package Manager\nThe Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift compiler. Once you have your Swift package set up, adding AxisSegmentedView as a dependency is as easy as adding it to the dependencies value of your Package.swift.\n\n```swift\ndependencies: [\n    .package(url: \"https://github.com/jasudev/AxisSegmentedView.git\", .branch(\"main\"))\n]\n```\n\n## Contact\ninstagram : [@dev.fabula](https://www.instagram.com/dev.fabula)  \nemail : [dev.fabula@gmail.com](mailto:dev.fabula@gmail.com)\n\n## License\nAxisSegmentedView is available under the MIT license. See the [LICENSE](LICENSE) file for more info.\n"
  },
  {
    "path": "Sources/AxisSegmentedView/AxisSegmentedView.swift",
    "content": "\n//\n//  AxisSegmentedView.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/19.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\npublic struct AxisSegmentedView<SelectionValue, Content, Style> : View where SelectionValue : Hashable, Content : View, Style : View {\n    \n    @StateObject private var stateValue: ASStateValue = .init()\n    @StateObject private var positionValue: ASPositionValue<SelectionValue> = .init()\n    @State private var currentSize: CGSize = .zero\n    \n    private let selectionValue: ASSelectionValue<SelectionValue>\n    private let constant: ASConstant\n    \n    public var content: () -> Content\n    public var style: (() -> Style)? = nil\n    \n    public var body: some View {\n        GeometryReader { proxy in\n            ZStack {\n                if currentSize != proxy.size {\n                    if positionValue.toggleSelectArea {\n                        getContent(proxy)\n                    }else {\n                        getContent(proxy)\n                    }\n                }else {\n                    if positionValue.toggleSelectArea {\n                        getContent(proxy)\n                    }else {\n                        getContent(proxy)\n                    }\n                }\n            }\n        }\n        .animation(constant.animation ?? .none, value: selectionValue.selection)\n        .environmentObject(selectionValue)\n        .environmentObject(positionValue)\n        .environmentObject(stateValue)\n        .onChange(of: constant) { newValue in\n            stateValue.constant = newValue\n            positionValue.constant = newValue\n        }\n    }\n    \n    private func getContent(_ proxy: GeometryProxy) -> some View {\n        ZStack {\n            Color.clear\n            if constant.axisMode == .horizontal {\n                HStack(spacing: 0) {\n                    content()\n                }\n            }else {\n                VStack(spacing: 0) {\n                    content()\n                }\n            }\n        }\n        .onAppear {\n            DispatchQueue.main.async {\n                positionValue.isHasStyle = self.style != nil\n                currentSize = proxy.size\n            }\n        }\n        .backgroundPreferenceValue(ASItemPreferenceKey.self) { items in\n            getBackground(items, size: proxy.size)\n        }\n    }\n\n    private func getBackground(_ items: [ASItem], size: CGSize) -> some View {\n        return Color.clear\n            .overlay(style?())\n            .onAppear {\n                positionValue.constant = constant\n                positionValue.items = items\n                positionValue.size = size\n            }\n    }\n}\n\npublic extension AxisSegmentedView where SelectionValue: Hashable, Content: View, Style: View {\n    \n    /// Initializes `AxisSegmentedView`\n    /// - Parameters:\n    ///   - selection: The currently selected tap value.\n    ///   - constant: A constant value for segmented view.\n    ///   - content: Content views with tab items applied.\n    ///   - style: The style of the segmented view.\n    ///   - onTapReceive: Method that treats the currently selected tab as imperative syntax.\n    init(selection: Binding<SelectionValue>,\n         constant: ASConstant = .init(),\n         @ViewBuilder _ content: @escaping () -> Content,\n         @ViewBuilder style: @escaping () -> Style,\n         onTapReceive: ((SelectionValue) -> Void)? = nil) {\n        \n        self.selectionValue = ASSelectionValue(selection: selection, onTapReceive: onTapReceive)\n        self.constant = constant\n        self.style = style\n        self.content = content\n    }\n}\n\npublic extension AxisSegmentedView where SelectionValue: Hashable, Content: View, Style == EmptyView {\n    \n    /// Initializes `AxisSegmentedView`\n    /// - Parameters:\n    ///   - selection: The currently selected tap value.\n    ///   - constant: A constant value for segmented view.\n    ///   - content: Content views with tab items applied.\n    ///   - onTapReceive: Method that treats the currently selected tab as imperative syntax.\n    init(selection: Binding<SelectionValue>,\n         constant: ASConstant = .init(),\n         @ViewBuilder _ content: @escaping () -> Content,\n         onTapReceive: ((SelectionValue) -> Void)? = nil) {\n        \n        self.selectionValue = ASSelectionValue(selection: selection, onTapReceive: onTapReceive)\n        self.constant = constant\n        self.content = content\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Private/Model/ASItem.swift",
    "content": "//\n//  ASItem.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/18.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// Information on the tab button.\nstruct ASItem: Identifiable {\n    \n    let id = UUID()\n    \n    /// \bA tag that separates the tab view.\n    let tag: Any\n    \n    /// The size of the selected tab.\n    /// If it is less than or equal to 0, it is the same as normal size.\n    let selectArea: CGFloat\n    \n    /// \bThe tab button view in the selected state.\n    let select: AnyView\n    \n    /// Initializes `ASItem`\n    /// - Parameters:\n    ///   - tag: A tag that separates the tab view.\n    ///   - selectArea: The size of the selected tab. If it is less than or equal to 0, it is the same as normal size.\n    ///   - select: The tab button view in the selected state.\n    init<V: View>(tag: Any, selectArea: CGFloat = 0, select: V) {\n        self.tag = tag\n        self.selectArea = selectArea\n        self.select = AnyView(select)\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Private/Modifiers/ASItemModifier.swift",
    "content": "//\n//  ASItemModifier.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/18.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\nstruct ASItemPreferenceKey: PreferenceKey {\n    typealias Value = [ASItem]\n    static var defaultValue: [ASItem] = []\n    static func reduce(value: inout [ASItem], nextValue: () -> [ASItem]) {\n        value.append(contentsOf: nextValue())\n    }\n}\n\nstruct ASItemModifier<SelectionValue: Hashable, S: View>: ViewModifier {\n    \n    @EnvironmentObject private var stateValue: ASStateValue\n    @EnvironmentObject private var selectionValue: ASSelectionValue<SelectionValue>\n    @EnvironmentObject private var positionValue: ASPositionValue<SelectionValue>\n    @Namespace private var namespace\n    \n    var item: ASItem {\n        return ASItem(tag: tag, selectArea: selectArea, select: AnyView(select))\n    }\n    \n    var tag: SelectionValue\n    var selectArea: CGFloat\n    var select: S? = nil\n    \n    private var selection: Binding<SelectionValue> { Binding(\n        get: { self.selectionValue.selection },\n        set: {\n            self.selectionValue.onTapReceive?($0)\n            self.selectionValue.selection = $0\n            self.setupStateValue()\n        })\n    }\n    \n    var normalSize: CGSize {\n        if positionValue.constant.axisMode == .horizontal {\n            return CGSize(width: positionValue.getNormalArea(self.selection.wrappedValue),\n                          height: positionValue.size.height)\n        }else {\n            return CGSize(width: positionValue.size.width,\n                          height: positionValue.getNormalArea(self.selection.wrappedValue))\n        }\n    }\n    \n    var selectSize: CGSize {\n        if positionValue.constant.axisMode == .horizontal {\n            return CGSize(width: positionValue.getSelectArea(self.selection.wrappedValue),\n                          height: positionValue.size.height)\n        }else {\n            return CGSize(width: positionValue.size.width,\n                          height: positionValue.getSelectArea(self.selection.wrappedValue))\n        }\n    }\n    \n    var divideLineView: some View {\n        ZStack {\n            if positionValue.constant.axisMode == .horizontal {\n                Rectangle()\n                    .fill(positionValue.constant.divideLine.color)\n                    .frame(width: positionValue.constant.divideLine.width, height: positionValue.size.height)\n                    .scaleEffect(CGSize(width: 1, height: positionValue.constant.divideLine.scale))\n            }else {\n                Rectangle()\n                    .fill(positionValue.constant.divideLine.color)\n                    .frame(width: positionValue.size.width, height: positionValue.constant.divideLine.width)\n                    .scaleEffect(CGSize(width: positionValue.constant.divideLine.scale, height: 1))\n            }\n        }\n    }\n    \n    func body(content: Content) -> some View {\n        let item = ASItem(tag: tag, selectArea: selectArea, select: AnyView(select))\n        ZStack(alignment: .leading) {\n            if positionValue.isHasStyle {\n                Button {\n                    self.selection.wrappedValue = tag\n                    self.stateValue.isInitialRun = false\n                    if positionValue.constant.isActivatedVibration { vibration() }\n                } label: {\n                    ZStack(alignment: positionValue.constant.axisMode == .horizontal ? .leading : .top)  {\n                        getItemView(content)\n                            .frame(width: getItemSize().width, height: getItemSize().height)\n                    }\n                    .contentShape(Rectangle())\n                }\n                .buttonStyle(.plain)\n                .preference(key: ASItemPreferenceKey.self, value: [item])\n            }else {\n                ZStack {\n                    Button {\n                        self.selection.wrappedValue = tag\n                        self.stateValue.isInitialRun = false\n                        if positionValue.constant.isActivatedVibration { vibration() }\n                    } label: {\n                        content\n                    }\n                    .contentShape(Rectangle())\n                    .buttonStyle(.plain)\n                    .opacity(tag != self.selection.wrappedValue ? 1 : 0)\n                    \n                    select?\n                        .contentShape(Rectangle())\n                        .opacity(tag == self.selection.wrappedValue ? 1 : 0)\n                    \n                }\n                .frame(width: getItemSize().width, height: getItemSize().height)\n                .preference(key: ASItemPreferenceKey.self, value: [item])\n            }\n            \n            if isShowDivideLine() {\n                ZStack {\n                    if positionValue.constant.axisMode == .horizontal {\n                        divideLineView\n                            .offset(x: -positionValue.constant.divideLine.width * 0.5)\n                            .matchedGeometryEffect(id: \"DivideLine\", in: namespace)\n                    }else {\n                        divideLineView\n                            .offset(y: -positionValue.constant.divideLine.width * 0.5)\n                            .matchedGeometryEffect(id: \"DivideLine\", in: namespace)\n                    }\n                }\n            }\n        }\n        .onAppear {\n            self.setupStateValue()\n        }\n        .onChange(of: selectArea) { newValue in\n            positionValue.toggleSelectArea.toggle()\n        }\n        \n    }\n    \n    private func getItemSize() -> CGSize {\n        if positionValue.constant.axisMode == .horizontal {\n            return CGSize(width: tag == self.selection.wrappedValue ? selectSize.width : normalSize.width, height: positionValue.size.height)\n        }else {\n            return CGSize(width: positionValue.size.width, height: tag == self.selection.wrappedValue ? selectSize.height : normalSize.height)\n        }\n    }\n    \n    private func isShowDivideLine() -> Bool {\n        let currentIndex = positionValue.indexOfTag(tag)\n        let selectionIndex = positionValue.indexOfTag(self.selection.wrappedValue)\n        if positionValue.constant.divideLine.isShowSelectionLine {\n            return currentIndex != 0\n        }else {\n            return currentIndex != 0 && currentIndex != selectionIndex && currentIndex != selectionIndex + 1\n        }\n    }\n    \n    private func getItemView(_ content: Content) -> some View {\n        ZStack {\n            if tag == self.selection.wrappedValue {\n                ZStack {\n                    if let select = select {\n                        select\n                            .onAppear {\n                                DispatchQueue.main.async {\n                                    stateValue.previousIndex = stateValue.selectionIndex\n                                    stateValue.previousFrame = positionValue.getSelectFrame(self.selection.wrappedValue, selectionIndex: stateValue.selectionIndex)\n                                    \n                                    if positionValue.constant.axisMode == .horizontal {\n                                        stateValue.otherSize = CGSize(width: normalSize.width, height: positionValue.size.height)\n                                    }else {\n                                        stateValue.otherSize = CGSize(width: positionValue.size.width, height: normalSize.height)\n                                    }\n                                }\n                            }\n                            .fixedSize()\n                            .matchedGeometryEffect(id: stateValue.constant.isActivatedGeometryEffect ? \"ITEM-NAMESPACE-ID\" : \"\\(UUID())\", in: namespace)\n                    }else {\n                        content\n                            .fixedSize()\n                            .matchedGeometryEffect(id: stateValue.constant.isActivatedGeometryEffect ? \"ITEM-NAMESPACE-ID\" : \"\\(UUID())\", in: namespace)\n                    }\n                }\n            } else {\n                content\n                    .fixedSize()\n                    .matchedGeometryEffect(id: stateValue.constant.isActivatedGeometryEffect ? \"ITEM-NAMESPACE-ID\" : \"\\(UUID())\", in: namespace)\n            }\n        }\n    }\n    \n    private func setupStateValue() {\n        let selectionIndex = positionValue.indexOfTag(self.selection.wrappedValue)\n        stateValue.constant = positionValue.constant\n        stateValue.itemCount = positionValue.itemCount\n        stateValue.selectionIndex = selectionIndex\n        stateValue.selectionFrame = positionValue.getSelectFrame(self.selection.wrappedValue, selectionIndex: selectionIndex)\n        stateValue.size = positionValue.size\n    }\n    \n#if os(iOS)\n    /// The device generates vibrations.\n    /// - Parameter style: Vibration style.\n    private func vibration(_ style: UIImpactFeedbackGenerator.FeedbackStyle = .soft) {\n        let feedback = UIImpactFeedbackGenerator(style: style)\n        feedback.prepare()\n        feedback.impactOccurred()\n    }\n#else\n    private func vibration() {}\n#endif\n}\n\nextension ASItemModifier where SelectionValue: Hashable, S: View {\n    init(tag: SelectionValue, selectArea: CGFloat, select: S) {\n        self.tag = tag\n        self.selectArea = selectArea\n        self.select = select\n    }\n}\n\nextension ASItemModifier where SelectionValue: Hashable, S == EmptyView {\n    init(tag: SelectionValue, selectArea: CGFloat) {\n        self.tag = tag\n        self.selectArea = selectArea\n    }\n}\n\nstruct ASItemModifier_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview(constant: .init(axisMode: .horizontal, divideLine: .init(color: .blue.opacity(0.5)))) {\n            ASBasicStyle()\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n        .preferredColorScheme(.dark)\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Private/ViewModel/ASPositionValue.swift",
    "content": "//\n//  ASPositionValue.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/18.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// A viewmodel that provides the state value of the tab button.\nclass ASPositionValue<SelectionValue: Hashable>: ObservableObject {\n    \n    @Published var size: CGSize = .zero\n    @Published var items: [ASItem] = []\n    @Published var toggleSelectArea: Bool = false\n    @Published var isHasStyle: Bool = true\n    @Published var constant: ASConstant = .init()\n    \n    var itemCount: Int {\n        return items.count\n    }\n    \n    var sizeArea: CGFloat {\n        constant.axisMode == .horizontal ? size.width : size.height\n    }\n    \n    func indexOfTag(_ tag: SelectionValue?) -> Int {\n        guard let tag = tag else { return 0 }\n        return items.firstIndex(where: {$0.tag as! SelectionValue == tag}) ?? 0\n    }\n    \n    func getNormalArea(_ selection: SelectionValue?) -> CGFloat {\n        let selectArea = getItemSelectArea(selection)\n        let area: CGFloat = selectArea > 0 ? ((sizeArea - selectArea) / CGFloat(itemCount - 1)) : sizeArea / CGFloat(itemCount)\n        return area > 0 ? area : 1\n    }\n    \n    func getSelectArea(_ selection: SelectionValue?) -> CGFloat {\n        let selectArea = getItemSelectArea(selection)\n        let area: CGFloat = selectArea > 0 ? selectArea : sizeArea / CGFloat(itemCount)\n        return area > 0 ? area : 1\n    }\n    \n    func getSelectFrame(_ selection: SelectionValue?, selectionIndex: Int) -> CGRect {\n        let normalArea = getNormalArea(selection)\n        let selectArea = getSelectArea(selection)\n        \n        if constant.axisMode == .horizontal {\n            return CGRect(x: normalArea * CGFloat(selectionIndex), y: 0, width: selectArea, height: size.height)\n        }else {\n            return CGRect(x: 0, y: normalArea * CGFloat(selectionIndex), width: size.width, height: selectArea)\n        }\n    }\n    \n    private func getItemSelectArea(_ selection: SelectionValue?) -> CGFloat {\n        guard !items.isEmpty else { return 0 }\n        let selectionIndex = indexOfTag(selection)\n        return items[selectionIndex].selectArea\n    }\n}\n\nstruct ASPositionValue_previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview {\n            ASBasicStyle()\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Private/ViewModel/ASSelectionValue.swift",
    "content": "//\n//  ASSelectionValue.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/18.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// Manage the currently selected tab status.\nclass ASSelectionValue<SelectionValue: Hashable>: ObservableObject {\n    \n    /// The currently selected tap value.\n    @Binding var selection: SelectionValue\n    var onTapReceive: ((SelectionValue) -> Void)?\n    \n    /// Initializes `ASSelectionValue`\n    /// - Parameters:\n    ///   - selection: The currently selected tap value.\n    ///   - onTapReceive: Method that treats the currently selected tab as imperative syntax.\n    init(selection: Binding<SelectionValue>, onTapReceive: ((SelectionValue) -> Void)? = nil) {\n        _selection = selection\n        self.onTapReceive = onTapReceive\n    }\n}\n\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Constants/ASConstant.swift",
    "content": "//\n//  ASConstant.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/18.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// Motion effect mode in style.\npublic enum ASMovementMode: Hashable {\n    case normal\n    case viscosity\n}\n\n/// The object position mode in style.\npublic enum ASEdgeMode: Hashable {\n    case topLeading\n    case bottomTrailing\n}\n\n/// The axis mode of the segmented view.\npublic enum ASAxisMode: Hashable {\n    case horizontal\n    case vertical\n}\n\n/// Defines the settings for the segmented view.\npublic struct ASConstant: Equatable {\n    \n    /// The axis mode of the segmented view.\n    public var axisMode: ASAxisMode\n\n    /// Defines the line between the tab buttons.\n    public var divideLine: ASLineConstant\n    \n    /// Activate the geometry effect.\n    public var isActivatedGeometryEffect: Bool\n    \n    /// Activate the device's vibration. Only iOS is supported.\n    public var isActivatedVibration: Bool\n    \n    /// A transition when a tab is selected.\n    public var transition: AnyTransition\n    \n    /// Animation when selecting a tab.\n    public var animation: Animation?\n    \n    \n    /// Initializes `ASConstant`\n    /// - Parameters:\n    ///   - axisMode: The axis mode of the segmented view.\n    ///   - divideLine: Defines the line between the tab buttons.\n    ///   - isActivatedGeometryEffect: Whether to use a GeometryEffect when switching tab buttons.\n    ///   - isActivatedVibration: Activate the device's vibration. Only iOS is supported.\n    ///   - transition: A transition when a tab is selected.\n    ///   - animation: Animation when selecting a tab.\n    public init(axisMode: ASAxisMode = .horizontal,\n                divideLine: ASLineConstant = .init(),\n                isActivatedGeometryEffect: Bool = true,\n                isActivatedVibration: Bool = true,\n                transition: AnyTransition = .opacity,\n                animation: Animation? = .easeInOut) {\n        self.axisMode = axisMode\n        self.divideLine = divideLine\n        self.isActivatedGeometryEffect = isActivatedGeometryEffect\n        self.isActivatedVibration = isActivatedVibration\n        self.transition = transition\n        self.animation = animation\n    }\n    \n    public static func == (lhs: ASConstant, rhs: ASConstant) -> Bool {\n        lhs.axisMode == rhs.axisMode &&\n        lhs.divideLine == rhs.divideLine &&\n        lhs.isActivatedGeometryEffect == rhs.isActivatedGeometryEffect &&\n        lhs.isActivatedVibration == rhs.isActivatedVibration &&\n        lhs.animation == rhs.animation\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Constants/ASLineConstant.swift",
    "content": "//\n//  ASLineConstant.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/20.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// Defines the line between the tab buttons.\npublic struct ASLineConstant: Equatable {\n    \n    /// The color of the line.\n    public var color: Color\n    \n    /// The short axis length of the line.\n    public var width: CGFloat\n    \n    /// The length scale of the line's long axis.\n    public var scale: CGFloat\n    \n    /// Whether to show the line around the selected tab.\n    public var isShowSelectionLine: Bool\n    \n    /// Initializes `ASLineConstant`\n    /// - Parameters:\n    ///   - color: The color of the line.\n    ///   - width: The short axis length of the line.\n    ///   - scale: The length scale of the line's long axis.\n    ///   - isShowSelectionLine: Whether to show the line around the selected tab.\n    public init(color: Color = .clear, width: CGFloat = 1, scale: CGFloat = 0.6, isShowSelectionLine: Bool = false) {\n        self.color = color\n        self.width = width\n        self.scale = scale\n        self.isShowSelectionLine = isShowSelectionLine\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Extensions/Animation+Extensions.swift",
    "content": "//\n//  Animation+Extensions.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/20.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\nextension Animation {\n    public static var axisSegmentedSpring = Animation.spring(response: 0.36, dampingFraction: 0.8, blendDuration: 0.8)\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Extensions/View+Extensions.swift",
    "content": "//\n//  View+Extensions.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/07.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\nextension View {\n    public func itemTag<SelectionValue: Hashable>(_ tag: SelectionValue, selectArea: CGFloat = 0) -> some View {\n        modifier(ASItemModifier(tag: tag, selectArea: selectArea))\n    }\n    \n    public func itemTag<SelectionValue: Hashable, S: View>(_ tag: SelectionValue,\n                                                           selectArea: CGFloat = 0,\n                                                           @ViewBuilder select: @escaping () -> S) -> some View {\n        modifier(ASItemModifier(tag: tag, selectArea: selectArea, select: select()))\n    }\n    \n    public func outerShadow(offset: CGFloat = 2, radius: CGFloat = 2, opacity: CGFloat = 1, isDark: Bool = true) -> some View {\n        modifier(NeumorphismOuterModifier(offset: offset, radius: radius, opacity: opacity, isDark: isDark))\n    }\n    \n    public func innerShadow<S : Shape>(_ content: S, radius: CGFloat = 6, opacity: CGFloat = 1, isDark: Bool = true) -> some View {\n        modifier(NeumorphismInnerModifier(shape: content, radius: radius, opacity: opacity, isDark: isDark))\n    }\n    \n    func reverseMask<M>(_ mask: M) -> some View where M: View {\n        self.mask(\n            mask\n                .background(Color.white)\n                .foregroundColor(.black)\n                .compositingGroup()\n                .luminanceToAlpha()\n        )\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Modifiers/NeumorphismInnerModifier.swift",
    "content": "//\n//  NeumorphismInnerModifier.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/19.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\npublic struct NeumorphismInnerModifier<T: Shape> : ViewModifier {\n    \n    public var lightColor: Color = .clear\n    public var darkColor: Color = .clear\n    \n    public var shape: T\n    public var radius: CGFloat\n    public var opacity: CGFloat\n    public var isDark: Bool\n    \n    public init(shape: T, radius: CGFloat = 10, opacity: CGFloat = 1, isDark: Bool = true) {\n        \n        self.shape = shape\n        self.radius = radius\n        self.opacity = opacity\n        self.isDark = isDark\n        \n        if isDark {\n            lightColor = .white.opacity(0.35)\n            darkColor = .black.opacity(1.0)\n        }else {\n            lightColor = .white.opacity(1.0)\n            darkColor = .black.opacity(0.35)\n        }\n    }\n    \n    public func body(content: Content) -> some View {\n        content\n            .overlay(\n                GeometryReader { proxy in\n                    self.shape.fill(self.lightColor.opacity(shadowOpacity()))\n                        .reverseMask(\n                            self.shape.offset(x: -self.shadowOffset(proxy), y: -self.shadowOffset(proxy))\n                        )\n                        .blur(radius: self.radius)\n                        .offset(x: self.shadowOffset(proxy) , y: self.shadowOffset(proxy))\n                        .overlay(\n                            self.shape.fill(self.darkColor.opacity(shadowOpacity()))\n                                .reverseMask(\n                                    self.shape.offset(x: self.shadowOffset(proxy), y: self.shadowOffset(proxy))\n                                )\n                                .blur(radius: self.radius)\n                                .offset(x: -self.shadowOffset(proxy) , y: -self.shadowOffset(proxy))\n                        )\n                        .mask(self.shape)\n                }\n            )\n    }\n    \n    private func shadowOpacity() -> CGFloat {\n        return 3 * max(min(opacity, 1), 0)\n    }\n    \n    private func shadowOffset(_ proxy: GeometryProxy) -> CGFloat {\n        return (proxy.size.width < proxy.size.height ? proxy.size.width : proxy.size.height) * 0.02\n    }\n}\n\nstruct NeumorphismInnerModifier_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview(constant: .init(axisMode: .horizontal)) {\n            ASNeumorphismStyle(cornerRadius: 16, isInner: false)\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n        .preferredColorScheme(.dark)\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Modifiers/NeumorphismOuterModifier.swift",
    "content": "//\n//  NeumorphismOuterModifier.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/19.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\npublic struct NeumorphismOuterModifier: ViewModifier {\n\n    public var lightColor : Color = .clear\n    public var darkColor : Color = .clear\n    public var offset: CGFloat\n    public var radius : CGFloat\n    public var opacity: CGFloat\n    \n    public init(offset: CGFloat = 2, radius: CGFloat = 2, opacity: CGFloat = 1, isDark: Bool = true) {\n        \n        self.offset = offset\n        self.radius = radius\n        self.opacity = opacity\n        \n        if isDark {\n            lightColor = .white.opacity(0.10)\n            darkColor = .black.opacity(0.30)\n        }else {\n            lightColor = .white.opacity(1.0)\n            darkColor = .black.opacity(0.20)\n        }\n    }\n    \n    public func body(content: Content) -> some View {\n        content\n            .shadow(color: lightColor.opacity(shadowOpacity()), radius: radius, x: -offset, y: -offset)\n            .shadow(color: darkColor.opacity(shadowOpacity()), radius: radius, x: offset, y: offset)\n    }\n    \n    private func shadowOpacity() -> CGFloat {\n        return 3 * max(min(opacity, 1), 0)\n    }\n}\n\nstruct NeumorphismOuterModifier_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview(constant: .init(axisMode: .vertical)) {\n            ASNeumorphismStyle(cornerRadius: 25)\n        }\n        .frame(width: 50)\n        .padding(.vertical, 16)\n        .preferredColorScheme(.dark)\n    }\n}\n\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Previews/SegmentedViewPreview.swift",
    "content": "//\n//  SegmentedViewPreview.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/18.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// This is a preview for testing.\npublic struct SegmentedViewPreview<S>: View where S : View {\n    \n    @State private var selection: Int = 0\n    private let constant: ASConstant\n    private let style: () -> S\n    \n    public init(constant: ASConstant = .init(), @ViewBuilder style: @escaping () -> S) {\n        self.constant = constant\n        self.style = style\n    }\n    \n    public var body: some View {\n        GeometryReader { proxy in\n            ZStack {\n                Color.clear\n                AxisSegmentedView(selection: $selection, constant: constant, {\n                    iconGroup\n                }, style: {\n                    style()\n                })\n                .font(.system(size: 20))\n            }\n        }\n    }\n    \n    var iconGroup: some View {\n        Group {\n            Image(systemName: \"align.horizontal.left\")\n                .itemTag(0, selectArea: 0) {\n                    Image(systemName: \"align.horizontal.left.fill\").foregroundColor(Color.white)\n                }\n            Image(systemName: \"align.horizontal.right\")\n                .itemTag(1, selectArea: 0) {\n                    Image(systemName: \"align.horizontal.right.fill\").foregroundColor(Color.white)\n                }\n            Image(systemName: \"align.vertical.top\")\n                .itemTag(2, selectArea: 160) {\n                    Image(systemName: \"align.vertical.top.fill\").foregroundColor(Color.white)\n                }\n            Image(systemName: \"align.vertical.bottom\")\n                .itemTag(3, selectArea: 0) {\n                    Image(systemName: \"align.vertical.bottom.fill\").foregroundColor(Color.white)\n                }\n        }\n    }\n    \n    var textGroup: some View {\n        Group {\n            Text(\"버튼1\")\n                .font(.callout)\n                .frame(width: 60)\n                .itemTag(0, selectArea: 0) {\n                    Text(\"버튼\")\n                        .font(.callout)\n                }\n            Text(\"버튼2\")\n                .font(.callout)\n                .itemTag(1, selectArea: 0) {\n                    Text(\"버튼22\")\n                        .font(.callout)\n                }\n            Text(\"버튼3\")\n                .font(.callout)\n                .itemTag(2, selectArea: 160) {\n                    Text(\"버튼33\")\n                        .font(.callout)\n                }\n            Text(\"버튼4\")\n                .font(.callout)\n                .itemTag(3, selectArea: 0) {\n                    Text(\"버튼44\")\n                        .font(.callout)\n                }\n        }\n    }\n}\n\nstruct SegmentedViewPreview_previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview(constant: .init()) {\n            ASBasicStyle()\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n    }\n}\n\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Shapes/ASCurveShape.swift",
    "content": "//\n//  ASCurveShape.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/04.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// A shape that expresses a curve.\npublic struct ASCurveShape: Shape {\n    \n    /// The diameter representing the curve.\n    let radius: CGFloat\n    \n    /// A value indicating the depth of the curve. A value between -1 and 1.\n    var depth: CGFloat\n    \n    /// The value of the horizontal position of the curve. A value between 0 and 1.\n    var position: CGFloat\n    \n    /// Animate depth and position.\n    public var animatableData: AnimatablePair<CGFloat, CGFloat> {\n        get {\n            AnimatablePair(depth, position)\n        }\n        set {\n            depth = max(min(newValue.first, 1), -1)\n            position = max(min(newValue.second, 1), 0)\n        }\n    }\n    \n    /// Initializes `ATCurveShape`\n    /// - Parameters:\n    ///   - radius: The diameter representing the curve.\n    ///   - depth: A value indicating the depth of the curve. A value between -1 and 1.\n    ///   - position: The value of the horizontal position of the curve. A value between 0 and 1.\n    public init(radius: CGFloat, depth: CGFloat, position: CGFloat) {\n        self.radius = radius\n        self.depth = depth\n        self.position = position\n    }\n    \n    public func path(in rect: CGRect) -> Path {\n        var path = Path()\n        \n        let delta = 1 + (1 - abs(depth))\n        let half = rect.width * position\n        let curvePoint: CGPoint = CGPoint(x: radius / 1.74, y: (radius / 3.5) * depth)\n        let edgeX: CGFloat = radius / ((2.85 - 0.36 * abs(depth)) - delta)\n        \n        path.move(to: CGPoint(x: half - radius , y: 0))\n        path.addQuadCurve(to: CGPoint(x: half - curvePoint.x, y: curvePoint.y),\n                          control: CGPoint(x: half - edgeX , y: 0))\n        path.addCurve(to: CGPoint(x: half + curvePoint.x, y: curvePoint.y),\n                      control1: CGPoint(x: half - radius / (delta * (3 + (1 - depth))), y: (radius / delta) * depth),\n                      control2: CGPoint(x: half + radius / (delta * (3 + (1 - depth))), y: (radius / delta) * depth))\n        path.addQuadCurve(to: CGPoint(x: half + radius, y: 0),\n                          control: CGPoint(x: half + edgeX, y: 0))\n        path.addLine(to: CGPoint(x: rect.width , y: 0))\n        path.addLine(to: CGPoint(x: rect.width , y: rect.height))\n        path.addLine(to: CGPoint(x: 0 , y: rect.height))\n        path.addLine(to: CGPoint(x: 0 , y: 0))\n        path.closeSubpath()\n        return path\n    }\n}\n\nstruct ASCurveShape_Previews: PreviewProvider {\n    static var previews: some View {\n        ASCurveShape(radius: 60, depth: 0.8, position: 0.5)\n            .stroke()\n            .frame(width: 220, height: 60)\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Styles/ASBasicStyle.swift",
    "content": "//\n//  ASBasicStyle.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/12.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// Basic style for segmented view.\npublic struct ASBasicStyle: View {\n    \n    @EnvironmentObject var stateValue: ASStateValue\n    \n    public var backgroundColor: Color\n    public var foregroundColor: Color\n    public var cornerRadius: CGFloat\n    public var padding: CGFloat\n    public var isApplySelectionCornerRadius: Bool\n    public var movementMode: ASMovementMode\n    public var animation: Animation\n    \n    public init(backgroundColor: Color = .gray,\n                foregroundColor: Color = Color.blue,\n                cornerRadius: CGFloat = 6,\n                padding: CGFloat = 3,\n                isApplySelectionCornerRadius: Bool = true,\n                movementMode: ASMovementMode = .viscosity,\n                animation: Animation = .axisSegmentedSpring) {\n        self.backgroundColor = backgroundColor\n        self.foregroundColor = foregroundColor\n        self.cornerRadius = cornerRadius\n        self.padding = padding\n        self.isApplySelectionCornerRadius = isApplySelectionCornerRadius\n        self.movementMode = movementMode\n        self.animation = animation\n    }\n    \n    private var selectionView: some View {\n        RoundedRectangle(cornerRadius: isApplySelectionCornerRadius ? cornerRadius : 0)\n            .fill(foregroundColor)\n            .padding(padding + 0.5)\n    }\n    \n    public var body: some View {\n        ZStack(alignment: .topLeading) {\n            RoundedRectangle(cornerRadius: cornerRadius)\n                .fill(backgroundColor.opacity(0.2))\n                .overlay(\n                    RoundedRectangle(cornerRadius: cornerRadius)\n                        .stroke(lineWidth: 1)\n                        .fill(foregroundColor)\n                )\n                .padding(0.5)\n            switch movementMode {\n            case .normal: ASNormalStyle(animation) { _ in\n                    selectionView\n                }\n                case .viscosity: ASViscosityStyle { _ in\n                    selectionView\n                }\n            }\n        }\n        .mask(RoundedRectangle(cornerRadius: cornerRadius))\n        .animation(animation, value: stateValue.selectionIndex)\n    }\n}\n\nstruct ASBasicStyle_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview(constant: .init(divideLine: .init(color: .blue, width: 1, scale: 1))) {\n            ASBasicStyle()\n                .preferredColorScheme(.dark)\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Styles/ASCapsuleStyle.swift",
    "content": "//\n//  ASCapsuleStyle.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/19.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// Capsule style for segmented view.\npublic struct ASCapsuleStyle: View {\n    \n    @EnvironmentObject var stateValue: ASStateValue\n    \n    public var backgroundColor: Color\n    public var foregroundColor: Color\n    public var movementMode: ASMovementMode\n    public var animation: Animation\n    \n    public init(backgroundColor: Color = .gray.opacity(0.4),\n                foregroundColor: Color = Color.blue,\n                movementMode: ASMovementMode = .viscosity,\n                animation: Animation = .axisSegmentedSpring) {\n        self.backgroundColor = backgroundColor\n        self.foregroundColor = foregroundColor\n        self.movementMode = movementMode\n        self.animation = animation\n    }\n    \n    private var selectionView: some View {\n        Capsule()\n            .fill(foregroundColor)\n            .padding(3)\n    }\n    \n    public var body: some View {\n        ZStack(alignment: .topLeading) {\n            Capsule()\n                .fill(backgroundColor.opacity(0.2))\n            Capsule()\n                .stroke(lineWidth: 1)\n                .fill(backgroundColor.opacity(0.2))\n                .padding(1)\n            \n            switch movementMode {\n                case .normal: ASNormalStyle(animation) { _ in\n                    selectionView\n                }\n                case .viscosity: ASViscosityStyle(animation) { _ in\n                    selectionView\n                }\n            }\n        }\n        .animation(animation, value: stateValue.selectionIndex)\n    }\n}\n\nstruct ASCapsuleStyle_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview {\n            ASCapsuleStyle()\n                .preferredColorScheme(.dark)\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Styles/ASJellyStyle.swift",
    "content": "//\n//  ASJellyStyle.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/22.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// Jelly style for segmented view.\npublic struct ASJellyStyle: View {\n    \n    @EnvironmentObject var stateValue: ASStateValue\n    \n    public var backgroundColor: Color\n    public var foregroundColor: Color\n    public var jellyRadius: CGFloat\n    public var jellyDepth: CGFloat\n    public var jellyEdge: ASEdgeMode\n    public var animation: Animation\n    \n    @State private var currentFrame: CGRect = .zero\n    @State private var depth: CGFloat = 0\n    \n    public init(backgroundColor: Color = .gray.opacity(0.1),\n                foregroundColor: Color = .purple,\n                jellyRadius: CGFloat = 56,\n                jellyDepth: CGFloat = 0.9,\n                jellyEdge: ASEdgeMode = .bottomTrailing,\n                animation: Animation = .axisSegmentedSpring) {\n        self.backgroundColor = backgroundColor\n        self.foregroundColor = foregroundColor\n        self.jellyRadius = jellyRadius\n        self.jellyDepth = jellyDepth\n        self.jellyEdge = jellyEdge\n        self.animation = animation\n    }\n    \n    private var jellyView: some View {\n        ZStack {\n            if stateValue.constant.axisMode == .horizontal {\n                ZStack {\n                    Color.clear\n                    Rectangle()\n                        .fill(backgroundColor)\n                    Rectangle()\n                        .fill(foregroundColor)\n                        .reverseMask(\n                            ASCurveShape(radius: jellyRadius, depth: depth, position: currentFrame.midX / stateValue.size.width)\n                                .fill(.black)\n                                .scaleEffect(CGSize(width: 1, height: jellyEdge == .bottomTrailing ? -1 : 1))\n                        )\n                        .mask(\n                            Rectangle()\n                                .fill(foregroundColor)\n                        )\n                }\n            }else {\n                ZStack {\n                    Color.clear\n                    Rectangle()\n                        .fill(backgroundColor)\n                        .frame(width: stateValue.size.width)\n                    Rectangle()\n                        .fill(foregroundColor)\n                        .frame(width: stateValue.size.height + 1, height: stateValue.size.width + 1)\n                        .reverseMask(\n                            ASCurveShape(radius: jellyRadius, depth: depth, position: currentFrame.midY / stateValue.size.height)\n                                .fill(.black)\n                        )\n                        .mask(\n                            Rectangle()\n                                .fill(foregroundColor)\n                        )\n                        .rotationEffect(Angle(degrees: 90))\n                        .scaleEffect(CGSize(width: jellyEdge == .bottomTrailing ? 1 : -1, height: 1))\n                }\n            }\n        }\n        .onAppear {\n            self.currentFrame = stateValue.selectionFrame\n        }\n    }\n    \n    public var body: some View {\n        ZStack(alignment: .topLeading) {\n            jellyView\n            ASNormalStyle(animation) { rect in\n                Color.clear\n                    .onChange(of: rect) { newValue in\n                        updateUI()\n                        withAnimation(animation) {\n                            self.currentFrame = newValue\n                        }\n                    }\n            }\n        }\n        .onChange(of: jellyDepth, perform: { newValue in\n            depth = newValue\n        })\n        .animation(animation, value: stateValue.selectionIndex)\n    }\n    \n    private func updateUI() {\n        withAnimation(.easeInOut(duration: 0.16)) {\n            depth = 0.4\n        }\n        DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {\n            withAnimation(.spring(response: 0.4, dampingFraction: 0.6, blendDuration: 0.5)) {\n                depth = jellyDepth\n            }\n        }\n    }\n}\n\nstruct ASJellyStyle_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview(constant: .init(axisMode: .horizontal)) {\n            ASJellyStyle()\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n        .preferredColorScheme(.dark)\n//        SegmentedViewPreview(constant: .init(axisMode: .vertical)) {\n//            ASJellyStyle()\n//        }\n//        .frame(width: 50)\n//        .padding(.horizontal, 16)\n//        .preferredColorScheme(.dark)\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Styles/ASLineStyle.swift",
    "content": "//\n//  ASLineStyle.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/19.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// Line style for segmented view.\npublic struct ASLineStyle: View {\n    \n    @EnvironmentObject var stateValue: ASStateValue\n    \n    public var lineColor: Color\n    public var lineSmallWidth: CGFloat\n    public var lineLargeScale: CGFloat\n    public var lineEdge: ASEdgeMode\n    public var movementMode: ASMovementMode\n    public var animation: Animation\n    \n    public init(lineColor: Color = .blue,\n                lineSmallWidth: CGFloat = 2,\n                lineLargeScale: CGFloat = 1,\n                lineEdge: ASEdgeMode = .bottomTrailing,\n                movementMode: ASMovementMode = .viscosity,\n                animation: Animation = .axisSegmentedSpring) {\n        self.lineColor = lineColor\n        self.lineSmallWidth = lineSmallWidth\n        self.lineLargeScale = lineLargeScale\n        self.lineEdge = lineEdge\n        self.movementMode = movementMode\n        self.animation = animation\n    }\n    \n    private var selectionView: some View {\n        return Group {\n            if lineEdge == .bottomTrailing {\n                Spacer()\n            }\n            ZStack(alignment: .topLeading) {\n                if stateValue.constant.axisMode == .horizontal {\n                    Rectangle()\n                        .fill(lineColor)\n                        .frame(height: lineSmallWidth)\n                        .scaleEffect(CGSize(width: lineLargeScale, height: 1))\n                }else {\n                    Rectangle()\n                        .fill(lineColor)\n                        .frame(width: lineSmallWidth)\n                        .scaleEffect(CGSize(width: 1, height: lineLargeScale))\n                }\n            }\n            if lineEdge == .topLeading {\n                Spacer()\n            }\n        }\n    }\n    \n    public var body: some View {\n        ZStack(alignment: .topLeading) {\n            Color.clear\n            if stateValue.constant.axisMode == .horizontal {\n                switch movementMode {\n                    case .normal: ASNormalStyle(animation) { _ in\n                        VStack(spacing: 0) {\n                            selectionView\n                        }\n                    }\n                    case .viscosity: ASViscosityStyle(animation) { _ in\n                        VStack(spacing: 0) {\n                            selectionView\n                        }\n                    }\n                }\n            }else {\n                switch movementMode {\n                    case .normal: ASNormalStyle(animation) { _ in\n                        HStack(spacing: 0) {\n                            selectionView\n                        }\n                    }\n                    case .viscosity: ASViscosityStyle(animation) { _ in\n                        HStack(spacing: 0) {\n                            selectionView\n                        }\n                    }\n                }\n            }\n        }\n        .animation(animation, value: stateValue.selectionIndex)\n    }\n}\n\nstruct ASLineStyle_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview(constant: .init(axisMode: .horizontal, divideLine: .init(color: .blue.opacity(0.5), isShowSelectionLine: true))) {\n            ASLineStyle(lineEdge: .bottomTrailing)\n                .preferredColorScheme(.dark)\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Styles/ASNeumorphismStyle.swift",
    "content": "//\n//  ASNeumorphismStyle.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/19.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// Neumorphism style for segmented view.\npublic struct ASNeumorphismStyle: View {\n    \n    @Environment(\\.colorScheme) private var colorScheme\n    @EnvironmentObject var stateValue: ASStateValue\n    \n    public var backgroundColor: Color\n    public var foregroundColor: Color\n    public var cornerRadius: CGFloat\n    public var padding: CGFloat\n    public var shadowRadius: CGFloat\n    public var shadowOpacity: CGFloat\n    public var isInner: Bool\n    public var movementMode: ASMovementMode\n    public var animation: Animation\n    \n    public init(backgroundColor: Color = .clear,\n                foregroundColor: Color = .clear,\n                cornerRadius: CGFloat = 11,\n                padding: CGFloat = 3,\n                shadowRadius: CGFloat = 5,\n                shadowOpacity: CGFloat = 1,\n                isInner: Bool = false,\n                movementMode: ASMovementMode = .viscosity,\n                animation: Animation = .axisSegmentedSpring) {\n        self.backgroundColor = backgroundColor\n        self.foregroundColor = foregroundColor\n        self.cornerRadius = cornerRadius\n        self.padding = padding\n        self.shadowRadius = shadowRadius\n        self.shadowOpacity = shadowOpacity\n        self.isInner = isInner\n        self.movementMode = movementMode\n        self.animation = animation\n    }\n    \n    public var body: some View {\n        ZStack {\n            if isInner {\n                innerView\n            }else {\n                outerView\n            }\n        }\n        .animation(animation, value: stateValue.selectionIndex)\n    }\n    \n    private var innerView: some View {\n        ZStack(alignment: .topLeading) {\n            RoundedRectangle(cornerRadius: cornerRadius)\n                .fill(getBackgroundColor())\n                .outerShadow(radius: shadowRadius, opacity: shadowOpacity, isDark: colorScheme == .dark)\n            \n            switch movementMode {\n                case .normal: ASNormalStyle(animation) { _ in\n                    selectionView\n                }\n                case .viscosity: ASViscosityStyle(animation) { _ in\n                    selectionView\n                }\n            }\n        }\n        .mask(RoundedRectangle(cornerRadius: cornerRadius))\n    }\n    \n    private var outerView: some View {\n        ZStack(alignment: .topLeading) {\n            RoundedRectangle(cornerRadius: cornerRadius)\n                .fill(getBackgroundColor())\n                .innerShadow(RoundedRectangle(cornerRadius: cornerRadius), radius: shadowRadius, opacity: shadowOpacity, isDark: colorScheme == .dark)\n            switch movementMode {\n                case .normal: ASNormalStyle(animation) { _ in\n                    selectionView\n                }\n                case .viscosity: ASViscosityStyle(animation) { _ in\n                    selectionView\n                }\n            }\n        }\n        .mask(RoundedRectangle(cornerRadius: cornerRadius))\n    }\n    \n    private var selectionView: some View {\n        ZStack {\n            if isInner {\n                RoundedRectangle(cornerRadius: cornerRadius)\n                    .fill(getForegroundColor())\n                    .innerShadow(RoundedRectangle(cornerRadius: cornerRadius), radius: shadowRadius, opacity: shadowOpacity, isDark: colorScheme == .dark)\n                    .padding(padding)\n            }else {\n                RoundedRectangle(cornerRadius: cornerRadius)\n                    .fill(getForegroundColor())\n                    .padding(padding)\n                    .outerShadow(radius: shadowRadius, opacity: shadowOpacity, isDark: colorScheme == .dark)\n            }\n        }\n    }\n    \n    private func getBackgroundColor() -> Color {\n        return backgroundColor == .clear ? (colorScheme == .dark ? Color(red: 0.185, green: 0.190, blue: 0.202) : Color(red: 0.926, green: 0.942, blue: 0.952)) : backgroundColor\n    }\n    \n    private func getForegroundColor() -> Color {\n        return foregroundColor == .clear ? (colorScheme == .dark ? Color(red: 0.185, green: 0.190, blue: 0.202) : Color(red: 0.926, green: 0.942, blue: 0.952)) : foregroundColor\n    }\n}\n\nstruct ASNeumorphismStyle_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview(constant: .init(axisMode: .horizontal)) {\n            ASNeumorphismStyle(backgroundColor: .blue.opacity(0.5), cornerRadius: 25, shadowOpacity: 1, isInner: false)\n                .preferredColorScheme(.dark)\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n    }\n}\n\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Styles/ASScaleStyle.swift",
    "content": "//\n//  ASScaleStyle.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/20.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// Scale style for segmented view.\npublic struct ASScaleStyle: View {\n    \n    @EnvironmentObject var stateValue: ASStateValue\n    \n    public var backgroundColor: Color\n    public var foregroundColor: Color\n    public var cornerRadius: CGFloat\n    public var minimumScale: CGFloat\n    public var animation: Animation\n    \n    public init(backgroundColor: Color = .clear,\n                foregroundColor: Color = Color.blue,\n                cornerRadius: CGFloat = 11,\n                minimumScale: CGFloat = 0.1,\n                animation: Animation = .axisSegmentedSpring) {\n        self.backgroundColor = backgroundColor\n        self.foregroundColor = foregroundColor\n        self.cornerRadius = cornerRadius\n        self.minimumScale = minimumScale\n        self.animation = animation\n    }\n\n    @State private var scale: CGFloat = 1\n    @State private var alpha: CGFloat = 1\n    \n    private var content: some View {\n        ASNormalStyle(animation) { _ in\n            RoundedRectangle(cornerRadius: cornerRadius)\n                .fill(foregroundColor)\n                .padding(3)\n                .scaleEffect(scale)\n                .opacity(alpha)\n                .transition(.opacity)\n        }\n    }\n    \n    public var body: some View {\n        ZStack(alignment: .topLeading) {\n            Color.clear\n            content\n        }\n        .background(backgroundColor)\n        .onChange(of: stateValue.selectionIndex) { newValue in\n            withAnimation(.easeInOut(duration: 0.3)) {\n                scale = minimumScale\n                alpha = 0\n            }\n            DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {\n                withAnimation(animation) {\n                    scale = 1.0\n                    alpha = 1.0\n                }\n            }\n        }\n    }\n}\n\nstruct ASScaleStyle_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview(constant: .init(axisMode: .horizontal, divideLine: .init(color: .blue.opacity(0.4), scale: 0.34))) {\n            ASScaleStyle(cornerRadius: 5)\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n        .preferredColorScheme(.dark)\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Styles/Movement/ASNormalStyle.swift",
    "content": "//\n//  ASNormalStyle.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/22.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// Normal movement style for segmented view.\npublic struct ASNormalStyle<Content>: View where Content: View {\n    \n    @EnvironmentObject var stateValue: ASStateValue\n    @State private var currentFrame: CGRect = .zero\n    \n    public var animation: Animation\n    public var selectionView: (CGRect) -> Content\n    \n    public init(_ animation: Animation = .axisSegmentedSpring,\n                @ViewBuilder selectionView: @escaping (CGRect) -> Content) {\n        self.animation = animation\n        self.selectionView = selectionView\n    }\n\n    private var content: some View {\n        let rect = stateValue.selectionFrame\n        return selectionView(currentFrame)\n            .frame(width: rect.width, height: rect.height)\n            .offset(x: rect.origin.x, y: rect.origin.y)\n    }\n    \n    public var body: some View {\n        ZStack(alignment: .topLeading) {\n            Color.clear\n            content\n        }\n        .onAppear {\n            currentFrame = stateValue.selectionFrame\n        }\n        .onChange(of: stateValue.selectionFrame) { newValue in\n            if stateValue.isInitialRun {\n                currentFrame = newValue\n            }else {\n                withAnimation(animation) {\n                    currentFrame = newValue\n                }\n            }\n        }\n    }\n}\n\nstruct ASNormalStyle_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview(constant: .init(axisMode: .horizontal, divideLine: .init(color: .blue.opacity(0.4), scale: 0.34))) {\n            ASNormalStyle { _ in\n                RoundedRectangle(cornerRadius: 11)\n                    .stroke(lineWidth: 1)\n                    .fill(Color.blue)\n                    .padding(1)\n            }\n                .preferredColorScheme(.dark)\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/Styles/Movement/ASViscosityStyle.swift",
    "content": "//\n//  ASViscosityStyle.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/22.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// Viscosity movement style for segmented view.\npublic struct ASViscosityStyle<Content>: View where Content: View {\n    \n    @EnvironmentObject var stateValue: ASStateValue\n    @State private var currentFrame: CGRect = .zero\n    \n    public var animation: Animation\n    public var selectionView: (CGRect) -> Content\n    \n    public init(_ animation: Animation = .axisSegmentedSpring,\n                @ViewBuilder selectionView: @escaping (CGRect) -> Content) {\n        self.animation = animation\n        self.selectionView = selectionView\n    }\n    \n    private var content: some View {\n        selectionView(currentFrame)\n            .frame(width: currentFrame.width, height: currentFrame.height)\n            .offset(x: currentFrame.origin.x, y: currentFrame.origin.y)\n    }\n    \n    public var body: some View {\n        ZStack(alignment: .topLeading) {\n            Color.clear\n            content\n        }\n        .onAppear {\n            currentFrame = stateValue.selectionFrame\n        }\n        .onChange(of: stateValue.selectionFrame) { newValue in\n            if stateValue.isInitialRun {\n                currentFrame = newValue\n            }else {\n                withAnimation(.easeInOut(duration: 0.24)) {\n                    currentFrame = getExpandRect()\n                }\n                DispatchQueue.main.asyncAfter(deadline: .now() + 0.24) {\n                    withAnimation(animation) {\n                        currentFrame = newValue\n                    }\n                }\n            }\n        }\n    }\n    \n    private func getExpandRect() -> CGRect {\n        let selectionFrame = stateValue.selectionFrame\n        let previousFrame = stateValue.previousFrame\n        if stateValue.previousIndex < stateValue.selectionIndex {\n            if stateValue.constant.axisMode == .horizontal {\n                return CGRect(x: currentFrame.origin.x,\n                              y: currentFrame.origin.y,\n                              width: selectionFrame.origin.x + selectionFrame.width - currentFrame.origin.x,\n                              height: selectionFrame.height)\n            }else {\n                return CGRect(x: currentFrame.origin.x,\n                              y: currentFrame.origin.y,\n                              width: selectionFrame.width,\n                              height: selectionFrame.origin.y + selectionFrame.height - currentFrame.origin.y)\n            }\n        }else {\n            if stateValue.constant.axisMode == .horizontal {\n                return CGRect(x: selectionFrame.origin.x,\n                              y: selectionFrame.origin.y,\n                              width: currentFrame.origin.x + currentFrame.width - selectionFrame.origin.x,\n                              height: previousFrame.height)\n            }else {\n                return CGRect(x: selectionFrame.origin.x,\n                              y: selectionFrame.origin.y,\n                              width: previousFrame.width,\n                              height: currentFrame.origin.y + currentFrame.height - selectionFrame.origin.y)\n            }\n        }\n    }\n}\n\nstruct ASViscosityStyle_Previews: PreviewProvider {\n    static var previews: some View {\n        SegmentedViewPreview(constant: .init(axisMode: .horizontal, divideLine: .init(color: .blue.opacity(0.4), scale: 0.34))) {\n            ASViscosityStyle { rect in\n                RoundedRectangle(cornerRadius: 11)\n                    .stroke(lineWidth: 1)\n                    .fill(Color.blue)\n                    .padding(1)\n            }\n                .preferredColorScheme(.dark)\n        }\n        .frame(height: 44)\n        .padding(.horizontal, 16)\n    }\n}\n"
  },
  {
    "path": "Sources/AxisSegmentedView/Public/ViewModel/ASStateValue.swift",
    "content": "//\n//  ASStateValue.swift\n//  AxisSegmentedView\n//\n//  Created by jasu on 2022/03/19.\n//  Copyright (c) 2022 jasu All rights reserved.\n//\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is furnished\n//  to do so, subject to the following conditions:\n//\n//  The above copyright notice and this permission notice shall be included in all\n//  copies or substantial portions of the Software.\n//\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n//  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n//  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n//  CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n//  OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\nimport SwiftUI\n\n/// An environment viewmodel that can be referenced by styles.\npublic class ASStateValue: ObservableObject {\n    \n    /// Check if it is in the first running state.\n    /// Used to remove animation at first startup.\n    public var isInitialRun: Bool = true\n\n    /// A constant value for segmented view.\n    @Published public var constant: ASConstant = .init()\n    \n    /// Total number of tab buttons.\n    @Published public var itemCount: Int = 0\n    \n    /// The previously selected position index value.\n    @Published public var previousIndex: Int = 0\n    \n    /// The previously selected position frame value.\n    @Published public var previousFrame: CGRect = .zero\n    \n    /// The currently selected position index value.\n    @Published public var selectionIndex: Int = 0\n    \n    /// The currently selected position frame value.\n    @Published public var selectionFrame: CGRect = .zero\n    \n    /// The size of the tab button that is not currently selected.\n    @Published public var otherSize: CGSize = .zero\n    \n    /// The full size of the segmented view.\n    @Published public var size: CGSize = .zero\n    \n}\n\n"
  },
  {
    "path": "Tests/AxisSegmentedViewTests/AxisSegmentedViewTests.swift",
    "content": "import XCTest\n@testable import AxisSegmentedView\n\nfinal class AxisSegmentedViewTests: XCTestCase {\n    func testExample() throws {\n        // This is an example of a functional test case.\n        // Use XCTAssert and related functions to verify your tests produce the correct\n        // results.\n        // XCTAssertEqual(AxisSegmentedView().text, \"Hello, World!\")\n    }\n}\n"
  }
]