VerticalScrollOverflowView Class — react Architecture
Architecture documentation for the VerticalScrollOverflowView class in VerticalScrollOverflowView.js from the react codebase.
Entity Profile
Dependency Diagram
graph TD 96270b29_2ae0_8efa_5613_43274b8ffeec["VerticalScrollOverflowView"] 9576b70a_cfcb_5729_1030_479df0856820["VerticalScrollOverflowView.js"] 96270b29_2ae0_8efa_5613_43274b8ffeec -->|defined in| 9576b70a_cfcb_5729_1030_479df0856820 c14bc79d_a240_8e4b_ea22_b67a585c3646["constructor()"] 96270b29_2ae0_8efa_5613_43274b8ffeec -->|method| c14bc79d_a240_8e4b_ea22_b67a585c3646 b095d95a_14d3_4558_d65a_4c272b86428a["layoutSubviews()"] 96270b29_2ae0_8efa_5613_43274b8ffeec -->|method| b095d95a_14d3_4558_d65a_4c272b86428a b6d7e0eb_672c_2250_5ec1_56607b5e9daa["setScrollOffset()"] 96270b29_2ae0_8efa_5613_43274b8ffeec -->|method| b6d7e0eb_672c_2250_5ec1_56607b5e9daa
Relationship Graph
Source Code
packages/react-devtools-timeline/src/view-base/vertical-scroll-overflow/VerticalScrollOverflowView.js lines 20–91
export class VerticalScrollOverflowView extends View {
_contentView: View;
_isProcessingOnChange: boolean = false;
_isScrolling: boolean = false;
_scrollOffset: number = 0;
_scrollBarView: VerticalScrollBarView;
_verticalScrollView: VerticalScrollView;
constructor(
surface: Surface,
frame: Rect,
contentView: View,
viewState: ViewState,
) {
super(surface, frame, withVerticalScrollbarLayout);
this._contentView = contentView;
this._verticalScrollView = new VerticalScrollView(
surface,
frame,
contentView,
viewState,
'VerticalScrollOverflowView',
);
this._verticalScrollView.onChange(this._onVerticalScrollViewChange);
this._scrollBarView = new VerticalScrollBarView(surface, frame, this);
this.addSubview(this._verticalScrollView);
this.addSubview(this._scrollBarView);
}
layoutSubviews() {
super.layoutSubviews();
const contentSize = this._contentView.desiredSize();
// This should be done after calling super.layoutSubviews() – calling it
// before somehow causes _contentView to need display on every mousemove
// event when the scroll bar is shown.
this._scrollBarView.setContentHeight(contentSize.height);
}
setScrollOffset(newScrollOffset: number, maxScrollOffset: number) {
const deltaY = newScrollOffset - this._scrollOffset;
if (!this._isProcessingOnChange) {
this._verticalScrollView.scrollBy(-deltaY);
}
this._scrollOffset = newScrollOffset;
this.setNeedsDisplay();
}
_onVerticalScrollViewChange: (
scrollState: ScrollState,
containerLength: number,
) => void = (scrollState: ScrollState, containerLength: number) => {
const maxOffset = scrollState.length - containerLength;
if (maxOffset === 0) {
return;
}
const percentage = Math.abs(scrollState.offset) / maxOffset;
const maxScrollThumbY = this._scrollBarView.getMaxScrollThumbY();
this._isProcessingOnChange = true;
this._scrollBarView.setScrollThumbY(percentage * maxScrollThumbY);
this._isProcessingOnChange = false;
};
}
Domain
Source
Frequently Asked Questions
What is the VerticalScrollOverflowView class?
VerticalScrollOverflowView is a class in the react codebase, defined in packages/react-devtools-timeline/src/view-base/vertical-scroll-overflow/VerticalScrollOverflowView.js.
Where is VerticalScrollOverflowView defined?
VerticalScrollOverflowView is defined in packages/react-devtools-timeline/src/view-base/vertical-scroll-overflow/VerticalScrollOverflowView.js at line 20.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free