kahuna/public/js/crop/index.js (42 lines of code) (raw):
import angular from 'angular';
import './controller';
import '../components/gr-top-bar/gr-top-bar';
import '../directives/ui-crop-box/ui-crop-box';
import cropTemplate from './view.html';
export var crop = angular.module('kahuna.crop', [
'kahuna.crop.controller',
'gr.topBar',
'ui.cropBox'
]);
crop.config(['$stateProvider',
function($stateProvider) {
$stateProvider.state('crop', {
url: '/images/:imageId/crop?cropType&customRatio&defaultCropType',
template: cropTemplate,
controller: 'ImageCropCtrl',
controllerAs: 'ctrl',
resolve: {
// TODO: abstract these resolvers out as we use them on the image
// view too
imageId: ['$stateParams', $stateParams => $stateParams.imageId],
image: ['$state', '$q', 'mediaApi', 'mediaCropper', 'imageId',
($state, $q, mediaApi, mediaCropper, imageId) => {
return mediaApi.find(imageId).then(image => {
return mediaCropper.canBeCropped(image).then(croppable => {
if (croppable) {
return image;
} else {
$state.go('image-error', {message: 'Image cannot be cropped'});
}
});
}).catch(error => {
if (error && error.status === 404) {
$state.go('image-error', {message: 'Image not found'});
} else {
return $q.reject(error);
}
});
}],
optimisedImageUri: ['image', 'imgops',
(image, imgops) => imgops.getFullScreenUri(image)]
}
});
}]);