react-native-agenda-kit 0.1.0

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.
Files changed (403) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +364 -0
  3. package/lib/commonjs/agenda/AgendaBackdrop.js +68 -0
  4. package/lib/commonjs/agenda/AgendaBackdrop.js.map +1 -0
  5. package/lib/commonjs/agenda/AgendaList.js +354 -0
  6. package/lib/commonjs/agenda/AgendaList.js.map +1 -0
  7. package/lib/commonjs/agenda/AgendaSlot.js +88 -0
  8. package/lib/commonjs/agenda/AgendaSlot.js.map +1 -0
  9. package/lib/commonjs/agenda/AgendaWindow.js +171 -0
  10. package/lib/commonjs/agenda/AgendaWindow.js.map +1 -0
  11. package/lib/commonjs/agenda/StickyHeaderOverlay.js +125 -0
  12. package/lib/commonjs/agenda/StickyHeaderOverlay.js.map +1 -0
  13. package/lib/commonjs/agenda/buildAgendaLayout.js +100 -0
  14. package/lib/commonjs/agenda/buildAgendaLayout.js.map +1 -0
  15. package/lib/commonjs/agenda/constants.js +29 -0
  16. package/lib/commonjs/agenda/constants.js.map +1 -0
  17. package/lib/commonjs/agenda/heights.js +49 -0
  18. package/lib/commonjs/agenda/heights.js.map +1 -0
  19. package/lib/commonjs/agenda/useAgendaScrollSync.js +204 -0
  20. package/lib/commonjs/agenda/useAgendaScrollSync.js.map +1 -0
  21. package/lib/commonjs/core/ArrowGlyph.js +65 -0
  22. package/lib/commonjs/core/ArrowGlyph.js.map +1 -0
  23. package/lib/commonjs/core/CalendarContext.js +32 -0
  24. package/lib/commonjs/core/CalendarContext.js.map +1 -0
  25. package/lib/commonjs/core/CalendarProvider.js +141 -0
  26. package/lib/commonjs/core/CalendarProvider.js.map +1 -0
  27. package/lib/commonjs/core/CalendarStore.js +70 -0
  28. package/lib/commonjs/core/CalendarStore.js.map +1 -0
  29. package/lib/commonjs/core/KitText.js +23 -0
  30. package/lib/commonjs/core/KitText.js.map +1 -0
  31. package/lib/commonjs/core/TodayButton.js +136 -0
  32. package/lib/commonjs/core/TodayButton.js.map +1 -0
  33. package/lib/commonjs/core/civil.js +101 -0
  34. package/lib/commonjs/core/civil.js.map +1 -0
  35. package/lib/commonjs/core/dateKey.js +56 -0
  36. package/lib/commonjs/core/dateKey.js.map +1 -0
  37. package/lib/commonjs/core/motion.js +56 -0
  38. package/lib/commonjs/core/motion.js.map +1 -0
  39. package/lib/commonjs/core/worklets.js +44 -0
  40. package/lib/commonjs/core/worklets.js.map +1 -0
  41. package/lib/commonjs/expandable/DayCell.js +120 -0
  42. package/lib/commonjs/expandable/DayCell.js.map +1 -0
  43. package/lib/commonjs/expandable/ExpandableCalendar.js +280 -0
  44. package/lib/commonjs/expandable/ExpandableCalendar.js.map +1 -0
  45. package/lib/commonjs/expandable/Knob.js +72 -0
  46. package/lib/commonjs/expandable/Knob.js.map +1 -0
  47. package/lib/commonjs/expandable/MonthPager.js +180 -0
  48. package/lib/commonjs/expandable/MonthPager.js.map +1 -0
  49. package/lib/commonjs/expandable/WeekStrip.js +451 -0
  50. package/lib/commonjs/expandable/WeekStrip.js.map +1 -0
  51. package/lib/commonjs/expandable/calendarCells.js +152 -0
  52. package/lib/commonjs/expandable/calendarCells.js.map +1 -0
  53. package/lib/commonjs/expandable/geometry.js +62 -0
  54. package/lib/commonjs/expandable/geometry.js.map +1 -0
  55. package/lib/commonjs/expandable/useExpandGesture.js +124 -0
  56. package/lib/commonjs/expandable/useExpandGesture.js.map +1 -0
  57. package/lib/commonjs/expandable/useHorizontalPager.js +97 -0
  58. package/lib/commonjs/expandable/useHorizontalPager.js.map +1 -0
  59. package/lib/commonjs/index.js +167 -0
  60. package/lib/commonjs/index.js.map +1 -0
  61. package/lib/commonjs/package.json +1 -0
  62. package/lib/commonjs/theme/ThemeProvider.js +73 -0
  63. package/lib/commonjs/theme/ThemeProvider.js.map +1 -0
  64. package/lib/commonjs/theme/index.js +75 -0
  65. package/lib/commonjs/theme/index.js.map +1 -0
  66. package/lib/commonjs/theme/theme.js +79 -0
  67. package/lib/commonjs/theme/theme.js.map +1 -0
  68. package/lib/commonjs/theme/tokens.js +54 -0
  69. package/lib/commonjs/theme/tokens.js.map +1 -0
  70. package/lib/commonjs/timeline/DayColumn.js +95 -0
  71. package/lib/commonjs/timeline/DayColumn.js.map +1 -0
  72. package/lib/commonjs/timeline/DayPager.js +250 -0
  73. package/lib/commonjs/timeline/DayPager.js.map +1 -0
  74. package/lib/commonjs/timeline/EventBlock.js +91 -0
  75. package/lib/commonjs/timeline/EventBlock.js.map +1 -0
  76. package/lib/commonjs/timeline/GridLines.js +47 -0
  77. package/lib/commonjs/timeline/GridLines.js.map +1 -0
  78. package/lib/commonjs/timeline/HourGrid.js +96 -0
  79. package/lib/commonjs/timeline/HourGrid.js.map +1 -0
  80. package/lib/commonjs/timeline/NowIndicator.js +132 -0
  81. package/lib/commonjs/timeline/NowIndicator.js.map +1 -0
  82. package/lib/commonjs/timeline/TimelineDay.js +126 -0
  83. package/lib/commonjs/timeline/TimelineDay.js.map +1 -0
  84. package/lib/commonjs/timeline/packEvents.js +102 -0
  85. package/lib/commonjs/timeline/packEvents.js.map +1 -0
  86. package/lib/commonjs/timeline/timelineGeometry.js +27 -0
  87. package/lib/commonjs/timeline/timelineGeometry.js.map +1 -0
  88. package/lib/commonjs/timeline/timelineMath.js +82 -0
  89. package/lib/commonjs/timeline/timelineMath.js.map +1 -0
  90. package/lib/commonjs/types.js +71 -0
  91. package/lib/commonjs/types.js.map +1 -0
  92. package/lib/module/agenda/AgendaBackdrop.js +63 -0
  93. package/lib/module/agenda/AgendaBackdrop.js.map +1 -0
  94. package/lib/module/agenda/AgendaList.js +349 -0
  95. package/lib/module/agenda/AgendaList.js.map +1 -0
  96. package/lib/module/agenda/AgendaSlot.js +84 -0
  97. package/lib/module/agenda/AgendaSlot.js.map +1 -0
  98. package/lib/module/agenda/AgendaWindow.js +167 -0
  99. package/lib/module/agenda/AgendaWindow.js.map +1 -0
  100. package/lib/module/agenda/StickyHeaderOverlay.js +120 -0
  101. package/lib/module/agenda/StickyHeaderOverlay.js.map +1 -0
  102. package/lib/module/agenda/buildAgendaLayout.js +95 -0
  103. package/lib/module/agenda/buildAgendaLayout.js.map +1 -0
  104. package/lib/module/agenda/constants.js +25 -0
  105. package/lib/module/agenda/constants.js.map +1 -0
  106. package/lib/module/agenda/heights.js +42 -0
  107. package/lib/module/agenda/heights.js.map +1 -0
  108. package/lib/module/agenda/useAgendaScrollSync.js +200 -0
  109. package/lib/module/agenda/useAgendaScrollSync.js.map +1 -0
  110. package/lib/module/core/ArrowGlyph.js +60 -0
  111. package/lib/module/core/ArrowGlyph.js.map +1 -0
  112. package/lib/module/core/CalendarContext.js +26 -0
  113. package/lib/module/core/CalendarContext.js.map +1 -0
  114. package/lib/module/core/CalendarProvider.js +136 -0
  115. package/lib/module/core/CalendarProvider.js.map +1 -0
  116. package/lib/module/core/CalendarStore.js +66 -0
  117. package/lib/module/core/CalendarStore.js.map +1 -0
  118. package/lib/module/core/KitText.js +19 -0
  119. package/lib/module/core/KitText.js.map +1 -0
  120. package/lib/module/core/TodayButton.js +133 -0
  121. package/lib/module/core/TodayButton.js.map +1 -0
  122. package/lib/module/core/civil.js +88 -0
  123. package/lib/module/core/civil.js.map +1 -0
  124. package/lib/module/core/dateKey.js +47 -0
  125. package/lib/module/core/dateKey.js.map +1 -0
  126. package/lib/module/core/motion.js +49 -0
  127. package/lib/module/core/motion.js.map +1 -0
  128. package/lib/module/core/worklets.js +38 -0
  129. package/lib/module/core/worklets.js.map +1 -0
  130. package/lib/module/expandable/DayCell.js +116 -0
  131. package/lib/module/expandable/DayCell.js.map +1 -0
  132. package/lib/module/expandable/ExpandableCalendar.js +275 -0
  133. package/lib/module/expandable/ExpandableCalendar.js.map +1 -0
  134. package/lib/module/expandable/Knob.js +67 -0
  135. package/lib/module/expandable/Knob.js.map +1 -0
  136. package/lib/module/expandable/MonthPager.js +175 -0
  137. package/lib/module/expandable/MonthPager.js.map +1 -0
  138. package/lib/module/expandable/WeekStrip.js +446 -0
  139. package/lib/module/expandable/WeekStrip.js.map +1 -0
  140. package/lib/module/expandable/calendarCells.js +142 -0
  141. package/lib/module/expandable/calendarCells.js.map +1 -0
  142. package/lib/module/expandable/geometry.js +58 -0
  143. package/lib/module/expandable/geometry.js.map +1 -0
  144. package/lib/module/expandable/useExpandGesture.js +118 -0
  145. package/lib/module/expandable/useExpandGesture.js.map +1 -0
  146. package/lib/module/expandable/useHorizontalPager.js +92 -0
  147. package/lib/module/expandable/useHorizontalPager.js.map +1 -0
  148. package/lib/module/index.js +35 -0
  149. package/lib/module/index.js.map +1 -0
  150. package/lib/module/package.json +1 -0
  151. package/lib/module/theme/ThemeProvider.js +65 -0
  152. package/lib/module/theme/ThemeProvider.js.map +1 -0
  153. package/lib/module/theme/index.js +6 -0
  154. package/lib/module/theme/index.js.map +1 -0
  155. package/lib/module/theme/theme.js +74 -0
  156. package/lib/module/theme/theme.js.map +1 -0
  157. package/lib/module/theme/tokens.js +50 -0
  158. package/lib/module/theme/tokens.js.map +1 -0
  159. package/lib/module/timeline/DayColumn.js +91 -0
  160. package/lib/module/timeline/DayColumn.js.map +1 -0
  161. package/lib/module/timeline/DayPager.js +245 -0
  162. package/lib/module/timeline/DayPager.js.map +1 -0
  163. package/lib/module/timeline/EventBlock.js +87 -0
  164. package/lib/module/timeline/EventBlock.js.map +1 -0
  165. package/lib/module/timeline/GridLines.js +43 -0
  166. package/lib/module/timeline/GridLines.js.map +1 -0
  167. package/lib/module/timeline/HourGrid.js +94 -0
  168. package/lib/module/timeline/HourGrid.js.map +1 -0
  169. package/lib/module/timeline/NowIndicator.js +126 -0
  170. package/lib/module/timeline/NowIndicator.js.map +1 -0
  171. package/lib/module/timeline/TimelineDay.js +122 -0
  172. package/lib/module/timeline/TimelineDay.js.map +1 -0
  173. package/lib/module/timeline/packEvents.js +97 -0
  174. package/lib/module/timeline/packEvents.js.map +1 -0
  175. package/lib/module/timeline/timelineGeometry.js +22 -0
  176. package/lib/module/timeline/timelineGeometry.js.map +1 -0
  177. package/lib/module/timeline/timelineMath.js +75 -0
  178. package/lib/module/timeline/timelineMath.js.map +1 -0
  179. package/lib/module/types.js +67 -0
  180. package/lib/module/types.js.map +1 -0
  181. package/lib/typescript/commonjs/agenda/AgendaBackdrop.d.ts +20 -0
  182. package/lib/typescript/commonjs/agenda/AgendaBackdrop.d.ts.map +1 -0
  183. package/lib/typescript/commonjs/agenda/AgendaList.d.ts +12 -0
  184. package/lib/typescript/commonjs/agenda/AgendaList.d.ts.map +1 -0
  185. package/lib/typescript/commonjs/agenda/AgendaSlot.d.ts +45 -0
  186. package/lib/typescript/commonjs/agenda/AgendaSlot.d.ts.map +1 -0
  187. package/lib/typescript/commonjs/agenda/AgendaWindow.d.ts +49 -0
  188. package/lib/typescript/commonjs/agenda/AgendaWindow.d.ts.map +1 -0
  189. package/lib/typescript/commonjs/agenda/StickyHeaderOverlay.d.ts +39 -0
  190. package/lib/typescript/commonjs/agenda/StickyHeaderOverlay.d.ts.map +1 -0
  191. package/lib/typescript/commonjs/agenda/buildAgendaLayout.d.ts +57 -0
  192. package/lib/typescript/commonjs/agenda/buildAgendaLayout.d.ts.map +1 -0
  193. package/lib/typescript/commonjs/agenda/constants.d.ts +19 -0
  194. package/lib/typescript/commonjs/agenda/constants.d.ts.map +1 -0
  195. package/lib/typescript/commonjs/agenda/heights.d.ts +20 -0
  196. package/lib/typescript/commonjs/agenda/heights.d.ts.map +1 -0
  197. package/lib/typescript/commonjs/agenda/useAgendaScrollSync.d.ts +44 -0
  198. package/lib/typescript/commonjs/agenda/useAgendaScrollSync.d.ts.map +1 -0
  199. package/lib/typescript/commonjs/core/ArrowGlyph.d.ts +14 -0
  200. package/lib/typescript/commonjs/core/ArrowGlyph.d.ts.map +1 -0
  201. package/lib/typescript/commonjs/core/CalendarContext.d.ts +35 -0
  202. package/lib/typescript/commonjs/core/CalendarContext.d.ts.map +1 -0
  203. package/lib/typescript/commonjs/core/CalendarProvider.d.ts +41 -0
  204. package/lib/typescript/commonjs/core/CalendarProvider.d.ts.map +1 -0
  205. package/lib/typescript/commonjs/core/CalendarStore.d.ts +28 -0
  206. package/lib/typescript/commonjs/core/CalendarStore.d.ts.map +1 -0
  207. package/lib/typescript/commonjs/core/KitText.d.ts +10 -0
  208. package/lib/typescript/commonjs/core/KitText.d.ts.map +1 -0
  209. package/lib/typescript/commonjs/core/TodayButton.d.ts +18 -0
  210. package/lib/typescript/commonjs/core/TodayButton.d.ts.map +1 -0
  211. package/lib/typescript/commonjs/core/civil.d.ts +26 -0
  212. package/lib/typescript/commonjs/core/civil.d.ts.map +1 -0
  213. package/lib/typescript/commonjs/core/dateKey.d.ts +21 -0
  214. package/lib/typescript/commonjs/core/dateKey.d.ts.map +1 -0
  215. package/lib/typescript/commonjs/core/motion.d.ts +18 -0
  216. package/lib/typescript/commonjs/core/motion.d.ts.map +1 -0
  217. package/lib/typescript/commonjs/core/worklets.d.ts +12 -0
  218. package/lib/typescript/commonjs/core/worklets.d.ts.map +1 -0
  219. package/lib/typescript/commonjs/expandable/DayCell.d.ts +22 -0
  220. package/lib/typescript/commonjs/expandable/DayCell.d.ts.map +1 -0
  221. package/lib/typescript/commonjs/expandable/ExpandableCalendar.d.ts +40 -0
  222. package/lib/typescript/commonjs/expandable/ExpandableCalendar.d.ts.map +1 -0
  223. package/lib/typescript/commonjs/expandable/Knob.d.ts +19 -0
  224. package/lib/typescript/commonjs/expandable/Knob.d.ts.map +1 -0
  225. package/lib/typescript/commonjs/expandable/MonthPager.d.ts +35 -0
  226. package/lib/typescript/commonjs/expandable/MonthPager.d.ts.map +1 -0
  227. package/lib/typescript/commonjs/expandable/WeekStrip.d.ts +34 -0
  228. package/lib/typescript/commonjs/expandable/WeekStrip.d.ts.map +1 -0
  229. package/lib/typescript/commonjs/expandable/calendarCells.d.ts +52 -0
  230. package/lib/typescript/commonjs/expandable/calendarCells.d.ts.map +1 -0
  231. package/lib/typescript/commonjs/expandable/geometry.d.ts +43 -0
  232. package/lib/typescript/commonjs/expandable/geometry.d.ts.map +1 -0
  233. package/lib/typescript/commonjs/expandable/useExpandGesture.d.ts +35 -0
  234. package/lib/typescript/commonjs/expandable/useExpandGesture.d.ts.map +1 -0
  235. package/lib/typescript/commonjs/expandable/useHorizontalPager.d.ts +35 -0
  236. package/lib/typescript/commonjs/expandable/useHorizontalPager.d.ts.map +1 -0
  237. package/lib/typescript/commonjs/index.d.ts +26 -0
  238. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  239. package/lib/typescript/commonjs/package.json +1 -0
  240. package/lib/typescript/commonjs/theme/ThemeProvider.d.ts +27 -0
  241. package/lib/typescript/commonjs/theme/ThemeProvider.d.ts.map +1 -0
  242. package/lib/typescript/commonjs/theme/index.d.ts +4 -0
  243. package/lib/typescript/commonjs/theme/index.d.ts.map +1 -0
  244. package/lib/typescript/commonjs/theme/theme.d.ts +62 -0
  245. package/lib/typescript/commonjs/theme/theme.d.ts.map +1 -0
  246. package/lib/typescript/commonjs/theme/tokens.d.ts +46 -0
  247. package/lib/typescript/commonjs/theme/tokens.d.ts.map +1 -0
  248. package/lib/typescript/commonjs/timeline/DayColumn.d.ts +32 -0
  249. package/lib/typescript/commonjs/timeline/DayColumn.d.ts.map +1 -0
  250. package/lib/typescript/commonjs/timeline/DayPager.d.ts +32 -0
  251. package/lib/typescript/commonjs/timeline/DayPager.d.ts.map +1 -0
  252. package/lib/typescript/commonjs/timeline/EventBlock.d.ts +17 -0
  253. package/lib/typescript/commonjs/timeline/EventBlock.d.ts.map +1 -0
  254. package/lib/typescript/commonjs/timeline/GridLines.d.ts +5 -0
  255. package/lib/typescript/commonjs/timeline/GridLines.d.ts.map +1 -0
  256. package/lib/typescript/commonjs/timeline/HourGrid.d.ts +12 -0
  257. package/lib/typescript/commonjs/timeline/HourGrid.d.ts.map +1 -0
  258. package/lib/typescript/commonjs/timeline/NowIndicator.d.ts +28 -0
  259. package/lib/typescript/commonjs/timeline/NowIndicator.d.ts.map +1 -0
  260. package/lib/typescript/commonjs/timeline/TimelineDay.d.ts +14 -0
  261. package/lib/typescript/commonjs/timeline/TimelineDay.d.ts.map +1 -0
  262. package/lib/typescript/commonjs/timeline/packEvents.d.ts +25 -0
  263. package/lib/typescript/commonjs/timeline/packEvents.d.ts.map +1 -0
  264. package/lib/typescript/commonjs/timeline/timelineGeometry.d.ts +14 -0
  265. package/lib/typescript/commonjs/timeline/timelineGeometry.d.ts.map +1 -0
  266. package/lib/typescript/commonjs/timeline/timelineMath.d.ts +32 -0
  267. package/lib/typescript/commonjs/timeline/timelineMath.d.ts.map +1 -0
  268. package/lib/typescript/commonjs/types.d.ts +237 -0
  269. package/lib/typescript/commonjs/types.d.ts.map +1 -0
  270. package/lib/typescript/module/agenda/AgendaBackdrop.d.ts +20 -0
  271. package/lib/typescript/module/agenda/AgendaBackdrop.d.ts.map +1 -0
  272. package/lib/typescript/module/agenda/AgendaList.d.ts +12 -0
  273. package/lib/typescript/module/agenda/AgendaList.d.ts.map +1 -0
  274. package/lib/typescript/module/agenda/AgendaSlot.d.ts +45 -0
  275. package/lib/typescript/module/agenda/AgendaSlot.d.ts.map +1 -0
  276. package/lib/typescript/module/agenda/AgendaWindow.d.ts +49 -0
  277. package/lib/typescript/module/agenda/AgendaWindow.d.ts.map +1 -0
  278. package/lib/typescript/module/agenda/StickyHeaderOverlay.d.ts +39 -0
  279. package/lib/typescript/module/agenda/StickyHeaderOverlay.d.ts.map +1 -0
  280. package/lib/typescript/module/agenda/buildAgendaLayout.d.ts +57 -0
  281. package/lib/typescript/module/agenda/buildAgendaLayout.d.ts.map +1 -0
  282. package/lib/typescript/module/agenda/constants.d.ts +19 -0
  283. package/lib/typescript/module/agenda/constants.d.ts.map +1 -0
  284. package/lib/typescript/module/agenda/heights.d.ts +20 -0
  285. package/lib/typescript/module/agenda/heights.d.ts.map +1 -0
  286. package/lib/typescript/module/agenda/useAgendaScrollSync.d.ts +44 -0
  287. package/lib/typescript/module/agenda/useAgendaScrollSync.d.ts.map +1 -0
  288. package/lib/typescript/module/core/ArrowGlyph.d.ts +14 -0
  289. package/lib/typescript/module/core/ArrowGlyph.d.ts.map +1 -0
  290. package/lib/typescript/module/core/CalendarContext.d.ts +35 -0
  291. package/lib/typescript/module/core/CalendarContext.d.ts.map +1 -0
  292. package/lib/typescript/module/core/CalendarProvider.d.ts +41 -0
  293. package/lib/typescript/module/core/CalendarProvider.d.ts.map +1 -0
  294. package/lib/typescript/module/core/CalendarStore.d.ts +28 -0
  295. package/lib/typescript/module/core/CalendarStore.d.ts.map +1 -0
  296. package/lib/typescript/module/core/KitText.d.ts +10 -0
  297. package/lib/typescript/module/core/KitText.d.ts.map +1 -0
  298. package/lib/typescript/module/core/TodayButton.d.ts +18 -0
  299. package/lib/typescript/module/core/TodayButton.d.ts.map +1 -0
  300. package/lib/typescript/module/core/civil.d.ts +26 -0
  301. package/lib/typescript/module/core/civil.d.ts.map +1 -0
  302. package/lib/typescript/module/core/dateKey.d.ts +21 -0
  303. package/lib/typescript/module/core/dateKey.d.ts.map +1 -0
  304. package/lib/typescript/module/core/motion.d.ts +18 -0
  305. package/lib/typescript/module/core/motion.d.ts.map +1 -0
  306. package/lib/typescript/module/core/worklets.d.ts +12 -0
  307. package/lib/typescript/module/core/worklets.d.ts.map +1 -0
  308. package/lib/typescript/module/expandable/DayCell.d.ts +22 -0
  309. package/lib/typescript/module/expandable/DayCell.d.ts.map +1 -0
  310. package/lib/typescript/module/expandable/ExpandableCalendar.d.ts +40 -0
  311. package/lib/typescript/module/expandable/ExpandableCalendar.d.ts.map +1 -0
  312. package/lib/typescript/module/expandable/Knob.d.ts +19 -0
  313. package/lib/typescript/module/expandable/Knob.d.ts.map +1 -0
  314. package/lib/typescript/module/expandable/MonthPager.d.ts +35 -0
  315. package/lib/typescript/module/expandable/MonthPager.d.ts.map +1 -0
  316. package/lib/typescript/module/expandable/WeekStrip.d.ts +34 -0
  317. package/lib/typescript/module/expandable/WeekStrip.d.ts.map +1 -0
  318. package/lib/typescript/module/expandable/calendarCells.d.ts +52 -0
  319. package/lib/typescript/module/expandable/calendarCells.d.ts.map +1 -0
  320. package/lib/typescript/module/expandable/geometry.d.ts +43 -0
  321. package/lib/typescript/module/expandable/geometry.d.ts.map +1 -0
  322. package/lib/typescript/module/expandable/useExpandGesture.d.ts +35 -0
  323. package/lib/typescript/module/expandable/useExpandGesture.d.ts.map +1 -0
  324. package/lib/typescript/module/expandable/useHorizontalPager.d.ts +35 -0
  325. package/lib/typescript/module/expandable/useHorizontalPager.d.ts.map +1 -0
  326. package/lib/typescript/module/index.d.ts +26 -0
  327. package/lib/typescript/module/index.d.ts.map +1 -0
  328. package/lib/typescript/module/package.json +1 -0
  329. package/lib/typescript/module/theme/ThemeProvider.d.ts +27 -0
  330. package/lib/typescript/module/theme/ThemeProvider.d.ts.map +1 -0
  331. package/lib/typescript/module/theme/index.d.ts +4 -0
  332. package/lib/typescript/module/theme/index.d.ts.map +1 -0
  333. package/lib/typescript/module/theme/theme.d.ts +62 -0
  334. package/lib/typescript/module/theme/theme.d.ts.map +1 -0
  335. package/lib/typescript/module/theme/tokens.d.ts +46 -0
  336. package/lib/typescript/module/theme/tokens.d.ts.map +1 -0
  337. package/lib/typescript/module/timeline/DayColumn.d.ts +32 -0
  338. package/lib/typescript/module/timeline/DayColumn.d.ts.map +1 -0
  339. package/lib/typescript/module/timeline/DayPager.d.ts +32 -0
  340. package/lib/typescript/module/timeline/DayPager.d.ts.map +1 -0
  341. package/lib/typescript/module/timeline/EventBlock.d.ts +17 -0
  342. package/lib/typescript/module/timeline/EventBlock.d.ts.map +1 -0
  343. package/lib/typescript/module/timeline/GridLines.d.ts +5 -0
  344. package/lib/typescript/module/timeline/GridLines.d.ts.map +1 -0
  345. package/lib/typescript/module/timeline/HourGrid.d.ts +12 -0
  346. package/lib/typescript/module/timeline/HourGrid.d.ts.map +1 -0
  347. package/lib/typescript/module/timeline/NowIndicator.d.ts +28 -0
  348. package/lib/typescript/module/timeline/NowIndicator.d.ts.map +1 -0
  349. package/lib/typescript/module/timeline/TimelineDay.d.ts +14 -0
  350. package/lib/typescript/module/timeline/TimelineDay.d.ts.map +1 -0
  351. package/lib/typescript/module/timeline/packEvents.d.ts +25 -0
  352. package/lib/typescript/module/timeline/packEvents.d.ts.map +1 -0
  353. package/lib/typescript/module/timeline/timelineGeometry.d.ts +14 -0
  354. package/lib/typescript/module/timeline/timelineGeometry.d.ts.map +1 -0
  355. package/lib/typescript/module/timeline/timelineMath.d.ts +32 -0
  356. package/lib/typescript/module/timeline/timelineMath.d.ts.map +1 -0
  357. package/lib/typescript/module/types.d.ts +237 -0
  358. package/lib/typescript/module/types.d.ts.map +1 -0
  359. package/package.json +105 -0
  360. package/src/agenda/AgendaBackdrop.tsx +55 -0
  361. package/src/agenda/AgendaList.tsx +370 -0
  362. package/src/agenda/AgendaSlot.tsx +88 -0
  363. package/src/agenda/AgendaWindow.tsx +183 -0
  364. package/src/agenda/StickyHeaderOverlay.tsx +126 -0
  365. package/src/agenda/buildAgendaLayout.ts +110 -0
  366. package/src/agenda/constants.ts +22 -0
  367. package/src/agenda/heights.ts +44 -0
  368. package/src/agenda/useAgendaScrollSync.ts +251 -0
  369. package/src/core/ArrowGlyph.tsx +53 -0
  370. package/src/core/CalendarContext.ts +47 -0
  371. package/src/core/CalendarProvider.tsx +165 -0
  372. package/src/core/CalendarStore.ts +64 -0
  373. package/src/core/KitText.tsx +10 -0
  374. package/src/core/TodayButton.tsx +121 -0
  375. package/src/core/civil.ts +92 -0
  376. package/src/core/dateKey.ts +52 -0
  377. package/src/core/motion.ts +51 -0
  378. package/src/core/worklets.ts +37 -0
  379. package/src/expandable/DayCell.tsx +97 -0
  380. package/src/expandable/ExpandableCalendar.tsx +278 -0
  381. package/src/expandable/Knob.tsx +67 -0
  382. package/src/expandable/MonthPager.tsx +208 -0
  383. package/src/expandable/WeekStrip.tsx +439 -0
  384. package/src/expandable/calendarCells.ts +155 -0
  385. package/src/expandable/geometry.ts +51 -0
  386. package/src/expandable/useExpandGesture.ts +147 -0
  387. package/src/expandable/useHorizontalPager.ts +116 -0
  388. package/src/index.ts +62 -0
  389. package/src/theme/ThemeProvider.tsx +85 -0
  390. package/src/theme/index.ts +18 -0
  391. package/src/theme/theme.ts +110 -0
  392. package/src/theme/tokens.ts +50 -0
  393. package/src/timeline/DayColumn.tsx +84 -0
  394. package/src/timeline/DayPager.tsx +295 -0
  395. package/src/timeline/EventBlock.tsx +76 -0
  396. package/src/timeline/GridLines.tsx +36 -0
  397. package/src/timeline/HourGrid.tsx +90 -0
  398. package/src/timeline/NowIndicator.tsx +123 -0
  399. package/src/timeline/TimelineDay.tsx +112 -0
  400. package/src/timeline/packEvents.ts +118 -0
  401. package/src/timeline/timelineGeometry.ts +23 -0
  402. package/src/timeline/timelineMath.ts +86 -0
  403. package/src/types.ts +252 -0
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * One day in the MONTH GRID. Selection arrives as a plain prop from the committed
5
+ * date, and `memo` on primitive props means a commit re-renders two cells, not the
6
+ * month. (The week strip tracks a fling frame by frame with one pill instead.)
7
+ */
8
+
9
+ import { useKitStyles } from "../theme/index.js";
10
+ import { FONT_SIZE, RADIUS } from "../theme/tokens.js";
11
+ import { memo } from 'react';
12
+ import { Pressable, StyleSheet, View } from 'react-native';
13
+ import { KitText } from "../core/KitText.js";
14
+ import { DAY_CELL, DAY_LINE_HEIGHT, DAY_TEXT_MARGIN_TOP, DOT_MARGIN_TOP, DOT_SIZE } from "./geometry.js";
15
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
+ const DayCellInner = ({
17
+ dayIndex,
18
+ label,
19
+ left,
20
+ top,
21
+ isToday,
22
+ isDisabled,
23
+ isSelected,
24
+ dot,
25
+ onPress,
26
+ accessibilityLabel
27
+ }) => {
28
+ const styles = useKitStyles(makeStyles);
29
+ const state = isSelected ? 3 : isDisabled ? 2 : isToday ? 1 : 0;
30
+ return /*#__PURE__*/_jsxs(Pressable, {
31
+ style: [styles.cell, {
32
+ left,
33
+ top
34
+ }, isSelected ? styles.cellSelected : null],
35
+ onPress: () => onPress(dayIndex),
36
+ disabled: isDisabled,
37
+ accessibilityRole: "button",
38
+ accessibilityLabel: accessibilityLabel,
39
+ accessibilityState: {
40
+ selected: isSelected,
41
+ disabled: isDisabled
42
+ },
43
+ children: [/*#__PURE__*/_jsx(KitText, {
44
+ style: styles.text[state],
45
+ children: label
46
+ }), dot !== null ? /*#__PURE__*/_jsx(View, {
47
+ style: [styles.dot, isSelected || !dot ? styles.dotFill[state] : {
48
+ backgroundColor: dot
49
+ }]
50
+ }) : null]
51
+ });
52
+ };
53
+ export const DayCell = /*#__PURE__*/memo(DayCellInner);
54
+ DayCell.displayName = 'DayCell';
55
+
56
+ /** `text` and `dotFill` are indexed by state: 0 plain, 1 today, 2 disabled, 3 selected. */
57
+ const makeStyles = ({
58
+ colors,
59
+ fonts
60
+ }) => {
61
+ const text = {
62
+ marginTop: DAY_TEXT_MARGIN_TOP,
63
+ fontFamily: fonts.regular,
64
+ fontSize: FONT_SIZE.sm,
65
+ lineHeight: DAY_LINE_HEIGHT
66
+ };
67
+ const s = StyleSheet.create({
68
+ cell: {
69
+ position: 'absolute',
70
+ width: DAY_CELL,
71
+ height: DAY_CELL,
72
+ borderRadius: RADIUS.full,
73
+ alignItems: 'center'
74
+ },
75
+ // The one accent use on the calendar — active selection: one accent, nowhere else.
76
+ cellSelected: {
77
+ backgroundColor: colors.accentFill
78
+ },
79
+ text: {
80
+ ...text,
81
+ color: colors.text
82
+ },
83
+ textToday: {
84
+ ...text,
85
+ color: colors.accent
86
+ },
87
+ textDisabled: {
88
+ ...text,
89
+ color: colors.textMuted
90
+ },
91
+ textSelected: {
92
+ ...text,
93
+ color: colors.onAccentFill
94
+ },
95
+ dot: {
96
+ width: DOT_SIZE,
97
+ height: DOT_SIZE,
98
+ marginTop: DOT_MARGIN_TOP,
99
+ borderRadius: RADIUS.full
100
+ },
101
+ dotDefault: {
102
+ backgroundColor: colors.accent
103
+ },
104
+ dotSelected: {
105
+ backgroundColor: colors.onAccentFill
106
+ }
107
+ });
108
+ return {
109
+ cell: s.cell,
110
+ cellSelected: s.cellSelected,
111
+ dot: s.dot,
112
+ text: [s.text, s.textToday, s.textDisabled, s.textSelected],
113
+ dotFill: [s.dotDefault, s.dotDefault, s.dotDefault, s.dotSelected]
114
+ };
115
+ };
116
+ //# sourceMappingURL=DayCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useKitStyles","FONT_SIZE","RADIUS","memo","Pressable","StyleSheet","View","KitText","DAY_CELL","DAY_LINE_HEIGHT","DAY_TEXT_MARGIN_TOP","DOT_MARGIN_TOP","DOT_SIZE","jsx","_jsx","jsxs","_jsxs","DayCellInner","dayIndex","label","left","top","isToday","isDisabled","isSelected","dot","onPress","accessibilityLabel","styles","makeStyles","state","style","cell","cellSelected","disabled","accessibilityRole","accessibilityState","selected","children","text","dotFill","backgroundColor","DayCell","displayName","colors","fonts","marginTop","fontFamily","regular","fontSize","sm","lineHeight","s","create","position","width","height","borderRadius","full","alignItems","accentFill","color","textToday","accent","textDisabled","textMuted","textSelected","onAccentFill","dotDefault","dotSelected"],"sourceRoot":"../../../src","sources":["expandable/DayCell.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The expandable calendar — week strip closed, month grid open — and the body it
5
+ * pushes down.
6
+ *
7
+ * Nothing animates height. `progress` (0 closed, 1 open) moves and every layer
8
+ * reads it as a transform or opacity: the month layer fades in and slides from
9
+ * "selected week on top" to its natural place, the strip fades out, and the knob
10
+ * and fixed-height body translate by `progress · travel`, where `travel` belongs
11
+ * to the VISIBLE month and re-targets when that changes while open.
12
+ *
13
+ * The body renders `children` because it must read `progress`. A list drag closes
14
+ * an open calendar: the grid shows the committed date, the list the day under it.
15
+ * With a screen reader the calendar is a static open month grid — TalkBack ignores
16
+ * opacity, would read strip and grid both, and cannot perform the pan.
17
+ */
18
+
19
+ import { useKitStyles } from "../theme/index.js";
20
+ import { ANIMATION } from "../theme/tokens.js";
21
+ import { memo, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from 'react';
22
+ import { Dimensions, StyleSheet, View } from 'react-native';
23
+ import { GestureDetector } from 'react-native-gesture-handler';
24
+ import Animated, { useAnimatedReaction, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
25
+ import { useCalendarContext, useCalendarDate } from "../core/CalendarContext.js";
26
+ import { clampIndex, dayIndexOf, ymdAt } from "../core/dateKey.js";
27
+ import { KIT_EASING, kitDuration, useScreenReaderEnabled } from "../core/motion.js";
28
+ import { clampNum } from "../core/worklets.js";
29
+ import { buildCalendarCells, buildDots, cellLefts, pageOfIndex } from "./calendarCells.js";
30
+ import { calendarHeights, KNOB_CONTAINER_HEIGHT, MAX_WEEKS, WEEK_ROW_HEIGHT } from "./geometry.js";
31
+ import { Knob } from "./Knob.js";
32
+ import { MonthPager } from "./MonthPager.js";
33
+ import { snap, useExpandGesture } from "./useExpandGesture.js";
34
+ import { WeekStrip } from "./WeekStrip.js";
35
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
36
+ const POSITIONS = {
37
+ CLOSED: 'closed',
38
+ OPEN: 'open'
39
+ };
40
+ const {
41
+ closed: CLOSED_H,
42
+ full: CALENDAR_H
43
+ } = calendarHeights(MAX_WEEKS);
44
+ /**
45
+ * Invisible, so the stale translateY is unseen; one object makes Reanimated skip the
46
+ * update. Opacity only: `updateProps` reassigns `transform` on the object it is given.
47
+ */
48
+ const CLOSED_MONTH_STYLE = {
49
+ opacity: 0
50
+ };
51
+ const ExpandableCalendarInner = ({
52
+ initialPosition = 'closed',
53
+ onCalendarToggled,
54
+ style,
55
+ closeOnDayPress = true,
56
+ closeOnListScroll = true,
57
+ markedDates,
58
+ disablePan = false,
59
+ openThreshold,
60
+ closeThreshold,
61
+ knobAccessibilityLabel,
62
+ dayAccessibilityLabel,
63
+ monthShortLabels,
64
+ children,
65
+ ref
66
+ }) => {
67
+ const styles = useKitStyles(makeStyles);
68
+ const {
69
+ range,
70
+ store,
71
+ dateRef,
72
+ setDate,
73
+ reduceMotion
74
+ } = useCalendarContext();
75
+ const date = useCalendarDate();
76
+ const screenReader = useScreenReaderEnabled();
77
+ const {
78
+ dayIndex,
79
+ listDragSeq
80
+ } = store;
81
+ const [layout, setLayout] = useState(() => ({
82
+ width: Dimensions.get('window').width,
83
+ height: 0
84
+ }));
85
+ const [isOpen, setIsOpen] = useState(initialPosition === 'open');
86
+ const {
87
+ labels,
88
+ ordinalByIndex,
89
+ pages
90
+ } = useMemo(() => buildCalendarCells(range), [range]);
91
+ const dots = useMemo(() => buildDots(range, markedDates), [range, markedDates]);
92
+ const lefts = useMemo(() => cellLefts(layout.width), [layout.width]);
93
+ const a11yLabels = useMemo(() => screenReader && dayAccessibilityLabel ? range.ymdByIndex.map(ymd => dayAccessibilityLabel(ymd)) : undefined, [dayAccessibilityLabel, range, screenReader]);
94
+ const [initialPage] = useState(() => pageOfIndex(pages, clampIndex(range, dayIndexOf(range, dateRef.current))));
95
+ const progress = useSharedValue(initialPosition === 'open' ? 1 : 0);
96
+ const visiblePage = useSharedValue(initialPage);
97
+ const travel = useSharedValue(calendarHeights(pages.weeksByPage[initialPage] ?? 5).travel);
98
+ const pagesSV = useSharedValue(pages);
99
+ const writtenPages = useRef(pages);
100
+ useLayoutEffect(() => {
101
+ if (writtenPages.current === pages) return;
102
+ writtenPages.current = pages;
103
+ pagesSV.value = pages;
104
+ }, [pages, pagesSV]);
105
+ const retarget = kitDuration(ANIMATION.base, reduceMotion);
106
+ useAnimatedReaction(() => visiblePage.value, (page, prev) => {
107
+ if (prev === null || page === prev) return;
108
+ const next = calendarHeights(pagesSV.value.weeksByPage[page] ?? 5).travel;
109
+ // Open: glide the body to the new month's bottom edge. Closed: record it for the next open.
110
+ travel.value = progress.value > 0 ? withTiming(next, {
111
+ duration: retarget,
112
+ easing: KIT_EASING
113
+ }) : next;
114
+ });
115
+
116
+ // Through a ref: the gesture's worklets capture `handleToggled`, so it never changes identity.
117
+ const onToggledRef = useRef(onCalendarToggled);
118
+ useLayoutEffect(() => {
119
+ onToggledRef.current = onCalendarToggled;
120
+ });
121
+ const handleToggled = useCallback(open => {
122
+ setIsOpen(open);
123
+ onToggledRef.current?.(open);
124
+ }, []);
125
+ const {
126
+ pan,
127
+ snapTo,
128
+ lastReported
129
+ } = useExpandGesture({
130
+ progress,
131
+ travel,
132
+ enabled: !disablePan && !screenReader,
133
+ openThreshold,
134
+ closeThreshold,
135
+ reduceMotion,
136
+ initialOpen: initialPosition === 'open',
137
+ onToggled: handleToggled
138
+ });
139
+ const toggle = useCallback(() => snapTo(), [snapTo]);
140
+
141
+ // Not foldable into the gesture's `initialOpen`/`enabled`: the flag resolves after
142
+ // mount, and `enabled` is also false for `disablePan`, which must not open.
143
+ useEffect(() => {
144
+ if (screenReader) snapTo(1);
145
+ }, [screenReader, snapTo]);
146
+ useAnimatedReaction(() => listDragSeq.value, (seq, prev) => {
147
+ // Only a CHANGE of the counter is a drag; its first reading is the mount.
148
+ if (prev === null || seq === prev || !closeOnListScroll || screenReader) return;
149
+ if (progress.value > 0) snap(progress, lastReported, 0, reduceMotion, handleToggled);
150
+ });
151
+ useImperativeHandle(ref, () => ({
152
+ toggleCalendarPosition: screenReader ? () => true : toggle
153
+ }), [screenReader, toggle]);
154
+ const handleDayPress = useCallback(idx => {
155
+ if (clampIndex(range, idx) !== idx) return;
156
+ setDate(ymdAt(range, idx), 'dayPress');
157
+ // Same tick as the date: no race between the agenda's scroll and the collapse.
158
+ if (closeOnDayPress && !screenReader && progress.value > 0) snapTo(0);
159
+ }, [closeOnDayPress, progress, range, screenReader, setDate, snapTo]);
160
+ const monthStyle = useAnimatedStyle(() => {
161
+ const p = progress.value;
162
+ if (p === 0) return CLOSED_MONTH_STYLE;
163
+ const {
164
+ gridStartByPage,
165
+ weeksByPage
166
+ } = pagesSV.value;
167
+ const page = visiblePage.value;
168
+ const row = clampNum(Math.floor((dayIndex.value - (gridStartByPage[page] ?? 0)) / 7), 0, (weeksByPage[page] ?? MAX_WEEKS) - 1);
169
+ return {
170
+ opacity: p,
171
+ transform: [{
172
+ translateY: -(1 - p) * row * WEEK_ROW_HEIGHT
173
+ }]
174
+ };
175
+ });
176
+ const weekStyle = useAnimatedStyle(() => ({
177
+ opacity: 1 - progress.value
178
+ }));
179
+ const knobStyle = useAnimatedStyle(() => ({
180
+ transform: [{
181
+ translateY: CLOSED_H - KNOB_CONTAINER_HEIGHT + progress.value * travel.value
182
+ }]
183
+ }));
184
+ const bodyStyle = useAnimatedStyle(() => ({
185
+ transform: [{
186
+ translateY: progress.value * travel.value
187
+ }]
188
+ }));
189
+ const onLayout = useCallback(e => {
190
+ const {
191
+ width,
192
+ height
193
+ } = e.nativeEvent.layout;
194
+ setLayout(prev => Math.abs(prev.width - width) < 0.5 && Math.abs(prev.height - height) < 0.5 ? prev : {
195
+ width,
196
+ height
197
+ });
198
+ }, []);
199
+ return /*#__PURE__*/_jsxs(View, {
200
+ style: [styles.region, style],
201
+ onLayout: onLayout,
202
+ children: [/*#__PURE__*/_jsx(GestureDetector, {
203
+ gesture: pan,
204
+ children: /*#__PURE__*/_jsxs(View, {
205
+ collapsable: false,
206
+ style: styles.calendar,
207
+ children: [/*#__PURE__*/_jsx(MonthPager, {
208
+ width: layout.width,
209
+ lefts: lefts,
210
+ pages: pages,
211
+ pagesSV: pagesSV,
212
+ labels: labels,
213
+ a11yLabels: a11yLabels,
214
+ dots: dots,
215
+ selectedIndex: dayIndexOf(range, date),
216
+ initialPage: initialPage,
217
+ visiblePage: visiblePage,
218
+ onDayPress: handleDayPress,
219
+ animatedStyle: monthStyle,
220
+ isOpen: isOpen,
221
+ screenReader: screenReader
222
+ }), screenReader ? null : /*#__PURE__*/_jsxs(_Fragment, {
223
+ children: [/*#__PURE__*/_jsx(WeekStrip, {
224
+ width: layout.width,
225
+ lefts: lefts,
226
+ labels: labels,
227
+ ordinals: ordinalByIndex,
228
+ monthShortLabels: monthShortLabels,
229
+ dots: dots,
230
+ onDayPress: handleDayPress,
231
+ animatedStyle: weekStyle,
232
+ interactive: !isOpen
233
+ }), /*#__PURE__*/_jsx(Knob, {
234
+ animatedStyle: knobStyle,
235
+ onPress: toggle,
236
+ accessibilityLabel: knobAccessibilityLabel
237
+ })]
238
+ })]
239
+ })
240
+ }), /*#__PURE__*/_jsx(Animated.View, {
241
+ style: [styles.body, {
242
+ height: Math.max(0, layout.height - CLOSED_H)
243
+ }, bodyStyle],
244
+ children: children
245
+ })]
246
+ });
247
+ };
248
+ export const ExpandableCalendar = Object.assign(/*#__PURE__*/memo(ExpandableCalendarInner), {
249
+ positions: POSITIONS
250
+ });
251
+ const makeStyles = ({
252
+ colors
253
+ }) => StyleSheet.create({
254
+ region: {
255
+ flex: 1,
256
+ overflow: 'hidden',
257
+ backgroundColor: colors.surface
258
+ },
259
+ calendar: {
260
+ position: 'absolute',
261
+ top: 0,
262
+ left: 0,
263
+ right: 0,
264
+ height: CALENDAR_H,
265
+ backgroundColor: colors.surface
266
+ },
267
+ body: {
268
+ position: 'absolute',
269
+ top: CLOSED_H,
270
+ left: 0,
271
+ right: 0,
272
+ backgroundColor: colors.surface
273
+ }
274
+ });
275
+ //# sourceMappingURL=ExpandableCalendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useKitStyles","ANIMATION","memo","useCallback","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","Dimensions","StyleSheet","View","GestureDetector","Animated","useAnimatedReaction","useAnimatedStyle","useSharedValue","withTiming","useCalendarContext","useCalendarDate","clampIndex","dayIndexOf","ymdAt","KIT_EASING","kitDuration","useScreenReaderEnabled","clampNum","buildCalendarCells","buildDots","cellLefts","pageOfIndex","calendarHeights","KNOB_CONTAINER_HEIGHT","MAX_WEEKS","WEEK_ROW_HEIGHT","Knob","MonthPager","snap","useExpandGesture","WeekStrip","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","POSITIONS","CLOSED","OPEN","closed","CLOSED_H","full","CALENDAR_H","CLOSED_MONTH_STYLE","opacity","ExpandableCalendarInner","initialPosition","onCalendarToggled","style","closeOnDayPress","closeOnListScroll","markedDates","disablePan","openThreshold","closeThreshold","knobAccessibilityLabel","dayAccessibilityLabel","monthShortLabels","children","ref","styles","makeStyles","range","store","dateRef","setDate","reduceMotion","date","screenReader","dayIndex","listDragSeq","layout","setLayout","width","get","height","isOpen","setIsOpen","labels","ordinalByIndex","pages","dots","lefts","a11yLabels","ymdByIndex","map","ymd","undefined","initialPage","current","progress","visiblePage","travel","weeksByPage","pagesSV","writtenPages","value","retarget","base","page","prev","next","duration","easing","onToggledRef","handleToggled","open","pan","snapTo","lastReported","enabled","initialOpen","onToggled","toggle","seq","toggleCalendarPosition","handleDayPress","idx","monthStyle","p","gridStartByPage","row","Math","floor","transform","translateY","weekStyle","knobStyle","bodyStyle","onLayout","e","nativeEvent","abs","region","gesture","collapsable","calendar","selectedIndex","onDayPress","animatedStyle","ordinals","interactive","onPress","accessibilityLabel","body","max","ExpandableCalendar","Object","assign","positions","colors","create","flex","overflow","backgroundColor","surface","position","top","left","right"],"sourceRoot":"../../../src","sources":["expandable/ExpandableCalendar.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The drag band under the calendar. A tap toggles; a drag anywhere on the
5
+ * calendar (not just here) opens and closes — the band is the affordance, not
6
+ * the only hit area.
7
+ *
8
+ * A `Pressable`, not a `Gesture.Tap` raced against the pan. The tap belongs to
9
+ * the knob alone; racing a tap on the whole detector would make every day-cell
10
+ * tap also toggle the calendar.
11
+ */
12
+
13
+ import { useKitStyles } from "../theme/index.js";
14
+ import { RADIUS } from "../theme/tokens.js";
15
+ import { memo } from 'react';
16
+ import { Pressable, StyleSheet, View } from 'react-native';
17
+ import Animated from 'react-native-reanimated';
18
+ import { KNOB_CONTAINER_HEIGHT, KNOB_HEIGHT, KNOB_WIDTH } from "./geometry.js";
19
+ import { jsx as _jsx } from "react/jsx-runtime";
20
+ const KnobInner = ({
21
+ animatedStyle,
22
+ onPress,
23
+ accessibilityLabel
24
+ }) => {
25
+ const styles = useKitStyles(makeStyles);
26
+ return /*#__PURE__*/_jsx(Animated.View, {
27
+ style: [styles.container, animatedStyle],
28
+ children: /*#__PURE__*/_jsx(Pressable, {
29
+ style: styles.hit,
30
+ onPress: onPress,
31
+ accessibilityRole: "button",
32
+ accessibilityLabel: accessibilityLabel,
33
+ children: /*#__PURE__*/_jsx(View, {
34
+ style: styles.knob
35
+ })
36
+ })
37
+ });
38
+ };
39
+ export const Knob = /*#__PURE__*/memo(KnobInner);
40
+ Knob.displayName = 'Knob';
41
+ const makeStyles = ({
42
+ colors
43
+ }) => StyleSheet.create({
44
+ container: {
45
+ position: 'absolute',
46
+ top: 0,
47
+ left: 0,
48
+ right: 0,
49
+ height: KNOB_CONTAINER_HEIGHT,
50
+ backgroundColor: colors.surface
51
+ },
52
+ hit: {
53
+ flex: 1,
54
+ alignItems: 'center',
55
+ justifyContent: 'center'
56
+ },
57
+ knob: {
58
+ width: KNOB_WIDTH,
59
+ height: KNOB_HEIGHT,
60
+ // A pill is the one shape `full` exists for — the one shape `full` exists for.
61
+ borderRadius: RADIUS.full,
62
+ // The library's default `expandableKnobColor` is #e8ecf0 — a slate grey,
63
+ // which reads as a tinted surface. `border` is the nearest true-neutral.
64
+ backgroundColor: colors.border
65
+ }
66
+ });
67
+ //# sourceMappingURL=Knob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useKitStyles","RADIUS","memo","Pressable","StyleSheet","View","Animated","KNOB_CONTAINER_HEIGHT","KNOB_HEIGHT","KNOB_WIDTH","jsx","_jsx","KnobInner","animatedStyle","onPress","accessibilityLabel","styles","makeStyles","style","container","children","hit","accessibilityRole","knob","Knob","displayName","colors","create","position","top","left","right","height","backgroundColor","surface","flex","alignItems","justifyContent","width","borderRadius","full","border"],"sourceRoot":"../../../src","sources":["expandable/Knob.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,YAAY,QAA2B,mBAAU;AAC1D,SAASC,MAAM,QAAQ,oBAAiB;AACxC,SAASC,IAAI,QAAQ,OAAO;AAC5B,SAASC,SAAS,EAAEC,UAAU,EAAEC,IAAI,QAAwC,cAAc;AAC1F,OAAOC,QAAQ,MAA8B,yBAAyB;AACtE,SAASC,qBAAqB,EAAEC,WAAW,EAAEC,UAAU,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQ5E,MAAMC,SAAS,GAAGA,CAAC;EAAEC,aAAa;EAAEC,OAAO;EAAEC;AAA0B,CAAC,KAAK;EAC3E,MAAMC,MAAM,GAAGhB,YAAY,CAACiB,UAAU,CAAC;EACvC,oBACEN,IAAA,CAACL,QAAQ,CAACD,IAAI;IAACa,KAAK,EAAE,CAACF,MAAM,CAACG,SAAS,EAAEN,aAAa,CAAE;IAAAO,QAAA,eACtDT,IAAA,CAACR,SAAS;MACRe,KAAK,EAAEF,MAAM,CAACK,GAAI;MAClBP,OAAO,EAAEA,OAAQ;MACjBQ,iBAAiB,EAAC,QAAQ;MAC1BP,kBAAkB,EAAEA,kBAAmB;MAAAK,QAAA,eAEvCT,IAAA,CAACN,IAAI;QAACa,KAAK,EAAEF,MAAM,CAACO;MAAK,CAAE;IAAC,CACnB;EAAC,CACC,CAAC;AAEpB,CAAC;AAED,OAAO,MAAMC,IAAI,gBAAGtB,IAAI,CAACU,SAAS,CAAC;AACnCY,IAAI,CAACC,WAAW,GAAG,MAAM;AAEzB,MAAMR,UAAU,GAAGA,CAAC;EAAES;AAAqB,CAAC,KAC1CtB,UAAU,CAACuB,MAAM,CAAC;EAChBR,SAAS,EAAE;IACTS,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAEzB,qBAAqB;IAC7B0B,eAAe,EAAEP,MAAM,CAACQ;EAC1B,CAAC;EACDb,GAAG,EAAE;IACHc,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDd,IAAI,EAAE;IACJe,KAAK,EAAE7B,UAAU;IACjBuB,MAAM,EAAExB,WAAW;IACnB;IACA+B,YAAY,EAAEtC,MAAM,CAACuC,IAAI;IACzB;IACA;IACAP,eAAe,EAAEP,MAAM,CAACe;EAC1B;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The open calendar: one month per page across the selectable window.
5
+ *
6
+ * Selection is the COMMITTED date as a plain prop, handed only to the page that
7
+ * holds it, so a commit re-renders at most two pages and two memo'd cells.
8
+ *
9
+ * Mounted pages derive from that same committed date. Closed, only its month
10
+ * exists: the layer is invisible, and every month crossing commits a date. Open,
11
+ * its two neighbours join so a swipe shows one; a swipe that lands commits the
12
+ * new month, which re-centres the window. A screen reader pages by scroll
13
+ * actions, so it gets every month. Moves page the pager instantly even while
14
+ * closed, so opening shows the right month.
15
+ */
16
+
17
+ import { memo, useCallback } from 'react';
18
+ import { StyleSheet, View } from 'react-native';
19
+ import Animated from 'react-native-reanimated';
20
+ import { useCalendarContext } from "../core/CalendarContext.js";
21
+ import { clampIndex, ymdAt } from "../core/dateKey.js";
22
+ import { pageOfIndex } from "./calendarCells.js";
23
+ import { DayCell } from "./DayCell.js";
24
+ import { MAX_WEEKS, WEEK_ROW_HEIGHT, WEEK_ROW_V_MARGIN } from "./geometry.js";
25
+ import { PAGER_SCROLL_THROTTLE, useHorizontalPager } from "./useHorizontalPager.js";
26
+ import { jsx as _jsx } from "react/jsx-runtime";
27
+ const GRID_HEIGHT = MAX_WEEKS * WEEK_ROW_HEIGHT;
28
+ const MonthGrid = /*#__PURE__*/memo(({
29
+ page,
30
+ width,
31
+ lefts,
32
+ gridStart,
33
+ weeks,
34
+ rawPageByIndex,
35
+ labels,
36
+ a11yLabels,
37
+ dots,
38
+ selectedIndex,
39
+ todayIndex,
40
+ minIndex,
41
+ maxIndex,
42
+ onDayPress
43
+ }) => {
44
+ const cells = [];
45
+ for (let r = 0; r < weeks; r += 1) {
46
+ for (let c = 0; c < 7; c += 1) {
47
+ const i = gridStart + r * 7 + c;
48
+ // Days of the neighbouring months are blank, as the library's `hideExtraDays` draws them.
49
+ if (i < 0 || i >= labels.length || rawPageByIndex[i] !== page) continue;
50
+ cells.push(/*#__PURE__*/_jsx(DayCell, {
51
+ dayIndex: i,
52
+ label: labels[i],
53
+ accessibilityLabel: a11yLabels?.[i],
54
+ left: lefts[c],
55
+ top: r * WEEK_ROW_HEIGHT + WEEK_ROW_V_MARGIN,
56
+ isToday: i === todayIndex,
57
+ isDisabled: i < minIndex || i > maxIndex,
58
+ isSelected: i === selectedIndex,
59
+ dot: dots[i],
60
+ onPress: onDayPress
61
+ }, i));
62
+ }
63
+ }
64
+ return /*#__PURE__*/_jsx(View, {
65
+ style: [styles.grid, {
66
+ left: page * width,
67
+ width
68
+ }],
69
+ children: cells
70
+ });
71
+ });
72
+ MonthGrid.displayName = 'MonthGrid';
73
+ const MonthPagerInner = ({
74
+ width,
75
+ lefts,
76
+ pages,
77
+ pagesSV,
78
+ labels,
79
+ a11yLabels,
80
+ dots,
81
+ selectedIndex,
82
+ initialPage,
83
+ visiblePage,
84
+ onDayPress,
85
+ animatedStyle,
86
+ isOpen,
87
+ screenReader
88
+ }) => {
89
+ const {
90
+ range,
91
+ setDate
92
+ } = useCalendarContext();
93
+
94
+ /** A swipe landed on another month: select its first selectable day. */
95
+ const onMonthSettled = useCallback(page => {
96
+ setDate(ymdAt(range, clampIndex(range, pages.monthStartByPage[page])), 'pageScroll', 'month');
97
+ }, [pages, range, setDate]);
98
+ const pageOf = useCallback(idx => {
99
+ 'worklet';
100
+
101
+ return pageOfIndex(pagesSV.value, idx);
102
+ }, [pagesSV]);
103
+ const pager = useHorizontalPager({
104
+ width,
105
+ initialPage,
106
+ origin: 'month',
107
+ pageOf,
108
+ page: visiblePage,
109
+ onSettled: onMonthSettled
110
+ });
111
+ const interactive = isOpen || screenReader;
112
+ const committed = pageOfIndex(pages, clampIndex(range, selectedIndex));
113
+ const reach = isOpen ? 1 : 0;
114
+ const first = screenReader ? 0 : Math.max(0, committed - reach);
115
+ const last = screenReader ? pages.count - 1 : Math.min(pages.count - 1, committed + reach);
116
+ const grids = [];
117
+ for (let p = first; p <= last; p += 1) {
118
+ grids.push(/*#__PURE__*/_jsx(MonthGrid, {
119
+ page: p,
120
+ width: width,
121
+ lefts: lefts,
122
+ gridStart: pages.gridStartByPage[p],
123
+ weeks: pages.weeksByPage[p],
124
+ rawPageByIndex: pages.rawPageByIndex,
125
+ labels: labels,
126
+ a11yLabels: a11yLabels,
127
+ dots: dots,
128
+ selectedIndex: pages.rawPageByIndex[selectedIndex] === p ? selectedIndex : -1,
129
+ todayIndex: range.todayIndex,
130
+ minIndex: range.minIndex,
131
+ maxIndex: range.maxIndex,
132
+ onDayPress: onDayPress
133
+ }, p));
134
+ }
135
+ return /*#__PURE__*/_jsx(Animated.View, {
136
+ pointerEvents: interactive ? 'auto' : 'none',
137
+ style: [styles.root, {
138
+ width
139
+ }, animatedStyle],
140
+ children: /*#__PURE__*/_jsx(Animated.ScrollView, {
141
+ ref: pager.ref,
142
+ horizontal: true,
143
+ pagingEnabled: true,
144
+ showsHorizontalScrollIndicator: false,
145
+ scrollEnabled: interactive,
146
+ onScroll: pager.onScroll,
147
+ scrollEventThrottle: PAGER_SCROLL_THROTTLE,
148
+ contentOffset: pager.contentOffset,
149
+ onLayout: pager.onLayout,
150
+ children: /*#__PURE__*/_jsx(View, {
151
+ style: {
152
+ width: pages.count * width,
153
+ height: GRID_HEIGHT
154
+ },
155
+ children: grids
156
+ })
157
+ })
158
+ });
159
+ };
160
+ export const MonthPager = /*#__PURE__*/memo(MonthPagerInner);
161
+ MonthPager.displayName = 'MonthPager';
162
+ const styles = StyleSheet.create({
163
+ root: {
164
+ position: 'absolute',
165
+ top: 0,
166
+ left: 0,
167
+ height: GRID_HEIGHT
168
+ },
169
+ grid: {
170
+ position: 'absolute',
171
+ top: 0,
172
+ height: GRID_HEIGHT
173
+ }
174
+ });
175
+ //# sourceMappingURL=MonthPager.js.map