UNPKG

advanced-cropper

Version:

The core of the advanced cropper libraries family

44 lines (39 loc) 2.52 kB
'use strict'; 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;