* Initial commit to move [ASLayoutSpec children] from std::map to NSMutableArray
* Add NSFastEnumeration to ASLayoutable
* ASNullLayoutSpec is a Singleton now
* Move ASLayoutSpecPrivate in Private folder
* Move to NSArrayPointer and remove ASNullLayoutSpec
* Revert "Move to NSArrayPointer and remove ASNullLayoutSpec"
This reverts commit 9ab9cf7024b1f6e1984d84fe58af2b84e84cdf94.
* Move to childAtIndex: and setChild:atIndex:
* Add support for flex factor
* Add snapshot tests
* Respect child specified size from ASLayoutable
* Add new snapshot test images
* Fix rebase conflict
* Add tests for batch update completion handler calling
* Ensure we call all completion handlers after collection view updates
* Tweak it
* Fix the doc
* Minor improvements
* Document addCompletionHandler better
* Add delegate to ASLayoutableStyle for property changes
* Moving ASLayoutableStyle delegate to readonly
* Add ASLayoutableStyleTests
* Fix property stirngs
* Fix video example
* Address comments of Adlai
* Deprecate preferredFrameSize
- Remove all support for preferredFrameSize in ASDK
- preferredFrameSize setter calls through and sets the width and height of the node
- preferredFrameSize getter tries to return a CGSize based on the width and height properties otherwise if this is not possible it throws
* Address comments
* Return CGSizeZero for preferredFrameSize unless width and height are ASDimensionUnitPoints
* Better comment for preferredFrameSize and remove lock in calculateSizeThatFits:
* Add style property to ASLayoutable
* Add styles property to further layout specs
* Adjust some examples
* Add `loadStyle` to create the style object in a ASLayoutable
* Revert "Add `loadStyle` to create the style object in a ASLayoutable"
This reverts commit 2b7240f2c7dc993e38cadf290cfdf08482dd70c7.
* Revert "Adjust some examples"
This reverts commit 3254ae0a321e75db3ecfa80adee9d96bde93a33d.
* Revert "Add styles property to further layout specs"
This reverts commit c779dcb876ead27122c1af1300146a6ad36912cb.
* Rename ASLayoutableStyleDeclaration to ASLayoutableStyle
* Add styleClass class property for extensibility support of the ASLayoutable style object
* flexShrink should not be YES by default
* Improve assertion message if tableView:nodeBlockForRowAtIndexPath: or tableView:nodeForRowAtIndexPath: is not implemented
* Improve assertion message if collectionView:nodeForItemAtIndexPath: or collectionView:nodeBlockForItemAtIndexPath: is not implemented
* Revise performance measurement naming and structure
- Revises naming from LayoutSpecGeneration to LayoutSpecComputation
- Adds a struct instead of an NSDictionary to retrieve performance metrics
- Includes ASEnvironmentStatePropagateDown in LayoutSpecComputation measurements
* Revise SumScopeTimer to include enable flag
* Make struct a typedef
Scenario: An ASCollectionNode is a subnode of an ASCellNode. A layout transition is started, resulting in
the removal of the ASCollectionNode as a subnode. As it is removed, the hierarchy state is cleared - including
the "range managed" bit - on the ASCollectionNode. However, the deep recursion traverses the layer hierarchy
too, and clears this bit on the ASCellNodes inside the ASCollectionNode. A moment later, the collection performs
its final ASRangeController update to mark its cells as invisible and free memory. Then an assertion is triggered
in ASRangeController, because it is operating on nodes that do not have the "range managed" bit set.
It turns out that ASInterfaceState also propogates in this way, but that behavior is efficient and beneficial in
its current configuration (it assists how multi-dimensional preloading works). However, hierarchy state should
never need to jump discontinuities in the node hierarchy. For now, disabling that case and will revisit
other use cases soon.
* [ASVideoNode] Maintain playback position between visibility changes
* [ASVideoNode] Code style changes and moved the pause to be before caching the current playback time.
* Measure performance for ASCellNode layout
* Address Adlai and Levi's feedback:
* Move to ASDisplayNode level
* Lock around setting/getting measurement options and results
* Record all measurement passes and report times as an array
* Only add relevant entries to the performanceMetrics dictionary
* Rebase
* Store sum and count instead of array
* Rename ScopeTimerDataPoint to ScopeTimerSum
* Address Levi's feedback
* Address Adlai's feedback
The previous code used either a `@property` with `assign, nonatomic` semantics, or a `__unsafe_unretained` (non-atomic) ivar pointer to an instance for `asyncdisplaykit_node`.
This commit changes those access so that they have the equivalent of `weak, atomic` semantics.
- `_ASDisplayView.mm`
- Removes the `_node` ivar that was qualified with `__unsafe_unretained`.
- Removes `@synthesize asyncdisplaykit_node = _node;`.
- All direct uses of `_node` were replaced with:
- Creates a strong reference via `ASDisplayNode *node = _asyncdisplaykit_node;`.
- `s/_node/node/`.
- These changes were made even if there's a single use of `_asyncdisplaykit_node` as a consistency / defensive measure so that anyone editing this code in the future does not accidentally use a `weak` reference twice.
- `ASDisplayNode.mm`
- Getters and setters for `asyncdisplaykit_node` were changed from `nonatomic, assign` semantics to the equivalent of `atomic, weak` semantics.
- `weak` semantics were implemented by using a `ASWeakProxy` object.
- `objc_setAssociatedObject` was changed from `OBJC_ASSOCIATION_ASSIGN` to `OBJC_ASSOCIATION_RETAIN` (the `atomic` version of retain).
- `ASDisplayNode+FrameworkPrivate.h`
- Changed the `@property` declarations for `asyncdisplaykit_node` from `nonatomic, assign` to `atomic, weak`.
- The actual getters and setters are implemented in `ASDisplayNode.mm`, which were changed accordingly.
* Initial commit for adding a size constraint to ASLayoutable's
* Some more commits
* Fix sample projects in extra/
* Remove preferredFrameSize test of ASEditableTextNode
* Remove preferredFrameSize from examples_extra
* Add deprecation warning to -[ASDisplayNode preferredFrameSize]
* Add deprecation warning to -[ASDisplayNode measureWithSizeRange:]
* Commit
* Commit
* Remove ASRelativeSizeRange
* Make ASRelativeSize private
* Adjust examples
* Improve setting of -[ASLayoutable size] with points or fractions
* Add ASWrapperLayoutSpec
* Improve creation of ASRelativeDimension
* Add `preferredFrameSize` back and add deprecated logging
* Add `layoutSpecBlock` setter and getter and add locking for it
* Add better documentation and fix macros to create ASRelativeDimension
* Create new ASSizeRangeMake with just a CGSize as parameter
* Update Kitten and Social App Layout example
* Add layoutThatFits: and deprecate measure:
* Rename ASRelativeDimension to ASDimension
* Fix examples for ASDimension renaming
* Remove fancy height and width setter
* Fix ASDimension helper
* Rename -[ASLayout layoutableObject] to -[ASLayout layoutable]
* Update layout related methods and more clearer documentation around how to use it
* Deprecate old ASLayout class constructors
* Don't unnecessary recalculate layout if constrained or parent size did not change
* Use shared pointer for ASDisplayNodeLayout
* Fix rebase conflicts
* Add documentation and move implementation in mm file of ASDisplayNodeLayout
* Fix test errors
* Rename ASSize to ASLayoutableSize
* Address comments
* Rename setSizeFromCGSize to setSizeWithCGSize
* Improve inline functions in ASDimension
* Fix rebase conflicts
* [ASTraitCollection] Fix 2 bugs dealing with trait propagation
* Don’t propagate on `viewWillTransitionToTraitCollection`. This is too early
* Pass the size from `viewWillTransitionToSize` as the container size in `traitCollectionDidChange`
* using the old trait collection’s size doesn’t actually make sense.
* Instead of propagating on viewWillTransitionToSize, do it in viewWillLayoutSubviews
* Add cache implementation
* Remove old ASEqualityHashHelpers
* Some more ASEquality and ASEqualityHashHelper cleanup
* Add cache for text renderer in ASTextNode
* Move from C++ LRU renderer cache to NSCache based renderer cache