@hanzo/booker 8.3.0 → 8.3.3

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 (166) hide show
  1. package/README.md +6 -6
  2. package/dist/cjs/Booker.js +23 -0
  3. package/dist/cjs/Booker.js.map +1 -0
  4. package/dist/cjs/BookingForm.js +32 -0
  5. package/dist/cjs/BookingForm.js.map +1 -0
  6. package/dist/cjs/CalendarEmbed.js +20 -0
  7. package/dist/cjs/CalendarEmbed.js.map +1 -0
  8. package/dist/cjs/Confirmation.js +34 -0
  9. package/dist/cjs/Confirmation.js.map +1 -0
  10. package/dist/cjs/EventHeader.js +31 -0
  11. package/dist/cjs/EventHeader.js.map +1 -0
  12. package/dist/cjs/MonthCalendar.js +24 -0
  13. package/dist/cjs/MonthCalendar.js.map +1 -0
  14. package/dist/cjs/TimeSlots.js +21 -0
  15. package/dist/cjs/TimeSlots.js.map +1 -0
  16. package/dist/cjs/client.js +113 -0
  17. package/dist/cjs/client.js.map +1 -0
  18. package/dist/cjs/hooks.js +121 -0
  19. package/dist/cjs/hooks.js.map +1 -0
  20. package/dist/cjs/index.js +55 -0
  21. package/dist/cjs/index.js.map +1 -0
  22. package/dist/cjs/package.json +1 -0
  23. package/dist/cjs/time.js +129 -0
  24. package/dist/cjs/time.js.map +1 -0
  25. package/dist/cjs/useBooker.js +135 -0
  26. package/dist/cjs/useBooker.js.map +1 -0
  27. package/dist/esm/Booker.js +20 -0
  28. package/dist/esm/Booker.js.map +1 -0
  29. package/dist/esm/BookingForm.js +29 -0
  30. package/dist/esm/BookingForm.js.map +1 -0
  31. package/dist/esm/CalendarEmbed.js +17 -0
  32. package/dist/esm/CalendarEmbed.js.map +1 -0
  33. package/dist/esm/Confirmation.js +31 -0
  34. package/dist/esm/Confirmation.js.map +1 -0
  35. package/dist/esm/EventHeader.js +28 -0
  36. package/dist/esm/EventHeader.js.map +1 -0
  37. package/dist/esm/MonthCalendar.js +21 -0
  38. package/dist/esm/MonthCalendar.js.map +1 -0
  39. package/dist/esm/TimeSlots.js +18 -0
  40. package/dist/esm/TimeSlots.js.map +1 -0
  41. package/dist/esm/client.js +104 -0
  42. package/dist/esm/client.js.map +1 -0
  43. package/dist/esm/hooks.js +115 -0
  44. package/dist/esm/hooks.js.map +1 -0
  45. package/dist/esm/index.js +18 -13
  46. package/dist/esm/index.js.map +1 -1
  47. package/dist/esm/time.js +113 -0
  48. package/dist/esm/time.js.map +1 -0
  49. package/dist/esm/useBooker.js +132 -0
  50. package/dist/esm/useBooker.js.map +1 -0
  51. package/package.json +28 -28
  52. package/src/Booker.tsx +7 -7
  53. package/src/BookingForm.tsx +2 -2
  54. package/src/CalendarEmbed.tsx +7 -7
  55. package/src/Confirmation.tsx +4 -4
  56. package/src/EventHeader.tsx +1 -1
  57. package/src/MonthCalendar.tsx +1 -1
  58. package/src/TimeSlots.tsx +2 -2
  59. package/src/hooks.ts +1 -1
  60. package/src/index.ts +11 -11
  61. package/src/useBooker.ts +9 -4
  62. package/types/Booker.d.ts +2 -2
  63. package/types/Booker.d.ts.map +1 -1
  64. package/types/BookingForm.d.ts +2 -2
  65. package/types/BookingForm.d.ts.map +1 -1
  66. package/types/CalendarEmbed.d.ts +2 -2
  67. package/types/CalendarEmbed.d.ts.map +1 -1
  68. package/types/Confirmation.d.ts +2 -2
  69. package/types/Confirmation.d.ts.map +1 -1
  70. package/types/EventHeader.d.ts +2 -2
  71. package/types/EventHeader.d.ts.map +1 -1
  72. package/types/MonthCalendar.d.ts +1 -1
  73. package/types/MonthCalendar.d.ts.map +1 -1
  74. package/types/TimeSlots.d.ts +2 -2
  75. package/types/TimeSlots.d.ts.map +1 -1
  76. package/types/client.d.ts.map +1 -1
  77. package/types/hooks.d.ts +1 -1
  78. package/types/hooks.d.ts.map +1 -1
  79. package/types/index.d.ts +11 -11
  80. package/types/index.d.ts.map +1 -1
  81. package/types/useBooker.d.ts +3 -3
  82. package/types/useBooker.d.ts.map +1 -1
  83. package/dist/cjs/Booker.cjs +0 -153
  84. package/dist/cjs/Booker.native.js +0 -158
  85. package/dist/cjs/Booker.native.js.map +0 -1
  86. package/dist/cjs/BookingForm.cjs +0 -197
  87. package/dist/cjs/BookingForm.native.js +0 -203
  88. package/dist/cjs/BookingForm.native.js.map +0 -1
  89. package/dist/cjs/CalendarEmbed.cjs +0 -121
  90. package/dist/cjs/CalendarEmbed.native.js +0 -125
  91. package/dist/cjs/CalendarEmbed.native.js.map +0 -1
  92. package/dist/cjs/Confirmation.cjs +0 -177
  93. package/dist/cjs/Confirmation.native.js +0 -185
  94. package/dist/cjs/Confirmation.native.js.map +0 -1
  95. package/dist/cjs/EventHeader.cjs +0 -112
  96. package/dist/cjs/EventHeader.native.js +0 -118
  97. package/dist/cjs/EventHeader.native.js.map +0 -1
  98. package/dist/cjs/MonthCalendar.cjs +0 -177
  99. package/dist/cjs/MonthCalendar.native.js +0 -191
  100. package/dist/cjs/MonthCalendar.native.js.map +0 -1
  101. package/dist/cjs/TimeSlots.cjs +0 -119
  102. package/dist/cjs/TimeSlots.native.js +0 -126
  103. package/dist/cjs/TimeSlots.native.js.map +0 -1
  104. package/dist/cjs/client.cjs +0 -136
  105. package/dist/cjs/client.native.js +0 -267
  106. package/dist/cjs/client.native.js.map +0 -1
  107. package/dist/cjs/hooks.cjs +0 -193
  108. package/dist/cjs/hooks.native.js +0 -221
  109. package/dist/cjs/hooks.native.js.map +0 -1
  110. package/dist/cjs/index.cjs +0 -71
  111. package/dist/cjs/index.native.js +0 -74
  112. package/dist/cjs/index.native.js.map +0 -1
  113. package/dist/cjs/time.cjs +0 -145
  114. package/dist/cjs/time.native.js +0 -150
  115. package/dist/cjs/time.native.js.map +0 -1
  116. package/dist/cjs/useBooker.cjs +0 -151
  117. package/dist/cjs/useBooker.native.js +0 -173
  118. package/dist/cjs/useBooker.native.js.map +0 -1
  119. package/dist/esm/Booker.mjs +0 -128
  120. package/dist/esm/Booker.mjs.map +0 -1
  121. package/dist/esm/Booker.native.js +0 -130
  122. package/dist/esm/Booker.native.js.map +0 -1
  123. package/dist/esm/BookingForm.mjs +0 -172
  124. package/dist/esm/BookingForm.mjs.map +0 -1
  125. package/dist/esm/BookingForm.native.js +0 -175
  126. package/dist/esm/BookingForm.native.js.map +0 -1
  127. package/dist/esm/CalendarEmbed.mjs +0 -96
  128. package/dist/esm/CalendarEmbed.mjs.map +0 -1
  129. package/dist/esm/CalendarEmbed.native.js +0 -97
  130. package/dist/esm/CalendarEmbed.native.js.map +0 -1
  131. package/dist/esm/Confirmation.mjs +0 -152
  132. package/dist/esm/Confirmation.mjs.map +0 -1
  133. package/dist/esm/Confirmation.native.js +0 -157
  134. package/dist/esm/Confirmation.native.js.map +0 -1
  135. package/dist/esm/EventHeader.mjs +0 -87
  136. package/dist/esm/EventHeader.mjs.map +0 -1
  137. package/dist/esm/EventHeader.native.js +0 -90
  138. package/dist/esm/EventHeader.native.js.map +0 -1
  139. package/dist/esm/MonthCalendar.mjs +0 -152
  140. package/dist/esm/MonthCalendar.mjs.map +0 -1
  141. package/dist/esm/MonthCalendar.native.js +0 -163
  142. package/dist/esm/MonthCalendar.native.js.map +0 -1
  143. package/dist/esm/TimeSlots.mjs +0 -94
  144. package/dist/esm/TimeSlots.mjs.map +0 -1
  145. package/dist/esm/TimeSlots.native.js +0 -98
  146. package/dist/esm/TimeSlots.native.js.map +0 -1
  147. package/dist/esm/client.mjs +0 -104
  148. package/dist/esm/client.mjs.map +0 -1
  149. package/dist/esm/client.native.js +0 -232
  150. package/dist/esm/client.native.js.map +0 -1
  151. package/dist/esm/hooks.mjs +0 -165
  152. package/dist/esm/hooks.mjs.map +0 -1
  153. package/dist/esm/hooks.native.js +0 -190
  154. package/dist/esm/hooks.native.js.map +0 -1
  155. package/dist/esm/index.mjs +0 -13
  156. package/dist/esm/index.mjs.map +0 -1
  157. package/dist/esm/index.native.js +0 -13
  158. package/dist/esm/index.native.js.map +0 -1
  159. package/dist/esm/time.mjs +0 -107
  160. package/dist/esm/time.mjs.map +0 -1
  161. package/dist/esm/time.native.js +0 -109
  162. package/dist/esm/time.native.js.map +0 -1
  163. package/dist/esm/useBooker.mjs +0 -126
  164. package/dist/esm/useBooker.mjs.map +0 -1
  165. package/dist/esm/useBooker.native.js +0 -145
  166. package/dist/esm/useBooker.native.js.map +0 -1
