| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import { mixNumber } from '../../utils/mix/number.mjs';
- import { percent } from '../../value/types/numbers/units.mjs';
- import { scalePoint } from './delta-apply.mjs';
- /**
- * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse
- */
- function removePointDelta(point, translate, scale, originPoint, boxScale) {
- point -= translate;
- point = scalePoint(point, 1 / scale, originPoint);
- if (boxScale !== undefined) {
- point = scalePoint(point, 1 / boxScale, originPoint);
- }
- return point;
- }
- /**
- * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse
- */
- function removeAxisDelta(axis, translate = 0, scale = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {
- if (percent.test(translate)) {
- translate = parseFloat(translate);
- const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);
- translate = relativeProgress - sourceAxis.min;
- }
- if (typeof translate !== "number")
- return;
- let originPoint = mixNumber(originAxis.min, originAxis.max, origin);
- if (axis === originAxis)
- originPoint -= translate;
- axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);
- axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);
- }
- /**
- * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse
- * and acts as a bridge between motion values and removeAxisDelta
- */
- function removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {
- removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);
- }
- /**
- * The names of the motion values we want to apply as translation, scale and origin.
- */
- const xKeys = ["x", "scaleX", "originX"];
- const yKeys = ["y", "scaleY", "originY"];
- /**
- * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse
- * and acts as a bridge between motion values and removeAxisDelta
- */
- function removeBoxTransforms(box, transforms, originBox, sourceBox) {
- removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : undefined, sourceBox ? sourceBox.x : undefined);
- removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : undefined, sourceBox ? sourceBox.y : undefined);
- }
- export { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };
|