Files
linkwarden/apps/web/lib/utils.ts
2025-08-06 15:03:03 -05:00

41 lines
1.1 KiB
TypeScript

import { pointerWithin, rectIntersection } from "@dnd-kit/core";
import { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
export function isPWA() {
return (
window.matchMedia("(display-mode: standalone)").matches ||
(window.navigator as any).standalone ||
document.referrer.includes("android-app://")
);
}
export function isIphone() {
return (
/iPhone/.test(navigator.userAgent) &&
!(window as unknown as { MSStream?: any }).MSStream
);
}
/**
*
* Custom collision detection algorithm for dnd-kit that first checks for pointer collisions
* and then falls back to rectangle intersections
*/
export function customCollisionDetectionAlgorithm(args: any) {
// First, let's see if there are any collisions with the pointer
const pointerCollisions = pointerWithin(args);
// Collision detection algorithms return an array of collisions
if (pointerCollisions.length > 0) {
return pointerCollisions;
}
// If there are no collisions with the pointer, return rectangle intersections
return rectIntersection(args);
}