const resizeCursorCache = new Map(); const rotateCursorCache = new Map(); function getRoundedDegree(degrees: number, interval: number = 1): number { return (Math.round(degrees / interval) * interval) % 360; } export function getResizeCursorUrl(degrees: number): string { degrees = getRoundedDegree(degrees); if (degrees > 180) { degrees -= 180; } if (!resizeCursorCache.has(degrees)) { const url = resizeCursorUrl(degrees); resizeCursorCache.set(degrees, url); } return resizeCursorCache.get(degrees)!; } export function getRotateCursorUrl(degrees: number): string { degrees = getRoundedDegree(degrees); if (!rotateCursorCache.has(degrees)) { const url = rotateCursorUrl(degrees); rotateCursorCache.set(degrees, url); } return rotateCursorCache.get(degrees)!; } const resizeCursorUrl = (degrees: number) => `url("data:image/svg+xml,") 16 16, nwse-resize`; const rotateCursorUrl = (degrees: number) => `url("data:image/svg+xml,") 16 16, pointer`;