Fix test util to measure text properly based on flex direction (#1768)

Summary:
Pull Request resolved: https://github.com/facebook/yoga/pull/1768

Depending on the flex direction text will either be capped to the measured size or to the longest word, so I added that functionality

Reviewed By: mlord93

Differential Revision: D67106199

fbshipit-source-id: 0b4691768809004043a847f3fc5f7b94e92f1575
This commit is contained in:
Joe Vilches
2024-12-12 11:11:49 -08:00
committed by Facebook GitHub Bot
parent 13f4adbbcd
commit 909e4bea6e
11 changed files with 216 additions and 37 deletions

View File

@@ -5,17 +5,23 @@
* LICENSE file in the root directory of this source tree.
*/
import {MeasureMode} from 'yoga-layout';
import {FlexDirection, MeasureMode} from 'yoga-layout';
type MeasureContext = {
text: string;
flexDirection: FlexDirection;
};
export function instrinsicSizeMeasureFunc(
this: string,
this: MeasureContext,
width: number,
widthMode: MeasureMode,
height: number,
heightMode: MeasureMode,
): {width: number; height: number} {
const textLength = this.length;
const words = this.split(' ');
const textLength = this.text.length;
const words = this.text.split(' ');
const flexDirection = this.flexDirection;
const widthPerChar = 10;
const heightPerChar = 10;
@@ -53,7 +59,10 @@ export function instrinsicSizeMeasureFunc(
return heightPerChar;
}
const maxLineWidth = Math.max(longestWordWidth(), measuredWidth);
const maxLineWidth =
flexDirection == FlexDirection.Column
? measuredWidth
: Math.max(longestWordWidth(), measuredWidth);
//if fixed width < width of widest word, take width of widest word