@hanzo/booker 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -0
- package/dist/cjs/Booker.cjs +153 -0
- package/dist/cjs/Booker.native.js +158 -0
- package/dist/cjs/Booker.native.js.map +1 -0
- package/dist/cjs/BookingForm.cjs +197 -0
- package/dist/cjs/BookingForm.native.js +203 -0
- package/dist/cjs/BookingForm.native.js.map +1 -0
- package/dist/cjs/CalendarEmbed.cjs +121 -0
- package/dist/cjs/CalendarEmbed.native.js +125 -0
- package/dist/cjs/CalendarEmbed.native.js.map +1 -0
- package/dist/cjs/Confirmation.cjs +177 -0
- package/dist/cjs/Confirmation.native.js +185 -0
- package/dist/cjs/Confirmation.native.js.map +1 -0
- package/dist/cjs/EventHeader.cjs +112 -0
- package/dist/cjs/EventHeader.native.js +118 -0
- package/dist/cjs/EventHeader.native.js.map +1 -0
- package/dist/cjs/MonthCalendar.cjs +177 -0
- package/dist/cjs/MonthCalendar.native.js +191 -0
- package/dist/cjs/MonthCalendar.native.js.map +1 -0
- package/dist/cjs/TimeSlots.cjs +119 -0
- package/dist/cjs/TimeSlots.native.js +126 -0
- package/dist/cjs/TimeSlots.native.js.map +1 -0
- package/dist/cjs/client.cjs +136 -0
- package/dist/cjs/client.native.js +267 -0
- package/dist/cjs/client.native.js.map +1 -0
- package/dist/cjs/hooks.cjs +193 -0
- package/dist/cjs/hooks.native.js +221 -0
- package/dist/cjs/hooks.native.js.map +1 -0
- package/dist/cjs/index.cjs +71 -0
- package/dist/cjs/index.native.js +74 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/time.cjs +145 -0
- package/dist/cjs/time.native.js +150 -0
- package/dist/cjs/time.native.js.map +1 -0
- package/dist/cjs/useBooker.cjs +151 -0
- package/dist/cjs/useBooker.native.js +173 -0
- package/dist/cjs/useBooker.native.js.map +1 -0
- package/dist/esm/Booker.mjs +128 -0
- package/dist/esm/Booker.mjs.map +1 -0
- package/dist/esm/Booker.native.js +130 -0
- package/dist/esm/Booker.native.js.map +1 -0
- package/dist/esm/BookingForm.mjs +172 -0
- package/dist/esm/BookingForm.mjs.map +1 -0
- package/dist/esm/BookingForm.native.js +175 -0
- package/dist/esm/BookingForm.native.js.map +1 -0
- package/dist/esm/CalendarEmbed.mjs +96 -0
- package/dist/esm/CalendarEmbed.mjs.map +1 -0
- package/dist/esm/CalendarEmbed.native.js +97 -0
- package/dist/esm/CalendarEmbed.native.js.map +1 -0
- package/dist/esm/Confirmation.mjs +152 -0
- package/dist/esm/Confirmation.mjs.map +1 -0
- package/dist/esm/Confirmation.native.js +157 -0
- package/dist/esm/Confirmation.native.js.map +1 -0
- package/dist/esm/EventHeader.mjs +87 -0
- package/dist/esm/EventHeader.mjs.map +1 -0
- package/dist/esm/EventHeader.native.js +90 -0
- package/dist/esm/EventHeader.native.js.map +1 -0
- package/dist/esm/MonthCalendar.mjs +152 -0
- package/dist/esm/MonthCalendar.mjs.map +1 -0
- package/dist/esm/MonthCalendar.native.js +163 -0
- package/dist/esm/MonthCalendar.native.js.map +1 -0
- package/dist/esm/TimeSlots.mjs +94 -0
- package/dist/esm/TimeSlots.mjs.map +1 -0
- package/dist/esm/TimeSlots.native.js +98 -0
- package/dist/esm/TimeSlots.native.js.map +1 -0
- package/dist/esm/client.mjs +104 -0
- package/dist/esm/client.mjs.map +1 -0
- package/dist/esm/client.native.js +232 -0
- package/dist/esm/client.native.js.map +1 -0
- package/dist/esm/hooks.mjs +165 -0
- package/dist/esm/hooks.mjs.map +1 -0
- package/dist/esm/hooks.native.js +190 -0
- package/dist/esm/hooks.native.js.map +1 -0
- package/dist/esm/index.js +13 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.mjs +13 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +13 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/time.mjs +107 -0
- package/dist/esm/time.mjs.map +1 -0
- package/dist/esm/time.native.js +109 -0
- package/dist/esm/time.native.js.map +1 -0
- package/dist/esm/useBooker.mjs +126 -0
- package/dist/esm/useBooker.mjs.map +1 -0
- package/dist/esm/useBooker.native.js +145 -0
- package/dist/esm/useBooker.native.js.map +1 -0
- package/package.json +61 -0
- package/src/Booker.tsx +152 -0
- package/src/BookingForm.tsx +180 -0
- package/src/CalendarEmbed.tsx +111 -0
- package/src/Confirmation.tsx +145 -0
- package/src/EventHeader.tsx +85 -0
- package/src/MonthCalendar.tsx +179 -0
- package/src/TimeSlots.tsx +102 -0
- package/src/client.ts +218 -0
- package/src/hooks.ts +180 -0
- package/src/index.ts +72 -0
- package/src/time.ts +131 -0
- package/src/useBooker.ts +187 -0
- package/types/Booker.d.ts +16 -0
- package/types/Booker.d.ts.map +1 -0
- package/types/BookingForm.d.ts +13 -0
- package/types/BookingForm.d.ts.map +1 -0
- package/types/CalendarEmbed.d.ts +15 -0
- package/types/CalendarEmbed.d.ts.map +1 -0
- package/types/Confirmation.d.ts +12 -0
- package/types/Confirmation.d.ts.map +1 -0
- package/types/EventHeader.d.ts +10 -0
- package/types/EventHeader.d.ts.map +1 -0
- package/types/MonthCalendar.d.ts +14 -0
- package/types/MonthCalendar.d.ts.map +1 -0
- package/types/TimeSlots.d.ts +15 -0
- package/types/TimeSlots.d.ts.map +1 -0
- package/types/client.d.ts +77 -0
- package/types/client.d.ts.map +1 -0
- package/types/hooks.d.ts +43 -0
- package/types/hooks.d.ts.map +1 -0
- package/types/index.d.ts +12 -0
- package/types/index.d.ts.map +1 -0
- package/types/time.d.ts +38 -0
- package/types/time.d.ts.map +1 -0
- package/types/useBooker.d.ts +41 -0
- package/types/useBooker.d.ts.map +1 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
import { createBooking, fetchBooking, fetchEventType, fetchSlots, CalendarError } from "./client.mjs";
|
|
3
|
+
function useEventType(api, eventSlug, username) {
|
|
4
|
+
const [state, setState] = useState({
|
|
5
|
+
data: null,
|
|
6
|
+
loading: true,
|
|
7
|
+
error: null
|
|
8
|
+
});
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
const ctrl = new AbortController();
|
|
11
|
+
setState({
|
|
12
|
+
data: null,
|
|
13
|
+
loading: true,
|
|
14
|
+
error: null
|
|
15
|
+
});
|
|
16
|
+
fetchEventType(api, eventSlug, username, ctrl.signal).then(data => setState({
|
|
17
|
+
data,
|
|
18
|
+
loading: false,
|
|
19
|
+
error: null
|
|
20
|
+
})).catch(err => {
|
|
21
|
+
if (ctrl.signal.aborted) return;
|
|
22
|
+
setState({
|
|
23
|
+
data: null,
|
|
24
|
+
loading: false,
|
|
25
|
+
error: errorText(err)
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
return () => ctrl.abort();
|
|
29
|
+
}, [api, eventSlug, username]);
|
|
30
|
+
return state;
|
|
31
|
+
}
|
|
32
|
+
function useAvailableSlots(api, query) {
|
|
33
|
+
const {
|
|
34
|
+
eventTypeSlug,
|
|
35
|
+
username,
|
|
36
|
+
startTime,
|
|
37
|
+
endTime,
|
|
38
|
+
timeZone,
|
|
39
|
+
enabled = true
|
|
40
|
+
} = query;
|
|
41
|
+
const [state, setState] = useState({
|
|
42
|
+
data: null,
|
|
43
|
+
loading: enabled,
|
|
44
|
+
error: null
|
|
45
|
+
});
|
|
46
|
+
const [nonce, setNonce] = useState(0);
|
|
47
|
+
const refetch = useCallback(() => setNonce(n => n + 1), []);
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (!enabled) return;
|
|
50
|
+
const ctrl = new AbortController();
|
|
51
|
+
setState(s => ({
|
|
52
|
+
data: s.data,
|
|
53
|
+
loading: true,
|
|
54
|
+
error: null
|
|
55
|
+
}));
|
|
56
|
+
fetchSlots(api, {
|
|
57
|
+
eventTypeSlug,
|
|
58
|
+
username,
|
|
59
|
+
startTime,
|
|
60
|
+
endTime,
|
|
61
|
+
timeZone
|
|
62
|
+
}, ctrl.signal).then(data => setState({
|
|
63
|
+
data,
|
|
64
|
+
loading: false,
|
|
65
|
+
error: null
|
|
66
|
+
})).catch(err => {
|
|
67
|
+
if (ctrl.signal.aborted) return;
|
|
68
|
+
setState({
|
|
69
|
+
data: null,
|
|
70
|
+
loading: false,
|
|
71
|
+
error: errorText(err)
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
return () => ctrl.abort();
|
|
75
|
+
}, [api, eventTypeSlug, username, startTime, endTime, timeZone, enabled, nonce]);
|
|
76
|
+
return {
|
|
77
|
+
...state,
|
|
78
|
+
refetch
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function useCreateBooking(api) {
|
|
82
|
+
const [submitting, setSubmitting] = useState(false);
|
|
83
|
+
const [error, setError] = useState(null);
|
|
84
|
+
const [conflict, setConflict] = useState(false);
|
|
85
|
+
const mounted = useRef(true);
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
mounted.current = true;
|
|
88
|
+
return () => {
|
|
89
|
+
mounted.current = false;
|
|
90
|
+
};
|
|
91
|
+
}, []);
|
|
92
|
+
const reset = useCallback(() => {
|
|
93
|
+
setError(null);
|
|
94
|
+
setConflict(false);
|
|
95
|
+
}, []);
|
|
96
|
+
const submit = useCallback(async input => {
|
|
97
|
+
setSubmitting(true);
|
|
98
|
+
setError(null);
|
|
99
|
+
setConflict(false);
|
|
100
|
+
try {
|
|
101
|
+
const booking = await createBooking(api, input);
|
|
102
|
+
return {
|
|
103
|
+
ok: true,
|
|
104
|
+
booking
|
|
105
|
+
};
|
|
106
|
+
} catch (err) {
|
|
107
|
+
const isConflict = err instanceof CalendarError && err.conflict;
|
|
108
|
+
const message = errorText(err);
|
|
109
|
+
if (mounted.current) {
|
|
110
|
+
setError(message);
|
|
111
|
+
setConflict(isConflict);
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
ok: false,
|
|
115
|
+
conflict: isConflict,
|
|
116
|
+
message
|
|
117
|
+
};
|
|
118
|
+
} finally {
|
|
119
|
+
if (mounted.current) setSubmitting(false);
|
|
120
|
+
}
|
|
121
|
+
}, [api]);
|
|
122
|
+
return {
|
|
123
|
+
submit,
|
|
124
|
+
submitting,
|
|
125
|
+
error,
|
|
126
|
+
conflict,
|
|
127
|
+
reset
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function useBooking(api, uid) {
|
|
131
|
+
const [state, setState] = useState({
|
|
132
|
+
data: null,
|
|
133
|
+
loading: !!uid,
|
|
134
|
+
error: null
|
|
135
|
+
});
|
|
136
|
+
useEffect(() => {
|
|
137
|
+
if (!uid) return;
|
|
138
|
+
const ctrl = new AbortController();
|
|
139
|
+
setState({
|
|
140
|
+
data: null,
|
|
141
|
+
loading: true,
|
|
142
|
+
error: null
|
|
143
|
+
});
|
|
144
|
+
fetchBooking(api, uid, ctrl.signal).then(data => setState({
|
|
145
|
+
data,
|
|
146
|
+
loading: false,
|
|
147
|
+
error: null
|
|
148
|
+
})).catch(err => {
|
|
149
|
+
if (ctrl.signal.aborted) return;
|
|
150
|
+
setState({
|
|
151
|
+
data: null,
|
|
152
|
+
loading: false,
|
|
153
|
+
error: errorText(err)
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
return () => ctrl.abort();
|
|
157
|
+
}, [api, uid]);
|
|
158
|
+
return state;
|
|
159
|
+
}
|
|
160
|
+
function errorText(err) {
|
|
161
|
+
if (err instanceof Error) return err.message;
|
|
162
|
+
return "Something went wrong";
|
|
163
|
+
}
|
|
164
|
+
export { useAvailableSlots, useBooking, useCreateBooking, useEventType };
|
|
165
|
+
//# sourceMappingURL=hooks.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useState","createBooking","fetchBooking","fetchEventType","fetchSlots","CalendarError","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","mounted","current","reset","submit","input","booking","ok","isConflict","message","useBooking","uid","Error"],"sources":["../../src/hooks.ts"],"sourcesContent":[null],"mappings":"AAEA,SAASA,WAAA,EAAaC,SAAA,EAAWC,MAAA,EAAQC,QAAA,QAAgB;AACzD,SACEC,aAAA,EACAC,YAAA,EACAC,cAAA,EACAC,UAAA,EACAC,aAAA,QAKK;AAQA,SAASC,aACdC,GAAA,EACAC,SAAA,EACAC,QAAA,EACuB;EACvB,MAAM,CAACC,KAAA,EAAOC,QAAQ,IAAIX,QAAA,CAAgC;IACxDY,IAAA,EAAM;IACNC,OAAA,EAAS;IACTC,KAAA,EAAO;EACT,CAAC;EACDhB,SAAA,CAAU,MAAM;IACd,MAAMiB,IAAA,GAAO,IAAIC,eAAA,CAAgB;IACjCL,QAAA,CAAS;MAAEC,IAAA,EAAM;MAAMC,OAAA,EAAS;MAAMC,KAAA,EAAO;IAAK,CAAC;IACnDX,cAAA,CAAeI,GAAA,EAAKC,SAAA,EAAWC,QAAA,EAAUM,IAAA,CAAKE,MAAM,EACjDC,IAAA,CAAMN,IAAA,IAASD,QAAA,CAAS;MAAEC,IAAA;MAAMC,OAAA,EAAS;MAAOC,KAAA,EAAO;IAAK,CAAC,CAAC,EAC9DK,KAAA,CAAOC,GAAA,IAAiB;MACvB,IAAIL,IAAA,CAAKE,MAAA,CAAOI,OAAA,EAAS;MACzBV,QAAA,CAAS;QAAEC,IAAA,EAAM;QAAMC,OAAA,EAAS;QAAOC,KAAA,EAAOQ,SAAA,CAAUF,GAAG;MAAE,CAAC;IAChE,CAAC;IACH,OAAO,MAAML,IAAA,CAAKQ,KAAA,CAAM;EAC1B,GAAG,CAAChB,GAAA,EAAKC,SAAA,EAAWC,QAAQ,CAAC;EAC7B,OAAOC,KAAA;AACT;AAeO,SAASc,kBAAkBjB,GAAA,EAAakB,KAAA,EAA+B;EAC5E,MAAM;IAAEC,aAAA;IAAejB,QAAA;IAAUkB,SAAA;IAAWC,OAAA;IAASC,QAAA;IAAUC,OAAA,GAAU;EAAK,IAAIL,KAAA;EAClF,MAAM,CAACf,KAAA,EAAOC,QAAQ,IAAIX,QAAA,CAAiC;IACzDY,IAAA,EAAM;IACNC,OAAA,EAASiB,OAAA;IACThB,KAAA,EAAO;EACT,CAAC;EACD,MAAM,CAACiB,KAAA,EAAOC,QAAQ,IAAIhC,QAAA,CAAS,CAAC;EACpC,MAAMiC,OAAA,GAAUpC,WAAA,CAAY,MAAMmC,QAAA,CAAUE,CAAA,IAAMA,CAAA,GAAI,CAAC,GAAG,EAAE;EAE5DpC,SAAA,CAAU,MAAM;IACd,IAAI,CAACgC,OAAA,EAAS;IACd,MAAMf,IAAA,GAAO,IAAIC,eAAA,CAAgB;IACjCL,QAAA,CAAUwB,CAAA,KAAO;MAAEvB,IAAA,EAAMuB,CAAA,CAAEvB,IAAA;MAAMC,OAAA,EAAS;MAAMC,KAAA,EAAO;IAAK,EAAE;IAC9DV,UAAA,CACEG,GAAA,EACA;MAAEmB,aAAA;MAAejB,QAAA;MAAUkB,SAAA;MAAWC,OAAA;MAASC;IAAS,GACxDd,IAAA,CAAKE,MACP,EACGC,IAAA,CAAMN,IAAA,IAASD,QAAA,CAAS;MAAEC,IAAA;MAAMC,OAAA,EAAS;MAAOC,KAAA,EAAO;IAAK,CAAC,CAAC,EAC9DK,KAAA,CAAOC,GAAA,IAAiB;MACvB,IAAIL,IAAA,CAAKE,MAAA,CAAOI,OAAA,EAAS;MACzBV,QAAA,CAAS;QAAEC,IAAA,EAAM;QAAMC,OAAA,EAAS;QAAOC,KAAA,EAAOQ,SAAA,CAAUF,GAAG;MAAE,CAAC;IAChE,CAAC;IACH,OAAO,MAAML,IAAA,CAAKQ,KAAA,CAAM;EAC1B,GAAG,CAAChB,GAAA,EAAKmB,aAAA,EAAejB,QAAA,EAAUkB,SAAA,EAAWC,OAAA,EAASC,QAAA,EAAUC,OAAA,EAASC,KAAK,CAAC;EAE/E,OAAO;IAAE,GAAGrB,KAAA;IAAOuB;EAAQ;AAC7B;AAoBO,SAASG,iBAAiB7B,GAAA,EAAiC;EAChE,MAAM,CAAC8B,UAAA,EAAYC,aAAa,IAAItC,QAAA,CAAS,KAAK;EAClD,MAAM,CAACc,KAAA,EAAOyB,QAAQ,IAAIvC,QAAA,CAAwB,IAAI;EACtD,MAAM,CAACwC,QAAA,EAAUC,WAAW,IAAIzC,QAAA,CAAS,KAAK;EAC9C,MAAM0C,OAAA,GAAU3C,MAAA,CAAO,IAAI;EAC3BD,SAAA,CAAU,MAAM;IACd4C,OAAA,CAAQC,OAAA,GAAU;IAClB,OAAO,MAAM;MACXD,OAAA,CAAQC,OAAA,GAAU;IACpB;EACF,GAAG,EAAE;EAEL,MAAMC,KAAA,GAAQ/C,WAAA,CAAY,MAAM;IAC9B0C,QAAA,CAAS,IAAI;IACbE,WAAA,CAAY,KAAK;EACnB,GAAG,EAAE;EAEL,MAAMI,MAAA,GAAShD,WAAA,CACb,MAAOiD,KAAA,IAMsB;IAC3BR,aAAA,CAAc,IAAI;IAClBC,QAAA,CAAS,IAAI;IACbE,WAAA,CAAY,KAAK;IACjB,IAAI;MACF,MAAMM,OAAA,GAAU,MAAM9C,aAAA,CAAcM,GAAA,EAAKuC,KAAK;MAC9C,OAAO;QAAEE,EAAA,EAAI;QAAMD;MAAQ;IAC7B,SAAS3B,GAAA,EAAc;MACrB,MAAM6B,UAAA,GAAa7B,GAAA,YAAef,aAAA,IAAiBe,GAAA,CAAIoB,QAAA;MACvD,MAAMU,OAAA,GAAU5B,SAAA,CAAUF,GAAG;MAC7B,IAAIsB,OAAA,CAAQC,OAAA,EAAS;QACnBJ,QAAA,CAASW,OAAO;QAChBT,WAAA,CAAYQ,UAAU;MACxB;MACA,OAAO;QAAED,EAAA,EAAI;QAAOR,QAAA,EAAUS,UAAA;QAAYC;MAAQ;IACpD,UAAE;MACA,IAAIR,OAAA,CAAQC,OAAA,EAASL,aAAA,CAAc,KAAK;IAC1C;EACF,GACA,CAAC/B,GAAG,CACN;EAEA,OAAO;IAAEsC,MAAA;IAAQR,UAAA;IAAYvB,KAAA;IAAO0B,QAAA;IAAUI;EAAM;AACtD;AAEO,SAASO,WAAW5C,GAAA,EAAa6C,GAAA,EAA8C;EACpF,MAAM,CAAC1C,KAAA,EAAOC,QAAQ,IAAIX,QAAA,CAA8B;IACtDY,IAAA,EAAM;IACNC,OAAA,EAAS,CAAC,CAACuC,GAAA;IACXtC,KAAA,EAAO;EACT,CAAC;EACDhB,SAAA,CAAU,MAAM;IACd,IAAI,CAACsD,GAAA,EAAK;IACV,MAAMrC,IAAA,GAAO,IAAIC,eAAA,CAAgB;IACjCL,QAAA,CAAS;MAAEC,IAAA,EAAM;MAAMC,OAAA,EAAS;MAAMC,KAAA,EAAO;IAAK,CAAC;IACnDZ,YAAA,CAAaK,GAAA,EAAK6C,GAAA,EAAKrC,IAAA,CAAKE,MAAM,EAC/BC,IAAA,CAAMN,IAAA,IAASD,QAAA,CAAS;MAAEC,IAAA;MAAMC,OAAA,EAAS;MAAOC,KAAA,EAAO;IAAK,CAAC,CAAC,EAC9DK,KAAA,CAAOC,GAAA,IAAiB;MACvB,IAAIL,IAAA,CAAKE,MAAA,CAAOI,OAAA,EAAS;MACzBV,QAAA,CAAS;QAAEC,IAAA,EAAM;QAAMC,OAAA,EAAS;QAAOC,KAAA,EAAOQ,SAAA,CAAUF,GAAG;MAAE,CAAC;IAChE,CAAC;IACH,OAAO,MAAML,IAAA,CAAKQ,KAAA,CAAM;EAC1B,GAAG,CAAChB,GAAA,EAAK6C,GAAG,CAAC;EACb,OAAO1C,KAAA;AACT;AAEA,SAASY,UAAUF,GAAA,EAAsB;EACvC,IAAIA,GAAA,YAAeiC,KAAA,EAAO,OAAOjC,GAAA,CAAI8B,OAAA;EACrC,OAAO;AACT","ignoreList":[]}
|
|
@@ -0,0 +1,190 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
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.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|
|
@@ -0,0 +1,107 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|
|
@@ -0,0 +1,109 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|