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.
- package/LICENSE +21 -0
- package/README.md +364 -0
- package/lib/commonjs/agenda/AgendaBackdrop.js +68 -0
- package/lib/commonjs/agenda/AgendaBackdrop.js.map +1 -0
- package/lib/commonjs/agenda/AgendaList.js +354 -0
- package/lib/commonjs/agenda/AgendaList.js.map +1 -0
- package/lib/commonjs/agenda/AgendaSlot.js +88 -0
- package/lib/commonjs/agenda/AgendaSlot.js.map +1 -0
- package/lib/commonjs/agenda/AgendaWindow.js +171 -0
- package/lib/commonjs/agenda/AgendaWindow.js.map +1 -0
- package/lib/commonjs/agenda/StickyHeaderOverlay.js +125 -0
- package/lib/commonjs/agenda/StickyHeaderOverlay.js.map +1 -0
- package/lib/commonjs/agenda/buildAgendaLayout.js +100 -0
- package/lib/commonjs/agenda/buildAgendaLayout.js.map +1 -0
- package/lib/commonjs/agenda/constants.js +29 -0
- package/lib/commonjs/agenda/constants.js.map +1 -0
- package/lib/commonjs/agenda/heights.js +49 -0
- package/lib/commonjs/agenda/heights.js.map +1 -0
- package/lib/commonjs/agenda/useAgendaScrollSync.js +204 -0
- package/lib/commonjs/agenda/useAgendaScrollSync.js.map +1 -0
- package/lib/commonjs/core/ArrowGlyph.js +65 -0
- package/lib/commonjs/core/ArrowGlyph.js.map +1 -0
- package/lib/commonjs/core/CalendarContext.js +32 -0
- package/lib/commonjs/core/CalendarContext.js.map +1 -0
- package/lib/commonjs/core/CalendarProvider.js +141 -0
- package/lib/commonjs/core/CalendarProvider.js.map +1 -0
- package/lib/commonjs/core/CalendarStore.js +70 -0
- package/lib/commonjs/core/CalendarStore.js.map +1 -0
- package/lib/commonjs/core/KitText.js +23 -0
- package/lib/commonjs/core/KitText.js.map +1 -0
- package/lib/commonjs/core/TodayButton.js +136 -0
- package/lib/commonjs/core/TodayButton.js.map +1 -0
- package/lib/commonjs/core/civil.js +101 -0
- package/lib/commonjs/core/civil.js.map +1 -0
- package/lib/commonjs/core/dateKey.js +56 -0
- package/lib/commonjs/core/dateKey.js.map +1 -0
- package/lib/commonjs/core/motion.js +56 -0
- package/lib/commonjs/core/motion.js.map +1 -0
- package/lib/commonjs/core/worklets.js +44 -0
- package/lib/commonjs/core/worklets.js.map +1 -0
- package/lib/commonjs/expandable/DayCell.js +120 -0
- package/lib/commonjs/expandable/DayCell.js.map +1 -0
- package/lib/commonjs/expandable/ExpandableCalendar.js +280 -0
- package/lib/commonjs/expandable/ExpandableCalendar.js.map +1 -0
- package/lib/commonjs/expandable/Knob.js +72 -0
- package/lib/commonjs/expandable/Knob.js.map +1 -0
- package/lib/commonjs/expandable/MonthPager.js +180 -0
- package/lib/commonjs/expandable/MonthPager.js.map +1 -0
- package/lib/commonjs/expandable/WeekStrip.js +451 -0
- package/lib/commonjs/expandable/WeekStrip.js.map +1 -0
- package/lib/commonjs/expandable/calendarCells.js +152 -0
- package/lib/commonjs/expandable/calendarCells.js.map +1 -0
- package/lib/commonjs/expandable/geometry.js +62 -0
- package/lib/commonjs/expandable/geometry.js.map +1 -0
- package/lib/commonjs/expandable/useExpandGesture.js +124 -0
- package/lib/commonjs/expandable/useExpandGesture.js.map +1 -0
- package/lib/commonjs/expandable/useHorizontalPager.js +97 -0
- package/lib/commonjs/expandable/useHorizontalPager.js.map +1 -0
- package/lib/commonjs/index.js +167 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/theme/ThemeProvider.js +73 -0
- package/lib/commonjs/theme/ThemeProvider.js.map +1 -0
- package/lib/commonjs/theme/index.js +75 -0
- package/lib/commonjs/theme/index.js.map +1 -0
- package/lib/commonjs/theme/theme.js +79 -0
- package/lib/commonjs/theme/theme.js.map +1 -0
- package/lib/commonjs/theme/tokens.js +54 -0
- package/lib/commonjs/theme/tokens.js.map +1 -0
- package/lib/commonjs/timeline/DayColumn.js +95 -0
- package/lib/commonjs/timeline/DayColumn.js.map +1 -0
- package/lib/commonjs/timeline/DayPager.js +250 -0
- package/lib/commonjs/timeline/DayPager.js.map +1 -0
- package/lib/commonjs/timeline/EventBlock.js +91 -0
- package/lib/commonjs/timeline/EventBlock.js.map +1 -0
- package/lib/commonjs/timeline/GridLines.js +47 -0
- package/lib/commonjs/timeline/GridLines.js.map +1 -0
- package/lib/commonjs/timeline/HourGrid.js +96 -0
- package/lib/commonjs/timeline/HourGrid.js.map +1 -0
- package/lib/commonjs/timeline/NowIndicator.js +132 -0
- package/lib/commonjs/timeline/NowIndicator.js.map +1 -0
- package/lib/commonjs/timeline/TimelineDay.js +126 -0
- package/lib/commonjs/timeline/TimelineDay.js.map +1 -0
- package/lib/commonjs/timeline/packEvents.js +102 -0
- package/lib/commonjs/timeline/packEvents.js.map +1 -0
- package/lib/commonjs/timeline/timelineGeometry.js +27 -0
- package/lib/commonjs/timeline/timelineGeometry.js.map +1 -0
- package/lib/commonjs/timeline/timelineMath.js +82 -0
- package/lib/commonjs/timeline/timelineMath.js.map +1 -0
- package/lib/commonjs/types.js +71 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/agenda/AgendaBackdrop.js +63 -0
- package/lib/module/agenda/AgendaBackdrop.js.map +1 -0
- package/lib/module/agenda/AgendaList.js +349 -0
- package/lib/module/agenda/AgendaList.js.map +1 -0
- package/lib/module/agenda/AgendaSlot.js +84 -0
- package/lib/module/agenda/AgendaSlot.js.map +1 -0
- package/lib/module/agenda/AgendaWindow.js +167 -0
- package/lib/module/agenda/AgendaWindow.js.map +1 -0
- package/lib/module/agenda/StickyHeaderOverlay.js +120 -0
- package/lib/module/agenda/StickyHeaderOverlay.js.map +1 -0
- package/lib/module/agenda/buildAgendaLayout.js +95 -0
- package/lib/module/agenda/buildAgendaLayout.js.map +1 -0
- package/lib/module/agenda/constants.js +25 -0
- package/lib/module/agenda/constants.js.map +1 -0
- package/lib/module/agenda/heights.js +42 -0
- package/lib/module/agenda/heights.js.map +1 -0
- package/lib/module/agenda/useAgendaScrollSync.js +200 -0
- package/lib/module/agenda/useAgendaScrollSync.js.map +1 -0
- package/lib/module/core/ArrowGlyph.js +60 -0
- package/lib/module/core/ArrowGlyph.js.map +1 -0
- package/lib/module/core/CalendarContext.js +26 -0
- package/lib/module/core/CalendarContext.js.map +1 -0
- package/lib/module/core/CalendarProvider.js +136 -0
- package/lib/module/core/CalendarProvider.js.map +1 -0
- package/lib/module/core/CalendarStore.js +66 -0
- package/lib/module/core/CalendarStore.js.map +1 -0
- package/lib/module/core/KitText.js +19 -0
- package/lib/module/core/KitText.js.map +1 -0
- package/lib/module/core/TodayButton.js +133 -0
- package/lib/module/core/TodayButton.js.map +1 -0
- package/lib/module/core/civil.js +88 -0
- package/lib/module/core/civil.js.map +1 -0
- package/lib/module/core/dateKey.js +47 -0
- package/lib/module/core/dateKey.js.map +1 -0
- package/lib/module/core/motion.js +49 -0
- package/lib/module/core/motion.js.map +1 -0
- package/lib/module/core/worklets.js +38 -0
- package/lib/module/core/worklets.js.map +1 -0
- package/lib/module/expandable/DayCell.js +116 -0
- package/lib/module/expandable/DayCell.js.map +1 -0
- package/lib/module/expandable/ExpandableCalendar.js +275 -0
- package/lib/module/expandable/ExpandableCalendar.js.map +1 -0
- package/lib/module/expandable/Knob.js +67 -0
- package/lib/module/expandable/Knob.js.map +1 -0
- package/lib/module/expandable/MonthPager.js +175 -0
- package/lib/module/expandable/MonthPager.js.map +1 -0
- package/lib/module/expandable/WeekStrip.js +446 -0
- package/lib/module/expandable/WeekStrip.js.map +1 -0
- package/lib/module/expandable/calendarCells.js +142 -0
- package/lib/module/expandable/calendarCells.js.map +1 -0
- package/lib/module/expandable/geometry.js +58 -0
- package/lib/module/expandable/geometry.js.map +1 -0
- package/lib/module/expandable/useExpandGesture.js +118 -0
- package/lib/module/expandable/useExpandGesture.js.map +1 -0
- package/lib/module/expandable/useHorizontalPager.js +92 -0
- package/lib/module/expandable/useHorizontalPager.js.map +1 -0
- package/lib/module/index.js +35 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/theme/ThemeProvider.js +65 -0
- package/lib/module/theme/ThemeProvider.js.map +1 -0
- package/lib/module/theme/index.js +6 -0
- package/lib/module/theme/index.js.map +1 -0
- package/lib/module/theme/theme.js +74 -0
- package/lib/module/theme/theme.js.map +1 -0
- package/lib/module/theme/tokens.js +50 -0
- package/lib/module/theme/tokens.js.map +1 -0
- package/lib/module/timeline/DayColumn.js +91 -0
- package/lib/module/timeline/DayColumn.js.map +1 -0
- package/lib/module/timeline/DayPager.js +245 -0
- package/lib/module/timeline/DayPager.js.map +1 -0
- package/lib/module/timeline/EventBlock.js +87 -0
- package/lib/module/timeline/EventBlock.js.map +1 -0
- package/lib/module/timeline/GridLines.js +43 -0
- package/lib/module/timeline/GridLines.js.map +1 -0
- package/lib/module/timeline/HourGrid.js +94 -0
- package/lib/module/timeline/HourGrid.js.map +1 -0
- package/lib/module/timeline/NowIndicator.js +126 -0
- package/lib/module/timeline/NowIndicator.js.map +1 -0
- package/lib/module/timeline/TimelineDay.js +122 -0
- package/lib/module/timeline/TimelineDay.js.map +1 -0
- package/lib/module/timeline/packEvents.js +97 -0
- package/lib/module/timeline/packEvents.js.map +1 -0
- package/lib/module/timeline/timelineGeometry.js +22 -0
- package/lib/module/timeline/timelineGeometry.js.map +1 -0
- package/lib/module/timeline/timelineMath.js +75 -0
- package/lib/module/timeline/timelineMath.js.map +1 -0
- package/lib/module/types.js +67 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/commonjs/agenda/AgendaBackdrop.d.ts +20 -0
- package/lib/typescript/commonjs/agenda/AgendaBackdrop.d.ts.map +1 -0
- package/lib/typescript/commonjs/agenda/AgendaList.d.ts +12 -0
- package/lib/typescript/commonjs/agenda/AgendaList.d.ts.map +1 -0
- package/lib/typescript/commonjs/agenda/AgendaSlot.d.ts +45 -0
- package/lib/typescript/commonjs/agenda/AgendaSlot.d.ts.map +1 -0
- package/lib/typescript/commonjs/agenda/AgendaWindow.d.ts +49 -0
- package/lib/typescript/commonjs/agenda/AgendaWindow.d.ts.map +1 -0
- package/lib/typescript/commonjs/agenda/StickyHeaderOverlay.d.ts +39 -0
- package/lib/typescript/commonjs/agenda/StickyHeaderOverlay.d.ts.map +1 -0
- package/lib/typescript/commonjs/agenda/buildAgendaLayout.d.ts +57 -0
- package/lib/typescript/commonjs/agenda/buildAgendaLayout.d.ts.map +1 -0
- package/lib/typescript/commonjs/agenda/constants.d.ts +19 -0
- package/lib/typescript/commonjs/agenda/constants.d.ts.map +1 -0
- package/lib/typescript/commonjs/agenda/heights.d.ts +20 -0
- package/lib/typescript/commonjs/agenda/heights.d.ts.map +1 -0
- package/lib/typescript/commonjs/agenda/useAgendaScrollSync.d.ts +44 -0
- package/lib/typescript/commonjs/agenda/useAgendaScrollSync.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/ArrowGlyph.d.ts +14 -0
- package/lib/typescript/commonjs/core/ArrowGlyph.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/CalendarContext.d.ts +35 -0
- package/lib/typescript/commonjs/core/CalendarContext.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/CalendarProvider.d.ts +41 -0
- package/lib/typescript/commonjs/core/CalendarProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/CalendarStore.d.ts +28 -0
- package/lib/typescript/commonjs/core/CalendarStore.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/KitText.d.ts +10 -0
- package/lib/typescript/commonjs/core/KitText.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/TodayButton.d.ts +18 -0
- package/lib/typescript/commonjs/core/TodayButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/civil.d.ts +26 -0
- package/lib/typescript/commonjs/core/civil.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/dateKey.d.ts +21 -0
- package/lib/typescript/commonjs/core/dateKey.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/motion.d.ts +18 -0
- package/lib/typescript/commonjs/core/motion.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/worklets.d.ts +12 -0
- package/lib/typescript/commonjs/core/worklets.d.ts.map +1 -0
- package/lib/typescript/commonjs/expandable/DayCell.d.ts +22 -0
- package/lib/typescript/commonjs/expandable/DayCell.d.ts.map +1 -0
- package/lib/typescript/commonjs/expandable/ExpandableCalendar.d.ts +40 -0
- package/lib/typescript/commonjs/expandable/ExpandableCalendar.d.ts.map +1 -0
- package/lib/typescript/commonjs/expandable/Knob.d.ts +19 -0
- package/lib/typescript/commonjs/expandable/Knob.d.ts.map +1 -0
- package/lib/typescript/commonjs/expandable/MonthPager.d.ts +35 -0
- package/lib/typescript/commonjs/expandable/MonthPager.d.ts.map +1 -0
- package/lib/typescript/commonjs/expandable/WeekStrip.d.ts +34 -0
- package/lib/typescript/commonjs/expandable/WeekStrip.d.ts.map +1 -0
- package/lib/typescript/commonjs/expandable/calendarCells.d.ts +52 -0
- package/lib/typescript/commonjs/expandable/calendarCells.d.ts.map +1 -0
- package/lib/typescript/commonjs/expandable/geometry.d.ts +43 -0
- package/lib/typescript/commonjs/expandable/geometry.d.ts.map +1 -0
- package/lib/typescript/commonjs/expandable/useExpandGesture.d.ts +35 -0
- package/lib/typescript/commonjs/expandable/useExpandGesture.d.ts.map +1 -0
- package/lib/typescript/commonjs/expandable/useHorizontalPager.d.ts +35 -0
- package/lib/typescript/commonjs/expandable/useHorizontalPager.d.ts.map +1 -0
- package/lib/typescript/commonjs/index.d.ts +26 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/theme/ThemeProvider.d.ts +27 -0
- package/lib/typescript/commonjs/theme/ThemeProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/index.d.ts +4 -0
- package/lib/typescript/commonjs/theme/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/theme.d.ts +62 -0
- package/lib/typescript/commonjs/theme/theme.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/tokens.d.ts +46 -0
- package/lib/typescript/commonjs/theme/tokens.d.ts.map +1 -0
- package/lib/typescript/commonjs/timeline/DayColumn.d.ts +32 -0
- package/lib/typescript/commonjs/timeline/DayColumn.d.ts.map +1 -0
- package/lib/typescript/commonjs/timeline/DayPager.d.ts +32 -0
- package/lib/typescript/commonjs/timeline/DayPager.d.ts.map +1 -0
- package/lib/typescript/commonjs/timeline/EventBlock.d.ts +17 -0
- package/lib/typescript/commonjs/timeline/EventBlock.d.ts.map +1 -0
- package/lib/typescript/commonjs/timeline/GridLines.d.ts +5 -0
- package/lib/typescript/commonjs/timeline/GridLines.d.ts.map +1 -0
- package/lib/typescript/commonjs/timeline/HourGrid.d.ts +12 -0
- package/lib/typescript/commonjs/timeline/HourGrid.d.ts.map +1 -0
- package/lib/typescript/commonjs/timeline/NowIndicator.d.ts +28 -0
- package/lib/typescript/commonjs/timeline/NowIndicator.d.ts.map +1 -0
- package/lib/typescript/commonjs/timeline/TimelineDay.d.ts +14 -0
- package/lib/typescript/commonjs/timeline/TimelineDay.d.ts.map +1 -0
- package/lib/typescript/commonjs/timeline/packEvents.d.ts +25 -0
- package/lib/typescript/commonjs/timeline/packEvents.d.ts.map +1 -0
- package/lib/typescript/commonjs/timeline/timelineGeometry.d.ts +14 -0
- package/lib/typescript/commonjs/timeline/timelineGeometry.d.ts.map +1 -0
- package/lib/typescript/commonjs/timeline/timelineMath.d.ts +32 -0
- package/lib/typescript/commonjs/timeline/timelineMath.d.ts.map +1 -0
- package/lib/typescript/commonjs/types.d.ts +237 -0
- package/lib/typescript/commonjs/types.d.ts.map +1 -0
- package/lib/typescript/module/agenda/AgendaBackdrop.d.ts +20 -0
- package/lib/typescript/module/agenda/AgendaBackdrop.d.ts.map +1 -0
- package/lib/typescript/module/agenda/AgendaList.d.ts +12 -0
- package/lib/typescript/module/agenda/AgendaList.d.ts.map +1 -0
- package/lib/typescript/module/agenda/AgendaSlot.d.ts +45 -0
- package/lib/typescript/module/agenda/AgendaSlot.d.ts.map +1 -0
- package/lib/typescript/module/agenda/AgendaWindow.d.ts +49 -0
- package/lib/typescript/module/agenda/AgendaWindow.d.ts.map +1 -0
- package/lib/typescript/module/agenda/StickyHeaderOverlay.d.ts +39 -0
- package/lib/typescript/module/agenda/StickyHeaderOverlay.d.ts.map +1 -0
- package/lib/typescript/module/agenda/buildAgendaLayout.d.ts +57 -0
- package/lib/typescript/module/agenda/buildAgendaLayout.d.ts.map +1 -0
- package/lib/typescript/module/agenda/constants.d.ts +19 -0
- package/lib/typescript/module/agenda/constants.d.ts.map +1 -0
- package/lib/typescript/module/agenda/heights.d.ts +20 -0
- package/lib/typescript/module/agenda/heights.d.ts.map +1 -0
- package/lib/typescript/module/agenda/useAgendaScrollSync.d.ts +44 -0
- package/lib/typescript/module/agenda/useAgendaScrollSync.d.ts.map +1 -0
- package/lib/typescript/module/core/ArrowGlyph.d.ts +14 -0
- package/lib/typescript/module/core/ArrowGlyph.d.ts.map +1 -0
- package/lib/typescript/module/core/CalendarContext.d.ts +35 -0
- package/lib/typescript/module/core/CalendarContext.d.ts.map +1 -0
- package/lib/typescript/module/core/CalendarProvider.d.ts +41 -0
- package/lib/typescript/module/core/CalendarProvider.d.ts.map +1 -0
- package/lib/typescript/module/core/CalendarStore.d.ts +28 -0
- package/lib/typescript/module/core/CalendarStore.d.ts.map +1 -0
- package/lib/typescript/module/core/KitText.d.ts +10 -0
- package/lib/typescript/module/core/KitText.d.ts.map +1 -0
- package/lib/typescript/module/core/TodayButton.d.ts +18 -0
- package/lib/typescript/module/core/TodayButton.d.ts.map +1 -0
- package/lib/typescript/module/core/civil.d.ts +26 -0
- package/lib/typescript/module/core/civil.d.ts.map +1 -0
- package/lib/typescript/module/core/dateKey.d.ts +21 -0
- package/lib/typescript/module/core/dateKey.d.ts.map +1 -0
- package/lib/typescript/module/core/motion.d.ts +18 -0
- package/lib/typescript/module/core/motion.d.ts.map +1 -0
- package/lib/typescript/module/core/worklets.d.ts +12 -0
- package/lib/typescript/module/core/worklets.d.ts.map +1 -0
- package/lib/typescript/module/expandable/DayCell.d.ts +22 -0
- package/lib/typescript/module/expandable/DayCell.d.ts.map +1 -0
- package/lib/typescript/module/expandable/ExpandableCalendar.d.ts +40 -0
- package/lib/typescript/module/expandable/ExpandableCalendar.d.ts.map +1 -0
- package/lib/typescript/module/expandable/Knob.d.ts +19 -0
- package/lib/typescript/module/expandable/Knob.d.ts.map +1 -0
- package/lib/typescript/module/expandable/MonthPager.d.ts +35 -0
- package/lib/typescript/module/expandable/MonthPager.d.ts.map +1 -0
- package/lib/typescript/module/expandable/WeekStrip.d.ts +34 -0
- package/lib/typescript/module/expandable/WeekStrip.d.ts.map +1 -0
- package/lib/typescript/module/expandable/calendarCells.d.ts +52 -0
- package/lib/typescript/module/expandable/calendarCells.d.ts.map +1 -0
- package/lib/typescript/module/expandable/geometry.d.ts +43 -0
- package/lib/typescript/module/expandable/geometry.d.ts.map +1 -0
- package/lib/typescript/module/expandable/useExpandGesture.d.ts +35 -0
- package/lib/typescript/module/expandable/useExpandGesture.d.ts.map +1 -0
- package/lib/typescript/module/expandable/useHorizontalPager.d.ts +35 -0
- package/lib/typescript/module/expandable/useHorizontalPager.d.ts.map +1 -0
- package/lib/typescript/module/index.d.ts +26 -0
- package/lib/typescript/module/index.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/theme/ThemeProvider.d.ts +27 -0
- package/lib/typescript/module/theme/ThemeProvider.d.ts.map +1 -0
- package/lib/typescript/module/theme/index.d.ts +4 -0
- package/lib/typescript/module/theme/index.d.ts.map +1 -0
- package/lib/typescript/module/theme/theme.d.ts +62 -0
- package/lib/typescript/module/theme/theme.d.ts.map +1 -0
- package/lib/typescript/module/theme/tokens.d.ts +46 -0
- package/lib/typescript/module/theme/tokens.d.ts.map +1 -0
- package/lib/typescript/module/timeline/DayColumn.d.ts +32 -0
- package/lib/typescript/module/timeline/DayColumn.d.ts.map +1 -0
- package/lib/typescript/module/timeline/DayPager.d.ts +32 -0
- package/lib/typescript/module/timeline/DayPager.d.ts.map +1 -0
- package/lib/typescript/module/timeline/EventBlock.d.ts +17 -0
- package/lib/typescript/module/timeline/EventBlock.d.ts.map +1 -0
- package/lib/typescript/module/timeline/GridLines.d.ts +5 -0
- package/lib/typescript/module/timeline/GridLines.d.ts.map +1 -0
- package/lib/typescript/module/timeline/HourGrid.d.ts +12 -0
- package/lib/typescript/module/timeline/HourGrid.d.ts.map +1 -0
- package/lib/typescript/module/timeline/NowIndicator.d.ts +28 -0
- package/lib/typescript/module/timeline/NowIndicator.d.ts.map +1 -0
- package/lib/typescript/module/timeline/TimelineDay.d.ts +14 -0
- package/lib/typescript/module/timeline/TimelineDay.d.ts.map +1 -0
- package/lib/typescript/module/timeline/packEvents.d.ts +25 -0
- package/lib/typescript/module/timeline/packEvents.d.ts.map +1 -0
- package/lib/typescript/module/timeline/timelineGeometry.d.ts +14 -0
- package/lib/typescript/module/timeline/timelineGeometry.d.ts.map +1 -0
- package/lib/typescript/module/timeline/timelineMath.d.ts +32 -0
- package/lib/typescript/module/timeline/timelineMath.d.ts.map +1 -0
- package/lib/typescript/module/types.d.ts +237 -0
- package/lib/typescript/module/types.d.ts.map +1 -0
- package/package.json +105 -0
- package/src/agenda/AgendaBackdrop.tsx +55 -0
- package/src/agenda/AgendaList.tsx +370 -0
- package/src/agenda/AgendaSlot.tsx +88 -0
- package/src/agenda/AgendaWindow.tsx +183 -0
- package/src/agenda/StickyHeaderOverlay.tsx +126 -0
- package/src/agenda/buildAgendaLayout.ts +110 -0
- package/src/agenda/constants.ts +22 -0
- package/src/agenda/heights.ts +44 -0
- package/src/agenda/useAgendaScrollSync.ts +251 -0
- package/src/core/ArrowGlyph.tsx +53 -0
- package/src/core/CalendarContext.ts +47 -0
- package/src/core/CalendarProvider.tsx +165 -0
- package/src/core/CalendarStore.ts +64 -0
- package/src/core/KitText.tsx +10 -0
- package/src/core/TodayButton.tsx +121 -0
- package/src/core/civil.ts +92 -0
- package/src/core/dateKey.ts +52 -0
- package/src/core/motion.ts +51 -0
- package/src/core/worklets.ts +37 -0
- package/src/expandable/DayCell.tsx +97 -0
- package/src/expandable/ExpandableCalendar.tsx +278 -0
- package/src/expandable/Knob.tsx +67 -0
- package/src/expandable/MonthPager.tsx +208 -0
- package/src/expandable/WeekStrip.tsx +439 -0
- package/src/expandable/calendarCells.ts +155 -0
- package/src/expandable/geometry.ts +51 -0
- package/src/expandable/useExpandGesture.ts +147 -0
- package/src/expandable/useHorizontalPager.ts +116 -0
- package/src/index.ts +62 -0
- package/src/theme/ThemeProvider.tsx +85 -0
- package/src/theme/index.ts +18 -0
- package/src/theme/theme.ts +110 -0
- package/src/theme/tokens.ts +50 -0
- package/src/timeline/DayColumn.tsx +84 -0
- package/src/timeline/DayPager.tsx +295 -0
- package/src/timeline/EventBlock.tsx +76 -0
- package/src/timeline/GridLines.tsx +36 -0
- package/src/timeline/HourGrid.tsx +90 -0
- package/src/timeline/NowIndicator.tsx +123 -0
- package/src/timeline/TimelineDay.tsx +112 -0
- package/src/timeline/packEvents.ts +118 -0
- package/src/timeline/timelineGeometry.ts +23 -0
- package/src/timeline/timelineMath.ts +86 -0
- 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":[]}
|