VerticalScrollOverflowView.js — react Source File
Architecture documentation for VerticalScrollOverflowView.js, a javascript file in the react codebase. 11 imports, 1 dependents.
Entity Profile
Dependency Diagram
graph LR 9576b70a_cfcb_5729_1030_479df0856820["VerticalScrollOverflowView.js"] 1d481b0c_03e1_6f28_eff1_74d4566b3dc8["geometry.js"] 9576b70a_cfcb_5729_1030_479df0856820 --> 1d481b0c_03e1_6f28_eff1_74d4566b3dc8 d0e34df5_54e0_bd63_7394_3bfe61a4c376["scrollState.js"] 9576b70a_cfcb_5729_1030_479df0856820 --> d0e34df5_54e0_bd63_7394_3bfe61a4c376 2fbafaf8_32f6_4129_38fc_89470d906d24["Surface.js"] 9576b70a_cfcb_5729_1030_479df0856820 --> 2fbafaf8_32f6_4129_38fc_89470d906d24 20cc2065_4b5b_fd6b_be12_28f36b0ff4cf["types.js"] 9576b70a_cfcb_5729_1030_479df0856820 --> 20cc2065_4b5b_fd6b_be12_28f36b0ff4cf 4a10df0d_a8e2_1549_3912_4d2e6db4d890["VerticalScrollBarView.js"] 9576b70a_cfcb_5729_1030_479df0856820 --> 4a10df0d_a8e2_1549_3912_4d2e6db4d890 61a52b70_028c_d7b7_0542_1547d92cd850["VerticalScrollBarView"] 9576b70a_cfcb_5729_1030_479df0856820 --> 61a52b70_028c_d7b7_0542_1547d92cd850 9d25a570_0086_154f_00bb_c5b100737b42["withVerticalScrollbarLayout.js"] 9576b70a_cfcb_5729_1030_479df0856820 --> 9d25a570_0086_154f_00bb_c5b100737b42 e286e208_564c_fd3e_c601_e47312461d47["withVerticalScrollbarLayout"] 9576b70a_cfcb_5729_1030_479df0856820 --> e286e208_564c_fd3e_c601_e47312461d47 82f60adf_9325_5735_ba06_dcbbfcf32cc9["View.js"] 9576b70a_cfcb_5729_1030_479df0856820 --> 82f60adf_9325_5735_ba06_dcbbfcf32cc9 be7fceed_f363_2288_8ab1_9e46ccc7de65["VerticalScrollView.js"] 9576b70a_cfcb_5729_1030_479df0856820 --> be7fceed_f363_2288_8ab1_9e46ccc7de65 15e8ee71_cd71_e6f6_40e5_59e8feb4985d["VerticalScrollView"] 9576b70a_cfcb_5729_1030_479df0856820 --> 15e8ee71_cd71_e6f6_40e5_59e8feb4985d 4a10df0d_a8e2_1549_3912_4d2e6db4d890["VerticalScrollBarView.js"] 4a10df0d_a8e2_1549_3912_4d2e6db4d890 --> 9576b70a_cfcb_5729_1030_479df0856820 style 9576b70a_cfcb_5729_1030_479df0856820 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
*/
import type {Rect} from '../geometry';
import type {ScrollState} from '../utils/scrollState';
import type {Surface} from '../Surface';
import type {ViewState} from '../../types';
import {VerticalScrollBarView} from './VerticalScrollBarView';
import {withVerticalScrollbarLayout} from './withVerticalScrollbarLayout';
import {View} from '../View';
import {VerticalScrollView} from '../VerticalScrollView';
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
Subdomains
Classes
Dependencies
Imported By
Source
Frequently Asked Questions
What does VerticalScrollOverflowView.js do?
VerticalScrollOverflowView.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain, Validation subdomain.
What does VerticalScrollOverflowView.js depend on?
VerticalScrollOverflowView.js imports 11 module(s): Surface.js, VerticalScrollBarView, VerticalScrollBarView.js, VerticalScrollView, VerticalScrollView.js, View.js, geometry.js, scrollState.js, and 3 more.
What files import VerticalScrollOverflowView.js?
VerticalScrollOverflowView.js is imported by 1 file(s): VerticalScrollBarView.js.
Where is VerticalScrollOverflowView.js in the architecture?
VerticalScrollOverflowView.js is located at packages/react-devtools-timeline/src/view-base/vertical-scroll-overflow/VerticalScrollOverflowView.js (domain: BabelCompiler, subdomain: Validation, directory: packages/react-devtools-timeline/src/view-base/vertical-scroll-overflow).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free