@kanso-labs/react-native-kanso-ui 0.11.23 → 0.11.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -38,7 +38,7 @@ const ROWS_ABOVE_SHOWN = 3;
38
38
  * shown, both years where they are two, as web's does.
39
39
  */
40
40
  function CalendarFrame(t0) {
41
- const $ = c(28);
41
+ const $ = c(30);
42
42
  const { firstDayOfWeek, locale, months, showMonthYearMenus, state } = t0;
43
43
  const t1 = useTheme();
44
44
  let t2;
@@ -49,79 +49,87 @@ function CalendarFrame(t0) {
49
49
  } else t2 = $[1];
50
50
  const own = t2;
51
51
  const sideBySide = useSideBySide(months);
52
+ const stacked = months > 1 && !sideBySide;
52
53
  const t3 = sideBySide ? own.monthsSideBySide : own.months;
53
54
  let t4;
54
- if ($[2] !== firstDayOfWeek || $[3] !== locale || $[4] !== months || $[5] !== own.monthSideBySide || $[6] !== sideBySide || $[7] !== state) {
55
+ if ($[2] !== firstDayOfWeek || $[3] !== locale || $[4] !== months || $[5] !== own.monthSideBySide || $[6] !== sideBySide || $[7] !== stacked || $[8] !== state) {
55
56
  let t5;
56
- if ($[9] !== firstDayOfWeek || $[10] !== locale || $[11] !== own.monthSideBySide || $[12] !== sideBySide || $[13] !== state) {
57
- t5 = (offset) => /* @__PURE__ */ jsx(View, {
57
+ if ($[10] !== firstDayOfWeek || $[11] !== locale || $[12] !== own.monthSideBySide || $[13] !== sideBySide || $[14] !== stacked || $[15] !== state) {
58
+ t5 = (offset) => /* @__PURE__ */ jsxs(View, {
58
59
  style: sideBySide ? own.monthSideBySide : void 0,
59
- children: /* @__PURE__ */ jsx(MonthGrid, {
60
+ children: [stacked ? /* @__PURE__ */ jsx(MonthCaption, {
61
+ locale,
62
+ offset,
63
+ state
64
+ }) : null, /* @__PURE__ */ jsx(MonthGrid, {
60
65
  firstDayOfWeek,
61
66
  locale,
62
67
  offset,
68
+ stacked,
63
69
  state
64
- })
70
+ })]
65
71
  }, offset.months);
66
- $[9] = firstDayOfWeek;
67
- $[10] = locale;
68
- $[11] = own.monthSideBySide;
69
- $[12] = sideBySide;
70
- $[13] = state;
71
- $[14] = t5;
72
- } else t5 = $[14];
72
+ $[10] = firstDayOfWeek;
73
+ $[11] = locale;
74
+ $[12] = own.monthSideBySide;
75
+ $[13] = sideBySide;
76
+ $[14] = stacked;
77
+ $[15] = state;
78
+ $[16] = t5;
79
+ } else t5 = $[16];
73
80
  t4 = offsetsOf(months).map(t5);
74
81
  $[2] = firstDayOfWeek;
75
82
  $[3] = locale;
76
83
  $[4] = months;
77
84
  $[5] = own.monthSideBySide;
78
85
  $[6] = sideBySide;
79
- $[7] = state;
80
- $[8] = t4;
81
- } else t4 = $[8];
86
+ $[7] = stacked;
87
+ $[8] = state;
88
+ $[9] = t4;
89
+ } else t4 = $[9];
82
90
  let t5;
83
- if ($[15] !== t3 || $[16] !== t4) {
91
+ if ($[17] !== t3 || $[18] !== t4) {
84
92
  t5 = /* @__PURE__ */ jsx(View, {
85
93
  style: t3,
86
94
  children: t4
87
95
  });
88
- $[15] = t3;
89
- $[16] = t4;
90
- $[17] = t5;
91
- } else t5 = $[17];
96
+ $[17] = t3;
97
+ $[18] = t4;
98
+ $[19] = t5;
99
+ } else t5 = $[19];
92
100
  const grids = t5;
93
101
  if (showMonthYearMenus && months <= 1) {
94
102
  let t6;
95
- if ($[18] !== grids || $[19] !== locale || $[20] !== state) {
103
+ if ($[20] !== grids || $[21] !== locale || $[22] !== state) {
96
104
  t6 = /* @__PURE__ */ jsx(CalendarMenus, {
97
105
  locale,
98
106
  state,
99
107
  children: grids
100
108
  });
101
- $[18] = grids;
102
- $[19] = locale;
103
- $[20] = state;
104
- $[21] = t6;
105
- } else t6 = $[21];
109
+ $[20] = grids;
110
+ $[21] = locale;
111
+ $[22] = state;
112
+ $[23] = t6;
113
+ } else t6 = $[23];
106
114
  return t6;
107
115
  }
108
116
  let t6;
109
- if ($[22] !== locale || $[23] !== state) {
117
+ if ($[24] !== locale || $[25] !== state) {
110
118
  t6 = /* @__PURE__ */ jsx(CalendarHeader, {
111
119
  locale,
112
120
  state
113
121
  });
114
- $[22] = locale;
115
- $[23] = state;
116
- $[24] = t6;
117
- } else t6 = $[24];
122
+ $[24] = locale;
123
+ $[25] = state;
124
+ $[26] = t6;
125
+ } else t6 = $[26];
118
126
  let t7;
119
- if ($[25] !== grids || $[26] !== t6) {
127
+ if ($[27] !== grids || $[28] !== t6) {
120
128
  t7 = /* @__PURE__ */ jsxs(Fragment$1, { children: [t6, grids] });
121
- $[25] = grids;
122
- $[26] = t6;
123
- $[27] = t7;
124
- } else t7 = $[27];
129
+ $[27] = grids;
130
+ $[28] = t6;
131
+ $[29] = t7;
132
+ } else t7 = $[29];
125
133
  return t7;
126
134
  }
127
135
  /** The two chevrons with the month and year between them. */
@@ -813,13 +821,69 @@ function MenuList(t0) {
813
821
  return t5;
814
822
  }
815
823
  /**
824
+ * The name of the month a grid shows, over the grid, while several stack. The
825
+ * heading between the chevrons names them all at once, which reads across
826
+ * months side by side in order; stacked, the second month sat under the
827
+ * first's last week with nothing saying which month it was. Formatted as the
828
+ * heading names a month: in full with its year, in the calendar's system and
829
+ * time zone, with the era where a Gregorian date falls before the common one.
830
+ *
831
+ * Hidden from a screen reader, which hears the month already with each date.
832
+ */
833
+ function MonthCaption(t0) {
834
+ const $ = c(8);
835
+ const { locale, offset, state } = t0;
836
+ const own = stylesOf(useTheme());
837
+ const role = useTypeRole("titleSmall");
838
+ const start = state.visibleRange.start.add(offset);
839
+ const month = start.calendar.getFormattableMonth?.(start) ?? start;
840
+ const T0 = View;
841
+ const t1 = true;
842
+ const t2 = own.monthCaption;
843
+ const T1 = Text;
844
+ const t3 = 1;
845
+ const t4 = composeStyles(role, own.monthCaptionText);
846
+ const t5 = new DateFormatter(locale, {
847
+ calendar: start.calendar.identifier,
848
+ era: eraOf(start),
849
+ month: "long",
850
+ timeZone: state.timeZone,
851
+ year: "numeric"
852
+ }).format(month.toDate(state.timeZone));
853
+ let t6;
854
+ if ($[0] !== T1 || $[1] !== t4 || $[2] !== t5) {
855
+ t6 = /* @__PURE__ */ jsx(T1, {
856
+ numberOfLines: t3,
857
+ style: t4,
858
+ children: t5
859
+ });
860
+ $[0] = T1;
861
+ $[1] = t4;
862
+ $[2] = t5;
863
+ $[3] = t6;
864
+ } else t6 = $[3];
865
+ let t7;
866
+ if ($[4] !== T0 || $[5] !== own || $[6] !== t6) {
867
+ t7 = /* @__PURE__ */ jsx(T0, {
868
+ "aria-hidden": t1,
869
+ style: t2,
870
+ children: t6
871
+ });
872
+ $[4] = T0;
873
+ $[5] = own;
874
+ $[6] = t6;
875
+ $[7] = t7;
876
+ } else t7 = $[7];
877
+ return t7;
878
+ }
879
+ /**
816
880
  * The weekday row and one month's weeks, held at six weeks of room so the
817
881
  * calendar keeps its height from month to month. The weeks slide in from the
818
882
  * side the new month comes from.
819
883
  */
820
884
  function MonthGrid(t0) {
821
885
  const $ = c(20);
822
- const { firstDayOfWeek, locale, offset, state } = t0;
886
+ const { firstDayOfWeek, locale, offset, stacked, state } = t0;
823
887
  const theme = useTheme();
824
888
  const own = stylesOf(theme);
825
889
  const role = useTypeRole("bodyLarge");
@@ -834,7 +898,7 @@ function MonthGrid(t0) {
834
898
  const slide = useMonthSlide(start, theme);
835
899
  const rowStyle = composeStyles(styles.row, own.rowHeight);
836
900
  const T0 = View;
837
- const t2 = own.grid;
901
+ const t2 = stacked ? void 0 : own.grid;
838
902
  const T1 = View;
839
903
  const t3 = true;
840
904
  const t4 = weekdaysOf(state, locale, firstDayOfWeek).map((weekday) => /* @__PURE__ */ jsx(View, {
@@ -887,13 +951,13 @@ function MonthGrid(t0) {
887
951
  $[14] = t7;
888
952
  } else t7 = $[14];
889
953
  let t8;
890
- if ($[15] !== T0 || $[16] !== own || $[17] !== t5 || $[18] !== t7) {
954
+ if ($[15] !== T0 || $[16] !== t2 || $[17] !== t5 || $[18] !== t7) {
891
955
  t8 = /* @__PURE__ */ jsxs(T0, {
892
956
  style: t2,
893
957
  children: [t5, t7]
894
958
  });
895
959
  $[15] = T0;
896
- $[16] = own;
960
+ $[16] = t2;
897
961
  $[17] = t5;
898
962
  $[18] = t7;
899
963
  $[19] = t8;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["CalendarDate","ComponentRef","ReactNode","RefObject","HostInstance","ListRenderItemInfo","StyleProp","TextStyle","ViewStyle","CalendarState","RangeCalendarState","DateFormatter","endOfMonth","isSameDay","isSameMonth","isSameYear","isToday","startOfMonth","startOfWeek","toCalendarDate","today","createContext","use","useLayoutEffect","useRef","useState","FlatList","I18nManager","Text","NativeText","Pressable","StyleSheet","View","Animated","Easing","useAnimatedStyle","useReducedMotion","useSharedValue","withTiming","ResolvedTheme","IconButton","ArrowDropDownGlyph","CheckGlyph","ChevronEndGlyph","useWindowSizeClass","messagesFor","useFocusOnPlaced","useReturnFocus","hitSlop","usePressFeedback","withOpacity","useTheme","composeStyles","useTypeRole","rootWidthOf","SLIDE_DISTANCE","styles","stylesOf","WEEKS_HELD","ListEntry","date","formatted","id","MonthOffset","months","OpenList","CalendarFocusContext","cell","PartProps","locale","state","SomeCalendarState","Weekday","LISTED_YEARS","ROWS_ABOVE_SHOWN","CalendarFrame","t0","$","_c","firstDayOfWeek","showMonthYearMenus","t1","t2","own","sideBySide","useSideBySide","t3","monthsSideBySide","t4","monthSideBySide","t5","offset","undefined","offsetsOf","map","grids","t6","t7","CalendarHeader","role","T0","header","T1","heading","visibleRangeOf","t8","t9","CalendarMenus","children","words","calendar","open","setOpen","monthButton","yearButton","shownMonth","focusedDate","month","headerGroup","chevronRoom","isDisabled","monthsOf","t10","t11","Symbol","for","toggleThen","t12","t13","t14","t15","t16","t17","yearOf","t18","year","t19","t20","t21","t22","t23","t24","t25","Chevron","direction","previous","isPreviousVisibleRangeInvalid","isNextVisibleRangeInvalid","outside","pageThen","previousGlyphStyle","chevron","chooseThen","shown","entry","setFocusedDate","cornersOf","shape","borderBottomEndRadius","borderBottomStartRadius","borderRadius","borderTopEndRadius","borderTopStartRadius","flatten","DateCell","theme","colors","sizing","isCellDisabled","isCellUnavailable","isUnavailable","selectable","isSelected","isCurrent","timeZone","range","rangeOf","isFilled","isEnd","report","isFocused","dateInRange","isFirst","dateRangeStart","isLast","dateRangeEnd","feedback","color","onPrimary","onSurface","onPrimaryContainer","corners","disabled","onHoverIn","highlightThen","promptOf","dateLabelOf","controlSm","selectThen","handlers","dateToday","dateSelected","ring","layer","dateText","dateTextToday","dateTextInRange","dateTextSelected","dateTextUnavailable","dateTextDisabled","dayOf","full","rangeNameOf","day","era","eraOf","weekday","format","toDate","said","todayDateSelected","todayDate","replace","minValue","minimumDate","maxValue","maximumDate","identifier","formatToParts","find","part","type","value","String","const","highlightDate","layoutOf","height","_data","ArrayLike","index","length","listKeyOf","MenuButton","buttonRef","expanded","label","name","onPress","stateLayerOpacity","onSurfaceVariant","menuButton","menuButtonText","disabledContent","arrowExpanded","MenuList","entries","onChoose","checked","setChecked","controlMd","Math","max","min","rowOf","list","MonthGrid","visibleRange","start","add","slide","useMonthSlide","rowStyle","row","rowHeight","grid","weekdaysOf","key","column","weeksOf","week","days","MonthList","outsideBounds","formatter","Array","from","getMonthsInYear","_unused","set","getFormattableMonth","ReadonlySet","Set","filter","compare","focusNextPage","focusPreviousPage","isRTL","previousGlyphRightToLeft","previousGlyph","isReadOnly","anchorDate","startRangeSelectionPrompt","finishRangeSelectionPrompt","highlightedRange","end","selectedDateDescription","selectedRangeDescription","spokenRangeOf","Row","isChecked","rowPressThen","listRow","listRowSelected","listText","listTextDisabled","listCheck","item","has","selectDate","parts","formatRangeToParts","separator","source","dateRange","textOf","slice","Intl","DateTimeFormatPart","join","update","motion","reduceMotion","opacity","travel","current","timing","duration","durationMedium2","easing","bezier","easingEmphasizedDecelerate","side","get","transform","translateX","useRootStyle","root","width","sizeClass","spoken","first","last","formatRange","toString","getWeeksInMonth","weeks","getDatesInWeek","YearList","yearsOf","NONE","subtract","years","floor","ceil","push","_c","NativeText"],"sources":["../../src/calendar/index.tsx"],"sourcesContent":["import type { CalendarDate } from '@internationalized/date'\nimport type { ComponentRef, ReactNode, RefObject } from 'react'\nimport type {\n HostInstance,\n ListRenderItemInfo,\n StyleProp,\n TextStyle,\n ViewStyle,\n} from 'react-native'\nimport type { CalendarState } from 'react-stately/useCalendarState'\nimport type { RangeCalendarState } from 'react-stately/useRangeCalendarState'\n\nimport {\n DateFormatter,\n endOfMonth,\n isSameDay,\n isSameMonth,\n isSameYear,\n isToday,\n startOfMonth,\n startOfWeek,\n toCalendarDate,\n today,\n} from '@internationalized/date'\nimport { createContext, use, useLayoutEffect, useRef, useState } from 'react'\nimport {\n FlatList,\n I18nManager,\n Text as NativeText,\n Pressable,\n StyleSheet,\n View,\n} from 'react-native'\nimport Animated, {\n Easing,\n useAnimatedStyle,\n useReducedMotion,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated'\n\nimport type { ResolvedTheme } from '../theme/scope'\n\nimport { IconButton } from '../components/icon-button'\nimport { ArrowDropDownGlyph, CheckGlyph, ChevronEndGlyph } from '../glyphs'\nimport { useWindowSizeClass } from '../hooks/useWindowSizeClass'\nimport { messagesFor } from '../i18n'\nimport { useFocusOnPlaced, useReturnFocus } from '../overlay/panel'\nimport { hitSlop, usePressFeedback } from '../press'\nimport { withOpacity } from '../theme/color'\nimport { useTheme } from '../theme/scope'\nimport { composeStyles } from '../theme/styles'\nimport { useTypeRole } from '../typography/roles'\nimport {\n rootWidthOf,\n SLIDE_DISTANCE,\n styles,\n stylesOf,\n WEEKS_HELD,\n} from './styles'\n\n// The parts Calendar and RangeCalendar both draw inside their container: the\n// row that moves the month, the weekday row, the weeks and the date cell, and\n// the month and year lists that take the grid's place. Apart from either\n// component so the two cannot drift, and so each directory under\n// src/components holds one component, as kanso-ui keeps its own in\n// src/calendar.\n\n/** One entry of a month or year list. */\ntype ListEntry = {\n readonly date: CalendarDate\n readonly formatted: string\n readonly id: number\n}\n\n/** A month's distance from the first one a calendar shows. */\ntype MonthOffset = { readonly months: number }\n\ntype OpenList = 'month' | 'year'\n\n/**\n * Where a calendar hands over the cell of the date it is on, the one held or\n * else the one it opened on, for a surface that sends a screen reader to that\n * date as it opens, as a date picker's does. The cell hands itself over as it\n * becomes that date and `null` as it stops being it. Outside such a surface\n * it is `null`, and no cell hands anything over.\n */\nconst CalendarFocusContext = createContext<\n ((cell: HostInstance | null) => void) | null\n>(null)\n\ntype PartProps = {\n readonly locale: string\n readonly state: SomeCalendarState\n}\n\n/** The state of either calendar, one date's or a range's. */\ntype SomeCalendarState = CalendarState | RangeCalendarState\n\n/** The day a locale's week starts on, where the call site names one. */\ntype Weekday = 'fri' | 'mon' | 'sat' | 'sun' | 'thu' | 'tue' | 'wed'\n\n// How many years the open year list holds: a century either side of the year\n// shown, and that year, as kanso-ui's does. The bounds cut it short where they\n// fall inside.\nconst LISTED_YEARS = 201\n\n// An open list holds the weekday row and six weeks of room, seven rows, and\n// opens with the entry shown in the middle one, three rows from the top.\nconst ROWS_ABOVE_SHOWN = WEEKS_HELD / 2\n\n/**\n * What a calendar draws inside its container: the header, and a grid for each\n * month it shows. With `showMonthYearMenus` the header is the date pickers\n * page's docked one, the month and the year as menu buttons, and while either\n * is open its list takes the grid's place.\n *\n * The menus are for one month. They name and pick the first month alone, so\n * a second grid beside it would have no month or year of its own; with more\n * than one the header is the plain one, whose heading names every month\n * shown, both years where they are two, as web's does.\n */\nfunction CalendarFrame({\n firstDayOfWeek,\n locale,\n months,\n showMonthYearMenus,\n state,\n}: PartProps & {\n readonly firstDayOfWeek: undefined | Weekday\n /** How many months the calendar shows. */\n readonly months: number\n readonly showMonthYearMenus: boolean\n}) {\n const own = stylesOf(useTheme())\n const sideBySide = useSideBySide(months)\n const grids = (\n <View style={sideBySide ? own.monthsSideBySide : own.months}>\n {offsetsOf(months).map((offset) => (\n <View\n key={offset.months}\n style={sideBySide ? own.monthSideBySide : undefined}\n >\n <MonthGrid\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n offset={offset}\n state={state}\n />\n </View>\n ))}\n </View>\n )\n\n if (showMonthYearMenus && months <= 1) {\n return (\n <CalendarMenus locale={locale} state={state}>\n {grids}\n </CalendarMenus>\n )\n }\n\n return (\n <>\n <CalendarHeader locale={locale} state={state} />\n {grids}\n </>\n )\n}\n\n/** The two chevrons with the month and year between them. */\nfunction CalendarHeader({ locale, state }: PartProps) {\n const own = stylesOf(useTheme())\n const role = useTypeRole('labelLarge')\n\n return (\n <View style={own.header}>\n <Chevron direction=\"previous\" locale={locale} state={state} />\n <NativeText\n aria-live=\"polite\"\n role=\"heading\"\n style={composeStyles<TextStyle>(role, own.heading)}\n >\n {visibleRangeOf(state, locale)}\n </NativeText>\n <Chevron direction=\"next\" locale={locale} state={state} />\n </View>\n )\n}\n\n/**\n * The docked header: the month's menu button between the chevrons that step\n * it, and the year's after them. A press opens the button's list in the\n * grid's place, where the page draws it, rather than in a menu over it; a\n * calendar inside a picker is already in one. While a list is open the\n * chevrons give way to the room they took and the other button is disabled,\n * and choosing an entry, or pressing the one already checked, closes the\n * list and sends the screen reader back to its button.\n *\n * The month list names the months in full where the button names the month\n * short, as the page does. The year list runs a century either side of the\n * year shown, and `minValue` and `maxValue` cut it short; a month with no day\n * inside them is disabled.\n */\nfunction CalendarMenus({\n children,\n locale,\n state,\n}: PartProps & { readonly children: ReactNode }) {\n const own = stylesOf(useTheme())\n const words = messagesFor(locale).calendar\n const [open, setOpen] = useState<null | OpenList>(null)\n const monthButton = useRef<ComponentRef<typeof View>>(null)\n const yearButton = useRef<ComponentRef<typeof View>>(null)\n const shownMonth = state.focusedDate.month - 1\n\n useReturnFocus(open === 'month', false, monthButton)\n useReturnFocus(open === 'year', false, yearButton)\n\n return (\n <>\n <View style={own.header}>\n <View style={own.headerGroup}>\n {open === null ? (\n <Chevron direction=\"previous\" locale={locale} state={state} />\n ) : (\n <View style={own.chevronRoom} />\n )}\n <MenuButton\n buttonRef={monthButton}\n expanded={open === 'month'}\n isDisabled={state.isDisabled || open === 'year'}\n label={monthsOf(state, locale, 'short')[shownMonth]?.formatted}\n name={words.month}\n onPress={toggleThen(setOpen, 'month')}\n />\n {open === null ? (\n <Chevron direction=\"next\" locale={locale} state={state} />\n ) : (\n <View style={own.chevronRoom} />\n )}\n </View>\n <MenuButton\n buttonRef={yearButton}\n expanded={open === 'year'}\n isDisabled={state.isDisabled || open === 'month'}\n label={yearOf(state, locale)}\n name={words.year}\n onPress={toggleThen(setOpen, 'year')}\n />\n </View>\n {open === null ? children : null}\n {open === 'month' ? (\n <MonthList locale={locale} setOpen={setOpen} state={state} />\n ) : null}\n {open === 'year' ? (\n <YearList locale={locale} setOpen={setOpen} state={state} />\n ) : null}\n </>\n )\n}\n\n/**\n * A chevron that moves the month, the icon buttons page's standard 40dp\n * button. Disabled where the month it would move to is outside `minValue`\n * and `maxValue`, or the whole calendar is disabled.\n */\nfunction Chevron({\n direction,\n locale,\n state,\n}: PartProps & { readonly direction: 'next' | 'previous' }) {\n const own = stylesOf(useTheme())\n const previous = direction === 'previous'\n const outside = previous\n ? state.isPreviousVisibleRangeInvalid()\n : state.isNextVisibleRangeInvalid()\n\n return (\n <IconButton\n aria-label={messagesFor(locale).calendar[direction]}\n isDisabled={state.isDisabled || outside}\n onPress={pageThen(state, direction)}\n style={own.chevron}\n >\n <ChevronEndGlyph style={previous ? previousGlyphStyle() : undefined} />\n </IconButton>\n )\n}\n\n// Chooses an entry of the open list and closes it. The entry already shown\n// closes it without moving anything.\nfunction chooseThen(\n state: SomeCalendarState,\n setOpen: (open: null | OpenList) => void,\n shown: number,\n) {\n return (entry: ListEntry) => {\n if (entry.id !== shown) {\n state.setFocusedDate(entry.date)\n }\n setOpen(null)\n }\n}\n\n// The corners of a date's shape, which its state layer and ripple clip to.\n// The corners alone: the shape's size and margins are the date's, and on the\n// layer, which fills the date, the margins would move it off the circle.\nfunction cornersOf(shape: StyleProp<ViewStyle>) {\n const {\n borderBottomEndRadius,\n borderBottomStartRadius,\n borderRadius,\n borderTopEndRadius,\n borderTopStartRadius,\n }: ViewStyle = StyleSheet.flatten(shape) ?? {}\n\n return {\n borderBottomEndRadius,\n borderBottomStartRadius,\n borderRadius,\n borderTopEndRadius,\n borderTopStartRadius,\n }\n}\n\n/**\n * One date: the page's 40dp circle in its 48dp square, which `hitSlop` makes\n * the press target. Its name is the date in full, with today, the selection\n * and the first or last date the bounds allow said as web says them, and it\n * reports itself disabled where it cannot be picked, as a date of the months\n * either side of its grid's is.\n *\n * In a range calendar a selected day is the band instead, as wide as its\n * column, with the two ends filled and round on their outer side, and the\n * state layers follow the ground under them: on primary over an end, on\n * primary container over the band, on surface elsewhere. While a range is\n * started, a pointer over a date draws the range as far as it, as web's\n * does; a touch has no such preview, and the second press ends the range.\n */\nfunction DateCell({\n date,\n locale,\n month,\n state,\n}: PartProps & {\n readonly date: CalendarDate\n /** The first day of the month the date's grid shows. */\n readonly month: CalendarDate\n}) {\n const theme = useTheme()\n const { colors, sizing } = theme\n const own = stylesOf(theme)\n const role = useTypeRole('bodyLarge')\n const isDisabled = state.isCellDisabled(date) || !isSameMonth(date, month)\n const isUnavailable = state.isCellUnavailable(date)\n const selectable = !isDisabled && !isUnavailable\n const isSelected = selectable && state.isSelected(date)\n const isCurrent = isToday(date, state.timeZone)\n const range = rangeOf(state, date, isSelected)\n const isFilled = range === null ? isSelected : range.isEnd\n // The date the calendar is on, in its own month's grid rather than as the\n // spill of the month beside it, is the cell a picker sends a reader to.\n const report = use(CalendarFocusContext)\n const isFocused =\n isSameMonth(date, month) && isSameDay(date, state.focusedDate)\n const shape = composeStyles<ViewStyle>(\n own.date,\n range === null ? undefined : own.dateInRange,\n range?.isFirst === true ? own.dateRangeStart : undefined,\n range?.isLast === true ? own.dateRangeEnd : undefined,\n )\n const feedback = usePressFeedback({\n color: isFilled\n ? colors.onPrimary\n : range === null\n ? colors.onSurface\n : colors.onPrimaryContainer,\n corners: cornersOf(shape),\n disabled: !selectable,\n onHoverIn: highlightThen(state, date),\n })\n\n return (\n <Pressable\n accessibilityHint={promptOf(state, locale, selectable)}\n aria-label={dateLabelOf(date, state, locale, isCurrent, isSelected)}\n hitSlop={hitSlop(\n sizing.controlSm,\n range === null ? sizing.controlSm : undefined,\n )}\n onPress={selectThen(state, date)}\n ref={isFocused && report !== null ? report : undefined}\n role=\"button\"\n {...feedback.handlers}\n disabled={!selectable}\n style={composeStyles<ViewStyle>(\n shape,\n isCurrent ? own.dateToday : undefined,\n isFilled ? own.dateSelected : undefined,\n feedback.ring,\n )}\n >\n {feedback.layer}\n <NativeText\n style={composeStyles<TextStyle>(\n role,\n own.dateText,\n isCurrent ? own.dateTextToday : undefined,\n range === null ? undefined : own.dateTextInRange,\n isFilled ? own.dateTextSelected : undefined,\n isUnavailable ? own.dateTextUnavailable : undefined,\n isDisabled ? own.dateTextDisabled : undefined,\n )}\n >\n {dayOf(date, state, locale)}\n </NativeText>\n </Pressable>\n )\n}\n\n// A date's name: the date in full, as today or as the one held where it is\n// either, then as the first or last date the bounds allow where it is that.\n// A range's two ends open with the whole range, once one is chosen. React\n// Aria's own wording, from its calendar dictionary.\nfunction dateLabelOf(\n date: CalendarDate,\n state: SomeCalendarState,\n locale: string,\n isCurrent: boolean,\n isSelected: boolean,\n) {\n const words = messagesFor(locale).calendar\n const full = `${rangeNameOf(state, date, locale)}${new DateFormatter(locale, {\n day: 'numeric',\n era: eraOf(date),\n month: 'long',\n timeZone: state.timeZone,\n weekday: 'long',\n year: 'numeric',\n }).format(date.toDate(state.timeZone))}`\n const said = isCurrent\n ? (isSelected ? words.todayDateSelected : words.todayDate).replace(\n '{date}',\n full,\n )\n : isSelected\n ? words.dateSelected.replace('{date}', full)\n : full\n\n if (state.minValue != null && isSameDay(date, state.minValue)) {\n return `${said}, ${words.minimumDate}`\n }\n\n if (state.maxValue != null && isSameDay(date, state.maxValue)) {\n return `${said}, ${words.maximumDate}`\n }\n\n return said\n}\n\n// The date's number in the grid, in the locale's digits: the day alone out of\n// a formatted date, as React Aria takes it, so a locale that writes a unit\n// after the day, as Japanese does, draws the number alone.\nfunction dayOf(date: CalendarDate, state: SomeCalendarState, locale: string) {\n return (\n new DateFormatter(locale, {\n calendar: date.calendar.identifier,\n day: 'numeric',\n timeZone: state.timeZone,\n })\n .formatToParts(date.toDate(state.timeZone))\n .find((part) => part.type === 'day')?.value ?? String(date.day)\n )\n}\n\n// The era is written only where a Gregorian date falls before the common era,\n// as React Aria writes it.\nfunction eraOf(date: CalendarDate) {\n return date.calendar.identifier === 'gregory' && date.era === 'BC'\n ? ('short' as const)\n : undefined\n}\n\n// Draws a started range as far as the date a pointer is over, as web's does.\n// Nothing in a calendar of one date; before a range is started, React\n// Stately's own `highlightDate` does nothing.\nfunction highlightThen(state: SomeCalendarState, date: CalendarDate) {\n if (!('highlightDate' in state)) {\n return undefined\n }\n\n return () => {\n state.highlightDate(date)\n }\n}\n\n// The row a list's row occupies, which is every row's 48dp, so the list can\n// open scrolled to the entry shown without laying out the rows before it.\nfunction layoutOf(height: number) {\n return (_data: ArrayLike<ListEntry> | null | undefined, index: number) => ({\n index,\n length: height,\n offset: height * index,\n })\n}\n\nfunction listKeyOf(entry: ListEntry) {\n return String(entry.id)\n}\n\n/**\n * The month or the year as the page's menu button, opening its list. Named\n * by what it shows and then by what it is, \"Sep month\", which keeps the\n * visible text the start of the name.\n */\nfunction MenuButton({\n buttonRef,\n expanded,\n isDisabled,\n label,\n name,\n onPress,\n}: {\n readonly buttonRef: RefObject<ComponentRef<typeof View> | null>\n readonly expanded: boolean\n readonly isDisabled: boolean\n readonly label: string | undefined\n readonly name: string\n readonly onPress: () => void\n}) {\n const theme = useTheme()\n const { colors, sizing, stateLayerOpacity } = theme\n const own = stylesOf(theme)\n const role = useTypeRole('labelLarge')\n const feedback = usePressFeedback({\n color: colors.onSurfaceVariant,\n corners: own.menuButton,\n disabled: isDisabled,\n })\n\n return (\n <Pressable\n aria-expanded={expanded}\n aria-label={`${label ?? ''} ${name}`}\n hitSlop={hitSlop(sizing.controlSm)}\n onPress={onPress}\n ref={buttonRef}\n role=\"button\"\n {...feedback.handlers}\n disabled={isDisabled}\n style={composeStyles<ViewStyle>(own.menuButton, feedback.ring)}\n >\n {feedback.layer}\n <NativeText\n style={composeStyles<TextStyle>(\n role,\n own.menuButtonText,\n isDisabled ? own.dateTextDisabled : undefined,\n )}\n >\n {label}\n </NativeText>\n <ArrowDropDownGlyph\n color={\n isDisabled\n ? withOpacity(colors.onSurface, stateLayerOpacity.disabledContent)\n : colors.onSurfaceVariant\n }\n size={18}\n style={expanded ? own.arrowExpanded : undefined}\n />\n </Pressable>\n )\n}\n\n/**\n * An open month or year list, in the grid's place: a list of radio rows, the\n * entry shown checked, opening scrolled so that entry sits in the middle with\n * the entries either side of it in view. The screen reader is sent to it as\n * it opens.\n */\nfunction MenuList({\n disabled,\n entries,\n name,\n onChoose,\n shown,\n}: {\n readonly disabled: ReadonlySet<number>\n readonly entries: readonly ListEntry[]\n readonly name: string\n readonly onChoose: (entry: ListEntry) => void\n readonly shown: number\n}) {\n const theme = useTheme()\n const own = stylesOf(theme)\n const [checked, setChecked] = useState<HostInstance | null>(null)\n\n useFocusOnPlaced(true, checked)\n\n return (\n <FlatList\n aria-label={name}\n data={entries}\n getItemLayout={layoutOf(theme.sizing.controlMd)}\n initialScrollIndex={Math.max(\n 0,\n Math.min(shown - ROWS_ABOVE_SHOWN, entries.length - (WEEKS_HELD + 1)),\n )}\n keyExtractor={listKeyOf}\n renderItem={rowOf({ disabled, onChoose, setChecked, shown })}\n role=\"radiogroup\"\n style={own.list}\n />\n )\n}\n\n/**\n * The weekday row and one month's weeks, held at six weeks of room so the\n * calendar keeps its height from month to month. The weeks slide in from the\n * side the new month comes from.\n */\nfunction MonthGrid({\n firstDayOfWeek,\n locale,\n offset,\n state,\n}: PartProps & {\n readonly firstDayOfWeek: undefined | Weekday\n /** How far the month is from the first one the calendar shows. */\n readonly offset: MonthOffset\n}) {\n const theme = useTheme()\n const own = stylesOf(theme)\n const role = useTypeRole('bodyLarge')\n const start = state.visibleRange.start.add(offset)\n const slide = useMonthSlide(start, theme)\n const rowStyle = composeStyles<ViewStyle>(styles.row, own.rowHeight)\n\n return (\n <View style={own.grid}>\n <View aria-hidden style={rowStyle}>\n {weekdaysOf(state, locale, firstDayOfWeek).map((weekday) => (\n <View key={weekday.key} style={styles.column}>\n <NativeText style={composeStyles<TextStyle>(role, own.weekday)}>\n {weekday.label}\n </NativeText>\n </View>\n ))}\n </View>\n <Animated.View style={slide}>\n {weeksOf(state, start).map((week) => (\n <View key={week.key} style={rowStyle}>\n {week.days.map((day) => (\n <View key={day.key} style={styles.column}>\n {day.date === null ? null : (\n <DateCell\n date={day.date}\n locale={locale}\n month={start}\n state={state}\n />\n )}\n </View>\n ))}\n </View>\n ))}\n </Animated.View>\n </View>\n )\n}\n\n/** The open month list: the months of the year shown, named in full. */\nfunction MonthList({\n locale,\n setOpen,\n state,\n}: PartProps & { readonly setOpen: (open: null | OpenList) => void }) {\n const months = monthsOf(state, locale, 'long')\n const shown = state.focusedDate.month - 1\n\n return (\n <MenuList\n disabled={outsideBounds(state, months)}\n entries={months}\n name={messagesFor(locale).calendar.month}\n onChoose={chooseThen(state, setOpen, shown)}\n shown={shown}\n />\n )\n}\n\n// The months of the year shown, named short for the header's button or in\n// full for the open list. Some calendar systems, such as the Hebrew, have\n// more months in some years than in others.\nfunction monthsOf(\n state: SomeCalendarState,\n locale: string,\n format: 'long' | 'short',\n): readonly ListEntry[] {\n const { focusedDate, timeZone } = state\n const formatter = new DateFormatter(locale, {\n calendar: focusedDate.calendar.identifier,\n month: format,\n timeZone,\n })\n\n return Array.from(\n { length: focusedDate.calendar.getMonthsInYear(focusedDate) },\n (_unused, index) => {\n const date = focusedDate.set({ month: index + 1 })\n const shown = date.calendar.getFormattableMonth?.(date) ?? date\n\n return {\n date,\n formatted: formatter.format(shown.toDate(timeZone)),\n id: index,\n }\n },\n )\n}\n\n// One offset per month a calendar shows, the first month's none.\nfunction offsetsOf(months: number): readonly MonthOffset[] {\n return Array.from({ length: Math.max(1, months) }, (_unused, index) => ({\n months: index,\n }))\n}\n\n// The months the bounds leave no day of.\nfunction outsideBounds(\n state: SomeCalendarState,\n months: readonly ListEntry[],\n): ReadonlySet<number> {\n const { maxValue, minValue } = state\n\n return new Set(\n months\n .filter(\n ({ date }) =>\n (maxValue != null && startOfMonth(date).compare(maxValue) > 0) ||\n (minValue != null && endOfMonth(date).compare(minValue) < 0),\n )\n .map(({ id }) => id),\n )\n}\n\nfunction pageThen(state: SomeCalendarState, direction: 'next' | 'previous') {\n return () => {\n if (direction === 'next') {\n state.focusNextPage()\n } else {\n state.focusPreviousPage()\n }\n }\n}\n\nfunction previousGlyphStyle() {\n return I18nManager.isRTL\n ? styles.previousGlyphRightToLeft\n : styles.previousGlyph\n}\n\n// What pressing a date in a range calendar does, as the screen reader's hint\n// on it: start a range, or end the one started. React Aria says it at the date\n// focused, which on a device is the one the screen reader is on. Nothing in a\n// calendar of one date, or where the press would do nothing.\nfunction promptOf(\n state: SomeCalendarState,\n locale: string,\n selectable: boolean,\n) {\n if (!('anchorDate' in state) || state.isReadOnly || !selectable) {\n return undefined\n }\n\n const words = messagesFor(locale).calendar\n\n return state.anchorDate === null\n ? words.startRangeSelectionPrompt\n : words.finishRangeSelectionPrompt\n}\n\n// What the two ends of the range a range calendar holds say before the date:\n// the range, or the day where it is one, as React Aria opens their names with\n// it. Nothing while a range is started, which holds nothing yet, or for any\n// other date.\nfunction rangeNameOf(\n state: SomeCalendarState,\n date: CalendarDate,\n locale: string,\n) {\n if (\n !('highlightedRange' in state) ||\n state.value === null ||\n state.anchorDate !== null ||\n state.highlightedRange === null ||\n (!isSameDay(date, state.value.start) && !isSameDay(date, state.value.end))\n ) {\n return ''\n }\n\n const { end, start } = state.highlightedRange\n const { timeZone } = state\n const words = messagesFor(locale).calendar\n const formatter = new DateFormatter(locale, {\n day: 'numeric',\n era: eraOf(start) ?? eraOf(end),\n month: 'long',\n timeZone,\n weekday: 'long',\n year: 'numeric',\n })\n const said = isSameDay(start, end)\n ? words.selectedDateDescription.replace(\n '{date}',\n formatter.format(start.toDate(timeZone)),\n )\n : words.selectedRangeDescription.replace(\n '{dateRange}',\n spokenRangeOf(formatter, locale, start, end, timeZone),\n )\n\n return `${said}, `\n}\n\n// Where a selected date sits in a range calendar's range: its first or last\n// day, either of which is an end, or between them. Null in a calendar of one\n// date, and for a date outside the range.\nfunction rangeOf(\n state: SomeCalendarState,\n date: CalendarDate,\n isSelected: boolean,\n) {\n if (\n !isSelected ||\n !('highlightedRange' in state) ||\n state.highlightedRange === null\n ) {\n return null\n }\n\n const isFirst = isSameDay(date, state.highlightedRange.start)\n const isLast = isSameDay(date, state.highlightedRange.end)\n\n return { isEnd: isFirst || isLast, isFirst, isLast }\n}\n\n/**\n * One row of an open list: the check where the row is the entry shown, the\n * room it takes where it is not, then the month or the year, in body large.\n */\nfunction Row({\n entry,\n isChecked,\n isDisabled,\n onChoose,\n setChecked,\n}: {\n readonly entry: ListEntry\n readonly isChecked: boolean\n readonly isDisabled: boolean\n readonly onChoose: (entry: ListEntry) => void\n readonly setChecked: (row: HostInstance | null) => void\n}) {\n const theme = useTheme()\n const own = stylesOf(theme)\n const role = useTypeRole('bodyLarge')\n const feedback = usePressFeedback({\n color: theme.colors.onSurface,\n disabled: isDisabled,\n })\n\n return (\n <Pressable\n aria-checked={isChecked}\n onPress={rowPressThen(onChoose, entry)}\n ref={isChecked ? setChecked : undefined}\n role=\"radio\"\n {...feedback.handlers}\n disabled={isDisabled}\n style={composeStyles<ViewStyle>(\n own.listRow,\n isChecked ? own.listRowSelected : undefined,\n feedback.ring,\n )}\n >\n {feedback.layer}\n <View style={own.listCheck}>\n {isChecked ? <CheckGlyph color={theme.colors.onSurface} /> : null}\n </View>\n <NativeText\n style={composeStyles<TextStyle>(\n role,\n own.listText,\n isDisabled ? own.listTextDisabled : undefined,\n )}\n >\n {entry.formatted}\n </NativeText>\n </Pressable>\n )\n}\n\nfunction rowOf({\n disabled,\n onChoose,\n setChecked,\n shown,\n}: {\n readonly disabled: ReadonlySet<number>\n readonly onChoose: (entry: ListEntry) => void\n readonly setChecked: (row: HostInstance | null) => void\n readonly shown: number\n}) {\n return ({ item }: ListRenderItemInfo<ListEntry>) => (\n <Row\n entry={item}\n isChecked={item.id === shown}\n isDisabled={disabled.has(item.id)}\n onChoose={onChoose}\n setChecked={setChecked}\n />\n )\n}\n\nfunction rowPressThen(onChoose: (entry: ListEntry) => void, entry: ListEntry) {\n return () => {\n onChoose(entry)\n }\n}\n\n// Picks a date and moves the calendar's focus to it, as a press on one does\n// on web. A read-only or disabled calendar's state ignores the pick.\nfunction selectThen(state: SomeCalendarState, date: CalendarDate) {\n return () => {\n state.selectDate(date)\n state.setFocusedDate(date)\n }\n}\n\n// Two dates as a range in the calendar's `dateRange` words, each written as\n// much as the other leaves out, \"September 8 to 15, 2026\". React Aria splits\n// the formatted range at the last literal its two halves share before the\n// end begins, and so does this.\nfunction spokenRangeOf(\n formatter: DateFormatter,\n locale: string,\n start: CalendarDate,\n end: CalendarDate,\n timeZone: string,\n) {\n const parts = formatter.formatRangeToParts(\n start.toDate(timeZone),\n end.toDate(timeZone),\n )\n let separator = -1\n\n for (const [index, part] of parts.entries()) {\n if (part.source === 'endRange') {\n break\n }\n if (part.source === 'shared' && part.type === 'literal') {\n separator = index\n }\n }\n\n return messagesFor(locale)\n .calendar.dateRange.replace(\n '{startDate}',\n textOf(parts.slice(0, Math.max(0, separator))),\n )\n .replace('{endDate}', textOf(parts.slice(separator + 1)))\n}\n\nfunction textOf(parts: readonly Intl.DateTimeFormatPart[]) {\n return parts.map((part) => part.value).join('')\n}\n\nfunction toggleThen(\n setOpen: (update: (open: null | OpenList) => null | OpenList) => void,\n list: OpenList,\n) {\n return () => {\n setOpen((open) => (open === list ? null : list))\n }\n}\n\n/**\n * Slides the weeks in from the side the new month comes from as the month\n * moves, 30dp over the medium duration on the emphasised decelerating curve,\n * fading in as they come: Material Design's shared axis transition for an\n * incoming page. The side follows the writing direction, so a later month\n * arrives from the end. Under reduced motion the month changes at once.\n */\nfunction useMonthSlide(start: CalendarDate, { motion }: ResolvedTheme) {\n const reduceMotion = useReducedMotion()\n const offset = useSharedValue(0)\n const opacity = useSharedValue(1)\n const shown = useRef(start)\n\n useLayoutEffect(() => {\n const travel = start.compare(shown.current)\n\n shown.current = start\n if (travel === 0 || reduceMotion) {\n return\n }\n\n const timing = {\n duration: motion.durationMedium2,\n easing: Easing.bezier(...motion.easingEmphasizedDecelerate),\n }\n const side = (travel > 0 ? 1 : -1) * (I18nManager.isRTL ? -1 : 1)\n\n offset.set(side * SLIDE_DISTANCE)\n offset.set(withTiming(0, timing))\n opacity.set(0)\n opacity.set(withTiming(1, timing))\n }, [motion, offset, opacity, reduceMotion, start])\n\n return useAnimatedStyle(() => {\n 'worklet'\n return {\n opacity: opacity.get(),\n transform: [{ translateX: offset.get() }],\n }\n })\n}\n\n/**\n * The container's style for the months a calendar shows: the page's 360dp,\n * or as wide as its months side by side with the room between them.\n */\nfunction useRootStyle(months: number) {\n const theme = useTheme()\n const own = stylesOf(theme)\n\n return useSideBySide(months)\n ? composeStyles<ViewStyle>(own.root, {\n width: rootWidthOf(theme, months),\n })\n : own.root\n}\n\n// Whether a calendar's months sit side by side, which they do from the\n// expanded window size up, as web's do; below it they stack.\nfunction useSideBySide(months: number) {\n const sizeClass = useWindowSizeClass()\n\n return months > 1 && sizeClass !== 'compact' && sizeClass !== 'medium'\n}\n\n// The months the calendar shows, which the plain header draws between its\n// chevrons and the calendar's name ends with: one month and its year, or the\n// first and last of several as a range, which `spoken` writes in React Aria's\n// words for a screen reader, as React Aria writes the two.\nfunction visibleRangeOf(\n state: SomeCalendarState,\n locale: string,\n spoken = false,\n) {\n const { end, start } = state.visibleRange\n const { timeZone } = state\n const formatter = new DateFormatter(locale, {\n calendar: start.calendar.identifier,\n era: eraOf(start) ?? eraOf(end),\n month: 'long',\n timeZone,\n year: 'numeric',\n })\n const first = start.calendar.getFormattableMonth?.(start) ?? start\n\n if (isSameMonth(start, end)) {\n return formatter.format(first.toDate(timeZone))\n }\n\n const last = end.calendar.getFormattableMonth?.(end) ?? end\n\n return spoken\n ? spokenRangeOf(formatter, locale, first, last, timeZone)\n : formatter.formatRange(first.toDate(timeZone), last.toDate(timeZone))\n}\n\n// The weekday row, in the locale's narrow names from the day its week starts\n// on, or the day `firstDayOfWeek` names.\nfunction weekdaysOf(\n state: SomeCalendarState,\n locale: string,\n firstDayOfWeek: undefined | Weekday,\n) {\n const first = startOfWeek(today(state.timeZone), locale, firstDayOfWeek)\n const formatter = new DateFormatter(locale, {\n timeZone: state.timeZone,\n weekday: 'narrow',\n })\n\n return Array.from({ length: 7 }, (_unused, index) => {\n const date = first.add({ days: index })\n\n return {\n key: date.toString(),\n label: formatter.format(date.toDate(state.timeZone)),\n }\n })\n}\n\n// The weeks of the month a grid shows, from the first day of that month, each\n// seven days from the locale's first day of the week. A day a calendar system\n// lacks is a gap.\nfunction weeksOf(state: SomeCalendarState, start: CalendarDate) {\n return Array.from(\n { length: state.getWeeksInMonth(start) },\n (_unused, week) => {\n const key = start.add({ weeks: week }).toString()\n\n return {\n days: state.getDatesInWeek(week, start).map((date, day) => ({\n date,\n key: date?.toString() ?? `${key}+${String(day)}`,\n })),\n key,\n }\n },\n )\n}\n\n/** The open year list: the years either side of the one shown. */\nfunction YearList({\n locale,\n setOpen,\n state,\n}: PartProps & { readonly setOpen: (open: null | OpenList) => void }) {\n const { entries, shown } = yearsOf(state, locale)\n\n return (\n <MenuList\n disabled={NONE}\n entries={entries}\n name={messagesFor(locale).calendar.year}\n onChoose={chooseThen(state, setOpen, shown)}\n shown={shown}\n />\n )\n}\n\n// The year shown, which the header's year button names.\nfunction yearOf(state: SomeCalendarState, locale: string) {\n const { focusedDate, timeZone } = state\n\n return new DateFormatter(locale, {\n calendar: focusedDate.calendar.identifier,\n era: eraOf(focusedDate),\n timeZone,\n year: 'numeric',\n }).format(focusedDate.toDate(timeZone))\n}\n\n// The years the open list holds, as React Aria's year picker lists them: as\n// many either side of the year shown as `LISTED_YEARS` allows, shifted to\n// stay inside `minValue` and `maxValue` and cut short where those are nearer.\n// An entry's id is its place in the list, since in some calendars, such as\n// the Japanese, the era changes as well as the year.\nfunction yearsOf(state: SomeCalendarState, locale: string) {\n const { focusedDate, maxValue, minValue, timeZone } = state\n const formatter = new DateFormatter(locale, {\n calendar: focusedDate.calendar.identifier,\n era: eraOf(focusedDate),\n timeZone,\n year: 'numeric',\n })\n let first = focusedDate.subtract({ years: Math.floor(LISTED_YEARS / 2) })\n let last = focusedDate.add({ years: Math.ceil(LISTED_YEARS / 2) - 1 })\n\n if (maxValue != null && last.compare(maxValue) > 0) {\n last = toCalendarDate(maxValue)\n first = last.subtract({ years: LISTED_YEARS - 1 })\n }\n\n if (minValue != null && first.compare(minValue) < 0) {\n first = toCalendarDate(minValue)\n last = first.add({ years: LISTED_YEARS - 1 })\n if (maxValue != null && last.compare(maxValue) > 0) {\n last = toCalendarDate(maxValue)\n }\n }\n\n const entries: ListEntry[] = []\n let shown = 0\n\n for (\n let date = first;\n date.compare(last) <= 0 || isSameYear(date, last);\n date = date.add({ years: 1 })\n ) {\n const entry = date.compare(last) > 0 ? last : date\n\n if (isSameYear(entry, focusedDate)) {\n shown = entries.length\n }\n entries.push({\n date: entry,\n formatted: formatter.format(entry.toDate(timeZone)),\n id: entries.length,\n })\n }\n\n return { entries, shown }\n}\n\nconst NONE: ReadonlySet<number> = new Set()\n\nexport { CalendarFocusContext, CalendarFrame, useRootStyle, visibleRangeOf }\nexport type { Weekday }\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["CalendarDate","ComponentRef","ReactNode","RefObject","HostInstance","ListRenderItemInfo","StyleProp","TextStyle","ViewStyle","CalendarState","RangeCalendarState","DateFormatter","endOfMonth","isSameDay","isSameMonth","isSameYear","isToday","startOfMonth","startOfWeek","toCalendarDate","today","createContext","use","useLayoutEffect","useRef","useState","FlatList","I18nManager","Text","NativeText","Pressable","StyleSheet","View","Animated","Easing","useAnimatedStyle","useReducedMotion","useSharedValue","withTiming","ResolvedTheme","IconButton","ArrowDropDownGlyph","CheckGlyph","ChevronEndGlyph","useWindowSizeClass","messagesFor","useFocusOnPlaced","useReturnFocus","hitSlop","usePressFeedback","withOpacity","useTheme","composeStyles","useTypeRole","rootWidthOf","SLIDE_DISTANCE","styles","stylesOf","WEEKS_HELD","ListEntry","date","formatted","id","MonthOffset","months","OpenList","CalendarFocusContext","cell","PartProps","locale","state","SomeCalendarState","Weekday","LISTED_YEARS","ROWS_ABOVE_SHOWN","CalendarFrame","t0","$","_c","firstDayOfWeek","showMonthYearMenus","t1","t2","own","sideBySide","useSideBySide","stacked","t3","monthsSideBySide","t4","monthSideBySide","t5","offset","undefined","offsetsOf","map","grids","t6","t7","CalendarHeader","role","T0","header","T1","heading","visibleRangeOf","t8","t9","CalendarMenus","children","words","calendar","open","setOpen","monthButton","yearButton","shownMonth","focusedDate","month","headerGroup","chevronRoom","isDisabled","monthsOf","t10","t11","Symbol","for","toggleThen","t12","t13","t14","t15","t16","t17","yearOf","t18","year","t19","t20","t21","t22","t23","t24","t25","Chevron","direction","previous","isPreviousVisibleRangeInvalid","isNextVisibleRangeInvalid","outside","pageThen","previousGlyphStyle","chevron","chooseThen","shown","entry","setFocusedDate","cornersOf","shape","borderBottomEndRadius","borderBottomStartRadius","borderRadius","borderTopEndRadius","borderTopStartRadius","flatten","DateCell","theme","colors","sizing","isCellDisabled","isCellUnavailable","isUnavailable","selectable","isSelected","isCurrent","timeZone","range","rangeOf","isFilled","isEnd","report","isFocused","dateInRange","isFirst","dateRangeStart","isLast","dateRangeEnd","feedback","color","onPrimary","onSurface","onPrimaryContainer","corners","disabled","onHoverIn","highlightThen","promptOf","dateLabelOf","controlSm","selectThen","handlers","dateToday","dateSelected","ring","layer","dateText","dateTextToday","dateTextInRange","dateTextSelected","dateTextUnavailable","dateTextDisabled","dayOf","full","rangeNameOf","day","era","eraOf","weekday","format","toDate","said","todayDateSelected","todayDate","replace","minValue","minimumDate","maxValue","maximumDate","identifier","formatToParts","find","part","type","value","String","const","highlightDate","layoutOf","height","_data","ArrayLike","index","length","listKeyOf","MenuButton","buttonRef","expanded","label","name","onPress","stateLayerOpacity","onSurfaceVariant","menuButton","menuButtonText","disabledContent","arrowExpanded","MenuList","entries","onChoose","checked","setChecked","controlMd","Math","max","min","rowOf","list","MonthCaption","start","visibleRange","add","getFormattableMonth","monthCaption","monthCaptionText","MonthGrid","slide","useMonthSlide","rowStyle","row","rowHeight","grid","weekdaysOf","key","column","weeksOf","week","days","MonthList","outsideBounds","formatter","Array","from","getMonthsInYear","_unused","set","ReadonlySet","Set","filter","compare","focusNextPage","focusPreviousPage","isRTL","previousGlyphRightToLeft","previousGlyph","isReadOnly","anchorDate","startRangeSelectionPrompt","finishRangeSelectionPrompt","highlightedRange","end","selectedDateDescription","selectedRangeDescription","spokenRangeOf","Row","isChecked","rowPressThen","listRow","listRowSelected","listText","listTextDisabled","listCheck","item","has","selectDate","parts","formatRangeToParts","separator","source","dateRange","textOf","slice","Intl","DateTimeFormatPart","join","update","motion","reduceMotion","opacity","travel","current","timing","duration","durationMedium2","easing","bezier","easingEmphasizedDecelerate","side","get","transform","translateX","useRootStyle","root","width","sizeClass","spoken","first","last","formatRange","toString","getWeeksInMonth","weeks","getDatesInWeek","YearList","yearsOf","NONE","subtract","years","floor","ceil","push","_c","NativeText"],"sources":["../../src/calendar/index.tsx"],"sourcesContent":["import type { CalendarDate } from '@internationalized/date'\nimport type { ComponentRef, ReactNode, RefObject } from 'react'\nimport type {\n HostInstance,\n ListRenderItemInfo,\n StyleProp,\n TextStyle,\n ViewStyle,\n} from 'react-native'\nimport type { CalendarState } from 'react-stately/useCalendarState'\nimport type { RangeCalendarState } from 'react-stately/useRangeCalendarState'\n\nimport {\n DateFormatter,\n endOfMonth,\n isSameDay,\n isSameMonth,\n isSameYear,\n isToday,\n startOfMonth,\n startOfWeek,\n toCalendarDate,\n today,\n} from '@internationalized/date'\nimport { createContext, use, useLayoutEffect, useRef, useState } from 'react'\nimport {\n FlatList,\n I18nManager,\n Text as NativeText,\n Pressable,\n StyleSheet,\n View,\n} from 'react-native'\nimport Animated, {\n Easing,\n useAnimatedStyle,\n useReducedMotion,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated'\n\nimport type { ResolvedTheme } from '../theme/scope'\n\nimport { IconButton } from '../components/icon-button'\nimport { ArrowDropDownGlyph, CheckGlyph, ChevronEndGlyph } from '../glyphs'\nimport { useWindowSizeClass } from '../hooks/useWindowSizeClass'\nimport { messagesFor } from '../i18n'\nimport { useFocusOnPlaced, useReturnFocus } from '../overlay/panel'\nimport { hitSlop, usePressFeedback } from '../press'\nimport { withOpacity } from '../theme/color'\nimport { useTheme } from '../theme/scope'\nimport { composeStyles } from '../theme/styles'\nimport { useTypeRole } from '../typography/roles'\nimport {\n rootWidthOf,\n SLIDE_DISTANCE,\n styles,\n stylesOf,\n WEEKS_HELD,\n} from './styles'\n\n// The parts Calendar and RangeCalendar both draw inside their container: the\n// row that moves the month, the weekday row, the weeks and the date cell, and\n// the month and year lists that take the grid's place. Apart from either\n// component so the two cannot drift, and so each directory under\n// src/components holds one component, as kanso-ui keeps its own in\n// src/calendar.\n\n/** One entry of a month or year list. */\ntype ListEntry = {\n readonly date: CalendarDate\n readonly formatted: string\n readonly id: number\n}\n\n/** A month's distance from the first one a calendar shows. */\ntype MonthOffset = { readonly months: number }\n\ntype OpenList = 'month' | 'year'\n\n/**\n * Where a calendar hands over the cell of the date it is on, the one held or\n * else the one it opened on, for a surface that sends a screen reader to that\n * date as it opens, as a date picker's does. The cell hands itself over as it\n * becomes that date and `null` as it stops being it. Outside such a surface\n * it is `null`, and no cell hands anything over.\n */\nconst CalendarFocusContext = createContext<\n ((cell: HostInstance | null) => void) | null\n>(null)\n\ntype PartProps = {\n readonly locale: string\n readonly state: SomeCalendarState\n}\n\n/** The state of either calendar, one date's or a range's. */\ntype SomeCalendarState = CalendarState | RangeCalendarState\n\n/** The day a locale's week starts on, where the call site names one. */\ntype Weekday = 'fri' | 'mon' | 'sat' | 'sun' | 'thu' | 'tue' | 'wed'\n\n// How many years the open year list holds: a century either side of the year\n// shown, and that year, as kanso-ui's does. The bounds cut it short where they\n// fall inside.\nconst LISTED_YEARS = 201\n\n// An open list holds the weekday row and six weeks of room, seven rows, and\n// opens with the entry shown in the middle one, three rows from the top.\nconst ROWS_ABOVE_SHOWN = WEEKS_HELD / 2\n\n/**\n * What a calendar draws inside its container: the header, and a grid for each\n * month it shows. With `showMonthYearMenus` the header is the date pickers\n * page's docked one, the month and the year as menu buttons, and while either\n * is open its list takes the grid's place.\n *\n * The menus are for one month. They name and pick the first month alone, so\n * a second grid beside it would have no month or year of its own; with more\n * than one the header is the plain one, whose heading names every month\n * shown, both years where they are two, as web's does.\n */\nfunction CalendarFrame({\n firstDayOfWeek,\n locale,\n months,\n showMonthYearMenus,\n state,\n}: PartProps & {\n readonly firstDayOfWeek: undefined | Weekday\n /** How many months the calendar shows. */\n readonly months: number\n readonly showMonthYearMenus: boolean\n}) {\n const own = stylesOf(useTheme())\n const sideBySide = useSideBySide(months)\n const stacked = months > 1 && !sideBySide\n const grids = (\n <View style={sideBySide ? own.monthsSideBySide : own.months}>\n {offsetsOf(months).map((offset) => (\n <View\n key={offset.months}\n style={sideBySide ? own.monthSideBySide : undefined}\n >\n {stacked ? (\n <MonthCaption locale={locale} offset={offset} state={state} />\n ) : null}\n <MonthGrid\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n offset={offset}\n stacked={stacked}\n state={state}\n />\n </View>\n ))}\n </View>\n )\n\n if (showMonthYearMenus && months <= 1) {\n return (\n <CalendarMenus locale={locale} state={state}>\n {grids}\n </CalendarMenus>\n )\n }\n\n return (\n <>\n <CalendarHeader locale={locale} state={state} />\n {grids}\n </>\n )\n}\n\n/** The two chevrons with the month and year between them. */\nfunction CalendarHeader({ locale, state }: PartProps) {\n const own = stylesOf(useTheme())\n const role = useTypeRole('labelLarge')\n\n return (\n <View style={own.header}>\n <Chevron direction=\"previous\" locale={locale} state={state} />\n <NativeText\n aria-live=\"polite\"\n role=\"heading\"\n style={composeStyles<TextStyle>(role, own.heading)}\n >\n {visibleRangeOf(state, locale)}\n </NativeText>\n <Chevron direction=\"next\" locale={locale} state={state} />\n </View>\n )\n}\n\n/**\n * The docked header: the month's menu button between the chevrons that step\n * it, and the year's after them. A press opens the button's list in the\n * grid's place, where the page draws it, rather than in a menu over it; a\n * calendar inside a picker is already in one. While a list is open the\n * chevrons give way to the room they took and the other button is disabled,\n * and choosing an entry, or pressing the one already checked, closes the\n * list and sends the screen reader back to its button.\n *\n * The month list names the months in full where the button names the month\n * short, as the page does. The year list runs a century either side of the\n * year shown, and `minValue` and `maxValue` cut it short; a month with no day\n * inside them is disabled.\n */\nfunction CalendarMenus({\n children,\n locale,\n state,\n}: PartProps & { readonly children: ReactNode }) {\n const own = stylesOf(useTheme())\n const words = messagesFor(locale).calendar\n const [open, setOpen] = useState<null | OpenList>(null)\n const monthButton = useRef<ComponentRef<typeof View>>(null)\n const yearButton = useRef<ComponentRef<typeof View>>(null)\n const shownMonth = state.focusedDate.month - 1\n\n useReturnFocus(open === 'month', false, monthButton)\n useReturnFocus(open === 'year', false, yearButton)\n\n return (\n <>\n <View style={own.header}>\n <View style={own.headerGroup}>\n {open === null ? (\n <Chevron direction=\"previous\" locale={locale} state={state} />\n ) : (\n <View style={own.chevronRoom} />\n )}\n <MenuButton\n buttonRef={monthButton}\n expanded={open === 'month'}\n isDisabled={state.isDisabled || open === 'year'}\n label={monthsOf(state, locale, 'short')[shownMonth]?.formatted}\n name={words.month}\n onPress={toggleThen(setOpen, 'month')}\n />\n {open === null ? (\n <Chevron direction=\"next\" locale={locale} state={state} />\n ) : (\n <View style={own.chevronRoom} />\n )}\n </View>\n <MenuButton\n buttonRef={yearButton}\n expanded={open === 'year'}\n isDisabled={state.isDisabled || open === 'month'}\n label={yearOf(state, locale)}\n name={words.year}\n onPress={toggleThen(setOpen, 'year')}\n />\n </View>\n {open === null ? children : null}\n {open === 'month' ? (\n <MonthList locale={locale} setOpen={setOpen} state={state} />\n ) : null}\n {open === 'year' ? (\n <YearList locale={locale} setOpen={setOpen} state={state} />\n ) : null}\n </>\n )\n}\n\n/**\n * A chevron that moves the month, the icon buttons page's standard 40dp\n * button. Disabled where the month it would move to is outside `minValue`\n * and `maxValue`, or the whole calendar is disabled.\n */\nfunction Chevron({\n direction,\n locale,\n state,\n}: PartProps & { readonly direction: 'next' | 'previous' }) {\n const own = stylesOf(useTheme())\n const previous = direction === 'previous'\n const outside = previous\n ? state.isPreviousVisibleRangeInvalid()\n : state.isNextVisibleRangeInvalid()\n\n return (\n <IconButton\n aria-label={messagesFor(locale).calendar[direction]}\n isDisabled={state.isDisabled || outside}\n onPress={pageThen(state, direction)}\n style={own.chevron}\n >\n <ChevronEndGlyph style={previous ? previousGlyphStyle() : undefined} />\n </IconButton>\n )\n}\n\n// Chooses an entry of the open list and closes it. The entry already shown\n// closes it without moving anything.\nfunction chooseThen(\n state: SomeCalendarState,\n setOpen: (open: null | OpenList) => void,\n shown: number,\n) {\n return (entry: ListEntry) => {\n if (entry.id !== shown) {\n state.setFocusedDate(entry.date)\n }\n setOpen(null)\n }\n}\n\n// The corners of a date's shape, which its state layer and ripple clip to.\n// The corners alone: the shape's size and margins are the date's, and on the\n// layer, which fills the date, the margins would move it off the circle.\nfunction cornersOf(shape: StyleProp<ViewStyle>) {\n const {\n borderBottomEndRadius,\n borderBottomStartRadius,\n borderRadius,\n borderTopEndRadius,\n borderTopStartRadius,\n }: ViewStyle = StyleSheet.flatten(shape) ?? {}\n\n return {\n borderBottomEndRadius,\n borderBottomStartRadius,\n borderRadius,\n borderTopEndRadius,\n borderTopStartRadius,\n }\n}\n\n/**\n * One date: the page's 40dp circle in its 48dp square, which `hitSlop` makes\n * the press target. Its name is the date in full, with today, the selection\n * and the first or last date the bounds allow said as web says them, and it\n * reports itself disabled where it cannot be picked, as a date of the months\n * either side of its grid's is.\n *\n * In a range calendar a selected day is the band instead, as wide as its\n * column, with the two ends filled and round on their outer side, and the\n * state layers follow the ground under them: on primary over an end, on\n * primary container over the band, on surface elsewhere. While a range is\n * started, a pointer over a date draws the range as far as it, as web's\n * does; a touch has no such preview, and the second press ends the range.\n */\nfunction DateCell({\n date,\n locale,\n month,\n state,\n}: PartProps & {\n readonly date: CalendarDate\n /** The first day of the month the date's grid shows. */\n readonly month: CalendarDate\n}) {\n const theme = useTheme()\n const { colors, sizing } = theme\n const own = stylesOf(theme)\n const role = useTypeRole('bodyLarge')\n const isDisabled = state.isCellDisabled(date) || !isSameMonth(date, month)\n const isUnavailable = state.isCellUnavailable(date)\n const selectable = !isDisabled && !isUnavailable\n const isSelected = selectable && state.isSelected(date)\n const isCurrent = isToday(date, state.timeZone)\n const range = rangeOf(state, date, isSelected)\n const isFilled = range === null ? isSelected : range.isEnd\n // The date the calendar is on, in its own month's grid rather than as the\n // spill of the month beside it, is the cell a picker sends a reader to.\n const report = use(CalendarFocusContext)\n const isFocused =\n isSameMonth(date, month) && isSameDay(date, state.focusedDate)\n const shape = composeStyles<ViewStyle>(\n own.date,\n range === null ? undefined : own.dateInRange,\n range?.isFirst === true ? own.dateRangeStart : undefined,\n range?.isLast === true ? own.dateRangeEnd : undefined,\n )\n const feedback = usePressFeedback({\n color: isFilled\n ? colors.onPrimary\n : range === null\n ? colors.onSurface\n : colors.onPrimaryContainer,\n corners: cornersOf(shape),\n disabled: !selectable,\n onHoverIn: highlightThen(state, date),\n })\n\n return (\n <Pressable\n accessibilityHint={promptOf(state, locale, selectable)}\n aria-label={dateLabelOf(date, state, locale, isCurrent, isSelected)}\n hitSlop={hitSlop(\n sizing.controlSm,\n range === null ? sizing.controlSm : undefined,\n )}\n onPress={selectThen(state, date)}\n ref={isFocused && report !== null ? report : undefined}\n role=\"button\"\n {...feedback.handlers}\n disabled={!selectable}\n style={composeStyles<ViewStyle>(\n shape,\n isCurrent ? own.dateToday : undefined,\n isFilled ? own.dateSelected : undefined,\n feedback.ring,\n )}\n >\n {feedback.layer}\n <NativeText\n style={composeStyles<TextStyle>(\n role,\n own.dateText,\n isCurrent ? own.dateTextToday : undefined,\n range === null ? undefined : own.dateTextInRange,\n isFilled ? own.dateTextSelected : undefined,\n isUnavailable ? own.dateTextUnavailable : undefined,\n isDisabled ? own.dateTextDisabled : undefined,\n )}\n >\n {dayOf(date, state, locale)}\n </NativeText>\n </Pressable>\n )\n}\n\n// A date's name: the date in full, as today or as the one held where it is\n// either, then as the first or last date the bounds allow where it is that.\n// A range's two ends open with the whole range, once one is chosen. React\n// Aria's own wording, from its calendar dictionary.\nfunction dateLabelOf(\n date: CalendarDate,\n state: SomeCalendarState,\n locale: string,\n isCurrent: boolean,\n isSelected: boolean,\n) {\n const words = messagesFor(locale).calendar\n const full = `${rangeNameOf(state, date, locale)}${new DateFormatter(locale, {\n day: 'numeric',\n era: eraOf(date),\n month: 'long',\n timeZone: state.timeZone,\n weekday: 'long',\n year: 'numeric',\n }).format(date.toDate(state.timeZone))}`\n const said = isCurrent\n ? (isSelected ? words.todayDateSelected : words.todayDate).replace(\n '{date}',\n full,\n )\n : isSelected\n ? words.dateSelected.replace('{date}', full)\n : full\n\n if (state.minValue != null && isSameDay(date, state.minValue)) {\n return `${said}, ${words.minimumDate}`\n }\n\n if (state.maxValue != null && isSameDay(date, state.maxValue)) {\n return `${said}, ${words.maximumDate}`\n }\n\n return said\n}\n\n// The date's number in the grid, in the locale's digits: the day alone out of\n// a formatted date, as React Aria takes it, so a locale that writes a unit\n// after the day, as Japanese does, draws the number alone.\nfunction dayOf(date: CalendarDate, state: SomeCalendarState, locale: string) {\n return (\n new DateFormatter(locale, {\n calendar: date.calendar.identifier,\n day: 'numeric',\n timeZone: state.timeZone,\n })\n .formatToParts(date.toDate(state.timeZone))\n .find((part) => part.type === 'day')?.value ?? String(date.day)\n )\n}\n\n// The era is written only where a Gregorian date falls before the common era,\n// as React Aria writes it.\nfunction eraOf(date: CalendarDate) {\n return date.calendar.identifier === 'gregory' && date.era === 'BC'\n ? ('short' as const)\n : undefined\n}\n\n// Draws a started range as far as the date a pointer is over, as web's does.\n// Nothing in a calendar of one date; before a range is started, React\n// Stately's own `highlightDate` does nothing.\nfunction highlightThen(state: SomeCalendarState, date: CalendarDate) {\n if (!('highlightDate' in state)) {\n return undefined\n }\n\n return () => {\n state.highlightDate(date)\n }\n}\n\n// The row a list's row occupies, which is every row's 48dp, so the list can\n// open scrolled to the entry shown without laying out the rows before it.\nfunction layoutOf(height: number) {\n return (_data: ArrayLike<ListEntry> | null | undefined, index: number) => ({\n index,\n length: height,\n offset: height * index,\n })\n}\n\nfunction listKeyOf(entry: ListEntry) {\n return String(entry.id)\n}\n\n/**\n * The month or the year as the page's menu button, opening its list. Named\n * by what it shows and then by what it is, \"Sep month\", which keeps the\n * visible text the start of the name.\n */\nfunction MenuButton({\n buttonRef,\n expanded,\n isDisabled,\n label,\n name,\n onPress,\n}: {\n readonly buttonRef: RefObject<ComponentRef<typeof View> | null>\n readonly expanded: boolean\n readonly isDisabled: boolean\n readonly label: string | undefined\n readonly name: string\n readonly onPress: () => void\n}) {\n const theme = useTheme()\n const { colors, sizing, stateLayerOpacity } = theme\n const own = stylesOf(theme)\n const role = useTypeRole('labelLarge')\n const feedback = usePressFeedback({\n color: colors.onSurfaceVariant,\n corners: own.menuButton,\n disabled: isDisabled,\n })\n\n return (\n <Pressable\n aria-expanded={expanded}\n aria-label={`${label ?? ''} ${name}`}\n hitSlop={hitSlop(sizing.controlSm)}\n onPress={onPress}\n ref={buttonRef}\n role=\"button\"\n {...feedback.handlers}\n disabled={isDisabled}\n style={composeStyles<ViewStyle>(own.menuButton, feedback.ring)}\n >\n {feedback.layer}\n <NativeText\n style={composeStyles<TextStyle>(\n role,\n own.menuButtonText,\n isDisabled ? own.dateTextDisabled : undefined,\n )}\n >\n {label}\n </NativeText>\n <ArrowDropDownGlyph\n color={\n isDisabled\n ? withOpacity(colors.onSurface, stateLayerOpacity.disabledContent)\n : colors.onSurfaceVariant\n }\n size={18}\n style={expanded ? own.arrowExpanded : undefined}\n />\n </Pressable>\n )\n}\n\n/**\n * An open month or year list, in the grid's place: a list of radio rows, the\n * entry shown checked, opening scrolled so that entry sits in the middle with\n * the entries either side of it in view. The screen reader is sent to it as\n * it opens.\n */\nfunction MenuList({\n disabled,\n entries,\n name,\n onChoose,\n shown,\n}: {\n readonly disabled: ReadonlySet<number>\n readonly entries: readonly ListEntry[]\n readonly name: string\n readonly onChoose: (entry: ListEntry) => void\n readonly shown: number\n}) {\n const theme = useTheme()\n const own = stylesOf(theme)\n const [checked, setChecked] = useState<HostInstance | null>(null)\n\n useFocusOnPlaced(true, checked)\n\n return (\n <FlatList\n aria-label={name}\n data={entries}\n getItemLayout={layoutOf(theme.sizing.controlMd)}\n initialScrollIndex={Math.max(\n 0,\n Math.min(shown - ROWS_ABOVE_SHOWN, entries.length - (WEEKS_HELD + 1)),\n )}\n keyExtractor={listKeyOf}\n renderItem={rowOf({ disabled, onChoose, setChecked, shown })}\n role=\"radiogroup\"\n style={own.list}\n />\n )\n}\n\n/**\n * The name of the month a grid shows, over the grid, while several stack. The\n * heading between the chevrons names them all at once, which reads across\n * months side by side in order; stacked, the second month sat under the\n * first's last week with nothing saying which month it was. Formatted as the\n * heading names a month: in full with its year, in the calendar's system and\n * time zone, with the era where a Gregorian date falls before the common one.\n *\n * Hidden from a screen reader, which hears the month already with each date.\n */\nfunction MonthCaption({\n locale,\n offset,\n state,\n}: PartProps & {\n /** How far the month is from the first one the calendar shows. */\n readonly offset: MonthOffset\n}) {\n const own = stylesOf(useTheme())\n const role = useTypeRole('titleSmall')\n const start = state.visibleRange.start.add(offset)\n const month = start.calendar.getFormattableMonth?.(start) ?? start\n\n return (\n <View aria-hidden style={own.monthCaption}>\n <NativeText\n numberOfLines={1}\n style={composeStyles<TextStyle>(role, own.monthCaptionText)}\n >\n {new DateFormatter(locale, {\n calendar: start.calendar.identifier,\n era: eraOf(start),\n month: 'long',\n timeZone: state.timeZone,\n year: 'numeric',\n }).format(month.toDate(state.timeZone))}\n </NativeText>\n </View>\n )\n}\n\n/**\n * The weekday row and one month's weeks, held at six weeks of room so the\n * calendar keeps its height from month to month. The weeks slide in from the\n * side the new month comes from.\n */\nfunction MonthGrid({\n firstDayOfWeek,\n locale,\n offset,\n stacked,\n state,\n}: PartProps & {\n readonly firstDayOfWeek: undefined | Weekday\n /** How far the month is from the first one the calendar shows. */\n readonly offset: MonthOffset\n /**\n * Whether the month is one of several one under another, which takes the\n * height of its own weeks rather than six.\n */\n readonly stacked: boolean\n}) {\n const theme = useTheme()\n const own = stylesOf(theme)\n const role = useTypeRole('bodyLarge')\n const start = state.visibleRange.start.add(offset)\n const slide = useMonthSlide(start, theme)\n const rowStyle = composeStyles<ViewStyle>(styles.row, own.rowHeight)\n\n return (\n <View style={stacked ? undefined : own.grid}>\n <View aria-hidden style={rowStyle}>\n {weekdaysOf(state, locale, firstDayOfWeek).map((weekday) => (\n <View key={weekday.key} style={styles.column}>\n <NativeText style={composeStyles<TextStyle>(role, own.weekday)}>\n {weekday.label}\n </NativeText>\n </View>\n ))}\n </View>\n <Animated.View style={slide}>\n {weeksOf(state, start).map((week) => (\n <View key={week.key} style={rowStyle}>\n {week.days.map((day) => (\n <View key={day.key} style={styles.column}>\n {day.date === null ? null : (\n <DateCell\n date={day.date}\n locale={locale}\n month={start}\n state={state}\n />\n )}\n </View>\n ))}\n </View>\n ))}\n </Animated.View>\n </View>\n )\n}\n\n/** The open month list: the months of the year shown, named in full. */\nfunction MonthList({\n locale,\n setOpen,\n state,\n}: PartProps & { readonly setOpen: (open: null | OpenList) => void }) {\n const months = monthsOf(state, locale, 'long')\n const shown = state.focusedDate.month - 1\n\n return (\n <MenuList\n disabled={outsideBounds(state, months)}\n entries={months}\n name={messagesFor(locale).calendar.month}\n onChoose={chooseThen(state, setOpen, shown)}\n shown={shown}\n />\n )\n}\n\n// The months of the year shown, named short for the header's button or in\n// full for the open list. Some calendar systems, such as the Hebrew, have\n// more months in some years than in others.\nfunction monthsOf(\n state: SomeCalendarState,\n locale: string,\n format: 'long' | 'short',\n): readonly ListEntry[] {\n const { focusedDate, timeZone } = state\n const formatter = new DateFormatter(locale, {\n calendar: focusedDate.calendar.identifier,\n month: format,\n timeZone,\n })\n\n return Array.from(\n { length: focusedDate.calendar.getMonthsInYear(focusedDate) },\n (_unused, index) => {\n const date = focusedDate.set({ month: index + 1 })\n const shown = date.calendar.getFormattableMonth?.(date) ?? date\n\n return {\n date,\n formatted: formatter.format(shown.toDate(timeZone)),\n id: index,\n }\n },\n )\n}\n\n// One offset per month a calendar shows, the first month's none.\nfunction offsetsOf(months: number): readonly MonthOffset[] {\n return Array.from({ length: Math.max(1, months) }, (_unused, index) => ({\n months: index,\n }))\n}\n\n// The months the bounds leave no day of.\nfunction outsideBounds(\n state: SomeCalendarState,\n months: readonly ListEntry[],\n): ReadonlySet<number> {\n const { maxValue, minValue } = state\n\n return new Set(\n months\n .filter(\n ({ date }) =>\n (maxValue != null && startOfMonth(date).compare(maxValue) > 0) ||\n (minValue != null && endOfMonth(date).compare(minValue) < 0),\n )\n .map(({ id }) => id),\n )\n}\n\nfunction pageThen(state: SomeCalendarState, direction: 'next' | 'previous') {\n return () => {\n if (direction === 'next') {\n state.focusNextPage()\n } else {\n state.focusPreviousPage()\n }\n }\n}\n\nfunction previousGlyphStyle() {\n return I18nManager.isRTL\n ? styles.previousGlyphRightToLeft\n : styles.previousGlyph\n}\n\n// What pressing a date in a range calendar does, as the screen reader's hint\n// on it: start a range, or end the one started. React Aria says it at the date\n// focused, which on a device is the one the screen reader is on. Nothing in a\n// calendar of one date, or where the press would do nothing.\nfunction promptOf(\n state: SomeCalendarState,\n locale: string,\n selectable: boolean,\n) {\n if (!('anchorDate' in state) || state.isReadOnly || !selectable) {\n return undefined\n }\n\n const words = messagesFor(locale).calendar\n\n return state.anchorDate === null\n ? words.startRangeSelectionPrompt\n : words.finishRangeSelectionPrompt\n}\n\n// What the two ends of the range a range calendar holds say before the date:\n// the range, or the day where it is one, as React Aria opens their names with\n// it. Nothing while a range is started, which holds nothing yet, or for any\n// other date.\nfunction rangeNameOf(\n state: SomeCalendarState,\n date: CalendarDate,\n locale: string,\n) {\n if (\n !('highlightedRange' in state) ||\n state.value === null ||\n state.anchorDate !== null ||\n state.highlightedRange === null ||\n (!isSameDay(date, state.value.start) && !isSameDay(date, state.value.end))\n ) {\n return ''\n }\n\n const { end, start } = state.highlightedRange\n const { timeZone } = state\n const words = messagesFor(locale).calendar\n const formatter = new DateFormatter(locale, {\n day: 'numeric',\n era: eraOf(start) ?? eraOf(end),\n month: 'long',\n timeZone,\n weekday: 'long',\n year: 'numeric',\n })\n const said = isSameDay(start, end)\n ? words.selectedDateDescription.replace(\n '{date}',\n formatter.format(start.toDate(timeZone)),\n )\n : words.selectedRangeDescription.replace(\n '{dateRange}',\n spokenRangeOf(formatter, locale, start, end, timeZone),\n )\n\n return `${said}, `\n}\n\n// Where a selected date sits in a range calendar's range: its first or last\n// day, either of which is an end, or between them. Null in a calendar of one\n// date, and for a date outside the range.\nfunction rangeOf(\n state: SomeCalendarState,\n date: CalendarDate,\n isSelected: boolean,\n) {\n if (\n !isSelected ||\n !('highlightedRange' in state) ||\n state.highlightedRange === null\n ) {\n return null\n }\n\n const isFirst = isSameDay(date, state.highlightedRange.start)\n const isLast = isSameDay(date, state.highlightedRange.end)\n\n return { isEnd: isFirst || isLast, isFirst, isLast }\n}\n\n/**\n * One row of an open list: the check where the row is the entry shown, the\n * room it takes where it is not, then the month or the year, in body large.\n */\nfunction Row({\n entry,\n isChecked,\n isDisabled,\n onChoose,\n setChecked,\n}: {\n readonly entry: ListEntry\n readonly isChecked: boolean\n readonly isDisabled: boolean\n readonly onChoose: (entry: ListEntry) => void\n readonly setChecked: (row: HostInstance | null) => void\n}) {\n const theme = useTheme()\n const own = stylesOf(theme)\n const role = useTypeRole('bodyLarge')\n const feedback = usePressFeedback({\n color: theme.colors.onSurface,\n disabled: isDisabled,\n })\n\n return (\n <Pressable\n aria-checked={isChecked}\n onPress={rowPressThen(onChoose, entry)}\n ref={isChecked ? setChecked : undefined}\n role=\"radio\"\n {...feedback.handlers}\n disabled={isDisabled}\n style={composeStyles<ViewStyle>(\n own.listRow,\n isChecked ? own.listRowSelected : undefined,\n feedback.ring,\n )}\n >\n {feedback.layer}\n <View style={own.listCheck}>\n {isChecked ? <CheckGlyph color={theme.colors.onSurface} /> : null}\n </View>\n <NativeText\n style={composeStyles<TextStyle>(\n role,\n own.listText,\n isDisabled ? own.listTextDisabled : undefined,\n )}\n >\n {entry.formatted}\n </NativeText>\n </Pressable>\n )\n}\n\nfunction rowOf({\n disabled,\n onChoose,\n setChecked,\n shown,\n}: {\n readonly disabled: ReadonlySet<number>\n readonly onChoose: (entry: ListEntry) => void\n readonly setChecked: (row: HostInstance | null) => void\n readonly shown: number\n}) {\n return ({ item }: ListRenderItemInfo<ListEntry>) => (\n <Row\n entry={item}\n isChecked={item.id === shown}\n isDisabled={disabled.has(item.id)}\n onChoose={onChoose}\n setChecked={setChecked}\n />\n )\n}\n\nfunction rowPressThen(onChoose: (entry: ListEntry) => void, entry: ListEntry) {\n return () => {\n onChoose(entry)\n }\n}\n\n// Picks a date and moves the calendar's focus to it, as a press on one does\n// on web. A read-only or disabled calendar's state ignores the pick.\nfunction selectThen(state: SomeCalendarState, date: CalendarDate) {\n return () => {\n state.selectDate(date)\n state.setFocusedDate(date)\n }\n}\n\n// Two dates as a range in the calendar's `dateRange` words, each written as\n// much as the other leaves out, \"September 8 to 15, 2026\". React Aria splits\n// the formatted range at the last literal its two halves share before the\n// end begins, and so does this.\nfunction spokenRangeOf(\n formatter: DateFormatter,\n locale: string,\n start: CalendarDate,\n end: CalendarDate,\n timeZone: string,\n) {\n const parts = formatter.formatRangeToParts(\n start.toDate(timeZone),\n end.toDate(timeZone),\n )\n let separator = -1\n\n for (const [index, part] of parts.entries()) {\n if (part.source === 'endRange') {\n break\n }\n if (part.source === 'shared' && part.type === 'literal') {\n separator = index\n }\n }\n\n return messagesFor(locale)\n .calendar.dateRange.replace(\n '{startDate}',\n textOf(parts.slice(0, Math.max(0, separator))),\n )\n .replace('{endDate}', textOf(parts.slice(separator + 1)))\n}\n\nfunction textOf(parts: readonly Intl.DateTimeFormatPart[]) {\n return parts.map((part) => part.value).join('')\n}\n\nfunction toggleThen(\n setOpen: (update: (open: null | OpenList) => null | OpenList) => void,\n list: OpenList,\n) {\n return () => {\n setOpen((open) => (open === list ? null : list))\n }\n}\n\n/**\n * Slides the weeks in from the side the new month comes from as the month\n * moves, 30dp over the medium duration on the emphasised decelerating curve,\n * fading in as they come: Material Design's shared axis transition for an\n * incoming page. The side follows the writing direction, so a later month\n * arrives from the end. Under reduced motion the month changes at once.\n */\nfunction useMonthSlide(start: CalendarDate, { motion }: ResolvedTheme) {\n const reduceMotion = useReducedMotion()\n const offset = useSharedValue(0)\n const opacity = useSharedValue(1)\n const shown = useRef(start)\n\n useLayoutEffect(() => {\n const travel = start.compare(shown.current)\n\n shown.current = start\n if (travel === 0 || reduceMotion) {\n return\n }\n\n const timing = {\n duration: motion.durationMedium2,\n easing: Easing.bezier(...motion.easingEmphasizedDecelerate),\n }\n const side = (travel > 0 ? 1 : -1) * (I18nManager.isRTL ? -1 : 1)\n\n offset.set(side * SLIDE_DISTANCE)\n offset.set(withTiming(0, timing))\n opacity.set(0)\n opacity.set(withTiming(1, timing))\n }, [motion, offset, opacity, reduceMotion, start])\n\n return useAnimatedStyle(() => {\n 'worklet'\n return {\n opacity: opacity.get(),\n transform: [{ translateX: offset.get() }],\n }\n })\n}\n\n/**\n * The container's style for the months a calendar shows: the page's 360dp,\n * or as wide as its months side by side with the room between them.\n */\nfunction useRootStyle(months: number) {\n const theme = useTheme()\n const own = stylesOf(theme)\n\n return useSideBySide(months)\n ? composeStyles<ViewStyle>(own.root, {\n width: rootWidthOf(theme, months),\n })\n : own.root\n}\n\n// Whether a calendar's months sit side by side, which they do from the\n// expanded window size up, as web's do; below it they stack.\nfunction useSideBySide(months: number) {\n const sizeClass = useWindowSizeClass()\n\n return months > 1 && sizeClass !== 'compact' && sizeClass !== 'medium'\n}\n\n// The months the calendar shows, which the plain header draws between its\n// chevrons and the calendar's name ends with: one month and its year, or the\n// first and last of several as a range, which `spoken` writes in React Aria's\n// words for a screen reader, as React Aria writes the two.\nfunction visibleRangeOf(\n state: SomeCalendarState,\n locale: string,\n spoken = false,\n) {\n const { end, start } = state.visibleRange\n const { timeZone } = state\n const formatter = new DateFormatter(locale, {\n calendar: start.calendar.identifier,\n era: eraOf(start) ?? eraOf(end),\n month: 'long',\n timeZone,\n year: 'numeric',\n })\n const first = start.calendar.getFormattableMonth?.(start) ?? start\n\n if (isSameMonth(start, end)) {\n return formatter.format(first.toDate(timeZone))\n }\n\n const last = end.calendar.getFormattableMonth?.(end) ?? end\n\n return spoken\n ? spokenRangeOf(formatter, locale, first, last, timeZone)\n : formatter.formatRange(first.toDate(timeZone), last.toDate(timeZone))\n}\n\n// The weekday row, in the locale's narrow names from the day its week starts\n// on, or the day `firstDayOfWeek` names.\nfunction weekdaysOf(\n state: SomeCalendarState,\n locale: string,\n firstDayOfWeek: undefined | Weekday,\n) {\n const first = startOfWeek(today(state.timeZone), locale, firstDayOfWeek)\n const formatter = new DateFormatter(locale, {\n timeZone: state.timeZone,\n weekday: 'narrow',\n })\n\n return Array.from({ length: 7 }, (_unused, index) => {\n const date = first.add({ days: index })\n\n return {\n key: date.toString(),\n label: formatter.format(date.toDate(state.timeZone)),\n }\n })\n}\n\n// The weeks of the month a grid shows, from the first day of that month, each\n// seven days from the locale's first day of the week. A day a calendar system\n// lacks is a gap.\nfunction weeksOf(state: SomeCalendarState, start: CalendarDate) {\n return Array.from(\n { length: state.getWeeksInMonth(start) },\n (_unused, week) => {\n const key = start.add({ weeks: week }).toString()\n\n return {\n days: state.getDatesInWeek(week, start).map((date, day) => ({\n date,\n key: date?.toString() ?? `${key}+${String(day)}`,\n })),\n key,\n }\n },\n )\n}\n\n/** The open year list: the years either side of the one shown. */\nfunction YearList({\n locale,\n setOpen,\n state,\n}: PartProps & { readonly setOpen: (open: null | OpenList) => void }) {\n const { entries, shown } = yearsOf(state, locale)\n\n return (\n <MenuList\n disabled={NONE}\n entries={entries}\n name={messagesFor(locale).calendar.year}\n onChoose={chooseThen(state, setOpen, shown)}\n shown={shown}\n />\n )\n}\n\n// The year shown, which the header's year button names.\nfunction yearOf(state: SomeCalendarState, locale: string) {\n const { focusedDate, timeZone } = state\n\n return new DateFormatter(locale, {\n calendar: focusedDate.calendar.identifier,\n era: eraOf(focusedDate),\n timeZone,\n year: 'numeric',\n }).format(focusedDate.toDate(timeZone))\n}\n\n// The years the open list holds, as React Aria's year picker lists them: as\n// many either side of the year shown as `LISTED_YEARS` allows, shifted to\n// stay inside `minValue` and `maxValue` and cut short where those are nearer.\n// An entry's id is its place in the list, since in some calendars, such as\n// the Japanese, the era changes as well as the year.\nfunction yearsOf(state: SomeCalendarState, locale: string) {\n const { focusedDate, maxValue, minValue, timeZone } = state\n const formatter = new DateFormatter(locale, {\n calendar: focusedDate.calendar.identifier,\n era: eraOf(focusedDate),\n timeZone,\n year: 'numeric',\n })\n let first = focusedDate.subtract({ years: Math.floor(LISTED_YEARS / 2) })\n let last = focusedDate.add({ years: Math.ceil(LISTED_YEARS / 2) - 1 })\n\n if (maxValue != null && last.compare(maxValue) > 0) {\n last = toCalendarDate(maxValue)\n first = last.subtract({ years: LISTED_YEARS - 1 })\n }\n\n if (minValue != null && first.compare(minValue) < 0) {\n first = toCalendarDate(minValue)\n last = first.add({ years: LISTED_YEARS - 1 })\n if (maxValue != null && last.compare(maxValue) > 0) {\n last = toCalendarDate(maxValue)\n }\n }\n\n const entries: ListEntry[] = []\n let shown = 0\n\n for (\n let date = first;\n date.compare(last) <= 0 || isSameYear(date, last);\n date = date.add({ years: 1 })\n ) {\n const entry = date.compare(last) > 0 ? last : date\n\n if (isSameYear(entry, focusedDate)) {\n shown = entries.length\n }\n entries.push({\n date: entry,\n formatted: formatter.format(entry.toDate(timeZone)),\n id: entries.length,\n })\n }\n\n return { entries, shown }\n}\n\nconst NONE: ReadonlySet<number> = new Set()\n\nexport { CalendarFocusContext, CalendarFrame, useRootStyle, visibleRangeOf }\nexport type { Weekday }\n"],"mappings":"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"}
@@ -121,6 +121,13 @@ const stylesOf = themedStyles(({ colors, radii, sizing, spacing, stateLayerOpaci
121
121
  paddingHorizontal: spacing.sm
122
122
  },
123
123
  menuButtonText: { color: colors.onSurfaceVariant },
124
+ monthCaption: {
125
+ height: row,
126
+ justifyContent: "flex-end",
127
+ paddingBottom: spacing.sm,
128
+ paddingHorizontal: spacing.md
129
+ },
130
+ monthCaptionText: { color: colors.onSurfaceVariant },
124
131
  months: { gap: spacing.xl },
125
132
  monthSideBySide: { width: row * 7 },
126
133
  monthsSideBySide: {