Rocky_Mountain_Vending/.pnpm-store/v10/files/c5/94fda1b158916b47e459228ba79a4e7ae80ca4135403436c9f4560d7472d1f8382d03b13243c04b8c51ee560422f6e9de8c00f5987508c3cc7bc8ec589d0b5
DMleadgen 46d973904b
Initial commit: Rocky Mountain Vending website
Next.js website for Rocky Mountain Vending company featuring:
- Product catalog with Stripe integration
- Service areas and parts pages
- Admin dashboard with Clerk authentication
- SEO optimized pages with JSON-LD structured data

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 16:22:15 -07:00

48 lines
No EOL
1.8 KiB
Text

import { useState } from "react";
import { calculateFocusTarget } from "./helpers/calculateFocusTarget.js";
import { getNextFocus } from "./helpers/getNextFocus.js";
/**
* Manages focus behavior for the DayPicker component, including setting,
* moving, and blurring focus on calendar days.
*
* @template T - The type of DayPicker props.
* @param props - The DayPicker props.
* @param calendar - The calendar object containing the displayed days and
* months.
* @param getModifiers - A function to retrieve modifiers for a given day.
* @param isSelected - A function to check if a date is selected.
* @param dateLib - The date utility library instance.
* @returns An object containing focus-related methods and the currently focused
* day.
*/
export function useFocus(props, calendar, getModifiers, isSelected, dateLib) {
const { autoFocus } = props;
const [lastFocused, setLastFocused] = useState();
const focusTarget = calculateFocusTarget(calendar.days, getModifiers, isSelected || (() => false), lastFocused);
const [focusedDay, setFocused] = useState(autoFocus ? focusTarget : undefined);
const blur = () => {
setLastFocused(focusedDay);
setFocused(undefined);
};
const moveFocus = (moveBy, moveDir) => {
if (!focusedDay)
return;
const nextFocus = getNextFocus(moveBy, moveDir, focusedDay, calendar.navStart, calendar.navEnd, props, dateLib);
if (!nextFocus)
return;
calendar.goToDay(nextFocus);
setFocused(nextFocus);
};
const isFocusTarget = (day) => {
return Boolean(focusTarget?.isEqualTo(day));
};
const useFocus = {
isFocusTarget,
setFocused,
focused: focusedDay,
blur,
moveFocus
};
return useFocus;
}
//# sourceMappingURL=useFocus.js.map