@@ -1,190 +0,0 @@
1
- import { useCallback, useEffect, useRef, useState } from "react";
2
- import { createBooking, fetchBooking, fetchEventType, fetchSlots, CalendarError } from "./client.native.js";
3
- function _instanceof(left, right) {
4
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
5
- return !!right[Symbol.hasInstance](left);
6
- } else {
7
- return left instanceof right;
8
- }
9
- }
10
- function useEventType(api, eventSlug, username) {
11
- var [state, setState] = useState({
12
- data: null,
13
- loading: true,
14
- error: null
15
- });
16
- useEffect(function () {
17
- var ctrl = new AbortController();
18
- setState({
19
- data: null,
20
- loading: true,
21
- error: null
22
- });
23
- fetchEventType(api, eventSlug, username, ctrl.signal).then(function (data) {
24
- return setState({
25
- data,
26
- loading: false,
27
- error: null
28
- });
29
- }).catch(function (err) {
30
- if (ctrl.signal.aborted) return;
31
- setState({
32
- data: null,
33
- loading: false,
34
- error: errorText(err)
35
- });
36
- });
37
- return function () {
38
- return ctrl.abort();
39
- };
40
- }, [api, eventSlug, username]);
41
- return state;
42
- }
43
- function useAvailableSlots(api, query) {
44
- var {
45
- eventTypeSlug,
46
- username,
47
- startTime,
48
- endTime,
49
- timeZone,
50
- enabled = true
51
- } = query;
52
- var [state, setState] = useState({
53
- data: null,
54
- loading: enabled,
55
- error: null
56
- });
57
- var [nonce, setNonce] = useState(0);
58
- var refetch = useCallback(function () {
59
- return setNonce(function (n) {
60
- return n + 1;
61
- });
62
- }, []);
63
- useEffect(function () {
64
- if (!enabled) return;
65
- var ctrl = new AbortController();
66
- setState(function (s) {
67
- return {
68
- data: s.data,
69
- loading: true,
70
- error: null
71
- };
72
- });
73
- fetchSlots(api, {
74
- eventTypeSlug,
75
- username,
76
- startTime,
77
- endTime,
78
- timeZone
79
- }, ctrl.signal).then(function (data) {
80
- return setState({
81
- data,
82
- loading: false,
83
- error: null
84
- });
85
- }).catch(function (err) {
86
- if (ctrl.signal.aborted) return;
87
- setState({
88
- data: null,
89
- loading: false,
90
- error: errorText(err)
91
- });
92
- });
93
- return function () {
94
- return ctrl.abort();
95
- };
96
- }, [api, eventTypeSlug, username, startTime, endTime, timeZone, enabled, nonce]);
97
- return {
98
- ...state,
99
- refetch
100
- };
101
- }
102
- function useCreateBooking(api) {
103
- var [submitting, setSubmitting] = useState(false);
104
- var [error, setError] = useState(null);
105
- var [conflict, setConflict] = useState(false);
106
- var mounted = useRef(true);
107
- useEffect(function () {
108
- mounted.current = true;
109
- return function () {
110
- mounted.current = false;
111
- };
112
- }, []);
113
- var reset = useCallback(function () {
114
- setError(null);
115
- setConflict(false);
116
- }, []);
117
- var submit = useCallback(async function (input) {
118
- setSubmitting(true);
119
- setError(null);
120
- setConflict(false);
121
- try {
122
- var booking = await createBooking(api, input);
123
- return {
124
- ok: true,
125
- booking
126
- };
127
- } catch (err) {
128
- var isConflict = _instanceof(err, CalendarError) && err.conflict;
129
- var message = errorText(err);
130
- if (mounted.current) {
131
- setError(message);
132
- setConflict(isConflict);
133
- }
134
- return {
135
- ok: false,
136
- conflict: isConflict,
137
- message
138
- };
139
- } finally {
140
- if (mounted.current) setSubmitting(false);
141
- }
142
- }, [api]);
143
- return {
144
- submit,
145
- submitting,
146
- error,
147
- conflict,
148
- reset
149
- };
150
- }
151
- function useBooking(api, uid) {
152
- var [state, setState] = useState({
153
- data: null,
154
- loading: !!uid,
155
- error: null
156
- });
157
- useEffect(function () {
158
- if (!uid) return;
159
- var ctrl = new AbortController();
160
- setState({
161
- data: null,
162
- loading: true,
163
- error: null
164
- });
165
- fetchBooking(api, uid, ctrl.signal).then(function (data) {
166
- return setState({
167
- data,
168
- loading: false,
169
- error: null
170
- });
171
- }).catch(function (err) {
172
- if (ctrl.signal.aborted) return;
173
- setState({
174
- data: null,
175
- loading: false,
176
- error: errorText(err)
177
- });
178
- });
179
- return function () {
180
- return ctrl.abort();
181
- };
182
- }, [api, uid]);
183
- return state;
184
- }
185
- function errorText(err) {
186
- if (_instanceof(err, Error)) return err.message;
187
- return "Something went wrong";
188
- }
189
- export { useAvailableSlots, useBooking, useCreateBooking, useEventType };
190
- //# sourceMappingURL=hooks.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useCallback","useEffect","useRef","useState","createBooking","fetchBooking","fetchEventType","fetchSlots","CalendarError","_instanceof","left","right","Symbol","hasInstance","useEventType","api","eventSlug","username","state","setState","data","loading","error","ctrl","AbortController","signal","then","catch","err","aborted","errorText","abort","useAvailableSlots","query","eventTypeSlug","startTime","endTime","timeZone","enabled","nonce","setNonce","refetch","n","s","useCreateBooking","submitting","setSubmitting","setError","conflict","setConflict"],"sources":["../../src/hooks.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,13 +0,0 @@
1
- import { Booker } from "./Booker.mjs";
2
- import { CalendarEmbed } from "./CalendarEmbed.mjs";
3
- import { Confirmation } from "./Confirmation.mjs";
4
- import { EventHeader } from "./EventHeader.mjs";
5
- import { MonthCalendar } from "./MonthCalendar.mjs";
6
- import { TimeSlots } from "./TimeSlots.mjs";
7
- import { BookingForm } from "./BookingForm.mjs";
8
- import { useBooker } from "./useBooker.mjs";
9
- import { useEventType, useAvailableSlots, useCreateBooking, useBooking } from "./hooks.mjs";
10
- import { DEFAULT_API_URL, CAL_API_VERSION, CalendarError, fetchEventType, fetchSlots, createBooking, fetchBooking, cancelBooking } from "./client.mjs";
11
- import { visitorTimeZone, ymd, monthMatrix, monthRange, weekdayLabels, formatMonthLabel, formatDayLong, formatSlotTime, formatBookingWhen, dateFromKey, startOfMonth, addMonths, sameMonth, isBeforeToday } from "./time.mjs";
12
- export { Booker, BookingForm, CAL_API_VERSION, CalendarEmbed, CalendarError, Confirmation, DEFAULT_API_URL, EventHeader, MonthCalendar, TimeSlots, addMonths, cancelBooking, createBooking, dateFromKey, fetchBooking, fetchEventType, fetchSlots, formatBookingWhen, formatDayLong, formatMonthLabel, formatSlotTime, isBeforeToday, monthMatrix, monthRange, sameMonth, startOfMonth, useAvailableSlots, useBooker, useBooking, useCreateBooking, useEventType, visitorTimeZone, weekdayLabels, ymd };
13
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["Booker","CalendarEmbed","Confirmation","EventHeader","MonthCalendar","TimeSlots","BookingForm","useBooker","useEventType","useAvailableSlots","useCreateBooking","useBooking","DEFAULT_API_URL","CAL_API_VERSION","CalendarError","fetchEventType","fetchSlots","createBooking","fetchBooking","cancelBooking","visitorTimeZone","ymd","monthMatrix","monthRange","weekdayLabels","formatMonthLabel","formatDayLong","formatSlotTime","formatBookingWhen","dateFromKey","startOfMonth","addMonths","sameMonth","isBeforeToday"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAGA,SAASA,MAAA,QAAgC;AACzC,SAASC,aAAA,QAA8C;AACvD,SAASC,YAAA,QAA4C;AAGrD,SAASC,WAAA,QAA0C;AACnD,SAASC,aAAA,QAA8C;AACvD,SAASC,SAAA,QAAsC;AAC/C,SAASC,WAAA,QAA0C;AAGnD,SACEC,SAAA,QAIK;AACP,SACEC,YAAA,EACAC,iBAAA,EACAC,gBAAA,EACAC,UAAA,QAMK;AAGP,SACEC,eAAA,EACAC,eAAA,EACAC,aAAA,EACAC,cAAA,EACAC,UAAA,EACAC,aAAA,EACAC,YAAA,EACAC,aAAA,QAWK;AAGP,SACEC,eAAA,EACAC,GAAA,EACAC,WAAA,EACAC,UAAA,EACAC,aAAA,EACAC,gBAAA,EACAC,aAAA,EACAC,cAAA,EACAC,iBAAA,EACAC,WAAA,EACAC,YAAA,EACAC,SAAA,EACAC,SAAA,EACAC,aAAA,QAEK","ignoreList":[]}
@@ -1,13 +0,0 @@
1
- import { Booker } from "./Booker.native.js";
2
- import { CalendarEmbed } from "./CalendarEmbed.native.js";
3
- import { Confirmation } from "./Confirmation.native.js";
4
- import { EventHeader } from "./EventHeader.native.js";
5
- import { MonthCalendar } from "./MonthCalendar.native.js";
6
- import { TimeSlots } from "./TimeSlots.native.js";
7
- import { BookingForm } from "./BookingForm.native.js";
8
- import { useBooker } from "./useBooker.native.js";
9
- import { useEventType, useAvailableSlots, useCreateBooking, useBooking } from "./hooks.native.js";
10
- import { DEFAULT_API_URL, CAL_API_VERSION, CalendarError, fetchEventType, fetchSlots, createBooking, fetchBooking, cancelBooking } from "./client.native.js";
11
- import { visitorTimeZone, ymd, monthMatrix, monthRange, weekdayLabels, formatMonthLabel, formatDayLong, formatSlotTime, formatBookingWhen, dateFromKey, startOfMonth, addMonths, sameMonth, isBeforeToday } from "./time.native.js";
12
- export { Booker, BookingForm, CAL_API_VERSION, CalendarEmbed, CalendarError, Confirmation, DEFAULT_API_URL, EventHeader, MonthCalendar, TimeSlots, addMonths, cancelBooking, createBooking, dateFromKey, fetchBooking, fetchEventType, fetchSlots, formatBookingWhen, formatDayLong, formatMonthLabel, formatSlotTime, isBeforeToday, monthMatrix, monthRange, sameMonth, startOfMonth, useAvailableSlots, useBooker, useBooking, useCreateBooking, useEventType, visitorTimeZone, weekdayLabels, ymd };
13
- //# sourceMappingURL=index.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["Booker","CalendarEmbed","Confirmation","EventHeader","MonthCalendar","TimeSlots","BookingForm","useBooker","useEventType","useAvailableSlots","useCreateBooking","useBooking","DEFAULT_API_URL","CAL_API_VERSION","CalendarError","fetchEventType","fetchSlots","createBooking","fetchBooking","cancelBooking","visitorTimeZone","ymd","monthMatrix","monthRange","weekdayLabels","formatMonthLabel","formatDayLong","formatSlotTime","formatBookingWhen","dateFromKey","startOfMonth","addMonths","sameMonth","isBeforeToday"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAGA,SAASA,MAAA,QAAgC;AACzC,SAASC,aAAA,QAA8C;AACvD,SAASC,YAAA,QAA4C;AAGrD,SAASC,WAAA,QAA0C;AACnD,SAASC,aAAA,QAA8C;AACvD,SAASC,SAAA,QAAsC;AAC/C,SAASC,WAAA,QAA0C;AAGnD,SAAAC,SAAA;AAAA,SACEC,YAAA,EAAAC,iBAAA,EAAAC,gBAAA,EAAAC,UAAA;AAAA,SAIKC,eAAA,EAAAC,eAAA,EAAAC,aAAA,EAAAC,cAAA,EAAAC,UAAA,EAAAC,aAAA,EAAAC,YAAA,EAAAC,aAAA;AACP,SAAAC,eAAA,EAAAC,GAAA,EAAAC,WAAA,EAAAC,UAAA,EAAAC,aAAA,EAAAC,gBAAA,EAAAC,aAAA,EAAAC,cAAA,EAAAC,iBAAA,EAAAC,WAAA,EAAAC,YAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,aAAA;AAAA,SAEEjC,MAAA,EACAM,WAAA,EACAO,eAAA,EAAAZ,aAMK,EAGPa,aAAA,EACEZ,YAAA,EACAU,eAAA,EACAT,WAAA,EACAC,aAAA,EACAC,SAAA,EACA0B,SAAA,EACAZ,aAAA,EACAF,aAAA,EAAAY,WAWK,EAGPX,YAAA,EACEH,cAAA,EACAC,UAAA,EACAY,iBAAA,EACAF,aAAA,EACAD,gBAAA,EACAE,cAAA,EACAM,aAAA,EACAX,WAAA,EACAC,UAAA,EACAS,SAAA,EACAF,YAAA,EACArB,iBAAA,EACAF,SAAA,EACAI,UAAA,EAAAD,gBAEK,E","ignoreList":[]}
package/dist/esm/time.mjs DELETED
@@ -1,107 +0,0 @@
1
- function visitorTimeZone() {
2
- try {
3
- return Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
4
- } catch {
5
- return "UTC";
6
- }
7
- }
8
- function ymd(d) {
9
- const y = d.getFullYear();
10
- const m = String(d.getMonth() + 1).padStart(2, "0");
11
- const day = String(d.getDate()).padStart(2, "0");
12
- return `${y}-${m}-${day}`;
13
- }
14
- function startOfMonth(d) {
15
- return new Date(d.getFullYear(), d.getMonth(), 1);
16
- }
17
- function addMonths(d, n) {
18
- return new Date(d.getFullYear(), d.getMonth() + n, 1);
19
- }
20
- function sameMonth(a, b) {
21
- return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();
22
- }
23
- function isBeforeToday(key) {
24
- return key < ymd(/* @__PURE__ */new Date());
25
- }
26
- function monthMatrix(viewDate, weekStartsOn = 0) {
27
- const year = viewDate.getFullYear();
28
- const month = viewDate.getMonth();
29
- const firstWeekday = new Date(year, month, 1).getDay();
30
- const startOffset = (firstWeekday - weekStartsOn + 7) % 7;
31
- const cells = [];
32
- for (let i = 0; i < 42; i++) {
33
- const date = new Date(year, month, 1 - startOffset + i);
34
- cells.push({
35
- date,
36
- key: ymd(date),
37
- inMonth: date.getMonth() === month
38
- });
39
- }
40
- return cells;
41
- }
42
- function monthRange(viewDate) {
43
- const year = viewDate.getFullYear();
44
- const month = viewDate.getMonth();
45
- const startOfView = new Date(year, month, 1, 0, 0, 0, 0);
46
- const now = /* @__PURE__ */new Date();
47
- const start = startOfView.getTime() > now.getTime() ? startOfView : now;
48
- const endOfView = new Date(year, month + 1, 0, 23, 59, 59, 999);
49
- return {
50
- startTime: start.toISOString(),
51
- endTime: endOfView.toISOString()
52
- };
53
- }
54
- function weekdayLabels(weekStartsOn = 0) {
55
- const fmt = new Intl.DateTimeFormat(void 0, {
56
- weekday: "short"
57
- });
58
- const out = [];
59
- for (let i = 0; i < 7; i++) {
60
- const d = new Date(2023, 0, 1 + (i + weekStartsOn) % 7);
61
- out.push(fmt.format(d));
62
- }
63
- return out;
64
- }
65
- function formatMonthLabel(d) {
66
- return new Intl.DateTimeFormat(void 0, {
67
- month: "long",
68
- year: "numeric"
69
- }).format(d);
70
- }
71
- function formatDayLong(d) {
72
- return new Intl.DateTimeFormat(void 0, {
73
- weekday: "long",
74
- month: "long",
75
- day: "numeric"
76
- }).format(d);
77
- }
78
- function formatSlotTime(iso, timeZone) {
79
- return new Intl.DateTimeFormat(void 0, {
80
- hour: "numeric",
81
- minute: "2-digit",
82
- timeZone
83
- }).format(new Date(iso));
84
- }
85
- function formatBookingWhen(iso, timeZone) {
86
- const at = new Date(iso);
87
- const date = new Intl.DateTimeFormat(void 0, {
88
- weekday: "long",
89
- month: "long",
90
- day: "numeric",
91
- year: "numeric",
92
- timeZone
93
- }).format(at);
94
- const time = new Intl.DateTimeFormat(void 0, {
95
- hour: "numeric",
96
- minute: "2-digit",
97
- timeZoneName: "short",
98
- timeZone
99
- }).format(at);
100
- return `${date} at ${time}`;
101
- }
102
- function dateFromKey(key) {
103
- const [y, m, d] = key.split("-").map(Number);
104
- return new Date(y, (m ?? 1) - 1, d ?? 1, 12, 0, 0, 0);
105
- }
106
- export { addMonths, dateFromKey, formatBookingWhen, formatDayLong, formatMonthLabel, formatSlotTime, isBeforeToday, monthMatrix, monthRange, sameMonth, startOfMonth, visitorTimeZone, weekdayLabels, ymd };
107
- //# sourceMappingURL=time.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["visitorTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","ymd","d","y","getFullYear","m","String","getMonth","padStart","day","getDate","startOfMonth","Date","addMonths","n","sameMonth","a","b","isBeforeToday","key","monthMatrix","viewDate","weekStartsOn","year","month","firstWeekday","getDay","startOffset","cells","i","date","push","inMonth","monthRange","startOfView","now","start","getTime","endOfView","startTime","toISOString","endTime","weekdayLabels","fmt","weekday","out","format","formatMonthLabel","formatDayLong","formatSlotTime","iso","hour","minute","formatBookingWhen","at","time","timeZoneName","dateFromKey","split","map","Number"],"sources":["../../src/time.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,109 +0,0 @@
1
- function visitorTimeZone() {
2
- try {
3
- return Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
4
- } catch (e) {
5
- return "UTC";
6
- }
7
- }
8
- function ymd(d) {
9
- var y = d.getFullYear();
10
- var m = String(d.getMonth() + 1).padStart(2, "0");
11
- var day = String(d.getDate()).padStart(2, "0");
12
- return `${y}-${m}-${day}`;
13
- }
14
- function startOfMonth(d) {
15
- return new Date(d.getFullYear(), d.getMonth(), 1);
16
- }
17
- function addMonths(d, n) {
18
- return new Date(d.getFullYear(), d.getMonth() + n, 1);
19
- }
20
- function sameMonth(a, b) {
21
- return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();
22
- }
23
- function isBeforeToday(key) {
24
- return key < ymd(/* @__PURE__ */new Date());
25
- }
26
- function monthMatrix(viewDate) {
27
- var weekStartsOn = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
28
- var year = viewDate.getFullYear();
29
- var month = viewDate.getMonth();
30
- var firstWeekday = new Date(year, month, 1).getDay();
31
- var startOffset = (firstWeekday - weekStartsOn + 7) % 7;
32
- var cells = [];
33
- for (var i = 0; i < 42; i++) {
34
- var date = new Date(year, month, 1 - startOffset + i);
35
- cells.push({
36
- date,
37
- key: ymd(date),
38
- inMonth: date.getMonth() === month
39
- });
40
- }
41
- return cells;
42
- }
43
- function monthRange(viewDate) {
44
- var year = viewDate.getFullYear();
45
- var month = viewDate.getMonth();
46
- var startOfView = new Date(year, month, 1, 0, 0, 0, 0);
47
- var now = /* @__PURE__ */new Date();
48
- var start = startOfView.getTime() > now.getTime() ? startOfView : now;
49
- var endOfView = new Date(year, month + 1, 0, 23, 59, 59, 999);
50
- return {
51
- startTime: start.toISOString(),
52
- endTime: endOfView.toISOString()
53
- };
54
- }
55
- function weekdayLabels() {
56
- var weekStartsOn = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
57
- var fmt = new Intl.DateTimeFormat(void 0, {
58
- weekday: "short"
59
- });
60
- var out = [];
61
- for (var i = 0; i < 7; i++) {
62
- var d = new Date(2023, 0, 1 + (i + weekStartsOn) % 7);
63
- out.push(fmt.format(d));
64
- }
65
- return out;
66
- }
67
- function formatMonthLabel(d) {
68
- return new Intl.DateTimeFormat(void 0, {
69
- month: "long",
70
- year: "numeric"
71
- }).format(d);
72
- }
73
- function formatDayLong(d) {
74
- return new Intl.DateTimeFormat(void 0, {
75
- weekday: "long",
76
- month: "long",
77
- day: "numeric"
78
- }).format(d);
79
- }
80
- function formatSlotTime(iso, timeZone) {
81
- return new Intl.DateTimeFormat(void 0, {
82
- hour: "numeric",
83
- minute: "2-digit",
84
- timeZone
85
- }).format(new Date(iso));
86
- }
87
- function formatBookingWhen(iso, timeZone) {
88
- var at = new Date(iso);
89
- var date = new Intl.DateTimeFormat(void 0, {
90
- weekday: "long",
91
- month: "long",
92
- day: "numeric",
93
- year: "numeric",
94
- timeZone
95
- }).format(at);
96
- var time = new Intl.DateTimeFormat(void 0, {
97
- hour: "numeric",
98
- minute: "2-digit",
99
- timeZoneName: "short",
100
- timeZone
101
- }).format(at);
102
- return `${date} at ${time}`;
103
- }
104
- function dateFromKey(key) {
105
- var [y, m, d] = key.split("-").map(Number);
106
- return new Date(y, (m !== null && m !== void 0 ? m : 1) - 1, d !== null && d !== void 0 ? d : 1, 12, 0, 0, 0);
107
- }
108
- export { addMonths, dateFromKey, formatBookingWhen, formatDayLong, formatMonthLabel, formatSlotTime, isBeforeToday, monthMatrix, monthRange, sameMonth, startOfMonth, visitorTimeZone, weekdayLabels, ymd };
109
- //# sourceMappingURL=time.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["visitorTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","e","ymd","d","y","getFullYear","m","String","getMonth","padStart","day","getDate","startOfMonth","Date","addMonths","n","sameMonth","a","b","isBeforeToday","key","monthMatrix","viewDate","weekStartsOn","arguments","length","year","month","firstWeekday","getDay","startOffset","cells","i","date","push","inMonth","monthRange","startOfView","now","start","getTime","endOfView","startTime","toISOString","endTime","weekdayLabels","fmt","weekday","out","format","formatMonthLabel","formatDayLong","formatSlotTime","iso","hour","minute","formatBookingWhen","at"],"sources":["../../src/time.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,126 +0,0 @@
1
- import { useEffect, useMemo, useState } from "react";
2
- import { DEFAULT_API_URL } from "./client.mjs";
3
- import { useAvailableSlots, useCreateBooking, useEventType } from "./hooks.mjs";
4
- import { addMonths, monthRange, startOfMonth, visitorTimeZone } from "./time.mjs";
5
- function useBooker(opts) {
6
- const api = opts.apiUrl ?? DEFAULT_API_URL;
7
- const timeZone = opts.timeZone ?? visitorTimeZone();
8
- const weekStartsOn = opts.weekStartsOn ?? 0;
9
- const event = useEventType(api, opts.eventSlug, opts.host);
10
- const [viewDate, setViewDate] = useState(() => startOfMonth(/* @__PURE__ */new Date()));
11
- const {
12
- startTime,
13
- endTime
14
- } = useMemo(() => monthRange(viewDate), [viewDate]);
15
- const slots = useAvailableSlots(api, {
16
- eventTypeSlug: opts.eventSlug,
17
- username: opts.host,
18
- startTime,
19
- endTime,
20
- timeZone,
21
- enabled: !!event.data
22
- });
23
- const [selectedDay, setSelectedDay] = useState(null);
24
- const [selectedSlot, setSelectedSlot] = useState(null);
25
- const [phase, setPhase] = useState("pick");
26
- const [booking, setBooking] = useState(null);
27
- const create = useCreateBooking(api);
28
- const availableKeys = useMemo(() => {
29
- const map = slots.data ?? {};
30
- return new Set(Object.keys(map).filter(k => (map[k]?.length ?? 0) > 0));
31
- }, [slots.data]);
32
- const daySlots = useMemo(() => {
33
- if (!selectedDay) return [];
34
- return slots.data?.[selectedDay] ?? [];
35
- }, [slots.data, selectedDay]);
36
- useEffect(() => {
37
- if (!opts.autoSelectFirst) return;
38
- if (selectedDay && availableKeys.has(selectedDay)) return;
39
- const first = [...availableKeys].sort()[0];
40
- if (first) {
41
- setSelectedDay(first);
42
- setSelectedSlot(null);
43
- }
44
- }, [opts.autoSelectFirst, availableKeys, selectedDay]);
45
- const now = startOfMonth(/* @__PURE__ */new Date());
46
- const atFirstMonth = viewDate.getFullYear() === now.getFullYear() && viewDate.getMonth() === now.getMonth();
47
- const goPrevMonth = () => {
48
- if (atFirstMonth) return;
49
- setViewDate(d => addMonths(d, -1));
50
- setSelectedDay(null);
51
- setSelectedSlot(null);
52
- };
53
- const goNextMonth = () => {
54
- setViewDate(d => addMonths(d, 1));
55
- setSelectedDay(null);
56
- setSelectedSlot(null);
57
- };
58
- const selectDay = key => {
59
- setSelectedDay(key);
60
- setSelectedSlot(null);
61
- };
62
- const selectSlot = iso => {
63
- setSelectedSlot(iso);
64
- setPhase("form");
65
- create.reset();
66
- };
67
- const back = () => {
68
- setPhase("pick");
69
- setSelectedSlot(null);
70
- create.reset();
71
- };
72
- const reset = () => {
73
- setBooking(null);
74
- setSelectedSlot(null);
75
- setSelectedDay(null);
76
- setPhase("pick");
77
- create.reset();
78
- slots.refetch();
79
- };
80
- const submit = async responses => {
81
- if (!selectedSlot) return;
82
- const result = await create.submit({
83
- eventTypeSlug: opts.eventSlug,
84
- username: opts.host,
85
- start: selectedSlot,
86
- timeZone,
87
- responses
88
- });
89
- if (result.ok) {
90
- setBooking(result.booking);
91
- setPhase("done");
92
- opts.onBooked?.(result.booking);
93
- } else if (result.conflict) {
94
- slots.refetch();
95
- setSelectedSlot(null);
96
- setPhase("pick");
97
- }
98
- };
99
- return {
100
- api,
101
- timeZone,
102
- weekStartsOn,
103
- event,
104
- slots,
105
- viewDate,
106
- availableKeys,
107
- selectedDay,
108
- daySlots,
109
- selectedSlot,
110
- phase,
111
- booking,
112
- submitting: create.submitting,
113
- error: create.error,
114
- conflict: create.conflict,
115
- goPrevMonth,
116
- goNextMonth,
117
- atFirstMonth,
118
- selectDay,
119
- selectSlot,
120
- submit,
121
- back,
122
- reset
123
- };
124
- }
125
- export { useBooker };
126
- //# sourceMappingURL=useBooker.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useEffect","useMemo","useState","DEFAULT_API_URL","useAvailableSlots","useCreateBooking","useEventType","addMonths","monthRange","startOfMonth","visitorTimeZone","useBooker","opts","api","apiUrl","timeZone","weekStartsOn","event","eventSlug","host","viewDate","setViewDate","Date","startTime","endTime","slots","eventTypeSlug","username","enabled","data","selectedDay","setSelectedDay","selectedSlot","setSelectedSlot","phase","setPhase","booking","setBooking","create","availableKeys","map","Set","Object","keys","filter","k","length","daySlots","autoSelectFirst","has","first","sort","now","atFirstMonth","getFullYear","getMonth","goPrevMonth","d","goNextMonth","selectDay","key","selectSlot","iso","reset","back","refetch","submit","responses","result","start","ok","onBooked","conflict","submitting","error"],"sources":["../../src/useBooker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}