{"version":3,"file":"delta-calc.mjs","sources":["../../../../src/projection/geometry/delta-calc.ts"],"sourcesContent":["import { Axis, AxisDelta, Box, Delta } from \"motion-utils\"\nimport { mixNumber } from \"../../utils/mix/number\"\nimport { ResolvedValues } from \"../../render/types\"\n\nconst SCALE_PRECISION = 0.0001\nconst SCALE_MIN = 1 - SCALE_PRECISION\nconst SCALE_MAX = 1 + SCALE_PRECISION\nconst TRANSLATE_PRECISION = 0.01\nconst TRANSLATE_MIN = 0 - TRANSLATE_PRECISION\nconst TRANSLATE_MAX = 0 + TRANSLATE_PRECISION\n\nexport function calcLength(axis: Axis) {\n return axis.max - axis.min\n}\n\nexport function isNear(\n value: number,\n target: number,\n maxDistance: number\n): boolean {\n return Math.abs(value - target) <= maxDistance\n}\n\nexport function calcAxisDelta(\n delta: AxisDelta,\n source: Axis,\n target: Axis,\n origin: number = 0.5\n) {\n delta.origin = origin\n delta.originPoint = mixNumber(source.min, source.max, delta.origin)\n delta.scale = calcLength(target) / calcLength(source)\n delta.translate =\n mixNumber(target.min, target.max, delta.origin) - delta.originPoint\n\n if (\n (delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX) ||\n isNaN(delta.scale)\n ) {\n delta.scale = 1.0\n }\n\n if (\n (delta.translate >= TRANSLATE_MIN &&\n delta.translate <= TRANSLATE_MAX) ||\n isNaN(delta.translate)\n ) {\n delta.translate = 0.0\n }\n}\n\nexport function calcBoxDelta(\n delta: Delta,\n source: Box,\n target: Box,\n origin?: ResolvedValues\n): void {\n calcAxisDelta(\n delta.x,\n source.x,\n target.x,\n origin ? (origin.originX as number) : undefined\n )\n calcAxisDelta(\n delta.y,\n source.y,\n target.y,\n origin ? (origin.originY as number) : undefined\n )\n}\n\nexport function calcRelativeAxis(target: Axis, relative: Axis, parent: Axis) {\n target.min = parent.min + relative.min\n target.max = target.min + calcLength(relative)\n}\n\nexport function calcRelativeBox(target: Box, relative: Box, parent: Box) {\n calcRelativeAxis(target.x, relative.x, parent.x)\n calcRelativeAxis(target.y, relative.y, parent.y)\n}\n\nexport function calcRelativeAxisPosition(\n target: Axis,\n layout: Axis,\n parent: Axis\n) {\n target.min = layout.min - parent.min\n target.max = target.min + calcLength(layout)\n}\n\nexport function calcRelativePosition(target: Box, layout: Box, parent: Box) {\n calcRelativeAxisPosition(target.x, layout.x, parent.x)\n calcRelativeAxisPosition(target.y, layout.y, parent.y)\n}\n"],"names":[],"mappings":"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"}