@pisell/materials 6.11.36 → 6.11.38

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 (200) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +1 -1
  6. package/build/lowcode/preview.js +8 -8
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +26 -56
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +26 -56
  11. package/es/components/PisellLayouts/index.d.ts +1 -1
  12. package/es/components/colorPicker/index.d.ts +0 -1
  13. package/es/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
  14. package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +2 -2
  15. package/es/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +1 -1
  16. package/es/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
  17. package/es/components/dataSourceComponents/fields/Tabs/index.d.ts +1 -1
  18. package/es/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
  19. package/es/components/dataSourceComponents/fields/index.d.ts +6 -6
  20. package/es/components/filter/components/items/index.d.ts +0 -1
  21. package/es/components/filter/components/items/text/Editor/index.d.ts +0 -1
  22. package/es/components/filter/components/items/text/Preview/index.d.ts +0 -1
  23. package/es/components/filter/components/items/text/index.d.ts +0 -1
  24. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.d.ts +2 -1
  25. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.js +47 -3
  26. package/es/components/pisellFloorMapLayout/types.d.ts +7 -7
  27. package/es/components/pisellFloorMapLayout/types.js +2 -2
  28. package/es/components/pisellRecordBoard/index.d.ts +1 -1
  29. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.d.ts +5 -0
  30. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.js +1039 -0
  31. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.less +323 -0
  32. package/es/components/pisellRecordBoard/shellFrame/Calendar/PisellRecordBoardCalendarView.d.ts +5 -1
  33. package/es/components/pisellRecordBoard/shellFrame/Calendar/PisellRecordBoardCalendarView.js +10 -10
  34. package/es/components/pisellRecordBoard/shellFrame/Calendar/bookingCalendarViewShared.d.ts +23 -0
  35. package/es/components/pisellRecordBoard/shellFrame/Calendar/bookingCalendarViewShared.js +287 -0
  36. package/es/components/pisellRecordBoard/shellFrame/Calendar/calendarI18n.d.ts +4 -0
  37. package/es/components/pisellRecordBoard/shellFrame/Calendar/calendarI18n.js +28 -0
  38. package/es/components/pisellRecordBoard/shellFrame/Calendar/calendarPersistGuard.d.ts +1 -1
  39. package/es/components/pisellRecordBoard/shellFrame/Calendar/const/bookingCalendarConstants.d.ts +36 -0
  40. package/es/components/pisellRecordBoard/shellFrame/Calendar/const/bookingCalendarConstants.js +38 -0
  41. package/es/components/pisellRecordBoard/shellFrame/Calendar/index.d.ts +3 -0
  42. package/es/components/pisellRecordBoard/shellFrame/Calendar/index.js +3 -0
  43. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/MoveConfirmModal.d.ts +17 -0
  44. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/MoveConfirmModal.js +197 -0
  45. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowListModal.d.ts +17 -0
  46. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowListModal.js +65 -0
  47. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowPopover.d.ts +9 -0
  48. package/es/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowPopover.js +52 -0
  49. package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.d.ts +10 -0
  50. package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.js +58 -0
  51. package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/bookingCalendarDateUtils.d.ts +232 -0
  52. package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/bookingCalendarDateUtils.js +735 -0
  53. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDaySelectionBar.d.ts +13 -0
  54. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDaySelectionBar.js +37 -0
  55. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDayView.d.ts +56 -0
  56. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDayView.js +682 -0
  57. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.d.ts +18 -0
  58. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.js +155 -0
  59. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarWeekView.d.ts +27 -0
  60. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarWeekView.js +259 -0
  61. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/bookingCalendarDayViewContext.d.ts +12 -0
  62. package/es/components/pisellRecordBoard/shellFrame/Calendar/view/bookingCalendarDayViewContext.js +19 -0
  63. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.d.ts +2 -1
  64. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.js +44 -14
  65. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.d.ts +4 -2
  66. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +117 -125
  67. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanel.d.ts +3 -5
  68. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanel.js +71 -352
  69. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelColorTab.d.ts +17 -0
  70. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelColorTab.js +143 -0
  71. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelLayoutTab.d.ts +28 -0
  72. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelLayoutTab.js +128 -0
  73. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewport.less +8 -0
  74. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewportToolbar.d.ts +18 -0
  75. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewportToolbar.js +115 -0
  76. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +6 -4
  77. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +63 -120
  78. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/resourceWallConstants.d.ts +2 -0
  79. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/resourceWallConstants.js +2 -0
  80. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.d.ts +42 -0
  81. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.js +114 -0
  82. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +26 -0
  83. package/es/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +54 -1
  84. package/es/components/pisellRecordBoard/shellFrame/ToolBar/index.js +67 -12
  85. package/es/components/pisellRecordBoard/shellFrame/index.js +34 -7
  86. package/es/components/pisellRecordBoard/types.d.ts +97 -4
  87. package/es/components/pisellRecordBoard/types.js +18 -2
  88. package/es/components/pisellReservationScheduleBand/PisellReservationScheduleBand.less +34 -2
  89. package/es/components/pisellShellFrame/PisellShellFrame.less +5 -2
  90. package/es/components/table/Table/SelectField/index.d.ts +0 -1
  91. package/es/components/table/Table/tableConfig/summary/index.d.ts +0 -1
  92. package/es/hooks/useResponsive.d.ts +1 -1
  93. package/es/index.d.ts +1 -1
  94. package/es/locales/en-US.d.ts +74 -0
  95. package/es/locales/en-US.js +76 -1
  96. package/es/locales/ja.d.ts +74 -0
  97. package/es/locales/ja.js +75 -0
  98. package/es/locales/pt.d.ts +74 -0
  99. package/es/locales/pt.js +75 -0
  100. package/es/locales/zh-CN.d.ts +74 -0
  101. package/es/locales/zh-CN.js +76 -1
  102. package/es/locales/zh-TW.d.ts +74 -0
  103. package/es/locales/zh-TW.js +76 -1
  104. package/es/pisell-materials.tw.css +1 -1
  105. package/lib/components/PisellLayouts/index.d.ts +1 -1
  106. package/lib/components/colorPicker/index.d.ts +0 -1
  107. package/lib/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
  108. package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +2 -2
  109. package/lib/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +1 -1
  110. package/lib/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
  111. package/lib/components/dataSourceComponents/fields/Tabs/index.d.ts +1 -1
  112. package/lib/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
  113. package/lib/components/dataSourceComponents/fields/index.d.ts +6 -6
  114. package/lib/components/filter/components/items/index.d.ts +0 -1
  115. package/lib/components/filter/components/items/text/Editor/index.d.ts +0 -1
  116. package/lib/components/filter/components/items/text/Preview/index.d.ts +0 -1
  117. package/lib/components/filter/components/items/text/index.d.ts +0 -1
  118. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.d.ts +2 -1
  119. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.js +1 -1
  120. package/lib/components/pisellFloorMapLayout/types.d.ts +7 -7
  121. package/lib/components/pisellRecordBoard/index.d.ts +1 -1
  122. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.d.ts +5 -0
  123. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.js +892 -0
  124. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendar.less +323 -0
  125. package/lib/components/pisellRecordBoard/shellFrame/Calendar/PisellRecordBoardCalendarView.d.ts +5 -1
  126. package/lib/components/pisellRecordBoard/shellFrame/Calendar/PisellRecordBoardCalendarView.js +7 -6
  127. package/lib/components/pisellRecordBoard/shellFrame/Calendar/bookingCalendarViewShared.d.ts +23 -0
  128. package/lib/components/pisellRecordBoard/shellFrame/Calendar/bookingCalendarViewShared.js +268 -0
  129. package/lib/components/pisellRecordBoard/shellFrame/Calendar/calendarI18n.d.ts +4 -0
  130. package/lib/components/pisellRecordBoard/shellFrame/Calendar/calendarI18n.js +53 -0
  131. package/lib/components/pisellRecordBoard/shellFrame/Calendar/calendarPersistGuard.d.ts +1 -1
  132. package/lib/components/pisellRecordBoard/shellFrame/Calendar/const/bookingCalendarConstants.d.ts +36 -0
  133. package/lib/components/pisellRecordBoard/shellFrame/Calendar/const/bookingCalendarConstants.js +98 -0
  134. package/lib/components/pisellRecordBoard/shellFrame/Calendar/index.d.ts +3 -0
  135. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/MoveConfirmModal.d.ts +17 -0
  136. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/MoveConfirmModal.js +306 -0
  137. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowListModal.d.ts +17 -0
  138. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowListModal.js +111 -0
  139. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowPopover.d.ts +9 -0
  140. package/lib/components/pisellRecordBoard/shellFrame/Calendar/modal/OverflowPopover.js +96 -0
  141. package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.d.ts +10 -0
  142. package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.js +92 -0
  143. package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/bookingCalendarDateUtils.d.ts +232 -0
  144. package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/bookingCalendarDateUtils.js +666 -0
  145. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDaySelectionBar.d.ts +13 -0
  146. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDaySelectionBar.js +90 -0
  147. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDayView.d.ts +56 -0
  148. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarDayView.js +812 -0
  149. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.d.ts +18 -0
  150. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarMonthView.js +219 -0
  151. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarWeekView.d.ts +27 -0
  152. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/BookingCalendarWeekView.js +352 -0
  153. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/bookingCalendarDayViewContext.d.ts +12 -0
  154. package/lib/components/pisellRecordBoard/shellFrame/Calendar/view/bookingCalendarDayViewContext.js +57 -0
  155. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.d.ts +2 -1
  156. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/NoteTicker.js +44 -9
  157. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.d.ts +4 -2
  158. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/PisellRecordBoardResourceWallView.js +60 -142
  159. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanel.d.ts +3 -5
  160. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanel.js +40 -269
  161. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelColorTab.d.ts +17 -0
  162. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelColorTab.js +163 -0
  163. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelLayoutTab.d.ts +28 -0
  164. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallControlPanelLayoutTab.js +136 -0
  165. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewport.less +8 -0
  166. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewportToolbar.d.ts +18 -0
  167. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/ResourceWallViewportToolbar.js +175 -0
  168. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.d.ts +6 -4
  169. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/VenueWallCard.js +61 -88
  170. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/resourceWallConstants.d.ts +2 -0
  171. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/resourceWallConstants.js +29 -0
  172. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.d.ts +42 -0
  173. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallCardPresentation.js +139 -0
  174. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.d.ts +26 -0
  175. package/lib/components/pisellRecordBoard/shellFrame/ResourceWall/venueWallUtils.js +31 -3
  176. package/lib/components/pisellRecordBoard/shellFrame/ToolBar/index.js +50 -5
  177. package/lib/components/pisellRecordBoard/shellFrame/index.js +29 -13
  178. package/lib/components/pisellRecordBoard/types.d.ts +97 -4
  179. package/lib/components/pisellReservationScheduleBand/PisellReservationScheduleBand.less +34 -2
  180. package/lib/components/pisellShellFrame/PisellShellFrame.less +5 -2
  181. package/lib/components/table/Table/SelectField/index.d.ts +0 -1
  182. package/lib/components/table/Table/tableConfig/summary/index.d.ts +0 -1
  183. package/lib/hooks/useResponsive.d.ts +1 -1
  184. package/lib/index.d.ts +1 -1
  185. package/lib/locales/en-US.d.ts +74 -0
  186. package/lib/locales/en-US.js +76 -1
  187. package/lib/locales/ja.d.ts +74 -0
  188. package/lib/locales/ja.js +75 -0
  189. package/lib/locales/pt.d.ts +74 -0
  190. package/lib/locales/pt.js +75 -0
  191. package/lib/locales/zh-CN.d.ts +74 -0
  192. package/lib/locales/zh-CN.js +76 -1
  193. package/lib/locales/zh-TW.d.ts +74 -0
  194. package/lib/locales/zh-TW.js +76 -1
  195. package/lib/pisell-materials.tw.css +1 -1
  196. package/package.json +3 -4
  197. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.d.ts +0 -3
  198. package/es/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.js +0 -6233
  199. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.d.ts +0 -3
  200. package/lib/components/pisellRecordBoard/shellFrame/Calendar/BookingCalendarDemo.js +0 -7079
