[
  {
    "path": ".gitignore",
    "content": "# Xcode\n#\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n## Build generated\nbuild/\nDerivedData/\n\n## Various settings\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata/\n\n## Other\n*.moved-aside\n*.xccheckout\n*.xcscmblueprint\n\n## Obj-C/Swift specific\n*.hmap\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.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# 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# fastlane\n#\n# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the\n# 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"
  },
  {
    "path": "Configuration/SampleCode.xcconfig",
    "content": "//\n// See LICENSE folder for this sample’s licensing information.\n//\n// SampleCode.xcconfig\n//\n\n// The `SAMPLE_CODE_DISAMBIGUATOR` configuration is to make it easier to build\n// and run a sample code project. Once you set your project's development team,\n// you'll have a unique bundle identifier. This is because the bundle identifier\n// is derived based on the 'SAMPLE_CODE_DISAMBIGUATOR' value. Do not use this\n// approach in your own projects—it's only useful for sample code projects because\n// they are frequently downloaded and don't have a development team set.\nSAMPLE_CODE_DISAMBIGUATOR=${DEVELOPMENT_TEAM}\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2019 Artem Novichkov\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": "README.md",
    "content": "# SwiftUI by Examples\n\n<p align=\"center\">\n  <img src=\".github/logo.png\" width=\"300\" max-width=\"90%\" alt=\"SwiftUI\" />\n</p>\n\n<p align=\"center\">\n  <a href=\"https://developer.apple.com/xcode/\">\n    <img src=\"https://img.shields.io/badge/Xcode-11-green.svg\" alt=\"Xcode 11\" />\n  </a>\n  <a href=\"https://swift.org\">\n    <img src=\"https://img.shields.io/badge/Swift-5.1-green.svg\" alt=\"Swift 5.1\" />\n  </a>\n</p>\n\nSwiftUI is a simple way to build user interfaces across all Apple platforms with the power of Swift. I'm going to fill the repo with useful examples of SwiftUI. Stay tuned!\n\n<p align=\"center\">\n  <img src=\".github/example1.png\" width=\"250\" max-width=\"90%\" alt=\"SwiftUI\" />\n  <img src=\".github/example2.png\" width=\"250\" max-width=\"90%\" alt=\"SwiftUI\" />\n  <img src=\".github/example3.png\" width=\"250\" max-width=\"90%\" alt=\"SwiftUI\" />\n</p>\n\n## Features\n\n- Texts\n- Text fields\n- Buttons\n- Toggle\n- DatePicker\n- Slider\n- Stepper\n- Segmented Control\n- Alert\n- Action sheet\n- Gestures\n- Animations\n- Editable list\n- Drawing shapes\n\n## Author\n\nArtem Novichkov, novichkoff93@gmail.com\n\n## License\n\nSwiftUI by Examples is available under the MIT license. See the LICENSE file for more info.\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/AlertView.swift",
    "content": "//\n//  AlertView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 10/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct AlertView: View {\n\n    @State var showAlert = false\n    @State var showSheet = false\n\n    private var alert: Alert {\n        Alert(title: \"Title\",\n              message: \"Message\",\n              primaryButton: .destructive(Text(\"Cancel\")),\n              secondaryButton: .default(Text(\"Done\")))\n    }\n\n    private var sheet: ActionSheet {\n        ActionSheet(title: \"Title\", message: \"Message\", buttons: [.default(Text(\"Option 1\"), onTrigger: {\n            self.showSheet = false\n        }),\n                                                                  .default(Text(\"Option 2\")),\n                                                                  .cancel()])\n    }\n\n    var body: some View {\n        VStack {\n            Button(action: {\n                self.showAlert = true\n            }) {\n                Text(\"Show alert\")\n                }\n                .presentation($showAlert) {\n                    alert\n            }\n            Button(action: {\n                self.showSheet = true\n            }) {\n                Text(\"Show action sheet\")\n                }\n                .presentation(showSheet ? sheet : nil)\n        }\n    }\n}\n\nextension ActionSheet {\n\n    init(title: String, message: String, buttons: [ActionSheet.Button] = [.cancel()]) {\n        self.init(title: Text(title), message: Text(message), buttons: buttons)\n    }\n}\n\n\nextension Alert {\n\n    init(title: String, message: String, primaryButton: Alert.Button, secondaryButton: Alert.Button) {\n        self.init(title: Text(title), message: Text(message), primaryButton: primaryButton, secondaryButton: secondaryButton)\n    }\n}\n\n#if DEBUG\nstruct AlertView_Previews: PreviewProvider {\n    static var previews: some View {\n        AlertView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/AnimationView.swift",
    "content": "//\n//  AnimationView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 10/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct AnimationView: View {\n\n    @State var angle = 0.0\n    @State var scale = false\n\n    var body: some View {\n        Button(action: {\n            withAnimation(.basic(duration: 0.3, curve: .easeIn)) {\n                self.angle += 180\n                self.scale.toggle()\n            }\n        }) {\n            Text(\"Tap here\")\n                .padding()\n                .rotationEffect(.init(degrees: angle))\n                .scaleEffect(scale ? 1.5 : 1)\n        }\n    }\n}\n\n#if DEBUG\nstruct AnimationView_Previews: PreviewProvider {\n    static var previews: some View {\n        AnimationView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 05/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport UIKit\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n\n    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n        // Override point for customization after application launch.\n        return true\n    }\n\n    func applicationWillTerminate(_ application: UIApplication) {\n        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.\n    }\n\n    // MARK: UISceneSession Lifecycle\n\n    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {\n        // Called when a new scene session is being created.\n        // Use this method to select a configuration to create the new scene with.\n        return UISceneConfiguration(name: \"Default Configuration\", sessionRole: connectingSceneSession.role)\n    }\n\n    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {\n        // Called when the user discards a scene session.\n        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.\n        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.\n    }\n}\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-20x20@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-20x20@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-29x29@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-29x29@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-29x29@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-40x40@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-40x40@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"60x60\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-60x60@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"60x60\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-App-60x60@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-20x20@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"20x20\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-20x20@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-29x29@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-29x29@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-40x40@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-40x40@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-76x76@1x.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-76x76@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"83.5x83.5\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-App-83.5x83.5@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"1024x1024\",\n      \"idiom\" : \"ios-marketing\",\n      \"filename\" : \"ItunesArtwork@2x.png\",\n      \"scale\" : \"1x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Assets.xcassets/thumbnails/2612_wide_250x141_2x.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"2612_wide_250x141_2x.jpg\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Assets.xcassets/thumbnails/2640_wide_250x141_2x.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"2640_wide_250x141_2x.jpg\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Assets.xcassets/thumbnails/2645_wide_250x141_2x.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"2645_wide_250x141_2x.jpg\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Assets.xcassets/thumbnails/2649_wide_250x141_2x.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"2649_wide_250x141_2x.jpg\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Assets.xcassets/thumbnails/2672_wide_250x141_2x.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"2672_wide_250x141_2x.jpg\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Assets.xcassets/thumbnails/2676_wide_250x141_2x.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"2676_wide_250x141_2x.jpg\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Assets.xcassets/thumbnails/2682_wide_250x141_2x.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"2682_wide_250x141_2x.jpg\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Assets.xcassets/thumbnails/2684_wide_250x141_2x.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"2684_wide_250x141_2x.jpg\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Assets.xcassets/thumbnails/2949_wide_250x141_2x.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"2949_wide_250x141_2x.jpg\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Assets.xcassets/thumbnails/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/BadgeView.swift",
    "content": "//\n//  BadgeView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 08/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct BadgeView: View {\n\n    private static let gradientStart = Color(red: 239.0 / 255, green: 120.0 / 255, blue: 221.0 / 255)\n    private static let gradientEnd = Color(red: 239.0 / 255, green: 172.0 / 255, blue: 120.0 / 255)\n    private static let gradient = LinearGradient(gradient: .init(colors: [gradientStart, gradientEnd]),\n                                                 startPoint: .init(x: 0.5, y: 0),\n                                                 endPoint: .init(x: 0.5, y: 0.6)\n    )\n\n    var body: some View {\n        GeometryReader { geometry in\n            Path { path in\n                var width: CGFloat = min(geometry.size.width, geometry.size.height)\n                let height = width\n                let xScale: CGFloat = 0.832\n                let xOffset = (width * (1.0 - xScale)) / 2.0\n                width *= xScale\n                path.move(to: .init(x: xOffset + width * 0.95,\n                                    y: height * (0.20 + HexagonParameters.adjustment)))\n\n                HexagonParameters.points.forEach {\n                    path.addLine(to: .init(x: xOffset + width * $0.useWidth.0 * $0.xFactors.0,\n                                           y: height * $0.useHeight.0 * $0.yFactors.0))\n\n                    path.addQuadCurve(to: .init(x: xOffset + width * $0.useWidth.1 * $0.xFactors.1,\n                                                y: height * $0.useHeight.1 * $0.yFactors.1),\n                                      control: .init(x: xOffset + width * $0.useWidth.2 * $0.xFactors.2,\n                                                     y: height * $0.useHeight.2 * $0.yFactors.2))\n                }\n                }\n                .fill(Self.gradient)\n                .aspectRatio(1, contentMode: .fit)\n        }\n    }\n}\n\n#if DEBUG\nstruct BadgeView_Previews : PreviewProvider {\n    static var previews: some View {\n        BadgeView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Base.lproj/LaunchScreen.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"13122.16\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"13104.12\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"EHf-IW-A2E\">\n            <objects>\n                <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" xcode11CocoaTouchSystemColor=\"systemBackgroundColor\" cocoaTouchSystemColor=\"whiteColor\"/>\n                        <viewLayoutGuide key=\"safeArea\" id=\"6Tk-OE-BBY\"/>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"53\" y=\"375\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/ButtonsView.swift",
    "content": "//\n//  ButtonsView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 10/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct ButtonsView: View {\n\n    var body: some View {\n\n        VStack(spacing: 16) {\n            Button(action: {\n                print(\"tap\")\n            }, label: {\n                Text(\"Tap\")\n            })\n                .padding()\n                .foregroundColor(.white)\n                .background(Color.green, cornerRadius: 12)\n            NavigationButton(destination: TextFieldView()) {\n                Text(\"Navigation\")\n            }\n                .padding()\n                .foregroundColor(.white)\n                .background(Color.green, cornerRadius: 12)\n            PresentationButton(destination: TextFieldView(), label: {\n                Text(\"Presentation\")\n            })\n                .padding()\n                .foregroundColor(.white)\n                .background(Color.green, cornerRadius: 12)\n            }\n\n    }\n}\n\n#if DEBUG\nstruct ButtonsView_Previews: PreviewProvider {\n    static var previews: some View {\n        ButtonsView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/DatePickerView.swift",
    "content": "//\n//  PickerView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 10/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct DatePickerView: View {\n\n    @State private var date = Date()\n    private var formatter: DateFormatter = {\n        let formatter = DateFormatter()\n        formatter.dateStyle = .medium\n        return formatter\n    }()\n\n    @State var string = \"\"\n    var body: some View {\n        VStack {\n            Text(\"\\(formatter.string(from: date))\")\n            DatePicker($date,\n                       minimumDate: Calendar.current.date(byAdding: .year, value: -1, to: date),\n                       maximumDate: Date(),\n                       displayedComponents: .date)\n        }\n    }\n}\n\n#if DEBUG\nstruct PickerView_Previews: PreviewProvider {\n    static var previews: some View {\n        DatePickerView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/ExampleCell.swift",
    "content": "//\n//  ExampleCell.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 09/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct ExampleCell : View {\n\n    let title: String\n    let subtitle: String\n\n    var body: some View {\n        VStack(alignment: .leading) {\n            Text(title)\n            Text(subtitle)\n                .font(.subheadline)\n        }\n    }\n}\n\n#if DEBUG\nstruct ExampleCell_Previews : PreviewProvider {\n    static var previews: some View {\n        ExampleCell(title: \"Title\", subtitle: \"Subtitle\")\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/ExampleListView.swift",
    "content": "//\n//  ExampleListView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 09/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct ExampleListView: View {\n    var body: some View {\n        NavigationView {\n            List {\n                Section(header: Text(\"Controls\")) {\n                    NavigationButton(destination: TextView()) {\n                        ExampleCell(title: \"Texts\", subtitle: \"A view that displays one or more lines of read-only text.\")\n                    }\n                    NavigationButton(destination: TextFieldView()) {\n                        ExampleCell(title: \"Text fields\", subtitle: \"A control that displays an editable text interface.\")\n                    }\n                    NavigationButton(destination: ButtonsView()) {\n                        ExampleCell(title: \"Buttons\", subtitle: \"A control that performs an action when triggered.\")\n                    }\n                }\n                Section(header: Text(\"Value selectors\")) {\n                    NavigationButton(destination: ToggleView()) {\n                        ExampleCell(title: \"Toggle\", subtitle: \"A control that toggles between on and off states.\")\n                    }\n                    NavigationButton(destination: DatePickerView()) {\n                        ExampleCell(title: \"DatePicker\", subtitle: \"A control for selecting an absolute date.\")\n                    }\n                    NavigationButton(destination: SliderView()) {\n                        ExampleCell(title: \"Slider\", subtitle: \"A control for selecting a value from a bounded linear range of values.\")\n                    }\n                    NavigationButton(destination: StepperView()) {\n                        ExampleCell(title: \"Stepper\", subtitle: \"A control used to perform semantic increment and decrement actions.\")\n                    }\n                    NavigationButton(destination: SegmentedControlView()) {\n                        ExampleCell(title: \"Segmented Control\", subtitle: \"A control for selecting from a set of options.\")\n                    }\n                }\n                Section(header: Text(\"Others\")) {\n                    NavigationButton(destination: AlertView()) {\n                        ExampleCell(title: \"Alert\", subtitle: \"A container for an alert presentation.\")\n                    }\n                    NavigationButton(destination: GestureView()) {\n                        ExampleCell(title: \"Gestures\", subtitle: \"Use gesture modifiers to add interactivity to your app.\")\n                    }\n                    NavigationButton(destination: AnimationView()) {\n                        ExampleCell(title: \"Animations\", subtitle: \"Animate views.\")\n                    }\n                    NavigationButton(destination: VideoListView().environmentObject(VideoStore())) {\n                        ExampleCell(title: \"List\", subtitle: \"Example of editable list\")\n                    }\n                    NavigationButton(destination: BadgeView()) {\n                        ExampleCell(title: \"Drawing shapes\", subtitle: \"Using path for custom shapes\")\n                    }\n                }\n                }\n                .listStyle(.grouped)\n                .navigationBarTitle(Text(\"SwiftUI by Examples\"))\n        }\n    }\n}\n\n#if DEBUG\nstruct ExampleListView_Previews: PreviewProvider {\n    static var previews: some View {\n        ExampleListView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/GestureView.swift",
    "content": "//\n//  GestureView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 10/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct GestureView: View {\n\n    @State var isDetectingTap = false\n    @State var isDetectingDoubleTap = false\n    @GestureState var isDetectingLongPress = false\n    @State var numberOfTaps = 0\n\n    var body: some View {\n        let tap = TapGesture().onEnded {\n            self.isDetectingTap.toggle()\n        }\n        let press = LongPressGesture(minimumDuration: 2)\n            .updating($isDetectingLongPress) { currentState, gestureState, _ in\n                gestureState = currentState\n            }\n            .onChanged { _ in\n                self.numberOfTaps += 1\n        }\n        return VStack {\n            Text(\"Tap\")\n                .font(.largeTitle)\n            Circle()\n                .fill(isDetectingTap ? Color.red : Color.blue)\n                .frame(width: 100, height: 100, alignment: .center)\n                .gesture(tap)\n            Text(\"Double tap\")\n                .font(.largeTitle)\n            Circle()\n                .fill(isDetectingDoubleTap ? Color.red : Color.blue)\n                .frame(width: 100, height: 100, alignment: .center)\n                .tapAction(count: 2) {\n                    self.isDetectingDoubleTap.toggle()\n            }\n            Text(\"Long press count: \\(numberOfTaps)\")\n                .font(.largeTitle)\n            Circle()\n                .fill(isDetectingLongPress ? Color.yellow : Color.green)\n                .frame(width: 100, height: 100, alignment: .center)\n                .gesture(press)\n        }\n    }\n}\n\n#if DEBUG\nstruct GestureView_Previews: PreviewProvider {\n    static var previews: some View {\n        GestureView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/HexagonParameters.swift",
    "content": "//\n//  HexagonParameters.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 08/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct HexagonParameters {\n    struct Segment {\n        let useWidth: (CGFloat, CGFloat, CGFloat)\n        let xFactors: (CGFloat, CGFloat, CGFloat)\n        let useHeight: (CGFloat, CGFloat, CGFloat)\n        let yFactors: (CGFloat, CGFloat, CGFloat)\n    }\n\n    static let adjustment: CGFloat = 0.085\n    static let points = [\n        Segment(\n            useWidth:  (1.00, 1.00, 1.00),\n            xFactors:  (0.60, 0.40, 0.50),\n            useHeight: (1.00, 1.00, 0.00),\n            yFactors:  (0.05, 0.05, 0.00)\n        ),\n        Segment(\n            useWidth:  (1.00, 1.00, 0.00),\n            xFactors:  (0.05, 0.00, 0.00),\n            useHeight: (1.00, 1.00, 1.00),\n            yFactors:  (0.20 + adjustment, 0.30 + adjustment, 0.25 + adjustment)\n        ),\n        Segment(\n            useWidth:  (1.00, 1.00, 0.00),\n            xFactors:  (0.00, 0.05, 0.00),\n            useHeight: (1.00, 1.00, 1.00),\n            yFactors:  (0.70 - adjustment, 0.80 - adjustment, 0.75 - adjustment)\n        ),\n        Segment(\n            useWidth:  (1.00, 1.00, 1.00),\n            xFactors:  (0.40, 0.60, 0.50),\n            useHeight: (1.00, 1.00, 1.00),\n            yFactors:  (0.95, 0.95, 1.00)\n        ),\n        Segment(\n            useWidth:  (1.00, 1.00, 1.00),\n            xFactors:  (0.95, 1.00, 1.00),\n            useHeight: (1.00, 1.00, 1.00),\n            yFactors:  (0.80 - adjustment, 0.70 - adjustment, 0.75 - adjustment)\n        ),\n        Segment(\n            useWidth:  (1.00, 1.00, 1.00),\n            xFactors:  (1.00, 0.95, 1.00),\n            useHeight: (1.00, 1.00, 1.00),\n            yFactors:  (0.30 + adjustment, 0.20 + adjustment, 0.25 + adjustment)\n        )\n    ]\n}\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Info.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>CFBundleDevelopmentRegion</key>\n\t<string>$(DEVELOPMENT_LANGUAGE)</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>SwiftUI</string>\n\t<key>CFBundlePackageType</key>\n\t<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<false/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict>\n\t\t\t<key>UIWindowSceneSessionRoleApplication</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>UILaunchStoryboardName</key>\n\t\t\t\t\t<string>LaunchScreen</string>\n\t\t\t\t\t<key>UISceneConfigurationName</key>\n\t\t\t\t\t<string>Default Configuration</string>\n\t\t\t\t\t<key>UISceneDelegateClassName</key>\n\t\t\t\t\t<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t</dict>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations~ipad</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationPortraitUpsideDown</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Preview Content/Preview Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/SceneDelegate.swift",
    "content": "//\n//  SceneDelegate.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 05/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport UIKit\nimport SwiftUI\n\nclass SceneDelegate: UIResponder, UIWindowSceneDelegate {\n\n    var window: UIWindow?\n\n\n    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {\n        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.\n        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.\n        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).\n\n        // Use a UIHostingController as window root view controller\n        let window = UIWindow(frame: UIScreen.main.bounds)\n        window.rootViewController = UIHostingController(rootView: ExampleListView())\n        self.window = window\n        window.makeKeyAndVisible()\n    }\n\n    func sceneDidDisconnect(_ scene: UIScene) {\n        // Called as the scene is being released by the system.\n        // This occurs shortly after the scene enters the background, or when its session is discarded.\n        // Release any resources associated with this scene that can be re-created the next time the scene connects.\n        // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).\n    }\n\n    func sceneDidBecomeActive(_ scene: UIScene) {\n        // Called when the scene has moved from an inactive state to an active state.\n        // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.\n    }\n\n    func sceneWillResignActive(_ scene: UIScene) {\n        // Called when the scene will move from an active state to an inactive state.\n        // This may occur due to temporary interruptions (ex. an incoming phone call).\n    }\n\n    func sceneWillEnterForeground(_ scene: UIScene) {\n        // Called as the scene transitions from the background to the foreground.\n        // Use this method to undo the changes made on entering the background.\n    }\n\n    func sceneDidEnterBackground(_ scene: UIScene) {\n        // Called as the scene transitions from the foreground to the background.\n        // Use this method to save data, release shared resources, and store enough scene-specific state information\n        // to restore the scene back to its current state.\n    }\n\n\n}\n\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/SegmentedControlView.swift",
    "content": "//\n//  SegmentedControlView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 10/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct SegmentedControlView: View {\n\n    @State var index = 0\n    var elements = [\"Easy\", \"Normal\", \"Hard\"]\n\n    var body: some View {\n        VStack {\n            Text(elements[index])\n            SegmentedControl(selection: $index) {\n                ForEach(0..<elements.count) { index in\n                    Text(self.elements[index])\n                }\n            }\n            }\n            .padding()\n    }\n}\n\n#if DEBUG\nstruct SegmentedControlView_Previews : PreviewProvider {\n    static var previews: some View {\n        SegmentedControlView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/SliderView.swift",
    "content": "//\n//  SliderView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 10/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct SliderView: View {\n\n    @State var celsius: Double = 0\n\n    private var text: String {\n        return \"\\(celsius, fractionDigits: 1) Celsius is \\(celsius * 9 / 5 + 32, fractionDigits: 1) Fahrenheit\"\n    }\n\n    var body: some View {\n        VStack {\n            Slider(value: $celsius, from: -100, through: 100, by: 0.1)\n            Text(text)\n        }\n        .padding()\n    }\n}\n\nextension NumberFormatter {\n\n    static let custom: NumberFormatter = {\n        let formatter = NumberFormatter()\n        formatter.minimumFractionDigits = 1\n        formatter.maximumFractionDigits = 1\n        return formatter\n    }()\n}\n\nextension String.StringInterpolation {\n\n    mutating func appendInterpolation(_ number: Double, fractionDigits: Int) {\n        if let result = NumberFormatter.custom.string(for: number) {\n            appendLiteral(result)\n        }\n    }\n}\n\n#if DEBUG\nstruct SliderView_Previews: PreviewProvider {\n    static var previews: some View {\n        SliderView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/StepperView.swift",
    "content": "//\n//  StepperView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 10/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct StepperView: View {\n\n    @State var value = 0\n\n    var body: some View {\n        Stepper(value: $value, step: 1) {\n            Text(\"\\(self.value)\")\n        }\n        .padding()\n    }\n}\n\n#if DEBUG\nstruct StepperView_Previews: PreviewProvider {\n    static var previews: some View {\n        StepperView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/TextFieldView.swift",
    "content": "//\n//  TextFieldView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 09/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct TextFieldView : View {\n\n    @State var username: String = \"\"\n    @State var password: String = \"\"\n\n    var body: some View {\n        VStack {\n            HStack {\n                Text(\"Username\")\n                TextField($username, placeholder: Text(\"Username\")) {\n                    print(self.username)\n                    }\n                    .textContentType(.name)\n            }\n            HStack {\n                Text(\"Password\")\n                SecureField($password, placeholder: Text(\"Password\")) {\n                    print(self.password)\n                    }\n                    .textContentType(.newPassword)\n            }\n            }\n            .textFieldStyle(.roundedBorder)\n            .padding()\n    }\n}\n\n#if DEBUG\nstruct TextFieldView_Previews : PreviewProvider {\n    static var previews: some View {\n        TextFieldView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/TextView.swift",
    "content": "//\n//  TextView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 09/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct TextView : View {\n    var body: some View {\n        VStack {\n            Text(\"Simple text\")\n            Text(\"Rich text\")\n                .color(.green)\n                .bold()\n                .font(.largeTitle)\n            Text(\"Simple text with tap action\")\n                .underline(true, color: .black)\n                .tapAction {\n                    print(\"Tap\")\n            }\n            Text(\"Multiline text\\nwith second line\")\n                .lineLimit(nil)\n        }\n    }\n}\n\n#if DEBUG\nstruct TextView_Previews : PreviewProvider {\n    static var previews: some View {\n        TextView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/ToggleView.swift",
    "content": "//\n//  ToggleView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 10/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct ToggleView: View {\n\n    @State var isEnabled = false\n\n    var body: some View {\n        Toggle(isOn: $isEnabled) {\n            Text(isEnabled ? \"is On\" : \"is Off\")\n            }\n            .padding()\n    }\n}\n\n#if DEBUG\nstruct ToggleView_Previews: PreviewProvider {\n    static var previews: some View {\n        ToggleView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/Video.swift",
    "content": "//\n//  Animal.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 05/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\nimport Combine\n\nclass VideoStore: BindableObject {\n\n    var videos: [Video] = Video.all {\n        didSet {\n            didChange.send(())\n        }\n    }\n\n    var didChange = PassthroughSubject<Void, Never>()\n}\n\nstruct Video: Identifiable {\n\n    let id = UUID()\n    let title: String\n    let description: String\n    let thumbnail: String\n    var isFavorite: Bool = false\n\n    static let all: [Video] = [.init(title: \"Implementing Dark Mode on iOS\",\n                                     description: \"Hear from the UIKit engineering team about the principles and concepts that anchor Dark Mode on iOS. Get introduced to the principles of enhancing your app with this new appearance using dynamic colors and images, and add an experience that people are sure to love.\",\n                                     thumbnail: \"2949_wide_250x141_2x\"),\n                               .init(title: \"Introducing Sign In with Apple\",\n                                     description: \"Sign In with Apple is the fast, easy way for people to sign in to apps using the Apple IDs they already have. Learn how easy it is to add a Sign In with Apple button to your app or website to acquire new customers and benefit from the built-in security, antifraud, and privacy that Sign In with Apple provides.\",\n                                     thumbnail: \"2645_wide_250x141_2x\"),\n                               .init(title: \"Introducing Parameters for Shortcuts\",\n                                     description: \"Parameters take Siri Shortcuts to the next level, enabling an interactive voice experience in Siri with follow-up questions, and allowing people to customize shortcuts in the Shortcuts app, now built into iOS. Walk through setting up your shortcuts to take advantage of parameters and learn how your shortcuts can pass output to other actions when creating multi-step shortcuts in the Shortcuts app.\",\n                                     thumbnail: \"2649_wide_250x141_2x\"),\n                               .init(title: \"Introducing PencilKit\",\n                                     description: \"Meet PencilKit, Apple's feature-rich drawing and annotation framework. With just a few lines of code, you can add a full drawing experience to your app — with access to a canvas, responsive inks, rich tool palette and drawing model. Hear the technical details that make a great Apple Pencil experience. Learn about the new screenshot editor and how you can adopt just a few small APIs to enable your full content to be captured beyond the size of the screen, with or without your app's user interface.\",\n\n                                     thumbnail: \"2682_wide_250x141_2x\"),\n                               .init(title: \"SwiftUI Essentials\",\n                                     description: \"Take your first deep-dive into building an app with SwiftUI. Learn about Views and how they work. From basic controls to sophisticated containers like lists and navigation stacks, SwiftUI enables the creation of great user interfaces, faster and more easily. See how basic controls like Button are both simple yet versatile. Discover how to compose these pieces into larger, full-featured user interfaces that facilitate building great apps with SwiftUI. Build your SwiftUI skills as you learn the essentials of Apple's new declarative framework.\",\n                                     thumbnail: \"2672_wide_250x141_2x\"),\n                               .init(title: \"Designing for Privacy\",\n                                     description: \"Privacy is a more important issue than ever for your users. Learn about new features and privacy engineering techniques that can help you earn customer trust, create more personal experiences, and improve user engagement.\",\n                                     thumbnail: \"2640_wide_250x141_2x\"),\n                               .init(title: \"Create ML for Object Detection and Sound Classification\",\n                                     description: \"Create ML enables you to create, evaluate, and test powerful, production-class Core ML models. See how easy it is to create your own Object Detection and Sound Classification models for use in your apps. Learn strategies for balancing your training data to achieve great model accuracy.\",\n                                     thumbnail: \"2612_wide_250x141_2x\"),\n                               .init(title: \"Delivering Optimized Metal Apps and Games\",\n                                     description: \"Optimizing performance, memory, and bandwidth are important considerations for resource-intensive Metal apps and games. Learn key best practices to streamline your rendering and attain high frame rates. Understand powerful tools that can help you pinpoint expensive or unexpected GPU work. Dive into GPU capabilities that can yield performance gains and get expert guidance about using memory efficiently.\", thumbnail: \"2676_wide_250x141_2x\"),\n                               .init(title: \"Metal for Pro Apps\",\n                                     description: \"Metal is the platform-optimized graphics and compute framework at the heart of GPU acceleration on Apple platforms. Learn key aspects of the Metal architecture that support the techniques for modern high-performance pro applications and workflows. Learn how to leverage Metal capabilities to optimize performance and maintain a steady frame rate in video editing pipelines. Understand how to leverage CPU and GPU parallelism, and dive into best practices for efficient data throughput.\",\n                                     thumbnail: \"2684_wide_250x141_2x\")]\n}\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/VideoCell.swift",
    "content": "//\n//  ListView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 05/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\nimport Combine\n\nstruct VideoCell: View {\n\n    let video: Video\n\n    var body: some View {\n        NavigationButton(destination: VideoDetailsView(video: video)) {\n            HStack {\n                Image(video.thumbnail)\n                    .frame(width: 30, height: 30, alignment: .center)\n                    .cornerRadius(8)\n                VStack(alignment: .leading) {\n                    Text(video.title)\n                    Text(video.description)\n                        .font(.subheadline)\n                    }\n                if video.isFavorite {\n                    Image(systemName: \"star.fill\")\n                        .foregroundColor(.yellow)\n                }\n            }\n        }\n    }\n}\n\n#if DEBUG\nstruct VideoCell_Previews: PreviewProvider {\n    static var previews: some View {\n        let store = VideoStore()\n        return Group {\n            VideoCell(video: store.videos[0])\n            VideoCell(video: store.videos[1])\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/VideoDetailsView.swift",
    "content": "//\n//  DetailsView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 05/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\n\nstruct VideoDetailsView: View {\n\n    @EnvironmentObject private var store: VideoStore\n    @State private var zoomed = false\n\n    var video: Video\n\n    var index: Int {\n        return store.videos.firstIndex { $0.id == video.id }!\n    }\n\n    var body: some View {\n        VStack {\n            Image(video.thumbnail)\n                .resizable()\n                .aspectRatio(contentMode: zoomed ? .fill : .fit)\n                .tapAction {\n                    withAnimation {\n                        self.zoomed.toggle()\n                    }\n                }\n                .navigationBarTitle(Text(video.title), displayMode: .inline)\n            HStack {\n                Text(\"Overview\")\n                    .font(.title)\n                Button(action: {\n                    self.store.videos[self.index].isFavorite.toggle()\n                }) {\n                    if self.store.videos[index].isFavorite {\n                        Image(systemName: \"star.fill\")\n                            .foregroundColor(.yellow)\n                    }\n                    else {\n                        Image(systemName: \"star\")\n                            .foregroundColor(.gray)\n                    }\n                }\n            }\n            Text(video.description)\n                .lineLimit(nil)\n                .padding()\n        }\n    }\n}\n\n#if DEBUG\nstruct DetailsView_Previews: PreviewProvider {\n    static var previews: some View {\n        let store = VideoStore()\n        return NavigationView {\n            VideoDetailsView(video: Video.all[0])\n                .environmentObject(store)\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples/VideoListView.swift",
    "content": "//\n//  ListView.swift\n//  SwiftUI by Examples\n//\n//  Created by Artem Novichkov on 05/06/2019.\n//  Copyright © 2019 Artem Novichkov. All rights reserved.\n//\n\nimport SwiftUI\nimport Combine\n\nstruct VideoListView: View {\n\n    @State var showFavoritesOnly = false\n\n    @EnvironmentObject private var store: VideoStore\n\n    var body: some View {\n        NavigationView {\n            List {\n                Section {\n                    Toggle(isOn: $showFavoritesOnly) {\n                        Text(\"Favorites only\")\n                    }\n                    Button(action: addRandomVideo) {\n                        Text(\"Add random video\")\n                    }\n                }\n                Section {\n                    ForEach(store.videos) { video in\n                        if !self.showFavoritesOnly || video.isFavorite {\n                            VideoCell(video: video)\n                        }\n                    }\n                        .onDelete(perform: delete)\n                }\n            }\n                .navigationBarTitle(Text(\"WWDC 2019\"))\n                .navigationBarItems(leading: PresentationButton(destination: BadgeView(), label: { Image(systemName: \"info\") }))\n                .listStyle(.grouped)\n        }\n    }\n\n    func addRandomVideo() {\n        if let video = store.videos.randomElement() {\n            store.videos.append(video)\n        }\n    }\n\n    func delete(at offsets: IndexSet) {\n        for offset in offsets {\n            store.videos.remove(at: offset)\n        }\n    }\n}\n\n#if DEBUG\nstruct ListView_Previews: PreviewProvider {\n    static var previews: some View {\n        VideoListView()\n    }\n}\n#endif\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 50;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t060DBBEB22AE7E2B00D3A09F /* StepperView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 060DBBEA22AE7E2B00D3A09F /* StepperView.swift */; };\n\t\t060DBBED22AE7EE600D3A09F /* SegmentedControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 060DBBEC22AE7EE600D3A09F /* SegmentedControlView.swift */; };\n\t\t060DBBEF22AE80DC00D3A09F /* AlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 060DBBEE22AE80DC00D3A09F /* AlertView.swift */; };\n\t\t060DBBF122AE891300D3A09F /* GestureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 060DBBF022AE891300D3A09F /* GestureView.swift */; };\n\t\t060DBBF322AEB7A600D3A09F /* AnimationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 060DBBF222AEB7A600D3A09F /* AnimationView.swift */; };\n\t\t068FA18722AD716100FFF648 /* ExampleListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 068FA18622AD716100FFF648 /* ExampleListView.swift */; };\n\t\t068FA18922AD717E00FFF648 /* ExampleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 068FA18822AD717E00FFF648 /* ExampleCell.swift */; };\n\t\t068FA18B22AD73D300FFF648 /* TextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 068FA18A22AD73D300FFF648 /* TextView.swift */; };\n\t\t068FA18D22AD765300FFF648 /* TextFieldView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 068FA18C22AD765300FFF648 /* TextFieldView.swift */; };\n\t\t068FA18F22AD80CD00FFF648 /* ButtonsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 068FA18E22AD80CD00FFF648 /* ButtonsView.swift */; };\n\t\t068FA19122AD86DA00FFF648 /* SliderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 068FA19022AD86DA00FFF648 /* SliderView.swift */; };\n\t\t068FA19322AE7A9900FFF648 /* ToggleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 068FA19222AE7A9900FFF648 /* ToggleView.swift */; };\n\t\t068FA19522AE7B7000FFF648 /* DatePickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 068FA19422AE7B7000FFF648 /* DatePickerView.swift */; };\n\t\t06E548C022ABA53600794057 /* VideoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06E548BF22ABA53600794057 /* VideoCell.swift */; };\n\t\t06E548C222ABA5F000794057 /* VideoDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06E548C122ABA5F000794057 /* VideoDetailsView.swift */; };\n\t\t06E548C422ABAB1E00794057 /* BadgeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06E548C322ABAB1E00794057 /* BadgeView.swift */; };\n\t\t06E548C622ABAB6A00794057 /* HexagonParameters.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06E548C522ABAB6A00794057 /* HexagonParameters.swift */; };\n\t\t06FB7FAF22A822C600E0B8C5 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06FB7FAE22A822C600E0B8C5 /* AppDelegate.swift */; };\n\t\t06FB7FB122A822C600E0B8C5 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06FB7FB022A822C600E0B8C5 /* SceneDelegate.swift */; };\n\t\t06FB7FB322A822C600E0B8C5 /* VideoListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06FB7FB222A822C600E0B8C5 /* VideoListView.swift */; };\n\t\t06FB7FB522A822C700E0B8C5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 06FB7FB422A822C700E0B8C5 /* Assets.xcassets */; };\n\t\t06FB7FB822A822C700E0B8C5 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 06FB7FB722A822C700E0B8C5 /* Preview Assets.xcassets */; };\n\t\t06FB7FBB22A822C700E0B8C5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 06FB7FB922A822C700E0B8C5 /* LaunchScreen.storyboard */; };\n\t\t06FB7FC722A8269800E0B8C5 /* Video.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06FB7FC622A8269800E0B8C5 /* Video.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t060DBBEA22AE7E2B00D3A09F /* StepperView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepperView.swift; sourceTree = \"<group>\"; };\n\t\t060DBBEC22AE7EE600D3A09F /* SegmentedControlView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegmentedControlView.swift; sourceTree = \"<group>\"; };\n\t\t060DBBEE22AE80DC00D3A09F /* AlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertView.swift; sourceTree = \"<group>\"; };\n\t\t060DBBF022AE891300D3A09F /* GestureView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GestureView.swift; sourceTree = \"<group>\"; };\n\t\t060DBBF222AEB7A600D3A09F /* AnimationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimationView.swift; sourceTree = \"<group>\"; };\n\t\t068FA18622AD716100FFF648 /* ExampleListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleListView.swift; sourceTree = \"<group>\"; };\n\t\t068FA18822AD717E00FFF648 /* ExampleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleCell.swift; sourceTree = \"<group>\"; };\n\t\t068FA18A22AD73D300FFF648 /* TextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextView.swift; sourceTree = \"<group>\"; };\n\t\t068FA18C22AD765300FFF648 /* TextFieldView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextFieldView.swift; sourceTree = \"<group>\"; };\n\t\t068FA18E22AD80CD00FFF648 /* ButtonsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonsView.swift; sourceTree = \"<group>\"; };\n\t\t068FA19022AD86DA00FFF648 /* SliderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SliderView.swift; sourceTree = \"<group>\"; };\n\t\t068FA19222AE7A9900FFF648 /* ToggleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToggleView.swift; sourceTree = \"<group>\"; };\n\t\t068FA19422AE7B7000FFF648 /* DatePickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatePickerView.swift; sourceTree = \"<group>\"; };\n\t\t06E548BF22ABA53600794057 /* VideoCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoCell.swift; sourceTree = \"<group>\"; };\n\t\t06E548C122ABA5F000794057 /* VideoDetailsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoDetailsView.swift; sourceTree = \"<group>\"; };\n\t\t06E548C322ABAB1E00794057 /* BadgeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BadgeView.swift; sourceTree = \"<group>\"; };\n\t\t06E548C522ABAB6A00794057 /* HexagonParameters.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HexagonParameters.swift; sourceTree = \"<group>\"; };\n\t\t06FB7FAB22A822C600E0B8C5 /* SwiftUI by Examples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"SwiftUI by Examples.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t06FB7FAE22A822C600E0B8C5 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\t06FB7FB022A822C600E0B8C5 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = \"<group>\"; };\n\t\t06FB7FB222A822C600E0B8C5 /* VideoListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoListView.swift; sourceTree = \"<group>\"; };\n\t\t06FB7FB422A822C700E0B8C5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t06FB7FB722A822C700E0B8C5 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = \"Preview Assets.xcassets\"; sourceTree = \"<group>\"; };\n\t\t06FB7FBA22A822C700E0B8C5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = \"<group>\"; };\n\t\t06FB7FBC22A822C700E0B8C5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t06FB7FC322A8233700E0B8C5 /* SampleCode.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = SampleCode.xcconfig; sourceTree = \"<group>\"; };\n\t\t06FB7FC622A8269800E0B8C5 /* Video.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Video.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t06FB7FA822A822C600E0B8C5 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t06FB7FA222A822C600E0B8C5 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t06FB7FC222A8233700E0B8C5 /* Configuration */,\n\t\t\t\t06FB7FAD22A822C600E0B8C5 /* SwiftUI by Examples */,\n\t\t\t\t06FB7FAC22A822C600E0B8C5 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t06FB7FAC22A822C600E0B8C5 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t06FB7FAB22A822C600E0B8C5 /* SwiftUI by Examples.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t06FB7FAD22A822C600E0B8C5 /* SwiftUI by Examples */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t06FB7FAE22A822C600E0B8C5 /* AppDelegate.swift */,\n\t\t\t\t06FB7FB022A822C600E0B8C5 /* SceneDelegate.swift */,\n\t\t\t\t06FB7FC622A8269800E0B8C5 /* Video.swift */,\n\t\t\t\t06FB7FB222A822C600E0B8C5 /* VideoListView.swift */,\n\t\t\t\t06E548BF22ABA53600794057 /* VideoCell.swift */,\n\t\t\t\t06E548C122ABA5F000794057 /* VideoDetailsView.swift */,\n\t\t\t\t06E548C522ABAB6A00794057 /* HexagonParameters.swift */,\n\t\t\t\t06E548C322ABAB1E00794057 /* BadgeView.swift */,\n\t\t\t\t06FB7FB422A822C700E0B8C5 /* Assets.xcassets */,\n\t\t\t\t06FB7FB922A822C700E0B8C5 /* LaunchScreen.storyboard */,\n\t\t\t\t06FB7FBC22A822C700E0B8C5 /* Info.plist */,\n\t\t\t\t06FB7FB622A822C700E0B8C5 /* Preview Content */,\n\t\t\t\t068FA18622AD716100FFF648 /* ExampleListView.swift */,\n\t\t\t\t068FA18822AD717E00FFF648 /* ExampleCell.swift */,\n\t\t\t\t068FA18A22AD73D300FFF648 /* TextView.swift */,\n\t\t\t\t068FA18C22AD765300FFF648 /* TextFieldView.swift */,\n\t\t\t\t068FA18E22AD80CD00FFF648 /* ButtonsView.swift */,\n\t\t\t\t068FA19022AD86DA00FFF648 /* SliderView.swift */,\n\t\t\t\t068FA19222AE7A9900FFF648 /* ToggleView.swift */,\n\t\t\t\t068FA19422AE7B7000FFF648 /* DatePickerView.swift */,\n\t\t\t\t060DBBEA22AE7E2B00D3A09F /* StepperView.swift */,\n\t\t\t\t060DBBEC22AE7EE600D3A09F /* SegmentedControlView.swift */,\n\t\t\t\t060DBBEE22AE80DC00D3A09F /* AlertView.swift */,\n\t\t\t\t060DBBF022AE891300D3A09F /* GestureView.swift */,\n\t\t\t\t060DBBF222AEB7A600D3A09F /* AnimationView.swift */,\n\t\t\t);\n\t\t\tpath = \"SwiftUI by Examples\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t06FB7FB622A822C700E0B8C5 /* Preview Content */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t06FB7FB722A822C700E0B8C5 /* Preview Assets.xcassets */,\n\t\t\t);\n\t\t\tpath = \"Preview Content\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t06FB7FC222A8233700E0B8C5 /* Configuration */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t06FB7FC322A8233700E0B8C5 /* SampleCode.xcconfig */,\n\t\t\t);\n\t\t\tname = Configuration;\n\t\t\tpath = ../Configuration;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t06FB7FAA22A822C600E0B8C5 /* SwiftUI by Examples */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 06FB7FBF22A822C700E0B8C5 /* Build configuration list for PBXNativeTarget \"SwiftUI by Examples\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t06FB7FA722A822C600E0B8C5 /* Sources */,\n\t\t\t\t06FB7FA822A822C600E0B8C5 /* Frameworks */,\n\t\t\t\t06FB7FA922A822C600E0B8C5 /* 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 = \"SwiftUI by Examples\";\n\t\t\tproductName = \"SwiftUI by Examples\";\n\t\t\tproductReference = 06FB7FAB22A822C600E0B8C5 /* SwiftUI by Examples.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t06FB7FA322A822C600E0B8C5 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 1100;\n\t\t\t\tLastUpgradeCheck = 1100;\n\t\t\t\tORGANIZATIONNAME = \"Artem Novichkov\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t06FB7FAA22A822C600E0B8C5 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 11.0;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 06FB7FA622A822C600E0B8C5 /* Build configuration list for PBXProject \"SwiftUI by Examples\" */;\n\t\t\tcompatibilityVersion = \"Xcode 9.3\";\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 = 06FB7FA222A822C600E0B8C5;\n\t\t\tproductRefGroup = 06FB7FAC22A822C600E0B8C5 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t06FB7FAA22A822C600E0B8C5 /* SwiftUI by Examples */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t06FB7FA922A822C600E0B8C5 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t06FB7FBB22A822C700E0B8C5 /* LaunchScreen.storyboard in Resources */,\n\t\t\t\t06FB7FB822A822C700E0B8C5 /* Preview Assets.xcassets in Resources */,\n\t\t\t\t06FB7FB522A822C700E0B8C5 /* 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\t06FB7FA722A822C600E0B8C5 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t068FA18922AD717E00FFF648 /* ExampleCell.swift in Sources */,\n\t\t\t\t060DBBEF22AE80DC00D3A09F /* AlertView.swift in Sources */,\n\t\t\t\t060DBBED22AE7EE600D3A09F /* SegmentedControlView.swift in Sources */,\n\t\t\t\t068FA18B22AD73D300FFF648 /* TextView.swift in Sources */,\n\t\t\t\t068FA18D22AD765300FFF648 /* TextFieldView.swift in Sources */,\n\t\t\t\t06E548C622ABAB6A00794057 /* HexagonParameters.swift in Sources */,\n\t\t\t\t068FA19522AE7B7000FFF648 /* DatePickerView.swift in Sources */,\n\t\t\t\t06FB7FAF22A822C600E0B8C5 /* AppDelegate.swift in Sources */,\n\t\t\t\t06E548C422ABAB1E00794057 /* BadgeView.swift in Sources */,\n\t\t\t\t068FA18F22AD80CD00FFF648 /* ButtonsView.swift in Sources */,\n\t\t\t\t06FB7FB122A822C600E0B8C5 /* SceneDelegate.swift in Sources */,\n\t\t\t\t06FB7FB322A822C600E0B8C5 /* VideoListView.swift in Sources */,\n\t\t\t\t060DBBEB22AE7E2B00D3A09F /* StepperView.swift in Sources */,\n\t\t\t\t06E548C222ABA5F000794057 /* VideoDetailsView.swift in Sources */,\n\t\t\t\t060DBBF122AE891300D3A09F /* GestureView.swift in Sources */,\n\t\t\t\t06FB7FC722A8269800E0B8C5 /* Video.swift in Sources */,\n\t\t\t\t068FA18722AD716100FFF648 /* ExampleListView.swift in Sources */,\n\t\t\t\t06E548C022ABA53600794057 /* VideoCell.swift in Sources */,\n\t\t\t\t060DBBF322AEB7A600D3A09F /* AnimationView.swift in Sources */,\n\t\t\t\t068FA19322AE7A9900FFF648 /* ToggleView.swift in Sources */,\n\t\t\t\t068FA19122AD86DA00FFF648 /* SliderView.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXVariantGroup section */\n\t\t06FB7FB922A822C700E0B8C5 /* LaunchScreen.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t06FB7FBA22A822C700E0B8C5 /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t06FB7FBD22A822C700E0B8C5 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 06FB7FC322A8233700E0B8C5 /* SampleCode.xcconfig */;\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++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\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_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\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\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\tSDKROOT = iphoneos;\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\t06FB7FBE22A822C700E0B8C5 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 06FB7FC322A8233700E0B8C5 /* SampleCode.xcconfig */;\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++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\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_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\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-O\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t06FB7FC022A822C700E0B8C5 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 06FB7FC322A8233700E0B8C5 /* SampleCode.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"SwiftUI by Examples\\\"/Preview\\\\ Content\";\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tINFOPLIST_FILE = \"SwiftUI by Examples/Info.plist\";\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\tPRODUCT_BUNDLE_IDENTIFIER = \"com.artemnovichkov.SwiftUI-by-Examples\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\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\t06FB7FC122A822C700E0B8C5 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 06FB7FC322A8233700E0B8C5 /* SampleCode.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEVELOPMENT_ASSET_PATHS = \"\\\"SwiftUI by Examples\\\"/Preview\\\\ Content\";\n\t\t\t\tENABLE_PREVIEWS = YES;\n\t\t\t\tINFOPLIST_FILE = \"SwiftUI by Examples/Info.plist\";\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\tPRODUCT_BUNDLE_IDENTIFIER = \"com.artemnovichkov.SwiftUI-by-Examples\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\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 = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t06FB7FA622A822C600E0B8C5 /* Build configuration list for PBXProject \"SwiftUI by Examples\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t06FB7FBD22A822C700E0B8C5 /* Debug */,\n\t\t\t\t06FB7FBE22A822C700E0B8C5 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t06FB7FBF22A822C700E0B8C5 /* Build configuration list for PBXNativeTarget \"SwiftUI by Examples\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t06FB7FC022A822C700E0B8C5 /* Debug */,\n\t\t\t\t06FB7FC122A822C700E0B8C5 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 06FB7FA322A822C600E0B8C5 /* Project object */;\n}\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:SwiftUI by Examples.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "SwiftUI by Examples/SwiftUI by Examples.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"
  }
]