@arbidocs/blocks 0.4.128 → 0.4.130

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 (236) hide show
  1. package/README.md +25 -10
  2. package/dist/{StreamedArtifactEditor-EEYAXJ4H.cjs → StreamedArtifactEditor-TQAND4H5.cjs} +6 -5
  3. package/dist/StreamedArtifactEditor-TQAND4H5.cjs.map +1 -0
  4. package/dist/{StreamedArtifactEditor-TDATDYD2.js → StreamedArtifactEditor-XQNANTWM.js} +4 -3
  5. package/dist/StreamedArtifactEditor-XQNANTWM.js.map +1 -0
  6. package/dist/agents/index.cjs +304 -304
  7. package/dist/agents/index.js +12 -12
  8. package/dist/artifacts/ArtifactCodeView.d.ts +6 -0
  9. package/dist/artifacts/ArtifactPreview.d.ts +22 -0
  10. package/dist/artifacts/index.cjs +50 -21
  11. package/dist/artifacts/index.d.ts +3 -0
  12. package/dist/artifacts/index.js +2 -1
  13. package/dist/artifacts/sandbox-policy.d.ts +34 -0
  14. package/dist/artifacts/sandboxDocument.d.ts +7 -0
  15. package/dist/calendar/CalendarPrint.d.ts +25 -0
  16. package/dist/calendar/booking-slots.d.ts +21 -0
  17. package/dist/calendar/index.cjs +440 -243
  18. package/dist/calendar/index.cjs.map +1 -1
  19. package/dist/calendar/index.d.ts +4 -0
  20. package/dist/calendar/index.js +282 -151
  21. package/dist/calendar/index.js.map +1 -1
  22. package/dist/calendar/print-layout.d.ts +16 -0
  23. package/dist/calendar/printCalendar.d.ts +6 -0
  24. package/dist/calls/composite-canvas.d.ts +52 -0
  25. package/dist/calls/index.cjs +376 -3
  26. package/dist/calls/index.cjs.map +1 -1
  27. package/dist/calls/index.d.ts +3 -0
  28. package/dist/calls/index.js +360 -5
  29. package/dist/calls/index.js.map +1 -1
  30. package/dist/calls/ringtone.d.ts +16 -0
  31. package/dist/calls/voice-levels.d.ts +32 -0
  32. package/dist/chat/ThreadVisualizer.d.ts +28 -0
  33. package/dist/chat/index.cjs +156 -140
  34. package/dist/chat/index.d.ts +2 -0
  35. package/dist/chat/index.js +5 -5
  36. package/dist/chat/open-document.d.ts +5 -1
  37. package/dist/chat/thread-diagram.d.ts +26 -0
  38. package/dist/{chunk-7HAM7Y5U.js → chunk-2DFDFOM7.js} +3 -3
  39. package/dist/{chunk-7HAM7Y5U.js.map → chunk-2DFDFOM7.js.map} +1 -1
  40. package/dist/{chunk-54ANPPMV.js → chunk-2PNNCEPH.js} +4 -4
  41. package/dist/{chunk-54ANPPMV.js.map → chunk-2PNNCEPH.js.map} +1 -1
  42. package/dist/{chunk-DQCYCEDR.js → chunk-2Q7FDZAY.js} +3 -3
  43. package/dist/{chunk-DQCYCEDR.js.map → chunk-2Q7FDZAY.js.map} +1 -1
  44. package/dist/{chunk-INW76PEL.cjs → chunk-2YV7FBLO.cjs} +175 -2
  45. package/dist/chunk-2YV7FBLO.cjs.map +1 -0
  46. package/dist/{chunk-S7PSMMRG.js → chunk-444XKG46.js} +3 -3
  47. package/dist/{chunk-S7PSMMRG.js.map → chunk-444XKG46.js.map} +1 -1
  48. package/dist/{chunk-FSBY2S4V.cjs → chunk-4QIIDXLF.cjs} +10 -10
  49. package/dist/{chunk-FSBY2S4V.cjs.map → chunk-4QIIDXLF.cjs.map} +1 -1
  50. package/dist/{chunk-OYMWV45N.js → chunk-4RLCRFZS.js} +63 -13
  51. package/dist/chunk-4RLCRFZS.js.map +1 -0
  52. package/dist/{chunk-NZUQFF35.cjs → chunk-4S5IDT5F.cjs} +234 -5
  53. package/dist/chunk-4S5IDT5F.cjs.map +1 -0
  54. package/dist/{chunk-CJBN5HIS.js → chunk-4UMXQPNA.js} +20 -8
  55. package/dist/chunk-4UMXQPNA.js.map +1 -0
  56. package/dist/{chunk-KELGOCJA.js → chunk-65S53MZK.js} +174 -5
  57. package/dist/chunk-65S53MZK.js.map +1 -0
  58. package/dist/{chunk-IBZJYCYM.js → chunk-66TA5IBN.js} +17 -25
  59. package/dist/chunk-66TA5IBN.js.map +1 -0
  60. package/dist/{chunk-HM23LXUP.cjs → chunk-6AALMYPS.cjs} +3 -3
  61. package/dist/{chunk-HM23LXUP.cjs.map → chunk-6AALMYPS.cjs.map} +1 -1
  62. package/dist/{chunk-OR4CO743.cjs → chunk-AAFX64WD.cjs} +3 -3
  63. package/dist/{chunk-OR4CO743.cjs.map → chunk-AAFX64WD.cjs.map} +1 -1
  64. package/dist/{chunk-MUMH3Z6K.cjs → chunk-ARDHLU73.cjs} +61 -11
  65. package/dist/chunk-ARDHLU73.cjs.map +1 -0
  66. package/dist/chunk-BIXHB4LV.cjs +178 -0
  67. package/dist/chunk-BIXHB4LV.cjs.map +1 -0
  68. package/dist/chunk-C4WSHRR6.cjs +166 -0
  69. package/dist/chunk-C4WSHRR6.cjs.map +1 -0
  70. package/dist/{chunk-ZAVEMQ37.cjs → chunk-DWZXSPMB.cjs} +3 -3
  71. package/dist/{chunk-ZAVEMQ37.cjs.map → chunk-DWZXSPMB.cjs.map} +1 -1
  72. package/dist/{chunk-VW2C2AZL.js → chunk-ENDP7JER.js} +3 -3
  73. package/dist/{chunk-VW2C2AZL.js.map → chunk-ENDP7JER.js.map} +1 -1
  74. package/dist/{chunk-5HFPRI3W.js → chunk-FUTMU4FR.js} +3 -3
  75. package/dist/{chunk-5HFPRI3W.js.map → chunk-FUTMU4FR.js.map} +1 -1
  76. package/dist/{chunk-P5ST47VY.js → chunk-GDBDHOI4.js} +3 -3
  77. package/dist/{chunk-P5ST47VY.js.map → chunk-GDBDHOI4.js.map} +1 -1
  78. package/dist/chunk-GTCC2VAR.js +153 -0
  79. package/dist/chunk-GTCC2VAR.js.map +1 -0
  80. package/dist/{chunk-3BJLNKOB.cjs → chunk-GZPTWHP5.cjs} +22 -10
  81. package/dist/chunk-GZPTWHP5.cjs.map +1 -0
  82. package/dist/{chunk-OUW6G4O2.cjs → chunk-HFGXA5CL.cjs} +4 -4
  83. package/dist/{chunk-OUW6G4O2.cjs.map → chunk-HFGXA5CL.cjs.map} +1 -1
  84. package/dist/{chunk-SWQX6CTT.cjs → chunk-JKB7WT7L.cjs} +2 -2
  85. package/dist/chunk-JKB7WT7L.cjs.map +1 -0
  86. package/dist/{chunk-D4YR56FV.cjs → chunk-KYDRUFWT.cjs} +5 -5
  87. package/dist/{chunk-D4YR56FV.cjs.map → chunk-KYDRUFWT.cjs.map} +1 -1
  88. package/dist/chunk-NS4JD2VR.js +22 -0
  89. package/dist/chunk-NS4JD2VR.js.map +1 -0
  90. package/dist/{chunk-S6BOINC4.cjs → chunk-OGBXV326.cjs} +7 -7
  91. package/dist/{chunk-S6BOINC4.cjs.map → chunk-OGBXV326.cjs.map} +1 -1
  92. package/dist/{chunk-DJM7DLCT.cjs → chunk-OPTBQSCV.cjs} +3 -3
  93. package/dist/{chunk-DJM7DLCT.cjs.map → chunk-OPTBQSCV.cjs.map} +1 -1
  94. package/dist/{chunk-GFYGYME3.js → chunk-OQ7RUNOC.js} +3 -3
  95. package/dist/{chunk-GFYGYME3.js.map → chunk-OQ7RUNOC.js.map} +1 -1
  96. package/dist/{chunk-WV4IDVDQ.cjs → chunk-PJJY6CYL.cjs} +11 -11
  97. package/dist/{chunk-WV4IDVDQ.cjs.map → chunk-PJJY6CYL.cjs.map} +1 -1
  98. package/dist/{chunk-CXLVI3SB.js → chunk-PUCY3UXN.js} +3 -3
  99. package/dist/{chunk-CXLVI3SB.js.map → chunk-PUCY3UXN.js.map} +1 -1
  100. package/dist/{chunk-ZV3BKLFY.cjs → chunk-QDEODGXE.cjs} +5 -5
  101. package/dist/{chunk-ZV3BKLFY.cjs.map → chunk-QDEODGXE.cjs.map} +1 -1
  102. package/dist/{chunk-7BJRLP3U.js → chunk-QYTYW74G.js} +5 -5
  103. package/dist/{chunk-7BJRLP3U.js.map → chunk-QYTYW74G.js.map} +1 -1
  104. package/dist/{chunk-A7NCSZAP.cjs → chunk-QZTNTP75.cjs} +17 -25
  105. package/dist/chunk-QZTNTP75.cjs.map +1 -0
  106. package/dist/{chunk-OB5F4577.cjs → chunk-R26BK7YL.cjs} +4 -4
  107. package/dist/{chunk-OB5F4577.cjs.map → chunk-R26BK7YL.cjs.map} +1 -1
  108. package/dist/{chunk-A2YAC22G.js → chunk-RI6DZA5X.js} +3 -3
  109. package/dist/{chunk-A2YAC22G.js.map → chunk-RI6DZA5X.js.map} +1 -1
  110. package/dist/{chunk-LC2KJSUS.cjs → chunk-SARREDFP.cjs} +46 -46
  111. package/dist/{chunk-LC2KJSUS.cjs.map → chunk-SARREDFP.cjs.map} +1 -1
  112. package/dist/{chunk-ZCHSJUCI.js → chunk-SZX44LCT.js} +231 -6
  113. package/dist/chunk-SZX44LCT.js.map +1 -0
  114. package/dist/{chunk-7QDX2CO4.cjs → chunk-TP6PLDNM.cjs} +4 -4
  115. package/dist/{chunk-7QDX2CO4.cjs.map → chunk-TP6PLDNM.cjs.map} +1 -1
  116. package/dist/{chunk-W27VK32R.cjs → chunk-TT6XV6WM.cjs} +84 -84
  117. package/dist/{chunk-W27VK32R.cjs.map → chunk-TT6XV6WM.cjs.map} +1 -1
  118. package/dist/{chunk-KLOSOT26.js → chunk-UMIY4SQS.js} +11 -11
  119. package/dist/{chunk-KLOSOT26.js.map → chunk-UMIY4SQS.js.map} +1 -1
  120. package/dist/chunk-VG24E4JJ.cjs +26 -0
  121. package/dist/chunk-VG24E4JJ.cjs.map +1 -0
  122. package/dist/{chunk-ECERC6TI.js → chunk-VHJHY7TT.js} +3 -3
  123. package/dist/{chunk-ECERC6TI.js.map → chunk-VHJHY7TT.js.map} +1 -1
  124. package/dist/{chunk-D3N67Q4D.js → chunk-W3VYZXNS.js} +3 -3
  125. package/dist/{chunk-D3N67Q4D.js.map → chunk-W3VYZXNS.js.map} +1 -1
  126. package/dist/{chunk-JK45LSIH.cjs → chunk-WXYQ66KC.cjs} +5 -5
  127. package/dist/{chunk-JK45LSIH.cjs.map → chunk-WXYQ66KC.cjs.map} +1 -1
  128. package/dist/{chunk-ZCF2JJFA.js → chunk-Y3KA6X7B.js} +3 -3
  129. package/dist/{chunk-ZCF2JJFA.js.map → chunk-Y3KA6X7B.js.map} +1 -1
  130. package/dist/{chunk-GYCQ3FNL.js → chunk-YBLIKTJK.js} +2 -2
  131. package/dist/chunk-YBLIKTJK.js.map +1 -0
  132. package/dist/chunk-YNIBUKV5.js +163 -0
  133. package/dist/chunk-YNIBUKV5.js.map +1 -0
  134. package/dist/citations/index.cjs +12 -11
  135. package/dist/citations/index.js +3 -2
  136. package/dist/collaboration/index.cjs +51 -51
  137. package/dist/collaboration/index.js +3 -3
  138. package/dist/components/DroppableContainer.d.ts +6 -0
  139. package/dist/components/GridRowNavigator.d.ts +29 -0
  140. package/dist/components/LoadingIndicator.d.ts +21 -0
  141. package/dist/components/RowNavigatorControls.d.ts +29 -0
  142. package/dist/components/SharedCell.d.ts +27 -0
  143. package/dist/connect/docx.cjs +7 -5
  144. package/dist/connect/docx.cjs.map +1 -1
  145. package/dist/connect/docx.js +6 -4
  146. package/dist/connect/docx.js.map +1 -1
  147. package/dist/connect/index.cjs +270 -227
  148. package/dist/connect/index.cjs.map +1 -1
  149. package/dist/connect/index.d.ts +1 -1
  150. package/dist/connect/index.js +199 -156
  151. package/dist/connect/index.js.map +1 -1
  152. package/dist/connection/ConnectedSettings.d.ts +46 -20
  153. package/dist/connection/ConnectionProvider.d.ts +5 -0
  154. package/dist/connection/mail/ConnectedMailComposer.d.ts +2 -3
  155. package/dist/connection/mail/ConnectedMailbox.d.ts +2 -3
  156. package/dist/connection/mail/MailComposerForm.d.ts +2 -3
  157. package/dist/connection/mail/index.d.ts +2 -2
  158. package/dist/connection/mail/mailbox.d.ts +1 -4
  159. package/dist/connection/mail/types.d.ts +0 -8
  160. package/dist/document-tools/index.cjs +1 -1
  161. package/dist/document-tools/index.js +1 -1
  162. package/dist/facts/fact-citations.d.ts +56 -0
  163. package/dist/facts/fact-table-column-resize.d.ts +18 -0
  164. package/dist/facts/index.cjs +198 -29
  165. package/dist/facts/index.cjs.map +1 -1
  166. package/dist/facts/index.d.ts +2 -1
  167. package/dist/facts/index.js +187 -27
  168. package/dist/facts/index.js.map +1 -1
  169. package/dist/files/index.cjs +4 -4
  170. package/dist/files/index.js +3 -3
  171. package/dist/home/index.cjs +20 -19
  172. package/dist/home/index.cjs.map +1 -1
  173. package/dist/home/index.js +5 -4
  174. package/dist/home/index.js.map +1 -1
  175. package/dist/index.cjs +877 -679
  176. package/dist/index.cjs.map +1 -1
  177. package/dist/index.d.ts +7 -1
  178. package/dist/index.js +207 -30
  179. package/dist/index.js.map +1 -1
  180. package/dist/provider/BlocksProvider.d.ts +39 -4
  181. package/dist/provider/dialogs.d.ts +31 -0
  182. package/dist/retrieval/index.cjs +5 -4
  183. package/dist/retrieval/index.js +3 -2
  184. package/dist/sandboxDocument-JLEETIWW.js +71 -0
  185. package/dist/sandboxDocument-JLEETIWW.js.map +1 -0
  186. package/dist/sandboxDocument-WQUNODSC.cjs +76 -0
  187. package/dist/sandboxDocument-WQUNODSC.cjs.map +1 -0
  188. package/dist/settings/DraggableHeader.d.ts +10 -0
  189. package/dist/settings/FilterChip.d.ts +15 -0
  190. package/dist/settings/MessageJsonTree.d.ts +7 -0
  191. package/dist/settings/MoreInfo.d.ts +25 -0
  192. package/dist/settings/PlanCard.d.ts +1 -1
  193. package/dist/settings/index.cjs +363 -266
  194. package/dist/settings/index.cjs.map +1 -1
  195. package/dist/settings/index.d.ts +4 -1
  196. package/dist/settings/index.js +317 -222
  197. package/dist/settings/index.js.map +1 -1
  198. package/dist/settings/message-schema-hints.d.ts +19 -0
  199. package/dist/shell/index.cjs +48 -47
  200. package/dist/shell/index.js +4 -3
  201. package/dist/site/index.cjs +5 -5
  202. package/dist/site/index.js +1 -1
  203. package/dist/studio/index.cjs +19 -18
  204. package/dist/studio/index.cjs.map +1 -1
  205. package/dist/studio/index.js +11 -10
  206. package/dist/studio/index.js.map +1 -1
  207. package/dist/workflow-canvas/index.cjs +65 -65
  208. package/dist/workflow-canvas/index.js +13 -13
  209. package/dist/workspaces/index.cjs +42 -3
  210. package/dist/workspaces/index.cjs.map +1 -1
  211. package/dist/workspaces/index.d.ts +1 -0
  212. package/dist/workspaces/index.js +38 -3
  213. package/dist/workspaces/index.js.map +1 -1
  214. package/dist/workspaces/workspace-type.d.ts +29 -0
  215. package/node_modules/@arbidocs/coedit/package.json +1 -1
  216. package/package.json +10 -4
  217. package/dist/StreamedArtifactEditor-EEYAXJ4H.cjs.map +0 -1
  218. package/dist/StreamedArtifactEditor-TDATDYD2.js.map +0 -1
  219. package/dist/chunk-3BJLNKOB.cjs.map +0 -1
  220. package/dist/chunk-76JDDMSP.js +0 -31
  221. package/dist/chunk-76JDDMSP.js.map +0 -1
  222. package/dist/chunk-A7NCSZAP.cjs.map +0 -1
  223. package/dist/chunk-C54XEN5T.cjs +0 -34
  224. package/dist/chunk-C54XEN5T.cjs.map +0 -1
  225. package/dist/chunk-CJBN5HIS.js.map +0 -1
  226. package/dist/chunk-GYCQ3FNL.js.map +0 -1
  227. package/dist/chunk-IBZJYCYM.js.map +0 -1
  228. package/dist/chunk-INW76PEL.cjs.map +0 -1
  229. package/dist/chunk-KELGOCJA.js.map +0 -1
  230. package/dist/chunk-MUMH3Z6K.cjs.map +0 -1
  231. package/dist/chunk-NZUQFF35.cjs.map +0 -1
  232. package/dist/chunk-OYMWV45N.js.map +0 -1
  233. package/dist/chunk-SWQX6CTT.cjs.map +0 -1
  234. package/dist/chunk-ZCHSJUCI.js.map +0 -1
  235. package/dist/facts/timezone.d.ts +0 -4
  236. package/dist/settings/FirmPool.d.ts +0 -82
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
+ var chunkBIXHB4LV_cjs = require('../chunk-BIXHB4LV.cjs');
4
5
  require('../chunk-DES3K4SD.cjs');
