stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
78 lines • 2.1 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.buildGalleryOfSingleImage = buildGalleryOfSingleImage;
var _buildThumbnail = require("./buildThumbnail");
var _getAspectRatio = require("../getAspectRatio");
function clamp(number, min, max) {
return Math.min(Math.max(number, min), max);
}
function getContainerSize({
image,
sizeConfig
}) {
var height = image.original_height,
width = image.original_width;
var gridHeight = sizeConfig.gridHeight,
gridWidth = sizeConfig.gridWidth,
maxHeight = sizeConfig.maxHeight,
maxWidth = sizeConfig.maxWidth,
minHeight = sizeConfig.minHeight,
minWidth = sizeConfig.minWidth;
if (!height || !width) {
return {
height: gridHeight,
width: gridWidth
};
}
var aspectRatio = (0, _getAspectRatio.getAspectRatio)(image);
if (aspectRatio <= 1) {
var _containerHeight = clamp(height, minHeight, maxHeight);
var _containerWidth = clamp(_containerHeight * aspectRatio, minWidth, maxWidth);
if (_containerWidth === maxWidth) {
return {
height: clamp(_containerWidth / aspectRatio, minHeight, maxHeight),
width: _containerWidth
};
}
return {
height: _containerHeight,
width: _containerWidth
};
}
var containerWidth = clamp(width, minWidth, maxWidth);
var containerHeight = clamp(containerWidth / aspectRatio, minHeight, maxHeight);
if (containerHeight === maxHeight) {
return {
height: containerHeight,
width: clamp(containerHeight * aspectRatio, minHeight, maxHeight)
};
}
return {
height: containerHeight,
width: containerWidth
};
}
function buildGalleryOfSingleImage({
image,
resizableCDNHosts,
sizeConfig
}) {
var container = getContainerSize({
image,
sizeConfig
});
var thumbnail = (0, _buildThumbnail.buildThumbnail)({
image,
resizableCDNHosts,
flex: 1,
resizeMode: 'cover',
...container
});
var column = [thumbnail];
return {
...container,
thumbnailGrid: [column]
};
}
//# sourceMappingURL=buildGalleryOfSingleImage.js.map