Full Code of jessesquires/PresenterKit for AI

main 77d4e2cb6b12 cached
72 files
430.7 KB
106.6k tokens
50 symbols
1 requests
Download .txt
Showing preview only (456K chars total). Download the full file or copy to clipboard to get everything.
Repository: jessesquires/PresenterKit
Branch: main
Commit: 77d4e2cb6b12
Files: 72
Total size: 430.7 KB

Directory structure:
gitextract_myk_b_mt/

├── .github/
│   ├── dependabot.yml
│   └── workflows/
│       ├── ci.yml
│       ├── danger.yml
│       ├── pod-lint.yml
│       └── spm.yml
├── .gitignore
├── .swiftlint.yml
├── CHANGELOG.md
├── Dangerfile
├── Example/
│   ├── ExampleApp/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   ├── Contents.json
│   │   │   └── ic_dismiss.imageset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   ├── MainViewController.swift
│   │   └── RedViewController.swift
│   ├── ExampleApp.xcodeproj/
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace/
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata/
│   │   │       └── IDEWorkspaceChecks.plist
│   │   └── xcshareddata/
│   │       ├── IDETemplateMacros.plist
│   │       └── xcschemes/
│   │           └── ExampleApp.xcscheme
│   └── ExampleAppUITests/
│       ├── ExampleAppUITests.swift
│       └── Info.plist
├── Gemfile
├── Guides/
│   └── Getting Started.md
├── LICENSE
├── Package.swift
├── PresenterKit.podspec
├── PresenterKit.xcodeproj/
│   ├── project.pbxproj
│   ├── project.xcworkspace/
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata/
│   │       ├── IDEWorkspaceChecks.plist
│   │       └── WorkspaceSettings.xcsettings
│   └── xcshareddata/
│       ├── IDETemplateMacros.plist
│       └── xcschemes/
│           └── PresenterKit.xcscheme
├── README.md
├── Sources/
│   ├── DismissButtonConfig.swift
│   ├── HalfModalPresentationController.swift
│   ├── Info.plist
│   ├── PresentationType.swift
│   ├── UINavigationController+Extensions.swift
│   └── UIViewController+Extensions.swift
├── Tests/
│   ├── Info.plist
│   └── PresenterKitTests.swift
├── docs/
│   ├── Classes.html
│   ├── Enums/
│   │   ├── NavigationStyle.html
│   │   └── PresentationType.html
│   ├── Enums.html
│   ├── Extensions/
│   │   ├── UIBarButtonItem.html
│   │   ├── UINavigationController.html
│   │   └── UIViewController.html
│   ├── Extensions.html
│   ├── Guides.html
│   ├── Structs/
│   │   ├── DismissButtonConfig/
│   │   │   ├── Content.html
│   │   │   ├── Location.html
│   │   │   └── Style.html
│   │   ├── DismissButtonConfig.html
│   │   ├── PopoverConfig/
│   │   │   └── Source.html
│   │   └── PopoverConfig.html
│   ├── Structs.html
│   ├── css/
│   │   ├── highlight.css
│   │   └── jazzy.css
│   ├── getting-started.html
│   ├── index.html
│   ├── js/
│   │   ├── jazzy.js
│   │   ├── jazzy.search.js
│   │   └── typeahead.jquery.js
│   ├── search.json
│   └── undocumented.json
└── scripts/
    ├── build_docs.zsh
    └── lint.zsh

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/dependabot.yml
================================================
# Documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
  - package-ecosystem: "bundler"
    directory: "/"
    schedule:
      interval: "weekly"

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"


================================================
FILE: .github/workflows/ci.yml
================================================
name: CI

on:
  push:
    branches:
      - master
      - develop
  pull_request:
    branches:
      - master
      - develop

env:
  # https://github.com/actions/virtual-environments/tree/main/images/macos
  DEVELOPER_DIR: /Applications/Xcode_12.3.app/Contents/Developer

  IOS_SDK: iphonesimulator14.3

  PROJECT: PresenterKit.xcodeproj
  SCHEME: PresenterKit

  EXAMPLE_PROJECT: Example/ExampleApp.xcodeproj
  EXAMPLE_SCHEME: ExampleApp

  IOS_DEST: "OS=14.3,name=iPhone 12 Mini"

jobs:
  job-main:
    name: Build and Test
    runs-on: macOS-latest
    steps:
      - name: git checkout
        uses: actions/checkout@v2

      - name: xcode version
        run: xcodebuild -version -sdk

      - name: list simulators
        run: |
          xcrun simctl delete unavailable
          xcrun simctl list

      - name: unit tests
        run: |
          set -o pipefail
          xcodebuild clean test \
              -project "$PROJECT" \
              -scheme "$SCHEME" \
              -sdk "$IOS_SDK" \
              -destination "$IOS_DEST" \
              ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO | xcpretty -c

      - name: ui tests
        run: |
          set -o pipefail
          xcodebuild clean test \
              -project "$EXAMPLE_PROJECT" \
              -scheme "$EXAMPLE_SCHEME" \
              -sdk "$IOS_SDK" \
              -destination "$IOS_DEST" \
              ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO | xcpretty -c


================================================
FILE: .github/workflows/danger.yml
================================================
name: Danger

on: pull_request

env:
  # https://github.com/actions/virtual-environments/tree/main/images/macos
  DEVELOPER_DIR: /Applications/Xcode_12.3.app/Contents/Developer

jobs:
  job-danger:
    name: Review, Lint, Verify
    runs-on: macOS-latest
    steps:
      - name: git checkout
        uses: actions/checkout@v2

      - name: ruby versions
        run: |
          ruby --version
          gem --version
          bundler --version

      - name: cache gems
        uses: actions/cache@v2
        with:
          path: vendor/bundle
          key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-gem-

      - name: bundle install
        run: |
          bundle config path vendor/bundle
          bundle install --without=documentation --jobs 4 --retry 3
          echo "/Users/runner/Library/Python/2.7/bin" >> $GITHUB_PATH

      - name: jazzy docs
        run: bundle exec jazzy --output docs/

      - name: danger
        env:
          DANGER_GITHUB_API_TOKEN: ${{ secrets.DANGER_GITHUB_API_TOKEN }}
        run: bundle exec danger


================================================
FILE: .github/workflows/pod-lint.yml
================================================
name: CocoaPods Lint

on:
  push:
    branches:
      - master
      - develop
  pull_request:
    branches:
      - master
      - develop

env:
  # https://github.com/actions/virtual-environments/tree/main/images/macos
  DEVELOPER_DIR: /Applications/Xcode_12.3.app/Contents/Developer

jobs:
  job-pod-lint:
    name: Pod Lint
    runs-on: macOS-latest
    steps:
      - name: git checkout
        uses: actions/checkout@v2

      - name: ruby versions
        run: |
          ruby --version
          gem --version
          bundler --version

      - name: cache gems
        uses: actions/cache@v2
        with:
          path: vendor/bundle
          key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-gem-

      - name: bundle install
        run: |
          bundle config path vendor/bundle
          bundle install --without=documentation --jobs 4 --retry 3

      - name: pod lint
        run: bundle exec pod lib lint --allow-warnings


================================================
FILE: .github/workflows/spm.yml
================================================
name: SwiftPM Integration

on:
  push:
    branches:
      - master
      - develop
  pull_request:
    branches:
      - master
      - develop

env:
  # https://github.com/actions/virtual-environments/tree/main/images/macos
  DEVELOPER_DIR: /Applications/Xcode_12.3.app/Contents/Developer

  IOS_SDK: iphonesimulator14.3
  IOS_DEST: "OS=14.3,name=iPhone 12 Mini"

  SCHEME: PresenterKit

jobs:
  job-build:
    name: SwiftPM Build
    runs-on: macOS-latest
    steps:
      - name: git checkout
        uses: actions/checkout@v2

      - name: xcode version
        run: xcodebuild -version -sdk

      - name: list simulators
        run: |
          xcrun simctl delete unavailable
          xcrun simctl list

      - name: generate xcodeproj
        run: swift package generate-xcodeproj

      - name: Build
        run: |
          set -o pipefail
          xcodebuild clean build -scheme "$SCHEME" -sdk "$IOS_SDK" -destination "$IOS_DEST" | xcpretty -c


================================================
FILE: .gitignore
================================================
.DS_Store

# swiftpm
.swiftpm
.build

# docs
docs/docsets/

# Xcode
## Build generated
build/
DerivedData/

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/

## Other
*.moved-aside
*.xcuserstate

## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM

# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/

# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/Build

# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md

fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output

# Code Injection
#
# After new code Injection tools there's a generated folder /iOSInjectionProject
# https://github.com/johnno1962/injectionforxcode

iOSInjectionProject/


================================================
FILE: .swiftlint.yml
================================================
excluded:
  - Pods
  - docs
  - build
  - scripts

disabled_rules:
  # metrics
  - nesting

  # lint
  - notification_center_detachment
  - weak_delegate

  # idiomatic
  - force_cast
  - type_name

  # style
  - identifier_name

opt_in_rules:
  # performance
  - empty_count
  - first_where
  - sorted_first_last
  - contains_over_first_not_nil
  - last_where
  - reduce_into
  - contains_over_filter_count
  - contains_over_filter_is_empty
  - empty_collection_literal
  - type_contents_order

  # idiomatic
  - fatal_error_message
  - xctfail_message
  - discouraged_object_literal
  - discouraged_optional_boolean
  - discouraged_optional_collection
  - for_where
  - function_default_parameter_at_end
  - legacy_random
  - no_extension_access_modifier
  - redundant_type_annotation
  - static_operator
  - toggle_bool
  - unavailable_function
  - no_space_in_method_call

  # style
  - attributes
  - number_separator
  - operator_usage_whitespace
  - sorted_imports
  - vertical_parameter_alignment_on_call
  - void_return
  - closure_spacing
  - empty_enum_arguments
  - implicit_return
  - modifier_order
  - multiline_arguments
  - multiline_parameters
  - trailing_closure
  - unneeded_parentheses_in_closure_argument
  - vertical_whitespace_between_cases

  # lint
  - overridden_super_call
  - yoda_condition
  - anyobject_protocol
  - array_init
  - empty_xctest_method
  - identical_operands
  - prohibited_super_call
  - unused_import
  - unused_capture_list
  - duplicate_enum_cases
  - legacy_multiple
  - unused_declaration

line_length: 200
file_length: 600

type_body_length: 500

function_body_length: 250

cyclomatic_complexity: 15

type_contents_order:
  order:
    - associated_type
    - type_alias
    - case
    - subtype
    - type_property
    - ib_outlet
    - ib_inspectable
    - instance_property
    - initializer
    - deinitializer
    - subscript
    - type_method
    - view_life_cycle_method
    - ib_action
    - other_method


================================================
FILE: CHANGELOG.md
================================================
# CHANGELOG

