react-native-roster 0.0.0 → 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 (373) hide show
  1. package/NOTICE.md +29 -0
  2. package/README.md +455 -2
  3. package/dist/src/adapters/rrule/cache.d.ts +15 -0
  4. package/dist/src/adapters/rrule/cache.d.ts.map +1 -0
  5. package/dist/src/adapters/rrule/cache.js +53 -0
  6. package/dist/src/adapters/rrule/cache.js.map +1 -0
  7. package/dist/src/adapters/rrule/envelope.d.ts +3 -0
  8. package/dist/src/adapters/rrule/envelope.d.ts.map +1 -0
  9. package/dist/src/adapters/rrule/envelope.js +9 -0
  10. package/dist/src/adapters/rrule/envelope.js.map +1 -0
  11. package/dist/src/adapters/rrule/expand.d.ts +4 -0
  12. package/dist/src/adapters/rrule/expand.d.ts.map +1 -0
  13. package/dist/src/adapters/rrule/expand.js +92 -0
  14. package/dist/src/adapters/rrule/expand.js.map +1 -0
  15. package/dist/src/adapters/rrule/hash.d.ts +3 -0
  16. package/dist/src/adapters/rrule/hash.d.ts.map +1 -0
  17. package/dist/src/adapters/rrule/hash.js +15 -0
  18. package/dist/src/adapters/rrule/hash.js.map +1 -0
  19. package/dist/src/adapters/rrule/index.d.ts +5 -0
  20. package/dist/src/adapters/rrule/index.d.ts.map +1 -0
  21. package/dist/src/adapters/rrule/index.js +12 -0
  22. package/dist/src/adapters/rrule/index.js.map +1 -0
  23. package/dist/src/adapters/rrule/net.d.ts +6 -0
  24. package/dist/src/adapters/rrule/net.d.ts.map +1 -0
  25. package/dist/src/adapters/rrule/net.js +31 -0
  26. package/dist/src/adapters/rrule/net.js.map +1 -0
  27. package/dist/src/adapters/rrule/occurrences.d.ts +6 -0
  28. package/dist/src/adapters/rrule/occurrences.d.ts.map +1 -0
  29. package/dist/src/adapters/rrule/occurrences.js +252 -0
  30. package/dist/src/adapters/rrule/occurrences.js.map +1 -0
  31. package/dist/src/adapters/rrule/types.d.ts +62 -0
  32. package/dist/src/adapters/rrule/types.d.ts.map +1 -0
  33. package/dist/src/adapters/rrule/types.js +3 -0
  34. package/dist/src/adapters/rrule/types.js.map +1 -0
  35. package/dist/src/adapters/rrule/validate.d.ts +6 -0
  36. package/dist/src/adapters/rrule/validate.d.ts.map +1 -0
  37. package/dist/src/adapters/rrule/validate.js +64 -0
  38. package/dist/src/adapters/rrule/validate.js.map +1 -0
  39. package/dist/src/components/layers/layers.types.d.ts +15 -0
  40. package/dist/src/components/layers/layers.types.d.ts.map +1 -0
  41. package/dist/src/components/layers/layers.types.js +3 -0
  42. package/dist/src/components/layers/layers.types.js.map +1 -0
  43. package/dist/src/components/layers/parts/gap.d.ts +3 -0
  44. package/dist/src/components/layers/parts/gap.d.ts.map +1 -0
  45. package/dist/src/components/layers/parts/gap.js +7 -0
  46. package/dist/src/components/layers/parts/gap.js.map +1 -0
  47. package/dist/src/components/layers/parts/interval.d.ts +3 -0
  48. package/dist/src/components/layers/parts/interval.d.ts.map +1 -0
  49. package/dist/src/components/layers/parts/interval.js +22 -0
  50. package/dist/src/components/layers/parts/interval.js.map +1 -0
  51. package/dist/src/components/layers/utils/styles.d.ts +7 -0
  52. package/dist/src/components/layers/utils/styles.d.ts.map +1 -0
  53. package/dist/src/components/layers/utils/styles.js +24 -0
  54. package/dist/src/components/layers/utils/styles.js.map +1 -0
  55. package/dist/src/components/primitives/press-point.d.ts +3 -0
  56. package/dist/src/components/primitives/press-point.d.ts.map +1 -0
  57. package/dist/src/components/primitives/press-point.js +7 -0
  58. package/dist/src/components/primitives/press-point.js.map +1 -0
  59. package/dist/src/components/primitives/press-point.types.d.ts +14 -0
  60. package/dist/src/components/primitives/press-point.types.d.ts.map +1 -0
  61. package/dist/src/components/primitives/press-point.types.js +3 -0
  62. package/dist/src/components/primitives/press-point.types.js.map +1 -0
  63. package/dist/src/components/primitives/press-point.web.d.ts +3 -0
  64. package/dist/src/components/primitives/press-point.web.d.ts.map +1 -0
  65. package/dist/src/components/primitives/press-point.web.js +17 -0
  66. package/dist/src/components/primitives/press-point.web.js.map +1 -0
  67. package/dist/src/components/primitives/region-style.d.ts +9 -0
  68. package/dist/src/components/primitives/region-style.d.ts.map +1 -0
  69. package/dist/src/components/primitives/region-style.js +20 -0
  70. package/dist/src/components/primitives/region-style.js.map +1 -0
  71. package/dist/src/components/roster/body-layout.d.ts +9 -0
  72. package/dist/src/components/roster/body-layout.d.ts.map +1 -0
  73. package/dist/src/components/roster/body-layout.js +9 -0
  74. package/dist/src/components/roster/body-layout.js.map +1 -0
  75. package/dist/src/components/roster/index.d.ts +3 -0
  76. package/dist/src/components/roster/index.d.ts.map +1 -0
  77. package/dist/src/components/roster/index.js +40 -0
  78. package/dist/src/components/roster/index.js.map +1 -0
  79. package/dist/src/components/roster/lanes/interval-hover.d.ts +3 -0
  80. package/dist/src/components/roster/lanes/interval-hover.d.ts.map +1 -0
  81. package/dist/src/components/roster/lanes/interval-hover.js +7 -0
  82. package/dist/src/components/roster/lanes/interval-hover.js.map +1 -0
  83. package/dist/src/components/roster/lanes/interval-hover.types.d.ts +15 -0
  84. package/dist/src/components/roster/lanes/interval-hover.types.d.ts.map +1 -0
  85. package/dist/src/components/roster/lanes/interval-hover.types.js +3 -0
  86. package/dist/src/components/roster/lanes/interval-hover.types.js.map +1 -0
  87. package/dist/src/components/roster/lanes/interval-hover.web.d.ts +3 -0
  88. package/dist/src/components/roster/lanes/interval-hover.web.d.ts.map +1 -0
  89. package/dist/src/components/roster/lanes/interval-hover.web.js +20 -0
  90. package/dist/src/components/roster/lanes/interval-hover.web.js.map +1 -0
  91. package/dist/src/components/roster/lanes/lane.d.ts +10 -0
  92. package/dist/src/components/roster/lanes/lane.d.ts.map +1 -0
  93. package/dist/src/components/roster/lanes/lane.js +32 -0
  94. package/dist/src/components/roster/lanes/lane.js.map +1 -0
  95. package/dist/src/components/roster/lanes/parts/incomplete.d.ts +8 -0
  96. package/dist/src/components/roster/lanes/parts/incomplete.d.ts.map +1 -0
  97. package/dist/src/components/roster/lanes/parts/incomplete.js +30 -0
  98. package/dist/src/components/roster/lanes/parts/incomplete.js.map +1 -0
  99. package/dist/src/components/roster/lanes/parts/lane-label.d.ts +3 -0
  100. package/dist/src/components/roster/lanes/parts/lane-label.d.ts.map +1 -0
  101. package/dist/src/components/roster/lanes/parts/lane-label.js +18 -0
  102. package/dist/src/components/roster/lanes/parts/lane-label.js.map +1 -0
  103. package/dist/src/components/roster/layout.d.ts +17 -0
  104. package/dist/src/components/roster/layout.d.ts.map +1 -0
  105. package/dist/src/components/roster/layout.js +24 -0
  106. package/dist/src/components/roster/layout.js.map +1 -0
  107. package/dist/src/components/roster/parts/body.d.ts +7 -0
  108. package/dist/src/components/roster/parts/body.d.ts.map +1 -0
  109. package/dist/src/components/roster/parts/body.js +14 -0
  110. package/dist/src/components/roster/parts/body.js.map +1 -0
  111. package/dist/src/components/roster/parts/corner.d.ts +2 -0
  112. package/dist/src/components/roster/parts/corner.d.ts.map +1 -0
  113. package/dist/src/components/roster/parts/corner.js +7 -0
  114. package/dist/src/components/roster/parts/corner.js.map +1 -0
  115. package/dist/src/components/roster/parts/empty.d.ts +2 -0
  116. package/dist/src/components/roster/parts/empty.d.ts.map +1 -0
  117. package/dist/src/components/roster/parts/empty.js +9 -0
  118. package/dist/src/components/roster/parts/empty.js.map +1 -0
  119. package/dist/src/components/roster/parts/grid.d.ts +3 -0
  120. package/dist/src/components/roster/parts/grid.d.ts.map +1 -0
  121. package/dist/src/components/roster/parts/grid.js +16 -0
  122. package/dist/src/components/roster/parts/grid.js.map +1 -0
  123. package/dist/src/components/roster/parts/header-cell.d.ts +3 -0
  124. package/dist/src/components/roster/parts/header-cell.d.ts.map +1 -0
  125. package/dist/src/components/roster/parts/header-cell.js +9 -0
  126. package/dist/src/components/roster/parts/header-cell.js.map +1 -0
  127. package/dist/src/components/roster/parts/header.d.ts +3 -0
  128. package/dist/src/components/roster/parts/header.d.ts.map +1 -0
  129. package/dist/src/components/roster/parts/header.js +13 -0
  130. package/dist/src/components/roster/parts/header.js.map +1 -0
  131. package/dist/src/components/roster/parts/lane-label-column.d.ts +3 -0
  132. package/dist/src/components/roster/parts/lane-label-column.d.ts.map +1 -0
  133. package/dist/src/components/roster/parts/lane-label-column.js +18 -0
  134. package/dist/src/components/roster/parts/lane-label-column.js.map +1 -0
  135. package/dist/src/components/roster/parts/lane-list.d.ts +7 -0
  136. package/dist/src/components/roster/parts/lane-list.d.ts.map +1 -0
  137. package/dist/src/components/roster/parts/lane-list.js +25 -0
  138. package/dist/src/components/roster/parts/lane-list.js.map +1 -0
  139. package/dist/src/components/roster/roster.types.d.ts +145 -0
  140. package/dist/src/components/roster/roster.types.d.ts.map +1 -0
  141. package/dist/src/components/roster/roster.types.js +3 -0
  142. package/dist/src/components/roster/roster.types.js.map +1 -0
  143. package/dist/src/components/roster/use-roster.d.ts +3 -0
  144. package/dist/src/components/roster/use-roster.d.ts.map +1 -0
  145. package/dist/src/components/roster/use-roster.js +106 -0
  146. package/dist/src/components/roster/use-roster.js.map +1 -0
  147. package/dist/src/components/roster/utils/body-content-key.d.ts +3 -0
  148. package/dist/src/components/roster/utils/body-content-key.d.ts.map +1 -0
  149. package/dist/src/components/roster/utils/body-content-key.js +29 -0
  150. package/dist/src/components/roster/utils/body-content-key.js.map +1 -0
  151. package/dist/src/components/roster/utils/ticks.d.ts +4 -0
  152. package/dist/src/components/roster/utils/ticks.d.ts.map +1 -0
  153. package/dist/src/components/roster/utils/ticks.js +60 -0
  154. package/dist/src/components/roster/utils/ticks.js.map +1 -0
  155. package/dist/src/components/schedule/days/day.d.ts +20 -0
  156. package/dist/src/components/schedule/days/day.d.ts.map +1 -0
  157. package/dist/src/components/schedule/days/day.js +17 -0
  158. package/dist/src/components/schedule/days/day.js.map +1 -0
  159. package/dist/src/components/schedule/days/header-layout.d.ts +9 -0
  160. package/dist/src/components/schedule/days/header-layout.d.ts.map +1 -0
  161. package/dist/src/components/schedule/days/header-layout.js +9 -0
  162. package/dist/src/components/schedule/days/header-layout.js.map +1 -0
  163. package/dist/src/components/schedule/days/layout.d.ts +18 -0
  164. package/dist/src/components/schedule/days/layout.d.ts.map +1 -0
  165. package/dist/src/components/schedule/days/layout.js +9 -0
  166. package/dist/src/components/schedule/days/layout.js.map +1 -0
  167. package/dist/src/components/schedule/days/parts/column.d.ts +3 -0
  168. package/dist/src/components/schedule/days/parts/column.d.ts.map +1 -0
  169. package/dist/src/components/schedule/days/parts/column.js +28 -0
  170. package/dist/src/components/schedule/days/parts/column.js.map +1 -0
  171. package/dist/src/components/schedule/days/parts/day-header.d.ts +5 -0
  172. package/dist/src/components/schedule/days/parts/day-header.d.ts.map +1 -0
  173. package/dist/src/components/schedule/days/parts/day-header.js +10 -0
  174. package/dist/src/components/schedule/days/parts/day-header.js.map +1 -0
  175. package/dist/src/components/schedule/days/parts/grid.d.ts +3 -0
  176. package/dist/src/components/schedule/days/parts/grid.d.ts.map +1 -0
  177. package/dist/src/components/schedule/days/parts/grid.js +14 -0
  178. package/dist/src/components/schedule/days/parts/grid.js.map +1 -0
  179. package/dist/src/components/schedule/days/parts/now-line.d.ts +5 -0
  180. package/dist/src/components/schedule/days/parts/now-line.d.ts.map +1 -0
  181. package/dist/src/components/schedule/days/parts/now-line.js +9 -0
  182. package/dist/src/components/schedule/days/parts/now-line.js.map +1 -0
  183. package/dist/src/components/schedule/days/parts/skipped-date.d.ts +4 -0
  184. package/dist/src/components/schedule/days/parts/skipped-date.d.ts.map +1 -0
  185. package/dist/src/components/schedule/days/parts/skipped-date.js +17 -0
  186. package/dist/src/components/schedule/days/parts/skipped-date.js.map +1 -0
  187. package/dist/src/components/schedule/days/parts/transition.d.ts +3 -0
  188. package/dist/src/components/schedule/days/parts/transition.d.ts.map +1 -0
  189. package/dist/src/components/schedule/days/parts/transition.js +42 -0
  190. package/dist/src/components/schedule/days/parts/transition.js.map +1 -0
  191. package/dist/src/components/schedule/index.d.ts +3 -0
  192. package/dist/src/components/schedule/index.d.ts.map +1 -0
  193. package/dist/src/components/schedule/index.js +44 -0
  194. package/dist/src/components/schedule/index.js.map +1 -0
  195. package/dist/src/components/schedule/layout.d.ts +15 -0
  196. package/dist/src/components/schedule/layout.d.ts.map +1 -0
  197. package/dist/src/components/schedule/layout.js +10 -0
  198. package/dist/src/components/schedule/layout.js.map +1 -0
  199. package/dist/src/components/schedule/parts/gutter.d.ts +3 -0
  200. package/dist/src/components/schedule/parts/gutter.d.ts.map +1 -0
  201. package/dist/src/components/schedule/parts/gutter.js +9 -0
  202. package/dist/src/components/schedule/parts/gutter.js.map +1 -0
  203. package/dist/src/components/schedule/parts/incomplete.d.ts +6 -0
  204. package/dist/src/components/schedule/parts/incomplete.d.ts.map +1 -0
  205. package/dist/src/components/schedule/parts/incomplete.js +9 -0
  206. package/dist/src/components/schedule/parts/incomplete.js.map +1 -0
  207. package/dist/src/components/schedule/schedule.types.d.ts +109 -0
  208. package/dist/src/components/schedule/schedule.types.d.ts.map +1 -0
  209. package/dist/src/components/schedule/schedule.types.js +3 -0
  210. package/dist/src/components/schedule/schedule.types.js.map +1 -0
  211. package/dist/src/components/schedule/use-schedule-viewport.d.ts +7 -0
  212. package/dist/src/components/schedule/use-schedule-viewport.d.ts.map +1 -0
  213. package/dist/src/components/schedule/use-schedule-viewport.js +15 -0
  214. package/dist/src/components/schedule/use-schedule-viewport.js.map +1 -0
  215. package/dist/src/components/schedule/use-schedule.d.ts +3 -0
  216. package/dist/src/components/schedule/use-schedule.d.ts.map +1 -0
  217. package/dist/src/components/schedule/use-schedule.js +71 -0
  218. package/dist/src/components/schedule/use-schedule.js.map +1 -0
  219. package/dist/src/components/schedule/utils/days.d.ts +17 -0
  220. package/dist/src/components/schedule/utils/days.d.ts.map +1 -0
  221. package/dist/src/components/schedule/utils/days.js +49 -0
  222. package/dist/src/components/schedule/utils/days.js.map +1 -0
  223. package/dist/src/core/axis.d.ts +18 -0
  224. package/dist/src/core/axis.d.ts.map +1 -0
  225. package/dist/src/core/axis.js +58 -0
  226. package/dist/src/core/axis.js.map +1 -0
  227. package/dist/src/core/cache.d.ts +29 -0
  228. package/dist/src/core/cache.d.ts.map +1 -0
  229. package/dist/src/core/cache.js +33 -0
  230. package/dist/src/core/cache.js.map +1 -0
  231. package/dist/src/core/columns.d.ts +3 -0
  232. package/dist/src/core/columns.d.ts.map +1 -0
  233. package/dist/src/core/columns.js +45 -0
  234. package/dist/src/core/columns.js.map +1 -0
  235. package/dist/src/core/coverage.d.ts +3 -0
  236. package/dist/src/core/coverage.d.ts.map +1 -0
  237. package/dist/src/core/coverage.js +60 -0
  238. package/dist/src/core/coverage.js.map +1 -0
  239. package/dist/src/core/flag.d.ts +3 -0
  240. package/dist/src/core/flag.d.ts.map +1 -0
  241. package/dist/src/core/flag.js +17 -0
  242. package/dist/src/core/flag.js.map +1 -0
  243. package/dist/src/core/hash.d.ts +5 -0
  244. package/dist/src/core/hash.d.ts.map +1 -0
  245. package/dist/src/core/hash.js +29 -0
  246. package/dist/src/core/hash.js.map +1 -0
  247. package/dist/src/core/hit-test.d.ts +6 -0
  248. package/dist/src/core/hit-test.d.ts.map +1 -0
  249. package/dist/src/core/hit-test.js +23 -0
  250. package/dist/src/core/hit-test.js.map +1 -0
  251. package/dist/src/core/index.d.ts +12 -0
  252. package/dist/src/core/index.d.ts.map +1 -0
  253. package/dist/src/core/index.js +30 -0
  254. package/dist/src/core/index.js.map +1 -0
  255. package/dist/src/core/layout.d.ts +3 -0
  256. package/dist/src/core/layout.d.ts.map +1 -0
  257. package/dist/src/core/layout.js +96 -0
  258. package/dist/src/core/layout.js.map +1 -0
  259. package/dist/src/core/order.d.ts +7 -0
  260. package/dist/src/core/order.d.ts.map +1 -0
  261. package/dist/src/core/order.js +12 -0
  262. package/dist/src/core/order.js.map +1 -0
  263. package/dist/src/core/scale.d.ts +9 -0
  264. package/dist/src/core/scale.d.ts.map +1 -0
  265. package/dist/src/core/scale.js +41 -0
  266. package/dist/src/core/scale.js.map +1 -0
  267. package/dist/src/core/snap.d.ts +10 -0
  268. package/dist/src/core/snap.d.ts.map +1 -0
  269. package/dist/src/core/snap.js +43 -0
  270. package/dist/src/core/snap.js.map +1 -0
  271. package/dist/src/core/spans.d.ts +3 -0
  272. package/dist/src/core/spans.d.ts.map +1 -0
  273. package/dist/src/core/spans.js +60 -0
  274. package/dist/src/core/spans.js.map +1 -0
  275. package/dist/src/core/types.d.ts +104 -0
  276. package/dist/src/core/types.d.ts.map +1 -0
  277. package/dist/src/core/types.js +3 -0
  278. package/dist/src/core/types.js.map +1 -0
  279. package/dist/src/core/zone.d.ts +10 -0
  280. package/dist/src/core/zone.d.ts.map +1 -0
  281. package/dist/src/core/zone.js +103 -0
  282. package/dist/src/core/zone.js.map +1 -0
  283. package/dist/src/index.d.ts +29 -0
  284. package/dist/src/index.d.ts.map +1 -0
  285. package/dist/src/index.js +67 -0
  286. package/dist/src/index.js.map +1 -0
  287. package/dist/src/nativewind/index.d.ts +59 -0
  288. package/dist/src/nativewind/index.d.ts.map +1 -0
  289. package/dist/src/nativewind/index.js +24 -0
  290. package/dist/src/nativewind/index.js.map +1 -0
  291. package/docs/migrations.md +61 -0
  292. package/llms.txt +498 -0
  293. package/package.json +155 -8
  294. package/src/adapters/rrule/README.md +41 -0
  295. package/src/adapters/rrule/cache.ts +50 -0
  296. package/src/adapters/rrule/envelope.ts +7 -0
  297. package/src/adapters/rrule/expand.ts +105 -0
  298. package/src/adapters/rrule/hash.ts +13 -0
  299. package/src/adapters/rrule/index.ts +11 -0
  300. package/src/adapters/rrule/net.ts +30 -0
  301. package/src/adapters/rrule/occurrences.ts +288 -0
  302. package/src/adapters/rrule/types.ts +52 -0
  303. package/src/adapters/rrule/validate.ts +78 -0
  304. package/src/components/layers/README.md +15 -0
  305. package/src/components/layers/layers.types.ts +6 -0
  306. package/src/components/layers/parts/gap.tsx +5 -0
  307. package/src/components/layers/parts/interval.tsx +24 -0
  308. package/src/components/layers/utils/styles.ts +24 -0
  309. package/src/components/primitives/README.md +12 -0
  310. package/src/components/primitives/press-point.tsx +5 -0
  311. package/src/components/primitives/press-point.types.ts +5 -0
  312. package/src/components/primitives/press-point.web.tsx +19 -0
  313. package/src/components/primitives/region-style.ts +21 -0
  314. package/src/components/roster/README.md +29 -0
  315. package/src/components/roster/body-layout.tsx +32 -0
  316. package/src/components/roster/index.tsx +108 -0
  317. package/src/components/roster/lanes/interval-hover.tsx +5 -0
  318. package/src/components/roster/lanes/interval-hover.types.ts +11 -0
  319. package/src/components/roster/lanes/interval-hover.web.tsx +19 -0
  320. package/src/components/roster/lanes/lane.tsx +93 -0
  321. package/src/components/roster/lanes/parts/incomplete.tsx +44 -0
  322. package/src/components/roster/lanes/parts/lane-label.tsx +41 -0
  323. package/src/components/roster/layout.tsx +68 -0
  324. package/src/components/roster/parts/body.tsx +24 -0
  325. package/src/components/roster/parts/corner.tsx +3 -0
  326. package/src/components/roster/parts/empty.tsx +5 -0
  327. package/src/components/roster/parts/grid.tsx +26 -0
  328. package/src/components/roster/parts/header-cell.tsx +10 -0
  329. package/src/components/roster/parts/header.tsx +23 -0
  330. package/src/components/roster/parts/lane-label-column.tsx +31 -0
  331. package/src/components/roster/parts/lane-list.tsx +74 -0
  332. package/src/components/roster/roster.types.ts +156 -0
  333. package/src/components/roster/use-roster.ts +133 -0
  334. package/src/components/roster/utils/body-content-key.ts +46 -0
  335. package/src/components/roster/utils/ticks.ts +62 -0
  336. package/src/components/schedule/README.md +23 -0
  337. package/src/components/schedule/days/day.tsx +89 -0
  338. package/src/components/schedule/days/header-layout.tsx +12 -0
  339. package/src/components/schedule/days/layout.tsx +38 -0
  340. package/src/components/schedule/days/parts/column.tsx +59 -0
  341. package/src/components/schedule/days/parts/day-header.tsx +18 -0
  342. package/src/components/schedule/days/parts/grid.tsx +21 -0
  343. package/src/components/schedule/days/parts/now-line.tsx +11 -0
  344. package/src/components/schedule/days/parts/skipped-date.tsx +22 -0
  345. package/src/components/schedule/days/parts/transition.tsx +70 -0
  346. package/src/components/schedule/index.tsx +108 -0
  347. package/src/components/schedule/layout.tsx +42 -0
  348. package/src/components/schedule/parts/gutter.tsx +16 -0
  349. package/src/components/schedule/parts/incomplete.tsx +13 -0
  350. package/src/components/schedule/schedule.types.ts +103 -0
  351. package/src/components/schedule/use-schedule-viewport.ts +13 -0
  352. package/src/components/schedule/use-schedule.ts +75 -0
  353. package/src/components/schedule/utils/days.ts +54 -0
  354. package/src/core/README.md +25 -0
  355. package/src/core/axis.ts +58 -0
  356. package/src/core/cache.ts +38 -0
  357. package/src/core/columns.ts +49 -0
  358. package/src/core/coverage.ts +56 -0
  359. package/src/core/flag.ts +14 -0
  360. package/src/core/hash.ts +28 -0
  361. package/src/core/hit-test.ts +27 -0
  362. package/src/core/index.ts +34 -0
  363. package/src/core/layout.ts +101 -0
  364. package/src/core/order.ts +18 -0
  365. package/src/core/scale.ts +45 -0
  366. package/src/core/snap.ts +52 -0
  367. package/src/core/spans.ts +58 -0
  368. package/src/core/types.ts +92 -0
  369. package/src/core/zone.ts +100 -0
  370. package/src/index.ts +52 -0
  371. package/src/nativewind/README.md +14 -0
  372. package/src/nativewind/index.ts +30 -0
  373. package/index.js +0 -4
