From af73805c93d770b45590848ff6938029b691cd20 Mon Sep 17 00:00:00 2001 From: Christopher Mays Date: Fri, 8 Dec 2017 15:13:30 -0500 Subject: [PATCH 1/6] Make podspec work with static libraries. --- HyperioniOS.podspec | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/HyperioniOS.podspec b/HyperioniOS.podspec index 5394582..090d86c 100644 --- a/HyperioniOS.podspec +++ b/HyperioniOS.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = 'HyperioniOS' - s.version = '1.0.1' + s.version = '1.0.2' s.summary = 'Hyperion is an app design review tool that allows you to inspect views and perform measurements live within your app.' # This description is used to generate tags and improve search results. @@ -31,26 +31,30 @@ Hyperion is an app design review tool that allows you to inspect views and perfo s.frameworks = ["UIKit"] s.subspec 'Core' do |core| - core.source_files = 'Core/**/*' + core.source_files = 'Core/**/*.{h,m}' core.exclude_files = 'Core/**/*.md' + core.resources = ['Core/**/*.png', 'Core/**/*.xib', 'Core/**/*.plist'] end s.subspec 'AttributesInspector' do |attributes| attributes.dependency 'HyperioniOS/Core' - attributes.source_files = 'AttributesInspector/**/*' + attributes.source_files = 'AttributesInspector/**/*.{h,m}' attributes.exclude_files = 'AttributesInspector/**/*.md' + attributes.resources = ['AttributesInspector/**/*.png', 'AttributesInspector/**/*.xib', 'AttributesInspector/**/*.plist'] end s.subspec 'SlowAnimations' do |slowanimations| slowanimations.dependency 'HyperioniOS/Core' - slowanimations.source_files = 'SlowAnimations/**/*' + slowanimations.source_files = 'SlowAnimations/**/*.{h,m}' slowanimations.exclude_files = 'SlowAnimations/**/*.md' + slowanimations.resources = ['SlowAnimations/**/*.png', 'SlowAnimations/**/*.xib', 'SlowAnimations/**/*.plist'] end s.subspec 'Measurements' do |measurements| measurements.dependency 'HyperioniOS/Core' - measurements.source_files = 'Measurements/**/*' + measurements.source_files = 'Measurements/**/*.{h,m}' measurements.exclude_files = 'Measurements/**/*.md' + measurements.resources = ['Measurements/**/*.png', 'Measurements/**/*.xib', 'Measurements/**/*.plist'] end end From 78d56eb297bd20dcc5d19371e0b80bd2ab7a9b55 Mon Sep 17 00:00:00 2001 From: Christopher Mays Date: Wed, 27 Dec 2017 13:34:51 -0500 Subject: [PATCH 2/6] Blacklist certain views from selection. Reference #31 --- Core/Public/Plugin/HYPPluginHelper.m | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Core/Public/Plugin/HYPPluginHelper.m b/Core/Public/Plugin/HYPPluginHelper.m index 167d39f..461d95f 100644 --- a/Core/Public/Plugin/HYPPluginHelper.m +++ b/Core/Public/Plugin/HYPPluginHelper.m @@ -27,6 +27,7 @@ @implementation HYPPluginHelper { NSMutableArray *potentialSelectionViews = [[NSMutableArray alloc] init]; NSArray *subviews = [view subviews]; + NSSet *blackList = [self blacklistedViews]; for (UIView *subView in [subviews reverseObjectEnumerator]) { @@ -34,7 +35,7 @@ @implementation HYPPluginHelper { [potentialSelectionViews addObjectsFromArray:[self findSubviewsInView:subView intersectingPoint:point]]; - if ([self view:subView surrondsPoint:point]) + if ([self view:subView surrondsPoint:point] && ![blackList containsObject:NSStringFromClass([subView class])]) { [potentialSelectionViews addObject:subView]; } @@ -52,4 +53,15 @@ +(BOOL)view:(UIView *)view surrondsPoint:(CGPoint)point viewRect.origin.y <= point.y && (viewRect.size.height + viewRect.origin.y) >= point.y; } +/** + * This returns a list of views that we do not want to show up as selectable views. + * Reference: https://github.com/willowtreeapps/Hyperion-iOS/issues/31 + */ ++(NSSet *)blacklistedViews +{ + NSMutableSet *blackListedViews = [[NSMutableSet alloc] initWithArray:@[@"_UINavigationControllerPaletteClippingView"]]; + + return blackListedViews; +} + @end From a3fba236aa672d3013bcb432d63da2d32caf3213 Mon Sep 17 00:00:00 2001 From: ecompton3 Date: Thu, 4 Jan 2018 15:16:47 -0500 Subject: [PATCH 3/6] Add ability to see accessibility id --- .../AttributeProviders/HYPAttributesProvider.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/AttributesInspector/AttributesViewer/AttributeProviders/HYPAttributesProvider.m b/AttributesInspector/AttributesViewer/AttributeProviders/HYPAttributesProvider.m index 3fa8822..f512132 100644 --- a/AttributesInspector/AttributesViewer/AttributeProviders/HYPAttributesProvider.m +++ b/AttributesInspector/AttributesViewer/AttributeProviders/HYPAttributesProvider.m @@ -65,6 +65,9 @@ -(Class)providerClass HYPKeyValueInspectorAttribute *accessibilityHintAttribute = [[HYPKeyValueInspectorAttribute alloc] initWithKey:@"Accessibility Hint" value:view.accessibilityHint ? view.accessibilityHint : @"--" ]; [viewAttributes addObject:accessibilityHintAttribute]; + + HYPKeyValueInspectorAttribute *accessibilityIDAttribute = [[HYPKeyValueInspectorAttribute alloc] initWithKey:@"Accessibility ID" value:view.accessibilityIdentifier ? view.accessibilityIdentifier : @"--" ]; + [viewAttributes addObject:accessibilityIDAttribute]; return viewAttributes; From 466a90b87dae8b0f169aac7c8a66029dea1ada05 Mon Sep 17 00:00:00 2001 From: Christopher Mays Date: Tue, 16 Jan 2018 19:56:49 -0500 Subject: [PATCH 4/6] Make Hyperion iOS 9 compatible by changing NSAttributedStringKey to NSString. --- .../AttributeProviders/HYPAttributedStringAttributeProvider.m | 2 +- .../AttributesViewer/PreviewViews/HYPTextPreview.m | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/AttributesInspector/AttributesViewer/AttributeProviders/HYPAttributedStringAttributeProvider.m b/AttributesInspector/AttributesViewer/AttributeProviders/HYPAttributedStringAttributeProvider.m index 054c886..b7a8a57 100644 --- a/AttributesInspector/AttributesViewer/AttributeProviders/HYPAttributedStringAttributeProvider.m +++ b/AttributesInspector/AttributesViewer/AttributeProviders/HYPAttributedStringAttributeProvider.m @@ -28,7 +28,7 @@ @implementation HYPAttributedStringAttributeProvider { NSMutableArray> *viewAttributes = [[NSMutableArray alloc] init]; - [attributedString enumerateAttributesInRange:NSMakeRange(0, attributedString.length) options:0 usingBlock:^(NSDictionary * _Nonnull attrs, NSRange range, BOOL * _Nonnull stop) { + [attributedString enumerateAttributesInRange:NSMakeRange(0, attributedString.length) options:0 usingBlock:^(NSDictionary * _Nonnull attrs, NSRange range, BOOL * _Nonnull stop) { HYPAttributedStringInspectorAttribute *attribute = [[HYPAttributedStringInspectorAttribute alloc] initWithAttributedString:[attributedString attributedSubstringFromRange:range] range:range]; [viewAttributes addObject:attribute]; }]; diff --git a/AttributesInspector/AttributesViewer/PreviewViews/HYPTextPreview.m b/AttributesInspector/AttributesViewer/PreviewViews/HYPTextPreview.m index 26d9847..278f95f 100644 --- a/AttributesInspector/AttributesViewer/PreviewViews/HYPTextPreview.m +++ b/AttributesInspector/AttributesViewer/PreviewViews/HYPTextPreview.m @@ -53,12 +53,12 @@ -(instancetype)initWithAttributedString:(NSAttributedString *)string { self = [[NSBundle bundleForClass:[self class]] loadNibNamed:@"HYPTextPreview" owner:self options:nil].firstObject; - __block NSDictionary *attributes; + __block NSDictionary *attributes; __block BOOL viewTooComplicated = false; NSRange range = NSMakeRange(0, string.length); - [string enumerateAttributesInRange:range options:0 usingBlock:^(NSDictionary * _Nonnull attrs, NSRange range, BOOL * _Nonnull stop) { + [string enumerateAttributesInRange:range options:0 usingBlock:^(NSDictionary * _Nonnull attrs, NSRange range, BOOL * _Nonnull stop) { if (attributes) { From 68267be9545920af664fd90c840648b10eea52a4 Mon Sep 17 00:00:00 2001 From: Christopher Mays Date: Sat, 20 Jan 2018 15:00:58 -0500 Subject: [PATCH 5/6] Fix issue #35. Maintains a consistent order for plugins, and ensures the slow animations plugin does not get cut off. --- Core/Public/HyperionManager.m | 4 ++++ Core/Public/Plugin/HYPPluginMenuItem.h | 5 +++++ Core/Public/Plugin/HYPPluginMenuItem.m | 19 +++++++++++++++++-- .../HYPSlowAnimationsPluginMenuItem.m | 2 ++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/Core/Public/HyperionManager.m b/Core/Public/HyperionManager.m index 831131d..fecf2bb 100644 --- a/Core/Public/HyperionManager.m +++ b/Core/Public/HyperionManager.m @@ -197,6 +197,10 @@ -(void)setActivationGesture:(HYPActivationGestureOptions)gesture { NSMutableArray> *mutablePluginModules = [[NSMutableArray alloc] init]; NSArray> *pluginClasses = [self retrievePluginClasses]; + pluginClasses = [pluginClasses sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { + return [[[obj1 class] description] compare:[[obj2 class] description]]; + }]; + for (Class pluginClass in pluginClasses) { if ([pluginClass conformsToProtocol:@protocol(HYPPlugin)]) diff --git a/Core/Public/Plugin/HYPPluginMenuItem.h b/Core/Public/Plugin/HYPPluginMenuItem.h index e3f29c1..1d30655 100644 --- a/Core/Public/Plugin/HYPPluginMenuItem.h +++ b/Core/Public/Plugin/HYPPluginMenuItem.h @@ -90,4 +90,9 @@ */ @property (nonatomic) UIImageView *pluginImageView; +/** + * The height of the plugin menu item. This value defaults to 130. + */ +@property (nonatomic) CGFloat height; + @end diff --git a/Core/Public/Plugin/HYPPluginMenuItem.m b/Core/Public/Plugin/HYPPluginMenuItem.m index 984c0de..4dfd806 100644 --- a/Core/Public/Plugin/HYPPluginMenuItem.m +++ b/Core/Public/Plugin/HYPPluginMenuItem.m @@ -20,6 +20,11 @@ // #import "HYPPluginMenuItem.h" +@interface HYPPluginMenuItem() + +@property (nonatomic) NSLayoutConstraint *heightConstraint; + +@end @implementation HYPPluginMenuItem @synthesize delegate = _delegate; @synthesize selected = _selected; @@ -34,11 +39,15 @@ -(instancetype)init self.titleLabel.translatesAutoresizingMaskIntoConstraints = false; self.pluginImageView.translatesAutoresizingMaskIntoConstraints = false; + _height = 130; + + self.heightConstraint = [self.heightAnchor constraintEqualToConstant:_height]; + self.heightConstraint.active = true; + [self addSubview:self.titleLabel]; [self addSubview:self.pluginImageView]; [self.pluginImageView.topAnchor constraintEqualToAnchor:self.topAnchor constant:50].active = true; - [self.pluginImageView.bottomAnchor constraintEqualToAnchor:self.bottomAnchor constant:-50].active = true; [self.pluginImageView.heightAnchor constraintEqualToConstant:30].active = true; [self.pluginImageView.widthAnchor constraintEqualToConstant:30].active = true; @@ -46,7 +55,7 @@ -(instancetype)init self.titleLabel.numberOfLines = 2; [self.titleLabel.leadingAnchor constraintEqualToAnchor:self.pluginImageView.trailingAnchor constant:28].active = true; - [self.titleLabel.centerYAnchor constraintEqualToAnchor:self.centerYAnchor].active = true; + [self.titleLabel.centerYAnchor constraintEqualToAnchor:self.pluginImageView.centerYAnchor].active = true; [self.titleLabel.widthAnchor constraintEqualToConstant:114].active = true; [self setSelected:NO animated:NO]; @@ -87,4 +96,10 @@ -(void)setSelected:(BOOL)selected animated:(BOOL)animated; self.pluginImageView.tintColor = self.titleLabel.textColor; } +-(void)setHeight:(CGFloat)height +{ + _height = height; + self.heightConstraint.constant = _height; +} + @end diff --git a/SlowAnimations/HYPSlowAnimationsPluginMenuItem.m b/SlowAnimations/HYPSlowAnimationsPluginMenuItem.m index e24c396..a3ae415 100644 --- a/SlowAnimations/HYPSlowAnimationsPluginMenuItem.m +++ b/SlowAnimations/HYPSlowAnimationsPluginMenuItem.m @@ -33,6 +33,8 @@ -(instancetype)init { self = [super init]; + self.height = 160; + _quarterSpeed = [UIButton buttonWithType:UIButtonTypeCustom]; [_quarterSpeed setImage:[UIImage imageWithContentsOfFile:[[NSBundle bundleForClass:[self class]] pathForResource:@"25x-Unselected" ofType:@"png"]] forState:UIControlStateNormal]; From 6de329706114b57d4b66841a87121a4fb2f02f76 Mon Sep 17 00:00:00 2001 From: Christopher Mays Date: Mon, 22 Jan 2018 10:09:43 -0500 Subject: [PATCH 6/6] Update docs for version 1.0.2. --- docs/Classes.html | 4 +- docs/Classes/HYPPluginHelper.html | 2 +- docs/Classes/HYPPluginMenuItem.html | 37 ++++++++++- docs/Classes/HYPSnapShotInteractionView.html | 2 +- docs/Classes/HYPSnapshotPluginModule.html | 2 +- docs/Classes/HyperionManager.html | 2 +- docs/Constants.html | 2 +- docs/Enums.html | 2 +- docs/Enums/HYPActivationGestureOptions.html | 2 +- docs/Protocols.html | 2 +- docs/Protocols/HYPOverlayContainer.html | 2 +- .../HYPOverlayPluginViewProvider.html | 2 +- docs/Protocols/HYPPlugin.html | 2 +- docs/Protocols/HYPPluginExtension.html | 2 +- docs/Protocols/HYPPluginMenuItem.html | 2 +- docs/Protocols/HYPPluginMenuItemDelegate.html | 2 +- docs/Protocols/HYPPluginModule.html | 2 +- docs/Protocols/HYPSnapShotContainer.html | 2 +- .../HYPSnapShotPluginViewProvider.html | 2 +- docs/Protocols/HYPViewSelectionDelegate.html | 2 +- .../Contents/Resources/Documents/Classes.html | 4 +- .../Documents/Classes/HYPPluginHelper.html | 2 +- .../Documents/Classes/HYPPluginMenuItem.html | 37 ++++++++++- .../Classes/HYPSnapShotInteractionView.html | 2 +- .../Classes/HYPSnapshotPluginModule.html | 2 +- .../Documents/Classes/HyperionManager.html | 2 +- .../Resources/Documents/Constants.html | 2 +- .../Contents/Resources/Documents/Enums.html | 2 +- .../Enums/HYPActivationGestureOptions.html | 2 +- .../Resources/Documents/Protocols.html | 2 +- .../Protocols/HYPOverlayContainer.html | 2 +- .../HYPOverlayPluginViewProvider.html | 2 +- .../Documents/Protocols/HYPPlugin.html | 2 +- .../Protocols/HYPPluginExtension.html | 2 +- .../Protocols/HYPPluginMenuItem.html | 2 +- .../Protocols/HYPPluginMenuItemDelegate.html | 2 +- .../Documents/Protocols/HYPPluginModule.html | 2 +- .../Protocols/HYPSnapShotContainer.html | 2 +- .../HYPSnapShotPluginViewProvider.html | 2 +- .../Protocols/HYPViewSelectionDelegate.html | 2 +- .../Contents/Resources/Documents/badge.svg | 4 +- .../Contents/Resources/Documents/index.html | 62 +++++++++++++----- .../Contents/Resources/Documents/search.json | 2 +- .../Resources/Documents/undocumented.json | 14 ++++ .../Contents/Resources/docSet.dsidx | Bin 36864 -> 36864 bytes docs/docsets/HyperionCore.tgz | Bin 70445 -> 71169 bytes docs/index.html | 62 +++++++++++++----- docs/search.json | 2 +- 48 files changed, 224 insertions(+), 76 deletions(-) diff --git a/docs/Classes.html b/docs/Classes.html index 689c294..821c34b 100644 --- a/docs/Classes.html +++ b/docs/Classes.html @@ -232,7 +232,7 @@

