Swiftgram/Source/Private/ASCellNode+Internal.h
appleguy 465abb1ded [License] Simplify the Texture license to be pure Apache 2 (removing ASDK-Licenses). (#1077)
* [License] Simplify the Texture license to be pure Apache 2 (removing ASDK-Licenses)

With permission of the Facebook Open Source team, we are simplifying the Texture
license so that clients can rely on the Apache 2 terms that most of Texture is
already covered by. This means that code originally forked from AsyncDisplayKit
will be re-licensed from "BSD 3-clause + PATENTS v2" to Apache 2 without a
PATENTS file.

After getting confirmation that the updates to these core files look good, we'll
propagate this new license header to all files (in this same PR) and get sign-off
from all parties before landing.

* [License] Update all Texture source files to be pure Apache 2.

* Changelog entry for Apache 2 license update.

* Revert "[License] Update all Texture source files to be pure Apache 2."

This reverts commit ffa0fbbba9717d871dd16c4b07539f2f8208fc2b.

* [License] Update all Texture source files to be pure Apache 2, maintaining copyrights.

* [License] Update CONTRIBUTING, README, Podspec & Dangerfile.
2018-08-28 07:39:18 -07:00

77 lines
2.5 KiB
Objective-C

//
// ASCellNode+Internal.h
// Texture
//
// Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.
// Changes after 4/13/2017 are: Copyright (c) Pinterest, Inc. All rights reserved.
// Licensed under Apache 2.0: http://www.apache.org/licenses/LICENSE-2.0
//
#import <AsyncDisplayKit/ASCellNode.h>
NS_ASSUME_NONNULL_BEGIN
@class ASCollectionElement;
@protocol ASCellNodeInteractionDelegate <NSObject>
/**
* Notifies the delegate that a specified cell node invalidates it's size what could result into a size change.
*
* @param node A node informing the delegate about the relayout.
*/
- (void)nodeDidInvalidateSize:(ASCellNode *)node;
/*
* Methods to be called whenever the selection or highlight state changes
* on ASCellNode. UIKit internally stores these values to update reusable cells.
*/
- (void)nodeSelectedStateDidChange:(ASCellNode *)node;
- (void)nodeHighlightedStateDidChange:(ASCellNode *)node;
@end
@interface ASCellNode ()
@property (nonatomic, weak) id <ASCellNodeInteractionDelegate> interactionDelegate;
/*
* Back-pointer to the containing scrollView instance, set only for visible cells. Used for Cell Visibility Event callbacks.
*/
@property (nonatomic, weak) UIScrollView *scrollView;
- (void)__setSelectedFromUIKit:(BOOL)selected;
- (void)__setHighlightedFromUIKit:(BOOL)highlighted;
/**
* @note This could be declared @c copy, but since this is only settable internally, we can ensure
* that it's always safe simply to retain it, and copy if needed. Since @c UICollectionViewLayoutAttributes
* is always mutable, @c copy is never "free" like it is for e.g. NSString.
*/
@property (nullable, nonatomic) UICollectionViewLayoutAttributes *layoutAttributes;
@property (weak, nullable) ASCollectionElement *collectionElement;
@property (weak, nullable) id<ASRangeManagingNode> owningNode;
@property (nonatomic, readonly) BOOL shouldUseUIKitCell;
@end
@class ASWrapperCellNode;
typedef CGSize (^ASSizeForItemBlock)(ASWrapperCellNode *node, CGSize collectionSize);
typedef UICollectionViewCell * _Nonnull(^ASCellForItemBlock)(ASWrapperCellNode *node);
typedef UICollectionReusableView * _Nonnull(^ASViewForSupplementaryBlock)(ASWrapperCellNode *node);
@interface ASWrapperCellNode : ASCellNode
@property (nonatomic, readonly) ASSizeForItemBlock sizeForItemBlock;
@property (nonatomic, readonly) ASCellForItemBlock cellForItemBlock;
@property (nonatomic, readonly) ASViewForSupplementaryBlock viewForSupplementaryBlock;
@end
NS_ASSUME_NONNULL_END