All checks were successful
Publish To Prod / deploy_and_publish (push) Successful in 35s
122 lines
2.9 KiB
JavaScript
122 lines
2.9 KiB
JavaScript
import { getEventCoordinates } from '@dnd-kit/utilities';
|
|
|
|
function createSnapModifier(gridSize) {
|
|
return _ref => {
|
|
let {
|
|
transform
|
|
} = _ref;
|
|
return { ...transform,
|
|
x: Math.ceil(transform.x / gridSize) * gridSize,
|
|
y: Math.ceil(transform.y / gridSize) * gridSize
|
|
};
|
|
};
|
|
}
|
|
|
|
const restrictToHorizontalAxis = _ref => {
|
|
let {
|
|
transform
|
|
} = _ref;
|
|
return { ...transform,
|
|
y: 0
|
|
};
|
|
};
|
|
|
|
function restrictToBoundingRect(transform, rect, boundingRect) {
|
|
const value = { ...transform
|
|
};
|
|
|
|
if (rect.top + transform.y <= boundingRect.top) {
|
|
value.y = boundingRect.top - rect.top;
|
|
} else if (rect.bottom + transform.y >= boundingRect.top + boundingRect.height) {
|
|
value.y = boundingRect.top + boundingRect.height - rect.bottom;
|
|
}
|
|
|
|
if (rect.left + transform.x <= boundingRect.left) {
|
|
value.x = boundingRect.left - rect.left;
|
|
} else if (rect.right + transform.x >= boundingRect.left + boundingRect.width) {
|
|
value.x = boundingRect.left + boundingRect.width - rect.right;
|
|
}
|
|
|
|
return value;
|
|
}
|
|
|
|
const restrictToParentElement = _ref => {
|
|
let {
|
|
containerNodeRect,
|
|
draggingNodeRect,
|
|
transform
|
|
} = _ref;
|
|
|
|
if (!draggingNodeRect || !containerNodeRect) {
|
|
return transform;
|
|
}
|
|
|
|
return restrictToBoundingRect(transform, draggingNodeRect, containerNodeRect);
|
|
};
|
|
|
|
const restrictToFirstScrollableAncestor = _ref => {
|
|
let {
|
|
draggingNodeRect,
|
|
transform,
|
|
scrollableAncestorRects
|
|
} = _ref;
|
|
const firstScrollableAncestorRect = scrollableAncestorRects[0];
|
|
|
|
if (!draggingNodeRect || !firstScrollableAncestorRect) {
|
|
return transform;
|
|
}
|
|
|
|
return restrictToBoundingRect(transform, draggingNodeRect, firstScrollableAncestorRect);
|
|
};
|
|
|
|
const restrictToVerticalAxis = _ref => {
|
|
let {
|
|
transform
|
|
} = _ref;
|
|
return { ...transform,
|
|
x: 0
|
|
};
|
|
};
|
|
|
|
const restrictToWindowEdges = _ref => {
|
|
let {
|
|
transform,
|
|
draggingNodeRect,
|
|
windowRect
|
|
} = _ref;
|
|
|
|
if (!draggingNodeRect || !windowRect) {
|
|
return transform;
|
|
}
|
|
|
|
return restrictToBoundingRect(transform, draggingNodeRect, windowRect);
|
|
};
|
|
|
|
const snapCenterToCursor = _ref => {
|
|
let {
|
|
activatorEvent,
|
|
draggingNodeRect,
|
|
transform
|
|
} = _ref;
|
|
|
|
if (draggingNodeRect && activatorEvent) {
|
|
const activatorCoordinates = getEventCoordinates(activatorEvent);
|
|
|
|
if (!activatorCoordinates) {
|
|
return transform;
|
|
}
|
|
|
|
const offsetX = activatorCoordinates.x - draggingNodeRect.left;
|
|
const offsetY = activatorCoordinates.y - draggingNodeRect.top;
|
|
return { ...transform,
|
|
x: transform.x + offsetX - draggingNodeRect.width / 2,
|
|
y: transform.y + offsetY - draggingNodeRect.height / 2
|
|
};
|
|
}
|
|
|
|
return transform;
|
|
};
|
|
|
|
export { createSnapModifier, restrictToFirstScrollableAncestor, restrictToHorizontalAxis, restrictToParentElement, restrictToVerticalAxis, restrictToWindowEdges, snapCenterToCursor };
|
|
//# sourceMappingURL=modifiers.esm.js.map
|