5
6
  var react = require('react');
6
7
  var FullCalendar = require('@fullcalendar/react');
@@ -12,9 +13,11 @@ var multiMonthPlugin = require('@fullcalendar/multimonth');
12
13
  var lucideReact = require('lucide-react');
13
14
  var ui = require('@arbidocs/react/ui');
14
15
  var jsxRuntime = require('react/jsx-runtime');
15
- var temporalPolyfill = require('temporal-polyfill');
16
16
  var core = require('@fullcalendar/core');
17
17
  var internal = require('@fullcalendar/core/internal');
18
+ var temporalPolyfill = require('temporal-polyfill');
19
+ var reactDom = require('react-dom');
20
+ var client = require('react-dom/client');
18
21
 
19
22
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
20
23
 
@@ -316,160 +319,15 @@ function ColorSwatches({
316
319
  ))
317
320
  ] });
318
321
  }
319
- var pad2 = (n) => String(n).padStart(2, "0");
320
- var pad4 = (n) => String(n).padStart(4, "0");
321
- function isValidTimeZone(zone) {
322
- if (!zone) return false;
323
- try {
324
- temporalPolyfill.Temporal.Now.instant().toZonedDateTimeISO(zone);
325
- return true;
326
- } catch {
327
- return false;
328
- }
329
- }
330
- function safeZone(zone, fallback = "UTC") {
331
- if (isValidTimeZone(zone)) return zone;
332
- return isValidTimeZone(fallback) ? fallback : "UTC";
333
- }
334
- function toPlainDateTime(wall) {
335
- return /^\d{4}-\d{2}-\d{2}$/.test(wall) ? temporalPolyfill.Temporal.PlainDate.from(wall).toPlainDateTime() : temporalPolyfill.Temporal.PlainDateTime.from(wall);
336
- }
337
- function wallToUtc(wall, zone) {
338
- const zdt = toPlainDateTime(wall).toZonedDateTime(safeZone(zone), {
339
- disambiguation: "compatible"
340
- });
341
- return zdt.toInstant().toString();
342
- }
343
- function wallToEpochMs(wall, zone) {
344
- return toPlainDateTime(wall).toZonedDateTime(safeZone(zone), { disambiguation: "compatible" }).epochMilliseconds;
345
- }
346
- function instantOf(utc) {
347
- if (typeof utc === "number") return temporalPolyfill.Temporal.Instant.fromEpochMilliseconds(utc);
348
- if (utc instanceof Date) return temporalPolyfill.Temporal.Instant.fromEpochMilliseconds(utc.getTime());
349
- return temporalPolyfill.Temporal.Instant.from(utc);
350
- }
351
- function zoned(utc, zone) {
352
- return instantOf(utc).toZonedDateTimeISO(safeZone(zone));
353
- }
354
- function utcToWall(utc, zone) {
355
- const z = zoned(utc, zone);
356
- return `${pad4(z.year)}-${pad2(z.month)}-${pad2(z.day)}T${pad2(z.hour)}:${pad2(z.minute)}`;
357
- }
358
- function utcToDate(utc, zone) {
359
- const z = zoned(utc, zone);
360
- return `${pad4(z.year)}-${pad2(z.month)}-${pad2(z.day)}`;
361
- }
362
- function utcToTime(utc, zone) {
363
- const z = zoned(utc, zone);
364
- return `${pad2(z.hour)}:${pad2(z.minute)}`;
365
- }
366
- function convertWall(wall, fromZone, toZone) {
367
- return utcToWall(wallToUtc(wall, fromZone), toZone);
368
- }
369
- function todayInZone(zone, now = Date.now()) {
370
- return utcToDate(now, zone);
371
- }
372
- function addDays(date, days) {
373
- return temporalPolyfill.Temporal.PlainDate.from(date).add({ days }).toString();
374
- }
375
- function addMonths(date, months) {
376
- return temporalPolyfill.Temporal.PlainDate.from(date).add({ months }).toString();
377
- }
378
- function diffDays(a, b) {
379
- return temporalPolyfill.Temporal.PlainDate.from(a).until(temporalPolyfill.Temporal.PlainDate.from(b), { largestUnit: "days" }).days;
380
- }
381
- function dayOfWeekSun0(date) {
382
- return temporalPolyfill.Temporal.PlainDate.from(date).dayOfWeek % 7;
383
- }
384
- function startOfWeek(date, weekStart) {
385
- const back = (dayOfWeekSun0(date) - weekStart + 7) % 7;
386
- return addDays(date, -back);
387
- }
388
- function isoWeekNumber(date) {
389
- return temporalPolyfill.Temporal.PlainDate.from(date).weekOfYear ?? 1;
390
- }
391
- function zoneOffsetMinutes(zone, at = Date.now()) {
392
- return Math.round(zoned(at, zone).offsetNanoseconds / 6e10);
393
- }
394
- function zoneOffsetLabel(zone, at = Date.now()) {
395
- const total = zoneOffsetMinutes(zone, at);
396
- if (total === 0) return "GMT";
397
- const sign = total > 0 ? "+" : "-";
398
- const abs = Math.abs(total);
399
- const h = Math.floor(abs / 60);
400
- const m = abs % 60;
401
- return `GMT${sign}${h}${m ? `:${pad2(m)}` : ""}`;
402
- }
403
- function zoneCity(zone) {
404
- const last = zone.split("/").pop() ?? zone;
405
- return last.replace(/_/g, " ");
406
- }
407
- function listTimeZones() {
408
- try {
409
- const fn = Intl.supportedValuesOf;
410
- const zones = fn ? fn("timeZone") : [];
411
- if (zones.length) return zones.includes("UTC") ? zones : ["UTC", ...zones];
412
- } catch {
413
- }
414
- return [
415
- "UTC",
416
- "Europe/London",
417
- "Europe/Paris",
418
- "Europe/Berlin",
419
- "America/New_York",
420
- "America/Chicago",
421
- "America/Denver",
422
- "America/Los_Angeles",
423
- "Asia/Tokyo",
424
- "Asia/Singapore",
425
- "Australia/Sydney"
426
- ];
427
- }
428
- function detectTimeZone() {
429
- try {
430
- return Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
431
- } catch {
432
- return "UTC";
433
- }
434
- }
435
- function formatInZone(utc, zone, options, locale) {
436
- const ms = instantOf(utc).epochMilliseconds;
437
- return new Intl.DateTimeFormat(locale, { ...options, timeZone: safeZone(zone) }).format(ms);
438
- }
439
- function formatPlainDate(date, options, locale) {
440
- return new Intl.DateTimeFormat(locale, { ...options, timeZone: "UTC" }).format(
441
- Date.parse(`${date}T12:00:00Z`)
442
- );
443
- }
444
- function epochToWallArray(ms, zone) {
445
- const z = temporalPolyfill.Temporal.Instant.fromEpochMilliseconds(ms).toZonedDateTimeISO(zone);
446
- return [z.year, z.month - 1, z.day, z.hour, z.minute, z.second, z.millisecond];
447
- }
448
- function wallArrayOffset(a, zone) {
449
- const norm = new Date(
450
- Date.UTC(a[0], a[1] ?? 0, a[2] ?? 1, a[3] ?? 0, a[4] ?? 0, a[5] ?? 0, a[6] ?? 0)
451
- );
452
- const pdt = new temporalPolyfill.Temporal.PlainDateTime(
453
- norm.getUTCFullYear(),
454
- norm.getUTCMonth() + 1,
455
- norm.getUTCDate(),
456
- norm.getUTCHours(),
457
- norm.getUTCMinutes(),
458
- norm.getUTCSeconds(),
459
- norm.getUTCMilliseconds()
460
- );
461
- const zdt = pdt.toZonedDateTime(zone, { disambiguation: "compatible" });
462
- return Math.round(zdt.offsetNanoseconds / 6e10);
463
- }
464
322
  var temporalZonePlugin = null;
