diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e7208e8..c228220a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ env: jobs: lint: name: Static code analysis - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm steps: - name: Checkout @@ -26,7 +26,7 @@ jobs: typescript: name: Type checking - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm steps: - name: Checkout @@ -61,7 +61,7 @@ jobs: format: name: Formatting - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm steps: - name: Checkout @@ -75,7 +75,7 @@ jobs: unit: name: Unit tests - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm steps: - name: Checkout diff --git a/.github/workflows/close-stale-issues.yml b/.github/workflows/close-stale-issues.yml index e6f355cc..65e9e977 100644 --- a/.github/workflows/close-stale-issues.yml +++ b/.github/workflows/close-stale-issues.yml @@ -8,7 +8,7 @@ on: jobs: close-issues: name: Close stale issues - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm steps: - name: Close stale issues diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 10bc8289..da43d1a5 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -13,7 +13,7 @@ permissions: jobs: publish: name: Publish - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm steps: - name: Checkout diff --git a/.vscode/extensions.json b/.vscode/extensions.json index cc1a2914..93742a29 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,4 +1,4 @@ { - "recommendations": ["biomejs.biome", "eamodio.gitlens"], - "unwantedRecommendations": ["dbaeumer.jshint"] + "recommendations": ["biomejs.biome"], + "unwantedRecommendations": ["dbaeumer.jshint", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode"] } diff --git a/package.json b/package.json index c77f542c..ecb9130a 100644 --- a/package.json +++ b/package.json @@ -21,5 +21,5 @@ "devDependencies": { "husky": "^9.0.0" }, - "packageManager": "yarn@4.3.1" + "packageManager": "yarn@4.6.0" } diff --git a/packages/react-calendar/package.json b/packages/react-calendar/package.json index 6c75f530..421e0194 100644 --- a/packages/react-calendar/package.json +++ b/packages/react-calendar/package.json @@ -66,7 +66,7 @@ "react-dom": "^18.2.0", "rimraf": "^6.0.0", "typescript": "^5.5.2", - "vitest": "^2.1.1" + "vitest": "^3.0.5" }, "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", diff --git a/packages/react-calendar/src/Calendar.tsx b/packages/react-calendar/src/Calendar.tsx index a9aa6745..ff555497 100644 --- a/packages/react-calendar/src/Calendar.tsx +++ b/packages/react-calendar/src/Calendar.tsx @@ -39,10 +39,11 @@ import type { formatWeekday as defaultFormatWeekday, formatYear as defaultFormatYear, } from './shared/dateFormatter.js'; +import WeekView from './WeekView.js'; const baseClassName = 'react-calendar'; -const allViews = ['century', 'decade', 'year', 'month'] as const; -const allValueTypes = ['decade', 'year', 'month', 'day'] as const; +const allViews = ['century', 'decade', 'year', 'month', 'week'] as const; +const allValueTypes = ['decade', 'year', 'month', 'day', 'day'] as const; const defaultMinDate = new Date(); defaultMinDate.setFullYear(1, 0, 1); @@ -487,13 +488,14 @@ function getValue(value: LooseValue | undefined, index: 0 | 1): Date | null { } type DetailArgs = { + calendarType?: CalendarType; value?: LooseValue; minDate?: Date; maxDate?: Date; maxDetail: Detail; }; -function getDetailValue({ value, minDate, maxDate, maxDetail }: DetailArgs, index: 0 | 1) { +function getDetailValue({ calendarType, value, minDate, maxDate, maxDetail }: DetailArgs, index: 0 | 1) { const valuePiece = getValue(value, index); if (!valuePiece) { @@ -505,9 +507,9 @@ function getDetailValue({ value, minDate, maxDate, maxDetail }: DetailArgs, inde const detailValueFrom = (() => { switch (index) { case 0: - return getBegin(valueType, valuePiece); + return getBegin(valueType, valuePiece, calendarType); case 1: - return getEnd(valueType, valuePiece); + return getEnd(valueType, valuePiece, calendarType); default: throw new Error(`Invalid index value: ${index}`); } @@ -527,6 +529,7 @@ const getDetailValueArray = (args: DetailArgs) => ]; function getActiveStartDate({ + calendarType, maxDate, maxDetail, minDate, @@ -540,17 +543,19 @@ function getActiveStartDate({ const rangeType = getView(view, minDetail, maxDetail); const valueFrom = getDetailValueFrom({ + calendarType, value, minDate, maxDate, maxDetail, }) || new Date(); - return getBegin(rangeType, valueFrom); + return getBegin(rangeType, valueFrom, calendarType); } function getInitialActiveStartDate({ activeStartDate, + calendarType, defaultActiveStartDate, defaultValue, defaultView, @@ -562,6 +567,7 @@ function getInitialActiveStartDate({ view, }: { activeStartDate?: Date; + calendarType?: CalendarType; defaultActiveStartDate?: Date; defaultValue?: LooseValue; defaultView?: View; @@ -576,10 +582,11 @@ function getInitialActiveStartDate({ const valueFrom = activeStartDate || defaultActiveStartDate; if (valueFrom) { - return getBegin(rangeType, valueFrom); + return getBegin(rangeType, valueFrom, calendarType); } return getActiveStartDate({ + calendarType, maxDate, maxDetail, minDate, @@ -675,6 +682,7 @@ const Calendar: React.ForwardRefExoticComponent ); } + case 'week': { + return ( + + ); + } default: throw new Error(`Invalid view: ${view}.`); } @@ -1088,6 +1122,7 @@ const Calendar: React.ForwardRefExoticComponent { const defaultProps = { diff --git a/packages/react-calendar/src/Calendar/Navigation.tsx b/packages/react-calendar/src/Calendar/Navigation.tsx index 46a1b892..c0b5fd60 100644 --- a/packages/react-calendar/src/Calendar/Navigation.tsx +++ b/packages/react-calendar/src/Calendar/Navigation.tsx @@ -11,13 +11,16 @@ import { getBeginPrevious2, getEndPrevious, getEndPrevious2, + getWeekEndDate, + getWeekStartDate, } from '../shared/dates.js'; import { formatMonthYear as defaultFormatMonthYear, formatYear as defaultFormatYear, + formatShortDayMonthYear, } from '../shared/dateFormatter.js'; -import type { Action, NavigationLabelFunc, RangeType } from '../shared/types.js'; +import type { Action, CalendarType, NavigationLabelFunc, RangeType } from '../shared/types.js'; const className = 'react-calendar__navigation'; @@ -28,6 +31,12 @@ type NavigationProps = { * @example new Date(2017, 0, 1) */ activeStartDate: Date; + + /** + * Assists with "week" view to know which day to start on + */ + calendarType?: CalendarType; + drillUp: () => void; /** * Function called to override default formatting of months and years. Can be used to use your own formatting function. @@ -151,6 +160,7 @@ type NavigationProps = { export default function Navigation({ activeStartDate, + calendarType, drillUp, formatMonthYear = defaultFormatMonthYear, formatYear = defaultFormatYear, @@ -176,20 +186,20 @@ export default function Navigation({ const drillUpAvailable = views.indexOf(view) > 0; const shouldShowPrevNext2Buttons = view !== 'century'; - const previousActiveStartDate = getBeginPrevious(view, activeStartDate); + const previousActiveStartDate = getBeginPrevious(view, activeStartDate, calendarType); const previousActiveStartDate2 = shouldShowPrevNext2Buttons - ? getBeginPrevious2(view, activeStartDate) + ? getBeginPrevious2(view, activeStartDate, calendarType) : undefined; - const nextActiveStartDate = getBeginNext(view, activeStartDate); + const nextActiveStartDate = getBeginNext(view, activeStartDate, calendarType); const nextActiveStartDate2 = shouldShowPrevNext2Buttons - ? getBeginNext2(view, activeStartDate) + ? getBeginNext2(view, activeStartDate, calendarType) : undefined; const prevButtonDisabled = (() => { if (previousActiveStartDate.getFullYear() < 0) { return true; } - const previousActiveEndDate = getEndPrevious(view, activeStartDate); + const previousActiveEndDate = getEndPrevious(view, activeStartDate, calendarType); return minDate && minDate >= previousActiveEndDate; })(); @@ -199,7 +209,7 @@ export default function Navigation({ if ((previousActiveStartDate2 as Date).getFullYear() < 0) { return true; } - const previousActiveEndDate = getEndPrevious2(view, activeStartDate); + const previousActiveEndDate = getEndPrevious2(view, activeStartDate, calendarType); return minDate && minDate >= previousActiveEndDate; })(); @@ -224,7 +234,7 @@ export default function Navigation({ setActiveStartDate(nextActiveStartDate2 as Date, 'next2'); } - function renderLabel(date: Date) { + function renderLabel(date: Date, calendarType?: CalendarType) { const label = (() => { switch (view) { case 'century': @@ -235,6 +245,13 @@ export default function Navigation({ return formatYear(locale, date); case 'month': return formatMonthYear(locale, date); + case 'week': { + // start + const startDate = getWeekStartDate(date, calendarType); + // end + const endDate = getWeekEndDate(date, calendarType); + return `${formatShortDayMonthYear(locale, startDate)}-${formatShortDayMonthYear(locale, endDate)}`; + } default: throw new Error(`Invalid view: ${view}.`); } @@ -263,13 +280,13 @@ export default function Navigation({ type="button" > - {renderLabel(activeStartDate)} + {renderLabel(activeStartDate, calendarType)} {showDoubleView ? ( <> - {renderLabel(nextActiveStartDate)} + {renderLabel(nextActiveStartDate, calendarType)} ) : null} diff --git a/packages/react-calendar/src/WeekView.spec.tsx b/packages/react-calendar/src/WeekView.spec.tsx new file mode 100644 index 00000000..c010c1dc --- /dev/null +++ b/packages/react-calendar/src/WeekView.spec.tsx @@ -0,0 +1,224 @@ +import { describe, expect, it } from 'vitest'; + +import { render } from '@testing-library/react'; + +import WeekView from './WeekView.js'; +import { formatShortWeekday } from './shared/dateFormatter.js'; + +const { format } = new Intl.DateTimeFormat('en-US', { + day: 'numeric', + month: 'long', + year: 'numeric', +}); + +describe('WeekView', () => { + const defaultProps = { + activeStartDate: new Date(2017, 0, 1), + valueType: 'day', + } satisfies React.ComponentProps; + + it('renders proper view when given activeStartDate', () => { + const activeStartDate = new Date(2017, 0, 1); + + const { container } = render( + , + ); + + const firstDayTile = container.querySelector('.react-calendar__tile') as HTMLDivElement; + const firstDayTileTimeAbbr = firstDayTile.querySelector('abbr'); + + expect(firstDayTileTimeAbbr).toHaveAccessibleName(format(activeStartDate)); + }); + + it('applies tileClassName to its tiles when given a string', () => { + const tileClassName = 'testClassName'; + + const { container } = render( + , + ); + + const firstDayTile = container.querySelector('.react-calendar__tile'); + + expect(firstDayTile).toHaveClass(tileClassName); + }); + + it('applies tileClassName to its tiles conditionally when given a function that returns a string', () => { + const activeStartDate = new Date(2017, 0, 1); + const tileClassNameFn = ({ date }: { date: Date }) => { + if (date.getTime() === activeStartDate.getTime()) { + return 'firstDayOfTheMonth'; + } + + return null; + }; + + const { container } = render( + , + ); + + const tiles = container.querySelectorAll('.react-calendar__tile'); + + const firstDayTile = tiles[0]; + const secondDayTile = tiles[1]; + + expect(firstDayTile).toHaveClass('firstDayOfTheMonth'); + expect(secondDayTile).not.toHaveClass('firstDayOfTheMonth'); + }); + + it('renders tileContent in its tiles when given a node', () => { + const tileContent =
; + + const { container } = render( + , + ); + + const firstDayTile = container.querySelector('.react-calendar__tile') as HTMLDivElement; + const firstDayTileContent = firstDayTile.querySelector('.testContent'); + + expect(firstDayTileContent).toBeInTheDocument(); + }); + + it('renders tileContent in its tiles conditionally when given a function that returns a node', () => { + const activeStartDate = new Date(2017, 0, 1); + const tileContentFn = ({ date }: { date: Date }) => { + if (date.getTime() === activeStartDate.getTime()) { + return
; + } + + return null; + }; + + const { container } = render( + , + ); + + const tiles = container.querySelectorAll('.react-calendar__tile'); + + const firstDayTile = tiles[0] as HTMLDivElement; + const secondDayTile = tiles[1] as HTMLDivElement; + + const firstDayTileContent = firstDayTile.querySelector('.testContent'); + const secondDayTileContent = secondDayTile.querySelector('.testContent'); + + expect(firstDayTileContent).toBeInTheDocument(); + expect(secondDayTileContent).not.toBeInTheDocument(); + }); + + it('does not render WeekNumbers component by default', () => { + const { container } = render(); + + const weekNumbers = container.querySelector('.react-calendar__month-view__weekNumbers'); + + expect(weekNumbers).not.toBeInTheDocument(); + }); + + it('renders WeekNumbers component by given showWeekNumbers flag', () => { + const { container } = render(); + + const weekNumbers = container.querySelector('.react-calendar__month-view__weekNumbers'); + + expect(weekNumbers).toBeInTheDocument(); + }); + + it('passes calendarType to Weekdays component', () => { + const calendarType = 'iso8601'; + + const { container } = render(); + + const firstWeekday = container.querySelector('.react-calendar__month-view__weekdays__weekday'); + + // ISO 8601 calendar week starts on Monday + expect(firstWeekday).toHaveTextContent('Mon'); + }); + + it('passes derived calendarType to Weekdays component if calendarType is not given', () => { + const locale = 'en-US'; + + const { container } = render(); + + const firstWeekday = container.querySelector('.react-calendar__month-view__weekdays__weekday'); + + // US calendar week starts on Sunday + expect(firstWeekday).toHaveTextContent('Sun'); + }); + + it('passes formatShortWeekday to Weekdays component', () => { + const formatShortWeekday = () => 'Wkdy'; + + const { container } = render( + , + ); + + const weekdays = container.querySelector('.react-calendar__month-view__weekdays'); + + expect(weekdays).toHaveTextContent('Wkdy'); + }); + + it('passes formatWeekday to Weekdays component', () => { + const formatWeekday = () => 'Weekday'; + + const { container } = render(); + + const weekday = container.querySelector( + '.react-calendar__month-view__weekdays__weekday', + ) as HTMLDivElement; + const abbr = weekday.querySelector('abbr'); + + expect(abbr).toHaveAccessibleName('Weekday'); + }); + + it('passes calendarType to Days component', () => { + const calendarType = 'iso8601'; + + const { container } = render( + , + ); + + const firstDay = container.querySelector('.react-calendar__month-view__days__day'); + + // ISO 8601 calendar week starts on Monday + expect(firstDay).toHaveTextContent('Mon'); + }); + + it('passes derived calendarType to Days component if calendarType is not given', () => { + const locale = 'en-US'; + + const { container } = render( + , + ); + + const firstDay = container.querySelector('.react-calendar__month-view__days__day'); + + // US calendar week starts on Sunday + expect(firstDay).toHaveTextContent('Sun'); + }); + + it('displays month view with custom day formatting', () => { + const formatDay = () => 'Day'; + + const { container } = render(); + + const day = container.querySelector('.react-calendar__month-view__days__day'); + + expect(day).toHaveTextContent('Day'); + }); +}); diff --git a/packages/react-calendar/src/WeekView.tsx b/packages/react-calendar/src/WeekView.tsx new file mode 100644 index 00000000..baed3b8d --- /dev/null +++ b/packages/react-calendar/src/WeekView.tsx @@ -0,0 +1,113 @@ +import clsx from 'clsx'; + +import Days from './WeekView/Days.js'; +import Weekdays from './WeekView/Weekdays.js'; +import WeekNumbers from './WeekView/WeekNumbers.js'; + +import { CALENDAR_TYPES, CALENDAR_TYPE_LOCALES } from './shared/const.js'; + +import type { CalendarType } from './shared/types.js'; + +function getCalendarTypeFromLocale(locale: string | undefined): CalendarType { + if (locale) { + for (const [calendarType, locales] of Object.entries(CALENDAR_TYPE_LOCALES)) { + if (locales.includes(locale)) { + return calendarType as CalendarType; + } + } + } + + return CALENDAR_TYPES.ISO_8601; +} + +type WeekViewProps = { + /** + * Type of calendar that should be used. Can be `'gregory`, `'hebrew'`, `'islamic'`, `'iso8601'`. Setting to `"gregory"` or `"hebrew"` will change the first day of the week to Sunday. Setting to `"islamic"` will change the first day of the week to Saturday. Setting to `"islamic"` or `"hebrew"` will make weekends appear on Friday to Saturday. + * + * @example 'iso8601' + */ + calendarType?: CalendarType; + /** + * Whether week numbers shall be shown at the left of WeekView or not. + * + * @default false + * @example true + */ + showWeekNumbers?: boolean; +} & Omit< + React.ComponentProps & + React.ComponentProps & + React.ComponentProps, + 'calendarType' +>; + +/** + * Displays a given month. + */ +export default function WeekView(props: WeekViewProps): React.ReactElement { + const { activeStartDate, locale, onMouseLeave, showFixedNumberOfWeeks } = props; + const { + calendarType = getCalendarTypeFromLocale(locale), + formatShortWeekday, + formatWeekday, + onClickWeekNumber, + showWeekNumbers, + ...childProps + } = props; + + function renderWeekdays() { + return ( + + ); + } + + function renderWeekNumbers() { + if (!showWeekNumbers) { + return null; + } + + return ( + + ); + } + + function renderDays() { + return ; + } + + const className = 'react-week-view'; + + return ( +
+
+ {renderWeekNumbers()} +
+ {renderWeekdays()} + {renderDays()} +
+
+
+ ); +} diff --git a/packages/react-calendar/src/WeekView/Day.spec.tsx b/packages/react-calendar/src/WeekView/Day.spec.tsx new file mode 100644 index 00000000..13dba760 --- /dev/null +++ b/packages/react-calendar/src/WeekView/Day.spec.tsx @@ -0,0 +1,203 @@ +import { describe, expect, it, vi } from 'vitest'; + +import { fireEvent, render } from '@testing-library/react'; + +import Day from './Day.js'; + +const tileProps = { + activeStartDate: new Date(2018, 0, 1), + calendarType: 'iso8601', + classes: ['react-calendar__tile'], + currentMonthIndex: 0, + date: new Date(2018, 0, 1), +} satisfies React.ComponentProps; + +describe('WeekViewDay', () => { + it('applies given classNames properly', () => { + const { container } = render( + 'testFunctionClassName'} + />, + ); + + const wrapper = container.querySelector('.react-calendar__tile'); + + expect(wrapper).toHaveClass('react-calendar__tile'); + expect(wrapper).toHaveClass('react-calendar__tile--flag'); + expect(wrapper).toHaveClass('react-calendar__month-view__days__day'); + expect(wrapper).toHaveClass('testFunctionClassName'); + }); + + it('applies additional classNames for weekends', () => { + const { container } = render( + , + ); + + const wrapper = container.querySelector('.react-calendar__tile'); + + expect(wrapper).toHaveClass('react-calendar__month-view__days__day--weekend'); + }); + + it('applies additional classNames for neighboring months', () => { + const { container } = render(); + + const wrapper = container.querySelector('.react-calendar__tile'); + + expect(wrapper).toHaveClass('react-calendar__month-view__days__day--neighboringMonth'); + }); + + it('renders component with proper abbreviation', () => { + const { container } = render(); + + const abbr = container.querySelector('abbr'); + + expect(abbr).toBeInTheDocument(); + expect(abbr).toHaveAccessibleName('January 1, 2018'); + expect(container).toHaveTextContent('1'); + }); + + it("is disabled when date is before beginning of minDate's day", () => { + const { container } = render( + , + ); + + const tile = container.querySelector('.react-calendar__tile'); + + expect(tile).toBeDisabled(); + }); + + it("is not disabled when date is after beginning of minDate's day", () => { + const { container } = render( + , + ); + + const tile = container.querySelector('.react-calendar__tile'); + + expect(tile).toBeEnabled(); + }); + + it("is disabled when date is after end of maxDate's day", () => { + const { container } = render( + , + ); + + const tile = container.querySelector('.react-calendar__tile'); + + expect(tile).toBeDisabled(); + }); + + it("is not disabled when date is before end of maxDate's day", () => { + const { container } = render( + , + ); + + const tile = container.querySelector('.react-calendar__tile'); + + expect(tile).toBeEnabled(); + }); + + it('calls onClick callback when clicked and sends proper date as an argument', () => { + const date = new Date(2018, 0, 1); + const onClick = vi.fn(); + + const { container } = render(); + + fireEvent.click(container.querySelector('.react-calendar__tile') as HTMLDivElement); + + expect(onClick).toHaveBeenCalled(); + expect(onClick).toHaveBeenCalledWith(date, expect.any(Object)); + }); + + it('calls onMouseOver callback when hovered and sends proper date as an argument', () => { + const date = new Date(2018, 0, 1); + const onMouseOver = vi.fn(); + + const { container } = render(); + + const tile = container.querySelector('.react-calendar__tile') as HTMLDivElement; + fireEvent.mouseOver(tile); + + expect(onMouseOver).toHaveBeenCalled(); + expect(onMouseOver).toHaveBeenCalledWith(date); + }); + + it('calls onMouseOver callback when focused and sends proper date as an argument', () => { + const date = new Date(2018, 0, 1); + const onMouseOver = vi.fn(); + + const { container } = render(); + + const tile = container.querySelector('.react-calendar__tile') as HTMLDivElement; + fireEvent.focus(tile); + + expect(onMouseOver).toHaveBeenCalled(); + expect(onMouseOver).toHaveBeenCalledWith(date); + }); + + it('renders tileContent properly', () => { + const { container } = render( + } />, + ); + + const testContent = container.querySelector('.testContent'); + + expect(testContent).toBeInTheDocument(); + }); + + it('renders tileContent function result properly and sends proper arguments to it', () => { + const date = new Date(2018, 0, 1); + const tileContent = vi.fn(); + tileContent.mockReturnValue(
); + + const { container } = render(); + + const testContent = container.querySelector('.testContent'); + + expect(tileContent).toHaveBeenCalled(); + expect(tileContent).toHaveBeenCalledWith({ + activeStartDate: tileProps.activeStartDate, + date, + view: 'month', + }); + expect(testContent).toBeInTheDocument(); + }); + + it('uses formatDay if given', () => { + const locale = 'en-US'; + const date = new Date(2018, 0, 1); + const formatDay = vi.fn(); + formatDay.mockReturnValue('Mock format'); + + const { container } = render( + , + ); + + const tile = container.querySelector('.react-calendar__tile'); + + expect(formatDay).toHaveBeenCalled(); + expect(formatDay).toHaveBeenCalledWith(locale, date); + expect(tile).toHaveTextContent('Mock format'); + }); + + it('uses formatLongDate if given', () => { + const locale = 'en-US'; + const date = new Date(2018, 0, 1); + const formatLongDate = vi.fn(); + formatLongDate.mockReturnValue('Mock format'); + + const { container } = render( + , + ); + + const abbr = container.querySelector('abbr'); + + expect(formatLongDate).toHaveBeenCalled(); + expect(formatLongDate).toHaveBeenCalledWith(locale, date); + expect(abbr).toHaveAccessibleName('Mock format'); + }); +}); diff --git a/packages/react-calendar/src/WeekView/Day.tsx b/packages/react-calendar/src/WeekView/Day.tsx new file mode 100644 index 00000000..317740c9 --- /dev/null +++ b/packages/react-calendar/src/WeekView/Day.tsx @@ -0,0 +1,81 @@ +import { getDayStart, getDayEnd } from '@wojtekmaj/date-utils'; + +import Tile from '../Tile.js'; + +import { isWeekend } from '../shared/dates.js'; +import { + formatDay as defaultFormatDay, + formatLongDate as defaultFormatLongDate, +} from '../shared/dateFormatter.js'; + +import type { CalendarType } from '../shared/types.js'; + +const className = 'react-calendar__month-view__days__day'; + +type WeekViewDayProps = { + /** + * Type of calendar that should be used. Can be `'gregory`, `'hebrew'`, `'islamic'`, `'iso8601'`. Setting to `"gregory"` or `"hebrew"` will change the first day of the week to Sunday. Setting to `"islamic"` will change the first day of the week to Saturday. Setting to `"islamic"` or `"hebrew"` will make weekends appear on Friday to Saturday. + * + * @example 'iso8601' + */ + calendarType: CalendarType | undefined; + classes?: string[]; + currentMonthIndex: number; + /** + * Function called to override default formatting of day tile labels. Can be used to use your own formatting function. + * + * @example (locale, date) => formatDate(date, 'd') + */ + formatDay?: typeof defaultFormatDay; + /** + * Function called to override default formatting of day tile `abbr` labels. Can be used to use your own formatting function. + * + * @example (locale, date) => formatDate(date, 'dd MMM YYYY') + */ + formatLongDate?: typeof defaultFormatLongDate; +} & Omit< + React.ComponentProps, + 'children' | 'formatAbbr' | 'maxDateTransform' | 'minDateTransform' | 'view' +>; + +export default function WeekViewDay({ + calendarType, + classes = [], + currentMonthIndex, + formatDay = defaultFormatDay, + formatLongDate = defaultFormatLongDate, + ...otherProps +}: WeekViewDayProps): React.ReactElement { + const { date, locale } = otherProps; + + const classesProps: string[] = []; + + if (classes) { + classesProps.push(...classes); + } + + if (className) { + classesProps.push(className); + } + + if (isWeekend(date, calendarType)) { + classesProps.push(`${className}--weekend`); + } + + if (date.getMonth() !== currentMonthIndex) { + classesProps.push(`${className}--neighboringMonth`); + } + + return ( + + {formatDay(locale, date)} + + ); +} diff --git a/packages/react-calendar/src/WeekView/Days.tsx b/packages/react-calendar/src/WeekView/Days.tsx new file mode 100644 index 00000000..313b304d --- /dev/null +++ b/packages/react-calendar/src/WeekView/Days.tsx @@ -0,0 +1,81 @@ +import { getYear, getMonth, getDayStart, getDate } from '@wojtekmaj/date-utils'; +import TileGroup from '../TileGroup.js'; +import Day from './Day.js'; + +import type { CalendarType } from '../shared/types.js'; +import {getWeekEndDate} from '../shared/dates.js'; + +type WeekViewDaysProps = { + /** + * The beginning of a period that shall be displayed. + * + * @example new Date(2017, 0, 1) + */ + activeStartDate: Date; + /** + * Type of calendar that should be used. Can be `'gregory`, `'hebrew'`, `'islamic'`, `'iso8601'`. Setting to `"gregory"` or `"hebrew"` will change the first day of the week to Sunday. Setting to `"islamic"` will change the first day of the week to Saturday. Setting to `"islamic"` or `"hebrew"` will make weekends appear on Friday to Saturday. + * + * @example 'iso8601' + */ + calendarType: CalendarType | undefined; +} & Omit< + React.ComponentProps, + 'dateTransform' | 'dateType' | 'end' | 'renderTile' | 'start' +> & + Omit, 'classes' | 'currentMonthIndex' | 'date' | 'point'>; + +export default function WeekViewDays(props: WeekViewDaysProps): React.ReactElement { + const { activeStartDate, calendarType, hover, value, valueType, ...otherProps } = props; + + const year = getYear(activeStartDate); + const monthIndex = getMonth(activeStartDate); + const offset = 0; + const start = getDate(activeStartDate); + const end = start + 6; + + const endDate = getWeekEndDate(activeStartDate, calendarType); + const endMonthIndex = getMonth(endDate); + const dateMap = new Map(); + + for (let i = 0; i <= 6; i++) { + const d = new Date(activeStartDate.getTime()); + const day = d.getDate() + i; + d.setDate(day); + getDayStart(d); + dateMap.set(day, d); + } + + return ( + { + let value = dateMap.get(day); + if (value) { + return value; + } + value = new Date(); + value.setFullYear(year, monthIndex, day); + return getDayStart(value); + }} + dateType="day" + hover={hover} + end={end} + renderTile={({ date, ...otherTileProps }) => ( + + )} + offset={offset} + start={start} + value={value} + valueType={valueType} + /> + ); +} diff --git a/packages/react-calendar/src/WeekView/WeekNumber.spec.tsx b/packages/react-calendar/src/WeekView/WeekNumber.spec.tsx new file mode 100644 index 00000000..cc6386e6 --- /dev/null +++ b/packages/react-calendar/src/WeekView/WeekNumber.spec.tsx @@ -0,0 +1,37 @@ +import { describe, expect, it } from 'vitest'; +import { render } from '@testing-library/react'; + +import WeekNumber from './WeekNumber.js'; + +describe(' component', () => { + const defaultProps = { + date: new Date(2019, 0, 1), + weekNumber: 1, + } satisfies React.ComponentProps; + + it('renders div by default', () => { + const { container } = render(); + + expect(container.querySelector('div')).toBeInTheDocument(); + }); + + it('renders button given onClickWeekNumber prop', () => { + const onClickWeekNumber = () => { + // Intentionally empty + }; + + const { container } = render( + , + ); + + expect(container.querySelector('button')).toBeInTheDocument(); + }); + + it('renders weekNumber properly', () => { + const weekNumber = 42; + + const { container } = render(); + + expect(container).toHaveTextContent(`${weekNumber}`); + }); +}); diff --git a/packages/react-calendar/src/WeekView/WeekNumber.tsx b/packages/react-calendar/src/WeekView/WeekNumber.tsx new file mode 100644 index 00000000..38f1a86b --- /dev/null +++ b/packages/react-calendar/src/WeekView/WeekNumber.tsx @@ -0,0 +1,48 @@ +import type { OnClickWeekNumberFunc } from '../shared/types.js'; + +const className = 'react-calendar__tile'; + +type ButtonProps = Omit, 'onClick'> & { + onClickWeekNumber: OnClickWeekNumberFunc; +}; + +type DivProps = React.HTMLAttributes & { + onClickWeekNumber?: undefined; +}; + +type WeekNumberProps = (T extends OnClickWeekNumberFunc + ? ButtonProps + : DivProps) & { + date: Date; + weekNumber: number; +}; + +export default function WeekViewWeekNumber(props: WeekNumberProps): React.ReactElement { + const { onClickWeekNumber, weekNumber } = props; + + const children = {weekNumber}; + + if (onClickWeekNumber) { + const { date, onClickWeekNumber, weekNumber, ...otherProps } = props; + + return ( + + ); + // biome-ignore lint/style/noUselessElse: TypeScript is unhappy if we remove this else + } else { + const { date, onClickWeekNumber, weekNumber, ...otherProps } = props; + + return ( +
+ {children} +
+ ); + } +} diff --git a/packages/react-calendar/src/WeekView/WeekNumbers.spec.tsx b/packages/react-calendar/src/WeekView/WeekNumbers.spec.tsx new file mode 100644 index 00000000..d59d1818 --- /dev/null +++ b/packages/react-calendar/src/WeekView/WeekNumbers.spec.tsx @@ -0,0 +1,137 @@ +import { describe, expect, it, vi } from 'vitest'; +import { fireEvent, render } from '@testing-library/react'; + +import WeekNumbers from './WeekNumbers.js'; + +describe('.react-calendar__month-view__weekNumbers', () => { + const defaultProps = { + activeStartDate: new Date(2017, 0, 1), + } satisfies Partial>; + + it('renders proper weekNumbers for a year that starts in week 1 (ISO 8601)', () => { + const { container } = render( + , + ); + + const weekNumbers = container.querySelectorAll('.react-calendar__tile'); + + expect(weekNumbers).toHaveLength(5); + expect(weekNumbers[0]).toHaveTextContent('1'); + }); + + it('renders proper weekNumbers for a year that starts on week 52 (ISO 8601)', () => { + const { container } = render( + , + ); + + const weekNumbers = container.querySelectorAll('.react-calendar__tile'); + + expect(weekNumbers).toHaveLength(6); + expect(weekNumbers[0]).toHaveTextContent('52'); + }); + + it('renders proper weekNumbers for a year that starts on week 53 (ISO 8601)', () => { + const { container } = render( + , + ); + + const weekNumbers = container.querySelectorAll('.react-calendar__tile'); + + expect(weekNumbers).toHaveLength(5); + expect(weekNumbers[0]).toHaveTextContent('53'); + }); + + it('renders proper weekNumbers for a year that starts in week 1 (US)', () => { + const { container } = render( + , + ); + + const weekNumbers = container.querySelectorAll('.react-calendar__tile'); + + expect(weekNumbers).toHaveLength(5); + expect(weekNumbers[0]).toHaveTextContent('1'); + }); + + it('renders proper weekNumbers given showFixedNumberOfWeeks flag', () => { + // Same config as in first test which gives 5 weeks, except for the flag + const { container } = render( + , + ); + + const weekNumbers = container.querySelectorAll('.react-calendar__tile'); + + expect(weekNumbers).toHaveLength(6); + expect(weekNumbers[0]).toHaveTextContent('1'); + }); + + it('renders static divs as children when not given onClickWeekNumber', () => { + const { container } = render(); + + const children = container.querySelectorAll('div.react-calendar__tile'); + + expect(children).toHaveLength(6); + }); + + it('renders buttons as children when given onClickWeekNumber', () => { + const { container } = render( + , + ); + + const children = container.querySelectorAll('button.react-calendar__tile'); + + expect(children).toHaveLength(6); + }); + + it('calls onClickWeekNumber function with proper arguments when clicked a week number (ISO 8601)', () => { + const onClickWeekNumber = vi.fn(); + const { container } = render( + , + ); + + const firstChild = container.querySelector('button.react-calendar__tile') as HTMLButtonElement; + fireEvent.click(firstChild); + + expect(onClickWeekNumber).toHaveBeenCalledWith(52, new Date(2016, 11, 26), expect.any(Object)); + }); + + it('calls onClickWeekNumber function with proper arguments when clicked a week number (US)', () => { + const onClickWeekNumber = vi.fn(); + const { container } = render( + , + ); + + const firstChild = container.querySelector('button.react-calendar__tile') as HTMLButtonElement; + fireEvent.click(firstChild); + + expect(onClickWeekNumber).toHaveBeenCalledWith(1, new Date(2017, 0, 1), expect.any(Object)); + }); +}); diff --git a/packages/react-calendar/src/WeekView/WeekNumbers.tsx b/packages/react-calendar/src/WeekView/WeekNumbers.tsx new file mode 100644 index 00000000..1dbaa29f --- /dev/null +++ b/packages/react-calendar/src/WeekView/WeekNumbers.tsx @@ -0,0 +1,88 @@ +import { getYear, getMonth, getDate } from '@wojtekmaj/date-utils'; + +import WeekNumber from './WeekNumber.js'; +import Flex from '../Flex.js'; + +import { getBeginOfWeek, getWeekNumber } from '../shared/dates.js'; + +import type { CalendarType, OnClickWeekNumberFunc } from '../shared/types.js'; + +type WeekNumbersProps = { + /** + * The beginning of a period that shall be displayed. + * + * @example new Date(2017, 0, 1) + */ + activeStartDate: Date; + /** + * Type of calendar that should be used. Can be `'gregory`, `'hebrew'`, `'islamic'`, `'iso8601'`. Setting to `"gregory"` or `"hebrew"` will change the first day of the week to Sunday. Setting to `"islamic"` will change the first day of the week to Saturday. Setting to `"islamic"` or `"hebrew"` will make weekends appear on Friday to Saturday. + * + * @example 'iso8601' + */ + calendarType: CalendarType | undefined; + /** + * Function called when the user clicks a week number. + * + * @example (weekNumber, date, event) => alert('Clicked week: ', weekNumber, 'that starts on: ', date) + */ + onClickWeekNumber?: OnClickWeekNumberFunc; + onMouseLeave?: () => void; + /** + * Whether to always show fixed number of weeks (6). Forces `showNeighboringMonth` prop to be `true`. + * + * @default false + * @example true + */ + showFixedNumberOfWeeks?: boolean; +}; + +export default function WeekViewWeekNumbers(props: WeekNumbersProps): React.ReactElement { + const { activeStartDate, calendarType, onClickWeekNumber, onMouseLeave } = + props; + + const numberOfWeeks = (() => { + return 1; + })(); + + const dates = (() => { + const year = getYear(activeStartDate); + const monthIndex = getMonth(activeStartDate); + const day = getDate(activeStartDate); + + const result = []; + for (let index = 0; index < numberOfWeeks; index += 1) { + result.push(getBeginOfWeek(new Date(year, monthIndex, day + index * 7), calendarType)); + } + return result; + })(); + + const weekNumbers = dates.map((date) => getWeekNumber(date, calendarType)); + + return ( + + {weekNumbers.map((weekNumber, weekIndex) => { + const date = dates[weekIndex]; + + if (!date) { + throw new Error('date is not defined'); + } + + return ( + + ); + })} + + ); +} diff --git a/packages/react-calendar/src/WeekView/Weekdays.spec.tsx b/packages/react-calendar/src/WeekView/Weekdays.spec.tsx new file mode 100644 index 00000000..f7ba1acd --- /dev/null +++ b/packages/react-calendar/src/WeekView/Weekdays.spec.tsx @@ -0,0 +1,53 @@ +import { describe, expect, it } from 'vitest'; +import { render } from '@testing-library/react'; + +import Weekdays from './Weekdays.js'; + +describe('WeekViewWeekDays', () => { + const defaultProps = { + calendarType: 'iso8601', + } satisfies React.ComponentProps; + + it('renders proper weekdays (ISO 8601)', () => { + const { container } = render(); + + const weekdays = container.querySelectorAll('.react-calendar__month-view__weekdays__weekday'); + const [firstWeekday] = weekdays as unknown as [HTMLDivElement]; + const firstWeekdayAbbr = firstWeekday.querySelector('abbr'); + + expect(weekdays).toHaveLength(7); + expect(firstWeekday).toHaveTextContent('Mon'); + expect(firstWeekdayAbbr).toHaveAccessibleName('Monday'); + }); + + it('renders proper weekdays (US)', () => { + const { container } = render(); + + const weekdays = container.querySelectorAll('.react-calendar__month-view__weekdays__weekday'); + const [firstWeekday] = weekdays as unknown as [HTMLDivElement]; + const firstWeekdayAbbr = firstWeekday.querySelector('abbr'); + + expect(weekdays).toHaveLength(7); + expect(firstWeekday).toHaveTextContent('Sun'); + expect(firstWeekdayAbbr).toHaveAccessibleName('Sunday'); + }); + + it('renders weekdays with custom weekdays formatting', () => { + const { container } = render( 'Wkdy'} />); + + const firstWeekday = container.querySelector('.react-calendar__month-view__weekdays__weekday'); + + expect(firstWeekday).toHaveTextContent('Wkdy'); + }); + + it('renders weekdays with custom weekdays formatting', () => { + const { container } = render( 'Weekday'} />); + + const firstWeekday = container.querySelector( + '.react-calendar__month-view__weekdays__weekday', + ) as HTMLDivElement; + const firstWeekdayAbbr = firstWeekday.querySelector('abbr'); + + expect(firstWeekdayAbbr).toHaveAccessibleName('Weekday'); + }); +}); diff --git a/packages/react-calendar/src/WeekView/Weekdays.tsx b/packages/react-calendar/src/WeekView/Weekdays.tsx new file mode 100644 index 00000000..e2a85868 --- /dev/null +++ b/packages/react-calendar/src/WeekView/Weekdays.tsx @@ -0,0 +1,91 @@ +import clsx from 'clsx'; +import { getYear, getMonth, getMonthStart } from '@wojtekmaj/date-utils'; + +import Flex from '../Flex.js'; + +import { getDayOfWeek, isCurrentDayOfWeek, isWeekend } from '../shared/dates.js'; +import { + formatShortWeekday as defaultFormatShortWeekday, + formatWeekday as defaultFormatWeekday, +} from '../shared/dateFormatter.js'; + +import type { CalendarType } from '../shared/types.js'; + +const className = 'react-calendar__month-view__weekdays'; +const weekdayClassName = `${className}__weekday`; + +type WeekViewWeekDays = { + /** + * Type of calendar that should be used. Can be `'gregory`, `'hebrew'`, `'islamic'`, `'iso8601'`. Setting to `"gregory"` or `"hebrew"` will change the first day of the week to Sunday. Setting to `"islamic"` will change the first day of the week to Saturday. Setting to `"islamic"` or `"hebrew"` will make weekends appear on Friday to Saturday. + * + * @example 'iso8601' + */ + calendarType: CalendarType | undefined; + /** + * Function called to override default formatting of weekday names (shortened). Can be used to use your own formatting function. + * + * @example (locale, date) => formatDate(date, 'dd') + */ + formatShortWeekday?: typeof defaultFormatShortWeekday; + /** + * Function called to override default formatting of weekday names. Can be used to use your own formatting function. + * + * @example (locale, date) => formatDate(date, 'dd') + */ + formatWeekday?: typeof defaultFormatWeekday; + /** + * Locale that should be used by the calendar. Can be any [IETF language tag](https://en.wikipedia.org/wiki/IETF_language_tag). **Note**: When using SSR, setting this prop may help resolving hydration errors caused by locale mismatch between server and client. + * + * @example 'hu-HU' + */ + locale?: string; + onMouseLeave?: () => void; +}; + +export default function WeekViewWeekdays(props: WeekViewWeekDays): React.ReactElement { + const { + calendarType, + formatShortWeekday = defaultFormatShortWeekday, + formatWeekday = defaultFormatWeekday, + locale, + onMouseLeave, + } = props; + + const anyDate = new Date(); + const beginOfMonth = getMonthStart(anyDate); + const year = getYear(beginOfMonth); + const monthIndex = getMonth(beginOfMonth); + + const weekdays = []; + + for (let weekday = 1; weekday <= 7; weekday += 1) { + const weekdayDate = new Date( + year, + monthIndex, + weekday - getDayOfWeek(beginOfMonth, calendarType), + ); + + const abbr = formatWeekday(locale, weekdayDate); + + weekdays.push( +
+ + {formatShortWeekday(locale, weekdayDate).replace('.', '')} + +
, + ); + } + + return ( + + {weekdays} + + ); +} diff --git a/packages/react-calendar/src/shared/dateFormatter.ts b/packages/react-calendar/src/shared/dateFormatter.ts index 3cb333ec..018f5386 100644 --- a/packages/react-calendar/src/shared/dateFormatter.ts +++ b/packages/react-calendar/src/shared/dateFormatter.ts @@ -65,6 +65,10 @@ const formatMonthYearOptions = { const formatShortWeekdayOptions = { weekday: 'short' } satisfies Intl.DateTimeFormatOptions; const formatWeekdayOptions = { weekday: 'long' } satisfies Intl.DateTimeFormatOptions; const formatYearOptions = { year: 'numeric' } satisfies Intl.DateTimeFormatOptions; +const formatShortDayMonthYearOptions = { + ...formatDateOptions, + month: 'short', +} satisfies Intl.DateTimeFormatOptions; export const formatDate: (locale: string | undefined, date: Date) => string = getSafeFormatter(formatDateOptions); @@ -76,6 +80,8 @@ export const formatMonth: (locale: string | undefined, date: Date) => string = getSafeFormatter(formatMonthOptions); export const formatMonthYear: (locale: string | undefined, date: Date) => string = getSafeFormatter(formatMonthYearOptions); +export const formatShortDayMonthYear: (locale: string | undefined, date: Date) => string = + getSafeFormatter(formatShortDayMonthYearOptions); export const formatShortWeekday: (locale: string | undefined, date: Date) => string = getSafeFormatter(formatShortWeekdayOptions); export const formatWeekday: (locale: string | undefined, date: Date) => string = diff --git a/packages/react-calendar/src/shared/dates.ts b/packages/react-calendar/src/shared/dates.ts index 5e03be19..40de6f32 100644 --- a/packages/react-calendar/src/shared/dates.ts +++ b/packages/react-calendar/src/shared/dates.ts @@ -28,6 +28,8 @@ import { getDayStart, getDayEnd, getDayRange, + getMonth, + getDate, } from '@wojtekmaj/date-utils'; import { CALENDAR_TYPES, WEEKDAYS } from './const.js'; @@ -146,6 +148,73 @@ export function getWeekNumber( return Math.round((beginOfWeek.getTime() - beginOfFirstWeek.getTime()) / (8.64e7 * 7)) + 1; } +/** + * Gets week start date according to ISO 8601 or US standard. + * In ISO 8601, Arabic and Hebrew week 1 is the one with January 4. + * In US calendar week 1 is the one with January 1. + * + * @param {Date} date Date. + * @param {CalendarType} [calendarType="iso8601"] Calendar type. + * @returns {Date} starting day of the week. + */ +export function getWeekStartDate( + date: Date, + calendarType: CalendarType = CALENDAR_TYPES.ISO_8601, +): Date { + const calendarTypeForWeekNumber = + calendarType === CALENDAR_TYPES.GREGORY ? CALENDAR_TYPES.GREGORY : CALENDAR_TYPES.ISO_8601; + const beginOfWeek = getBeginOfWeek(date, calendarType); + let year = getYear(date) + 1; + let dayInWeekOne: Date; + let beginOfFirstWeek: Date; + + // Look for the first week one that does not come after a given date + do { + dayInWeekOne = new Date(year, 0, calendarTypeForWeekNumber === CALENDAR_TYPES.ISO_8601 ? 4 : 1); + beginOfFirstWeek = getBeginOfWeek(dayInWeekOne, calendarType); + year -= 1; + } while (date < beginOfFirstWeek); + + return beginOfWeek; +} + +/** + * Gets week end date according to ISO 8601 or US standard. + * In ISO 8601, Arabic and Hebrew week 1 is the one with January 4. + * In US calendar week 1 is the one with January 1. + * + * @param {Date} date Date. + * @param {CalendarType} [calendarType="iso8601"] Calendar type. + * @returns {number} Week number. + */ +export function getWeekEndDate( + date: Date, + calendarType: CalendarType = CALENDAR_TYPES.ISO_8601, +): Date { + const beginOfWeek = getWeekStartDate(date, calendarType); + beginOfWeek.setDate(beginOfWeek.getDate() + 6); + return beginOfWeek; +} + +/** + * Gets week date according to ISO 8601 or US standard. + * In ISO 8601, Arabic and Hebrew week 1 is the one with January 4. + * In US calendar week 1 is the one with January 1. + * + * @param {Date} date Date. + * @param {CalendarType} [calendarType="iso8601"] Calendar type. + * @returns {number} Week number. + */ +export function getWeekDate( + date: Date, + calendarType: CalendarType = CALENDAR_TYPES.ISO_8601, + weekOffset = 0, +): Date { + const beginOfWeek = getWeekStartDate(date, calendarType); + beginOfWeek.setDate(beginOfWeek.getDate() + (weekOffset * 7)); + return beginOfWeek; +} + /** * Others */ @@ -157,7 +226,7 @@ export function getWeekNumber( * @param {Date} date Date. * @returns {Date} Beginning of a given range. */ -export function getBegin(rangeType: RangeType, date: Date): Date { +export function getBegin(rangeType: RangeType, date: Date, calendarType: CalendarType = CALENDAR_TYPES.ISO_8601): Date { switch (rangeType) { case 'century': return getCenturyStart(date); @@ -169,6 +238,9 @@ export function getBegin(rangeType: RangeType, date: Date): Date { return getMonthStart(date); case 'day': return getDayStart(date); + case 'week':{ + return getWeekStartDate(date, calendarType); + } default: throw new Error(`Invalid rangeType: ${rangeType}`); } @@ -181,7 +253,7 @@ export function getBegin(rangeType: RangeType, date: Date): Date { * @param {Date} date Date. * @returns {Date} Beginning of a previous given range. */ -export function getBeginPrevious(rangeType: RangeType, date: Date): Date { +export function getBeginPrevious(rangeType: RangeType, date: Date, calendarType: CalendarType = CALENDAR_TYPES.ISO_8601): Date { switch (rangeType) { case 'century': return getPreviousCenturyStart(date); @@ -191,6 +263,9 @@ export function getBeginPrevious(rangeType: RangeType, date: Date): Date { return getPreviousYearStart(date); case 'month': return getPreviousMonthStart(date); + case 'week': { + return getPreviousWeekStart(date, calendarType); + } default: throw new Error(`Invalid rangeType: ${rangeType}`); } @@ -203,7 +278,7 @@ export function getBeginPrevious(rangeType: RangeType, date: Date): Date { * @param {Date} date Date. * @returns {Date} Beginning of a next given range. */ -export function getBeginNext(rangeType: RangeType, date: Date): Date { +export function getBeginNext(rangeType: RangeType, date: Date, calendarType: CalendarType = CALENDAR_TYPES.ISO_8601): Date { switch (rangeType) { case 'century': return getNextCenturyStart(date); @@ -213,12 +288,15 @@ export function getBeginNext(rangeType: RangeType, date: Date): Date { return getNextYearStart(date); case 'month': return getNextMonthStart(date); + case 'week': { + return getNextWeekStart(date, calendarType); + } default: throw new Error(`Invalid rangeType: ${rangeType}`); } } -export function getBeginPrevious2(rangeType: RangeType, date: Date): Date { +export function getBeginPrevious2(rangeType: RangeType, date: Date, calendarType: CalendarType = CALENDAR_TYPES.ISO_8601): Date { switch (rangeType) { case 'decade': return getPreviousDecadeStart(date, -100); @@ -226,12 +304,15 @@ export function getBeginPrevious2(rangeType: RangeType, date: Date): Date { return getPreviousYearStart(date, -10); case 'month': return getPreviousMonthStart(date, -12); + case 'week': { + return getPreviousWeekStart(date, calendarType, -2); + } default: throw new Error(`Invalid rangeType: ${rangeType}`); } } -export function getBeginNext2(rangeType: RangeType, date: Date): Date { +export function getBeginNext2(rangeType: RangeType, date: Date, calendarType: CalendarType = CALENDAR_TYPES.ISO_8601): Date { switch (rangeType) { case 'decade': return getNextDecadeStart(date, 100); @@ -239,6 +320,9 @@ export function getBeginNext2(rangeType: RangeType, date: Date): Date { return getNextYearStart(date, 10); case 'month': return getNextMonthStart(date, 12); + case 'week': { + return getNextWeekStart(date, calendarType, 2); + } default: throw new Error(`Invalid rangeType: ${rangeType}`); } @@ -251,7 +335,7 @@ export function getBeginNext2(rangeType: RangeType, date: Date): Date { * @param {Date} date Date. * @returns {Date} End of a given range. */ -export function getEnd(rangeType: RangeType, date: Date): Date { +export function getEnd(rangeType: RangeType, date: Date, calendarType: CalendarType = CALENDAR_TYPES.ISO_8601): Date { switch (rangeType) { case 'century': return getCenturyEnd(date); @@ -263,6 +347,9 @@ export function getEnd(rangeType: RangeType, date: Date): Date { return getMonthEnd(date); case 'day': return getDayEnd(date); + case 'week': { + return getWeekEndDate(date, calendarType); + } default: throw new Error(`Invalid rangeType: ${rangeType}`); } @@ -275,7 +362,7 @@ export function getEnd(rangeType: RangeType, date: Date): Date { * @param {Date} date Date. * @returns {Date} End of a previous given range. */ -export function getEndPrevious(rangeType: RangeType, date: Date): Date { +export function getEndPrevious(rangeType: RangeType, date: Date, calendarType: CalendarType = CALENDAR_TYPES.ISO_8601): Date { switch (rangeType) { case 'century': return getPreviousCenturyEnd(date); @@ -285,12 +372,14 @@ export function getEndPrevious(rangeType: RangeType, date: Date): Date { return getPreviousYearEnd(date); case 'month': return getPreviousMonthEnd(date); + case 'week': + return getPreviousWeekEnd(date, calendarType); default: throw new Error(`Invalid rangeType: ${rangeType}`); } } -export function getEndPrevious2(rangeType: RangeType, date: Date): Date { +export function getEndPrevious2(rangeType: RangeType, date: Date, calendarType: CalendarType = CALENDAR_TYPES.ISO_8601): Date { switch (rangeType) { case 'decade': return getPreviousDecadeEnd(date, -100); @@ -298,6 +387,8 @@ export function getEndPrevious2(rangeType: RangeType, date: Date): Date { return getPreviousYearEnd(date, -10); case 'month': return getPreviousMonthEnd(date, -12); + case 'week': + return getPreviousWeekEnd(date, calendarType, -2); default: throw new Error(`Invalid rangeType: ${rangeType}`); } @@ -322,6 +413,8 @@ export function getRange(rangeType: RangeType, date: Date): [Date, Date] { return getMonthRange(date); case 'day': return getDayRange(date); + case 'week': + return getWeekRange(date); default: throw new Error(`Invalid rangeType: ${rangeType}`); } @@ -423,3 +516,65 @@ export function isWeekend( throw new Error('Unsupported calendar type.'); } } + + +/** + * Day + */ + +function makeGetEdgeOfNeighborDay(getEdgeOfPeriod: (date: Date) => Date, defaultOffset: number) { + return function makeGetEdgeOfNeighborDayInternal(date: Date, offset: number = defaultOffset) { + const year = getYear(date); + const month = getMonth(date); + const day = getDate(date) + offset; + const previousPeriod = new Date(); + previousPeriod.setFullYear(year, month, day); + previousPeriod.setHours(0, 0, 0, 0); + return getEdgeOfPeriod(previousPeriod); + }; +} + +/** + * Gets previous week start date from a given date. + * + * @param {Date} date Date to get previous week start from + * @returns {Date} Previous week start date + */ +export function getPreviousWeekStart(date: Date, calendarType: CalendarType = CALENDAR_TYPES.ISO_8601, offset = -1): Date { + return getWeekStartDate(getWeekDate(date, calendarType, offset), calendarType); +} + +/** + * Gets next week start date from a given date. + * + * @param {Date} date Date to get next wek start from + * @returns {Date} Next week start date + */ +export function getNextWeekStart(date: Date, calendarType: CalendarType = CALENDAR_TYPES.ISO_8601, offset = 1): Date { + return getWeekStartDate(getWeekDate(date, calendarType, offset), calendarType); +} + +/** + * Gets previous week end date from a given date. + * + * @param {DateLike} date Date to get previous week end from + * @returns {Date} Previous week end date + */ +export function getPreviousWeekEnd(date: Date, calendarType: CalendarType = CALENDAR_TYPES.ISO_8601, offset = -1): Date { + return getWeekEndDate(getWeekDate(date, calendarType, offset), calendarType); +} + + +function makeGetRange(getStart: (date: T) => Date, getEnd: (date: T) => Date) { + return function makeGetRangeInternal(date: T): [Date, Date] { + return [getStart(date), getEnd(date)]; + }; +} + +/** + * Gets week start and end dates from a given date. + * + * @param {DateLike} date Date to get day start and end from + * @returns {[Date, Date]} Day start and end dates + */ +export const getWeekRange: (date: Date) => [Date, Date] = makeGetRange(getDayEnd, makeGetEdgeOfNeighborDay(getDayEnd, 6)); diff --git a/packages/react-calendar/src/shared/types.ts b/packages/react-calendar/src/shared/types.ts index 78b8ab63..030040fe 100644 --- a/packages/react-calendar/src/shared/types.ts +++ b/packages/react-calendar/src/shared/types.ts @@ -8,19 +8,19 @@ export type CalendarType = (typeof CALENDAR_TYPES)[keyof typeof CALENDAR_TYPES]; export type ClassName = string | null | undefined | (string | null | undefined)[]; -export type Detail = 'century' | 'decade' | 'year' | 'month'; +export type Detail = 'century' | 'decade' | 'year' | 'month' | 'week'; type LooseValuePiece = string | Date | null; export type LooseValue = LooseValuePiece | Range; -export type RangeType = 'century' | 'decade' | 'year' | 'month' | 'day'; +export type RangeType = 'century' | 'decade' | 'year' | 'month' | 'week' | 'day'; type ValuePiece = Date | null; export type Value = ValuePiece | Range; -export type View = 'century' | 'decade' | 'year' | 'month'; +export type View = 'century' | 'decade' | 'year' | 'month' | 'week'; export type NavigationLabelArgs = { date: Date; diff --git a/sample/Sample.tsx b/sample/Sample.tsx index 59d1fb7d..044fcf01 100644 --- a/sample/Sample.tsx +++ b/sample/Sample.tsx @@ -18,7 +18,7 @@ export default function Sample() {
- +
diff --git a/sample/package.json b/sample/package.json index 306a90dd..e5eabf9b 100644 --- a/sample/package.json +++ b/sample/package.json @@ -20,8 +20,8 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@vitejs/plugin-react": "^4.2.0", + "@vitejs/plugin-react": "^4.3.4", "typescript": "^5.0.0", - "vite": "^5.0.0" + "vite": "^6.0.0" } } diff --git a/sample/yarn.lock b/sample/yarn.lock index f0595b00..9cbec2db 100644 --- a/sample/yarn.lock +++ b/sample/yarn.lock @@ -6,12 +6,12 @@ __metadata: cacheKey: 10c0 "@ampproject/remapping@npm:^2.2.0": - version: 2.2.0 - resolution: "@ampproject/remapping@npm:2.2.0" + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" dependencies: - "@jridgewell/gen-mapping": "npm:^0.1.0" - "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 10c0/d267d8def81d75976bed4f1f81418a234a75338963ed0b8565342ef3918b07e9043806eb3a1736df7ac0774edb98e2890f880bba42817f800495e4ae3fac995e + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed languageName: node linkType: hard @@ -33,7 +33,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.23.3": +"@babel/core@npm:^7.26.0": version: 7.26.0 resolution: "@babel/core@npm:7.26.0" dependencies: @@ -154,7 +154,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-self@npm:^7.23.3": +"@babel/plugin-transform-react-jsx-self@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-react-jsx-self@npm:7.25.9" dependencies: @@ -165,7 +165,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-source@npm:^7.23.3": +"@babel/plugin-transform-react-jsx-source@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-react-jsx-source@npm:7.25.9" dependencies: @@ -212,163 +212,177 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/aix-ppc64@npm:0.21.5" +"@esbuild/aix-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/aix-ppc64@npm:0.24.2" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm64@npm:0.21.5" +"@esbuild/android-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm64@npm:0.24.2" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm@npm:0.21.5" +"@esbuild/android-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm@npm:0.24.2" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-x64@npm:0.21.5" +"@esbuild/android-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-x64@npm:0.24.2" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-arm64@npm:0.21.5" +"@esbuild/darwin-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-arm64@npm:0.24.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-x64@npm:0.21.5" +"@esbuild/darwin-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-x64@npm:0.24.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-arm64@npm:0.21.5" +"@esbuild/freebsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-arm64@npm:0.24.2" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-x64@npm:0.21.5" +"@esbuild/freebsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-x64@npm:0.24.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm64@npm:0.21.5" +"@esbuild/linux-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm64@npm:0.24.2" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm@npm:0.21.5" +"@esbuild/linux-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm@npm:0.24.2" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ia32@npm:0.21.5" +"@esbuild/linux-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ia32@npm:0.24.2" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-loong64@npm:0.21.5" +"@esbuild/linux-loong64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-loong64@npm:0.24.2" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-mips64el@npm:0.21.5" +"@esbuild/linux-mips64el@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-mips64el@npm:0.24.2" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ppc64@npm:0.21.5" +"@esbuild/linux-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ppc64@npm:0.24.2" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-riscv64@npm:0.21.5" +"@esbuild/linux-riscv64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-riscv64@npm:0.24.2" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-s390x@npm:0.21.5" +"@esbuild/linux-s390x@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-s390x@npm:0.24.2" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-x64@npm:0.21.5" +"@esbuild/linux-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-x64@npm:0.24.2" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/netbsd-x64@npm:0.21.5" +"@esbuild/netbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-arm64@npm:0.24.2" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-x64@npm:0.24.2" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/openbsd-x64@npm:0.21.5" +"@esbuild/openbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-arm64@npm:0.24.2" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-x64@npm:0.24.2" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/sunos-x64@npm:0.21.5" +"@esbuild/sunos-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/sunos-x64@npm:0.24.2" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-arm64@npm:0.21.5" +"@esbuild/win32-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-arm64@npm:0.24.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-ia32@npm:0.21.5" +"@esbuild/win32-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-ia32@npm:0.24.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-x64@npm:0.21.5" +"@esbuild/win32-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-x64@npm:0.24.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -387,13 +401,12 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" dependencies: - "@jridgewell/set-array": "npm:^1.0.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: 10c0/3d784d87aee604bc4d48d3d9e547e0466d9f4a432cd9b3a4f3e55d104313bf3945e7e970cd5fa767bc145df11f1d568a01ab6659696be41f0ed2a817f3b583a3 + minipass: "npm:^7.0.4" + checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 languageName: node linkType: hard @@ -415,7 +428,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.2.1": +"@jridgewell/set-array@npm:^1.2.1": version: 1.2.1 resolution: "@jridgewell/set-array@npm:1.2.1" checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 @@ -429,7 +442,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.9": +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -439,25 +452,25 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^2.0.0": - version: 2.2.1 - resolution: "@npmcli/agent@npm:2.2.1" +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" dependencies: agent-base: "npm:^7.1.0" http-proxy-agent: "npm:^7.0.0" https-proxy-agent: "npm:^7.0.1" lru-cache: "npm:^10.0.1" - socks-proxy-agent: "npm:^8.0.1" - checksum: 10c0/38ee5cbe8f3cde13be916e717bfc54fd1a7605c07af056369ff894e244c221e0b56b08ca5213457477f9bc15bca9e729d51a4788829b5c3cf296b3c996147f76 + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 languageName: node linkType: hard -"@npmcli/fs@npm:^3.1.0": - version: 3.1.0 - resolution: "@npmcli/fs@npm:3.1.0" +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" dependencies: semver: "npm:^7.3.5" - checksum: 10c0/162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e + checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 languageName: node linkType: hard @@ -468,128 +481,149 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.22.4" +"@rollup/rollup-android-arm-eabi@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.28.1" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-android-arm64@npm:4.22.4" +"@rollup/rollup-android-arm64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-android-arm64@npm:4.28.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-darwin-arm64@npm:4.22.4" +"@rollup/rollup-darwin-arm64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.28.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-darwin-x64@npm:4.22.4" +"@rollup/rollup-darwin-x64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.28.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.22.4" +"@rollup/rollup-freebsd-arm64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.1" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-x64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-freebsd-x64@npm:4.28.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.22.4" +"@rollup/rollup-linux-arm-musleabihf@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.22.4" +"@rollup/rollup-linux-arm64-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.22.4" +"@rollup/rollup-linux-arm64-musl@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.4" +"@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.22.4" +"@rollup/rollup-linux-riscv64-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.22.4" +"@rollup/rollup-linux-s390x-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.1" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.22.4" +"@rollup/rollup-linux-x64-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.22.4" +"@rollup/rollup-linux-x64-musl@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.22.4" +"@rollup/rollup-win32-arm64-msvc@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.22.4" +"@rollup/rollup-win32-ia32-msvc@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.1" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.22.4" +"@rollup/rollup-win32-x64-msvc@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@types/babel__core@npm:^7.20.4": - version: 7.20.4 - resolution: "@types/babel__core@npm:7.20.4" +"@types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" dependencies: "@babel/parser": "npm:^7.20.7" "@babel/types": "npm:^7.20.7" "@types/babel__generator": "npm:*" "@types/babel__template": "npm:*" "@types/babel__traverse": "npm:*" - checksum: 10c0/2adc7ec49de5f922271ce087cedee000de468a3e13f92b7b6254016bd8357298cb98e6d2b3c9defc69bb6e38e0c134ffe80776a8ce4e9fb167bbffcb4d7613b7 + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff languageName: node linkType: hard @@ -621,10 +655,10 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:1.0.5": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d +"@types/estree@npm:1.0.6": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a languageName: node linkType: hard @@ -644,18 +678,18 @@ __metadata: languageName: node linkType: hard -"@vitejs/plugin-react@npm:^4.2.0": - version: 4.2.0 - resolution: "@vitejs/plugin-react@npm:4.2.0" +"@vitejs/plugin-react@npm:^4.3.4": + version: 4.3.4 + resolution: "@vitejs/plugin-react@npm:4.3.4" dependencies: - "@babel/core": "npm:^7.23.3" - "@babel/plugin-transform-react-jsx-self": "npm:^7.23.3" - "@babel/plugin-transform-react-jsx-source": "npm:^7.23.3" - "@types/babel__core": "npm:^7.20.4" - react-refresh: "npm:^0.14.0" + "@babel/core": "npm:^7.26.0" + "@babel/plugin-transform-react-jsx-self": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx-source": "npm:^7.25.9" + "@types/babel__core": "npm:^7.20.5" + react-refresh: "npm:^0.14.2" peerDependencies: - vite: ^4.2.0 || ^5.0.0 - checksum: 10c0/b6bd9b2a49d58e96bd2576abc4d816c862a51e3d394c8a42ea507cac434279193529a567fce7026e16a65ca2cdb3e6f1cdfeb3ec9751fde235e74564de693939 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + checksum: 10c0/38a47a1dbafae0b97142943d83ee3674cb3331153a60b1a3fd29d230c12c9dfe63b7c345b231a3450168ed8a9375a9a1a253c3d85e9efdc19478c0d56b98496c languageName: node linkType: hard @@ -666,29 +700,17 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 - languageName: node - linkType: hard - -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": - version: 7.1.0 - resolution: "agent-base@npm:7.1.0" - dependencies: - debug: "npm:^4.3.4" - checksum: 10c0/fc974ab57ffdd8421a2bc339644d312a9cca320c20c3393c9d8b1fd91731b9bbabdb985df5fc860f5b79d81c3e350daa3fcb31c5c07c0bb385aafc817df004ce +"abbrev@npm:^3.0.0": + version: 3.0.0 + resolution: "abbrev@npm:3.0.0" + checksum: 10c0/049704186396f571650eb7b22ed3627b77a5aedf98bb83caf2eac81ca2a3e25e795394b0464cfb2d6076df3db6a5312139eac5b6a126ca296ac53c5008069c28 languageName: node linkType: hard -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: "npm:^2.0.0" - indent-string: "npm:^4.0.0" - checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.3 + resolution: "agent-base@npm:7.1.3" + checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 languageName: node linkType: hard @@ -752,11 +774,11 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^18.0.0": - version: 18.0.2 - resolution: "cacache@npm:18.0.2" +"cacache@npm:^19.0.1": + version: 19.0.1 + resolution: "cacache@npm:19.0.1" dependencies: - "@npmcli/fs": "npm:^3.1.0" + "@npmcli/fs": "npm:^4.0.0" fs-minipass: "npm:^3.0.0" glob: "npm:^10.2.2" lru-cache: "npm:^10.0.1" @@ -764,11 +786,11 @@ __metadata: minipass-collect: "npm:^2.0.1" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^4.0.0" - ssri: "npm:^10.0.0" - tar: "npm:^6.1.11" - unique-filename: "npm:^3.0.0" - checksum: 10c0/7992665305cc251a984f4fdbab1449d50e88c635bc43bf2785530c61d239c61b349e5734461baa461caaee65f040ab14e2d58e694f479c0810cffd181ba5eabc + p-map: "npm:^7.0.2" + ssri: "npm:^12.0.0" + tar: "npm:^7.4.3" + unique-filename: "npm:^4.0.0" + checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c languageName: node linkType: hard @@ -779,17 +801,10 @@ __metadata: languageName: node linkType: hard -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 languageName: node linkType: hard @@ -897,33 +912,35 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.21.3": - version: 0.21.5 - resolution: "esbuild@npm:0.21.5" - dependencies: - "@esbuild/aix-ppc64": "npm:0.21.5" - "@esbuild/android-arm": "npm:0.21.5" - "@esbuild/android-arm64": "npm:0.21.5" - "@esbuild/android-x64": "npm:0.21.5" - "@esbuild/darwin-arm64": "npm:0.21.5" - "@esbuild/darwin-x64": "npm:0.21.5" - "@esbuild/freebsd-arm64": "npm:0.21.5" - "@esbuild/freebsd-x64": "npm:0.21.5" - "@esbuild/linux-arm": "npm:0.21.5" - "@esbuild/linux-arm64": "npm:0.21.5" - "@esbuild/linux-ia32": "npm:0.21.5" - "@esbuild/linux-loong64": "npm:0.21.5" - "@esbuild/linux-mips64el": "npm:0.21.5" - "@esbuild/linux-ppc64": "npm:0.21.5" - "@esbuild/linux-riscv64": "npm:0.21.5" - "@esbuild/linux-s390x": "npm:0.21.5" - "@esbuild/linux-x64": "npm:0.21.5" - "@esbuild/netbsd-x64": "npm:0.21.5" - "@esbuild/openbsd-x64": "npm:0.21.5" - "@esbuild/sunos-x64": "npm:0.21.5" - "@esbuild/win32-arm64": "npm:0.21.5" - "@esbuild/win32-ia32": "npm:0.21.5" - "@esbuild/win32-x64": "npm:0.21.5" +"esbuild@npm:^0.24.2": + version: 0.24.2 + resolution: "esbuild@npm:0.24.2" + dependencies: + "@esbuild/aix-ppc64": "npm:0.24.2" + "@esbuild/android-arm": "npm:0.24.2" + "@esbuild/android-arm64": "npm:0.24.2" + "@esbuild/android-x64": "npm:0.24.2" + "@esbuild/darwin-arm64": "npm:0.24.2" + "@esbuild/darwin-x64": "npm:0.24.2" + "@esbuild/freebsd-arm64": "npm:0.24.2" + "@esbuild/freebsd-x64": "npm:0.24.2" + "@esbuild/linux-arm": "npm:0.24.2" + "@esbuild/linux-arm64": "npm:0.24.2" + "@esbuild/linux-ia32": "npm:0.24.2" + "@esbuild/linux-loong64": "npm:0.24.2" + "@esbuild/linux-mips64el": "npm:0.24.2" + "@esbuild/linux-ppc64": "npm:0.24.2" + "@esbuild/linux-riscv64": "npm:0.24.2" + "@esbuild/linux-s390x": "npm:0.24.2" + "@esbuild/linux-x64": "npm:0.24.2" + "@esbuild/netbsd-arm64": "npm:0.24.2" + "@esbuild/netbsd-x64": "npm:0.24.2" + "@esbuild/openbsd-arm64": "npm:0.24.2" + "@esbuild/openbsd-x64": "npm:0.24.2" + "@esbuild/sunos-x64": "npm:0.24.2" + "@esbuild/win32-arm64": "npm:0.24.2" + "@esbuild/win32-ia32": "npm:0.24.2" + "@esbuild/win32-x64": "npm:0.24.2" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -959,8 +976,12 @@ __metadata: optional: true "@esbuild/linux-x64": optional: true + "@esbuild/netbsd-arm64": + optional: true "@esbuild/netbsd-x64": optional: true + "@esbuild/openbsd-arm64": + optional: true "@esbuild/openbsd-x64": optional: true "@esbuild/sunos-x64": @@ -973,7 +994,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10c0/fa08508adf683c3f399e8a014a6382a6b65542213431e26206c0720e536b31c09b50798747c2a105a4bbba1d9767b8d3615a74c2f7bf1ddf6d836cd11eb672de + checksum: 10c0/5a25bb08b6ba23db6e66851828d848bd3ff87c005a48c02d83e38879058929878a6baa5a414e1141faee0d1dece3f32b5fbc2a87b82ed6a7aa857cf40359aeb5 languageName: node linkType: hard @@ -1001,15 +1022,6 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 - languageName: node - linkType: hard - "fs-minipass@npm:^3.0.0": version: 3.0.3 resolution: "fs-minipass@npm:3.0.3" @@ -1055,7 +1067,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10": +"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": version: 10.3.10 resolution: "glob@npm:10.3.10" dependencies: @@ -1127,13 +1139,6 @@ __metadata: languageName: node linkType: hard -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f - languageName: node - linkType: hard - "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -1151,13 +1156,6 @@ __metadata: languageName: node linkType: hard -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d - languageName: node - linkType: hard - "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -1251,22 +1249,22 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0": - version: 13.0.0 - resolution: "make-fetch-happen@npm:13.0.0" +"make-fetch-happen@npm:^14.0.3": + version: 14.0.3 + resolution: "make-fetch-happen@npm:14.0.3" dependencies: - "@npmcli/agent": "npm:^2.0.0" - cacache: "npm:^18.0.0" + "@npmcli/agent": "npm:^3.0.0" + cacache: "npm:^19.0.1" http-cache-semantics: "npm:^4.1.1" - is-lambda: "npm:^1.0.1" minipass: "npm:^7.0.2" - minipass-fetch: "npm:^3.0.0" + minipass-fetch: "npm:^4.0.0" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.3" + negotiator: "npm:^1.0.0" + proc-log: "npm:^5.0.0" promise-retry: "npm:^2.0.1" - ssri: "npm:^10.0.0" - checksum: 10c0/43b9f6dcbc6fe8b8604cb6396957c3698857a15ba4dbc38284f7f0e61f248300585ef1eb8cc62df54e9c724af977e45b5cdfd88320ef7f53e45070ed3488da55 + ssri: "npm:^12.0.0" + checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0 languageName: node linkType: hard @@ -1288,18 +1286,18 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^3.0.0": - version: 3.0.4 - resolution: "minipass-fetch@npm:3.0.4" +"minipass-fetch@npm:^4.0.0": + version: 4.0.0 + resolution: "minipass-fetch@npm:4.0.0" dependencies: encoding: "npm:^0.1.13" minipass: "npm:^7.0.3" minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.1.2" + minizlib: "npm:^3.0.1" dependenciesMeta: encoding: optional: true - checksum: 10c0/1b63c1f3313e88eeac4689f1b71c9f086598db9a189400e3ee960c32ed89e06737fa23976c9305c2d57464fb3fcdc12749d3378805c9d6176f5569b0d0ee8a75 + checksum: 10c0/7fa30ce7c373fb6f94c086b374fff1589fd7e78451855d2d06c2e2d9df936d131e73e952163063016592ed3081444bd8d1ea608533313b0149156ce23311da4b languageName: node linkType: hard @@ -1339,36 +1337,29 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 - languageName: node - linkType: hard - -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": - version: 7.0.4 - resolution: "minipass@npm:7.0.4" - checksum: 10c0/6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 languageName: node linkType: hard -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" +"minizlib@npm:^3.0.1": + version: 3.0.1 + resolution: "minizlib@npm:3.0.1" dependencies: - minipass: "npm:^3.0.0" - yallist: "npm:^4.0.0" - checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + minipass: "npm:^7.0.4" + rimraf: "npm:^5.0.5" + checksum: 10c0/82f8bf70da8af656909a8ee299d7ed3b3372636749d29e105f97f20e88971be31f5ed7642f2e898f00283b68b701cc01307401cdc209b0efc5dd3818220e5093 languageName: node linkType: hard -"mkdirp@npm:^1.0.3": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" +"mkdirp@npm:^3.0.1": + version: 3.0.1 + resolution: "mkdirp@npm:3.0.1" bin: - mkdirp: bin/cmd.js - checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + mkdirp: dist/cjs/src/bin.js + checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d languageName: node linkType: hard @@ -1380,38 +1371,38 @@ __metadata: linkType: hard "nanoid@npm:^3.3.7": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" + version: 3.3.8 + resolution: "nanoid@npm:3.3.8" bin: nanoid: bin/nanoid.cjs - checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 + checksum: 10c0/4b1bb29f6cfebf3be3bc4ad1f1296fb0a10a3043a79f34fbffe75d1621b4318319211cd420549459018ea3592f0d2f159247a6f874911d6d26eaaadda2478120 languageName: node linkType: hard -"negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b languageName: node linkType: hard "node-gyp@npm:latest": - version: 10.0.1 - resolution: "node-gyp@npm:10.0.1" + version: 11.0.0 + resolution: "node-gyp@npm:11.0.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" glob: "npm:^10.3.10" graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^13.0.0" - nopt: "npm:^7.0.0" - proc-log: "npm:^3.0.0" + make-fetch-happen: "npm:^14.0.3" + nopt: "npm:^8.0.0" + proc-log: "npm:^5.0.0" semver: "npm:^7.3.5" - tar: "npm:^6.1.2" - which: "npm:^4.0.0" + tar: "npm:^7.4.3" + which: "npm:^5.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/abddfff7d873312e4ed4a5fb75ce893a5c4fb69e7fcb1dfa71c28a6b92a7f1ef6b62790dffb39181b5a82728ba8f2f32d229cf8cbe66769fe02cea7db4a555aa + checksum: 10c0/a3b885bbee2d271f1def32ba2e30ffcf4562a3db33af06b8b365e053153e2dd2051b9945783c3c8e852d26a0f20f65b251c7e83361623383a99635c0280ee573 languageName: node linkType: hard @@ -1422,23 +1413,21 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^7.0.0": - version: 7.2.0 - resolution: "nopt@npm:7.2.0" +"nopt@npm:^8.0.0": + version: 8.1.0 + resolution: "nopt@npm:8.1.0" dependencies: - abbrev: "npm:^2.0.0" + abbrev: "npm:^3.0.0" bin: nopt: bin/nopt.js - checksum: 10c0/9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff + checksum: 10c0/62e9ea70c7a3eb91d162d2c706b6606c041e4e7b547cbbb48f8b3695af457dd6479904d7ace600856bf923dd8d1ed0696f06195c8c20f02ac87c1da0e1d315ef languageName: node linkType: hard -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: "npm:^3.0.0" - checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 +"p-map@npm:^7.0.2": + version: 7.0.3 + resolution: "p-map@npm:7.0.3" + checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c languageName: node linkType: hard @@ -1459,28 +1448,28 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": - version: 1.1.0 - resolution: "picocolors@npm:1.1.0" - checksum: 10c0/86946f6032148801ef09c051c6fb13b5cf942eaf147e30ea79edb91dd32d700934edebe782a1078ff859fb2b816792e97ef4dab03d7f0b804f6b01a0df35e023 +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 languageName: node linkType: hard -"postcss@npm:^8.4.43": - version: 8.4.47 - resolution: "postcss@npm:8.4.47" +"postcss@npm:^8.4.49": + version: 8.4.49 + resolution: "postcss@npm:8.4.49" dependencies: nanoid: "npm:^3.3.7" - picocolors: "npm:^1.1.0" + picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10c0/929f68b5081b7202709456532cee2a145c1843d391508c5a09de2517e8c4791638f71dd63b1898dba6712f8839d7a6da046c72a5e44c162e908f5911f57b5f44 + checksum: 10c0/f1b3f17aaf36d136f59ec373459f18129908235e65dbdc3aee5eef8eba0756106f52de5ec4682e29a2eab53eb25170e7e871b3e4b52a8f1de3d344a514306be3 languageName: node linkType: hard -"proc-log@npm:^3.0.0": - version: 3.0.0 - resolution: "proc-log@npm:3.0.0" - checksum: 10c0/f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc +"proc-log@npm:^5.0.0": + version: 5.0.0 + resolution: "proc-log@npm:5.0.0" + checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3 languageName: node linkType: hard @@ -1498,12 +1487,12 @@ __metadata: version: 0.0.0-use.local resolution: "react-calendar-sample-page@workspace:." dependencies: - "@vitejs/plugin-react": "npm:^4.2.0" + "@vitejs/plugin-react": "npm:^4.3.4" react: "npm:^18.2.0" react-calendar: "npm:latest" react-dom: "npm:^18.2.0" typescript: "npm:^5.0.0" - vite: "npm:^5.0.0" + vite: "npm:^6.0.0" languageName: unknown linkType: soft @@ -1538,10 +1527,10 @@ __metadata: languageName: node linkType: hard -"react-refresh@npm:^0.14.0": - version: 0.14.0 - resolution: "react-refresh@npm:0.14.0" - checksum: 10c0/b8ae07ad153357d77830928a7f1fc2df837aabefee907fa273ba04c7643f3b860e986f1d4b7ada9b721c8d79b8c24b5b911a314a1a2398b105f1b13d19ea2b8d +"react-refresh@npm:^0.14.2": + version: 0.14.2 + resolution: "react-refresh@npm:0.14.2" + checksum: 10c0/875b72ef56b147a131e33f2abd6ec059d1989854b3ff438898e4f9310bfcc73acff709445b7ba843318a953cb9424bcc2c05af2b3d80011cee28f25aef3e2ebb languageName: node linkType: hard @@ -1561,27 +1550,41 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.20.0": - version: 4.22.4 - resolution: "rollup@npm:4.22.4" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.22.4" - "@rollup/rollup-android-arm64": "npm:4.22.4" - "@rollup/rollup-darwin-arm64": "npm:4.22.4" - "@rollup/rollup-darwin-x64": "npm:4.22.4" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.22.4" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.22.4" - "@rollup/rollup-linux-arm64-gnu": "npm:4.22.4" - "@rollup/rollup-linux-arm64-musl": "npm:4.22.4" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.22.4" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.22.4" - "@rollup/rollup-linux-s390x-gnu": "npm:4.22.4" - "@rollup/rollup-linux-x64-gnu": "npm:4.22.4" - "@rollup/rollup-linux-x64-musl": "npm:4.22.4" - "@rollup/rollup-win32-arm64-msvc": "npm:4.22.4" - "@rollup/rollup-win32-ia32-msvc": "npm:4.22.4" - "@rollup/rollup-win32-x64-msvc": "npm:4.22.4" - "@types/estree": "npm:1.0.5" +"rimraf@npm:^5.0.5": + version: 5.0.5 + resolution: "rimraf@npm:5.0.5" + dependencies: + glob: "npm:^10.3.7" + bin: + rimraf: dist/esm/bin.mjs + checksum: 10c0/d50dbe724f33835decd88395b25ed35995077c60a50ae78ded06e0185418914e555817aad1b4243edbff2254548c2f6ad6f70cc850040bebb4da9e8cc016f586 + languageName: node + linkType: hard + +"rollup@npm:^4.23.0": + version: 4.28.1 + resolution: "rollup@npm:4.28.1" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.28.1" + "@rollup/rollup-android-arm64": "npm:4.28.1" + "@rollup/rollup-darwin-arm64": "npm:4.28.1" + "@rollup/rollup-darwin-x64": "npm:4.28.1" + "@rollup/rollup-freebsd-arm64": "npm:4.28.1" + "@rollup/rollup-freebsd-x64": "npm:4.28.1" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.28.1" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.28.1" + "@rollup/rollup-linux-arm64-gnu": "npm:4.28.1" + "@rollup/rollup-linux-arm64-musl": "npm:4.28.1" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.28.1" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.28.1" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.28.1" + "@rollup/rollup-linux-s390x-gnu": "npm:4.28.1" + "@rollup/rollup-linux-x64-gnu": "npm:4.28.1" + "@rollup/rollup-linux-x64-musl": "npm:4.28.1" + "@rollup/rollup-win32-arm64-msvc": "npm:4.28.1" + "@rollup/rollup-win32-ia32-msvc": "npm:4.28.1" + "@rollup/rollup-win32-x64-msvc": "npm:4.28.1" + "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" dependenciesMeta: "@rollup/rollup-android-arm-eabi": @@ -1592,6 +1595,10 @@ __metadata: optional: true "@rollup/rollup-darwin-x64": optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true "@rollup/rollup-linux-arm-gnueabihf": optional: true "@rollup/rollup-linux-arm-musleabihf": @@ -1600,6 +1607,8 @@ __metadata: optional: true "@rollup/rollup-linux-arm64-musl": optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true "@rollup/rollup-linux-powerpc64le-gnu": optional: true "@rollup/rollup-linux-riscv64-gnu": @@ -1620,7 +1629,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/4c96b6e2e0c5dbe73b4ba899cea894a05115ab8c65ccff631fbbb944e2b3a9f2eb3b99c2dce3dd91b179647df1892ffc44ecee29381ccf155ba8000b22712a32 + checksum: 10c0/2d2d0433b7cb53153a04c7b406f342f31517608dc57510e49177941b9e68c30071674b83a0292ef1d87184e5f7c6d0f2945c8b3c74963074de10c75366fe2c14 languageName: node linkType: hard @@ -1688,18 +1697,18 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^8.0.1": - version: 8.0.2 - resolution: "socks-proxy-agent@npm:8.0.2" +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" dependencies: - agent-base: "npm:^7.0.2" + agent-base: "npm:^7.1.2" debug: "npm:^4.3.4" - socks: "npm:^2.7.1" - checksum: 10c0/a842402fc9b8848a31367f2811ca3cd14c4106588b39a0901cd7a69029998adfc6456b0203617c18ed090542ad0c24ee4e9d4c75a0c4b75071e214227c177eb7 + socks: "npm:^2.8.3" + checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 languageName: node linkType: hard -"socks@npm:^2.7.1": +"socks@npm:^2.8.3": version: 2.8.3 resolution: "socks@npm:2.8.3" dependencies: @@ -1723,12 +1732,12 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^10.0.0": - version: 10.0.5 - resolution: "ssri@npm:10.0.5" +"ssri@npm:^12.0.0": + version: 12.0.0 + resolution: "ssri@npm:12.0.0" dependencies: minipass: "npm:^7.0.3" - checksum: 10c0/b091f2ae92474183c7ac5ed3f9811457e1df23df7a7e70c9476eaa9a0c4a0c8fc190fb45acefbf023ca9ee864dd6754237a697dc52a0fb182afe65d8e77443d8 + checksum: 10c0/caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d languageName: node linkType: hard @@ -1772,17 +1781,17 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.2.1 - resolution: "tar@npm:6.2.1" +"tar@npm:^7.4.3": + version: 7.4.3 + resolution: "tar@npm:7.4.3" dependencies: - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - minipass: "npm:^5.0.0" - minizlib: "npm:^2.1.1" - mkdirp: "npm:^1.0.3" - yallist: "npm:^4.0.0" - checksum: 10c0/a5eca3eb50bc11552d453488344e6507156b9193efd7635e98e867fab275d527af53d8866e2370cd09dfe74378a18111622ace35af6a608e5223a7d27fe99537 + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.0.1" + mkdirp: "npm:^3.0.1" + yallist: "npm:^5.0.0" + checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d languageName: node linkType: hard @@ -1806,21 +1815,21 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-filename@npm:3.0.0" +"unique-filename@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-filename@npm:4.0.0" dependencies: - unique-slug: "npm:^4.0.0" - checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + unique-slug: "npm:^5.0.0" + checksum: 10c0/38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc languageName: node linkType: hard -"unique-slug@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-slug@npm:4.0.0" +"unique-slug@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-slug@npm:5.0.0" dependencies: imurmurhash: "npm:^0.1.4" - checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 languageName: node linkType: hard @@ -1838,29 +1847,34 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.0.0": - version: 5.4.6 - resolution: "vite@npm:5.4.6" +"vite@npm:^6.0.0": + version: 6.0.11 + resolution: "vite@npm:6.0.11" dependencies: - esbuild: "npm:^0.21.3" + esbuild: "npm:^0.24.2" fsevents: "npm:~2.3.3" - postcss: "npm:^8.4.43" - rollup: "npm:^4.20.0" + postcss: "npm:^8.4.49" + rollup: "npm:^4.23.0" peerDependencies: - "@types/node": ^18.0.0 || >=20.0.0 + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: ">=1.21.0" less: "*" lightningcss: ^1.21.0 sass: "*" sass-embedded: "*" stylus: "*" sugarss: "*" - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 dependenciesMeta: fsevents: optional: true peerDependenciesMeta: "@types/node": optional: true + jiti: + optional: true less: optional: true lightningcss: @@ -1875,9 +1889,13 @@ __metadata: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true bin: vite: bin/vite.js - checksum: 10c0/5f87be3a10e970eaf9ac52dfab39cf9fff583036685252fb64570b6d7bfa749f6d221fb78058f5ef4b5664c180d45a8e7a7ff68d7f3770e69e24c7c68b958bde + checksum: 10c0/a0537f9bf8d6ded740646a4aa44b8dbf442d3005e75f7b27e981ef6011f22d4759f5eb643a393c0ffb8d21e2f50fb5f774d3a53108fb96a10b0f83697e8efe84 languageName: node linkType: hard @@ -1901,14 +1919,14 @@ __metadata: languageName: node linkType: hard -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" +"which@npm:^5.0.0": + version: 5.0.0 + resolution: "which@npm:5.0.0" dependencies: isexe: "npm:^3.1.1" bin: node-which: bin/which.js - checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b languageName: node linkType: hard @@ -1947,3 +1965,10 @@ __metadata: checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a languageName: node linkType: hard + +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 + languageName: node + linkType: hard diff --git a/test/CalendarTypeOptions.tsx b/test/CalendarTypeOptions.tsx new file mode 100644 index 00000000..83385f99 --- /dev/null +++ b/test/CalendarTypeOptions.tsx @@ -0,0 +1,46 @@ +import { CALENDAR_TYPES, isCalendarType, type CalendarType } from './shared/types.js'; + +const CALENDAR_TYPE_VALUES = Object.values(CALENDAR_TYPES); + +function upperCaseFirstLetter(str: string) { + return str.slice(0, 1).toUpperCase() + str.slice(1); +} + +type CalendarTypeOptionsProps = { + calendarType: CalendarType; + setCalendarType: (calendarType: CalendarType) => void; +}; + +export default function CalendarTypeOptions({ + calendarType, + setCalendarType, +}: CalendarTypeOptionsProps) { + function onChange(event: React.ChangeEvent) { + const { value } = event.target; + + if (isCalendarType(value)) { + setCalendarType(value); + } + } + + return ( +
+ Calendar Type + + {CALENDAR_TYPE_VALUES.map((calendar, index) => ( +
+ + {/* biome-ignore lint/a11y/noLabelWithoutControl: Pinky promise this label won't ever be empty */} + +
+ ))} +
+ ); +} diff --git a/test/MaxDetailOptions.tsx b/test/MaxDetailOptions.tsx index bf9043ef..b1fa840b 100644 --- a/test/MaxDetailOptions.tsx +++ b/test/MaxDetailOptions.tsx @@ -1,6 +1,6 @@ import type { View } from './shared/types.js'; -const allViews = ['century', 'decade', 'year', 'month'] as const; +const allViews = ['century', 'decade', 'year', 'month', 'week'] as const; function upperCaseFirstLetter(str: string) { return str.slice(0, 1).toUpperCase() + str.slice(1); diff --git a/test/MinDetailOptions.tsx b/test/MinDetailOptions.tsx index 962f28e1..731e6b81 100644 --- a/test/MinDetailOptions.tsx +++ b/test/MinDetailOptions.tsx @@ -1,6 +1,6 @@ import type { View } from './shared/types.js'; -const allViews = ['century', 'decade', 'year', 'month'] as const; +const allViews = ['century', 'decade', 'year', 'month', 'week'] as const; function upperCaseFirstLetter(str: string) { return str.slice(0, 1).toUpperCase() + str.slice(1); diff --git a/test/Test.tsx b/test/Test.tsx index 820ca6ed..adf4e29f 100644 --- a/test/Test.tsx +++ b/test/Test.tsx @@ -14,11 +14,15 @@ import { formatDate } from './shared/dateFormatter.js'; import './Test.css'; import type { LooseValue, Value, View } from './shared/types.js'; +import type {CalendarType} from 'react-calendar/src/index.js'; +import CalendarTypeOptions from './CalendarTypeOptions.js'; const now = new Date(); const tileClassName = ({ date, view }: { date: Date; view: View }) => { switch (view) { + case 'week': + return date.getDay() === 0 || date.getDay() === 6 ? 'red' : null; case 'month': return date.getDay() === 0 || date.getDay() === 6 ? 'red' : null; case 'year': @@ -34,6 +38,12 @@ const tileClassName = ({ date, view }: { date: Date; view: View }) => { const tileContent = ({ date, view }: { date: Date; view: View }) => { switch (view) { + case 'week': + return date.getDay() === 0 ? ( +

+ {"It's Sunday!"} +

+ ) : null; case 'month': return date.getDay() === 0 ? (

@@ -74,6 +84,7 @@ export default function Test() { ); const [locale, setLocale] = useState(); const [maxDate, setMaxDate] = useState(fifteenthOfNextMonth); + const [calendarType, setCalendarType] = useState('gregory'); const [maxDetail, setMaxDetail] = useState('month'); const [minDate, setMinDate] = useState(nineteenNinetyFive); const [minDetail, setMinDetail] = useState('century'); @@ -120,6 +131,7 @@ export default function Test() { const commonProps = { className: 'myCustomCalendarClassName', + calendarType, locale, maxDate, maxDetail, @@ -184,6 +196,7 @@ export default function Test() { setMaxDate={setMaxDate} setMinDate={setMinDate} /> + ; -export type View = 'century' | 'decade' | 'year' | 'month'; +export type View = 'century' | 'decade' | 'year' | 'month' | 'week'; + +export const CALENDAR_TYPES = { + GREGORY: 'gregory', + HEBREW: 'hebrew', + ISLAMIC: 'islamic', + ISO_8601: 'iso8601', +} as const; + +export type CalendarType = (typeof CALENDAR_TYPES)[keyof typeof CALENDAR_TYPES]; + +export function isCalendarType(value: unknown): value is CalendarType { + return Object.values(CALENDAR_TYPES).some((v) => v === value); +} diff --git a/yarn.lock b/yarn.lock index 1c67cb91..5b43935b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,7 +40,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.23.3": +"@babel/core@npm:^7.26.0": version: 7.26.0 resolution: "@babel/core@npm:7.26.0" dependencies: @@ -161,7 +161,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-self@npm:^7.23.3": +"@babel/plugin-transform-react-jsx-self@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-react-jsx-self@npm:7.25.9" dependencies: @@ -172,7 +172,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-source@npm:^7.23.3": +"@babel/plugin-transform-react-jsx-source@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-react-jsx-source@npm:7.25.9" dependencies: @@ -319,163 +319,177 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/aix-ppc64@npm:0.21.5" +"@esbuild/aix-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/aix-ppc64@npm:0.24.2" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm64@npm:0.21.5" +"@esbuild/android-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm64@npm:0.24.2" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-arm@npm:0.21.5" +"@esbuild/android-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm@npm:0.24.2" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/android-x64@npm:0.21.5" +"@esbuild/android-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-x64@npm:0.24.2" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-arm64@npm:0.21.5" +"@esbuild/darwin-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-arm64@npm:0.24.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/darwin-x64@npm:0.21.5" +"@esbuild/darwin-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-x64@npm:0.24.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-arm64@npm:0.21.5" +"@esbuild/freebsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-arm64@npm:0.24.2" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/freebsd-x64@npm:0.21.5" +"@esbuild/freebsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-x64@npm:0.24.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm64@npm:0.21.5" +"@esbuild/linux-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm64@npm:0.24.2" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-arm@npm:0.21.5" +"@esbuild/linux-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm@npm:0.24.2" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ia32@npm:0.21.5" +"@esbuild/linux-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ia32@npm:0.24.2" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-loong64@npm:0.21.5" +"@esbuild/linux-loong64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-loong64@npm:0.24.2" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-mips64el@npm:0.21.5" +"@esbuild/linux-mips64el@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-mips64el@npm:0.24.2" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-ppc64@npm:0.21.5" +"@esbuild/linux-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ppc64@npm:0.24.2" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-riscv64@npm:0.21.5" +"@esbuild/linux-riscv64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-riscv64@npm:0.24.2" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-s390x@npm:0.21.5" +"@esbuild/linux-s390x@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-s390x@npm:0.24.2" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/linux-x64@npm:0.21.5" +"@esbuild/linux-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-x64@npm:0.24.2" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/netbsd-x64@npm:0.21.5" +"@esbuild/netbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-arm64@npm:0.24.2" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-x64@npm:0.24.2" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/openbsd-x64@npm:0.21.5" +"@esbuild/openbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-arm64@npm:0.24.2" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-x64@npm:0.24.2" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/sunos-x64@npm:0.21.5" +"@esbuild/sunos-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/sunos-x64@npm:0.24.2" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-arm64@npm:0.21.5" +"@esbuild/win32-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-arm64@npm:0.24.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-ia32@npm:0.21.5" +"@esbuild/win32-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-ia32@npm:0.24.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.21.5": - version: 0.21.5 - resolution: "@esbuild/win32-x64@npm:0.21.5" +"@esbuild/win32-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-x64@npm:0.24.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -494,6 +508,15 @@ __metadata: languageName: node linkType: hard +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 + languageName: node + linkType: hard + "@jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.5 resolution: "@jridgewell/gen-mapping@npm:0.3.5" @@ -563,25 +586,25 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^2.0.0": - version: 2.2.1 - resolution: "@npmcli/agent@npm:2.2.1" +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" dependencies: agent-base: "npm:^7.1.0" http-proxy-agent: "npm:^7.0.0" https-proxy-agent: "npm:^7.0.1" lru-cache: "npm:^10.0.1" - socks-proxy-agent: "npm:^8.0.1" - checksum: 10c0/38ee5cbe8f3cde13be916e717bfc54fd1a7605c07af056369ff894e244c221e0b56b08ca5213457477f9bc15bca9e729d51a4788829b5c3cf296b3c996147f76 + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 languageName: node linkType: hard -"@npmcli/fs@npm:^3.1.0": - version: 3.1.0 - resolution: "@npmcli/fs@npm:3.1.0" +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" dependencies: semver: "npm:^7.3.5" - checksum: 10c0/162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e + checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 languageName: node linkType: hard @@ -592,114 +615,135 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.22.4" +"@rollup/rollup-android-arm-eabi@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.28.1" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-android-arm64@npm:4.22.4" +"@rollup/rollup-android-arm64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-android-arm64@npm:4.28.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-darwin-arm64@npm:4.22.4" +"@rollup/rollup-darwin-arm64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.28.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-darwin-x64@npm:4.22.4" +"@rollup/rollup-darwin-x64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.28.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.22.4" +"@rollup/rollup-freebsd-arm64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.1" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-x64@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-freebsd-x64@npm:4.28.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.22.4" +"@rollup/rollup-linux-arm-musleabihf@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.22.4" +"@rollup/rollup-linux-arm64-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.22.4" +"@rollup/rollup-linux-arm64-musl@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.4" +"@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.22.4" +"@rollup/rollup-linux-riscv64-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.22.4" +"@rollup/rollup-linux-s390x-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.1" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.22.4" +"@rollup/rollup-linux-x64-gnu@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.22.4" +"@rollup/rollup-linux-x64-musl@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.22.4" +"@rollup/rollup-win32-arm64-msvc@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.22.4" +"@rollup/rollup-win32-ia32-msvc@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.1" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.22.4": - version: 4.22.4 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.22.4" +"@rollup/rollup-win32-x64-msvc@npm:4.28.1": + version: 4.28.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -777,16 +821,16 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.20.4": - version: 7.20.4 - resolution: "@types/babel__core@npm:7.20.4" +"@types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" dependencies: "@babel/parser": "npm:^7.20.7" "@babel/types": "npm:^7.20.7" "@types/babel__generator": "npm:*" "@types/babel__template": "npm:*" "@types/babel__traverse": "npm:*" - checksum: 10c0/2adc7ec49de5f922271ce087cedee000de468a3e13f92b7b6254016bd8357298cb98e6d2b3c9defc69bb6e38e0c134ffe80776a8ce4e9fb167bbffcb4d7613b7 + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff languageName: node linkType: hard @@ -818,10 +862,10 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:1.0.5, @types/estree@npm:^1.0.0": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d +"@types/estree@npm:1.0.6, @types/estree@npm:^1.0.0": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a languageName: node linkType: hard @@ -891,100 +935,100 @@ __metadata: languageName: node linkType: hard -"@vitejs/plugin-react@npm:^4.2.0": - version: 4.2.0 - resolution: "@vitejs/plugin-react@npm:4.2.0" +"@vitejs/plugin-react@npm:^4.3.4": + version: 4.3.4 + resolution: "@vitejs/plugin-react@npm:4.3.4" dependencies: - "@babel/core": "npm:^7.23.3" - "@babel/plugin-transform-react-jsx-self": "npm:^7.23.3" - "@babel/plugin-transform-react-jsx-source": "npm:^7.23.3" - "@types/babel__core": "npm:^7.20.4" - react-refresh: "npm:^0.14.0" + "@babel/core": "npm:^7.26.0" + "@babel/plugin-transform-react-jsx-self": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx-source": "npm:^7.25.9" + "@types/babel__core": "npm:^7.20.5" + react-refresh: "npm:^0.14.2" peerDependencies: - vite: ^4.2.0 || ^5.0.0 - checksum: 10c0/b6bd9b2a49d58e96bd2576abc4d816c862a51e3d394c8a42ea507cac434279193529a567fce7026e16a65ca2cdb3e6f1cdfeb3ec9751fde235e74564de693939 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + checksum: 10c0/38a47a1dbafae0b97142943d83ee3674cb3331153a60b1a3fd29d230c12c9dfe63b7c345b231a3450168ed8a9375a9a1a253c3d85e9efdc19478c0d56b98496c languageName: node linkType: hard -"@vitest/expect@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/expect@npm:2.1.1" + +"@vitest/expect@npm:3.0.5": + version: 3.0.5 + resolution: "@vitest/expect@npm:3.0.5" dependencies: - "@vitest/spy": "npm:2.1.1" - "@vitest/utils": "npm:2.1.1" - chai: "npm:^5.1.1" - tinyrainbow: "npm:^1.2.0" - checksum: 10c0/2a467bcd37378b653040cca062a665f382087eb9f69cff670848a0c207a8458f27211c408c75b7e563e069a2e6d533c78f24e1a317c259646b948813342dbf3d + "@vitest/spy": "npm:3.0.5" + "@vitest/utils": "npm:3.0.5" + chai: "npm:^5.1.2" + tinyrainbow: "npm:^2.0.0" + checksum: 10c0/d5af9c63d70ddfc72b63ce03ea82ed0086a307c50154f38b0ad1c6c23215705e5f7d6547edf027748b7b442274707ca4321bc0941effa0264b026a8d4f70ee0d languageName: node linkType: hard -"@vitest/mocker@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/mocker@npm:2.1.1" +"@vitest/mocker@npm:3.0.5": + version: 3.0.5 + resolution: "@vitest/mocker@npm:3.0.5" dependencies: - "@vitest/spy": "npm:^2.1.0-beta.1" + "@vitest/spy": "npm:3.0.5" estree-walker: "npm:^3.0.3" - magic-string: "npm:^0.30.11" + magic-string: "npm:^0.30.17" peerDependencies: - "@vitest/spy": 2.1.1 - msw: ^2.3.5 - vite: ^5.0.0 + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - checksum: 10c0/e0681bb75bf7255ce49f720d193c9c795a64d42fef13c7af5c157514ebce88a5b89dbf702aa0929d4cefaed3db73351bd3ade3ccabecc09a23a872d9c55be50d + checksum: 10c0/64a27bfa959a33fd2a992837022026cf221f1a04812d4cd6f8abf3ff15781923ff1223f76a9a97dfffe157600813b16e90a6e1f1c60e45ba465e1f4e48603c47 languageName: node linkType: hard -"@vitest/pretty-format@npm:2.1.1, @vitest/pretty-format@npm:^2.1.1": - version: 2.1.1 - resolution: "@vitest/pretty-format@npm:2.1.1" +"@vitest/pretty-format@npm:3.0.5, @vitest/pretty-format@npm:^3.0.5": + version: 3.0.5 + resolution: "@vitest/pretty-format@npm:3.0.5" dependencies: - tinyrainbow: "npm:^1.2.0" - checksum: 10c0/21057465a794a037a7af2c48397531eadf9b2d8a7b4d1ee5af9081cf64216cd0039b9e06317319df79aa2240fed1dbb6767b530deae2bd4b42d6fb974297e97d + tinyrainbow: "npm:^2.0.0" + checksum: 10c0/94dbe3dfffd53f880e2c1fc35da3c998b768e88a37d4248a1e531ec465d4a19ec917dd56c5ccf4f24bb1984b1376ffc55fe710c2b07ef94f9ebf61ca028a2177 languageName: node linkType: hard -"@vitest/runner@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/runner@npm:2.1.1" +"@vitest/runner@npm:3.0.5": + version: 3.0.5 + resolution: "@vitest/runner@npm:3.0.5" dependencies: - "@vitest/utils": "npm:2.1.1" - pathe: "npm:^1.1.2" - checksum: 10c0/a6d1424d6224d8a60ed0bbf7cdacb165ef36bc71cc957ad2c11ed1989fa5106636173369f0d8e1fa3f319a965091e52c8ce21203fce4bafe772632ccc2bd65a6 + "@vitest/utils": "npm:3.0.5" + pathe: "npm:^2.0.2" + checksum: 10c0/fa8705bc82e1b22ea55d505863f60eeefabf560c3aff4fb0180f1e3e34c4dc822fbe4e9eb1f18ef8409095950ea8fd46fa3fda4a43ec1d1a804457cc551a30fe languageName: node linkType: hard -"@vitest/snapshot@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/snapshot@npm:2.1.1" +"@vitest/snapshot@npm:3.0.5": + version: 3.0.5 + resolution: "@vitest/snapshot@npm:3.0.5" dependencies: - "@vitest/pretty-format": "npm:2.1.1" - magic-string: "npm:^0.30.11" - pathe: "npm:^1.1.2" - checksum: 10c0/e9dadee87a2f489883dec0360b55b2776d2a07e460bf2430b34867cd4e9f34b09b3e219a23bc8c3e1359faefdd166072d3305b66a0bea475c7d616470b7d841c + "@vitest/pretty-format": "npm:3.0.5" + magic-string: "npm:^0.30.17" + pathe: "npm:^2.0.2" + checksum: 10c0/8b517299107218619429ac7b3b13e223822f60cdf207eb5f5be4eabdd29934e25f4624f8376b50b3535281227761d68a5ae15d90ef24d9edc19eaf5b9d52c76c languageName: node linkType: hard -"@vitest/spy@npm:2.1.1, @vitest/spy@npm:^2.1.0-beta.1": - version: 2.1.1 - resolution: "@vitest/spy@npm:2.1.1" +"@vitest/spy@npm:3.0.5": + version: 3.0.5 + resolution: "@vitest/spy@npm:3.0.5" dependencies: - tinyspy: "npm:^3.0.0" - checksum: 10c0/b251be1390c105b68aa95270159c4583c3e1a0f7a2e1f82db8b7fadedc3cb459c5ef9286033a1ae764810e00715552fc80afe4507cd8b0065934fb1a64926e06 + tinyspy: "npm:^3.0.2" + checksum: 10c0/f85c628cbf0de66f87faa86a69c658b2b67dcc0cfb21989312f465f16e86dfa4f8f2166339bbcc82226e31dd35dc0a336f64e5b8170f8ff8a9127f9822c82247 languageName: node linkType: hard -"@vitest/utils@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/utils@npm:2.1.1" +"@vitest/utils@npm:3.0.5": + version: 3.0.5 + resolution: "@vitest/utils@npm:3.0.5" dependencies: - "@vitest/pretty-format": "npm:2.1.1" - loupe: "npm:^3.1.1" - tinyrainbow: "npm:^1.2.0" - checksum: 10c0/b724c7f23591860bd24cd8e6d0cd803405f4fbff746db160a948290742144463287566a05ca400deb56817603b5185c4429707947869c3d453805860b5e3a3e5 + "@vitest/pretty-format": "npm:3.0.5" + loupe: "npm:^3.1.2" + tinyrainbow: "npm:^2.0.0" + checksum: 10c0/3c18657e6f9c58b75139b19789d7e628688efa7422a16e52670ffd5cb84ce7ced856508ddc01d2e978c64f1ee316c09fbb8d12c29557d0db0f65b9888664918b languageName: node linkType: hard @@ -995,29 +1039,17 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 - languageName: node - linkType: hard - -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": - version: 7.1.0 - resolution: "agent-base@npm:7.1.0" - dependencies: - debug: "npm:^4.3.4" - checksum: 10c0/fc974ab57ffdd8421a2bc339644d312a9cca320c20c3393c9d8b1fd91731b9bbabdb985df5fc860f5b79d81c3e350daa3fcb31c5c07c0bb385aafc817df004ce +"abbrev@npm:^3.0.0": + version: 3.0.0 + resolution: "abbrev@npm:3.0.0" + checksum: 10c0/049704186396f571650eb7b22ed3627b77a5aedf98bb83caf2eac81ca2a3e25e795394b0464cfb2d6076df3db6a5312139eac5b6a126ca296ac53c5008069c28 languageName: node linkType: hard -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: "npm:^2.0.0" - indent-string: "npm:^4.0.0" - checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.3 + resolution: "agent-base@npm:7.1.3" + checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 languageName: node linkType: hard @@ -1137,11 +1169,11 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^18.0.0": - version: 18.0.2 - resolution: "cacache@npm:18.0.2" +"cacache@npm:^19.0.1": + version: 19.0.1 + resolution: "cacache@npm:19.0.1" dependencies: - "@npmcli/fs": "npm:^3.1.0" + "@npmcli/fs": "npm:^4.0.0" fs-minipass: "npm:^3.0.0" glob: "npm:^10.2.2" lru-cache: "npm:^10.0.1" @@ -1149,11 +1181,11 @@ __metadata: minipass-collect: "npm:^2.0.1" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^4.0.0" - ssri: "npm:^10.0.0" - tar: "npm:^6.1.11" - unique-filename: "npm:^3.0.0" - checksum: 10c0/7992665305cc251a984f4fdbab1449d50e88c635bc43bf2785530c61d239c61b349e5734461baa461caaee65f040ab14e2d58e694f479c0810cffd181ba5eabc + p-map: "npm:^7.0.2" + ssri: "npm:^12.0.0" + tar: "npm:^7.4.3" + unique-filename: "npm:^4.0.0" + checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c languageName: node linkType: hard @@ -1164,16 +1196,16 @@ __metadata: languageName: node linkType: hard -"chai@npm:^5.1.1": - version: 5.1.1 - resolution: "chai@npm:5.1.1" +"chai@npm:^5.1.2": + version: 5.1.2 + resolution: "chai@npm:5.1.2" dependencies: assertion-error: "npm:^2.0.1" check-error: "npm:^2.1.1" deep-eql: "npm:^5.0.1" loupe: "npm:^3.1.0" pathval: "npm:^2.0.0" - checksum: 10c0/e7f00e5881e3d5224f08fe63966ed6566bd9fdde175863c7c16dd5240416de9b34c4a0dd925f4fd64ad56256ca6507d32cf6131c49e1db65c62578eb31d4566c + checksum: 10c0/6c04ff8495b6e535df9c1b062b6b094828454e9a3c9493393e55b2f4dbff7aa2a29a4645133cad160fb00a16196c4dc03dc9bb37e1f4ba9df3b5f50d7533a736 languageName: node linkType: hard @@ -1204,17 +1236,10 @@ __metadata: languageName: node linkType: hard -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 languageName: node linkType: hard @@ -1321,7 +1346,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.4, debug@npm:^4.3.6": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.4, debug@npm:^4.4.0": version: 4.4.0 resolution: "debug@npm:4.4.0" dependencies: @@ -1421,33 +1446,42 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.21.3": - version: 0.21.5 - resolution: "esbuild@npm:0.21.5" - dependencies: - "@esbuild/aix-ppc64": "npm:0.21.5" - "@esbuild/android-arm": "npm:0.21.5" - "@esbuild/android-arm64": "npm:0.21.5" - "@esbuild/android-x64": "npm:0.21.5" - "@esbuild/darwin-arm64": "npm:0.21.5" - "@esbuild/darwin-x64": "npm:0.21.5" - "@esbuild/freebsd-arm64": "npm:0.21.5" - "@esbuild/freebsd-x64": "npm:0.21.5" - "@esbuild/linux-arm": "npm:0.21.5" - "@esbuild/linux-arm64": "npm:0.21.5" - "@esbuild/linux-ia32": "npm:0.21.5" - "@esbuild/linux-loong64": "npm:0.21.5" - "@esbuild/linux-mips64el": "npm:0.21.5" - "@esbuild/linux-ppc64": "npm:0.21.5" - "@esbuild/linux-riscv64": "npm:0.21.5" - "@esbuild/linux-s390x": "npm:0.21.5" - "@esbuild/linux-x64": "npm:0.21.5" - "@esbuild/netbsd-x64": "npm:0.21.5" - "@esbuild/openbsd-x64": "npm:0.21.5" - "@esbuild/sunos-x64": "npm:0.21.5" - "@esbuild/win32-arm64": "npm:0.21.5" - "@esbuild/win32-ia32": "npm:0.21.5" - "@esbuild/win32-x64": "npm:0.21.5" +"es-module-lexer@npm:^1.6.0": + version: 1.6.0 + resolution: "es-module-lexer@npm:1.6.0" + checksum: 10c0/667309454411c0b95c476025929881e71400d74a746ffa1ff4cb450bd87f8e33e8eef7854d68e401895039ac0bac64e7809acbebb6253e055dd49ea9e3ea9212 + languageName: node + linkType: hard + +"esbuild@npm:^0.24.2": + version: 0.24.2 + resolution: "esbuild@npm:0.24.2" + dependencies: + "@esbuild/aix-ppc64": "npm:0.24.2" + "@esbuild/android-arm": "npm:0.24.2" + "@esbuild/android-arm64": "npm:0.24.2" + "@esbuild/android-x64": "npm:0.24.2" + "@esbuild/darwin-arm64": "npm:0.24.2" + "@esbuild/darwin-x64": "npm:0.24.2" + "@esbuild/freebsd-arm64": "npm:0.24.2" + "@esbuild/freebsd-x64": "npm:0.24.2" + "@esbuild/linux-arm": "npm:0.24.2" + "@esbuild/linux-arm64": "npm:0.24.2" + "@esbuild/linux-ia32": "npm:0.24.2" + "@esbuild/linux-loong64": "npm:0.24.2" + "@esbuild/linux-mips64el": "npm:0.24.2" + "@esbuild/linux-ppc64": "npm:0.24.2" + "@esbuild/linux-riscv64": "npm:0.24.2" + "@esbuild/linux-s390x": "npm:0.24.2" + "@esbuild/linux-x64": "npm:0.24.2" + "@esbuild/netbsd-arm64": "npm:0.24.2" + "@esbuild/netbsd-x64": "npm:0.24.2" + "@esbuild/openbsd-arm64": "npm:0.24.2" + "@esbuild/openbsd-x64": "npm:0.24.2" + "@esbuild/sunos-x64": "npm:0.24.2" + "@esbuild/win32-arm64": "npm:0.24.2" + "@esbuild/win32-ia32": "npm:0.24.2" + "@esbuild/win32-x64": "npm:0.24.2" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -1483,8 +1517,12 @@ __metadata: optional: true "@esbuild/linux-x64": optional: true + "@esbuild/netbsd-arm64": + optional: true "@esbuild/netbsd-x64": optional: true + "@esbuild/openbsd-arm64": + optional: true "@esbuild/openbsd-x64": optional: true "@esbuild/sunos-x64": @@ -1497,7 +1535,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10c0/fa08508adf683c3f399e8a014a6382a6b65542213431e26206c0720e536b31c09b50798747c2a105a4bbba1d9767b8d3615a74c2f7bf1ddf6d836cd11eb672de + checksum: 10c0/5a25bb08b6ba23db6e66851828d848bd3ff87c005a48c02d83e38879058929878a6baa5a414e1141faee0d1dece3f32b5fbc2a87b82ed6a7aa857cf40359aeb5 languageName: node linkType: hard @@ -1524,6 +1562,13 @@ __metadata: languageName: node linkType: hard +"expect-type@npm:^1.1.0": + version: 1.1.0 + resolution: "expect-type@npm:1.1.0" + checksum: 10c0/5af0febbe8fe18da05a6d51e3677adafd75213512285408156b368ca471252565d5ca6e59e4bddab25121f3cfcbbebc6a5489f8cc9db131cc29e69dcdcc7ae15 + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -1572,15 +1617,6 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 - languageName: node - linkType: hard - "fs-minipass@npm:^3.0.0": version: 3.0.3 resolution: "fs-minipass@npm:3.0.3" @@ -1616,13 +1652,6 @@ __metadata: languageName: node linkType: hard -"get-func-name@npm:^2.0.1": - version: 2.0.2 - resolution: "get-func-name@npm:2.0.2" - checksum: 10c0/89830fd07623fa73429a711b9daecdb304386d237c71268007f788f113505ef1d4cc2d0b9680e072c5082490aec9df5d7758bf5ac6f1c37062855e8e3dc0b9df - languageName: node - linkType: hard - "get-user-locale@npm:^2.2.1": version: 2.2.1 resolution: "get-user-locale@npm:2.2.1" @@ -1642,7 +1671,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10": +"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": version: 10.3.10 resolution: "glob@npm:10.3.10" dependencies: @@ -1824,13 +1853,6 @@ __metadata: languageName: node linkType: hard -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d - languageName: node - linkType: hard - "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -1942,12 +1964,10 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^3.1.0, loupe@npm:^3.1.1": - version: 3.1.1 - resolution: "loupe@npm:3.1.1" - dependencies: - get-func-name: "npm:^2.0.1" - checksum: 10c0/99f88badc47e894016df0c403de846fedfea61154aadabbf776c8428dd59e8d8378007135d385d737de32ae47980af07d22ba7bec5ef7beebd721de9baa0a0af +"loupe@npm:^3.1.0, loupe@npm:^3.1.2": + version: 3.1.2 + resolution: "loupe@npm:3.1.2" + checksum: 10c0/b13c02e3ddd6a9d5f8bf84133b3242de556512d824dddeea71cce2dbd6579c8f4d672381c4e742d45cf4423d0701765b4a6e5fbc24701def16bc2b40f8daa96a languageName: node linkType: hard @@ -1983,31 +2003,31 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.11": - version: 0.30.11 - resolution: "magic-string@npm:0.30.11" +"magic-string@npm:^0.30.17": + version: 0.30.17 + resolution: "magic-string@npm:0.30.17" dependencies: "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10c0/b9eb370773d0bd90ca11a848753409d8e5309b1ad56d2a1aa49d6649da710a6d2fe7237ad1a643c5a5d3800de2b9946ed9690acdfc00e6cc1aeafff3ab1752c4 + checksum: 10c0/16826e415d04b88378f200fe022b53e638e3838b9e496edda6c0e086d7753a44a6ed187adc72d19f3623810589bf139af1a315541cd6a26ae0771a0193eaf7b8 languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0": - version: 13.0.0 - resolution: "make-fetch-happen@npm:13.0.0" +"make-fetch-happen@npm:^14.0.3": + version: 14.0.3 + resolution: "make-fetch-happen@npm:14.0.3" dependencies: - "@npmcli/agent": "npm:^2.0.0" - cacache: "npm:^18.0.0" + "@npmcli/agent": "npm:^3.0.0" + cacache: "npm:^19.0.1" http-cache-semantics: "npm:^4.1.1" - is-lambda: "npm:^1.0.1" minipass: "npm:^7.0.2" - minipass-fetch: "npm:^3.0.0" + minipass-fetch: "npm:^4.0.0" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.3" + negotiator: "npm:^1.0.0" + proc-log: "npm:^5.0.0" promise-retry: "npm:^2.0.1" - ssri: "npm:^10.0.0" - checksum: 10c0/43b9f6dcbc6fe8b8604cb6396957c3698857a15ba4dbc38284f7f0e61f248300585ef1eb8cc62df54e9c724af977e45b5cdfd88320ef7f53e45070ed3488da55 + ssri: "npm:^12.0.0" + checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0 languageName: node linkType: hard @@ -2069,18 +2089,18 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^3.0.0": - version: 3.0.4 - resolution: "minipass-fetch@npm:3.0.4" +"minipass-fetch@npm:^4.0.0": + version: 4.0.0 + resolution: "minipass-fetch@npm:4.0.0" dependencies: encoding: "npm:^0.1.13" minipass: "npm:^7.0.3" minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.1.2" + minizlib: "npm:^3.0.1" dependenciesMeta: encoding: optional: true - checksum: 10c0/1b63c1f3313e88eeac4689f1b71c9f086598db9a189400e3ee960c32ed89e06737fa23976c9305c2d57464fb3fcdc12749d3378805c9d6176f5569b0d0ee8a75 + checksum: 10c0/7fa30ce7c373fb6f94c086b374fff1589fd7e78451855d2d06c2e2d9df936d131e73e952163063016592ed3081444bd8d1ea608533313b0149156ce23311da4b languageName: node linkType: hard @@ -2120,36 +2140,29 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 - languageName: node - linkType: hard - -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": version: 7.1.2 resolution: "minipass@npm:7.1.2" checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 languageName: node linkType: hard -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" +"minizlib@npm:^3.0.1": + version: 3.0.1 + resolution: "minizlib@npm:3.0.1" dependencies: - minipass: "npm:^3.0.0" - yallist: "npm:^4.0.0" - checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + minipass: "npm:^7.0.4" + rimraf: "npm:^5.0.5" + checksum: 10c0/82f8bf70da8af656909a8ee299d7ed3b3372636749d29e105f97f20e88971be31f5ed7642f2e898f00283b68b701cc01307401cdc209b0efc5dd3818220e5093 languageName: node linkType: hard -"mkdirp@npm:^1.0.3": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" +"mkdirp@npm:^3.0.1": + version: 3.0.1 + resolution: "mkdirp@npm:3.0.1" bin: - mkdirp: bin/cmd.js - checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + mkdirp: dist/cjs/src/bin.js + checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d languageName: node linkType: hard @@ -2169,10 +2182,10 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b languageName: node linkType: hard @@ -2184,22 +2197,22 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 10.0.1 - resolution: "node-gyp@npm:10.0.1" + version: 11.0.0 + resolution: "node-gyp@npm:11.0.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" glob: "npm:^10.3.10" graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^13.0.0" - nopt: "npm:^7.0.0" - proc-log: "npm:^3.0.0" + make-fetch-happen: "npm:^14.0.3" + nopt: "npm:^8.0.0" + proc-log: "npm:^5.0.0" semver: "npm:^7.3.5" - tar: "npm:^6.1.2" - which: "npm:^4.0.0" + tar: "npm:^7.4.3" + which: "npm:^5.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/abddfff7d873312e4ed4a5fb75ce893a5c4fb69e7fcb1dfa71c28a6b92a7f1ef6b62790dffb39181b5a82728ba8f2f32d229cf8cbe66769fe02cea7db4a555aa + checksum: 10c0/a3b885bbee2d271f1def32ba2e30ffcf4562a3db33af06b8b365e053153e2dd2051b9945783c3c8e852d26a0f20f65b251c7e83361623383a99635c0280ee573 languageName: node linkType: hard @@ -2210,14 +2223,14 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^7.0.0": - version: 7.2.0 - resolution: "nopt@npm:7.2.0" +"nopt@npm:^8.0.0": + version: 8.1.0 + resolution: "nopt@npm:8.1.0" dependencies: - abbrev: "npm:^2.0.0" + abbrev: "npm:^3.0.0" bin: nopt: bin/nopt.js - checksum: 10c0/9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff + checksum: 10c0/62e9ea70c7a3eb91d162d2c706b6606c041e4e7b547cbbb48f8b3695af457dd6479904d7ace600856bf923dd8d1ed0696f06195c8c20f02ac87c1da0e1d315ef languageName: node linkType: hard @@ -2239,15 +2252,6 @@ __metadata: languageName: node linkType: hard -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: "npm:^3.0.0" - checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 - languageName: node - linkType: hard - "p-map@npm:^5.1.0": version: 5.5.0 resolution: "p-map@npm:5.5.0" @@ -2264,6 +2268,13 @@ __metadata: languageName: node linkType: hard +"p-map@npm:^7.0.2": + version: 7.0.3 + resolution: "p-map@npm:7.0.3" + checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c + languageName: node + linkType: hard + "p-timeout@npm:^5.0.2": version: 5.1.0 resolution: "p-timeout@npm:5.1.0" @@ -2312,10 +2323,10 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^1.1.2": - version: 1.1.2 - resolution: "pathe@npm:1.1.2" - checksum: 10c0/64ee0a4e587fb0f208d9777a6c56e4f9050039268faaaaecd50e959ef01bf847b7872785c36483fa5cdcdbdfdb31fef2ff222684d4fc21c330ab60395c681897 +"pathe@npm:^2.0.2": + version: 2.0.2 + resolution: "pathe@npm:2.0.2" + checksum: 10c0/21fce96ca9cebf037b075de8e5cc4ac6aa1009bce57946a72695f47ded84cf4b29f03bed721ea0f6e39b69eb1a0620bcee1f72eca46086765214a2965399b83a languageName: node linkType: hard @@ -2326,10 +2337,10 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": - version: 1.1.0 - resolution: "picocolors@npm:1.1.0" - checksum: 10c0/86946f6032148801ef09c051c6fb13b5cf942eaf147e30ea79edb91dd32d700934edebe782a1078ff859fb2b816792e97ef4dab03d7f0b804f6b01a0df35e023 +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 languageName: node linkType: hard @@ -2340,14 +2351,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.43": - version: 8.4.47 - resolution: "postcss@npm:8.4.47" +"postcss@npm:^8.4.49": + version: 8.4.49 + resolution: "postcss@npm:8.4.49" dependencies: nanoid: "npm:^3.3.7" - picocolors: "npm:^1.1.0" + picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10c0/929f68b5081b7202709456532cee2a145c1843d391508c5a09de2517e8c4791638f71dd63b1898dba6712f8839d7a6da046c72a5e44c162e908f5911f57b5f44 + checksum: 10c0/f1b3f17aaf36d136f59ec373459f18129908235e65dbdc3aee5eef8eba0756106f52de5ec4682e29a2eab53eb25170e7e871b3e4b52a8f1de3d344a514306be3 languageName: node linkType: hard @@ -2362,10 +2373,10 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^3.0.0": - version: 3.0.0 - resolution: "proc-log@npm:3.0.0" - checksum: 10c0/f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc +"proc-log@npm:^5.0.0": + version: 5.0.0 + resolution: "proc-log@npm:5.0.0" + checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3 languageName: node linkType: hard @@ -2415,7 +2426,7 @@ __metadata: react-dom: "npm:^18.2.0" rimraf: "npm:^6.0.0" typescript: "npm:^5.5.2" - vitest: "npm:^2.1.1" + vitest: "npm:^3.0.5" warning: "npm:^4.0.0" peerDependencies: "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -2446,10 +2457,10 @@ __metadata: languageName: node linkType: hard -"react-refresh@npm:^0.14.0": - version: 0.14.0 - resolution: "react-refresh@npm:0.14.0" - checksum: 10c0/b8ae07ad153357d77830928a7f1fc2df837aabefee907fa273ba04c7643f3b860e986f1d4b7ada9b721c8d79b8c24b5b911a314a1a2398b105f1b13d19ea2b8d +"react-refresh@npm:^0.14.2": + version: 0.14.2 + resolution: "react-refresh@npm:0.14.2" + checksum: 10c0/875b72ef56b147a131e33f2abd6ec059d1989854b3ff438898e4f9310bfcc73acff709445b7ba843318a953cb9424bcc2c05af2b3d80011cee28f25aef3e2ebb languageName: node linkType: hard @@ -2493,6 +2504,17 @@ __metadata: languageName: node linkType: hard +"rimraf@npm:^5.0.5": + version: 5.0.5 + resolution: "rimraf@npm:5.0.5" + dependencies: + glob: "npm:^10.3.7" + bin: + rimraf: dist/esm/bin.mjs + checksum: 10c0/d50dbe724f33835decd88395b25ed35995077c60a50ae78ded06e0185418914e555817aad1b4243edbff2254548c2f6ad6f70cc850040bebb4da9e8cc016f586 + languageName: node + linkType: hard + "rimraf@npm:^6.0.0": version: 6.0.1 resolution: "rimraf@npm:6.0.1" @@ -2505,27 +2527,30 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.20.0": - version: 4.22.4 - resolution: "rollup@npm:4.22.4" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.22.4" - "@rollup/rollup-android-arm64": "npm:4.22.4" - "@rollup/rollup-darwin-arm64": "npm:4.22.4" - "@rollup/rollup-darwin-x64": "npm:4.22.4" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.22.4" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.22.4" - "@rollup/rollup-linux-arm64-gnu": "npm:4.22.4" - "@rollup/rollup-linux-arm64-musl": "npm:4.22.4" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.22.4" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.22.4" - "@rollup/rollup-linux-s390x-gnu": "npm:4.22.4" - "@rollup/rollup-linux-x64-gnu": "npm:4.22.4" - "@rollup/rollup-linux-x64-musl": "npm:4.22.4" - "@rollup/rollup-win32-arm64-msvc": "npm:4.22.4" - "@rollup/rollup-win32-ia32-msvc": "npm:4.22.4" - "@rollup/rollup-win32-x64-msvc": "npm:4.22.4" - "@types/estree": "npm:1.0.5" +"rollup@npm:^4.23.0": + version: 4.28.1 + resolution: "rollup@npm:4.28.1" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.28.1" + "@rollup/rollup-android-arm64": "npm:4.28.1" + "@rollup/rollup-darwin-arm64": "npm:4.28.1" + "@rollup/rollup-darwin-x64": "npm:4.28.1" + "@rollup/rollup-freebsd-arm64": "npm:4.28.1" + "@rollup/rollup-freebsd-x64": "npm:4.28.1" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.28.1" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.28.1" + "@rollup/rollup-linux-arm64-gnu": "npm:4.28.1" + "@rollup/rollup-linux-arm64-musl": "npm:4.28.1" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.28.1" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.28.1" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.28.1" + "@rollup/rollup-linux-s390x-gnu": "npm:4.28.1" + "@rollup/rollup-linux-x64-gnu": "npm:4.28.1" + "@rollup/rollup-linux-x64-musl": "npm:4.28.1" + "@rollup/rollup-win32-arm64-msvc": "npm:4.28.1" + "@rollup/rollup-win32-ia32-msvc": "npm:4.28.1" + "@rollup/rollup-win32-x64-msvc": "npm:4.28.1" + "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" dependenciesMeta: "@rollup/rollup-android-arm-eabi": @@ -2536,6 +2561,10 @@ __metadata: optional: true "@rollup/rollup-darwin-x64": optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true "@rollup/rollup-linux-arm-gnueabihf": optional: true "@rollup/rollup-linux-arm-musleabihf": @@ -2544,6 +2573,8 @@ __metadata: optional: true "@rollup/rollup-linux-arm64-musl": optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true "@rollup/rollup-linux-powerpc64le-gnu": optional: true "@rollup/rollup-linux-riscv64-gnu": @@ -2564,7 +2595,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/4c96b6e2e0c5dbe73b4ba899cea894a05115ab8c65ccff631fbbb944e2b3a9f2eb3b99c2dce3dd91b179647df1892ffc44ecee29381ccf155ba8000b22712a32 + checksum: 10c0/2d2d0433b7cb53153a04c7b406f342f31517608dc57510e49177941b9e68c30071674b83a0292ef1d87184e5f7c6d0f2945c8b3c74963074de10c75366fe2c14 languageName: node linkType: hard @@ -2655,18 +2686,18 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^8.0.1": - version: 8.0.2 - resolution: "socks-proxy-agent@npm:8.0.2" +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" dependencies: - agent-base: "npm:^7.0.2" + agent-base: "npm:^7.1.2" debug: "npm:^4.3.4" - socks: "npm:^2.7.1" - checksum: 10c0/a842402fc9b8848a31367f2811ca3cd14c4106588b39a0901cd7a69029998adfc6456b0203617c18ed090542ad0c24ee4e9d4c75a0c4b75071e214227c177eb7 + socks: "npm:^2.8.3" + checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 languageName: node linkType: hard -"socks@npm:^2.7.1": +"socks@npm:^2.8.3": version: 2.8.3 resolution: "socks@npm:2.8.3" dependencies: @@ -2690,12 +2721,12 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^10.0.0": - version: 10.0.5 - resolution: "ssri@npm:10.0.5" +"ssri@npm:^12.0.0": + version: 12.0.0 + resolution: "ssri@npm:12.0.0" dependencies: minipass: "npm:^7.0.3" - checksum: 10c0/b091f2ae92474183c7ac5ed3f9811457e1df23df7a7e70c9476eaa9a0c4a0c8fc190fb45acefbf023ca9ee864dd6754237a697dc52a0fb182afe65d8e77443d8 + checksum: 10c0/caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d languageName: node linkType: hard @@ -2706,10 +2737,10 @@ __metadata: languageName: node linkType: hard -"std-env@npm:^3.7.0": - version: 3.7.0 - resolution: "std-env@npm:3.7.0" - checksum: 10c0/60edf2d130a4feb7002974af3d5a5f3343558d1ccf8d9b9934d225c638606884db4a20d2fe6440a09605bca282af6b042ae8070a10490c0800d69e82e478f41e +"std-env@npm:^3.8.0": + version: 3.8.0 + resolution: "std-env@npm:3.8.0" + checksum: 10c0/f560a2902fd0fa3d648d7d0acecbd19d664006f7372c1fba197ed4c216b4c9e48db6e2769b5fe1616d42a9333c9f066c5011935035e85c59f45dc4f796272040 languageName: node linkType: hard @@ -2771,17 +2802,17 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.2.1 - resolution: "tar@npm:6.2.1" +"tar@npm:^7.4.3": + version: 7.4.3 + resolution: "tar@npm:7.4.3" dependencies: - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - minipass: "npm:^5.0.0" - minizlib: "npm:^2.1.1" - mkdirp: "npm:^1.0.3" - yallist: "npm:^4.0.0" - checksum: 10c0/a5eca3eb50bc11552d453488344e6507156b9193efd7635e98e867fab275d527af53d8866e2370cd09dfe74378a18111622ace35af6a608e5223a7d27fe99537 + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.0.1" + mkdirp: "npm:^3.0.1" + yallist: "npm:^5.0.0" + checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d languageName: node linkType: hard @@ -2791,14 +2822,14 @@ __metadata: dependencies: "@biomejs/biome": "npm:1.9.0" "@types/react": "npm:*" - "@vitejs/plugin-react": "npm:^4.2.0" + "@vitejs/plugin-react": "npm:^4.3.4" "@wojtekmaj/date-utils": "npm:^1.1.3" get-user-locale: "npm:^2.2.1" react: "npm:^18.2.0" react-calendar: "workspace:packages/react-calendar" react-dom: "npm:^18.2.0" typescript: "npm:^5.5.2" - vite: "npm:^5.0.0" + vite: "npm:^6.0.0" languageName: unknown linkType: soft @@ -2809,31 +2840,31 @@ __metadata: languageName: node linkType: hard -"tinyexec@npm:^0.3.0": - version: 0.3.0 - resolution: "tinyexec@npm:0.3.0" - checksum: 10c0/138a4f4241aea6b6312559508468ab275a31955e66e2f57ed206e0aaabecee622624f208c5740345f0a66e33478fd065e359ed1eb1269eb6fd4fa25d44d0ba3b +"tinyexec@npm:^0.3.2": + version: 0.3.2 + resolution: "tinyexec@npm:0.3.2" + checksum: 10c0/3efbf791a911be0bf0821eab37a3445c2ba07acc1522b1fa84ae1e55f10425076f1290f680286345ed919549ad67527d07281f1c19d584df3b74326909eb1f90 languageName: node linkType: hard -"tinypool@npm:^1.0.0": - version: 1.0.0 - resolution: "tinypool@npm:1.0.0" - checksum: 10c0/71b20b9c54366393831c286a0772380c20f8cad9546d724c484edb47aea3228f274c58e98cf51d28c40869b39f5273209ef3ea94a9d2a23f8b292f4731cd3e4e +"tinypool@npm:^1.0.2": + version: 1.0.2 + resolution: "tinypool@npm:1.0.2" + checksum: 10c0/31ac184c0ff1cf9a074741254fe9ea6de95026749eb2b8ec6fd2b9d8ca94abdccda731f8e102e7f32e72ed3b36d32c6975fd5f5523df3f1b6de6c3d8dfd95e63 languageName: node linkType: hard -"tinyrainbow@npm:^1.2.0": - version: 1.2.0 - resolution: "tinyrainbow@npm:1.2.0" - checksum: 10c0/7f78a4b997e5ba0f5ecb75e7ed786f30bab9063716e7dff24dd84013fb338802e43d176cb21ed12480561f5649a82184cf31efb296601a29d38145b1cdb4c192 +"tinyrainbow@npm:^2.0.0": + version: 2.0.0 + resolution: "tinyrainbow@npm:2.0.0" + checksum: 10c0/c83c52bef4e0ae7fb8ec6a722f70b5b6fa8d8be1c85792e829f56c0e1be94ab70b293c032dc5048d4d37cfe678f1f5babb04bdc65fd123098800148ca989184f languageName: node linkType: hard -"tinyspy@npm:^3.0.0": - version: 3.0.0 - resolution: "tinyspy@npm:3.0.0" - checksum: 10c0/eb0dec264aa5370efd3d29743825eb115ed7f1ef8a72a431e9a75d5c9e7d67e99d04b0d61d86b8cd70c79ec27863f241ad0317bc453f78762e0cbd76d2c332d0 +"tinyspy@npm:^3.0.2": + version: 3.0.2 + resolution: "tinyspy@npm:3.0.2" + checksum: 10c0/55ffad24e346622b59292e097c2ee30a63919d5acb7ceca87fc0d1c223090089890587b426e20054733f97a58f20af2c349fb7cc193697203868ab7ba00bcea0 languageName: node linkType: hard @@ -2873,21 +2904,21 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-filename@npm:3.0.0" +"unique-filename@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-filename@npm:4.0.0" dependencies: - unique-slug: "npm:^4.0.0" - checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + unique-slug: "npm:^5.0.0" + checksum: 10c0/38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc languageName: node linkType: hard -"unique-slug@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-slug@npm:4.0.0" +"unique-slug@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-slug@npm:5.0.0" dependencies: imurmurhash: "npm:^0.1.4" - checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 languageName: node linkType: hard @@ -2905,43 +2936,49 @@ __metadata: languageName: node linkType: hard -"vite-node@npm:2.1.1": - version: 2.1.1 - resolution: "vite-node@npm:2.1.1" +"vite-node@npm:3.0.5": + version: 3.0.5 + resolution: "vite-node@npm:3.0.5" dependencies: cac: "npm:^6.7.14" - debug: "npm:^4.3.6" - pathe: "npm:^1.1.2" - vite: "npm:^5.0.0" + debug: "npm:^4.4.0" + es-module-lexer: "npm:^1.6.0" + pathe: "npm:^2.0.2" + vite: "npm:^5.0.0 || ^6.0.0" bin: vite-node: vite-node.mjs - checksum: 10c0/8a8b958df3d48af915e07e7efb042ee4c036ca0b73d2c411dc29254fd3533ada0807ce5096d8339894d3e786418b7d1a9c4ae02718c6aca11b5098de2b14c336 + checksum: 10c0/8ea2d482d5e257d2052a92e52b7ffdbc379d9e8310a9349ef5e9a62e4a522069d5c0bef071e4a121fb1ab404b0896d588d594d50af3f2be6432782751f4ccb0a languageName: node linkType: hard -"vite@npm:^5.0.0": - version: 5.4.6 - resolution: "vite@npm:5.4.6" +"vite@npm:^5.0.0 || ^6.0.0, vite@npm:^6.0.0": + version: 6.0.11 + resolution: "vite@npm:6.0.11" dependencies: - esbuild: "npm:^0.21.3" + esbuild: "npm:^0.24.2" fsevents: "npm:~2.3.3" - postcss: "npm:^8.4.43" - rollup: "npm:^4.20.0" + postcss: "npm:^8.4.49" + rollup: "npm:^4.23.0" peerDependencies: - "@types/node": ^18.0.0 || >=20.0.0 + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: ">=1.21.0" less: "*" lightningcss: ^1.21.0 sass: "*" sass-embedded: "*" stylus: "*" sugarss: "*" - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 dependenciesMeta: fsevents: optional: true peerDependenciesMeta: "@types/node": optional: true + jiti: + optional: true less: optional: true lightningcss: @@ -2956,45 +2993,53 @@ __metadata: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true bin: vite: bin/vite.js - checksum: 10c0/5f87be3a10e970eaf9ac52dfab39cf9fff583036685252fb64570b6d7bfa749f6d221fb78058f5ef4b5664c180d45a8e7a7ff68d7f3770e69e24c7c68b958bde - languageName: node - linkType: hard - -"vitest@npm:^2.1.1": - version: 2.1.1 - resolution: "vitest@npm:2.1.1" - dependencies: - "@vitest/expect": "npm:2.1.1" - "@vitest/mocker": "npm:2.1.1" - "@vitest/pretty-format": "npm:^2.1.1" - "@vitest/runner": "npm:2.1.1" - "@vitest/snapshot": "npm:2.1.1" - "@vitest/spy": "npm:2.1.1" - "@vitest/utils": "npm:2.1.1" - chai: "npm:^5.1.1" - debug: "npm:^4.3.6" - magic-string: "npm:^0.30.11" - pathe: "npm:^1.1.2" - std-env: "npm:^3.7.0" + checksum: 10c0/a0537f9bf8d6ded740646a4aa44b8dbf442d3005e75f7b27e981ef6011f22d4759f5eb643a393c0ffb8d21e2f50fb5f774d3a53108fb96a10b0f83697e8efe84 + languageName: node + linkType: hard + +"vitest@npm:^3.0.5": + version: 3.0.5 + resolution: "vitest@npm:3.0.5" + dependencies: + "@vitest/expect": "npm:3.0.5" + "@vitest/mocker": "npm:3.0.5" + "@vitest/pretty-format": "npm:^3.0.5" + "@vitest/runner": "npm:3.0.5" + "@vitest/snapshot": "npm:3.0.5" + "@vitest/spy": "npm:3.0.5" + "@vitest/utils": "npm:3.0.5" + chai: "npm:^5.1.2" + debug: "npm:^4.4.0" + expect-type: "npm:^1.1.0" + magic-string: "npm:^0.30.17" + pathe: "npm:^2.0.2" + std-env: "npm:^3.8.0" tinybench: "npm:^2.9.0" - tinyexec: "npm:^0.3.0" - tinypool: "npm:^1.0.0" - tinyrainbow: "npm:^1.2.0" - vite: "npm:^5.0.0" - vite-node: "npm:2.1.1" + tinyexec: "npm:^0.3.2" + tinypool: "npm:^1.0.2" + tinyrainbow: "npm:^2.0.0" + vite: "npm:^5.0.0 || ^6.0.0" + vite-node: "npm:3.0.5" why-is-node-running: "npm:^2.3.0" peerDependencies: "@edge-runtime/vm": "*" - "@types/node": ^18.0.0 || >=20.0.0 - "@vitest/browser": 2.1.1 - "@vitest/ui": 2.1.1 + "@types/debug": ^4.1.12 + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + "@vitest/browser": 3.0.5 + "@vitest/ui": 3.0.5 happy-dom: "*" jsdom: "*" peerDependenciesMeta: "@edge-runtime/vm": optional: true + "@types/debug": + optional: true "@types/node": optional: true "@vitest/browser": @@ -3007,7 +3052,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: 10c0/77a67092338613376dadd8f6f6872383db8409402ce400ac1de48efd87a7214183e798484a3eb2310221c03554e37a00f9fdbc91e49194e7c68e009a5589f494 + checksum: 10c0/9218bb91a1fb6710fb7e47b0b663397bdf2c906a7d7ec43cf603b39151f8ff8d276163f7b77c55eb4d109ef1dc1b3eddb77696d2dd46a850b7d9b695ae2fca5d languageName: node linkType: hard @@ -3045,14 +3090,14 @@ __metadata: languageName: node linkType: hard -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" +"which@npm:^5.0.0": + version: 5.0.0 + resolution: "which@npm:5.0.0" dependencies: isexe: "npm:^3.1.1" bin: node-which: bin/which.js - checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b languageName: node linkType: hard @@ -3103,3 +3148,10 @@ __metadata: checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a languageName: node linkType: hard + +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 + languageName: node + linkType: hard