@@ -0,0 +1,666 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/components/pisellRecordBoard/shellFrame/Calendar/utils/bookingCalendarDateUtils.ts
30
+ var bookingCalendarDateUtils_exports = {};
31
+ __export(bookingCalendarDateUtils_exports, {
32
+ addDays: () => addDays,
33
+ assignDayOverlapLanesInPlace: () => assignDayOverlapLanesInPlace,
34
+ buildDayRowTopMap: () => buildDayRowTopMap,
35
+ buildOverlayBookings: () => buildOverlayBookings,
36
+ buildTimeOptions: () => buildTimeOptions,
37
+ clusterDayCourtOverlaysByOverlap: () => clusterDayCourtOverlaysByOverlap,
38
+ courtDaySummary: () => courtDaySummary,
39
+ currentTimeLabel: () => currentTimeLabel,
40
+ dayAndHourToDayjs: () => dayAndHourToDayjs,
41
+ dayOccupancy: () => dayOccupancy,
42
+ dayOverlayHiddenKey: () => dayOverlayHiddenKey,
43
+ dayOverlayLaneMetrics: () => dayOverlayLaneMetrics,
44
+ effectiveDayOverlayDisplayLaneCount: () => effectiveDayOverlayDisplayLaneCount,
45
+ fmtDate: () => fmtDate,
46
+ formatDateLoose: () => formatDateLoose,
47
+ formatHourLabel: () => formatHourLabel,
48
+ formatTimelineStamp: () => formatTimelineStamp,
49
+ getBookingDetailData: () => getBookingDetailData,
50
+ getBookingSegmentForDate: () => getBookingSegmentForDate,
51
+ getDisplayStatusTag: () => getDisplayStatusTag,
52
+ getLateMinutes: () => getLateMinutes,
53
+ getViewNowReference: () => getViewNowReference,
54
+ groupSelectedSlots: () => groupSelectedSlots,
55
+ hasConflict: () => hasConflict,
56
+ isFreeSelectionContiguousSameResource: () => isFreeSelectionContiguousSameResource,
57
+ isHourInTimelineSlots: () => isHourInTimelineSlots,
58
+ maxConcurrentBookingsOnCourt: () => maxConcurrentBookingsOnCourt,
59
+ monthGrid: () => monthGrid,
60
+ overlappingBookings: () => overlappingBookings,
61
+ parseDate: () => parseDate,
62
+ rangeDays: () => rangeDays,
63
+ sameSlot: () => sameSlot,
64
+ startOfWeek: () => startOfWeek,
65
+ statusTagMetaParts: () => statusTagMetaParts
66
+ });
67
+ module.exports = __toCommonJS(bookingCalendarDateUtils_exports);
68
+ var import_dayjs = __toESM(require("dayjs"));
69
+ var import_utils = require("../../../../pisellTimeNavigator/utils");
70
+ var import_calendarI18n = require("../calendarI18n");
71
+ var import_bookingCalendarConstants = require("../const/bookingCalendarConstants");
72
+ function fmtDate(date) {
73
+ const y = date.getFullYear();
74
+ const m = `${date.getMonth() + 1}`.padStart(2, "0");
75
+ const d = `${date.getDate()}`.padStart(2, "0");
76
+ return `${y}-${m}-${d}`;
77
+ }
78
+ function getViewNowReference() {
79
+ const d = /* @__PURE__ */ new Date();
80
+ return {
81
+ dateKey: fmtDate(d),
82
+ hourFloat: d.getHours() + d.getMinutes() / 60 + d.getSeconds() / 3600
83
+ };
84
+ }
85
+ function parseDate(str) {
86
+ const [y, m, d] = str.split("-").map(Number);
87
+ return new Date(y, m - 1, d);
88
+ }
89
+ function addDays(date, n) {
90
+ const next = new Date(date);
91
+ next.setDate(next.getDate() + n);
92
+ return next;
93
+ }
94
+ function startOfWeek(date) {
95
+ const d = new Date(date);
96
+ const day = d.getDay();
97
+ const diff = day === 0 ? -6 : 1 - day;
98
+ d.setDate(d.getDate() + diff);
99
+ d.setHours(0, 0, 0, 0);
100
+ return d;
101
+ }
102
+ function rangeDays(anchor) {
103
+ const start = startOfWeek(anchor);
104
+ return Array.from({ length: 7 }, (_, i) => addDays(start, i));
105
+ }
106
+ function isHourInTimelineSlots(hour, hourSlots) {
107
+ if (!(hourSlots == null ? void 0 : hourSlots.length)) return false;
108
+ return hourSlots.some((x) => Math.abs(x - hour) < 1e-6);
109
+ }
110
+ function formatHourLabel(hour) {
111
+ const totalMin = Math.round(hour * 60);
112
+ const h = Math.floor(totalMin / 60);
113
+ const m = totalMin % 60;
114
+ const clockH = (h % 24 + 24) % 24;
115
+ return `${String(clockH).padStart(2, "0")}:${String(m).padStart(2, "0")}`;
116
+ }
117
+ function buildTimeOptions(start = 8, end = 20, sliceMinutes = import_bookingCalendarConstants.timeSliceMinutes) {
118
+ const out = [];
119
+ for (let m = start * 60; m <= end * 60; m += sliceMinutes) out.push(m / 60);
120
+ return out;
121
+ }
122
+ function monthGrid(date, bookings, courtsList = [], hourSlotsIn, slotStepHours = 1) {
123
+ const hourSlots = hourSlotsIn && hourSlotsIn.length ? hourSlotsIn : (0, import_utils.buildCalendarTimelineSlotStartsFromRange)(
124
+ import_bookingCalendarConstants.DEFAULT_CALENDAR_TIMELINE,
125
+ date,
126
+ 60
127
+ );
128
+ const year = date.getFullYear();
129
+ const month = date.getMonth();
130
+ const first = new Date(year, month, 1);
131
+ const start = startOfWeek(first);
132
+ const days = Array.from({ length: 35 }, (_, i) => addDays(start, i));
133
+ return days.map((day) => {
134
+ const key = fmtDate(day);
135
+ const dayBookings = bookings.filter(
136
+ (b) => b.date === key && b.kind === "booking"
137
+ );
138
+ const blocks = bookings.filter((b) => b.date === key && b.kind === "block");
139
+ const fullyBookedCourts = courtsList.filter((court) => {
140
+ const items = bookings.filter(
141
+ (b) => b.courtId === court.id && b.date === key
142
+ );
143
+ const occupied = /* @__PURE__ */ new Set();
144
+ items.forEach((b) => {
145
+ (hourSlots || []).forEach((slotStart) => {
146
+ const seg = getBookingSegmentForDate(b, key);
147
+ if (seg && seg.startHour < slotStart + slotStepHours && seg.endHour > slotStart) {
148
+ occupied.add(slotStart);
149
+ }
150
+ });
151
+ });
152
+ const slotCount = (hourSlots == null ? void 0 : hourSlots.length) ?? 14;
153
+ return occupied.size >= slotCount;
154
+ }).length;
155
+ return {
156
+ date: day,
157
+ key,
158
+ inMonth: day.getMonth() === month,
159
+ bookingCount: dayBookings.length,
160
+ blockCount: blocks.length,
161
+ fullyBooked: fullyBookedCourts >= courtsList.length
162
+ };
163
+ });
164
+ }
165
+ function getBookingSegmentForDate(item, dateKey) {
166
+ if (!item.endDate || item.endDate === item.date) {
167
+ if (item.date !== dateKey) return null;
168
+ return {
169
+ startHour: item.startHour,
170
+ endHour: item.endHour,
171
+ continuesPrev: false,
172
+ continuesNext: false
173
+ };
174
+ }
175
+ if (dateKey < item.date || dateKey > item.endDate) return null;
176
+ if (dateKey === item.date)
177
+ return {
178
+ startHour: item.startHour,
179
+ endHour: 24,
180
+ continuesPrev: false,
181
+ continuesNext: true
182
+ };
183
+ if (dateKey === item.endDate)
184
+ return {
185
+ startHour: 0,
186
+ endHour: item.endHour,
187
+ continuesPrev: true,
188
+ continuesNext: false
189
+ };
190
+ return {
191
+ startHour: 0,
192
+ endHour: 24,
193
+ continuesPrev: true,
194
+ continuesNext: true
195
+ };
196
+ }
197
+ function dayOccupancy(courtId, dateKey, bookings, hourSlots, slotStepHours) {
198
+ const items = bookings.filter(
199
+ (b) => b.courtId === courtId && getBookingSegmentForDate(b, dateKey)
200
+ );
201
+ const map = {};
202
+ const stepH = slotStepHours > 0 ? slotStepHours : 1;
203
+ (hourSlots || []).forEach((hour) => {
204
+ map[hour] = items.find((b) => {
205
+ const seg = getBookingSegmentForDate(b, dateKey);
206
+ return seg && seg.startHour < hour + stepH && seg.endHour > hour;
207
+ }) || null;
208
+ });
209
+ return map;
210
+ }
211
+ function groupSelectedSlots(slots, slotStepHours = 1) {
212
+ const stepH = slotStepHours > 0 ? slotStepHours : 1;
213
+ const sorted = [...slots].sort((a, b) => {
214
+ if (a.date !== b.date) return a.date.localeCompare(b.date);
215
+ if (a.courtId !== b.courtId) return a.courtId.localeCompare(b.courtId);
216
+ return a.hour - b.hour;
217
+ });
218
+ const groups = [];
219
+ sorted.forEach((slot) => {
220
+ const prev = groups[groups.length - 1];
221
+ if (prev && prev.courtId === slot.courtId && prev.date === slot.date && Math.abs(prev.endHour - slot.hour) < 1e-6)
222
+ prev.endHour = slot.hour + stepH;
223
+ else
224
+ groups.push({
225
+ courtId: slot.courtId,
226
+ date: slot.date,
227
+ startHour: slot.hour,
228
+ endHour: slot.hour + stepH
229
+ });
230
+ });
231
+ return groups;
232
+ }
233
+ function isFreeSelectionContiguousSameResource(slots, slotStepHours = 1) {
234
+ if (!Array.isArray(slots) || slots.length === 0) return false;
235
+ return groupSelectedSlots(slots, slotStepHours).length === 1;
236
+ }
237
+ function hasConflict(bookings, courtId, date, startHour, endHour, ignoreId = null) {
238
+ return bookings.some((b) => {
239
+ if (b.id === ignoreId) return false;
240
+ if (b.kind !== "booking") return false;
241
+ if (b.courtId !== courtId || b.date !== date) return false;
242
+ return !(endHour <= b.startHour || startHour >= b.endHour);
243
+ });
244
+ }
245
+ function overlappingBookings(bookings, courtId, date, startHour, endHour) {
246
+ return bookings.filter((b) => {
247
+ if (b.kind !== "booking") return false;
248
+ if (b.courtId !== courtId || b.date !== date) return false;
249
+ return !(endHour <= b.startHour || startHour >= b.endHour);
250
+ });
251
+ }
252
+ function courtDaySummary(courtId, dateKey, bookings, hourSlots, slotStepHours) {
253
+ const occ = dayOccupancy(
254
+ courtId,
255
+ dateKey,
256
+ bookings,
257
+ hourSlots,
258
+ slotStepHours
259
+ );
260
+ const items = bookings.filter((b) => b.courtId === courtId && b.date === dateKey).sort((a, b) => a.startHour - b.startHour);
261
+ const occupiedHours = (hourSlots || []).filter(
262
+ (h) => occ[h] && isHourInTimelineSlots(h, hourSlots)
263
+ );
264
+ const hasBlock = occupiedHours.some((h) => {
265
+ var _a;
266
+ return ((_a = occ[h]) == null ? void 0 : _a.kind) === "block";
267
+ });
268
+ const slotCount = (hourSlots == null ? void 0 : hourSlots.length) ?? 0;
269
+ const fullyBooked = slotCount > 0 && occupiedHours.length >= slotCount;
270
+ return { occupiedHours, hasBlock, fullyBooked, items };
271
+ }
272
+ function sameSlot(a, b) {
273
+ return a.courtId === b.courtId && a.date === b.date && a.hour === b.hour;
274
+ }
275
+ function dayAndHourToDayjs(dateStr, hourFloat) {
276
+ const h = Math.floor(hourFloat);
277
+ const m = Math.round((hourFloat - h) * 60);
278
+ const mm = Math.min(59, Math.max(0, m));
279
+ return (0, import_dayjs.default)(
280
+ `${dateStr} ${String(h).padStart(2, "0")}:${String(mm).padStart(2, "0")}`,
281
+ "YYYY-MM-DD HH:mm"
282
+ );
283
+ }
284
+ function getDisplayStatusTag(item, dateKey) {
285
+ if (item.kind !== "booking") return item.statusTag || null;
286
+ if (item.statusTag === "checked_in" || item.statusTag === "cancel")
287
+ return item.statusTag;
288
+ const { dateKey: todayKey, hourFloat: nowHour } = getViewNowReference();
289
+ if (dateKey !== todayKey) return item.statusTag || null;
290
+ const seg = getBookingSegmentForDate(item, dateKey);
291
+ if (!seg) return item.statusTag || null;
292
+ const lateThreshold = item.startHour + 5 / 60;
293
+ if (nowHour > seg.endHour) return "no_show";
294
+ if (nowHour > lateThreshold) return "late";
295
+ return item.statusTag || null;
296
+ }
297
+ function getLateMinutes(item, dateKey) {
298
+ if (getDisplayStatusTag(item, dateKey) !== "late") return null;
299
+ const seg = getBookingSegmentForDate(item, dateKey);
300
+ if (!seg) return null;
301
+ const lateThreshold = seg.startHour + 5 / 60;
302
+ const { hourFloat: nowHour } = getViewNowReference();
303
+ return Math.max(1, Math.floor((nowHour - lateThreshold) * 60));
304
+ }
305
+ function currentTimeLabel() {
306
+ const d = /* @__PURE__ */ new Date();
307
+ return `${String(d.getHours()).padStart(2, "0")}:${String(
308
+ d.getMinutes()
309
+ ).padStart(2, "0")}`;
310
+ }
311
+ function formatDateLoose(str) {
312
+ if (!str) return "";
313
+ const d = parseDate(str);
314
+ return `${d.getFullYear()} ${String(d.getMonth() + 1).padStart(
315
+ 2,
316
+ "0"
317
+ )} ${String(d.getDate()).padStart(2, "0")}`;
318
+ }
319
+ function formatTimelineStamp(value) {
320
+ if (!value) return { date: "--", time: "--" };
321
+ const normalized = String(value).replace("T", " ");
322
+ const [date = "--", time = "--"] = normalized.split(" ");
323
+ return { date, time: time.slice(0, 5) || "--" };
324
+ }
325
+ function assignDayOverlapLanesInPlace(overlays) {
326
+ const byCourt = /* @__PURE__ */ new Map();
327
+ for (const o of overlays) {
328
+ const list = byCourt.get(o.courtId);
329
+ if (list) list.push(o);
330
+ else byCourt.set(o.courtId, [o]);
331
+ }
332
+ for (const list of Array.from(byCourt.values())) {
333
+ list.sort((a, b) => {
334
+ if (a.start !== b.start) return a.start - b.start;
335
+ return b.span - a.span;
336
+ });
337
+ const laneEnds = [];
338
+ for (const o of list) {
339
+ const oEnd = o.start + o.span;
340
+ let lane = 0;
341
+ while (lane < laneEnds.length && laneEnds[lane] > o.start) {
342
+ lane++;
343
+ }
344
+ if (lane === laneEnds.length) {
345
+ laneEnds.push(oEnd);
346
+ } else {
347
+ laneEnds[lane] = oEnd;
348
+ }
349
+ o.lane = lane;
350
+ }
351
+ let maxL = 0;
352
+ for (const o of list) {
353
+ maxL = Math.max(maxL, o.lane ?? 0);
354
+ }
355
+ const laneCount = Math.max(1, maxL + 1);
356
+ for (const o of list) {
357
+ o.laneCount = laneCount;
358
+ }
359
+ }
360
+ }
361
+ function maxConcurrentBookingsOnCourt(overlays, courtId) {
362
+ const ev = [];
363
+ for (const o of overlays) {
364
+ if (o.courtId !== courtId) continue;
365
+ ev.push({ t: o.start, d: 1 });
366
+ ev.push({ t: o.start + o.span, d: -1 });
367
+ }
368
+ ev.sort((a, b) => {
369
+ if (a.t !== b.t) return a.t - b.t;
370
+ return b.d - a.d;
371
+ });
372
+ let c = 0;
373
+ let m = 0;
374
+ for (const e of ev) {
375
+ c += e.d;
376
+ m = Math.max(m, c);
377
+ }
378
+ return Math.max(1, m);
379
+ }
380
+ function effectiveDayOverlayDisplayLaneCount(rawConcurrent) {
381
+ if (rawConcurrent <= import_bookingCalendarConstants.DAY_OVERLAY_VISIBLE_BOOKING_CAP)
382
+ return Math.max(1, rawConcurrent);
383
+ return import_bookingCalendarConstants.DAY_OVERLAY_VISIBLE_BOOKING_CAP + 1;
384
+ }
385
+ function clusterDayCourtOverlaysByOverlap(overlays, courtId) {
386
+ const list = overlays.filter((o) => o.courtId === courtId);
387
+ if (!list.length) return [];
388
+ const sorted = [...list].sort((a, b) => {
389
+ if (a.start !== b.start) return a.start - b.start;
390
+ return a.start + a.span - (b.start + b.span);
391
+ });
392
+ const clusters = [];
393
+ let cur = [];
394
+ let curMaxEnd = -Infinity;
395
+ for (const o of sorted) {
396
+ const oe = o.start + o.span;
397
+ if (!cur.length) {
398
+ cur = [o];
399
+ curMaxEnd = oe;
400
+ continue;
401
+ }
402
+ if (o.start < curMaxEnd - 1e-9) {
403
+ cur.push(o);
404
+ curMaxEnd = Math.max(curMaxEnd, oe);
405
+ } else {
406
+ clusters.push(cur);
407
+ cur = [o];
408
+ curMaxEnd = oe;
409
+ }
410
+ }
411
+ if (cur.length) clusters.push(cur);
412
+ return clusters;
413
+ }
414
+ function dayOverlayHiddenKey(item, dayKey, courtId) {
415
+ const id = (item == null ? void 0 : item.id) != null ? String(item.id) : "";
416
+ return `${String(courtId)}\0${id}\0${dayKey}`;
417
+ }
418
+ function dayOverlayLaneMetrics(totalInner, laneCount, gap) {
419
+ const n = Math.max(1, laneCount);
420
+ if (n === 1) {
421
+ return {
422
+ topFor: () => 0,
423
+ heightFor: () => totalInner
424
+ };
425
+ }
426
+ const gapsTotal = (n - 1) * gap;
427
+ const body = Math.max(0, totalInner - gapsTotal);
428
+ const base = Math.floor(body / n);
429
+ const rem = body % n;
430
+ const heights = [];
431
+ for (let i = 0; i < n; i += 1) {
432
+ heights.push(base + (i < rem ? 1 : 0));
433
+ }
434
+ const offsets = [0];
435
+ for (let i = 1; i < n; i += 1) {
436
+ offsets.push(offsets[i - 1] + heights[i - 1] + gap);
437
+ }
438
+ return {
439
+ topFor: (lane) => offsets[Math.min(lane, n - 1)] ?? 0,
440
+ heightFor: (lane) => heights[Math.min(lane, n - 1)] ?? base
441
+ };
442
+ }
443
+ function buildOverlayBookings(visibleCourtRows, dayKey, bookings, rowTopMap = {}, hourSlots, dayRowHeights, slotStepHours = 1) {
444
+ const courtRowIndexMap = /* @__PURE__ */ new Map();
445
+ visibleCourtRows.forEach((row, index) => {
446
+ if (row.kind === "court") courtRowIndexMap.set(row.id, index);
447
+ });
448
+ const stepH = slotStepHours > 0 ? slotStepHours : 1;
449
+ const gridMin = (hourSlots == null ? void 0 : hourSlots.length) ? hourSlots[0] : 0;
450
+ const gridMaxExclusive = (hourSlots == null ? void 0 : hourSlots.length) ? hourSlots[hourSlots.length - 1] + stepH : 24;
451
+ const seen = /* @__PURE__ */ new Set();
452
+ const out = [];
453
+ for (let i = 0; i < visibleCourtRows.length; i++) {
454
+ const row = visibleCourtRows[i];
455
+ if (row.kind !== "court") continue;
456
+ const rowHeight = dayRowHeights[i] ?? import_bookingCalendarConstants.dayRowHeight;
457
+ for (const item of bookings.filter((b) => b.courtId === row.id)) {
458
+ const dedupeKey = `${row.id}\0${item.id ?? ""}\0${dayKey}`;
459
+ if (seen.has(dedupeKey)) continue;
460
+ const seg = getBookingSegmentForDate(item, dayKey);
461
+ if (!seg) continue;
462
+ const start = Math.max(seg.startHour, gridMin);
463
+ const end = Math.min(seg.endHour, gridMaxExclusive);
464
+ if (end <= start) continue;
465
+ seen.add(dedupeKey);
466
+ out.push({
467
+ item,
468
+ rowIndex: courtRowIndexMap.get(row.id) || 0,
469
+ rowTop: rowTopMap[row.id] || 0,
470
+ rowHeight,
471
+ courtId: row.id,
472
+ start,
473
+ end,
474
+ span: end - start,
475
+ continuesNext: seg.continuesNext,
476
+ continuesPrev: seg.continuesPrev
477
+ });
478
+ }
479
+ }
480
+ assignDayOverlapLanesInPlace(out);
481
+ return out;
482
+ }
483
+ function buildDayRowTopMap(visibleCourtRows, heights) {
484
+ let acc = 0;
485
+ const map = {};
486
+ visibleCourtRows.forEach((row, index) => {
487
+ map[row.id] = acc;
488
+ acc += heights[index] ?? import_bookingCalendarConstants.dayRowHeight;
489
+ });
490
+ return map;
491
+ }
492
+ function statusTagMetaParts(tag) {
493
+ switch (tag) {
494
+ case "cancel":
495
+ return {
496
+ labelI18nKey: "pisell2.recordBoard.calendar.status.cancel",
497
+ className: "bg-red-600/88 text-white border border-red-300/35"
498
+ };
499
+ case "change":
500
+ return {
501
+ labelI18nKey: "pisell2.recordBoard.calendar.status.change",
502
+ className: "bg-amber-500/88 text-white border border-amber-200/35"
503
+ };
504
+ case "checked_in":
505
+ return {
506
+ labelI18nKey: "pisell2.recordBoard.calendar.status.checkedIn",
507
+ className: "bg-zinc-500/88 text-white border border-zinc-300/30"
508
+ };
509
+ case "pending":
510
+ return {
511
+ labelI18nKey: "pisell2.recordBoard.calendar.status.pending",
512
+ className: "bg-cyan-600/88 text-white border border-cyan-300/35"
513
+ };
514
+ case "new":
515
+ return {
516
+ labelI18nKey: "pisell2.recordBoard.calendar.status.new",
517
+ className: "bg-emerald-600/88 text-white border border-emerald-300/35"
518
+ };
519
+ case "late":
520
+ return {
521
+ labelI18nKey: "pisell2.recordBoard.calendar.status.late",
522
+ className: "bg-amber-500/88 text-white border border-amber-200/35"
523
+ };
524
+ case "no_show":
525
+ return {
526
+ labelI18nKey: "pisell2.recordBoard.calendar.status.noShow",
527
+ className: "bg-red-700/92 text-white border border-red-300/35"
528
+ };
529
+ default:
530
+ return null;
531
+ }
532
+ }
533
+ function getBookingDetailData(item, courtsList = []) {
534
+ const court = courtsList.find((c) => c.id === item.courtId);
535
+ const resourceLabel = (court == null ? void 0 : court.name) != null && String(court.name).trim() !== "" ? String(court.name) : String(item.courtId ?? "—");
536
+ const startTime = formatHourLabel(item.startHour);
537
+ const endTime = formatHourLabel(item.endHour);
538
+ const endDate = item.endDate || item.date;
539
+ const isBlock = item.kind === "block";
540
+ const customerName = isBlock ? item.blockBy || (0, import_calendarI18n.tCal)("pisell2.recordBoard.calendar.detail.staff") : item.name || "—";
541
+ const noteText = item.note ? String(item.note) : "";
542
+ const orderNotes = noteText ? [
543
+ {
544
+ id: `${item.id}-note-order`,
545
+ label: (0, import_calendarI18n.tCal)("pisell2.recordBoard.calendar.detail.orderNote"),
546
+ text: noteText
547
+ }
548
+ ] : [];
549
+ return {
550
+ rawSales: null,
551
+ bookingId: String(item.id ?? "").toUpperCase(),
552
+ orderNumber: String(item.id ?? ""),
553
+ shopOrderNumber: String(item.id ?? ""),
554
+ orderStatus: "normal",
555
+ appointmentStatus: isBlock ? "blocked" : "confirmed",
556
+ paymentStatus: "payment_processing",
557
+ customer: {
558
+ id: null,
559
+ name: customerName,
560
+ email: "",
561
+ phone: item.phone ? String(item.phone) : ""
562
+ },
563
+ guestCount: 0,
564
+ checkedInCount: 0,
565
+ guests: [],
566
+ schedule: {
567
+ startDate: item.date,
568
+ startTime,
569
+ endDate,
570
+ endTime,
571
+ duration: Math.max(0, (item.endHour - item.startHour) * 60),
572
+ arrivedAt: null,
573
+ completedAt: null
574
+ },
575
+ resources: [],
576
+ summaryItems: [],
577
+ items: [],
578
+ note: noteText,
579
+ files: { form: [], uploaded: [], invoice: [] },
580
+ payments: [],
581
+ history: [],
582
+ summary: {},
583
+ paymentSummary: {
584
+ totalAmount: 0,
585
+ paidAmount: 0,
586
+ balanceAmount: 0,
587
+ currencySymbol: "$",
588
+ isFullyPaid: false
589
+ },
590
+ itemSummary: {
591
+ itemCount: 0,
592
+ itemQtyTotal: 0
593
+ },
594
+ headerSummary: {
595
+ customerName,
596
+ guestCount: 0,
597
+ checkedInCount: 0,
598
+ timeLabel: `${item.date} · ${startTime} - ${endTime}`,
599
+ resourceLabel
600
+ },
601
+ headerTags: {
602
+ paymentTag: "Unpaid",
603
+ fulfillmentTag: "Open",
604
+ hasNote: Boolean(noteText),
605
+ paymentStatus: "payment_processing",
606
+ orderStatus: "normal"
607
+ },
608
+ fileCount: 0,
609
+ canChangeCustomer: !isBlock,
610
+ noteCount: orderNotes.length,
611
+ noteGroups: {
612
+ internal: [],
613
+ order: orderNotes,
614
+ item: []
615
+ },
616
+ metaFlags: {
617
+ itemsChanged: false,
618
+ paymentsChanged: false,
619
+ guestChanged: false,
620
+ filesChanged: false,
621
+ notesChanged: false,
622
+ formChanged: false,
623
+ uploadedChanged: false,
624
+ invoiceChanged: false,
625
+ historyChanged: false
626
+ },
627
+ actions: []
628
+ };
629
+ }
630
+ // Annotate the CommonJS export names for ESM import in node:
631
+ 0 && (module.exports = {
632
+ addDays,
633
+ assignDayOverlapLanesInPlace,
634
+ buildDayRowTopMap,
635
+ buildOverlayBookings,
636
+ buildTimeOptions,
637
+ clusterDayCourtOverlaysByOverlap,
638
+ courtDaySummary,
639
+ currentTimeLabel,
640
+ dayAndHourToDayjs,
641
+ dayOccupancy,
642
+ dayOverlayHiddenKey,
643
+ dayOverlayLaneMetrics,
644
+ effectiveDayOverlayDisplayLaneCount,
645
+ fmtDate,
646
+ formatDateLoose,
647
+ formatHourLabel,
648
+ formatTimelineStamp,
649
+ getBookingDetailData,
650
+ getBookingSegmentForDate,
651
+ getDisplayStatusTag,
652
+ getLateMinutes,
653
+ getViewNowReference,
654
+ groupSelectedSlots,
655
+ hasConflict,
656
+ isFreeSelectionContiguousSameResource,
657
+ isHourInTimelineSlots,
658
+ maxConcurrentBookingsOnCourt,
659
+ monthGrid,
660
+ overlappingBookings,
661
+ parseDate,
662
+ rangeDays,
663
+ sameSlot,
664
+ startOfWeek,
665
+ statusTagMetaParts
666
+ });
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import { type SelectedSlotLike } from '../utils/bookingCalendarDateUtils';
3
+ export declare type BookingCalendarDaySelectionBarProps = {
4
+ slotStepHours: number;
5
+ selectedFreeSlots: SelectedSlotLike[];
6
+ selectedBlockSlots: SelectedSlotLike[];
7
+ deselectAll: () => void;
8
+ openSelectedBlocks: () => void;
9
+ onOpenBlockPanel: () => void;
10
+ createBookingFromSelection: () => void;
11
+ };
12
+ /** 日视图底部:多选空闲 / 锁台后的固定操作条 */
13
+ export declare function BookingCalendarDaySelectionBar({ slotStepHours, selectedFreeSlots, selectedBlockSlots, deselectAll, openSelectedBlocks, onOpenBlockPanel, createBookingFromSelection, }: BookingCalendarDaySelectionBarProps): JSX.Element | null;