465
323
  function getTemporalTimeZonePlugin() {
466
324
  if (!temporalZonePlugin) {
467
325
  class TemporalNamedTimeZone extends internal.NamedTimeZoneImpl {
468
326
  offsetForArray(a) {
469
- return wallArrayOffset(a, this.timeZoneName);
327
+ return chunkBIXHB4LV_cjs.wallArrayOffset(a, this.timeZoneName);
470
328
  }
471
329
  timestampToArray(ms) {
472
- return epochToWallArray(ms, this.timeZoneName);
330
+ return chunkBIXHB4LV_cjs.epochToWallArray(ms, this.timeZoneName);
473
331
  }
474
332
  }
475
333
  temporalZonePlugin = core.createPlugin({
@@ -555,9 +413,9 @@ function toEventInput(e, zone) {
555
413
  extendedProps: { grid: e }
556
414
  };
557
415
  if (e.allDay) {
558
- const start = e.startDate ?? utcToDate(e.startUtc, zone);
559
- const end = e.endDate ?? (e.endUtc ? utcToDate(e.endUtc, zone) : addDays(start, 1));
560
- return { ...base, allDay: true, start, end: end > start ? end : addDays(start, 1) };
416
+ const start = e.startDate ?? chunkBIXHB4LV_cjs.utcToDate(e.startUtc, zone);
417
+ const end = e.endDate ?? (e.endUtc ? chunkBIXHB4LV_cjs.utcToDate(e.endUtc, zone) : chunkBIXHB4LV_cjs.addDays(start, 1));
418
+ return { ...base, allDay: true, start, end: end > start ? end : chunkBIXHB4LV_cjs.addDays(start, 1) };
561
419
  }
562
420
  return { ...base, allDay: false, start: e.startUtc, end: e.endUtc };
563
421
  }
@@ -663,8 +521,8 @@ function CalendarGrid({
663
521
  keyboardShortcuts = true
664
522
  }) {
665
523
  const labels = react.useMemo(() => mergeLabels(labelOverrides), [labelOverrides]);
666
- const zone = safeZone(timeZone);
667
- const secondZone = secondaryTimeZone && secondaryTimeZone !== zone && isValidTimeZone(secondaryTimeZone) ? secondaryTimeZone : "";
524
+ const zone = chunkBIXHB4LV_cjs.safeZone(timeZone);
525
+ const secondZone = secondaryTimeZone && secondaryTimeZone !== zone && chunkBIXHB4LV_cjs.isValidTimeZone(secondaryTimeZone) ? secondaryTimeZone : "";
668
526
  const rootRef = react.useRef(null);
669
527
  const calRef = react.useRef(null);
670
528
  const [narrow, setNarrow] = react.useState(false);
@@ -707,7 +565,7 @@ function CalendarGrid({
707
565
  a.changeView(fcView, date);
708
566
  return;
709
567
  }
710
- if (utcToDate(a.getDate(), zone) !== date) a.gotoDate(date);
568
+ if (chunkBIXHB4LV_cjs.utcToDate(a.getDate(), zone) !== date) a.gotoDate(date);
711
569
  }, [api, effective, date, zone]);
712
570
  const fcEvents = react.useMemo(() => events.map((e) => toEventInput(e, zone)), [events, zone]);
713
571
  const changeView = react.useCallback(
@@ -724,7 +582,7 @@ function CalendarGrid({
724
582
  if (!a) return;
725
583
  if (dir === "prev") a.prev();
726
584
  else if (dir === "next") a.next();
727
- else a.gotoDate(utcToDate(Date.now(), zone));
585
+ else a.gotoDate(chunkBIXHB4LV_cjs.utcToDate(Date.now(), zone));
728
586
  },
729
587
  [api, zone]
730
588
  );
@@ -758,7 +616,7 @@ function CalendarGrid({
758
616
  const onDatesSet = react.useCallback(
759
617
  (arg) => {
760
618
  setTitle(arg.view.title);
761
- const anchor = utcToDate(arg.view.calendar.getDate(), zone);
619
+ const anchor = chunkBIXHB4LV_cjs.utcToDate(arg.view.calendar.getDate(), zone);
762
620
  const kind = VIEW_OF_FC[arg.view.type] ?? effective;
763
621
  const key = `${kind}|${arg.start.toISOString()}|${arg.end.toISOString()}|${anchor}`;
764
622
  if (key === lastRange.current) return;
@@ -799,7 +657,7 @@ function CalendarGrid({
799
657
  const start = event.start;
800
658
  if (event.allDay) {
801
659
  const startDate = event.startStr.slice(0, 10);
802
- const endDate = event.endStr ? event.endStr.slice(0, 10) : addDays(startDate, 1);
660
+ const endDate = event.endStr ? event.endStr.slice(0, 10) : chunkBIXHB4LV_cjs.addDays(startDate, 1);
803
661
  const end2 = event.end ?? new Date(start.getTime() + 864e5);
804
662
  cb.current.onEventChange({
805
663
  instanceId: g.instanceId,
@@ -828,7 +686,7 @@ function CalendarGrid({
828
686
  if (!secondZone) return arg.text;
829
687
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "arbi-cal-slot-labels", children: [
830
688
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "arbi-cal-slot-secondary", children: (() => {
831
- const t = convertWall(`${date}T${utcToTime(arg.date, zone)}`, zone, secondZone).slice(
689
+ const t = chunkBIXHB4LV_cjs.convertWall(`${date}T${chunkBIXHB4LV_cjs.utcToTime(arg.date, zone)}`, zone, secondZone).slice(
832
690
  11,
833
691
  16
834
692
  );
@@ -843,8 +701,8 @@ function CalendarGrid({
843
701
  (arg) => {
844
702
  if (!secondZone) return arg.text;
845
703
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "arbi-cal-slot-labels arbi-cal-zone-labels", children: [
846
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "arbi-cal-slot-secondary", title: secondZone, children: zoneOffsetLabel(secondZone) }),
847
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "arbi-cal-slot-primary", title: zone, children: zoneOffsetLabel(zone) })
704
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "arbi-cal-slot-secondary", title: secondZone, children: chunkBIXHB4LV_cjs.zoneOffsetLabel(secondZone) }),
705
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "arbi-cal-slot-primary", title: zone, children: chunkBIXHB4LV_cjs.zoneOffsetLabel(zone) })
848
706
  ] });
849
707
  },
850
708
  [secondZone, zone]
@@ -854,8 +712,8 @@ function CalendarGrid({
854
712
  const t = arg.view.type;
855
713
  if (!t.startsWith("timeGrid") && t !== "arbiWorkWeek") return arg.text;
856
714
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ui.cn("arbi-cal-dayhead", arg.isToday && "arbi-cal-dayhead-today"), children: [
857
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "arbi-cal-dayhead-dow", children: formatInZone(arg.date, zone, { weekday: "short" }) }),
858
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "arbi-cal-dayhead-num", children: formatInZone(arg.date, zone, { day: "numeric" }) })
715
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "arbi-cal-dayhead-dow", children: chunkBIXHB4LV_cjs.formatInZone(arg.date, zone, { weekday: "short" }) }),
716
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "arbi-cal-dayhead-num", children: chunkBIXHB4LV_cjs.formatInZone(arg.date, zone, { day: "numeric" }) })
859
717
  ] });
860
718
  },
861
719
  [zone]
@@ -972,13 +830,13 @@ function CalendarGrid({
972
830
  className: "hidden text-xs text-muted-foreground md:inline",
973
831
  "data-testid": "calendar-zones",
974
832
  children: [
975
- zoneCity(zone),
833
+ chunkBIXHB4LV_cjs.zoneCity(zone),
976
834
  " ",
977
- zoneOffsetLabel(zone),
835
+ chunkBIXHB4LV_cjs.zoneOffsetLabel(zone),
978
836
  " \xB7 ",
979
- zoneCity(secondZone),
837
+ chunkBIXHB4LV_cjs.zoneCity(secondZone),
980
838
  " ",
981
- zoneOffsetLabel(secondZone)
839
+ chunkBIXHB4LV_cjs.zoneOffsetLabel(secondZone)
982
840
  ]
983
841
  }
984
842
  ),
@@ -1106,13 +964,13 @@ function MiniMonth({
1106
964
  if (view.for !== date) setView({ for: date, month: `${date.slice(0, 7)}-01` });
1107
965
  const month = view.for === date ? view.month : `${date.slice(0, 7)}-01`;
1108
966
  const setMonth = (m) => setView({ for: date, month: m });
1109
- const today = todayInZone(timeZone);
967
+ const today = chunkBIXHB4LV_cjs.todayInZone(timeZone);
1110
968
  const days = react.useMemo(() => {
1111
- const first = startOfWeek(month, weekStart);
1112
- return Array.from({ length: 42 }, (_, i) => addDays(first, i));
969
+ const first = chunkBIXHB4LV_cjs.startOfWeek(month, weekStart);
970
+ return Array.from({ length: 42 }, (_, i) => chunkBIXHB4LV_cjs.addDays(first, i));
1113
971
  }, [month, weekStart]);
1114
- const weekdays = days.slice(0, 7).map((d) => formatPlainDate(d, { weekday: "narrow" }));
1115
- const monthTitle = formatPlainDate(month, { month: "long", year: "numeric" });
972
+ const weekdays = days.slice(0, 7).map((d) => chunkBIXHB4LV_cjs.formatPlainDate(d, { weekday: "narrow" }));
973
+ const monthTitle = chunkBIXHB4LV_cjs.formatPlainDate(month, { month: "long", year: "numeric" });
1116
974
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ui.cn("select-none text-xs", className), "data-testid": "calendar-mini-month", children: [
1117
975
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center justify-between px-1", children: [
1118
976
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium", "aria-live": "polite", children: monthTitle }),
@@ -1123,7 +981,7 @@ function MiniMonth({
1123
981
  type: "button",
1124
982
  className: "rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground",
1125
983
  "aria-label": labels.previous,
1126
- onClick: () => setMonth(addMonths(month, -1)),
984
+ onClick: () => setMonth(chunkBIXHB4LV_cjs.addMonths(month, -1)),
1127
985
  "data-testid": "calendar-mini-prev",
1128
986
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "h-4 w-4" })
1129
987
  }
@@ -1134,7 +992,7 @@ function MiniMonth({
1134
992
  type: "button",
1135
993
  className: "rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground",
1136
994
  "aria-label": labels.next,
1137
- onClick: () => setMonth(addMonths(month, 1)),
995
+ onClick: () => setMonth(chunkBIXHB4LV_cjs.addMonths(month, 1)),
1138
996
  "data-testid": "calendar-mini-next",
1139
997
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" })
1140
998
  }
@@ -1170,7 +1028,7 @@ function MiniMonth({
1170
1028
  MiniDay,
1171
1029
  {
1172
1030
  d,
1173
- weekCell: showWeekNumbers && i % 7 === 0 ? isoWeekNumber(d) : null,
1031
+ weekCell: showWeekNumbers && i % 7 === 0 ? chunkBIXHB4LV_cjs.isoWeekNumber(d) : null,
1174
1032
  inMonth,
1175
1033
  inRange,
1176
1034
  selected,
@@ -1203,7 +1061,7 @@ function MiniDay({
1203
1061
  role: "gridcell",
1204
1062
  "aria-selected": selected,
1205
1063
  "aria-current": isToday ? "date" : void 0,
1206
- "aria-label": formatPlainDate(d, { dateStyle: "full" }),
1064
+ "aria-label": chunkBIXHB4LV_cjs.formatPlainDate(d, { dateStyle: "full" }),
1207
1065
  onClick: () => onSelect(d),
1208
1066
  "data-testid": `calendar-mini-day-${d}`,
1209
1067
  className: ui.cn(
@@ -1455,12 +1313,12 @@ function CalendarList({
1455
1313
  var isAllDayDraft = (d) => !!d.start.date;
1456
1314
  var datePart = (spec) => spec.date ?? (spec.date_time ?? "").slice(0, 10);
1457
1315
  var timePart = (spec) => (spec.date_time ?? "").slice(11, 16);
1458
- var specZone = (spec, defaultZone) => safeZone(spec.time_zone, defaultZone);
1316
+ var specZone = (spec, defaultZone) => chunkBIXHB4LV_cjs.safeZone(spec.time_zone, defaultZone);
1459
1317
  var specDate = datePart;
1460
1318
  var specTime = timePart;
1461
1319
  function specEpochMs(spec, defaultZone) {
1462
- if (spec.date) return wallToEpochMs(spec.date, defaultZone);
1463
- return wallToEpochMs(spec.date_time ?? "", specZone(spec, defaultZone));
1320
+ if (spec.date) return chunkBIXHB4LV_cjs.wallToEpochMs(spec.date, defaultZone);
1321
+ return chunkBIXHB4LV_cjs.wallToEpochMs(spec.date_time ?? "", specZone(spec, defaultZone));
1464
1322
  }
1465
1323
  function draftRangeUtc(d, defaultZone) {
1466
1324
  return { startMs: specEpochMs(d.start, defaultZone), endMs: specEpochMs(d.end, defaultZone) };
@@ -1468,7 +1326,7 @@ function draftRangeUtc(d, defaultZone) {
1468
1326
  function allDayInclusiveEnd(d) {
1469
1327
  const start = d.start.date ?? "";
1470
1328
  const end = d.end.date ?? start;
1471
- const last = addDays(end, -1);
1329
+ const last = chunkBIXHB4LV_cjs.addDays(end, -1);
1472
1330
  return last < start ? start : last;
1473
1331
  }
1474
1332
  function timedSpec(date, time, zone) {
@@ -1478,8 +1336,8 @@ function setDraftStart(d, change, defaultZone) {
1478
1336
  if (isAllDayDraft(d)) {
1479
1337
  const oldStart = d.start.date ?? change.date ?? "";
1480
1338
  const start2 = change.date ?? oldStart;
1481
- const days = Math.max(1, diffDays(oldStart, d.end.date ?? addDays(oldStart, 1)));
1482
- return { ...d, start: { date: start2 }, end: { date: addDays(start2, days) } };
1339
+ const days = Math.max(1, chunkBIXHB4LV_cjs.diffDays(oldStart, d.end.date ?? chunkBIXHB4LV_cjs.addDays(oldStart, 1)));
1340
+ return { ...d, start: { date: start2 }, end: { date: chunkBIXHB4LV_cjs.addDays(start2, days) } };
1483
1341
  }
1484
1342
  const { startMs, endMs } = draftRangeUtc(d, defaultZone);
1485
1343
  const duration = Math.max(0, endMs - startMs);
@@ -1491,7 +1349,7 @@ function setDraftStart(d, change, defaultZone) {
1491
1349
  );
1492
1350
  const newStartMs = specEpochMs(start, defaultZone);
1493
1351
  const endZone = specZone(d.end, defaultZone);
1494
- const endWall = utcToWall(newStartMs + duration, endZone);
1352
+ const endWall = chunkBIXHB4LV_cjs.utcToWall(newStartMs + duration, endZone);
1495
1353
  return {
1496
1354
  ...d,
1497
1355
  start,
@@ -1501,7 +1359,7 @@ function setDraftStart(d, change, defaultZone) {
1501
1359
  function setDraftEnd(d, change) {
1502
1360
  if (isAllDayDraft(d)) {
1503
1361
  const last = change.date ?? allDayInclusiveEnd(d);
1504
- return { ...d, end: { date: addDays(last, 1) } };
1362
+ return { ...d, end: { date: chunkBIXHB4LV_cjs.addDays(last, 1) } };
1505
1363
  }
1506
1364
  const zone = change.timeZone !== void 0 ? change.timeZone : d.end.time_zone ?? null;
1507
1365
  return {
@@ -1514,35 +1372,35 @@ function setDraftAllDay(d, allDay, defaultZone, defaultStartTime = "09:00", defa
1514
1372
  if (allDay) {
1515
1373
  const start2 = datePart(d.start);
1516
1374
  const endDay = datePart(d.end) || start2;
1517
- const lastDay = timePart(d.end) === "00:00" && endDay > start2 ? addDays(endDay, -1) : endDay;
1375
+ const lastDay = timePart(d.end) === "00:00" && endDay > start2 ? chunkBIXHB4LV_cjs.addDays(endDay, -1) : endDay;
1518
1376
  return {
1519
1377
  ...d,
1520
1378
  start: { date: start2 },
1521
- end: { date: addDays(lastDay < start2 ? start2 : lastDay, 1) }
1379
+ end: { date: chunkBIXHB4LV_cjs.addDays(lastDay < start2 ? start2 : lastDay, 1) }
1522
1380
  };
1523
1381
  }
1524
- const zone = safeZone(defaultZone);
1382
+ const zone = chunkBIXHB4LV_cjs.safeZone(defaultZone);
1525
1383
  const start = timedSpec(d.start.date ?? "", defaultStartTime, zone);
1526
1384
  const startMs = specEpochMs(start, zone);
1527
1385
  const end = {
1528
1386
  date: null,
1529
- date_time: utcToWall(startMs + defaultDurationMinutes * 6e4, zone),
1387
+ date_time: chunkBIXHB4LV_cjs.utcToWall(startMs + defaultDurationMinutes * 6e4, zone),
1530
1388
  time_zone: zone
1531
1389
  };
1532
1390
  return { ...d, start, end };
1533
1391
  }
1534
1392
  function draftFromSlot(slot, timeZone, calendarId, title = "") {
1535
- const zone = safeZone(timeZone);
1393
+ const zone = chunkBIXHB4LV_cjs.safeZone(timeZone);
1536
1394
  if (slot.allDay) {
1537
- const start = slot.startDate ?? utcToDate(slot.startUtc, zone);
1538
- const end = slot.endDate ?? addDays(start, 1);
1395
+ const start = slot.startDate ?? chunkBIXHB4LV_cjs.utcToDate(slot.startUtc, zone);
1396
+ const end = slot.endDate ?? chunkBIXHB4LV_cjs.addDays(start, 1);
1539
1397
  return { calendar_id: calendarId, title, start: { date: start }, end: { date: end } };
1540
1398
  }
1541
1399
  return {
1542
1400
  calendar_id: calendarId,
1543
1401
  title,
1544
- start: { date: null, date_time: utcToWall(slot.startUtc, zone), time_zone: zone },
1545
- end: { date: null, date_time: utcToWall(slot.endUtc, zone), time_zone: zone }
1402
+ start: { date: null, date_time: chunkBIXHB4LV_cjs.utcToWall(slot.startUtc, zone), time_zone: zone },
1403
+ end: { date: null, date_time: chunkBIXHB4LV_cjs.utcToWall(slot.endUtc, zone), time_zone: zone }
1546
1404
  };
1547
1405
  }
1548
1406
  function validateDraft(d, defaultZone) {
@@ -1590,7 +1448,7 @@ function defaultRecurrenceForm(startDate, freq = "none") {
1590
1448
  function untilValue(until, ctx) {
1591
1449
  if (ctx.allDay) return until.replace(/-/g, "");
1592
1450
  const zone = ctx.timeZone || "UTC";
1593
- const utc = wallToUtc(`${until}T23:59:59`, zone);
1451
+ const utc = chunkBIXHB4LV_cjs.wallToUtc(`${until}T23:59:59`, zone);
1594
1452
  const t = temporalPolyfill.Temporal.Instant.from(utc).toZonedDateTimeISO("UTC");
1595
1453
  const p = (n, w = 2) => String(n).padStart(w, "0");
1596
1454
  return `${p(t.year, 4)}${p(t.month)}${p(t.day)}T${p(t.hour)}${p(t.minute)}${p(t.second)}Z`;
@@ -2095,10 +1953,10 @@ function RecurrenceEditor({
2095
1953
 
2096
1954
  // src/calendar/format.ts
2097
1955
  function formatZoneLabel(zone, at = Date.now()) {
2098
- return `${zoneCity(zone)} (${zoneOffsetLabel(zone, at)})`;
1956
+ return `${chunkBIXHB4LV_cjs.zoneCity(zone)} (${chunkBIXHB4LV_cjs.zoneOffsetLabel(zone, at)})`;
2099
1957
  }
2100
1958
  function formatEventWhen(e, zone, locale) {
2101
- const z = safeZone(zone);
1959
+ const z = chunkBIXHB4LV_cjs.safeZone(zone);
2102
1960
  const dayFmt = {
2103
1961
  weekday: "short",
2104
1962
  day: "numeric",
@@ -2106,16 +1964,16 @@ function formatEventWhen(e, zone, locale) {
2106
1964
  year: "numeric"
2107
1965
  };
2108
1966
  if (e.all_day) {
2109
- const start = e.start.date ?? utcToDate(e.start_utc, z);
2110
- const endExcl = e.end.date ?? utcToDate(e.end_utc, z);
2111
- const last = endExcl > start ? addDays(endExcl, -1) : start;
2112
- const a2 = formatPlainDate(start, dayFmt, locale);
2113
- return last === start ? a2 : `${a2} \u2013 ${formatPlainDate(last, dayFmt, locale)}`;
1967
+ const start = e.start.date ?? chunkBIXHB4LV_cjs.utcToDate(e.start_utc, z);
1968
+ const endExcl = e.end.date ?? chunkBIXHB4LV_cjs.utcToDate(e.end_utc, z);
1969
+ const last = endExcl > start ? chunkBIXHB4LV_cjs.addDays(endExcl, -1) : start;
1970
+ const a2 = chunkBIXHB4LV_cjs.formatPlainDate(start, dayFmt, locale);
1971
+ return last === start ? a2 : `${a2} \u2013 ${chunkBIXHB4LV_cjs.formatPlainDate(last, dayFmt, locale)}`;
2114
1972
  }
2115
1973
  const timeFmt = { hour: "numeric", minute: "2-digit" };
2116
- const sameDay = utcToDate(e.start_utc, z) === utcToDate(e.end_utc, z);
2117
- const a = `${formatInZone(e.start_utc, z, dayFmt, locale)} \xB7 ${formatInZone(e.start_utc, z, timeFmt, locale)}`;
2118
- return sameDay ? `${a} \u2013 ${formatInZone(e.end_utc, z, timeFmt, locale)}` : `${a} \u2013 ${formatInZone(e.end_utc, z, dayFmt, locale)} \xB7 ${formatInZone(e.end_utc, z, timeFmt, locale)}`;
1974
+ const sameDay = chunkBIXHB4LV_cjs.utcToDate(e.start_utc, z) === chunkBIXHB4LV_cjs.utcToDate(e.end_utc, z);
1975
+ const a = `${chunkBIXHB4LV_cjs.formatInZone(e.start_utc, z, dayFmt, locale)} \xB7 ${chunkBIXHB4LV_cjs.formatInZone(e.start_utc, z, timeFmt, locale)}`;
1976
+ return sameDay ? `${a} \u2013 ${chunkBIXHB4LV_cjs.formatInZone(e.end_utc, z, timeFmt, locale)}` : `${a} \u2013 ${chunkBIXHB4LV_cjs.formatInZone(e.end_utc, z, dayFmt, locale)} \xB7 ${chunkBIXHB4LV_cjs.formatInZone(e.end_utc, z, timeFmt, locale)}`;
2119
1977
  }
2120
1978
  function TimeZonePicker({
2121
1979
  value,
@@ -2133,15 +1991,15 @@ function TimeZonePicker({
2133
1991
  const [open, setOpen] = react.useState(false);
2134
1992
  const options = react.useMemo(() => {
2135
1993
  const now = Date.now();
2136
- const list = zones?.length ? zones : listTimeZones();
1994
+ const list = zones?.length ? zones : chunkBIXHB4LV_cjs.listTimeZones();
2137
1995
  return list.map((z) => {
2138
1996
  let offset = 0;
2139
1997
  try {
2140
- offset = zoneOffsetMinutes(z, now);
1998
+ offset = chunkBIXHB4LV_cjs.zoneOffsetMinutes(z, now);
2141
1999
  } catch {
2142
2000
  return null;
2143
2001
  }
2144
- return { zone: z, offset, label: zoneOffsetLabel(z, now), city: zoneCity(z) };
2002
+ return { zone: z, offset, label: chunkBIXHB4LV_cjs.zoneOffsetLabel(z, now), city: chunkBIXHB4LV_cjs.zoneCity(z) };
2145
2003
  }).filter((o) => o !== null).sort((a, b) => a.offset - b.offset || a.zone.localeCompare(b.zone));
2146
2004
  }, [zones, open]);
2147
2005
  return /* @__PURE__ */ jsxRuntime.jsxs(ui.Popover, { open, onOpenChange: setOpen, children: [
@@ -3192,12 +3050,12 @@ function EventDetails({
3192
3050
  className
3193
3051
  }) {
3194
3052
  const l = mergeLabels(labelOverrides);
3195
- const zone = safeZone(timeZone);
3053
+ const zone = chunkBIXHB4LV_cjs.safeZone(timeZone);
3196
3054
  const color = event.color || calendarColor || "#3b82f6";
3197
3055
  const restricted = !!event.restricted;
3198
3056
  const title = restricted ? l.busy : event.title?.trim() || l.noTitle;
3199
3057
  const eventZone = event.start.time_zone;
3200
- const otherZone = !event.all_day && eventZone && eventZone !== zone ? safeZone(eventZone, zone) : null;
3058
+ const otherZone = !event.all_day && eventZone && eventZone !== zone ? chunkBIXHB4LV_cjs.safeZone(eventZone, zone) : null;
3201
3059
  const attendees = event.attendees ?? [];
3202
3060
  const counts = attendees.reduce((acc, a) => {
3203
3061
  const k = a.partstat ?? "needs_action";
@@ -3231,14 +3089,14 @@ function EventDetails({
3231
3089
  ),
3232
3090
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", "data-testid": "calendar-details-when", children: formatEventWhen(event, zone) }),
3233
3091
  otherZone && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs text-muted-foreground", children: [
3234
- formatInZone(event.start_utc, otherZone, { hour: "numeric", minute: "2-digit" }),
3092
+ chunkBIXHB4LV_cjs.formatInZone(event.start_utc, otherZone, { hour: "numeric", minute: "2-digit" }),
3235
3093
  " \u2013",
3236
3094
  " ",
3237
- formatInZone(event.end_utc, otherZone, { hour: "numeric", minute: "2-digit" }),
3095
+ chunkBIXHB4LV_cjs.formatInZone(event.end_utc, otherZone, { hour: "numeric", minute: "2-digit" }),
3238
3096
  " ",
3239
- zoneCity(otherZone),
3097
+ chunkBIXHB4LV_cjs.zoneCity(otherZone),
3240
3098
  " (",
3241
- zoneOffsetLabel(otherZone, event.start_utc),
3099
+ chunkBIXHB4LV_cjs.zoneOffsetLabel(otherZone, event.start_utc),
3242
3100
  ")"
3243
3101
  ] })
3244
3102
  ] }),
@@ -3512,10 +3370,10 @@ function ScopeDialog({
3512
3370
  }
3513
3371
 
3514
3372
  // src/calendar/scheduling.ts
3515
- var pad22 = (n) => String(n).padStart(2, "0");
3373
+ var pad2 = (n) => String(n).padStart(2, "0");
3516
3374
  function dayWindow(date, zone, startHour = 7, endHour = 20) {
3517
- const startMs = wallToEpochMs(`${date}T${pad22(startHour)}:00`, zone);
3518
- const endMs = endHour >= 24 ? wallToEpochMs(`${date}T23:59`, zone) + 6e4 : wallToEpochMs(`${date}T${pad22(endHour)}:00`, zone);
3375
+ const startMs = chunkBIXHB4LV_cjs.wallToEpochMs(`${date}T${pad2(startHour)}:00`, zone);
3376
+ const endMs = endHour >= 24 ? chunkBIXHB4LV_cjs.wallToEpochMs(`${date}T23:59`, zone) + 6e4 : chunkBIXHB4LV_cjs.wallToEpochMs(`${date}T${pad2(endHour)}:00`, zone);
3519
3377
  return { startMs, endMs };
3520
3378
  }
3521
3379
  function placeIntervals(intervals, win) {
@@ -3560,7 +3418,7 @@ function hourTicks(date, zone, startHour, endHour) {
3560
3418
  const span = win.endMs - win.startMs;
3561
3419
  const ticks = [];
3562
3420
  for (let h = startHour; h < endHour; h++) {
3563
- const ms = wallToEpochMs(`${date}T${pad22(h)}:00`, zone);
3421
+ const ms = chunkBIXHB4LV_cjs.wallToEpochMs(`${date}T${pad2(h)}:00`, zone);
3564
3422
  ticks.push({ hour: h, leftPct: (ms - win.startMs) / span * 100 });
3565
3423
  }
3566
3424
  return ticks;
@@ -3582,11 +3440,11 @@ function SchedulingAssistant({
3582
3440
  className
3583
3441
  }) {
3584
3442
  const l = mergeLabels(labelOverrides);
3585
- const zone = safeZone(timeZone);
3443
+ const zone = chunkBIXHB4LV_cjs.safeZone(timeZone);
3586
3444
  const win = dayWindow(date, zone, dayStartHour, dayEndHour);
3587
3445
  const ticks = hourTicks(date, zone, dayStartHour, dayEndHour);
3588
3446
  const sel = selection ? placeIntervals([selection], win)[0] : void 0;
3589
- const time = (iso) => formatInZone(iso, zone, { hour: "numeric", minute: "2-digit" });
3447
+ const time = (iso) => chunkBIXHB4LV_cjs.formatInZone(iso, zone, { hour: "numeric", minute: "2-digit" });
3590
3448
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ui.cn("space-y-2", className), "data-testid": "calendar-scheduling", children: [
3591
3449
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3592
3450
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium", children: l.schedulingAssistant }),
@@ -3599,11 +3457,11 @@ function SchedulingAssistant({
3599
3457
  size: "icon",
3600
3458
  className: "h-7 w-7",
3601
3459
  "aria-label": l.previous,
3602
- onClick: () => onDateChange(addDays(date, -1)),
3460
+ onClick: () => onDateChange(chunkBIXHB4LV_cjs.addDays(date, -1)),
3603
3461
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "h-4 w-4" })
3604
3462
  }
3605
3463
  ),
3606
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", "data-testid": "calendar-scheduling-date", children: formatPlainDate(date, { weekday: "short", day: "numeric", month: "short" }) }),
3464
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", "data-testid": "calendar-scheduling-date", children: chunkBIXHB4LV_cjs.formatPlainDate(date, { weekday: "short", day: "numeric", month: "short" }) }),
3607
3465
  /* @__PURE__ */ jsxRuntime.jsx(
3608
3466
  ui.Button,
3609
3467
  {
@@ -3612,7 +3470,7 @@ function SchedulingAssistant({
3612
3470
  size: "icon",
3613
3471
  className: "h-7 w-7",
3614
3472
  "aria-label": l.next,
3615
- onClick: () => onDateChange(addDays(date, 1)),
3473
+ onClick: () => onDateChange(chunkBIXHB4LV_cjs.addDays(date, 1)),
3616
3474
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" })
3617
3475
  }
3618
3476
  )
@@ -3728,7 +3586,7 @@ function SchedulingAssistant({
3728
3586
  "data-testid": "calendar-suggestion",
3729
3587
  children: [
3730
3588
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "font-medium", children: [
3731
- formatInZone(s.startUtc, zone, {
3589
+ chunkBIXHB4LV_cjs.formatInZone(s.startUtc, zone, {
3732
3590
  weekday: "short",
3733
3591
  day: "numeric",
3734
3592
  month: "short"
@@ -3853,8 +3711,8 @@ function RoomFinder({
3853
3711
  )
3854
3712
  ] });
3855
3713
  }
3856
- var mondayFirstName = (day) => formatPlainDate(`2024-01-0${day + 1}`, { weekday: "long" });
3857
- var sundayFirstName = (day) => formatPlainDate(day === 0 ? "2023-12-31" : `2024-01-0${day}`, { weekday: "long" });
3714
+ var mondayFirstName = (day) => chunkBIXHB4LV_cjs.formatPlainDate(`2024-01-0${day + 1}`, { weekday: "long" });
3715
+ var sundayFirstName = (day) => chunkBIXHB4LV_cjs.formatPlainDate(day === 0 ? "2023-12-31" : `2024-01-0${day}`, { weekday: "long" });
3858
3716
  var VIEWS = ["day", "work_week", "week", "month", "agenda", "year"];
3859
3717
  var DURATIONS = [15, 30, 45, 60, 90, 120];
3860
3718
  var viewName = (v, l) => ({
@@ -4107,12 +3965,361 @@ function CalendarSettingsForm({
4107
3965
  );
4108
3966
  }
4109
3967
 
3968
+ // src/calendar/print-layout.ts
3969
+ function printRange(view, date, weekStart = 1, agendaDays = 30) {
3970
+ if (view === "day") return { from: date, to: chunkBIXHB4LV_cjs.addDays(date, 1) };
3971
+ if (view === "agenda") return { from: date, to: chunkBIXHB4LV_cjs.addDays(date, agendaDays) };
3972
+ if (view === "week") {
3973
+ const from2 = chunkBIXHB4LV_cjs.startOfWeek(date, weekStart);
3974
+ return { from: from2, to: chunkBIXHB4LV_cjs.addDays(from2, 7) };
3975
+ }
3976
+ const first = `${date.slice(0, 8)}01`;
3977
+ const from = chunkBIXHB4LV_cjs.startOfWeek(first, weekStart);
3978
+ const nextMonth = chunkBIXHB4LV_cjs.addMonths(first, 1);
3979
+ const lead = (chunkBIXHB4LV_cjs.dayOfWeekSun0(nextMonth) - weekStart + 7) % 7;
3980
+ const to = lead === 0 ? nextMonth : chunkBIXHB4LV_cjs.addDays(nextMonth, 7 - lead);
3981
+ return { from, to };
3982
+ }
3983
+ function eachDay(from, to) {
3984
+ const out = [];
3985
+ for (let d = from; d < to; d = chunkBIXHB4LV_cjs.addDays(d, 1)) out.push(d);
3986
+ return out;
3987
+ }
3988
+ function eventDays(e, zone) {
3989
+ if (e.all_day) {
3990
+ const start = e.start.date ?? chunkBIXHB4LV_cjs.utcToDate(e.start_utc, "UTC");
3991
+ const endExcl = e.end.date ?? chunkBIXHB4LV_cjs.addDays(start, 1);
3992
+ return eachDay(start, endExcl > start ? endExcl : chunkBIXHB4LV_cjs.addDays(start, 1));
3993
+ }
3994
+ const startDay = chunkBIXHB4LV_cjs.utcToDate(e.start_utc, zone);
3995
+ const lastInstant = new Date(
3996
+ Math.max(new Date(e.start_utc).getTime(), new Date(e.end_utc).getTime() - 1)
3997
+ );
3998
+ const endDay = chunkBIXHB4LV_cjs.utcToDate(lastInstant, zone);
3999
+ return eachDay(startDay, chunkBIXHB4LV_cjs.addDays(endDay, 1));
4000
+ }
4001
+ function timeLabel(e, day, zone) {
4002
+ if (e.all_day) return "All day";
4003
+ const fmt = new Intl.DateTimeFormat(void 0, {
4004
+ timeZone: zone,
4005
+ hour: "numeric",
4006
+ minute: "2-digit"
4007
+ });
4008
+ const sDay = chunkBIXHB4LV_cjs.utcToDate(e.start_utc, zone);
4009
+ const eDay = chunkBIXHB4LV_cjs.utcToDate(new Date(new Date(e.end_utc).getTime() - 1), zone);
4010
+ const s = sDay === day ? fmt.format(new Date(e.start_utc)) : "\u2026";
4011
+ const en = eDay === day ? fmt.format(new Date(e.end_utc)) : "\u2026";
4012
+ return `${s} \u2013 ${en}`;
4013
+ }
4014
+ function eventsByDay(events, zone, from, to) {
4015
+ const map = /* @__PURE__ */ new Map();
4016
+ for (const e of events) {
4017
+ for (const d of eventDays(e, zone)) {
4018
+ if (d < from || d >= to) continue;
4019
+ const list = map.get(d) ?? [];
4020
+ list.push(e);
4021
+ map.set(d, list);
4022
+ }
4023
+ }
4024
+ for (const list of map.values())
4025
+ list.sort(
4026
+ (a, b) => Number(b.all_day) - Number(a.all_day) || new Date(a.start_utc).getTime() - new Date(b.start_utc).getTime() || a.title.localeCompare(b.title)
4027
+ );
4028
+ return map;
4029
+ }
4030
+ function heading(view, date, from, to) {
4031
+ const last = chunkBIXHB4LV_cjs.addDays(to, -1);
4032
+ if (view === "day")
4033
+ return chunkBIXHB4LV_cjs.formatPlainDate(from, {
4034
+ weekday: "long",
4035
+ year: "numeric",
4036
+ month: "long",
4037
+ day: "numeric"
4038
+ });
4039
+ if (view === "month")
4040
+ return chunkBIXHB4LV_cjs.formatPlainDate(`${date.slice(0, 7)}-15`, { year: "numeric", month: "long" });
4041
+ const opts = { year: "numeric", month: "short", day: "numeric" };
4042
+ return `${chunkBIXHB4LV_cjs.formatPlainDate(from, opts)} \u2013 ${chunkBIXHB4LV_cjs.formatPlainDate(last, opts)}`;
4043
+ }
4044
+ var STYLE = `
4045
+ .arbi-calendar-print { color: #111; background: #fff; font: 12px/1.4 system-ui, -apple-system, 'Segoe UI', sans-serif; }
4046
+ .arbi-calendar-print h1 { font-size: 18px; margin: 0 0 8px; }
4047
+ .arbi-calendar-print .acp-zone { color: #555; font-size: 11px; margin-bottom: 12px; }
4048
+ .arbi-calendar-print table { border-collapse: collapse; width: 100%; table-layout: fixed; }
4049
+ .arbi-calendar-print th, .arbi-calendar-print td { border: 1px solid #bbb; padding: 4px; vertical-align: top; text-align: left; }
4050
+ .arbi-calendar-print th { background: #f3f3f3; font-weight: 600; }
4051
+ .arbi-calendar-print .acp-day { break-inside: avoid; margin-bottom: 10px; }
4052
+ .arbi-calendar-print .acp-day h2 { font-size: 13px; margin: 0 0 4px; border-bottom: 1px solid #bbb; padding-bottom: 2px; }
4053
+ .arbi-calendar-print .acp-ev { display: flex; gap: 6px; margin: 2px 0; break-inside: avoid; }
4054
+ .arbi-calendar-print .acp-time { flex: 0 0 auto; min-width: 92px; color: #333; font-variant-numeric: tabular-nums; }
4055
+ .arbi-calendar-print .acp-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 4px; vertical-align: middle; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
4056
+ .arbi-calendar-print .acp-meta { color: #555; font-size: 11px; white-space: pre-line; }
4057
+ .arbi-calendar-print .acp-muted { color: #888; }
4058
+ .arbi-calendar-print .acp-cancelled { text-decoration: line-through; color: #888; }
4059
+ .arbi-calendar-print .acp-month td { height: 90px; }
4060
+ .arbi-calendar-print .acp-month .acp-out { color: #aaa; }
4061
+ .arbi-calendar-print .acp-cell-ev { font-size: 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
4062
+ @media screen { .arbi-calendar-print[data-screen-hidden='true'] { display: none; } }
4063
+ @media print {
4064
+ @page { margin: 12mm; }
4065
+ body.arbi-printing-calendar > *:not(.arbi-calendar-print-host) { display: none !important; }
4066
+ body.arbi-printing-calendar .arbi-calendar-print-host { display: block !important; }
4067
+ body.arbi-printing-calendar .arbi-calendar-print { display: block !important; }
4068
+ }
4069
+ `;
4070
+ function CalendarPrint({
4071
+ events,
4072
+ view,
4073
+ date,
4074
+ timeZone,
4075
+ weekStart = 1,
4076
+ agendaDays = 30,
4077
+ title,
4078
+ calendars,
4079
+ screenHidden = false,
4080
+ showDetails = true
4081
+ }) {
4082
+ const zone = chunkBIXHB4LV_cjs.safeZone(timeZone, chunkBIXHB4LV_cjs.detectTimeZone());
4083
+ const { from, to } = printRange(view, date, weekStart, agendaDays);
4084
+ const byDay = eventsByDay(events, zone, from, to);
4085
+ const color = (e) => e.color || calendars?.find((c) => c.id === e.calendar_id)?.color || "#3b82f6";
4086
+ const label = (e) => e.restricted && !e.title ? "Busy" : e.title || "(no title)";
4087
+ const evLine = (e, day, details) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "acp-ev", "data-testid": "calendar-print-event", children: [
4088
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "acp-time", children: timeLabel(e, day, zone) }),
4089
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
4090
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "acp-dot", style: { background: color(e) } }),
4091
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: e.status === "cancelled" ? "acp-cancelled" : void 0, children: label(e) }),
4092
+ details && e.location && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "acp-meta", children: e.location }),
4093
+ details && e.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "acp-meta", children: e.description.slice(0, 500) })
4094
+ ] })
4095
+ ] }, `${e.instance_id}-${day}`);
4096
+ let body;
4097
+ if (view === "agenda" || view === "day") {
4098
+ const days = view === "day" ? [from] : eachDay(from, to).filter((d) => byDay.has(d));
4099
+ body = days.length ? days.map((d) => /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "acp-day", children: [
4100
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { children: chunkBIXHB4LV_cjs.formatPlainDate(d, { weekday: "long", month: "long", day: "numeric" }) }),
4101
+ (byDay.get(d) ?? []).map((e) => evLine(e, d, showDetails)),
4102
+ !byDay.get(d)?.length && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "acp-muted", children: "No events" })
4103
+ ] }, d)) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "acp-muted", children: "No events" });
4104
+ } else if (view === "week") {
4105
+ const days = eachDay(from, to);
4106
+ body = /* @__PURE__ */ jsxRuntime.jsxs("table", { children: [
4107
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { children: days.map((d) => /* @__PURE__ */ jsxRuntime.jsx("th", { children: chunkBIXHB4LV_cjs.formatPlainDate(d, { weekday: "short", day: "numeric", month: "short" }) }, d)) }) }),
4108
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { children: days.map((d) => /* @__PURE__ */ jsxRuntime.jsx("td", { style: { height: 480 }, children: (byDay.get(d) ?? []).map((e) => evLine(e, d, false)) }, d)) }) })
4109
+ ] });
4110
+ } else {
4111
+ const days = eachDay(from, to);
4112
+ const weeks = [];
4113
+ for (let i = 0; i < days.length; i += 7) weeks.push(days.slice(i, i + 7));
4114
+ const month = date.slice(0, 7);
4115
+ body = /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "acp-month", children: [
4116
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { children: weeks[0].map((d) => /* @__PURE__ */ jsxRuntime.jsx("th", { children: chunkBIXHB4LV_cjs.formatPlainDate(d, { weekday: "short" }) }, d)) }) }),
4117
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: weeks.map((w) => /* @__PURE__ */ jsxRuntime.jsx("tr", { children: w.map((d) => /* @__PURE__ */ jsxRuntime.jsxs("td", { className: d.slice(0, 7) === month ? void 0 : "acp-out", children: [
4118
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: Number(d.slice(8)) }),
4119
+ (byDay.get(d) ?? []).slice(0, 6).map((e) => /* @__PURE__ */ jsxRuntime.jsxs(
4120
+ "div",
4121
+ {
4122
+ className: "acp-cell-ev",
4123
+ "data-testid": "calendar-print-event",
4124
+ children: [
4125
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "acp-dot", style: { background: color(e) } }),
4126
+ !e.all_day && `${timeLabel(e, d, zone).split(" \u2013 ")[0]} `,
4127
+ label(e)
4128
+ ]
4129
+ },
4130
+ `${e.instance_id}-${d}`
4131
+ )),
4132
+ (byDay.get(d)?.length ?? 0) > 6 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "acp-cell-ev acp-muted", children: [
4133
+ "+",
4134
+ (byDay.get(d)?.length ?? 0) - 6,
4135
+ " more"
4136
+ ] })
4137
+ ] }, d)) }, w[0])) })
4138
+ ] });
4139
+ }
4140
+ return /* @__PURE__ */ jsxRuntime.jsxs(
4141
+ "div",
4142
+ {
4143
+ className: "arbi-calendar-print",
4144
+ "data-screen-hidden": screenHidden ? "true" : "false",
4145
+ "data-testid": "calendar-print",
4146
+ children: [
4147
+ /* @__PURE__ */ jsxRuntime.jsx("style", { children: STYLE }),
4148
+ /* @__PURE__ */ jsxRuntime.jsx("h1", { children: title ?? heading(view, date, from, to) }),
4149
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "acp-zone", children: [
4150
+ "Times in ",
4151
+ zone.replace(/_/g, " ")
4152
+ ] }),
4153
+ body
4154
+ ]
4155
+ }
4156
+ );
4157
+ }
4158
+ function printCalendar(props) {
4159
+ const host = document.createElement("div");
4160
+ host.className = "arbi-calendar-print-host";
4161
+ host.style.display = "none";
4162
+ document.body.appendChild(host);
4163
+ let unmount = null;
4164
+ if (props) {
4165
+ const root = client.createRoot(host);
4166
+ reactDom.flushSync(() => root.render(/* @__PURE__ */ jsxRuntime.jsx(CalendarPrint, { ...props, screenHidden: false })));
4167
+ unmount = () => root.unmount();
4168
+ } else {
4169
+ const existing = document.querySelector(".arbi-calendar-print");
4170
+ if (!existing) {
4171
+ host.remove();
4172
+ return;
4173
+ }
4174
+ const clone = existing.cloneNode(true);
4175
+ clone.setAttribute("data-screen-hidden", "false");
4176
+ host.appendChild(clone);
4177
+ }
4178
+ document.body.classList.add("arbi-printing-calendar");
4179
+ let done = false;
4180
+ const cleanup = () => {
4181
+ if (done) return;
4182
+ done = true;
4183
+ window.removeEventListener("afterprint", cleanup);
4184
+ document.body.classList.remove("arbi-printing-calendar");
4185
+ unmount?.();
4186
+ host.remove();
4187
+ };
4188
+ window.addEventListener("afterprint", cleanup);
4189
+ try {
4190
+ window.print();
4191
+ } finally {
4192
+ if (!("onafterprint" in window)) setTimeout(cleanup, 1e3);
4193
+ }
4194
+ }
4195
+
4196
+ // src/calendar/booking-slots.ts
4197
+ function formatSlotTime(instant, zone, locale) {
4198
+ return chunkBIXHB4LV_cjs.formatInZone(instant, zone, { hour: "numeric", minute: "2-digit" }, locale);
4199
+ }
4200
+ function formatDayLabel(date, locale) {
4201
+ return chunkBIXHB4LV_cjs.formatPlainDate(date, { weekday: "long", month: "long", day: "numeric" }, locale);
4202
+ }
4203
+ function groupSlotsByDay(slots, zone, locale) {
4204
+ const tz = chunkBIXHB4LV_cjs.safeZone(zone, chunkBIXHB4LV_cjs.detectTimeZone());
4205
+ const byDay = /* @__PURE__ */ new Map();
4206
+ const sorted = [...slots].sort((a, b) => new Date(a).getTime() - new Date(b).getTime());
4207
+ for (const start of sorted) {
4208
+ const date = chunkBIXHB4LV_cjs.utcToDate(start, tz);
4209
+ const list = byDay.get(date) ?? [];
4210
+ list.push({ start, label: formatSlotTime(start, tz, locale) });
4211
+ byDay.set(date, list);
4212
+ }
4213
+ return [...byDay.entries()].map(([date, list]) => ({
4214
+ date,
4215
+ label: formatDayLabel(date, locale),
4216
+ slots: list
4217
+ }));
4218
+ }
4219
+ function formatSlotRange(start, end, zone, locale) {
4220
+ const tz = chunkBIXHB4LV_cjs.safeZone(zone, chunkBIXHB4LV_cjs.detectTimeZone());
4221
+ const fmt = new Intl.DateTimeFormat(locale, {
4222
+ timeZone: tz,
4223
+ weekday: "long",
4224
+ month: "long",
4225
+ day: "numeric",
4226
+ hour: "numeric",
4227
+ minute: "2-digit"
4228
+ });
4229
+ const s = new Date(start);
4230
+ const e = new Date(end);
4231
+ const range = fmt.formatRange;
4232
+ const text = range ? range.call(fmt, s, e) : `${fmt.format(s)} \u2013 ${formatSlotTime(end, tz, locale)}`;
4233
+ return `${text} (${tz.replace(/_/g, " ")})`;
4234
+ }
4235
+ function zoneOptions(current) {
4236
+ const zones = chunkBIXHB4LV_cjs.listTimeZones();
4237
+ return zones.includes(current) ? zones : [current, ...zones];
4238
+ }
4239
+
4240
+ Object.defineProperty(exports, "addDays", {
4241
+ enumerable: true,
4242
+ get: function () { return chunkBIXHB4LV_cjs.addDays; }
4243
+ });
4244
+ Object.defineProperty(exports, "addMonths", {
4245
+ enumerable: true,
4246
+ get: function () { return chunkBIXHB4LV_cjs.addMonths; }
4247
+ });
4248
+ Object.defineProperty(exports, "convertWall", {
4249
+ enumerable: true,
4250
+ get: function () { return chunkBIXHB4LV_cjs.convertWall; }
4251
+ });
4252
+ Object.defineProperty(exports, "detectTimeZone", {
4253
+ enumerable: true,
4254
+ get: function () { return chunkBIXHB4LV_cjs.detectTimeZone; }
4255
+ });
4256
+ Object.defineProperty(exports, "diffDays", {
4257
+ enumerable: true,
4258
+ get: function () { return chunkBIXHB4LV_cjs.diffDays; }
4259
+ });
4260
+ Object.defineProperty(exports, "formatInZone", {
4261
+ enumerable: true,
4262
+ get: function () { return chunkBIXHB4LV_cjs.formatInZone; }
4263
+ });
4264
+ Object.defineProperty(exports, "formatPlainDate", {
4265
+ enumerable: true,
4266
+ get: function () { return chunkBIXHB4LV_cjs.formatPlainDate; }
4267
+ });
4268
+ Object.defineProperty(exports, "isValidTimeZone", {
4269
+ enumerable: true,
4270
+ get: function () { return chunkBIXHB4LV_cjs.isValidTimeZone; }
4271
+ });
4272
+ Object.defineProperty(exports, "listTimeZones", {
4273
+ enumerable: true,
4274
+ get: function () { return chunkBIXHB4LV_cjs.listTimeZones; }
4275
+ });
4276
+ Object.defineProperty(exports, "safeZone", {
4277
+ enumerable: true,
4278
+ get: function () { return chunkBIXHB4LV_cjs.safeZone; }
4279
+ });
4280
+ Object.defineProperty(exports, "startOfWeek", {
4281
+ enumerable: true,
4282
+ get: function () { return chunkBIXHB4LV_cjs.startOfWeek; }
4283
+ });
4284
+ Object.defineProperty(exports, "todayInZone", {
4285
+ enumerable: true,
4286
+ get: function () { return chunkBIXHB4LV_cjs.todayInZone; }
4287
+ });
4288
+ Object.defineProperty(exports, "utcToDate", {
4289
+ enumerable: true,
4290
+ get: function () { return chunkBIXHB4LV_cjs.utcToDate; }
4291
+ });
4292
+ Object.defineProperty(exports, "utcToTime", {
4293
+ enumerable: true,
4294
+ get: function () { return chunkBIXHB4LV_cjs.utcToTime; }
4295
+ });
4296
+ Object.defineProperty(exports, "utcToWall", {
4297
+ enumerable: true,
4298
+ get: function () { return chunkBIXHB4LV_cjs.utcToWall; }
4299
+ });
4300
+ Object.defineProperty(exports, "wallToUtc", {
4301
+ enumerable: true,
4302
+ get: function () { return chunkBIXHB4LV_cjs.wallToUtc; }
4303
+ });
4304
+ Object.defineProperty(exports, "zoneCity", {
4305
+ enumerable: true,
4306
+ get: function () { return chunkBIXHB4LV_cjs.zoneCity; }
4307
+ });
4308
+ Object.defineProperty(exports, "zoneOffsetLabel", {
4309
+ enumerable: true,
4310
+ get: function () { return chunkBIXHB4LV_cjs.zoneOffsetLabel; }
4311
+ });
4312
+ Object.defineProperty(exports, "zoneOffsetMinutes", {
4313
+ enumerable: true,
4314
+ get: function () { return chunkBIXHB4LV_cjs.zoneOffsetMinutes; }
4315
+ });
4110
4316
  exports.ARBI_WEBINAR_LABEL = ARBI_WEBINAR_LABEL;
4111
4317
  exports.CALENDAR_COLORS = CALENDAR_COLORS;
4112
4318
  exports.CALENDAR_DEFAULT_LABELS = CALENDAR_DEFAULT_LABELS;
4113
4319
  exports.CALENDAR_NARROW_WIDTH = CALENDAR_NARROW_WIDTH;
4114
4320
  exports.CalendarGrid = CalendarGrid;
4115
4321
  exports.CalendarList = CalendarList;
4322
+ exports.CalendarPrint = CalendarPrint;
4116
4323
  exports.CalendarSettingsForm = CalendarSettingsForm;
4117
4324
  exports.DEFAULT_RECURRENCE_DESCRIBE_LABELS = DEFAULT_RECURRENCE_DESCRIBE_LABELS;
4118
4325
  exports.DEFAULT_RECURRENCE_EDITOR_LABELS = DEFAULT_RECURRENCE_EDITOR_LABELS;
@@ -4127,38 +4334,36 @@ exports.RoomFinder = RoomFinder;
4127
4334
  exports.SchedulingAssistant = SchedulingAssistant;
4128
4335
  exports.ScopeDialog = ScopeDialog;
4129
4336
  exports.TimeZonePicker = TimeZonePicker;
4130
- exports.addDays = addDays;
4131
- exports.addMonths = addMonths;
4132
4337
  exports.allDayInclusiveEnd = allDayInclusiveEnd;
4133
4338
  exports.attendeeKey = attendeeKey;
4134
4339
  exports.buildRRule = buildRRule;
4135
4340
  exports.contrastText = contrastText;
4136
- exports.convertWall = convertWall;
4137
4341
  exports.dayWindow = dayWindow;
4138
4342
  exports.defaultRecurrenceForm = defaultRecurrenceForm;
4139
4343
  exports.describeRecurrence = describeRecurrence;
4140
- exports.detectTimeZone = detectTimeZone;
4141
- exports.diffDays = diffDays;
4142
4344
  exports.draftFromSlot = draftFromSlot;
4143
4345
  exports.draftRangeUtc = draftRangeUtc;
4144
4346
  exports.effectiveCalendarView = effectiveCalendarView;
4347
+ exports.eventDays = eventDays;
4145
4348
  exports.eventStateClasses = eventStateClasses;
4349
+ exports.eventsByDay = eventsByDay;
4350
+ exports.formatDayLabel = formatDayLabel;
4146
4351
  exports.formatEventWhen = formatEventWhen;
4147
- exports.formatInZone = formatInZone;
4148
- exports.formatPlainDate = formatPlainDate;
4149
4352
  exports.formatReminder = formatReminder;
4353
+ exports.formatSlotRange = formatSlotRange;
4354
+ exports.formatSlotTime = formatSlotTime;
4150
4355
  exports.formatZoneLabel = formatZoneLabel;
4151
4356
  exports.getTemporalTimeZonePlugin = getTemporalTimeZonePlugin;
4357
+ exports.groupSlotsByDay = groupSlotsByDay;
4152
4358
  exports.hourTicks = hourTicks;
4153
4359
  exports.isAllDayDraft = isAllDayDraft;
4154
- exports.isValidTimeZone = isValidTimeZone;
4155
4360
  exports.isWebinarConference = isWebinarConference;
4156
- exports.listTimeZones = listTimeZones;
4157
4361
  exports.outsideIntervals = outsideIntervals;
4158
4362
  exports.parseRRule = parseRRule;
4159
4363
  exports.placeIntervals = placeIntervals;
4364
+ exports.printCalendar = printCalendar;
4365
+ exports.printRange = printRange;
4160
4366
  exports.reminderToMinutes = reminderToMinutes;
4161
- exports.safeZone = safeZone;
4162
4367
  exports.setDraftAllDay = setDraftAllDay;
4163
4368
  exports.setDraftEnd = setDraftEnd;
4164
4369
  exports.setDraftStart = setDraftStart;
@@ -4166,18 +4371,10 @@ exports.setPosOf = setPosOf;
4166
4371
  exports.specDate = specDate;
4167
4372
  exports.specTime = specTime;
4168
4373
  exports.splitReminderMinutes = splitReminderMinutes;
4169
- exports.startOfWeek = startOfWeek;
4170
4374
  exports.toBusinessHours = toBusinessHours;
4171
- exports.todayInZone = todayInZone;
4172
- exports.utcToDate = utcToDate;
4173
- exports.utcToTime = utcToTime;
4174
- exports.utcToWall = utcToWall;
4175
4375
  exports.validateDraft = validateDraft;
4176
- exports.wallToUtc = wallToUtc;
4177
4376
  exports.weekdayOf = weekdayOf;
4178
4377
  exports.workWeekHiddenDays = workWeekHiddenDays;
4179
- exports.zoneCity = zoneCity;
4180
- exports.zoneOffsetLabel = zoneOffsetLabel;
4181
- exports.zoneOffsetMinutes = zoneOffsetMinutes;
4378
+ exports.zoneOptions = zoneOptions;
4182
4379
  //# sourceMappingURL=index.cjs.map
4183
4380
  //# sourceMappingURL=index.cjs.map