react-native-skia-responsive-text
Version:
A library providing a wrapper for the React Native Skia Text component, offering features like user-friendly text alignment, efficient multiline text management, and straightforward text truncation.
36 lines (34 loc) • 1.33 kB
JavaScript
export const getTextLinesAlignment = function (lines, width) {
'worklet';
let alignment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'left';
switch (alignment) {
case 'right':
return lines.map(line => width - line.width);
case 'center':
return lines.map(line => (width - line.width) / 2);
case 'center-left':
case 'center-right':
const longestLineWidth = Math.max(...lines.map(line => line.width));
return lines.map(line => alignment === 'center-left' ? (width - longestLineWidth) / 2 : (width + longestLineWidth) / 2 - line.width);
case 'left':
// eslint-disable-next-line @typescript-eslint/no-unused-vars
return lines.map(_ => 0);
}
};
export const getVerticalAlignmentOffset = function (componentHeight) {
'worklet';
let parentHeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
let verticalAlignment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'top';
switch (verticalAlignment) {
case 'top':
return 0;
case 'center':
if (componentHeight >= parentHeight) {
return 0;
}
return (parentHeight - componentHeight) / 2;
case 'bottom':
return parentHeight && parentHeight - componentHeight;
}
};
//# sourceMappingURL=alignment.js.map