* Mark ASRunLoopQueue as drained if it contains only NULLs
* Update CHANGELOG.md
* Cover ASRunLoopQueue with tests
* Include PR link in CHANGELOG.md
* Replace license header of ASRunLoopQueueTests.m with correct one
* Insert a nil in _internalQueue to ensure compaction, instead of maintaining a state for _isQueueDrained
* Add support for downloading a set of URLs on ASNetworkImageNode
* Should be building now;
* Remove old unused code
* Add a changelog message
* Bump PINRemoteImage
* Huy's comments
* Notify rasterized subsides that render pass has completed
* Traverse entire subnode tree notifying all subnodes
* Add entry in changelog
* Retrieve rasterizesSubtree flag while holding instance lock
* Balance display delegate calls for rasterized subnodes
* [ASCollectionNode] Add -isProcessingUpdates and -onDidFinishProcessingUpdates: APIs.
Over time, there have actually been a lot of legitimate uses for an API like this.
In fact, I'm not quite sure what has held us back from adding one!
I believe that at least some portion of -wait calls (even if less than 50%) could be
replaced with -onDidFinishProcessingUpdates:, which could potentially improve the
performance of applications using -wait by a significant amount.
Please take a close look at implementation correctness. Although I'm in a bit of a
rush, I'm aiming to make this properly documented and added a basic test -- but it
could certainly use some more detailed testing as a followup.
* [ASCollectionNode] Improvements to the implementation of -isProcessingUpdates and -onDidFinishProcessingUpdates:
* Add lock to ASMainSerialQueue count method.
* [ASTableNode] Implement -isProcessingUpdates and -onDidFinishProcessingUpdates:. Rename -waitUntil to consistent naming.
* Table and collection views to consider their content inset when calculating element size range
* Update CHANGELOG
* Address comments
* -[ASPagerNode currentPageIndex] to use pageSize instead of bounds
* Update documentation in ASPagerNode
* Minor change
After consulting Apple documentation and working with some a11y experts,
we've found that aggregating objects that have a11y labels but are not
themselves interactable is significantly preferred for these users.
It makes it much quicker to navigate scrolling content if VoiceOver only
stops to select entire cells, and then allows drilling down into the cell
to select individual components. This implementation achieves that behavior.
We should consider enabling isAccessibilityContainer by default on ASCellNode.
This would be an improvement for 95% of a11y use cases. Aggregation can be
enabled or disabled on any node.
* [ASImageNode] Enable .clipsToBounds by default (fix .cornerRadius, GIFs overflow).
We've seen a number of bugs reported over time that .cornerRadius didn't work on
ASNetworkImageNode. This wasn't much of a concern because cornerRadius is very
inefficient anyway, and there are better ways to round corners, but it should
certainly work.
It turns out that clipsToBounds has been off for images, and this ultimately
was behind another issue recently seen wehre decoded GIFs would spill outside
the bounds area to overlap nearby content.
Although there is some risk of behavior change from this, I think the risk
is fairly small, and in most cases it will probably fix behaviors in a way
that doesn't cause problems for the app.
We should consider if this property should be on for all ASDisplayNodes,
but for now it would be a great step to be confident it's on for all
ASImageNodes.
* Update changelog for ImageNode Clipping.
* Update corner-rounding.md
If I understand right, both Precomposited corners techniques uses `[path clip]`, right? If so, I think it will be better to move it to the general description of the section, as currently it seems as only the second option uses `[path clip]`.
* Update corner-rounding.md
Improved positioning.
* Update corner-rounding.md
Syntax consistency: Changed `off-screen` to `offscreen`, as both syntaxes currently appears in the text.
- During the first layout calculation, measure more than just elements in the visible viewport.
- Remove unnecessary params in `-[ASCollectionLayoutState getAndRemoveUnmeasuredLayoutAttributesPageTableInRect`.]
- Add content offset bridging property to table and collection node
- And use it in `ASCollectionLayout` to avoid measuring unrelated nodes during the first layout.
- Update CHANGELOG and highlight deprecated methods
* Improvements in ASCollectionGalleryLayoutDelegate
- It now can handle section inset, as well as interitem and line spacings
- Other small changes
* Fix build failure and update file licenses
* Update CHANGELOG
* Minor change
* Another assertion on scrollable directions of gallery layout delegate
* Add snapshot tests for interitem and interline spacings of stack spec
* Improve comment
* Make sure item spacings are properly considered and reset on new lines, snapshot tests included
* Update showcase - add blog post link to ClassDojo icon
* Revert "Update showcase - add blog post link to ClassDojo icon"
This reverts commit 6b180f1191.
* Add link to ClassDojo icon
* ASStackUnpositionedLayout: Take spacing into account when laying out a wrapped stack.
* ASStackLayoutSpec: Add the lineSpacing property.
* Update CHANGELOG.md.
* Update scroll-node.md
Regarding the last sentence: “As you can see, the `scrollNode`'s underlying view is a `ASScrollNode`.”:
1. I think that `ASScrollNode` should be replaced with `UIScrollView`.
2. But — not sure how can it be seen from this example...
* Update scroll-node.md
Removed the last sentence, as it did not make sense, and probably left there from previous editions.
* Update adoption-guide-2-0-beta1.md
- Removed the “number” looks like a mistake
- Changed `"` to `“` to match the ending sign
* Update adoption-guide-2-0-beta1.md
Changing both sign to non-smart
With these changes, I'd also like to propose that we move ASNodeController
out of Beta (renaming the files without +Beta). Let me know what you think!
Because we don't support ASNodeController directly in ASCV / ASTV, it is still
important to allow flipping the ownership in certain cases (in particular, for
root CellNodeController objects that should follow the lifecycle of the
ASCellNode rather than owning the ASCellNode).
* Be more aggressive at invalidating layouts during transitions, add a debug method, fix some build errors when verbose logging
* Add a changelog entry
* Update image-modification-block.md
Just some minor proposals for improvements:
- Removed white spaces, which caused the first line in the image modification block to be shown a bit "messy"
- Using the Null coalescing operator in the following line
* Update image-modification-block.md
Now, with the second change as well.
* Invalidate the calculated layout transitioning using the same size range
- It's possible that -transitionLayoutWithSizeRange: can be called with the same size range used for previous layout passes. In that case, it's necessary to invalidate the current layout to avoid it being reused later on in the process.
* Fix CHANGELOG
* Fix infinite layout loop
- The problem will occur if a node does either of the followings:
1. Keeps using a stale pending layout over a calculated layout
2. Doesn't update the next layout's version after calling _setNeedsLayoutFromAbove.
* Update CHANGELOG
* Add ASCollectionGalleryLayoutSizeProviding
- This allows users to return different sizes based on certain conditions, such as the collection node's bounds or grid constants.
- ASPagerNode will also act as a size provider to ensure all pages have an up-to-date size that is its bounds.
* Update CHANGELOG
* ASPagerNode to use gallery layout delegate if told to
* Merge willUpdateWithChangeSet and didUpdateWithChangeSet delegate methods into one
- After #420, there is no change occurs between those 2 methods. Having them separately doesn't achieve anything and can cause confusions.
* Minor change
* Clean up ASDataController
- Parameters passed to ASDataControllerCompletionBlock are no longer used. Remove them.
- The value returned by _allocateNodesFromElements:andLayout:completion is not used. Remove it.
- Elements are not allocated and measured in batches anymore. Remove the code that does batch allocation.
- Remove RETURN_IF_NO_DATASOURCE. It's used only once and is not worth it.
* Remove +parallelProcessorCount
* Update CHANGELOG