function filterGripdCrops()

in public/src/js/utils/validate-image-src.js [77:98]


function filterGripdCrops (json, desired, {minWidth, maxWidth, widthAspectRatio, heightAspectRatio}) {
    return grid().filterCrops(json, function (crop) {
        if (desired.crop && crop.id !== desired.crop) {
            return false;
        }

        const ratio = widthAspectRatio && heightAspectRatio ? widthAspectRatio / heightAspectRatio : NaN;

        return !!_.find([crop.master].concat(crop.assets).filter(Boolean), function (asset) {
            const {width, height} = asset.dimensions;
            const actualRatio = width / height;
            if (maxWidth && maxWidth < width) {
                return false;
            } else if (minWidth && minWidth > width) {
                return false;
            } else if (ratio && Math.abs(ratio - actualRatio) > 0.01) {
                return false;
            }
            return true;
        });
    });
}