So below is a thought experiment, no testing… 
So when you say crop from the media library.. are you talking global crops that you have stored on the image mediaType?
Or maybe you are meaning you have a mediaPicker in the block element, which can have localcrops?
block data should carry local crops, with the mediaKey.
{
"image": [
{
"mediaKey": "3d5f...",
"crops": [
{
"alias": "thumbnail",
"width": 300,
"height": 300,
"coordinates": {
"x1": 0.1,
"y1": 0.1,
"x2": 0.9,
"y2": 0.9
}
}
],
"focalPoint": {
"left": 0.4,
"top": 0.3
}
}
]
}
so then you’d need to fetch the media entity from the mediadetailepository to get the actual src url and then use the crop/focal point to use.
const repo = new UmbMediaDetailRepository(this);
const { data } = await repo.requestByUnique(mediaKey);
console.log(JSON.stringify(data, null, 2));
{
"values": [
{
"alias": "umbracoFile",
"value": {
"src": "/media/....jpg",
"focalPoint": {
"left": 0.5,
"top": 0.5
},
"crops": [
{
"alias": "thumbnail",
"width": 300,
"height": 300
}
]
}
}
]
}
so then you have local or global crops and you can pass the one you want to the cropper preview.
<umb-image-cropper-preview
.src=${src}
.crop=${crop}
.focalPoint=${focalPoint}>
</umb-image-cropper-preview>
However, that might not be the ui you want.. but you now have the params you need to generate..
const url =
`${src}?crop=${crop.coordinates.x1},${crop.coordinates.y1},${crop.coordinates.x2},${crop.coordinates.y2}` +
`&width=300&height=300`;
or
const url =
`${src}?width=${width}&height=${height}&mode=crop` +
`¢er=${focalPoint.top},${focalPoint.left}`;
<img src=${cropUrl} />
ps there is also umb-media-thumbnail which is the suggested way to rendered images in the backoffice.. though doesn’t seem to have any crop or focalpoint support.. prob why there are no utility helpers etc …