diff --git a/.gitignore b/.gitignore index bd8202bb..e285cee2 100644 --- a/.gitignore +++ b/.gitignore @@ -67,4 +67,5 @@ fastlane/test_output # Gitbook node_modules -_book \ No newline at end of file +_book +xcodebuild.log diff --git a/.jazzy.yaml b/.jazzy.yaml index a30426bc..d523f684 100644 --- a/.jazzy.yaml +++ b/.jazzy.yaml @@ -1,8 +1,27 @@ +# ---- About ---- module: Hero -author: Luke Zhao -author_url: http://lkzhao.com -github_url: https://github.com/lkzhao/Hero -swift_version: 3.0.2 -source_directory: Examples +module_version: 1.5.0 +author: HeroTransitions readme: README.md -theme: fullwidth \ No newline at end of file +copyright: 'See [license](https://github.com/HeroTransitions/Hero/blob/develop/LICENSE) for more details.' + +# ---- URLs ---- +author_url: https://herotransitions.github.io/ +dash_url: https://herotransitions.github.io/docsets/ScreenKitFramework.xml +github_url: https://github.com/HeroTransitions/Hero +github_file_prefix: https://github.com/HeroTransitions/Hero/tree/version/1.5.0/ + +# ---- Sources ---- +podspec: Hero.podspec + +# ---- Generation ---- +clean: true +output: docs +min_acl: public +hide_documentation_coverage: false +skip_undocumented: false +objc: false +swift_version: 5.0.1 + +# ---- Formatting ---- +theme: fullwidth diff --git a/.swift-version b/.swift-version deleted file mode 100644 index bf77d549..00000000 --- a/.swift-version +++ /dev/null @@ -1 +0,0 @@ -4.2 diff --git a/CHANGELOG.md b/CHANGELOG.md index 627b36ab..113a9f35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ The changelog for `Hero`. Also see the [releases](https://github.com/HeroTransit -------------------------------------- -## Upcoming release +## [1.5.0](https://github.com/HeroTransitions/Hero/releases/tag/1.5.0) ### Added @@ -26,7 +26,6 @@ The changelog for `Hero`. Also see the [releases](https://github.com/HeroTransit - Added support for Swift 4.2. [#534](https://github.com/HeroTransitions/Hero/pull/534) by [@rennarda](https://github.com/rennarda) - ## [1.3.1](https://github.com/HeroTransitions/Hero/releases/tag/1.3.1) ### Fixed diff --git a/Examples/AppStoreCardExample.swift b/Examples/AppStoreCardExample.swift index f472b7ac..ae67d213 100644 --- a/Examples/AppStoreCardExample.swift +++ b/Examples/AppStoreCardExample.swift @@ -219,7 +219,12 @@ class AppStoreViewController2: ExampleBaseViewController { Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent neque est, hendrerit vitae nibh ultrices, accumsan elementum ante. Phasellus fringilla sapien non lorem consectetur, in ullamcorper tortor condimentum. Nulla tincidunt iaculis maximus. Sed ut urna urna. Nulla at sem vel neque scelerisque imperdiet. Donec ornare luctus dapibus. Donec aliquet ante augue, at pellentesque ipsum mollis eget. Cras vulputate mauris ac eleifend sollicitudin. Vivamus ut posuere odio. Suspendisse vulputate sem vel felis vehicula iaculis. Fusce sagittis, eros quis consequat tincidunt, arcu nunc ornare nulla, non egestas dolor ex at ipsum. Cras et massa sit amet quam imperdiet viverra. Mauris vitae finibus nibh, ac vulputate sapien. """ - contentCard.backgroundColor = .white + if #available(iOS 13.0, *) { + contentCard.backgroundColor = .systemBackground + } else { + contentCard.backgroundColor = .white + } + contentCard.clipsToBounds = true contentCard.addSubview(contentView) diff --git a/Examples/ExampleBaseViewController.swift b/Examples/ExampleBaseViewController.swift index dbe48732..35d7999b 100644 --- a/Examples/ExampleBaseViewController.swift +++ b/Examples/ExampleBaseViewController.swift @@ -14,7 +14,11 @@ class ExampleBaseViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - view.backgroundColor = .white + if #available(iOS 13.0, *) { + view.backgroundColor = .systemBackground + } else { + view.backgroundColor = .white + } view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(onTap))) dismissButton.setTitle("Back", for: .normal) diff --git a/Examples/MainViewController.swift b/Examples/MainViewController.swift index 043c61cf..f29efab6 100644 --- a/Examples/MainViewController.swift +++ b/Examples/MainViewController.swift @@ -9,7 +9,11 @@ class MainViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - view.backgroundColor = .white + if #available(iOS 13.0, *) { + view.backgroundColor = UIColor.systemBackground + } else { + view.backgroundColor = .white + } view.addSubview(collectionView) @@ -27,6 +31,13 @@ class MainViewController: UIViewController { let viewSource = ClosureViewSource { (label: UILabel, data: SourceData, index) in label.text = "\(index + 1). \(data.1)" label.textAlignment = .center + if #available(iOS 13.0, *) { + label.textColor = .label + label.backgroundColor = .systemBackground + } else { + label.textColor = .darkText + label.backgroundColor = .white + } label.layer.borderColor = UIColor.gray.cgColor label.layer.borderWidth = 0.5 label.layer.cornerRadius = 8 @@ -51,22 +62,13 @@ class MainViewController: UIViewController { imageView.contentMode = .scaleAspectFit let imageProvider = SimpleViewProvider(views: [imageView], sizeStrategy: (.fill, .fit)) - - let legacyButton = UIButton(type: .system) - legacyButton.setTitle("Legacy Examples", for: .normal) - legacyButton.addTarget(self, action: #selector(showLegacy), for: .touchUpInside) - let legacyExamplesProvider = SimpleViewProvider(views: [legacyButton], sizeStrategy: (.fill, .fit)) - + collectionView.provider = ComposedProvider( layout: FlowLayout(lineSpacing: 10).inset(by: UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)), - sections: [imageProvider, examplesProvider, legacyExamplesProvider] + sections: [imageProvider, examplesProvider] ) } - - @objc func showLegacy() { - hero.replaceViewController(with: viewController(forStoryboardName: "Main")) - } - + override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() collectionView.frame = view.bounds diff --git a/Examples/MatchExample.swift b/Examples/MatchExample.swift index 28aa0cb2..3c94b9c0 100644 --- a/Examples/MatchExample.swift +++ b/Examples/MatchExample.swift @@ -51,7 +51,7 @@ class MatchExampleViewController1: ExampleBaseViewController { class MatchExampleViewController2: ExampleBaseViewController { let redView = UIView() let blackView = UIView() - let whiteView = UIView() + let backgroundView = UIView() override func viewDidLoad() { super.viewDidLoad() @@ -65,12 +65,16 @@ class MatchExampleViewController2: ExampleBaseViewController { blackView.cornerRadius = 8 view.addSubview(blackView) - whiteView.backgroundColor = .white - whiteView.cornerRadius = 8 + if #available(iOS 13.0, *) { + backgroundView.backgroundColor = .systemBackground + } else { + backgroundView.backgroundColor = .white + } + backgroundView.cornerRadius = 8 // .useGlobalCoordinateSpace modifier is needed here otherwise it will be covered by redView during transition. // see http://lkzhao.com/2018/03/02/hero-useglobalcoordinatespace-explained.html for detail - whiteView.hero.modifiers = [.translate(y: 500), .useGlobalCoordinateSpace] - view.addSubview(whiteView) + backgroundView.hero.modifiers = [.translate(y: 500), .useGlobalCoordinateSpace] + view.addSubview(backgroundView) } override func viewDidLayoutSubviews() { @@ -78,6 +82,6 @@ class MatchExampleViewController2: ExampleBaseViewController { redView.frame = view.bounds blackView.frame.size = CGSize(width: 250, height: 60) blackView.center = CGPoint(x: view.bounds.midX, y: 130) - whiteView.frame = CGRect(x: (view.bounds.width - 250) / 2, y: 180, width: 250, height: view.bounds.height - 320) + backgroundView.frame = CGRect(x: (view.bounds.width - 250) / 2, y: 180, width: 250, height: view.bounds.height - 320) } } diff --git a/Examples/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/Examples/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json index fa3f1e5d..7021df30 100644 --- a/Examples/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Examples/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -103,8 +103,9 @@ "scale" : "2x" }, { - "idiom" : "ios-marketing", "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-1024.png", "scale" : "1x" } ], diff --git a/Examples/Resources/Assets.xcassets/AppIcon.appiconset/Icon-1024.png b/Examples/Resources/Assets.xcassets/AppIcon.appiconset/Icon-1024.png new file mode 100644 index 00000000..890732b5 Binary files /dev/null and b/Examples/Resources/Assets.xcassets/AppIcon.appiconset/Icon-1024.png differ diff --git a/Examples/Resources/Assets.xcassets/LaunchImage.launchimage/Contents.json b/Examples/Resources/Assets.xcassets/LaunchImage.launchimage/Contents.json deleted file mode 100644 index d746a609..00000000 --- a/Examples/Resources/Assets.xcassets/LaunchImage.launchimage/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "orientation" : "landscape", - "idiom" : "tv", - "extent" : "full-screen", - "minimum-system-version" : "11.0", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "tv", - "extent" : "full-screen", - "minimum-system-version" : "9.0", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Examples/Resources/Base.lproj/LaunchScreen.storyboard b/Examples/Resources/Base.lproj/LaunchScreen.storyboard index fdf3f97d..7fd29bfa 100644 --- a/Examples/Resources/Base.lproj/LaunchScreen.storyboard +++ b/Examples/Resources/Base.lproj/LaunchScreen.storyboard @@ -1,7 +1,10 @@ - - + + + - + + + @@ -9,14 +12,11 @@ - - - - - + + diff --git a/Examples/Resources/Info.plist b/Examples/Resources/Info.plist index 2f336fb5..43500eb1 100644 --- a/Examples/Resources/Info.plist +++ b/Examples/Resources/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0 + $(MARKETING_VERSION) CFBundleVersion 1 LSRequiresIPhoneOS diff --git a/Examples/Resources/UIKit+HeroExamples.swift b/Examples/Resources/UIKit+HeroExamples.swift index 43a5e796..fc8e096f 100644 --- a/Examples/Resources/UIKit+HeroExamples.swift +++ b/Examples/Resources/UIKit+HeroExamples.swift @@ -23,7 +23,7 @@ import UIKit public extension UIView { - @IBInspectable public var cornerRadius: CGFloat { + @IBInspectable var cornerRadius: CGFloat { get { return layer.cornerRadius } @@ -32,7 +32,7 @@ public extension UIView { layer.cornerRadius = newValue } } - @IBInspectable public var shadowRadius: CGFloat { + @IBInspectable var shadowRadius: CGFloat { get { return layer.shadowRadius } @@ -41,7 +41,7 @@ public extension UIView { layer.shadowRadius = newValue } } - @IBInspectable public var shadowOpacity: Float { + @IBInspectable var shadowOpacity: Float { get { return layer.shadowOpacity } @@ -50,7 +50,7 @@ public extension UIView { layer.shadowOpacity = newValue } } - @IBInspectable public var shadowColor: UIColor? { + @IBInspectable var shadowColor: UIColor? { get { return layer.shadowColor != nil ? UIColor(cgColor: layer.shadowColor!) : nil } @@ -59,7 +59,7 @@ public extension UIView { layer.shadowColor = newValue?.cgColor } } - @IBInspectable public var shadowOffset: CGSize { + @IBInspectable var shadowOffset: CGSize { get { return layer.shadowOffset } @@ -68,7 +68,7 @@ public extension UIView { layer.shadowOffset = newValue } } - @IBInspectable public var zPosition: CGFloat { + @IBInspectable var zPosition: CGFloat { get { return layer.zPosition } diff --git a/Hero.podspec b/Hero.podspec index 0975521e..ead42126 100644 --- a/Hero.podspec +++ b/Hero.podspec @@ -1,22 +1,36 @@ +# frozen_string_literal: true + Pod::Spec.new do |s| - s.name = "Hero" - s.version = "1.4.0" - s.summary = "Elegant transition library for iOS" - - s.description = <<-DESC - Hero is a library for building iOS view controller transitions. It provides a declarative layer on top of the UIKit's cumbersome transition APIs. Making custom transitions an easy task for developers. - DESC - - s.homepage = "https://github.com/HeroTransitions/Hero" - s.screenshots = "https://github.com/HeroTransitions/Hero/blob/master/Resources/Hero.png?raw=true" - s.license = 'MIT' - s.author = { "Luke" => "lzhaoyilun@gmail.com" } - s.source = { :git => "https://github.com/HeroTransitions/Hero.git", :tag => s.version.to_s } - - s.ios.deployment_target = '8.0' - s.tvos.deployment_target = '9.0' - - s.ios.frameworks = 'UIKit', 'Foundation' + s.name = 'Hero' + s.version = '1.5.0' + s.summary = 'Elegant transition library for iOS' + + s.description = <<-DESC + Hero is a library for building iOS view controller transitions. + It provides a declarative layer on top of the UIKit's cumbersome transition APIs. + Making custom transitions an easy task for developers. + DESC + + s.homepage = 'https://github.com/HeroTransitions/Hero' + s.screenshots = 'https://github.com/HeroTransitions/Hero/blob/master/Resources/Hero.png?raw=true' + s.documentation_url = 'https://herotransitions.github.io/Hero/' + s.screenshots = [ https://git.io/JeRkv, https://git.io/JeRke, https://git.io/JeRkf, https://git.io/JeRkJ] + s.license = { :type => 'MIT' } + s.author = { + 'Luke' => 'lzhaoyilun@gmail.com', + 'Joe Mattiello' => 'git@joemattiello.com' + } + s.source = { git: 'https://github.com/HeroTransitions/Hero.git', tag: s.version.to_s } + + s.cocoapods_version = '>= 1.4.0' + + s.ios.deployment_target = '8.0' + s.tvos.deployment_target = '9.0' + + s.ios.frameworks = 'UIKit', 'Foundation', 'QuartzCore', 'CoreGraphics', 'CoreMedia' + s.tvos.frameworks = 'UIKit', 'Foundation', 'QuartzCore', 'CoreGraphics', 'CoreMedia' + + s.swift_version = '4.2' s.requires_arc = true diff --git a/Hero.xcodeproj/project.pbxproj b/Hero.xcodeproj/project.pbxproj index df9d5779..b113df49 100644 --- a/Hero.xcodeproj/project.pbxproj +++ b/Hero.xcodeproj/project.pbxproj @@ -35,47 +35,27 @@ 2D1F7FE71E49DD90004D944B /* TVImageGalleryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D1F7FE61E49DD90004D944B /* TVImageGalleryViewController.swift */; }; 2D1F7FEA1E49DD90004D944B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2D1F7FE81E49DD90004D944B /* Main.storyboard */; }; 2D1F7FF21E49E043004D944B /* Hero.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D1F7FBF1E49DCB5004D944B /* Hero.framework */; }; - 3676E7E32059525F0003B9DF /* UIView+Hero.swift in Headers */ = {isa = PBXBuildFile; fileRef = B101B2C91E561408007E7112 /* UIView+Hero.swift */; settings = {ATTRIBUTES = (Public, ); }; }; - 3676E7E4205952620003B9DF /* UIViewController+Hero.swift in Headers */ = {isa = PBXBuildFile; fileRef = B101B2CD1E561421007E7112 /* UIViewController+Hero.swift */; settings = {ATTRIBUTES = (Public, ); }; }; - 3676E7E5205952690003B9DF /* UIView+Hero.swift in Headers */ = {isa = PBXBuildFile; fileRef = B101B2C91E561408007E7112 /* UIView+Hero.swift */; settings = {ATTRIBUTES = (Public, ); }; }; - 3676E7E62059526B0003B9DF /* UIViewController+Hero.swift in Headers */ = {isa = PBXBuildFile; fileRef = B101B2CD1E561421007E7112 /* UIViewController+Hero.swift */; settings = {ATTRIBUTES = (Public, ); }; }; 4D307DF420E3C6DC00DD9F65 /* HeroModifier+Advanced.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D307DF320E3C6DC00DD9F65 /* HeroModifier+Advanced.swift */; }; 4D307DF520E3C6DC00DD9F65 /* HeroModifier+Advanced.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D307DF320E3C6DC00DD9F65 /* HeroModifier+Advanced.swift */; }; 5C5442AA2004092500E1E326 /* HeroCompatible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C69728F2002CDBD001A5051 /* HeroCompatible.swift */; }; 5C6972902002CDBD001A5051 /* HeroCompatible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C69728F2002CDBD001A5051 /* HeroCompatible.swift */; }; 83043017B73BC66DBB920D5C /* Pods_HeroExamples.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EEE340F89FF0A49DD23A5A6E /* Pods_HeroExamples.framework */; }; - A304BF841DF2717900A03345 /* ImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A304BF831DF2717900A03345 /* ImageViewController.swift */; }; - A304BF8A1DF647FC00A03345 /* ImageCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = A304BF891DF647FC00A03345 /* ImageCells.swift */; }; A306D3B61E1C7A2E00B6C23A /* Hero.h in Headers */ = {isa = PBXBuildFile; fileRef = A306D3B41E1C7A2E00B6C23A /* Hero.h */; settings = {ATTRIBUTES = (Public, ); }; }; A306D3B91E1C7A2E00B6C23A /* Hero.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A306D3B21E1C7A2E00B6C23A /* Hero.framework */; }; A306D3BB1E1C7A2E00B6C23A /* Hero.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A306D3B21E1C7A2E00B6C23A /* Hero.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - A313499B1E1E2AED00EB5139 /* ImageLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = A313499A1E1E2AED00EB5139 /* ImageLibrary.swift */; }; A3298CDA1E304851005B06BB /* BasePreprocessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3298CD91E304851005B06BB /* BasePreprocessor.swift */; }; A32D2CF21E4A7DC3008D35FF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A33E60AB1DE761C90065CBD8 /* Assets.xcassets */; }; - A32D2CF81E4A80C3008D35FF /* ImageGalleryCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3499D9E1DF2024E0049B541 /* ImageGalleryCollectionViewController.swift */; }; - A32D2CF91E4A80C5008D35FF /* ImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A304BF831DF2717900A03345 /* ImageViewController.swift */; }; - A32D2CFA1E4A80C7008D35FF /* ImageLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = A313499A1E1E2AED00EB5139 /* ImageLibrary.swift */; }; - A32D2CFB1E4A80C9008D35FF /* ImageCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = A304BF891DF647FC00A03345 /* ImageCells.swift */; }; A32D2CFC1E4A80DC008D35FF /* UIKit+HeroExamples.swift in Sources */ = {isa = PBXBuildFile; fileRef = A33E60B61DE7621C0065CBD8 /* UIKit+HeroExamples.swift */; }; A32D2D021E4A8153008D35FF /* Basic.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A32D2D001E4A8153008D35FF /* Basic.storyboard */; }; A32D2D031E4A8153008D35FF /* ImageGallery.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A32D2D011E4A8153008D35FF /* ImageGallery.storyboard */; }; A32D2D051E4A81D5008D35FF /* ImageViewer.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A32D2D041E4A81D5008D35FF /* ImageViewer.storyboard */; }; - A32D2D0D1E4D545B008D35FF /* MenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A32D2D0C1E4D545B008D35FF /* MenuViewController.swift */; }; - A32D2D101E4E14DD008D35FF /* BuiltInTransitions.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A32D2D0F1E4E14DD008D35FF /* BuiltInTransitions.storyboard */; }; A32D2D131E501C4F008D35FF /* HeroModifier+HeroStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = A32D2D121E501C4F008D35FF /* HeroModifier+HeroStringConvertible.swift */; }; A32D2D141E501C4F008D35FF /* HeroModifier+HeroStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = A32D2D121E501C4F008D35FF /* HeroModifier+HeroStringConvertible.swift */; }; A33E60A51DE761C90065CBD8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A33E60A41DE761C90065CBD8 /* AppDelegate.swift */; }; - A33E60AA1DE761C90065CBD8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A33E60A81DE761C90065CBD8 /* Main.storyboard */; }; A33E60AC1DE761C90065CBD8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A33E60AB1DE761C90065CBD8 /* Assets.xcassets */; }; A33E60AF1DE761C90065CBD8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A33E60AD1DE761C90065CBD8 /* LaunchScreen.storyboard */; }; A33E60BD1DE7621C0065CBD8 /* UIKit+HeroExamples.swift in Sources */ = {isa = PBXBuildFile; fileRef = A33E60B61DE7621C0065CBD8 /* UIKit+HeroExamples.swift */; }; - A33E60BE1DE7621C0065CBD8 /* City.swift in Sources */ = {isa = PBXBuildFile; fileRef = A33E60B91DE7621C0065CBD8 /* City.swift */; }; - A33E60BF1DE7621C0065CBD8 /* CityGuideCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A33E60BA1DE7621C0065CBD8 /* CityGuideCell.swift */; }; - A33E60C01DE7621C0065CBD8 /* CityGuideViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A33E60BB1DE7621C0065CBD8 /* CityGuideViewController.swift */; }; - A33E60C11DE7621C0065CBD8 /* CityViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A33E60BC1DE7621C0065CBD8 /* CityViewController.swift */; }; - A3499D9F1DF2024E0049B541 /* ImageGalleryCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3499D9E1DF2024E0049B541 /* ImageGalleryCollectionViewController.swift */; }; A355CEC8D787CF71B0D7CBDA /* Pods_HeroTvOSExamples.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD2306FDA4E15ADA91EFED44 /* Pods_HeroTvOSExamples.framework */; }; - A35949181E1A2BE60095F407 /* LegacyExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A35949171E1A2BE60095F407 /* LegacyExampleViewController.swift */; }; A37D7B411E2C0C7E00AC1959 /* CascadePreprocessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = A37D7B3D1E2C0C7E00AC1959 /* CascadePreprocessor.swift */; }; A37D7B421E2C0C7E00AC1959 /* IgnoreSubviewModifiersPreprocessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = A37D7B3E1E2C0C7E00AC1959 /* IgnoreSubviewModifiersPreprocessor.swift */; }; A37D7B431E2C0C7E00AC1959 /* MatchPreprocessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = A37D7B3F1E2C0C7E00AC1959 /* MatchPreprocessor.swift */; }; @@ -117,17 +97,12 @@ B101B2CC1E56140B007E7112 /* UIView+Hero.swift in Sources */ = {isa = PBXBuildFile; fileRef = B101B2C91E561408007E7112 /* UIView+Hero.swift */; }; B101B2CE1E561421007E7112 /* UIViewController+Hero.swift in Sources */ = {isa = PBXBuildFile; fileRef = B101B2CD1E561421007E7112 /* UIViewController+Hero.swift */; }; B101B2CF1E561421007E7112 /* UIViewController+Hero.swift in Sources */ = {isa = PBXBuildFile; fileRef = B101B2CD1E561421007E7112 /* UIViewController+Hero.swift */; }; - B114B6901E412A0B0009CEDE /* AppleProductViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B114B68F1E412A0B0009CEDE /* AppleProductViewController.swift */; }; B1193AB61E525CD8005B1C87 /* HeroViewPropertyViewContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1193AB51E525CD8005B1C87 /* HeroViewPropertyViewContext.swift */; }; B1193AB71E525CD8005B1C87 /* HeroViewPropertyViewContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1193AB51E525CD8005B1C87 /* HeroViewPropertyViewContext.swift */; }; B1193AB91E525D12005B1C87 /* HeroAnimatorViewContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1193AB81E525D12005B1C87 /* HeroAnimatorViewContext.swift */; }; B1193ABA1E525D12005B1C87 /* HeroAnimatorViewContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1193AB81E525D12005B1C87 /* HeroAnimatorViewContext.swift */; }; - B1275D971E4C0D850099A0E9 /* PluginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1275D961E4C0D850099A0E9 /* PluginViewController.swift */; }; - B147F2651FAEA8F0006475A3 /* FirstViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B147F2631FAEA8F0006475A3 /* FirstViewController.swift */; }; - B147F2661FAEA8F0006475A3 /* Navigation.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B147F2641FAEA8F0006475A3 /* Navigation.storyboard */; }; B16197E01EF451C500A540D2 /* HeroTransition+Interactive.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16197DF1EF451C400A540D2 /* HeroTransition+Interactive.swift */; }; B16197E11EF451C500A540D2 /* HeroTransition+Interactive.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16197DF1EF451C400A540D2 /* HeroTransition+Interactive.swift */; }; - B16A21A01E4E3907007B8B4C /* AnimationSelectTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16A219F1E4E3907007B8B4C /* AnimationSelectTableViewController.swift */; }; B16B75311EF45A110018DBEF /* HeroTransitionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16B75301EF45A110018DBEF /* HeroTransitionState.swift */; }; B16B75321EF45A110018DBEF /* HeroTransitionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16B75301EF45A110018DBEF /* HeroTransitionState.swift */; }; B16B75341EF461090018DBEF /* HeroProgressRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16B75331EF461090018DBEF /* HeroProgressRunner.swift */; }; @@ -140,18 +115,6 @@ B17D888A1EF5A5330048D3E8 /* HeroTransition+UINavigationControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B17D88881EF5A5330048D3E8 /* HeroTransition+UINavigationControllerDelegate.swift */; }; B17D888C1EF5A5500048D3E8 /* HeroTransition+UIViewControllerTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B17D888B1EF5A5500048D3E8 /* HeroTransition+UIViewControllerTransitioningDelegate.swift */; }; B17D888D1EF5A5500048D3E8 /* HeroTransition+UIViewControllerTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B17D888B1EF5A5500048D3E8 /* HeroTransition+UIViewControllerTransitioningDelegate.swift */; }; - B185A4E61DFA6E0C00C3B85D /* ListTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B185A4E51DFA6E0C00C3B85D /* ListTableViewController.swift */; }; - B185A4E81DFA6FE200C3B85D /* GridCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B185A4E71DFA6FE200C3B85D /* GridCollectionViewController.swift */; }; - B19F76991E46C38E002DBC58 /* AppleHomePage.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B19F76981E46C38E002DBC58 /* AppleHomePage.storyboard */; }; - B19F769D1E46C3A2002DBC58 /* Basic.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B19F769A1E46C3A2002DBC58 /* Basic.storyboard */; }; - B19F769E1E46C3A2002DBC58 /* Menu.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B19F769B1E46C3A2002DBC58 /* Menu.storyboard */; }; - B19F769F1E46C3A2002DBC58 /* MusicPlayer.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B19F769C1E46C3A2002DBC58 /* MusicPlayer.storyboard */; }; - B19F76A11E46C3C2002DBC58 /* CityGuide.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B19F76A01E46C3C2002DBC58 /* CityGuide.storyboard */; }; - B19F76A31E46C3CB002DBC58 /* ListToGrid.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B19F76A21E46C3CB002DBC58 /* ListToGrid.storyboard */; }; - B19F76A61E46C3D7002DBC58 /* ImageGallery.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B19F76A41E46C3D7002DBC58 /* ImageGallery.storyboard */; }; - B19F76A71E46C3D7002DBC58 /* ImageViewer.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B19F76A51E46C3D7002DBC58 /* ImageViewer.storyboard */; }; - B19F76B11E46C449002DBC58 /* VideoPlayer.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B19F76AF1E46C449002DBC58 /* VideoPlayer.storyboard */; }; - B19F76B21E46C449002DBC58 /* VideoPlayerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B19F76B01E46C449002DBC58 /* VideoPlayerViewController.swift */; }; B1D816DF1EF5A5DF007B9776 /* HeroViewControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D816DE1EF5A5DF007B9776 /* HeroViewControllerDelegate.swift */; }; B1D816E01EF5A5DF007B9776 /* HeroViewControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D816DE1EF5A5DF007B9776 /* HeroViewControllerDelegate.swift */; }; B1D816E21EF5A630007B9776 /* HeroTransition+CustomTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D816E11EF5A630007B9776 /* HeroTransition+CustomTransition.swift */; }; @@ -164,6 +127,13 @@ B1D816EC1EF5A720007B9776 /* HeroTransition+Animate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D816EA1EF5A720007B9776 /* HeroTransition+Animate.swift */; }; B1D834041F02E7C0009E1E36 /* ConditionalPreprocessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D834031F02E7C0009E1E36 /* ConditionalPreprocessor.swift */; }; B1D834051F02E7C0009E1E36 /* ConditionalPreprocessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D834031F02E7C0009E1E36 /* ConditionalPreprocessor.swift */; }; + DBA05BB41A704A4A17967918 /* Pods_HeroTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 841FFA357ACB279D3F74CDEE /* Pods_HeroTests.framework */; }; + F482F0BE235D7808002E97ED /* UIColor+HexString.swift in Sources */ = {isa = PBXBuildFile; fileRef = F482F0BD235D7808002E97ED /* UIColor+HexString.swift */; }; + F482F0BF235D7808002E97ED /* UIColor+HexString.swift in Sources */ = {isa = PBXBuildFile; fileRef = F482F0BD235D7808002E97ED /* UIColor+HexString.swift */; }; + F482F0C0235D7A3A002E97ED /* ImageGalleryCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3499D9E1DF2024E0049B541 /* ImageGalleryCollectionViewController.swift */; }; + F482F0C1235D7A51002E97ED /* ImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A304BF831DF2717900A03345 /* ImageViewController.swift */; }; + F482F0C2235D7A5B002E97ED /* ImageCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = A304BF891DF647FC00A03345 /* ImageCells.swift */; }; + F482F0C3235D7A65002E97ED /* ImageLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = A313499A1E1E2AED00EB5139 /* ImageLibrary.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -215,6 +185,8 @@ 4D307DF320E3C6DC00DD9F65 /* HeroModifier+Advanced.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HeroModifier+Advanced.swift"; sourceTree = ""; }; 5C69728F2002CDBD001A5051 /* HeroCompatible.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeroCompatible.swift; sourceTree = ""; }; 5CD4F09A588E81DA75C2BE38 /* Pods-HeroExamples.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HeroExamples.debug.xcconfig"; path = "Pods/Target Support Files/Pods-HeroExamples/Pods-HeroExamples.debug.xcconfig"; sourceTree = ""; }; + 5CEC69C9A9A60129002FD931 /* Pods-HeroTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HeroTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-HeroTests/Pods-HeroTests.release.xcconfig"; sourceTree = ""; }; + 841FFA357ACB279D3F74CDEE /* Pods_HeroTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_HeroTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 86C87C73D89E75C8443B5071 /* Pods-HeroTvOSExamples.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HeroTvOSExamples.debug.xcconfig"; path = "Pods/Target Support Files/Pods-HeroTvOSExamples/Pods-HeroTvOSExamples.debug.xcconfig"; sourceTree = ""; }; A304BF831DF2717900A03345 /* ImageViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageViewController.swift; sourceTree = ""; }; A304BF891DF647FC00A03345 /* ImageCells.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageCells.swift; sourceTree = ""; }; @@ -312,7 +284,10 @@ B1D816EA1EF5A720007B9776 /* HeroTransition+Animate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HeroTransition+Animate.swift"; sourceTree = ""; }; B1D834031F02E7C0009E1E36 /* ConditionalPreprocessor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConditionalPreprocessor.swift; sourceTree = ""; }; C377744CBFF1E24426E80F55 /* Pods-HeroExamples.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HeroExamples.release.xcconfig"; path = "Pods/Target Support Files/Pods-HeroExamples/Pods-HeroExamples.release.xcconfig"; sourceTree = ""; }; + C51A6465EC2CB38D82F28B93 /* Pods-HeroTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HeroTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-HeroTests/Pods-HeroTests.debug.xcconfig"; sourceTree = ""; }; EEE340F89FF0A49DD23A5A6E /* Pods_HeroExamples.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_HeroExamples.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F482F0BD235D7808002E97ED /* UIColor+HexString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+HexString.swift"; sourceTree = ""; }; + F482F0C5235D7C4C002E97ED /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Main.strings; sourceTree = ""; }; FD2306FDA4E15ADA91EFED44 /* Pods_HeroTvOSExamples.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_HeroTvOSExamples.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -353,6 +328,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + DBA05BB41A704A4A17967918 /* Pods_HeroTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -364,6 +340,7 @@ children = ( EEE340F89FF0A49DD23A5A6E /* Pods_HeroExamples.framework */, FD2306FDA4E15ADA91EFED44 /* Pods_HeroTvOSExamples.framework */, + 841FFA357ACB279D3F74CDEE /* Pods_HeroTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -379,6 +356,7 @@ A37D7B4A1E2C0C9300AC1959 /* UIKit+Hero.swift */, B101B2C91E561408007E7112 /* UIView+Hero.swift */, B101B2CD1E561421007E7112 /* UIViewController+Hero.swift */, + F482F0BD235D7808002E97ED /* UIColor+HexString.swift */, ); path = Extensions; sourceTree = ""; @@ -438,6 +416,8 @@ C377744CBFF1E24426E80F55 /* Pods-HeroExamples.release.xcconfig */, 86C87C73D89E75C8443B5071 /* Pods-HeroTvOSExamples.debug.xcconfig */, A41D45F75C2C4244CC105281 /* Pods-HeroTvOSExamples.release.xcconfig */, + C51A6465EC2CB38D82F28B93 /* Pods-HeroTests.debug.xcconfig */, + 5CEC69C9A9A60129002FD931 /* Pods-HeroTests.release.xcconfig */, ); name = Pods; sourceTree = ""; @@ -676,8 +656,6 @@ buildActionMask = 2147483647; files = ( 2D1F7FDC1E49DD3C004D944B /* Hero.h in Headers */, - 3676E7E5205952690003B9DF /* UIView+Hero.swift in Headers */, - 3676E7E62059526B0003B9DF /* UIViewController+Hero.swift in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -686,8 +664,6 @@ buildActionMask = 2147483647; files = ( A306D3B61E1C7A2E00B6C23A /* Hero.h in Headers */, - 3676E7E32059525F0003B9DF /* UIView+Hero.swift in Headers */, - 3676E7E4205952620003B9DF /* UIViewController+Hero.swift in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -775,6 +751,7 @@ isa = PBXNativeTarget; buildConfigurationList = AF1E1B581E66822C00ECE039 /* Build configuration list for PBXNativeTarget "HeroTests" */; buildPhases = ( + 3673D17D1C42FCAD03311A99 /* [CP] Check Pods Manifest.lock */, AF1E1B4D1E66822C00ECE039 /* Sources */, AF1E1B4E1E66822C00ECE039 /* Frameworks */, AF1E1B4F1E66822C00ECE039 /* Resources */, @@ -835,6 +812,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, Base, ); @@ -883,20 +861,8 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - B19F76A11E46C3C2002DBC58 /* CityGuide.storyboard in Resources */, - B19F769D1E46C3A2002DBC58 /* Basic.storyboard in Resources */, - B19F769E1E46C3A2002DBC58 /* Menu.storyboard in Resources */, - B19F76B11E46C449002DBC58 /* VideoPlayer.storyboard in Resources */, - A32D2D101E4E14DD008D35FF /* BuiltInTransitions.storyboard in Resources */, - B19F76A61E46C3D7002DBC58 /* ImageGallery.storyboard in Resources */, - B147F2661FAEA8F0006475A3 /* Navigation.storyboard in Resources */, - B19F76A31E46C3CB002DBC58 /* ListToGrid.storyboard in Resources */, - B19F76991E46C38E002DBC58 /* AppleHomePage.storyboard in Resources */, - B19F769F1E46C3A2002DBC58 /* MusicPlayer.storyboard in Resources */, A33E60AF1DE761C90065CBD8 /* LaunchScreen.storyboard in Resources */, - B19F76A71E46C3D7002DBC58 /* ImageViewer.storyboard in Resources */, A33E60AC1DE761C90065CBD8 /* Assets.xcassets in Resources */, - A33E60AA1DE761C90065CBD8 /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -916,18 +882,38 @@ files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-HeroExamples/Pods-HeroExamples-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/ChameleonFramework/ChameleonFramework.framework", + "${PODS_ROOT}/Target Support Files/Pods-HeroExamples/Pods-HeroExamples-frameworks.sh", "${BUILT_PRODUCTS_DIR}/CollectionKit/CollectionKit.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ChameleonFramework.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CollectionKit.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-HeroExamples/Pods-HeroExamples-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HeroExamples/Pods-HeroExamples-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 3673D17D1C42FCAD03311A99 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-HeroTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; 89DC76B30A0BF7FD724C24D3 /* [CP] Check Pods Manifest.lock */ = { @@ -1041,13 +1027,14 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A32D2CFA1E4A80C7008D35FF /* ImageLibrary.swift in Sources */, - A32D2CF81E4A80C3008D35FF /* ImageGalleryCollectionViewController.swift in Sources */, + F482F0C0235D7A3A002E97ED /* ImageGalleryCollectionViewController.swift in Sources */, A32D2CFC1E4A80DC008D35FF /* UIKit+HeroExamples.swift in Sources */, 2D1F7FE71E49DD90004D944B /* TVImageGalleryViewController.swift in Sources */, - A32D2CF91E4A80C5008D35FF /* ImageViewController.swift in Sources */, + F482F0BF235D7808002E97ED /* UIColor+HexString.swift in Sources */, + F482F0C1235D7A51002E97ED /* ImageViewController.swift in Sources */, + F482F0C3235D7A65002E97ED /* ImageLibrary.swift in Sources */, + F482F0C2235D7A5B002E97ED /* ImageCells.swift in Sources */, 2D1F7FE51E49DD90004D944B /* AppDelegate.swift in Sources */, - A32D2CFB1E4A80C9008D35FF /* ImageCells.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1109,31 +1096,15 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A35949181E1A2BE60095F407 /* LegacyExampleViewController.swift in Sources */, - A33E60C01DE7621C0065CBD8 /* CityGuideViewController.swift in Sources */, - B114B6901E412A0B0009CEDE /* AppleProductViewController.swift in Sources */, + F482F0BE235D7808002E97ED /* UIColor+HexString.swift in Sources */, A33E60BD1DE7621C0065CBD8 /* UIKit+HeroExamples.swift in Sources */, A3D060C820834FF100E48927 /* AppStoreCardExample.swift in Sources */, - A3499D9F1DF2024E0049B541 /* ImageGalleryCollectionViewController.swift in Sources */, A3D060C420833D0400E48927 /* MatchExample.swift in Sources */, - B16A21A01E4E3907007B8B4C /* AnimationSelectTableViewController.swift in Sources */, - A33E60BF1DE7621C0065CBD8 /* CityGuideCell.swift in Sources */, A3D060C020833B0800E48927 /* BuiltInTransitionExample.swift in Sources */, A33E60A51DE761C90065CBD8 /* AppDelegate.swift in Sources */, - A33E60BE1DE7621C0065CBD8 /* City.swift in Sources */, - A304BF841DF2717900A03345 /* ImageViewController.swift in Sources */, - B185A4E61DFA6E0C00C3B85D /* ListTableViewController.swift in Sources */, A3D060C6208348CB00E48927 /* MatchInCollectionExample.swift in Sources */, - A33E60C11DE7621C0065CBD8 /* CityViewController.swift in Sources */, - B185A4E81DFA6FE200C3B85D /* GridCollectionViewController.swift in Sources */, - A32D2D0D1E4D545B008D35FF /* MenuViewController.swift in Sources */, - B147F2651FAEA8F0006475A3 /* FirstViewController.swift in Sources */, A3D060C220833B4E00E48927 /* ExampleBaseViewController.swift in Sources */, - A304BF8A1DF647FC00A03345 /* ImageCells.swift in Sources */, - B1275D971E4C0D850099A0E9 /* PluginViewController.swift in Sources */, A3B8C5672083376100E112F6 /* MainViewController.swift in Sources */, - B19F76B21E46C449002DBC58 /* VideoPlayerViewController.swift in Sources */, - A313499B1E1E2AED00EB5139 /* ImageLibrary.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1179,6 +1150,7 @@ isa = PBXVariantGroup; children = ( A33E60A91DE761C90065CBD8 /* Base */, + F482F0C5235D7C4C002E97ED /* en */, ); name = Main.storyboard; path = .; @@ -1210,6 +1182,7 @@ INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MARKETING_VERSION = 1.5.0; PRODUCT_BUNDLE_IDENTIFIER = com.lkzhao.Hero; PRODUCT_NAME = Hero; SDKROOT = appletvos; @@ -1236,6 +1209,7 @@ INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MARKETING_VERSION = 1.5.0; PRODUCT_BUNDLE_IDENTIFIER = com.lkzhao.Hero; PRODUCT_NAME = Hero; SDKROOT = appletvos; @@ -1258,6 +1232,7 @@ DEVELOPMENT_TEAM = 4VSEW78TKT; INFOPLIST_FILE = TvOSExamples/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.5.0; PRODUCT_BUNDLE_IDENTIFIER = com.lkzhao.HeroTvOSExamples; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; @@ -1277,6 +1252,7 @@ DEVELOPMENT_TEAM = 4VSEW78TKT; INFOPLIST_FILE = TvOSExamples/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.5.0; PRODUCT_BUNDLE_IDENTIFIER = com.lkzhao.HeroTvOSExamples; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; @@ -1303,6 +1279,7 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MARKETING_VERSION = 1.5.0; PRODUCT_BUNDLE_IDENTIFIER = com.lkzhao.Hero; PRODUCT_NAME = Hero; SKIP_INSTALL = YES; @@ -1329,6 +1306,7 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MARKETING_VERSION = 1.5.0; PRODUCT_BUNDLE_IDENTIFIER = com.lkzhao.Hero; PRODUCT_NAME = Hero; SKIP_INSTALL = YES; @@ -1456,12 +1434,12 @@ isa = XCBuildConfiguration; baseConfigurationReference = 5CD4F09A588E81DA75C2BE38 /* Pods-HeroExamples.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = 683UGRW72Z; INFOPLIST_FILE = "$(SRCROOT)/Examples/Resources/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.5.0; PRODUCT_BUNDLE_IDENTIFIER = com.lkzhao.HeroExamples; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 4.2; @@ -1473,12 +1451,12 @@ isa = XCBuildConfiguration; baseConfigurationReference = C377744CBFF1E24426E80F55 /* Pods-HeroExamples.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = 683UGRW72Z; INFOPLIST_FILE = "$(SRCROOT)/Examples/Resources/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.5.0; PRODUCT_BUNDLE_IDENTIFIER = com.lkzhao.HeroExamples; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 4.2; @@ -1488,6 +1466,7 @@ }; AF1E1B591E66822C00ECE039 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = C51A6465EC2CB38D82F28B93 /* Pods-HeroTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; DEVELOPMENT_TEAM = 4VSEW78TKT; @@ -1503,6 +1482,7 @@ }; AF1E1B5A1E66822C00ECE039 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 5CEC69C9A9A60129002FD931 /* Pods-HeroTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; DEVELOPMENT_TEAM = 4VSEW78TKT; diff --git a/LegacyExamples/Base.lproj/Main.storyboard b/LegacyExamples/Base.lproj/Main.storyboard index aa1e8f19..031561f4 100644 --- a/LegacyExamples/Base.lproj/Main.storyboard +++ b/LegacyExamples/Base.lproj/Main.storyboard @@ -1,12 +1,9 @@ - - - - + + - - + @@ -15,7 +12,7 @@ - + diff --git a/LegacyExamples/Examples/AppleHomePage/AppleHomePage.storyboard b/LegacyExamples/Examples/AppleHomePage/AppleHomePage.storyboard index 9912ff20..0b9f95d4 100644 --- a/LegacyExamples/Examples/AppleHomePage/AppleHomePage.storyboard +++ b/LegacyExamples/Examples/AppleHomePage/AppleHomePage.storyboard @@ -1,11 +1,9 @@ - - - - + + - + @@ -56,7 +54,7 @@ - + @@ -66,7 +64,7 @@ SERIES 2 - + diff --git a/LegacyExamples/en.lproj/Main.strings b/LegacyExamples/en.lproj/Main.strings new file mode 100644 index 00000000..4e36dfd6 --- /dev/null +++ b/LegacyExamples/en.lproj/Main.strings @@ -0,0 +1,12 @@ + +/* Class = "UILabel"; text = "Built-in"; ObjectID = "IIL-pF-BfF"; */ +"IIL-pF-BfF.text" = "Built-in"; + +/* Class = "UITabBarItem"; title = "Plugins"; ObjectID = "bDK-79-b3B"; */ +"bDK-79-b3B.title" = "Plugins"; + +/* Class = "UILabel"; text = "HeroDebugPlugin"; ObjectID = "fUh-RG-Pga"; */ +"fUh-RG-Pga.text" = "HeroDebugPlugin"; + +/* Class = "UIViewController"; title = "Plugins"; ObjectID = "uv4-Wk-GeR"; */ +"uv4-Wk-GeR.title" = "Plugins"; diff --git a/Podfile b/Podfile index 34934364..8182c4de 100644 --- a/Podfile +++ b/Podfile @@ -3,8 +3,11 @@ target 'HeroExamples' do platform :ios, '9.0' use_frameworks! - pod "CollectionKit" - pod 'ChameleonFramework/Swift', :git => 'https://github.com/ViccAlexander/Chameleon.git' + pod 'CollectionKit' + + target 'HeroTests' do + inherit! :search_paths + end end target 'HeroTvOSExamples' do diff --git a/Podfile.lock b/Podfile.lock index 79235d32..cff3af08 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,32 +1,18 @@ PODS: - - ChameleonFramework/Default (2.1.0) - - ChameleonFramework/Swift (2.1.0): - - ChameleonFramework/Default - CollectionKit (2.2.0): - CollectionKit/Core (= 2.2.0) - CollectionKit/Core (2.2.0) DEPENDENCIES: - - ChameleonFramework/Swift (from `https://github.com/ViccAlexander/Chameleon.git`) - CollectionKit SPEC REPOS: - https://github.com/cocoapods/specs.git: + https://github.com/CocoaPods/Specs.git: - CollectionKit -EXTERNAL SOURCES: - ChameleonFramework: - :git: https://github.com/ViccAlexander/Chameleon.git - -CHECKOUT OPTIONS: - ChameleonFramework: - :commit: 6dd284bde21ea2e7f9fd89bc36f40df16e16369d - :git: https://github.com/ViccAlexander/Chameleon.git - SPEC CHECKSUMS: - ChameleonFramework: d21a3cc247abfe5e37609a283a8238b03575cf64 CollectionKit: 5caa5341860d4c9b748ebfeaab97530b2d02c7c0 -PODFILE CHECKSUM: 126cdb5cfac9a9e2d2e798696131fd8758b6c34d +PODFILE CHECKSUM: efc6b025c2cee81dcc6fa480009618ed1af56837 -COCOAPODS: 1.5.3 +COCOAPODS: 1.8.4 diff --git a/Sources/Extensions/CAMediaTimingFunction+Hero.swift b/Sources/Extensions/CAMediaTimingFunction+Hero.swift index e71ff4e1..3e093e0b 100644 --- a/Sources/Extensions/CAMediaTimingFunction+Hero.swift +++ b/Sources/Extensions/CAMediaTimingFunction+Hero.swift @@ -21,22 +21,23 @@ // THE SOFTWARE. import UIKit +import QuartzCore public extension CAMediaTimingFunction { // default - public static let linear = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear) - public static let easeIn = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeIn) - public static let easeOut = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut) - public static let easeInOut = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut) + static let linear = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear) + static let easeIn = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeIn) + static let easeOut = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut) + static let easeInOut = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut) // material - public static let standard = CAMediaTimingFunction(controlPoints: 0.4, 0.0, 0.2, 1.0) - public static let deceleration = CAMediaTimingFunction(controlPoints: 0.0, 0.0, 0.2, 1) - public static let acceleration = CAMediaTimingFunction(controlPoints: 0.4, 0.0, 1, 1) - public static let sharp = CAMediaTimingFunction(controlPoints: 0.4, 0.0, 0.6, 1) + static let standard = CAMediaTimingFunction(controlPoints: 0.4, 0.0, 0.2, 1.0) + static let deceleration = CAMediaTimingFunction(controlPoints: 0.0, 0.0, 0.2, 1) + static let acceleration = CAMediaTimingFunction(controlPoints: 0.4, 0.0, 1, 1) + static let sharp = CAMediaTimingFunction(controlPoints: 0.4, 0.0, 0.6, 1) // easing.net - public static let easeOutBack = CAMediaTimingFunction(controlPoints: 0.175, 0.885, 0.32, 1.275) + static let easeOutBack = CAMediaTimingFunction(controlPoints: 0.175, 0.885, 0.32, 1.275) static func from(name: String) -> CAMediaTimingFunction? { switch name { diff --git a/Sources/Extensions/CG+Hero.swift b/Sources/Extensions/CG+Hero.swift index 76db88c5..b3543743 100644 --- a/Sources/Extensions/CG+Hero.swift +++ b/Sources/Extensions/CG+Hero.swift @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -import MetalKit +import QuartzCore let π = CGFloat.pi @@ -40,25 +40,25 @@ internal struct KeySet { } internal extension CGSize { - internal var center: CGPoint { + var center: CGPoint { return CGPoint(x: width / 2, y: height / 2) } - internal var point: CGPoint { + var point: CGPoint { return CGPoint(x: width, y: height) } - internal func transform(_ t: CGAffineTransform) -> CGSize { + func transform(_ t: CGAffineTransform) -> CGSize { return self.applying(t) } - internal func transform(_ t: CATransform3D) -> CGSize { + func transform(_ t: CATransform3D) -> CGSize { return self.applying(CATransform3DGetAffineTransform(t)) } } internal extension CGRect { - internal var center: CGPoint { + var center: CGPoint { return CGPoint(x: origin.x + width / 2, y: origin.y + height / 2) } - internal var bounds: CGRect { + var bounds: CGRect { return CGRect(origin: CGPoint.zero, size: size) } init(center: CGPoint, size: CGSize) { @@ -66,81 +66,83 @@ internal extension CGRect { } } -extension CGFloat { - internal func clamp(_ a: CGFloat, _ b: CGFloat) -> CGFloat { +internal extension CGFloat { + func clamp(_ a: CGFloat, _ b: CGFloat) -> CGFloat { return self < a ? a : (self > b ? b : self) } } -extension TimeInterval { - internal func clamp(_ a: TimeInterval, _ b: TimeInterval) -> TimeInterval { + +internal extension TimeInterval { + func clamp(_ a: TimeInterval, _ b: TimeInterval) -> TimeInterval { return self < a ? a : (self > b ? b : self) } } -extension CGPoint { - internal func translate(_ dx: CGFloat, dy: CGFloat) -> CGPoint { + +internal extension CGPoint { + func translate(_ dx: CGFloat, dy: CGFloat) -> CGPoint { return CGPoint(x: self.x + dx, y: self.y + dy) } - internal func transform(_ t: CGAffineTransform) -> CGPoint { + func transform(_ t: CGAffineTransform) -> CGPoint { return self.applying(t) } - internal func transform(_ t: CATransform3D) -> CGPoint { + func transform(_ t: CATransform3D) -> CGPoint { return self.applying(CATransform3DGetAffineTransform(t)) } - internal func distance(_ b: CGPoint) -> CGFloat { + func distance(_ b: CGPoint) -> CGFloat { return sqrt(pow(self.x - b.x, 2) + pow(self.y - b.y, 2)) } - internal static func + (left: CGPoint, right: CGPoint) -> CGPoint { + static func + (left: CGPoint, right: CGPoint) -> CGPoint { return CGPoint(x: left.x + right.x, y: left.y + right.y) } - internal static func - (left: CGPoint, right: CGPoint) -> CGPoint { + static func - (left: CGPoint, right: CGPoint) -> CGPoint { return CGPoint(x: left.x - right.x, y: left.y - right.y) } - internal static func / (left: CGPoint, right: CGFloat) -> CGPoint { + static func / (left: CGPoint, right: CGFloat) -> CGPoint { return CGPoint(x: left.x / right, y: left.y / right) } - internal static func / (left: CGPoint, right: CGPoint) -> CGPoint { + static func / (left: CGPoint, right: CGPoint) -> CGPoint { return CGPoint(x: left.x / right.x, y: left.y / right.y) } - internal static func * (left: CGPoint, right: CGFloat) -> CGPoint { + static func * (left: CGPoint, right: CGFloat) -> CGPoint { return CGPoint(x: left.x * right, y: left.y * right) } - internal static func * (left: CGPoint, right: CGSize) -> CGPoint { + static func * (left: CGPoint, right: CGSize) -> CGPoint { return CGPoint(x: left.x * right.width, y: left.y * right.height) } - internal static func * (left: CGFloat, right: CGPoint) -> CGPoint { + static func * (left: CGFloat, right: CGPoint) -> CGPoint { return right * left } - internal static func * (left: CGPoint, right: CGPoint) -> CGPoint { + static func * (left: CGPoint, right: CGPoint) -> CGPoint { return CGPoint(x: left.x * right.x, y: left.y * right.y) } - internal static prefix func - (point: CGPoint) -> CGPoint { + static prefix func - (point: CGPoint) -> CGPoint { return .zero - point } - internal static func abs(_ p: CGPoint) -> CGPoint { + static func abs(_ p: CGPoint) -> CGPoint { return CGPoint(x: Swift.abs(p.x), y: Swift.abs(p.y)) } } -extension CGSize { - internal static func * (left: CGSize, right: CGFloat) -> CGSize { +internal extension CGSize { + static func * (left: CGSize, right: CGFloat) -> CGSize { return CGSize(width: left.width * right, height: left.height * right) } - internal static func * (left: CGSize, right: CGSize) -> CGSize { + static func * (left: CGSize, right: CGSize) -> CGSize { return CGSize(width: left.width * right.width, height: left.height * right.height) } - internal static func / (left: CGSize, right: CGSize) -> CGSize { + static func / (left: CGSize, right: CGSize) -> CGSize { return CGSize(width: left.width / right.width, height: left.height / right.height) } - internal static func / (left: CGPoint, right: CGSize) -> CGPoint { + static func / (left: CGPoint, right: CGSize) -> CGPoint { return CGPoint(x: left.x / right.width, y: left.y / right.height) } } diff --git a/Sources/Extensions/UIColor+HexString.swift b/Sources/Extensions/UIColor+HexString.swift new file mode 100644 index 00000000..2a6092c5 --- /dev/null +++ b/Sources/Extensions/UIColor+HexString.swift @@ -0,0 +1,33 @@ +// +// UIColor+HexString.swift +// Hero +// +// Created by Joseph Mattiello on 10/21/19. +// Copyright © 2019 Luke Zhao. All rights reserved. +// + +import UIKit + +extension UIColor { + convenience init?(hexString hex: String) { + var cString: String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased() + + if cString.hasPrefix("#") { + cString.remove(at: cString.startIndex) + } + + guard cString.count == 6 else { + return nil + } + + var rgbValue: UInt64 = 0 + Scanner(string: cString).scanHexInt64(&rgbValue) + + self.init( + red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0, + green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0, + blue: CGFloat(rgbValue & 0x0000FF) / 255.0, + alpha: CGFloat(1.0) + ) + } +} diff --git a/Sources/Extensions/UIView+Hero.swift b/Sources/Extensions/UIView+Hero.swift index 5f8de304..95cbb6e6 100644 --- a/Sources/Extensions/UIView+Hero.swift +++ b/Sources/Extensions/UIView+Hero.swift @@ -49,7 +49,7 @@ public extension HeroExtension where Base: UIView { Whenever a pair is discovered, Hero will automatically transit the views from source state to the destination state. */ - public var id: String? { + var id: String? { get { return objc_getAssociatedObject(base, &type(of: base).AssociatedKeys.heroID) as? String } set { objc_setAssociatedObject(base, &type(of: base).AssociatedKeys.heroID, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } @@ -58,7 +58,7 @@ public extension HeroExtension where Base: UIView { **isEnabled** allows to specify whether a view and its subviews should be consider for animations. If true, Hero will search through all the subviews for heroIds and modifiers. Defaults to true */ - public var isEnabled: Bool { + var isEnabled: Bool { get { return objc_getAssociatedObject(base, &type(of: base).AssociatedKeys.heroEnabled) as? Bool ?? true } set { objc_setAssociatedObject(base, &type(of: base).AssociatedKeys.heroEnabled, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } @@ -67,7 +67,7 @@ public extension HeroExtension where Base: UIView { **isEnabledForSubviews** allows to specify whether a view's subviews should be consider for animations. If true, Hero will search through all the subviews for heroIds and modifiers. Defaults to true */ - public var isEnabledForSubviews: Bool { + var isEnabledForSubviews: Bool { get { return objc_getAssociatedObject(base, &type(of: base).AssociatedKeys.heroEnabledForSubviews) as? Bool ?? true } set { objc_setAssociatedObject(base, &type(of: base).AssociatedKeys.heroEnabledForSubviews, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } @@ -75,7 +75,7 @@ public extension HeroExtension where Base: UIView { /** Use **modifiers** to specify animations alongside the main transition. Checkout `HeroModifier.swift` for available modifiers. */ - public var modifiers: [HeroModifier]? { + var modifiers: [HeroModifier]? { get { return objc_getAssociatedObject(base, &type(of: base).AssociatedKeys.heroModifiers) as? [HeroModifier] } set { objc_setAssociatedObject(base, &type(of: base).AssociatedKeys.heroModifiers, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } @@ -83,7 +83,7 @@ public extension HeroExtension where Base: UIView { /** **modifierString** provides another way to set **modifiers**. It can be assigned through storyboard. */ - public var modifierString: String? { + var modifierString: String? { get { fatalError("Reverse lookup is not supported") } set { modifiers = newValue?.parse() } } @@ -116,34 +116,34 @@ public extension UIView { } // TODO: can be moved to internal later (will still be accessible via IB) - @available(*, deprecated, message: "Use hero.id instead") + @available(*, renamed: "hero.id") @IBInspectable var heroID: String? { get { return hero.id } set { hero.id = newValue } } // TODO: can be moved to internal later (will still be accessible via IB) - @available(*, deprecated, message: "Use hero.isEnabled instead") + @available(*, renamed: "hero.isEnabled") @IBInspectable var isHeroEnabled: Bool { get { return hero.isEnabled } set { hero.isEnabled = newValue } } // TODO: can be moved to internal later (will still be accessible via IB) - @available(*, deprecated, message: "Use hero.isEnabledForSubviews instead") + @available(*, renamed: "hero.isEnabledForSubviews") @IBInspectable var isHeroEnabledForSubviews: Bool { get { return hero.isEnabledForSubviews } set { hero.isEnabledForSubviews = newValue } } - @available(*, deprecated, message: "Use hero.modifiers instead") - public var heroModifiers: [HeroModifier]? { + @available(*, renamed: "hero.modifiers") + var heroModifiers: [HeroModifier]? { get { return hero.modifiers } set { hero.modifiers = newValue } } // TODO: can be moved to internal later (will still be accessible via IB) - @available(*, deprecated, message: "Use hero.modifierString instead") + @available(*, renamed: "hero.modifierString") @IBInspectable var heroModifierString: String? { get { fatalError("Reverse lookup is not supported") } set { hero.modifiers = newValue?.parse() } @@ -188,7 +188,7 @@ public extension UIView { } } - @available(*, deprecated, message: "Use hero.storedAplha instead") + @available(*, renamed: "hero.storedAplha") internal var heroStoredAlpha: CGFloat? { get { return hero.storedAlpha } set { hero.storedAlpha = newValue } diff --git a/Sources/Extensions/UIViewController+Hero.swift b/Sources/Extensions/UIViewController+Hero.swift index 12b4717a..4670d868 100644 --- a/Sources/Extensions/UIViewController+Hero.swift +++ b/Sources/Extensions/UIViewController+Hero.swift @@ -54,19 +54,19 @@ public extension HeroExtension where Base: UIViewController { } /// default hero animation type for presenting & dismissing modally - public var modalAnimationType: HeroDefaultAnimationType { + var modalAnimationType: HeroDefaultAnimationType { get { return config.modalAnimation } set { config.modalAnimation = newValue } } // TODO: can be moved to internal later (will still be accessible via IB) - public var modalAnimationTypeString: String? { + var modalAnimationTypeString: String? { get { return config.modalAnimation.label } set { config.modalAnimation = newValue?.parseOne() ?? .auto } } // TODO: can be moved to internal later (will still be accessible via IB) - public var isEnabled: Bool { + var isEnabled: Bool { get { return base.transitioningDelegate is HeroTransition } @@ -100,7 +100,7 @@ public extension UIViewController { static var heroConfig = "heroConfig" } - @available(*, deprecated, message: "Use hero.config instead") + @available(*, renamed: "hero.config") internal var heroConfig: HeroViewControllerConfig { get { return hero.config } set { hero.config = newValue } @@ -116,26 +116,26 @@ public extension UIViewController { set { hero.config.previousTabBarDelegate = newValue } } - @available(*, deprecated, message: "Use hero.storedSnapshot instead") + @available(*, renamed: "hero.storedSnapshot") internal var heroStoredSnapshot: UIView? { get { return hero.config.storedSnapshot } set { hero.config.storedSnapshot = newValue } } - @available(*, deprecated, message: "Use hero.modalAnimationType instead") - public var heroModalAnimationType: HeroDefaultAnimationType { + @available(*, renamed: "hero.modalAnimationType") + var heroModalAnimationType: HeroDefaultAnimationType { get { return hero.modalAnimationType } set { hero.modalAnimationType = newValue } } - @available(*, deprecated, message: "Use hero.modalAnimationTypeString instead") - @IBInspectable public var heroModalAnimationTypeString: String? { + @available(*, renamed: "hero.modalAnimationTypeString") + @IBInspectable var heroModalAnimationTypeString: String? { get { return hero.modalAnimationTypeString } set { hero.modalAnimationTypeString = newValue } } - @available(*, deprecated, message: "Use hero.isEnabled instead") - @IBInspectable public var isHeroEnabled: Bool { + @available(*, renamed: "hero.isEnabled") + @IBInspectable var isHeroEnabled: Bool { get { return hero.isEnabled } set { hero.isEnabled = newValue } } @@ -144,26 +144,26 @@ public extension UIViewController { public extension HeroExtension where Base: UINavigationController { /// default hero animation type for push and pop within the navigation controller - public var navigationAnimationType: HeroDefaultAnimationType { + var navigationAnimationType: HeroDefaultAnimationType { get { return config.navigationAnimation } set { config.navigationAnimation = newValue } } - public var navigationAnimationTypeString: String? { + var navigationAnimationTypeString: String? { get { return config.navigationAnimation.label } set { config.navigationAnimation = newValue?.parseOne() ?? .auto } } } extension UINavigationController { - @available(*, deprecated, message: "Use hero.navigationAnimationType instead") + @available(*, renamed: "hero.navigationAnimationType") public var heroNavigationAnimationType: HeroDefaultAnimationType { get { return hero.navigationAnimationType } set { hero.navigationAnimationType = newValue } } // TODO: can be moved to internal later (will still be accessible via IB) - @available(*, deprecated, message: "Use hero.navigationAnimationTypeString instead") + @available(*, renamed: "hero.navigationAnimationTypeString") @IBInspectable public var heroNavigationAnimationTypeString: String? { get { return hero.navigationAnimationTypeString } set { hero.navigationAnimationTypeString = newValue } @@ -173,27 +173,27 @@ extension UINavigationController { public extension HeroExtension where Base: UITabBarController { /// default hero animation type for switching tabs within the tab bar controller - public var tabBarAnimationType: HeroDefaultAnimationType { + var tabBarAnimationType: HeroDefaultAnimationType { get { return config.tabBarAnimation } set { config.tabBarAnimation = newValue } } - public var tabBarAnimationTypeString: String? { + var tabBarAnimationTypeString: String? { get { return config.tabBarAnimation.label } set { config.tabBarAnimation = newValue?.parseOne() ?? .auto } } } -extension UITabBarController { - @available(*, deprecated, message: "Use hero.tabBarAnimationType instead") - public var heroTabBarAnimationType: HeroDefaultAnimationType { +public extension UITabBarController { + @available(*, renamed: "hero.tabBarAnimationType") + var heroTabBarAnimationType: HeroDefaultAnimationType { get { return hero.tabBarAnimationType } set { hero.tabBarAnimationType = newValue } } // TODO: can be moved to internal later (will still be accessible via IB) - @available(*, deprecated, message: "Use hero.tabBarAnimationTypeString instead") - @IBInspectable public var heroTabBarAnimationTypeString: String? { + @available(*, renamed: "hero.tabBarAnimationTypeString") + @IBInspectable var heroTabBarAnimationTypeString: String? { get { return hero.tabBarAnimationTypeString } set { hero.tabBarAnimationTypeString = newValue } } @@ -205,7 +205,7 @@ public extension HeroExtension where Base: UIViewController { Dismiss the current view controller with animation. Will perform a navigationController.popViewController if the current view controller is contained inside a navigationController */ - public func dismissViewController(completion: (() -> Void)? = nil) { + func dismissViewController(completion: (() -> Void)? = nil) { if let navigationController = base.navigationController, navigationController.viewControllers.first != base { navigationController.popViewController(animated: true) } else { @@ -216,33 +216,33 @@ public extension HeroExtension where Base: UIViewController { /** Unwind to the root view controller using Hero */ - public func unwindToRootViewController() { + func unwindToRootViewController() { unwindToViewController { $0.presentingViewController == nil } } /** Unwind to a specific view controller using Hero */ - public func unwindToViewController(_ toViewController: UIViewController) { + func unwindToViewController(_ toViewController: UIViewController) { unwindToViewController { $0 == toViewController } } - public func unwindToViewController(withSelector: Selector) { + func unwindToViewController(withSelector: Selector) { unwindToViewController { $0.responds(to: withSelector) } } /** Unwind to a view controller with given class using Hero */ - public func unwindToViewController(withClass: AnyClass) { + func unwindToViewController(withClass: AnyClass) { unwindToViewController { $0.isKind(of: withClass) } } /** Unwind to a view controller that the matchBlock returns true on. */ - public func unwindToViewController(withMatchBlock: (UIViewController) -> Bool) { - var target: UIViewController? = nil + func unwindToViewController(withMatchBlock: (UIViewController) -> Bool) { + var target: UIViewController? var current: UIViewController? = base while target == nil && current != nil { @@ -295,7 +295,7 @@ public extension HeroExtension where Base: UIViewController { /** Replace the current view controller with another VC on the navigation/modal stack. */ - public func replaceViewController(with next: UIViewController, completion: (() -> Void)? = nil) { + func replaceViewController(with next: UIViewController, completion: (() -> Void)? = nil) { let hero = next.transitioningDelegate as? HeroTransition ?? Hero.shared if hero.isTransitioning { @@ -332,49 +332,49 @@ public extension HeroExtension where Base: UIViewController { } extension UIViewController { - @available(*, deprecated: 0.1.4, message: "use hero.dismissViewController instead") + @available(*, renamed: "hero.dismissViewController") @IBAction public func ht_dismiss(_ sender: UIView) { hero.dismissViewController() } - @available(*, deprecated: 0.1.4, message: "use hero.replaceViewController(with:) instead") + @available(*, renamed: "hero.replaceViewController(with:)") public func heroReplaceViewController(with next: UIViewController) { hero.replaceViewController(with: next) } // TODO: can be moved to internal later (will still be accessible via IB) - @available(*, deprecated, message: "Use hero.dismissViewController instead") + @available(*, renamed: "hero.dismissViewController") @IBAction public func hero_dismissViewController() { hero.dismissViewController() } // TODO: can be moved to internal later (will still be accessible via IB) - @available(*, deprecated, message: "Use hero.unwindToRootViewController instead") + @available(*, renamed: "hero.unwindToRootViewController") @IBAction public func hero_unwindToRootViewController() { hero.unwindToRootViewController() } - @available(*, deprecated, message: "Use hero.unwindToViewController(_:) instead") + @available(*, renamed: "hero.unwindToViewController(_:)") public func hero_unwindToViewController(_ toViewController: UIViewController) { hero.unwindToViewController(toViewController) } - @available(*, deprecated, message: "Use hero.unwindToViewController(withSelector:) instead") + @available(*, renamed: "hero.unwindToViewController(withSelector:)") public func hero_unwindToViewController(withSelector: Selector) { hero.unwindToViewController(withSelector: withSelector) } - @available(*, deprecated, message: "Use hero_unwindToViewController(withClass:) instead") + @available(*, renamed: "hero_unwindToViewController(withClass:)") public func hero_unwindToViewController(withClass: AnyClass) { hero.unwindToViewController(withClass: withClass) } - @available(*, deprecated, message: "Use hero.unwindToViewController(withMatchBlock:) instead") + @available(*, renamed: "hero.unwindToViewController(withMatchBlock:)") public func hero_unwindToViewController(withMatchBlock: (UIViewController) -> Bool) { hero.unwindToViewController(withMatchBlock: withMatchBlock) } - @available(*, deprecated, message: "Use hero.replaceViewController(with:) instead") + @available(*, renamed: "hero.replaceViewController(with:)") public func hero_replaceViewController(with next: UIViewController) { hero.replaceViewController(with: next) } diff --git a/Sources/HeroCompatible.swift b/Sources/HeroCompatible.swift index 861fb192..c95e1afe 100644 --- a/Sources/HeroCompatible.swift +++ b/Sources/HeroCompatible.swift @@ -29,8 +29,9 @@ public protocol HeroCompatible { } public extension HeroCompatible { - public var hero: HeroExtension { + var hero: HeroExtension { get { return HeroExtension(self) } + // swiftlint:disable unused_setter_value set { } } } diff --git a/Sources/Info.plist b/Sources/Info.plist index 9f9016ae..ec0cc7b0 100644 --- a/Sources/Info.plist +++ b/Sources/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.3.1 + $(MARKETING_VERSION) CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/Sources/Parser/Regex.swift b/Sources/Parser/Regex.swift index 50c1f92c..81528f7b 100755 --- a/Sources/Parser/Regex.swift +++ b/Sources/Parser/Regex.swift @@ -10,7 +10,7 @@ import Foundation var expressions = [String: NSRegularExpression]() public extension String { - public func match(regex: String) -> (String, CountableRange)? { + func match(regex: String) -> (String, CountableRange)? { let expression: NSRegularExpression if let exists = expressions[regex] { expression = exists diff --git a/Sources/Preprocessors/CascadePreprocessor.swift b/Sources/Preprocessors/CascadePreprocessor.swift index 17fefc19..d3d40a13 100644 --- a/Sources/Preprocessors/CascadePreprocessor.swift +++ b/Sources/Preprocessors/CascadePreprocessor.swift @@ -29,8 +29,8 @@ public enum CascadeDirection { case bottomToTop case leftToRight case rightToLeft - case radial(center:CGPoint) - case inverseRadial(center:CGPoint) + case radial(center: CGPoint) + case inverseRadial(center: CGPoint) var comparator: (UIView, UIView) -> Bool { switch self { case .topToBottom: @@ -70,11 +70,11 @@ public enum CascadeDirection { return nil } } - + public static var leadingToTrailing: CascadeDirection { return UIApplication.shared.userInterfaceLayoutDirection == .leftToRight ? .leftToRight : .rightToLeft } - + public static var trailingToLeading: CascadeDirection { return UIApplication.shared.userInterfaceLayoutDirection == .leftToRight ? .rightToLeft : .leftToRight } diff --git a/Sources/Preprocessors/DefaultAnimationPreprocessor.swift b/Sources/Preprocessors/DefaultAnimationPreprocessor.swift index 622e2bac..048af948 100644 --- a/Sources/Preprocessors/DefaultAnimationPreprocessor.swift +++ b/Sources/Preprocessors/DefaultAnimationPreprocessor.swift @@ -36,16 +36,16 @@ public enum HeroDefaultAnimationType { default: return nil } } - + public static var leading: Direction { return UIApplication.shared.userInterfaceLayoutDirection == .leftToRight ? .left : .right } - + public static var trailing: Direction { return UIApplication.shared.userInterfaceLayoutDirection == .leftToRight ? .right : .left } } - + public enum Strategy { case forceLeftToRight, forceRightToLeft, userInterface func defaultDirection(presenting: Bool) -> Direction { @@ -59,7 +59,7 @@ public enum HeroDefaultAnimationType { } } } - + case auto case push(direction: Direction) case pull(direction: Direction) diff --git a/Sources/SwiftSupport.swift b/Sources/SwiftSupport.swift index d2b4507f..b601818c 100644 --- a/Sources/SwiftSupport.swift +++ b/Sources/SwiftSupport.swift @@ -47,6 +47,3 @@ extension RunLoop { } } #endif - - - diff --git a/Sources/Transition/HeroTransition+CustomTransition.swift b/Sources/Transition/HeroTransition+CustomTransition.swift index 150c1bef..7a01131b 100644 --- a/Sources/Transition/HeroTransition+CustomTransition.swift +++ b/Sources/Transition/HeroTransition+CustomTransition.swift @@ -24,7 +24,7 @@ import UIKit // custom transition helper, used in hero_replaceViewController public extension HeroTransition { - public func transition(from: UIViewController, to: UIViewController, in view: UIView, completion: ((Bool) -> Void)? = nil) { + func transition(from: UIViewController, to: UIViewController, in view: UIView, completion: ((Bool) -> Void)? = nil) { guard !isTransitioning else { return } self.state = .notified isPresenting = true diff --git a/Sources/Transition/HeroTransition.swift b/Sources/Transition/HeroTransition.swift index fc5d2167..a645db8d 100644 --- a/Sources/Transition/HeroTransition.swift +++ b/Sources/Transition/HeroTransition.swift @@ -70,11 +70,11 @@ open class HeroTransition: NSObject { public var isTransitioning: Bool { return state != .possible } public internal(set) var isPresenting: Bool = true - @available(*, deprecated, message: "Use isTransitioning instead") + @available(*, renamed: "isTransitioning") public var transitioning: Bool { return isTransitioning } - @available(*, deprecated, message: "Use isPresenting instead") + @available(*, renamed: "isPresenting") public var presenting: Bool { return isPresenting } diff --git a/TvOSExamples/Info.plist b/TvOSExamples/Info.plist index 4327cd91..125dcc5b 100644 --- a/TvOSExamples/Info.plist +++ b/TvOSExamples/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0 + $(MARKETING_VERSION) CFBundleVersion 1 LSRequiresIPhoneOS diff --git a/docs/ChangeLog.md b/docs/ChangeLog.md deleted file mode 100644 index 7ed93124..00000000 --- a/docs/ChangeLog.md +++ /dev/null @@ -1,193 +0,0 @@ -## 0.3.2 -* new properties for specifying default animations -```swift -extension UIViewController { - /// default hero animation type for presenting & dismissing modally - public var heroModalAnimationType: HeroDefaultAnimationType -} -extension UINavigationController { - /// default hero animation type for push and pop within the navigation controller - public var heroNavigationAnimationType: HeroDefaultAnimationType -} -extension UITabBarController { - /// default hero animation type for switching tabs within the tab bar controller - public var heroTabBarAnimationType: HeroDefaultAnimationType -} -``` -* bug fixes https://github.com/lkzhao/Hero/issues/90 https://github.com/lkzhao/Hero/issues/85 -* basic support for animating UIVisualEffectView's effect property in iOS 10 - -## 0.3.0 -* support `.overFullScreen` modalPresentationStyle -* Implement many new default transitions. (fade was the only default transition before this update) - - * **.push(direction: Direction)** - * **.pull(direction: Direction)** - * **.cover(direction: Direction)** - * **.uncover(direction: Direction)** - * **.slide(direction: Direction)** - * **.zoomSlide(direction: Direction)** - * **.pageIn(direction: Direction)** - * **.pageOut(direction: Direction)** - -* a few new modifiers: - * **beginWith(modifiers:[HeroModifier])** - * **durationMatchLongest** - * **overlay(color:UIColor, opacity:CGFloat)** - * **masksToBounds(_ masksToBounds: Bool)** - -## 0.1.7 -* fix a zPosition regression introduced in 0.1.5 - -## 0.1.6 -* fix a regression introduced in 0.1.5 where animation for matched view might appear inconsistent. - -## 0.1.5 -* fix a bug where toViewController's delegate callbacks are not being called -* fix a bug where fromViewController's delegate callbacks receive incorrect parameters. -* Add **useScaleBasedSizeChange** modifier. - Force Hero use scale based size animation. This will convert all `.size` modifier into `.scale` modifier. - This is to help Hero animate layers that doesn't support bounds animation. Also gives better performance when animating. - -* fix a few bugs with `.useNoSnapshot` -* new video player example. - -## 0.1.4 -* fix a bug where changing orientation doesn't affect previous VC. https://github.com/lkzhao/Hero/issues/60 -* fix a bug where the presented view controller has incorrect frame. https://github.com/lkzhao/Hero/issues/63, https://github.com/lkzhao/Hero/issues/56 -* New **snapshot type** modifiers: - * **useOptimizedSnapshot** - - With this modifier, Hero will create snapshot optimized for different view type when animating. - For custom views or views with masking, useOptimizedSnapshot might create snapshots - that appear differently than the actual view. - In that case, use .useNormalSnapshot or .useSlowRenderSnapshot to disable the optimization. - * **useNormalSnapshot** - - Create snapshot using snapshotView(afterScreenUpdates:). - * **useLayerRenderSnapshot** - - Create snapshot using layer.render(in: currentContext). - This is slower than .useNormalSnapshot but gives more accurate snapshot for some views (eg. UIStackView). - * **useNoSnapshot** - - Force Hero to not create any snapshot when animating this view. Hence Hero will animate on the view directly. - This will mess up the view hierarchy. Therefore, view controllers have to rebuild its view structure after the transition finishes. - -* New navigation extension on UIViewController (mainly to support **unwinding**): - * **func hero_dismissViewController()** - - Dismiss the current view controller with animation. Will perform a navigationController.popViewController - if the current view controller is contained inside a navigationController. - * **func hero_replaceViewController(with:UIViewController)** - - Replace the current view controller with another VC on the navigation/modal stack. - * **func hero_unwindToRootViewController()** - - Unwind to the root view controller using Hero. - * **func hero_unwindToViewController(_ toViewController:)** - - Unwind to a specific view controller using Hero. - * **func hero_unwindToViewController(withSelector: Selector)** - - Unwind to a view controller that responds to the given selector using Hero. - * **func hero_unwindToViewController(withClass: AnyClass)** - - Unwind to a view controller with given class using Hero. - * **func hero_unwindToViewController(withMatchBlock: (UIViewController) -> Bool)** - - Unwind to a view controller that the match block returns true on. - -## 0.1.3 -* Support **local coordinate space**. - - | Global coordinate space | Local (parent's) coordinate space | - | ---- | ---- | - | Animating views are **not** affected by parent views' attributes | Animating views are affected by parent views' attributes | - | When parent view moves, subviews that have its own modifiers do **not** move with the parent view. I.e. they are being taken out of the view hierarchy. | When parent view moves, subviews that have its own modifiers move along with the parent view. I.e. similar to how a view behave when its parent view moves. | - | Used for matched views & views with `source` modifier. Global is the default prior to 0.1.3 | Local is the default coordinate space after 0.1.3 | - -* New **useGlobalCoordinateSpace** modifier. Force the view to use global coordinate space. I.e. won't move with its parent view. - -## 0.1.2 -* `HeroPlugin` returning .infinity duration will be treated as wanting interactive transition -* few bug fixes. -* Update plugin API protocol to be more concise. - -## 0.1.1 -* Swift Package Manager Support, Thanks to [@mRs-](https://github.com/mRs-) -* Bug fixes #41, #36, & #38 -* Cleaner navigation bar animation. -* Better alpha animation support. - -## 0.1.0 -* add **HeroModifier** class and **HeroTargetState** struct - * **HeroModifier** is a swift enum-like class that provides the same functionality of the original string-based **heroModifiers**. - * **HeroTargetState** is a struct that holds view state informations. It can be build from **[HeroModifier]**. Mostly used internally and for building **HeroPlugin**. -* change the original `heroModifiers:String?` to `heroModifierString:String?` **(breaking change!)** -* add `heroModifiers:[HeroModifier]?` to **UIView** -* add a shared singleton `Hero` object for controlling the interactive transition. Which can be accessed by `Hero.shared` -* few changes to the protocols - * protocol **HeroAnimator** - - ```swift - func temporarilySet(view:UIView, to modifiers:HeroModifiers) - // to - func temporarilySet(view:UIView, targetState:HeroTargetState) - ``` - * protocol **HeroViewControllerDelegate** - - ```swift - @objc optional func wantInteractiveHeroTransition(context:HeroInteractiveContext) -> Bool - // to - @objc optional func wantInteractiveHeroTransition() -> Bool - ``` - * remove **HeroInteractiveContext** protocol -* update **HeroPlugin** to conform to the new protocols definitions. -* rename a few modifiers: - * **curve** → **timingFunction** - * **sourceID** → **source** - * **clearSubviewModifiers** → **ignoreSubviewModifiers** -* fix a bug with `heroReplaceViewController` API. [PR 30](https://github.com/lkzhao/Hero/pull/30) -* fix a bug with **UIStackView** not animating correctly. [PR 22](https://github.com/lkzhao/Hero/pull/22) -* add **recursive** `ignoreSubviewModifiers` modifier -* add **radial** & **inverseRadial** cascade: - - - -### To migrate from previous versions: - -Do a whole-project **find & replace**(cmd+option+shift+F) for: - - * **heroModifiers** → **heroModifierString** - * **curve** → **timingFunction** - * **sourceID** → **source** - * **clearSubviewModifiers** → **ignoreSubviewModifiers** - - Remember to also replace these inside the storyboard. In code, please migrate to the new type-safe `heroModifiers`. It provides better type-checking and more functionality. - -## 0.0.5 -* Add live injection example -* Make `snapshotView` available to all HeroAnimators. -* Add `heroWillStartTransition` & `heroDidEndTransition` callbacks to `HeroViewControllerDelegate` -* Fix animation for UIStackView https://github.com/lkzhao/Hero/pull/18 -* Smoother UIImageView animation for bounds change https://github.com/lkzhao/Hero/pull/16 - -## 0.0.4 -* Add Carthage support - -## 0.0.3 -* Cleaner resume animation after an interactive transition. -* plugin API: `seekTo(progress:Double)` changed to `seekTo(timePassed:TimeInterval)` -* plugin API: `resume(progress:Double, reverse:Bool)` changed to `resume(timePassed:TimeInterval, reverse:Bool)` -* provides dynamic duration by default. - [material design(duration & timing)](https://material.io/guidelines/motion/duration-easing.html#duration-easing-dynamic-durations) - -## 0.0.2 -* rename `clearSubviewClasses` to `clearSubviewModifiers`. was a naming mistake. -* set default animation to be CABasicAnimation with the **Standard Curve** from [material design (easing)](https://material.io/guidelines/motion/duration-easing.html#duration-easing-natural-easing-curves). -* add the new **arc** effect from [material design (movement)](https://material.io/guidelines/motion/movement.html#movement-movement-within-screen-bounds). -* add **arc** effect to **Basic**, **Menu**, & **ListToGrid** examples. -* add the ability to show arc path in the Debug Plugin. -* ignore `HeroModifiers` for source view when matched with a target view with the same `HeroID` -* some small optimization & bug fixes \ No newline at end of file diff --git a/docs/Classes.html b/docs/Classes.html new file mode 100644 index 00000000..39344cc0 --- /dev/null +++ b/docs/Classes.html @@ -0,0 +1,821 @@ + + + + Classes Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Classes

+

The following classes are available globally.

+ +
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
    +
  • +
    + + + + Lexer + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class Lexer
    + +
    +
    + +
    +
    +
  • +
+
+
+ +
+
+
    +
  • +
    + + + + Parser + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class Parser
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + HeroTransition + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open class HeroTransition : NSObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Hero + +
    +
    +
    +
    +
    +
    +

    The singleton class/object for controlling interactive transitions.

    +
    Hero.shared
    +
    +

    Use the following methods for controlling the interactive transition:

    +
    func update(progress:Double)
    +func end()
    +func cancel()
    +func apply(modifiers:[HeroModifier], to view:UIView)
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class Hero : NSObject
    + +
    +
    + +
    +
    +
  • +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Classes/BinaryOpNode.html b/docs/Classes/BinaryOpNode.html new file mode 100644 index 00000000..3a440f25 --- /dev/null +++ b/docs/Classes/BinaryOpNode.html @@ -0,0 +1,388 @@ + + + + BinaryOpNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

BinaryOpNode

+
+
+
public class BinaryOpNode : ExprNode
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + lhs + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let lhs: ExprNode
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + rhs + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let rhs: ExprNode
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(name:lhs:rhs:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(name: String, lhs: ExprNode, rhs: ExprNode)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Classes/CallNode.html b/docs/Classes/CallNode.html new file mode 100644 index 00000000..e9afa8ea --- /dev/null +++ b/docs/Classes/CallNode.html @@ -0,0 +1,358 @@ + + + + CallNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

CallNode

+
+
+
public class CallNode : ExprNode
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + arguments + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let arguments: [ExprNode]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(name:arguments:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(name: String, arguments: [ExprNode])
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Classes/ExprNode.html b/docs/Classes/ExprNode.html new file mode 100644 index 00000000..a91c1514 --- /dev/null +++ b/docs/Classes/ExprNode.html @@ -0,0 +1,387 @@ + + + + ExprNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

ExprNode

+
+
+
public class ExprNode : CustomStringConvertible, Equatable
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + range + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var range: CountableRange<Int>
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(name:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(name: String)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Classes/FunctionNode.html b/docs/Classes/FunctionNode.html new file mode 100644 index 00000000..c8350ea1 --- /dev/null +++ b/docs/Classes/FunctionNode.html @@ -0,0 +1,388 @@ + + + + FunctionNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

FunctionNode

+
+
+
public class FunctionNode : ExprNode
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Classes/Hero.html b/docs/Classes/Hero.html new file mode 100644 index 00000000..e3a4a05b --- /dev/null +++ b/docs/Classes/Hero.html @@ -0,0 +1,306 @@ + + + + Hero Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Hero

+
+
+
public class Hero : NSObject
+ +
+
+

The singleton class/object for controlling interactive transitions.

+
Hero.shared
+
+

Use the following methods for controlling the interactive transition:

+
func update(progress:Double)
+func end()
+func cancel()
+func apply(modifiers:[HeroModifier], to view:UIView)
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + shared + +
    +
    +
    +
    +
    +
    +

    Shared singleton object for controlling the transition

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var shared: HeroTransition
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Classes/HeroContext.html b/docs/Classes/HeroContext.html new file mode 100644 index 00000000..a7482f4c --- /dev/null +++ b/docs/Classes/HeroContext.html @@ -0,0 +1,618 @@ + + + + HeroContext Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroContext

+
+
+
public class HeroContext
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + container + +
    +
    +
    +
    +
    +
    +

    The container holding all of the animating views

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let container: UIView
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + fromViews + +
    +
    +
    +
    +
    +
    +

    A flattened list of all views from source ViewController

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var fromViews: [UIView]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + toViews + +
    +
    +
    +
    +
    +
    +

    A flattened list of all views from destination ViewController

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var toViews: [UIView]
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + sourceView(for:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sourceView(for heroID: String) -> UIView?
    + +
    +
    +
    +

    Return Value

    +

    a source view matching the heroID, nil if not found

    +
    + +
    +
    +
  • +
  • +
    + + + + destinationView(for:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func destinationView(for heroID: String) -> UIView?
    + +
    +
    +
    +

    Return Value

    +

    a destination view matching the heroID, nil if not found

    +
    + +
    +
    +
  • +
  • +
    + + + + pairedView(for:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func pairedView(for view: UIView) -> UIView?
    + +
    +
    +
    +

    Return Value

    +

    a view with the same heroID, but on different view controller, nil if not found

    +
    + +
    +
    +
  • +
  • +
    + + + + snapshotView(for:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func snapshotView(for view: UIView) -> UIView
    + +
    +
    +
    +

    Return Value

    +

    a snapshot view for animation

    +
    + +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript(view: UIView) -> HeroTargetState? { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + clean() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func clean()
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + hide(view:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func hide(view: UIView)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + unhide(view:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func unhide(view: UIView)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Classes/HeroDebugPlugin.html b/docs/Classes/HeroDebugPlugin.html new file mode 100644 index 00000000..cb8e7adc --- /dev/null +++ b/docs/Classes/HeroDebugPlugin.html @@ -0,0 +1,373 @@ + + + + HeroDebugPlugin Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ + +
+ + + + diff --git a/docs/Classes/HeroExtension.html b/docs/Classes/HeroExtension.html new file mode 100644 index 00000000..3ba263ea --- /dev/null +++ b/docs/Classes/HeroExtension.html @@ -0,0 +1,895 @@ + + + + HeroExtension Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroExtension

+
+
+
public class HeroExtension<Base>
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + base + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let base: Base
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + id + +
    +
    +
    +
    +
    +
    +

    ID is the identifier for the view. When doing a transition between two view controllers, +Hero will search through all the subviews for both view controllers and matches views with the same heroID.

    + +

    Whenever a pair is discovered, +Hero will automatically transit the views from source state to the destination state.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var id: String? { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isEnabled + +
    +
    +
    +
    +
    +
    +

    isEnabled allows to specify whether a view and its subviews should be consider for animations. +If true, Hero will search through all the subviews for heroIds and modifiers. Defaults to true

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isEnabled: Bool { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isEnabledForSubviews + +
    +
    +
    +
    +
    +
    +

    isEnabledForSubviews allows to specify whether a view’s subviews should be consider for animations. +If true, Hero will search through all the subviews for heroIds and modifiers. Defaults to true

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isEnabledForSubviews: Bool { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + modifiers + +
    +
    +
    +
    +
    +
    +

    Use modifiers to specify animations alongside the main transition. Checkout HeroModifier.swift for available modifiers.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var modifiers: [HeroModifier]? { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + modifierString + +
    +
    +
    +
    +
    +
    +

    modifierString** provides another way to set modifiers. It can be assigned through storyboard.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var modifierString: String? { get set }
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + modalAnimationType + +
    +
    +
    +
    +
    +
    +

    default hero animation type for presenting & dismissing modally

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var modalAnimationType: HeroDefaultAnimationType { get set }
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var modalAnimationTypeString: String? { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isEnabled + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isEnabled: Bool { get set }
    + +
    +
    + +
    +
    +
  • +
+
+
+ +
+
+ +
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Dismiss the current view controller with animation. Will perform a navigationController.popViewController +if the current view controller is contained inside a navigationController

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func dismissViewController(completion: (() -> Void)? = nil)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Unwind to the root view controller using Hero

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func unwindToRootViewController()
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Unwind to a specific view controller using Hero

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func unwindToViewController(_ toViewController: UIViewController)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func unwindToViewController(withSelector: Selector)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Unwind to a view controller with given class using Hero

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func unwindToViewController(withClass: AnyClass)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Unwind to a view controller that the matchBlock returns true on.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func unwindToViewController(withMatchBlock: (UIViewController) -> Bool)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Replace the current view controller with another VC on the navigation/modal stack.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func replaceViewController(with next: UIViewController, completion: (() -> Void)? = nil)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Classes/HeroModifier.html b/docs/Classes/HeroModifier.html new file mode 100644 index 00000000..6280f738 --- /dev/null +++ b/docs/Classes/HeroModifier.html @@ -0,0 +1,2650 @@ + + + + HeroModifier Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroModifier

+
+
+
public final class HeroModifier
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
    +
  • +
    + + + + beginWith(_:) + +
    +
    +
    +
    +
    +
    +

    Apply modifiers directly to the view at the start of the transition. +The modifiers supplied here won’t be animated. +For source views, modifiers are set directly at the beginning of the animation. +For destination views, they replace the target state (final appearance).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func beginWith(_ modifiers: [HeroModifier]) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + beginWith(modifiers:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func beginWith(modifiers: [HeroModifier]) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + beginWith(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func beginWith(_ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Use global coordinate space.

    + +

    When using global coordinate space. The view become a independent view that is not a subview of any view. +It won’t move when its parent view moves, and won’t be affected by parent view’s attributes.

    + +

    When a view is matched, this is automatically enabled. +The source modifier will also enable this.

    + +

    Global coordinate space is default for all views prior to version 0.1.3

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var useGlobalCoordinateSpace: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    ignore all heroModifiers attributes for a view’s direct subviews.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var ignoreSubviewModifiers: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    ignore all heroModifiers attributes for a view’s subviews.

    + +
      +
    • recursive: if false, will only ignore direct subviews’ modifiers. default false.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func ignoreSubviewModifiers(recursive: Bool = false) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + useOptimizedSnapshot + +
    +
    +
    +
    +
    +
    +

    Will create snapshot optimized for different view type. +For custom views or views with masking, useOptimizedSnapshot might create snapshots +that appear differently than the actual view. +In that case, use .useNormalSnapshot or .useSlowRenderSnapshot to disable the optimization.

    + +

    This modifier actually does nothing by itself since .useOptimizedSnapshot is the default.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var useOptimizedSnapshot: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + useNormalSnapshot + +
    +
    +
    +
    +
    +
    +

    Create snapshot using snapshotView(afterScreenUpdates:).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var useNormalSnapshot: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Create snapshot using layer.render(in: currentContext). +This is slower than .useNormalSnapshot but gives more accurate snapshot for some views (eg. UIStackView).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var useLayerRenderSnapshot: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + useNoSnapshot + +
    +
    +
    +
    +
    +
    +

    Force Hero to not create any snapshot when animating this view. +This will mess up the view hierarchy, therefore, view controllers have to rebuild +its view structure after the transition finishes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var useNoSnapshot: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + forceAnimate + +
    +
    +
    +
    +
    +
    +

    Force the view to animate.

    + +

    By default, Hero will not animate if the view is outside the screen bounds or if there is no animatable hero modifier, unless this modifier is used.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var forceAnimate: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Force Hero use scale based size animation. This will convert all .size modifier into .scale modifier. +This is to help Hero animate layers that doesn’t support bounds animation. Also gives better performance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var useScaleBasedSizeChange: HeroModifier
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + from(node:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func from(node: ExprNode) -> HeroModifier?
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + fade + +
    +
    +
    +
    +
    +
    +

    Fade the view during transition

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var fade: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + forceNonFade + +
    +
    +
    +
    +
    +
    +

    Force don’t fade view during transition

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var forceNonFade: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + position(_:) + +
    +
    +
    +
    +
    +
    +

    Set the position for the view to animate from/to.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func position(_ position: CGPoint) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + position + + +
    +

    position for the view to animate from/to

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + size(_:) + +
    +
    +
    +
    +
    +
    +

    Set the size for the view to animate from/to.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func size(_ size: CGSize) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + size + + +
    +

    size for the view to animate from/to

    +
    +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + transform(_:) + +
    +
    +
    +
    +
    +
    +

    Set the transform for the view to animate from/to. Will override previous perspective, scale, translate, & rotate modifiers

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func transform(_ t: CATransform3D) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + t + + +
    +

    the CATransform3D object

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + perspective(_:) + +
    +
    +
    +
    +
    +
    +

    Set the perspective on the transform. use in combination with the rotate modifier.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func perspective(_ perspective: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + perspective + + +
    +

    set the camera distance of the transform

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + scale(x:y:z:) + +
    +
    +
    +
    +
    +
    +

    Scale 3d

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func scale(x: CGFloat = 1, y: CGFloat = 1, z: CGFloat = 1) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + x + + +
    +

    scale factor on x axis, default 1

    +
    +
    + + y + + +
    +

    scale factor on y axis, default 1

    +
    +
    + + z + + +
    +

    scale factor on z axis, default 1

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + scale(_:) + +
    +
    +
    +
    +
    +
    +

    Scale in x & y axis

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func scale(_ xy: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + xy + + +
    +

    scale factor in both x & y axis

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + translate(x:y:z:) + +
    +
    +
    +
    +
    +
    +

    Translate 3d

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func translate(x: CGFloat = 0, y: CGFloat = 0, z: CGFloat = 0) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + x + + +
    +

    translation distance on x axis in display pixel, default 0

    +
    +
    + + y + + +
    +

    translation distance on y axis in display pixel, default 0

    +
    +
    + + z + + +
    +

    translation distance on z axis in display pixel, default 0

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + translate(_:z:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func translate(_ point: CGPoint, z: CGFloat = 0) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + rotate(x:y:z:) + +
    +
    +
    +
    +
    +
    +

    Rotate 3d

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func rotate(x: CGFloat = 0, y: CGFloat = 0, z: CGFloat = 0) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + x + + +
    +

    rotation on x axis in radian, default 0

    +
    +
    + + y + + +
    +

    rotation on y axis in radian, default 0

    +
    +
    + + z + + +
    +

    rotation on z axis in radian, default 0

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + rotate(_:z:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func rotate(_ point: CGPoint, z: CGFloat = 0) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + rotate(_:) + +
    +
    +
    +
    +
    +
    +

    Rotate 2d

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func rotate(_ z: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + z + + +
    +

    rotation in radian

    +
    +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + opacity(_:) + +
    +
    +
    +
    +
    +
    +

    Set the opacity for the view to animate from/to.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func opacity(_ opacity: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + opacity + + +
    +

    opacity for the view to animate from/to

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + backgroundColor(_:) + +
    +
    +
    +
    +
    +
    +

    Set the backgroundColor for the view to animate from/to.

    + +
      +
    • backgroundColor: backgroundColor for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func backgroundColor(_ backgroundColor: UIColor) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + cornerRadius(_:) + +
    +
    +
    +
    +
    +
    +

    Set the cornerRadius for the view to animate from/to.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func cornerRadius(_ cornerRadius: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + cornerRadius + + +
    +

    cornerRadius for the view to animate from/to

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + zPosition(_:) + +
    +
    +
    +
    +
    +
    +

    Set the zPosition for the view to animate from/to.

    + +
      +
    • zPosition: zPosition for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func zPosition(_ zPosition: CGFloat) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + contentsRect(_:) + +
    +
    +
    +
    +
    +
    +

    Set the contentsRect for the view to animate from/to.

    + +
      +
    • contentsRect: contentsRect for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func contentsRect(_ contentsRect: CGRect) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + contentsScale(_:) + +
    +
    +
    +
    +
    +
    +

    Set the contentsScale for the view to animate from/to.

    + +
      +
    • contentsScale: contentsScale for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func contentsScale(_ contentsScale: CGFloat) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + borderWidth(_:) + +
    +
    +
    +
    +
    +
    +

    Set the borderWidth for the view to animate from/to.

    + +
      +
    • borderWidth: borderWidth for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func borderWidth(_ borderWidth: CGFloat) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + borderColor(_:) + +
    +
    +
    +
    +
    +
    +

    Set the borderColor for the view to animate from/to.

    + +
      +
    • borderColor: borderColor for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func borderColor(_ borderColor: UIColor) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowColor(_:) + +
    +
    +
    +
    +
    +
    +

    Set the shadowColor for the view to animate from/to.

    + +
      +
    • shadowColor: shadowColor for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func shadowColor(_ shadowColor: UIColor) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowOpacity(_:) + +
    +
    +
    +
    +
    +
    +

    Set the shadowOpacity for the view to animate from/to.

    + +
      +
    • shadowOpacity: shadowOpacity for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func shadowOpacity(_ shadowOpacity: CGFloat) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowOffset(_:) + +
    +
    +
    +
    +
    +
    +

    Set the shadowOffset for the view to animate from/to.

    + +
      +
    • shadowOffset: shadowOffset for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func shadowOffset(_ shadowOffset: CGSize) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowRadius(_:) + +
    +
    +
    +
    +
    +
    +

    Set the shadowRadius for the view to animate from/to.

    + +
      +
    • shadowRadius: shadowRadius for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func shadowRadius(_ shadowRadius: CGFloat) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowPath(_:) + +
    +
    +
    +
    +
    +
    +

    Set the shadowPath for the view to animate from/to.

    + +
      +
    • shadowPath: shadowPath for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func shadowPath(_ shadowPath: CGPath) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + masksToBounds(_:) + +
    +
    +
    +
    +
    +
    +

    Set the masksToBounds for the view to animate from/to.

    + +
      +
    • masksToBounds: masksToBounds for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func masksToBounds(_ masksToBounds: Bool) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Create an overlay on the animating view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func overlay(color: UIColor, opacity: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + color + + +
    +

    color of the overlay

    +
    +
    + + opacity + + +
    +

    opacity of the overlay

    +
    +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + duration(_:) + +
    +
    +
    +
    +
    +
    +

    Sets the duration of the animation for a given view. If not used, Hero will use determine the duration based on the distance and size changes.

    + +

    Note: a duration of .infinity means matching the duration of the longest animation. same as .durationMatchLongest

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func duration(_ duration: TimeInterval) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + duration + + +
    +

    duration of the animation

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + durationMatchLongest + +
    +
    +
    +
    +
    +
    +

    Sets the duration of the animation for a given view to match the longest animation of the transition.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var durationMatchLongest: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + delay(_:) + +
    +
    +
    +
    +
    +
    +

    Sets the delay of the animation for a given view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func delay(_ delay: TimeInterval) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + delay + + +
    +

    delay of the animation

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + timingFunction(_:) + +
    +
    +
    +
    +
    +
    +

    Sets the timing function of the animation for a given view. If not used, Hero will use determine the timing function based on whether or not the view is entering or exiting the screen.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func timingFunction(_ timingFunction: CAMediaTimingFunction) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + timingFunction + + +
    +

    timing function of the animation

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    (iOS 9+) Use spring animation with custom stiffness & damping. The duration will be automatically calculated. Will be ignored if arc, timingFunction, or duration is set.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(iOS 9, *)
    +public static func spring(stiffness: CGFloat, damping: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + stiffness + + +
    +

    stiffness of the spring

    +
    +
    + + damping + + +
    +

    damping of the spring

    +
    +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + source(heroID:) + +
    +
    +
    +
    +
    +
    +

    Transition from/to the state of the view with matching heroID +Will also force the view to use global coordinate space.

    + +

    The following layer properties will be animated from the given view.

    +
    position
    +bounds.size
    +cornerRadius
    +transform
    +shadowColor
    +shadowOpacity
    +shadowOffset
    +shadowRadius
    +shadowPath
    +
    + +

    Note that the following properties won’t be taken from the source view.

    +
    backgroundColor
    +borderWidth
    +borderColor
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func source(heroID: String) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + heroID + + +
    +

    the source view’s heroId.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + arc + +
    +
    +
    +
    +
    +
    +

    Works in combination with position modifier to apply a natural curve when moving to the destination.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var arc: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + arc(intensity:) + +
    +
    +
    +
    +
    +
    +

    Works in combination with position modifier to apply a natural curve when moving to the destination.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func arc(intensity: CGFloat = 1) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + intensity + + +
    +

    a value of 1 represent a downward natural curve ╰. a value of -1 represent a upward curve ╮. +default is 1.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + cascade + +
    +
    +
    +
    +
    +
    +

    Cascade applys increasing delay modifiers to subviews

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var cascade: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Cascade applys increasing delay modifiers to subviews

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func cascade(delta: TimeInterval = 0.02,
    +                           direction: CascadeDirection = .topToBottom,
    +                           delayMatchedViews: Bool = false) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + delta + + +
    +

    delay in between each animation

    +
    +
    + + direction + + +
    +

    cascade direction

    +
    +
    + + delayMatchedViews + + +
    +

    whether or not to delay matched subviews until all cascading animation have started

    +
    +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + when(_:_:) + +
    +
    +
    +
    +
    +
    +

    Apply modifiers only if the condition return true.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func when(_ condition: @escaping (HeroConditionalContext) -> Bool, _ modifiers: [HeroModifier]) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + when(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func when(_ condition: @escaping (HeroConditionalContext) -> Bool, _ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + whenMatched(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func whenMatched(_ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + whenPresenting(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func whenPresenting(_ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + whenDismissing(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func whenDismissing(_ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + whenAppearing(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func whenAppearing(_ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + whenDisappearing(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func whenDisappearing(_ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Classes/HeroPlugin.html b/docs/Classes/HeroPlugin.html new file mode 100644 index 00000000..7857f3ad --- /dev/null +++ b/docs/Classes/HeroPlugin.html @@ -0,0 +1,945 @@ + + + + HeroPlugin Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroPlugin

+
+
+
open class HeroPlugin : NSObject, HeroPreprocessor, HeroAnimator
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + hero + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    weak public var hero: HeroTransition!
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + context + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var context: HeroContext! { get }
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Determines whether or not to receive seekTo callback on every frame.

    + +

    Default is false.

    + +

    When requirePerFrameCallback is false, the plugin needs to start its own animations inside animate & resume +The seekTo method is only being called during an interactive transition.

    + +

    When requirePerFrameCallback is true, the plugin will receive seekTo callback on every animation frame. Hence it is possible for the plugin to do per-frame animations without implementing animate & resume

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open var requirePerFrameCallback: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override required init()
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called before any animation. +Override this method when you want to preprocess modifiers for views

    + +

    To check a view’s modifiers:

    +
    context[view]
    +context[view, "modifierName"]
    +
    + +

    To set a view’s modifiers:

    +
    context[view] = [("modifier1", ["parameter1"]), ("modifier2", [])]
    +context[view, "modifier1"] = ["parameter1", "parameter2"]
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func process(fromViews: [UIView], toViews: [UIView])
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + context + + +
    +

    object holding all parsed and changed modifiers,

    +
    +
    + + fromViews + + +
    +

    A flattened list of all views from source ViewController

    +
    +
    + + toViews + + +
    +

    A flattened list of all views from destination ViewController

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func canAnimate(view: UIView, appearing: Bool) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + context + + +
    +

    object holding all parsed and changed modifiers,

    +
    +
    + + view + + +
    +

    the view to check whether or not the plugin can handle the animation

    +
    +
    + + appearing + + +
    +

    true if the view is appearing(i.e. a view in destination ViewController) +If return true, Hero won’t animate and won’t let any other plugins animate this view. +The view will also be hidden automatically during the animation.

    +
    +
    +
    +
    +

    Return Value

    +

    return true if the plugin can handle animating the view.

    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Perform the animation.

    + +

    Note: views in fromViews & toViews are hidden already. Unhide then if you need to take snapshots.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func animate(fromViews: [UIView], toViews: [UIView]) -> TimeInterval
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + context + + +
    +

    object holding all parsed and changed modifiers,

    +
    +
    + + fromViews + + +
    +

    A flattened list of all views from source ViewController (filtered by canAnimate)

    +
    +
    + + toViews + + +
    +

    A flattened list of all views from destination ViewController (filtered by canAnimate)

    +
    +
    +
    +
    +

    Return Value

    +

    The duration needed to complete the animation

    +
    + +
    +
    +
  • +
  • +
    + + + + clean() + +
    +
    +
    +
    +
    +
    +

    Called when all animations are completed.

    + +

    Should perform cleanup and release any reference

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func clean()
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + seekTo(timePassed:) + +
    +
    +
    +
    +
    +
    +

    For supporting interactive animation only.

    + +

    This method is called when an interactive animation is in place +The plugin should pause the animation, and seek to the given progress

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func seekTo(timePassed: TimeInterval)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + timePassed + + +
    +

    time of the animation to seek to.

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    For supporting interactive animation only.

    + +

    This method is called when an interactive animation is ended +The plugin should resume the animation.

    + +
      +
    • timePassed: will be the same value since last seekTo
    • +
    • reverse: a boolean value indicating whether or not the animation should reverse
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func resume(timePassed: TimeInterval, reverse: Bool) -> TimeInterval
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + apply(state:to:) + +
    +
    +
    +
    +
    +
    +

    For supporting interactive animation only.

    + +

    This method is called when user wants to override animation modifiers during an interactive animation

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func apply(state: HeroTargetState, to view: UIView)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + state + + +
    +

    the target state to override

    +
    +
    + + view + + +
    +

    the view to override

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func changeTarget(state: HeroTargetState, isDestination: Bool, to view: UIView)
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + isEnabled + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var isEnabled: Bool { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + enable() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func enable()
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + disable() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func disable()
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Classes/HeroTransition.html b/docs/Classes/HeroTransition.html new file mode 100644 index 00000000..e295f07c --- /dev/null +++ b/docs/Classes/HeroTransition.html @@ -0,0 +1,1706 @@ + + + + HeroTransition Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroTransition

+
+
+
open class HeroTransition : NSObject
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + delegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var delegate: HeroTransitionDelegate?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + defaultAnimation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var defaultAnimation: HeroDefaultAnimationType
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + containerColor + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var containerColor: UIColor
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isUserInteractionEnabled: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + viewOrderingStrategy + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var viewOrderingStrategy: HeroViewOrderingStrategy
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var defaultAnimationDirectionStrategy: HeroDefaultAnimationType.Strategy
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + state + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var state: HeroTransitionState { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isTransitioning + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isTransitioning: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isPresenting + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var isPresenting: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + transitioning + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var transitioning: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + presenting + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var presenting: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + container + +
    +
    +
    +
    +
    +
    +

    container we created to hold all animating views, will be a subview of the +transitionContainer when transitioning

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var container: UIView!
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + toViewController + +
    +
    +
    +
    +
    +
    +

    destination view controller

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var toViewController: UIViewController?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + fromViewController + +
    +
    +
    +
    +
    +
    +

    source view controller

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var fromViewController: UIViewController?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + context + +
    +
    +
    +
    +
    +
    +

    context object holding transition informations

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var context: HeroContext!
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + interactive + +
    +
    +
    +
    +
    +
    +

    whether or not we are handling transition interactively

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var interactive: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + totalDuration + +
    +
    +
    +
    +
    +
    +

    max duration needed by the animators

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var totalDuration: TimeInterval
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + progress + +
    +
    +
    +
    +
    +
    +

    progress of the current transition. 0 if no transition is happening

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var progress: Double { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override init()
    + +
    +
    + +
    +
    +
  • +
+
+
+ + +
+
+
    +
  • +
    + + + + animate() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func animate()
    + +
    +
    + +
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transition(from: UIViewController, to: UIViewController, in view: UIView, completion: ((Bool) -> Void)? = nil)
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + update(_:) + +
    +
    +
    +
    +
    +
    +

    Update the progress for the interactive transition.

    + +
      +
    • progress: the current progress, must be between 0…1
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func update(_ percentageComplete: CGFloat)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + finish(animate:) + +
    +
    +
    +
    +
    +
    +

    Finish the interactive transition. +Will stop the interactive transition and animate from the +current state to the end state

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func finish(animate: Bool = true)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + cancel(animate:) + +
    +
    +
    +
    +
    +
    +

    Cancel the interactive transition. +Will stop the interactive transition and animate from the +current state to the beginning state

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func cancel(animate: Bool = true)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + apply(modifiers:to:) + +
    +
    +
    +
    +
    +
    +

    Override modifiers during an interactive animation.

    + +

    For example:

    + +

    Hero.shared.apply([.position(x:50, y:50)], to:view)

    + +

    will set the view’s position to 50, 50

    + +
      +
    • modifiers: the modifiers to override
    • +
    • view: the view to override to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func apply(modifiers: [HeroModifier], to view: UIView)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Override target state during an interactive animation.

    + +

    For example:

    + +

    Hero.shared.changeTarget([.position(x:50, y:50)], to:view)

    + +

    will animate the view’s position to 50, 50 once finish(animate:) is called

    + +
      +
    • modifiers: the modifiers to override
    • +
    • isDestination: if false, it changes the starting state
    • +
    • view: the view to override to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func changeTarget(modifiers: [HeroModifier], isDestination: Bool = true, to view: UIView)
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + start() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func start()
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationController.Operation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func navigationController(_ navigationController: UINavigationController, interactionControllerFor animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func tabBarController(_ tabBarController: UITabBarController, interactionControllerFor animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func tabBarController(_ tabBarController: UITabBarController, animationControllerForTransitionFrom fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func interactionControllerForDismissal(using animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func interactionControllerForPresentation(using animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func animateTransition(using context: UIViewControllerContextTransitioning)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + animationEnded(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func animationEnded(_ transitionCompleted: Bool)
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + wantsInteractiveStart + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wantsInteractiveStart: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func startInteractiveTransition(_ transitionContext: UIViewControllerContextTransitioning)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Classes/Lexer.html b/docs/Classes/Lexer.html new file mode 100644 index 00000000..393639ce --- /dev/null +++ b/docs/Classes/Lexer.html @@ -0,0 +1,328 @@ + + + + Lexer Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Lexer

+
+
+
public class Lexer
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(input:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(input: String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + tokenize() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func tokenize() -> [Token]
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Classes/NumberNode.html b/docs/Classes/NumberNode.html new file mode 100644 index 00000000..7f87ad22 --- /dev/null +++ b/docs/Classes/NumberNode.html @@ -0,0 +1,358 @@ + + + + NumberNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

NumberNode

+
+
+
public class NumberNode : ExprNode
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let value: Float
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(value:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(value: Float)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Classes/Parser.html b/docs/Classes/Parser.html new file mode 100644 index 00000000..e1031b72 --- /dev/null +++ b/docs/Classes/Parser.html @@ -0,0 +1,328 @@ + + + + Parser Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Parser

+
+
+
public class Parser
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(tokens:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(tokens: [Token])
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + parse() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func parse() throws -> [ExprNode]
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Classes/PrototypeNode.html b/docs/Classes/PrototypeNode.html new file mode 100644 index 00000000..1f372c9b --- /dev/null +++ b/docs/Classes/PrototypeNode.html @@ -0,0 +1,358 @@ + + + + PrototypeNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

PrototypeNode

+
+
+
public class PrototypeNode : ExprNode
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + argumentNames + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let argumentNames: [String]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String { get }
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(name: String, argumentNames: [String])
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Classes/VariableNode.html b/docs/Classes/VariableNode.html new file mode 100644 index 00000000..a66afe2e --- /dev/null +++ b/docs/Classes/VariableNode.html @@ -0,0 +1,298 @@ + + + + VariableNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

VariableNode

+
+
+
public class VariableNode : ExprNode
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/ContributionGuide.md b/docs/ContributionGuide.md deleted file mode 100644 index 05072c55..00000000 --- a/docs/ContributionGuide.md +++ /dev/null @@ -1,24 +0,0 @@ -# Issues -If you run into problems, please open an issue. - -When filling bugs, we can best help you if you include the following: - -1. Screenshot of video of what happened. -2. Description of what suppose to happen. -3. An example project would be nice. - - -# PR -#### Before you do any work to the library. Be sure to create an issue first!! - -We welcome pull requests. By contributing to Hero you agree that your contributions will be licensed under its MIT license. Your work is appreciated! - -But before you do any real work, especially framework changes, check if there is any existing issues. Some people might be working on the issues already. For API changes, we need detailed discussion before continuing. - -# Ways you can help -* Help us test the latest master branch. -* Grab existing issues. (Checkout the project tab for todos, make sure you reply to the issue to let us know that you have started working on it.) - -# Code Style -* 2 space indent -* follow [Swift Style Guide](https://github.com/raywenderlich/swift-style-guide) as much as possible. \ No newline at end of file diff --git a/docs/CoordinateSpace.md b/docs/CoordinateSpace.md deleted file mode 100644 index 5da6bd25..00000000 --- a/docs/CoordinateSpace.md +++ /dev/null @@ -1,21 +0,0 @@ -### Global Coordinate Space (default before 0.1.3) - -Animating views are **not** affected by parent views' attributes. Does not move with the parent view. I.e. They are being taken out of the view hierarchy once heroModifiers are applied. Use `useGlobalCoordinateSpace` modifier to force this behavior after 0.1.3. - - - -### Local Coordinate Space (default after 0.1.3) - -Animating views moves along with its parent view. Note that when a view is matched, or when `source` or `useGlobalCoordinateSpace` modifiers are used, the view will go back to global coordinate space. - - - -For the examples above, the following heroModifiers are applied. - -```swift -greyView.heroModifiers = [.translate(y:100)] -blackView.heroModifiers = nil -redView.heroModifiers = [.translate(x:50)] -``` - -When using local coordinate space, the view is contained inside a global coordinate spaced view. Other global spaced view might appear on top of these local spaced views. If you want a view to appear on top of another global spaced view, you will have to change it to global spaced as well by using the `useGlobalCoordinateSpace` modifier. \ No newline at end of file diff --git a/docs/DefaultAnimations.md b/docs/DefaultAnimations.md deleted file mode 100644 index dcae74f6..00000000 --- a/docs/DefaultAnimations.md +++ /dev/null @@ -1,57 +0,0 @@ -# Default Animations - -Starting with **0.3.0**. Hero provides several default transitions. These can also be customized & combined with your custom `heroID` & `heroModifiers`. Makes transitions even easier to implement. - -       - - -## Methods for changing the default animations - -Use the following properties to change default animation type for different presentation methods. - -```swift -extension UIViewController { - /// default hero animation type for presenting & dismissing modally - public var heroModalAnimationType: HeroDefaultAnimationType -} -extension UINavigationController { - /// default hero animation type for push and pop within the navigation controller - public var heroNavigationAnimationType: HeroDefaultAnimationType -} -extension UITabBarController { - /// default hero animation type for switching tabs within the tab bar controller - public var heroTabBarAnimationType: HeroDefaultAnimationType -} -``` - -## Supported default animations - -Please checkout [HeroDefaultAnimations.swift](https://github.com/lkzhao/Hero/blob/master/Sources/HeroDefaultAnimations.swift#L25) for supported animations. - -Many of these animations support directions(up, down, left, right). - -## .auto Animation Type - -`.auto` is the default animation type. It uses the following animations depending on the presentation style: - -* `.none` if source root view or destination root view have existing animations (defined via `heroID` or `heroModifiers`). -* `.push` & `.pull` if animating within a UINavigationController. -* `.slide` if animating within a UITabbarController. -* `.fade` if presenting modally. -* `.none` if presenting modally with `modalPresentationStyle == .overFullScreen`. - -## .selectBy(presenting:, dismissing:) Animation Type - -Will determine the animation type by whether or not we are presenting or dismissing. - -For example: - -```swift -.selectBy(presenting:.push(.left), dismissing:.pull(.right)) -``` - -Will use left push animation if presenting a VC, or right pull animation when dismissing a VC. - -## Note - -Other than `.auto` & `.none`, default animations will override `heroModifiers` on source & destination root views during the transition. \ No newline at end of file diff --git a/docs/Enums.html b/docs/Enums.html new file mode 100644 index 00000000..104d4fbf --- /dev/null +++ b/docs/Enums.html @@ -0,0 +1,534 @@ + + + + Enumerations Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+ +
+
+
+ +
+
+ +
+
+
    +
  • +
    + + + + Token + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Token
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + ParseError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ParseError : Error
    + +
    +
    + +
    +
    +
  • +
+
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Enums/CascadeDirection.html b/docs/Enums/CascadeDirection.html new file mode 100644 index 00000000..c32bf493 --- /dev/null +++ b/docs/Enums/CascadeDirection.html @@ -0,0 +1,508 @@ + + + + CascadeDirection Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

CascadeDirection

+
+
+
public enum CascadeDirection
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + topToBottom + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case topToBottom
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + bottomToTop + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case bottomToTop
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + leftToRight + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case leftToRight
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + rightToLeft + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case rightToLeft
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + radial(center:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case radial(center: CGPoint)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case inverseRadial(center: CGPoint)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + leadingToTrailing + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var leadingToTrailing: CascadeDirection { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + trailingToLeading + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var trailingToLeading: CascadeDirection { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Enums/HeroCoordinateSpace.html b/docs/Enums/HeroCoordinateSpace.html new file mode 100644 index 00000000..c66ce6a2 --- /dev/null +++ b/docs/Enums/HeroCoordinateSpace.html @@ -0,0 +1,328 @@ + + + + HeroCoordinateSpace Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroCoordinateSpace

+
+
+
public enum HeroCoordinateSpace
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + global + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case global
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + local + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case local
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Enums/HeroDefaultAnimationType.html b/docs/Enums/HeroDefaultAnimationType.html new file mode 100644 index 00000000..d2a2fa93 --- /dev/null +++ b/docs/Enums/HeroDefaultAnimationType.html @@ -0,0 +1,844 @@ + + + + HeroDefaultAnimationType Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroDefaultAnimationType

+
+
+
public enum HeroDefaultAnimationType
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
    +
  • +
    + + + + from(node:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func from(node: ExprNode) -> HeroDefaultAnimationType?
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Enums/HeroDefaultAnimationType/Direction.html b/docs/Enums/HeroDefaultAnimationType/Direction.html new file mode 100644 index 00000000..877cb861 --- /dev/null +++ b/docs/Enums/HeroDefaultAnimationType/Direction.html @@ -0,0 +1,478 @@ + + + + Direction Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Direction

+
+
+
public enum Direction : HeroStringConvertible
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + left + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case left
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + right + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case right
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + up + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case up
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + down + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case down
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + from(node:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func from(node: ExprNode) -> Direction?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var leading: Direction { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var trailing: Direction { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Enums/HeroDefaultAnimationType/Strategy.html b/docs/Enums/HeroDefaultAnimationType/Strategy.html new file mode 100644 index 00000000..b583e381 --- /dev/null +++ b/docs/Enums/HeroDefaultAnimationType/Strategy.html @@ -0,0 +1,358 @@ + + + + Strategy Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Strategy

+
+
+
public enum Strategy
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Enums/HeroSnapshotType.html b/docs/Enums/HeroSnapshotType.html new file mode 100644 index 00000000..2be51fcb --- /dev/null +++ b/docs/Enums/HeroSnapshotType.html @@ -0,0 +1,393 @@ + + + + HeroSnapshotType Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroSnapshotType

+
+
+
public enum HeroSnapshotType
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + optimized + +
    +
    +
    +
    +
    +
    +

    Will optimize for different type of views +For custom views or views with masking, .optimizedDefault might create snapshots +that appear differently than the actual view. +In that case, use .normal or .slowRender to disable the optimization

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case optimized
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + normal + +
    +
    +
    +
    +
    +
    +

    snapshotView(afterScreenUpdates:)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case normal
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + layerRender + +
    +
    +
    +
    +
    +
    +

    layer.render(in: currentContext)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case layerRender
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + noSnapshot + +
    +
    +
    +
    +
    +
    +

    will not create snapshot. animate the view directly. +This will mess up the view hierarchy, therefore, view controllers have to rebuild +its view structure after the transition finishes

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case noSnapshot
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Enums/HeroTransitionState.html b/docs/Enums/HeroTransitionState.html new file mode 100644 index 00000000..3d100544 --- /dev/null +++ b/docs/Enums/HeroTransitionState.html @@ -0,0 +1,418 @@ + + + + HeroTransitionState Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroTransitionState

+
+
+
public enum HeroTransitionState : Int
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + possible + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case possible
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + notified + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case notified
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + starting + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case starting
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + animating + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case animating
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + completing + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case completing
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Enums/HeroViewOrderingStrategy.html b/docs/Enums/HeroViewOrderingStrategy.html new file mode 100644 index 00000000..b7531b28 --- /dev/null +++ b/docs/Enums/HeroViewOrderingStrategy.html @@ -0,0 +1,358 @@ + + + + HeroViewOrderingStrategy Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroViewOrderingStrategy

+
+
+
public enum HeroViewOrderingStrategy
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + auto + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case auto
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + sourceViewOnTop + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case sourceViewOnTop
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + destinationViewOnTop + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case destinationViewOnTop
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Enums/ParseError.html b/docs/Enums/ParseError.html new file mode 100644 index 00000000..26ec7263 --- /dev/null +++ b/docs/Enums/ParseError.html @@ -0,0 +1,448 @@ + + + + ParseError Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

ParseError

+
+
+
public enum ParseError : Error
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Enums/Token.html b/docs/Enums/Token.html new file mode 100644 index 00000000..41cccbb6 --- /dev/null +++ b/docs/Enums/Token.html @@ -0,0 +1,448 @@ + + + + Token Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Token

+
+
+
public enum Token
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + identifier(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case identifier(String, CountableRange<Int>)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + number(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case number(Float, CountableRange<Int>)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + parensOpen(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case parensOpen(CountableRange<Int>)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + parensClose(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case parensClose(CountableRange<Int>)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + comma(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case comma(CountableRange<Int>)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + other(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case other(String, CountableRange<Int>)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Extensions.html b/docs/Extensions.html new file mode 100644 index 00000000..b875e14d --- /dev/null +++ b/docs/Extensions.html @@ -0,0 +1,548 @@ + + + + Extensions Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Extensions

+

The following extensions are available globally.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + HeroDebugView + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension HeroDebugView: UIGestureRecognizerDelegate
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + CAMediaTimingFunction + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension CAMediaTimingFunction
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + CATransform3D + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension CATransform3D: Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + UIView + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension UIView
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + UIViewController + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension UIViewController
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension UINavigationController
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + UITabBarController + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension UITabBarController
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + String + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension String
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Extensions/CAMediaTimingFunction.html b/docs/Extensions/CAMediaTimingFunction.html new file mode 100644 index 00000000..53ebe48c --- /dev/null +++ b/docs/Extensions/CAMediaTimingFunction.html @@ -0,0 +1,567 @@ + + + + CAMediaTimingFunction Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

CAMediaTimingFunction

+
+
+
public extension CAMediaTimingFunction
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + linear + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let linear: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + easeIn + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let easeIn: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + easeOut + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let easeOut: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + easeInOut + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let easeInOut: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + standard + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let standard: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + deceleration + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let deceleration: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + acceleration + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let acceleration: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + sharp + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let sharp: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + easeOutBack + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let easeOutBack: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + from(name:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func from(name: String) -> CAMediaTimingFunction?
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Extensions/CATransform3D.html b/docs/Extensions/CATransform3D.html new file mode 100644 index 00000000..7766c3dd --- /dev/null +++ b/docs/Extensions/CATransform3D.html @@ -0,0 +1,296 @@ + + + + CATransform3D Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

CATransform3D

+
+
+
extension CATransform3D: Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: CATransform3D, rhs: CATransform3D) -> Bool
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Extensions/HeroDebugView.html b/docs/Extensions/HeroDebugView.html new file mode 100644 index 00000000..fea8b8e5 --- /dev/null +++ b/docs/Extensions/HeroDebugView.html @@ -0,0 +1,279 @@ + + + + HeroDebugView Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + + + + + + diff --git a/docs/Extensions/String.html b/docs/Extensions/String.html new file mode 100644 index 00000000..49b8309a --- /dev/null +++ b/docs/Extensions/String.html @@ -0,0 +1,297 @@ + + + + String Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

String

+
+
+
public extension String
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + match(regex:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func match(regex: String) -> (String, CountableRange<Int>)?
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Extensions/UINavigationController.html b/docs/Extensions/UINavigationController.html new file mode 100644 index 00000000..cd585556 --- /dev/null +++ b/docs/Extensions/UINavigationController.html @@ -0,0 +1,279 @@ + + + + UINavigationController Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

UINavigationController

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Operation + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Extensions/UITabBarController.html b/docs/Extensions/UITabBarController.html new file mode 100644 index 00000000..d3578269 --- /dev/null +++ b/docs/Extensions/UITabBarController.html @@ -0,0 +1,328 @@ + + + + UITabBarController Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

UITabBarController

+
+
+
extension UITabBarController
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Extensions/UIView.html b/docs/Extensions/UIView.html new file mode 100644 index 00000000..83f6ec6f --- /dev/null +++ b/docs/Extensions/UIView.html @@ -0,0 +1,421 @@ + + + + UIView Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

UIView

+
+
+
public extension UIView
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + heroID + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @IBInspectable
    +var heroID: String? { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isHeroEnabled + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @IBInspectable
    +var isHeroEnabled: Bool { get set }
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @IBInspectable
    +var isHeroEnabledForSubviews: Bool { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + heroModifiers + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var heroModifiers: [HeroModifier]? { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + heroModifierString + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @IBInspectable
    +var heroModifierString: String? { get set }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Extensions/UIViewController.html b/docs/Extensions/UIViewController.html new file mode 100644 index 00000000..c662f574 --- /dev/null +++ b/docs/Extensions/UIViewController.html @@ -0,0 +1,636 @@ + + + + UIViewController Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

UIViewController

+
+
+
public extension UIViewController
+ +
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Functions.html b/docs/Functions.html new file mode 100644 index 00000000..a44d8efa --- /dev/null +++ b/docs/Functions.html @@ -0,0 +1,292 @@ + + + + Functions Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Functions

+

The following functions are available globally.

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/HeroModifiers.md b/docs/HeroModifiers.md deleted file mode 100644 index 2f0f855a..00000000 --- a/docs/HeroModifiers.md +++ /dev/null @@ -1,90 +0,0 @@ -#### Checkout [HeroModifier.swift](https://github.com/lkzhao/Hero/blob/master/Sources/HeroModifier.swift) for up-to-date modifier details. - -### Basic Modifiers -* fade -* position -* size -* scale -* rotate -* perspective -* translate -* zPosition -* opacity -* shadowOpacity -* shadowRadius -* shadowColor -* shadowOffset -* shadowPath -* borderColor -* borderWidth - -### Advance Modifiers - -| Modifier Name | Description | -| --- | --- | -| delay(time) | Delay for the animation | -| duration(time) | Duration for the animation, if unspecified, the duration will be calculated based on the distance travelled | -| timingFunction(curveName) | Timing function for the animation (`linear`, `easeIn`, `easeOut`, `easeInOut`, `standard`, `deceleration`, `acceleration`, `sharp`) | -| timingFunction(c1x, c1y, c2x, c2y) | Custom cubic bezier timing function for the animation | -| spring(stiffness, damping) | **(iOS 9+)** Use spring animation with custom stiffness & damping. The duration will be automatically calculated. Will be ignored if `arc`, `curve`, or `duration` is set. | -| useGlobalCoordinateSpace | Force the view to use global coordinate space | -| overlay(color:,opacity) | Animate an overlay on top of the view | -| source(HeroID) | Transition from a view with given heroID | -| arc(intensity) | Make position animation follow a natural arc curve. | -| cascade(deltaDelay, direction, forceMatchedToWait) | Apply increasing delay to view's subview | -| ignoreSubviewModifiers | Disables all `heroModifiers` for view's direct subviews | -| useScaleBasedSizeChange | Force Hero use scale based size animation. | -| useOptimizedSnapshot | Change snapshot type to OptimizedSnapshot, see [Snapshot Types](#snapshot-types) | -| useNormalSnapshot | Change snapshot type to NormalSnapshot, see [Snapshot Types](#snapshot-types) | -| useLayerRenderSnapshot | Change snapshot type to LayerRenderSnapshot, see [Snapshot Types](#snapshot-types) | -| useNoSnapshot | Change snapshot type to NoSnapshot, see [Snapshot Types](#snapshot-types) | -| beginWith(modifiers:) | Apply modifiers directly to the view at the start of the transition. Without animation. | -| beginWithIfMatched(modifiers:) | Same as `beginWith` but effective only when matched. | - -#### Modifiers Support for matched views -Some of the modifiers **won't** work with matched views(views with the same `heroID`). These are: -* fade -* scale -* translate -* rotate -* transform -* cascade - -NOTE: For other modifiers that works with matched views, the target view's modifiers will be used. the source view's modifiers will be ignored. - -## Modifier Details - -### Arc Modifier -When animating `position`, if **arc** is enabled. the view will follow a natural arc curve instead of going to the target position directly. See [material design](https://material.io/guidelines/motion/movement.html#movement-movement-within-screen-bounds) for more details. - -The **intensity** parameter is a number that determine the curve's intensity. A value of 0 means no curve. A value of 1 means a natural downward curve. This value can be negative or above 1. Default is 1. - -Use the debug plugin and enable **Show Curves** to see the actual arc curve objects follows. - -### Source Modifier -The `source` modifier allows a view to be transitioned from a view with the given heroID. - -##### See the Menu Example for how `source` is used. - -### Cascade Modifier - -The `cascade` modifier automatically applies increasing `delay` heroModifiers to a view's direct subviews. - -| Parameters | Description | -| --- | --- | -| deltaDelay | delay in between each animation | -| direction | the cascade direction, can be `topToBottom`, `bottomToTop`, `leftToRight`, & `rightToLeft`, default `topToBottom` | -| forceMatchedToWait | whether or not to delay matched views until all cascading animations have started, default false | - -NOTE: matched views(views with the same `heroID`) won't have the cascading effect. however, you can use the 3rd parameter to delay the start time of matched views until the last cascading animation have started. The matched views will animate simultaneously with the cascading views by default. - -##### See the ListToGrid & ImageGallery Example for how `cascade` is used. - -### ignoreSubviewModifiers Modifier - -The `ignoreSubviewModifiers` modifier disables all `heroModifiers` attributes for a view's direct subviews. - -### useScaleBasedSizeChange Modifier - -Force Hero use scale based size animation. This will convert all `.size` modifier into `.scale` modifier. -This is to help Hero animate layers that doesn't support bounds animation. Also gives better animation performance. \ No newline at end of file diff --git a/docs/InteractiveTransition.md b/docs/InteractiveTransition.md deleted file mode 100644 index eecdf26f..00000000 --- a/docs/InteractiveTransition.md +++ /dev/null @@ -1,91 +0,0 @@ -# Interactive Transition - -#### Check out the [Interactive transitions with Hero (Part 1)](http://lkzhao.com/2017/02/05/hero-interactive-transition.html) blog post for a more in-depth tutorial on interactive transition. - - -## General Approach - -When implementing a interactive transition, the general approach is to setup a gesture recognizer first. Then do the following 3 things inside the gesture handler: - -1. Tell Hero when to start the transition - - Usually happens when `gestureRecognizer.state == .began`. Begin the transition as normal. - -2. Tell Hero to update the animations through out the transition - - Use `Hero.shared.update(progress:)` & `Hero.shared.apply(modifiers:to:)` to modify the progress & view states. - -3. Tell Hero to end/cancel the transition - - Use `Hero.shared.end()` or `Hero.shared.cancel()` - - -## Interactive methods - -`Hero.shared` is the singleton object you can operate with when doing an interactive transition. It has the following 4 methods that are useful for interactive transition: - -```swift -/** - Update the progress for the interactive transition. - - Parameters: - - progress: the current progress, must be between 0...1 - */ -public func update(progress: Double) - -/** - Finish the interactive transition. - Will stop the interactive transition and animate from the - current state to the **end** state - */ -public func end(animate: Bool = true) - -/** - Cancel the interactive transition. - Will stop the interactive transition and animate from the - current state to the **beginning** state - */ -public func cancel(animate: Bool = true) - -/** - Override modifiers during an interactive animation. - - For example: - - Hero.shared.apply([.position(x:50, y:50)], to:view) - - will set the view's position to 50, 50 - - Parameters: - - modifiers: the modifiers to override - - view: the view to override to - */ -public func apply(modifiers: [HeroModifier], to view: UIView) -``` - -## Sample Gesture Recognizer Handler - -This example is taken from `ImageViewController.swift` inside the example project. - -```swift - func pan() { - let translation = panGR.translation(in: nil) - let progress = translation.y / 2 / collectionView!.bounds.height - switch panGR.state { - case .began: - Hero.shared.setDefaultAnimationForNextTransition(.fade) - hero_dismissViewController() - case .changed: - Hero.shared.update(progress: Double(progress)) - if let cell = collectionView?.visibleCells[0] as? ScrollingImageCell { - let currentPos = CGPoint(x: translation.x + view.center.x, y: translation.y + view.center.y) - Hero.shared.apply(modifiers: [.position(currentPos)], to: cell.imageView) - } - default: - if progress + panGR.velocity(in: nil).y / collectionView!.bounds.height > 0.3 { - Hero.shared.end() - } else { - Hero.shared.cancel() - } - } - } -``` - diff --git a/docs/NavigationHelpers.md b/docs/NavigationHelpers.md deleted file mode 100644 index 92ab70e2..00000000 --- a/docs/NavigationHelpers.md +++ /dev/null @@ -1,52 +0,0 @@ -# Navigation Helper - -Hero provides some useful navigation extension methods on UIViewController. Use these alongside with `pushViewController`, `presentViewController` to navigate between view controllers. - - -```swift -func hero_dismissViewController() -``` - -Dismiss the current view controller with animation. Will perform a navigationController.popViewController -if the current view controller is contained inside a navigationController. - -```swift -func hero_replaceViewController(with: UIViewController) -``` - -Replace the current view controller with another VC on the navigation/modal stack. - - -```swift -func hero_unwindToRootViewController() -``` - -Unwind to the root view controller using Hero. - - -```swift -func hero_unwindToViewController(_ toViewController:) -``` - -Unwind to a specific view controller using Hero. - - -```swift -func hero_unwindToViewController(withSelector: Selector) -``` - -Unwind to a view controller that responds to the given selector using Hero. - - -```swift -func hero_unwindToViewController(withClass: AnyClass) -``` - -Unwind to a view controller with given class using Hero. - - -```swift -func hero_unwindToViewController(withMatchBlock: (UIViewController) -> Bool) -``` - -Unwind to a view controller that the match block returns true on. \ No newline at end of file diff --git a/docs/Protocols.html b/docs/Protocols.html new file mode 100644 index 00000000..3cf58fc9 --- /dev/null +++ b/docs/Protocols.html @@ -0,0 +1,531 @@ + + + + Protocols Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+ +
+
+
+ +
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Allows a view to create their own custom snapshot when using Optimized snapshot

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol HeroCustomSnapshotView
    + +
    +
    + +
    +
    +
  • +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Protocols/HeroAnimator.html b/docs/Protocols/HeroAnimator.html new file mode 100644 index 00000000..a432928f --- /dev/null +++ b/docs/Protocols/HeroAnimator.html @@ -0,0 +1,508 @@ + + + + HeroAnimator Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroAnimator

+
+
+
public protocol HeroAnimator : AnyObject
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Protocols/HeroCompatible.html b/docs/Protocols/HeroCompatible.html new file mode 100644 index 00000000..b66efbcb --- /dev/null +++ b/docs/Protocols/HeroCompatible.html @@ -0,0 +1,336 @@ + + + + HeroCompatible Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroCompatible

+
+
+
public protocol HeroCompatible
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + CompatibleType + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype CompatibleType
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + hero + + + Default implementation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +

    Default Implementation

    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var hero: HeroExtension<CompatibleType> { get set }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Protocols/HeroCustomSnapshotView.html b/docs/Protocols/HeroCustomSnapshotView.html new file mode 100644 index 00000000..13438a61 --- /dev/null +++ b/docs/Protocols/HeroCustomSnapshotView.html @@ -0,0 +1,298 @@ + + + + HeroCustomSnapshotView Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroCustomSnapshotView

+
+
+
public protocol HeroCustomSnapshotView
+ +
+
+

Allows a view to create their own custom snapshot when using Optimized snapshot

+ +
+
+ +
+
+
+
    +
  • +
    + + + + heroSnapshot + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var heroSnapshot: UIView? { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Protocols/HeroPreprocessor.html b/docs/Protocols/HeroPreprocessor.html new file mode 100644 index 00000000..05ac19c9 --- /dev/null +++ b/docs/Protocols/HeroPreprocessor.html @@ -0,0 +1,328 @@ + + + + HeroPreprocessor Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroPreprocessor

+
+
+
public protocol HeroPreprocessor : AnyObject
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Protocols/HeroProgressUpdateObserver.html b/docs/Protocols/HeroProgressUpdateObserver.html new file mode 100644 index 00000000..a60b00ad --- /dev/null +++ b/docs/Protocols/HeroProgressUpdateObserver.html @@ -0,0 +1,298 @@ + + + + HeroProgressUpdateObserver Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroProgressUpdateObserver

+
+
+
public protocol HeroProgressUpdateObserver : AnyObject
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Protocols/HeroStringConvertible.html b/docs/Protocols/HeroStringConvertible.html new file mode 100644 index 00000000..e07f639f --- /dev/null +++ b/docs/Protocols/HeroStringConvertible.html @@ -0,0 +1,298 @@ + + + + HeroStringConvertible Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroStringConvertible

+
+
+
public protocol HeroStringConvertible
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + from(node:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func from(node: ExprNode) -> `Self`?
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Protocols/HeroTransitionDelegate.html b/docs/Protocols/HeroTransitionDelegate.html new file mode 100644 index 00000000..8b8cafc9 --- /dev/null +++ b/docs/Protocols/HeroTransitionDelegate.html @@ -0,0 +1,328 @@ + + + + HeroTransitionDelegate Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroTransitionDelegate

+
+
+
public protocol HeroTransitionDelegate : AnyObject
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Protocols/HeroViewControllerDelegate.html b/docs/Protocols/HeroViewControllerDelegate.html new file mode 100644 index 00000000..29cfaf1d --- /dev/null +++ b/docs/Protocols/HeroViewControllerDelegate.html @@ -0,0 +1,548 @@ + + + + HeroViewControllerDelegate Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroViewControllerDelegate

+
+
+
@objc
+public protocol HeroViewControllerDelegate
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 102095ac..00000000 --- a/docs/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Table of Contents - -* [Read Me](/README.md) -* [Installation](/docs/Installation.md) -* [Usage Guide](/docs/UsageGuide.md) - -# - -* Core Concepts - * [Hero Modifier](/docs/HeroModifiers.md) - * [Coordinate Space](/docs/CoordinateSpace.md) - * [View Snapshot](/docs/SnapshotTypes.md) - -# - -* [Interactive Transition](/docs/InteractiveTransition.md) -* [Default Animations](/docs/DefaultAnimations.md) -* [Navigation Helpers](/docs/NavigationHelpers.md) \ No newline at end of file diff --git a/docs/SnapshotTypes.md b/docs/SnapshotTypes.md deleted file mode 100644 index c1cbea4a..00000000 --- a/docs/SnapshotTypes.md +++ /dev/null @@ -1,22 +0,0 @@ -Hero creates snapshots of your animating views when performing animations. Use the following four modifiers to change how Hero take these snapshots. - -#### useOptimizedSnapshot - - With this modifier, Hero will create snapshot optimized for different view type when animating. - For custom views or views with masking, useOptimizedSnapshot might create snapshots - that appear differently than the actual view. - In that case, use .useNormalSnapshot or .useSlowRenderSnapshot to disable the optimization. - -#### useNormalSnapshot - - Create snapshot using snapshotView(afterScreenUpdates:). - -#### useLayerRenderSnapshot - - Create snapshot using layer.render(in: currentContext). - This is slower than .useNormalSnapshot but gives more accurate snapshot for some views (eg. UIStackView). - -#### useNoSnapshot - - Force Hero to not create any snapshot when animating this view. Hence Hero will animate on the view directly. - This will mess up the view hierarchy. Therefore, view controllers have to rebuild its view structure after the transition finishes. diff --git a/docs/Structs.html b/docs/Structs.html new file mode 100644 index 00000000..05a612f4 --- /dev/null +++ b/docs/Structs.html @@ -0,0 +1,328 @@ + + + + Structures Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Structures

+

The following structures are available globally.

+ +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Structs/HeroConditionalContext.html b/docs/Structs/HeroConditionalContext.html new file mode 100644 index 00000000..fd2c797c --- /dev/null +++ b/docs/Structs/HeroConditionalContext.html @@ -0,0 +1,658 @@ + + + + HeroConditionalContext Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroConditionalContext

+
+
+
public struct HeroConditionalContext
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + view + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var view: UIView!
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isAppearing + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public private(set) var isAppearing: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isPresenting + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isPresenting: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isInTabbarController + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isInTabbarController: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isInNavbarController + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isInNavbarController: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isMatched + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isMatched: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isAncestorViewMatched + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isAncestorViewMatched: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + matchedView + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var matchedView: UIView? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + matchedAncestorView + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var matchedAncestorView: (UIView, UIView)? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + fromViewController + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var fromViewController: UIViewController { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + toViewController + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var toViewController: UIViewController { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + currentViewController + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var currentViewController: UIViewController { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + otherViewController + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var otherViewController: UIViewController { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/Structs/HeroTargetState.html b/docs/Structs/HeroTargetState.html new file mode 100644 index 00000000..31ba2130 --- /dev/null +++ b/docs/Structs/HeroTargetState.html @@ -0,0 +1,1444 @@ + + + + HeroTargetState Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroTargetState

+
+
+
public struct HeroTargetState
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + beginState + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var beginState: [HeroModifier]?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + conditionalModifiers + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var conditionalModifiers: [((HeroConditionalContext) -> Bool, [HeroModifier])]?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + position + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var position: CGPoint?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + size + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var size: CGSize?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + transform + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var transform: CATransform3D?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + opacity + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var opacity: Float?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + cornerRadius + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var cornerRadius: CGFloat?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + backgroundColor + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var backgroundColor: CGColor?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + zPosition + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var zPosition: CGFloat?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + contentsRect + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentsRect: CGRect?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + contentsScale + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentsScale: CGFloat?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + borderWidth + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var borderWidth: CGFloat?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + borderColor + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var borderColor: CGColor?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowColor + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadowColor: CGColor?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowOpacity + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadowOpacity: Float?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowOffset + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadowOffset: CGSize?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowRadius + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadowRadius: CGFloat?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowPath + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadowPath: CGPath?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + masksToBounds + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var masksToBounds: Bool?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + displayShadow + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var displayShadow: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + overlay + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var overlay: (color: CGColor, opacity: CGFloat)?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + spring + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var spring: (CGFloat, CGFloat)?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + delay + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var delay: TimeInterval
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + duration + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var duration: TimeInterval?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + timingFunction + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var timingFunction: CAMediaTimingFunction?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + arc + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var arc: CGFloat?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + source + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var source: String?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + cascade + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var cascade: (TimeInterval, CascadeDirection, Bool)?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var ignoreSubviewModifiers: Bool?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + coordinateSpace + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinateSpace: HeroCoordinateSpace?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var useScaleBasedSizeChange: Bool?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + snapshotType + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var snapshotType: HeroSnapshotType?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + nonFade + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var nonFade: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + forceAnimate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var forceAnimate: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + custom + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var custom: [String : Any]?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + append(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func append(_ modifier: HeroModifier)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + append(contentsOf:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func append(contentsOf modifiers: [HeroModifier])
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript(key: String) -> Any? { get set }
    + +
    +
    +
    +

    Return Value

    +

    custom item for a specific key

    +
    + +
    +
    +
  • +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/UsageGuide.md b/docs/UsageGuide.md deleted file mode 100644 index 6d942b93..00000000 --- a/docs/UsageGuide.md +++ /dev/null @@ -1,58 +0,0 @@ -# Usage - -### Storyboard - -1. In the Identity Inspector, for every pair of source/destination views, give each one the same `HeroID` attribute. -3. For any other views that you would like to animate, specify animation effects in the `Hero Modifier String` attribute. -4. Also in the Identity Inspector, enable Hero Transition on your destination view controller. - -### In Code - -1. Before doing a transition, set the desired `heroID` and `heroModifiers` to both your source and destination views. -2. Enable Hero for the destination view controller - - ```swift - viewController.isHeroEnabled = true - ``` - -### UINavigationController & UITabBarController - -Hero also supports transitions within a navigation controller or a tab bar controller—just set the 'isHeroEnabled' attribute to true on the UINavigationController/UITabBarController instance. - -## Attributes -There are two important attributes to understand: `heroID` and `heroModifiers`. These are implemented as extensions (using associated objects) for `UIView`. Therefore, after the Hero library is imported, every `UIView` will have these two attributes. - -| Attribute Name | Description | -| --- | --- | -| `heroID` | Identifier for the view. Hero will automatically transition between views with the same `heroID` | -| `heroModifiers` | Specifies the extra animations performed alongside the main transition. | - -## HeroID - -`heroID` is the identifier for the view. When doing a transition between two view controllers, Hero will search through all subviews for both controllers, and match any views with the same `heroID`. Whenever a pair is discovered, Hero will automatically transit the views from source state to destination state. - -## HeroModifiers - -Use `heroModifiers` to specify animations alongside the main transition. Checkout [HeroModifier.swift](https://github.com/lkzhao/Hero/blob/master/Sources/HeroModifier.swift) for available modifiers. - -#### For example, to achieve the following effect, set the `heroModifiers` to be - -```swift -view.heroModifiers = [.fade, .translate(x:0, y:-250), .rotate(x:-1.6), .scale(1.5)] -``` - - - -Note: For matched views, the target view's heroModifier will be used. The source view's heroModifier will be ignored. When dismissing, the target view is the presentingViewController's view and the source view is the presentedViewController's view. - -## HeroModifierString - -This is a string value. It provides another way to set `heroModifiers`. It can be accessed through the storyboard. - -It must be in the following syntax: - -```swift -modifier1() modifier2(parameter1) modifier3(parameter1, parameter2) ... -``` - -Parameters must be between a pair of parentheses, separated by a comma, and each modifier must be separated by a space. Not all modifiers are settable this way. diff --git a/docs/badge.svg b/docs/badge.svg new file mode 100644 index 00000000..579932f7 --- /dev/null +++ b/docs/badge.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + documentation + + + documentation + + + 24% + + + 24% + + + diff --git a/docs/css/highlight.css b/docs/css/highlight.css new file mode 100644 index 00000000..d0db0e13 --- /dev/null +++ b/docs/css/highlight.css @@ -0,0 +1,200 @@ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight { + /* Comment */ + /* Error */ + /* Keyword */ + /* Operator */ + /* Comment.Multiline */ + /* Comment.Preproc */ + /* Comment.Single */ + /* Comment.Special */ + /* Generic.Deleted */ + /* Generic.Deleted.Specific */ + /* Generic.Emph */ + /* Generic.Error */ + /* Generic.Heading */ + /* Generic.Inserted */ + /* Generic.Inserted.Specific */ + /* Generic.Output */ + /* Generic.Prompt */ + /* Generic.Strong */ + /* Generic.Subheading */ + /* Generic.Traceback */ + /* Keyword.Constant */ + /* Keyword.Declaration */ + /* Keyword.Pseudo */ + /* Keyword.Reserved */ + /* Keyword.Type */ + /* Literal.Number */ + /* Literal.String */ + /* Name.Attribute */ + /* Name.Builtin */ + /* Name.Class */ + /* Name.Constant */ + /* Name.Entity */ + /* Name.Exception */ + /* Name.Function */ + /* Name.Namespace */ + /* Name.Tag */ + /* Name.Variable */ + /* Operator.Word */ + /* Text.Whitespace */ + /* Literal.Number.Float */ + /* Literal.Number.Hex */ + /* Literal.Number.Integer */ + /* Literal.Number.Oct */ + /* Literal.String.Backtick */ + /* Literal.String.Char */ + /* Literal.String.Doc */ + /* Literal.String.Double */ + /* Literal.String.Escape */ + /* Literal.String.Heredoc */ + /* Literal.String.Interpol */ + /* Literal.String.Other */ + /* Literal.String.Regex */ + /* Literal.String.Single */ + /* Literal.String.Symbol */ + /* Name.Builtin.Pseudo */ + /* Name.Variable.Class */ + /* Name.Variable.Global */ + /* Name.Variable.Instance */ + /* Literal.Number.Integer.Long */ } + .highlight .c { + color: #999988; + font-style: italic; } + .highlight .err { + color: #a61717; + background-color: #e3d2d2; } + .highlight .k { + color: #000000; + font-weight: bold; } + .highlight .o { + color: #000000; + font-weight: bold; } + .highlight .cm { + color: #999988; + font-style: italic; } + .highlight .cp { + color: #999999; + font-weight: bold; } + .highlight .c1 { + color: #999988; + font-style: italic; } + .highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + .highlight .gd { + color: #000000; + background-color: #ffdddd; } + .highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + .highlight .ge { + color: #000000; + font-style: italic; } + .highlight .gr { + color: #aa0000; } + .highlight .gh { + color: #999999; } + .highlight .gi { + color: #000000; + background-color: #ddffdd; } + .highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + .highlight .go { + color: #888888; } + .highlight .gp { + color: #555555; } + .highlight .gs { + font-weight: bold; } + .highlight .gu { + color: #aaaaaa; } + .highlight .gt { + color: #aa0000; } + .highlight .kc { + color: #000000; + font-weight: bold; } + .highlight .kd { + color: #000000; + font-weight: bold; } + .highlight .kp { + color: #000000; + font-weight: bold; } + .highlight .kr { + color: #000000; + font-weight: bold; } + .highlight .kt { + color: #445588; } + .highlight .m { + color: #009999; } + .highlight .s { + color: #d14; } + .highlight .na { + color: #008080; } + .highlight .nb { + color: #0086B3; } + .highlight .nc { + color: #445588; + font-weight: bold; } + .highlight .no { + color: #008080; } + .highlight .ni { + color: #800080; } + .highlight .ne { + color: #990000; + font-weight: bold; } + .highlight .nf { + color: #990000; } + .highlight .nn { + color: #555555; } + .highlight .nt { + color: #000080; } + .highlight .nv { + color: #008080; } + .highlight .ow { + color: #000000; + font-weight: bold; } + .highlight .w { + color: #bbbbbb; } + .highlight .mf { + color: #009999; } + .highlight .mh { + color: #009999; } + .highlight .mi { + color: #009999; } + .highlight .mo { + color: #009999; } + .highlight .sb { + color: #d14; } + .highlight .sc { + color: #d14; } + .highlight .sd { + color: #d14; } + .highlight .s2 { + color: #d14; } + .highlight .se { + color: #d14; } + .highlight .sh { + color: #d14; } + .highlight .si { + color: #d14; } + .highlight .sx { + color: #d14; } + .highlight .sr { + color: #009926; } + .highlight .s1 { + color: #d14; } + .highlight .ss { + color: #990073; } + .highlight .bp { + color: #999999; } + .highlight .vc { + color: #008080; } + .highlight .vg { + color: #008080; } + .highlight .vi { + color: #008080; } + .highlight .il { + color: #009999; } diff --git a/docs/css/jazzy.css b/docs/css/jazzy.css new file mode 100644 index 00000000..833be0d2 --- /dev/null +++ b/docs/css/jazzy.css @@ -0,0 +1,378 @@ +*, *:before, *:after { + box-sizing: inherit; } + +body { + margin: 0; + background: #fff; + color: #333; + font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; + letter-spacing: .2px; + -webkit-font-smoothing: antialiased; + box-sizing: border-box; } + +h1 { + font-size: 2rem; + font-weight: 700; + margin: 1.275em 0 0.6em; } + +h2 { + font-size: 1.75rem; + font-weight: 700; + margin: 1.275em 0 0.3em; } + +h3 { + font-size: 1.5rem; + font-weight: 700; + margin: 1em 0 0.3em; } + +h4 { + font-size: 1.25rem; + font-weight: 700; + margin: 1.275em 0 0.85em; } + +h5 { + font-size: 1rem; + font-weight: 700; + margin: 1.275em 0 0.85em; } + +h6 { + font-size: 1rem; + font-weight: 700; + margin: 1.275em 0 0.85em; + color: #777; } + +p { + margin: 0 0 1em; } + +ul, ol { + padding: 0 0 0 2em; + margin: 0 0 0.85em; } + +blockquote { + margin: 0 0 0.85em; + padding: 0 15px; + color: #858585; + border-left: 4px solid #e5e5e5; } + +img { + max-width: 100%; } + +a { + color: #4183c4; + text-decoration: none; } + a:hover, a:focus { + outline: 0; + text-decoration: underline; } + a.discouraged { + text-decoration: line-through; } + a.discouraged:hover, a.discouraged:focus { + text-decoration: underline line-through; } + +table { + background: #fff; + width: 100%; + border-collapse: collapse; + border-spacing: 0; + overflow: auto; + margin: 0 0 0.85em; } + +tr:nth-child(2n) { + background-color: #fbfbfb; } + +th, td { + padding: 6px 13px; + border: 1px solid #ddd; } + +pre { + margin: 0 0 1.275em; + padding: .85em 1em; + overflow: auto; + background: #f7f7f7; + font-size: .85em; + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } + +code { + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } + +p > code, li > code { + background: #f7f7f7; + padding: .2em; } + p > code:before, p > code:after, li > code:before, li > code:after { + letter-spacing: -.2em; + content: "\00a0"; } + +pre code { + padding: 0; + white-space: pre; } + +.content-wrapper { + display: flex; + flex-direction: column; } + @media (min-width: 768px) { + .content-wrapper { + flex-direction: row; } } + +.header { + display: flex; + padding: 8px; + font-size: 0.875em; + background: #444; + color: #999; } + +.header-col { + margin: 0; + padding: 0 8px; } + +.header-col--primary { + flex: 1; } + +.header-link { + color: #fff; } + +.header-icon { + padding-right: 6px; + vertical-align: -4px; + height: 16px; } + +.breadcrumbs { + font-size: 0.875em; + padding: 8px 16px; + margin: 0; + background: #fbfbfb; + border-bottom: 1px solid #ddd; } + +.carat { + height: 10px; + margin: 0 5px; } + +.navigation { + order: 2; } + @media (min-width: 768px) { + .navigation { + order: 1; + width: 25%; + max-width: 300px; + padding-bottom: 64px; + overflow: hidden; + word-wrap: normal; + background: #fbfbfb; + border-right: 1px solid #ddd; } } + +.nav-groups { + list-style-type: none; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #ddd; + padding: 8px 0 8px 16px; } + +.nav-group-name-link { + color: #333; } + +.nav-group-tasks { + margin: 8px 0; + padding: 0 0 0 8px; } + +.nav-group-task { + font-size: 1em; + list-style-type: none; + white-space: nowrap; } + +.nav-group-task-link { + color: #808080; } + +.main-content { + order: 1; } + @media (min-width: 768px) { + .main-content { + order: 2; + flex: 1; + padding-bottom: 60px; } } + +.section { + padding: 0 32px; + border-bottom: 1px solid #ddd; } + +.section-content { + max-width: 834px; + margin: 0 auto; + padding: 16px 0; } + +.section-name { + color: #666; + display: block; } + +.declaration .highlight { + overflow-x: initial; + padding: 8px 0; + margin: 0; + background-color: transparent; + border: none; } + +.task-group-section { + border-top: 1px solid #ddd; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; } + +.item-container { + padding: 0; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; } + .item .token, .item .direct-link { + padding-left: 3px; + margin-left: 0px; + font-size: 1rem; } + .item .declaration-note { + font-size: .85em; + color: #808080; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #ddd; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + left: 21px; + top: 7px; + display: block; + position: absolute; + width: 12px; + height: 12px; + border-left: 1px solid #ddd; + border-top: 1px solid #ddd; + background: #fff; + transform: rotate(45deg); } + +.height-container { + display: none; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #fff; + border: 1px solid #ddd; + border-top-width: 0; + padding-top: 10px; + padding-bottom: 5px; + padding: 8px 16px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4183c4; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #ddd; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +.footer { + padding: 8px 16px; + background: #444; + color: #ddd; + font-size: 0.8em; } + .footer p { + margin: 8px 0; } + .footer a { + color: #fff; } + +html.dash .header, html.dash .breadcrumbs, html.dash .navigation { + display: none; } + +html.dash .height-container { + display: block; } + +form[role=search] input { + font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 24px; + padding: 0 10px; + margin: 0; + border: none; + border-radius: 1em; } + .loading form[role=search] input { + background: white url(../img/spinner.gif) center right 4px no-repeat; } + +form[role=search] .tt-menu { + margin: 0; + min-width: 300px; + background: #fbfbfb; + color: #333; + border: 1px solid #ddd; } + +form[role=search] .tt-highlight { + font-weight: bold; } + +form[role=search] .tt-suggestion { + font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 0 8px; } + form[role=search] .tt-suggestion span { + display: table-cell; + white-space: nowrap; } + form[role=search] .tt-suggestion .doc-parent-name { + width: 100%; + text-align: right; + font-weight: normal; + font-size: 0.9em; + padding-left: 16px; } + +form[role=search] .tt-suggestion:hover, +form[role=search] .tt-suggestion.tt-cursor { + cursor: pointer; + background-color: #4183c4; + color: #fff; } + +form[role=search] .tt-suggestion:hover .doc-parent-name, +form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { + color: #fff; } diff --git a/docs/docsets/Hero.docset/Contents/Info.plist b/docs/docsets/Hero.docset/Contents/Info.plist new file mode 100644 index 00000000..a7ed4135 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleIdentifier + com.jazzy.hero + CFBundleName + Hero + DocSetPlatformFamily + hero + isDashDocset + + dashIndexFilePath + index.html + isJavaScriptEnabled + + DashDocSetFamily + dashtoc + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes.html new file mode 100644 index 00000000..39344cc0 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes.html @@ -0,0 +1,821 @@ + + + + Classes Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Classes

+

The following classes are available globally.

+ +
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
    +
  • +
    + + + + Lexer + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class Lexer
    + +
    +
    + +
    +
    +
  • +
+
+
+ +
+
+
    +
  • +
    + + + + Parser + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class Parser
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + HeroTransition + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open class HeroTransition : NSObject
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + Hero + +
    +
    +
    +
    +
    +
    +

    The singleton class/object for controlling interactive transitions.

    +
    Hero.shared
    +
    +

    Use the following methods for controlling the interactive transition:

    +
    func update(progress:Double)
    +func end()
    +func cancel()
    +func apply(modifiers:[HeroModifier], to view:UIView)
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class Hero : NSObject
    + +
    +
    + +
    +
    +
  • +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/BinaryOpNode.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/BinaryOpNode.html new file mode 100644 index 00000000..3a440f25 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/BinaryOpNode.html @@ -0,0 +1,388 @@ + + + + BinaryOpNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

BinaryOpNode

+
+
+
public class BinaryOpNode : ExprNode
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + lhs + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let lhs: ExprNode
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + rhs + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let rhs: ExprNode
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(name:lhs:rhs:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(name: String, lhs: ExprNode, rhs: ExprNode)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/CallNode.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/CallNode.html new file mode 100644 index 00000000..e9afa8ea --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/CallNode.html @@ -0,0 +1,358 @@ + + + + CallNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

CallNode

+
+
+
public class CallNode : ExprNode
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + arguments + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let arguments: [ExprNode]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(name:arguments:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(name: String, arguments: [ExprNode])
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/ExprNode.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/ExprNode.html new file mode 100644 index 00000000..a91c1514 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/ExprNode.html @@ -0,0 +1,387 @@ + + + + ExprNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

ExprNode

+
+
+
public class ExprNode : CustomStringConvertible, Equatable
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + range + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var range: CountableRange<Int>
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let name: String
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var description: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(name:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(name: String)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/FunctionNode.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/FunctionNode.html new file mode 100644 index 00000000..c8350ea1 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/FunctionNode.html @@ -0,0 +1,388 @@ + + + + FunctionNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

FunctionNode

+
+
+
public class FunctionNode : ExprNode
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/Hero.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/Hero.html new file mode 100644 index 00000000..e3a4a05b --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/Hero.html @@ -0,0 +1,306 @@ + + + + Hero Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Hero

+
+
+
public class Hero : NSObject
+ +
+
+

The singleton class/object for controlling interactive transitions.

+
Hero.shared
+
+

Use the following methods for controlling the interactive transition:

+
func update(progress:Double)
+func end()
+func cancel()
+func apply(modifiers:[HeroModifier], to view:UIView)
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + shared + +
    +
    +
    +
    +
    +
    +

    Shared singleton object for controlling the transition

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var shared: HeroTransition
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroContext.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroContext.html new file mode 100644 index 00000000..a7482f4c --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroContext.html @@ -0,0 +1,618 @@ + + + + HeroContext Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroContext

+
+
+
public class HeroContext
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + container + +
    +
    +
    +
    +
    +
    +

    The container holding all of the animating views

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let container: UIView
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + fromViews + +
    +
    +
    +
    +
    +
    +

    A flattened list of all views from source ViewController

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var fromViews: [UIView]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + toViews + +
    +
    +
    +
    +
    +
    +

    A flattened list of all views from destination ViewController

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var toViews: [UIView]
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + sourceView(for:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func sourceView(for heroID: String) -> UIView?
    + +
    +
    +
    +

    Return Value

    +

    a source view matching the heroID, nil if not found

    +
    + +
    +
    +
  • +
  • +
    + + + + destinationView(for:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func destinationView(for heroID: String) -> UIView?
    + +
    +
    +
    +

    Return Value

    +

    a destination view matching the heroID, nil if not found

    +
    + +
    +
    +
  • +
  • +
    + + + + pairedView(for:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func pairedView(for view: UIView) -> UIView?
    + +
    +
    +
    +

    Return Value

    +

    a view with the same heroID, but on different view controller, nil if not found

    +
    + +
    +
    +
  • +
  • +
    + + + + snapshotView(for:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func snapshotView(for view: UIView) -> UIView
    + +
    +
    +
    +

    Return Value

    +

    a snapshot view for animation

    +
    + +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript(view: UIView) -> HeroTargetState? { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + clean() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func clean()
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + hide(view:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func hide(view: UIView)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + unhide(view:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func unhide(view: UIView)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroDebugPlugin.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroDebugPlugin.html new file mode 100644 index 00000000..cb8e7adc --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroDebugPlugin.html @@ -0,0 +1,373 @@ + + + + HeroDebugPlugin Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ + +
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroExtension.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroExtension.html new file mode 100644 index 00000000..3ba263ea --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroExtension.html @@ -0,0 +1,895 @@ + + + + HeroExtension Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroExtension

+
+
+
public class HeroExtension<Base>
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + base + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let base: Base
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + id + +
    +
    +
    +
    +
    +
    +

    ID is the identifier for the view. When doing a transition between two view controllers, +Hero will search through all the subviews for both view controllers and matches views with the same heroID.

    + +

    Whenever a pair is discovered, +Hero will automatically transit the views from source state to the destination state.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var id: String? { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isEnabled + +
    +
    +
    +
    +
    +
    +

    isEnabled allows to specify whether a view and its subviews should be consider for animations. +If true, Hero will search through all the subviews for heroIds and modifiers. Defaults to true

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isEnabled: Bool { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isEnabledForSubviews + +
    +
    +
    +
    +
    +
    +

    isEnabledForSubviews allows to specify whether a view’s subviews should be consider for animations. +If true, Hero will search through all the subviews for heroIds and modifiers. Defaults to true

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isEnabledForSubviews: Bool { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + modifiers + +
    +
    +
    +
    +
    +
    +

    Use modifiers to specify animations alongside the main transition. Checkout HeroModifier.swift for available modifiers.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var modifiers: [HeroModifier]? { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + modifierString + +
    +
    +
    +
    +
    +
    +

    modifierString** provides another way to set modifiers. It can be assigned through storyboard.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var modifierString: String? { get set }
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + modalAnimationType + +
    +
    +
    +
    +
    +
    +

    default hero animation type for presenting & dismissing modally

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var modalAnimationType: HeroDefaultAnimationType { get set }
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var modalAnimationTypeString: String? { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isEnabled + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isEnabled: Bool { get set }
    + +
    +
    + +
    +
    +
  • +
+
+
+ +
+
+ +
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Dismiss the current view controller with animation. Will perform a navigationController.popViewController +if the current view controller is contained inside a navigationController

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func dismissViewController(completion: (() -> Void)? = nil)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Unwind to the root view controller using Hero

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func unwindToRootViewController()
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Unwind to a specific view controller using Hero

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func unwindToViewController(_ toViewController: UIViewController)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func unwindToViewController(withSelector: Selector)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Unwind to a view controller with given class using Hero

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func unwindToViewController(withClass: AnyClass)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Unwind to a view controller that the matchBlock returns true on.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func unwindToViewController(withMatchBlock: (UIViewController) -> Bool)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Replace the current view controller with another VC on the navigation/modal stack.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func replaceViewController(with next: UIViewController, completion: (() -> Void)? = nil)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroModifier.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroModifier.html new file mode 100644 index 00000000..6280f738 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroModifier.html @@ -0,0 +1,2650 @@ + + + + HeroModifier Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroModifier

+
+
+
public final class HeroModifier
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
    +
  • +
    + + + + beginWith(_:) + +
    +
    +
    +
    +
    +
    +

    Apply modifiers directly to the view at the start of the transition. +The modifiers supplied here won’t be animated. +For source views, modifiers are set directly at the beginning of the animation. +For destination views, they replace the target state (final appearance).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func beginWith(_ modifiers: [HeroModifier]) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + beginWith(modifiers:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func beginWith(modifiers: [HeroModifier]) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + beginWith(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func beginWith(_ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Use global coordinate space.

    + +

    When using global coordinate space. The view become a independent view that is not a subview of any view. +It won’t move when its parent view moves, and won’t be affected by parent view’s attributes.

    + +

    When a view is matched, this is automatically enabled. +The source modifier will also enable this.

    + +

    Global coordinate space is default for all views prior to version 0.1.3

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var useGlobalCoordinateSpace: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    ignore all heroModifiers attributes for a view’s direct subviews.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var ignoreSubviewModifiers: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    ignore all heroModifiers attributes for a view’s subviews.

    + +
      +
    • recursive: if false, will only ignore direct subviews’ modifiers. default false.
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func ignoreSubviewModifiers(recursive: Bool = false) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + useOptimizedSnapshot + +
    +
    +
    +
    +
    +
    +

    Will create snapshot optimized for different view type. +For custom views or views with masking, useOptimizedSnapshot might create snapshots +that appear differently than the actual view. +In that case, use .useNormalSnapshot or .useSlowRenderSnapshot to disable the optimization.

    + +

    This modifier actually does nothing by itself since .useOptimizedSnapshot is the default.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var useOptimizedSnapshot: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + useNormalSnapshot + +
    +
    +
    +
    +
    +
    +

    Create snapshot using snapshotView(afterScreenUpdates:).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var useNormalSnapshot: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Create snapshot using layer.render(in: currentContext). +This is slower than .useNormalSnapshot but gives more accurate snapshot for some views (eg. UIStackView).

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var useLayerRenderSnapshot: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + useNoSnapshot + +
    +
    +
    +
    +
    +
    +

    Force Hero to not create any snapshot when animating this view. +This will mess up the view hierarchy, therefore, view controllers have to rebuild +its view structure after the transition finishes.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var useNoSnapshot: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + forceAnimate + +
    +
    +
    +
    +
    +
    +

    Force the view to animate.

    + +

    By default, Hero will not animate if the view is outside the screen bounds or if there is no animatable hero modifier, unless this modifier is used.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var forceAnimate: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Force Hero use scale based size animation. This will convert all .size modifier into .scale modifier. +This is to help Hero animate layers that doesn’t support bounds animation. Also gives better performance.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var useScaleBasedSizeChange: HeroModifier
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + from(node:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func from(node: ExprNode) -> HeroModifier?
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + fade + +
    +
    +
    +
    +
    +
    +

    Fade the view during transition

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var fade: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + forceNonFade + +
    +
    +
    +
    +
    +
    +

    Force don’t fade view during transition

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var forceNonFade: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + position(_:) + +
    +
    +
    +
    +
    +
    +

    Set the position for the view to animate from/to.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func position(_ position: CGPoint) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + position + + +
    +

    position for the view to animate from/to

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + size(_:) + +
    +
    +
    +
    +
    +
    +

    Set the size for the view to animate from/to.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func size(_ size: CGSize) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + size + + +
    +

    size for the view to animate from/to

    +
    +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + transform(_:) + +
    +
    +
    +
    +
    +
    +

    Set the transform for the view to animate from/to. Will override previous perspective, scale, translate, & rotate modifiers

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func transform(_ t: CATransform3D) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + t + + +
    +

    the CATransform3D object

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + perspective(_:) + +
    +
    +
    +
    +
    +
    +

    Set the perspective on the transform. use in combination with the rotate modifier.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func perspective(_ perspective: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + perspective + + +
    +

    set the camera distance of the transform

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + scale(x:y:z:) + +
    +
    +
    +
    +
    +
    +

    Scale 3d

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func scale(x: CGFloat = 1, y: CGFloat = 1, z: CGFloat = 1) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + x + + +
    +

    scale factor on x axis, default 1

    +
    +
    + + y + + +
    +

    scale factor on y axis, default 1

    +
    +
    + + z + + +
    +

    scale factor on z axis, default 1

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + scale(_:) + +
    +
    +
    +
    +
    +
    +

    Scale in x & y axis

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func scale(_ xy: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + xy + + +
    +

    scale factor in both x & y axis

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + translate(x:y:z:) + +
    +
    +
    +
    +
    +
    +

    Translate 3d

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func translate(x: CGFloat = 0, y: CGFloat = 0, z: CGFloat = 0) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + x + + +
    +

    translation distance on x axis in display pixel, default 0

    +
    +
    + + y + + +
    +

    translation distance on y axis in display pixel, default 0

    +
    +
    + + z + + +
    +

    translation distance on z axis in display pixel, default 0

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + translate(_:z:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func translate(_ point: CGPoint, z: CGFloat = 0) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + rotate(x:y:z:) + +
    +
    +
    +
    +
    +
    +

    Rotate 3d

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func rotate(x: CGFloat = 0, y: CGFloat = 0, z: CGFloat = 0) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + x + + +
    +

    rotation on x axis in radian, default 0

    +
    +
    + + y + + +
    +

    rotation on y axis in radian, default 0

    +
    +
    + + z + + +
    +

    rotation on z axis in radian, default 0

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + rotate(_:z:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func rotate(_ point: CGPoint, z: CGFloat = 0) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + rotate(_:) + +
    +
    +
    +
    +
    +
    +

    Rotate 2d

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func rotate(_ z: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + z + + +
    +

    rotation in radian

    +
    +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + opacity(_:) + +
    +
    +
    +
    +
    +
    +

    Set the opacity for the view to animate from/to.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func opacity(_ opacity: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + opacity + + +
    +

    opacity for the view to animate from/to

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + backgroundColor(_:) + +
    +
    +
    +
    +
    +
    +

    Set the backgroundColor for the view to animate from/to.

    + +
      +
    • backgroundColor: backgroundColor for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func backgroundColor(_ backgroundColor: UIColor) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + cornerRadius(_:) + +
    +
    +
    +
    +
    +
    +

    Set the cornerRadius for the view to animate from/to.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func cornerRadius(_ cornerRadius: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + cornerRadius + + +
    +

    cornerRadius for the view to animate from/to

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + zPosition(_:) + +
    +
    +
    +
    +
    +
    +

    Set the zPosition for the view to animate from/to.

    + +
      +
    • zPosition: zPosition for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func zPosition(_ zPosition: CGFloat) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + contentsRect(_:) + +
    +
    +
    +
    +
    +
    +

    Set the contentsRect for the view to animate from/to.

    + +
      +
    • contentsRect: contentsRect for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func contentsRect(_ contentsRect: CGRect) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + contentsScale(_:) + +
    +
    +
    +
    +
    +
    +

    Set the contentsScale for the view to animate from/to.

    + +
      +
    • contentsScale: contentsScale for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func contentsScale(_ contentsScale: CGFloat) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + borderWidth(_:) + +
    +
    +
    +
    +
    +
    +

    Set the borderWidth for the view to animate from/to.

    + +
      +
    • borderWidth: borderWidth for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func borderWidth(_ borderWidth: CGFloat) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + borderColor(_:) + +
    +
    +
    +
    +
    +
    +

    Set the borderColor for the view to animate from/to.

    + +
      +
    • borderColor: borderColor for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func borderColor(_ borderColor: UIColor) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowColor(_:) + +
    +
    +
    +
    +
    +
    +

    Set the shadowColor for the view to animate from/to.

    + +
      +
    • shadowColor: shadowColor for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func shadowColor(_ shadowColor: UIColor) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowOpacity(_:) + +
    +
    +
    +
    +
    +
    +

    Set the shadowOpacity for the view to animate from/to.

    + +
      +
    • shadowOpacity: shadowOpacity for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func shadowOpacity(_ shadowOpacity: CGFloat) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowOffset(_:) + +
    +
    +
    +
    +
    +
    +

    Set the shadowOffset for the view to animate from/to.

    + +
      +
    • shadowOffset: shadowOffset for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func shadowOffset(_ shadowOffset: CGSize) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowRadius(_:) + +
    +
    +
    +
    +
    +
    +

    Set the shadowRadius for the view to animate from/to.

    + +
      +
    • shadowRadius: shadowRadius for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func shadowRadius(_ shadowRadius: CGFloat) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowPath(_:) + +
    +
    +
    +
    +
    +
    +

    Set the shadowPath for the view to animate from/to.

    + +
      +
    • shadowPath: shadowPath for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func shadowPath(_ shadowPath: CGPath) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + masksToBounds(_:) + +
    +
    +
    +
    +
    +
    +

    Set the masksToBounds for the view to animate from/to.

    + +
      +
    • masksToBounds: masksToBounds for the view to animate from/to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func masksToBounds(_ masksToBounds: Bool) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Create an overlay on the animating view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func overlay(color: UIColor, opacity: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + color + + +
    +

    color of the overlay

    +
    +
    + + opacity + + +
    +

    opacity of the overlay

    +
    +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + duration(_:) + +
    +
    +
    +
    +
    +
    +

    Sets the duration of the animation for a given view. If not used, Hero will use determine the duration based on the distance and size changes.

    + +

    Note: a duration of .infinity means matching the duration of the longest animation. same as .durationMatchLongest

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func duration(_ duration: TimeInterval) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + duration + + +
    +

    duration of the animation

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + durationMatchLongest + +
    +
    +
    +
    +
    +
    +

    Sets the duration of the animation for a given view to match the longest animation of the transition.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var durationMatchLongest: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + delay(_:) + +
    +
    +
    +
    +
    +
    +

    Sets the delay of the animation for a given view.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func delay(_ delay: TimeInterval) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + delay + + +
    +

    delay of the animation

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + timingFunction(_:) + +
    +
    +
    +
    +
    +
    +

    Sets the timing function of the animation for a given view. If not used, Hero will use determine the timing function based on whether or not the view is entering or exiting the screen.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func timingFunction(_ timingFunction: CAMediaTimingFunction) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + timingFunction + + +
    +

    timing function of the animation

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    (iOS 9+) Use spring animation with custom stiffness & damping. The duration will be automatically calculated. Will be ignored if arc, timingFunction, or duration is set.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @available(iOS 9, *)
    +public static func spring(stiffness: CGFloat, damping: CGFloat) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + stiffness + + +
    +

    stiffness of the spring

    +
    +
    + + damping + + +
    +

    damping of the spring

    +
    +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + source(heroID:) + +
    +
    +
    +
    +
    +
    +

    Transition from/to the state of the view with matching heroID +Will also force the view to use global coordinate space.

    + +

    The following layer properties will be animated from the given view.

    +
    position
    +bounds.size
    +cornerRadius
    +transform
    +shadowColor
    +shadowOpacity
    +shadowOffset
    +shadowRadius
    +shadowPath
    +
    + +

    Note that the following properties won’t be taken from the source view.

    +
    backgroundColor
    +borderWidth
    +borderColor
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func source(heroID: String) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + heroID + + +
    +

    the source view’s heroId.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + arc + +
    +
    +
    +
    +
    +
    +

    Works in combination with position modifier to apply a natural curve when moving to the destination.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var arc: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + arc(intensity:) + +
    +
    +
    +
    +
    +
    +

    Works in combination with position modifier to apply a natural curve when moving to the destination.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func arc(intensity: CGFloat = 1) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + intensity + + +
    +

    a value of 1 represent a downward natural curve ╰. a value of -1 represent a upward curve ╮. +default is 1.

    +
    +
    +
    + +
    +
    +
  • +
  • +
    + + + + cascade + +
    +
    +
    +
    +
    +
    +

    Cascade applys increasing delay modifiers to subviews

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var cascade: HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Cascade applys increasing delay modifiers to subviews

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func cascade(delta: TimeInterval = 0.02,
    +                           direction: CascadeDirection = .topToBottom,
    +                           delayMatchedViews: Bool = false) -> HeroModifier
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + delta + + +
    +

    delay in between each animation

    +
    +
    + + direction + + +
    +

    cascade direction

    +
    +
    + + delayMatchedViews + + +
    +

    whether or not to delay matched subviews until all cascading animation have started

    +
    +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + when(_:_:) + +
    +
    +
    +
    +
    +
    +

    Apply modifiers only if the condition return true.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func when(_ condition: @escaping (HeroConditionalContext) -> Bool, _ modifiers: [HeroModifier]) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + when(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func when(_ condition: @escaping (HeroConditionalContext) -> Bool, _ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + whenMatched(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func whenMatched(_ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + whenPresenting(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func whenPresenting(_ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + whenDismissing(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func whenDismissing(_ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + whenAppearing(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func whenAppearing(_ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + whenDisappearing(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func whenDisappearing(_ modifiers: HeroModifier...) -> HeroModifier
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroPlugin.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroPlugin.html new file mode 100644 index 00000000..7857f3ad --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroPlugin.html @@ -0,0 +1,945 @@ + + + + HeroPlugin Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroPlugin

+
+
+
open class HeroPlugin : NSObject, HeroPreprocessor, HeroAnimator
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + hero + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    weak public var hero: HeroTransition!
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + context + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var context: HeroContext! { get }
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Determines whether or not to receive seekTo callback on every frame.

    + +

    Default is false.

    + +

    When requirePerFrameCallback is false, the plugin needs to start its own animations inside animate & resume +The seekTo method is only being called during an interactive transition.

    + +

    When requirePerFrameCallback is true, the plugin will receive seekTo callback on every animation frame. Hence it is possible for the plugin to do per-frame animations without implementing animate & resume

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open var requirePerFrameCallback: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override required init()
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called before any animation. +Override this method when you want to preprocess modifiers for views

    + +

    To check a view’s modifiers:

    +
    context[view]
    +context[view, "modifierName"]
    +
    + +

    To set a view’s modifiers:

    +
    context[view] = [("modifier1", ["parameter1"]), ("modifier2", [])]
    +context[view, "modifier1"] = ["parameter1", "parameter2"]
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func process(fromViews: [UIView], toViews: [UIView])
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + context + + +
    +

    object holding all parsed and changed modifiers,

    +
    +
    + + fromViews + + +
    +

    A flattened list of all views from source ViewController

    +
    +
    + + toViews + + +
    +

    A flattened list of all views from destination ViewController

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func canAnimate(view: UIView, appearing: Bool) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + context + + +
    +

    object holding all parsed and changed modifiers,

    +
    +
    + + view + + +
    +

    the view to check whether or not the plugin can handle the animation

    +
    +
    + + appearing + + +
    +

    true if the view is appearing(i.e. a view in destination ViewController) +If return true, Hero won’t animate and won’t let any other plugins animate this view. +The view will also be hidden automatically during the animation.

    +
    +
    +
    +
    +

    Return Value

    +

    return true if the plugin can handle animating the view.

    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Perform the animation.

    + +

    Note: views in fromViews & toViews are hidden already. Unhide then if you need to take snapshots.

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func animate(fromViews: [UIView], toViews: [UIView]) -> TimeInterval
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + context + + +
    +

    object holding all parsed and changed modifiers,

    +
    +
    + + fromViews + + +
    +

    A flattened list of all views from source ViewController (filtered by canAnimate)

    +
    +
    + + toViews + + +
    +

    A flattened list of all views from destination ViewController (filtered by canAnimate)

    +
    +
    +
    +
    +

    Return Value

    +

    The duration needed to complete the animation

    +
    + +
    +
    +
  • +
  • +
    + + + + clean() + +
    +
    +
    +
    +
    +
    +

    Called when all animations are completed.

    + +

    Should perform cleanup and release any reference

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func clean()
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + seekTo(timePassed:) + +
    +
    +
    +
    +
    +
    +

    For supporting interactive animation only.

    + +

    This method is called when an interactive animation is in place +The plugin should pause the animation, and seek to the given progress

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func seekTo(timePassed: TimeInterval)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + timePassed + + +
    +

    time of the animation to seek to.

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    For supporting interactive animation only.

    + +

    This method is called when an interactive animation is ended +The plugin should resume the animation.

    + +
      +
    • timePassed: will be the same value since last seekTo
    • +
    • reverse: a boolean value indicating whether or not the animation should reverse
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func resume(timePassed: TimeInterval, reverse: Bool) -> TimeInterval
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + apply(state:to:) + +
    +
    +
    +
    +
    +
    +

    For supporting interactive animation only.

    + +

    This method is called when user wants to override animation modifiers during an interactive animation

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func apply(state: HeroTargetState, to view: UIView)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + state + + +
    +

    the target state to override

    +
    +
    + + view + + +
    +

    the view to override

    +
    +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func changeTarget(state: HeroTargetState, isDestination: Bool, to view: UIView)
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + isEnabled + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var isEnabled: Bool { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + enable() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func enable()
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + disable() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func disable()
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroTransition.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroTransition.html new file mode 100644 index 00000000..e295f07c --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/HeroTransition.html @@ -0,0 +1,1706 @@ + + + + HeroTransition Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroTransition

+
+
+
open class HeroTransition : NSObject
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + delegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var delegate: HeroTransitionDelegate?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + defaultAnimation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var defaultAnimation: HeroDefaultAnimationType
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + containerColor + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var containerColor: UIColor
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isUserInteractionEnabled: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + viewOrderingStrategy + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var viewOrderingStrategy: HeroViewOrderingStrategy
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var defaultAnimationDirectionStrategy: HeroDefaultAnimationType.Strategy
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + state + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var state: HeroTransitionState { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isTransitioning + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isTransitioning: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isPresenting + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var isPresenting: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + transitioning + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var transitioning: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + presenting + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var presenting: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + container + +
    +
    +
    +
    +
    +
    +

    container we created to hold all animating views, will be a subview of the +transitionContainer when transitioning

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var container: UIView!
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + toViewController + +
    +
    +
    +
    +
    +
    +

    destination view controller

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var toViewController: UIViewController?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + fromViewController + +
    +
    +
    +
    +
    +
    +

    source view controller

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var fromViewController: UIViewController?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + context + +
    +
    +
    +
    +
    +
    +

    context object holding transition informations

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var context: HeroContext!
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + interactive + +
    +
    +
    +
    +
    +
    +

    whether or not we are handling transition interactively

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var interactive: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + totalDuration + +
    +
    +
    +
    +
    +
    +

    max duration needed by the animators

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var totalDuration: TimeInterval
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + progress + +
    +
    +
    +
    +
    +
    +

    progress of the current transition. 0 if no transition is happening

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public internal(set) var progress: Double { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override init()
    + +
    +
    + +
    +
    +
  • +
+
+
+ + +
+
+
    +
  • +
    + + + + animate() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func animate()
    + +
    +
    + +
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transition(from: UIViewController, to: UIViewController, in view: UIView, completion: ((Bool) -> Void)? = nil)
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + update(_:) + +
    +
    +
    +
    +
    +
    +

    Update the progress for the interactive transition.

    + +
      +
    • progress: the current progress, must be between 0…1
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func update(_ percentageComplete: CGFloat)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + finish(animate:) + +
    +
    +
    +
    +
    +
    +

    Finish the interactive transition. +Will stop the interactive transition and animate from the +current state to the end state

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func finish(animate: Bool = true)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + cancel(animate:) + +
    +
    +
    +
    +
    +
    +

    Cancel the interactive transition. +Will stop the interactive transition and animate from the +current state to the beginning state

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func cancel(animate: Bool = true)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + apply(modifiers:to:) + +
    +
    +
    +
    +
    +
    +

    Override modifiers during an interactive animation.

    + +

    For example:

    + +

    Hero.shared.apply([.position(x:50, y:50)], to:view)

    + +

    will set the view’s position to 50, 50

    + +
      +
    • modifiers: the modifiers to override
    • +
    • view: the view to override to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func apply(modifiers: [HeroModifier], to view: UIView)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Override target state during an interactive animation.

    + +

    For example:

    + +

    Hero.shared.changeTarget([.position(x:50, y:50)], to:view)

    + +

    will animate the view’s position to 50, 50 once finish(animate:) is called

    + +
      +
    • modifiers: the modifiers to override
    • +
    • isDestination: if false, it changes the starting state
    • +
    • view: the view to override to
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func changeTarget(modifiers: [HeroModifier], isDestination: Bool = true, to view: UIView)
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + start() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    open func start()
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationController.Operation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func navigationController(_ navigationController: UINavigationController, interactionControllerFor animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func tabBarController(_ tabBarController: UITabBarController, interactionControllerFor animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func tabBarController(_ tabBarController: UITabBarController, animationControllerForTransitionFrom fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func interactionControllerForDismissal(using animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func interactionControllerForPresentation(using animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func animateTransition(using context: UIViewControllerContextTransitioning)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + animationEnded(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func animationEnded(_ transitionCompleted: Bool)
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + wantsInteractiveStart + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var wantsInteractiveStart: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func startInteractiveTransition(_ transitionContext: UIViewControllerContextTransitioning)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/Lexer.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/Lexer.html new file mode 100644 index 00000000..393639ce --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/Lexer.html @@ -0,0 +1,328 @@ + + + + Lexer Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Lexer

+
+
+
public class Lexer
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(input:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(input: String)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + tokenize() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func tokenize() -> [Token]
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/NumberNode.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/NumberNode.html new file mode 100644 index 00000000..7f87ad22 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/NumberNode.html @@ -0,0 +1,358 @@ + + + + NumberNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

NumberNode

+
+
+
public class NumberNode : ExprNode
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let value: Float
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + init(value:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(value: Float)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/Parser.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/Parser.html new file mode 100644 index 00000000..e1031b72 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/Parser.html @@ -0,0 +1,328 @@ + + + + Parser Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Parser

+
+
+
public class Parser
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + init(tokens:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(tokens: [Token])
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + parse() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func parse() throws -> [ExprNode]
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/PrototypeNode.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/PrototypeNode.html new file mode 100644 index 00000000..1f372c9b --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/PrototypeNode.html @@ -0,0 +1,358 @@ + + + + PrototypeNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

PrototypeNode

+
+
+
public class PrototypeNode : ExprNode
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + argumentNames + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public let argumentNames: [String]
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String { get }
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public init(name: String, argumentNames: [String])
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/VariableNode.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/VariableNode.html new file mode 100644 index 00000000..a66afe2e --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Classes/VariableNode.html @@ -0,0 +1,298 @@ + + + + VariableNode Class Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

VariableNode

+
+
+
public class VariableNode : ExprNode
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + description + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public override var description: String { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums.html new file mode 100644 index 00000000..104d4fbf --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums.html @@ -0,0 +1,534 @@ + + + + Enumerations Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+ +
+
+
+ +
+
+ +
+
+
    +
  • +
    + + + + Token + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum Token
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + ParseError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public enum ParseError : Error
    + +
    +
    + +
    +
    +
  • +
+
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/CascadeDirection.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/CascadeDirection.html new file mode 100644 index 00000000..c32bf493 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/CascadeDirection.html @@ -0,0 +1,508 @@ + + + + CascadeDirection Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

CascadeDirection

+
+
+
public enum CascadeDirection
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + topToBottom + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case topToBottom
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + bottomToTop + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case bottomToTop
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + leftToRight + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case leftToRight
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + rightToLeft + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case rightToLeft
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + radial(center:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case radial(center: CGPoint)
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case inverseRadial(center: CGPoint)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + leadingToTrailing + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var leadingToTrailing: CascadeDirection { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + trailingToLeading + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var trailingToLeading: CascadeDirection { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroCoordinateSpace.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroCoordinateSpace.html new file mode 100644 index 00000000..c66ce6a2 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroCoordinateSpace.html @@ -0,0 +1,328 @@ + + + + HeroCoordinateSpace Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroCoordinateSpace

+
+
+
public enum HeroCoordinateSpace
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + global + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case global
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + local + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case local
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroDefaultAnimationType.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroDefaultAnimationType.html new file mode 100644 index 00000000..d2a2fa93 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroDefaultAnimationType.html @@ -0,0 +1,844 @@ + + + + HeroDefaultAnimationType Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroDefaultAnimationType

+
+
+
public enum HeroDefaultAnimationType
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
    +
  • +
    + + + + from(node:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func from(node: ExprNode) -> HeroDefaultAnimationType?
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroDefaultAnimationType/Direction.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroDefaultAnimationType/Direction.html new file mode 100644 index 00000000..877cb861 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroDefaultAnimationType/Direction.html @@ -0,0 +1,478 @@ + + + + Direction Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Direction

+
+
+
public enum Direction : HeroStringConvertible
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + left + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case left
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + right + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case right
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + up + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case up
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + down + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case down
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + from(node:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func from(node: ExprNode) -> Direction?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + leading + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var leading: Direction { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + trailing + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static var trailing: Direction { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroDefaultAnimationType/Strategy.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroDefaultAnimationType/Strategy.html new file mode 100644 index 00000000..b583e381 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroDefaultAnimationType/Strategy.html @@ -0,0 +1,358 @@ + + + + Strategy Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Strategy

+
+
+
public enum Strategy
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroSnapshotType.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroSnapshotType.html new file mode 100644 index 00000000..2be51fcb --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroSnapshotType.html @@ -0,0 +1,393 @@ + + + + HeroSnapshotType Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroSnapshotType

+
+
+
public enum HeroSnapshotType
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + optimized + +
    +
    +
    +
    +
    +
    +

    Will optimize for different type of views +For custom views or views with masking, .optimizedDefault might create snapshots +that appear differently than the actual view. +In that case, use .normal or .slowRender to disable the optimization

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case optimized
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + normal + +
    +
    +
    +
    +
    +
    +

    snapshotView(afterScreenUpdates:)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case normal
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + layerRender + +
    +
    +
    +
    +
    +
    +

    layer.render(in: currentContext)

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case layerRender
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + noSnapshot + +
    +
    +
    +
    +
    +
    +

    will not create snapshot. animate the view directly. +This will mess up the view hierarchy, therefore, view controllers have to rebuild +its view structure after the transition finishes

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case noSnapshot
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroTransitionState.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroTransitionState.html new file mode 100644 index 00000000..3d100544 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroTransitionState.html @@ -0,0 +1,418 @@ + + + + HeroTransitionState Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroTransitionState

+
+
+
public enum HeroTransitionState : Int
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + possible + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case possible
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + notified + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case notified
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + starting + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case starting
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + animating + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case animating
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + completing + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case completing
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroViewOrderingStrategy.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroViewOrderingStrategy.html new file mode 100644 index 00000000..b7531b28 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/HeroViewOrderingStrategy.html @@ -0,0 +1,358 @@ + + + + HeroViewOrderingStrategy Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroViewOrderingStrategy

+
+
+
public enum HeroViewOrderingStrategy
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + auto + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case auto
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + sourceViewOnTop + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case sourceViewOnTop
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + destinationViewOnTop + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case destinationViewOnTop
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/ParseError.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/ParseError.html new file mode 100644 index 00000000..26ec7263 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/ParseError.html @@ -0,0 +1,448 @@ + + + + ParseError Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

ParseError

+
+
+
public enum ParseError : Error
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/Token.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/Token.html new file mode 100644 index 00000000..41cccbb6 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Enums/Token.html @@ -0,0 +1,448 @@ + + + + Token Enumeration Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Token

+
+
+
public enum Token
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + identifier(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case identifier(String, CountableRange<Int>)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + number(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case number(Float, CountableRange<Int>)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + parensOpen(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case parensOpen(CountableRange<Int>)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + parensClose(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case parensClose(CountableRange<Int>)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + comma(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case comma(CountableRange<Int>)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + other(_:_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    case other(String, CountableRange<Int>)
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions.html new file mode 100644 index 00000000..b875e14d --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions.html @@ -0,0 +1,548 @@ + + + + Extensions Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Extensions

+

The following extensions are available globally.

+ +
+
+ +
+
+
+
    +
  • +
    + + + + HeroDebugView + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension HeroDebugView: UIGestureRecognizerDelegate
    + +
    +
    + +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + CAMediaTimingFunction + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension CAMediaTimingFunction
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + CATransform3D + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension CATransform3D: Equatable
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + UIView + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension UIView
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + UIViewController + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension UIViewController
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension UINavigationController
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + UITabBarController + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    extension UITabBarController
    + +
    +
    +
    +
    +
  • +
+
+
+
    +
  • +
    + + + + String + +
    +
    +
    +
    +
    +
    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public extension String
    + +
    +
    +
    +
    +
  • +
+
+
+ +
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/CAMediaTimingFunction.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/CAMediaTimingFunction.html new file mode 100644 index 00000000..53ebe48c --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/CAMediaTimingFunction.html @@ -0,0 +1,567 @@ + + + + CAMediaTimingFunction Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

CAMediaTimingFunction

+
+
+
public extension CAMediaTimingFunction
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + linear + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let linear: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + easeIn + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let easeIn: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + easeOut + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let easeOut: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + easeInOut + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let easeInOut: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + standard + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let standard: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + deceleration + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let deceleration: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + acceleration + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let acceleration: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + sharp + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let sharp: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + easeOutBack + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static let easeOutBack: CAMediaTimingFunction
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + from(name:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func from(name: String) -> CAMediaTimingFunction?
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/CATransform3D.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/CATransform3D.html new file mode 100644 index 00000000..7766c3dd --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/CATransform3D.html @@ -0,0 +1,296 @@ + + + + CATransform3D Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

CATransform3D

+
+
+
extension CATransform3D: Equatable
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + ==(_:_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public static func == (lhs: CATransform3D, rhs: CATransform3D) -> Bool
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/HeroDebugView.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/HeroDebugView.html new file mode 100644 index 00000000..fea8b8e5 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/HeroDebugView.html @@ -0,0 +1,279 @@ + + + + HeroDebugView Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + + + + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/String.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/String.html new file mode 100644 index 00000000..49b8309a --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/String.html @@ -0,0 +1,297 @@ + + + + String Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

String

+
+
+
public extension String
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + match(regex:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public func match(regex: String) -> (String, CountableRange<Int>)?
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/UINavigationController.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/UINavigationController.html new file mode 100644 index 00000000..cd585556 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/UINavigationController.html @@ -0,0 +1,279 @@ + + + + UINavigationController Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

UINavigationController

+ +
+
+ +
+
+
+
    +
  • +
    + + + + Operation + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/UITabBarController.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/UITabBarController.html new file mode 100644 index 00000000..d3578269 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/UITabBarController.html @@ -0,0 +1,328 @@ + + + + UITabBarController Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

UITabBarController

+
+
+
extension UITabBarController
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/UIView.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/UIView.html new file mode 100644 index 00000000..83f6ec6f --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/UIView.html @@ -0,0 +1,421 @@ + + + + UIView Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

UIView

+
+
+
public extension UIView
+ +
+
+ +
+
+ +
+
+
+
    +
  • +
    + + + + heroID + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @IBInspectable
    +var heroID: String? { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isHeroEnabled + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @IBInspectable
    +var isHeroEnabled: Bool { get set }
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @IBInspectable
    +var isHeroEnabledForSubviews: Bool { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + heroModifiers + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var heroModifiers: [HeroModifier]? { get set }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + heroModifierString + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    @IBInspectable
    +var heroModifierString: String? { get set }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/UIViewController.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/UIViewController.html new file mode 100644 index 00000000..c662f574 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Extensions/UIViewController.html @@ -0,0 +1,636 @@ + + + + UIViewController Extension Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

UIViewController

+
+
+
public extension UIViewController
+ +
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Functions.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Functions.html new file mode 100644 index 00000000..a44d8efa --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Functions.html @@ -0,0 +1,292 @@ + + + + Functions Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Functions

+

The following functions are available globally.

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols.html new file mode 100644 index 00000000..3cf58fc9 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols.html @@ -0,0 +1,531 @@ + + + + Protocols Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+ +
+
+
+ +
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Allows a view to create their own custom snapshot when using Optimized snapshot

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public protocol HeroCustomSnapshotView
    + +
    +
    + +
    +
    +
  • +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroAnimator.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroAnimator.html new file mode 100644 index 00000000..a432928f --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroAnimator.html @@ -0,0 +1,508 @@ + + + + HeroAnimator Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroAnimator

+
+
+
public protocol HeroAnimator : AnyObject
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroCompatible.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroCompatible.html new file mode 100644 index 00000000..b66efbcb --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroCompatible.html @@ -0,0 +1,336 @@ + + + + HeroCompatible Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroCompatible

+
+
+
public protocol HeroCompatible
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + CompatibleType + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    associatedtype CompatibleType
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + hero + + + Default implementation + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +

    Default Implementation

    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var hero: HeroExtension<CompatibleType> { get set }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroCustomSnapshotView.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroCustomSnapshotView.html new file mode 100644 index 00000000..13438a61 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroCustomSnapshotView.html @@ -0,0 +1,298 @@ + + + + HeroCustomSnapshotView Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroCustomSnapshotView

+
+
+
public protocol HeroCustomSnapshotView
+ +
+
+

Allows a view to create their own custom snapshot when using Optimized snapshot

+ +
+
+ +
+
+
+
    +
  • +
    + + + + heroSnapshot + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    var heroSnapshot: UIView? { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroPreprocessor.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroPreprocessor.html new file mode 100644 index 00000000..05ac19c9 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroPreprocessor.html @@ -0,0 +1,328 @@ + + + + HeroPreprocessor Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroPreprocessor

+
+
+
public protocol HeroPreprocessor : AnyObject
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroProgressUpdateObserver.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroProgressUpdateObserver.html new file mode 100644 index 00000000..a60b00ad --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroProgressUpdateObserver.html @@ -0,0 +1,298 @@ + + + + HeroProgressUpdateObserver Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroProgressUpdateObserver

+
+
+
public protocol HeroProgressUpdateObserver : AnyObject
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroStringConvertible.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroStringConvertible.html new file mode 100644 index 00000000..e07f639f --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroStringConvertible.html @@ -0,0 +1,298 @@ + + + + HeroStringConvertible Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroStringConvertible

+
+
+
public protocol HeroStringConvertible
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + from(node:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    static func from(node: ExprNode) -> `Self`?
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroTransitionDelegate.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroTransitionDelegate.html new file mode 100644 index 00000000..8b8cafc9 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroTransitionDelegate.html @@ -0,0 +1,328 @@ + + + + HeroTransitionDelegate Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroTransitionDelegate

+
+
+
public protocol HeroTransitionDelegate : AnyObject
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroViewControllerDelegate.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroViewControllerDelegate.html new file mode 100644 index 00000000..29cfaf1d --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Protocols/HeroViewControllerDelegate.html @@ -0,0 +1,548 @@ + + + + HeroViewControllerDelegate Protocol Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroViewControllerDelegate

+
+
+
@objc
+public protocol HeroViewControllerDelegate
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Structs.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Structs.html new file mode 100644 index 00000000..05a612f4 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Structs.html @@ -0,0 +1,328 @@ + + + + Structures Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

Structures

+

The following structures are available globally.

+ +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Structs/HeroConditionalContext.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Structs/HeroConditionalContext.html new file mode 100644 index 00000000..fd2c797c --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Structs/HeroConditionalContext.html @@ -0,0 +1,658 @@ + + + + HeroConditionalContext Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroConditionalContext

+
+
+
public struct HeroConditionalContext
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + view + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public weak var view: UIView!
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isAppearing + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public private(set) var isAppearing: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isPresenting + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isPresenting: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isInTabbarController + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isInTabbarController: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isInNavbarController + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isInNavbarController: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isMatched + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isMatched: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + isAncestorViewMatched + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var isAncestorViewMatched: Bool { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + matchedView + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var matchedView: UIView? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + matchedAncestorView + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var matchedAncestorView: (UIView, UIView)? { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + fromViewController + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var fromViewController: UIViewController { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + toViewController + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var toViewController: UIViewController { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + currentViewController + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var currentViewController: UIViewController { get }
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + otherViewController + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var otherViewController: UIViewController { get }
    + +
    +
    + +
    +
    +
  • +
+
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/Structs/HeroTargetState.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/Structs/HeroTargetState.html new file mode 100644 index 00000000..31ba2130 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/Structs/HeroTargetState.html @@ -0,0 +1,1444 @@ + + + + HeroTargetState Structure Reference + + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+

HeroTargetState

+
+
+
public struct HeroTargetState
+ +
+
+

Undocumented

+ +
+
+ +
+
+
+
    +
  • +
    + + + + beginState + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var beginState: [HeroModifier]?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + conditionalModifiers + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var conditionalModifiers: [((HeroConditionalContext) -> Bool, [HeroModifier])]?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + position + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var position: CGPoint?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + size + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var size: CGSize?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + transform + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var transform: CATransform3D?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + opacity + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var opacity: Float?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + cornerRadius + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var cornerRadius: CGFloat?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + backgroundColor + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var backgroundColor: CGColor?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + zPosition + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var zPosition: CGFloat?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + contentsRect + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentsRect: CGRect?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + contentsScale + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var contentsScale: CGFloat?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + borderWidth + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var borderWidth: CGFloat?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + borderColor + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var borderColor: CGColor?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowColor + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadowColor: CGColor?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowOpacity + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadowOpacity: Float?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowOffset + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadowOffset: CGSize?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowRadius + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadowRadius: CGFloat?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + shadowPath + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var shadowPath: CGPath?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + masksToBounds + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var masksToBounds: Bool?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + displayShadow + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var displayShadow: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + overlay + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var overlay: (color: CGColor, opacity: CGFloat)?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + spring + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var spring: (CGFloat, CGFloat)?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + delay + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var delay: TimeInterval
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + duration + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var duration: TimeInterval?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + timingFunction + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var timingFunction: CAMediaTimingFunction?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + arc + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var arc: CGFloat?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + source + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var source: String?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + cascade + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var cascade: (TimeInterval, CascadeDirection, Bool)?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var ignoreSubviewModifiers: Bool?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + coordinateSpace + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var coordinateSpace: HeroCoordinateSpace?
    + +
    +
    + +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var useScaleBasedSizeChange: Bool?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + snapshotType + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var snapshotType: HeroSnapshotType?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + nonFade + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var nonFade: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + forceAnimate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var forceAnimate: Bool
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + custom + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public var custom: [String : Any]?
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + append(_:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func append(_ modifier: HeroModifier)
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + append(contentsOf:) + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public mutating func append(contentsOf modifiers: [HeroModifier])
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + subscript(_:) + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public subscript(key: String) -> Any? { get set }
    + +
    +
    +
    +

    Return Value

    +

    custom item for a specific key

    +
    + +
    +
    +
  • +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/css/highlight.css b/docs/docsets/Hero.docset/Contents/Resources/Documents/css/highlight.css new file mode 100644 index 00000000..d0db0e13 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/css/highlight.css @@ -0,0 +1,200 @@ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight { + /* Comment */ + /* Error */ + /* Keyword */ + /* Operator */ + /* Comment.Multiline */ + /* Comment.Preproc */ + /* Comment.Single */ + /* Comment.Special */ + /* Generic.Deleted */ + /* Generic.Deleted.Specific */ + /* Generic.Emph */ + /* Generic.Error */ + /* Generic.Heading */ + /* Generic.Inserted */ + /* Generic.Inserted.Specific */ + /* Generic.Output */ + /* Generic.Prompt */ + /* Generic.Strong */ + /* Generic.Subheading */ + /* Generic.Traceback */ + /* Keyword.Constant */ + /* Keyword.Declaration */ + /* Keyword.Pseudo */ + /* Keyword.Reserved */ + /* Keyword.Type */ + /* Literal.Number */ + /* Literal.String */ + /* Name.Attribute */ + /* Name.Builtin */ + /* Name.Class */ + /* Name.Constant */ + /* Name.Entity */ + /* Name.Exception */ + /* Name.Function */ + /* Name.Namespace */ + /* Name.Tag */ + /* Name.Variable */ + /* Operator.Word */ + /* Text.Whitespace */ + /* Literal.Number.Float */ + /* Literal.Number.Hex */ + /* Literal.Number.Integer */ + /* Literal.Number.Oct */ + /* Literal.String.Backtick */ + /* Literal.String.Char */ + /* Literal.String.Doc */ + /* Literal.String.Double */ + /* Literal.String.Escape */ + /* Literal.String.Heredoc */ + /* Literal.String.Interpol */ + /* Literal.String.Other */ + /* Literal.String.Regex */ + /* Literal.String.Single */ + /* Literal.String.Symbol */ + /* Name.Builtin.Pseudo */ + /* Name.Variable.Class */ + /* Name.Variable.Global */ + /* Name.Variable.Instance */ + /* Literal.Number.Integer.Long */ } + .highlight .c { + color: #999988; + font-style: italic; } + .highlight .err { + color: #a61717; + background-color: #e3d2d2; } + .highlight .k { + color: #000000; + font-weight: bold; } + .highlight .o { + color: #000000; + font-weight: bold; } + .highlight .cm { + color: #999988; + font-style: italic; } + .highlight .cp { + color: #999999; + font-weight: bold; } + .highlight .c1 { + color: #999988; + font-style: italic; } + .highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + .highlight .gd { + color: #000000; + background-color: #ffdddd; } + .highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + .highlight .ge { + color: #000000; + font-style: italic; } + .highlight .gr { + color: #aa0000; } + .highlight .gh { + color: #999999; } + .highlight .gi { + color: #000000; + background-color: #ddffdd; } + .highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + .highlight .go { + color: #888888; } + .highlight .gp { + color: #555555; } + .highlight .gs { + font-weight: bold; } + .highlight .gu { + color: #aaaaaa; } + .highlight .gt { + color: #aa0000; } + .highlight .kc { + color: #000000; + font-weight: bold; } + .highlight .kd { + color: #000000; + font-weight: bold; } + .highlight .kp { + color: #000000; + font-weight: bold; } + .highlight .kr { + color: #000000; + font-weight: bold; } + .highlight .kt { + color: #445588; } + .highlight .m { + color: #009999; } + .highlight .s { + color: #d14; } + .highlight .na { + color: #008080; } + .highlight .nb { + color: #0086B3; } + .highlight .nc { + color: #445588; + font-weight: bold; } + .highlight .no { + color: #008080; } + .highlight .ni { + color: #800080; } + .highlight .ne { + color: #990000; + font-weight: bold; } + .highlight .nf { + color: #990000; } + .highlight .nn { + color: #555555; } + .highlight .nt { + color: #000080; } + .highlight .nv { + color: #008080; } + .highlight .ow { + color: #000000; + font-weight: bold; } + .highlight .w { + color: #bbbbbb; } + .highlight .mf { + color: #009999; } + .highlight .mh { + color: #009999; } + .highlight .mi { + color: #009999; } + .highlight .mo { + color: #009999; } + .highlight .sb { + color: #d14; } + .highlight .sc { + color: #d14; } + .highlight .sd { + color: #d14; } + .highlight .s2 { + color: #d14; } + .highlight .se { + color: #d14; } + .highlight .sh { + color: #d14; } + .highlight .si { + color: #d14; } + .highlight .sx { + color: #d14; } + .highlight .sr { + color: #009926; } + .highlight .s1 { + color: #d14; } + .highlight .ss { + color: #990073; } + .highlight .bp { + color: #999999; } + .highlight .vc { + color: #008080; } + .highlight .vg { + color: #008080; } + .highlight .vi { + color: #008080; } + .highlight .il { + color: #009999; } diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/css/jazzy.css b/docs/docsets/Hero.docset/Contents/Resources/Documents/css/jazzy.css new file mode 100644 index 00000000..833be0d2 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/css/jazzy.css @@ -0,0 +1,378 @@ +*, *:before, *:after { + box-sizing: inherit; } + +body { + margin: 0; + background: #fff; + color: #333; + font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; + letter-spacing: .2px; + -webkit-font-smoothing: antialiased; + box-sizing: border-box; } + +h1 { + font-size: 2rem; + font-weight: 700; + margin: 1.275em 0 0.6em; } + +h2 { + font-size: 1.75rem; + font-weight: 700; + margin: 1.275em 0 0.3em; } + +h3 { + font-size: 1.5rem; + font-weight: 700; + margin: 1em 0 0.3em; } + +h4 { + font-size: 1.25rem; + font-weight: 700; + margin: 1.275em 0 0.85em; } + +h5 { + font-size: 1rem; + font-weight: 700; + margin: 1.275em 0 0.85em; } + +h6 { + font-size: 1rem; + font-weight: 700; + margin: 1.275em 0 0.85em; + color: #777; } + +p { + margin: 0 0 1em; } + +ul, ol { + padding: 0 0 0 2em; + margin: 0 0 0.85em; } + +blockquote { + margin: 0 0 0.85em; + padding: 0 15px; + color: #858585; + border-left: 4px solid #e5e5e5; } + +img { + max-width: 100%; } + +a { + color: #4183c4; + text-decoration: none; } + a:hover, a:focus { + outline: 0; + text-decoration: underline; } + a.discouraged { + text-decoration: line-through; } + a.discouraged:hover, a.discouraged:focus { + text-decoration: underline line-through; } + +table { + background: #fff; + width: 100%; + border-collapse: collapse; + border-spacing: 0; + overflow: auto; + margin: 0 0 0.85em; } + +tr:nth-child(2n) { + background-color: #fbfbfb; } + +th, td { + padding: 6px 13px; + border: 1px solid #ddd; } + +pre { + margin: 0 0 1.275em; + padding: .85em 1em; + overflow: auto; + background: #f7f7f7; + font-size: .85em; + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } + +code { + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } + +p > code, li > code { + background: #f7f7f7; + padding: .2em; } + p > code:before, p > code:after, li > code:before, li > code:after { + letter-spacing: -.2em; + content: "\00a0"; } + +pre code { + padding: 0; + white-space: pre; } + +.content-wrapper { + display: flex; + flex-direction: column; } + @media (min-width: 768px) { + .content-wrapper { + flex-direction: row; } } + +.header { + display: flex; + padding: 8px; + font-size: 0.875em; + background: #444; + color: #999; } + +.header-col { + margin: 0; + padding: 0 8px; } + +.header-col--primary { + flex: 1; } + +.header-link { + color: #fff; } + +.header-icon { + padding-right: 6px; + vertical-align: -4px; + height: 16px; } + +.breadcrumbs { + font-size: 0.875em; + padding: 8px 16px; + margin: 0; + background: #fbfbfb; + border-bottom: 1px solid #ddd; } + +.carat { + height: 10px; + margin: 0 5px; } + +.navigation { + order: 2; } + @media (min-width: 768px) { + .navigation { + order: 1; + width: 25%; + max-width: 300px; + padding-bottom: 64px; + overflow: hidden; + word-wrap: normal; + background: #fbfbfb; + border-right: 1px solid #ddd; } } + +.nav-groups { + list-style-type: none; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #ddd; + padding: 8px 0 8px 16px; } + +.nav-group-name-link { + color: #333; } + +.nav-group-tasks { + margin: 8px 0; + padding: 0 0 0 8px; } + +.nav-group-task { + font-size: 1em; + list-style-type: none; + white-space: nowrap; } + +.nav-group-task-link { + color: #808080; } + +.main-content { + order: 1; } + @media (min-width: 768px) { + .main-content { + order: 2; + flex: 1; + padding-bottom: 60px; } } + +.section { + padding: 0 32px; + border-bottom: 1px solid #ddd; } + +.section-content { + max-width: 834px; + margin: 0 auto; + padding: 16px 0; } + +.section-name { + color: #666; + display: block; } + +.declaration .highlight { + overflow-x: initial; + padding: 8px 0; + margin: 0; + background-color: transparent; + border: none; } + +.task-group-section { + border-top: 1px solid #ddd; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; } + +.item-container { + padding: 0; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; } + .item .token, .item .direct-link { + padding-left: 3px; + margin-left: 0px; + font-size: 1rem; } + .item .declaration-note { + font-size: .85em; + color: #808080; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #ddd; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + left: 21px; + top: 7px; + display: block; + position: absolute; + width: 12px; + height: 12px; + border-left: 1px solid #ddd; + border-top: 1px solid #ddd; + background: #fff; + transform: rotate(45deg); } + +.height-container { + display: none; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #fff; + border: 1px solid #ddd; + border-top-width: 0; + padding-top: 10px; + padding-bottom: 5px; + padding: 8px 16px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4183c4; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #ddd; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +.footer { + padding: 8px 16px; + background: #444; + color: #ddd; + font-size: 0.8em; } + .footer p { + margin: 8px 0; } + .footer a { + color: #fff; } + +html.dash .header, html.dash .breadcrumbs, html.dash .navigation { + display: none; } + +html.dash .height-container { + display: block; } + +form[role=search] input { + font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 24px; + padding: 0 10px; + margin: 0; + border: none; + border-radius: 1em; } + .loading form[role=search] input { + background: white url(../img/spinner.gif) center right 4px no-repeat; } + +form[role=search] .tt-menu { + margin: 0; + min-width: 300px; + background: #fbfbfb; + color: #333; + border: 1px solid #ddd; } + +form[role=search] .tt-highlight { + font-weight: bold; } + +form[role=search] .tt-suggestion { + font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 0 8px; } + form[role=search] .tt-suggestion span { + display: table-cell; + white-space: nowrap; } + form[role=search] .tt-suggestion .doc-parent-name { + width: 100%; + text-align: right; + font-weight: normal; + font-size: 0.9em; + padding-left: 16px; } + +form[role=search] .tt-suggestion:hover, +form[role=search] .tt-suggestion.tt-cursor { + cursor: pointer; + background-color: #4183c4; + color: #fff; } + +form[role=search] .tt-suggestion:hover .doc-parent-name, +form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { + color: #fff; } diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/img/carat.png b/docs/docsets/Hero.docset/Contents/Resources/Documents/img/carat.png new file mode 100755 index 00000000..29d2f7fd Binary files /dev/null and b/docs/docsets/Hero.docset/Contents/Resources/Documents/img/carat.png differ diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/img/dash.png b/docs/docsets/Hero.docset/Contents/Resources/Documents/img/dash.png new file mode 100755 index 00000000..6f694c7a Binary files /dev/null and b/docs/docsets/Hero.docset/Contents/Resources/Documents/img/dash.png differ diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/img/gh.png b/docs/docsets/Hero.docset/Contents/Resources/Documents/img/gh.png new file mode 100755 index 00000000..628da97c Binary files /dev/null and b/docs/docsets/Hero.docset/Contents/Resources/Documents/img/gh.png differ diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/img/spinner.gif b/docs/docsets/Hero.docset/Contents/Resources/Documents/img/spinner.gif new file mode 100644 index 00000000..e3038d0a Binary files /dev/null and b/docs/docsets/Hero.docset/Contents/Resources/Documents/img/spinner.gif differ diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/index.html b/docs/docsets/Hero.docset/Contents/Resources/Documents/index.html new file mode 100644 index 00000000..dfc1ce90 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/index.html @@ -0,0 +1,398 @@ + + + + Hero Reference + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+ +

+ +

Hero is a library for building iOS view controller transitions. It provides a declarative layer on top of the UIKit’s cumbersome transition APIs—making custom transitions an easy task for developers.

+ +

Carthage compatible +Version +License +Xcode 9.0+ +iOS 8.0+ +Swift 4.0+ +中文 README +Donate

+ +

       +

+ +

Hero is similar to Keynote’s Magic Move. It checks the heroID property on all source and destination views. Every matched view pair is then automatically transitioned from its old state to its new state.

+ +

Hero can also construct animations for unmatched views. It is easy to define these animations via the heroModifiers property. Hero will run these animations alongside the Magic Move animations. All of these animations can be interactively controlled by user gestures.

+ +

At view controller level, Hero provides several template transitions that you can set through heroModalAnimationType, heroNavigationAnimationType, and heroTabBarAnimationType. These can be used as the foundation of your custom transitions. Combine with heroID & heroModifiers to make your own unique transitions.

+ +

       +

+ +

By default, Hero provides dynamic duration based on the Material Design Motion Guide. Duration is automatically determined by changes to distance and size—saving you the hassle, while providing consistent and delightful animations.

+ +

Hero doesn’t make any assumptions about how the view is built or structured. It won’t modify any of your views’ states other than hiding them during the animation. This makes it work with Auto Layout, programmatic layout, UICollectionView (without modifying its layout object), UITableView, UINavigationController, UITabBarController, etc…

+ + +

Checkout the Example Gallery Blog Post for a general idea of what you can achieve with Hero

+

Usage Example 1

+ +

+
View Controller 1
+
redView.hero.id = "ironMan"
+blackView.hero.id = "batMan"
+
+
View Controller 2
+
self.hero.isEnabled = true
+redView.hero.id = "ironMan"
+blackView.hero.id = "batMan"
+whiteView.hero.modifiers = [.translate(y:100)]
+
+

Usage Example 2

+ +

+
View Controller 1
+
greyView.hero.id = "skyWalker"
+
+
View Controller 2
+
self.hero.isEnabled = true
+greyView.hero.id = "skyWalker"
+
+// collectionView is the parent view of all red cells
+collectionView.hero.modifiers = [.cascade]
+for cell in redCells {
+    cell.hero.modifiers = [.fade, .scale(0.5)]
+}
+
+ +

You can do these in the storyboard too!

+ +

+

+

Installation

+

CocoaPods

+ +

Add the following entry to your Podfile:

+
pod 'Hero'
+
+ +

Then run pod install.

+ +

Don’t forget to import Hero in every file you’d like to use Hero.

+

Carthage

+ +

Add the following entry to your Cartfile:

+
github "HeroTransitions/Hero"
+
+ +

Then run carthage update.

+ +

If this is your first time using Carthage in the project, you’ll need to go through some additional steps as explained over at Carthage.

+

Swift Package Manager

+ +

To integrate using Apple’s Swift package manager, add the following as a dependency to your Package.swift:

+
.package(url: "https://github.com/HeroTransitions/Hero.git", .upToNextMajor(from: "1.3.0"))
+
+ +

and then specify "Hero" as a dependency of the Target in which you wish to use Hero. +Here’s an example PackageDescription:

+
// swift-tools-version:4.0
+import PackageDescription
+
+let package = Package(
+    name: "MyPackage",
+    products: [
+        .library(
+            name: "MyPackage",
+            targets: ["MyPackage"]),
+    ],
+    dependencies: [
+        .package(url: "https://github.com/HeroTransitions/Hero.git", .upToNextMajor(from: "1.3.0"))
+    ],
+    targets: [
+        .target(
+            name: "MyPackage",
+            dependencies: ["Hero"])
+    ]
+)
+
+

Manually

+ +
    +
  • Drag the Sources folder anywhere in your project.
  • +
+

Documentations

+ +

Checkout the WIKI PAGES (Usage Guide) for documentations.

+ +

For more up-to-date ones, please see the header-doc. (use alt+click in Xcode) +

+

Interactive Transition Tutorials

+ +

Interactive transitions with Hero (Part 1)

+

FAQ

+

Not able to use Hero transition even when self.hero.isEnabled is set to true

+ +

Make sure that you have also enabled self.hero.isEnabled on the navigation controller if you are doing a push/pop inside the navigation controller.

+

Views being covered by another matched view during the transition

+ +

Matched views use global coordinate space while unmatched views use local coordinate space by default. Local coordinate spaced views might be covered by other global coordinate spaced views. To solve this, use the useGlobalCoordinateSpace modifier on the views being covered. Checkout Coordinate Space Wiki page for details.

+

Push animation is shown along side my custom animation

+ +

This is the default animation for navigation controller provided by Hero. To disable the push animation, set self.hero.navigationAnimationType to .fade or .none on the navigation controller.

+

How do I use a different default animation when dismissing

+ +

You can use the animation type .selectBy(presenting:dismissing) to specify a different default animation for dismiss.

+ +

For example:

+
    self.hero.modalAnimationType = .selectBy(presenting:.zoom, dismissing:.zoomOut)
+
+

Contribute

+ +

We welcome any contributions. Please read the Contribution Guide.

+ +
+
+ + +
+
+ + + + diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/js/jazzy.js b/docs/docsets/Hero.docset/Contents/Resources/Documents/js/jazzy.js new file mode 100755 index 00000000..c31dc05e --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/js/jazzy.js @@ -0,0 +1,59 @@ +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`.token[href="${location.hash}"]`); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/js/jazzy.search.js b/docs/docsets/Hero.docset/Contents/Resources/Documents/js/jazzy.search.js new file mode 100644 index 00000000..e3d1ab90 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/js/jazzy.search.js @@ -0,0 +1,70 @@ +$(function(){ + var $typeahead = $('[data-typeahead]'); + var $form = $typeahead.parents('form'); + var searchURL = $form.attr('action'); + + function displayTemplate(result) { + return result.name; + } + + function suggestionTemplate(result) { + var t = '
'; + t += '' + result.name + ''; + if (result.parent_name) { + t += '' + result.parent_name + ''; + } + t += '
'; + return t; + } + + $typeahead.one('focus', function() { + $form.addClass('loading'); + + $.getJSON(searchURL).then(function(searchData) { + const searchIndex = lunr(function() { + this.ref('url'); + this.field('name'); + this.field('abstract'); + for (const [url, doc] of Object.entries(searchData)) { + this.add({url: url, name: doc.name, abstract: doc.abstract}); + } + }); + + $typeahead.typeahead( + { + highlight: true, + minLength: 3, + autoselect: true + }, + { + limit: 10, + display: displayTemplate, + templates: { suggestion: suggestionTemplate }, + source: function(query, sync) { + const lcSearch = query.toLowerCase(); + const results = searchIndex.query(function(q) { + q.term(lcSearch, { boost: 100 }); + q.term(lcSearch, { + boost: 10, + wildcard: lunr.Query.wildcard.TRAILING + }); + }).map(function(result) { + var doc = searchData[result.ref]; + doc.url = result.ref; + return doc; + }); + sync(results); + } + } + ); + $form.removeClass('loading'); + $typeahead.trigger('focus'); + }); + }); + + var baseURL = searchURL.slice(0, -"search.json".length); + + $typeahead.on('typeahead:select', function(e, result) { + window.location = baseURL + result.url; + }); +}); diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/js/jquery.min.js b/docs/docsets/Hero.docset/Contents/Resources/Documents/js/jquery.min.js new file mode 100644 index 00000000..a1c07fd8 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0=this.length)return z.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},z.QueryLexer.prototype.width=function(){return this.pos-this.start},z.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},z.QueryLexer.prototype.backup=function(){this.pos-=1},z.QueryLexer.prototype.acceptDigitRun=function(){for(var e,t;47<(t=(e=this.next()).charCodeAt(0))&&t<58;);e!=z.QueryLexer.EOS&&this.backup()},z.QueryLexer.prototype.more=function(){return this.pos', + menu: '
' + }; + } + function buildSelectors(classes) { + var selectors = {}; + _.each(classes, function(v, k) { + selectors[k] = "." + v; + }); + return selectors; + } + function buildCss() { + var css = { + wrapper: { + position: "relative", + display: "inline-block" + }, + hint: { + position: "absolute", + top: "0", + left: "0", + borderColor: "transparent", + boxShadow: "none", + opacity: "1" + }, + input: { + position: "relative", + verticalAlign: "top", + backgroundColor: "transparent" + }, + inputWithNoHint: { + position: "relative", + verticalAlign: "top" + }, + menu: { + position: "absolute", + top: "100%", + left: "0", + zIndex: "100", + display: "none" + }, + ltr: { + left: "0", + right: "auto" + }, + rtl: { + left: "auto", + right: " 0" + } + }; + if (_.isMsie()) { + _.mixin(css.input, { + backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" + }); + } + return css; + } + }(); + var EventBus = function() { + "use strict"; + var namespace, deprecationMap; + namespace = "typeahead:"; + deprecationMap = { + render: "rendered", + cursorchange: "cursorchanged", + select: "selected", + autocomplete: "autocompleted" + }; + function EventBus(o) { + if (!o || !o.el) { + $.error("EventBus initialized without el"); + } + this.$el = $(o.el); + } + _.mixin(EventBus.prototype, { + _trigger: function(type, args) { + var $e = $.Event(namespace + type); + this.$el.trigger.call(this.$el, $e, args || []); + return $e; + }, + before: function(type) { + var args, $e; + args = [].slice.call(arguments, 1); + $e = this._trigger("before" + type, args); + return $e.isDefaultPrevented(); + }, + trigger: function(type) { + var deprecatedType; + this._trigger(type, [].slice.call(arguments, 1)); + if (deprecatedType = deprecationMap[type]) { + this._trigger(deprecatedType, [].slice.call(arguments, 1)); + } + } + }); + return EventBus; + }(); + var EventEmitter = function() { + "use strict"; + var splitter = /\s+/, nextTick = getNextTick(); + return { + onSync: onSync, + onAsync: onAsync, + off: off, + trigger: trigger + }; + function on(method, types, cb, context) { + var type; + if (!cb) { + return this; + } + types = types.split(splitter); + cb = context ? bindContext(cb, context) : cb; + this._callbacks = this._callbacks || {}; + while (type = types.shift()) { + this._callbacks[type] = this._callbacks[type] || { + sync: [], + async: [] + }; + this._callbacks[type][method].push(cb); + } + return this; + } + function onAsync(types, cb, context) { + return on.call(this, "async", types, cb, context); + } + function onSync(types, cb, context) { + return on.call(this, "sync", types, cb, context); + } + function off(types) { + var type; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + while (type = types.shift()) { + delete this._callbacks[type]; + } + return this; + } + function trigger(types) { + var type, callbacks, args, syncFlush, asyncFlush; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + args = [].slice.call(arguments, 1); + while ((type = types.shift()) && (callbacks = this._callbacks[type])) { + syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); + asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); + syncFlush() && nextTick(asyncFlush); + } + return this; + } + function getFlush(callbacks, context, args) { + return flush; + function flush() { + var cancelled; + for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { + cancelled = callbacks[i].apply(context, args) === false; + } + return !cancelled; + } + } + function getNextTick() { + var nextTickFn; + if (window.setImmediate) { + nextTickFn = function nextTickSetImmediate(fn) { + setImmediate(function() { + fn(); + }); + }; + } else { + nextTickFn = function nextTickSetTimeout(fn) { + setTimeout(function() { + fn(); + }, 0); + }; + } + return nextTickFn; + } + function bindContext(fn, context) { + return fn.bind ? fn.bind(context) : function() { + fn.apply(context, [].slice.call(arguments, 0)); + }; + } + }(); + var highlight = function(doc) { + "use strict"; + var defaults = { + node: null, + pattern: null, + tagName: "strong", + className: null, + wordsOnly: false, + caseSensitive: false, + diacriticInsensitive: false + }; + var accented = { + A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", + B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", + C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", + D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", + E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", + F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", + G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", + H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", + I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", + J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", + K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", + L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", + M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", + N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", + O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", + P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", + Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", + R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", + S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", + T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", + U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", + V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", + W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", + X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", + Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", + Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" + }; + return function hightlight(o) { + var regex; + o = _.mixin({}, defaults, o); + if (!o.node || !o.pattern) { + return; + } + o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; + regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); + traverse(o.node, hightlightTextNode); + function hightlightTextNode(textNode) { + var match, patternNode, wrapperNode; + if (match = regex.exec(textNode.data)) { + wrapperNode = doc.createElement(o.tagName); + o.className && (wrapperNode.className = o.className); + patternNode = textNode.splitText(match.index); + patternNode.splitText(match[0].length); + wrapperNode.appendChild(patternNode.cloneNode(true)); + textNode.parentNode.replaceChild(wrapperNode, patternNode); + } + return !!match; + } + function traverse(el, hightlightTextNode) { + var childNode, TEXT_NODE_TYPE = 3; + for (var i = 0; i < el.childNodes.length; i++) { + childNode = el.childNodes[i]; + if (childNode.nodeType === TEXT_NODE_TYPE) { + i += hightlightTextNode(childNode) ? 1 : 0; + } else { + traverse(childNode, hightlightTextNode); + } + } + } + }; + function accent_replacer(chr) { + return accented[chr.toUpperCase()] || chr; + } + function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { + var escapedPatterns = [], regexStr; + for (var i = 0, len = patterns.length; i < len; i++) { + var escapedWord = _.escapeRegExChars(patterns[i]); + if (diacriticInsensitive) { + escapedWord = escapedWord.replace(/\S/g, accent_replacer); + } + escapedPatterns.push(escapedWord); + } + regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; + return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); + } + }(window.document); + var Input = function() { + "use strict"; + var specialKeyCodeMap; + specialKeyCodeMap = { + 9: "tab", + 27: "esc", + 37: "left", + 39: "right", + 13: "enter", + 38: "up", + 40: "down" + }; + function Input(o, www) { + o = o || {}; + if (!o.input) { + $.error("input is missing"); + } + www.mixin(this); + this.$hint = $(o.hint); + this.$input = $(o.input); + this.$input.attr({ + "aria-activedescendant": "", + "aria-owns": this.$input.attr("id") + "_listbox", + role: "combobox", + "aria-readonly": "true", + "aria-autocomplete": "list" + }); + $(www.menu).attr("id", this.$input.attr("id") + "_listbox"); + this.query = this.$input.val(); + this.queryWhenFocused = this.hasFocus() ? this.query : null; + this.$overflowHelper = buildOverflowHelper(this.$input); + this._checkLanguageDirection(); + if (this.$hint.length === 0) { + this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; + } + this.onSync("cursorchange", this._updateDescendent); + } + Input.normalizeQuery = function(str) { + return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); + }; + _.mixin(Input.prototype, EventEmitter, { + _onBlur: function onBlur() { + this.resetInputValue(); + this.trigger("blurred"); + }, + _onFocus: function onFocus() { + this.queryWhenFocused = this.query; + this.trigger("focused"); + }, + _onKeydown: function onKeydown($e) { + var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; + this._managePreventDefault(keyName, $e); + if (keyName && this._shouldTrigger(keyName, $e)) { + this.trigger(keyName + "Keyed", $e); + } + }, + _onInput: function onInput() { + this._setQuery(this.getInputValue()); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + _managePreventDefault: function managePreventDefault(keyName, $e) { + var preventDefault; + switch (keyName) { + case "up": + case "down": + preventDefault = !withModifier($e); + break; + + default: + preventDefault = false; + } + preventDefault && $e.preventDefault(); + }, + _shouldTrigger: function shouldTrigger(keyName, $e) { + var trigger; + switch (keyName) { + case "tab": + trigger = !withModifier($e); + break; + + default: + trigger = true; + } + return trigger; + }, + _checkLanguageDirection: function checkLanguageDirection() { + var dir = (this.$input.css("direction") || "ltr").toLowerCase(); + if (this.dir !== dir) { + this.dir = dir; + this.$hint.attr("dir", dir); + this.trigger("langDirChanged", dir); + } + }, + _setQuery: function setQuery(val, silent) { + var areEquivalent, hasDifferentWhitespace; + areEquivalent = areQueriesEquivalent(val, this.query); + hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; + this.query = val; + if (!silent && !areEquivalent) { + this.trigger("queryChanged", this.query); + } else if (!silent && hasDifferentWhitespace) { + this.trigger("whitespaceChanged", this.query); + } + }, + _updateDescendent: function updateDescendent(event, id) { + this.$input.attr("aria-activedescendant", id); + }, + bind: function() { + var that = this, onBlur, onFocus, onKeydown, onInput; + onBlur = _.bind(this._onBlur, this); + onFocus = _.bind(this._onFocus, this); + onKeydown = _.bind(this._onKeydown, this); + onInput = _.bind(this._onInput, this); + this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); + if (!_.isMsie() || _.isMsie() > 9) { + this.$input.on("input.tt", onInput); + } else { + this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { + if (specialKeyCodeMap[$e.which || $e.keyCode]) { + return; + } + _.defer(_.bind(that._onInput, that, $e)); + }); + } + return this; + }, + focus: function focus() { + this.$input.focus(); + }, + blur: function blur() { + this.$input.blur(); + }, + getLangDir: function getLangDir() { + return this.dir; + }, + getQuery: function getQuery() { + return this.query || ""; + }, + setQuery: function setQuery(val, silent) { + this.setInputValue(val); + this._setQuery(val, silent); + }, + hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { + return this.query !== this.queryWhenFocused; + }, + getInputValue: function getInputValue() { + return this.$input.val(); + }, + setInputValue: function setInputValue(value) { + this.$input.val(value); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + resetInputValue: function resetInputValue() { + this.setInputValue(this.query); + }, + getHint: function getHint() { + return this.$hint.val(); + }, + setHint: function setHint(value) { + this.$hint.val(value); + }, + clearHint: function clearHint() { + this.setHint(""); + }, + clearHintIfInvalid: function clearHintIfInvalid() { + var val, hint, valIsPrefixOfHint, isValid; + val = this.getInputValue(); + hint = this.getHint(); + valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; + isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); + !isValid && this.clearHint(); + }, + hasFocus: function hasFocus() { + return this.$input.is(":focus"); + }, + hasOverflow: function hasOverflow() { + var constraint = this.$input.width() - 2; + this.$overflowHelper.text(this.getInputValue()); + return this.$overflowHelper.width() >= constraint; + }, + isCursorAtEnd: function() { + var valueLength, selectionStart, range; + valueLength = this.$input.val().length; + selectionStart = this.$input[0].selectionStart; + if (_.isNumber(selectionStart)) { + return selectionStart === valueLength; + } else if (document.selection) { + range = document.selection.createRange(); + range.moveStart("character", -valueLength); + return valueLength === range.text.length; + } + return true; + }, + destroy: function destroy() { + this.$hint.off(".tt"); + this.$input.off(".tt"); + this.$overflowHelper.remove(); + this.$hint = this.$input = this.$overflowHelper = $("
"); + } + }); + return Input; + function buildOverflowHelper($input) { + return $('').css({ + position: "absolute", + visibility: "hidden", + whiteSpace: "pre", + fontFamily: $input.css("font-family"), + fontSize: $input.css("font-size"), + fontStyle: $input.css("font-style"), + fontVariant: $input.css("font-variant"), + fontWeight: $input.css("font-weight"), + wordSpacing: $input.css("word-spacing"), + letterSpacing: $input.css("letter-spacing"), + textIndent: $input.css("text-indent"), + textRendering: $input.css("text-rendering"), + textTransform: $input.css("text-transform") + }).insertAfter($input); + } + function areQueriesEquivalent(a, b) { + return Input.normalizeQuery(a) === Input.normalizeQuery(b); + } + function withModifier($e) { + return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; + } + }(); + var Dataset = function() { + "use strict"; + var keys, nameGenerator; + keys = { + dataset: "tt-selectable-dataset", + val: "tt-selectable-display", + obj: "tt-selectable-object" + }; + nameGenerator = _.getIdGenerator(); + function Dataset(o, www) { + o = o || {}; + o.templates = o.templates || {}; + o.templates.notFound = o.templates.notFound || o.templates.empty; + if (!o.source) { + $.error("missing source"); + } + if (!o.node) { + $.error("missing node"); + } + if (o.name && !isValidName(o.name)) { + $.error("invalid dataset name: " + o.name); + } + www.mixin(this); + this.highlight = !!o.highlight; + this.name = _.toStr(o.name || nameGenerator()); + this.limit = o.limit || 5; + this.displayFn = getDisplayFn(o.display || o.displayKey); + this.templates = getTemplates(o.templates, this.displayFn); + this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; + this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; + this._resetLastSuggestion(); + this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); + } + Dataset.extractData = function extractData(el) { + var $el = $(el); + if ($el.data(keys.obj)) { + return { + dataset: $el.data(keys.dataset) || "", + val: $el.data(keys.val) || "", + obj: $el.data(keys.obj) || null + }; + } + return null; + }; + _.mixin(Dataset.prototype, EventEmitter, { + _overwrite: function overwrite(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (this.async && this.templates.pending) { + this._renderPending(query); + } else if (!this.async && this.templates.notFound) { + this._renderNotFound(query); + } else { + this._empty(); + } + this.trigger("rendered", suggestions, false, this.name); + }, + _append: function append(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length && this.$lastSuggestion.length) { + this._appendSuggestions(query, suggestions); + } else if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (!this.$lastSuggestion.length && this.templates.notFound) { + this._renderNotFound(query); + } + this.trigger("rendered", suggestions, true, this.name); + }, + _renderSuggestions: function renderSuggestions(query, suggestions) { + var $fragment; + $fragment = this._getSuggestionsFragment(query, suggestions); + this.$lastSuggestion = $fragment.children().last(); + this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); + }, + _appendSuggestions: function appendSuggestions(query, suggestions) { + var $fragment, $lastSuggestion; + $fragment = this._getSuggestionsFragment(query, suggestions); + $lastSuggestion = $fragment.children().last(); + this.$lastSuggestion.after($fragment); + this.$lastSuggestion = $lastSuggestion; + }, + _renderPending: function renderPending(query) { + var template = this.templates.pending; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _renderNotFound: function renderNotFound(query) { + var template = this.templates.notFound; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _empty: function empty() { + this.$el.empty(); + this._resetLastSuggestion(); + }, + _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { + var that = this, fragment; + fragment = document.createDocumentFragment(); + _.each(suggestions, function getSuggestionNode(suggestion) { + var $el, context; + context = that._injectQuery(query, suggestion); + $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); + fragment.appendChild($el[0]); + }); + this.highlight && highlight({ + className: this.classes.highlight, + node: fragment, + pattern: query + }); + return $(fragment); + }, + _getFooter: function getFooter(query, suggestions) { + return this.templates.footer ? this.templates.footer({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _getHeader: function getHeader(query, suggestions) { + return this.templates.header ? this.templates.header({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _resetLastSuggestion: function resetLastSuggestion() { + this.$lastSuggestion = $(); + }, + _injectQuery: function injectQuery(query, obj) { + return _.isObject(obj) ? _.mixin({ + _query: query + }, obj) : obj; + }, + update: function update(query) { + var that = this, canceled = false, syncCalled = false, rendered = 0; + this.cancel(); + this.cancel = function cancel() { + canceled = true; + that.cancel = $.noop; + that.async && that.trigger("asyncCanceled", query, that.name); + }; + this.source(query, sync, async); + !syncCalled && sync([]); + function sync(suggestions) { + if (syncCalled) { + return; + } + syncCalled = true; + suggestions = (suggestions || []).slice(0, that.limit); + rendered = suggestions.length; + that._overwrite(query, suggestions); + if (rendered < that.limit && that.async) { + that.trigger("asyncRequested", query, that.name); + } + } + function async(suggestions) { + suggestions = suggestions || []; + if (!canceled && rendered < that.limit) { + that.cancel = $.noop; + var idx = Math.abs(rendered - that.limit); + rendered += idx; + that._append(query, suggestions.slice(0, idx)); + that.async && that.trigger("asyncReceived", query, that.name); + } + } + }, + cancel: $.noop, + clear: function clear() { + this._empty(); + this.cancel(); + this.trigger("cleared"); + }, + isEmpty: function isEmpty() { + return this.$el.is(":empty"); + }, + destroy: function destroy() { + this.$el = $("
"); + } + }); + return Dataset; + function getDisplayFn(display) { + display = display || _.stringify; + return _.isFunction(display) ? display : displayFn; + function displayFn(obj) { + return obj[display]; + } + } + function getTemplates(templates, displayFn) { + return { + notFound: templates.notFound && _.templatify(templates.notFound), + pending: templates.pending && _.templatify(templates.pending), + header: templates.header && _.templatify(templates.header), + footer: templates.footer && _.templatify(templates.footer), + suggestion: templates.suggestion || suggestionTemplate + }; + function suggestionTemplate(context) { + return $('
').attr("id", _.guid()).text(displayFn(context)); + } + } + function isValidName(str) { + return /^[_a-zA-Z0-9-]+$/.test(str); + } + }(); + var Menu = function() { + "use strict"; + function Menu(o, www) { + var that = this; + o = o || {}; + if (!o.node) { + $.error("node is required"); + } + www.mixin(this); + this.$node = $(o.node); + this.query = null; + this.datasets = _.map(o.datasets, initializeDataset); + function initializeDataset(oDataset) { + var node = that.$node.find(oDataset.node).first(); + oDataset.node = node.length ? node : $("
").appendTo(that.$node); + return new Dataset(oDataset, www); + } + } + _.mixin(Menu.prototype, EventEmitter, { + _onSelectableClick: function onSelectableClick($e) { + this.trigger("selectableClicked", $($e.currentTarget)); + }, + _onRendered: function onRendered(type, dataset, suggestions, async) { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetRendered", dataset, suggestions, async); + }, + _onCleared: function onCleared() { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetCleared"); + }, + _propagate: function propagate() { + this.trigger.apply(this, arguments); + }, + _allDatasetsEmpty: function allDatasetsEmpty() { + return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { + var isEmpty = dataset.isEmpty(); + this.$node.attr("aria-expanded", !isEmpty); + return isEmpty; + }, this)); + }, + _getSelectables: function getSelectables() { + return this.$node.find(this.selectors.selectable); + }, + _removeCursor: function _removeCursor() { + var $selectable = this.getActiveSelectable(); + $selectable && $selectable.removeClass(this.classes.cursor); + }, + _ensureVisible: function ensureVisible($el) { + var elTop, elBottom, nodeScrollTop, nodeHeight; + elTop = $el.position().top; + elBottom = elTop + $el.outerHeight(true); + nodeScrollTop = this.$node.scrollTop(); + nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); + if (elTop < 0) { + this.$node.scrollTop(nodeScrollTop + elTop); + } else if (nodeHeight < elBottom) { + this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); + } + }, + bind: function() { + var that = this, onSelectableClick; + onSelectableClick = _.bind(this._onSelectableClick, this); + this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); + this.$node.on("mouseover", this.selectors.selectable, function() { + that.setCursor($(this)); + }); + this.$node.on("mouseleave", function() { + that._removeCursor(); + }); + _.each(this.datasets, function(dataset) { + dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); + }); + return this; + }, + isOpen: function isOpen() { + return this.$node.hasClass(this.classes.open); + }, + open: function open() { + this.$node.scrollTop(0); + this.$node.addClass(this.classes.open); + }, + close: function close() { + this.$node.attr("aria-expanded", false); + this.$node.removeClass(this.classes.open); + this._removeCursor(); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.attr("dir", dir); + }, + selectableRelativeToCursor: function selectableRelativeToCursor(delta) { + var $selectables, $oldCursor, oldIndex, newIndex; + $oldCursor = this.getActiveSelectable(); + $selectables = this._getSelectables(); + oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; + newIndex = oldIndex + delta; + newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; + newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; + return newIndex === -1 ? null : $selectables.eq(newIndex); + }, + setCursor: function setCursor($selectable) { + this._removeCursor(); + if ($selectable = $selectable && $selectable.first()) { + $selectable.addClass(this.classes.cursor); + this._ensureVisible($selectable); + } + }, + getSelectableData: function getSelectableData($el) { + return $el && $el.length ? Dataset.extractData($el) : null; + }, + getActiveSelectable: function getActiveSelectable() { + var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); + return $selectable.length ? $selectable : null; + }, + getTopSelectable: function getTopSelectable() { + var $selectable = this._getSelectables().first(); + return $selectable.length ? $selectable : null; + }, + update: function update(query) { + var isValidUpdate = query !== this.query; + if (isValidUpdate) { + this.query = query; + _.each(this.datasets, updateDataset); + } + return isValidUpdate; + function updateDataset(dataset) { + dataset.update(query); + } + }, + empty: function empty() { + _.each(this.datasets, clearDataset); + this.query = null; + this.$node.addClass(this.classes.empty); + function clearDataset(dataset) { + dataset.clear(); + } + }, + destroy: function destroy() { + this.$node.off(".tt"); + this.$node = $("
"); + _.each(this.datasets, destroyDataset); + function destroyDataset(dataset) { + dataset.destroy(); + } + } + }); + return Menu; + }(); + var Status = function() { + "use strict"; + function Status(options) { + this.$el = $("", { + role: "status", + "aria-live": "polite" + }).css({ + position: "absolute", + padding: "0", + border: "0", + height: "1px", + width: "1px", + "margin-bottom": "-1px", + "margin-right": "-1px", + overflow: "hidden", + clip: "rect(0 0 0 0)", + "white-space": "nowrap" + }); + options.$input.after(this.$el); + _.each(options.menu.datasets, _.bind(function(dataset) { + if (dataset.onSync) { + dataset.onSync("rendered", _.bind(this.update, this)); + dataset.onSync("cleared", _.bind(this.cleared, this)); + } + }, this)); + } + _.mixin(Status.prototype, { + update: function update(event, suggestions) { + var length = suggestions.length; + var words; + if (length === 1) { + words = { + result: "result", + is: "is" + }; + } else { + words = { + result: "results", + is: "are" + }; + } + this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); + }, + cleared: function() { + this.$el.text(""); + } + }); + return Status; + }(); + var DefaultMenu = function() { + "use strict"; + var s = Menu.prototype; + function DefaultMenu() { + Menu.apply(this, [].slice.call(arguments, 0)); + } + _.mixin(DefaultMenu.prototype, Menu.prototype, { + open: function open() { + !this._allDatasetsEmpty() && this._show(); + return s.open.apply(this, [].slice.call(arguments, 0)); + }, + close: function close() { + this._hide(); + return s.close.apply(this, [].slice.call(arguments, 0)); + }, + _onRendered: function onRendered() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onRendered.apply(this, [].slice.call(arguments, 0)); + }, + _onCleared: function onCleared() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onCleared.apply(this, [].slice.call(arguments, 0)); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); + return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); + }, + _hide: function hide() { + this.$node.hide(); + }, + _show: function show() { + this.$node.css("display", "block"); + } + }); + return DefaultMenu; + }(); + var Typeahead = function() { + "use strict"; + function Typeahead(o, www) { + var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; + o = o || {}; + if (!o.input) { + $.error("missing input"); + } + if (!o.menu) { + $.error("missing menu"); + } + if (!o.eventBus) { + $.error("missing event bus"); + } + www.mixin(this); + this.eventBus = o.eventBus; + this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; + this.input = o.input; + this.menu = o.menu; + this.enabled = true; + this.autoselect = !!o.autoselect; + this.active = false; + this.input.hasFocus() && this.activate(); + this.dir = this.input.getLangDir(); + this._hacks(); + this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); + onFocused = c(this, "activate", "open", "_onFocused"); + onBlurred = c(this, "deactivate", "_onBlurred"); + onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); + onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); + onEscKeyed = c(this, "isActive", "_onEscKeyed"); + onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); + onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); + onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); + onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); + onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); + onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); + this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); + } + _.mixin(Typeahead.prototype, { + _hacks: function hacks() { + var $input, $menu; + $input = this.input.$input || $("
"); + $menu = this.menu.$node || $("
"); + $input.on("blur.tt", function($e) { + var active, isActive, hasActive; + active = document.activeElement; + isActive = $menu.is(active); + hasActive = $menu.has(active).length > 0; + if (_.isMsie() && (isActive || hasActive)) { + $e.preventDefault(); + $e.stopImmediatePropagation(); + _.defer(function() { + $input.focus(); + }); + } + }); + $menu.on("mousedown.tt", function($e) { + $e.preventDefault(); + }); + }, + _onSelectableClicked: function onSelectableClicked(type, $el) { + this.select($el); + }, + _onDatasetCleared: function onDatasetCleared() { + this._updateHint(); + }, + _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { + this._updateHint(); + if (this.autoselect) { + var cursorClass = this.selectors.cursor.substr(1); + this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); + } + this.eventBus.trigger("render", suggestions, async, dataset); + }, + _onAsyncRequested: function onAsyncRequested(type, dataset, query) { + this.eventBus.trigger("asyncrequest", query, dataset); + }, + _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { + this.eventBus.trigger("asynccancel", query, dataset); + }, + _onAsyncReceived: function onAsyncReceived(type, dataset, query) { + this.eventBus.trigger("asyncreceive", query, dataset); + }, + _onFocused: function onFocused() { + this._minLengthMet() && this.menu.update(this.input.getQuery()); + }, + _onBlurred: function onBlurred() { + if (this.input.hasQueryChangedSinceLastFocus()) { + this.eventBus.trigger("change", this.input.getQuery()); + } + }, + _onEnterKeyed: function onEnterKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + if (this.select($selectable)) { + $e.preventDefault(); + $e.stopPropagation(); + } + } else if (this.autoselect) { + if (this.select(this.menu.getTopSelectable())) { + $e.preventDefault(); + $e.stopPropagation(); + } + } + }, + _onTabKeyed: function onTabKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + this.select($selectable) && $e.preventDefault(); + } else if ($selectable = this.menu.getTopSelectable()) { + this.autocomplete($selectable) && $e.preventDefault(); + } + }, + _onEscKeyed: function onEscKeyed() { + this.close(); + }, + _onUpKeyed: function onUpKeyed() { + this.moveCursor(-1); + }, + _onDownKeyed: function onDownKeyed() { + this.moveCursor(+1); + }, + _onLeftKeyed: function onLeftKeyed() { + if (this.dir === "rtl" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onRightKeyed: function onRightKeyed() { + if (this.dir === "ltr" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onQueryChanged: function onQueryChanged(e, query) { + this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); + }, + _onWhitespaceChanged: function onWhitespaceChanged() { + this._updateHint(); + }, + _onLangDirChanged: function onLangDirChanged(e, dir) { + if (this.dir !== dir) { + this.dir = dir; + this.menu.setLanguageDirection(dir); + } + }, + _openIfActive: function openIfActive() { + this.isActive() && this.open(); + }, + _minLengthMet: function minLengthMet(query) { + query = _.isString(query) ? query : this.input.getQuery() || ""; + return query.length >= this.minLength; + }, + _updateHint: function updateHint() { + var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; + $selectable = this.menu.getTopSelectable(); + data = this.menu.getSelectableData($selectable); + val = this.input.getInputValue(); + if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { + query = Input.normalizeQuery(val); + escapedQuery = _.escapeRegExChars(query); + frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); + match = frontMatchRegEx.exec(data.val); + match && this.input.setHint(val + match[1]); + } else { + this.input.clearHint(); + } + }, + isEnabled: function isEnabled() { + return this.enabled; + }, + enable: function enable() { + this.enabled = true; + }, + disable: function disable() { + this.enabled = false; + }, + isActive: function isActive() { + return this.active; + }, + activate: function activate() { + if (this.isActive()) { + return true; + } else if (!this.isEnabled() || this.eventBus.before("active")) { + return false; + } else { + this.active = true; + this.eventBus.trigger("active"); + return true; + } + }, + deactivate: function deactivate() { + if (!this.isActive()) { + return true; + } else if (this.eventBus.before("idle")) { + return false; + } else { + this.active = false; + this.close(); + this.eventBus.trigger("idle"); + return true; + } + }, + isOpen: function isOpen() { + return this.menu.isOpen(); + }, + open: function open() { + if (!this.isOpen() && !this.eventBus.before("open")) { + this.menu.open(); + this._updateHint(); + this.eventBus.trigger("open"); + } + return this.isOpen(); + }, + close: function close() { + if (this.isOpen() && !this.eventBus.before("close")) { + this.menu.close(); + this.input.clearHint(); + this.input.resetInputValue(); + this.eventBus.trigger("close"); + } + return !this.isOpen(); + }, + setVal: function setVal(val) { + this.input.setQuery(_.toStr(val)); + }, + getVal: function getVal() { + return this.input.getQuery(); + }, + select: function select($selectable) { + var data = this.menu.getSelectableData($selectable); + if (data && !this.eventBus.before("select", data.obj, data.dataset)) { + this.input.setQuery(data.val, true); + this.eventBus.trigger("select", data.obj, data.dataset); + this.close(); + return true; + } + return false; + }, + autocomplete: function autocomplete($selectable) { + var query, data, isValid; + query = this.input.getQuery(); + data = this.menu.getSelectableData($selectable); + isValid = data && query !== data.val; + if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { + this.input.setQuery(data.val); + this.eventBus.trigger("autocomplete", data.obj, data.dataset); + return true; + } + return false; + }, + moveCursor: function moveCursor(delta) { + var query, $candidate, data, suggestion, datasetName, cancelMove, id; + query = this.input.getQuery(); + $candidate = this.menu.selectableRelativeToCursor(delta); + data = this.menu.getSelectableData($candidate); + suggestion = data ? data.obj : null; + datasetName = data ? data.dataset : null; + id = $candidate ? $candidate.attr("id") : null; + this.input.trigger("cursorchange", id); + cancelMove = this._minLengthMet() && this.menu.update(query); + if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { + this.menu.setCursor($candidate); + if (data) { + this.input.setInputValue(data.val); + } else { + this.input.resetInputValue(); + this._updateHint(); + } + this.eventBus.trigger("cursorchange", suggestion, datasetName); + return true; + } + return false; + }, + destroy: function destroy() { + this.input.destroy(); + this.menu.destroy(); + } + }); + return Typeahead; + function c(ctx) { + var methods = [].slice.call(arguments, 1); + return function() { + var args = [].slice.call(arguments); + _.each(methods, function(method) { + return ctx[method].apply(ctx, args); + }); + }; + } + }(); + (function() { + "use strict"; + var old, keys, methods; + old = $.fn.typeahead; + keys = { + www: "tt-www", + attrs: "tt-attrs", + typeahead: "tt-typeahead" + }; + methods = { + initialize: function initialize(o, datasets) { + var www; + datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); + o = o || {}; + www = WWW(o.classNames); + return this.each(attach); + function attach() { + var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; + _.each(datasets, function(d) { + d.highlight = !!o.highlight; + }); + $input = $(this); + $wrapper = $(www.html.wrapper); + $hint = $elOrNull(o.hint); + $menu = $elOrNull(o.menu); + defaultHint = o.hint !== false && !$hint; + defaultMenu = o.menu !== false && !$menu; + defaultHint && ($hint = buildHintFromInput($input, www)); + defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); + $hint && $hint.val(""); + $input = prepInput($input, www); + if (defaultHint || defaultMenu) { + $wrapper.css(www.css.wrapper); + $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); + $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); + } + MenuConstructor = defaultMenu ? DefaultMenu : Menu; + eventBus = new EventBus({ + el: $input + }); + input = new Input({ + hint: $hint, + input: $input + }, www); + menu = new MenuConstructor({ + node: $menu, + datasets: datasets + }, www); + status = new Status({ + $input: $input, + menu: menu + }); + typeahead = new Typeahead({ + input: input, + menu: menu, + eventBus: eventBus, + minLength: o.minLength, + autoselect: o.autoselect + }, www); + $input.data(keys.www, www); + $input.data(keys.typeahead, typeahead); + } + }, + isEnabled: function isEnabled() { + var enabled; + ttEach(this.first(), function(t) { + enabled = t.isEnabled(); + }); + return enabled; + }, + enable: function enable() { + ttEach(this, function(t) { + t.enable(); + }); + return this; + }, + disable: function disable() { + ttEach(this, function(t) { + t.disable(); + }); + return this; + }, + isActive: function isActive() { + var active; + ttEach(this.first(), function(t) { + active = t.isActive(); + }); + return active; + }, + activate: function activate() { + ttEach(this, function(t) { + t.activate(); + }); + return this; + }, + deactivate: function deactivate() { + ttEach(this, function(t) { + t.deactivate(); + }); + return this; + }, + isOpen: function isOpen() { + var open; + ttEach(this.first(), function(t) { + open = t.isOpen(); + }); + return open; + }, + open: function open() { + ttEach(this, function(t) { + t.open(); + }); + return this; + }, + close: function close() { + ttEach(this, function(t) { + t.close(); + }); + return this; + }, + select: function select(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.select($el); + }); + return success; + }, + autocomplete: function autocomplete(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.autocomplete($el); + }); + return success; + }, + moveCursor: function moveCursoe(delta) { + var success = false; + ttEach(this.first(), function(t) { + success = t.moveCursor(delta); + }); + return success; + }, + val: function val(newVal) { + var query; + if (!arguments.length) { + ttEach(this.first(), function(t) { + query = t.getVal(); + }); + return query; + } else { + ttEach(this, function(t) { + t.setVal(_.toStr(newVal)); + }); + return this; + } + }, + destroy: function destroy() { + ttEach(this, function(typeahead, $input) { + revert($input); + typeahead.destroy(); + }); + return this; + } + }; + $.fn.typeahead = function(method) { + if (methods[method]) { + return methods[method].apply(this, [].slice.call(arguments, 1)); + } else { + return methods.initialize.apply(this, arguments); + } + }; + $.fn.typeahead.noConflict = function noConflict() { + $.fn.typeahead = old; + return this; + }; + function ttEach($els, fn) { + $els.each(function() { + var $input = $(this), typeahead; + (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); + }); + } + function buildHintFromInput($input, www) { + return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ + readonly: true, + required: false + }).removeAttr("id name placeholder").removeClass("required").attr({ + spellcheck: "false", + tabindex: -1 + }); + } + function prepInput($input, www) { + $input.data(keys.attrs, { + dir: $input.attr("dir"), + autocomplete: $input.attr("autocomplete"), + spellcheck: $input.attr("spellcheck"), + style: $input.attr("style") + }); + $input.addClass(www.classes.input).attr({ + spellcheck: false + }); + try { + !$input.attr("dir") && $input.attr("dir", "auto"); + } catch (e) {} + return $input; + } + function getBackgroundStyles($el) { + return { + backgroundAttachment: $el.css("background-attachment"), + backgroundClip: $el.css("background-clip"), + backgroundColor: $el.css("background-color"), + backgroundImage: $el.css("background-image"), + backgroundOrigin: $el.css("background-origin"), + backgroundPosition: $el.css("background-position"), + backgroundRepeat: $el.css("background-repeat"), + backgroundSize: $el.css("background-size") + }; + } + function revert($input) { + var www, $wrapper; + www = $input.data(keys.www); + $wrapper = $input.parent().filter(www.selectors.wrapper); + _.each($input.data(keys.attrs), function(val, key) { + _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); + }); + $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); + if ($wrapper.length) { + $input.detach().insertAfter($wrapper); + $wrapper.remove(); + } + } + function $elOrNull(obj) { + var isValid, $el; + isValid = _.isJQuery(obj) || _.isElement(obj); + $el = isValid ? $(obj).first() : []; + return $el.length ? $el : null; + } + })(); +}); \ No newline at end of file diff --git a/docs/docsets/Hero.docset/Contents/Resources/Documents/search.json b/docs/docsets/Hero.docset/Contents/Resources/Documents/search.json new file mode 100644 index 00000000..0ae2f538 --- /dev/null +++ b/docs/docsets/Hero.docset/Contents/Resources/Documents/search.json @@ -0,0 +1 @@ +{"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV4viewSo6UIViewCSgvp":{"name":"view","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV11isAppearingSbvp":{"name":"isAppearing","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV12isPresentingSbvp":{"name":"isPresenting","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV20isInTabbarControllerSbvp":{"name":"isInTabbarController","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV20isInNavbarControllerSbvp":{"name":"isInNavbarController","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV9isMatchedSbvp":{"name":"isMatched","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV21isAncestorViewMatchedSbvp":{"name":"isAncestorViewMatched","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV11matchedViewSo6UIViewCSgvp":{"name":"matchedView","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV19matchedAncestorViewSo6UIViewC_AFtSgvp":{"name":"matchedAncestorView","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV18fromViewControllerSo06UIViewF0Cvp":{"name":"fromViewController","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV16toViewControllerSo06UIViewF0Cvp":{"name":"toViewController","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV21currentViewControllerSo06UIViewF0Cvp":{"name":"currentViewController","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV19otherViewControllerSo06UIViewF0Cvp":{"name":"otherViewController","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV05beginC0SayAA0A8ModifierCGSgvp":{"name":"beginState","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV20conditionalModifiersSaySbAA0A18ConditionalContextVc_SayAA0A8ModifierCGtGSgvp":{"name":"conditionalModifiers","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV8positionSo7CGPointVSgvp":{"name":"position","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV4sizeSo6CGSizeVSgvp":{"name":"size","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV9transformSo13CATransform3DVSgvp":{"name":"transform","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV7opacitySfSgvp":{"name":"opacity","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV12cornerRadius12CoreGraphics7CGFloatVSgvp":{"name":"cornerRadius","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV15backgroundColorSo10CGColorRefaSgvp":{"name":"backgroundColor","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV9zPosition12CoreGraphics7CGFloatVSgvp":{"name":"zPosition","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV12contentsRectSo6CGRectVSgvp":{"name":"contentsRect","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV13contentsScale12CoreGraphics7CGFloatVSgvp":{"name":"contentsScale","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV11borderWidth12CoreGraphics7CGFloatVSgvp":{"name":"borderWidth","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV11borderColorSo10CGColorRefaSgvp":{"name":"borderColor","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV11shadowColorSo10CGColorRefaSgvp":{"name":"shadowColor","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV13shadowOpacitySfSgvp":{"name":"shadowOpacity","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV12shadowOffsetSo6CGSizeVSgvp":{"name":"shadowOffset","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV12shadowRadius12CoreGraphics7CGFloatVSgvp":{"name":"shadowRadius","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV10shadowPathSo9CGPathRefaSgvp":{"name":"shadowPath","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV13masksToBoundsSbSgvp":{"name":"masksToBounds","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV13displayShadowSbvp":{"name":"displayShadow","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV7overlaySo10CGColorRefa5color_12CoreGraphics7CGFloatV7opacitytSgvp":{"name":"overlay","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV6spring12CoreGraphics7CGFloatV_AGtSgvp":{"name":"spring","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV5delaySdvp":{"name":"delay","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV8durationSdSgvp":{"name":"duration","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV14timingFunctionSo013CAMediaTimingE0CSgvp":{"name":"timingFunction","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV3arc12CoreGraphics7CGFloatVSgvp":{"name":"arc","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV6sourceSSSgvp":{"name":"source","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV7cascadeSd_AA16CascadeDirectionOSbtSgvp":{"name":"cascade","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV22ignoreSubviewModifiersSbSgvp":{"name":"ignoreSubviewModifiers","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV15coordinateSpaceAA0a10CoordinateE0OSgvp":{"name":"coordinateSpace","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV23useScaleBasedSizeChangeSbSgvp":{"name":"useScaleBasedSizeChange","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV12snapshotTypeAA0a8SnapshotE0OSgvp":{"name":"snapshotType","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV7nonFadeSbvp":{"name":"nonFade","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV12forceAnimateSbvp":{"name":"forceAnimate","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV6customSDySSypGSgvp":{"name":"custom","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV6appendyyAA0A8ModifierCF":{"name":"append(_:)","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV6append10contentsOfySayAA0A8ModifierCG_tF":{"name":"append(contentsOf:)","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateVyypSgSScip":{"name":"subscript(_:)","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:s25ExpressibleByArrayLiteralP05arrayD0x0cD7ElementQzd_tcfc":{"name":"init(arrayLiteral:)","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html":{"name":"HeroTargetState","abstract":"

Undocumented

"},"Structs/HeroConditionalContext.html":{"name":"HeroConditionalContext","abstract":"

Undocumented

"},"Protocols/HeroTransitionDelegate.html#/s:4Hero0A18TransitionDelegateP04heroB0_9didUpdateyAA0aB0C_AA0aB5StateOtF":{"name":"heroTransition(_:didUpdate:)","abstract":"

Undocumented

","parent_name":"HeroTransitionDelegate"},"Protocols/HeroTransitionDelegate.html#/s:4Hero0A18TransitionDelegateP04heroB0_9didUpdateyAA0aB0C_SdtF":{"name":"heroTransition(_:didUpdate:)","abstract":"

Undocumented

","parent_name":"HeroTransitionDelegate"},"Protocols/HeroStringConvertible.html#/s:4Hero0A17StringConvertibleP4from4nodexSgAA8ExprNodeC_tFZ":{"name":"from(node:)","abstract":"

Undocumented

","parent_name":"HeroStringConvertible"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroWillStartAnimatingFromViewController:":{"name":"heroWillStartAnimatingFrom(viewController:)","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroDidEndAnimatingFromViewController:":{"name":"heroDidEndAnimatingFrom(viewController:)","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroDidCancelAnimatingFromViewController:":{"name":"heroDidCancelAnimatingFrom(viewController:)","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroWillStartTransition":{"name":"heroWillStartTransition()","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroDidEndTransition":{"name":"heroDidEndTransition()","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroDidCancelTransition":{"name":"heroDidCancelTransition()","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroWillStartAnimatingToViewController:":{"name":"heroWillStartAnimatingTo(viewController:)","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroDidEndAnimatingToViewController:":{"name":"heroDidEndAnimatingTo(viewController:)","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroDidCancelAnimatingToViewController:":{"name":"heroDidCancelAnimatingTo(viewController:)","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroProgressUpdateObserver.html#/s:4Hero0A22ProgressUpdateObserverP07heroDidcB08progressySd_tF":{"name":"heroDidUpdateProgress(progress:)","abstract":"

Undocumented

","parent_name":"HeroProgressUpdateObserver"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP4heroAA0A10TransitionCSgvp":{"name":"hero","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP10canAnimate4view9appearingSbSo6UIViewC_SbtF":{"name":"canAnimate(view:appearing:)","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP7animate9fromViews02toE0SdSaySo6UIViewCG_AItF":{"name":"animate(fromViews:toViews:)","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP5cleanyyF":{"name":"clean()","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP6seekTo10timePassedySd_tF":{"name":"seekTo(timePassed:)","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP6resume10timePassed7reverseS2d_SbtF":{"name":"resume(timePassed:reverse:)","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP5apply5state2toyAA0A11TargetStateV_So6UIViewCtF":{"name":"apply(state:to:)","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP12changeTarget5state13isDestination2toyAA0aD5StateV_SbSo6UIViewCtF":{"name":"changeTarget(state:isDestination:to:)","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroPreprocessor.html#/s:4Hero0A12PreprocessorP4heroAA0A10TransitionCSgvp":{"name":"hero","abstract":"

Undocumented

","parent_name":"HeroPreprocessor"},"Protocols/HeroPreprocessor.html#/s:4Hero0A12PreprocessorP7process9fromViews02toE0ySaySo6UIViewCG_AItF":{"name":"process(fromViews:toViews:)","abstract":"

Undocumented

","parent_name":"HeroPreprocessor"},"Protocols/HeroCustomSnapshotView.html#/s:4Hero0A18CustomSnapshotViewP04heroC0So6UIViewCSgvp":{"name":"heroSnapshot","abstract":"

Undocumented

","parent_name":"HeroCustomSnapshotView"},"Protocols/HeroCompatible.html#/s:4Hero0A10CompatibleP0B4TypeQa":{"name":"CompatibleType","abstract":"

Undocumented

","parent_name":"HeroCompatible"},"Protocols/HeroCompatible.html#/s:4Hero0A10CompatibleP4heroAA0A9ExtensionCy0B4TypeQzGvp":{"name":"hero","abstract":"

Undocumented

","parent_name":"HeroCompatible"},"Protocols/HeroCompatible.html":{"name":"HeroCompatible","abstract":"

Undocumented

"},"Protocols/HeroCustomSnapshotView.html":{"name":"HeroCustomSnapshotView","abstract":"

Allows a view to create their own custom snapshot when using Optimized snapshot

"},"Protocols/HeroPreprocessor.html":{"name":"HeroPreprocessor","abstract":"

Undocumented

"},"Protocols/HeroAnimator.html":{"name":"HeroAnimator","abstract":"

Undocumented

"},"Protocols/HeroProgressUpdateObserver.html":{"name":"HeroProgressUpdateObserver","abstract":"

Undocumented

"},"Protocols/HeroViewControllerDelegate.html":{"name":"HeroViewControllerDelegate","abstract":"

Undocumented

"},"Protocols/HeroStringConvertible.html":{"name":"HeroStringConvertible","abstract":"

Undocumented

"},"Protocols/HeroTransitionDelegate.html":{"name":"HeroTransitionDelegate","abstract":"

Undocumented

"},"Functions.html#/s:4Hero2eeoiySbAA8ExprNodeC_ADtF":{"name":"==(_:_:)","abstract":"

Undocumented

"},"Extensions/HeroDebugView.html#/gestureRecognizerShouldBegin(_:)":{"name":"gestureRecognizerShouldBegin(_:)","parent_name":"HeroDebugView"},"Extensions/UINavigationController.html#/Operation":{"name":"Operation","parent_name":"UINavigationController"},"Extensions/String.html#/s:SS4HeroE5match5regexSS_SnySiGtSgSS_tF":{"name":"match(regex:)","abstract":"

Undocumented

","parent_name":"String"},"Extensions/UITabBarController.html#/s:So18UITabBarControllerC4HeroE07heroTabB13AnimationTypeAC0d7DefaultgH0Ovp":{"name":"heroTabBarAnimationType","abstract":"

Undocumented

","parent_name":"UITabBarController"},"Extensions/UITabBarController.html#/c:@CM@Hero@@objc(cs)UITabBarController(py)heroTabBarAnimationTypeString":{"name":"heroTabBarAnimationTypeString","abstract":"

Undocumented

","parent_name":"UITabBarController"},"Extensions/UINavigationController.html#/s:So22UINavigationControllerC4HeroE27heroNavigationAnimationTypeAC0c7DefaultfG0Ovp":{"name":"heroNavigationAnimationType","abstract":"

Undocumented

","parent_name":"UINavigationController"},"Extensions/UINavigationController.html#/c:@CM@Hero@@objc(cs)UINavigationController(py)heroNavigationAnimationTypeString":{"name":"heroNavigationAnimationTypeString","abstract":"

Undocumented

","parent_name":"UINavigationController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE22heroModalAnimationTypeAC0c7DefaultfG0Ovp":{"name":"heroModalAnimationType","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/c:@CM@Hero@@objc(cs)UIViewController(py)heroModalAnimationTypeString":{"name":"heroModalAnimationTypeString","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/c:@CM@Hero@@objc(cs)UIViewController(py)isHeroEnabled":{"name":"isHeroEnabled","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/c:@CM@Hero@@objc(cs)UIViewController(im)ht_dismiss:":{"name":"ht_dismiss(_:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE015heroReplaceViewB04withyAB_tF":{"name":"heroReplaceViewController(with:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/c:@CM@Hero@@objc(cs)UIViewController(im)hero_dismissViewController":{"name":"hero_dismissViewController()","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/c:@CM@Hero@@objc(cs)UIViewController(im)hero_unwindToRootViewController":{"name":"hero_unwindToRootViewController()","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE017hero_unwindToViewB0yyABF":{"name":"hero_unwindToViewController(_:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE017hero_unwindToViewB012withSelectory10ObjectiveC0I0V_tF":{"name":"hero_unwindToViewController(withSelector:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE017hero_unwindToViewB09withClassyyXlXp_tF":{"name":"hero_unwindToViewController(withClass:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE017hero_unwindToViewB014withMatchBlockySbABXE_tF":{"name":"hero_unwindToViewController(withMatchBlock:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE016hero_replaceViewB04withyAB_tF":{"name":"hero_replaceViewController(with:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIView.html#/c:@CM@Hero@@objc(cs)UIView(py)heroID":{"name":"heroID","abstract":"

Undocumented

","parent_name":"UIView"},"Extensions/UIView.html#/c:@CM@Hero@@objc(cs)UIView(py)isHeroEnabled":{"name":"isHeroEnabled","abstract":"

Undocumented

","parent_name":"UIView"},"Extensions/UIView.html#/c:@CM@Hero@@objc(cs)UIView(py)isHeroEnabledForSubviews":{"name":"isHeroEnabledForSubviews","abstract":"

Undocumented

","parent_name":"UIView"},"Extensions/UIView.html#/s:So6UIViewC4HeroE13heroModifiersSayAC0B8ModifierCGSgvp":{"name":"heroModifiers","abstract":"

Undocumented

","parent_name":"UIView"},"Extensions/UIView.html#/c:@CM@Hero@@objc(cs)UIView(py)heroModifierString":{"name":"heroModifierString","abstract":"

Undocumented

","parent_name":"UIView"},"Extensions/CATransform3D.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"CATransform3D"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE6linearABvpZ":{"name":"linear","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE6easeInABvpZ":{"name":"easeIn","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE7easeOutABvpZ":{"name":"easeOut","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE9easeInOutABvpZ":{"name":"easeInOut","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE8standardABvpZ":{"name":"standard","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE12decelerationABvpZ":{"name":"deceleration","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE12accelerationABvpZ":{"name":"acceleration","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE5sharpABvpZ":{"name":"sharp","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE11easeOutBackABvpZ":{"name":"easeOutBack","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE4from4nameABSgSS_tFZ":{"name":"from(name:)","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/HeroDebugView.html#/c:@CM@Hero@objc(cs)HeroDebugView(im)gestureRecognizerShouldBegin:":{"name":"gestureRecognizerShouldBegin(_:)","abstract":"

Undocumented

","parent_name":"HeroDebugView"},"Extensions/HeroDebugView.html":{"name":"HeroDebugView"},"Extensions/CAMediaTimingFunction.html":{"name":"CAMediaTimingFunction"},"Extensions/CATransform3D.html":{"name":"CATransform3D"},"Extensions/UIView.html":{"name":"UIView"},"Extensions/UIViewController.html":{"name":"UIViewController"},"Extensions/UINavigationController.html":{"name":"UINavigationController"},"Extensions/UITabBarController.html":{"name":"UITabBarController"},"Extensions/String.html":{"name":"String"},"Enums/HeroTransitionState.html#/s:4Hero0A15TransitionStateO8possibleyA2CmF":{"name":"possible","abstract":"

Undocumented

","parent_name":"HeroTransitionState"},"Enums/HeroTransitionState.html#/s:4Hero0A15TransitionStateO8notifiedyA2CmF":{"name":"notified","abstract":"

Undocumented

","parent_name":"HeroTransitionState"},"Enums/HeroTransitionState.html#/s:4Hero0A15TransitionStateO8startingyA2CmF":{"name":"starting","abstract":"

Undocumented

","parent_name":"HeroTransitionState"},"Enums/HeroTransitionState.html#/s:4Hero0A15TransitionStateO9animatingyA2CmF":{"name":"animating","abstract":"

Undocumented

","parent_name":"HeroTransitionState"},"Enums/HeroTransitionState.html#/s:4Hero0A15TransitionStateO10completingyA2CmF":{"name":"completing","abstract":"

Undocumented

","parent_name":"HeroTransitionState"},"Enums/HeroDefaultAnimationType/Strategy.html#/s:4Hero0A20DefaultAnimationTypeO8StrategyO16forceLeftToRightyA2EmF":{"name":"forceLeftToRight","abstract":"

Undocumented

","parent_name":"Strategy"},"Enums/HeroDefaultAnimationType/Strategy.html#/s:4Hero0A20DefaultAnimationTypeO8StrategyO16forceRightToLeftyA2EmF":{"name":"forceRightToLeft","abstract":"

Undocumented

","parent_name":"Strategy"},"Enums/HeroDefaultAnimationType/Strategy.html#/s:4Hero0A20DefaultAnimationTypeO8StrategyO13userInterfaceyA2EmF":{"name":"userInterface","abstract":"

Undocumented

","parent_name":"Strategy"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO4leftyA2EmF":{"name":"left","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO5rightyA2EmF":{"name":"right","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO2upyA2EmF":{"name":"up","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO4downyA2EmF":{"name":"down","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO4from4nodeAESgAA8ExprNodeC_tFZ":{"name":"from(node:)","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO7leadingAEvpZ":{"name":"leading","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO8trailingAEvpZ":{"name":"trailing","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html":{"name":"Direction","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType/Strategy.html":{"name":"Strategy","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4autoyA2CmF":{"name":"auto","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4pushyA2C9DirectionO_tcACmF":{"name":"push(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4pullyA2C9DirectionO_tcACmF":{"name":"pull(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO5coveryA2C9DirectionO_tcACmF":{"name":"cover(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO7uncoveryA2C9DirectionO_tcACmF":{"name":"uncover(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO5slideyA2C9DirectionO_tcACmF":{"name":"slide(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO9zoomSlideyA2C9DirectionO_tcACmF":{"name":"zoomSlide(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO6pageInyA2C9DirectionO_tcACmF":{"name":"pageIn(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO7pageOutyA2C9DirectionO_tcACmF":{"name":"pageOut(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4fadeyA2CmF":{"name":"fade","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4zoomyA2CmF":{"name":"zoom","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO7zoomOutyA2CmF":{"name":"zoomOut","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO8selectByyA2C_ACtcACmF":{"name":"selectBy(presenting:dismissing:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO11autoReverse10presentingA2C_tFZ":{"name":"autoReverse(presenting:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4noneyA2CmF":{"name":"none","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO5labelSSSgvp":{"name":"label","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4from4nodeACSgAA8ExprNodeC_tFZ":{"name":"from(node:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO11topToBottomyA2CmF":{"name":"topToBottom","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO11bottomToTopyA2CmF":{"name":"bottomToTop","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO11leftToRightyA2CmF":{"name":"leftToRight","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO11rightToLeftyA2CmF":{"name":"rightToLeft","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO6radialyACSo7CGPointV_tcACmF":{"name":"radial(center:)","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO13inverseRadialyACSo7CGPointV_tcACmF":{"name":"inverseRadial(center:)","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO17leadingToTrailingACvpZ":{"name":"leadingToTrailing","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO17trailingToLeadingACvpZ":{"name":"trailingToLeading","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/ParseError.html#/s:4Hero10ParseErrorO13unexpectTokenyA2CmF":{"name":"unexpectToken","abstract":"

Undocumented

","parent_name":"ParseError"},"Enums/ParseError.html#/s:4Hero10ParseErrorO17undefinedOperatoryACSScACmF":{"name":"undefinedOperator(_:)","abstract":"

Undocumented

","parent_name":"ParseError"},"Enums/ParseError.html#/s:4Hero10ParseErrorO15expectCharacteryACSJcACmF":{"name":"expectCharacter(_:)","abstract":"

Undocumented

","parent_name":"ParseError"},"Enums/ParseError.html#/s:4Hero10ParseErrorO16expectExpressionyA2CmF":{"name":"expectExpression","abstract":"

Undocumented

","parent_name":"ParseError"},"Enums/ParseError.html#/s:4Hero10ParseErrorO18expectArgumentListyA2CmF":{"name":"expectArgumentList","abstract":"

Undocumented

","parent_name":"ParseError"},"Enums/ParseError.html#/s:4Hero10ParseErrorO18expectFunctionNameyA2CmF":{"name":"expectFunctionName","abstract":"

Undocumented

","parent_name":"ParseError"},"Enums/Token.html#/s:4Hero5TokenO10identifieryACSS_SnySiGtcACmF":{"name":"identifier(_:_:)","abstract":"

Undocumented

","parent_name":"Token"},"Enums/Token.html#/s:4Hero5TokenO6numberyACSf_SnySiGtcACmF":{"name":"number(_:_:)","abstract":"

Undocumented

","parent_name":"Token"},"Enums/Token.html#/s:4Hero5TokenO10parensOpenyACSnySiGcACmF":{"name":"parensOpen(_:)","abstract":"

Undocumented

","parent_name":"Token"},"Enums/Token.html#/s:4Hero5TokenO11parensCloseyACSnySiGcACmF":{"name":"parensClose(_:)","abstract":"

Undocumented

","parent_name":"Token"},"Enums/Token.html#/s:4Hero5TokenO5commayACSnySiGcACmF":{"name":"comma(_:)","abstract":"

Undocumented

","parent_name":"Token"},"Enums/Token.html#/s:4Hero5TokenO5otheryACSS_SnySiGtcACmF":{"name":"other(_:_:)","abstract":"

Undocumented

","parent_name":"Token"},"Enums/HeroViewOrderingStrategy.html#/s:4Hero0A20ViewOrderingStrategyO4autoyA2CmF":{"name":"auto","abstract":"

Undocumented

","parent_name":"HeroViewOrderingStrategy"},"Enums/HeroViewOrderingStrategy.html#/s:4Hero0A20ViewOrderingStrategyO06sourceB5OnTopyA2CmF":{"name":"sourceViewOnTop","abstract":"

Undocumented

","parent_name":"HeroViewOrderingStrategy"},"Enums/HeroViewOrderingStrategy.html#/s:4Hero0A20ViewOrderingStrategyO011destinationB5OnTopyA2CmF":{"name":"destinationViewOnTop","abstract":"

Undocumented

","parent_name":"HeroViewOrderingStrategy"},"Enums/HeroCoordinateSpace.html#/s:4Hero0A15CoordinateSpaceO6globalyA2CmF":{"name":"global","abstract":"

Undocumented

","parent_name":"HeroCoordinateSpace"},"Enums/HeroCoordinateSpace.html#/s:4Hero0A15CoordinateSpaceO5localyA2CmF":{"name":"local","abstract":"

Undocumented

","parent_name":"HeroCoordinateSpace"},"Enums/HeroSnapshotType.html#/s:4Hero0A12SnapshotTypeO9optimizedyA2CmF":{"name":"optimized","abstract":"

Will optimize for different type of views","parent_name":"HeroSnapshotType"},"Enums/HeroSnapshotType.html#/s:4Hero0A12SnapshotTypeO6normalyA2CmF":{"name":"normal","abstract":"

snapshotView(afterScreenUpdates:)

","parent_name":"HeroSnapshotType"},"Enums/HeroSnapshotType.html#/s:4Hero0A12SnapshotTypeO11layerRenderyA2CmF":{"name":"layerRender","abstract":"

layer.render(in: currentContext)

","parent_name":"HeroSnapshotType"},"Enums/HeroSnapshotType.html#/s:4Hero0A12SnapshotTypeO02noB0yA2CmF":{"name":"noSnapshot","abstract":"

will not create snapshot. animate the view directly.","parent_name":"HeroSnapshotType"},"Enums/HeroSnapshotType.html":{"name":"HeroSnapshotType","abstract":"

Undocumented

"},"Enums/HeroCoordinateSpace.html":{"name":"HeroCoordinateSpace","abstract":"

Undocumented

"},"Enums/HeroViewOrderingStrategy.html":{"name":"HeroViewOrderingStrategy","abstract":"

Undocumented

"},"Enums/Token.html":{"name":"Token","abstract":"

Undocumented

"},"Enums/ParseError.html":{"name":"ParseError","abstract":"

Undocumented

"},"Enums/CascadeDirection.html":{"name":"CascadeDirection","abstract":"

Undocumented

"},"Enums/HeroDefaultAnimationType.html":{"name":"HeroDefaultAnimationType","abstract":"

Undocumented

"},"Enums/HeroTransitionState.html":{"name":"HeroTransitionState","abstract":"

Undocumented

"},"Classes/HeroDebugPlugin.html#/showOnTop":{"name":"showOnTop","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/animate(fromViews:toViews:)":{"name":"animate(fromViews:toViews:)","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/resume(timePassed:reverse:)":{"name":"resume(timePassed:reverse:)","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/clean()":{"name":"clean()","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/onDone()":{"name":"onDone()","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/onProcessSliderChanged(progress:)":{"name":"onProcessSliderChanged(progress:)","parent_name":"HeroDebugPlugin"},"Classes/Hero.html#/s:4HeroAAC6sharedAA0A10TransitionCvpZ":{"name":"shared","abstract":"

Shared singleton object for controlling the transition

","parent_name":"Hero"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC8delegateAA0aB8Delegate_pSgvp":{"name":"delegate","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC16defaultAnimationAA0a7DefaultD4TypeOvp":{"name":"defaultAnimation","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC14containerColorSo7UIColorCvp":{"name":"containerColor","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC24isUserInteractionEnabledSbvp":{"name":"isUserInteractionEnabled","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC20viewOrderingStrategyAA0a4ViewdE0Ovp":{"name":"viewOrderingStrategy","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC33defaultAnimationDirectionStrategyAA0a7DefaultD4TypeO0F0Ovp":{"name":"defaultAnimationDirectionStrategy","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC5stateAA0aB5StateOvp":{"name":"state","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC15isTransitioningSbvp":{"name":"isTransitioning","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC12isPresentingSbvp":{"name":"isPresenting","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC13transitioningSbvp":{"name":"transitioning","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC10presentingSbvp":{"name":"presenting","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC9containerSo6UIViewCSgvp":{"name":"container","abstract":"

container we created to hold all animating views, will be a subview of the","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC16toViewControllerSo06UIViewE0CSgvp":{"name":"toViewController","abstract":"

destination view controller

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC18fromViewControllerSo06UIViewE0CSgvp":{"name":"fromViewController","abstract":"

source view controller

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC7contextAA0A7ContextCSgvp":{"name":"context","abstract":"

context object holding transition informations

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC11interactiveSbvp":{"name":"interactive","abstract":"

whether or not we are handling transition interactively

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC13totalDurationSdvp":{"name":"totalDuration","abstract":"

max duration needed by the animators

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC8progressSdvp":{"name":"progress","abstract":"

progress of the current transition. 0 if no transition is happening

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@M@Hero@objc(cs)HeroTransition(im)init":{"name":"init()","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC24observeForProgressUpdate8observeryAA0aeF8Observer_p_tF":{"name":"observeForProgressUpdate(observer:)","abstract":"

Receive callbacks on each animation frame.","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC7animateyyF":{"name":"animate()","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC8complete8finishedySb_tF":{"name":"complete(finished:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC10transition4from2to2in10completionySo16UIViewControllerC_AJSo0H0CySbcSgtF":{"name":"transition(from:to:in:completion:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC6updateyy12CoreGraphics7CGFloatVF":{"name":"update(_:)","abstract":"

Update the progress for the interactive transition.

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC6finish7animateySb_tF":{"name":"finish(animate:)","abstract":"

Finish the interactive transition.","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC6cancel7animateySb_tF":{"name":"cancel(animate:)","abstract":"

Cancel the interactive transition.","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC5apply9modifiers2toySayAA0A8ModifierCG_So6UIViewCtF":{"name":"apply(modifiers:to:)","abstract":"

Override modifiers during an interactive animation.

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC12changeTarget9modifiers13isDestination2toySayAA0A8ModifierCG_SbSo6UIViewCtF":{"name":"changeTarget(modifiers:isDestination:to:)","abstract":"

Override target state during an interactive animation.

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC5startyyF":{"name":"start()","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)navigationController:willShowViewController:animated:":{"name":"navigationController(_:willShow:animated:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)navigationController:didShowViewController:animated:":{"name":"navigationController(_:didShow:animated:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)navigationController:animationControllerForOperation:fromViewController:toViewController:":{"name":"navigationController(_:animationControllerFor:from:to:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)navigationController:interactionControllerForAnimationController:":{"name":"navigationController(_:interactionControllerFor:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)tabBarController:shouldSelectViewController:":{"name":"tabBarController(_:shouldSelect:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)tabBarController:interactionControllerForAnimationController:":{"name":"tabBarController(_:interactionControllerFor:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)tabBarController:animationControllerForTransitionFromViewController:toViewController:":{"name":"tabBarController(_:animationControllerForTransitionFrom:to:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)animationControllerForPresentedController:presentingController:sourceController:":{"name":"animationController(forPresented:presenting:source:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)animationControllerForDismissedController:":{"name":"animationController(forDismissed:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)interactionControllerForDismissal:":{"name":"interactionControllerForDismissal(using:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)interactionControllerForPresentation:":{"name":"interactionControllerForPresentation(using:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)animateTransition:":{"name":"animateTransition(using:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)transitionDuration:":{"name":"transitionDuration(using:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)animationEnded:":{"name":"animationEnded(_:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(py)wantsInteractiveStart":{"name":"wantsInteractiveStart","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)startInteractiveTransition:":{"name":"startInteractiveTransition(_:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/Parser.html#/s:4Hero6ParserC6tokensACSayAA5TokenOG_tcfc":{"name":"init(tokens:)","abstract":"

Undocumented

","parent_name":"Parser"},"Classes/Parser.html#/s:4Hero6ParserC5parseSayAA8ExprNodeCGyKF":{"name":"parse()","abstract":"

Undocumented

","parent_name":"Parser"},"Classes/FunctionNode.html#/s:4Hero12FunctionNodeC9prototypeAA09PrototypeC0Cvp":{"name":"prototype","abstract":"

Undocumented

","parent_name":"FunctionNode"},"Classes/FunctionNode.html#/s:4Hero12FunctionNodeC4bodyAA04ExprC0Cvp":{"name":"body","abstract":"

Undocumented

","parent_name":"FunctionNode"},"Classes/FunctionNode.html#/s:4Hero12FunctionNodeC11descriptionSSvp":{"name":"description","abstract":"

Undocumented

","parent_name":"FunctionNode"},"Classes/FunctionNode.html#/s:4Hero12FunctionNodeC9prototype4bodyAcA09PrototypeC0C_AA04ExprC0Ctcfc":{"name":"init(prototype:body:)","abstract":"

Undocumented

","parent_name":"FunctionNode"},"Classes/PrototypeNode.html#/s:4Hero13PrototypeNodeC13argumentNamesSaySSGvp":{"name":"argumentNames","abstract":"

Undocumented

","parent_name":"PrototypeNode"},"Classes/PrototypeNode.html#/s:4Hero13PrototypeNodeC11descriptionSSvp":{"name":"description","abstract":"

Undocumented

","parent_name":"PrototypeNode"},"Classes/PrototypeNode.html#/s:4Hero13PrototypeNodeC4name13argumentNamesACSS_SaySSGtcfc":{"name":"init(name:argumentNames:)","abstract":"

Undocumented

","parent_name":"PrototypeNode"},"Classes/CallNode.html#/s:4Hero8CallNodeC9argumentsSayAA04ExprC0CGvp":{"name":"arguments","abstract":"

Undocumented

","parent_name":"CallNode"},"Classes/CallNode.html#/s:4Hero8CallNodeC11descriptionSSvp":{"name":"description","abstract":"

Undocumented

","parent_name":"CallNode"},"Classes/CallNode.html#/s:4Hero8CallNodeC4name9argumentsACSS_SayAA04ExprC0CGtcfc":{"name":"init(name:arguments:)","abstract":"

Undocumented

","parent_name":"CallNode"},"Classes/BinaryOpNode.html#/s:4Hero12BinaryOpNodeC3lhsAA04ExprD0Cvp":{"name":"lhs","abstract":"

Undocumented

","parent_name":"BinaryOpNode"},"Classes/BinaryOpNode.html#/s:4Hero12BinaryOpNodeC3rhsAA04ExprD0Cvp":{"name":"rhs","abstract":"

Undocumented

","parent_name":"BinaryOpNode"},"Classes/BinaryOpNode.html#/s:4Hero12BinaryOpNodeC11descriptionSSvp":{"name":"description","abstract":"

Undocumented

","parent_name":"BinaryOpNode"},"Classes/BinaryOpNode.html#/s:4Hero12BinaryOpNodeC4name3lhs3rhsACSS_AA04ExprD0CAHtcfc":{"name":"init(name:lhs:rhs:)","abstract":"

Undocumented

","parent_name":"BinaryOpNode"},"Classes/VariableNode.html#/s:4Hero12VariableNodeC11descriptionSSvp":{"name":"description","abstract":"

Undocumented

","parent_name":"VariableNode"},"Classes/NumberNode.html#/s:4Hero10NumberNodeC5valueSfvp":{"name":"value","abstract":"

Undocumented

","parent_name":"NumberNode"},"Classes/NumberNode.html#/s:4Hero10NumberNodeC11descriptionSSvp":{"name":"description","abstract":"

Undocumented

","parent_name":"NumberNode"},"Classes/NumberNode.html#/s:4Hero10NumberNodeC5valueACSf_tcfc":{"name":"init(value:)","abstract":"

Undocumented

","parent_name":"NumberNode"},"Classes/ExprNode.html#/s:4Hero8ExprNodeC5rangeSnySiGvp":{"name":"range","abstract":"

Undocumented

","parent_name":"ExprNode"},"Classes/ExprNode.html#/s:4Hero8ExprNodeC4nameSSvp":{"name":"name","abstract":"

Undocumented

","parent_name":"ExprNode"},"Classes/ExprNode.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"ExprNode"},"Classes/ExprNode.html#/s:4Hero8ExprNodeC4nameACSS_tcfc":{"name":"init(name:)","abstract":"

Undocumented

","parent_name":"ExprNode"},"Classes/Lexer.html#/s:4Hero5LexerC5inputACSS_tcfc":{"name":"init(input:)","abstract":"

Undocumented

","parent_name":"Lexer"},"Classes/Lexer.html#/s:4Hero5LexerC8tokenizeSayAA5TokenOGyF":{"name":"tokenize()","abstract":"

Undocumented

","parent_name":"Lexer"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC4heroAA0A10TransitionCSgvp":{"name":"hero","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC7contextAA0A7ContextCSgvp":{"name":"context","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC23requirePerFrameCallbackSbvp":{"name":"requirePerFrameCallback","abstract":"

Determines whether or not to receive seekTo callback on every frame.

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/c:@M@Hero@objc(cs)HeroPlugin(im)init":{"name":"init()","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC7process9fromViews02toE0ySaySo6UIViewCG_AItF":{"name":"process(fromViews:toViews:)","abstract":"

Called before any animation.","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC10canAnimate4view9appearingSbSo6UIViewC_SbtF":{"name":"canAnimate(view:appearing:)","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC7animate9fromViews02toE0SdSaySo6UIViewCG_AItF":{"name":"animate(fromViews:toViews:)","abstract":"

Perform the animation.

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC5cleanyyF":{"name":"clean()","abstract":"

Called when all animations are completed.

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC6seekTo10timePassedySd_tF":{"name":"seekTo(timePassed:)","abstract":"

For supporting interactive animation only.

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC6resume10timePassed7reverseS2d_SbtF":{"name":"resume(timePassed:reverse:)","abstract":"

For supporting interactive animation only.

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC5apply5state2toyAA0A11TargetStateV_So6UIViewCtF":{"name":"apply(state:to:)","abstract":"

For supporting interactive animation only.

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC12changeTarget5state13isDestination2toyAA0aD5StateV_SbSo6UIViewCtF":{"name":"changeTarget(state:isDestination:to:)","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC9isEnabledSbvpZ":{"name":"isEnabled","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC6enableyyFZ":{"name":"enable()","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC7disableyyFZ":{"name":"disable()","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC13applyFunctionACyAA0A11TargetStateVzc_tcfc":{"name":"init(applyFunction:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9beginWithyACSayACGFZ":{"name":"beginWith(_:)","abstract":"

Apply modifiers directly to the view at the start of the transition.","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9beginWith9modifiersACSayACG_tFZ":{"name":"beginWith(modifiers:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9beginWithyA2Cd_tFZ":{"name":"beginWith(_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC24useGlobalCoordinateSpaceACvpZ":{"name":"useGlobalCoordinateSpace","abstract":"

Use global coordinate space.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC22ignoreSubviewModifiersACvpZ":{"name":"ignoreSubviewModifiers","abstract":"

ignore all heroModifiers attributes for a view’s direct subviews.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC22ignoreSubviewModifiers9recursiveACSb_tFZ":{"name":"ignoreSubviewModifiers(recursive:)","abstract":"

ignore all heroModifiers attributes for a view’s subviews.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC20useOptimizedSnapshotACvpZ":{"name":"useOptimizedSnapshot","abstract":"

Will create snapshot optimized for different view type.","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC17useNormalSnapshotACvpZ":{"name":"useNormalSnapshot","abstract":"

Create snapshot using snapshotView(afterScreenUpdates:).

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC22useLayerRenderSnapshotACvpZ":{"name":"useLayerRenderSnapshot","abstract":"

Create snapshot using layer.render(in: currentContext).","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC13useNoSnapshotACvpZ":{"name":"useNoSnapshot","abstract":"

Force Hero to not create any snapshot when animating this view.","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC12forceAnimateACvpZ":{"name":"forceAnimate","abstract":"

Force the view to animate.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC23useScaleBasedSizeChangeACvpZ":{"name":"useScaleBasedSizeChange","abstract":"

Force Hero use scale based size animation. This will convert all .size modifier into .scale modifier.","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC4from4nodeACSgAA8ExprNodeC_tFZ":{"name":"from(node:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC4fadeACvpZ":{"name":"fade","abstract":"

Fade the view during transition

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC12forceNonFadeACvpZ":{"name":"forceNonFade","abstract":"

Force don’t fade view during transition

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC8positionyACSo7CGPointVFZ":{"name":"position(_:)","abstract":"

Set the position for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC4sizeyACSo6CGSizeVFZ":{"name":"size(_:)","abstract":"

Set the size for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9transformyACSo13CATransform3DVFZ":{"name":"transform(_:)","abstract":"

Set the transform for the view to animate from/to. Will override previous perspective, scale, translate, & rotate modifiers

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC11perspectiveyAC12CoreGraphics7CGFloatVFZ":{"name":"perspective(_:)","abstract":"

Set the perspective on the transform. use in combination with the rotate modifier.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC5scale1x1y1zAC12CoreGraphics7CGFloatV_A2JtFZ":{"name":"scale(x:y:z:)","abstract":"

Scale 3d

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC5scaleyAC12CoreGraphics7CGFloatVFZ":{"name":"scale(_:)","abstract":"

Scale in x & y axis

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9translate1x1y1zAC12CoreGraphics7CGFloatV_A2JtFZ":{"name":"translate(x:y:z:)","abstract":"

Translate 3d

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9translate_1zACSo7CGPointV_12CoreGraphics7CGFloatVtFZ":{"name":"translate(_:z:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC6rotate1x1y1zAC12CoreGraphics7CGFloatV_A2JtFZ":{"name":"rotate(x:y:z:)","abstract":"

Rotate 3d

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC6rotate_1zACSo7CGPointV_12CoreGraphics7CGFloatVtFZ":{"name":"rotate(_:z:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC6rotateyAC12CoreGraphics7CGFloatVFZ":{"name":"rotate(_:)","abstract":"

Rotate 2d

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC7opacityyAC12CoreGraphics7CGFloatVFZ":{"name":"opacity(_:)","abstract":"

Set the opacity for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC15backgroundColoryACSo7UIColorCFZ":{"name":"backgroundColor(_:)","abstract":"

Set the backgroundColor for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC12cornerRadiusyAC12CoreGraphics7CGFloatVFZ":{"name":"cornerRadius(_:)","abstract":"

Set the cornerRadius for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9zPositionyAC12CoreGraphics7CGFloatVFZ":{"name":"zPosition(_:)","abstract":"

Set the zPosition for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC12contentsRectyACSo6CGRectVFZ":{"name":"contentsRect(_:)","abstract":"

Set the contentsRect for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC13contentsScaleyAC12CoreGraphics7CGFloatVFZ":{"name":"contentsScale(_:)","abstract":"

Set the contentsScale for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC11borderWidthyAC12CoreGraphics7CGFloatVFZ":{"name":"borderWidth(_:)","abstract":"

Set the borderWidth for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC11borderColoryACSo7UIColorCFZ":{"name":"borderColor(_:)","abstract":"

Set the borderColor for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC11shadowColoryACSo7UIColorCFZ":{"name":"shadowColor(_:)","abstract":"

Set the shadowColor for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC13shadowOpacityyAC12CoreGraphics7CGFloatVFZ":{"name":"shadowOpacity(_:)","abstract":"

Set the shadowOpacity for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC12shadowOffsetyACSo6CGSizeVFZ":{"name":"shadowOffset(_:)","abstract":"

Set the shadowOffset for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC12shadowRadiusyAC12CoreGraphics7CGFloatVFZ":{"name":"shadowRadius(_:)","abstract":"

Set the shadowRadius for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC10shadowPathyACSo9CGPathRefaFZ":{"name":"shadowPath(_:)","abstract":"

Set the shadowPath for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC13masksToBoundsyACSbFZ":{"name":"masksToBounds(_:)","abstract":"

Set the masksToBounds for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC7overlay5color7opacityACSo7UIColorC_12CoreGraphics7CGFloatVtFZ":{"name":"overlay(color:opacity:)","abstract":"

Create an overlay on the animating view.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC8durationyACSdFZ":{"name":"duration(_:)","abstract":"

Sets the duration of the animation for a given view. If not used, Hero will use determine the duration based on the distance and size changes.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC20durationMatchLongestACvpZ":{"name":"durationMatchLongest","abstract":"

Sets the duration of the animation for a given view to match the longest animation of the transition.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC5delayyACSdFZ":{"name":"delay(_:)","abstract":"

Sets the delay of the animation for a given view.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC14timingFunctionyACSo013CAMediaTimingD0CFZ":{"name":"timingFunction(_:)","abstract":"

Sets the timing function of the animation for a given view. If not used, Hero will use determine the timing function based on whether or not the view is entering or exiting the screen.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC6spring9stiffness7dampingAC12CoreGraphics7CGFloatV_AItFZ":{"name":"spring(stiffness:damping:)","abstract":"

(iOS 9+) Use spring animation with custom stiffness & damping. The duration will be automatically calculated. Will be ignored if arc, timingFunction, or duration is set.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC6source6heroIDACSS_tFZ":{"name":"source(heroID:)","abstract":"

Transition from/to the state of the view with matching heroID","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC3arcACvpZ":{"name":"arc","abstract":"

Works in combination with position modifier to apply a natural curve when moving to the destination.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC3arc9intensityAC12CoreGraphics7CGFloatV_tFZ":{"name":"arc(intensity:)","abstract":"

Works in combination with position modifier to apply a natural curve when moving to the destination.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC7cascadeACvpZ":{"name":"cascade","abstract":"

Cascade applys increasing delay modifiers to subviews

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC7cascade5delta9direction17delayMatchedViewsACSd_AA16CascadeDirectionOSbtFZ":{"name":"cascade(delta:direction:delayMatchedViews:)","abstract":"

Cascade applys increasing delay modifiers to subviews

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC4whenyACSbAA0A18ConditionalContextVc_SayACGtFZ":{"name":"when(_:_:)","abstract":"

Apply modifiers only if the condition return true.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC4whenyACSbAA0A18ConditionalContextVc_ACdtFZ":{"name":"when(_:_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC11whenMatchedyA2Cd_tFZ":{"name":"whenMatched(_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC14whenPresentingyA2Cd_tFZ":{"name":"whenPresenting(_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC14whenDismissingyA2Cd_tFZ":{"name":"whenDismissing(_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC13whenAppearingyA2Cd_tFZ":{"name":"whenAppearing(_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC16whenDisappearingyA2Cd_tFZ":{"name":"whenDisappearing(_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroContext.html#/s:4Hero0A7ContextC9containerSo6UIViewCvp":{"name":"container","abstract":"

The container holding all of the animating views

","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC9fromViewsSaySo6UIViewCGvp":{"name":"fromViews","abstract":"

A flattened list of all views from source ViewController

","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC7toViewsSaySo6UIViewCGvp":{"name":"toViews","abstract":"

A flattened list of all views from destination ViewController

","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC10sourceView3forSo6UIViewCSgSS_tF":{"name":"sourceView(for:)","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC15destinationView3forSo6UIViewCSgSS_tF":{"name":"destinationView(for:)","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC10pairedView3forSo6UIViewCSgAG_tF":{"name":"pairedView(for:)","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC12snapshotView3forSo6UIViewCAG_tF":{"name":"snapshotView(for:)","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextCyAA0A11TargetStateVSgSo6UIViewCcip":{"name":"subscript(_:)","abstract":"

Undocumented

","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC5cleanyyF":{"name":"clean()","abstract":"

Undocumented

","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC4hide4viewySo6UIViewC_tF":{"name":"hide(view:)","abstract":"

Undocumented

","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC6unhide4viewySo6UIViewC_tF":{"name":"unhide(view:)","abstract":"

Undocumented

","parent_name":"HeroContext"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionC4basexvp":{"name":"base","abstract":"

Undocumented

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo6UIViewCRbzlE2idSSSgvp":{"name":"id","abstract":"

ID is the identifier for the view. When doing a transition between two view controllers,","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo6UIViewCRbzlE9isEnabledSbvp":{"name":"isEnabled","abstract":"

isEnabled allows to specify whether a view and its subviews should be consider for animations.","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo6UIViewCRbzlE20isEnabledForSubviewsSbvp":{"name":"isEnabledForSubviews","abstract":"

isEnabledForSubviews allows to specify whether a view’s subviews should be consider for animations.","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo6UIViewCRbzlE9modifiersSayAA0A8ModifierCGSgvp":{"name":"modifiers","abstract":"

Use modifiers to specify animations alongside the main transition. Checkout HeroModifier.swift for available modifiers.

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo6UIViewCRbzlE14modifierStringSSSgvp":{"name":"modifierString","abstract":"

modifierString** provides another way to set modifiers. It can be assigned through storyboard.

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE18modalAnimationTypeAA0a7DefaultfG0Ovp":{"name":"modalAnimationType","abstract":"

default hero animation type for presenting & dismissing modally

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE24modalAnimationTypeStringSSSgvp":{"name":"modalAnimationTypeString","abstract":"

Undocumented

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE9isEnabledSbvp":{"name":"isEnabled","abstract":"

Undocumented

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo22UINavigationControllerCRbzlE23navigationAnimationTypeAA0a7DefaultfG0Ovp":{"name":"navigationAnimationType","abstract":"

default hero animation type for push and pop within the navigation controller

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo22UINavigationControllerCRbzlE29navigationAnimationTypeStringSSSgvp":{"name":"navigationAnimationTypeString","abstract":"

Undocumented

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo18UITabBarControllerCRbzlE03tabD13AnimationTypeAA0a7DefaultgH0Ovp":{"name":"tabBarAnimationType","abstract":"

default hero animation type for switching tabs within the tab bar controller

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo18UITabBarControllerCRbzlE03tabD19AnimationTypeStringSSSgvp":{"name":"tabBarAnimationTypeString","abstract":"

Undocumented

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE011dismissViewD010completionyyycSg_tF":{"name":"dismissViewController(completion:)","abstract":"

Dismiss the current view controller with animation. Will perform a navigationController.popViewController","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE016unwindToRootViewD0yyF":{"name":"unwindToRootViewController()","abstract":"

Unwind to the root view controller using Hero

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE012unwindToViewD0yyAEF":{"name":"unwindToViewController(_:)","abstract":"

Unwind to a specific view controller using Hero

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE012unwindToViewD012withSelectory10ObjectiveC0I0V_tF":{"name":"unwindToViewController(withSelector:)","abstract":"

Undocumented

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE012unwindToViewD09withClassyyXlXp_tF":{"name":"unwindToViewController(withClass:)","abstract":"

Unwind to a view controller with given class using Hero

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE012unwindToViewD014withMatchBlockySbAEXE_tF":{"name":"unwindToViewController(withMatchBlock:)","abstract":"

Unwind to a view controller that the matchBlock returns true on.

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE011replaceViewD04with10completionyAE_yycSgtF":{"name":"replaceViewController(with:completion:)","abstract":"

Replace the current view controller with another VC on the navigation/modal stack.

","parent_name":"HeroExtension"},"Classes/HeroDebugPlugin.html#/s:4Hero0A11DebugPluginC9showOnTopSbvpZ":{"name":"showOnTop","abstract":"

Undocumented

","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/s:4Hero0A11DebugPluginC7animate9fromViews02toF0SdSaySo6UIViewCG_AItF":{"name":"animate(fromViews:toViews:)","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/s:4Hero0A11DebugPluginC6resume10timePassed7reverseS2d_SbtF":{"name":"resume(timePassed:reverse:)","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/s:4Hero0A11DebugPluginC5cleanyyF":{"name":"clean()","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/s:4Hero0A11DebugPluginC6onDoneyyF":{"name":"onDone()","abstract":"

Undocumented

","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/s:4Hero0A11DebugPluginC22onProcessSliderChanged8progressySf_tF":{"name":"onProcessSliderChanged(progress:)","abstract":"

Undocumented

","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html":{"name":"HeroDebugPlugin"},"Classes/HeroExtension.html":{"name":"HeroExtension","abstract":"

Undocumented

"},"Classes/HeroContext.html":{"name":"HeroContext","abstract":"

Undocumented

"},"Classes/HeroModifier.html":{"name":"HeroModifier","abstract":"

Undocumented

"},"Classes/HeroPlugin.html":{"name":"HeroPlugin","abstract":"

Undocumented

"},"Classes/Lexer.html":{"name":"Lexer","abstract":"

Undocumented

"},"Classes/ExprNode.html":{"name":"ExprNode","abstract":"

Undocumented

"},"Classes/NumberNode.html":{"name":"NumberNode","abstract":"

Undocumented

"},"Classes/VariableNode.html":{"name":"VariableNode","abstract":"

Undocumented

"},"Classes/BinaryOpNode.html":{"name":"BinaryOpNode","abstract":"

Undocumented

"},"Classes/CallNode.html":{"name":"CallNode","abstract":"

Undocumented

"},"Classes/PrototypeNode.html":{"name":"PrototypeNode","abstract":"

Undocumented

"},"Classes/FunctionNode.html":{"name":"FunctionNode","abstract":"

Undocumented

"},"Classes/Parser.html":{"name":"Parser","abstract":"

Undocumented

"},"Classes/HeroTransition.html":{"name":"HeroTransition","abstract":"

Undocumented

"},"Classes/Hero.html":{"name":"Hero","abstract":"

The singleton class/object for controlling interactive transitions.

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Enums.html":{"name":"Enumerations","abstract":"

The following enumerations are available globally.

"},"Extensions.html":{"name":"Extensions","abstract":"

The following extensions are available globally.

"},"Functions.html":{"name":"Functions","abstract":"

The following functions are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structures","abstract":"

The following structures are available globally.

"}} \ No newline at end of file diff --git a/docs/docsets/Hero.docset/Contents/Resources/docSet.dsidx b/docs/docsets/Hero.docset/Contents/Resources/docSet.dsidx new file mode 100644 index 00000000..e228c262 Binary files /dev/null and b/docs/docsets/Hero.docset/Contents/Resources/docSet.dsidx differ diff --git a/docs/docsets/Hero.tgz b/docs/docsets/Hero.tgz new file mode 100644 index 00000000..61643e52 Binary files /dev/null and b/docs/docsets/Hero.tgz differ diff --git a/docs/img/carat.png b/docs/img/carat.png new file mode 100755 index 00000000..29d2f7fd Binary files /dev/null and b/docs/img/carat.png differ diff --git a/docs/img/dash.png b/docs/img/dash.png new file mode 100755 index 00000000..6f694c7a Binary files /dev/null and b/docs/img/dash.png differ diff --git a/docs/img/gh.png b/docs/img/gh.png new file mode 100755 index 00000000..628da97c Binary files /dev/null and b/docs/img/gh.png differ diff --git a/docs/img/spinner.gif b/docs/img/spinner.gif new file mode 100644 index 00000000..e3038d0a Binary files /dev/null and b/docs/img/spinner.gif differ diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..dfc1ce90 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,398 @@ + + + + Hero Reference + + + + + + + + + + + + + + + +
+

+ + Hero 1.5.0 Docs + + (24% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +

+ + + Install in Dash + +

+
+ + + +
+ +
+ +
+
+ +

+ +

Hero is a library for building iOS view controller transitions. It provides a declarative layer on top of the UIKit’s cumbersome transition APIs—making custom transitions an easy task for developers.

+ +

Carthage compatible +Version +License +Xcode 9.0+ +iOS 8.0+ +Swift 4.0+ +中文 README +Donate

+ +

       +

+ +

Hero is similar to Keynote’s Magic Move. It checks the heroID property on all source and destination views. Every matched view pair is then automatically transitioned from its old state to its new state.

+ +

Hero can also construct animations for unmatched views. It is easy to define these animations via the heroModifiers property. Hero will run these animations alongside the Magic Move animations. All of these animations can be interactively controlled by user gestures.

+ +

At view controller level, Hero provides several template transitions that you can set through heroModalAnimationType, heroNavigationAnimationType, and heroTabBarAnimationType. These can be used as the foundation of your custom transitions. Combine with heroID & heroModifiers to make your own unique transitions.

+ +

       +

+ +

By default, Hero provides dynamic duration based on the Material Design Motion Guide. Duration is automatically determined by changes to distance and size—saving you the hassle, while providing consistent and delightful animations.

+ +

Hero doesn’t make any assumptions about how the view is built or structured. It won’t modify any of your views’ states other than hiding them during the animation. This makes it work with Auto Layout, programmatic layout, UICollectionView (without modifying its layout object), UITableView, UINavigationController, UITabBarController, etc…

+ + +

Checkout the Example Gallery Blog Post for a general idea of what you can achieve with Hero

+

Usage Example 1

+ +

+
View Controller 1
+
redView.hero.id = "ironMan"
+blackView.hero.id = "batMan"
+
+
View Controller 2
+
self.hero.isEnabled = true
+redView.hero.id = "ironMan"
+blackView.hero.id = "batMan"
+whiteView.hero.modifiers = [.translate(y:100)]
+
+

Usage Example 2

+ +

+
View Controller 1
+
greyView.hero.id = "skyWalker"
+
+
View Controller 2
+
self.hero.isEnabled = true
+greyView.hero.id = "skyWalker"
+
+// collectionView is the parent view of all red cells
+collectionView.hero.modifiers = [.cascade]
+for cell in redCells {
+    cell.hero.modifiers = [.fade, .scale(0.5)]
+}
+
+ +

You can do these in the storyboard too!

+ +

+

+

Installation

+

CocoaPods

+ +

Add the following entry to your Podfile:

+
pod 'Hero'
+
+ +

Then run pod install.

+ +

Don’t forget to import Hero in every file you’d like to use Hero.

+

Carthage

+ +

Add the following entry to your Cartfile:

+
github "HeroTransitions/Hero"
+
+ +

Then run carthage update.

+ +

If this is your first time using Carthage in the project, you’ll need to go through some additional steps as explained over at Carthage.

+

Swift Package Manager

+ +

To integrate using Apple’s Swift package manager, add the following as a dependency to your Package.swift:

+
.package(url: "https://github.com/HeroTransitions/Hero.git", .upToNextMajor(from: "1.3.0"))
+
+ +

and then specify "Hero" as a dependency of the Target in which you wish to use Hero. +Here’s an example PackageDescription:

+
// swift-tools-version:4.0
+import PackageDescription
+
+let package = Package(
+    name: "MyPackage",
+    products: [
+        .library(
+            name: "MyPackage",
+            targets: ["MyPackage"]),
+    ],
+    dependencies: [
+        .package(url: "https://github.com/HeroTransitions/Hero.git", .upToNextMajor(from: "1.3.0"))
+    ],
+    targets: [
+        .target(
+            name: "MyPackage",
+            dependencies: ["Hero"])
+    ]
+)
+
+

Manually

+ +
    +
  • Drag the Sources folder anywhere in your project.
  • +
+

Documentations

+ +

Checkout the WIKI PAGES (Usage Guide) for documentations.

+ +

For more up-to-date ones, please see the header-doc. (use alt+click in Xcode) +

+

Interactive Transition Tutorials

+ +

Interactive transitions with Hero (Part 1)

+

FAQ

+

Not able to use Hero transition even when self.hero.isEnabled is set to true

+ +

Make sure that you have also enabled self.hero.isEnabled on the navigation controller if you are doing a push/pop inside the navigation controller.

+

Views being covered by another matched view during the transition

+ +

Matched views use global coordinate space while unmatched views use local coordinate space by default. Local coordinate spaced views might be covered by other global coordinate spaced views. To solve this, use the useGlobalCoordinateSpace modifier on the views being covered. Checkout Coordinate Space Wiki page for details.

+

Push animation is shown along side my custom animation

+ +

This is the default animation for navigation controller provided by Hero. To disable the push animation, set self.hero.navigationAnimationType to .fade or .none on the navigation controller.

+

How do I use a different default animation when dismissing

+ +

You can use the animation type .selectBy(presenting:dismissing) to specify a different default animation for dismiss.

+ +

For example:

+
    self.hero.modalAnimationType = .selectBy(presenting:.zoom, dismissing:.zoomOut)
+
+

Contribute

+ +

We welcome any contributions. Please read the Contribution Guide.

+ +
+
+ + +
+
+ + +
+ diff --git a/docs/js/jazzy.js b/docs/js/jazzy.js new file mode 100755 index 00000000..c31dc05e --- /dev/null +++ b/docs/js/jazzy.js @@ -0,0 +1,59 @@ +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`.token[href="${location.hash}"]`); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); diff --git a/docs/js/jazzy.search.js b/docs/js/jazzy.search.js new file mode 100644 index 00000000..e3d1ab90 --- /dev/null +++ b/docs/js/jazzy.search.js @@ -0,0 +1,70 @@ +$(function(){ + var $typeahead = $('[data-typeahead]'); + var $form = $typeahead.parents('form'); + var searchURL = $form.attr('action'); + + function displayTemplate(result) { + return result.name; + } + + function suggestionTemplate(result) { + var t = '
'; + t += '' + result.name + ''; + if (result.parent_name) { + t += '' + result.parent_name + ''; + } + t += '
'; + return t; + } + + $typeahead.one('focus', function() { + $form.addClass('loading'); + + $.getJSON(searchURL).then(function(searchData) { + const searchIndex = lunr(function() { + this.ref('url'); + this.field('name'); + this.field('abstract'); + for (const [url, doc] of Object.entries(searchData)) { + this.add({url: url, name: doc.name, abstract: doc.abstract}); + } + }); + + $typeahead.typeahead( + { + highlight: true, + minLength: 3, + autoselect: true + }, + { + limit: 10, + display: displayTemplate, + templates: { suggestion: suggestionTemplate }, + source: function(query, sync) { + const lcSearch = query.toLowerCase(); + const results = searchIndex.query(function(q) { + q.term(lcSearch, { boost: 100 }); + q.term(lcSearch, { + boost: 10, + wildcard: lunr.Query.wildcard.TRAILING + }); + }).map(function(result) { + var doc = searchData[result.ref]; + doc.url = result.ref; + return doc; + }); + sync(results); + } + } + ); + $form.removeClass('loading'); + $typeahead.trigger('focus'); + }); + }); + + var baseURL = searchURL.slice(0, -"search.json".length); + + $typeahead.on('typeahead:select', function(e, result) { + window.location = baseURL + result.url; + }); +}); diff --git a/docs/js/jquery.min.js b/docs/js/jquery.min.js new file mode 100644 index 00000000..a1c07fd8 --- /dev/null +++ b/docs/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0=this.length)return z.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},z.QueryLexer.prototype.width=function(){return this.pos-this.start},z.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},z.QueryLexer.prototype.backup=function(){this.pos-=1},z.QueryLexer.prototype.acceptDigitRun=function(){for(var e,t;47<(t=(e=this.next()).charCodeAt(0))&&t<58;);e!=z.QueryLexer.EOS&&this.backup()},z.QueryLexer.prototype.more=function(){return this.pos', + menu: '
' + }; + } + function buildSelectors(classes) { + var selectors = {}; + _.each(classes, function(v, k) { + selectors[k] = "." + v; + }); + return selectors; + } + function buildCss() { + var css = { + wrapper: { + position: "relative", + display: "inline-block" + }, + hint: { + position: "absolute", + top: "0", + left: "0", + borderColor: "transparent", + boxShadow: "none", + opacity: "1" + }, + input: { + position: "relative", + verticalAlign: "top", + backgroundColor: "transparent" + }, + inputWithNoHint: { + position: "relative", + verticalAlign: "top" + }, + menu: { + position: "absolute", + top: "100%", + left: "0", + zIndex: "100", + display: "none" + }, + ltr: { + left: "0", + right: "auto" + }, + rtl: { + left: "auto", + right: " 0" + } + }; + if (_.isMsie()) { + _.mixin(css.input, { + backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" + }); + } + return css; + } + }(); + var EventBus = function() { + "use strict"; + var namespace, deprecationMap; + namespace = "typeahead:"; + deprecationMap = { + render: "rendered", + cursorchange: "cursorchanged", + select: "selected", + autocomplete: "autocompleted" + }; + function EventBus(o) { + if (!o || !o.el) { + $.error("EventBus initialized without el"); + } + this.$el = $(o.el); + } + _.mixin(EventBus.prototype, { + _trigger: function(type, args) { + var $e = $.Event(namespace + type); + this.$el.trigger.call(this.$el, $e, args || []); + return $e; + }, + before: function(type) { + var args, $e; + args = [].slice.call(arguments, 1); + $e = this._trigger("before" + type, args); + return $e.isDefaultPrevented(); + }, + trigger: function(type) { + var deprecatedType; + this._trigger(type, [].slice.call(arguments, 1)); + if (deprecatedType = deprecationMap[type]) { + this._trigger(deprecatedType, [].slice.call(arguments, 1)); + } + } + }); + return EventBus; + }(); + var EventEmitter = function() { + "use strict"; + var splitter = /\s+/, nextTick = getNextTick(); + return { + onSync: onSync, + onAsync: onAsync, + off: off, + trigger: trigger + }; + function on(method, types, cb, context) { + var type; + if (!cb) { + return this; + } + types = types.split(splitter); + cb = context ? bindContext(cb, context) : cb; + this._callbacks = this._callbacks || {}; + while (type = types.shift()) { + this._callbacks[type] = this._callbacks[type] || { + sync: [], + async: [] + }; + this._callbacks[type][method].push(cb); + } + return this; + } + function onAsync(types, cb, context) { + return on.call(this, "async", types, cb, context); + } + function onSync(types, cb, context) { + return on.call(this, "sync", types, cb, context); + } + function off(types) { + var type; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + while (type = types.shift()) { + delete this._callbacks[type]; + } + return this; + } + function trigger(types) { + var type, callbacks, args, syncFlush, asyncFlush; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + args = [].slice.call(arguments, 1); + while ((type = types.shift()) && (callbacks = this._callbacks[type])) { + syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); + asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); + syncFlush() && nextTick(asyncFlush); + } + return this; + } + function getFlush(callbacks, context, args) { + return flush; + function flush() { + var cancelled; + for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { + cancelled = callbacks[i].apply(context, args) === false; + } + return !cancelled; + } + } + function getNextTick() { + var nextTickFn; + if (window.setImmediate) { + nextTickFn = function nextTickSetImmediate(fn) { + setImmediate(function() { + fn(); + }); + }; + } else { + nextTickFn = function nextTickSetTimeout(fn) { + setTimeout(function() { + fn(); + }, 0); + }; + } + return nextTickFn; + } + function bindContext(fn, context) { + return fn.bind ? fn.bind(context) : function() { + fn.apply(context, [].slice.call(arguments, 0)); + }; + } + }(); + var highlight = function(doc) { + "use strict"; + var defaults = { + node: null, + pattern: null, + tagName: "strong", + className: null, + wordsOnly: false, + caseSensitive: false, + diacriticInsensitive: false + }; + var accented = { + A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", + B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", + C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", + D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", + E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", + F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", + G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", + H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", + I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", + J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", + K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", + L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", + M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", + N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", + O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", + P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", + Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", + R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", + S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", + T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", + U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", + V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", + W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", + X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", + Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", + Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" + }; + return function hightlight(o) { + var regex; + o = _.mixin({}, defaults, o); + if (!o.node || !o.pattern) { + return; + } + o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; + regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); + traverse(o.node, hightlightTextNode); + function hightlightTextNode(textNode) { + var match, patternNode, wrapperNode; + if (match = regex.exec(textNode.data)) { + wrapperNode = doc.createElement(o.tagName); + o.className && (wrapperNode.className = o.className); + patternNode = textNode.splitText(match.index); + patternNode.splitText(match[0].length); + wrapperNode.appendChild(patternNode.cloneNode(true)); + textNode.parentNode.replaceChild(wrapperNode, patternNode); + } + return !!match; + } + function traverse(el, hightlightTextNode) { + var childNode, TEXT_NODE_TYPE = 3; + for (var i = 0; i < el.childNodes.length; i++) { + childNode = el.childNodes[i]; + if (childNode.nodeType === TEXT_NODE_TYPE) { + i += hightlightTextNode(childNode) ? 1 : 0; + } else { + traverse(childNode, hightlightTextNode); + } + } + } + }; + function accent_replacer(chr) { + return accented[chr.toUpperCase()] || chr; + } + function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { + var escapedPatterns = [], regexStr; + for (var i = 0, len = patterns.length; i < len; i++) { + var escapedWord = _.escapeRegExChars(patterns[i]); + if (diacriticInsensitive) { + escapedWord = escapedWord.replace(/\S/g, accent_replacer); + } + escapedPatterns.push(escapedWord); + } + regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; + return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); + } + }(window.document); + var Input = function() { + "use strict"; + var specialKeyCodeMap; + specialKeyCodeMap = { + 9: "tab", + 27: "esc", + 37: "left", + 39: "right", + 13: "enter", + 38: "up", + 40: "down" + }; + function Input(o, www) { + o = o || {}; + if (!o.input) { + $.error("input is missing"); + } + www.mixin(this); + this.$hint = $(o.hint); + this.$input = $(o.input); + this.$input.attr({ + "aria-activedescendant": "", + "aria-owns": this.$input.attr("id") + "_listbox", + role: "combobox", + "aria-readonly": "true", + "aria-autocomplete": "list" + }); + $(www.menu).attr("id", this.$input.attr("id") + "_listbox"); + this.query = this.$input.val(); + this.queryWhenFocused = this.hasFocus() ? this.query : null; + this.$overflowHelper = buildOverflowHelper(this.$input); + this._checkLanguageDirection(); + if (this.$hint.length === 0) { + this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; + } + this.onSync("cursorchange", this._updateDescendent); + } + Input.normalizeQuery = function(str) { + return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); + }; + _.mixin(Input.prototype, EventEmitter, { + _onBlur: function onBlur() { + this.resetInputValue(); + this.trigger("blurred"); + }, + _onFocus: function onFocus() { + this.queryWhenFocused = this.query; + this.trigger("focused"); + }, + _onKeydown: function onKeydown($e) { + var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; + this._managePreventDefault(keyName, $e); + if (keyName && this._shouldTrigger(keyName, $e)) { + this.trigger(keyName + "Keyed", $e); + } + }, + _onInput: function onInput() { + this._setQuery(this.getInputValue()); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + _managePreventDefault: function managePreventDefault(keyName, $e) { + var preventDefault; + switch (keyName) { + case "up": + case "down": + preventDefault = !withModifier($e); + break; + + default: + preventDefault = false; + } + preventDefault && $e.preventDefault(); + }, + _shouldTrigger: function shouldTrigger(keyName, $e) { + var trigger; + switch (keyName) { + case "tab": + trigger = !withModifier($e); + break; + + default: + trigger = true; + } + return trigger; + }, + _checkLanguageDirection: function checkLanguageDirection() { + var dir = (this.$input.css("direction") || "ltr").toLowerCase(); + if (this.dir !== dir) { + this.dir = dir; + this.$hint.attr("dir", dir); + this.trigger("langDirChanged", dir); + } + }, + _setQuery: function setQuery(val, silent) { + var areEquivalent, hasDifferentWhitespace; + areEquivalent = areQueriesEquivalent(val, this.query); + hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; + this.query = val; + if (!silent && !areEquivalent) { + this.trigger("queryChanged", this.query); + } else if (!silent && hasDifferentWhitespace) { + this.trigger("whitespaceChanged", this.query); + } + }, + _updateDescendent: function updateDescendent(event, id) { + this.$input.attr("aria-activedescendant", id); + }, + bind: function() { + var that = this, onBlur, onFocus, onKeydown, onInput; + onBlur = _.bind(this._onBlur, this); + onFocus = _.bind(this._onFocus, this); + onKeydown = _.bind(this._onKeydown, this); + onInput = _.bind(this._onInput, this); + this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); + if (!_.isMsie() || _.isMsie() > 9) { + this.$input.on("input.tt", onInput); + } else { + this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { + if (specialKeyCodeMap[$e.which || $e.keyCode]) { + return; + } + _.defer(_.bind(that._onInput, that, $e)); + }); + } + return this; + }, + focus: function focus() { + this.$input.focus(); + }, + blur: function blur() { + this.$input.blur(); + }, + getLangDir: function getLangDir() { + return this.dir; + }, + getQuery: function getQuery() { + return this.query || ""; + }, + setQuery: function setQuery(val, silent) { + this.setInputValue(val); + this._setQuery(val, silent); + }, + hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { + return this.query !== this.queryWhenFocused; + }, + getInputValue: function getInputValue() { + return this.$input.val(); + }, + setInputValue: function setInputValue(value) { + this.$input.val(value); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + resetInputValue: function resetInputValue() { + this.setInputValue(this.query); + }, + getHint: function getHint() { + return this.$hint.val(); + }, + setHint: function setHint(value) { + this.$hint.val(value); + }, + clearHint: function clearHint() { + this.setHint(""); + }, + clearHintIfInvalid: function clearHintIfInvalid() { + var val, hint, valIsPrefixOfHint, isValid; + val = this.getInputValue(); + hint = this.getHint(); + valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; + isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); + !isValid && this.clearHint(); + }, + hasFocus: function hasFocus() { + return this.$input.is(":focus"); + }, + hasOverflow: function hasOverflow() { + var constraint = this.$input.width() - 2; + this.$overflowHelper.text(this.getInputValue()); + return this.$overflowHelper.width() >= constraint; + }, + isCursorAtEnd: function() { + var valueLength, selectionStart, range; + valueLength = this.$input.val().length; + selectionStart = this.$input[0].selectionStart; + if (_.isNumber(selectionStart)) { + return selectionStart === valueLength; + } else if (document.selection) { + range = document.selection.createRange(); + range.moveStart("character", -valueLength); + return valueLength === range.text.length; + } + return true; + }, + destroy: function destroy() { + this.$hint.off(".tt"); + this.$input.off(".tt"); + this.$overflowHelper.remove(); + this.$hint = this.$input = this.$overflowHelper = $("
"); + } + }); + return Input; + function buildOverflowHelper($input) { + return $('').css({ + position: "absolute", + visibility: "hidden", + whiteSpace: "pre", + fontFamily: $input.css("font-family"), + fontSize: $input.css("font-size"), + fontStyle: $input.css("font-style"), + fontVariant: $input.css("font-variant"), + fontWeight: $input.css("font-weight"), + wordSpacing: $input.css("word-spacing"), + letterSpacing: $input.css("letter-spacing"), + textIndent: $input.css("text-indent"), + textRendering: $input.css("text-rendering"), + textTransform: $input.css("text-transform") + }).insertAfter($input); + } + function areQueriesEquivalent(a, b) { + return Input.normalizeQuery(a) === Input.normalizeQuery(b); + } + function withModifier($e) { + return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; + } + }(); + var Dataset = function() { + "use strict"; + var keys, nameGenerator; + keys = { + dataset: "tt-selectable-dataset", + val: "tt-selectable-display", + obj: "tt-selectable-object" + }; + nameGenerator = _.getIdGenerator(); + function Dataset(o, www) { + o = o || {}; + o.templates = o.templates || {}; + o.templates.notFound = o.templates.notFound || o.templates.empty; + if (!o.source) { + $.error("missing source"); + } + if (!o.node) { + $.error("missing node"); + } + if (o.name && !isValidName(o.name)) { + $.error("invalid dataset name: " + o.name); + } + www.mixin(this); + this.highlight = !!o.highlight; + this.name = _.toStr(o.name || nameGenerator()); + this.limit = o.limit || 5; + this.displayFn = getDisplayFn(o.display || o.displayKey); + this.templates = getTemplates(o.templates, this.displayFn); + this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; + this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; + this._resetLastSuggestion(); + this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); + } + Dataset.extractData = function extractData(el) { + var $el = $(el); + if ($el.data(keys.obj)) { + return { + dataset: $el.data(keys.dataset) || "", + val: $el.data(keys.val) || "", + obj: $el.data(keys.obj) || null + }; + } + return null; + }; + _.mixin(Dataset.prototype, EventEmitter, { + _overwrite: function overwrite(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (this.async && this.templates.pending) { + this._renderPending(query); + } else if (!this.async && this.templates.notFound) { + this._renderNotFound(query); + } else { + this._empty(); + } + this.trigger("rendered", suggestions, false, this.name); + }, + _append: function append(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length && this.$lastSuggestion.length) { + this._appendSuggestions(query, suggestions); + } else if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (!this.$lastSuggestion.length && this.templates.notFound) { + this._renderNotFound(query); + } + this.trigger("rendered", suggestions, true, this.name); + }, + _renderSuggestions: function renderSuggestions(query, suggestions) { + var $fragment; + $fragment = this._getSuggestionsFragment(query, suggestions); + this.$lastSuggestion = $fragment.children().last(); + this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); + }, + _appendSuggestions: function appendSuggestions(query, suggestions) { + var $fragment, $lastSuggestion; + $fragment = this._getSuggestionsFragment(query, suggestions); + $lastSuggestion = $fragment.children().last(); + this.$lastSuggestion.after($fragment); + this.$lastSuggestion = $lastSuggestion; + }, + _renderPending: function renderPending(query) { + var template = this.templates.pending; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _renderNotFound: function renderNotFound(query) { + var template = this.templates.notFound; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _empty: function empty() { + this.$el.empty(); + this._resetLastSuggestion(); + }, + _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { + var that = this, fragment; + fragment = document.createDocumentFragment(); + _.each(suggestions, function getSuggestionNode(suggestion) { + var $el, context; + context = that._injectQuery(query, suggestion); + $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); + fragment.appendChild($el[0]); + }); + this.highlight && highlight({ + className: this.classes.highlight, + node: fragment, + pattern: query + }); + return $(fragment); + }, + _getFooter: function getFooter(query, suggestions) { + return this.templates.footer ? this.templates.footer({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _getHeader: function getHeader(query, suggestions) { + return this.templates.header ? this.templates.header({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _resetLastSuggestion: function resetLastSuggestion() { + this.$lastSuggestion = $(); + }, + _injectQuery: function injectQuery(query, obj) { + return _.isObject(obj) ? _.mixin({ + _query: query + }, obj) : obj; + }, + update: function update(query) { + var that = this, canceled = false, syncCalled = false, rendered = 0; + this.cancel(); + this.cancel = function cancel() { + canceled = true; + that.cancel = $.noop; + that.async && that.trigger("asyncCanceled", query, that.name); + }; + this.source(query, sync, async); + !syncCalled && sync([]); + function sync(suggestions) { + if (syncCalled) { + return; + } + syncCalled = true; + suggestions = (suggestions || []).slice(0, that.limit); + rendered = suggestions.length; + that._overwrite(query, suggestions); + if (rendered < that.limit && that.async) { + that.trigger("asyncRequested", query, that.name); + } + } + function async(suggestions) { + suggestions = suggestions || []; + if (!canceled && rendered < that.limit) { + that.cancel = $.noop; + var idx = Math.abs(rendered - that.limit); + rendered += idx; + that._append(query, suggestions.slice(0, idx)); + that.async && that.trigger("asyncReceived", query, that.name); + } + } + }, + cancel: $.noop, + clear: function clear() { + this._empty(); + this.cancel(); + this.trigger("cleared"); + }, + isEmpty: function isEmpty() { + return this.$el.is(":empty"); + }, + destroy: function destroy() { + this.$el = $("
"); + } + }); + return Dataset; + function getDisplayFn(display) { + display = display || _.stringify; + return _.isFunction(display) ? display : displayFn; + function displayFn(obj) { + return obj[display]; + } + } + function getTemplates(templates, displayFn) { + return { + notFound: templates.notFound && _.templatify(templates.notFound), + pending: templates.pending && _.templatify(templates.pending), + header: templates.header && _.templatify(templates.header), + footer: templates.footer && _.templatify(templates.footer), + suggestion: templates.suggestion || suggestionTemplate + }; + function suggestionTemplate(context) { + return $('
').attr("id", _.guid()).text(displayFn(context)); + } + } + function isValidName(str) { + return /^[_a-zA-Z0-9-]+$/.test(str); + } + }(); + var Menu = function() { + "use strict"; + function Menu(o, www) { + var that = this; + o = o || {}; + if (!o.node) { + $.error("node is required"); + } + www.mixin(this); + this.$node = $(o.node); + this.query = null; + this.datasets = _.map(o.datasets, initializeDataset); + function initializeDataset(oDataset) { + var node = that.$node.find(oDataset.node).first(); + oDataset.node = node.length ? node : $("
").appendTo(that.$node); + return new Dataset(oDataset, www); + } + } + _.mixin(Menu.prototype, EventEmitter, { + _onSelectableClick: function onSelectableClick($e) { + this.trigger("selectableClicked", $($e.currentTarget)); + }, + _onRendered: function onRendered(type, dataset, suggestions, async) { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetRendered", dataset, suggestions, async); + }, + _onCleared: function onCleared() { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetCleared"); + }, + _propagate: function propagate() { + this.trigger.apply(this, arguments); + }, + _allDatasetsEmpty: function allDatasetsEmpty() { + return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { + var isEmpty = dataset.isEmpty(); + this.$node.attr("aria-expanded", !isEmpty); + return isEmpty; + }, this)); + }, + _getSelectables: function getSelectables() { + return this.$node.find(this.selectors.selectable); + }, + _removeCursor: function _removeCursor() { + var $selectable = this.getActiveSelectable(); + $selectable && $selectable.removeClass(this.classes.cursor); + }, + _ensureVisible: function ensureVisible($el) { + var elTop, elBottom, nodeScrollTop, nodeHeight; + elTop = $el.position().top; + elBottom = elTop + $el.outerHeight(true); + nodeScrollTop = this.$node.scrollTop(); + nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); + if (elTop < 0) { + this.$node.scrollTop(nodeScrollTop + elTop); + } else if (nodeHeight < elBottom) { + this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); + } + }, + bind: function() { + var that = this, onSelectableClick; + onSelectableClick = _.bind(this._onSelectableClick, this); + this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); + this.$node.on("mouseover", this.selectors.selectable, function() { + that.setCursor($(this)); + }); + this.$node.on("mouseleave", function() { + that._removeCursor(); + }); + _.each(this.datasets, function(dataset) { + dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); + }); + return this; + }, + isOpen: function isOpen() { + return this.$node.hasClass(this.classes.open); + }, + open: function open() { + this.$node.scrollTop(0); + this.$node.addClass(this.classes.open); + }, + close: function close() { + this.$node.attr("aria-expanded", false); + this.$node.removeClass(this.classes.open); + this._removeCursor(); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.attr("dir", dir); + }, + selectableRelativeToCursor: function selectableRelativeToCursor(delta) { + var $selectables, $oldCursor, oldIndex, newIndex; + $oldCursor = this.getActiveSelectable(); + $selectables = this._getSelectables(); + oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; + newIndex = oldIndex + delta; + newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; + newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; + return newIndex === -1 ? null : $selectables.eq(newIndex); + }, + setCursor: function setCursor($selectable) { + this._removeCursor(); + if ($selectable = $selectable && $selectable.first()) { + $selectable.addClass(this.classes.cursor); + this._ensureVisible($selectable); + } + }, + getSelectableData: function getSelectableData($el) { + return $el && $el.length ? Dataset.extractData($el) : null; + }, + getActiveSelectable: function getActiveSelectable() { + var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); + return $selectable.length ? $selectable : null; + }, + getTopSelectable: function getTopSelectable() { + var $selectable = this._getSelectables().first(); + return $selectable.length ? $selectable : null; + }, + update: function update(query) { + var isValidUpdate = query !== this.query; + if (isValidUpdate) { + this.query = query; + _.each(this.datasets, updateDataset); + } + return isValidUpdate; + function updateDataset(dataset) { + dataset.update(query); + } + }, + empty: function empty() { + _.each(this.datasets, clearDataset); + this.query = null; + this.$node.addClass(this.classes.empty); + function clearDataset(dataset) { + dataset.clear(); + } + }, + destroy: function destroy() { + this.$node.off(".tt"); + this.$node = $("
"); + _.each(this.datasets, destroyDataset); + function destroyDataset(dataset) { + dataset.destroy(); + } + } + }); + return Menu; + }(); + var Status = function() { + "use strict"; + function Status(options) { + this.$el = $("", { + role: "status", + "aria-live": "polite" + }).css({ + position: "absolute", + padding: "0", + border: "0", + height: "1px", + width: "1px", + "margin-bottom": "-1px", + "margin-right": "-1px", + overflow: "hidden", + clip: "rect(0 0 0 0)", + "white-space": "nowrap" + }); + options.$input.after(this.$el); + _.each(options.menu.datasets, _.bind(function(dataset) { + if (dataset.onSync) { + dataset.onSync("rendered", _.bind(this.update, this)); + dataset.onSync("cleared", _.bind(this.cleared, this)); + } + }, this)); + } + _.mixin(Status.prototype, { + update: function update(event, suggestions) { + var length = suggestions.length; + var words; + if (length === 1) { + words = { + result: "result", + is: "is" + }; + } else { + words = { + result: "results", + is: "are" + }; + } + this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); + }, + cleared: function() { + this.$el.text(""); + } + }); + return Status; + }(); + var DefaultMenu = function() { + "use strict"; + var s = Menu.prototype; + function DefaultMenu() { + Menu.apply(this, [].slice.call(arguments, 0)); + } + _.mixin(DefaultMenu.prototype, Menu.prototype, { + open: function open() { + !this._allDatasetsEmpty() && this._show(); + return s.open.apply(this, [].slice.call(arguments, 0)); + }, + close: function close() { + this._hide(); + return s.close.apply(this, [].slice.call(arguments, 0)); + }, + _onRendered: function onRendered() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onRendered.apply(this, [].slice.call(arguments, 0)); + }, + _onCleared: function onCleared() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onCleared.apply(this, [].slice.call(arguments, 0)); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); + return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); + }, + _hide: function hide() { + this.$node.hide(); + }, + _show: function show() { + this.$node.css("display", "block"); + } + }); + return DefaultMenu; + }(); + var Typeahead = function() { + "use strict"; + function Typeahead(o, www) { + var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; + o = o || {}; + if (!o.input) { + $.error("missing input"); + } + if (!o.menu) { + $.error("missing menu"); + } + if (!o.eventBus) { + $.error("missing event bus"); + } + www.mixin(this); + this.eventBus = o.eventBus; + this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; + this.input = o.input; + this.menu = o.menu; + this.enabled = true; + this.autoselect = !!o.autoselect; + this.active = false; + this.input.hasFocus() && this.activate(); + this.dir = this.input.getLangDir(); + this._hacks(); + this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); + onFocused = c(this, "activate", "open", "_onFocused"); + onBlurred = c(this, "deactivate", "_onBlurred"); + onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); + onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); + onEscKeyed = c(this, "isActive", "_onEscKeyed"); + onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); + onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); + onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); + onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); + onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); + onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); + this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); + } + _.mixin(Typeahead.prototype, { + _hacks: function hacks() { + var $input, $menu; + $input = this.input.$input || $("
"); + $menu = this.menu.$node || $("
"); + $input.on("blur.tt", function($e) { + var active, isActive, hasActive; + active = document.activeElement; + isActive = $menu.is(active); + hasActive = $menu.has(active).length > 0; + if (_.isMsie() && (isActive || hasActive)) { + $e.preventDefault(); + $e.stopImmediatePropagation(); + _.defer(function() { + $input.focus(); + }); + } + }); + $menu.on("mousedown.tt", function($e) { + $e.preventDefault(); + }); + }, + _onSelectableClicked: function onSelectableClicked(type, $el) { + this.select($el); + }, + _onDatasetCleared: function onDatasetCleared() { + this._updateHint(); + }, + _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { + this._updateHint(); + if (this.autoselect) { + var cursorClass = this.selectors.cursor.substr(1); + this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); + } + this.eventBus.trigger("render", suggestions, async, dataset); + }, + _onAsyncRequested: function onAsyncRequested(type, dataset, query) { + this.eventBus.trigger("asyncrequest", query, dataset); + }, + _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { + this.eventBus.trigger("asynccancel", query, dataset); + }, + _onAsyncReceived: function onAsyncReceived(type, dataset, query) { + this.eventBus.trigger("asyncreceive", query, dataset); + }, + _onFocused: function onFocused() { + this._minLengthMet() && this.menu.update(this.input.getQuery()); + }, + _onBlurred: function onBlurred() { + if (this.input.hasQueryChangedSinceLastFocus()) { + this.eventBus.trigger("change", this.input.getQuery()); + } + }, + _onEnterKeyed: function onEnterKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + if (this.select($selectable)) { + $e.preventDefault(); + $e.stopPropagation(); + } + } else if (this.autoselect) { + if (this.select(this.menu.getTopSelectable())) { + $e.preventDefault(); + $e.stopPropagation(); + } + } + }, + _onTabKeyed: function onTabKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + this.select($selectable) && $e.preventDefault(); + } else if ($selectable = this.menu.getTopSelectable()) { + this.autocomplete($selectable) && $e.preventDefault(); + } + }, + _onEscKeyed: function onEscKeyed() { + this.close(); + }, + _onUpKeyed: function onUpKeyed() { + this.moveCursor(-1); + }, + _onDownKeyed: function onDownKeyed() { + this.moveCursor(+1); + }, + _onLeftKeyed: function onLeftKeyed() { + if (this.dir === "rtl" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onRightKeyed: function onRightKeyed() { + if (this.dir === "ltr" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onQueryChanged: function onQueryChanged(e, query) { + this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); + }, + _onWhitespaceChanged: function onWhitespaceChanged() { + this._updateHint(); + }, + _onLangDirChanged: function onLangDirChanged(e, dir) { + if (this.dir !== dir) { + this.dir = dir; + this.menu.setLanguageDirection(dir); + } + }, + _openIfActive: function openIfActive() { + this.isActive() && this.open(); + }, + _minLengthMet: function minLengthMet(query) { + query = _.isString(query) ? query : this.input.getQuery() || ""; + return query.length >= this.minLength; + }, + _updateHint: function updateHint() { + var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; + $selectable = this.menu.getTopSelectable(); + data = this.menu.getSelectableData($selectable); + val = this.input.getInputValue(); + if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { + query = Input.normalizeQuery(val); + escapedQuery = _.escapeRegExChars(query); + frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); + match = frontMatchRegEx.exec(data.val); + match && this.input.setHint(val + match[1]); + } else { + this.input.clearHint(); + } + }, + isEnabled: function isEnabled() { + return this.enabled; + }, + enable: function enable() { + this.enabled = true; + }, + disable: function disable() { + this.enabled = false; + }, + isActive: function isActive() { + return this.active; + }, + activate: function activate() { + if (this.isActive()) { + return true; + } else if (!this.isEnabled() || this.eventBus.before("active")) { + return false; + } else { + this.active = true; + this.eventBus.trigger("active"); + return true; + } + }, + deactivate: function deactivate() { + if (!this.isActive()) { + return true; + } else if (this.eventBus.before("idle")) { + return false; + } else { + this.active = false; + this.close(); + this.eventBus.trigger("idle"); + return true; + } + }, + isOpen: function isOpen() { + return this.menu.isOpen(); + }, + open: function open() { + if (!this.isOpen() && !this.eventBus.before("open")) { + this.menu.open(); + this._updateHint(); + this.eventBus.trigger("open"); + } + return this.isOpen(); + }, + close: function close() { + if (this.isOpen() && !this.eventBus.before("close")) { + this.menu.close(); + this.input.clearHint(); + this.input.resetInputValue(); + this.eventBus.trigger("close"); + } + return !this.isOpen(); + }, + setVal: function setVal(val) { + this.input.setQuery(_.toStr(val)); + }, + getVal: function getVal() { + return this.input.getQuery(); + }, + select: function select($selectable) { + var data = this.menu.getSelectableData($selectable); + if (data && !this.eventBus.before("select", data.obj, data.dataset)) { + this.input.setQuery(data.val, true); + this.eventBus.trigger("select", data.obj, data.dataset); + this.close(); + return true; + } + return false; + }, + autocomplete: function autocomplete($selectable) { + var query, data, isValid; + query = this.input.getQuery(); + data = this.menu.getSelectableData($selectable); + isValid = data && query !== data.val; + if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { + this.input.setQuery(data.val); + this.eventBus.trigger("autocomplete", data.obj, data.dataset); + return true; + } + return false; + }, + moveCursor: function moveCursor(delta) { + var query, $candidate, data, suggestion, datasetName, cancelMove, id; + query = this.input.getQuery(); + $candidate = this.menu.selectableRelativeToCursor(delta); + data = this.menu.getSelectableData($candidate); + suggestion = data ? data.obj : null; + datasetName = data ? data.dataset : null; + id = $candidate ? $candidate.attr("id") : null; + this.input.trigger("cursorchange", id); + cancelMove = this._minLengthMet() && this.menu.update(query); + if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { + this.menu.setCursor($candidate); + if (data) { + this.input.setInputValue(data.val); + } else { + this.input.resetInputValue(); + this._updateHint(); + } + this.eventBus.trigger("cursorchange", suggestion, datasetName); + return true; + } + return false; + }, + destroy: function destroy() { + this.input.destroy(); + this.menu.destroy(); + } + }); + return Typeahead; + function c(ctx) { + var methods = [].slice.call(arguments, 1); + return function() { + var args = [].slice.call(arguments); + _.each(methods, function(method) { + return ctx[method].apply(ctx, args); + }); + }; + } + }(); + (function() { + "use strict"; + var old, keys, methods; + old = $.fn.typeahead; + keys = { + www: "tt-www", + attrs: "tt-attrs", + typeahead: "tt-typeahead" + }; + methods = { + initialize: function initialize(o, datasets) { + var www; + datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); + o = o || {}; + www = WWW(o.classNames); + return this.each(attach); + function attach() { + var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; + _.each(datasets, function(d) { + d.highlight = !!o.highlight; + }); + $input = $(this); + $wrapper = $(www.html.wrapper); + $hint = $elOrNull(o.hint); + $menu = $elOrNull(o.menu); + defaultHint = o.hint !== false && !$hint; + defaultMenu = o.menu !== false && !$menu; + defaultHint && ($hint = buildHintFromInput($input, www)); + defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); + $hint && $hint.val(""); + $input = prepInput($input, www); + if (defaultHint || defaultMenu) { + $wrapper.css(www.css.wrapper); + $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); + $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); + } + MenuConstructor = defaultMenu ? DefaultMenu : Menu; + eventBus = new EventBus({ + el: $input + }); + input = new Input({ + hint: $hint, + input: $input + }, www); + menu = new MenuConstructor({ + node: $menu, + datasets: datasets + }, www); + status = new Status({ + $input: $input, + menu: menu + }); + typeahead = new Typeahead({ + input: input, + menu: menu, + eventBus: eventBus, + minLength: o.minLength, + autoselect: o.autoselect + }, www); + $input.data(keys.www, www); + $input.data(keys.typeahead, typeahead); + } + }, + isEnabled: function isEnabled() { + var enabled; + ttEach(this.first(), function(t) { + enabled = t.isEnabled(); + }); + return enabled; + }, + enable: function enable() { + ttEach(this, function(t) { + t.enable(); + }); + return this; + }, + disable: function disable() { + ttEach(this, function(t) { + t.disable(); + }); + return this; + }, + isActive: function isActive() { + var active; + ttEach(this.first(), function(t) { + active = t.isActive(); + }); + return active; + }, + activate: function activate() { + ttEach(this, function(t) { + t.activate(); + }); + return this; + }, + deactivate: function deactivate() { + ttEach(this, function(t) { + t.deactivate(); + }); + return this; + }, + isOpen: function isOpen() { + var open; + ttEach(this.first(), function(t) { + open = t.isOpen(); + }); + return open; + }, + open: function open() { + ttEach(this, function(t) { + t.open(); + }); + return this; + }, + close: function close() { + ttEach(this, function(t) { + t.close(); + }); + return this; + }, + select: function select(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.select($el); + }); + return success; + }, + autocomplete: function autocomplete(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.autocomplete($el); + }); + return success; + }, + moveCursor: function moveCursoe(delta) { + var success = false; + ttEach(this.first(), function(t) { + success = t.moveCursor(delta); + }); + return success; + }, + val: function val(newVal) { + var query; + if (!arguments.length) { + ttEach(this.first(), function(t) { + query = t.getVal(); + }); + return query; + } else { + ttEach(this, function(t) { + t.setVal(_.toStr(newVal)); + }); + return this; + } + }, + destroy: function destroy() { + ttEach(this, function(typeahead, $input) { + revert($input); + typeahead.destroy(); + }); + return this; + } + }; + $.fn.typeahead = function(method) { + if (methods[method]) { + return methods[method].apply(this, [].slice.call(arguments, 1)); + } else { + return methods.initialize.apply(this, arguments); + } + }; + $.fn.typeahead.noConflict = function noConflict() { + $.fn.typeahead = old; + return this; + }; + function ttEach($els, fn) { + $els.each(function() { + var $input = $(this), typeahead; + (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); + }); + } + function buildHintFromInput($input, www) { + return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ + readonly: true, + required: false + }).removeAttr("id name placeholder").removeClass("required").attr({ + spellcheck: "false", + tabindex: -1 + }); + } + function prepInput($input, www) { + $input.data(keys.attrs, { + dir: $input.attr("dir"), + autocomplete: $input.attr("autocomplete"), + spellcheck: $input.attr("spellcheck"), + style: $input.attr("style") + }); + $input.addClass(www.classes.input).attr({ + spellcheck: false + }); + try { + !$input.attr("dir") && $input.attr("dir", "auto"); + } catch (e) {} + return $input; + } + function getBackgroundStyles($el) { + return { + backgroundAttachment: $el.css("background-attachment"), + backgroundClip: $el.css("background-clip"), + backgroundColor: $el.css("background-color"), + backgroundImage: $el.css("background-image"), + backgroundOrigin: $el.css("background-origin"), + backgroundPosition: $el.css("background-position"), + backgroundRepeat: $el.css("background-repeat"), + backgroundSize: $el.css("background-size") + }; + } + function revert($input) { + var www, $wrapper; + www = $input.data(keys.www); + $wrapper = $input.parent().filter(www.selectors.wrapper); + _.each($input.data(keys.attrs), function(val, key) { + _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); + }); + $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); + if ($wrapper.length) { + $input.detach().insertAfter($wrapper); + $wrapper.remove(); + } + } + function $elOrNull(obj) { + var isValid, $el; + isValid = _.isJQuery(obj) || _.isElement(obj); + $el = isValid ? $(obj).first() : []; + return $el.length ? $el : null; + } + })(); +}); \ No newline at end of file diff --git a/docs/search.json b/docs/search.json new file mode 100644 index 00000000..0ae2f538 --- /dev/null +++ b/docs/search.json @@ -0,0 +1 @@ +{"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV4viewSo6UIViewCSgvp":{"name":"view","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV11isAppearingSbvp":{"name":"isAppearing","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV12isPresentingSbvp":{"name":"isPresenting","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV20isInTabbarControllerSbvp":{"name":"isInTabbarController","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV20isInNavbarControllerSbvp":{"name":"isInNavbarController","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV9isMatchedSbvp":{"name":"isMatched","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV21isAncestorViewMatchedSbvp":{"name":"isAncestorViewMatched","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV11matchedViewSo6UIViewCSgvp":{"name":"matchedView","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV19matchedAncestorViewSo6UIViewC_AFtSgvp":{"name":"matchedAncestorView","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV18fromViewControllerSo06UIViewF0Cvp":{"name":"fromViewController","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV16toViewControllerSo06UIViewF0Cvp":{"name":"toViewController","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV21currentViewControllerSo06UIViewF0Cvp":{"name":"currentViewController","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroConditionalContext.html#/s:4Hero0A18ConditionalContextV19otherViewControllerSo06UIViewF0Cvp":{"name":"otherViewController","abstract":"

Undocumented

","parent_name":"HeroConditionalContext"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV05beginC0SayAA0A8ModifierCGSgvp":{"name":"beginState","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV20conditionalModifiersSaySbAA0A18ConditionalContextVc_SayAA0A8ModifierCGtGSgvp":{"name":"conditionalModifiers","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV8positionSo7CGPointVSgvp":{"name":"position","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV4sizeSo6CGSizeVSgvp":{"name":"size","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV9transformSo13CATransform3DVSgvp":{"name":"transform","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV7opacitySfSgvp":{"name":"opacity","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV12cornerRadius12CoreGraphics7CGFloatVSgvp":{"name":"cornerRadius","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV15backgroundColorSo10CGColorRefaSgvp":{"name":"backgroundColor","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV9zPosition12CoreGraphics7CGFloatVSgvp":{"name":"zPosition","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV12contentsRectSo6CGRectVSgvp":{"name":"contentsRect","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV13contentsScale12CoreGraphics7CGFloatVSgvp":{"name":"contentsScale","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV11borderWidth12CoreGraphics7CGFloatVSgvp":{"name":"borderWidth","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV11borderColorSo10CGColorRefaSgvp":{"name":"borderColor","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV11shadowColorSo10CGColorRefaSgvp":{"name":"shadowColor","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV13shadowOpacitySfSgvp":{"name":"shadowOpacity","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV12shadowOffsetSo6CGSizeVSgvp":{"name":"shadowOffset","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV12shadowRadius12CoreGraphics7CGFloatVSgvp":{"name":"shadowRadius","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV10shadowPathSo9CGPathRefaSgvp":{"name":"shadowPath","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV13masksToBoundsSbSgvp":{"name":"masksToBounds","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV13displayShadowSbvp":{"name":"displayShadow","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV7overlaySo10CGColorRefa5color_12CoreGraphics7CGFloatV7opacitytSgvp":{"name":"overlay","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV6spring12CoreGraphics7CGFloatV_AGtSgvp":{"name":"spring","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV5delaySdvp":{"name":"delay","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV8durationSdSgvp":{"name":"duration","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV14timingFunctionSo013CAMediaTimingE0CSgvp":{"name":"timingFunction","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV3arc12CoreGraphics7CGFloatVSgvp":{"name":"arc","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV6sourceSSSgvp":{"name":"source","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV7cascadeSd_AA16CascadeDirectionOSbtSgvp":{"name":"cascade","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV22ignoreSubviewModifiersSbSgvp":{"name":"ignoreSubviewModifiers","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV15coordinateSpaceAA0a10CoordinateE0OSgvp":{"name":"coordinateSpace","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV23useScaleBasedSizeChangeSbSgvp":{"name":"useScaleBasedSizeChange","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV12snapshotTypeAA0a8SnapshotE0OSgvp":{"name":"snapshotType","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV7nonFadeSbvp":{"name":"nonFade","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV12forceAnimateSbvp":{"name":"forceAnimate","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV6customSDySSypGSgvp":{"name":"custom","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV6appendyyAA0A8ModifierCF":{"name":"append(_:)","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateV6append10contentsOfySayAA0A8ModifierCG_tF":{"name":"append(contentsOf:)","abstract":"

Undocumented

","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:4Hero0A11TargetStateVyypSgSScip":{"name":"subscript(_:)","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html#/s:s25ExpressibleByArrayLiteralP05arrayD0x0cD7ElementQzd_tcfc":{"name":"init(arrayLiteral:)","parent_name":"HeroTargetState"},"Structs/HeroTargetState.html":{"name":"HeroTargetState","abstract":"

Undocumented

"},"Structs/HeroConditionalContext.html":{"name":"HeroConditionalContext","abstract":"

Undocumented

"},"Protocols/HeroTransitionDelegate.html#/s:4Hero0A18TransitionDelegateP04heroB0_9didUpdateyAA0aB0C_AA0aB5StateOtF":{"name":"heroTransition(_:didUpdate:)","abstract":"

Undocumented

","parent_name":"HeroTransitionDelegate"},"Protocols/HeroTransitionDelegate.html#/s:4Hero0A18TransitionDelegateP04heroB0_9didUpdateyAA0aB0C_SdtF":{"name":"heroTransition(_:didUpdate:)","abstract":"

Undocumented

","parent_name":"HeroTransitionDelegate"},"Protocols/HeroStringConvertible.html#/s:4Hero0A17StringConvertibleP4from4nodexSgAA8ExprNodeC_tFZ":{"name":"from(node:)","abstract":"

Undocumented

","parent_name":"HeroStringConvertible"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroWillStartAnimatingFromViewController:":{"name":"heroWillStartAnimatingFrom(viewController:)","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroDidEndAnimatingFromViewController:":{"name":"heroDidEndAnimatingFrom(viewController:)","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroDidCancelAnimatingFromViewController:":{"name":"heroDidCancelAnimatingFrom(viewController:)","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroWillStartTransition":{"name":"heroWillStartTransition()","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroDidEndTransition":{"name":"heroDidEndTransition()","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroDidCancelTransition":{"name":"heroDidCancelTransition()","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroWillStartAnimatingToViewController:":{"name":"heroWillStartAnimatingTo(viewController:)","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroDidEndAnimatingToViewController:":{"name":"heroDidEndAnimatingTo(viewController:)","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroViewControllerDelegate.html#/c:@M@Hero@objc(pl)HeroViewControllerDelegate(im)heroDidCancelAnimatingToViewController:":{"name":"heroDidCancelAnimatingTo(viewController:)","abstract":"

Undocumented

","parent_name":"HeroViewControllerDelegate"},"Protocols/HeroProgressUpdateObserver.html#/s:4Hero0A22ProgressUpdateObserverP07heroDidcB08progressySd_tF":{"name":"heroDidUpdateProgress(progress:)","abstract":"

Undocumented

","parent_name":"HeroProgressUpdateObserver"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP4heroAA0A10TransitionCSgvp":{"name":"hero","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP10canAnimate4view9appearingSbSo6UIViewC_SbtF":{"name":"canAnimate(view:appearing:)","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP7animate9fromViews02toE0SdSaySo6UIViewCG_AItF":{"name":"animate(fromViews:toViews:)","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP5cleanyyF":{"name":"clean()","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP6seekTo10timePassedySd_tF":{"name":"seekTo(timePassed:)","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP6resume10timePassed7reverseS2d_SbtF":{"name":"resume(timePassed:reverse:)","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP5apply5state2toyAA0A11TargetStateV_So6UIViewCtF":{"name":"apply(state:to:)","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroAnimator.html#/s:4Hero0A8AnimatorP12changeTarget5state13isDestination2toyAA0aD5StateV_SbSo6UIViewCtF":{"name":"changeTarget(state:isDestination:to:)","abstract":"

Undocumented

","parent_name":"HeroAnimator"},"Protocols/HeroPreprocessor.html#/s:4Hero0A12PreprocessorP4heroAA0A10TransitionCSgvp":{"name":"hero","abstract":"

Undocumented

","parent_name":"HeroPreprocessor"},"Protocols/HeroPreprocessor.html#/s:4Hero0A12PreprocessorP7process9fromViews02toE0ySaySo6UIViewCG_AItF":{"name":"process(fromViews:toViews:)","abstract":"

Undocumented

","parent_name":"HeroPreprocessor"},"Protocols/HeroCustomSnapshotView.html#/s:4Hero0A18CustomSnapshotViewP04heroC0So6UIViewCSgvp":{"name":"heroSnapshot","abstract":"

Undocumented

","parent_name":"HeroCustomSnapshotView"},"Protocols/HeroCompatible.html#/s:4Hero0A10CompatibleP0B4TypeQa":{"name":"CompatibleType","abstract":"

Undocumented

","parent_name":"HeroCompatible"},"Protocols/HeroCompatible.html#/s:4Hero0A10CompatibleP4heroAA0A9ExtensionCy0B4TypeQzGvp":{"name":"hero","abstract":"

Undocumented

","parent_name":"HeroCompatible"},"Protocols/HeroCompatible.html":{"name":"HeroCompatible","abstract":"

Undocumented

"},"Protocols/HeroCustomSnapshotView.html":{"name":"HeroCustomSnapshotView","abstract":"

Allows a view to create their own custom snapshot when using Optimized snapshot

"},"Protocols/HeroPreprocessor.html":{"name":"HeroPreprocessor","abstract":"

Undocumented

"},"Protocols/HeroAnimator.html":{"name":"HeroAnimator","abstract":"

Undocumented

"},"Protocols/HeroProgressUpdateObserver.html":{"name":"HeroProgressUpdateObserver","abstract":"

Undocumented

"},"Protocols/HeroViewControllerDelegate.html":{"name":"HeroViewControllerDelegate","abstract":"

Undocumented

"},"Protocols/HeroStringConvertible.html":{"name":"HeroStringConvertible","abstract":"

Undocumented

"},"Protocols/HeroTransitionDelegate.html":{"name":"HeroTransitionDelegate","abstract":"

Undocumented

"},"Functions.html#/s:4Hero2eeoiySbAA8ExprNodeC_ADtF":{"name":"==(_:_:)","abstract":"

Undocumented

"},"Extensions/HeroDebugView.html#/gestureRecognizerShouldBegin(_:)":{"name":"gestureRecognizerShouldBegin(_:)","parent_name":"HeroDebugView"},"Extensions/UINavigationController.html#/Operation":{"name":"Operation","parent_name":"UINavigationController"},"Extensions/String.html#/s:SS4HeroE5match5regexSS_SnySiGtSgSS_tF":{"name":"match(regex:)","abstract":"

Undocumented

","parent_name":"String"},"Extensions/UITabBarController.html#/s:So18UITabBarControllerC4HeroE07heroTabB13AnimationTypeAC0d7DefaultgH0Ovp":{"name":"heroTabBarAnimationType","abstract":"

Undocumented

","parent_name":"UITabBarController"},"Extensions/UITabBarController.html#/c:@CM@Hero@@objc(cs)UITabBarController(py)heroTabBarAnimationTypeString":{"name":"heroTabBarAnimationTypeString","abstract":"

Undocumented

","parent_name":"UITabBarController"},"Extensions/UINavigationController.html#/s:So22UINavigationControllerC4HeroE27heroNavigationAnimationTypeAC0c7DefaultfG0Ovp":{"name":"heroNavigationAnimationType","abstract":"

Undocumented

","parent_name":"UINavigationController"},"Extensions/UINavigationController.html#/c:@CM@Hero@@objc(cs)UINavigationController(py)heroNavigationAnimationTypeString":{"name":"heroNavigationAnimationTypeString","abstract":"

Undocumented

","parent_name":"UINavigationController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE22heroModalAnimationTypeAC0c7DefaultfG0Ovp":{"name":"heroModalAnimationType","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/c:@CM@Hero@@objc(cs)UIViewController(py)heroModalAnimationTypeString":{"name":"heroModalAnimationTypeString","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/c:@CM@Hero@@objc(cs)UIViewController(py)isHeroEnabled":{"name":"isHeroEnabled","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/c:@CM@Hero@@objc(cs)UIViewController(im)ht_dismiss:":{"name":"ht_dismiss(_:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE015heroReplaceViewB04withyAB_tF":{"name":"heroReplaceViewController(with:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/c:@CM@Hero@@objc(cs)UIViewController(im)hero_dismissViewController":{"name":"hero_dismissViewController()","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/c:@CM@Hero@@objc(cs)UIViewController(im)hero_unwindToRootViewController":{"name":"hero_unwindToRootViewController()","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE017hero_unwindToViewB0yyABF":{"name":"hero_unwindToViewController(_:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE017hero_unwindToViewB012withSelectory10ObjectiveC0I0V_tF":{"name":"hero_unwindToViewController(withSelector:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE017hero_unwindToViewB09withClassyyXlXp_tF":{"name":"hero_unwindToViewController(withClass:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE017hero_unwindToViewB014withMatchBlockySbABXE_tF":{"name":"hero_unwindToViewController(withMatchBlock:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC4HeroE016hero_replaceViewB04withyAB_tF":{"name":"hero_replaceViewController(with:)","abstract":"

Undocumented

","parent_name":"UIViewController"},"Extensions/UIView.html#/c:@CM@Hero@@objc(cs)UIView(py)heroID":{"name":"heroID","abstract":"

Undocumented

","parent_name":"UIView"},"Extensions/UIView.html#/c:@CM@Hero@@objc(cs)UIView(py)isHeroEnabled":{"name":"isHeroEnabled","abstract":"

Undocumented

","parent_name":"UIView"},"Extensions/UIView.html#/c:@CM@Hero@@objc(cs)UIView(py)isHeroEnabledForSubviews":{"name":"isHeroEnabledForSubviews","abstract":"

Undocumented

","parent_name":"UIView"},"Extensions/UIView.html#/s:So6UIViewC4HeroE13heroModifiersSayAC0B8ModifierCGSgvp":{"name":"heroModifiers","abstract":"

Undocumented

","parent_name":"UIView"},"Extensions/UIView.html#/c:@CM@Hero@@objc(cs)UIView(py)heroModifierString":{"name":"heroModifierString","abstract":"

Undocumented

","parent_name":"UIView"},"Extensions/CATransform3D.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"CATransform3D"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE6linearABvpZ":{"name":"linear","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE6easeInABvpZ":{"name":"easeIn","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE7easeOutABvpZ":{"name":"easeOut","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE9easeInOutABvpZ":{"name":"easeInOut","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE8standardABvpZ":{"name":"standard","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE12decelerationABvpZ":{"name":"deceleration","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE12accelerationABvpZ":{"name":"acceleration","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE5sharpABvpZ":{"name":"sharp","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE11easeOutBackABvpZ":{"name":"easeOutBack","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/CAMediaTimingFunction.html#/s:So21CAMediaTimingFunctionC4HeroE4from4nameABSgSS_tFZ":{"name":"from(name:)","abstract":"

Undocumented

","parent_name":"CAMediaTimingFunction"},"Extensions/HeroDebugView.html#/c:@CM@Hero@objc(cs)HeroDebugView(im)gestureRecognizerShouldBegin:":{"name":"gestureRecognizerShouldBegin(_:)","abstract":"

Undocumented

","parent_name":"HeroDebugView"},"Extensions/HeroDebugView.html":{"name":"HeroDebugView"},"Extensions/CAMediaTimingFunction.html":{"name":"CAMediaTimingFunction"},"Extensions/CATransform3D.html":{"name":"CATransform3D"},"Extensions/UIView.html":{"name":"UIView"},"Extensions/UIViewController.html":{"name":"UIViewController"},"Extensions/UINavigationController.html":{"name":"UINavigationController"},"Extensions/UITabBarController.html":{"name":"UITabBarController"},"Extensions/String.html":{"name":"String"},"Enums/HeroTransitionState.html#/s:4Hero0A15TransitionStateO8possibleyA2CmF":{"name":"possible","abstract":"

Undocumented

","parent_name":"HeroTransitionState"},"Enums/HeroTransitionState.html#/s:4Hero0A15TransitionStateO8notifiedyA2CmF":{"name":"notified","abstract":"

Undocumented

","parent_name":"HeroTransitionState"},"Enums/HeroTransitionState.html#/s:4Hero0A15TransitionStateO8startingyA2CmF":{"name":"starting","abstract":"

Undocumented

","parent_name":"HeroTransitionState"},"Enums/HeroTransitionState.html#/s:4Hero0A15TransitionStateO9animatingyA2CmF":{"name":"animating","abstract":"

Undocumented

","parent_name":"HeroTransitionState"},"Enums/HeroTransitionState.html#/s:4Hero0A15TransitionStateO10completingyA2CmF":{"name":"completing","abstract":"

Undocumented

","parent_name":"HeroTransitionState"},"Enums/HeroDefaultAnimationType/Strategy.html#/s:4Hero0A20DefaultAnimationTypeO8StrategyO16forceLeftToRightyA2EmF":{"name":"forceLeftToRight","abstract":"

Undocumented

","parent_name":"Strategy"},"Enums/HeroDefaultAnimationType/Strategy.html#/s:4Hero0A20DefaultAnimationTypeO8StrategyO16forceRightToLeftyA2EmF":{"name":"forceRightToLeft","abstract":"

Undocumented

","parent_name":"Strategy"},"Enums/HeroDefaultAnimationType/Strategy.html#/s:4Hero0A20DefaultAnimationTypeO8StrategyO13userInterfaceyA2EmF":{"name":"userInterface","abstract":"

Undocumented

","parent_name":"Strategy"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO4leftyA2EmF":{"name":"left","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO5rightyA2EmF":{"name":"right","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO2upyA2EmF":{"name":"up","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO4downyA2EmF":{"name":"down","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO4from4nodeAESgAA8ExprNodeC_tFZ":{"name":"from(node:)","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO7leadingAEvpZ":{"name":"leading","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html#/s:4Hero0A20DefaultAnimationTypeO9DirectionO8trailingAEvpZ":{"name":"trailing","abstract":"

Undocumented

","parent_name":"Direction"},"Enums/HeroDefaultAnimationType/Direction.html":{"name":"Direction","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType/Strategy.html":{"name":"Strategy","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4autoyA2CmF":{"name":"auto","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4pushyA2C9DirectionO_tcACmF":{"name":"push(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4pullyA2C9DirectionO_tcACmF":{"name":"pull(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO5coveryA2C9DirectionO_tcACmF":{"name":"cover(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO7uncoveryA2C9DirectionO_tcACmF":{"name":"uncover(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO5slideyA2C9DirectionO_tcACmF":{"name":"slide(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO9zoomSlideyA2C9DirectionO_tcACmF":{"name":"zoomSlide(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO6pageInyA2C9DirectionO_tcACmF":{"name":"pageIn(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO7pageOutyA2C9DirectionO_tcACmF":{"name":"pageOut(direction:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4fadeyA2CmF":{"name":"fade","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4zoomyA2CmF":{"name":"zoom","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO7zoomOutyA2CmF":{"name":"zoomOut","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO8selectByyA2C_ACtcACmF":{"name":"selectBy(presenting:dismissing:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO11autoReverse10presentingA2C_tFZ":{"name":"autoReverse(presenting:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4noneyA2CmF":{"name":"none","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO5labelSSSgvp":{"name":"label","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/HeroDefaultAnimationType.html#/s:4Hero0A20DefaultAnimationTypeO4from4nodeACSgAA8ExprNodeC_tFZ":{"name":"from(node:)","abstract":"

Undocumented

","parent_name":"HeroDefaultAnimationType"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO11topToBottomyA2CmF":{"name":"topToBottom","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO11bottomToTopyA2CmF":{"name":"bottomToTop","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO11leftToRightyA2CmF":{"name":"leftToRight","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO11rightToLeftyA2CmF":{"name":"rightToLeft","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO6radialyACSo7CGPointV_tcACmF":{"name":"radial(center:)","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO13inverseRadialyACSo7CGPointV_tcACmF":{"name":"inverseRadial(center:)","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO17leadingToTrailingACvpZ":{"name":"leadingToTrailing","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/CascadeDirection.html#/s:4Hero16CascadeDirectionO17trailingToLeadingACvpZ":{"name":"trailingToLeading","abstract":"

Undocumented

","parent_name":"CascadeDirection"},"Enums/ParseError.html#/s:4Hero10ParseErrorO13unexpectTokenyA2CmF":{"name":"unexpectToken","abstract":"

Undocumented

","parent_name":"ParseError"},"Enums/ParseError.html#/s:4Hero10ParseErrorO17undefinedOperatoryACSScACmF":{"name":"undefinedOperator(_:)","abstract":"

Undocumented

","parent_name":"ParseError"},"Enums/ParseError.html#/s:4Hero10ParseErrorO15expectCharacteryACSJcACmF":{"name":"expectCharacter(_:)","abstract":"

Undocumented

","parent_name":"ParseError"},"Enums/ParseError.html#/s:4Hero10ParseErrorO16expectExpressionyA2CmF":{"name":"expectExpression","abstract":"

Undocumented

","parent_name":"ParseError"},"Enums/ParseError.html#/s:4Hero10ParseErrorO18expectArgumentListyA2CmF":{"name":"expectArgumentList","abstract":"

Undocumented

","parent_name":"ParseError"},"Enums/ParseError.html#/s:4Hero10ParseErrorO18expectFunctionNameyA2CmF":{"name":"expectFunctionName","abstract":"

Undocumented

","parent_name":"ParseError"},"Enums/Token.html#/s:4Hero5TokenO10identifieryACSS_SnySiGtcACmF":{"name":"identifier(_:_:)","abstract":"

Undocumented

","parent_name":"Token"},"Enums/Token.html#/s:4Hero5TokenO6numberyACSf_SnySiGtcACmF":{"name":"number(_:_:)","abstract":"

Undocumented

","parent_name":"Token"},"Enums/Token.html#/s:4Hero5TokenO10parensOpenyACSnySiGcACmF":{"name":"parensOpen(_:)","abstract":"

Undocumented

","parent_name":"Token"},"Enums/Token.html#/s:4Hero5TokenO11parensCloseyACSnySiGcACmF":{"name":"parensClose(_:)","abstract":"

Undocumented

","parent_name":"Token"},"Enums/Token.html#/s:4Hero5TokenO5commayACSnySiGcACmF":{"name":"comma(_:)","abstract":"

Undocumented

","parent_name":"Token"},"Enums/Token.html#/s:4Hero5TokenO5otheryACSS_SnySiGtcACmF":{"name":"other(_:_:)","abstract":"

Undocumented

","parent_name":"Token"},"Enums/HeroViewOrderingStrategy.html#/s:4Hero0A20ViewOrderingStrategyO4autoyA2CmF":{"name":"auto","abstract":"

Undocumented

","parent_name":"HeroViewOrderingStrategy"},"Enums/HeroViewOrderingStrategy.html#/s:4Hero0A20ViewOrderingStrategyO06sourceB5OnTopyA2CmF":{"name":"sourceViewOnTop","abstract":"

Undocumented

","parent_name":"HeroViewOrderingStrategy"},"Enums/HeroViewOrderingStrategy.html#/s:4Hero0A20ViewOrderingStrategyO011destinationB5OnTopyA2CmF":{"name":"destinationViewOnTop","abstract":"

Undocumented

","parent_name":"HeroViewOrderingStrategy"},"Enums/HeroCoordinateSpace.html#/s:4Hero0A15CoordinateSpaceO6globalyA2CmF":{"name":"global","abstract":"

Undocumented

","parent_name":"HeroCoordinateSpace"},"Enums/HeroCoordinateSpace.html#/s:4Hero0A15CoordinateSpaceO5localyA2CmF":{"name":"local","abstract":"

Undocumented

","parent_name":"HeroCoordinateSpace"},"Enums/HeroSnapshotType.html#/s:4Hero0A12SnapshotTypeO9optimizedyA2CmF":{"name":"optimized","abstract":"

Will optimize for different type of views","parent_name":"HeroSnapshotType"},"Enums/HeroSnapshotType.html#/s:4Hero0A12SnapshotTypeO6normalyA2CmF":{"name":"normal","abstract":"

snapshotView(afterScreenUpdates:)

","parent_name":"HeroSnapshotType"},"Enums/HeroSnapshotType.html#/s:4Hero0A12SnapshotTypeO11layerRenderyA2CmF":{"name":"layerRender","abstract":"

layer.render(in: currentContext)

","parent_name":"HeroSnapshotType"},"Enums/HeroSnapshotType.html#/s:4Hero0A12SnapshotTypeO02noB0yA2CmF":{"name":"noSnapshot","abstract":"

will not create snapshot. animate the view directly.","parent_name":"HeroSnapshotType"},"Enums/HeroSnapshotType.html":{"name":"HeroSnapshotType","abstract":"

Undocumented

"},"Enums/HeroCoordinateSpace.html":{"name":"HeroCoordinateSpace","abstract":"

Undocumented

"},"Enums/HeroViewOrderingStrategy.html":{"name":"HeroViewOrderingStrategy","abstract":"

Undocumented

"},"Enums/Token.html":{"name":"Token","abstract":"

Undocumented

"},"Enums/ParseError.html":{"name":"ParseError","abstract":"

Undocumented

"},"Enums/CascadeDirection.html":{"name":"CascadeDirection","abstract":"

Undocumented

"},"Enums/HeroDefaultAnimationType.html":{"name":"HeroDefaultAnimationType","abstract":"

Undocumented

"},"Enums/HeroTransitionState.html":{"name":"HeroTransitionState","abstract":"

Undocumented

"},"Classes/HeroDebugPlugin.html#/showOnTop":{"name":"showOnTop","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/animate(fromViews:toViews:)":{"name":"animate(fromViews:toViews:)","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/resume(timePassed:reverse:)":{"name":"resume(timePassed:reverse:)","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/clean()":{"name":"clean()","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/onDone()":{"name":"onDone()","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/onProcessSliderChanged(progress:)":{"name":"onProcessSliderChanged(progress:)","parent_name":"HeroDebugPlugin"},"Classes/Hero.html#/s:4HeroAAC6sharedAA0A10TransitionCvpZ":{"name":"shared","abstract":"

Shared singleton object for controlling the transition

","parent_name":"Hero"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC8delegateAA0aB8Delegate_pSgvp":{"name":"delegate","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC16defaultAnimationAA0a7DefaultD4TypeOvp":{"name":"defaultAnimation","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC14containerColorSo7UIColorCvp":{"name":"containerColor","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC24isUserInteractionEnabledSbvp":{"name":"isUserInteractionEnabled","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC20viewOrderingStrategyAA0a4ViewdE0Ovp":{"name":"viewOrderingStrategy","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC33defaultAnimationDirectionStrategyAA0a7DefaultD4TypeO0F0Ovp":{"name":"defaultAnimationDirectionStrategy","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC5stateAA0aB5StateOvp":{"name":"state","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC15isTransitioningSbvp":{"name":"isTransitioning","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC12isPresentingSbvp":{"name":"isPresenting","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC13transitioningSbvp":{"name":"transitioning","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC10presentingSbvp":{"name":"presenting","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC9containerSo6UIViewCSgvp":{"name":"container","abstract":"

container we created to hold all animating views, will be a subview of the","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC16toViewControllerSo06UIViewE0CSgvp":{"name":"toViewController","abstract":"

destination view controller

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC18fromViewControllerSo06UIViewE0CSgvp":{"name":"fromViewController","abstract":"

source view controller

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC7contextAA0A7ContextCSgvp":{"name":"context","abstract":"

context object holding transition informations

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC11interactiveSbvp":{"name":"interactive","abstract":"

whether or not we are handling transition interactively

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC13totalDurationSdvp":{"name":"totalDuration","abstract":"

max duration needed by the animators

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC8progressSdvp":{"name":"progress","abstract":"

progress of the current transition. 0 if no transition is happening

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@M@Hero@objc(cs)HeroTransition(im)init":{"name":"init()","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC24observeForProgressUpdate8observeryAA0aeF8Observer_p_tF":{"name":"observeForProgressUpdate(observer:)","abstract":"

Receive callbacks on each animation frame.","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC7animateyyF":{"name":"animate()","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC8complete8finishedySb_tF":{"name":"complete(finished:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC10transition4from2to2in10completionySo16UIViewControllerC_AJSo0H0CySbcSgtF":{"name":"transition(from:to:in:completion:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC6updateyy12CoreGraphics7CGFloatVF":{"name":"update(_:)","abstract":"

Update the progress for the interactive transition.

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC6finish7animateySb_tF":{"name":"finish(animate:)","abstract":"

Finish the interactive transition.","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC6cancel7animateySb_tF":{"name":"cancel(animate:)","abstract":"

Cancel the interactive transition.","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC5apply9modifiers2toySayAA0A8ModifierCG_So6UIViewCtF":{"name":"apply(modifiers:to:)","abstract":"

Override modifiers during an interactive animation.

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC12changeTarget9modifiers13isDestination2toySayAA0A8ModifierCG_SbSo6UIViewCtF":{"name":"changeTarget(modifiers:isDestination:to:)","abstract":"

Override target state during an interactive animation.

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/s:4Hero0A10TransitionC5startyyF":{"name":"start()","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)navigationController:willShowViewController:animated:":{"name":"navigationController(_:willShow:animated:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)navigationController:didShowViewController:animated:":{"name":"navigationController(_:didShow:animated:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)navigationController:animationControllerForOperation:fromViewController:toViewController:":{"name":"navigationController(_:animationControllerFor:from:to:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)navigationController:interactionControllerForAnimationController:":{"name":"navigationController(_:interactionControllerFor:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)tabBarController:shouldSelectViewController:":{"name":"tabBarController(_:shouldSelect:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)tabBarController:interactionControllerForAnimationController:":{"name":"tabBarController(_:interactionControllerFor:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)tabBarController:animationControllerForTransitionFromViewController:toViewController:":{"name":"tabBarController(_:animationControllerForTransitionFrom:to:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)animationControllerForPresentedController:presentingController:sourceController:":{"name":"animationController(forPresented:presenting:source:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)animationControllerForDismissedController:":{"name":"animationController(forDismissed:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)interactionControllerForDismissal:":{"name":"interactionControllerForDismissal(using:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)interactionControllerForPresentation:":{"name":"interactionControllerForPresentation(using:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)animateTransition:":{"name":"animateTransition(using:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)transitionDuration:":{"name":"transitionDuration(using:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)animationEnded:":{"name":"animationEnded(_:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(py)wantsInteractiveStart":{"name":"wantsInteractiveStart","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/HeroTransition.html#/c:@CM@Hero@objc(cs)HeroTransition(im)startInteractiveTransition:":{"name":"startInteractiveTransition(_:)","abstract":"

Undocumented

","parent_name":"HeroTransition"},"Classes/Parser.html#/s:4Hero6ParserC6tokensACSayAA5TokenOG_tcfc":{"name":"init(tokens:)","abstract":"

Undocumented

","parent_name":"Parser"},"Classes/Parser.html#/s:4Hero6ParserC5parseSayAA8ExprNodeCGyKF":{"name":"parse()","abstract":"

Undocumented

","parent_name":"Parser"},"Classes/FunctionNode.html#/s:4Hero12FunctionNodeC9prototypeAA09PrototypeC0Cvp":{"name":"prototype","abstract":"

Undocumented

","parent_name":"FunctionNode"},"Classes/FunctionNode.html#/s:4Hero12FunctionNodeC4bodyAA04ExprC0Cvp":{"name":"body","abstract":"

Undocumented

","parent_name":"FunctionNode"},"Classes/FunctionNode.html#/s:4Hero12FunctionNodeC11descriptionSSvp":{"name":"description","abstract":"

Undocumented

","parent_name":"FunctionNode"},"Classes/FunctionNode.html#/s:4Hero12FunctionNodeC9prototype4bodyAcA09PrototypeC0C_AA04ExprC0Ctcfc":{"name":"init(prototype:body:)","abstract":"

Undocumented

","parent_name":"FunctionNode"},"Classes/PrototypeNode.html#/s:4Hero13PrototypeNodeC13argumentNamesSaySSGvp":{"name":"argumentNames","abstract":"

Undocumented

","parent_name":"PrototypeNode"},"Classes/PrototypeNode.html#/s:4Hero13PrototypeNodeC11descriptionSSvp":{"name":"description","abstract":"

Undocumented

","parent_name":"PrototypeNode"},"Classes/PrototypeNode.html#/s:4Hero13PrototypeNodeC4name13argumentNamesACSS_SaySSGtcfc":{"name":"init(name:argumentNames:)","abstract":"

Undocumented

","parent_name":"PrototypeNode"},"Classes/CallNode.html#/s:4Hero8CallNodeC9argumentsSayAA04ExprC0CGvp":{"name":"arguments","abstract":"

Undocumented

","parent_name":"CallNode"},"Classes/CallNode.html#/s:4Hero8CallNodeC11descriptionSSvp":{"name":"description","abstract":"

Undocumented

","parent_name":"CallNode"},"Classes/CallNode.html#/s:4Hero8CallNodeC4name9argumentsACSS_SayAA04ExprC0CGtcfc":{"name":"init(name:arguments:)","abstract":"

Undocumented

","parent_name":"CallNode"},"Classes/BinaryOpNode.html#/s:4Hero12BinaryOpNodeC3lhsAA04ExprD0Cvp":{"name":"lhs","abstract":"

Undocumented

","parent_name":"BinaryOpNode"},"Classes/BinaryOpNode.html#/s:4Hero12BinaryOpNodeC3rhsAA04ExprD0Cvp":{"name":"rhs","abstract":"

Undocumented

","parent_name":"BinaryOpNode"},"Classes/BinaryOpNode.html#/s:4Hero12BinaryOpNodeC11descriptionSSvp":{"name":"description","abstract":"

Undocumented

","parent_name":"BinaryOpNode"},"Classes/BinaryOpNode.html#/s:4Hero12BinaryOpNodeC4name3lhs3rhsACSS_AA04ExprD0CAHtcfc":{"name":"init(name:lhs:rhs:)","abstract":"

Undocumented

","parent_name":"BinaryOpNode"},"Classes/VariableNode.html#/s:4Hero12VariableNodeC11descriptionSSvp":{"name":"description","abstract":"

Undocumented

","parent_name":"VariableNode"},"Classes/NumberNode.html#/s:4Hero10NumberNodeC5valueSfvp":{"name":"value","abstract":"

Undocumented

","parent_name":"NumberNode"},"Classes/NumberNode.html#/s:4Hero10NumberNodeC11descriptionSSvp":{"name":"description","abstract":"

Undocumented

","parent_name":"NumberNode"},"Classes/NumberNode.html#/s:4Hero10NumberNodeC5valueACSf_tcfc":{"name":"init(value:)","abstract":"

Undocumented

","parent_name":"NumberNode"},"Classes/ExprNode.html#/s:4Hero8ExprNodeC5rangeSnySiGvp":{"name":"range","abstract":"

Undocumented

","parent_name":"ExprNode"},"Classes/ExprNode.html#/s:4Hero8ExprNodeC4nameSSvp":{"name":"name","abstract":"

Undocumented

","parent_name":"ExprNode"},"Classes/ExprNode.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"ExprNode"},"Classes/ExprNode.html#/s:4Hero8ExprNodeC4nameACSS_tcfc":{"name":"init(name:)","abstract":"

Undocumented

","parent_name":"ExprNode"},"Classes/Lexer.html#/s:4Hero5LexerC5inputACSS_tcfc":{"name":"init(input:)","abstract":"

Undocumented

","parent_name":"Lexer"},"Classes/Lexer.html#/s:4Hero5LexerC8tokenizeSayAA5TokenOGyF":{"name":"tokenize()","abstract":"

Undocumented

","parent_name":"Lexer"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC4heroAA0A10TransitionCSgvp":{"name":"hero","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC7contextAA0A7ContextCSgvp":{"name":"context","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC23requirePerFrameCallbackSbvp":{"name":"requirePerFrameCallback","abstract":"

Determines whether or not to receive seekTo callback on every frame.

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/c:@M@Hero@objc(cs)HeroPlugin(im)init":{"name":"init()","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC7process9fromViews02toE0ySaySo6UIViewCG_AItF":{"name":"process(fromViews:toViews:)","abstract":"

Called before any animation.","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC10canAnimate4view9appearingSbSo6UIViewC_SbtF":{"name":"canAnimate(view:appearing:)","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC7animate9fromViews02toE0SdSaySo6UIViewCG_AItF":{"name":"animate(fromViews:toViews:)","abstract":"

Perform the animation.

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC5cleanyyF":{"name":"clean()","abstract":"

Called when all animations are completed.

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC6seekTo10timePassedySd_tF":{"name":"seekTo(timePassed:)","abstract":"

For supporting interactive animation only.

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC6resume10timePassed7reverseS2d_SbtF":{"name":"resume(timePassed:reverse:)","abstract":"

For supporting interactive animation only.

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC5apply5state2toyAA0A11TargetStateV_So6UIViewCtF":{"name":"apply(state:to:)","abstract":"

For supporting interactive animation only.

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC12changeTarget5state13isDestination2toyAA0aD5StateV_SbSo6UIViewCtF":{"name":"changeTarget(state:isDestination:to:)","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC9isEnabledSbvpZ":{"name":"isEnabled","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC6enableyyFZ":{"name":"enable()","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroPlugin.html#/s:4Hero0A6PluginC7disableyyFZ":{"name":"disable()","abstract":"

Undocumented

","parent_name":"HeroPlugin"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC13applyFunctionACyAA0A11TargetStateVzc_tcfc":{"name":"init(applyFunction:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9beginWithyACSayACGFZ":{"name":"beginWith(_:)","abstract":"

Apply modifiers directly to the view at the start of the transition.","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9beginWith9modifiersACSayACG_tFZ":{"name":"beginWith(modifiers:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9beginWithyA2Cd_tFZ":{"name":"beginWith(_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC24useGlobalCoordinateSpaceACvpZ":{"name":"useGlobalCoordinateSpace","abstract":"

Use global coordinate space.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC22ignoreSubviewModifiersACvpZ":{"name":"ignoreSubviewModifiers","abstract":"

ignore all heroModifiers attributes for a view’s direct subviews.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC22ignoreSubviewModifiers9recursiveACSb_tFZ":{"name":"ignoreSubviewModifiers(recursive:)","abstract":"

ignore all heroModifiers attributes for a view’s subviews.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC20useOptimizedSnapshotACvpZ":{"name":"useOptimizedSnapshot","abstract":"

Will create snapshot optimized for different view type.","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC17useNormalSnapshotACvpZ":{"name":"useNormalSnapshot","abstract":"

Create snapshot using snapshotView(afterScreenUpdates:).

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC22useLayerRenderSnapshotACvpZ":{"name":"useLayerRenderSnapshot","abstract":"

Create snapshot using layer.render(in: currentContext).","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC13useNoSnapshotACvpZ":{"name":"useNoSnapshot","abstract":"

Force Hero to not create any snapshot when animating this view.","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC12forceAnimateACvpZ":{"name":"forceAnimate","abstract":"

Force the view to animate.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC23useScaleBasedSizeChangeACvpZ":{"name":"useScaleBasedSizeChange","abstract":"

Force Hero use scale based size animation. This will convert all .size modifier into .scale modifier.","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC4from4nodeACSgAA8ExprNodeC_tFZ":{"name":"from(node:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC4fadeACvpZ":{"name":"fade","abstract":"

Fade the view during transition

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC12forceNonFadeACvpZ":{"name":"forceNonFade","abstract":"

Force don’t fade view during transition

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC8positionyACSo7CGPointVFZ":{"name":"position(_:)","abstract":"

Set the position for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC4sizeyACSo6CGSizeVFZ":{"name":"size(_:)","abstract":"

Set the size for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9transformyACSo13CATransform3DVFZ":{"name":"transform(_:)","abstract":"

Set the transform for the view to animate from/to. Will override previous perspective, scale, translate, & rotate modifiers

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC11perspectiveyAC12CoreGraphics7CGFloatVFZ":{"name":"perspective(_:)","abstract":"

Set the perspective on the transform. use in combination with the rotate modifier.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC5scale1x1y1zAC12CoreGraphics7CGFloatV_A2JtFZ":{"name":"scale(x:y:z:)","abstract":"

Scale 3d

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC5scaleyAC12CoreGraphics7CGFloatVFZ":{"name":"scale(_:)","abstract":"

Scale in x & y axis

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9translate1x1y1zAC12CoreGraphics7CGFloatV_A2JtFZ":{"name":"translate(x:y:z:)","abstract":"

Translate 3d

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9translate_1zACSo7CGPointV_12CoreGraphics7CGFloatVtFZ":{"name":"translate(_:z:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC6rotate1x1y1zAC12CoreGraphics7CGFloatV_A2JtFZ":{"name":"rotate(x:y:z:)","abstract":"

Rotate 3d

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC6rotate_1zACSo7CGPointV_12CoreGraphics7CGFloatVtFZ":{"name":"rotate(_:z:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC6rotateyAC12CoreGraphics7CGFloatVFZ":{"name":"rotate(_:)","abstract":"

Rotate 2d

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC7opacityyAC12CoreGraphics7CGFloatVFZ":{"name":"opacity(_:)","abstract":"

Set the opacity for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC15backgroundColoryACSo7UIColorCFZ":{"name":"backgroundColor(_:)","abstract":"

Set the backgroundColor for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC12cornerRadiusyAC12CoreGraphics7CGFloatVFZ":{"name":"cornerRadius(_:)","abstract":"

Set the cornerRadius for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC9zPositionyAC12CoreGraphics7CGFloatVFZ":{"name":"zPosition(_:)","abstract":"

Set the zPosition for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC12contentsRectyACSo6CGRectVFZ":{"name":"contentsRect(_:)","abstract":"

Set the contentsRect for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC13contentsScaleyAC12CoreGraphics7CGFloatVFZ":{"name":"contentsScale(_:)","abstract":"

Set the contentsScale for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC11borderWidthyAC12CoreGraphics7CGFloatVFZ":{"name":"borderWidth(_:)","abstract":"

Set the borderWidth for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC11borderColoryACSo7UIColorCFZ":{"name":"borderColor(_:)","abstract":"

Set the borderColor for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC11shadowColoryACSo7UIColorCFZ":{"name":"shadowColor(_:)","abstract":"

Set the shadowColor for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC13shadowOpacityyAC12CoreGraphics7CGFloatVFZ":{"name":"shadowOpacity(_:)","abstract":"

Set the shadowOpacity for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC12shadowOffsetyACSo6CGSizeVFZ":{"name":"shadowOffset(_:)","abstract":"

Set the shadowOffset for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC12shadowRadiusyAC12CoreGraphics7CGFloatVFZ":{"name":"shadowRadius(_:)","abstract":"

Set the shadowRadius for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC10shadowPathyACSo9CGPathRefaFZ":{"name":"shadowPath(_:)","abstract":"

Set the shadowPath for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC13masksToBoundsyACSbFZ":{"name":"masksToBounds(_:)","abstract":"

Set the masksToBounds for the view to animate from/to.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC7overlay5color7opacityACSo7UIColorC_12CoreGraphics7CGFloatVtFZ":{"name":"overlay(color:opacity:)","abstract":"

Create an overlay on the animating view.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC8durationyACSdFZ":{"name":"duration(_:)","abstract":"

Sets the duration of the animation for a given view. If not used, Hero will use determine the duration based on the distance and size changes.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC20durationMatchLongestACvpZ":{"name":"durationMatchLongest","abstract":"

Sets the duration of the animation for a given view to match the longest animation of the transition.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC5delayyACSdFZ":{"name":"delay(_:)","abstract":"

Sets the delay of the animation for a given view.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC14timingFunctionyACSo013CAMediaTimingD0CFZ":{"name":"timingFunction(_:)","abstract":"

Sets the timing function of the animation for a given view. If not used, Hero will use determine the timing function based on whether or not the view is entering or exiting the screen.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC6spring9stiffness7dampingAC12CoreGraphics7CGFloatV_AItFZ":{"name":"spring(stiffness:damping:)","abstract":"

(iOS 9+) Use spring animation with custom stiffness & damping. The duration will be automatically calculated. Will be ignored if arc, timingFunction, or duration is set.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC6source6heroIDACSS_tFZ":{"name":"source(heroID:)","abstract":"

Transition from/to the state of the view with matching heroID","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC3arcACvpZ":{"name":"arc","abstract":"

Works in combination with position modifier to apply a natural curve when moving to the destination.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC3arc9intensityAC12CoreGraphics7CGFloatV_tFZ":{"name":"arc(intensity:)","abstract":"

Works in combination with position modifier to apply a natural curve when moving to the destination.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC7cascadeACvpZ":{"name":"cascade","abstract":"

Cascade applys increasing delay modifiers to subviews

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC7cascade5delta9direction17delayMatchedViewsACSd_AA16CascadeDirectionOSbtFZ":{"name":"cascade(delta:direction:delayMatchedViews:)","abstract":"

Cascade applys increasing delay modifiers to subviews

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC4whenyACSbAA0A18ConditionalContextVc_SayACGtFZ":{"name":"when(_:_:)","abstract":"

Apply modifiers only if the condition return true.

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC4whenyACSbAA0A18ConditionalContextVc_ACdtFZ":{"name":"when(_:_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC11whenMatchedyA2Cd_tFZ":{"name":"whenMatched(_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC14whenPresentingyA2Cd_tFZ":{"name":"whenPresenting(_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC14whenDismissingyA2Cd_tFZ":{"name":"whenDismissing(_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC13whenAppearingyA2Cd_tFZ":{"name":"whenAppearing(_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroModifier.html#/s:4Hero0A8ModifierC16whenDisappearingyA2Cd_tFZ":{"name":"whenDisappearing(_:)","abstract":"

Undocumented

","parent_name":"HeroModifier"},"Classes/HeroContext.html#/s:4Hero0A7ContextC9containerSo6UIViewCvp":{"name":"container","abstract":"

The container holding all of the animating views

","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC9fromViewsSaySo6UIViewCGvp":{"name":"fromViews","abstract":"

A flattened list of all views from source ViewController

","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC7toViewsSaySo6UIViewCGvp":{"name":"toViews","abstract":"

A flattened list of all views from destination ViewController

","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC10sourceView3forSo6UIViewCSgSS_tF":{"name":"sourceView(for:)","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC15destinationView3forSo6UIViewCSgSS_tF":{"name":"destinationView(for:)","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC10pairedView3forSo6UIViewCSgAG_tF":{"name":"pairedView(for:)","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC12snapshotView3forSo6UIViewCAG_tF":{"name":"snapshotView(for:)","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextCyAA0A11TargetStateVSgSo6UIViewCcip":{"name":"subscript(_:)","abstract":"

Undocumented

","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC5cleanyyF":{"name":"clean()","abstract":"

Undocumented

","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC4hide4viewySo6UIViewC_tF":{"name":"hide(view:)","abstract":"

Undocumented

","parent_name":"HeroContext"},"Classes/HeroContext.html#/s:4Hero0A7ContextC6unhide4viewySo6UIViewC_tF":{"name":"unhide(view:)","abstract":"

Undocumented

","parent_name":"HeroContext"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionC4basexvp":{"name":"base","abstract":"

Undocumented

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo6UIViewCRbzlE2idSSSgvp":{"name":"id","abstract":"

ID is the identifier for the view. When doing a transition between two view controllers,","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo6UIViewCRbzlE9isEnabledSbvp":{"name":"isEnabled","abstract":"

isEnabled allows to specify whether a view and its subviews should be consider for animations.","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo6UIViewCRbzlE20isEnabledForSubviewsSbvp":{"name":"isEnabledForSubviews","abstract":"

isEnabledForSubviews allows to specify whether a view’s subviews should be consider for animations.","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo6UIViewCRbzlE9modifiersSayAA0A8ModifierCGSgvp":{"name":"modifiers","abstract":"

Use modifiers to specify animations alongside the main transition. Checkout HeroModifier.swift for available modifiers.

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo6UIViewCRbzlE14modifierStringSSSgvp":{"name":"modifierString","abstract":"

modifierString** provides another way to set modifiers. It can be assigned through storyboard.

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE18modalAnimationTypeAA0a7DefaultfG0Ovp":{"name":"modalAnimationType","abstract":"

default hero animation type for presenting & dismissing modally

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE24modalAnimationTypeStringSSSgvp":{"name":"modalAnimationTypeString","abstract":"

Undocumented

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE9isEnabledSbvp":{"name":"isEnabled","abstract":"

Undocumented

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo22UINavigationControllerCRbzlE23navigationAnimationTypeAA0a7DefaultfG0Ovp":{"name":"navigationAnimationType","abstract":"

default hero animation type for push and pop within the navigation controller

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo22UINavigationControllerCRbzlE29navigationAnimationTypeStringSSSgvp":{"name":"navigationAnimationTypeString","abstract":"

Undocumented

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo18UITabBarControllerCRbzlE03tabD13AnimationTypeAA0a7DefaultgH0Ovp":{"name":"tabBarAnimationType","abstract":"

default hero animation type for switching tabs within the tab bar controller

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo18UITabBarControllerCRbzlE03tabD19AnimationTypeStringSSSgvp":{"name":"tabBarAnimationTypeString","abstract":"

Undocumented

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE011dismissViewD010completionyyycSg_tF":{"name":"dismissViewController(completion:)","abstract":"

Dismiss the current view controller with animation. Will perform a navigationController.popViewController","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE016unwindToRootViewD0yyF":{"name":"unwindToRootViewController()","abstract":"

Unwind to the root view controller using Hero

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE012unwindToViewD0yyAEF":{"name":"unwindToViewController(_:)","abstract":"

Unwind to a specific view controller using Hero

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE012unwindToViewD012withSelectory10ObjectiveC0I0V_tF":{"name":"unwindToViewController(withSelector:)","abstract":"

Undocumented

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE012unwindToViewD09withClassyyXlXp_tF":{"name":"unwindToViewController(withClass:)","abstract":"

Unwind to a view controller with given class using Hero

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE012unwindToViewD014withMatchBlockySbAEXE_tF":{"name":"unwindToViewController(withMatchBlock:)","abstract":"

Unwind to a view controller that the matchBlock returns true on.

","parent_name":"HeroExtension"},"Classes/HeroExtension.html#/s:4Hero0A9ExtensionCAASo16UIViewControllerCRbzlE011replaceViewD04with10completionyAE_yycSgtF":{"name":"replaceViewController(with:completion:)","abstract":"

Replace the current view controller with another VC on the navigation/modal stack.

","parent_name":"HeroExtension"},"Classes/HeroDebugPlugin.html#/s:4Hero0A11DebugPluginC9showOnTopSbvpZ":{"name":"showOnTop","abstract":"

Undocumented

","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/s:4Hero0A11DebugPluginC7animate9fromViews02toF0SdSaySo6UIViewCG_AItF":{"name":"animate(fromViews:toViews:)","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/s:4Hero0A11DebugPluginC6resume10timePassed7reverseS2d_SbtF":{"name":"resume(timePassed:reverse:)","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/s:4Hero0A11DebugPluginC5cleanyyF":{"name":"clean()","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/s:4Hero0A11DebugPluginC6onDoneyyF":{"name":"onDone()","abstract":"

Undocumented

","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html#/s:4Hero0A11DebugPluginC22onProcessSliderChanged8progressySf_tF":{"name":"onProcessSliderChanged(progress:)","abstract":"

Undocumented

","parent_name":"HeroDebugPlugin"},"Classes/HeroDebugPlugin.html":{"name":"HeroDebugPlugin"},"Classes/HeroExtension.html":{"name":"HeroExtension","abstract":"

Undocumented

"},"Classes/HeroContext.html":{"name":"HeroContext","abstract":"

Undocumented

"},"Classes/HeroModifier.html":{"name":"HeroModifier","abstract":"

Undocumented

"},"Classes/HeroPlugin.html":{"name":"HeroPlugin","abstract":"

Undocumented

"},"Classes/Lexer.html":{"name":"Lexer","abstract":"

Undocumented

"},"Classes/ExprNode.html":{"name":"ExprNode","abstract":"

Undocumented

"},"Classes/NumberNode.html":{"name":"NumberNode","abstract":"

Undocumented

"},"Classes/VariableNode.html":{"name":"VariableNode","abstract":"

Undocumented

"},"Classes/BinaryOpNode.html":{"name":"BinaryOpNode","abstract":"

Undocumented

"},"Classes/CallNode.html":{"name":"CallNode","abstract":"

Undocumented

"},"Classes/PrototypeNode.html":{"name":"PrototypeNode","abstract":"

Undocumented

"},"Classes/FunctionNode.html":{"name":"FunctionNode","abstract":"

Undocumented

"},"Classes/Parser.html":{"name":"Parser","abstract":"

Undocumented

"},"Classes/HeroTransition.html":{"name":"HeroTransition","abstract":"

Undocumented

"},"Classes/Hero.html":{"name":"Hero","abstract":"

The singleton class/object for controlling interactive transitions.

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Enums.html":{"name":"Enumerations","abstract":"

The following enumerations are available globally.

"},"Extensions.html":{"name":"Extensions","abstract":"

The following extensions are available globally.

"},"Functions.html":{"name":"Functions","abstract":"

The following functions are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structures","abstract":"

The following structures are available globally.

"}} \ No newline at end of file diff --git a/docs/undocumented.json b/docs/undocumented.json new file mode 100644 index 00000000..cde7bf14 --- /dev/null +++ b/docs/undocumented.json @@ -0,0 +1,4464 @@ +{ + "warnings": [ + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Debug Plugin/HeroDebugPlugin.swift", + "line": 26, + "symbol": "HeroDebugPlugin", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Debug Plugin/HeroDebugPlugin.swift", + "line": 27, + "symbol": "HeroDebugPlugin.showOnTop", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Debug Plugin/HeroDebugPlugin.swift", + "line": 75, + "symbol": "HeroDebugPlugin", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Debug Plugin/HeroDebugPlugin.swift", + "line": 76, + "symbol": "HeroDebugPlugin.onDone()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Debug Plugin/HeroDebugPlugin.swift", + "line": 86, + "symbol": "HeroDebugPlugin.onProcessSliderChanged(progress:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Debug Plugin/HeroDebugView.swift", + "line": 193, + "symbol": "HeroDebugView", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Debug Plugin/HeroDebugView.swift", + "line": 194, + "symbol": "HeroDebugView.gestureRecognizerShouldBegin(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 27, + "symbol": "CAMediaTimingFunction.linear", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 27, + "symbol": "CAMediaTimingFunction.linear", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 28, + "symbol": "CAMediaTimingFunction.easeIn", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 28, + "symbol": "CAMediaTimingFunction.easeIn", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 29, + "symbol": "CAMediaTimingFunction.easeOut", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 29, + "symbol": "CAMediaTimingFunction.easeOut", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 30, + "symbol": "CAMediaTimingFunction.easeInOut", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 30, + "symbol": "CAMediaTimingFunction.easeInOut", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 33, + "symbol": "CAMediaTimingFunction.standard", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 33, + "symbol": "CAMediaTimingFunction.standard", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 34, + "symbol": "CAMediaTimingFunction.deceleration", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 34, + "symbol": "CAMediaTimingFunction.deceleration", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 35, + "symbol": "CAMediaTimingFunction.acceleration", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 35, + "symbol": "CAMediaTimingFunction.acceleration", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 36, + "symbol": "CAMediaTimingFunction.sharp", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 36, + "symbol": "CAMediaTimingFunction.sharp", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 39, + "symbol": "CAMediaTimingFunction.easeOutBack", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 39, + "symbol": "CAMediaTimingFunction.easeOutBack", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 41, + "symbol": "CAMediaTimingFunction.from(name:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/CAMediaTimingFunction+Hero.swift", + "line": 41, + "symbol": "CAMediaTimingFunction.from(name:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIView+Hero.swift", + "line": 120, + "symbol": "UIView.heroID", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIView+Hero.swift", + "line": 120, + "symbol": "UIView.heroID", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIView+Hero.swift", + "line": 127, + "symbol": "UIView.isHeroEnabled", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIView+Hero.swift", + "line": 127, + "symbol": "UIView.isHeroEnabled", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIView+Hero.swift", + "line": 134, + "symbol": "UIView.isHeroEnabledForSubviews", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIView+Hero.swift", + "line": 134, + "symbol": "UIView.isHeroEnabledForSubviews", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIView+Hero.swift", + "line": 140, + "symbol": "UIView.heroModifiers", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIView+Hero.swift", + "line": 140, + "symbol": "UIView.heroModifiers", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIView+Hero.swift", + "line": 147, + "symbol": "UIView.heroModifierString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIView+Hero.swift", + "line": 147, + "symbol": "UIView.heroModifierString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 63, + "symbol": "HeroExtension.modalAnimationTypeString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 63, + "symbol": "HeroExtension.modalAnimationTypeString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 69, + "symbol": "HeroExtension.isEnabled", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 69, + "symbol": "HeroExtension.isEnabled", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 126, + "symbol": "UIViewController.heroModalAnimationType", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 126, + "symbol": "UIViewController.heroModalAnimationType", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 132, + "symbol": "UIViewController.heroModalAnimationTypeString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 132, + "symbol": "UIViewController.heroModalAnimationTypeString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 138, + "symbol": "UIViewController.isHeroEnabled", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 138, + "symbol": "UIViewController.isHeroEnabled", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 152, + "symbol": "HeroExtension.navigationAnimationTypeString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 152, + "symbol": "HeroExtension.navigationAnimationTypeString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 160, + "symbol": "UINavigationController.heroNavigationAnimationType", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 160, + "symbol": "UINavigationController.heroNavigationAnimationType", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 167, + "symbol": "UINavigationController.heroNavigationAnimationTypeString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 167, + "symbol": "UINavigationController.heroNavigationAnimationTypeString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 181, + "symbol": "HeroExtension.tabBarAnimationTypeString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 181, + "symbol": "HeroExtension.tabBarAnimationTypeString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 189, + "symbol": "UITabBarController.heroTabBarAnimationType", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 189, + "symbol": "UITabBarController.heroTabBarAnimationType", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 196, + "symbol": "UITabBarController.heroTabBarAnimationTypeString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 196, + "symbol": "UITabBarController.heroTabBarAnimationTypeString", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 230, + "symbol": "HeroExtension.unwindToViewController(withSelector:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 230, + "symbol": "HeroExtension.unwindToViewController(withSelector:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 336, + "symbol": "UIViewController.ht_dismiss(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 336, + "symbol": "UIViewController.ht_dismiss(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 341, + "symbol": "UIViewController.heroReplaceViewController(with:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 341, + "symbol": "UIViewController.heroReplaceViewController(with:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 347, + "symbol": "UIViewController.hero_dismissViewController()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 347, + "symbol": "UIViewController.hero_dismissViewController()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 353, + "symbol": "UIViewController.hero_unwindToRootViewController()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 353, + "symbol": "UIViewController.hero_unwindToRootViewController()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 358, + "symbol": "UIViewController.hero_unwindToViewController(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 358, + "symbol": "UIViewController.hero_unwindToViewController(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 363, + "symbol": "UIViewController.hero_unwindToViewController(withSelector:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 363, + "symbol": "UIViewController.hero_unwindToViewController(withSelector:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 368, + "symbol": "UIViewController.hero_unwindToViewController(withClass:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 368, + "symbol": "UIViewController.hero_unwindToViewController(withClass:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 373, + "symbol": "UIViewController.hero_unwindToViewController(withMatchBlock:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 373, + "symbol": "UIViewController.hero_unwindToViewController(withMatchBlock:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 378, + "symbol": "UIViewController.hero_replaceViewController(with:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Extensions/UIViewController+Hero.swift", + "line": 378, + "symbol": "UIViewController.hero_replaceViewController(with:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 25, + "symbol": "HeroCompatible", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 25, + "symbol": "HeroCompatible", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 26, + "symbol": "HeroCompatible.CompatibleType", + "symbol_kind": "source.lang.swift.decl.associatedtype", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 26, + "symbol": "HeroCompatible.CompatibleType", + "symbol_kind": "source.lang.swift.decl.associatedtype", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 28, + "symbol": "HeroCompatible.hero", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 28, + "symbol": "HeroCompatible.hero", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 31, + "symbol": "HeroCompatible", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 31, + "symbol": "HeroCompatible", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 32, + "symbol": "HeroCompatible.hero", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 32, + "symbol": "HeroCompatible.hero", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 36, + "symbol": "HeroExtension", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 36, + "symbol": "HeroExtension", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 38, + "symbol": "HeroExtension", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 38, + "symbol": "HeroExtension", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 39, + "symbol": "HeroExtension.base", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 39, + "symbol": "HeroExtension.base", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 43, + "symbol": "HeroExtension", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 43, + "symbol": "HeroExtension", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 144, + "symbol": "HeroExtension", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 144, + "symbol": "HeroExtension", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 173, + "symbol": "HeroExtension", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 173, + "symbol": "HeroExtension", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 202, + "symbol": "HeroExtension", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroCompatible.swift", + "line": 202, + "symbol": "HeroExtension", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 25, + "symbol": "HeroContext", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 25, + "symbol": "HeroContext", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 82, + "symbol": "HeroContext", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 82, + "symbol": "HeroContext", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 293, + "symbol": "HeroContext.subscript(_:)", + "symbol_kind": "source.lang.swift.decl.function.subscript", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 293, + "symbol": "HeroContext.subscript(_:)", + "symbol_kind": "source.lang.swift.decl.function.subscript", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 302, + "symbol": "HeroContext.clean()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 302, + "symbol": "HeroContext.clean()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 312, + "symbol": "HeroContext", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 312, + "symbol": "HeroContext", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 313, + "symbol": "HeroContext.hide(view:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 313, + "symbol": "HeroContext.hide(view:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 324, + "symbol": "HeroContext.unhide(view:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 324, + "symbol": "HeroContext.unhide(view:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 396, + "symbol": "HeroCustomSnapshotView.heroSnapshot", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroContext.swift", + "line": 396, + "symbol": "HeroCustomSnapshotView.heroSnapshot", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier+Advanced.swift", + "line": 41, + "symbol": "HeroModifier.beginWith(modifiers:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier+Advanced.swift", + "line": 41, + "symbol": "HeroModifier.beginWith(modifiers:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier+Advanced.swift", + "line": 45, + "symbol": "HeroModifier.beginWith(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier+Advanced.swift", + "line": 45, + "symbol": "HeroModifier.beginWith(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier+HeroStringConvertible.swift", + "line": 27, + "symbol": "HeroModifier.from(node:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier+HeroStringConvertible.swift", + "line": 27, + "symbol": "HeroModifier.from(node:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 25, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 25, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 25, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 25, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 26, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 26, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 27, + "symbol": "HeroModifier.init(applyFunction:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 27, + "symbol": "HeroModifier.init(applyFunction:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 33, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 33, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 72, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 72, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 132, + "symbol": "HeroModifier.translate(_:z:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 132, + "symbol": "HeroModifier.translate(_:z:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 151, + "symbol": "HeroModifier.rotate(_:z:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 151, + "symbol": "HeroModifier.rotate(_:z:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 165, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 165, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 334, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 334, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 392, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 392, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 463, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 463, + "symbol": "HeroModifier", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 476, + "symbol": "HeroModifier.when(_:_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 476, + "symbol": "HeroModifier.when(_:_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 480, + "symbol": "HeroModifier.whenMatched(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 480, + "symbol": "HeroModifier.whenMatched(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 484, + "symbol": "HeroModifier.whenPresenting(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 484, + "symbol": "HeroModifier.whenPresenting(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 488, + "symbol": "HeroModifier.whenDismissing(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 488, + "symbol": "HeroModifier.whenDismissing(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 492, + "symbol": "HeroModifier.whenAppearing(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 492, + "symbol": "HeroModifier.whenAppearing(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 496, + "symbol": "HeroModifier.whenDisappearing(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroModifier.swift", + "line": 496, + "symbol": "HeroModifier.whenDisappearing(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 25, + "symbol": "HeroPlugin", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 25, + "symbol": "HeroPlugin", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 27, + "symbol": "HeroPlugin.hero", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 27, + "symbol": "HeroPlugin.hero", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 29, + "symbol": "HeroPlugin.context", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 29, + "symbol": "HeroPlugin.context", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 45, + "symbol": "HeroPlugin.init()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 45, + "symbol": "HeroPlugin.init()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 130, + "symbol": "HeroPlugin.changeTarget(state:isDestination:to:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 130, + "symbol": "HeroPlugin.changeTarget(state:isDestination:to:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 134, + "symbol": "HeroPlugin", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 134, + "symbol": "HeroPlugin", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 135, + "symbol": "HeroPlugin.isEnabled", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 135, + "symbol": "HeroPlugin.isEnabled", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 147, + "symbol": "HeroPlugin.enable()", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 147, + "symbol": "HeroPlugin.enable()", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 150, + "symbol": "HeroPlugin.disable()", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroPlugin.swift", + "line": 150, + "symbol": "HeroPlugin.disable()", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 25, + "symbol": "HeroSnapshotType", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 25, + "symbol": "HeroSnapshotType", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 44, + "symbol": "HeroCoordinateSpace", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 44, + "symbol": "HeroCoordinateSpace", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 45, + "symbol": "HeroCoordinateSpace.global", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 45, + "symbol": "HeroCoordinateSpace.global", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 46, + "symbol": "HeroCoordinateSpace.local", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 46, + "symbol": "HeroCoordinateSpace.local", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 49, + "symbol": "HeroTargetState", + "symbol_kind": "source.lang.swift.decl.struct", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 49, + "symbol": "HeroTargetState", + "symbol_kind": "source.lang.swift.decl.struct", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 50, + "symbol": "HeroTargetState.beginState", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 50, + "symbol": "HeroTargetState.beginState", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 51, + "symbol": "HeroTargetState.conditionalModifiers", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 51, + "symbol": "HeroTargetState.conditionalModifiers", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 53, + "symbol": "HeroTargetState.position", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 53, + "symbol": "HeroTargetState.position", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 54, + "symbol": "HeroTargetState.size", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 54, + "symbol": "HeroTargetState.size", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 55, + "symbol": "HeroTargetState.transform", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 55, + "symbol": "HeroTargetState.transform", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 56, + "symbol": "HeroTargetState.opacity", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 56, + "symbol": "HeroTargetState.opacity", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 57, + "symbol": "HeroTargetState.cornerRadius", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 57, + "symbol": "HeroTargetState.cornerRadius", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 58, + "symbol": "HeroTargetState.backgroundColor", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 58, + "symbol": "HeroTargetState.backgroundColor", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 59, + "symbol": "HeroTargetState.zPosition", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 59, + "symbol": "HeroTargetState.zPosition", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 61, + "symbol": "HeroTargetState.contentsRect", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 61, + "symbol": "HeroTargetState.contentsRect", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 62, + "symbol": "HeroTargetState.contentsScale", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 62, + "symbol": "HeroTargetState.contentsScale", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 64, + "symbol": "HeroTargetState.borderWidth", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 64, + "symbol": "HeroTargetState.borderWidth", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 65, + "symbol": "HeroTargetState.borderColor", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 65, + "symbol": "HeroTargetState.borderColor", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 67, + "symbol": "HeroTargetState.shadowColor", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 67, + "symbol": "HeroTargetState.shadowColor", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 68, + "symbol": "HeroTargetState.shadowOpacity", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 68, + "symbol": "HeroTargetState.shadowOpacity", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 69, + "symbol": "HeroTargetState.shadowOffset", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 69, + "symbol": "HeroTargetState.shadowOffset", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 70, + "symbol": "HeroTargetState.shadowRadius", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 70, + "symbol": "HeroTargetState.shadowRadius", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 71, + "symbol": "HeroTargetState.shadowPath", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 71, + "symbol": "HeroTargetState.shadowPath", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 72, + "symbol": "HeroTargetState.masksToBounds", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 72, + "symbol": "HeroTargetState.masksToBounds", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 73, + "symbol": "HeroTargetState.displayShadow", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 73, + "symbol": "HeroTargetState.displayShadow", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 75, + "symbol": "HeroTargetState.overlay", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 75, + "symbol": "HeroTargetState.overlay", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 77, + "symbol": "HeroTargetState.spring", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 77, + "symbol": "HeroTargetState.spring", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 78, + "symbol": "HeroTargetState.delay", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 78, + "symbol": "HeroTargetState.delay", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 79, + "symbol": "HeroTargetState.duration", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 79, + "symbol": "HeroTargetState.duration", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 80, + "symbol": "HeroTargetState.timingFunction", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 80, + "symbol": "HeroTargetState.timingFunction", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 82, + "symbol": "HeroTargetState.arc", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 82, + "symbol": "HeroTargetState.arc", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 83, + "symbol": "HeroTargetState.source", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 83, + "symbol": "HeroTargetState.source", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 84, + "symbol": "HeroTargetState.cascade", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 84, + "symbol": "HeroTargetState.cascade", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 86, + "symbol": "HeroTargetState.ignoreSubviewModifiers", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 86, + "symbol": "HeroTargetState.ignoreSubviewModifiers", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 87, + "symbol": "HeroTargetState.coordinateSpace", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 87, + "symbol": "HeroTargetState.coordinateSpace", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 88, + "symbol": "HeroTargetState.useScaleBasedSizeChange", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 88, + "symbol": "HeroTargetState.useScaleBasedSizeChange", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 89, + "symbol": "HeroTargetState.snapshotType", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 89, + "symbol": "HeroTargetState.snapshotType", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 91, + "symbol": "HeroTargetState.nonFade", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 91, + "symbol": "HeroTargetState.nonFade", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 92, + "symbol": "HeroTargetState.forceAnimate", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 92, + "symbol": "HeroTargetState.forceAnimate", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 93, + "symbol": "HeroTargetState.custom", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 93, + "symbol": "HeroTargetState.custom", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 99, + "symbol": "HeroTargetState.append(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 99, + "symbol": "HeroTargetState.append(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 103, + "symbol": "HeroTargetState.append(contentsOf:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 103, + "symbol": "HeroTargetState.append(contentsOf:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 125, + "symbol": "HeroTargetState", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTargetState.swift", + "line": 125, + "symbol": "HeroTargetState", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 25, + "symbol": "HeroPreprocessor", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 25, + "symbol": "HeroPreprocessor", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 26, + "symbol": "HeroPreprocessor.hero", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 26, + "symbol": "HeroPreprocessor.hero", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 27, + "symbol": "HeroPreprocessor.process(fromViews:toViews:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 27, + "symbol": "HeroPreprocessor.process(fromViews:toViews:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 30, + "symbol": "HeroAnimator", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 30, + "symbol": "HeroAnimator", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 31, + "symbol": "HeroAnimator.hero", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 31, + "symbol": "HeroAnimator.hero", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 32, + "symbol": "HeroAnimator.canAnimate(view:appearing:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 32, + "symbol": "HeroAnimator.canAnimate(view:appearing:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 33, + "symbol": "HeroAnimator.animate(fromViews:toViews:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 33, + "symbol": "HeroAnimator.animate(fromViews:toViews:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 34, + "symbol": "HeroAnimator.clean()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 34, + "symbol": "HeroAnimator.clean()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 36, + "symbol": "HeroAnimator.seekTo(timePassed:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 36, + "symbol": "HeroAnimator.seekTo(timePassed:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 37, + "symbol": "HeroAnimator.resume(timePassed:reverse:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 37, + "symbol": "HeroAnimator.resume(timePassed:reverse:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 38, + "symbol": "HeroAnimator.apply(state:to:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 38, + "symbol": "HeroAnimator.apply(state:to:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 39, + "symbol": "HeroAnimator.changeTarget(state:isDestination:to:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 39, + "symbol": "HeroAnimator.changeTarget(state:isDestination:to:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 42, + "symbol": "HeroProgressUpdateObserver", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 42, + "symbol": "HeroProgressUpdateObserver", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 43, + "symbol": "HeroProgressUpdateObserver.heroDidUpdateProgress(progress:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 43, + "symbol": "HeroProgressUpdateObserver.heroDidUpdateProgress(progress:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 46, + "symbol": "HeroViewOrderingStrategy", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 46, + "symbol": "HeroViewOrderingStrategy", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 47, + "symbol": "HeroViewOrderingStrategy.auto", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 47, + "symbol": "HeroViewOrderingStrategy.auto", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 47, + "symbol": "HeroViewOrderingStrategy.destinationViewOnTop", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 47, + "symbol": "HeroViewOrderingStrategy.destinationViewOnTop", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 47, + "symbol": "HeroViewOrderingStrategy.sourceViewOnTop", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroTypes.swift", + "line": 47, + "symbol": "HeroViewOrderingStrategy.sourceViewOnTop", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 25, + "symbol": "HeroViewControllerDelegate", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 25, + "symbol": "HeroViewControllerDelegate", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 26, + "symbol": "HeroViewControllerDelegate.heroWillStartAnimatingFrom(viewController:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 26, + "symbol": "HeroViewControllerDelegate.heroWillStartAnimatingFrom(viewController:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 27, + "symbol": "HeroViewControllerDelegate.heroDidEndAnimatingFrom(viewController:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 27, + "symbol": "HeroViewControllerDelegate.heroDidEndAnimatingFrom(viewController:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 28, + "symbol": "HeroViewControllerDelegate.heroDidCancelAnimatingFrom(viewController:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 28, + "symbol": "HeroViewControllerDelegate.heroDidCancelAnimatingFrom(viewController:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 30, + "symbol": "HeroViewControllerDelegate.heroWillStartTransition()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 30, + "symbol": "HeroViewControllerDelegate.heroWillStartTransition()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 31, + "symbol": "HeroViewControllerDelegate.heroDidEndTransition()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 31, + "symbol": "HeroViewControllerDelegate.heroDidEndTransition()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 32, + "symbol": "HeroViewControllerDelegate.heroDidCancelTransition()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 32, + "symbol": "HeroViewControllerDelegate.heroDidCancelTransition()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 34, + "symbol": "HeroViewControllerDelegate.heroWillStartAnimatingTo(viewController:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 34, + "symbol": "HeroViewControllerDelegate.heroWillStartAnimatingTo(viewController:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 35, + "symbol": "HeroViewControllerDelegate.heroDidEndAnimatingTo(viewController:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 35, + "symbol": "HeroViewControllerDelegate.heroDidEndAnimatingTo(viewController:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 36, + "symbol": "HeroViewControllerDelegate.heroDidCancelAnimatingTo(viewController:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/HeroViewControllerDelegate.swift", + "line": 36, + "symbol": "HeroViewControllerDelegate.heroDidCancelAnimatingTo(viewController:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/HeroStringConvertible.swift", + "line": 25, + "symbol": "HeroStringConvertible", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/HeroStringConvertible.swift", + "line": 25, + "symbol": "HeroStringConvertible", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/HeroStringConvertible.swift", + "line": 26, + "symbol": "HeroStringConvertible.from(node:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/HeroStringConvertible.swift", + "line": 26, + "symbol": "HeroStringConvertible.from(node:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 11, + "symbol": "Token", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 11, + "symbol": "Token", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 12, + "symbol": "Token.identifier(_:_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 12, + "symbol": "Token.identifier(_:_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 13, + "symbol": "Token.number(_:_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 13, + "symbol": "Token.number(_:_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 14, + "symbol": "Token.parensOpen(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 14, + "symbol": "Token.parensOpen(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 15, + "symbol": "Token.parensClose(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 15, + "symbol": "Token.parensClose(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 16, + "symbol": "Token.comma(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 16, + "symbol": "Token.comma(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 17, + "symbol": "Token.other(_:_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 17, + "symbol": "Token.other(_:_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 30, + "symbol": "Lexer", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 30, + "symbol": "Lexer", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 32, + "symbol": "Lexer.init(input:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 32, + "symbol": "Lexer.init(input:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 35, + "symbol": "Lexer.tokenize()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Lexer.swift", + "line": 35, + "symbol": "Lexer.tokenize()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 11, + "symbol": "ExprNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 11, + "symbol": "ExprNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 12, + "symbol": "ExprNode.range", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 12, + "symbol": "ExprNode.range", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 13, + "symbol": "ExprNode.name", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 13, + "symbol": "ExprNode.name", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 17, + "symbol": "ExprNode.init(name:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 17, + "symbol": "ExprNode.init(name:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 22, + "symbol": "==(_:_:)", + "symbol_kind": "source.lang.swift.decl.function.free", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 22, + "symbol": "==(_:_:)", + "symbol_kind": "source.lang.swift.decl.function.free", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 26, + "symbol": "NumberNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 26, + "symbol": "NumberNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 27, + "symbol": "NumberNode.value", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 27, + "symbol": "NumberNode.value", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 28, + "symbol": "NumberNode.description", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 28, + "symbol": "NumberNode.description", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 31, + "symbol": "NumberNode.init(value:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 31, + "symbol": "NumberNode.init(value:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 37, + "symbol": "VariableNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 37, + "symbol": "VariableNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 38, + "symbol": "VariableNode.description", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 38, + "symbol": "VariableNode.description", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 43, + "symbol": "BinaryOpNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 43, + "symbol": "BinaryOpNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 44, + "symbol": "BinaryOpNode.lhs", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 44, + "symbol": "BinaryOpNode.lhs", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 45, + "symbol": "BinaryOpNode.rhs", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 45, + "symbol": "BinaryOpNode.rhs", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 46, + "symbol": "BinaryOpNode.description", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 46, + "symbol": "BinaryOpNode.description", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 49, + "symbol": "BinaryOpNode.init(name:lhs:rhs:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 49, + "symbol": "BinaryOpNode.init(name:lhs:rhs:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 56, + "symbol": "CallNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 56, + "symbol": "CallNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 57, + "symbol": "CallNode.arguments", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 57, + "symbol": "CallNode.arguments", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 58, + "symbol": "CallNode.description", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 58, + "symbol": "CallNode.description", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 61, + "symbol": "CallNode.init(name:arguments:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 61, + "symbol": "CallNode.init(name:arguments:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 67, + "symbol": "PrototypeNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 67, + "symbol": "PrototypeNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 68, + "symbol": "PrototypeNode.argumentNames", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 68, + "symbol": "PrototypeNode.argumentNames", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 69, + "symbol": "PrototypeNode.description", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 69, + "symbol": "PrototypeNode.description", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 72, + "symbol": "PrototypeNode.init(name:argumentNames:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 72, + "symbol": "PrototypeNode.init(name:argumentNames:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 78, + "symbol": "FunctionNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 78, + "symbol": "FunctionNode", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 79, + "symbol": "FunctionNode.prototype", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 79, + "symbol": "FunctionNode.prototype", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 80, + "symbol": "FunctionNode.body", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 80, + "symbol": "FunctionNode.body", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 81, + "symbol": "FunctionNode.description", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 81, + "symbol": "FunctionNode.description", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 84, + "symbol": "FunctionNode.init(prototype:body:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Nodes.swift", + "line": 84, + "symbol": "FunctionNode.init(prototype:body:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 11, + "symbol": "ParseError", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 11, + "symbol": "ParseError", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 12, + "symbol": "ParseError.unexpectToken", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 12, + "symbol": "ParseError.unexpectToken", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 13, + "symbol": "ParseError.undefinedOperator(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 13, + "symbol": "ParseError.undefinedOperator(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 15, + "symbol": "ParseError.expectCharacter(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 15, + "symbol": "ParseError.expectCharacter(_:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 16, + "symbol": "ParseError.expectExpression", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 16, + "symbol": "ParseError.expectExpression", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 17, + "symbol": "ParseError.expectArgumentList", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 17, + "symbol": "ParseError.expectArgumentList", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 18, + "symbol": "ParseError.expectFunctionName", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 18, + "symbol": "ParseError.expectFunctionName", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 21, + "symbol": "Parser", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 21, + "symbol": "Parser", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 25, + "symbol": "Parser.init(tokens:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 25, + "symbol": "Parser.init(tokens:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 156, + "symbol": "Parser.parse()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Parser.swift", + "line": 156, + "symbol": "Parser.parse()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Regex.swift", + "line": 13, + "symbol": "String.match(regex:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Parser/Regex.swift", + "line": 13, + "symbol": "String.match(regex:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 27, + "symbol": "CascadeDirection", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 27, + "symbol": "CascadeDirection", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 28, + "symbol": "CascadeDirection.topToBottom", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 28, + "symbol": "CascadeDirection.topToBottom", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 29, + "symbol": "CascadeDirection.bottomToTop", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 29, + "symbol": "CascadeDirection.bottomToTop", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 30, + "symbol": "CascadeDirection.leftToRight", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 30, + "symbol": "CascadeDirection.leftToRight", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 31, + "symbol": "CascadeDirection.rightToLeft", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 31, + "symbol": "CascadeDirection.rightToLeft", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 32, + "symbol": "CascadeDirection.radial(center:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 32, + "symbol": "CascadeDirection.radial(center:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 33, + "symbol": "CascadeDirection.inverseRadial(center:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 33, + "symbol": "CascadeDirection.inverseRadial(center:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 74, + "symbol": "CascadeDirection.leadingToTrailing", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 74, + "symbol": "CascadeDirection.leadingToTrailing", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 78, + "symbol": "CascadeDirection.trailingToLeading", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/CascadePreprocessor.swift", + "line": 78, + "symbol": "CascadeDirection.trailingToLeading", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 25, + "symbol": "HeroConditionalContext", + "symbol_kind": "source.lang.swift.decl.struct", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 25, + "symbol": "HeroConditionalContext", + "symbol_kind": "source.lang.swift.decl.struct", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 27, + "symbol": "HeroConditionalContext.view", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 27, + "symbol": "HeroConditionalContext.view", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 29, + "symbol": "HeroConditionalContext.isAppearing", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 29, + "symbol": "HeroConditionalContext.isAppearing", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 31, + "symbol": "HeroConditionalContext.isPresenting", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 31, + "symbol": "HeroConditionalContext.isPresenting", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 34, + "symbol": "HeroConditionalContext.isInTabbarController", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 34, + "symbol": "HeroConditionalContext.isInTabbarController", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 37, + "symbol": "HeroConditionalContext.isInNavbarController", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 37, + "symbol": "HeroConditionalContext.isInNavbarController", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 40, + "symbol": "HeroConditionalContext.isMatched", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 40, + "symbol": "HeroConditionalContext.isMatched", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 43, + "symbol": "HeroConditionalContext.isAncestorViewMatched", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 43, + "symbol": "HeroConditionalContext.isAncestorViewMatched", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 47, + "symbol": "HeroConditionalContext.matchedView", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 47, + "symbol": "HeroConditionalContext.matchedView", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 50, + "symbol": "HeroConditionalContext.matchedAncestorView", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 50, + "symbol": "HeroConditionalContext.matchedAncestorView", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 61, + "symbol": "HeroConditionalContext.fromViewController", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 61, + "symbol": "HeroConditionalContext.fromViewController", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 64, + "symbol": "HeroConditionalContext.toViewController", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 64, + "symbol": "HeroConditionalContext.toViewController", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 67, + "symbol": "HeroConditionalContext.currentViewController", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 67, + "symbol": "HeroConditionalContext.currentViewController", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 70, + "symbol": "HeroConditionalContext.otherViewController", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/ConditionalPreprocessor.swift", + "line": 70, + "symbol": "HeroConditionalContext.otherViewController", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 25, + "symbol": "HeroDefaultAnimationType", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 25, + "symbol": "HeroDefaultAnimationType", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 26, + "symbol": "HeroDefaultAnimationType.Direction", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 26, + "symbol": "HeroDefaultAnimationType.Direction", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 27, + "symbol": "HeroDefaultAnimationType.Direction.down", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 27, + "symbol": "HeroDefaultAnimationType.Direction.down", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 27, + "symbol": "HeroDefaultAnimationType.Direction.left", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 27, + "symbol": "HeroDefaultAnimationType.Direction.left", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 27, + "symbol": "HeroDefaultAnimationType.Direction.right", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 27, + "symbol": "HeroDefaultAnimationType.Direction.right", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 27, + "symbol": "HeroDefaultAnimationType.Direction.up", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 27, + "symbol": "HeroDefaultAnimationType.Direction.up", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 28, + "symbol": "HeroDefaultAnimationType.Direction.from(node:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 28, + "symbol": "HeroDefaultAnimationType.Direction.from(node:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 40, + "symbol": "HeroDefaultAnimationType.Direction.leading", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 40, + "symbol": "HeroDefaultAnimationType.Direction.leading", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 44, + "symbol": "HeroDefaultAnimationType.Direction.trailing", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 44, + "symbol": "HeroDefaultAnimationType.Direction.trailing", + "symbol_kind": "source.lang.swift.decl.var.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 49, + "symbol": "HeroDefaultAnimationType.Strategy", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 49, + "symbol": "HeroDefaultAnimationType.Strategy", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 50, + "symbol": "HeroDefaultAnimationType.Strategy.forceLeftToRight", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 50, + "symbol": "HeroDefaultAnimationType.Strategy.forceLeftToRight", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 50, + "symbol": "HeroDefaultAnimationType.Strategy.forceRightToLeft", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 50, + "symbol": "HeroDefaultAnimationType.Strategy.forceRightToLeft", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 50, + "symbol": "HeroDefaultAnimationType.Strategy.userInterface", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 50, + "symbol": "HeroDefaultAnimationType.Strategy.userInterface", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 63, + "symbol": "HeroDefaultAnimationType.auto", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 63, + "symbol": "HeroDefaultAnimationType.auto", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 64, + "symbol": "HeroDefaultAnimationType.push(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 64, + "symbol": "HeroDefaultAnimationType.push(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 65, + "symbol": "HeroDefaultAnimationType.pull(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 65, + "symbol": "HeroDefaultAnimationType.pull(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 66, + "symbol": "HeroDefaultAnimationType.cover(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 66, + "symbol": "HeroDefaultAnimationType.cover(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 67, + "symbol": "HeroDefaultAnimationType.uncover(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 67, + "symbol": "HeroDefaultAnimationType.uncover(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 68, + "symbol": "HeroDefaultAnimationType.slide(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 68, + "symbol": "HeroDefaultAnimationType.slide(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 69, + "symbol": "HeroDefaultAnimationType.zoomSlide(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 69, + "symbol": "HeroDefaultAnimationType.zoomSlide(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 70, + "symbol": "HeroDefaultAnimationType.pageIn(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 70, + "symbol": "HeroDefaultAnimationType.pageIn(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 71, + "symbol": "HeroDefaultAnimationType.pageOut(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 71, + "symbol": "HeroDefaultAnimationType.pageOut(direction:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 72, + "symbol": "HeroDefaultAnimationType.fade", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 72, + "symbol": "HeroDefaultAnimationType.fade", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 73, + "symbol": "HeroDefaultAnimationType.zoom", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 73, + "symbol": "HeroDefaultAnimationType.zoom", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 74, + "symbol": "HeroDefaultAnimationType.zoomOut", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 74, + "symbol": "HeroDefaultAnimationType.zoomOut", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 76, + "symbol": "HeroDefaultAnimationType.selectBy(presenting:dismissing:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 76, + "symbol": "HeroDefaultAnimationType.selectBy(presenting:dismissing:)", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 78, + "symbol": "HeroDefaultAnimationType.autoReverse(presenting:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 78, + "symbol": "HeroDefaultAnimationType.autoReverse(presenting:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 82, + "symbol": "HeroDefaultAnimationType.none", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 82, + "symbol": "HeroDefaultAnimationType.none", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 160, + "symbol": "HeroDefaultAnimationType.label", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 160, + "symbol": "HeroDefaultAnimationType.label", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 174, + "symbol": "HeroDefaultAnimationType", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 174, + "symbol": "HeroDefaultAnimationType", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 175, + "symbol": "HeroDefaultAnimationType.from(node:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Preprocessors/DefaultAnimationPreprocessor.swift", + "line": 175, + "symbol": "HeroDefaultAnimationType.from(node:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+Animate.swift", + "line": 26, + "symbol": "HeroTransition.animate()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+Animate.swift", + "line": 26, + "symbol": "HeroTransition.animate()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+Complete.swift", + "line": 26, + "symbol": "HeroTransition.complete(finished:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+Complete.swift", + "line": 26, + "symbol": "HeroTransition.complete(finished:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+CustomTransition.swift", + "line": 27, + "symbol": "HeroTransition.transition(from:to:in:completion:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+CustomTransition.swift", + "line": 27, + "symbol": "HeroTransition.transition(from:to:in:completion:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+Start.swift", + "line": 26, + "symbol": "HeroTransition.start()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+Start.swift", + "line": 26, + "symbol": "HeroTransition.start()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UINavigationControllerDelegate.swift", + "line": 26, + "symbol": "HeroTransition.navigationController(_:willShow:animated:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UINavigationControllerDelegate.swift", + "line": 26, + "symbol": "HeroTransition.navigationController(_:willShow:animated:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UINavigationControllerDelegate.swift", + "line": 32, + "symbol": "HeroTransition.navigationController(_:didShow:animated:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UINavigationControllerDelegate.swift", + "line": 32, + "symbol": "HeroTransition.navigationController(_:didShow:animated:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UINavigationControllerDelegate.swift", + "line": 38, + "symbol": "HeroTransition.navigationController(_:animationControllerFor:from:to:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UINavigationControllerDelegate.swift", + "line": 38, + "symbol": "HeroTransition.navigationController(_:animationControllerFor:from:to:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UINavigationControllerDelegate.swift", + "line": 48, + "symbol": "HeroTransition.navigationController(_:interactionControllerFor:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UINavigationControllerDelegate.swift", + "line": 48, + "symbol": "HeroTransition.navigationController(_:interactionControllerFor:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UITabBarControllerDelegate.swift", + "line": 26, + "symbol": "HeroTransition.tabBarController(_:shouldSelect:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UITabBarControllerDelegate.swift", + "line": 26, + "symbol": "HeroTransition.tabBarController(_:shouldSelect:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UITabBarControllerDelegate.swift", + "line": 36, + "symbol": "HeroTransition.tabBarController(_:interactionControllerFor:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UITabBarControllerDelegate.swift", + "line": 36, + "symbol": "HeroTransition.tabBarController(_:interactionControllerFor:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UITabBarControllerDelegate.swift", + "line": 40, + "symbol": "HeroTransition.tabBarController(_:animationControllerForTransitionFrom:to:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UITabBarControllerDelegate.swift", + "line": 40, + "symbol": "HeroTransition.tabBarController(_:animationControllerForTransitionFrom:to:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 30, + "symbol": "HeroTransition.animationController(forPresented:presenting:source:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 30, + "symbol": "HeroTransition.animationController(forPresented:presenting:source:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 39, + "symbol": "HeroTransition.animationController(forDismissed:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 39, + "symbol": "HeroTransition.animationController(forDismissed:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 47, + "symbol": "HeroTransition.interactionControllerForDismissal(using:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 47, + "symbol": "HeroTransition.interactionControllerForDismissal(using:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 51, + "symbol": "HeroTransition.interactionControllerForPresentation(using:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 51, + "symbol": "HeroTransition.interactionControllerForPresentation(using:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 57, + "symbol": "HeroTransition.animateTransition(using:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 57, + "symbol": "HeroTransition.animateTransition(using:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 64, + "symbol": "HeroTransition.transitionDuration(using:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 64, + "symbol": "HeroTransition.transitionDuration(using:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 68, + "symbol": "HeroTransition.animationEnded(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 68, + "symbol": "HeroTransition.animationEnded(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 74, + "symbol": "HeroTransition.wantsInteractiveStart", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 74, + "symbol": "HeroTransition.wantsInteractiveStart", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 77, + "symbol": "HeroTransition.startInteractiveTransition(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition+UIViewControllerTransitioningDelegate.swift", + "line": 77, + "symbol": "HeroTransition.startInteractiveTransition(_:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 25, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 26, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 26, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 46, + "symbol": "HeroTransitionDelegate", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 46, + "symbol": "HeroTransitionDelegate", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 47, + "symbol": "HeroTransitionDelegate.heroTransition(_:didUpdate:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 47, + "symbol": "HeroTransitionDelegate.heroTransition(_:didUpdate:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 48, + "symbol": "HeroTransitionDelegate.heroTransition(_:didUpdate:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 48, + "symbol": "HeroTransitionDelegate.heroTransition(_:didUpdate:)", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 51, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 51, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.class", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 52, + "symbol": "HeroTransition.delegate", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 52, + "symbol": "HeroTransition.delegate", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 54, + "symbol": "HeroTransition.defaultAnimation", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 54, + "symbol": "HeroTransition.defaultAnimation", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 55, + "symbol": "HeroTransition.containerColor", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 55, + "symbol": "HeroTransition.containerColor", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 56, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 56, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 56, + "symbol": "HeroTransition.isUserInteractionEnabled", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 56, + "symbol": "HeroTransition.isUserInteractionEnabled", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 57, + "symbol": "HeroTransition.viewOrderingStrategy", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 57, + "symbol": "HeroTransition.viewOrderingStrategy", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 58, + "symbol": "HeroTransition.defaultAnimationDirectionStrategy", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 58, + "symbol": "HeroTransition.defaultAnimationDirectionStrategy", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 60, + "symbol": "HeroTransition.state", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 60, + "symbol": "HeroTransition.state", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 70, + "symbol": "HeroTransition.isTransitioning", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 70, + "symbol": "HeroTransition.isTransitioning", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 71, + "symbol": "HeroTransition.isPresenting", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 71, + "symbol": "HeroTransition.isPresenting", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 73, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 73, + "symbol": "HeroTransition", + "symbol_kind": "source.lang.swift.decl.extension", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 74, + "symbol": "HeroTransition.transitioning", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 74, + "symbol": "HeroTransition.transitioning", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 78, + "symbol": "HeroTransition.presenting", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 78, + "symbol": "HeroTransition.presenting", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 177, + "symbol": "HeroTransition.init()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransition.swift", + "line": 177, + "symbol": "HeroTransition.init()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransitionState.swift", + "line": 25, + "symbol": "HeroTransitionState", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransitionState.swift", + "line": 25, + "symbol": "HeroTransitionState", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransitionState.swift", + "line": 27, + "symbol": "HeroTransitionState.possible", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransitionState.swift", + "line": 27, + "symbol": "HeroTransitionState.possible", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransitionState.swift", + "line": 31, + "symbol": "HeroTransitionState.notified", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransitionState.swift", + "line": 31, + "symbol": "HeroTransitionState.notified", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransitionState.swift", + "line": 34, + "symbol": "HeroTransitionState.starting", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransitionState.swift", + "line": 34, + "symbol": "HeroTransitionState.starting", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransitionState.swift", + "line": 37, + "symbol": "HeroTransitionState.animating", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransitionState.swift", + "line": 37, + "symbol": "HeroTransitionState.animating", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransitionState.swift", + "line": 40, + "symbol": "HeroTransitionState.completing", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/mattielloj/Workspace/Git/Hero/Sources/Transition/HeroTransitionState.swift", + "line": 40, + "symbol": "HeroTransitionState.completing", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + } + ], + "source_directory": "/Users/mattielloj/Workspace/Git/Hero" +} \ No newline at end of file