/*** 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 {Layouter} from '../layouter';
/*** Assumes {@param layout} will only contain 2 views.*/export const withVerticalScrollbarLayout: Layouter = (
layout,
containerFrame,
) => {
const [contentLayoutInfo, scrollbarLayoutInfo] = layout;
const desiredContentSize = contentLayoutInfo.view.desiredSize();
const shouldShowScrollbar =desiredContentSize.height > containerFrame.size.height;const scrollbarWidth = shouldShowScrollbar
? scrollbarLayoutInfo.view.desiredSize().width
: 0;
const laidOutContentLayoutInfo = {...contentLayoutInfo,
frame: {origin: contentLayoutInfo.view.frame.origin,
size: {width: containerFrame.size.width - scrollbarWidth,
height: containerFrame.size.height,
},},};const laidOutScrollbarLayoutInfo = {
...scrollbarLayoutInfo,
frame: {origin: {x:laidOutContentLayoutInfo.frame.origin.x +
laidOutContentLayoutInfo.frame.size.width,
y: containerFrame.origin.y,
},size: {width: scrollbarWidth,
height: containerFrame.size.height,
},},};return [laidOutContentLayoutInfo, laidOutScrollbarLayoutInfo];
};