The changelog for `PresenterKit`. Also see the [releases](https://github.com/jessesquires/PresenterKit/releases) on GitHub.

--------------------------------------

NEXT
----

- TBA

6.1.1
-----

This release closes the [6.1.1 milestone](https://github.com/jessesquires/PresenterKit/milestone/10?closed=1).

- Upgraded to Xcode 12 and Swift 5.3

6.1.0
-----

This release closes the [6.1.0 milestone](https://github.com/jessesquires/PresenterKit/milestone/9?closed=1).

### New

- Added a new custom presentation controller, `HalfModalPresentationController`
- Support for Swift Package Manager

### Changed

- Upgrade to Swift 5.2
- Update to Xcode 11.4
- Upgrade SwiftLint
- Switch to GH Actions

6.0.0
-----

This release closes the [6.0.0 milestone](https://github.com/jessesquires/PresenterKit/milestone/8?closed=1).

### Breaking

- iOS 11 minimum deployment target (Dropped iOS 10)
- Renamed `present()` function to `presentController()` to avoid ambiguous naming with UIKit

### Changed

- Swift 5.1
- Xcode 11
- Upgrade Swiftlint to 0.35.0, add new rules
- Update Travis CI

5.1.0
-----

This release closes the [5.1.0 milestone](https://github.com/jessesquires/PresenterKit/milestone/7?closed=1).

- Upgrade to Swift 4.2
- Xcode 10.1
- Upgrade Swiftlint to 0.27.0

5.0.0
-----

This release closes the [5.0.0 milestone](https://github.com/jessesquires/PresenterKit/milestone/6?closed=1).

### Breaking

- Swift 4.1
- iOS 10 minimum deployment target (Dropped iOS 9)
- Xcode 9.4
- Upgrade Swiftlint to 0.26.0
- Renamed `dismiss()` function to `dismissController()` to avoid ambiguous naming with UIKit (#41)

### Fixed

- Respect transition context `.isCancelled` when pushing on a navigation stack (#38)

### New

- Add new `pop()` method extension on `UINavigationController` that accepts a `completion` parameter. Similar to existing `push()` method (#40)

- Added `completion` parameter to `dismiss()` method extension on `UIViewController` (#41)

4.0.0
-----

This release closes the [4.0.0 milestone](https://github.com/jessesquires/PresenterKit/milestone/4?closed=1).

### Breaking changes

- Converted to Swift 4

- iOS 9 minimum deployment target

- `public struct PopoverConfig` was changed to accommodate custom frame so it can be used as anchor for the popover.  ([#27](https://github.com/jessesquires/PresenterKit/pull/27), [#26](https://github.com/jessesquires/PresenterKit/issues/26), [@psartzetakis](https://github.com/psartzetakis))
  - `PopoverConfig.Source.view(_)` was changed to `PopoverConfig.Source.view(container: frame:)`

- `public struct DismissButtonConfig` was changed to accommodate custom images in bar button items. ([#24](https://github.com/jessesquires/PresenterKit/pull/24), [#22](https://github.com/jessesquires/PresenterKit/issues/22), [@psartzetakis](https://github.com/psartzetakis))
    - `DismissButtonConfig.text` was renamed to `DismissButtonConfig.content`
    - `public enum DismissButtonConfig.Text` was renamed to `public enum DismissButtonConfig.Content` and it now has 3 cases: `.systemItem`, `.text`, `.image`
    - `DismissButtonConfig.init(location: style: text:)` was renamed to `DismissButtonConfig.init(location: style: content:)`

### New

- Added support for `completion` closure parameter on `present(..)` method. ([#21](https://github.com/jessesquires/PresenterKit/pull/21), [@Sumolari](https://github.com/Sumolari))

3.0.0
-----

This release closes the [3.0.0 milestone](https://github.com/jessesquires/PresenterKit/milestone/3?closed=1).

**Swift 3.0 now required.**

### Changes

- `presentViewController(_:, type:, animated:)` was renamed to `present(_:, type:, animated:)`

### New

- Added a `.none` case to `PresentationType` which uses UIKit defaults. Use this when presenting system controllers like `UIAlertController`.

### Bug fixes

- Fixed bug in `withStyles()` where modal presentation/transition styles might not be applied correctly ([#14](https://github.com/jessesquires/PresenterKit/issues/14)).

2.0.0
-----

This release closes the [2.0.0 milestone](https://github.com/jessesquires/PresenterKit/milestone/2?closed=1).

**Swift 2.3 now required.**

1.0.0
-----

Initial release 🎉


================================================
FILE: Dangerfile
================================================
# -----------------------------------------------------------------------------
# Changed library files, but didn't add/update tests
# -----------------------------------------------------------------------------
all_changed_files = (git.added_files + git.modified_files + git.deleted_files)

has_source_changes = !all_changed_files.grep(/Sources/).empty?
has_test_changes = !all_changed_files.grep(/Tests/).empty?
if has_source_changes && !has_test_changes
    warn("Library files were updated without test coverage. Please update or add tests, if possible!")
end

# -----------------------------------------------------------------------------
# Pull request is too large to review
# -----------------------------------------------------------------------------
if git.lines_of_code > 600
    warn("This is a large pull request! Can you break it up into multiple smaller ones instead?")
end

# -----------------------------------------------------------------------------
# All pull requests need a description
# -----------------------------------------------------------------------------
if github.pr_body.length < 25
    fail("Please provide a detailed summary in the pull request description.")
end

# -----------------------------------------------------------------------------
# All pull requests should be submitted to dev/develop branch
# -----------------------------------------------------------------------------
if github.branch_for_base != "dev" && github.branch_for_base != "develop"
    warn("Pull requests should be submitted to the dev branch only.")
end

# -----------------------------------------------------------------------------
# CHANGELOG entries are required for changes to library files
# -----------------------------------------------------------------------------
no_changelog_entry = !git.modified_files.include?("CHANGELOG.md")
if has_source_changes && no_changelog_entry
    warn("There is no CHANGELOG entry. Do you need to add one?")
end

# -----------------------------------------------------------------------------
# Milestones are required for all PRs to track what's included in each release
# -----------------------------------------------------------------------------
has_milestone = github.pr_json["milestone"] != nil
warn('All pull requests should have a milestone.', sticky: false) unless has_milestone

# -----------------------------------------------------------------------------
# Docs are regenerated when releasing
# -----------------------------------------------------------------------------
has_doc_changes = !git.modified_files.grep(/docs\//).empty?
if has_doc_changes
    fail("Documentation cannot be edited directly.")
    message(%(Docs are automatically regenerated when creating new releases using [Jazzy](https://github.com/realm/jazzy).
        If you want to update docs, please update the doc comments or markdown files directly.))
end

# -----------------------------------------------------------------------------
# Verify correct `pod install` and `bundle install`
# -----------------------------------------------------------------------------
def files_changed_as_set(files)
    changed_files = files.select { |file| git.modified_files.include? file }
    not_changed_files = files.select { |file| !changed_files.include? file }
    all_files_changed = not_changed_files.empty?
    no_files_changed = changed_files.empty?
    return all_files_changed || no_files_changed
end

# Verify proper pod install.
# If Podfile has been modified, so must the lock files.
did_update_podfile = git.modified_files.include?("Podfile")
pod_files = ["Podfile", "Podfile.lock", "Pods/Manifest.lock"]
if did_update_podfile && !files_changed_as_set(pod_files)
    fail("CocoaPods error: #{pod_files} should all be changed at the same time.
        Run `pod install` and commit the changes to fix.")
end

# Prevent editing `Pods/` source directly.
# If Pods has changed, then Podfile.lock must have changed too.
has_modified_pods = !(git.added_files + git.modified_files + git.deleted_files).grep(/Pods/).empty?
did_update_podlock = git.modified_files.include?("Podfile.lock")
if has_modified_pods && !did_update_podlock
  fail("It looks like you are modifying CocoaPods source in `Pods/`. 3rd-party dependencies should not be edited.
        To update or change pods, please update the `Podfile` and run `pod install`.")
end

# Verify proper bundle install.
# If Gemfile has been modified, so must the lock file.
did_update_gemfile = git.modified_files.include?("Gemfile")
gem_files = ["Gemfile", "Gemfile.lock"]
if did_update_gemfile && !files_changed_as_set(gem_files)
    fail("Bundler error: #{gem_files} should all be changed at the same time.
        Run `bundle install` and commit the changes to fix.")
end

# -----------------------------------------------------------------------------
# Lint all changed markdown files
# -----------------------------------------------------------------------------
markdown_files = (git.added_files + git.modified_files).grep(%r{.*\.md/})
unless markdown_files.empty?
    # Run proselint to check prose and check spelling
    prose.language = "en-us"
    prose.ignore_acronyms = true
    prose.ignore_numbers = true
    prose.ignored_words = ["jessesquires", "swiftpm", "iOS",
        "macOS", "watchOS", "tvOS", "Xcode", "PresenterKit"
    ]
    prose.lint_files markdown_files
    prose.check_spelling markdown_files
end

# -----------------------------------------------------------------------------
# Run SwiftLint
# -----------------------------------------------------------------------------
swiftlint.verbose = true
swiftlint.config_file = './.swiftlint.yml'
swiftlint.lint_files(inline_mode: true, fail_on_error: true)

# -----------------------------------------------------------------------------
# Jazzy docs - check for new, undocumented symbols
# -----------------------------------------------------------------------------
jazzy.check fail: :all


================================================
FILE: Example/ExampleApp/AppDelegate.swift
================================================
//
//  Created by Jesse Squires
//  https://www.jessesquires.com
//
//
//  Documentation
//  https://jessesquires.github.io/PresenterKit
//
//
//  GitHub
//  https://github.com/jessesquires/PresenterKit
//
//
//  License
//  Copyright © 2016-present Jesse Squires
//  Released under an MIT license: https://opensource.org/licenses/MIT
//

import UIKit

@UIApplicationMain
final class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(
        _ application: UIApplication,
        // swiftlint:disable:next discouraged_optional_collection
        willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
        true
    }
}


================================================
FILE: Example/ExampleApp/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "iphone",
      "size" : "20x20",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "size" : "20x20",
      "scale" : "3x"
    },
    {
      "idiom" : "iphone",
      "size" : "29x29",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "size" : "29x29",
      "scale" : "3x"
    },
    {
      "idiom" : "iphone",
      "size" : "40x40",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "size" : "40x40",
      "scale" : "3x"
    },
    {
      "idiom" : "iphone",
      "size" : "60x60",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "size" : "60x60",
      "scale" : "3x"
    },
    {
      "idiom" : "ipad",
      "size" : "20x20",
      "scale" : "1x"
    },
    {
      "idiom" : "ipad",
      "size" : "20x20",
      "scale" : "2x"
    },
    {
      "idiom" : "ipad",
      "size" : "29x29",
      "scale" : "1x"
    },
    {
      "idiom" : "ipad",
      "size" : "29x29",
      "scale" : "2x"
    },
    {
      "idiom" : "ipad",
      "size" : "40x40",
      "scale" : "1x"
    },
    {
      "idiom" : "ipad",
      "size" : "40x40",
      "scale" : "2x"
    },
    {
      "idiom" : "ipad",
      "size" : "76x76",
      "scale" : "1x"
    },
    {
      "idiom" : "ipad",
      "size" : "76x76",
      "scale" : "2x"
    },
    {
      "idiom" : "ipad",
      "size" : "83.5x83.5",
      "scale" : "2x"
    },
    {
      "idiom" : "ios-marketing",
      "size" : "1024x1024",
      "scale" : "1x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/ExampleApp/Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/ExampleApp/Assets.xcassets/ic_dismiss.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "universal",
      "filename" : "dismiss@1x.png",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "filename" : "dismiss@2x.png",
      "scale" : "2x"
    },
    {
      "idiom" : "universal",
      "filename" : "dismiss@3x.png",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Example/ExampleApp/Base.lproj/LaunchScreen.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
    <device id="retina4_7" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17125"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="EHf-IW-A2E">
            <objects>
                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="PresenterKit" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="o9P-Nw-p8D">
                                <rect key="frame" x="98.5" y="307" width="178" height="53"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="53" id="IBC-pi-qAv"/>
                                    <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="178" id="vYf-Ck-7c3"/>
                                </constraints>
                                <fontDescription key="fontDescription" type="system" pointSize="30"/>
                                <color key="textColor" systemColor="darkTextColor"/>
                                <nil key="highlightedColor"/>
                            </label>
                        </subviews>
                        <viewLayoutGuide key="safeArea" id="ZgL-Xc-pol"/>
                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                        <constraints>
                            <constraint firstItem="o9P-Nw-p8D" firstAttribute="centerX" secondItem="ZgL-Xc-pol" secondAttribute="centerX" id="ibh-C9-ZWg"/>
                            <constraint firstItem="o9P-Nw-p8D" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="lSG-yY-hB7"/>
                        </constraints>
                    </view>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="388" y="435"/>
        </scene>
    </scenes>
    <resources>
        <systemColor name="darkTextColor">
            <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>


================================================
FILE: Example/ExampleApp/Base.lproj/Main.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="LSm-LS-aMG">
    <device id="retina4_7" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17125"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--PresenterKit-->
        <scene sceneID="DwK-gN-fD8">
            <objects>
                <tableViewController id="2kR-nF-Bf2" customClass="MainViewController" customModule="ExampleApp" customModuleProvider="target" sceneMemberID="viewController">
                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="zh3-A1-cWB">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <color key="backgroundColor" systemColor="groupTableViewBackgroundColor"/>
                        <sections>
                            <tableViewSection id="6FN-A9-WXP">
                                <cells>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="cell" textLabel="JHC-AU-Yf7" style="IBUITableViewCellStyleDefault" id="h0a-dJ-rPY">
                                        <rect key="frame" x="0.0" y="18" width="375" height="44"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="h0a-dJ-rPY" id="AZb-iq-xfH">
                                            <rect key="frame" x="0.0" y="0.0" width="348" height="44"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Push" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="JHC-AU-Yf7">
                                                    <rect key="frame" x="16" y="0.0" width="324" height="44"/>
                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                                    <color key="textColor" systemColor="darkTextColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                    </tableViewCell>
                                </cells>
                            </tableViewSection>
                            <tableViewSection id="rIr-uf-ujc">
                                <cells>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="cell" textLabel="iAE-2f-3fX" style="IBUITableViewCellStyleDefault" id="zEB-7F-Jxq">
                                        <rect key="frame" x="0.0" y="98" width="375" height="44"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="zEB-7F-Jxq" id="2lC-p0-VFP">
                                            <rect key="frame" x="0.0" y="0.0" width="348" height="44"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Modal" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="iAE-2f-3fX">
                                                    <rect key="frame" x="16" y="0.0" width="324" height="44"/>
                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                                    <color key="textColor" systemColor="darkTextColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                    </tableViewCell>
                                </cells>
                            </tableViewSection>
                            <tableViewSection id="ajS-bw-Tgi">
                                <cells>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="cell" textLabel="HUt-r6-Bfj" style="IBUITableViewCellStyleDefault" id="bZu-wc-0pF">
                                        <rect key="frame" x="0.0" y="178" width="375" height="44"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="bZu-wc-0pF" id="H2r-5Q-a03">
                                            <rect key="frame" x="0.0" y="0.0" width="348" height="44"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Show" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="HUt-r6-Bfj">
                                                    <rect key="frame" x="16" y="0.0" width="324" height="44"/>
                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                                    <color key="textColor" systemColor="darkTextColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                    </tableViewCell>
                                </cells>
                            </tableViewSection>
                            <tableViewSection id="1tF-tY-ctz">
                                <cells>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="cell" textLabel="tLM-B9-0Rs" style="IBUITableViewCellStyleDefault" id="zpJ-lA-GVX">
                                        <rect key="frame" x="0.0" y="258" width="375" height="44"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="zpJ-lA-GVX" id="SqP-ME-UdG">
                                            <rect key="frame" x="0.0" y="0.0" width="348" height="44"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="ShowDetail" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="tLM-B9-0Rs">
                                                    <rect key="frame" x="16" y="0.0" width="324" height="44"/>
                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                                    <color key="textColor" systemColor="darkTextColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                    </tableViewCell>
                                </cells>
                            </tableViewSection>
                            <tableViewSection id="bIk-FY-np2">
                                <cells>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="cell" textLabel="Nq9-uc-Nh2" style="IBUITableViewCellStyleDefault" id="Y5R-qA-YDa">
                                        <rect key="frame" x="0.0" y="338" width="375" height="44"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Y5R-qA-YDa" id="26V-mb-Wqh">
                                            <rect key="frame" x="0.0" y="0.0" width="348" height="44"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="PopoverFromView" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Nq9-uc-Nh2">
                                                    <rect key="frame" x="16" y="0.0" width="324" height="44"/>
                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                                    <color key="textColor" systemColor="darkTextColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                    </tableViewCell>
                                </cells>
                            </tableViewSection>
                            <tableViewSection id="OFd-eA-kmg">
                                <cells>
                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="cell" textLabel="8F3-4d-yZY" style="IBUITableViewCellStyleDefault" id="PYh-L1-KZj">
                                        <rect key="frame" x="0.0" y="418" width="375" height="44"/>
                                        <autoresizingMask key="autoresizingMask"/>
                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="PYh-L1-KZj" id="xWo-DE-kAQ">
                                            <rect key="frame" x="0.0" y="0.0" width="348" height="44"/>
                                            <autoresizingMask key="autoresizingMask"/>
                                            <subviews>
                                                <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Custom (&quot;Half Modal&quot;)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="8F3-4d-yZY">
                                                    <rect key="frame" x="16" y="0.0" width="324" height="44"/>
                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                                    <color key="textColor" systemColor="darkTextColor"/>
                                                    <nil key="highlightedColor"/>
                                                </label>
                                            </subviews>
                                        </tableViewCellContentView>
                                    </tableViewCell>
                                </cells>
                            </tableViewSection>
                        </sections>
                        <connections>
                            <outlet property="dataSource" destination="2kR-nF-Bf2" id="130-Ba-bhN"/>
                            <outlet property="delegate" destination="2kR-nF-Bf2" id="18k-24-Mbh"/>
                        </connections>
                    </tableView>
                    <navigationItem key="navigationItem" title="PresenterKit" id="a7j-O7-GLr">
                        <barButtonItem key="rightBarButtonItem" title="Popover" id="y0n-Py-Pi5">
                            <connections>
                                <action selector="didTapPopoverButton:" destination="2kR-nF-Bf2" id="KXH-9U-vL3"/>
                            </connections>
                        </barButtonItem>
                    </navigationItem>
                </tableViewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="Unc-SI-ZoB" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="759" y="245"/>
        </scene>
        <!--Navigation Controller-->
        <scene sceneID="tRQ-iD-RRw">
            <objects>
                <navigationController id="LSm-LS-aMG" sceneMemberID="viewController">
                    <navigationBar key="navigationBar" contentMode="scaleToFill" id="XpN-Ws-R6x">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
                        <autoresizingMask key="autoresizingMask"/>
                    </navigationBar>
                    <connections>
                        <segue destination="2kR-nF-Bf2" kind="relationship" relationship="rootViewController" id="1xI-qi-C26"/>
                    </connections>
                </navigationController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="lcx-Ji-cXd" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="30" y="246"/>
        </scene>
    </scenes>
    <resources>
        <systemColor name="darkTextColor">
            <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
        <systemColor name="darkTextColor">
            <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
        <systemColor name="darkTextColor">
            <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
        <systemColor name="darkTextColor">
            <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
        <systemColor name="darkTextColor">
            <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
        <systemColor name="darkTextColor">
            <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
        <systemColor name="groupTableViewBackgroundColor">
            <color red="0.94901960784313721" green="0.94901960784313721" blue="0.96862745098039216" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </systemColor>
    </resources>
</document>


================================================
FILE: Example/ExampleApp/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>UILaunchStoryboardName</key>
	<string>LaunchScreen</string>
	<key>UIMainStoryboardFile</key>
	<string>Main</string>
	<key>UIRequiredDeviceCapabilities</key>
	<array>
		<string>armv7</string>
	</array>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
		<string>UIInterfaceOrientationLandscapeLeft</string>
		<string>UIInterfaceOrientationLandscapeRight</string>
	</array>
	<key>UISupportedInterfaceOrientations~ipad</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
		<string>UIInterfaceOrientationPortraitUpsideDown</string>
		<string>UIInterfaceOrientationLandscapeLeft</string>
		<string>UIInterfaceOrientationLandscapeRight</string>
	</array>
</dict>
</plist>


================================================
FILE: Example/ExampleApp/MainViewController.swift
================================================
//
//  Created by Jesse Squires
//  https://www.jessesquires.com
//
//
//  Documentation
//  https://jessesquires.github.io/PresenterKit
//
//
//  GitHub
//  https://github.com/jessesquires/PresenterKit
//
//
//  License
//  Copyright © 2016-present Jesse Squires
//  Released under an MIT license: https://opensource.org/licenses/MIT
//

import PresenterKit
import UIKit

enum Options: Int {
    case push
    case modal
    case show
    case showDetail
    case popover
    case halfModal
}

final class MainViewController: UITableViewController,
UIViewControllerTransitioningDelegate, UIPopoverPresentationControllerDelegate {

    @IBAction func didTapPopoverButton(_ sender: UIBarButtonItem) {
        let vc = RedViewController()
        let config = PopoverConfig(source: .barButtonItem(sender), delegate: self)
        presentController(vc, type: .popover(config)) {
            print("Completed")
        }
    }

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        defer {
            tableView.deselectRow(at: indexPath, animated: true)
        }

        let animated = true

        switch indexPath.section {
        case Options.push.rawValue:
            let vc = RedViewController()
            presentController(vc, type: .push, animated: animated) {
                print("Completed")
            }

        case Options.modal.rawValue:
            let image = UIImage(named: "ic_dismiss")!
            let dismissConfig = DismissButtonConfig(location: .left, style: .plain, content: .image(image))
            let vc = RedViewController(dismissConfig: dismissConfig)
            presentController(vc, type: .modal(.withNavigation, .fullScreen, .coverVertical), animated: animated) {
                print("Completed")
            }

        case Options.show.rawValue:
            let vc = RedViewController()
            presentController(vc, type: .show, animated: animated)

        case Options.showDetail.rawValue:
            let vc = RedViewController()
            presentController(vc, type: .showDetail(.withNavigation), animated: animated)

        case Options.popover.rawValue:
            let cell = tableView.cellForRow(at: indexPath)!.contentView
            let config = PopoverConfig(source: .view(container: cell, frame: nil), delegate: self)
            let vc = RedViewController()
            presentController(vc, type: .popover(config), animated: animated) {
                print("Completed")
            }

        case Options.halfModal.rawValue:
            let vc = RedViewController()
            vc.modalTransitionStyle = .coverVertical
            presentController(vc, type: .custom(self), animated: animated) {
                print("Completed")
            }

        default:
            fatalError("invalid index path: \(indexPath)")
        }
    }

    // MARK: UIViewControllerTransitioningDelegate

    func presentationController(forPresented presented: UIViewController,
                                presenting: UIViewController?,
                                source: UIViewController) -> UIPresentationController? {
        HalfModalPresentationController(presentedViewController: presented, presenting: presenting)
    }

    // MARK: UIPopoverPresentationControllerDelegate

    func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
        .none
    }
}


================================================
FILE: Example/ExampleApp/RedViewController.swift
================================================
//
//  Created by Jesse Squires
//  https://www.jessesquires.com
//
//
//  Documentation
//  https://jessesquires.github.io/PresenterKit
//
//
//  GitHub
//  https://github.com/jessesquires/PresenterKit
//
//
//  License
//  Copyright © 2016-present Jesse Squires
//  Released under an MIT license: https://opensource.org/licenses/MIT
//

import PresenterKit
import UIKit

final class RedViewController: UITableViewController {

    let cellId = "cell"
    var dismissConfig: DismissButtonConfig?

    init(dismissConfig: DismissButtonConfig? = nil) {
        self.dismissConfig = dismissConfig
        super.init(style: .grouped)
    }

    @available(*, unavailable)
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        title = "Red View"
        tableView.backgroundColor = UIColor(red: 1.0, green: 0.493_3, blue: 0.474, alpha: 1.0)
        tableView.allowsSelection = false
        tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellId)

        let config = dismissConfig ?? DismissButtonConfig()
        addDismissButtonIfNeeded(config: config)
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        10
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath)
        cell.textLabel?.text = "cell \((indexPath as NSIndexPath).row)"
        cell.textLabel?.textColor = .red
        return cell
    }

    override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        "Section title"
    }

    override func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
        "Footer title"
    }
}


================================================
FILE: Example/ExampleApp.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		882550121C5472B700CE6D8D /* RedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 882550111C5472B700CE6D8D /* RedViewController.swift */; };
		887E572B1C4DBC9B00684C85 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887E572A1C4DBC9B00684C85 /* AppDelegate.swift */; };
		887E572D1C4DBC9B00684C85 /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887E572C1C4DBC9B00684C85 /* MainViewController.swift */; };
		887E57301C4DBC9B00684C85 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 887E572E1C4DBC9B00684C85 /* Main.storyboard */; };
		887E57321C4DBC9B00684C85 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 887E57311C4DBC9B00684C85 /* Assets.xcassets */; };
		887E57351C4DBC9B00684C85 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 887E57331C4DBC9B00684C85 /* LaunchScreen.storyboard */; };
		887E574B1C4DBC9B00684C85 /* ExampleAppUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887E574A1C4DBC9B00684C85 /* ExampleAppUITests.swift */; };
		887E57701C4DC07400684C85 /* PresenterKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 887E57671C4DC03B00684C85 /* PresenterKit.framework */; };
		887E57711C4DC07400684C85 /* PresenterKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 887E57671C4DC03B00684C85 /* PresenterKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		887E57471C4DBC9B00684C85 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 887E571F1C4DBC9B00684C85 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 887E57261C4DBC9B00684C85;
			remoteInfo = ExampleApp;
		};
		887E57661C4DC03B00684C85 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 887E57611C4DC03B00684C85 /* PresenterKit.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 88B1CF571C3F762700D1348C;
			remoteInfo = PresenterKit;
		};
		887E57681C4DC03B00684C85 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 887E57611C4DC03B00684C85 /* PresenterKit.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 88B1CF611C3F762800D1348C;
			remoteInfo = PresenterKitTests;
		};
		887E57721C4DC07500684C85 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 887E57611C4DC03B00684C85 /* PresenterKit.xcodeproj */;
			proxyType = 1;
			remoteGlobalIDString = 88B1CF561C3F762700D1348C;
			remoteInfo = PresenterKit;
		};
/* End PBXContainerItemProxy section */

/* Begin PBXCopyFilesBuildPhase section */
		887E57741C4DC07500684C85 /* Embed Frameworks */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = "";
			dstSubfolderSpec = 10;
			files = (
				887E57711C4DC07400684C85 /* PresenterKit.framework in Embed Frameworks */,
			);
			name = "Embed Frameworks";
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
		882550111C5472B700CE6D8D /* RedViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RedViewController.swift; sourceTree = "<group>"; };
		887E57271C4DBC9B00684C85 /* ExampleApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ExampleApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
		887E572A1C4DBC9B00684C85 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
		887E572C1C4DBC9B00684C85 /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = "<group>"; };
		887E572F1C4DBC9B00684C85 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
		887E57311C4DBC9B00684C85 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		887E57341C4DBC9B00684C85 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
		887E57361C4DBC9B00684C85 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		887E57461C4DBC9B00684C85 /* ExampleAppUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleAppUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
		887E574A1C4DBC9B00684C85 /* ExampleAppUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleAppUITests.swift; sourceTree = "<group>"; };
		887E574C1C4DBC9B00684C85 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		887E57611C4DC03B00684C85 /* PresenterKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = PresenterKit.xcodeproj; path = ../PresenterKit.xcodeproj; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		887E57241C4DBC9B00684C85 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				887E57701C4DC07400684C85 /* PresenterKit.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		887E57431C4DBC9B00684C85 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		887E571E1C4DBC9B00684C85 = {
			isa = PBXGroup;
			children = (
				887E57611C4DC03B00684C85 /* PresenterKit.xcodeproj */,
				887E57291C4DBC9B00684C85 /* ExampleApp */,
				887E57491C4DBC9B00684C85 /* ExampleAppUITests */,
				887E57281C4DBC9B00684C85 /* Products */,
			);
			sourceTree = "<group>";
		};
		887E57281C4DBC9B00684C85 /* Products */ = {
			isa = PBXGroup;
			children = (
				887E57271C4DBC9B00684C85 /* ExampleApp.app */,
				887E57461C4DBC9B00684C85 /* ExampleAppUITests.xctest */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		887E57291C4DBC9B00684C85 /* ExampleApp */ = {
			isa = PBXGroup;
			children = (
				887E572A1C4DBC9B00684C85 /* AppDelegate.swift */,
				887E57311C4DBC9B00684C85 /* Assets.xcassets */,
				887E57361C4DBC9B00684C85 /* Info.plist */,
				887E57331C4DBC9B00684C85 /* LaunchScreen.storyboard */,
				887E572E1C4DBC9B00684C85 /* Main.storyboard */,
				887E572C1C4DBC9B00684C85 /* MainViewController.swift */,
				882550111C5472B700CE6D8D /* RedViewController.swift */,
			);
			path = ExampleApp;
			sourceTree = "<group>";
		};
		887E57491C4DBC9B00684C85 /* ExampleAppUITests */ = {
			isa = PBXGroup;
			children = (
				887E574A1C4DBC9B00684C85 /* ExampleAppUITests.swift */,
				887E574C1C4DBC9B00684C85 /* Info.plist */,
			);
			path = ExampleAppUITests;
			sourceTree = "<group>";
		};
		887E57621C4DC03B00684C85 /* Products */ = {
			isa = PBXGroup;
			children = (
				887E57671C4DC03B00684C85 /* PresenterKit.framework */,
				887E57691C4DC03B00684C85 /* PresenterKitTests.xctest */,
			);
			name = Products;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		887E57261C4DBC9B00684C85 /* ExampleApp */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 887E574F1C4DBC9B00684C85 /* Build configuration list for PBXNativeTarget "ExampleApp" */;
			buildPhases = (
				887E57231C4DBC9B00684C85 /* Sources */,
				887E57241C4DBC9B00684C85 /* Frameworks */,
				887E57251C4DBC9B00684C85 /* Resources */,
				887E57741C4DC07500684C85 /* Embed Frameworks */,
			);
			buildRules = (
			);
			dependencies = (
				887E57731C4DC07500684C85 /* PBXTargetDependency */,
			);
			name = ExampleApp;
			productName = ExampleApp;
			productReference = 887E57271C4DBC9B00684C85 /* ExampleApp.app */;
			productType = "com.apple.product-type.application";
		};
		887E57451C4DBC9B00684C85 /* ExampleAppUITests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 887E57551C4DBC9B00684C85 /* Build configuration list for PBXNativeTarget "ExampleAppUITests" */;
			buildPhases = (
				887E57421C4DBC9B00684C85 /* Sources */,
				887E57431C4DBC9B00684C85 /* Frameworks */,
				887E57441C4DBC9B00684C85 /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
				887E57481C4DBC9B00684C85 /* PBXTargetDependency */,
			);
			name = ExampleAppUITests;
			productName = ExampleAppUITests;
			productReference = 887E57461C4DBC9B00684C85 /* ExampleAppUITests.xctest */;
			productType = "com.apple.product-type.bundle.ui-testing";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		887E571F1C4DBC9B00684C85 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastSwiftUpdateCheck = 0720;
				LastUpgradeCheck = 1200;
				ORGANIZATIONNAME = "Hexed Bits";
				TargetAttributes = {
					887E57261C4DBC9B00684C85 = {
						CreatedOnToolsVersion = 7.2;
						DevelopmentTeamName = "Jesse Squires";
						LastSwiftMigration = 0800;
						ProvisioningStyle = Manual;
					};
					887E57451C4DBC9B00684C85 = {
						CreatedOnToolsVersion = 7.2;
						LastSwiftMigration = 0800;
						ProvisioningStyle = Manual;
						TestTargetID = 887E57261C4DBC9B00684C85;
					};
				};
			};
			buildConfigurationList = 887E57221C4DBC9B00684C85 /* Build configuration list for PBXProject "ExampleApp" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 887E571E1C4DBC9B00684C85;
			productRefGroup = 887E57281C4DBC9B00684C85 /* Products */;
			projectDirPath = "";
			projectReferences = (
				{
					ProductGroup = 887E57621C4DC03B00684C85 /* Products */;
					ProjectRef = 887E57611C4DC03B00684C85 /* PresenterKit.xcodeproj */;
				},
			);
			projectRoot = "";
			targets = (
				887E57261C4DBC9B00684C85 /* ExampleApp */,
				887E57451C4DBC9B00684C85 /* ExampleAppUITests */,
			);
		};
/* End PBXProject section */

/* Begin PBXReferenceProxy section */
		887E57671C4DC03B00684C85 /* PresenterKit.framework */ = {
			isa = PBXReferenceProxy;
			fileType = wrapper.framework;
			path = PresenterKit.framework;
			remoteRef = 887E57661C4DC03B00684C85 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		887E57691C4DC03B00684C85 /* PresenterKitTests.xctest */ = {
			isa = PBXReferenceProxy;
			fileType = wrapper.cfbundle;
			path = PresenterKitTests.xctest;
			remoteRef = 887E57681C4DC03B00684C85 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
/* End PBXReferenceProxy section */

/* Begin PBXResourcesBuildPhase section */
		887E57251C4DBC9B00684C85 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				887E57351C4DBC9B00684C85 /* LaunchScreen.storyboard in Resources */,
				887E57321C4DBC9B00684C85 /* Assets.xcassets in Resources */,
				887E57301C4DBC9B00684C85 /* Main.storyboard in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		887E57441C4DBC9B00684C85 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		887E57231C4DBC9B00684C85 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				887E572D1C4DBC9B00684C85 /* MainViewController.swift in Sources */,
				882550121C5472B700CE6D8D /* RedViewController.swift in Sources */,
				887E572B1C4DBC9B00684C85 /* AppDelegate.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		887E57421C4DBC9B00684C85 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				887E574B1C4DBC9B00684C85 /* ExampleAppUITests.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		887E57481C4DBC9B00684C85 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 887E57261C4DBC9B00684C85 /* ExampleApp */;
			targetProxy = 887E57471C4DBC9B00684C85 /* PBXContainerItemProxy */;
		};
		887E57731C4DC07500684C85 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			name = PresenterKit;
			targetProxy = 887E57721C4DC07500684C85 /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin PBXVariantGroup section */
		887E572E1C4DBC9B00684C85 /* Main.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				887E572F1C4DBC9B00684C85 /* Base */,
			);
			name = Main.storyboard;
			sourceTree = "<group>";
		};
		887E57331C4DBC9B00684C85 /* LaunchScreen.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				887E57341C4DBC9B00684C85 /* Base */,
			);
			name = LaunchScreen.storyboard;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		887E574D1C4DBC9B00684C85 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Debug;
		};
		887E574E1C4DBC9B00684C85 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
				MTL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = iphoneos;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2";
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
		887E57501C4DBC9B00684C85 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CODE_SIGN_IDENTITY = "iPhone Developer";
				CODE_SIGN_STYLE = Manual;
				DEVELOPMENT_TEAM = "";
				INFOPLIST_FILE = ExampleApp/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.ExampleApp;
				PRODUCT_NAME = "$(TARGET_NAME)";
				PROVISIONING_PROFILE_SPECIFIER = "";
			};
			name = Debug;
		};
		887E57511C4DBC9B00684C85 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CODE_SIGN_IDENTITY = "iPhone Developer";
				CODE_SIGN_STYLE = Manual;
				DEVELOPMENT_TEAM = "";
				INFOPLIST_FILE = ExampleApp/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.ExampleApp;
				PRODUCT_NAME = "$(TARGET_NAME)";
				PROVISIONING_PROFILE_SPECIFIER = "";
				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
			};
			name = Release;
		};
		887E57561C4DBC9B00684C85 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CODE_SIGN_STYLE = Manual;
				DEVELOPMENT_TEAM = "";
				INFOPLIST_FILE = ExampleAppUITests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.ExampleAppUITests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				PROVISIONING_PROFILE_SPECIFIER = "";
				TEST_TARGET_NAME = ExampleApp;
				USES_XCTRUNNER = YES;
			};
			name = Debug;
		};
		887E57571C4DBC9B00684C85 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CODE_SIGN_STYLE = Manual;
				DEVELOPMENT_TEAM = "";
				INFOPLIST_FILE = ExampleAppUITests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.ExampleAppUITests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				PROVISIONING_PROFILE_SPECIFIER = "";
				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
				TEST_TARGET_NAME = ExampleApp;
				USES_XCTRUNNER = YES;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		887E57221C4DBC9B00684C85 /* Build configuration list for PBXProject "ExampleApp" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				887E574D1C4DBC9B00684C85 /* Debug */,
				887E574E1C4DBC9B00684C85 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		887E574F1C4DBC9B00684C85 /* Build configuration list for PBXNativeTarget "ExampleApp" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				887E57501C4DBC9B00684C85 /* Debug */,
				887E57511C4DBC9B00684C85 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		887E57551C4DBC9B00684C85 /* Build configuration list for PBXNativeTarget "ExampleAppUITests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				887E57561C4DBC9B00684C85 /* Debug */,
				887E57571C4DBC9B00684C85 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 887E571F1C4DBC9B00684C85 /* Project object */;
}


