* Initial ASLayoutSpecPlayground commit
* Initial exploratory stab at the main challenge of the app - visualizing ASLayoutSpecs
* Halfway through moving debug features out of ASDK framework files and into debug files. Project builds.
* [ASLayoutSpecPlayground] Created new Inspector node, cleaning up internal implementation to start formalizing support for layout spec visualization.
* Workaround for ensuring creation of visualizerNode for ALL layoutspecs
* continued development
* Layout Inspector Work in Progress
* Resizing the playground works in the shrink direction, not for grow.
* added new ASLayoutableInspectorNode features
* Cleaned up examples code.
* Cleaning up code.
* more code cleanup
* [ASLayoutableInspector] Transition to an ASTableNode-based architecture to support larger numbers of buttons / customizable types.
* [ASLayoutableInspector] Support different layoutable property types to set up buttons that can edit all of them.
* Huy debugging
* Refactored layout inspector code for extensibility.
* Properly lock layoutableContextMap
* Fix context handling in ASDisplayNode:measureWithSizeRange
* Fix ASLayoutSpecPlayground:ViewController:toggleVisualization
* added slider to InspectorCell
* [ASLayoutSpecPlayground] Improvements to propagation of visualize mode, resize handle, minor cleanup.
* Fix to ASEnvironment
* [ASLayoutSpecPlayground] Fix a few minor issues from the merge with latest master.
* Implement layout spec cache
* add pager ndoe
* add more examples
* add more layout examples
* [ASLayoutPlayground] Fix merge issues
* [ASLayoutPlayground] Fix up the example project from the 2.0 API changes.
* [ASLayoutPlayground] Some fixes (#2411)
* [ASLayoutPlayground]: Some fixes
* Fixed crash when tapping descender.
* Fixed setting the item to inspect.
* Fixed button states in inspector node.
* Added sliders for spacingBefore, spacingAfter, ascender.
* [ASLayoutSpecPlayground] Deselect the buttons when editing is over.
* [ASLayoutSpecPlayground] Changed flexGrow/Shrink's values from YES/NO to 1.0/0.0
* [Project] Create new Debug/ directory for advanced tools dedicated to debugging.
* [LayoutSpecPlayground] Rename project without AS in title, to be consistent with LayoutSpecExamples.
* [Bulid] Fix Xcode project to use new Debug subdirectory / group.
* [Bulid] Fix a small merge error.
* [Build] Fix build issue for Framework target.
* [Bulid] Fix podspec to expose InspectorNode header; Remove old-cocoapods emojis from ASDKgram :)
* Move aside ASLayoutSpecPlayground-Swift to match master
* [LayoutSpecPlayground] Cleanup implementation in several files, xcodeproj, etc.
* [ASControlNode] Add comment for new assertion, to be enabled in a separate diff.
- Introduce thread-safe ASEventLog
- ASCollectionNode and ASTableNode share their event log with their ASDataController. The controller uses it to log change set submitting and finishing events.
- ASCollectionNode and ASTableNode print their data source and delegate in their debug description.
* Deprecations should be re-enabled. If there are specific deprecations we'd like to hold off on, we should address those specifically.
* Fix decleration
* Move select to undeprecated
* Fix deprecations
* Initial commit for ASStackLayoutSpec improvements
* Remove the lock in ASStackLayoutSpec and make the ASStackLayoutSpecStyle const
I think we don't need lock here as the style already has a lock while we set the value
* Add ASStackLayoutSpecItem that replaces layout specific items
* Prevent baseline pass if not needed
* Update comments
* added control node test
* fix tests
* target action pair
* go back to class
* move ASControlTargetAction to Private
* added ASControlTarget to cimpole sources
* add ASControlTargetAction to framework target as well
* init local variables with nil
* removed comment with private Apple class name
* isEqual implementation for ASControlTargetAction
* eliminate retain cycle
* use ASControlTargetAction isEqual
* change to NSMutableOrderedSet
* Use OrderedSet and isEqual
* Use that NSMutableOrderedSet stored the same object only once
* Moving back to NSMutableArray
* minor improvements
* Add internal header for ASLayout and change position to readonly publicly
* Don't copy sublayouts during tree filtering
* Revert "Don't copy sublayouts during tree filtering"
This reverts commit 6b0d54d5ffe5bb3941ec13696c9c45b0098b6ba1.
* [ASRunLoopQueue - Performance] Add ASDeallocQueue for efficient object teardown.
This measurably reduces block overhead and context switching. In the layout benchmark,
it increases ops/s while actually reducing CPU utilization. This suggests that we are
now at a lock-bounded local maximum, at least for tri-core devices.
* [ASDeallocQueue] Update convenience helper method and adopt in ASImageNode etc.
* [ASDeallocQueue] Reimplement the queue using a timer-based runloop.
* [Debugging] Re-enable ASDisplayNode Event Log.
* [ASDeallocQueue] Final refinements, comments, code minimization.
* [ASDeallocQueue] Fix for lock release needed in early return (refactoring typo from last commit)
Profiling showed this area as the most expensive part of ASRangeController propogation of .interfaceState,
when scrolling an ASTableView. This is very much on the critical path for sustained 60FPS in these views.
* Separate dataSource & UIKit index spaces
Beef up our supplementary node support
Make the API way better
Go nuts
Add a unit test for UICollectionView's handling of reloadData inside batch updates
Wrap indexPathForNode: in a cache
Convert index paths in delegate methods
Go back on table view
Put collection view back
Switch up the API
Move most ASCollectionView API to ASCollectionNode
Move most table logic over to ASTableNode
Do the things
More conversion work
Keep on keepin' on
Get table view delegate API done
More porting
Simplify
Clear the delegate
More cleanup
Move more stuff around
Remove pointless file
Re-add some API
Put back more API
Use the right flag
* Some cleanup
* Remove incorrect comment
* Tweak the API
* Put back a couple methods
* update example projects (note: ASCollectionView deprecation warnings expected)
* change reloadDataWithCompletion:nil --> reloadData
* Clean up rebase
* Make deprecated numberOfItemsInSection methods optional
* Use the right flag
* Address nits
* update ASDKTube, ASDKgram & ASViewController examples
* Fix
* Add building extra examples to build.sh
* Fix example projects
* Fix CarthageBuildTest
* Export NSArray+Diffing.h to fix life without cocoapods
* Remove set layout style size helper
* Update API to set and get a CGSize / ASRelativeSize from an ASLayoutElementStyle
- Expose ASRelativeSize type
- Add new helper properties to set a size / relative size to ASLayoutElementStyle
- Don't expose the size in ASLayoutElementStyle anymore and move into ASLayoutElementStylePrivate
* Update examples
* Update comments for size helpers
In at least some cases, _pendingDisplayNodes referencing self can cause the
object to live longer than the application needs, while tearing down views.
It also appears there may be a cancellation condition where this state is
not balanced properly, which can cause a reference-cycle leak. This change
safely fixes this problem when tested against a repro case for it.
I'm filing a followup task to make sure all cancellation edge cases have
proper accounting for this codepath, even though the leak is fixed.
* Add tests for how UICV/ASCV will throw if you update before the initial data load
* Allow user to submit updates before initial data load to workaround UICollectionView bug
* Add some info
- Objects conform to ASSectionContext protocol can be provided via ASCollectionDataSource and later retrieved from the collection view. They are guaranteed to be in sync with sections of the collection view. They can be used to store additional data associated with each section, to be used in collection view layout and the like.
- ASSection is an internal object that is the foundation for coming debugging tools.
- Unit tests included.
* [Layout API] Rename ASLayoutable to ASLayoutElement
* arg
* fix wrapperWithLayoutElement
* [Layout API] Rename ASLayoutable to ASLayoutElement
* arg
* address Michael's comments
* Remove ASLayoutValidation files that were deleted on master since this diff was created.
* 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
* 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
* 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