Declaration

@@ -363,7 +363,7 @@

Declaration

diff --git a/docs/Classes/HYPPluginHelper.html b/docs/Classes/HYPPluginHelper.html index 97f95ec..c860eaa 100644 --- a/docs/Classes/HYPPluginHelper.html +++ b/docs/Classes/HYPPluginHelper.html @@ -198,7 +198,7 @@

Parameters

diff --git a/docs/Classes/HYPPluginMenuItem.html b/docs/Classes/HYPPluginMenuItem.html index 22f7256..e79508e 100644 --- a/docs/Classes/HYPPluginMenuItem.html +++ b/docs/Classes/HYPPluginMenuItem.html @@ -300,12 +300,47 @@

Declaration

+
  • +
    + + + + height + +
    +
    +
    +
    +
    +
    +

    The height of the plugin menu item. This value defaults to 130.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (assign, readwrite, nonatomic) CGFloat height;
    + +
    +
    +

    Swift

    +
    var height: Int32 { get set }
    + +
    +
    + +
    +
    +
  • diff --git a/docs/Classes/HYPSnapShotInteractionView.html b/docs/Classes/HYPSnapShotInteractionView.html index 8575ab1..3846c92 100644 --- a/docs/Classes/HYPSnapShotInteractionView.html +++ b/docs/Classes/HYPSnapShotInteractionView.html @@ -333,7 +333,7 @@

    Declaration

    diff --git a/docs/Classes/HYPSnapshotPluginModule.html b/docs/Classes/HYPSnapshotPluginModule.html index d032357..a4e60f8 100644 --- a/docs/Classes/HYPSnapshotPluginModule.html +++ b/docs/Classes/HYPSnapshotPluginModule.html @@ -288,7 +288,7 @@

    Return Value

    diff --git a/docs/Classes/HyperionManager.html b/docs/Classes/HyperionManager.html index 30c99fb..84c7055 100644 --- a/docs/Classes/HyperionManager.html +++ b/docs/Classes/HyperionManager.html @@ -411,7 +411,7 @@

    Declaration

    diff --git a/docs/Constants.html b/docs/Constants.html index ea5503b..b4a506a 100644 --- a/docs/Constants.html +++ b/docs/Constants.html @@ -228,7 +228,7 @@

    Declaration

    diff --git a/docs/Enums.html b/docs/Enums.html index 02ff8df..1c8bd6d 100644 --- a/docs/Enums.html +++ b/docs/Enums.html @@ -155,7 +155,7 @@

    Declaration

    diff --git a/docs/Enums/HYPActivationGestureOptions.html b/docs/Enums/HYPActivationGestureOptions.html index e6fba4a..c76e9bf 100644 --- a/docs/Enums/HYPActivationGestureOptions.html +++ b/docs/Enums/HYPActivationGestureOptions.html @@ -251,7 +251,7 @@

    Declaration

    diff --git a/docs/Protocols.html b/docs/Protocols.html index 4b6fb8f..baa4371 100644 --- a/docs/Protocols.html +++ b/docs/Protocols.html @@ -513,7 +513,7 @@

    Declaration

    diff --git a/docs/Protocols/HYPOverlayContainer.html b/docs/Protocols/HYPOverlayContainer.html index 095f9d1..b8829bf 100644 --- a/docs/Protocols/HYPOverlayContainer.html +++ b/docs/Protocols/HYPOverlayContainer.html @@ -165,7 +165,7 @@

    Declaration

    diff --git a/docs/Protocols/HYPOverlayPluginViewProvider.html b/docs/Protocols/HYPOverlayPluginViewProvider.html index 47cc75b..07f5e7b 100644 --- a/docs/Protocols/HYPOverlayPluginViewProvider.html +++ b/docs/Protocols/HYPOverlayPluginViewProvider.html @@ -224,7 +224,7 @@

    Declaration

    diff --git a/docs/Protocols/HYPPlugin.html b/docs/Protocols/HYPPlugin.html index c37e2c4..21e5e1a 100644 --- a/docs/Protocols/HYPPlugin.html +++ b/docs/Protocols/HYPPlugin.html @@ -358,7 +358,7 @@

    Return Value

    diff --git a/docs/Protocols/HYPPluginExtension.html b/docs/Protocols/HYPPluginExtension.html index 3f9513c..afa56f4 100644 --- a/docs/Protocols/HYPPluginExtension.html +++ b/docs/Protocols/HYPPluginExtension.html @@ -356,7 +356,7 @@

    Parameters

    diff --git a/docs/Protocols/HYPPluginMenuItem.html b/docs/Protocols/HYPPluginMenuItem.html index f9e4630..07aeace 100644 --- a/docs/Protocols/HYPPluginMenuItem.html +++ b/docs/Protocols/HYPPluginMenuItem.html @@ -267,7 +267,7 @@

    Declaration

    diff --git a/docs/Protocols/HYPPluginMenuItemDelegate.html b/docs/Protocols/HYPPluginMenuItemDelegate.html index 6549b16..0a5dee5 100644 --- a/docs/Protocols/HYPPluginMenuItemDelegate.html +++ b/docs/Protocols/HYPPluginMenuItemDelegate.html @@ -185,7 +185,7 @@

    Parameters

    diff --git a/docs/Protocols/HYPPluginModule.html b/docs/Protocols/HYPPluginModule.html index 1b3d3bb..e5ed19c 100644 --- a/docs/Protocols/HYPPluginModule.html +++ b/docs/Protocols/HYPPluginModule.html @@ -256,7 +256,7 @@

    Declaration

    diff --git a/docs/Protocols/HYPSnapShotContainer.html b/docs/Protocols/HYPSnapShotContainer.html index 0cee660..aa8dd5f 100644 --- a/docs/Protocols/HYPSnapShotContainer.html +++ b/docs/Protocols/HYPSnapShotContainer.html @@ -498,7 +498,7 @@

    Declaration

    diff --git a/docs/Protocols/HYPSnapShotPluginViewProvider.html b/docs/Protocols/HYPSnapShotPluginViewProvider.html index b13b008..cb78284 100644 --- a/docs/Protocols/HYPSnapShotPluginViewProvider.html +++ b/docs/Protocols/HYPSnapShotPluginViewProvider.html @@ -345,7 +345,7 @@

    Parameters

    diff --git a/docs/Protocols/HYPViewSelectionDelegate.html b/docs/Protocols/HYPViewSelectionDelegate.html index 6efe335..4e3bfae 100644 --- a/docs/Protocols/HYPViewSelectionDelegate.html +++ b/docs/Protocols/HYPViewSelectionDelegate.html @@ -185,7 +185,7 @@

    Parameters

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes.html index 689c294..821c34b 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes.html @@ -232,7 +232,7 @@

    Declaration

    @@ -363,7 +363,7 @@

    Declaration

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPPluginHelper.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPPluginHelper.html index 97f95ec..c860eaa 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPPluginHelper.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPPluginHelper.html @@ -198,7 +198,7 @@

    Parameters

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPPluginMenuItem.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPPluginMenuItem.html index 22f7256..e79508e 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPPluginMenuItem.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPPluginMenuItem.html @@ -300,12 +300,47 @@

    Declaration

    +
  • +
    + + + + height + +
    +
    +
    +
    +
    +
    +

    The height of the plugin menu item. This value defaults to 130.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (assign, readwrite, nonatomic) CGFloat height;
    + +
    +
    +

    Swift

    +
    var height: Int32 { get set }
    + +
    +
    + +
    +
    +
  • diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPSnapShotInteractionView.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPSnapShotInteractionView.html index 8575ab1..3846c92 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPSnapShotInteractionView.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPSnapShotInteractionView.html @@ -333,7 +333,7 @@

    Declaration

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPSnapshotPluginModule.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPSnapshotPluginModule.html index d032357..a4e60f8 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPSnapshotPluginModule.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HYPSnapshotPluginModule.html @@ -288,7 +288,7 @@

    Return Value

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HyperionManager.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HyperionManager.html index 30c99fb..84c7055 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HyperionManager.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Classes/HyperionManager.html @@ -411,7 +411,7 @@

    Declaration

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Constants.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Constants.html index ea5503b..b4a506a 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Constants.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Constants.html @@ -228,7 +228,7 @@

    Declaration

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Enums.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Enums.html index 02ff8df..1c8bd6d 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Enums.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Enums.html @@ -155,7 +155,7 @@

    Declaration

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Enums/HYPActivationGestureOptions.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Enums/HYPActivationGestureOptions.html index e6fba4a..c76e9bf 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Enums/HYPActivationGestureOptions.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Enums/HYPActivationGestureOptions.html @@ -251,7 +251,7 @@

    Declaration

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols.html index 4b6fb8f..baa4371 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols.html @@ -513,7 +513,7 @@

    Declaration

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPOverlayContainer.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPOverlayContainer.html index 095f9d1..b8829bf 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPOverlayContainer.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPOverlayContainer.html @@ -165,7 +165,7 @@

    Declaration

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPOverlayPluginViewProvider.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPOverlayPluginViewProvider.html index 47cc75b..07f5e7b 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPOverlayPluginViewProvider.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPOverlayPluginViewProvider.html @@ -224,7 +224,7 @@

    Declaration

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPlugin.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPlugin.html index c37e2c4..21e5e1a 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPlugin.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPlugin.html @@ -358,7 +358,7 @@

    Return Value

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginExtension.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginExtension.html index 3f9513c..afa56f4 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginExtension.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginExtension.html @@ -356,7 +356,7 @@

    Parameters

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginMenuItem.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginMenuItem.html index f9e4630..07aeace 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginMenuItem.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginMenuItem.html @@ -267,7 +267,7 @@

    Declaration

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginMenuItemDelegate.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginMenuItemDelegate.html index 6549b16..0a5dee5 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginMenuItemDelegate.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginMenuItemDelegate.html @@ -185,7 +185,7 @@

    Parameters

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginModule.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginModule.html index 1b3d3bb..e5ed19c 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginModule.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPPluginModule.html @@ -256,7 +256,7 @@

    Declaration

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPSnapShotContainer.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPSnapShotContainer.html index 0cee660..aa8dd5f 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPSnapShotContainer.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPSnapShotContainer.html @@ -498,7 +498,7 @@

    Declaration

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPSnapShotPluginViewProvider.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPSnapShotPluginViewProvider.html index b13b008..cb78284 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPSnapShotPluginViewProvider.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPSnapShotPluginViewProvider.html @@ -345,7 +345,7 @@

    Parameters

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPViewSelectionDelegate.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPViewSelectionDelegate.html index 6efe335..4e3bfae 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPViewSelectionDelegate.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/Protocols/HYPViewSelectionDelegate.html @@ -185,7 +185,7 @@

    Parameters

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/badge.svg b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/badge.svg index f47d948..7c971c6 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/badge.svg +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/badge.svg @@ -19,10 +19,10 @@ documentation - 98% + 96% - 98% + 96% diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/index.html b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/index.html index 6da1a99..4cb1643 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/index.html +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/index.html @@ -124,11 +124,15 @@

    Hyperion

    Hyperion - In App Design Review Tool

    What is it?

    -

    Hyperion Drawer

    +

    + +

    Hyperion is a hidden plugin drawer that can easily be integrated into any app. The drawer sits discreetly 🙊 under the app so that it is there when you need it and out of the way when you don’t. Hyperion plugins are designed to make inspection of your app quick and simple. For example, check out this plugin that allows you to measure distances between views:

    -

    Example Measurements

    +

    + +

    If you like what you see, there’s more where that came from.

    First-Party Plugins

    @@ -136,21 +140,29 @@

    View Inspector

    The View Inspector plugin allows you to inspect the properties of any view live within the app.

    -

    View Inspector Example

    +

    + +

    Have a tiny view you want to inspect? No problem, you can zoom in on any portion of the app while the plugin is active.

    -

    Zoom Example

    +

    + +

    Measurements

    The Measurements plugin allows you to measure the distance between any two views on the screen. No more guessing whether padding is correct-this plugin has you covered.

    -

    Example Measurements

    +

    + +

    Slow Animations

    Having trouble verifying an animation matches design? The Slow Animations plugin allows you to slow down all animations within the app to 75%, 50% or 25% the normal speed.

    -

    Slow Animations

    +

    + +

    Third-Party Plugins

    Calling all developers!!! Be one of the first to create a third-party plugin. The plugin creation guide is a work in progress, but if you are feeling ambitious you can reference the plugins we have already created along with our documentation.

    @@ -159,7 +171,7 @@

    How To Show Hyperion P

    Once Hyperion is integrated into your app, simply shake your phone.

    Customizing Hyperion

    -

    Hyperion was designed as a drag and drop framework that requires 0 code to integrate. If you want to customize Hyperion you can create a configuration file (called HyperionConfiguration.plist). Use this file as an example. For now you can only configure what gestures trigger the Hyperion drawer, but there are plans to add theming and plugin ordering.

    +

    Hyperion was designed as a drag and drop framework that requires 0 code to integrate. If you want to customize Hyperion you can create a configuration file (called HyperionConfiguration.plist). Use this file as an example. For now you can only configure what gestures trigger the Hyperion drawer, but there are plans to add theming and plugin ordering.

    Example App

    Want to learn how to use Hyperion? The example app will teach you!

    @@ -170,17 +182,21 @@

    Requirements

    iOS 9+

    Installation

    -

    Since Hyperion is primarily a debugging library and should never be included in production, the steps below will outline how to install Hyperion in a way that keeps it out of production builds. There is also a guide below explaining how to verify which builds have Hyperion and which ones do not.

    +

    Since Hyperion is primarily a debugging library and should never be included in production, the steps below will outline how to install Hyperion in a way that keeps it out of production builds. There is also a guide below explaining how to verify which builds have Hyperion and which ones do not. Note: Hyperion doesn’t require any code to integrate, so it should just work once added.

    CocoaPods

    +

    Important you must specify use_frameworks! if this does not work for your project, then refer to the Carthage or manual guide.

    +

    HyperioniOS is available through CocoaPods. To install it, simply add the following line to your Podfile:

    -
    pod "HyperioniOS/Core", :configurations => ['Debug']
    +
    use_frameworks!
    +
    +pod "HyperioniOS/Core", :configurations => ['Debug']
     
     #"Configurations => Debug" ensures it is only included in debug builds. Add any configurations you would like Hyperion to be included in.
    -pod 'HyperioniOS/AttributesInspector', :configurations => ['Debug']
    -pod 'HyperioniOS/Measurements', :configurations => ['Debug']
    -pod 'HyperioniOS/SlowAnimations', :configurations => ['Debug']
    +pod 'HyperioniOS/AttributesInspector', :configurations => ['Debug'] # Optional plugin
    +pod 'HyperioniOS/Measurements', :configurations => ['Debug'] # Optional plugin
    +pod 'HyperioniOS/SlowAnimations', :configurations => ['Debug'] # Optional plugin
     

    CocoaPods automatically handles ensuring that Hyperion will only be included in the configurations you have specified for the pods. For more information please reference CooaPods Documentation.

    @@ -191,7 +207,7 @@

    Carthage

    Next hop on over to the build phases section and add a custom run script. Make sure it is inserted right above the Linked Frameworks and Libraries build phase. Make this your custom run script:

    #Add the configurations you want to include Hyperion in below.
    -if ["$CONFIGURATION" == "Debug"]; then
    +if [ "$CONFIGURATION" == "Debug" ]; then
         /usr/local/bin/carthage copy-frameworks
     fi
     
    @@ -200,7 +216,11 @@

    Carthage

    Hyperion Custom Build Script

    For more information on this custom build script please refer to the Carthage Documentation.

    -

    Manually Building

    +

    Manual

    + +

    You can download the latest frameworks here. There will be a zip file under the latest release called HyperionCore.framework.Plugins.zip. If you want to learn how to integrate into specific build configurations; follow the Carthage guide above.

    + +

    Or if you want to manually build the frameworks:

    Clone the git repo. In the root directory run sh build.sh. Once complete, the script will have generated the HyperionCore framework along with all of the first-party plugins. The only required framework is HyperionCore, but you should add at least one of the plugins that was generated. Follow the Carthage installation guide above to ensure that Hyperion does not get included in production.

    Verifying A Build Does Not Include Hyperion

    @@ -232,6 +252,18 @@

    Adding Plugins

    Hyperion plugins need to be added into the app at build time. By default, Hyperion automatically finds every plugin that is available in the project. A feature is currently in progress that allows for specifying plugins in a plist for further customization.

    +

    Contributing to Hyperion

    + +

    Contributions are welcome. Please see the Contributing guidelines.

    + +

    Hyperion has adopted a code of conduct defined by the Contributor Covenant, the same used by the Swift language and countless other open source software teams.

    +

    Troubleshooting

    + +

    I’m getting this error after pod installing:

    +
    Unable to run command 'StripNIB HYPKeyValueTableViewCell.nib' - this target might include its own product.
    +
    + +

    This likely means you have not specified use_frameworks! in your podfile. If turning your pods into frameworks does not work for your project configuration, then please reference the Carthage or manual installation guide.

    Contributors

    Chris Mays @@ -251,7 +283,7 @@

    About WillowTree!

    diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/search.json b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/search.json index 0f31ff0..7d291f8 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/search.json +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/search.json @@ -1 +1 @@ -{"Protocols/HYPViewSelectionDelegate.html#/c:objc(pl)HYPViewSelectionDelegate(im)viewSelected:":{"name":"-viewSelected:","abstract":"

    Called when a view has been selected from the ViewListPopover

    ","parent_name":"HYPViewSelectionDelegate"},"Protocols/HYPPluginModule.html#/c:objc(pl)HYPPluginModule(im)initWithExtension:":{"name":"-initWithExtension:","abstract":"

    Creates a new plugin module with the provided extension.

    ","parent_name":"HYPPluginModule"},"Protocols/HYPPluginModule.html#/c:objc(pl)HYPPluginModule(py)active":{"name":"active","abstract":"

    Represents if the plugin is currently active.

    ","parent_name":"HYPPluginModule"},"Protocols/HYPPluginModule.html#/c:objc(pl)HYPPluginModule(py)extension":{"name":"extension","abstract":"

    The extension that the plugin module was intialized with.

    ","parent_name":"HYPPluginModule"},"Protocols/HYPPluginMenuItemDelegate.html#/c:objc(pl)HYPPluginMenuItemDelegate(im)pluginMenuItemSelected:":{"name":"-pluginMenuItemSelected:","abstract":"

    Called when the plugin menu item has been selected.

    ","parent_name":"HYPPluginMenuItemDelegate"},"Protocols/HYPPluginMenuItem.html#/c:objc(pl)HYPPluginMenuItem(im)setSelected:animated:":{"name":"-setSelected:animated:","abstract":"

    Sets the menu item to selected/unselected.

    ","parent_name":"HYPPluginMenuItem"},"Protocols/HYPPluginMenuItem.html#/c:objc(pl)HYPPluginMenuItem(py)selected":{"name":"selected","abstract":"

    The selection state of the menu item.

    ","parent_name":"HYPPluginMenuItem"},"Protocols/HYPPluginMenuItem.html#/c:objc(pl)HYPPluginMenuItem(py)delegate":{"name":"delegate","abstract":"

    The delegate that should get informed on menu item changes.

    ","parent_name":"HYPPluginMenuItem"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)attachedWindow":{"name":"-attachedWindow","abstract":"

    This method returns the window Hyperion is currently attached to.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)hypeWindow":{"name":"-hypeWindow","abstract":"

    This method returns the window that displays the Hyperion plugin drawer.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)snapshotContainer":{"name":"-snapshotContainer","abstract":"

    This method returns the container that all of the snapshot plugins modules will use.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)overlayContainer":{"name":"-overlayContainer","abstract":"

    This method returns the container that all of the overlay plugins modules will use.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)presentViewControllerOverDrawer:animated:":{"name":"-presentViewControllerOverDrawer:animated:","abstract":"

    This method will present a view controller modally over the Hyperion plugin drawer.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)createPluginModule:":{"name":"+createPluginModule:","abstract":"

    This method is called in order to create a new plugin instance.

    ","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)pluginVersion":{"name":"+pluginVersion","abstract":"

    This method is used to retrieve the plugin’s version.

    ","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)createPluginGuideViewController":{"name":"+createPluginGuideViewController","abstract":"

    This method is used to retrieve a view controller that represents","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)pluginGuideImage":{"name":"+pluginGuideImage","abstract":"

    This method is used to retrieve an image that represents the plugin. This can be used so","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)pluginGuideName":{"name":"+pluginGuideName","abstract":"

    This method is used to retrieve a name that represents the plugin. This can be used so","parent_name":"HYPPlugin"},"Protocols/HYPOverlayPluginViewProvider.html#/c:objc(pl)HYPOverlayPluginViewProvider(im)activateOverlayPluginViewWithContext:":{"name":"-activateOverlayPluginViewWithContext:","abstract":"

    This gets called when the plugin view should activate in the provided context.","parent_name":"HYPOverlayPluginViewProvider"},"Protocols/HYPOverlayPluginViewProvider.html#/c:objc(pl)HYPOverlayPluginViewProvider(im)deactivateOverlayPluginView":{"name":"-deactivateOverlayPluginView","abstract":"

    This is called when the plugin deactivates. This provided opportunity to clean up as needed.

    ","parent_name":"HYPOverlayPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)activateSnapshotPluginViewWithContext:":{"name":"-activateSnapshotPluginViewWithContext:","abstract":"

    This gets called when the plugin view should activate in the provided context.","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)deactivateSnapshotPluginView":{"name":"-deactivateSnapshotPluginView","abstract":"

    This is called when the plugin deactivates. This provided opportunity to clean up as needed.

    ","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)snapshotContextWillTransitionToSize:withTransitionCoordinator:":{"name":"-snapshotContextWillTransitionToSize:withTransitionCoordinator:","abstract":"

    Called when the context the plugin view is in is about to change size.

    ","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)snapshotContextDidTransitionToSize:":{"name":"-snapshotContextDidTransitionToSize:","abstract":"

    Called when the context has changed size.

    ","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPOverlayContainer.html#/c:objc(pl)HYPOverlayContainer(py)overlayModule":{"name":"overlayModule","abstract":"

    The current active plugin module.

    ","parent_name":"HYPOverlayContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentViewListPopoverForPoint:delegate:":{"name":"-presentViewListPopoverForPoint:delegate:","abstract":"

    This presents a popover view controller with a list a views that intersect with the provided point. The views listed are in order of front to back.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentPopover:recommendedHeight:forView:":{"name":"-presentPopover:recommendedHeight:forView:","abstract":"

    This presents a popover containing the view controller provided.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentPopover:recommendedHeight:atPosition:":{"name":"-presentPopover:recommendedHeight:atPosition:","abstract":"

    This presents a popover containing the view controller provided.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)dismissCurrentPopover":{"name":"-dismissCurrentPopover","abstract":"

    Dismisses the current popover if there is one.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentViewController:animated:":{"name":"-presentViewController:animated:","abstract":"

    Presents a view controller modally over the snapshot container.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(py)overlayModule":{"name":"overlayModule","abstract":"

    The current active plugin module.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html":{"name":"HYPSnapshotContainer","abstract":"

    The HYPSnapshotContainer provides a mechanism of displaying custom UI over a Snapshot of the current app. This allows the user to zoom on the app and inspect tiny details, but also prevents the user from interacting with the app. The HYPSnapshotContainer holds the HYPSnapshotPluginViewProvider’s view when a snapshot plugin becomes active. It also provides convenience methods for presenting common UI across the Snanshot plugin platform.

    "},"Protocols/HYPOverlayContainer.html":{"name":"HYPOverlayContainer","abstract":"

    The HYPOverlayContainer provides a mechanism for displaying custom UI over an app while still allowing the user to interact with it. The HYPOverlayContainer holds the HYPOverlayViewProvider’s when an overlay plugin becomes active.

    "},"Protocols/HYPSnapshotPluginViewProvider.html":{"name":"HYPSnapshotPluginViewProvider","abstract":"

    The HYPSnapshotPluginViewProvider protocol defines a mechanism for requesting"},"Protocols/HYPOverlayPluginViewProvider.html":{"name":"HYPOverlayPluginViewProvider","abstract":"

    The HYPOverlayPluginViewProvider protocol defines a mechanism for requesting"},"Protocols/HYPPlugin.html":{"name":"HYPPlugin","abstract":"

    The HYPPlugin protocol defines a mechanism for creating instances of plugins and providing"},"Protocols/HYPPluginExtension.html":{"name":"HYPPluginExtension","abstract":"

    The HYPPluginExtension protocol provides the plugin with context about windows and containers that are available to it.

    "},"Protocols/HYPPluginMenuItem.html":{"name":"HYPPluginMenuItem","abstract":"

    HYPPluginMenuItem Represents a row in the Hyperion plugin list.

    "},"Protocols/HYPPluginMenuItemDelegate.html":{"name":"HYPPluginMenuItemDelegate","abstract":"

    A delegate to be informed on HYPPluginMenuItem actions.

    "},"Protocols/HYPPluginModule.html":{"name":"HYPPluginModule","abstract":"

    HYPPluginModule protocol represents an instance of a plugin.

    "},"Protocols/HYPViewSelectionDelegate.html":{"name":"HYPViewSelectionDelegate","abstract":"

    A delegate used to notify when a view has been selected from the ViewListPopover.

    "},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureTwoFingerDoubleTap":{"name":"HYPActivationGestureTwoFingerDoubleTap","abstract":"

    Represents a two finger double tap gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureThreeFingerSingleTap":{"name":"HYPActivationGestureThreeFingerSingleTap","abstract":"

    Represents a three finger single tap gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureRightEdgeSwipe":{"name":"HYPActivationGestureRightEdgeSwipe","abstract":"

    Represents a right edge swipe gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureShake":{"name":"HYPActivationGestureShake","abstract":"

    Represents a shake gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html":{"name":"HYPActivationGestureOptions","abstract":"

    Supported gestures to activate Hyperion.

    "},"Constants.html#/c:@HyperionCoreVersionNumber":{"name":"HyperionCoreVersionNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@HyperionCoreVersionString":{"name":"HyperionCoreVersionString","abstract":"

    Undocumented

    "},"Constants.html#/c:@pluginMenuItem":{"name":"pluginMenuItem","abstract":"

    Undocumented

    "},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(im)pluginMenuItemTitle":{"name":"-pluginMenuItemTitle","abstract":"

    The title that should display for the plugin menu Item.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(im)pluginMenuItemImage":{"name":"-pluginMenuItemImage","abstract":"

    The image that should display for the plugin menu Item.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(im)shouldHideDrawerOnSelection":{"name":"-shouldHideDrawerOnSelection","abstract":"

    Determines whether the drawer should hide when the plugin becomes active/inactive.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(py)snapshotPluginView":{"name":"snapshotPluginView","abstract":"

    The view that should get added the Snap Shot container when activated.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(im)initWithExtension:":{"name":"-initWithExtension:","abstract":"

    Creates a new HYPSnapshotInteractionView with the provided extension.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(im)interactionViewWillTransitionToSize:withTransitionCoordinator:":{"name":"-interactionViewWillTransitionToSize:withTransitionCoordinator:","abstract":"

    Called when the interaction view is about to change size.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(im)interactionViewDidTransitionToSize:":{"name":"-interactionViewDidTransitionToSize:","abstract":"

    Called when the interaction view has changed size.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(py)extension":{"name":"extension","abstract":"

    The extension that the HYPSnapshotInteractionView was intialized with.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(im)bindWithTitle:image:":{"name":"-bindWithTitle:image:","abstract":"

    Sets the title and image and styling of the menu item.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)tapGesture":{"name":"tapGesture","abstract":"

    The tap gesture that determines when the menu item has been selected.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)titleLabel":{"name":"titleLabel","abstract":"

    The label that displays the plugin image.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)pluginImageView":{"name":"pluginImageView","abstract":"

    The ImageView that displays the plugin image.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginHelper.html#/c:objc(cs)HYPPluginHelper(cm)findSubviewsInView:intersectingPoint:":{"name":"+findSubviewsInView:intersectingPoint:","abstract":"

    Retrieves a list of subviews that intersect a certain a point.

    ","parent_name":"HYPPluginHelper"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(cm)sharedInstance":{"name":"+sharedInstance","abstract":"

    The HyperionManager singleton.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)attachToWindow:":{"name":"-attachToWindow:","abstract":"

    Attaches Hyperion to the provided window.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)togglePluginDrawer":{"name":"-togglePluginDrawer","abstract":"

    Toggles Hyperion’s plugin drawer.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)retrievePluginClasses":{"name":"-retrievePluginClasses","abstract":"

    Provides a list of plugin classes.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)retrievePluginModules":{"name":"-retrievePluginModules","abstract":"

    Provides a cached list of plugin modules.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)forceRefreshPluginModules":{"name":"-forceRefreshPluginModules","abstract":"

    Force refreshes the plugin modules.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(py)activationGestures":{"name":"activationGestures","abstract":"

    A bitmask of gestures that can be used to activate Hyperion.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html":{"name":"HyperionManager","abstract":"

    HyperionManager is the interaction point between Hyperion and the app it’s integrated in.

    "},"Classes/HYPPluginHelper.html":{"name":"HYPPluginHelper","abstract":"

    Provides helper methods that should be common tasks among plugins.

    "},"Classes/HYPPluginMenuItem.html":{"name":"HYPPluginMenuItem","abstract":"

    HYPPluginMenuItem Represents a row in the Hyperion plugin list.

    "},"Classes.html#/c:objc(cs)HYPPluginModule":{"name":"HYPPluginModule","abstract":"

    HYPPluginModule class represents an instance of a plugin.

    "},"Classes/HYPSnapshotInteractionView.html":{"name":"HYPSnapshotInteractionView","abstract":"

    This is a base implementation of a Snapshot plugins view that gets"},"Classes/HYPSnapshotPluginModule.html":{"name":"HYPSnapshotPluginModule","abstract":"

    HYPSnapshotPluginModule is a base implementation of a Snapshot Plugin.

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Constants.html":{"name":"Constants","abstract":"

    The following constants are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "}} \ No newline at end of file +{"Protocols/HYPViewSelectionDelegate.html#/c:objc(pl)HYPViewSelectionDelegate(im)viewSelected:":{"name":"-viewSelected:","abstract":"

    Called when a view has been selected from the ViewListPopover

    ","parent_name":"HYPViewSelectionDelegate"},"Protocols/HYPPluginModule.html#/c:objc(pl)HYPPluginModule(im)initWithExtension:":{"name":"-initWithExtension:","abstract":"

    Creates a new plugin module with the provided extension.

    ","parent_name":"HYPPluginModule"},"Protocols/HYPPluginModule.html#/c:objc(pl)HYPPluginModule(py)active":{"name":"active","abstract":"

    Represents if the plugin is currently active.

    ","parent_name":"HYPPluginModule"},"Protocols/HYPPluginModule.html#/c:objc(pl)HYPPluginModule(py)extension":{"name":"extension","abstract":"

    The extension that the plugin module was intialized with.

    ","parent_name":"HYPPluginModule"},"Protocols/HYPPluginMenuItemDelegate.html#/c:objc(pl)HYPPluginMenuItemDelegate(im)pluginMenuItemSelected:":{"name":"-pluginMenuItemSelected:","abstract":"

    Called when the plugin menu item has been selected.

    ","parent_name":"HYPPluginMenuItemDelegate"},"Protocols/HYPPluginMenuItem.html#/c:objc(pl)HYPPluginMenuItem(im)setSelected:animated:":{"name":"-setSelected:animated:","abstract":"

    Sets the menu item to selected/unselected.

    ","parent_name":"HYPPluginMenuItem"},"Protocols/HYPPluginMenuItem.html#/c:objc(pl)HYPPluginMenuItem(py)selected":{"name":"selected","abstract":"

    The selection state of the menu item.

    ","parent_name":"HYPPluginMenuItem"},"Protocols/HYPPluginMenuItem.html#/c:objc(pl)HYPPluginMenuItem(py)delegate":{"name":"delegate","abstract":"

    The delegate that should get informed on menu item changes.

    ","parent_name":"HYPPluginMenuItem"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)attachedWindow":{"name":"-attachedWindow","abstract":"

    This method returns the window Hyperion is currently attached to.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)hypeWindow":{"name":"-hypeWindow","abstract":"

    This method returns the window that displays the Hyperion plugin drawer.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)snapshotContainer":{"name":"-snapshotContainer","abstract":"

    This method returns the container that all of the snapshot plugins modules will use.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)overlayContainer":{"name":"-overlayContainer","abstract":"

    This method returns the container that all of the overlay plugins modules will use.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)presentViewControllerOverDrawer:animated:":{"name":"-presentViewControllerOverDrawer:animated:","abstract":"

    This method will present a view controller modally over the Hyperion plugin drawer.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)createPluginModule:":{"name":"+createPluginModule:","abstract":"

    This method is called in order to create a new plugin instance.

    ","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)pluginVersion":{"name":"+pluginVersion","abstract":"

    This method is used to retrieve the plugin’s version.

    ","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)createPluginGuideViewController":{"name":"+createPluginGuideViewController","abstract":"

    This method is used to retrieve a view controller that represents","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)pluginGuideImage":{"name":"+pluginGuideImage","abstract":"

    This method is used to retrieve an image that represents the plugin. This can be used so","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)pluginGuideName":{"name":"+pluginGuideName","abstract":"

    This method is used to retrieve a name that represents the plugin. This can be used so","parent_name":"HYPPlugin"},"Protocols/HYPOverlayPluginViewProvider.html#/c:objc(pl)HYPOverlayPluginViewProvider(im)activateOverlayPluginViewWithContext:":{"name":"-activateOverlayPluginViewWithContext:","abstract":"

    This gets called when the plugin view should activate in the provided context.","parent_name":"HYPOverlayPluginViewProvider"},"Protocols/HYPOverlayPluginViewProvider.html#/c:objc(pl)HYPOverlayPluginViewProvider(im)deactivateOverlayPluginView":{"name":"-deactivateOverlayPluginView","abstract":"

    This is called when the plugin deactivates. This provided opportunity to clean up as needed.

    ","parent_name":"HYPOverlayPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)activateSnapshotPluginViewWithContext:":{"name":"-activateSnapshotPluginViewWithContext:","abstract":"

    This gets called when the plugin view should activate in the provided context.","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)deactivateSnapshotPluginView":{"name":"-deactivateSnapshotPluginView","abstract":"

    This is called when the plugin deactivates. This provided opportunity to clean up as needed.

    ","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)snapshotContextWillTransitionToSize:withTransitionCoordinator:":{"name":"-snapshotContextWillTransitionToSize:withTransitionCoordinator:","abstract":"

    Called when the context the plugin view is in is about to change size.

    ","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)snapshotContextDidTransitionToSize:":{"name":"-snapshotContextDidTransitionToSize:","abstract":"

    Called when the context has changed size.

    ","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPOverlayContainer.html#/c:objc(pl)HYPOverlayContainer(py)overlayModule":{"name":"overlayModule","abstract":"

    The current active plugin module.

    ","parent_name":"HYPOverlayContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentViewListPopoverForPoint:delegate:":{"name":"-presentViewListPopoverForPoint:delegate:","abstract":"

    This presents a popover view controller with a list a views that intersect with the provided point. The views listed are in order of front to back.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentPopover:recommendedHeight:forView:":{"name":"-presentPopover:recommendedHeight:forView:","abstract":"

    This presents a popover containing the view controller provided.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentPopover:recommendedHeight:atPosition:":{"name":"-presentPopover:recommendedHeight:atPosition:","abstract":"

    This presents a popover containing the view controller provided.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)dismissCurrentPopover":{"name":"-dismissCurrentPopover","abstract":"

    Dismisses the current popover if there is one.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentViewController:animated:":{"name":"-presentViewController:animated:","abstract":"

    Presents a view controller modally over the snapshot container.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(py)overlayModule":{"name":"overlayModule","abstract":"

    The current active plugin module.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html":{"name":"HYPSnapshotContainer","abstract":"

    The HYPSnapshotContainer provides a mechanism of displaying custom UI over a Snapshot of the current app. This allows the user to zoom on the app and inspect tiny details, but also prevents the user from interacting with the app. The HYPSnapshotContainer holds the HYPSnapshotPluginViewProvider’s view when a snapshot plugin becomes active. It also provides convenience methods for presenting common UI across the Snanshot plugin platform.

    "},"Protocols/HYPOverlayContainer.html":{"name":"HYPOverlayContainer","abstract":"

    The HYPOverlayContainer provides a mechanism for displaying custom UI over an app while still allowing the user to interact with it. The HYPOverlayContainer holds the HYPOverlayViewProvider’s when an overlay plugin becomes active.

    "},"Protocols/HYPSnapshotPluginViewProvider.html":{"name":"HYPSnapshotPluginViewProvider","abstract":"

    The HYPSnapshotPluginViewProvider protocol defines a mechanism for requesting"},"Protocols/HYPOverlayPluginViewProvider.html":{"name":"HYPOverlayPluginViewProvider","abstract":"

    The HYPOverlayPluginViewProvider protocol defines a mechanism for requesting"},"Protocols/HYPPlugin.html":{"name":"HYPPlugin","abstract":"

    The HYPPlugin protocol defines a mechanism for creating instances of plugins and providing"},"Protocols/HYPPluginExtension.html":{"name":"HYPPluginExtension","abstract":"

    The HYPPluginExtension protocol provides the plugin with context about windows and containers that are available to it.

    "},"Protocols/HYPPluginMenuItem.html":{"name":"HYPPluginMenuItem","abstract":"

    HYPPluginMenuItem Represents a row in the Hyperion plugin list.

    "},"Protocols/HYPPluginMenuItemDelegate.html":{"name":"HYPPluginMenuItemDelegate","abstract":"

    A delegate to be informed on HYPPluginMenuItem actions.

    "},"Protocols/HYPPluginModule.html":{"name":"HYPPluginModule","abstract":"

    HYPPluginModule protocol represents an instance of a plugin.

    "},"Protocols/HYPViewSelectionDelegate.html":{"name":"HYPViewSelectionDelegate","abstract":"

    A delegate used to notify when a view has been selected from the ViewListPopover.

    "},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureTwoFingerDoubleTap":{"name":"HYPActivationGestureTwoFingerDoubleTap","abstract":"

    Represents a two finger double tap gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureThreeFingerSingleTap":{"name":"HYPActivationGestureThreeFingerSingleTap","abstract":"

    Represents a three finger single tap gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureRightEdgeSwipe":{"name":"HYPActivationGestureRightEdgeSwipe","abstract":"

    Represents a right edge swipe gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureShake":{"name":"HYPActivationGestureShake","abstract":"

    Represents a shake gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html":{"name":"HYPActivationGestureOptions","abstract":"

    Supported gestures to activate Hyperion.

    "},"Constants.html#/c:@HyperionCoreVersionNumber":{"name":"HyperionCoreVersionNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@HyperionCoreVersionString":{"name":"HyperionCoreVersionString","abstract":"

    Undocumented

    "},"Constants.html#/c:@pluginMenuItem":{"name":"pluginMenuItem","abstract":"

    Undocumented

    "},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(im)pluginMenuItemTitle":{"name":"-pluginMenuItemTitle","abstract":"

    The title that should display for the plugin menu Item.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(im)pluginMenuItemImage":{"name":"-pluginMenuItemImage","abstract":"

    The image that should display for the plugin menu Item.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(im)shouldHideDrawerOnSelection":{"name":"-shouldHideDrawerOnSelection","abstract":"

    Determines whether the drawer should hide when the plugin becomes active/inactive.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(py)snapshotPluginView":{"name":"snapshotPluginView","abstract":"

    The view that should get added the Snap Shot container when activated.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(im)initWithExtension:":{"name":"-initWithExtension:","abstract":"

    Creates a new HYPSnapshotInteractionView with the provided extension.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(im)interactionViewWillTransitionToSize:withTransitionCoordinator:":{"name":"-interactionViewWillTransitionToSize:withTransitionCoordinator:","abstract":"

    Called when the interaction view is about to change size.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(im)interactionViewDidTransitionToSize:":{"name":"-interactionViewDidTransitionToSize:","abstract":"

    Called when the interaction view has changed size.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(py)extension":{"name":"extension","abstract":"

    The extension that the HYPSnapshotInteractionView was intialized with.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(im)bindWithTitle:image:":{"name":"-bindWithTitle:image:","abstract":"

    Sets the title and image and styling of the menu item.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)tapGesture":{"name":"tapGesture","abstract":"

    The tap gesture that determines when the menu item has been selected.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)titleLabel":{"name":"titleLabel","abstract":"

    The label that displays the plugin image.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)pluginImageView":{"name":"pluginImageView","abstract":"

    The ImageView that displays the plugin image.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)height":{"name":"height","abstract":"

    The height of the plugin menu item. This value defaults to 130.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginHelper.html#/c:objc(cs)HYPPluginHelper(cm)findSubviewsInView:intersectingPoint:":{"name":"+findSubviewsInView:intersectingPoint:","abstract":"

    Retrieves a list of subviews that intersect a certain a point.

    ","parent_name":"HYPPluginHelper"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(cm)sharedInstance":{"name":"+sharedInstance","abstract":"

    The HyperionManager singleton.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)attachToWindow:":{"name":"-attachToWindow:","abstract":"

    Attaches Hyperion to the provided window.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)togglePluginDrawer":{"name":"-togglePluginDrawer","abstract":"

    Toggles Hyperion’s plugin drawer.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)retrievePluginClasses":{"name":"-retrievePluginClasses","abstract":"

    Provides a list of plugin classes.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)retrievePluginModules":{"name":"-retrievePluginModules","abstract":"

    Provides a cached list of plugin modules.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)forceRefreshPluginModules":{"name":"-forceRefreshPluginModules","abstract":"

    Force refreshes the plugin modules.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(py)activationGestures":{"name":"activationGestures","abstract":"

    A bitmask of gestures that can be used to activate Hyperion.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html":{"name":"HyperionManager","abstract":"

    HyperionManager is the interaction point between Hyperion and the app it’s integrated in.

    "},"Classes/HYPPluginHelper.html":{"name":"HYPPluginHelper","abstract":"

    Provides helper methods that should be common tasks among plugins.

    "},"Classes/HYPPluginMenuItem.html":{"name":"HYPPluginMenuItem","abstract":"

    HYPPluginMenuItem Represents a row in the Hyperion plugin list.

    "},"Classes.html#/c:objc(cs)HYPPluginModule":{"name":"HYPPluginModule","abstract":"

    HYPPluginModule class represents an instance of a plugin.

    "},"Classes/HYPSnapshotInteractionView.html":{"name":"HYPSnapshotInteractionView","abstract":"

    This is a base implementation of a Snapshot plugins view that gets"},"Classes/HYPSnapshotPluginModule.html":{"name":"HYPSnapshotPluginModule","abstract":"

    HYPSnapshotPluginModule is a base implementation of a Snapshot Plugin.

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Constants.html":{"name":"Constants","abstract":"

    The following constants are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "}} \ No newline at end of file diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/undocumented.json b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/undocumented.json index 6b835ca..a11f6d6 100644 --- a/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/undocumented.json +++ b/docs/docsets/HyperionCore.docset/Contents/Resources/Documents/undocumented.json @@ -1,5 +1,19 @@ { "warnings": [ + { + "file": "/Users/chrismays/Desktop/HyperioniOS/Core/HyperionCore.h", + "line": 25, + "symbol": "HyperionCoreVersionNumber", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/chrismays/Desktop/HyperioniOS/Core/HyperionCore.h", + "line": 28, + "symbol": "HyperionCoreVersionString", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, { "file": "/Users/chrismays/Desktop/HyperioniOS/Core/Public/Plugin/HYPPluginModule.h", "line": 42, diff --git a/docs/docsets/HyperionCore.docset/Contents/Resources/docSet.dsidx b/docs/docsets/HyperionCore.docset/Contents/Resources/docSet.dsidx index 4eb3f8ab6976b1ae46a956e77eeecaa04033f970..633395adf52f28f675f5bf1a2f13ecb60e1fd6ac 100644 GIT binary patch delta 896 zcmah{YeI*s&D0=An5#f&-wNMP%?qT&6gEN z)knY^)%(DQv5HZ3*aF2}^HA;}kI6z3B$C9t*dta-Q&dZWrh~>W#zGU(*q~Tr;H!ia*3raj}pQ;=&w2aH<1y3!k^dX@g4PEsnQ# zDbEi*5e%KoVoRH$FWevL8^ZjNx%j?!CI18KFyz>RiFzwp-{st*s#DeqF+f{DS z`FJOqj~&rC*zrNb73G4r7;u9(z<04SOWG&nv929_fK^%2%K)9BZBUPyrEio2ffB%% zp5xe2zV~LECQmFSLFC=;c^3p3CZJZ89Q-Yskeyz<-5poo*+TU;zVjt@-gDEq^rv@uf~GY)t$o5 z20XfdPo0aH?(=@`Fr`cmmNkAdUS}6shjEjU8EzW3@-gP(FAP+FNnfd((e2hr+S6LQ zoRyErdg-dvn2CL*7(Qs@ZH-i=2D9ACcpyMkZfZ2Y$*th)Jal;u-%Hl=W*4n6Hv#@k tuH;QM>bVclm2z_bY#&QGrL}{s(w0l*YAOPaO6*Xj_}}l;rNGFv_zS=e3~T@Z delta 875 zcmYL`PfQed6vuyWcIP)c!_E#!>bPaM3kVTKc8AiXl}4Na23*{QZX$`6*kzFoCHn_q zp=sy>JGQbx4T{f_*p`%PJm`Ux4$&qav>dAmlG--)V2l_4#5A@^4|*^in>M|C-}}D9 z%O~G&eu>F1F{jHQI`3(P=t|!gzRfL!5c&pVDI=9yN_Z(Pm72xnHc7A?+r#SK!+;gC z2PZNO>{jb$$1j7YSOFdo8Cj*WWSL*!OB~;DFE|gqOn0zl_>Qs+Dn3*aum>acXW3># zY`5@P@QO3*<@-k?wXIhoJ6AYJ6}g6G>#o(HHy#+Ats3Y^sev@KGj7w!mG& zY;b4jW4d3+^S|*4@s4XR+!gDcM~l94trb->SDAB6&K9*-+ZOHD*@Q!5E(y1UBzYt_ z`9*%Gq%cXxP3R@Zq{aD>22`}eob~umLj$}#kc3_6oSnwMy5`@a94YCB|8YVdwwhFc zo*7RkM&n~c!J?sB)ES>7|vOcmM@Q<7f5q#F>hOh;m$7}n-=DE&Fa2Qqe&}+sp zAf#$=H8~Eo7!94Lj$tkD;}tu zz^QPW)vU&DqyPAjy`NTiaYK!L_ny7jRz+5k>r?pwcnJ$oLssWU2AI(n?Cr~fhU_1~Z@4xDXZd}QEp$pe@9xH*TId6HGC1s?#H5Jch z6WM>qKVj+nSn{sigBt-E)yW;SlO>wmi_w#>aS8YH`F>C#{Ds~{^Yt1!vW=Q DI9&_@ diff --git a/docs/docsets/HyperionCore.tgz b/docs/docsets/HyperionCore.tgz index f4997f0d90b245cbfa22a382d79fe27ef7483c52..f65a371b17385d28727f674ca4cbd0790768a993 100644 GIT binary patch literal 71169 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 K0OB?W7tQQJAI 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 AcK`qY literal 70445 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�Rmu3>7b2&I5C|mVZL&&PxeP+-@f#s$qzJ#S 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 diff --git a/docs/index.html b/docs/index.html index 6da1a99..4cb1643 100644 --- a/docs/index.html +++ b/docs/index.html @@ -124,11 +124,15 @@

    Hyperion

    Hyperion - In App Design Review Tool

    What is it?

    -

    Hyperion Drawer

    +

    + +

    Hyperion is a hidden plugin drawer that can easily be integrated into any app. The drawer sits discreetly 🙊 under the app so that it is there when you need it and out of the way when you don’t. Hyperion plugins are designed to make inspection of your app quick and simple. For example, check out this plugin that allows you to measure distances between views:

    -

    Example Measurements

    +

    + +

    If you like what you see, there’s more where that came from.

    First-Party Plugins

    @@ -136,21 +140,29 @@

    View Inspector

    The View Inspector plugin allows you to inspect the properties of any view live within the app.

    -

    View Inspector Example

    +

    + +

    Have a tiny view you want to inspect? No problem, you can zoom in on any portion of the app while the plugin is active.

    -

    Zoom Example

    +

    + +

    Measurements

    The Measurements plugin allows you to measure the distance between any two views on the screen. No more guessing whether padding is correct-this plugin has you covered.

    -

    Example Measurements

    +

    + +

    Slow Animations

    Having trouble verifying an animation matches design? The Slow Animations plugin allows you to slow down all animations within the app to 75%, 50% or 25% the normal speed.

    -

    Slow Animations

    +

    + +

    Third-Party Plugins

    Calling all developers!!! Be one of the first to create a third-party plugin. The plugin creation guide is a work in progress, but if you are feeling ambitious you can reference the plugins we have already created along with our documentation.

    @@ -159,7 +171,7 @@

    How To Show Hyperion P

    Once Hyperion is integrated into your app, simply shake your phone.

    Customizing Hyperion

    -

    Hyperion was designed as a drag and drop framework that requires 0 code to integrate. If you want to customize Hyperion you can create a configuration file (called HyperionConfiguration.plist). Use this file as an example. For now you can only configure what gestures trigger the Hyperion drawer, but there are plans to add theming and plugin ordering.

    +

    Hyperion was designed as a drag and drop framework that requires 0 code to integrate. If you want to customize Hyperion you can create a configuration file (called HyperionConfiguration.plist). Use this file as an example. For now you can only configure what gestures trigger the Hyperion drawer, but there are plans to add theming and plugin ordering.

    Example App

    Want to learn how to use Hyperion? The example app will teach you!

    @@ -170,17 +182,21 @@

    Requirements

    iOS 9+

    Installation

    -

    Since Hyperion is primarily a debugging library and should never be included in production, the steps below will outline how to install Hyperion in a way that keeps it out of production builds. There is also a guide below explaining how to verify which builds have Hyperion and which ones do not.

    +

    Since Hyperion is primarily a debugging library and should never be included in production, the steps below will outline how to install Hyperion in a way that keeps it out of production builds. There is also a guide below explaining how to verify which builds have Hyperion and which ones do not. Note: Hyperion doesn’t require any code to integrate, so it should just work once added.

    CocoaPods

    +

    Important you must specify use_frameworks! if this does not work for your project, then refer to the Carthage or manual guide.

    +

    HyperioniOS is available through CocoaPods. To install it, simply add the following line to your Podfile:

    -
    pod "HyperioniOS/Core", :configurations => ['Debug']
    +
    use_frameworks!
    +
    +pod "HyperioniOS/Core", :configurations => ['Debug']
     
     #"Configurations => Debug" ensures it is only included in debug builds. Add any configurations you would like Hyperion to be included in.
    -pod 'HyperioniOS/AttributesInspector', :configurations => ['Debug']
    -pod 'HyperioniOS/Measurements', :configurations => ['Debug']
    -pod 'HyperioniOS/SlowAnimations', :configurations => ['Debug']
    +pod 'HyperioniOS/AttributesInspector', :configurations => ['Debug'] # Optional plugin
    +pod 'HyperioniOS/Measurements', :configurations => ['Debug'] # Optional plugin
    +pod 'HyperioniOS/SlowAnimations', :configurations => ['Debug'] # Optional plugin
     

    CocoaPods automatically handles ensuring that Hyperion will only be included in the configurations you have specified for the pods. For more information please reference CooaPods Documentation.

    @@ -191,7 +207,7 @@

    Carthage

    Next hop on over to the build phases section and add a custom run script. Make sure it is inserted right above the Linked Frameworks and Libraries build phase. Make this your custom run script:

    #Add the configurations you want to include Hyperion in below.
    -if ["$CONFIGURATION" == "Debug"]; then
    +if [ "$CONFIGURATION" == "Debug" ]; then
         /usr/local/bin/carthage copy-frameworks
     fi
     
    @@ -200,7 +216,11 @@

    Carthage

    Hyperion Custom Build Script

    For more information on this custom build script please refer to the Carthage Documentation.

    -

    Manually Building

    +

    Manual

    + +

    You can download the latest frameworks here. There will be a zip file under the latest release called HyperionCore.framework.Plugins.zip. If you want to learn how to integrate into specific build configurations; follow the Carthage guide above.

    + +

    Or if you want to manually build the frameworks:

    Clone the git repo. In the root directory run sh build.sh. Once complete, the script will have generated the HyperionCore framework along with all of the first-party plugins. The only required framework is HyperionCore, but you should add at least one of the plugins that was generated. Follow the Carthage installation guide above to ensure that Hyperion does not get included in production.

    Verifying A Build Does Not Include Hyperion

    @@ -232,6 +252,18 @@

    Adding Plugins

    Hyperion plugins need to be added into the app at build time. By default, Hyperion automatically finds every plugin that is available in the project. A feature is currently in progress that allows for specifying plugins in a plist for further customization.

    +

    Contributing to Hyperion

    + +

    Contributions are welcome. Please see the Contributing guidelines.

    + +

    Hyperion has adopted a code of conduct defined by the Contributor Covenant, the same used by the Swift language and countless other open source software teams.

    +

    Troubleshooting

    + +

    I’m getting this error after pod installing:

    +
    Unable to run command 'StripNIB HYPKeyValueTableViewCell.nib' - this target might include its own product.
    +
    + +

    This likely means you have not specified use_frameworks! in your podfile. If turning your pods into frameworks does not work for your project configuration, then please reference the Carthage or manual installation guide.

    Contributors

    Chris Mays @@ -251,7 +283,7 @@

    About WillowTree!

    diff --git a/docs/search.json b/docs/search.json index 0f31ff0..7d291f8 100644 --- a/docs/search.json +++ b/docs/search.json @@ -1 +1 @@ -{"Protocols/HYPViewSelectionDelegate.html#/c:objc(pl)HYPViewSelectionDelegate(im)viewSelected:":{"name":"-viewSelected:","abstract":"

    Called when a view has been selected from the ViewListPopover

    ","parent_name":"HYPViewSelectionDelegate"},"Protocols/HYPPluginModule.html#/c:objc(pl)HYPPluginModule(im)initWithExtension:":{"name":"-initWithExtension:","abstract":"

    Creates a new plugin module with the provided extension.

    ","parent_name":"HYPPluginModule"},"Protocols/HYPPluginModule.html#/c:objc(pl)HYPPluginModule(py)active":{"name":"active","abstract":"

    Represents if the plugin is currently active.

    ","parent_name":"HYPPluginModule"},"Protocols/HYPPluginModule.html#/c:objc(pl)HYPPluginModule(py)extension":{"name":"extension","abstract":"

    The extension that the plugin module was intialized with.

    ","parent_name":"HYPPluginModule"},"Protocols/HYPPluginMenuItemDelegate.html#/c:objc(pl)HYPPluginMenuItemDelegate(im)pluginMenuItemSelected:":{"name":"-pluginMenuItemSelected:","abstract":"

    Called when the plugin menu item has been selected.

    ","parent_name":"HYPPluginMenuItemDelegate"},"Protocols/HYPPluginMenuItem.html#/c:objc(pl)HYPPluginMenuItem(im)setSelected:animated:":{"name":"-setSelected:animated:","abstract":"

    Sets the menu item to selected/unselected.

    ","parent_name":"HYPPluginMenuItem"},"Protocols/HYPPluginMenuItem.html#/c:objc(pl)HYPPluginMenuItem(py)selected":{"name":"selected","abstract":"

    The selection state of the menu item.

    ","parent_name":"HYPPluginMenuItem"},"Protocols/HYPPluginMenuItem.html#/c:objc(pl)HYPPluginMenuItem(py)delegate":{"name":"delegate","abstract":"

    The delegate that should get informed on menu item changes.

    ","parent_name":"HYPPluginMenuItem"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)attachedWindow":{"name":"-attachedWindow","abstract":"

    This method returns the window Hyperion is currently attached to.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)hypeWindow":{"name":"-hypeWindow","abstract":"

    This method returns the window that displays the Hyperion plugin drawer.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)snapshotContainer":{"name":"-snapshotContainer","abstract":"

    This method returns the container that all of the snapshot plugins modules will use.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)overlayContainer":{"name":"-overlayContainer","abstract":"

    This method returns the container that all of the overlay plugins modules will use.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)presentViewControllerOverDrawer:animated:":{"name":"-presentViewControllerOverDrawer:animated:","abstract":"

    This method will present a view controller modally over the Hyperion plugin drawer.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)createPluginModule:":{"name":"+createPluginModule:","abstract":"

    This method is called in order to create a new plugin instance.

    ","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)pluginVersion":{"name":"+pluginVersion","abstract":"

    This method is used to retrieve the plugin’s version.

    ","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)createPluginGuideViewController":{"name":"+createPluginGuideViewController","abstract":"

    This method is used to retrieve a view controller that represents","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)pluginGuideImage":{"name":"+pluginGuideImage","abstract":"

    This method is used to retrieve an image that represents the plugin. This can be used so","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)pluginGuideName":{"name":"+pluginGuideName","abstract":"

    This method is used to retrieve a name that represents the plugin. This can be used so","parent_name":"HYPPlugin"},"Protocols/HYPOverlayPluginViewProvider.html#/c:objc(pl)HYPOverlayPluginViewProvider(im)activateOverlayPluginViewWithContext:":{"name":"-activateOverlayPluginViewWithContext:","abstract":"

    This gets called when the plugin view should activate in the provided context.","parent_name":"HYPOverlayPluginViewProvider"},"Protocols/HYPOverlayPluginViewProvider.html#/c:objc(pl)HYPOverlayPluginViewProvider(im)deactivateOverlayPluginView":{"name":"-deactivateOverlayPluginView","abstract":"

    This is called when the plugin deactivates. This provided opportunity to clean up as needed.

    ","parent_name":"HYPOverlayPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)activateSnapshotPluginViewWithContext:":{"name":"-activateSnapshotPluginViewWithContext:","abstract":"

    This gets called when the plugin view should activate in the provided context.","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)deactivateSnapshotPluginView":{"name":"-deactivateSnapshotPluginView","abstract":"

    This is called when the plugin deactivates. This provided opportunity to clean up as needed.

    ","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)snapshotContextWillTransitionToSize:withTransitionCoordinator:":{"name":"-snapshotContextWillTransitionToSize:withTransitionCoordinator:","abstract":"

    Called when the context the plugin view is in is about to change size.

    ","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)snapshotContextDidTransitionToSize:":{"name":"-snapshotContextDidTransitionToSize:","abstract":"

    Called when the context has changed size.

    ","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPOverlayContainer.html#/c:objc(pl)HYPOverlayContainer(py)overlayModule":{"name":"overlayModule","abstract":"

    The current active plugin module.

    ","parent_name":"HYPOverlayContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentViewListPopoverForPoint:delegate:":{"name":"-presentViewListPopoverForPoint:delegate:","abstract":"

    This presents a popover view controller with a list a views that intersect with the provided point. The views listed are in order of front to back.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentPopover:recommendedHeight:forView:":{"name":"-presentPopover:recommendedHeight:forView:","abstract":"

    This presents a popover containing the view controller provided.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentPopover:recommendedHeight:atPosition:":{"name":"-presentPopover:recommendedHeight:atPosition:","abstract":"

    This presents a popover containing the view controller provided.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)dismissCurrentPopover":{"name":"-dismissCurrentPopover","abstract":"

    Dismisses the current popover if there is one.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentViewController:animated:":{"name":"-presentViewController:animated:","abstract":"

    Presents a view controller modally over the snapshot container.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(py)overlayModule":{"name":"overlayModule","abstract":"

    The current active plugin module.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html":{"name":"HYPSnapshotContainer","abstract":"

    The HYPSnapshotContainer provides a mechanism of displaying custom UI over a Snapshot of the current app. This allows the user to zoom on the app and inspect tiny details, but also prevents the user from interacting with the app. The HYPSnapshotContainer holds the HYPSnapshotPluginViewProvider’s view when a snapshot plugin becomes active. It also provides convenience methods for presenting common UI across the Snanshot plugin platform.

    "},"Protocols/HYPOverlayContainer.html":{"name":"HYPOverlayContainer","abstract":"

    The HYPOverlayContainer provides a mechanism for displaying custom UI over an app while still allowing the user to interact with it. The HYPOverlayContainer holds the HYPOverlayViewProvider’s when an overlay plugin becomes active.

    "},"Protocols/HYPSnapshotPluginViewProvider.html":{"name":"HYPSnapshotPluginViewProvider","abstract":"

    The HYPSnapshotPluginViewProvider protocol defines a mechanism for requesting"},"Protocols/HYPOverlayPluginViewProvider.html":{"name":"HYPOverlayPluginViewProvider","abstract":"

    The HYPOverlayPluginViewProvider protocol defines a mechanism for requesting"},"Protocols/HYPPlugin.html":{"name":"HYPPlugin","abstract":"

    The HYPPlugin protocol defines a mechanism for creating instances of plugins and providing"},"Protocols/HYPPluginExtension.html":{"name":"HYPPluginExtension","abstract":"

    The HYPPluginExtension protocol provides the plugin with context about windows and containers that are available to it.

    "},"Protocols/HYPPluginMenuItem.html":{"name":"HYPPluginMenuItem","abstract":"

    HYPPluginMenuItem Represents a row in the Hyperion plugin list.

    "},"Protocols/HYPPluginMenuItemDelegate.html":{"name":"HYPPluginMenuItemDelegate","abstract":"

    A delegate to be informed on HYPPluginMenuItem actions.

    "},"Protocols/HYPPluginModule.html":{"name":"HYPPluginModule","abstract":"

    HYPPluginModule protocol represents an instance of a plugin.

    "},"Protocols/HYPViewSelectionDelegate.html":{"name":"HYPViewSelectionDelegate","abstract":"

    A delegate used to notify when a view has been selected from the ViewListPopover.

    "},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureTwoFingerDoubleTap":{"name":"HYPActivationGestureTwoFingerDoubleTap","abstract":"

    Represents a two finger double tap gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureThreeFingerSingleTap":{"name":"HYPActivationGestureThreeFingerSingleTap","abstract":"

    Represents a three finger single tap gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureRightEdgeSwipe":{"name":"HYPActivationGestureRightEdgeSwipe","abstract":"

    Represents a right edge swipe gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureShake":{"name":"HYPActivationGestureShake","abstract":"

    Represents a shake gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html":{"name":"HYPActivationGestureOptions","abstract":"

    Supported gestures to activate Hyperion.

    "},"Constants.html#/c:@HyperionCoreVersionNumber":{"name":"HyperionCoreVersionNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@HyperionCoreVersionString":{"name":"HyperionCoreVersionString","abstract":"

    Undocumented

    "},"Constants.html#/c:@pluginMenuItem":{"name":"pluginMenuItem","abstract":"

    Undocumented

    "},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(im)pluginMenuItemTitle":{"name":"-pluginMenuItemTitle","abstract":"

    The title that should display for the plugin menu Item.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(im)pluginMenuItemImage":{"name":"-pluginMenuItemImage","abstract":"

    The image that should display for the plugin menu Item.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(im)shouldHideDrawerOnSelection":{"name":"-shouldHideDrawerOnSelection","abstract":"

    Determines whether the drawer should hide when the plugin becomes active/inactive.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(py)snapshotPluginView":{"name":"snapshotPluginView","abstract":"

    The view that should get added the Snap Shot container when activated.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(im)initWithExtension:":{"name":"-initWithExtension:","abstract":"

    Creates a new HYPSnapshotInteractionView with the provided extension.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(im)interactionViewWillTransitionToSize:withTransitionCoordinator:":{"name":"-interactionViewWillTransitionToSize:withTransitionCoordinator:","abstract":"

    Called when the interaction view is about to change size.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(im)interactionViewDidTransitionToSize:":{"name":"-interactionViewDidTransitionToSize:","abstract":"

    Called when the interaction view has changed size.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(py)extension":{"name":"extension","abstract":"

    The extension that the HYPSnapshotInteractionView was intialized with.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(im)bindWithTitle:image:":{"name":"-bindWithTitle:image:","abstract":"

    Sets the title and image and styling of the menu item.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)tapGesture":{"name":"tapGesture","abstract":"

    The tap gesture that determines when the menu item has been selected.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)titleLabel":{"name":"titleLabel","abstract":"

    The label that displays the plugin image.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)pluginImageView":{"name":"pluginImageView","abstract":"

    The ImageView that displays the plugin image.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginHelper.html#/c:objc(cs)HYPPluginHelper(cm)findSubviewsInView:intersectingPoint:":{"name":"+findSubviewsInView:intersectingPoint:","abstract":"

    Retrieves a list of subviews that intersect a certain a point.

    ","parent_name":"HYPPluginHelper"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(cm)sharedInstance":{"name":"+sharedInstance","abstract":"

    The HyperionManager singleton.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)attachToWindow:":{"name":"-attachToWindow:","abstract":"

    Attaches Hyperion to the provided window.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)togglePluginDrawer":{"name":"-togglePluginDrawer","abstract":"

    Toggles Hyperion’s plugin drawer.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)retrievePluginClasses":{"name":"-retrievePluginClasses","abstract":"

    Provides a list of plugin classes.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)retrievePluginModules":{"name":"-retrievePluginModules","abstract":"

    Provides a cached list of plugin modules.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)forceRefreshPluginModules":{"name":"-forceRefreshPluginModules","abstract":"

    Force refreshes the plugin modules.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(py)activationGestures":{"name":"activationGestures","abstract":"

    A bitmask of gestures that can be used to activate Hyperion.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html":{"name":"HyperionManager","abstract":"

    HyperionManager is the interaction point between Hyperion and the app it’s integrated in.

    "},"Classes/HYPPluginHelper.html":{"name":"HYPPluginHelper","abstract":"

    Provides helper methods that should be common tasks among plugins.

    "},"Classes/HYPPluginMenuItem.html":{"name":"HYPPluginMenuItem","abstract":"

    HYPPluginMenuItem Represents a row in the Hyperion plugin list.

    "},"Classes.html#/c:objc(cs)HYPPluginModule":{"name":"HYPPluginModule","abstract":"

    HYPPluginModule class represents an instance of a plugin.

    "},"Classes/HYPSnapshotInteractionView.html":{"name":"HYPSnapshotInteractionView","abstract":"

    This is a base implementation of a Snapshot plugins view that gets"},"Classes/HYPSnapshotPluginModule.html":{"name":"HYPSnapshotPluginModule","abstract":"

    HYPSnapshotPluginModule is a base implementation of a Snapshot Plugin.

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Constants.html":{"name":"Constants","abstract":"

    The following constants are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "}} \ No newline at end of file +{"Protocols/HYPViewSelectionDelegate.html#/c:objc(pl)HYPViewSelectionDelegate(im)viewSelected:":{"name":"-viewSelected:","abstract":"

    Called when a view has been selected from the ViewListPopover

    ","parent_name":"HYPViewSelectionDelegate"},"Protocols/HYPPluginModule.html#/c:objc(pl)HYPPluginModule(im)initWithExtension:":{"name":"-initWithExtension:","abstract":"

    Creates a new plugin module with the provided extension.

    ","parent_name":"HYPPluginModule"},"Protocols/HYPPluginModule.html#/c:objc(pl)HYPPluginModule(py)active":{"name":"active","abstract":"

    Represents if the plugin is currently active.

    ","parent_name":"HYPPluginModule"},"Protocols/HYPPluginModule.html#/c:objc(pl)HYPPluginModule(py)extension":{"name":"extension","abstract":"

    The extension that the plugin module was intialized with.

    ","parent_name":"HYPPluginModule"},"Protocols/HYPPluginMenuItemDelegate.html#/c:objc(pl)HYPPluginMenuItemDelegate(im)pluginMenuItemSelected:":{"name":"-pluginMenuItemSelected:","abstract":"

    Called when the plugin menu item has been selected.

    ","parent_name":"HYPPluginMenuItemDelegate"},"Protocols/HYPPluginMenuItem.html#/c:objc(pl)HYPPluginMenuItem(im)setSelected:animated:":{"name":"-setSelected:animated:","abstract":"

    Sets the menu item to selected/unselected.

    ","parent_name":"HYPPluginMenuItem"},"Protocols/HYPPluginMenuItem.html#/c:objc(pl)HYPPluginMenuItem(py)selected":{"name":"selected","abstract":"

    The selection state of the menu item.

    ","parent_name":"HYPPluginMenuItem"},"Protocols/HYPPluginMenuItem.html#/c:objc(pl)HYPPluginMenuItem(py)delegate":{"name":"delegate","abstract":"

    The delegate that should get informed on menu item changes.

    ","parent_name":"HYPPluginMenuItem"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)attachedWindow":{"name":"-attachedWindow","abstract":"

    This method returns the window Hyperion is currently attached to.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)hypeWindow":{"name":"-hypeWindow","abstract":"

    This method returns the window that displays the Hyperion plugin drawer.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)snapshotContainer":{"name":"-snapshotContainer","abstract":"

    This method returns the container that all of the snapshot plugins modules will use.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)overlayContainer":{"name":"-overlayContainer","abstract":"

    This method returns the container that all of the overlay plugins modules will use.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPluginExtension.html#/c:objc(pl)HYPPluginExtension(im)presentViewControllerOverDrawer:animated:":{"name":"-presentViewControllerOverDrawer:animated:","abstract":"

    This method will present a view controller modally over the Hyperion plugin drawer.

    ","parent_name":"HYPPluginExtension"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)createPluginModule:":{"name":"+createPluginModule:","abstract":"

    This method is called in order to create a new plugin instance.

    ","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)pluginVersion":{"name":"+pluginVersion","abstract":"

    This method is used to retrieve the plugin’s version.

    ","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)createPluginGuideViewController":{"name":"+createPluginGuideViewController","abstract":"

    This method is used to retrieve a view controller that represents","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)pluginGuideImage":{"name":"+pluginGuideImage","abstract":"

    This method is used to retrieve an image that represents the plugin. This can be used so","parent_name":"HYPPlugin"},"Protocols/HYPPlugin.html#/c:objc(pl)HYPPlugin(cm)pluginGuideName":{"name":"+pluginGuideName","abstract":"

    This method is used to retrieve a name that represents the plugin. This can be used so","parent_name":"HYPPlugin"},"Protocols/HYPOverlayPluginViewProvider.html#/c:objc(pl)HYPOverlayPluginViewProvider(im)activateOverlayPluginViewWithContext:":{"name":"-activateOverlayPluginViewWithContext:","abstract":"

    This gets called when the plugin view should activate in the provided context.","parent_name":"HYPOverlayPluginViewProvider"},"Protocols/HYPOverlayPluginViewProvider.html#/c:objc(pl)HYPOverlayPluginViewProvider(im)deactivateOverlayPluginView":{"name":"-deactivateOverlayPluginView","abstract":"

    This is called when the plugin deactivates. This provided opportunity to clean up as needed.

    ","parent_name":"HYPOverlayPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)activateSnapshotPluginViewWithContext:":{"name":"-activateSnapshotPluginViewWithContext:","abstract":"

    This gets called when the plugin view should activate in the provided context.","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)deactivateSnapshotPluginView":{"name":"-deactivateSnapshotPluginView","abstract":"

    This is called when the plugin deactivates. This provided opportunity to clean up as needed.

    ","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)snapshotContextWillTransitionToSize:withTransitionCoordinator:":{"name":"-snapshotContextWillTransitionToSize:withTransitionCoordinator:","abstract":"

    Called when the context the plugin view is in is about to change size.

    ","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPSnapshotPluginViewProvider.html#/c:objc(pl)HYPSnapshotPluginViewProvider(im)snapshotContextDidTransitionToSize:":{"name":"-snapshotContextDidTransitionToSize:","abstract":"

    Called when the context has changed size.

    ","parent_name":"HYPSnapshotPluginViewProvider"},"Protocols/HYPOverlayContainer.html#/c:objc(pl)HYPOverlayContainer(py)overlayModule":{"name":"overlayModule","abstract":"

    The current active plugin module.

    ","parent_name":"HYPOverlayContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentViewListPopoverForPoint:delegate:":{"name":"-presentViewListPopoverForPoint:delegate:","abstract":"

    This presents a popover view controller with a list a views that intersect with the provided point. The views listed are in order of front to back.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentPopover:recommendedHeight:forView:":{"name":"-presentPopover:recommendedHeight:forView:","abstract":"

    This presents a popover containing the view controller provided.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentPopover:recommendedHeight:atPosition:":{"name":"-presentPopover:recommendedHeight:atPosition:","abstract":"

    This presents a popover containing the view controller provided.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)dismissCurrentPopover":{"name":"-dismissCurrentPopover","abstract":"

    Dismisses the current popover if there is one.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(im)presentViewController:animated:":{"name":"-presentViewController:animated:","abstract":"

    Presents a view controller modally over the snapshot container.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html#/c:objc(pl)HYPSnapshotContainer(py)overlayModule":{"name":"overlayModule","abstract":"

    The current active plugin module.

    ","parent_name":"HYPSnapshotContainer"},"Protocols/HYPSnapshotContainer.html":{"name":"HYPSnapshotContainer","abstract":"

    The HYPSnapshotContainer provides a mechanism of displaying custom UI over a Snapshot of the current app. This allows the user to zoom on the app and inspect tiny details, but also prevents the user from interacting with the app. The HYPSnapshotContainer holds the HYPSnapshotPluginViewProvider’s view when a snapshot plugin becomes active. It also provides convenience methods for presenting common UI across the Snanshot plugin platform.

    "},"Protocols/HYPOverlayContainer.html":{"name":"HYPOverlayContainer","abstract":"

    The HYPOverlayContainer provides a mechanism for displaying custom UI over an app while still allowing the user to interact with it. The HYPOverlayContainer holds the HYPOverlayViewProvider’s when an overlay plugin becomes active.

    "},"Protocols/HYPSnapshotPluginViewProvider.html":{"name":"HYPSnapshotPluginViewProvider","abstract":"

    The HYPSnapshotPluginViewProvider protocol defines a mechanism for requesting"},"Protocols/HYPOverlayPluginViewProvider.html":{"name":"HYPOverlayPluginViewProvider","abstract":"

    The HYPOverlayPluginViewProvider protocol defines a mechanism for requesting"},"Protocols/HYPPlugin.html":{"name":"HYPPlugin","abstract":"

    The HYPPlugin protocol defines a mechanism for creating instances of plugins and providing"},"Protocols/HYPPluginExtension.html":{"name":"HYPPluginExtension","abstract":"

    The HYPPluginExtension protocol provides the plugin with context about windows and containers that are available to it.

    "},"Protocols/HYPPluginMenuItem.html":{"name":"HYPPluginMenuItem","abstract":"

    HYPPluginMenuItem Represents a row in the Hyperion plugin list.

    "},"Protocols/HYPPluginMenuItemDelegate.html":{"name":"HYPPluginMenuItemDelegate","abstract":"

    A delegate to be informed on HYPPluginMenuItem actions.

    "},"Protocols/HYPPluginModule.html":{"name":"HYPPluginModule","abstract":"

    HYPPluginModule protocol represents an instance of a plugin.

    "},"Protocols/HYPViewSelectionDelegate.html":{"name":"HYPViewSelectionDelegate","abstract":"

    A delegate used to notify when a view has been selected from the ViewListPopover.

    "},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureTwoFingerDoubleTap":{"name":"HYPActivationGestureTwoFingerDoubleTap","abstract":"

    Represents a two finger double tap gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureThreeFingerSingleTap":{"name":"HYPActivationGestureThreeFingerSingleTap","abstract":"

    Represents a three finger single tap gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureRightEdgeSwipe":{"name":"HYPActivationGestureRightEdgeSwipe","abstract":"

    Represents a right edge swipe gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html#/c:@E@HYPActivationGestureOptions@HYPActivationGestureShake":{"name":"HYPActivationGestureShake","abstract":"

    Represents a shake gesture.

    ","parent_name":"HYPActivationGestureOptions"},"Enums/HYPActivationGestureOptions.html":{"name":"HYPActivationGestureOptions","abstract":"

    Supported gestures to activate Hyperion.

    "},"Constants.html#/c:@HyperionCoreVersionNumber":{"name":"HyperionCoreVersionNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@HyperionCoreVersionString":{"name":"HyperionCoreVersionString","abstract":"

    Undocumented

    "},"Constants.html#/c:@pluginMenuItem":{"name":"pluginMenuItem","abstract":"

    Undocumented

    "},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(im)pluginMenuItemTitle":{"name":"-pluginMenuItemTitle","abstract":"

    The title that should display for the plugin menu Item.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(im)pluginMenuItemImage":{"name":"-pluginMenuItemImage","abstract":"

    The image that should display for the plugin menu Item.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(im)shouldHideDrawerOnSelection":{"name":"-shouldHideDrawerOnSelection","abstract":"

    Determines whether the drawer should hide when the plugin becomes active/inactive.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotPluginModule.html#/c:objc(cs)HYPSnapshotPluginModule(py)snapshotPluginView":{"name":"snapshotPluginView","abstract":"

    The view that should get added the Snap Shot container when activated.

    ","parent_name":"HYPSnapshotPluginModule"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(im)initWithExtension:":{"name":"-initWithExtension:","abstract":"

    Creates a new HYPSnapshotInteractionView with the provided extension.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(im)interactionViewWillTransitionToSize:withTransitionCoordinator:":{"name":"-interactionViewWillTransitionToSize:withTransitionCoordinator:","abstract":"

    Called when the interaction view is about to change size.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(im)interactionViewDidTransitionToSize:":{"name":"-interactionViewDidTransitionToSize:","abstract":"

    Called when the interaction view has changed size.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPSnapshotInteractionView.html#/c:objc(cs)HYPSnapshotInteractionView(py)extension":{"name":"extension","abstract":"

    The extension that the HYPSnapshotInteractionView was intialized with.

    ","parent_name":"HYPSnapshotInteractionView"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(im)bindWithTitle:image:":{"name":"-bindWithTitle:image:","abstract":"

    Sets the title and image and styling of the menu item.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)tapGesture":{"name":"tapGesture","abstract":"

    The tap gesture that determines when the menu item has been selected.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)titleLabel":{"name":"titleLabel","abstract":"

    The label that displays the plugin image.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)pluginImageView":{"name":"pluginImageView","abstract":"

    The ImageView that displays the plugin image.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginMenuItem.html#/c:objc(cs)HYPPluginMenuItem(py)height":{"name":"height","abstract":"

    The height of the plugin menu item. This value defaults to 130.

    ","parent_name":"HYPPluginMenuItem"},"Classes/HYPPluginHelper.html#/c:objc(cs)HYPPluginHelper(cm)findSubviewsInView:intersectingPoint:":{"name":"+findSubviewsInView:intersectingPoint:","abstract":"

    Retrieves a list of subviews that intersect a certain a point.

    ","parent_name":"HYPPluginHelper"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(cm)sharedInstance":{"name":"+sharedInstance","abstract":"

    The HyperionManager singleton.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)attachToWindow:":{"name":"-attachToWindow:","abstract":"

    Attaches Hyperion to the provided window.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)togglePluginDrawer":{"name":"-togglePluginDrawer","abstract":"

    Toggles Hyperion’s plugin drawer.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)retrievePluginClasses":{"name":"-retrievePluginClasses","abstract":"

    Provides a list of plugin classes.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)retrievePluginModules":{"name":"-retrievePluginModules","abstract":"

    Provides a cached list of plugin modules.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(im)forceRefreshPluginModules":{"name":"-forceRefreshPluginModules","abstract":"

    Force refreshes the plugin modules.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html#/c:objc(cs)HyperionManager(py)activationGestures":{"name":"activationGestures","abstract":"

    A bitmask of gestures that can be used to activate Hyperion.

    ","parent_name":"HyperionManager"},"Classes/HyperionManager.html":{"name":"HyperionManager","abstract":"

    HyperionManager is the interaction point between Hyperion and the app it’s integrated in.

    "},"Classes/HYPPluginHelper.html":{"name":"HYPPluginHelper","abstract":"

    Provides helper methods that should be common tasks among plugins.

    "},"Classes/HYPPluginMenuItem.html":{"name":"HYPPluginMenuItem","abstract":"

    HYPPluginMenuItem Represents a row in the Hyperion plugin list.

    "},"Classes.html#/c:objc(cs)HYPPluginModule":{"name":"HYPPluginModule","abstract":"

    HYPPluginModule class represents an instance of a plugin.

    "},"Classes/HYPSnapshotInteractionView.html":{"name":"HYPSnapshotInteractionView","abstract":"

    This is a base implementation of a Snapshot plugins view that gets"},"Classes/HYPSnapshotPluginModule.html":{"name":"HYPSnapshotPluginModule","abstract":"

    HYPSnapshotPluginModule is a base implementation of a Snapshot Plugin.

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Constants.html":{"name":"Constants","abstract":"

    The following constants are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "}} \ No newline at end of file