================================================
FILE: Example/ExampleApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:ExampleApp.xcodeproj">
   </FileRef>
</Workspace>


================================================
FILE: Example/ExampleApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


================================================
FILE: Example/ExampleApp.xcodeproj/xcshareddata/IDETemplateMacros.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>FILEHEADER</key>
	<string>
//  Created by Jesse Squires
//  https://www.jessesquires.com
//
//
//  Documentation
//  https://jessesquires.github.io/PresenterKit
//
//
//  GitHub
//  https://github.com/jessesquires/PresenterKit
//
//
//  License
//  Copyright © 2016-present Jesse Squires
//  Released under an MIT license: https://opensource.org/licenses/MIT
//</string>
</dict>
</plist>


================================================
FILE: Example/ExampleApp.xcodeproj/xcshareddata/xcschemes/ExampleApp.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1200"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "88B1CF561C3F762700D1348C"
               BuildableName = "PresenterKit.framework"
               BlueprintName = "PresenterKit"
               ReferencedContainer = "container:../PresenterKit.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "NO"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "887E57261C4DBC9B00684C85"
               BuildableName = "ExampleApp.app"
               BlueprintName = "ExampleApp"
               ReferencedContainer = "container:ExampleApp.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES"
      codeCoverageEnabled = "YES"
      onlyGenerateCoverageForSpecifiedTargets = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "887E57261C4DBC9B00684C85"
            BuildableName = "ExampleApp.app"
            BlueprintName = "ExampleApp"
            ReferencedContainer = "container:ExampleApp.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <CodeCoverageTargets>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "88B1CF561C3F762700D1348C"
            BuildableName = "PresenterKit.framework"
            BlueprintName = "PresenterKit"
            ReferencedContainer = "container:../PresenterKit.xcodeproj">
         </BuildableReference>
      </CodeCoverageTargets>
      <Testables>
         <TestableReference
            skipped = "NO"
            parallelizable = "YES"
            testExecutionOrdering = "random">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "887E57451C4DBC9B00684C85"
               BuildableName = "ExampleAppUITests.xctest"
               BlueprintName = "ExampleAppUITests"
               ReferencedContainer = "container:ExampleApp.xcodeproj">
            </BuildableReference>
         </TestableReference>
      </Testables>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "887E57261C4DBC9B00684C85"
            BuildableName = "ExampleApp.app"
            BlueprintName = "ExampleApp"
            ReferencedContainer = "container:ExampleApp.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "887E57261C4DBC9B00684C85"
            BuildableName = "ExampleApp.app"
            BlueprintName = "ExampleApp"
            ReferencedContainer = "container:ExampleApp.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: Example/ExampleAppUITests/ExampleAppUITests.swift
================================================
//
//  Created by Jesse Squires
//  https://www.jessesquires.com
//
//
//  Documentation
//  https://jessesquires.github.io/PresenterKit
//
//
//  GitHub
//  https://github.com/jessesquires/PresenterKit
//
//
//  License
//  Copyright © 2016-present Jesse Squires
//  Released under an MIT license: https://opensource.org/licenses/MIT
//

import UIKit
import XCTest

final class ExampleAppUITests: XCTestCase {

    override func setUp() {
        super.setUp()
        continueAfterFailure = false
        XCUIApplication().launch()
    }

    func test_popover() {
        let app = XCUIApplication()
        app.navigationBars["PresenterKit"].buttons["Popover"].tap()
        app.otherElements["PopoverDismissRegion"].tap()
    }

    func test_push() {
        let app = XCUIApplication()
        app.tables.staticTexts["Push"].tap()
        app.navigationBars["Red View"].buttons["PresenterKit"].tap()
    }

    func test_modal() {
        let app = XCUIApplication()
        app.tables.staticTexts["Modal"].tap()
        app.navigationBars["Red View"].children(matching: .button).element.tap()
    }

    func test_show() {
        let app = XCUIApplication()
        app.tables.staticTexts["Show"].tap()
        app.navigationBars["Red View"].buttons["PresenterKit"].tap()
    }

    func test_showDetail() {
        let app = XCUIApplication()
        app.tables.staticTexts["ShowDetail"].tap()
        app.navigationBars["Red View"].buttons["Cancel"].tap()
    }

    func test_popoverFromView() {
        let app = XCUIApplication()
        app.tables.staticTexts["PopoverFromView"].tap()
        app.otherElements["PopoverDismissRegion"].tap()
    }

    func test_halfModal() {
        let app = XCUIApplication()
        app.tables.staticTexts["Custom (\"Half Modal\")"].tap()
        app.children(matching: .window).element(boundBy: 0).children(matching: .other).element(boundBy: 1).tap()
    }
}


================================================
FILE: Example/ExampleAppUITests/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>BNDL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
</dict>
</plist>


================================================
FILE: Gemfile
================================================
source 'https://rubygems.org'

gem 'cocoapods', '~> 1.11'

# ------------
# Danger Setup
# ------------
gem 'danger'

# github
gem 'danger-auto_label'

# general
gem 'danger-todoist'
gem 'danger-prose'

# xcode, ios, macos
gem 'danger-swiftlint'

gem 'danger-jazzy'
gem 'jazzy'

gem 'danger-duplicate_localizable_strings'
gem 'danger-missed_localizable_strings'

# fixes for github security vulnerability warnings
gem "rubyzip", ">= 1.3.0"
gem "excon", ">= 0.71.0"


================================================
FILE: Guides/Getting Started.md
================================================
# Getting Started

This guide provides a brief overview for how to get started using `PresenterKit`.

```swift
import PresenterKit
```

