UNPKG

advanced-cropper

Version:

The core of the advanced cropper libraries family

33 lines (30 loc) 1.6 kB
import 'tslib'; import { ratio, moveToPositionRestrictions } from '../../service/utils.js'; import { isInitializedState, getTransformedImageSize, getAreaSizeRestrictions, getAreaPositionRestrictions } from '../../service/helpers.js'; import { copyState } from '../../state/copyState.js'; import '../../types/index.js'; import '../../state/setCoordinates.js'; import { fitCoordinates } from '../../service/fitCoordinates.js'; function preventZoom(state, settings, action) { if (action && action.immediately && isInitializedState(state)) { var result = copyState(state); var imageSize = getTransformedImageSize(state); var restrictionsSize = getAreaSizeRestrictions(state, settings); var visibleAreaSize = { width: Math.max(Math.min(imageSize.width, restrictionsSize.maxWidth), restrictionsSize.minWidth), height: Math.max(Math.min(imageSize.height, restrictionsSize.maxHeight), restrictionsSize.minHeight), }; if (ratio(result.boundary) > ratio(imageSize)) { result.visibleArea.height = visibleAreaSize.height; result.visibleArea.width = visibleAreaSize.height * ratio(result.boundary); } else { result.visibleArea.width = visibleAreaSize.width; result.visibleArea.height = visibleAreaSize.width / ratio(result.boundary); } result.visibleArea = moveToPositionRestrictions(result.visibleArea, getAreaPositionRestrictions(result, settings)); return fitCoordinates(result, settings); } return state; } export { preventZoom };