@koine/react 2.0.0-beta.10 → 2.0.0-beta.12

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 (216) hide show
  1. package/package.json +11 -11
  2. package/Alert/Alert.js +0 -33
  3. package/Alert/Alert.stories.js +0 -39
  4. package/Alert/index.js +0 -6
  5. package/Animations/Reveal.js +0 -53
  6. package/Animations/Underline.js +0 -26
  7. package/Animations/index.js +0 -8
  8. package/Animations/useReveal.js +0 -83
  9. package/Autocomplete/AutocompleteDownshift.js +0 -167
  10. package/Autocomplete/AutocompleteDownshiftMultiselect.js +0 -362
  11. package/Autocomplete/AutocompleteMui.js +0 -183
  12. package/Autocomplete/AutocompleteReach.js +0 -121
  13. package/Autocomplete/components.js +0 -132
  14. package/Autocomplete/helpers.js +0 -34
  15. package/Autocomplete/index.js +0 -15
  16. package/Bg/BgColor.js +0 -64
  17. package/Bg/BgPhoto.js +0 -82
  18. package/Bg/BgSvg.js +0 -31
  19. package/Bg/index.js +0 -8
  20. package/Breadcrumbs/Breadcrumbs.js +0 -103
  21. package/Breadcrumbs/index.js +0 -6
  22. package/Buttons/Button.js +0 -106
  23. package/Buttons/ButtonComposite.js +0 -116
  24. package/Buttons/ButtonFab.js +0 -27
  25. package/Buttons/ButtonLink.js +0 -29
  26. package/Buttons/IconButton.js +0 -41
  27. package/Buttons/index.js +0 -10
  28. package/Calendar/CalendarDaygridCell.js +0 -105
  29. package/Calendar/CalendarDaygridNav.js +0 -63
  30. package/Calendar/CalendarDaygridTable.js +0 -126
  31. package/Calendar/CalendarLegend.js +0 -39
  32. package/Calendar/calendar-api-google.js +0 -110
  33. package/Calendar/index.js +0 -11
  34. package/Calendar/types.js +0 -4
  35. package/Calendar/useCalendar.js +0 -235
  36. package/Calendar/utils.js +0 -252
  37. package/Carousel/Carousel.js +0 -387
  38. package/Carousel/CarouselCss.js +0 -64
  39. package/Carousel/index.js +0 -6
  40. package/Collapsable/Collapsable.js +0 -11
  41. package/Collapsable/CollapsableReach.js +0 -251
  42. package/Collapsable/index.js +0 -7
  43. package/Debug/Debug.js +0 -34
  44. package/Debug/index.js +0 -6
  45. package/Details/Details.js +0 -117
  46. package/Details/Details.stories.js +0 -39
  47. package/Details/index.js +0 -6
  48. package/Dialog/DialogMui.js +0 -143
  49. package/Dialog/DialogMui.stories.js +0 -38
  50. package/Dialog/css/bare.js +0 -55
  51. package/Dialog/css/index.stories.js +0 -93
  52. package/Dialog/index.js +0 -11
  53. package/Dialog/m/bare.js +0 -125
  54. package/Dialog/m/basic.js +0 -50
  55. package/Dialog/m/index.js +0 -14
  56. package/Dialog/sc/bare.js +0 -83
  57. package/Dialog/sc/framer.js +0 -26
  58. package/Dialog/sc/framerMaterial.js +0 -26
  59. package/Dialog/sc/index.stories.js +0 -75
  60. package/Dialog/sc/material.js +0 -78
  61. package/Dialog/tw/bare.js +0 -55
  62. package/Dialog/tw/elegant.js +0 -54
  63. package/Dialog/tw/framer.js +0 -26
  64. package/Dialog/tw/framerMaterial.js +0 -26
  65. package/Dialog/tw/index.stories.js +0 -113
  66. package/Dialog/tw/material.js +0 -54
  67. package/Editor/Editor--tiptap.js +0 -72
  68. package/Editor/components.js +0 -59
  69. package/Editor/index.js +0 -6
  70. package/FaviconTags.js +0 -73
  71. package/Form/Form.js +0 -130
  72. package/Form/index.js +0 -6
  73. package/Form/sc/bare.js +0 -55
  74. package/Forms/Checkbox/Checkbox.js +0 -62
  75. package/Forms/Checkbox/index.js +0 -6
  76. package/Forms/Feedback/Feedback.js +0 -25
  77. package/Forms/Feedback/index.js +0 -6
  78. package/Forms/Field/Field.js +0 -75
  79. package/Forms/Field/FieldControl.js +0 -69
  80. package/Forms/Field/FieldHint.js +0 -17
  81. package/Forms/Field/index.js +0 -7
  82. package/Forms/Input/Input.js +0 -67
  83. package/Forms/Input/index.js +0 -6
  84. package/Forms/InputGroup/InputGroup.js +0 -85
  85. package/Forms/InputGroup/index.js +0 -6
  86. package/Forms/Label/Label.js +0 -46
  87. package/Forms/Label/index.js +0 -6
  88. package/Forms/Password/Password.js +0 -72
  89. package/Forms/Password/index.js +0 -6
  90. package/Forms/Radio/Radio.js +0 -68
  91. package/Forms/Radio/index.js +0 -6
  92. package/Forms/Switch/Switch.js +0 -80
  93. package/Forms/Switch/index.js +0 -6
  94. package/Forms/Textarea/Textarea.js +0 -45
  95. package/Forms/Textarea/TextareaRich.js +0 -58
  96. package/Forms/Textarea/index.js +0 -7
  97. package/Forms/Toggle/Toggle-tailwind.js +0 -99
  98. package/Forms/Toggle/Toggle.js +0 -175
  99. package/Forms/Toggle/index.js +0 -6
  100. package/Forms/Toggle/useToggle-tailwind.js +0 -202
  101. package/Forms/Toggle/useToggle.js +0 -145
  102. package/Forms/antispam.js +0 -59
  103. package/Forms/helpers.js +0 -72
  104. package/Forms/index.js +0 -19
  105. package/Forms/styles.js +0 -94
  106. package/Gauge/Gauge.js +0 -111
  107. package/Grid/Grid.js +0 -106
  108. package/Grid/index.js +0 -6
  109. package/Hamburger/Hamburger.js +0 -90
  110. package/Hamburger/index.js +0 -6
  111. package/Header/index.js +0 -6
  112. package/Header/useHeader.js +0 -54
  113. package/Hidden/Hidden.js +0 -21
  114. package/Hidden/index.js +0 -6
  115. package/Img/index.js +0 -6
  116. package/Img/sc/bare.js +0 -43
  117. package/Img/types.js +0 -6
  118. package/Link/Link.js +0 -13
  119. package/Link/LinkBlank.js +0 -52
  120. package/Link/index.js +0 -7
  121. package/Menu/Menu.js +0 -22
  122. package/Menu/MenuMui.js +0 -165
  123. package/Menu/index.js +0 -6
  124. package/MenuItem/MenuItem.js +0 -31
  125. package/MenuItem/MenuItemMui.js +0 -32
  126. package/MenuItem/index.js +0 -6
  127. package/MenuItem/useMenuItem.js +0 -96
  128. package/Meta/Meta.js +0 -26
  129. package/Meta/index.js +0 -12
  130. package/NoJs/NoJs.js +0 -28
  131. package/NoJs/index.js +0 -12
  132. package/Pagination/PaginationNav.js +0 -126
  133. package/Pagination/PaginationResults.js +0 -45
  134. package/Pagination/index.js +0 -7
  135. package/Pill/Pill.js +0 -62
  136. package/Pill/index.js +0 -6
  137. package/Progress/ProgressCircular.js +0 -62
  138. package/Progress/ProgressLinear.js +0 -53
  139. package/Progress/ProgressOverlay.js +0 -75
  140. package/Progress/index.js +0 -8
  141. package/Rating/Rating.js +0 -188
  142. package/Rating/index.js +0 -85
  143. package/Select/SelectDownshift.js +0 -47
  144. package/Select/components.js +0 -44
  145. package/Select/index.js +0 -13
  146. package/Sidebar/Sidebar.js +0 -74
  147. package/Sidebar/index.js +0 -6
  148. package/Spacing/Spacing.js +0 -55
  149. package/Spacing/index.js +0 -6
  150. package/Sticky/Sticky.js +0 -228
  151. package/Sticky/StickyCss.js +0 -20
  152. package/Sticky/index.js +0 -19
  153. package/Tabs/TabsMui.js +0 -91
  154. package/Tabs/TabsMui.stories.js +0 -38
  155. package/Tabs/index.js +0 -6
  156. package/Tabs/sc/bare.js +0 -86
  157. package/Tabs/sc/index.stories.js +0 -1
  158. package/Tabs/tw/bare.js +0 -45
  159. package/Tabs/tw/index.stories.js +0 -46
  160. package/Tabs/tw/material.js +0 -44
  161. package/Tabs/useTabs.js +0 -66
  162. package/Typography/CopyPasteVisible.js +0 -17
  163. package/Typography/Native.js +0 -90
  164. package/Typography/ReadMore.js +0 -125
  165. package/Typography/TextLoop.js +0 -108
  166. package/Typography/TypeStairs.js +0 -71
  167. package/Typography/index.js +0 -10
  168. package/css/index.js +0 -33
  169. package/helpers/classed.js +0 -66
  170. package/helpers/classed.stories.js +0 -140
  171. package/helpers/createUseMediaQueryWidth.js +0 -193
  172. package/helpers/extend-component.js +0 -32
  173. package/helpers/index.js +0 -9
  174. package/helpers/mergeRefs.js +0 -30
  175. package/hooks/index.js +0 -92
  176. package/hooks/types.js +0 -6
  177. package/hooks/useAsyncFn.js +0 -56
  178. package/hooks/useDateLocale.js +0 -51
  179. package/hooks/useFirstMountState.js +0 -28
  180. package/hooks/useFixedOffset.js +0 -67
  181. package/hooks/useFocus.js +0 -30
  182. package/hooks/useInterval.js +0 -44
  183. package/hooks/useIsomorphicLayoutEffect.js +0 -23
  184. package/hooks/useKeyUp.js +0 -40
  185. package/hooks/useMeasure.js +0 -189
  186. package/hooks/useMountedState.js +0 -31
  187. package/hooks/useNavigateAway.js +0 -69
  188. package/hooks/usePrevious.js +0 -33
  189. package/hooks/usePreviousRef.js +0 -27
  190. package/hooks/useScrollPosition.js +0 -83
  191. package/hooks/useScrollThreshold.js +0 -52
  192. package/hooks/useScrollTo.js +0 -39
  193. package/hooks/useSmoothScroll.js +0 -49
  194. package/hooks/useSpinDelay.js +0 -59
  195. package/hooks/useTraceUpdate.js +0 -39
  196. package/hooks/useUpdateEffect.js +0 -30
  197. package/hooks/useWindowSize.js +0 -43
  198. package/index.js +0 -10
  199. package/m/MotionProvider.js +0 -27
  200. package/m/index.js +0 -10
  201. package/m/lite.js +0 -12
  202. package/m/max.js +0 -12
  203. package/sc/index.js +0 -49
  204. package/scm/index.js +0 -40
  205. package/shared/index.js +0 -13
  206. package/styles/Body.js +0 -28
  207. package/styles/Global.js +0 -55
  208. package/styles/index.js +0 -142
  209. package/styles/media.js +0 -139
  210. package/styles/spacing.js +0 -70
  211. package/styles/styled.js +0 -58
  212. package/styles/theme--vanilla.js +0 -82
  213. package/styles/theme.js +0 -49
  214. package/tw/index.js +0 -33
  215. package/twm/index.js +0 -33
  216. package/types.js +0 -4