- Watch [the talk](https://realm.io/news/slug-jesse-squires-swifty-view-controller-presenters/)
- Read the [blog post](http://www.jessesquires.com/swifty-presenters/)
- Run the [example project](https://github.com/jessesquires/PresenterKit/tree/develop/Example)

## Presenting a view controller modally

```swift
let vc = MyViewController()
presentController(vc, type: .modal(.withNavigation, .formSheet, .coverVertical))
```

## Pushing a view controller

```swift
let vc = MyViewController()
presentController(vc, type: .push)
```

## Presenting as a popover

```swift
let vc = MyViewController()
let config = PopoverConfig(source: .barButtonItem(item), delegate: self)
presentController(vc, type: .popover(config))
```

## Dismissing a view controller

```swift
dismissController()
```


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2016-present Jesse Squires

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: Package.swift
================================================
// swift-tools-version:5.3
// The swift-tools-version declares the minimum version
// of Swift required to build this package.
// ----------------------------------------------------
//
//  Created by Jesse Squires
//  https://www.jessesquires.com
//
//  Documentation
//  https://jessesquires.github.io/PresenterKit
//
//  GitHub
//  https://github.com/jessesquires/PresenterKit
//
//  Copyright © 2020-present Jesse Squires
//

import PackageDescription

let package = Package(
    name: "PresenterKit",
    platforms: [
        .iOS(.v11)
    ],
    products: [
        .library(
            name: "PresenterKit",
            targets: ["PresenterKit"])
    ],
    targets: [
        .target(
            name: "PresenterKit",
            path: "Sources",
            exclude: ["Info.plist"]),
        .testTarget(name: "PresenterKitTests",
                    dependencies: ["PresenterKit"],
                    path: "Tests",
                    exclude: ["Info.plist"])
    ],
    swiftLanguageVersions: [.v5]
)


================================================
FILE: PresenterKit.podspec
================================================
Pod::Spec.new do |s|
   s.name = 'PresenterKit'
   s.version = '6.1.3'
   s.license = 'MIT'

   s.summary = 'Custom presenters and better view controller presentation for iOS'
   s.homepage = 'https://github.com/jessesquires/PresenterKit'
   s.documentation_url = 'https://jessesquires.github.io/PresenterKit'
   s.social_media_url = 'https://twitter.com/jesse_squires'
   s.author = 'Jesse Squires'

   s.source = { :git => 'https://github.com/jessesquires/PresenterKit.git', :tag => s.version }
   s.source_files = 'Sources/*.swift'

   s.swift_version = '5.3'
   s.ios.deployment_target = '11.0'

   s.requires_arc = true

   s.deprecated = true
end


================================================
FILE: PresenterKit.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		13C26AD71DFD2C99004CC79D /* UINavigationController+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C26AD61DFD2C99004CC79D /* UINavigationController+Extensions.swift */; };
		8876470E1C56FB2D002048E2 /* DismissButtonConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8876470D1C56FB2D002048E2 /* DismissButtonConfig.swift */; };
		887647181C59E423002048E2 /* UIViewController+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887647171C59E423002048E2 /* UIViewController+Extensions.swift */; };
		8889115B244B89CC00CB3137 /* HalfModalPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8889115A244B89CB00CB3137 /* HalfModalPresentationController.swift */; };
		889CC4181C4345BD00CD2DBD /* PresentationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889CC4171C4345BD00CD2DBD /* PresentationType.swift */; };
		88B1CF621C3F762800D1348C /* PresenterKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88B1CF571C3F762700D1348C /* PresenterKit.framework */; };
		88B1CF7B1C3F767000D1348C /* PresenterKitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88B1CF761C3F766C00D1348C /* PresenterKitTests.swift */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		88B1CF631C3F762800D1348C /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 88B1CF4E1C3F762700D1348C /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 88B1CF561C3F762700D1348C;
			remoteInfo = PresenterKit;
		};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
		13C26AD61DFD2C99004CC79D /* UINavigationController+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UINavigationController+Extensions.swift"; sourceTree = "<group>"; };
		8876470D1C56FB2D002048E2 /* DismissButtonConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DismissButtonConfig.swift; sourceTree = "<group>"; };
		887647171C59E423002048E2 /* UIViewController+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+Extensions.swift"; sourceTree = "<group>"; };
		8889115A244B89CB00CB3137 /* HalfModalPresentationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HalfModalPresentationController.swift; sourceTree = "<group>"; };
		889CC4171C4345BD00CD2DBD /* PresentationType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationType.swift; sourceTree = "<group>"; };
		88B1CF571C3F762700D1348C /* PresenterKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PresenterKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		88B1CF611C3F762800D1348C /* PresenterKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PresenterKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
		88B1CF721C3F766C00D1348C /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		88B1CF751C3F766C00D1348C /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		88B1CF761C3F766C00D1348C /* PresenterKitTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresenterKitTests.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		88B1CF531C3F762700D1348C /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		88B1CF5E1C3F762800D1348C /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				88B1CF621C3F762800D1348C /* PresenterKit.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		88B1CF4D1C3F762700D1348C = {
			isa = PBXGroup;
			children = (
				88B1CF711C3F766C00D1348C /* Sources */,
				88B1CF741C3F766C00D1348C /* Tests */,
				88B1CF581C3F762700D1348C /* Products */,
			);
			sourceTree = "<group>";
		};
		88B1CF581C3F762700D1348C /* Products */ = {
			isa = PBXGroup;
			children = (
				88B1CF571C3F762700D1348C /* PresenterKit.framework */,
				88B1CF611C3F762800D1348C /* PresenterKitTests.xctest */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		88B1CF711C3F766C00D1348C /* Sources */ = {
			isa = PBXGroup;
			children = (
				8876470D1C56FB2D002048E2 /* DismissButtonConfig.swift */,
				8889115A244B89CB00CB3137 /* HalfModalPresentationController.swift */,
				88B1CF721C3F766C00D1348C /* Info.plist */,
				889CC4171C4345BD00CD2DBD /* PresentationType.swift */,
				13C26AD61DFD2C99004CC79D /* UINavigationController+Extensions.swift */,
				887647171C59E423002048E2 /* UIViewController+Extensions.swift */,
			);
			path = Sources;
			sourceTree = "<group>";
		};
		88B1CF741C3F766C00D1348C /* Tests */ = {
			isa = PBXGroup;
			children = (
				88B1CF751C3F766C00D1348C /* Info.plist */,
				88B1CF761C3F766C00D1348C /* PresenterKitTests.swift */,
			);
			path = Tests;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXHeadersBuildPhase section */
		88B1CF541C3F762700D1348C /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXHeadersBuildPhase section */

/* Begin PBXNativeTarget section */
		88B1CF561C3F762700D1348C /* PresenterKit */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 88B1CF6B1C3F762800D1348C /* Build configuration list for PBXNativeTarget "PresenterKit" */;
			buildPhases = (
				88B1CF521C3F762700D1348C /* Sources */,
				88B1CF531C3F762700D1348C /* Frameworks */,
				88B1CF541C3F762700D1348C /* Headers */,
				88B1CF551C3F762700D1348C /* Resources */,
				8822155B20051A240008AA5C /* SwiftLint */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = PresenterKit;
			productName = PresenterKit;
			productReference = 88B1CF571C3F762700D1348C /* PresenterKit.framework */;
			productType = "com.apple.product-type.framework";
		};
		88B1CF601C3F762800D1348C /* PresenterKitTests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 88B1CF6E1C3F762800D1348C /* Build configuration list for PBXNativeTarget "PresenterKitTests" */;
			buildPhases = (
				88B1CF5D1C3F762800D1348C /* Sources */,
				88B1CF5E1C3F762800D1348C /* Frameworks */,
				88B1CF5F1C3F762800D1348C /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
				88B1CF641C3F762800D1348C /* PBXTargetDependency */,
			);
			name = PresenterKitTests;
			productName = PresenterKitTests;
			productReference = 88B1CF611C3F762800D1348C /* PresenterKitTests.xctest */;
			productType = "com.apple.product-type.bundle.unit-test";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		88B1CF4E1C3F762700D1348C /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastSwiftUpdateCheck = 0720;
				LastUpgradeCheck = 1200;
				ORGANIZATIONNAME = "Hexed Bits";
				TargetAttributes = {
					88B1CF561C3F762700D1348C = {
						CreatedOnToolsVersion = 7.2;
						DevelopmentTeam = 5VRJU68BZ5;
						DevelopmentTeamName = "Jesse Squires";
						LastSwiftMigration = 0900;
					};
					88B1CF601C3F762800D1348C = {
						CreatedOnToolsVersion = 7.2;
						DevelopmentTeamName = "Jesse Squires";
						LastSwiftMigration = 0900;
						ProvisioningStyle = Manual;
					};
				};
			};
			buildConfigurationList = 88B1CF511C3F762700D1348C /* Build configuration list for PBXProject "PresenterKit" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 88B1CF4D1C3F762700D1348C;
			productRefGroup = 88B1CF581C3F762700D1348C /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				88B1CF561C3F762700D1348C /* PresenterKit */,
				88B1CF601C3F762800D1348C /* PresenterKitTests */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		88B1CF551C3F762700D1348C /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		88B1CF5F1C3F762800D1348C /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
		8822155B20051A240008AA5C /* SwiftLint */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			name = SwiftLint;
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/zsh;
			shellScript = "\"${SRCROOT}/scripts/lint.zsh\"\n";
		};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		88B1CF521C3F762700D1348C /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				8876470E1C56FB2D002048E2 /* DismissButtonConfig.swift in Sources */,
				887647181C59E423002048E2 /* UIViewController+Extensions.swift in Sources */,
				8889115B244B89CC00CB3137 /* HalfModalPresentationController.swift in Sources */,
				889CC4181C4345BD00CD2DBD /* PresentationType.swift in Sources */,
				13C26AD71DFD2C99004CC79D /* UINavigationController+Extensions.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		88B1CF5D1C3F762800D1348C /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				88B1CF7B1C3F767000D1348C /* PresenterKitTests.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		88B1CF641C3F762800D1348C /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 88B1CF561C3F762700D1348C /* PresenterKit */;
			targetProxy = 88B1CF631C3F762800D1348C /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin XCBuildConfiguration section */
		88B1CF691C3F762800D1348C /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				CURRENT_PROJECT_VERSION = 1;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2";
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Debug;
		};
		88B1CF6A1C3F762800D1348C /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				CURRENT_PROJECT_VERSION = 1;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
				MTL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = iphoneos;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2";
				VALIDATE_PRODUCT = YES;
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Release;
		};
		88B1CF6C1C3F762800D1348C /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INFOPLIST_FILE = Sources/Info.plist;
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				MARKETING_VERSION = 6.1.1;
				PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.PresenterKit;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SKIP_INSTALL = YES;
				SUPPORTS_MACCATALYST = NO;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
			};
			name = Debug;
		};
		88B1CF6D1C3F762800D1348C /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INFOPLIST_FILE = Sources/Info.plist;
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				MARKETING_VERSION = 6.1.1;
				PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.PresenterKit;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SKIP_INSTALL = YES;
				SUPPORTS_MACCATALYST = NO;
				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
			};
			name = Release;
		};
		88B1CF6F1C3F762800D1348C /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CODE_SIGN_STYLE = Manual;
				DEVELOPMENT_TEAM = "";
				INFOPLIST_FILE = Tests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.PresenterKitTests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				PROVISIONING_PROFILE_SPECIFIER = "";
			};
			name = Debug;
		};
		88B1CF701C3F762800D1348C /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CODE_SIGN_STYLE = Manual;
				DEVELOPMENT_TEAM = "";
				INFOPLIST_FILE = Tests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = com.hexedbits.PresenterKitTests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				PROVISIONING_PROFILE_SPECIFIER = "";
				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		88B1CF511C3F762700D1348C /* Build configuration list for PBXProject "PresenterKit" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				88B1CF691C3F762800D1348C /* Debug */,
				88B1CF6A1C3F762800D1348C /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		88B1CF6B1C3F762800D1348C /* Build configuration list for PBXNativeTarget "PresenterKit" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				88B1CF6C1C3F762800D1348C /* Debug */,
				88B1CF6D1C3F762800D1348C /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		88B1CF6E1C3F762800D1348C /* Build configuration list for PBXNativeTarget "PresenterKitTests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				88B1CF6F1C3F762800D1348C /* Debug */,
				88B1CF701C3F762800D1348C /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 88B1CF4E1C3F762700D1348C /* Project object */;
}


================================================
FILE: PresenterKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:PresenterKit.xcodeproj">
   </FileRef>
</Workspace>


================================================
FILE: PresenterKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


================================================
FILE: PresenterKit.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
	<true/>
</dict>
</plist>


================================================
FILE: PresenterKit.xcodeproj/xcshareddata/IDETemplateMacros.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>FILEHEADER</key>
	<string>
//  Created by Jesse Squires
//  https://www.jessesquires.com
//
//
//  Documentation
//  https://jessesquires.github.io/PresenterKit
//
//
//  GitHub
//  https://github.com/jessesquires/PresenterKit
//
//
//  License
//  Copyright © 2016-present Jesse Squires
//  Released under an MIT license: https://opensource.org/licenses/MIT
//</string>
</dict>
</plist>


================================================
FILE: PresenterKit.xcodeproj/xcshareddata/xcschemes/PresenterKit.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1200"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "88B1CF561C3F762700D1348C"
               BuildableName = "PresenterKit.framework"
               BlueprintName = "PresenterKit"
               ReferencedContainer = "container:PresenterKit.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES"
      codeCoverageEnabled = "YES"
      onlyGenerateCoverageForSpecifiedTargets = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "88B1CF561C3F762700D1348C"
            BuildableName = "PresenterKit.framework"
            BlueprintName = "PresenterKit"
            ReferencedContainer = "container:PresenterKit.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <CodeCoverageTargets>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "88B1CF561C3F762700D1348C"
            BuildableName = "PresenterKit.framework"
            BlueprintName = "PresenterKit"
            ReferencedContainer = "container:PresenterKit.xcodeproj">
         </BuildableReference>
      </CodeCoverageTargets>
      <Testables>
         <TestableReference
            skipped = "NO"
            parallelizable = "YES"
            testExecutionOrdering = "random">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "88B1CF601C3F762800D1348C"
               BuildableName = "PresenterKitTests.xctest"
               BlueprintName = "PresenterKitTests"
               ReferencedContainer = "container:PresenterKit.xcodeproj">
            </BuildableReference>
         </TestableReference>
      </Testables>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "88B1CF561C3F762700D1348C"
            BuildableName = "PresenterKit.framework"
            BlueprintName = "PresenterKit"
            ReferencedContainer = "container:PresenterKit.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "88B1CF561C3F762700D1348C"
            BuildableName = "PresenterKit.framework"
            BlueprintName = "PresenterKit"
            ReferencedContainer = "container:PresenterKit.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: README.md
================================================
# PresenterKit [![Actions Status](https://github.com/jessesquires/PresenterKit/workflows/CI/badge.svg)](https://github.com/jessesquires/PresenterKit/actions)

*Custom presenters and better view controller presentation for iOS*

## Requirements

