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,125 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StickyHeaderOverlay = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
10
+ var _reactNativeWorklets = require("react-native-worklets");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ /**
14
+ * The stuck section header: fixed copies drawn over the list.
15
+ *
16
+ * A header INSIDE the ScrollView that sticks by translating itself lags the
17
+ * content by one frame, because the translate comes from a scroll event (M1c:
18
+ * 10–25 dp of drift mid-momentum). A copy outside the ScrollView does not scroll,
19
+ * so it cannot drift; only the ~32 px push-up at a section boundary is event-driven.
20
+ *
21
+ * Copies of the current section and two neighbours each side stay mounted; the UI
22
+ * thread picks the one that shows, so a crossing is covered the frame it happens
23
+ * and React only re-centres the five, at reading speed. While fast every copy hides
24
+ * and the in-list headers scroll past natively — nobody reads a date at that speed,
25
+ * and following it would cost a commit per crossing.
26
+ *
27
+ * Touches: hidden copies are translated off the host (they take none); the shown
28
+ * copy is `box-none`, so its buttons work and a drag anywhere else reaches the list.
29
+ */
30
+
31
+ const NEIGHBOURS = 2;
32
+ // Scalar-only constants, returned by reference. Never a `transform` in a shared
33
+ // constant: Reanimated's `updateProps` processes transforms in place, and worklets
34
+ // freeze captured objects in DEV. `top` changes only at a section crossing.
35
+ const COPY_SHOWN = {
36
+ opacity: 1,
37
+ top: 0
38
+ };
39
+ const COPY_HIDDEN = {
40
+ opacity: 0,
41
+ top: -4096
42
+ };
43
+ const OverlayCopy = /*#__PURE__*/(0, _react.memo)(({
44
+ sectionIndex,
45
+ title,
46
+ height,
47
+ sticky,
48
+ renderSectionHeader
49
+ }) => {
50
+ const shown = (0, _reactNativeReanimated.useAnimatedStyle)(() => sticky.fast.value === 0 && sticky.currentSection.value === sectionIndex ? COPY_SHOWN : COPY_HIDDEN);
51
+ const style = (0, _react.useMemo)(() => [styles.copy, {
52
+ height
53
+ }, shown], [height, shown]);
54
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
55
+ collapsable: false,
56
+ pointerEvents: "box-none",
57
+ style: style,
58
+ children: renderSectionHeader(title)
59
+ });
60
+ });
61
+ OverlayCopy.displayName = 'StickyHeaderOverlayCopy';
62
+ const StickyHeaderOverlayInner = ({
63
+ initialSection,
64
+ sectionCount,
65
+ titleAt,
66
+ height,
67
+ sticky,
68
+ renderSectionHeader
69
+ }) => {
70
+ const [centre, setCentre] = (0, _react.useState)(initialSection);
71
+ (0, _reactNativeReanimated.useAnimatedReaction)(() => sticky.fast.value === 1 ? -1 : sticky.currentSection.value, (s, prev) => {
72
+ if (s >= 0 && s !== prev) (0, _reactNativeWorklets.runOnJS)(setCentre)(s);
73
+ });
74
+
75
+ // The push-up: the next section's header shoves the stuck one out of the top.
76
+ const pushUp = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
77
+ const next = sticky.tablesSV.value.sectionOffset[sticky.currentSection.value + 1];
78
+ const t = next === undefined ? 0 : next - sticky.scrollY.value - height;
79
+ return {
80
+ transform: [{
81
+ translateY: t < 0 ? t : 0
82
+ }]
83
+ };
84
+ });
85
+ const hostStyle = (0, _react.useMemo)(() => [styles.host, {
86
+ height
87
+ }, pushUp], [height, pushUp]);
88
+ const copies = [];
89
+ const last = Math.min(sectionCount - 1, centre + NEIGHBOURS);
90
+ for (let s = Math.max(0, centre - NEIGHBOURS); s <= last; s += 1) {
91
+ const title = titleAt(s);
92
+ if (title === undefined) continue;
93
+ copies.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(OverlayCopy, {
94
+ sectionIndex: s,
95
+ title: title,
96
+ height: height,
97
+ sticky: sticky,
98
+ renderSectionHeader: renderSectionHeader
99
+ }, title));
100
+ }
101
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
102
+ pointerEvents: "box-none",
103
+ style: hostStyle,
104
+ children: copies
105
+ });
106
+ };
107
+ const StickyHeaderOverlay = exports.StickyHeaderOverlay = /*#__PURE__*/(0, _react.memo)(StickyHeaderOverlayInner);
108
+ StickyHeaderOverlay.displayName = 'StickyHeaderOverlay';
109
+ const styles = _reactNative.StyleSheet.create({
110
+ host: {
111
+ position: 'absolute',
112
+ top: 0,
113
+ left: 0,
114
+ right: 0,
115
+ overflow: 'hidden'
116
+ },
117
+ copy: {
118
+ position: 'absolute',
119
+ top: 0,
120
+ left: 0,
121
+ right: 0,
122
+ overflow: 'hidden'
123
+ }
124
+ });
125
+ //# sourceMappingURL=StickyHeaderOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_reactNativeReanimated","_interopRequireWildcard","_reactNativeWorklets","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NEIGHBOURS","COPY_SHOWN","opacity","top","COPY_HIDDEN","OverlayCopy","memo","sectionIndex","title","height","sticky","renderSectionHeader","shown","useAnimatedStyle","fast","value","currentSection","style","useMemo","styles","copy","jsx","View","collapsable","pointerEvents","children","displayName","StickyHeaderOverlayInner","initialSection","sectionCount","titleAt","centre","setCentre","useState","useAnimatedReaction","s","prev","runOnJS","pushUp","next","tablesSV","sectionOffset","undefined","scrollY","transform","translateY","hostStyle","host","copies","last","Math","min","max","push","StickyHeaderOverlay","exports","StyleSheet","create","position","left","right","overflow"],"sourceRoot":"../../../src","sources":["agenda/StickyHeaderOverlay.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.buildAgendaLayout = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _civil = require("../core/civil.js");
9
+ /**
10
+ * Sections → a flat row list with declared heights and prefix-sum offsets.
11
+ *
12
+ * PURE: the one place the agenda's geometry is decided (rule 3 — layout is
13
+ * declared, never measured). `offsets` has n+1 entries, so a row's height is
14
+ * `offsets[i+1] − offsets[i]` and the last entry is the content height.
15
+ *
16
+ * Offsets land on whole DEVICE pixels: the running sum stays exact, each row's top
17
+ * and bottom are that sum rounded, and its height is their difference. A slot's
18
+ * bottom is then exactly the next slot's top. Fractional offsets let Android round
19
+ * each edge on its own and open 1 px seams that showed the backdrop behind the list
20
+ * as grey hairlines (2026-09-11). No row moves by half a pixel or more.
21
+ */
22
+
23
+ const buildAgendaLayout = ({
24
+ sections,
25
+ sectionHeaderHeight,
26
+ heightForType,
27
+ getItemType,
28
+ keyExtractor,
29
+ headerIntern
30
+ }) => {
31
+ const rows = [];
32
+ const heights = [];
33
+ const offsets = [];
34
+ const sectionStart = new Array(sections.length);
35
+ const sectionOffset = new Array(sections.length + 1);
36
+ const monthOfSection = new Array(sections.length);
37
+ const sectionByTitle = new Map();
38
+ const ratio = _reactNative.PixelRatio.get();
39
+ const snap = v => Math.round(v * ratio) / ratio;
40
+ /** The unrounded running sum; `y` is its snapped value, the next row's top. */
41
+ let exact = 0;
42
+ let y = 0;
43
+ for (let s = 0; s < sections.length; s += 1) {
44
+ const {
45
+ title,
46
+ data
47
+ } = sections[s];
48
+ let header = headerIntern.get(title);
49
+ // The index is part of the identity: a window shifted by a day must not reuse
50
+ // a header that points at another section's bounds.
51
+ if (!header || header.section !== s) {
52
+ header = {
53
+ kind: 'header',
54
+ section: s,
55
+ title,
56
+ key: `h:${title}`
57
+ };
58
+ headerIntern.set(title, header);
59
+ }
60
+ sectionStart[s] = rows.length;
61
+ sectionOffset[s] = y;
62
+ monthOfSection[s] = (0, _civil.monthOrdinalOfYmd)(title);
63
+ sectionByTitle.set(title, s);
64
+ rows.push(header);
65
+ offsets.push(y);
66
+ exact += sectionHeaderHeight;
67
+ let bottom = snap(exact);
68
+ heights.push(bottom - y);
69
+ y = bottom;
70
+ for (let i = 0; i < data.length; i += 1) {
71
+ const item = data[i];
72
+ rows.push({
73
+ kind: 'item',
74
+ section: s,
75
+ indexInSection: i,
76
+ item,
77
+ key: keyExtractor(item, i)
78
+ });
79
+ offsets.push(y);
80
+ exact += heightForType(getItemType(item));
81
+ bottom = snap(exact);
82
+ heights.push(bottom - y);
83
+ y = bottom;
84
+ }
85
+ }
86
+ sectionOffset[sections.length] = y;
87
+ offsets.push(y);
88
+ return {
89
+ rows,
90
+ heights,
91
+ offsets,
92
+ sectionStart,
93
+ sectionOffset,
94
+ monthOfSection,
95
+ sectionByTitle,
96
+ totalHeight: y
97
+ };
98
+ };
99
+ exports.buildAgendaLayout = buildAgendaLayout;
100
+ //# sourceMappingURL=buildAgendaLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_civil","buildAgendaLayout","sections","sectionHeaderHeight","heightForType","getItemType","keyExtractor","headerIntern","rows","heights","offsets","sectionStart","Array","length","sectionOffset","monthOfSection","sectionByTitle","Map","ratio","PixelRatio","get","snap","v","Math","round","exact","y","s","title","data","header","section","kind","key","set","monthOrdinalOfYmd","push","bottom","i","item","indexInSection","totalHeight","exports"],"sourceRoot":"../../../src","sources":["agenda/buildAgendaLayout.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.UPGRADE_BATCH = exports.REST_TRAIL_H = exports.REST_REACH_H = exports.MAX_WINDOW_ROWS = exports.FAST_EXIT = exports.FAST_ENTER = exports.BUCKET_REST = exports.BUCKET_FAST = void 0;
7
+ /** Upper bound on mounted rows: a ceiling for the fastest fling. */
8
+ const MAX_WINDOW_ROWS = exports.MAX_WINDOW_ROWS = 128;
9
+
10
+ /** Rows per window bucket, powers of two (bucketing is a mask). 32 while fast: ~25 → ~3 commits per fling (M1a). */
11
+ const BUCKET_REST = exports.BUCKET_REST = 8;
12
+ const BUCKET_FAST = exports.BUCKET_FAST = 32;
13
+
14
+ /**
15
+ * The rest window, in viewport heights ahead of and behind the viewport (was 1.5 / 1).
16
+ * Every mounted row costs frame time on screen or not, so rest stays tight and flings
17
+ * widen by velocity. Measured with `removeClippedSubviews` in release on the SM-F415F
18
+ * (2026-09-11): the pair took fling p95 57 → 48 ms; the small window alone gained nothing.
19
+ */
20
+ const REST_REACH_H = exports.REST_REACH_H = 0.5;
21
+ const REST_TRAIL_H = exports.REST_TRAIL_H = 0.25;
22
+
23
+ /** px/ms. Above FAST_ENTER entering rows are deferred to the backdrop; below FAST_EXIT they upgrade. */
24
+ const FAST_ENTER = exports.FAST_ENTER = 4;
25
+ const FAST_EXIT = exports.FAST_EXIT = 1.5;
26
+
27
+ /** Deferred rows made real per frame, after the visible ones. */
28
+ const UPGRADE_BATCH = exports.UPGRADE_BATCH = 8;
29
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MAX_WINDOW_ROWS","exports","BUCKET_REST","BUCKET_FAST","REST_REACH_H","REST_TRAIL_H","FAST_ENTER","FAST_EXIT","UPGRADE_BATCH"],"sourceRoot":"../../../src","sources":["agenda/constants.ts"],"mappings":";;;;;;AAAA;AACO,MAAMA,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,GAAG;;AAElC;AACO,MAAME,WAAW,GAAAD,OAAA,CAAAC,WAAA,GAAG,CAAC;AACrB,MAAMC,WAAW,GAAAF,OAAA,CAAAE,WAAA,GAAG,EAAE;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,GAAAH,OAAA,CAAAG,YAAA,GAAG,GAAG;AACxB,MAAMC,YAAY,GAAAJ,OAAA,CAAAI,YAAA,GAAG,IAAI;;AAEhC;AACO,MAAMC,UAAU,GAAAL,OAAA,CAAAK,UAAA,GAAG,CAAC;AACpB,MAAMC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,GAAG;;AAE5B;AACO,MAAMC,aAAa,GAAAP,OAAA,CAAAO,aAAA,GAAG,CAAC","ignoreList":[]}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.reportHeight = exports.onHeightDrift = exports.needsMeasure = void 0;
7
+ /**
8
+ * DEV height-drift check — the honesty test on "layout is declared, not measured".
9
+ *
10
+ * Every slot clips (`overflow: 'hidden'`), so a row taller than its table entry
11
+ * loses its bottom pixels silently. While a listener is installed
12
+ * (`onHeightDrift`, e.g. a temporary DEV overlay), each row type measures once and reports the delta.
13
+ * With no listener nothing measures: no wrapper view, no `onLayout`, in any build.
14
+ */
15
+
16
+ const declaredByType = new Map();
17
+ let listener = null;
18
+
19
+ /** Install (or with `null`, remove) the one drift listener. Installing re-samples. */
20
+ const onHeightDrift = fn => {
21
+ if (!__DEV__) return;
22
+ listener = fn;
23
+ declaredByType.clear();
24
+ };
25
+
26
+ /** True while this row type still needs a sample at its current declaration. */
27
+ exports.onHeightDrift = onHeightDrift;
28
+ const needsMeasure = (type, declared) => {
29
+ if (!__DEV__ || listener === null) return false;
30
+ const seen = declaredByType.get(type);
31
+ return seen === undefined || Math.abs(seen - declared) >= 0.01;
32
+ };
33
+ exports.needsMeasure = needsMeasure;
34
+ const reportHeight = (type, declared, measured) => {
35
+ if (!__DEV__ || listener === null || !needsMeasure(type, declared)) return;
36
+ declaredByType.set(type, declared);
37
+ const delta = measured - declared;
38
+ if (Math.abs(delta) > 1) {
39
+ console.warn(`[agenda-kit] height drift ${type}: declared ${declared.toFixed(2)} measured ${measured.toFixed(2)}`);
40
+ }
41
+ listener({
42
+ type,
43
+ declared,
44
+ measured,
45
+ delta
46
+ });
47
+ };
48
+ exports.reportHeight = reportHeight;
49
+ //# sourceMappingURL=heights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["declaredByType","Map","listener","onHeightDrift","fn","__DEV__","clear","exports","needsMeasure","type","declared","seen","get","undefined","Math","abs","reportHeight","measured","set","delta","console","warn","toFixed"],"sourceRoot":"../../../src","sources":["agenda/heights.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,MAAMA,cAAc,GAAG,IAAIC,GAAG,CAAiB,CAAC;AAChD,IAAIC,QAA+C,GAAG,IAAI;;AAE1D;AACO,MAAMC,aAAa,GAAIC,EAAyC,IAAW;EAChF,IAAI,CAACC,OAAO,EAAE;EACdH,QAAQ,GAAGE,EAAE;EACbJ,cAAc,CAACM,KAAK,CAAC,CAAC;AACxB,CAAC;;AAED;AAAAC,OAAA,CAAAJ,aAAA,GAAAA,aAAA;AACO,MAAMK,YAAY,GAAGA,CAACC,IAAY,EAAEC,QAAgB,KAAc;EACvE,IAAI,CAACL,OAAO,IAAIH,QAAQ,KAAK,IAAI,EAAE,OAAO,KAAK;EAC/C,MAAMS,IAAI,GAAGX,cAAc,CAACY,GAAG,CAACH,IAAI,CAAC;EACrC,OAAOE,IAAI,KAAKE,SAAS,IAAIC,IAAI,CAACC,GAAG,CAACJ,IAAI,GAAGD,QAAQ,CAAC,IAAI,IAAI;AAChE,CAAC;AAACH,OAAA,CAAAC,YAAA,GAAAA,YAAA;AAEK,MAAMQ,YAAY,GAAGA,CAACP,IAAY,EAAEC,QAAgB,EAAEO,QAAgB,KAAW;EACtF,IAAI,CAACZ,OAAO,IAAIH,QAAQ,KAAK,IAAI,IAAI,CAACM,YAAY,CAACC,IAAI,EAAEC,QAAQ,CAAC,EAAE;EACpEV,cAAc,CAACkB,GAAG,CAACT,IAAI,EAAEC,QAAQ,CAAC;EAClC,MAAMS,KAAK,GAAGF,QAAQ,GAAGP,QAAQ;EACjC,IAAII,IAAI,CAACC,GAAG,CAACI,KAAK,CAAC,GAAG,CAAC,EAAE;IACvBC,OAAO,CAACC,IAAI,CACV,6BAA6BZ,IAAI,cAAcC,QAAQ,CAACY,OAAO,CAAC,CAAC,CAAC,aAAaL,QAAQ,CAACK,OAAO,CAAC,CAAC,CAAC,EACpG,CAAC;EACH;EACApB,QAAQ,CAAC;IAAEO,IAAI;IAAEC,QAAQ;IAAEO,QAAQ;IAAEE;EAAM,CAAC,CAAC;AAC/C,CAAC;AAACZ,OAAA,CAAAS,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useAgendaScrollSync = void 0;
7
+ var _react = require("react");
8
+ var _reactNativeReanimated = require("react-native-reanimated");
9
+ var _reactNativeWorklets = require("react-native-worklets");
10
+ var _worklets = require("../core/worklets.js");
11
+ var _constants = require("./constants.js");
12
+ /**
13
+ * The agenda's scroll handler — everything per frame runs here, on the UI thread.
14
+ *
15
+ * 1. Derive the date: `dayIndex` is the day whose header holds most of the
16
+ * header slot, written whenever no animated programmatic scroll is travelling.
17
+ * 2. Move the window: pixel overscan that grows with velocity, bucketed so a
18
+ * bucket edge is crossed a few times per fling, not every frame.
19
+ * 3. Tell React rarely: per month crossing while moving, at settle, and once
20
+ * if the day under the header changes after settle.
21
+ */
22
+
23
+ /** The layout's lookup tables, mirrored to the UI thread in one write per rebuild. */
24
+
25
+ const useAgendaScrollSync = ({
26
+ tablesSV,
27
+ viewportSV,
28
+ headerHeight,
29
+ dayIndex,
30
+ listDragSeq,
31
+ onWindowChange,
32
+ onCommitDate,
33
+ onFastChange,
34
+ onDragBegin,
35
+ onSettle
36
+ }) => {
37
+ const scrollY = (0, _reactNativeReanimated.useSharedValue)(0);
38
+ /** A decaying peak: Android reports velocity 0 on about every other event mid-fling. */
39
+ const velocity = (0, _reactNativeReanimated.useSharedValue)(0);
40
+ /** Section whose header is at or above the top edge — the stuck header. */
41
+ const currentSection = (0, _reactNativeReanimated.useSharedValue)(0);
42
+ /** 1 from drag or momentum begin to settle. The only thing that widens the overscan. */
43
+ const moving = (0, _reactNativeReanimated.useSharedValue)(0);
44
+ /** 1 while too fast to read; rows entering the window are deferred. Hysteresis on enter/exit. */
45
+ const fast = (0, _reactNativeReanimated.useSharedValue)(0);
46
+ /**
47
+ * Target of an ANIMATED programmatic scroll, or −1. While set the list writes no
48
+ * date — an animated scroll passes through every day on the way. Instant jumps
49
+ * never set it: their single event lands on the target, and a dropped event can
50
+ * therefore never leave the date frozen.
51
+ */
52
+ const programmaticY = (0, _reactNativeReanimated.useSharedValue)(-1);
53
+ const windowFirst = (0, _reactNativeReanimated.useSharedValue)(0);
54
+ const windowLast = (0, _reactNativeReanimated.useSharedValue)(0);
55
+ const lastY = (0, _reactNativeReanimated.useSharedValue)(0);
56
+ /** The section last handed to `onCommitDate`. */
57
+ const lastCommitted = (0, _reactNativeReanimated.useSharedValue)(-1);
58
+ const applyOffset = (0, _react.useCallback)((y, v) => {
59
+ 'worklet';
60
+
61
+ const {
62
+ offsets,
63
+ sectionOffset,
64
+ monthOfSection
65
+ } = tablesSV.value;
66
+ const rowCount = offsets.length - 1;
67
+ const sectionCount = sectionOffset.length - 1;
68
+ const H = viewportSV.value;
69
+ if (rowCount <= 0 || sectionCount <= 0 || H === 0) return;
70
+
71
+ // `y + 1`: a header sitting exactly on the edge is the current one.
72
+ const s = (0, _worklets.clampNum)((0, _worklets.bsearchLE)(sectionOffset, y + 1), 0, sectionCount - 1);
73
+ if (currentSection.value !== s) currentSection.value = s;
74
+ // A header slot is shorter than any section, so the day holding most of
75
+ // it is `s` or `s + 1` — no second search.
76
+ const d = s + 1 < sectionCount && sectionOffset[s + 1] <= y + headerHeight / 2 ? s + 1 : s;
77
+ const owned = programmaticY.value < 0;
78
+ if (owned && dayIndex.value !== d) dayIndex.value = d;
79
+ const isMoving = moving.value === 1;
80
+ if (isMoving && v > _constants.FAST_ENTER && fast.value === 0) {
81
+ fast.value = 1;
82
+ (0, _reactNativeWorklets.runOnJS)(onFastChange)(true);
83
+ } else if ((!isMoving || v < _constants.FAST_EXIT) && fast.value === 1) {
84
+ fast.value = 0;
85
+ (0, _reactNativeWorklets.runOnJS)(onFastChange)(false);
86
+ }
87
+ const isFast = fast.value === 1;
88
+
89
+ // Overscan in pixels. Moving: 0.75 H plus 200 ms of travel, capped at 3 H of
90
+ // real rows or 6 H while entering rows are deferred (5 H of real rows was
91
+ // measured on the device and made the blank worse). At rest: the tight
92
+ // `REST_REACH_H` / `REST_TRAIL_H` — every mounted row costs frame time.
93
+ const reach = isMoving ? (0, _worklets.clampNum)(0.75 * H + v * 200, H, (isFast ? 6 : 3) * H) : _constants.REST_REACH_H * H;
94
+ const trail = isMoving ? 0.2 * H : _constants.REST_TRAIL_H * H;
95
+ const goingDown = y >= lastY.value;
96
+ lastY.value = y;
97
+ const bucket = isFast ? _constants.BUCKET_FAST : _constants.BUCKET_REST;
98
+ let first = (0, _worklets.bsearchLE)(offsets, y - (goingDown ? trail : reach)) & -bucket;
99
+ let last = Math.min(rowCount - 1, (0, _worklets.bsearchLE)(offsets, y + H + (goingDown ? reach : trail)) | bucket - 1);
100
+
101
+ // While fast the window only grows in the travel direction: a velocity
102
+ // jitter across a 32-row bucket edge would otherwise tear down and rebuild
103
+ // 32 rows mid-fling. Released the moment `fast` drops, so the upgrade to
104
+ // real rows happens on the tight window (the 483 ms stall, M1a).
105
+ if (isFast) {
106
+ if (goingDown) {
107
+ if (first > windowFirst.value) first = windowFirst.value;
108
+ if (last < windowLast.value) last = windowLast.value;
109
+ } else {
110
+ if (first > windowFirst.value) first = windowFirst.value;
111
+ if (last < windowLast.value) last = windowLast.value;
112
+ }
113
+ }
114
+ // The cap trims the trailing edge — those rows are leaving.
115
+ if (last - first + 1 > _constants.MAX_WINDOW_ROWS) {
116
+ if (goingDown) first = last - _constants.MAX_WINDOW_ROWS + 1;else last = first + _constants.MAX_WINDOW_ROWS - 1;
117
+ }
118
+ if (first !== windowFirst.value || last !== windowLast.value) {
119
+ windowFirst.value = first;
120
+ windowLast.value = last;
121
+ (0, _reactNativeWorklets.runOnJS)(onWindowChange)(first, last);
122
+ }
123
+ if (!owned) return;
124
+ const committed = lastCommitted.value;
125
+ if (isMoving) {
126
+ if (committed < 0 || monthOfSection[d] !== monthOfSection[committed]) {
127
+ lastCommitted.value = d;
128
+ (0, _reactNativeWorklets.runOnJS)(onCommitDate)(d);
129
+ }
130
+ } else if (d !== committed && v < 0.5) {
131
+ // "Nearly still": a hard fling's first events can arrive before
132
+ // `onBeginDrag`, and each would otherwise commit a throwaway day.
133
+ lastCommitted.value = d;
134
+ (0, _reactNativeWorklets.runOnJS)(onCommitDate)(d);
135
+ }
136
+ }, [currentSection, dayIndex, fast, headerHeight, lastCommitted, lastY, moving, onCommitDate, onFastChange, onWindowChange, programmaticY, tablesSV, viewportSV, windowFirst, windowLast]);
137
+
138
+ /** The one settle path: a no-throw release or a momentum end. */
139
+ const endMove = (0, _react.useCallback)(y => {
140
+ 'worklet';
141
+
142
+ moving.value = 0;
143
+ velocity.value = 0;
144
+ // The settle event's offset is the only one guaranteed final: Android drops
145
+ // a scroll event inside `scrollEventThrottle` of the previous one (M6).
146
+ scrollY.value = y;
147
+ const target = programmaticY.value;
148
+ if (target >= 0) {
149
+ const {
150
+ offsets
151
+ } = tablesSV.value;
152
+ const maxY = (offsets[offsets.length - 1] ?? 0) - viewportSV.value;
153
+ if (Math.abs(y - target) < 2 || y >= maxY - 1) programmaticY.value = -1;
154
+ }
155
+ applyOffset(y, 0);
156
+ if (onSettle) (0, _reactNativeWorklets.runOnJS)(onSettle)();
157
+ }, [applyOffset, moving, onSettle, programmaticY, scrollY, tablesSV, velocity, viewportSV]);
158
+ const scrollHandler = (0, _reactNativeReanimated.useAnimatedScrollHandler)({
159
+ onBeginDrag: () => {
160
+ moving.value = 1;
161
+ // A finger overrides any move still travelling.
162
+ programmaticY.value = -1;
163
+ listDragSeq.value = listDragSeq.value + 1;
164
+ if (onDragBegin) (0, _reactNativeWorklets.runOnJS)(onDragBegin)();
165
+ },
166
+ onMomentumBegin: () => {
167
+ moving.value = 1;
168
+ },
169
+ onScroll: e => {
170
+ const y = e.contentOffset.y;
171
+ // A hard fling's first event can jump hundreds of pixels while reporting
172
+ // velocity 0; hand a jump over 24 px on as motion, not as "at rest".
173
+ const jump = Math.abs(y - scrollY.value);
174
+ scrollY.value = y;
175
+ if (programmaticY.value >= 0 && Math.abs(y - programmaticY.value) < 1.5) {
176
+ programmaticY.value = -1;
177
+ }
178
+ const raw = e.velocity ? Math.abs(e.velocity.y) : 0;
179
+ const held = velocity.value * 0.85;
180
+ velocity.value = raw > held ? raw : held;
181
+ applyOffset(y, jump > 24 && velocity.value < 1 ? 1 : velocity.value);
182
+ },
183
+ onEndDrag: e => {
184
+ // A release with no throw gets no momentum end, so it settles here.
185
+ if (Math.abs(e.velocity ? e.velocity.y : 0) < 0.05) endMove(e.contentOffset.y);
186
+ },
187
+ onMomentumEnd: e => {
188
+ endMove(e.contentOffset.y);
189
+ }
190
+ }, [applyOffset, endMove, listDragSeq, moving, onDragBegin, programmaticY, scrollY, velocity]);
191
+ return {
192
+ scrollY,
193
+ currentSection,
194
+ moving,
195
+ fast,
196
+ programmaticY,
197
+ windowFirst,
198
+ windowLast,
199
+ scrollHandler,
200
+ applyOffset
201
+ };
202
+ };
203
+ exports.useAgendaScrollSync = useAgendaScrollSync;
204
+ //# sourceMappingURL=useAgendaScrollSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNativeReanimated","_reactNativeWorklets","_worklets","_constants","useAgendaScrollSync","tablesSV","viewportSV","headerHeight","dayIndex","listDragSeq","onWindowChange","onCommitDate","onFastChange","onDragBegin","onSettle","scrollY","useSharedValue","velocity","currentSection","moving","fast","programmaticY","windowFirst","windowLast","lastY","lastCommitted","applyOffset","useCallback","y","v","offsets","sectionOffset","monthOfSection","value","rowCount","length","sectionCount","H","s","clampNum","bsearchLE","d","owned","isMoving","FAST_ENTER","runOnJS","FAST_EXIT","isFast","reach","REST_REACH_H","trail","REST_TRAIL_H","goingDown","bucket","BUCKET_FAST","BUCKET_REST","first","last","Math","min","MAX_WINDOW_ROWS","committed","endMove","target","maxY","abs","scrollHandler","useAnimatedScrollHandler","onBeginDrag","onMomentumBegin","onScroll","e","contentOffset","jump","raw","held","onEndDrag","onMomentumEnd","exports"],"sourceRoot":"../../../src","sources":["agenda/useAgendaScrollSync.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ArrowGlyph = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+ /**
10
+ * An up arrow drawn from two Views: a stem, and a square with only its top and
11
+ * left borders painted, rotated 45° into a chevron.
12
+ *
13
+ * The kit ships no icon font and takes no SVG peer dependency for one 14 px
14
+ * glyph — a consumer should not have to install an icon package to get a Today
15
+ * button. Rotation of the whole arrow is the caller's job (`TodayButton` flips
16
+ * it 180° on the UI thread).
17
+ */
18
+
19
+ const STROKE = 1.6;
20
+ const ArrowGlyph = ({
21
+ size,
22
+ color
23
+ }) => {
24
+ // Rotating a square 45° about its centre puts its top-left corner directly
25
+ // above that centre, at (√2 / 2) · side away — so the apex lands on
26
+ // `apexY` when the square's centre sits that far below it.
27
+ const side = size * 0.34;
28
+ const apexY = size * 0.12;
29
+ const headCentreY = apexY + Math.SQRT2 / 2 * side;
30
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
31
+ style: {
32
+ width: size,
33
+ height: size
34
+ },
35
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
36
+ style: {
37
+ position: 'absolute',
38
+ left: '50%',
39
+ marginLeft: -STROKE / 2,
40
+ top: apexY,
41
+ width: STROKE,
42
+ height: size - apexY * 2,
43
+ backgroundColor: color,
44
+ borderRadius: STROKE
45
+ }
46
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
47
+ style: {
48
+ position: 'absolute',
49
+ left: '50%',
50
+ marginLeft: -side / 2,
51
+ top: headCentreY - side / 2,
52
+ width: side,
53
+ height: side,
54
+ borderTopWidth: STROKE,
55
+ borderLeftWidth: STROKE,
56
+ borderColor: color,
57
+ transform: [{
58
+ rotate: '45deg'
59
+ }]
60
+ }
61
+ })]
62
+ });
63
+ };
64
+ exports.ArrowGlyph = ArrowGlyph;
65
+ //# sourceMappingURL=ArrowGlyph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_jsxRuntime","STROKE","ArrowGlyph","size","color","side","apexY","headCentreY","Math","SQRT2","jsxs","View","style","width","height","children","jsx","position","left","marginLeft","top","backgroundColor","borderRadius","borderTopWidth","borderLeftWidth","borderColor","transform","rotate","exports"],"sourceRoot":"../../../src","sources":["core/ArrowGlyph.tsx"],"mappings":";;;;;;AAUA,IAAAA,YAAA,GAAAC,OAAA;AAAoC,IAAAC,WAAA,GAAAD,OAAA;AAVpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,MAAME,MAAM,GAAG,GAAG;AAEX,MAAMC,UAAU,GAAGA,CAAC;EAAEC,IAAI;EAAEC;AAAuC,CAAC,KAAK;EAC9E;EACA;EACA;EACA,MAAMC,IAAI,GAAGF,IAAI,GAAG,IAAI;EACxB,MAAMG,KAAK,GAAGH,IAAI,GAAG,IAAI;EACzB,MAAMI,WAAW,GAAGD,KAAK,GAAIE,IAAI,CAACC,KAAK,GAAG,CAAC,GAAIJ,IAAI;EAEnD,oBACE,IAAAL,WAAA,CAAAU,IAAA,EAACZ,YAAA,CAAAa,IAAI;IAACC,KAAK,EAAE;MAAEC,KAAK,EAAEV,IAAI;MAAEW,MAAM,EAAEX;IAAK,CAAE;IAAAY,QAAA,gBACzC,IAAAf,WAAA,CAAAgB,GAAA,EAAClB,YAAA,CAAAa,IAAI;MACHC,KAAK,EAAE;QACLK,QAAQ,EAAE,UAAU;QACpBC,IAAI,EAAE,KAAK;QACXC,UAAU,EAAE,CAAClB,MAAM,GAAG,CAAC;QACvBmB,GAAG,EAAEd,KAAK;QACVO,KAAK,EAAEZ,MAAM;QACba,MAAM,EAAEX,IAAI,GAAGG,KAAK,GAAG,CAAC;QACxBe,eAAe,EAAEjB,KAAK;QACtBkB,YAAY,EAAErB;MAChB;IAAE,CACH,CAAC,eACF,IAAAD,WAAA,CAAAgB,GAAA,EAAClB,YAAA,CAAAa,IAAI;MACHC,KAAK,EAAE;QACLK,QAAQ,EAAE,UAAU;QACpBC,IAAI,EAAE,KAAK;QACXC,UAAU,EAAE,CAACd,IAAI,GAAG,CAAC;QACrBe,GAAG,EAAEb,WAAW,GAAGF,IAAI,GAAG,CAAC;QAC3BQ,KAAK,EAAER,IAAI;QACXS,MAAM,EAAET,IAAI;QACZkB,cAAc,EAAEtB,MAAM;QACtBuB,eAAe,EAAEvB,MAAM;QACvBwB,WAAW,EAAErB,KAAK;QAClBsB,SAAS,EAAE,CAAC;UAAEC,MAAM,EAAE;QAAQ,CAAC;MACjC;IAAE,CACH,CAAC;EAAA,CACE,CAAC;AAEX,CAAC;AAACC,OAAA,CAAA1B,UAAA,GAAAA,UAAA","ignoreList":[]}