advanced-cropper
Version:
The core of the advanced cropper libraries family
44 lines (39 loc) • 2.52 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var tslib = require('tslib');
var utils = require('../service/utils.js');
var helpers = require('../service/helpers.js');
var copyState = require('./copyState.js');
require('../types/index.js');
require('./setCoordinates.js');
var fitCoordinates = require('../service/fitCoordinates.js');
function setBoundary(state, settings, boundary) {
var result = tslib.__assign(tslib.__assign({}, copyState.copyState(state)), { boundary: boundary });
if (result.visibleArea && result.coordinates && state.visibleArea) {
// Scale visible area size to fit new boundary:
result.visibleArea.height = result.visibleArea.width / utils.ratio(boundary);
result.visibleArea.top += (state.visibleArea.height - result.visibleArea.height) / 2;
// Scale visible area to prevent overlap coordinates (and its minimum size)
var sizeRestrictions = helpers.getSizeRestrictions(result, settings);
if (Math.max(sizeRestrictions.minHeight, result.coordinates.height) - result.visibleArea.height > 0 ||
Math.max(sizeRestrictions.minWidth, result.coordinates.width) - result.visibleArea.width > 0) {
result.visibleArea = utils.applyScale(result.visibleArea, Math.max(Math.max(sizeRestrictions.minHeight, result.coordinates.height) / result.visibleArea.height, Math.max(sizeRestrictions.minWidth, result.coordinates.width) / result.visibleArea.width));
}
// Scale visible area to prevent overlap area restrictions
result.visibleArea = utils.resizeToSizeRestrictions(result.visibleArea, helpers.getAreaSizeRestrictions(result, settings));
// Move visible are to prevent moving of the coordinates:
var move = utils.inverseMove(utils.fitToPositionRestrictions(result.coordinates, utils.coordinatesToPositionRestrictions(result.visibleArea)));
if (result.visibleArea.width < result.coordinates.width) {
move.left = 0;
}
if (result.visibleArea.height < result.coordinates.height) {
move.top = 0;
}
result.visibleArea = utils.applyMove(result.visibleArea, move);
// Move visible area to prevent overlap the area restrictions
result.visibleArea = utils.moveToPositionRestrictions(result.visibleArea, helpers.getAreaPositionRestrictions(result, settings));
result = fitCoordinates.fitCoordinates(result, settings);
}
return result;
}
exports.setBoundary = setBoundary;