* Xcode 12.0+
* Swift 5.3+
* iOS 11.0+
* [SwiftLint](https://github.com/realm/SwiftLint)

## Installation

#### [CocoaPods](https://cocoapods.org)

````ruby
pod 'PresenterKit', '~> 6.1.0'

# develop branch
pod 'PresenterKit', :git => 'https://github.com/jessesquires/PresenterKit.git', :branch => 'develop'
````

### [Swift Package Manager](https://swift.org/package-manager/)

Add `PresenterKit` to the `dependencies` value of your `Package.swift`.

```swift
dependencies: [
    .package(url: "https://github.com/jessesquires/PresenterKit.git", from: "6.1.0")
]
```

Alternatively, you can add the package [directly via Xcode](https://developer.apple.com/documentation/xcode/adding_package_dependencies_to_your_app).

## Documentation

You can read the [documentation here](https://jessesquires.github.io/PresenterKit). Generated with [jazzy](https://github.com/realm/jazzy). Hosted by [GitHub Pages](https://pages.github.com).

## Contributing

Interested in making contributions to this project? Please review the guides below.

- [Contributing Guidelines](https://github.com/jessesquires/.github/blob/master/CONTRIBUTING.md)
- [Code of Conduct](https://github.com/jessesquires/.github/blob/master/CODE_OF_CONDUCT.md)
- [Support and Help](https://github.com/jessesquires/.github/blob/master/SUPPORT.md)
- [Security Policy](https://github.com/jessesquires/.github/blob/master/SECURITY.md)

Also, consider [sponsoring this project](https://www.jessesquires.com/sponsor/) or [buying my apps](https://www.hexedbits.com)! ✌️

## Credits

Created and maintained by [**@jesse_squires**](https://twitter.com/jesse_squires).

## License

Released under the MIT License. See `LICENSE` for details.

> **Copyright &copy; 2016-present Jesse Squires.**


================================================
FILE: Sources/DismissButtonConfig.swift
================================================
//
//  Created by Jesse Squires
//  https://www.jessesquires.com
//
//
//  Documentation
//  https://jessesquires.github.io/PresenterKit
//
//
//  GitHub
//  https://github.com/jessesquires/PresenterKit
//
//
//  License
//  Copyright © 2016-present Jesse Squires
//  Released under an MIT license: https://opensource.org/licenses/MIT
//

import UIKit

/**
 A configuration for `UIBarButtonItem`.
 Use this configuration to create dismissal/cancel buttons for modally presented view controllers.
 */
public struct DismissButtonConfig {

    /// Specifies a bar button's location in a navigation bar.
    public enum Location {
        /// The left side of the navigation bar.
        case left

        /// The right side of the navigation bar.
        case right
    }

    /// Specifies a bar button's item style.
    public enum Style {
        /// Use bold text, `.Done` style.
        case bold

        /// Use regular text, `.Plain` style.
        case plain
    }

    /// Specifies the content (title or image) for the bar button.
    public enum Content {
        /// Specifies a `UIBarButtonSystemItem`.
        case systemItem(UIBarButtonItem.SystemItem)

        /// Specifies custom text for the bar button.
        case text(String)

        /// Specifies a custom image for the bar button.
        case image(UIImage)
    }

    /// The location for the bar button.
    /// The default is `.left`.
    public let location: Location

    /// The style for the bar button.
    ///  The default is `.plain`.
    public let style: Style

    /// The content for the bar button.
    ///  The default is `.plain`.
    public let content: Content

    /**
     Initializes a new configuration instance.

     - parameter location: The location for the bar button. The default is `.left`.
     - parameter style:    The style for the bar button. The default is `.plain`.
     - parameter content:  The content for the bar button. The default is `.systemItem(.cancel)`.

     - returns: A new configuration instance.
     */
    public init(location: Location = .left, style: Style = .plain, content: Content = .systemItem(.cancel)) {
        self.location = location
        self.style = style
        self.content = content
    }
}

extension UIBarButtonItem {
    /**
     Initializes a new bar button item using the specified configuration.

     - parameter config: The configuration for the item.
     - parameter target: The object that receives the action message.
     - parameter action: The action to send to target when this item is selected.

     - returns: A new bar button item instance.
     */
    public convenience init(config: DismissButtonConfig, target: AnyObject?, action: Selector) {
        switch config.content {
        case .text(let title):
            self.init(title: title, style: config.style.itemStyle, target: target, action: action)

        case .image(let image):
            self.init(image: image, style: config.style.itemStyle, target: target, action: action)

        case .systemItem(let systemItem):
            self.init(barButtonSystemItem: systemItem, target: target, action: action)
        }
        self.style = config.style.itemStyle
    }
}

extension DismissButtonConfig.Style {
    var itemStyle: UIBarButtonItem.Style {
        switch self {
        case .bold:
            return .done

        case .plain:
            return .plain
        }
    }
}

extension DismissButtonConfig.Content {
    var systemItem: UIBarButtonItem.SystemItem? {
        switch self {
        case .systemItem(let item):
            return item

        default:
            return nil
        }
    }

    var image: UIImage? {
        switch self {
        case .image(let image):
            return image

        default:
            return nil
        }
    }

    var title: String? {
        switch self {
        case .text(let str):
            return str

        default:
            return nil
        }
    }
}


================================================
FILE: Sources/HalfModalPresentationController.swift
================================================
//
//  Created by Jesse Squires
//  https://www.jessesquires.com
//
//
//  Documentation
//  https://jessesquires.github.io/PresenterKit
//
//
//  GitHub
//  https://github.com/jessesquires/PresenterKit
//
//
//  License
//  Copyright © 2016-present Jesse Squires
//  Released under an MIT license: https://opensource.org/licenses/MIT
//

// swiftlint:disable type_contents_order

import UIKit

/// A modal presentation controller that presents the presented view controller modally,
/// covering the bottom half of the presenting view controller. This presentation controller
/// displays a transparent dimmed, tappable view over the top half of the presenting view controller.
public final class HalfModalPresentationController: UIPresentationController {

    private lazy var dimmingView: UIView = {
        let view = UIView()
        view.backgroundColor = UIColor.black.withAlphaComponent(0.5)
        view.alpha = 0.0
        let tap = UITapGestureRecognizer(target: self, action: #selector(Self.dimmingViewTapped(_:)))
        view.addGestureRecognizer(tap)
        return view
    }()

    /// :nodoc:
    override public init(presentedViewController: UIViewController,
                         presenting presentingViewController: UIViewController?) {
        super.init(presentedViewController: presentedViewController,
                   presenting: presentingViewController)
    }

    /// :nodoc:
    override public func presentationTransitionWillBegin() {
        self.dimmingView.frame = containerView!.bounds
        self.dimmingView.alpha = 0.0
        self.containerView?.insertSubview(self.dimmingView, at: 0)

        let animations = {
            self.dimmingView.alpha = 1.0
        }

        if let transitionCoordinator = self.presentingViewController.transitionCoordinator {

            transitionCoordinator.animate(alongsideTransition: { _ in
                animations()
            }, completion: nil)
        } else {
            animations()
        }
    }

    /// :nodoc:
    override public func dismissalTransitionWillBegin() {
        let animations = {
            self.dimmingView.alpha = 0.0
        }

        if let transitionCoordinator = presentingViewController.transitionCoordinator {
            transitionCoordinator.animate(alongsideTransition: { _ in
                animations()
            }, completion: nil)
        } else {
            animations()
        }
    }

    /// :nodoc:
    override public var adaptivePresentationStyle: UIModalPresentationStyle {
        .none
    }

    /// :nodoc:
    override public var shouldPresentInFullscreen: Bool {
        true
    }

    /// :nodoc:
    override public func size(
        forChildContentContainer container: UIContentContainer,
        withParentContainerSize parentSize: CGSize) -> CGSize {
        CGSize(width: parentSize.width,
               height: round(parentSize.height / 2.0))
    }

    /// :nodoc:
    override public func containerViewWillLayoutSubviews() {
        self.dimmingView.frame = self.containerView!.bounds
        self.presentedView?.frame = self.frameOfPresentedViewInContainerView
    }

    /// :nodoc:
    override public var frameOfPresentedViewInContainerView: CGRect {
        let size = self.size(forChildContentContainer: presentedViewController,
                             withParentContainerSize: containerView!.bounds.size)
        let origin = CGPoint(x: 0.0, y: self.containerView!.frame.maxY / 2)
        return CGRect(origin: origin, size: size)
    }

    // MARK: Private

    @objc
    private func dimmingViewTapped(_ tap: UITapGestureRecognizer) {
        self.presentingViewController.dismiss(animated: true, completion: nil)
    }
}

// swiftlint:enable type_contents_order


================================================
FILE: Sources/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>$(MARKETING_VERSION)</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>
	<key>NSPrincipalClass</key>
	<string></string>
</dict>
</plist>


================================================
FILE: Sources/PresentationType.swift
================================================
//
//  Created by Jesse Squires
//  https://www.jessesquires.com
//
//
//  Documentation
//  https://jessesquires.github.io/PresenterKit
//
//
//  GitHub
//  https://github.com/jessesquires/PresenterKit
//
//
//  License
//  Copyright © 2016-present Jesse Squires
//  Released under an MIT license: https://opensource.org/licenses/MIT
//

import UIKit

/**
 Specifies the navigation style for a view controller.
 */
public enum NavigationStyle {
    /// Do not embed a view controller in a `UINavigationController`.
    case none

    /// Embed view controller in a `UINavigationController`.
    case withNavigation
}

/**
 A configuration for `UIPopoverPresentationController`.
 */
public struct PopoverConfig {

    /**
     Describes the source view from which the popover is showing.
     */
    public enum Source {
        /// Specifies that the popover should display from a `UIBarButtonItem` instance.
        case barButtonItem(UIBarButtonItem)

        /// Specifies that the popover should display from a `UIView` instance and be anchored on the specific `frame`. 
        /// If the `frame` is `nil` then the provided view's frame will be used as the anchor frame.
        case view(container: UIView, frame: CGRect?)
    }

    /// The source view for the popover.
    let source: Source

    /// The arrow direction of the popover.
    /// The default is `.any`.
    let arrowDirection: UIPopoverArrowDirection

    /// The delegate object for the popover presentation controller, or `nil`.
    /// The default is `nil`.
    let delegate: UIPopoverPresentationControllerDelegate?

    /**
     Initializes and returns a new `PopoverConfig` object.

     - parameter source:         The source for the popoever.
     - parameter arrowDirection: The arrow direction for the popover. The default is `.any`.
     - parameter delegate:       The delegate for the popover. The default is `nil`.

     - returns: A new `PopoverConfig` object.
     */
    public init(source: Source,
                arrowDirection: UIPopoverArrowDirection = .any,
                delegate: UIPopoverPresentationControllerDelegate? = nil) {
        self.source = source
        self.arrowDirection = arrowDirection
        self.delegate = delegate
    }
}

/**
 Describes the type of presentation for a view controller.
 */
public enum PresentationType {
    /// A modal presentation type with the specified navigation, presentation, and transition styles.
    case modal(NavigationStyle, UIModalPresentationStyle, UIModalTransitionStyle)

    /// A popover presentation type with the specified configuration.
    case popover(PopoverConfig)

    /// A push presentation type.
    case push

    /// A "show" presentation type. This is an adaptive presentation that usually corresponds to `.Push`.
    case show

    /// A "show detail" presentation type. This is an adaptive presentation that usually corresponds to `.Modal`.
    case showDetail(NavigationStyle)

    /// A custom presentation style that uses the specified delegate.
    case custom(UIViewControllerTransitioningDelegate)

    /// No presentation type specified, use UIKit defaults. Use this when presenting system controllers, like `UIAlertController`.
    case none
}


================================================
FILE: Sources/UINavigationController+Extensions.swift
================================================
//
//  Created by Jesse Squires
//  https://www.jessesquires.com
//
//
//  Documentation
//  https://jessesquires.github.io/PresenterKit
//
//
//  GitHub
//  https://github.com/jessesquires/PresenterKit
//
//
//  License
//  Copyright © 2016-present Jesse Squires
//  Released under an MIT license: https://opensource.org/licenses/MIT
//

import UIKit

extension UINavigationController {

    /**
     Pushes the given view controller and calls the given closure upon completion.
     
     - parameter viewController: The view controller to push onto the stack.
     - parameter animated: Specify `true` to animate the transition or `false`
     if you do not want the transition to be animated.
     - parameter completion: The closure to be called upon completion.
     */
    public func push(_ viewController: UIViewController,
                     animated: Bool = true,
                     completion: (() -> Void)? = nil) {
        self.pushViewController(viewController, animated: animated)
        self._handle(animated: animated, completion: completion)
    }

    /**
     Pops the top view controller and calls the given closure upon completion.

     - parameter animated: Specify `true` to animate the transition or `false`
     if you do not want the transition to be animated.
     - parameter completion: The closure to be called upon completion.
     */
    public func pop(animated: Bool = true,
                    completion: (() -> Void)? = nil) {
        self.popViewController(animated: animated)
        self._handle(animated: animated, completion: completion)
    }

    private func _handle(animated: Bool, completion: (() -> Void)?) {
        guard let completion = completion else {
            return
        }

        guard animated, let coordinator = self.transitionCoordinator else {
            completion()
            return
        }

        coordinator.animate(alongsideTransition: nil) { context in
            guard !context.isCancelled else { return }
            completion()
        }
    }
}


================================================
FILE: Sources/UIViewController+Extensions.swift
================================================
//
//  Created by Jesse Squires
//  https://www.jessesquires.com
//
//
//  Documentation
//  https://jessesquires.github.io/PresenterKit
//
//
//  GitHub
//  https://github.com/jessesquires/PresenterKit
//
//
//  License
//  Copyright © 2016-present Jesse Squires
//  Released under an MIT license: https://opensource.org/licenses/MIT
//

import UIKit

// MARK: - Styles
extension UIViewController {

    /**
     Wraps the receiving view controller in a navigation controller.
     The receiver is set as the `rootViewController` of the navigation controller.

     - returns: The navigation controller that contains the receiver as the `rootViewController`.
     */
    @discardableResult
    public func withNavigation() -> UINavigationController {
        UINavigationController(rootViewController: self)
    }

    /**
     Applies the specified modal presentation style to the view controller.

     - parameter presentation: A modal presentation style.

     - returns: The view controller after applying the style.
     */
    @discardableResult
    public func withPresentation(_ presentation: UIModalPresentationStyle) -> Self {
        self.modalPresentationStyle = presentation
        return self
    }

    /**
     Applies the specified modal transition style to the view controller.

     - parameter transition: A modal transition style.

     - returns: The view controller after applying the style.
     */
    @discardableResult
    public func withTransition(_ transition: UIModalTransitionStyle) -> Self {
        self.modalTransitionStyle = transition
        return self
    }

    /**
     Applies the specified navigation style to the view controller.

     - parameter navigationStyle: A navigation style.

     - returns: The view controller after applying the style.

     - note: If `navigationStyle` is `.withNavigation`, then calling this method is equivalent to calling `withNavigation()`.
     If `navigationStyle` is `.none`, then calling this method does nothing.
     */
    @discardableResult
    public func withNavigationStyle(_ navigationStyle: NavigationStyle) -> UIViewController {
        switch navigationStyle {
        case .none:
            return self

        case .withNavigation:
            return self.withNavigation()
        }
    }

    /**
     Applies the specified navigation style to the view controller.

     - parameter navigation:   A navigation style.
     - parameter presentation: A modal presentation style.
     - parameter transition:   A modal transition style.

     - returns: The view controller after applying the style.
     */
    @discardableResult
    public func withStyles(navigation: NavigationStyle,
                           presentation: UIModalPresentationStyle,
                           transition: UIModalTransitionStyle) -> UIViewController {
        // apple styles to self, then to navigation controller
        self.withPresentation(presentation).withTransition(transition)
        return self.withNavigationStyle(navigation).withPresentation(presentation).withTransition(transition)
    }
}

// MARK: - Presentation
extension UIViewController {

    /**
     Presents a view controller using the specified presentation type.

     - parameter viewController: The view controller to display over the current view controller.
     - parameter type:           The presentation type to use.
     - parameter animated:       Pass `true` to animate the presentation, `false` otherwise.
     - parameter completion:     The closure to be called.

     - warning: The `completion` parameter is ignored for `show` and `showDetail` presentation types.
     */
    public func presentController(_ controller: UIViewController,
                                  type: PresentationType,
                                  animated: Bool = true,
                                  completion: (() -> Void)? = nil) {
        switch type {
        case .modal(let n, let p, let t):
            let vc = controller.withStyles(navigation: n, presentation: p, transition: t)
            self.present(vc, animated: animated, completion: completion)

        case .popover(let c):
            controller.withStyles(navigation: .none, presentation: .popover, transition: .crossDissolve)

            let popoverController = controller.popoverPresentationController
            popoverController?.delegate = c.delegate
            popoverController?.permittedArrowDirections = c.arrowDirection
            switch c.source {
            case .barButtonItem(let item):
                popoverController?.barButtonItem = item

            case .view(let container, let frame):
                popoverController?.sourceView = container
                popoverController?.sourceRect = frame ?? container.bounds
            }
            self.present(controller, animated: animated, completion: completion)

        case .push:
            if let nav = self as? UINavigationController {
                nav.push(controller, animated: animated, completion: completion)
            } else {
                self.navigationController!.push(controller, animated: animated, completion: completion)
            }

        case .show:
            assert(completion == nil, "Completion closure parameter is ignored for `.show`")
            self.show(controller, sender: self)

        case .showDetail(let navigation):
            assert(completion == nil, "Completion closure parameter is ignored for `.showDetail`")
            self.showDetailViewController(controller.withNavigationStyle(navigation), sender: self)

        case .custom(let delegate):
            controller.modalPresentationStyle = .custom
            controller.transitioningDelegate = delegate
            self.present(controller, animated: animated, completion: completion)

        case .none:
            self.present(controller, animated: animated, completion: completion)
        }
    }
}

// MARK: - Dismissal
extension UIViewController {

    private var needsDismissButton: Bool {
        self.isModallyPresented
    }

    private var isModallyPresented: Bool {
        (self.hasPresentingController && !self.hasNavigationController)
            || (self.hasPresentingController && self.hasNavigationController && self.isNavigationRootViewController)
    }

    private var hasPresentingController: Bool {
        self.presentingViewController != nil
    }

    private var hasNavigationController: Bool {
        self.navigationController != nil
    }

    private var isNavigationRootViewController: Bool {
        self.navigationController?.viewControllers.first == self
    }

    /**
     Dismisses the receiving view controller.

     - parameter animated: Pass `true` to animate the presentation, `false` otherwise.
     - parameter completion: The closure to be called upon completion.
     */
    public func dismissController(animated: Bool = true, completion: (() -> Void)? = nil) {
        if self.isModallyPresented {
            assert(presentingViewController != nil)
            self.presentingViewController?.dismiss(animated: animated, completion: completion)
        } else {
            assert(navigationController != nil)
            _ = self.navigationController?.pop(animated: animated, completion: completion)
        }
    }

    /**
     Adds a dismiss button having the provided configuration, if needed.

     - parameter config: The configuration to apply to the dismiss button.

     - note: This method does nothing if the view controller is not presented modally.
     */
    public func addDismissButtonIfNeeded(config: DismissButtonConfig = DismissButtonConfig()) {
        guard self.needsDismissButton else { return }
        self.addDismissButton(config: config)
    }

    /**
     Adds a dismiss button having the provided configuration.

     - parameter config: The configuration to apply to the dismiss button.

     - note: The view controller must have a non-nil `navigationItem`.
     */
    public func addDismissButton(config: DismissButtonConfig = DismissButtonConfig()) {
        let button = UIBarButtonItem(config: config,
                                     target: self,
                                     action: #selector(Self._didTapDismissButton(_:)))

        switch config.location {
        case .left:
            self.navigationItem.leftBarButtonItem = button

        case .right:
            self.navigationItem.rightBarButtonItem = button
        }
    }

    @objc
    private func _didTapDismissButton(_ sender: UIBarButtonItem) {
        self.dismissController()
    }
}


================================================
FILE: Tests/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>BNDL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
</dict>
</plist>


================================================
FILE: Tests/PresenterKitTests.swift
================================================
//
//  Created by Jesse Squires
//  https://www.jessesquires.com
//
//
//  Documentation
//  https://jessesquires.github.io/PresenterKit
//
//
//  GitHub
//  https://github.com/jessesquires/PresenterKit
//
//
//  License
//  Copyright © 2016-Present Jesse Squires
//  Released under an MIT license: https://opensource.org/licenses/MIT
//

@testable import PresenterKit
import UIKit
import XCTest

final class PresenterKitTests: XCTestCase {

    func test_thatBarButtonItem_initializesWith_dismissConfig_default() {
        let config = DismissButtonConfig()
        XCTAssertEqual(config.location, DismissButtonConfig.Location.left)
        XCTAssertEqual(config.style.itemStyle, UIBarButtonItem.Style.plain)
        XCTAssertEqual(config.content.systemItem, UIBarButtonItem.SystemItem.cancel)
        XCTAssertNil(config.content.title)

        let action = #selector(tapAction(sender:))
        let item = UIBarButtonItem(config: config, target: self, action: action)

        XCTAssertEqual(item.style, config.style.itemStyle)
        XCTAssertTrue(item.target === self)
        XCTAssertEqual(item.action, action)
    }

    func test_thatBarButtonItem_initializesWith_dismissConfig_leftBoldCancel() {
        let config = DismissButtonConfig(location: .left, style: .bold, content: .systemItem(.done))
        XCTAssertEqual(config.location, DismissButtonConfig.Location.left)
        XCTAssertEqual(config.style.itemStyle, UIBarButtonItem.Style.done)
        XCTAssertEqual(config.content.systemItem, UIBarButtonItem.SystemItem.done)
        XCTAssertNil(config.content.title)

        let action = #selector(tapAction(sender:))
        let item = UIBarButtonItem(config: config, target: self, action: action)

        XCTAssertEqual(item.style, config.style.itemStyle)
        XCTAssertTrue(item.target === self)
        XCTAssertEqual(item.action, action)
    }

    func test_thatBarButtonItem_initializesWith_dismissConfig_rightPlainCustomText() {
        let config = DismissButtonConfig(location: .right, style: .plain, content: .text("title"))
        XCTAssertEqual(config.location, DismissButtonConfig.Location.right)
        XCTAssertEqual(config.style.itemStyle, UIBarButtonItem.Style.plain)
        XCTAssertEqual(config.content.title, "title")
        XCTAssertNil(config.content.systemItem)

        let action = #selector(tapAction(sender:))
        let item = UIBarButtonItem(config: config, target: self, action: action)

        XCTAssertEqual(item.style, config.style.itemStyle)
        XCTAssertTrue(item.target === self)
        XCTAssertEqual(item.action, action)
    }

    func test_thatBarButtonItem_initializesWith_dismissConfig_leftImage() {
        let image = UIImage()
        let config = DismissButtonConfig(location: .left, style: .plain, content: .image(image))
        XCTAssertEqual(config.location, DismissButtonConfig.Location.left)
        XCTAssertEqual(config.style.itemStyle, UIBarButtonItem.Style.plain)
        XCTAssertEqual(config.content.image, image)
        XCTAssertNil(config.content.systemItem)

        let action = #selector(tapAction(sender:))
        let item = UIBarButtonItem(config: config, target: self, action: action)
        XCTAssertEqual(item.style, config.style.itemStyle)
        XCTAssertTrue(item.target === self)
        XCTAssertEqual(item.action, action)
    }

    func test_thatViewController_appliesStyle_withNavigation() {
        let controller = UIViewController()
        let nav = controller.withNavigationStyle(.withNavigation) as! UINavigationController
        XCTAssertEqual(controller, nav.topViewController)
    }

    func test_thatViewController_appliesStyle_withNavigation_none() {
        let controller = UIViewController()
        let other = controller.withNavigationStyle(.none)
        XCTAssertEqual(controller, other)
    }

    func test_thatViewController_appliesStyle_withPresentation() {
        let controller = UIViewController()
        let other = controller.withPresentation(.formSheet)
        XCTAssertEqual(controller, other)
        XCTAssertEqual(controller.modalPresentationStyle, UIModalPresentationStyle.formSheet)
        XCTAssertEqual(other.modalPresentationStyle, UIModalPresentationStyle.formSheet)

        let controller2 = UIViewController()
        let other2 = controller2.withPresentation(.pageSheet)
        XCTAssertEqual(controller2, other2)
        XCTAssertEqual(controller2.modalPresentationStyle, UIModalPresentationStyle.pageSheet)
        XCTAssertEqual(other2.modalPresentationStyle, UIModalPresentationStyle.pageSheet)

        let controller3 = UIViewController()
        let other3 = controller3.withPresentation(.custom)
        XCTAssertEqual(controller3, other3)
        XCTAssertEqual(controller3.modalPresentationStyle, UIModalPresentationStyle.custom)
        XCTAssertEqual(other3.modalPresentationStyle, UIModalPresentationStyle.custom)
    }

    func test_thatViewController_appliesStyle_withTransition() {
        let controller = UIViewController()
        let other = controller.withTransition(.coverVertical)
        XCTAssertEqual(controller, other)
        XCTAssertEqual(controller.modalTransitionStyle, UIModalTransitionStyle.coverVertical)
        XCTAssertEqual(other.modalTransitionStyle, UIModalTransitionStyle.coverVertical)

        let controller2 = UIViewController()
        let other2 = controller2.withTransition(.crossDissolve)
        XCTAssertEqual(controller2, other2)
        XCTAssertEqual(controller2.modalTransitionStyle, UIModalTransitionStyle.crossDissolve)
        XCTAssertEqual(other2.modalTransitionStyle, UIModalTransitionStyle.crossDissolve)

        let controller3 = UIViewController()
        let other3 = controller3.withTransition(.flipHorizontal)
        XCTAssertEqual(controller3, other3)
        XCTAssertEqual(controller3.modalTransitionStyle, UIModalTransitionStyle.flipHorizontal)
        XCTAssertEqual(other3.modalTransitionStyle, UIModalTransitionStyle.flipHorizontal)
    }

    func test_thatViewController_appliesStyles_withStyles() {
        let controller = UIViewController()
        let other = controller.withStyles(navigation: .withNavigation,
                                          presentation: .overCurrentContext,
                                          transition: .partialCurl) as! UINavigationController
        XCTAssertEqual(controller, other.topViewController)
        XCTAssertEqual(controller.modalPresentationStyle, UIModalPresentationStyle.overCurrentContext)
        XCTAssertEqual(controller.modalTransitionStyle, UIModalTransitionStyle.partialCurl)
        XCTAssertEqual(other.modalPresentationStyle, UIModalPresentationStyle.overCurrentContext)
        XCTAssertEqual(other.modalTransitionStyle, UIModalTransitionStyle.partialCurl)

        let controller2 = UIViewController()
        let other2 = controller2.withStyles(navigation: .none,
                                            presentation: .none,
                                            transition: .coverVertical)
        XCTAssertEqual(controller2, other2)
        XCTAssertEqual(controller2.modalPresentationStyle, UIModalPresentationStyle.none)
        XCTAssertEqual(controller2.modalTransitionStyle, UIModalTransitionStyle.coverVertical)

        let controller3 = UIViewController()
        let other3 = controller3.withStyles(navigation: .withNavigation,
                                            presentation: .formSheet,
                                            transition: .coverVertical) as! UINavigationController
        XCTAssertEqual(controller3, other3.topViewController)
        XCTAssertEqual(controller3.modalPresentationStyle, UIModalPresentationStyle.formSheet)
        XCTAssertEqual(controller3.modalTransitionStyle, UIModalTransitionStyle.coverVertical)
        XCTAssertEqual(other3.modalPresentationStyle, UIModalPresentationStyle.formSheet)
        XCTAssertEqual(other3.modalTransitionStyle, UIModalTransitionStyle.coverVertical)
    }

    func test_thatViewController_presentsViewController_withPresentationType_push() {
        let firstController = UINavigationController()
        let secondController = UIViewController()

        let expectPush = expectation(description: "completion block called")

        firstController.presentController(secondController, type: .push, animated: false) {
            expectPush.fulfill()
        }

        XCTAssertNotNil(secondController.navigationController)
        XCTAssertNotNil(secondController.navigationItem)
        XCTAssertEqual(firstController.topViewController, secondController)

        secondController.addDismissButtonIfNeeded()
        XCTAssertNil(secondController.navigationItem.leftBarButtonItem)
        XCTAssertNil(secondController.navigationItem.rightBarButtonItem)

        let expectPop = expectation(description: "completion block called")

        secondController.dismissController(animated: false) {
            expectPop.fulfill()
        }

        XCTAssertEqual(firstController.topViewController, secondController)

        waitForExpectations(timeout: 5)
    }

    func test_thatViewController_presentsViewController_withPresentationType_push_embedded() {
        let firstController = UIViewController()
        let navController = UINavigationController(rootViewController: firstController)
        XCTAssertEqual(navController.topViewController, firstController)

        let secondController = UIViewController()
        firstController.presentController(secondController, type: .push, animated: false)

        XCTAssertNotNil(secondController.navigationController)
        XCTAssertNotNil(secondController.navigationItem)
        XCTAssertEqual(navController.topViewController, secondController)

        secondController.addDismissButtonIfNeeded()
        XCTAssertNil(secondController.navigationItem.leftBarButtonItem)
        XCTAssertNil(secondController.navigationItem.rightBarButtonItem)

        secondController.dismissController(animated: false)
        XCTAssertEqual(navController.topViewController, firstController)
    }

    func test_thatViewController_presentsViewController_withPresentationType_show() {
        let firstController = UINavigationController()
        let secondController = UIViewController()
        firstController.presentController(secondController, type: .show, animated: false)

        XCTAssertNotNil(secondController.navigationController)
        XCTAssertNotNil(secondController.navigationItem)
        XCTAssertEqual(firstController.topViewController, secondController)

        secondController.addDismissButtonIfNeeded()
        XCTAssertNil(secondController.navigationItem.leftBarButtonItem)
        XCTAssertNil(secondController.navigationItem.rightBarButtonItem)
    }

    // MARK: Helpers

    func tapAction(sender: UIBarButtonItem) { }
}


================================================
FILE: docs/Classes.html
================================================
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Classes  Reference</title>
    <link rel="stylesheet" type="text/css" href="css/jazzy.css" />
    <link rel="stylesheet" type="text/css" href="css/highlight.css" />
    <meta charset='utf-8'>
    <script src="js/jquery.min.js" defer></script>
    <script src="js/jazzy.js" defer></script>
    
    <script src="js/lunr.min.js" defer></script>
    <script src="js/typeahead.jquery.js" defer></script>
    <script src="js/jazzy.search.js" defer></script>
  </head>
  <body>
    <a name="//apple_ref/swift/Section/Classes" class="dashAnchor"></a>
    <a title="Classes  Reference"></a>
    <header>
      <div class="content-wrapper">
        <p><a href="index.html">PresenterKit 6.1.1 Docs</a> (100% documented)</p>
        <p class="header-right"><a href="https://github.com/jessesquires/PresenterKit"><img src="img/gh.png"/>View on GitHub</a></p>
        <p class="header-right">
          <form role="search" action="search.json">
            <input type="text" placeholder="Search documentation" data-typeahead>
          </form>
        </p>
      </div>
    </header>
    <div class="content-wrapper">
      <p id="breadcrumbs">
        <a href="index.html">PresenterKit Reference</a>
        <img id="carat" src="img/carat.png" />
        Classes  Reference
      </p>
    </div>
    <div class="content-wrapper">
      <nav class="sidebar">
        <ul class="nav-groups">
          <li class="nav-group-name">
            <a href="Guides.html">Guides</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="getting-started.html">Getting Started</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="Classes.html">Classes</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="Classes.html#/c:@M@PresenterKit@objc(cs)HalfModalPresentationController">HalfModalPresentationController</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="Enums.html">Enumerations</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="Enums/NavigationStyle.html">NavigationStyle</a>
              </li>
              <li class="nav-group-task">
                <a href="Enums/PresentationType.html">PresentationType</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="Extensions.html">Extensions</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="Extensions/UIBarButtonItem.html">UIBarButtonItem</a>
              </li>
              <li class="nav-group-task">
                <a href="Extensions/UINavigationController.html">UINavigationController</a>
              </li>
              <li class="nav-group-task">
                <a href="Extensions/UIViewController.html">UIViewController</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="Structs.html">Structures</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="Structs/DismissButtonConfig.html">DismissButtonConfig</a>
              </li>
              <li class="nav-group-task">
                <a href="Structs/DismissButtonConfig/Location.html">– Location</a>
              </li>
              <li class="nav-group-task">
                <a href="Structs/DismissButtonConfig/Style.html">– Style</a>
              </li>
              <li class="nav-group-task">
                <a href="Structs/DismissButtonConfig/Content.html">– Content</a>
              </li>
              <li class="nav-group-task">
                <a href="Structs/PopoverConfig.html">PopoverConfig</a>
              </li>
              <li class="nav-group-task">
                <a href="Structs/PopoverConfig/Source.html">– Source</a>
              </li>
            </ul>
          </li>
        </ul>
      </nav>
      <article class="main-content">
        <section>
          <section class="section">
            <h1>Classes</h1>
            <p>The following classes are available globally.</p>

          </section>
          <section class="section task-group-section">
            <div class="task-group">
              <ul>
                <li class="item">
                  <div>
                    <code>
                    <a name="/c:@M@PresenterKit@objc(cs)HalfModalPresentationController"></a>
                    <a name="//apple_ref/swift/Class/HalfModalPresentationController" class="dashAnchor"></a>
                    <a class="token" href="#/c:@M@PresenterKit@objc(cs)HalfModalPresentationController">HalfModalPresentationController</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>A modal presentation controller that presents the presented view controller modally,
covering the bottom half of the presenting view controller. This presentation controller
displays a transparent dimmed, tappable view over the top half of the presenting view controller.</p>

                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">HalfModalPresentationController</span> <span class="p">:</span> <span class="kt">UIPresentationController</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
          </section>
        </section>
        <section id="footer">
          <p>&copy; 2020 <a class="link" href="https://jessesquires.com" target="_blank" rel="external">Jesse Squires</a>. All rights reserved. (Last updated: 2020-12-04)</p>
          <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.13.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
        </section>
      </article>
    </div>
  </body>
</div>
</html>


================================================
FILE: docs/Enums/NavigationStyle.html
================================================
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>NavigationStyle Enumeration Reference</title>
    <link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
    <link rel="stylesheet" type="text/css" href="../css/highlight.css" />
    <meta charset='utf-8'>
    <script src="../js/jquery.min.js" defer></script>
    <script src="../js/jazzy.js" defer></script>
    
    <script src="../js/lunr.min.js" defer></script>
    <script src="../js/typeahead.jquery.js" defer></script>
    <script src="../js/jazzy.search.js" defer></script>
  </head>
  <body>
    <a name="//apple_ref/swift/Enum/NavigationStyle" class="dashAnchor"></a>
    <a title="NavigationStyle Enumeration Reference"></a>
    <header>
      <div class="content-wrapper">
        <p><a href="../index.html">PresenterKit 6.1.1 Docs</a> (100% documented)</p>
        <p class="header-right"><a href="https://github.com/jessesquires/PresenterKit"><img src="../img/gh.png"/>View on GitHub</a></p>
        <p class="header-right">
          <form role="search" action="../search.json">
            <input type="text" placeholder="Search documentation" data-typeahead>
          </form>
        </p>
      </div>
    </header>
    <div class="content-wrapper">
      <p id="breadcrumbs">
        <a href="../index.html">PresenterKit Reference</a>
        <img id="carat" src="../img/carat.png" />
        NavigationStyle Enumeration Reference
      </p>
    </div>
    <div class="content-wrapper">
      <nav class="sidebar">
        <ul class="nav-groups">
          <li class="nav-group-name">
            <a href="../Guides.html">Guides</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../getting-started.html">Getting Started</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="../Classes.html">Classes</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../Classes.html#/c:@M@PresenterKit@objc(cs)HalfModalPresentationController">HalfModalPresentationController</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="../Enums.html">Enumerations</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../Enums/NavigationStyle.html">NavigationStyle</a>
              </li>
              <li class="nav-group-task">
                <a href="../Enums/PresentationType.html">PresentationType</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="../Extensions.html">Extensions</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../Extensions/UIBarButtonItem.html">UIBarButtonItem</a>
              </li>
              <li class="nav-group-task">
                <a href="../Extensions/UINavigationController.html">UINavigationController</a>
              </li>
              <li class="nav-group-task">
                <a href="../Extensions/UIViewController.html">UIViewController</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="../Structs.html">Structures</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../Structs/DismissButtonConfig.html">DismissButtonConfig</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/DismissButtonConfig/Location.html">– Location</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/DismissButtonConfig/Style.html">– Style</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/DismissButtonConfig/Content.html">– Content</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/PopoverConfig.html">PopoverConfig</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/PopoverConfig/Source.html">– Source</a>
              </li>
            </ul>
          </li>
        </ul>
      </nav>
      <article class="main-content">
        <section>
          <section class="section">
            <h1>NavigationStyle</h1>
              <div class="declaration">
                <div class="language">
                  
                  <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">NavigationStyle</span></code></pre>

                </div>
              </div>
            <p>Specifies the navigation style for a view controller.</p>

          </section>
          <section class="section task-group-section">
            <div class="task-group">
              <ul>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12PresenterKit15NavigationStyleO4noneyA2CmF"></a>
                    <a name="//apple_ref/swift/Element/none" class="dashAnchor"></a>
                    <a class="token" href="#/s:12PresenterKit15NavigationStyleO4noneyA2CmF">none</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>Do not embed a view controller in a <code>UINavigationController</code>.</p>

                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="k">case</span> <span class="k">none</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12PresenterKit15NavigationStyleO04withC0yA2CmF"></a>
                    <a name="//apple_ref/swift/Element/withNavigation" class="dashAnchor"></a>
                    <a class="token" href="#/s:12PresenterKit15NavigationStyleO04withC0yA2CmF">withNavigation</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>Embed view controller in a <code>UINavigationController</code>.</p>

                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="k">case</span> <span class="n">withNavigation</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
          </section>
        </section>
        <section id="footer">
          <p>&copy; 2020 <a class="link" href="https://jessesquires.com" target="_blank" rel="external">Jesse Squires</a>. All rights reserved. (Last updated: 2020-12-04)</p>
          <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.13.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
        </section>
      </article>
    </div>
  </body>
</div>
</html>


================================================
FILE: docs/Enums/PresentationType.html
================================================
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>PresentationType Enumeration Reference</title>
    <link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
    <link rel="stylesheet" type="text/css" href="../css/highlight.css" />
    <meta charset='utf-8'>
    <script src="../js/jquery.min.js" defer></script>
    <script src="../js/jazzy.js" defer></script>
    
    <script src="../js/lunr.min.js" defer></script>
    <script src="../js/typeahead.jquery.js" defer></script>
    <script src="../js/jazzy.search.js" defer></script>
  </head>
  <body>
    <a name="//apple_ref/swift/Enum/PresentationType" class="dashAnchor"></a>
    <a title="PresentationType Enumeration Reference"></a>
    <header>
      <div class="content-wrapper">
        <p><a href="../index.html">PresenterKit 6.1.1 Docs</a> (100% documented)</p>
        <p class="header-right"><a href="https://github.com/jessesquires/PresenterKit"><img src="../img/gh.png"/>View on GitHub</a></p>
        <p class="header-right">
          <form role="search" action="../search.json">
            <input type="text" placeholder="Search documentation" data-typeahead>
          </form>
        </p>
      </div>
    </header>
    <div class="content-wrapper">
      <p id="breadcrumbs">
        <a href="../index.html">PresenterKit Reference</a>
        <img id="carat" src="../img/carat.png" />
        PresentationType Enumeration Reference
      </p>
    </div>
    <div class="content-wrapper">
      <nav class="sidebar">
        <ul class="nav-groups">
          <li class="nav-group-name">
            <a href="../Guides.html">Guides</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../getting-started.html">Getting Started</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="../Classes.html">Classes</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../Classes.html#/c:@M@PresenterKit@objc(cs)HalfModalPresentationController">HalfModalPresentationController</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="../Enums.html">Enumerations</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../Enums/NavigationStyle.html">NavigationStyle</a>
              </li>
              <li class="nav-group-task">
                <a href="../Enums/PresentationType.html">PresentationType</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="../Extensions.html">Extensions</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../Extensions/UIBarButtonItem.html">UIBarButtonItem</a>
              </li>
              <li class="nav-group-task">
                <a href="../Extensions/UINavigationController.html">UINavigationController</a>
              </li>
              <li class="nav-group-task">
                <a href="../Extensions/UIViewController.html">UIViewController</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="../Structs.html">Structures</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../Structs/DismissButtonConfig.html">DismissButtonConfig</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/DismissButtonConfig/Location.html">– Location</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/DismissButtonConfig/Style.html">– Style</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/DismissButtonConfig/Content.html">– Content</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/PopoverConfig.html">PopoverConfig</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/PopoverConfig/Source.html">– Source</a>
              </li>
            </ul>
          </li>
        </ul>
      </nav>
      <article class="main-content">
        <section>
          <section class="section">
            <h1>PresentationType</h1>
              <div class="declaration">
                <div class="language">
                  
                  <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">PresentationType</span></code></pre>

                </div>
              </div>
            <p>Describes the type of presentation for a view controller.</p>

          </section>
          <section class="section task-group-section">
            <div class="task-group">
              <ul>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12PresenterKit16PresentationTypeO5modalyAcA15NavigationStyleO_So07UIModalcG0VSo0h10TransitionG0VtcACmF"></a>
                    <a name="//apple_ref/swift/Element/modal(_:_:_:)" class="dashAnchor"></a>
                    <a class="token" href="#/s:12PresenterKit16PresentationTypeO5modalyAcA15NavigationStyleO_So07UIModalcG0VSo0h10TransitionG0VtcACmF">modal(_:<wbr>_:<wbr>_:<wbr>)</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>A modal presentation type with the specified navigation, presentation, and transition styles.</p>

                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="k">case</span> <span class="nf">modal</span><span class="p">(</span><span class="kt"><a href="../Enums/NavigationStyle.html">NavigationStyle</a></span><span class="p">,</span> <span class="kt">UIModalPresentationStyle</span><span class="p">,</span> <span class="kt">UIModalTransitionStyle</span><span class="p">)</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12PresenterKit16PresentationTypeO7popoveryAcA13PopoverConfigVcACmF"></a>
                    <a name="//apple_ref/swift/Element/popover(_:)" class="dashAnchor"></a>
                    <a class="token" href="#/s:12PresenterKit16PresentationTypeO7popoveryAcA13PopoverConfigVcACmF">popover(_:<wbr>)</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>A popover presentation type with the specified configuration.</p>

                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="k">case</span> <span class="nf">popover</span><span class="p">(</span><span class="kt"><a href="../Structs/PopoverConfig.html">PopoverConfig</a></span><span class="p">)</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12PresenterKit16PresentationTypeO4pushyA2CmF"></a>
                    <a name="//apple_ref/swift/Element/push" class="dashAnchor"></a>
                    <a class="token" href="#/s:12PresenterKit16PresentationTypeO4pushyA2CmF">push</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>A push presentation type.</p>

                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="k">case</span> <span class="n">push</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12PresenterKit16PresentationTypeO4showyA2CmF"></a>
                    <a name="//apple_ref/swift/Element/show" class="dashAnchor"></a>
                    <a class="token" href="#/s:12PresenterKit16PresentationTypeO4showyA2CmF">show</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>A &ldquo;show&rdquo; presentation type. This is an adaptive presentation that usually corresponds to <code>.Push</code>.</p>

                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="k">case</span> <span class="n">show</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12PresenterKit16PresentationTypeO10showDetailyAcA15NavigationStyleOcACmF"></a>
                    <a name="//apple_ref/swift/Element/showDetail(_:)" class="dashAnchor"></a>
                    <a class="token" href="#/s:12PresenterKit16PresentationTypeO10showDetailyAcA15NavigationStyleOcACmF">showDetail(_:<wbr>)</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>A &ldquo;show detail&rdquo; presentation type. This is an adaptive presentation that usually corresponds to <code>.Modal</code>.</p>

                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="k">case</span> <span class="nf">showDetail</span><span class="p">(</span><span class="kt"><a href="../Enums/NavigationStyle.html">NavigationStyle</a></span><span class="p">)</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12PresenterKit16PresentationTypeO6customyACSo37UIViewControllerTransitioningDelegate_pcACmF"></a>
                    <a name="//apple_ref/swift/Element/custom(_:)" class="dashAnchor"></a>
                    <a class="token" href="#/s:12PresenterKit16PresentationTypeO6customyACSo37UIViewControllerTransitioningDelegate_pcACmF">custom(_:<wbr>)</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>A custom presentation style that uses the specified delegate.</p>

                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="k">case</span> <span class="nf">custom</span><span class="p">(</span><span class="kt">UIViewControllerTransitioningDelegate</span><span class="p">)</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12PresenterKit16PresentationTypeO4noneyA2CmF"></a>
                    <a name="//apple_ref/swift/Element/none" class="dashAnchor"></a>
                    <a class="token" href="#/s:12PresenterKit16PresentationTypeO4noneyA2CmF">none</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>No presentation type specified, use UIKit defaults. Use this when presenting system controllers, like <code>UIAlertController</code>.</p>

                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="k">case</span> <span class="k">none</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
          </section>
        </section>
        <section id="footer">
          <p>&copy; 2020 <a class="link" href="https://jessesquires.com" target="_blank" rel="external">Jesse Squires</a>. All rights reserved. (Last updated: 2020-12-04)</p>
          <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.13.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
        </section>
      </article>
    </div>
  </body>
</div>
</html>


================================================
FILE: docs/Enums.html
================================================
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Enumerations  Reference</title>
    <link rel="stylesheet" type="text/css" href="css/jazzy.css" />
    <link rel="stylesheet" type="text/css" href="css/highlight.css" />
    <meta charset='utf-8'>
    <script src="js/jquery.min.js" defer></script>
    <script src="js/jazzy.js" defer></script>
    
    <script src="js/lunr.min.js" defer></script>
    <script src="js/typeahead.jquery.js" defer></script>
    <script src="js/jazzy.search.js" defer></script>
  </head>
  <body>
    <a name="//apple_ref/swift/Section/Enumerations" class="dashAnchor"></a>
    <a title="Enumerations  Reference"></a>
    <header>
      <div class="content-wrapper">
        <p><a href="index.html">PresenterKit 6.1.1 Docs</a> (100% documented)</p>
        <p class="header-right"><a href="https://github.com/jessesquires/PresenterKit"><img src="img/gh.png"/>View on GitHub</a></p>
        <p class="header-right">
          <form role="search" action="search.json">
            <input type="text" placeholder="Search documentation" data-typeahead>
          </form>
        </p>
      </div>
    </header>
    <div class="content-wrapper">
      <p id="breadcrumbs">
        <a href="index.html">PresenterKit Reference</a>
        <img id="carat" src="img/carat.png" />
        Enumerations  Reference
      </p>
    </div>
    <div class="content-wrapper">
      <nav class="sidebar">
        <ul class="nav-groups">
          <li class="nav-group-name">
            <a href="Guides.html">Guides</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="getting-started.html">Getting Started</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="Classes.html">Classes</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="Classes.html#/c:@M@PresenterKit@objc(cs)HalfModalPresentationController">HalfModalPresentationController</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="Enums.html">Enumerations</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="Enums/NavigationStyle.html">NavigationStyle</a>
              </li>
              <li class="nav-group-task">
                <a href="Enums/PresentationType.html">PresentationType</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="Extensions.html">Extensions</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="Extensions/UIBarButtonItem.html">UIBarButtonItem</a>
              </li>
              <li class="nav-group-task">
                <a href="Extensions/UINavigationController.html">UINavigationController</a>
              </li>
              <li class="nav-group-task">
                <a href="Extensions/UIViewController.html">UIViewController</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="Structs.html">Structures</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="Structs/DismissButtonConfig.html">DismissButtonConfig</a>
              </li>
              <li class="nav-group-task">
                <a href="Structs/DismissButtonConfig/Location.html">– Location</a>
              </li>
              <li class="nav-group-task">
                <a href="Structs/DismissButtonConfig/Style.html">– Style</a>
              </li>
              <li class="nav-group-task">
                <a href="Structs/DismissButtonConfig/Content.html">– Content</a>
              </li>
              <li class="nav-group-task">
                <a href="Structs/PopoverConfig.html">PopoverConfig</a>
              </li>
              <li class="nav-group-task">
                <a href="Structs/PopoverConfig/Source.html">– Source</a>
              </li>
            </ul>
          </li>
        </ul>
      </nav>
      <article class="main-content">
        <section>
          <section class="section">
            <h1>Enumerations</h1>
            <p>The following enumerations are available globally.</p>

          </section>
          <section class="section task-group-section">
            <div class="task-group">
              <ul>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12PresenterKit15NavigationStyleO"></a>
                    <a name="//apple_ref/swift/Enum/NavigationStyle" class="dashAnchor"></a>
                    <a class="token" href="#/s:12PresenterKit15NavigationStyleO">NavigationStyle</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>Specifies the navigation style for a view controller.</p>

                        <a href="Enums/NavigationStyle.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">NavigationStyle</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:12PresenterKit16PresentationTypeO"></a>
                    <a name="//apple_ref/swift/Enum/PresentationType" class="dashAnchor"></a>
                    <a class="token" href="#/s:12PresenterKit16PresentationTypeO">PresentationType</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>Describes the type of presentation for a view controller.</p>

                        <a href="Enums/PresentationType.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">PresentationType</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
          </section>
        </section>
        <section id="footer">
          <p>&copy; 2020 <a class="link" href="https://jessesquires.com" target="_blank" rel="external">Jesse Squires</a>. All rights reserved. (Last updated: 2020-12-04)</p>
          <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.13.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
        </section>
      </article>
    </div>
  </body>
</div>
</html>


================================================
FILE: docs/Extensions/UIBarButtonItem.html
================================================
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>UIBarButtonItem Extension Reference</title>
    <link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
    <link rel="stylesheet" type="text/css" href="../css/highlight.css" />
    <meta charset='utf-8'>
    <script src="../js/jquery.min.js" defer></script>
    <script src="../js/jazzy.js" defer></script>
    
    <script src="../js/lunr.min.js" defer></script>
    <script src="../js/typeahead.jquery.js" defer></script>
    <script src="../js/jazzy.search.js" defer></script>
  </head>
  <body>
    <a name="//apple_ref/swift/Extension/UIBarButtonItem" class="dashAnchor"></a>
    <a title="UIBarButtonItem Extension Reference"></a>
    <header>
      <div class="content-wrapper">
        <p><a href="../index.html">PresenterKit 6.1.1 Docs</a> (100% documented)</p>
        <p class="header-right"><a href="https://github.com/jessesquires/PresenterKit"><img src="../img/gh.png"/>View on GitHub</a></p>
        <p class="header-right">
          <form role="search" action="../search.json">
            <input type="text" placeholder="Search documentation" data-typeahead>
          </form>
        </p>
      </div>
    </header>
    <div class="content-wrapper">
      <p id="breadcrumbs">
        <a href="../index.html">PresenterKit Reference</a>
        <img id="carat" src="../img/carat.png" />
        UIBarButtonItem Extension Reference
      </p>
    </div>
    <div class="content-wrapper">
      <nav class="sidebar">
        <ul class="nav-groups">
          <li class="nav-group-name">
            <a href="../Guides.html">Guides</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../getting-started.html">Getting Started</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="../Classes.html">Classes</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../Classes.html#/c:@M@PresenterKit@objc(cs)HalfModalPresentationController">HalfModalPresentationController</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="../Enums.html">Enumerations</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../Enums/NavigationStyle.html">NavigationStyle</a>
              </li>
              <li class="nav-group-task">
                <a href="../Enums/PresentationType.html">PresentationType</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="../Extensions.html">Extensions</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../Extensions/UIBarButtonItem.html">UIBarButtonItem</a>
              </li>
              <li class="nav-group-task">
                <a href="../Extensions/UINavigationController.html">UINavigationController</a>
              </li>
              <li class="nav-group-task">
                <a href="../Extensions/UIViewController.html">UIViewController</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="../Structs.html">Structures</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../Structs/DismissButtonConfig.html">DismissButtonConfig</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/DismissButtonConfig/Location.html">– Location</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/DismissButtonConfig/Style.html">– Style</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/DismissButtonConfig/Content.html">– Content</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/PopoverConfig.html">PopoverConfig</a>
              </li>
              <li class="nav-group-task">
                <a href="../Structs/PopoverConfig/Source.html">– Source</a>
              </li>
            </ul>
          </li>
        </ul>
      </nav>
      <article class="main-content">
        <section>
          <section class="section">
            <h1>UIBarButtonItem</h1>
              <div class="declaration">
                <div class="language">
                  
                  <pre class="highlight swift"><code><span class="kd">extension</span> <span class="kt">UIBarButtonItem</span></code></pre>

                </div>
              </div>
            
          </section>
          <section class="section task-group-section">
            <div class="task-group">
              <ul>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:So15UIBarButtonItemC12PresenterKitE6config6target6actionAbC07DismissB6ConfigV_yXlSg10ObjectiveC8SelectorVtcfc"></a>
                    <a name="//apple_ref/swift/Method/init(config:target:action:)" class="dashAnchor"></a>
                    <a class="token" href="#/s:So15UIBarButtonItemC12PresenterKitE6config6target6actionAbC07DismissB6ConfigV_yXlSg10ObjectiveC8SelectorVtcfc">init(config:<wbr>target:<wbr>action:<wbr>)</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>Initializes a new bar button item using the specified configuration.</p>

                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">convenience</span> <span class="nf">init</span><span class="p">(</span><span class="nv">config</span><span class="p">:</span> <span class="kt"><a href="../Structs/DismissButtonConfig.html">DismissButtonConfig</a></span><span class="p">,</span> <span class="nv">target</span><span class="p">:</span> <span class="kt">AnyObject</span><span class="p">?,</span> <span class="nv">action</span><span class="p">:</span> <span class="kt">Selector</span><span class="p">)</span></code></pre>

                        </div>
                      </div>
                      <div>
                        <h4>Parameters</h4>
                        <table class="graybox">
                          <tbody>
                            <tr>
                              <td>
                                <code>
                                <em>config</em>
                                </code>
                              </td>
                              <td>
                                <div>
                                  <p>The configuration for the item.</p>
                                </div>
                              </td>
                            </tr>
                            <tr>
                              <td>
                                <code>
                                <em>target</em>
                                </code>
                              </td>
                              <td>
                                <div>
                                  <p>The object that receives the action message.</p>
                                </div>
                              </td>
                            </tr>
                            <tr>
                              <td>
                                <code>
                                <em>action</em>
                                </code>
                              </td>
                              <td>
                                <div>
                                  <p>The action to send to target when this item is selected.</p>
                                </div>
                              </td>
                            </tr>
                          </tbody>
                        </table>
                      </div>
                      <div>
                        <h4>Return Value</h4>
                        <p>A new bar button item instance.</p>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
          </section>
        </section>
        <section id="footer">
          <p>&copy; 2020 <a class="link" href="https://jessesquires.com" target="_blank" rel="external">Jesse Squires</a>. All rights reserved. (Last updated: 2020-12-04)</p>
          <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.13.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
        </section>
      </article>
    </div>
  </body>
</div>
</html>


================================================
FILE: docs/Extensions/UINavigationController.html
================================================
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>UINavigationController Extension Reference</title>
    <link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
    <link rel="stylesheet" type="text/css" href="../css/highlight.css" />
    <meta charset='utf-8'>
    <script src="../js/jquery.min.js" defer></script>
    <script src="../js/jazzy.js" defer></script>
    
    <script src="../js/lunr.min.js" defer></script>
    <script src="../js/typeahead.jquery.js" defer></script>
    <script src="../js/jazzy.search.js" defer></script>
  </head>
  <body>
    <a name="//apple_ref/swift/Extension/UINavigationController" class="dashAnchor"></a>
    <a title="UINavigationController Extension Reference"></a>
    <header>
      <div class="content-wrapper">
        <p><a href="../index.html">PresenterKit 6.1.1 Docs</a> (100% documented)</p>
        <p class="header-right"><a href="https://github.com/jessesquires/PresenterKit"><img src="../img/gh.png"/>View on GitHub</a></p>
        <p class="header-right">
          <form role="search" action="../search.json">
            <input type="text" placeholder="Search documentation" data-typeahead>
          </form>
        </p>
      </div>
    </header>
    <div class="content-wrapper">
      <p id="breadcrumbs">
        <a href="../index.html">PresenterKit Reference</a>
        <img id="carat" src="../img/carat.png" />
        UINavigationController Extension Reference
      </p>
    </div>
    <div class="content-wrapper">
      <nav class="sidebar">
        <ul class="nav-groups">
          <li class="nav-group-name">
            <a href="../Guides.html">Guides</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../getting-started.html">Getting Started</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="../Classes.html">Classes</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="../Classes.html#/c:@M@PresenterKit@objc(cs)HalfModalPresentationController">HalfModalPresentationController</a>
              </li>
            </ul>
          </li
Download .txt
gitextract_myk_b_mt/

├── .github/
│   ├── dependabot.yml
│   └── workflows/
│       ├── ci.yml
│       ├── danger.yml
│       ├── pod-lint.yml
│       └── spm.yml
├── .gitignore
├── .swiftlint.yml
├── CHANGELOG.md
├── Dangerfile
├── Example/
│   ├── ExampleApp/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   ├── Contents.json
│   │   │   └── ic_dismiss.imageset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   ├── MainViewController.swift
│   │   └── RedViewController.swift
│   ├── ExampleApp.xcodeproj/
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace/
│   │   │   ├── contents.xcworkspacedata
│   │   │   └── xcshareddata/
│   │   │       └── IDEWorkspaceChecks.plist
│   │   └── xcshareddata/
│   │       ├── IDETemplateMacros.plist
│   │       └── xcschemes/
│   │           └── ExampleApp.xcscheme
│   └── ExampleAppUITests/
│       ├── ExampleAppUITests.swift
│       └── Info.plist
├── Gemfile
├── Guides/
│   └── Getting Started.md
├── LICENSE
├── Package.swift
├── PresenterKit.podspec
├── PresenterKit.xcodeproj/
│   ├── project.pbxproj
│   ├── project.xcworkspace/
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata/
│   │       ├── IDEWorkspaceChecks.plist
│   │       └── WorkspaceSettings.xcsettings
│   └── xcshareddata/
│       ├── IDETemplateMacros.plist
│       └── xcschemes/
│           └── PresenterKit.xcscheme
├── README.md
├── Sources/
│   ├── DismissButtonConfig.swift
│   ├── HalfModalPresentationController.swift
│   ├── Info.plist
│   ├── PresentationType.swift
│   ├── UINavigationController+Extensions.swift
│   └── UIViewController+Extensions.swift
├── Tests/
│   ├── Info.plist
│   └── PresenterKitTests.swift
├── docs/
│   ├── Classes.html
│   ├── Enums/
│   │   ├── NavigationStyle.html
│   │   └── PresentationType.html
│   ├── Enums.html
│   ├── Extensions/
│   │   ├── UIBarButtonItem.html
│   │   ├── UINavigationController.html
│   │   └── UIViewController.html
│   ├── Extensions.html
│   ├── Guides.html
│   ├── Structs/
│   │   ├── DismissButtonConfig/
│   │   │   ├── Content.html
│   │   │   ├── Location.html
│   │   │   └── Style.html
│   │   ├── DismissButtonConfig.html
│   │   ├── PopoverConfig/
│   │   │   └── Source.html
│   │   └── PopoverConfig.html
│   ├── Structs.html
│   ├── css/
│   │   ├── highlight.css
│   │   └── jazzy.css
│   ├── getting-started.html
│   ├── index.html
│   ├── js/
│   │   ├── jazzy.js
│   │   ├── jazzy.search.js
│   │   └── typeahead.jquery.js
│   ├── search.json
│   └── undocumented.json
└── scripts/
    ├── build_docs.zsh
    └── lint.zsh
Download .txt
SYMBOL INDEX (50 symbols across 3 files)

FILE: docs/js/jazzy.js
  function toggleItem (line 11) | function toggleItem($link, $content) {
  function itemLinkToContent (line 17) | function itemLinkToContent($link) {
  function openCurrentItemIfClosed (line 22) | function openCurrentItemIfClosed() {

FILE: docs/js/jazzy.search.js
  function displayTemplate (line 6) | function displayTemplate(result) {
  function suggestionTemplate (line 10) | function suggestionTemplate(result) {

FILE: docs/js/typeahead.jquery.js
  function reverseArgs (line 55) | function reverseArgs(index, value) {
  function template (line 100) | function template() {
  function _p8 (line 153) | function _p8(s) {
  function build (line 178) | function build(o) {
  function buildHtml (line 197) | function buildHtml(c) {
  function buildSelectors (line 203) | function buildSelectors(classes) {
  function buildCss (line 210) | function buildCss() {
  function EventBus (line 267) | function EventBus(o) {
  function on (line 304) | function on(method, types, cb, context) {
  function onAsync (line 321) | function onAsync(types, cb, context) {
  function onSync (line 324) | function onSync(types, cb, context) {
  function off (line 327) | function off(types) {
  function trigger (line 338) | function trigger(types) {
  function getFlush (line 352) | function getFlush(callbacks, context, args) {
  function getNextTick (line 362) | function getNextTick() {
  function bindContext (line 379) | function bindContext(fn, context) {
  function hightlightTextNode (line 433) | function hightlightTextNode(textNode) {
  function traverse (line 445) | function traverse(el, hightlightTextNode) {
  function accent_replacer (line 457) | function accent_replacer(chr) {
  function getRegex (line 460) | function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensiti...
  function Input (line 485) | function Input(o, www) {
  function buildOverflowHelper (line 684) | function buildOverflowHelper($input) {
  function areQueriesEquivalent (line 701) | function areQueriesEquivalent(a, b) {
  function withModifier (line 704) | function withModifier($e) {
  function Dataset (line 717) | function Dataset(o, www) {
  function sync (line 858) | function sync(suggestions) {
  function async (line 870) | function async(suggestions) {
  function getDisplayFn (line 895) | function getDisplayFn(display) {
  function getTemplates (line 902) | function getTemplates(templates, displayFn) {
  function isValidName (line 918) | function isValidName(str) {
  function Menu (line 924) | function Menu(o, www) {
  function updateDataset (line 1046) | function updateDataset(dataset) {
  function clearDataset (line 1054) | function clearDataset(dataset) {
  function destroyDataset (line 1062) | function destroyDataset(dataset) {
  function Status (line 1071) | function Status(options) {
  function DefaultMenu (line 1121) | function DefaultMenu() {
  function Typeahead (line 1164) | function Typeahead(o, www) {
  function c (line 1447) | function c(ctx) {
  function attach (line 1473) | function attach() {
  function ttEach (line 1632) | function ttEach($els, fn) {
  function buildHintFromInput (line 1638) | function buildHintFromInput($input, www) {
  function prepInput (line 1647) | function prepInput($input, www) {
  function getBackgroundStyles (line 1662) | function getBackgroundStyles($el) {
  function revert (line 1674) | function revert($input) {
  function $elOrNull (line 1687) | function $elOrNull(obj) {
Condensed preview — 72 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (470K chars).
[
  {
    "path": ".github/dependabot.yml",
    "chars": 363,
    "preview": "# Documentation for all configuration options:\n# https://help.github.com/github/administering-a-repository/configuration"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 1458,
    "preview": "name: CI\n\non:\n  push:\n    branches:\n      - master\n      - develop\n  pull_request:\n    branches:\n      - master\n      - "
  },
  {
    "path": ".github/workflows/danger.yml",
    "chars": 1120,
    "preview": "name: Danger\n\non: pull_request\n\nenv:\n  # https://github.com/actions/virtual-environments/tree/main/images/macos\n  DEVELO"
  },
  {
    "path": ".github/workflows/pod-lint.yml",
    "chars": 1015,
    "preview": "name: CocoaPods Lint\n\non:\n  push:\n    branches:\n      - master\n      - develop\n  pull_request:\n    branches:\n      - mas"
  },
  {
    "path": ".github/workflows/spm.yml",
    "chars": 962,
    "preview": "name: SwiftPM Integration\n\non:\n  push:\n    branches:\n      - master\n      - develop\n  pull_request:\n    branches:\n      "
  },
  {
    "path": ".gitignore",
    "chars": 1332,
    "preview": ".DS_Store\n\n# swiftpm\n.swiftpm\n.build\n\n# docs\ndocs/docsets/\n\n# Xcode\n## Build generated\nbuild/\nDerivedData/\n\n## Various s"
  },
  {
    "path": ".swiftlint.yml",
    "chars": 1966,
    "preview": "excluded:\n  - Pods\n  - docs\n  - build\n  - scripts\n\ndisabled_rules:\n  # metrics\n  - nesting\n\n  # lint\n  - notification_ce"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 4182,
    "preview": "# CHANGELOG\n\nThe changelog for `PresenterKit`. Also see the [releases](https://github.com/jessesquires/PresenterKit/rele"
  },
  {
    "path": "Dangerfile",
    "chars": 5972,
    "preview": "# -----------------------------------------------------------------------------\n# Changed library files, but didn't add/"
  },
  {
    "path": "Example/ExampleApp/AppDelegate.swift",
    "chars": 719,
    "preview": "//\n//  Created by Jesse Squires\n//  https://www.jessesquires.com\n//\n//\n//  Documentation\n//  https://jessesquires.github"
  },
  {
    "path": "Example/ExampleApp/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 1590,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\""
  },
  {
    "path": "Example/ExampleApp/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/ExampleApp/Assets.xcassets/ic_dismiss.imageset/Contents.json",
    "chars": 381,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"dismiss@1x.png\",\n      \"scale\" : \"1x\"\n    },\n   "
  },
  {
    "path": "Example/ExampleApp/Base.lproj/LaunchScreen.storyboard",
    "chars": 3483,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "Example/ExampleApp/Base.lproj/Main.storyboard",
    "chars": 17899,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "Example/ExampleApp/Info.plist",
    "chars": 1495,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/ExampleApp/MainViewController.swift",
    "chars": 3426,
    "preview": "//\n//  Created by Jesse Squires\n//  https://www.jessesquires.com\n//\n//\n//  Documentation\n//  https://jessesquires.github"
  },
  {
    "path": "Example/ExampleApp/RedViewController.swift",
    "chars": 2090,
    "preview": "//\n//  Created by Jesse Squires\n//  https://www.jessesquires.com\n//\n//\n//  Documentation\n//  https://jessesquires.github"
  },
  {
    "path": "Example/ExampleApp.xcodeproj/project.pbxproj",
    "chars": 21011,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Example/ExampleApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 155,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:ExampleApp.xcod"
  },
  {
    "path": "Example/ExampleApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/ExampleApp.xcodeproj/xcshareddata/IDETemplateMacros.plist",
    "chars": 565,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/ExampleApp.xcodeproj/xcshareddata/xcschemes/ExampleApp.xcscheme",
    "chars": 4832,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1200\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "Example/ExampleAppUITests/ExampleAppUITests.swift",
    "chars": 1912,
    "preview": "//\n//  Created by Jesse Squires\n//  https://www.jessesquires.com\n//\n//\n//  Documentation\n//  https://jessesquires.github"
  },
  {
    "path": "Example/ExampleAppUITests/Info.plist",
    "chars": 733,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Gemfile",
    "chars": 465,
    "preview": "source 'https://rubygems.org'\n\ngem 'cocoapods', '~> 1.11'\n\n# ------------\n# Danger Setup\n# ------------\ngem 'danger'\n\n# "
  },
  {
    "path": "Guides/Getting Started.md",
    "chars": 925,
    "preview": "# Getting Started\n\nThis guide provides a brief overview for how to get started using `PresenterKit`.\n\n```swift\nimport Pr"
  },
  {
    "path": "LICENSE",
    "chars": 1088,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2016-present Jesse Squires\n\nPermission is hereby granted, free of charge, to any pe"
  },
  {
    "path": "Package.swift",
    "chars": 1017,
    "preview": "// swift-tools-version:5.3\n// The swift-tools-version declares the minimum version\n// of Swift required to build this pa"
  },
  {
    "path": "PresenterKit.podspec",
    "chars": 653,
    "preview": "Pod::Spec.new do |s|\n   s.name = 'PresenterKit'\n   s.version = '6.1.3'\n   s.license = 'MIT'\n\n   s.summary = 'Custom pres"
  },
  {
    "path": "PresenterKit.xcodeproj/project.pbxproj",
    "chars": 18561,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "PresenterKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 157,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:PresenterKit.xc"
  },
  {
    "path": "PresenterKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "PresenterKit.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
    "chars": 263,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "PresenterKit.xcodeproj/xcshareddata/IDETemplateMacros.plist",
    "chars": 565,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "PresenterKit.xcodeproj/xcshareddata/xcschemes/PresenterKit.xcscheme",
    "chars": 4168,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1200\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "README.md",
    "chars": 1988,
    "preview": "# PresenterKit [![Actions Status](https://github.com/jessesquires/PresenterKit/workflows/CI/badge.svg)](https://github.c"
  },
  {
    "path": "Sources/DismissButtonConfig.swift",
    "chars": 3969,
    "preview": "//\n//  Created by Jesse Squires\n//  https://www.jessesquires.com\n//\n//\n//  Documentation\n//  https://jessesquires.github"
  },
  {
    "path": "Sources/HalfModalPresentationController.swift",
    "chars": 3743,
    "preview": "//\n//  Created by Jesse Squires\n//  https://www.jessesquires.com\n//\n//\n//  Documentation\n//  https://jessesquires.github"
  },
  {
    "path": "Sources/Info.plist",
    "chars": 823,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Sources/PresentationType.swift",
    "chars": 3227,
    "preview": "//\n//  Created by Jesse Squires\n//  https://www.jessesquires.com\n//\n//\n//  Documentation\n//  https://jessesquires.github"
  },
  {
    "path": "Sources/UINavigationController+Extensions.swift",
    "chars": 2040,
    "preview": "//\n//  Created by Jesse Squires\n//  https://www.jessesquires.com\n//\n//\n//  Documentation\n//  https://jessesquires.github"
  },
  {
    "path": "Sources/UIViewController+Extensions.swift",
    "chars": 8585,
    "preview": "//\n//  Created by Jesse Squires\n//  https://www.jessesquires.com\n//\n//\n//  Documentation\n//  https://jessesquires.github"
  },
  {
    "path": "Tests/Info.plist",
    "chars": 733,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Tests/PresenterKitTests.swift",
    "chars": 10814,
    "preview": "//\n//  Created by Jesse Squires\n//  https://www.jessesquires.com\n//\n//\n//  Documentation\n//  https://jessesquires.github"
  },
  {
    "path": "docs/Classes.html",
    "chars": 6741,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Classes  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/cs"
  },
  {
    "path": "docs/Enums/NavigationStyle.html",
    "chars": 8061,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>NavigationStyle Enumeration Reference</title>\n    <link rel=\"styles"
  },
  {
    "path": "docs/Enums/PresentationType.html",
    "chars": 15519,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>PresentationType Enumeration Reference</title>\n    <link rel=\"style"
  },
  {
    "path": "docs/Enums.html",
    "chars": 7839,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Enumerations  Reference</title>\n    <link rel=\"stylesheet\" type=\"te"
  },
  {
    "path": "docs/Extensions/UIBarButtonItem.html",
    "chars": 9253,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>UIBarButtonItem Extension Reference</title>\n    <link rel=\"styleshe"
  },
  {
    "path": "docs/Extensions/UINavigationController.html",
    "chars": 12579,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>UINavigationController Extension Reference</title>\n    <link rel=\"s"
  },
  {
    "path": "docs/Extensions/UIViewController.html",
    "chars": 33994,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>UIViewController Extension Reference</title>\n    <link rel=\"stylesh"
  },
  {
    "path": "docs/Extensions.html",
    "chars": 9450,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Extensions  Reference</title>\n    <link rel=\"stylesheet\" type=\"text"
  },
  {
    "path": "docs/Guides.html",
    "chars": 5450,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Guides  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css"
  },
  {
    "path": "docs/Structs/DismissButtonConfig/Content.html",
    "chars": 9790,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Content Enumeration Reference</title>\n    <link rel=\"stylesheet\" ty"
  },
  {
    "path": "docs/Structs/DismissButtonConfig/Location.html",
    "chars": 8079,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Location Enumeration Reference</title>\n    <link rel=\"stylesheet\" t"
  },
  {
    "path": "docs/Structs/DismissButtonConfig/Style.html",
    "chars": 8042,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Style Enumeration Reference</title>\n    <link rel=\"stylesheet\" type"
  },
  {
    "path": "docs/Structs/DismissButtonConfig.html",
    "chars": 18357,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>DismissButtonConfig Structure Reference</title>\n    <link rel=\"styl"
  },
  {
    "path": "docs/Structs/PopoverConfig/Source.html",
    "chars": 8814,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Source Enumeration Reference</title>\n    <link rel=\"stylesheet\" typ"
  },
  {
    "path": "docs/Structs/PopoverConfig.html",
    "chars": 11027,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>PopoverConfig Structure Reference</title>\n    <link rel=\"stylesheet"
  },
  {
    "path": "docs/Structs.html",
    "chars": 7947,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Structures  Reference</title>\n    <link rel=\"stylesheet\" type=\"text"
  },
  {
    "path": "docs/css/highlight.css",
    "chars": 4479,
    "preview": "/* Credit to https://gist.github.com/wataru420/2048287 */\n.highlight {\n  /* Comment */\n  /* Error */\n  /* Keyword */\n  /"
  },
  {
    "path": "docs/css/jazzy.css",
    "chars": 9031,
    "preview": "html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {\n  background: transparent;\n  bord"
  },
  {
    "path": "docs/getting-started.html",
    "chars": 7905,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Getting Started  Reference</title>\n    <link rel=\"stylesheet\" type="
  },
  {
    "path": "docs/index.html",
    "chars": 8507,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>PresenterKit  Reference</title>\n    <link rel=\"stylesheet\" type=\"te"
  },
  {
    "path": "docs/js/jazzy.js",
    "chars": 1778,
    "preview": "window.jazzy = {'docset': false}\nif (typeof window.dash != 'undefined') {\n  document.documentElement.className += ' dash"
  },
  {
    "path": "docs/js/jazzy.search.js",
    "chars": 2001,
    "preview": "$(function(){\n  var $typeahead = $('[data-typeahead]');\n  var $form = $typeahead.parents('form');\n  var searchURL = $for"
  },
  {
    "path": "docs/js/typeahead.jquery.js",
    "chars": 70128,
    "preview": "/*!\n * typeahead.js 1.3.1\n * https://github.com/corejavascript/typeahead.js\n * Copyright 2013-2020 Twitter, Inc. and oth"
  },
  {
    "path": "docs/search.json",
    "chars": 11266,
    "preview": "{\"Structs/PopoverConfig/Source.html#/s:12PresenterKit13PopoverConfigV6SourceO13barButtonItemyAESo05UIBargH0CcAEmF\":{\"nam"
  },
  {
    "path": "docs/undocumented.json",
    "chars": 80,
    "preview": "{\n  \"warnings\": [\n\n  ],\n  \"source_directory\": \"/Users/jsq/GitHub/PresenterKit\"\n}"
  },
  {
    "path": "scripts/build_docs.zsh",
    "chars": 1119,
    "preview": "#!/bin/zsh\n\n#  Created by Jesse Squires\n#  https://www.jessesquires.com\n#\n#  Copyright © 2020-present Jesse Squires\n#\n# "
  },
  {
    "path": "scripts/lint.zsh",
    "chars": 776,
    "preview": "#!/bin/zsh\n\n#  Created by Jesse Squires\n#  https://www.jessesquires.com\n#\n#  Copyright © 2020-present Jesse Squires\n#\n# "
  }
]

About this extraction

This page contains the full source code of the jessesquires/PresenterKit GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 72 files (430.7 KB), approximately 106.6k tokens, and a symbol index with 50 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!