{
	"version": 3,
	"sources": [
		"aspectRatio.ts"
	],
	"names": [
		"extend",
		"addEdges",
		"prepareStates",
		"setAll",
		"startAll",
		"aspectRatio",
		"start",
		"arg",
		"state",
		"rect",
		"edges",
		"originalEdges",
		"pageCoords",
		"coords",
		"ratio",
		"options",
		"equalDelta",
		"modifiers",
		"width",
		"height",
		"startCoords",
		"startRect",
		"linkedEdges",
		"top",
		"left",
		"bottom",
		"right",
		"xIsPrimaryAxis",
		"edgeSign",
		"negativeSecondaryEdge",
		"length",
		"subStates",
		"map",
		"subState",
		"states",
		"set",
		"initialCoords",
		"aspectMethod",
		"setEqualDelta",
		"setRatio",
		"correctedRect",
		"x",
		"y",
		"result",
		"prevCoords",
		"prevRect",
		"delta",
		"changed",
		"xIsCriticalAxis",
		"Math",
		"abs",
		"eventProps",
		"defaults",
		"enabled",
		"newHeight",
		"newWidth"
	],
	"mappings": "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",
	"sourcesContent": [
		"/* eslint-disable */\n\n/**\n * @module modifiers/aspectRatio\n *\n * @description\n * This module forces elements to be resized with a specified dx/dy ratio.\n *\n * @example\n * interact(target).resizable({\n *   modifiers: [\n *     interact.modifiers.snapSize({\n *       targets: [ interact.createSnapGrid({ x: 20, y: 20 }) ],\n *     }),\n *     interact.aspectRatio({ ratio: 'preserve' }),\n *   ],\n * });\n */\n\nimport extend from '@interactjs/utils/extend'\nimport { addEdges } from '@interactjs/utils/rect'\nimport { Modifier, ModifierModule, ModifierState, prepareStates, setAll, startAll } from './base'\n\nexport interface AspectRatioOptions {\n  ratio?: number | 'preserve'\n  equalDelta?: boolean\n  modifiers?: Modifier[]\n  enabled?: boolean\n}\n\nexport type AspectRatioState = ModifierState<AspectRatioOptions, {\n  startCoords: Interact.Point\n  startRect: Interact.Rect\n  linkedEdges: Interact.EdgeOptions\n  ratio: number\n  equalDelta: boolean\n  xIsPrimaryAxis: boolean\n  edgeSign: 1 | -1\n  subStates: ModifierState[]\n}>\n\nconst aspectRatio: ModifierModule<AspectRatioOptions, AspectRatioState> = {\n  start (arg) {\n    const { state, rect, edges: originalEdges, pageCoords: coords } = arg\n    let { ratio } = state.options\n    const { equalDelta, modifiers } = state.options\n\n    if (ratio === 'preserve') {\n      ratio = rect.width / rect.height\n    }\n\n    state.startCoords = extend({}, coords)\n    state.startRect = extend({}, rect)\n    state.ratio = ratio\n    state.equalDelta = equalDelta\n\n    const linkedEdges = state.linkedEdges = {\n      top   : originalEdges.top    || (originalEdges.left   && !originalEdges.bottom),\n      left  : originalEdges.left   || (originalEdges.top    && !originalEdges.right),\n      bottom: originalEdges.bottom || (originalEdges.right  && !originalEdges.top),\n      right : originalEdges.right  || (originalEdges.bottom && !originalEdges.left),\n    }\n\n    state.xIsPrimaryAxis = !!(originalEdges.left || originalEdges.right)\n\n    if (state.equalDelta) {\n      state.edgeSign = (linkedEdges.left ? 1 : -1) * (linkedEdges.top ? 1 : -1) as 1 | -1\n    }\n    else {\n      const negativeSecondaryEdge = state.xIsPrimaryAxis ? linkedEdges.top : linkedEdges.left\n      state.edgeSign = negativeSecondaryEdge ? -1 : 1\n    }\n\n    extend(arg.edges, linkedEdges)\n\n    if (!modifiers || !modifiers.length) { return }\n\n    state.subStates = prepareStates(modifiers).map(subState => {\n      subState.options = {\n        ...subState.options,\n      }\n\n      return subState\n    })\n\n    return startAll({\n      ...arg,\n      states: state.subStates,\n    })\n  },\n\n  set (arg) {\n    const { state, rect, coords } = arg\n    const initialCoords = extend({}, coords)\n    const aspectMethod = state.equalDelta ? setEqualDelta : setRatio\n\n    aspectMethod(state, state.xIsPrimaryAxis, coords, rect)\n\n    if (!state.subStates) { return null }\n\n    const correctedRect = extend({}, rect)\n\n    addEdges(state.linkedEdges, correctedRect, { x: coords.x - initialCoords.x, y: coords.y - initialCoords.y })\n\n    const result = setAll({\n      ...arg,\n      rect: correctedRect,\n      edges: state.linkedEdges,\n      pageCoords: coords,\n      states: state.subStates,\n      prevCoords: coords,\n      prevRect: correctedRect,\n    })\n\n    const { delta } = result\n\n    if (result.changed) {\n      const xIsCriticalAxis = Math.abs(delta.x) > Math.abs(delta.y)\n\n      // do aspect modification again with critical edge axis as primary\n      aspectMethod(state, xIsCriticalAxis, result.coords, result.rect)\n      extend(coords, result.coords)\n    }\n\n    return result.eventProps\n  },\n\n  defaults: {\n    ratio: 'preserve',\n    equalDelta: false,\n    modifiers: [],\n    enabled: false,\n  },\n}\n\nfunction setEqualDelta ({ startCoords, edgeSign }: AspectRatioState, xIsPrimaryAxis: boolean, coords: Interact.Point) {\n  if (xIsPrimaryAxis) {\n    coords.y = startCoords.y + (coords.x - startCoords.x) * edgeSign\n  }\n  else {\n    coords.x = startCoords.x + (coords.y - startCoords.y) * edgeSign\n  }\n}\n\nfunction setRatio ({ startRect, startCoords, ratio, edgeSign }: AspectRatioState, xIsPrimaryAxis: boolean, coords: Interact.Point, rect: Interact.Rect) {\n  if (xIsPrimaryAxis) {\n    const newHeight = rect.width / ratio\n\n    coords.y = startCoords.y + (newHeight - startRect.height) * edgeSign\n  }\n  else {\n    const newWidth = rect.height * ratio\n\n    coords.x = startCoords.x + (newWidth - startRect.width) * edgeSign\n  }\n}\n\nexport default aspectRatio\n"
	]
}