@@ -0,0 +1,3 @@
1
+ import type { Interval, Window } from './types';
2
+ export declare function sourceSpans(intervals: Interval[], window: Window): Interval[];
3
+ //# sourceMappingURL=spans.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spans.d.ts","sourceRoot":"","sources":["../../../src/core/spans.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAU,MAAM,EAAE,MAAM,SAAS,CAAC;AAIxD,wBAAgB,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAmD7E"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sourceSpans = sourceSpans;
4
+ function sourceSpans(intervals, window) {
5
+ const boundaries = [];
6
+ for (const interval of intervals) {
7
+ const start = Math.max(interval.start, window.start);
8
+ const end = Math.min(interval.end, window.end);
9
+ if (start >= end)
10
+ continue;
11
+ boundaries.push({ at: start, delta: 1, sources: interval.sources });
12
+ boundaries.push({ at: end, delta: -1, sources: interval.sources });
13
+ }
14
+ boundaries.sort((a, b) => a.at - b.at);
15
+ const active = new Map();
16
+ const spans = [];
17
+ let depth = 0;
18
+ let previous = window.start;
19
+ let lastKeys = new Set();
20
+ let sourceDifference = 0;
21
+ for (let i = 0; i < boundaries.length;) {
22
+ const at = boundaries[i].at;
23
+ if (depth > 0 && previous < at) {
24
+ const last = spans.at(-1);
25
+ if (last && last.end === previous && sourceDifference === 0) {
26
+ last.end = at;
27
+ }
28
+ else {
29
+ spans.push({
30
+ start: previous,
31
+ end: at,
32
+ sources: [...active.values()].map((item) => item.source),
33
+ });
34
+ lastKeys = new Set(active.keys());
35
+ sourceDifference = 0;
36
+ }
37
+ }
38
+ while (i < boundaries.length && boundaries[i].at === at) {
39
+ const boundary = boundaries[i++];
40
+ depth += boundary.delta;
41
+ for (const source of boundary.sources) {
42
+ const key = JSON.stringify([source.kind, source.id]);
43
+ const item = active.get(key);
44
+ const count = (item?.count ?? 0) + boundary.delta;
45
+ // Track set differences incrementally so redundant overlap boundaries
46
+ // do not copy or compare the full source set on an unchanged span.
47
+ if ((count === 0) !== (item === undefined)) {
48
+ sourceDifference += lastKeys.has(key) ? -boundary.delta : boundary.delta;
49
+ }
50
+ if (count === 0)
51
+ active.delete(key);
52
+ else
53
+ active.set(key, { count, source: item?.source ?? source });
54
+ }
55
+ }
56
+ previous = at;
57
+ }
58
+ return spans;
59
+ }
60
+ //# sourceMappingURL=spans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spans.js","sourceRoot":"","sources":["../../../src/core/spans.ts"],"names":[],"mappings":";;;AAMA,qBAA4B,SAAqB,EAAE,MAAc;IAC/D,MAAM,UAAU,GAAe,EAAE,CAAC;IAClC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,KAAK,IAAI,GAAG;YAAE,SAAS;QAC3B,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6C,CAAC;IACpE,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,IAAI,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,GAAI,CAAC;QACxC,MAAM,EAAE,GAAI,UAAU,CAAC,CAAC,CAAc,CAAC,EAAE,CAAC;QAC1C,IAAI,KAAK,GAAG,CAAC,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;gBAC5D,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK,EAAE,QAAQ;oBACf,GAAG,EAAE,EAAE;oBACP,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;iBACzD,CAAC,CAAC;gBACH,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClC,gBAAgB,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,IAAK,UAAU,CAAC,CAAC,CAAc,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACtE,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,EAAE,CAAa,CAAC;YAC7C,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;YACxB,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAClD,sEAAsE;gBACtE,mEAAmE;gBACnE,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;oBAC3C,gBAAgB,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC3E,CAAC;gBACD,IAAI,KAAK,KAAK,CAAC;oBAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;oBAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QACD,QAAQ,GAAG,EAAE,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,104 @@
1
+ /** Identity is (kind, id). `label` is display metadata and never participates in equality, merging, or highlighting. */
2
+ export type Source = {
3
+ kind: string;
4
+ id: string;
5
+ label?: string;
6
+ };
7
+ /** Covered time. `sources` lists the contributors that cover this exact span (for the rrule adapter: the includes). */
8
+ export type Interval = {
9
+ start: number;
10
+ end: number;
11
+ sources: Source[];
12
+ };
13
+ /** Removed time. `sources` lists what removed it (for the rrule adapter: the excludes). Survives complete subtraction. */
14
+ export type Gap = {
15
+ start: number;
16
+ end: number;
17
+ sources: Source[];
18
+ };
19
+ export type LayerRole = 'availability' | 'booking' | 'custom';
20
+ /** `inset` is a cross-axis distance in px (vertical in the horizontal projection, horizontal in columns), applied by the engine. */
21
+ export type LayerStyle = {
22
+ color: string;
23
+ highlightColor?: string;
24
+ inset?: number;
25
+ opacity?: number;
26
+ };
27
+ export type Layer = {
28
+ id: string;
29
+ role: LayerRole;
30
+ z: number;
31
+ style: LayerStyle;
32
+ intervals: Interval[];
33
+ gaps?: Gap[];
34
+ label?: string;
35
+ };
36
+ export type LaneFlag = 'none' | 'never-set' | 'empty-in-window';
37
+ export type Lane = {
38
+ id: string;
39
+ /** Bumped by the consumer when layer content changes; the engine hashes layer content when absent. */
40
+ version?: string | number;
41
+ label: string;
42
+ timezone?: string;
43
+ flag?: LaneFlag;
44
+ /** False when the lane's intervals are known to be incomplete (an adapter cap bit, #4). Default true. The hooks (#5, #11) show the incomplete label (#8) when false; the engine never infers it. */
45
+ complete?: boolean;
46
+ layers: Layer[];
47
+ meta?: unknown;
48
+ };
49
+ /** A span of absolute time. No span kind, no resolution; those are axis and component concerns (#6). */
50
+ export type Window = {
51
+ start: number;
52
+ end: number;
53
+ };
54
+ /** RFC 5545 weekday numbering: 0 = Monday through 6 = Sunday. Used by `wkst`, `byweekday`, and `windowFor`. */
55
+ export type Weekday = 0 | 1 | 2 | 3 | 4 | 5 | 6;
56
+ /** A UTC-offset change inside a column, from `dayColumnsFor` (#6). Any size, any count. */
57
+ export type Transition = {
58
+ at: number;
59
+ deltaMinutes: number;
60
+ };
61
+ /** One day column in the view zone. Always projected as 24 equal wall-clock hour bands. `localDate` is the column's calendar date in the view zone ('YYYY-MM-DD'); a local date with no instants (`Pacific/Apia`, 2011-12-30) produces no column at all (#6). */
62
+ export type DayColumn = {
63
+ start: number;
64
+ end: number;
65
+ localDate: string;
66
+ label: string;
67
+ transitions: Transition[];
68
+ };
69
+ export type Projection = {
70
+ orientation: 'horizontal';
71
+ viewTimezone: string;
72
+ pxPerMinute: number;
73
+ rowHeight: number;
74
+ } | {
75
+ orientation: 'columns';
76
+ viewTimezone: string;
77
+ pxPerHour: number;
78
+ columnWidth: number;
79
+ days: DayColumn[];
80
+ };
81
+ /** Final visible bounds, inset already applied; also the hit-test bounds (#8). */
82
+ export type Rect = {
83
+ x: number;
84
+ y: number;
85
+ width: number;
86
+ height: number;
87
+ layerId: string;
88
+ z: number;
89
+ sources: Source[];
90
+ column?: number;
91
+ };
92
+ export type Coverage = {
93
+ availabilityMinutes: number;
94
+ bookingMinutes: number;
95
+ availabilityMinusBookingMinutes: number;
96
+ };
97
+ export type LaneGeometry = {
98
+ laneId: string;
99
+ rects: Rect[];
100
+ gapRects: Rect[];
101
+ coverage: Coverage;
102
+ flag: LaneFlag;
103
+ };
104
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { Transition } from './types';
2
+ export declare const dayMilliseconds = 86400000;
3
+ export declare function wallTime(time: number, timezone: string): number;
4
+ export declare function offsetAt(time: number, timezone: string): number;
5
+ export declare function localDateAt(time: number, timezone: string): string;
6
+ export declare function dateString(time: number): string;
7
+ export declare function dateEpoch(localDate: string): number;
8
+ export declare function transitionsBetween(start: number, end: number, timezone: string): Transition[];
9
+ export declare function startOfDate(localDate: string, timezone: string): number;
10
+ //# sourceMappingURL=zone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zone.d.ts","sourceRoot":"","sources":["../../../src/core/zone.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAK1C,eAAO,MAAM,eAAe,WAAa,CAAC;AAE1C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAuB/D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAUnD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAqB7F;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBvE"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dayMilliseconds = void 0;
4
+ exports.wallTime = wallTime;
5
+ exports.offsetAt = offsetAt;
6
+ exports.localDateAt = localDateAt;
7
+ exports.dateString = dateString;
8
+ exports.dateEpoch = dateEpoch;
9
+ exports.transitionsBetween = transitionsBetween;
10
+ exports.startOfDate = startOfDate;
11
+ const formatters = new Map();
12
+ const starts = new Map();
13
+ const minute = 60_000;
14
+ exports.dayMilliseconds = 86_400_000;
15
+ function wallTime(time, timezone) {
16
+ let formatter = formatters.get(timezone);
17
+ if (!formatter) {
18
+ formatter = new Intl.DateTimeFormat('en-US-u-ca-gregory-nu-latn', {
19
+ timeZone: timezone,
20
+ era: 'short',
21
+ year: 'numeric',
22
+ month: '2-digit',
23
+ day: '2-digit',
24
+ hour: '2-digit',
25
+ minute: '2-digit',
26
+ second: '2-digit',
27
+ hourCycle: 'h23',
28
+ });
29
+ formatters.set(timezone, formatter);
30
+ }
31
+ const parts = {};
32
+ for (const part of formatter.formatToParts(time))
33
+ parts[part.type] = part.value;
34
+ const date = new Date(0);
35
+ const year = parts.era === 'BC' ? 1 - Number(parts.year) : Number(parts.year);
36
+ date.setUTCFullYear(year, Number(parts.month) - 1, Number(parts.day));
37
+ date.setUTCHours(Number(parts.hour) % 24, Number(parts.minute), Number(parts.second), 0);
38
+ return date.getTime() + (((time % 1000) + 1000) % 1000);
39
+ }
40
+ function offsetAt(time, timezone) {
41
+ return wallTime(time, timezone) - time;
42
+ }
43
+ function localDateAt(time, timezone) {
44
+ return dateString(wallTime(time, timezone));
45
+ }
46
+ function dateString(time) {
47
+ return new Date(time).toISOString().slice(0, 10);
48
+ }
49
+ function dateEpoch(localDate) {
50
+ const time = Date.parse(`${localDate}T00:00:00.000Z`);
51
+ if (!/^\d{4}-\d{2}-\d{2}$/.test(localDate) ||
52
+ !Number.isFinite(time) ||
53
+ dateString(time) !== localDate) {
54
+ throw new RangeError('Expected a valid YYYY-MM-DD local date');
55
+ }
56
+ return time;
57
+ }
58
+ function transitionsBetween(start, end, timezone) {
59
+ const transitions = [];
60
+ let cursor = start;
61
+ let offset = offsetAt(cursor, timezone);
62
+ while (cursor < end) {
63
+ const probe = Math.min(cursor + 60 * minute, end);
64
+ const nextOffset = offsetAt(probe, timezone);
65
+ if (nextOffset !== offset) {
66
+ let low = cursor;
67
+ let high = probe;
68
+ while (high - low > 1) {
69
+ const middle = Math.floor((low + high) / 2);
70
+ if (offsetAt(middle, timezone) === offset)
71
+ low = middle;
72
+ else
73
+ high = middle;
74
+ }
75
+ if (high < end)
76
+ transitions.push({ at: high, deltaMinutes: (nextOffset - offset) / minute });
77
+ }
78
+ cursor = probe;
79
+ offset = nextOffset;
80
+ }
81
+ return transitions;
82
+ }
83
+ function startOfDate(localDate, timezone) {
84
+ const key = JSON.stringify([localDate, timezone]);
85
+ const cached = starts.get(key);
86
+ if (cached !== undefined)
87
+ return cached;
88
+ const target = dateEpoch(localDate);
89
+ const start = target - 2 * exports.dayMilliseconds;
90
+ const end = target + 2 * exports.dayMilliseconds;
91
+ const boundaries = [start, ...transitionsBetween(start, end, timezone).map(({ at }) => at), end];
92
+ let result = Infinity;
93
+ for (let i = 0; i < boundaries.length - 1; i++) {
94
+ const left = boundaries[i];
95
+ const right = boundaries[i + 1];
96
+ const candidate = Math.max(left, target - offsetAt(left, timezone));
97
+ if (candidate < right)
98
+ result = Math.min(result, candidate);
99
+ }
100
+ starts.set(key, result);
101
+ return result;
102
+ }
103
+ //# sourceMappingURL=zone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zone.js","sourceRoot":"","sources":["../../../src/core/zone.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export type { GapInput, IntervalInput } from './components/layers/layers.types';
2
+ export { RosterGap } from './components/layers/parts/gap';
3
+ export { RosterInterval } from './components/layers/parts/interval';
4
+ export { Roster } from './components/roster';
5
+ export { RosterBodyLayout } from './components/roster/body-layout';
6
+ export { RosterLaneLabel } from './components/roster/lanes/parts/lane-label';
7
+ export { RosterBody } from './components/roster/parts/body';
8
+ export { RosterCorner } from './components/roster/parts/corner';
9
+ export { RosterEmpty } from './components/roster/parts/empty';
10
+ export { RosterGrid } from './components/roster/parts/grid';
11
+ export { RosterHeader } from './components/roster/parts/header';
12
+ export { RosterHeaderCell } from './components/roster/parts/header-cell';
13
+ export { RosterLaneLabelColumn } from './components/roster/parts/lane-label-column';
14
+ export { RosterLaneList } from './components/roster/parts/lane-list';
15
+ export type { BodyInput, GridInput, HeaderCellInput, HeaderInput, LabelColumnInput, LaneLabelInput, RosterInput, RosterModel, RosterProjection, RosterProps, RosterScroll, RosterStyleProps, RosterTick, } from './components/roster/roster.types';
16
+ export { useRoster } from './components/roster/use-roster';
17
+ export { Schedule } from './components/schedule';
18
+ export { ScheduleColumn } from './components/schedule/days/parts/column';
19
+ export { ScheduleDayHeader } from './components/schedule/days/parts/day-header';
20
+ export { ScheduleGrid } from './components/schedule/days/parts/grid';
21
+ export { ScheduleNowLine } from './components/schedule/days/parts/now-line';
22
+ export { ScheduleSkippedDate } from './components/schedule/days/parts/skipped-date';
23
+ export { ScheduleTransition } from './components/schedule/days/parts/transition';
24
+ export { ScheduleGutter } from './components/schedule/parts/gutter';
25
+ export { ScheduleIncomplete } from './components/schedule/parts/incomplete';
26
+ export type { ScheduleColumnInput, ScheduleHoursInput, ScheduleInput, ScheduleModel, ScheduleProjection, ScheduleProps, ScheduleStyleProps, ScheduleTransitionInput, ScheduleWindowSpec, } from './components/schedule/schedule.types';
27
+ export { useSchedule } from './components/schedule/use-schedule';
28
+ export * from './core';
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,YAAY,EACV,SAAS,EACT,SAAS,EACT,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,UAAU,GACX,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.useSchedule = exports.ScheduleIncomplete = exports.ScheduleGutter = exports.ScheduleTransition = exports.ScheduleSkippedDate = exports.ScheduleNowLine = exports.ScheduleGrid = exports.ScheduleDayHeader = exports.ScheduleColumn = exports.Schedule = exports.useRoster = exports.RosterLaneList = exports.RosterLaneLabelColumn = exports.RosterHeaderCell = exports.RosterHeader = exports.RosterGrid = exports.RosterEmpty = exports.RosterCorner = exports.RosterBody = exports.RosterLaneLabel = exports.RosterBodyLayout = exports.Roster = exports.RosterInterval = exports.RosterGap = void 0;
18
+ var gap_1 = require("./components/layers/parts/gap");
19
+ Object.defineProperty(exports, "RosterGap", { enumerable: true, get: function () { return gap_1.RosterGap; } });
20
+ var interval_1 = require("./components/layers/parts/interval");
21
+ Object.defineProperty(exports, "RosterInterval", { enumerable: true, get: function () { return interval_1.RosterInterval; } });
22
+ var roster_1 = require("./components/roster");
23
+ Object.defineProperty(exports, "Roster", { enumerable: true, get: function () { return roster_1.Roster; } });
24
+ var body_layout_1 = require("./components/roster/body-layout");
25
+ Object.defineProperty(exports, "RosterBodyLayout", { enumerable: true, get: function () { return body_layout_1.RosterBodyLayout; } });
26
+ var lane_label_1 = require("./components/roster/lanes/parts/lane-label");
27
+ Object.defineProperty(exports, "RosterLaneLabel", { enumerable: true, get: function () { return lane_label_1.RosterLaneLabel; } });
28
+ var body_1 = require("./components/roster/parts/body");
29
+ Object.defineProperty(exports, "RosterBody", { enumerable: true, get: function () { return body_1.RosterBody; } });
30
+ var corner_1 = require("./components/roster/parts/corner");
31
+ Object.defineProperty(exports, "RosterCorner", { enumerable: true, get: function () { return corner_1.RosterCorner; } });
32
+ var empty_1 = require("./components/roster/parts/empty");
33
+ Object.defineProperty(exports, "RosterEmpty", { enumerable: true, get: function () { return empty_1.RosterEmpty; } });
34
+ var grid_1 = require("./components/roster/parts/grid");
35
+ Object.defineProperty(exports, "RosterGrid", { enumerable: true, get: function () { return grid_1.RosterGrid; } });
36
+ var header_1 = require("./components/roster/parts/header");
37
+ Object.defineProperty(exports, "RosterHeader", { enumerable: true, get: function () { return header_1.RosterHeader; } });
38
+ var header_cell_1 = require("./components/roster/parts/header-cell");
39
+ Object.defineProperty(exports, "RosterHeaderCell", { enumerable: true, get: function () { return header_cell_1.RosterHeaderCell; } });
40
+ var lane_label_column_1 = require("./components/roster/parts/lane-label-column");
41
+ Object.defineProperty(exports, "RosterLaneLabelColumn", { enumerable: true, get: function () { return lane_label_column_1.RosterLaneLabelColumn; } });
42
+ var lane_list_1 = require("./components/roster/parts/lane-list");
43
+ Object.defineProperty(exports, "RosterLaneList", { enumerable: true, get: function () { return lane_list_1.RosterLaneList; } });
44
+ var use_roster_1 = require("./components/roster/use-roster");
45
+ Object.defineProperty(exports, "useRoster", { enumerable: true, get: function () { return use_roster_1.useRoster; } });
46
+ var schedule_1 = require("./components/schedule");
47
+ Object.defineProperty(exports, "Schedule", { enumerable: true, get: function () { return schedule_1.Schedule; } });
48
+ var column_1 = require("./components/schedule/days/parts/column");
49
+ Object.defineProperty(exports, "ScheduleColumn", { enumerable: true, get: function () { return column_1.ScheduleColumn; } });
50
+ var day_header_1 = require("./components/schedule/days/parts/day-header");
51
+ Object.defineProperty(exports, "ScheduleDayHeader", { enumerable: true, get: function () { return day_header_1.ScheduleDayHeader; } });
52
+ var grid_2 = require("./components/schedule/days/parts/grid");
53
+ Object.defineProperty(exports, "ScheduleGrid", { enumerable: true, get: function () { return grid_2.ScheduleGrid; } });
54
+ var now_line_1 = require("./components/schedule/days/parts/now-line");
55
+ Object.defineProperty(exports, "ScheduleNowLine", { enumerable: true, get: function () { return now_line_1.ScheduleNowLine; } });
56
+ var skipped_date_1 = require("./components/schedule/days/parts/skipped-date");
57
+ Object.defineProperty(exports, "ScheduleSkippedDate", { enumerable: true, get: function () { return skipped_date_1.ScheduleSkippedDate; } });
58
+ var transition_1 = require("./components/schedule/days/parts/transition");
59
+ Object.defineProperty(exports, "ScheduleTransition", { enumerable: true, get: function () { return transition_1.ScheduleTransition; } });
60
+ var gutter_1 = require("./components/schedule/parts/gutter");
61
+ Object.defineProperty(exports, "ScheduleGutter", { enumerable: true, get: function () { return gutter_1.ScheduleGutter; } });
62
+ var incomplete_1 = require("./components/schedule/parts/incomplete");
63
+ Object.defineProperty(exports, "ScheduleIncomplete", { enumerable: true, get: function () { return incomplete_1.ScheduleIncomplete; } });
64
+ var use_schedule_1 = require("./components/schedule/use-schedule");
65
+ Object.defineProperty(exports, "useSchedule", { enumerable: true, get: function () { return use_schedule_1.useSchedule; } });
66
+ __exportStar(require("./core"), exports);
67
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,qDAA0D;AAAjD,gGAAA,SAAS,OAAA;AAClB,+DAAoE;AAA3D,0GAAA,cAAc,OAAA;AACvB,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AACf,+DAAmE;AAA1D,+GAAA,gBAAgB,OAAA;AACzB,yEAA6E;AAApE,6GAAA,eAAe,OAAA;AACxB,uDAA4D;AAAnD,kGAAA,UAAU,OAAA;AACnB,2DAAgE;AAAvD,sGAAA,YAAY,OAAA;AACrB,yDAA8D;AAArD,oGAAA,WAAW,OAAA;AACpB,uDAA4D;AAAnD,kGAAA,UAAU,OAAA;AACnB,2DAAgE;AAAvD,sGAAA,YAAY,OAAA;AACrB,qEAAyE;AAAhE,+GAAA,gBAAgB,OAAA;AACzB,iFAAoF;AAA3E,0HAAA,qBAAqB,OAAA;AAC9B,iEAAqE;AAA5D,2GAAA,cAAc,OAAA;AAgBvB,6DAA2D;AAAlD,uGAAA,SAAS,OAAA;AAClB,kDAAiD;AAAxC,oGAAA,QAAQ,OAAA;AACjB,kEAAyE;AAAhE,wGAAA,cAAc,OAAA;AACvB,0EAAgF;AAAvE,+GAAA,iBAAiB,OAAA;AAC1B,8DAAqE;AAA5D,oGAAA,YAAY,OAAA;AACrB,sEAA4E;AAAnE,2GAAA,eAAe,OAAA;AACxB,8EAAoF;AAA3E,mHAAA,mBAAmB,OAAA;AAC5B,0EAAiF;AAAxE,gHAAA,kBAAkB,OAAA;AAC3B,6DAAoE;AAA3D,wGAAA,cAAc,OAAA;AACvB,qEAA4E;AAAnE,gHAAA,kBAAkB,OAAA;AAY3B,mEAAiE;AAAxD,2GAAA,WAAW,OAAA;AACpB,yCAAuB"}
@@ -0,0 +1,59 @@
1
+ import type { RosterStyleProps } from '../components/roster/roster.types';
2
+ import type { ScheduleStyleProps } from '../components/schedule/schedule.types';
3
+ type ClassNameKeys<T> = Extract<keyof T, `${string}className` | `${string}ClassName`>;
4
+ type StyleTarget<K extends string> = K extends `${infer Prefix}ClassName` ? `${Prefix}Style` : 'style';
5
+ type Mapping<T> = {
6
+ [K in ClassNameKeys<T>]-?: StyleTarget<K>;
7
+ };
8
+ /** Each class prop resolves into the style prop of the same chrome region. */
9
+ export declare const rosterClassNames: Mapping<RosterStyleProps>;
10
+ export declare const scheduleClassNames: Mapping<ScheduleStyleProps>;
11
+ export declare const Roster: import("react").ComponentType<import("../components/roster/roster.types").RosterInput & RosterStyleProps & {
12
+ incompleteLabel?: string;
13
+ neverSetLabel?: string;
14
+ laneLabelComponent?: import("react").ComponentType<import("../components/roster/roster.types").LaneLabelInput>;
15
+ headerCellComponent?: import("react").ComponentType<import("../components/roster/roster.types").HeaderCellInput>;
16
+ intervalComponent?: import("react").ComponentType<import("..").IntervalInput>;
17
+ gapComponent?: import("react").ComponentType<import("..").GapInput>;
18
+ gridComponent?: import("react").ComponentType<import("../components/roster/roster.types").GridInput>;
19
+ emptyZone?: import("react").ReactNode;
20
+ cornerZone?: import("react").ReactNode;
21
+ headerComponent?: import("react").ComponentType<import("../components/roster/roster.types").HeaderInput>;
22
+ laneLabelColumnComponent?: import("react").ComponentType<import("../components/roster/roster.types").LabelColumnInput>;
23
+ bodyComponent?: import("react").ComponentType<import("../components/roster/roster.types").BodyInput>;
24
+ } & {
25
+ bodyClassName?: string | undefined;
26
+ className?: string | undefined;
27
+ headerClassName?: string | undefined;
28
+ laneLabelColumnClassName?: string | undefined;
29
+ }>;
30
+ export declare const Schedule: import("react").ComponentType<import("../components/schedule/schedule.types").ScheduleInput & ScheduleStyleProps & {
31
+ incompleteLabel?: string;
32
+ gutterComponent?: import("react").ComponentType<import("../components/schedule/schedule.types").ScheduleHoursInput>;
33
+ gridComponent?: import("react").ComponentType<import("../components/schedule/schedule.types").ScheduleHoursInput>;
34
+ dayHeaderComponent?: import("react").ComponentType<{
35
+ day: import("..").DayColumn;
36
+ }>;
37
+ skippedDateComponent?: import("react").ComponentType<{
38
+ localDate: string;
39
+ }>;
40
+ columnComponent?: import("react").ComponentType<import("../components/schedule/schedule.types").ScheduleColumnInput>;
41
+ transitionComponent?: import("react").ComponentType<import("../components/schedule/schedule.types").ScheduleTransitionInput>;
42
+ nowLineComponent?: import("react").ComponentType<{
43
+ y: number;
44
+ column: number;
45
+ }>;
46
+ intervalComponent?: import("react").ComponentType<import("..").IntervalInput>;
47
+ gapComponent?: import("react").ComponentType<import("..").GapInput>;
48
+ incompleteComponent?: import("react").ComponentType<{
49
+ lane: import("..").Lane;
50
+ label: string;
51
+ }>;
52
+ } & {
53
+ className?: string | undefined;
54
+ daysClassName?: string | undefined;
55
+ gutterClassName?: string | undefined;
56
+ headerClassName?: string | undefined;
57
+ }>;
58
+ export {};
59
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nativewind/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAEhF,KAAK,aAAa,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,WAAW,GAAG,GAAG,MAAM,WAAW,CAAC,CAAC;AACtF,KAAK,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,MAAM,WAAW,GACrE,GAAG,MAAM,OAAO,GAChB,OAAO,CAAC;AACZ,KAAK,OAAO,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;CAAE,CAAC;AAEhE,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAKtD,CAAC;AACF,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,CAK1D,CAAC;AAIF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;EAA2C,CAAC;AAC/D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA+C,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Schedule = exports.Roster = exports.scheduleClassNames = exports.rosterClassNames = void 0;
4
+ const nativewind_1 = require("nativewind");
5
+ const roster_1 = require("../components/roster");
6
+ const schedule_1 = require("../components/schedule");
7
+ /** Each class prop resolves into the style prop of the same chrome region. */
8
+ exports.rosterClassNames = {
9
+ className: 'style',
10
+ headerClassName: 'headerStyle',
11
+ laneLabelColumnClassName: 'laneLabelColumnStyle',
12
+ bodyClassName: 'bodyStyle',
13
+ };
14
+ exports.scheduleClassNames = {
15
+ className: 'style',
16
+ headerClassName: 'headerStyle',
17
+ gutterClassName: 'gutterStyle',
18
+ daysClassName: 'daysStyle',
19
+ };
20
+ // Registration lets NativeWind's JSX runtime resolve class props on the root
21
+ // components; the returned wrappers serve consumers without that runtime.
22
+ exports.Roster = (0, nativewind_1.cssInterop)(roster_1.Roster, exports.rosterClassNames);
23
+ exports.Schedule = (0, nativewind_1.cssInterop)(schedule_1.Schedule, exports.scheduleClassNames);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nativewind/index.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,iDAA4D;AAE5D,qDAAkE;AASlE,8EAA8E;AACjE,QAAA,gBAAgB,GAA8B;IACzD,SAAS,EAAE,OAAO;IAClB,eAAe,EAAE,aAAa;IAC9B,wBAAwB,EAAE,sBAAsB;IAChD,aAAa,EAAE,WAAW;CAC3B,CAAC;AACW,QAAA,kBAAkB,GAAgC;IAC7D,SAAS,EAAE,OAAO;IAClB,eAAe,EAAE,aAAa;IAC9B,eAAe,EAAE,aAAa;IAC9B,aAAa,EAAE,WAAW;CAC3B,CAAC;AAEF,6EAA6E;AAC7E,0EAA0E;AAC7D,QAAA,MAAM,GAAG,IAAA,uBAAU,EAAC,eAAU,EAAE,QAAA,gBAAgB,CAAC,CAAC;AAClD,QAAA,QAAQ,GAAG,IAAA,uBAAU,EAAC,mBAAY,EAAE,QAAA,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,61 @@
1
+ # Migrations
2
+
3
+ Changes to public props that need consumer edits, by the version that ships them.
4
+ The changelog lists every change; this page carries only the ones with a
5
+ migration step.
6
+
7
+ ## 0.1.0: slot components replace render functions
8
+
9
+ Every Roster and Schedule prop that used to take a render function now takes a
10
+ component type or a node. Props ending in `Component` accept
11
+ `ComponentType<Input>` and are mounted by React with the same input as props.
12
+ Props ending in `Zone` accept `ReactNode`. Press callbacks (`onIntervalPress`,
13
+ `onGapPress`, `onCellPress`, `onIntervalHover`, `onNavigate`) are unchanged.
14
+
15
+ | Before (0.0.x) | After (0.1.0) | Input |
16
+ | --- | --- | --- |
17
+ | `emptyZone={() => <Empty />}` | `emptyZone={<Empty />}` | none |
18
+ | `cornerZone={() => <Corner />}` | `cornerZone={<Corner />}` | none |
19
+ | `headerZone={(input) => ...}` | `headerComponent={Header}` | `HeaderInput` |
20
+ | `laneLabelColumnZone={(input) => ...}` | `laneLabelColumnComponent={LabelColumn}` | `LabelColumnInput` |
21
+ | `bodyZone={(input) => ...}` | `bodyComponent={Body}` | `BodyInput` |
22
+ | `headerCellZone={({ tick }) => ...}` | `headerCellComponent={HeaderCell}` | `HeaderCellInput` |
23
+ | `laneLabelZone={(input) => ...}` | `laneLabelComponent={LaneLabel}` | `LaneLabelInput` |
24
+ | `intervalZone={(input) => ...}` | `intervalComponent={Interval}` | `IntervalInput` |
25
+ | `gapZone={(input) => ...}` | `gapComponent={Gap}` | `GapInput` |
26
+ | `gridZone={(input) => ...}` | `gridComponent={Grid}` | `GridInput` |
27
+
28
+ Schedule follows the same rule: `gutterZone`, `gridZone`, `dayHeaderZone`,
29
+ `skippedDateZone`, `columnZone`, `transitionZone`, `nowLineZone`, `intervalZone`,
30
+ `gapZone`, and `incompleteZone` become the matching `Component` props with the
31
+ same inputs.
32
+
33
+ Nested contracts renamed with them: `HeaderInput.headerCellZone` is now
34
+ `headerCellComponent`, `LabelColumnInput.laneLabelZone` is now
35
+ `laneLabelComponent`, and `BodyInput` carries `intervalComponent`,
36
+ `gapComponent`, and `gridComponent`.
37
+
38
+ Mechanical rewrite for a render function that was already a plain function of
39
+ its input:
40
+
41
+ ```tsx
42
+ // Before
43
+ <Roster intervalZone={({ rect, layer }) => <Bar rect={rect} layer={layer} />} />
44
+
45
+ // After: the same function, declared once at module scope and passed as a type
46
+ function Interval({ rect, layer }: IntervalInput) {
47
+ return <Bar rect={rect} layer={layer} />;
48
+ }
49
+ <Roster intervalComponent={Interval} />
50
+ ```
51
+
52
+ Declare slot components at module scope. An inline arrow creates a new
53
+ component type every render, which remounts every interval and defeats the
54
+ body's content key.
55
+
56
+ The default parts are exported under their existing names (`RosterInterval`,
57
+ `RosterGap`, `RosterLaneLabel`, `RosterHeaderCell`, `RosterGrid`, `RosterHeader`,
58
+ `RosterLaneLabelColumn`, `RosterBody`, `RosterEmpty`, `RosterCorner`) and can be
59
+ composed inside a replacement. `RosterBody` is now built from `RosterBodyLayout`
60
+ (arranges `gridZone` and `listZone`) and `RosterLaneList` (owns the virtualized
61
+ lane list); both are exported for consumers that replace the body.