package/Calendar/index.js DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _export_star = require("@swc/helpers/_/_export_star");
6
- _export_star._(require("./CalendarDaygridCell"), exports);
7
- _export_star._(require("./CalendarDaygridNav"), exports);
8
- _export_star._(require("./CalendarDaygridTable"), exports);
9
- _export_star._(require("./CalendarLegend"), exports);
10
- _export_star._(require("./useCalendar"), exports);
11
- _export_star._(require("./types"), exports);
package/Calendar/types.js DELETED
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
@@ -1,235 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "useCalendar", {
6
- enumerable: true,
7
- get: function() {
8
- return useCalendar;
9
- }
10
- });
11
- const _react = require("react");
12
- const _calendarapigoogle = require("./calendar-api-google");
13
- const _utils = require("./utils");
14
- function useCalendar({ locale, apiKey, calendars, events: initialEvents, start: initialStart, end: initialEnd, view: initialView = "month", timeZone = "", onError }) {
15
- const [view, setView] = (0, _react.useState)(initialView);
16
- const start = initialStart || (0, _utils.getStartDate)(new Date(), view);
17
- const end = initialEnd || (0, _utils.getEndDate)(start, view);
18
- const [range, setRange] = (0, _react.useState)([
19
- start,
20
- end
21
- ]);
22
- const [todayInView, setTodayInView] = (0, _react.useState)((0, _utils.isTodayInView)(start, end));
23
- const [events, setEvents] = (0, _react.useState)(initialEvents || {});
24
- const [eventHovered, setEventHovered] = (0, _react.useState)(null);
25
- const [eventClicked, setEventClicked] = (0, _react.useState)(null);
26
- const [calendarsMap, updateCalendars] = (0, _react.useReducer)((state, action)=>{
27
- const { type } = action;
28
- switch(type){
29
- case "events":
30
- {
31
- const events = action.payload;
32
- return Object.entries(state).reduce((map, [id, calendar])=>{
33
- map[id] = {
34
- ...calendar,
35
- events: events[id] || 0
36
- };
37
- return map;
38
- }, {});
39
- }
40
- case "visibility":
41
- {
42
- const visible = action.payload;
43
- if (typeof visible === "string") {
44
- return {
45
- ...state,
46
- [visible]: {
47
- ...state[visible],
48
- on: !state[visible].on
49
- }
50
- };
51
- } else {
52
- return Object.entries(state).reduce((map, [id, calendar])=>{
53
- map[id] = {
54
- ...calendar,
55
- on: visible.indexOf(id) > -1
56
- };
57
- return map;
58
- }, {});
59
- }
60
- }
61
- default:
62
- return state;
63
- }
64
- }, // initial state
65
- calendars.reduce((map, calendar)=>{
66
- map[calendar.id] = {
67
- ...calendar,
68
- name: calendar.name || "",
69
- on: true,
70
- events: 0
71
- };
72
- return map;
73
- }, {}));
74
- const toggleCalendarVisibility = (0, _react.useCallback)((idOrIds)=>{
75
- updateCalendars({
76
- type: "visibility",
77
- payload: idOrIds
78
- });
79
- }, [
80
- updateCalendars
81
- ]);
82
- const updateCalendarsBasedOnEvents = (0, _react.useCallback)((events)=>{
83
- const payload = {};
84
- for(const uid in events){
85
- const { id } = events[uid].calendar;
86
- payload[id] = payload[id] || 0;
87
- payload[id]++;
88
- }
89
- updateCalendars({
90
- type: "events",
91
- payload
92
- });
93
- }, []);
94
- const loadCalendars = (0, _react.useCallback)(async (calendars, start, end)=>{
95
- try {
96
- const newEvents = await (0, _calendarapigoogle.getCalendarsEventsFromGoogle)({
97
- apiKey,
98
- calendars,
99
- timeZone,
100
- start,
101
- end
102
- });
103
- // setEvents(mergeCalendarEvents(events, newEvents));
104
- setEvents(newEvents);
105
- } catch (e) {
106
- if (onError) onError(e);
107
- }
108
- }, [
109
- setEvents,
110
- apiKey,
111
- timeZone,
112
- onError
113
- ]);
114
- const handleToday = (0, _react.useCallback)(()=>{
115
- const [start, end] = range;
116
- const newStart = (0, _utils.getStartDate)(new Date(), view);
117
- const newEnd = (0, _utils.getEndDate)(newStart, view);
118
- setRange([
119
- newStart,
120
- newEnd
121
- ]);
122
- // reset event only if we are not on the current view already
123
- if (start.getTime() !== newStart.getTime() || end.getTime() !== newEnd.getTime()) {
124
- setEventClicked(null);
125
- setEventHovered(null);
126
- }
127
- }, [
128
- view,
129
- range
130
- ]);
131
- const handlePrev = (0, _react.useCallback)(()=>{
132
- setRange(([start])=>{
133
- const newStart = (0, _utils.getPrevDate)(start, view);
134
- const newEnd = (0, _utils.getEndDate)(newStart, view);
135
- return [
136
- newStart,
137
- newEnd
138
- ];
139
- });
140
- setEventClicked(null);
141
- setEventHovered(null);
142
- }, [
143
- view
144
- ]);
145
- const handleNext = (0, _react.useCallback)(()=>{
146
- setRange(([start])=>{
147
- const newStart = (0, _utils.getNextDate)(start, view);
148
- const newEnd = (0, _utils.getEndDate)(newStart, view);
149
- return [
150
- newStart,
151
- newEnd
152
- ];
153
- });
154
- setEventClicked(null);
155
- setEventHovered(null);
156
- }, [
157
- view
158
- ]);
159
- const handleView = (0, _react.useCallback)((newView)=>{
160
- const newStart = (0, _utils.getStartDate)(start, newView);
161
- const newEnd = (0, _utils.getEndDate)(newStart, newView);
162
- setRange([
163
- newStart,
164
- newEnd
165
- ]);
166
- setView(newView);
167
- setEventClicked(null);
168
- setEventHovered(null);
169
- }, [
170
- start
171
- ]);
172
- (0, _react.useEffect)(()=>{
173
- const [start, end] = range;
174
- loadCalendars(calendars, start, end);
175
- setTodayInView((0, _utils.isTodayInView)(start, end));
176
- // eslint-disable-next-line react-hooks/exhaustive-deps
177
- }, [
178
- range
179
- ]);
180
- (0, _react.useEffect)(()=>{
181
- if (events) {
182
- updateCalendarsBasedOnEvents(events);
183
- }
184
- }, [
185
- events,
186
- updateCalendarsBasedOnEvents
187
- ]);
188
- // when toggling a calendar we also remove the clicked event if that belongs
189
- // to a now hidden calendar
190
- (0, _react.useEffect)(()=>{
191
- if (eventClicked) {
192
- if (!calendarsMap[eventClicked.calendar.id].on) {
193
- setEventClicked(null);
194
- }
195
- }
196
- }, [
197
- calendarsMap,
198
- eventClicked,
199
- setEventClicked
200
- ]);
201
- return {
202
- view,
203
- eventClicked,
204
- setEventClicked,
205
- eventHovered,
206
- setEventHovered,
207
- getDaygridNavProps: ()=>({
208
- locale,
209
- handlePrev,
210
- handleNext,
211
- handleToday,
212
- handleView,
213
- todayInView,
214
- range,
215
- view
216
- }),
217
- getDaygridTableProps: ()=>({
218
- locale,
219
- events,
220
- eventClicked,
221
- setEventClicked,
222
- eventHovered,
223
- setEventHovered,
224
- handlePrev,
225
- handleNext,
226
- calendarsMap,
227
- range,
228
- view
229
- }),
230
- getLegendProps: ()=>({
231
- calendarsMap,
232
- toggleCalendarVisibility
233
- })
234
- };
235
- }
package/Calendar/utils.js DELETED
@@ -1,252 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- getEventTimestamp: function() {
13
- return getEventTimestamp;
14
- },
15
- getDisplayTime: function() {
16
- return getDisplayTime;
17
- },
18
- getStartDate: function() {
19
- return getStartDate;
20
- },
21
- getEndDate: function() {
22
- return getEndDate;
23
- },
24
- getPrevDate: function() {
25
- return getPrevDate;
26
- },
27
- getNextDate: function() {
28
- return getNextDate;
29
- },
30
- isTodayInView: function() {
31
- return isTodayInView;
32
- },
33
- mergeCalendarEvents: function() {
34
- return mergeCalendarEvents;
35
- },
36
- addCalendarEvents: function() {
37
- return addCalendarEvents;
38
- },
39
- processEventsInView: function() {
40
- return processEventsInView;
41
- }
42
- });
43
- const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
44
- const _addDays = /*#__PURE__*/ _interop_require_default._(require("date-fns/addDays"));
45
- const _addMonths = /*#__PURE__*/ _interop_require_default._(require("date-fns/addMonths"));
46
- const _addWeeks = /*#__PURE__*/ _interop_require_default._(require("date-fns/addWeeks"));
47
- const _endOfMonth = /*#__PURE__*/ _interop_require_default._(require("date-fns/endOfMonth"));
48
- const _endOfWeek = /*#__PURE__*/ _interop_require_default._(require("date-fns/endOfWeek"));
49
- const _isWithinInterval = /*#__PURE__*/ _interop_require_default._(require("date-fns/isWithinInterval"));
50
- const _startOfWeek = /*#__PURE__*/ _interop_require_default._(require("date-fns/startOfWeek"));
51
- const _subMonths = /*#__PURE__*/ _interop_require_default._(require("date-fns/subMonths"));
52
- const _subWeeks = /*#__PURE__*/ _interop_require_default._(require("date-fns/subWeeks"));
53
- function getEventTimestamp(dateLike) {
54
- const date = new Date(dateLike);
55
- date.setHours(0, 0, 0, 0);
56
- return date.valueOf() / 1000;
57
- }
58
- function getDisplayTime(date) {
59
- return date.getHours() + ":" + "0".repeat(2 - date.getMinutes().toString().length) + date.getMinutes();
60
- }
61
- function getStartDate(date, view) {
62
- date.setHours(0, 0, 0);
63
- if (view === "month") {
64
- date.setDate(1);
65
- } else if (view === "week") {
66
- date = (0, _startOfWeek.default)(date, {
67
- weekStartsOn: 1
68
- });
69
- }
70
- return date;
71
- }
72
- function getEndDate(start, view) {
73
- let end = start;
74
- if (view === "month") {
75
- end = (0, _endOfMonth.default)(start);
76
- } else if (view === "week") {
77
- end = (0, _endOfWeek.default)(start, {
78
- weekStartsOn: 1
79
- });
80
- }
81
- end.setHours(23, 59, 59);
82
- return end;
83
- }
84
- function getPrevDate(date, view) {
85
- if (view === "month") {
86
- return (0, _subMonths.default)(date, 1);
87
- }
88
- return (0, _subWeeks.default)(date, 1);
89
- }
90
- function getNextDate(date, view) {
91
- if (view === "month") {
92
- return (0, _addMonths.default)(date, 1);
93
- }
94
- return (0, _addWeeks.default)(date, 1);
95
- }
96
- function isTodayInView(start, end) {
97
- return (0, _isWithinInterval.default)(new Date(), {
98
- start,
99
- end
100
- });
101
- }
102
- function mergeCalendarEvents(first, second) {
103
- const all = {};
104
- addCalendarEvents(first, all);
105
- addCalendarEvents(second, all);
106
- return all;
107
- }
108
- function addCalendarEvents(toAdd, toExtend) {
109
- for(const id in toAdd){
110
- const event = toAdd[id];
111
- toExtend[id] = event;
112
- }
113
- return toExtend;
114
- }
115
- function getEventsByTimestamp(events) {
116
- const output = {};
117
- for(const uid in events){
118
- const event = events[uid];
119
- event.days.forEach((timestamp)=>{
120
- output[timestamp] = output[timestamp] || {};
121
- output[timestamp][uid] = event;
122
- });
123
- }
124
- return output;
125
- }
126
- function getSortedEvents(events) {
127
- const output = [];
128
- for(const uid in events){
129
- output.push(events[uid]);
130
- }
131
- // sort events first multi, then all day then by start then by created date
132
- output.sort((a, b)=>{
133
- const multi = Number(b.multi) - Number(a.multi);
134
- const allDay = Number(b.allDay) - Number(a.allDay);
135
- const start = a.start.getTime() - b.start.getTime();
136
- const created = a.created.getTime() - b.created.getTime();
137
- return multi || allDay || start || created;
138
- });
139
- return output;
140
- }
141
- const FREE_SLOT = 0;
142
- const BUSY_SLOT = 1;
143
- function processEventsInView(eventsMap, calendarView, month, weeks) {
144
- const eventsByTimestamp = getEventsByTimestamp(eventsMap);
145
- const eventsList = getSortedEvents(eventsMap);
146
- const todayDate = new Date();
147
- const todayTimestamp = getEventTimestamp(todayDate);
148
- const startedAtTopMap = {};
149
- const viewWeeks = [];
150
- for(let weekIdx = 0; weekIdx < weeks.length; weekIdx++){
151
- const viewWeek = {
152
- props: {
153
- key: `week.${weekIdx}`
154
- },
155
- days: []
156
- };
157
- const weekStartDate = weeks[weekIdx];
158
- const weekStartDay = weekStartDate.getDate();
159
- const weekStartTimestamp = getEventTimestamp(new Date(weekStartDate));
160
- const weekEndTimestamp = getEventTimestamp((0, _addDays.default)(new Date(weekStartDate), 6));
161
- for(let dayNumber = 0; dayNumber < 7; dayNumber++){
162
- const dayDate = new Date(new Date(weekStartDate).setDate(weekStartDay + dayNumber));
163
- const dayTimestamp = getEventTimestamp(dayDate);
164
- const $isToday = todayTimestamp === dayTimestamp;
165
- const $isOutOfRange = calendarView === "month" && dayDate.getMonth() !== month;
166
- const contextualProps = {
167
- $isToday,
168
- $isOutOfRange
169
- };
170
- const viewDay = {
171
- props: {
172
- key: `day.${dayTimestamp}`,
173
- ...contextualProps
174
- },
175
- timestamp: dayTimestamp + "",
176
- label: dayDate.getDate() + "",
177
- events: []
178
- };
179
- // check that we have events in this day
180
- if (eventsByTimestamp?.[dayTimestamp]) {
181
- const verticalSlots = Object.keys(eventsByTimestamp[dayTimestamp]).map(()=>FREE_SLOT);
182
- for(let eventIdx = 0; eventIdx < eventsList.length; eventIdx++){
183
- const event = eventsList[eventIdx];
184
- let width = 1;
185
- let top = 0;
186
- let firstOfMulti;
187
- if (!event.daysMap[dayTimestamp]) {
188
- continue;
189
- }
190
- // only for multi days events:
191
- if (event.multi) {
192
- // filter out the days outside of the current week view to avoid
193
- // making a multi-days event chip wider than the week row or shorter
194
- // than it should be (when event spans across weeks)
195
- width = event.days.filter((t)=>t >= weekStartTimestamp && t <= weekEndTimestamp).length;
196
- // flag the first day of multi-days events, consider that an event
197
- // might start in a day earlier (hence outside) of the current
198
- // week/month view, so we always check for Mondays (dayNumber === 0)
199
- if (event.days.indexOf(dayTimestamp) === 0 || dayNumber === 0) {
200
- firstOfMulti = true;
201
- }
202
- }
203
- // if we already have the information on when the event has been
204
- // vertically positioned use that index
205
- if (startedAtTopMap[event.uid]) {
206
- top = startedAtTopMap[event.uid];
207
- } else {
208
- // now look for a free slot and use its index as `top`
209
- for(let verticalIdx = 0; verticalIdx < verticalSlots.length; verticalIdx++){
210
- const freeOrBusy = verticalSlots[verticalIdx];
211
- if (freeOrBusy !== BUSY_SLOT) {
212
- top = verticalIdx;
213
- break;
214
- }
215
- }
216
- }
217
- // now mark the slot as busy
218
- verticalSlots[top] = BUSY_SLOT;
219
- // store the slot vertical position consistently for multi-days events
220
- if (firstOfMulti) {
221
- startedAtTopMap[event.uid] = top;
222
- }
223
- // push the event, they will be sorted later
224
- viewDay.events.push({
225
- key: `event.${dayTimestamp}-${top}`,
226
- ...contextualProps,
227
- ...event,
228
- isPast: todayDate > event.end,
229
- firstOfMulti,
230
- top,
231
- width
232
- });
233
- }
234
- // fill the empty slots with events' placeholders
235
- for(let i = 0; i < verticalSlots.length; i++){
236
- if (verticalSlots[i] !== BUSY_SLOT) {
237
- viewDay.events.push({
238
- key: `event.${dayTimestamp}-${i}}`,
239
- placeholder: true,
240
- top: i
241
- });
242
- }
243
- }
244
- // sort events and events placeholders by top position
245
- viewDay.events.sort((a, b)=>a.top - b.top);
246
- }
247
- viewWeek.days.push(viewDay);
248
- }
249
- viewWeeks.push(viewWeek);
250
- }
251
- return viewWeeks;
252
- }