@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.
Files changed (124) hide show
  1. package/README.md +78 -0
  2. package/dist/cjs/Booker.cjs +153 -0
  3. package/dist/cjs/Booker.native.js +158 -0
  4. package/dist/cjs/Booker.native.js.map +1 -0
  5. package/dist/cjs/BookingForm.cjs +197 -0
  6. package/dist/cjs/BookingForm.native.js +203 -0
  7. package/dist/cjs/BookingForm.native.js.map +1 -0
  8. package/dist/cjs/CalendarEmbed.cjs +121 -0
  9. package/dist/cjs/CalendarEmbed.native.js +125 -0
  10. package/dist/cjs/CalendarEmbed.native.js.map +1 -0
  11. package/dist/cjs/Confirmation.cjs +177 -0
  12. package/dist/cjs/Confirmation.native.js +185 -0
  13. package/dist/cjs/Confirmation.native.js.map +1 -0
  14. package/dist/cjs/EventHeader.cjs +112 -0
  15. package/dist/cjs/EventHeader.native.js +118 -0
  16. package/dist/cjs/EventHeader.native.js.map +1 -0
  17. package/dist/cjs/MonthCalendar.cjs +177 -0
  18. package/dist/cjs/MonthCalendar.native.js +191 -0
  19. package/dist/cjs/MonthCalendar.native.js.map +1 -0
  20. package/dist/cjs/TimeSlots.cjs +119 -0
  21. package/dist/cjs/TimeSlots.native.js +126 -0
  22. package/dist/cjs/TimeSlots.native.js.map +1 -0
  23. package/dist/cjs/client.cjs +136 -0
  24. package/dist/cjs/client.native.js +267 -0
  25. package/dist/cjs/client.native.js.map +1 -0
  26. package/dist/cjs/hooks.cjs +193 -0
  27. package/dist/cjs/hooks.native.js +221 -0
  28. package/dist/cjs/hooks.native.js.map +1 -0
  29. package/dist/cjs/index.cjs +71 -0
  30. package/dist/cjs/index.native.js +74 -0
  31. package/dist/cjs/index.native.js.map +1 -0
  32. package/dist/cjs/time.cjs +145 -0
  33. package/dist/cjs/time.native.js +150 -0
  34. package/dist/cjs/time.native.js.map +1 -0
  35. package/dist/cjs/useBooker.cjs +151 -0
  36. package/dist/cjs/useBooker.native.js +173 -0
  37. package/dist/cjs/useBooker.native.js.map +1 -0
  38. package/dist/esm/Booker.mjs +128 -0
  39. package/dist/esm/Booker.mjs.map +1 -0
  40. package/dist/esm/Booker.native.js +130 -0
  41. package/dist/esm/Booker.native.js.map +1 -0
  42. package/dist/esm/BookingForm.mjs +172 -0
  43. package/dist/esm/BookingForm.mjs.map +1 -0
  44. package/dist/esm/BookingForm.native.js +175 -0
  45. package/dist/esm/BookingForm.native.js.map +1 -0
  46. package/dist/esm/CalendarEmbed.mjs +96 -0
  47. package/dist/esm/CalendarEmbed.mjs.map +1 -0
  48. package/dist/esm/CalendarEmbed.native.js +97 -0
  49. package/dist/esm/CalendarEmbed.native.js.map +1 -0
  50. package/dist/esm/Confirmation.mjs +152 -0
  51. package/dist/esm/Confirmation.mjs.map +1 -0
  52. package/dist/esm/Confirmation.native.js +157 -0
  53. package/dist/esm/Confirmation.native.js.map +1 -0
  54. package/dist/esm/EventHeader.mjs +87 -0
  55. package/dist/esm/EventHeader.mjs.map +1 -0
  56. package/dist/esm/EventHeader.native.js +90 -0
  57. package/dist/esm/EventHeader.native.js.map +1 -0
  58. package/dist/esm/MonthCalendar.mjs +152 -0
  59. package/dist/esm/MonthCalendar.mjs.map +1 -0
  60. package/dist/esm/MonthCalendar.native.js +163 -0
  61. package/dist/esm/MonthCalendar.native.js.map +1 -0
  62. package/dist/esm/TimeSlots.mjs +94 -0
  63. package/dist/esm/TimeSlots.mjs.map +1 -0
  64. package/dist/esm/TimeSlots.native.js +98 -0
  65. package/dist/esm/TimeSlots.native.js.map +1 -0
  66. package/dist/esm/client.mjs +104 -0
  67. package/dist/esm/client.mjs.map +1 -0
  68. package/dist/esm/client.native.js +232 -0
  69. package/dist/esm/client.native.js.map +1 -0
  70. package/dist/esm/hooks.mjs +165 -0
  71. package/dist/esm/hooks.mjs.map +1 -0
  72. package/dist/esm/hooks.native.js +190 -0
  73. package/dist/esm/hooks.native.js.map +1 -0
  74. package/dist/esm/index.js +13 -0
  75. package/dist/esm/index.js.map +1 -0
  76. package/dist/esm/index.mjs +13 -0
  77. package/dist/esm/index.mjs.map +1 -0
  78. package/dist/esm/index.native.js +13 -0
  79. package/dist/esm/index.native.js.map +1 -0
  80. package/dist/esm/time.mjs +107 -0
  81. package/dist/esm/time.mjs.map +1 -0
  82. package/dist/esm/time.native.js +109 -0
  83. package/dist/esm/time.native.js.map +1 -0
  84. package/dist/esm/useBooker.mjs +126 -0
  85. package/dist/esm/useBooker.mjs.map +1 -0
  86. package/dist/esm/useBooker.native.js +145 -0
  87. package/dist/esm/useBooker.native.js.map +1 -0
  88. package/package.json +61 -0
  89. package/src/Booker.tsx +152 -0
  90. package/src/BookingForm.tsx +180 -0
  91. package/src/CalendarEmbed.tsx +111 -0
  92. package/src/Confirmation.tsx +145 -0
  93. package/src/EventHeader.tsx +85 -0
  94. package/src/MonthCalendar.tsx +179 -0
  95. package/src/TimeSlots.tsx +102 -0
  96. package/src/client.ts +218 -0
  97. package/src/hooks.ts +180 -0
  98. package/src/index.ts +72 -0
  99. package/src/time.ts +131 -0
  100. package/src/useBooker.ts +187 -0
  101. package/types/Booker.d.ts +16 -0
  102. package/types/Booker.d.ts.map +1 -0
  103. package/types/BookingForm.d.ts +13 -0
  104. package/types/BookingForm.d.ts.map +1 -0
  105. package/types/CalendarEmbed.d.ts +15 -0
  106. package/types/CalendarEmbed.d.ts.map +1 -0
  107. package/types/Confirmation.d.ts +12 -0
  108. package/types/Confirmation.d.ts.map +1 -0
  109. package/types/EventHeader.d.ts +10 -0
  110. package/types/EventHeader.d.ts.map +1 -0
  111. package/types/MonthCalendar.d.ts +14 -0
  112. package/types/MonthCalendar.d.ts.map +1 -0
  113. package/types/TimeSlots.d.ts +15 -0
  114. package/types/TimeSlots.d.ts.map +1 -0
  115. package/types/client.d.ts +77 -0
  116. package/types/client.d.ts.map +1 -0
  117. package/types/hooks.d.ts +43 -0
  118. package/types/hooks.d.ts.map +1 -0
  119. package/types/index.d.ts +12 -0
  120. package/types/index.d.ts.map +1 -0
  121. package/types/time.d.ts +38 -0
  122. package/types/time.d.ts.map +1 -0
  123. package/types/useBooker.d.ts +41 -0
  124. package/types/useBooker.d.ts.map +1 -0
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var client_exports = {};
26
+ __export(client_exports, {
27
+ CAL_API_VERSION: () => CAL_API_VERSION,
28
+ CalendarError: () => CalendarError,
29
+ DEFAULT_API_URL: () => DEFAULT_API_URL,
30
+ cancelBooking: () => cancelBooking,
31
+ createBooking: () => createBooking,
32
+ fetchBooking: () => fetchBooking,
33
+ fetchEventType: () => fetchEventType,
34
+ fetchSlots: () => fetchSlots
35
+ });
36
+ module.exports = __toCommonJS(client_exports);
37
+ function _assert_this_initialized(self) {
38
+ if (self === void 0) {
39
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
40
+ }
41
+ return self;
42
+ }
43
+ function _call_super(_this, derived, args) {
44
+ derived = _get_prototype_of(derived);
45
+ return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
46
+ }
47
+ function _class_call_check(instance, Constructor) {
48
+ if (!(instance instanceof Constructor)) {
49
+ throw new TypeError("Cannot call a class as a function");
50
+ }
51
+ }
52
+ function _construct(Parent, args, Class) {
53
+ if (_is_native_reflect_construct()) {
54
+ _construct = Reflect.construct;
55
+ } else {
56
+ _construct = function construct(Parent2, args2, Class2) {
57
+ var a = [null];
58
+ a.push.apply(a, args2);
59
+ var Constructor = Function.bind.apply(Parent2, a);
60
+ var instance = new Constructor();
61
+ if (Class2) _set_prototype_of(instance, Class2.prototype);
62
+ return instance;
63
+ };
64
+ }
65
+ return _construct.apply(null, arguments);
66
+ }
67
+ function _define_property(obj, key, value) {
68
+ if (key in obj) {
69
+ Object.defineProperty(obj, key, {
70
+ value,
71
+ enumerable: true,
72
+ configurable: true,
73
+ writable: true
74
+ });
75
+ } else {
76
+ obj[key] = value;
77
+ }
78
+ return obj;
79
+ }
80
+ function _get_prototype_of(o) {
81
+ _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o2) {
82
+ return o2.__proto__ || Object.getPrototypeOf(o2);
83
+ };
84
+ return _get_prototype_of(o);
85
+ }
86
+ function _inherits(subClass, superClass) {
87
+ if (typeof superClass !== "function" && superClass !== null) {
88
+ throw new TypeError("Super expression must either be null or a function");
89
+ }
90
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
91
+ constructor: {
92
+ value: subClass,
93
+ writable: true,
94
+ configurable: true
95
+ }
96
+ });
97
+ if (superClass) _set_prototype_of(subClass, superClass);
98
+ }
99
+ function _is_native_function(fn) {
100
+ return Function.toString.call(fn).indexOf("[native code]") !== -1;
101
+ }
102
+ function _possible_constructor_return(self, call) {
103
+ if (call && (_type_of(call) === "object" || typeof call === "function")) {
104
+ return call;
105
+ }
106
+ return _assert_this_initialized(self);
107
+ }
108
+ function _set_prototype_of(o, p) {
109
+ _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o2, p2) {
110
+ o2.__proto__ = p2;
111
+ return o2;
112
+ };
113
+ return _set_prototype_of(o, p);
114
+ }
115
+ function _type_of(obj) {
116
+ "@swc/helpers - typeof";
117
+
118
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
119
+ }
120
+ function _wrap_native_super(Class) {
121
+ var _cache = typeof Map === "function" ? /* @__PURE__ */new Map() : void 0;
122
+ _wrap_native_super = function wrapNativeSuper(Class2) {
123
+ if (Class2 === null || !_is_native_function(Class2)) return Class2;
124
+ if (typeof Class2 !== "function") {
125
+ throw new TypeError("Super expression must either be null or a function");
126
+ }
127
+ if (typeof _cache !== "undefined") {
128
+ if (_cache.has(Class2)) return _cache.get(Class2);
129
+ _cache.set(Class2, Wrapper);
130
+ }
131
+ function Wrapper() {
132
+ return _construct(Class2, arguments, _get_prototype_of(this).constructor);
133
+ }
134
+ Wrapper.prototype = Object.create(Class2.prototype, {
135
+ constructor: {
136
+ value: Wrapper,
137
+ enumerable: false,
138
+ writable: true,
139
+ configurable: true
140
+ }
141
+ });
142
+ return _set_prototype_of(Wrapper, Class2);
143
+ };
144
+ return _wrap_native_super(Class);
145
+ }
146
+ function _is_native_reflect_construct() {
147
+ try {
148
+ var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
149
+ } catch (_) {}
150
+ return (_is_native_reflect_construct = function () {
151
+ return !!result;
152
+ })();
153
+ }
154
+ var DEFAULT_API_URL = "https://api.hanzo.ai/v1/calendar";
155
+ var CAL_API_VERSION = "2024-08-13";
156
+ var CalendarError = /* @__PURE__ */function (Error1) {
157
+ "use strict";
158
+
159
+ _inherits(CalendarError2, Error1);
160
+ function CalendarError2(message, status) {
161
+ _class_call_check(this, CalendarError2);
162
+ var _this;
163
+ _this = _call_super(this, CalendarError2, [message]), _define_property(_this, "status", void 0), _define_property(_this, "conflict", void 0);
164
+ _this.name = "CalendarError";
165
+ _this.status = status;
166
+ _this.conflict = status === 409;
167
+ return _this;
168
+ }
169
+ return CalendarError2;
170
+ }(_wrap_native_super(Error));
171
+ function messageOf(body, status) {
172
+ var _b_error;
173
+ var b = body;
174
+ return (b === null || b === void 0 ? void 0 : (_b_error = b.error) === null || _b_error === void 0 ? void 0 : _b_error.message) || (b === null || b === void 0 ? void 0 : b.message) || `Request failed (${status})`;
175
+ }
176
+ async function readJson(res) {
177
+ return res.json().catch(function () {
178
+ return null;
179
+ });
180
+ }
181
+ async function getJson(url, signal) {
182
+ var res = await fetch(url, {
183
+ headers: {
184
+ Accept: "application/json"
185
+ },
186
+ signal
187
+ });
188
+ var body = await readJson(res);
189
+ if (!res.ok) throw new CalendarError(messageOf(body, res.status), res.status);
190
+ return body.data;
191
+ }
192
+ function normalizeEventType(raw) {
193
+ var _raw_length, _ref, _ref1;
194
+ var length = (_ref1 = (_ref = (_raw_length = raw.length) !== null && _raw_length !== void 0 ? _raw_length : raw.lengthInMinutes) !== null && _ref !== void 0 ? _ref : raw.durationMinutes) !== null && _ref1 !== void 0 ? _ref1 : 30;
195
+ var _raw_id, _raw_slug, _raw_title, _raw_description, _raw_locations, _raw_price, _raw_currency;
196
+ return {
197
+ id: Number((_raw_id = raw.id) !== null && _raw_id !== void 0 ? _raw_id : 0),
198
+ slug: String((_raw_slug = raw.slug) !== null && _raw_slug !== void 0 ? _raw_slug : ""),
199
+ title: String((_raw_title = raw.title) !== null && _raw_title !== void 0 ? _raw_title : ""),
200
+ description: String((_raw_description = raw.description) !== null && _raw_description !== void 0 ? _raw_description : ""),
201
+ length,
202
+ locations: (_raw_locations = raw.locations) !== null && _raw_locations !== void 0 ? _raw_locations : [],
203
+ price: Number((_raw_price = raw.price) !== null && _raw_price !== void 0 ? _raw_price : 0),
204
+ currency: String((_raw_currency = raw.currency) !== null && _raw_currency !== void 0 ? _raw_currency : "usd"),
205
+ profile: raw.profile
206
+ };
207
+ }
208
+ async function fetchEventType(api, eventSlug, username, signal) {
209
+ var url = `${api}/atoms/event-types/${encodeURIComponent(eventSlug)}/public?username=${encodeURIComponent(username)}`;
210
+ var raw = await getJson(url, signal);
211
+ return normalizeEventType(raw);
212
+ }
213
+ async function fetchSlots(api, input, signal) {
214
+ var q = new URLSearchParams({
215
+ eventTypeSlug: input.eventTypeSlug,
216
+ usernameList: input.username,
217
+ startTime: input.startTime,
218
+ endTime: input.endTime,
219
+ timeZone: input.timeZone
220
+ });
221
+ var data = await getJson(`${api}/slots/available?${q.toString()}`, signal);
222
+ var _data_slots;
223
+ var slots = (_data_slots = data.slots) !== null && _data_slots !== void 0 ? _data_slots : data;
224
+ return slots !== null && slots !== void 0 ? slots : {};
225
+ }
226
+ async function createBooking(api, input, signal) {
227
+ var res = await fetch(`${api}/bookings`, {
228
+ method: "POST",
229
+ headers: {
230
+ "Content-Type": "application/json",
231
+ Accept: "application/json",
232
+ "cal-api-version": CAL_API_VERSION
233
+ },
234
+ body: JSON.stringify({
235
+ eventTypeSlug: input.eventTypeSlug,
236
+ user: input.username,
237
+ start: input.start,
238
+ timeZone: input.timeZone,
239
+ responses: input.responses
240
+ }),
241
+ signal
242
+ });
243
+ var body = await readJson(res);
244
+ if (!res.ok) throw new CalendarError(messageOf(body, res.status), res.status);
245
+ return body.data;
246
+ }
247
+ async function fetchBooking(api, uid, signal) {
248
+ return getJson(`${api}/bookings/${encodeURIComponent(uid)}`, signal);
249
+ }
250
+ async function cancelBooking(api, uid, reason, signal) {
251
+ var res = await fetch(`${api}/bookings/${encodeURIComponent(uid)}/cancel`, {
252
+ method: "POST",
253
+ headers: {
254
+ "Content-Type": "application/json",
255
+ Accept: "application/json",
256
+ "cal-api-version": CAL_API_VERSION
257
+ },
258
+ body: JSON.stringify({
259
+ reason: reason !== null && reason !== void 0 ? reason : ""
260
+ }),
261
+ signal
262
+ });
263
+ var body = await readJson(res);
264
+ if (!res.ok) throw new CalendarError(messageOf(body, res.status), res.status);
265
+ return body.data;
266
+ }
267
+ //# sourceMappingURL=client.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","client_exports","__export","CAL_API_VERSION","CalendarError","DEFAULT_API_URL","cancelBooking","createBooking","fetchBooking","fetchEventType","fetchSlots","module","exports","_assert_this_initialized","self","ReferenceError","_call_super","_this","derived","args","_get_prototype_of","_possible_constructor_return","_is_native_reflect_construct","Reflect","construct","constructor","apply","_class_call_check","instance","Constructor","TypeError","_construct","Parent","Class","Parent2","args2","Class2","a","push","Function","bind","_set_prototype_of","prototype","arguments","_define_property","obj","key","Object","defineProperty","enumerable","configurable","writable","o","setPrototypeOf","getPrototypeOf","o2","__proto__","_inherits","subClass","superClass","create","_is_native_function","fn","toString","call","indexOf","_type_of","p","p2","Symbol","_wrap_native_super","_cache","Map","wrapNativeSuper","has","get","set","Wrapper"],"sources":["../../src/client.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,cAAA;AAAAC,QAAA,CAAAD,cAAA;EAAAE,eAAA,EAAAA,CAAA,KAAAA,eAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAA,aAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAA,eAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAA,aAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAA,aAAA;EAAAC,YAAA,EAAAA,CAAA,KAAAA,YAAA;EAAAC,cAAA,EAAAA,CAAA,KAAAA,cAAA;EAAAC,UAAA,EAAAA,CAAA,KAAAA;AAAA;AAGOC,MAAM,CAAAC,OAAA,GAAAhB,YAAkB,CAAAK,cAAA;AACxB,SAAMY,wBAAkBA,CAAAC,IAAA;EA4ExB,IAAMA,IAAA;IACX,UAAAC,cAAA;EACA;EACA,OAAAD,IAAA;AACE;AACA,SAAKE,WAAOA,CAAAC,KAAA,EAAAC,OAAA,EAAAC,IAAA;EACZD,OAAK,GAAAE,iBAAS,CAAAF,OAAA;EACd,OAAKG,4BAAsB,CAAAJ,KAAA,EAAAK,4BAAA,KAAAC,OAAA,CAAAC,SAAA,CAAAN,OAAA,EAAAC,IAAA,QAAAC,iBAAA,CAAAH,KAAA,EAAAQ,WAAA,IAAAP,OAAA,CAAAQ,KAAA,CAAAT,KAAA,EAAAE,IAAA;AAAA;AAE/B,SAAAQ,kBAAAC,QAAA,EAAAC,WAAA;EAQA,MAAAD,QAAS,YAAyBC,WAAwB;IACxD,MAAM,IAAIC,SAAA;EACV;AACF;AAEA,SAAAC,UAAeA,CAAAC,MAAS,EAAAb,IAAiC,EAAAc,KAAA;EACvD,IAAAX,4BAA8B,EAAI;IACpCS,UAAA,GAAAR,OAAA,CAAAC,SAAA;EAEA;IACEO,UAAY,YAAYP,SAAOA,CAAAU,OAAS,EAAEC,KAAA,EAAQC,MAAA;MAClD,IAAMC,CAAA,IACD,IAAI,CACT;MACFA,CAAA,CAAAC,IAAA,CAAAZ,KAAA,CAAAW,CAAA,EAAAF,KAAA;MAEA,IAASN,WAAA,GAAAU,QAAmB,CAAyCC,IAAA,CAAAd,KAAA,CAAAQ,OAAA,EAAAG,CAAA;MACnE,IAAMT,QACH,GAAI,IAAAC,WACA;MAGP,IAAOO,MAAA,EAAAK,iBAAA,CAAAb,QAAA,EAAAQ,MAAA,CAAAM,SAAA;MACL,OAAId,QAAW;IACf;EAA2B;EACE,OAC7BG,UAAa,CAAAL,KAAO,KAAI,EAAAiB,SAAA;AAAiB;AACzC,SACAC,gBAAgBA,CAAAC,GAAA,EAAAC,GAA6B,EAAA9C,KAAA;EAAA,IAC7C8C,GAAA,IAAOD,GAAA,EAAO;IACdE,MAAA,CAAAC,cAAqB,CAAAH,GAAA,EAAAC,GAAA;MACrB9C,KAAA;MACFiD,UAAA;MACFC,YAAA;MAEAC,QAAA,EAAsB;IAMpB;EACA,OAAM;IACNN,GAAA,CAAAC,GAAO,IAAA9C,KAAA;EACT;EAEA,OAAA6C,GAAA;AAKE;AAA8B,SAC5BzB,iBAAqBA,CAAAgC,CAAA;EAAAhC,iBACP,GAAA2B,MAAM,CAAAM,cAAA,GAAAN,MAAA,CAAAO,cAAA,YAAAA,eAAAC,EAAA;IACpB,OAAAA,EAAA,CAAAC,SAAiB,IAAAT,MAAA,CAAAO,cAAA,CAAAC,EAAA;EAAA;EACF,OACfnC,iBAAgB,CAAAgC,CAAA;AAAA;AAElB,SAAMK,SAAOA,CAAAC,QAAM,EAAAC,UAAA;EAAA,IACjB,OAAMA,UAAA,eAAsB,IAAUA,UAAA;IACtC,UAAA7B,SAAA;EACF;EAEA4B,QAAM,CAAAhB,SAAS,GAAgCK,MAAA,CAAUa,MAAA,CAAAD,UAAA,IAAAA,UAAA,CAAAjB,SAAA;IACzDjB,WAAO;MACTzB,KAAA,EAAA0D,QAAA;MAEAP,QAAA,EAAsB;MAKpBD,YAAY,EAAM;IAChB;EAAQ,EACR;EAAS,IACPS,UAAA,EAAAlB,iBAAgB,CAAAiB,QAAA,EAAAC,UAAA;AAAA;AACR,SACRE,mBAAmBA,CAAAC,EAAA;EAAA,OACrBvB,QAAA,CAAAwB,QAAA,CAAAC,IAAA,CAAAF,EAAA,EAAAG,OAAA;AAAA;AACqB,SACnB5C,4BAAqBA,CAAAP,IAAA,EAAAkD,IAAA;EAAA,IACrBA,IAAA,KAAME,QAAM,CAAAF,IAAA,yBAAAA,IAAA;IAAA,OACZA,IAAO;EAAM;EACG,OAChBnD,wBAAiB,CAAAC,IAAA;AAAA;AAClB,SACD2B,kBAAAW,CAAA,EAAAe,CAAA;EACF1B,iBAAC,GAAAM,MAAA,CAAAM,cAAA,aAAAA,eAAAE,EAAA,EAAAa,EAAA;IACDb,EAAA,CAAAC,SAAa,GAAAY,EAAM;IACnB,OAASb,EAAA;EACT;EACF,OAAAd,iBAAA,CAAAW,CAAA,EAAAe,CAAA;AAEA;AAKE,SAAOD,QAAiBA,CAAArB,GAAG,EAAG;EAChC;;EAEA,OAAAA,GAAA,IAAsB,OAAAwB,MACpB,KACA,WACA,IACAxB,GAAA,CAAApB,WACkB,KAAA4C,MAAA,qBAAAxB,GAAA;AAClB;AAA6E,SAC3EyB,kBAAQA,CAAArC,KAAA;EAAA,IACRsC,MAAA,GAAS,OAAAC,GAAA,qCAAAA,GAAA;EAAAF,kBACP,GAAgB,SAAAG,gBAAArC,MAAA;IAAA,IAChBA,MAAQ,cAAAyB,mBAAA,CAAAzB,MAAA,UAAAA,MAAA;IAAA,IACR,OAAAA,MAAA,KAAmB;MACrB,UAAAN,SAAA;IACA;IACA,WAAAyC,MAAA;MACD,IAAAA,MAAA,CAAAG,GAAA,CAAAtC,MAAA,UAAAmC,MAAA,CAAAI,GAAA,CAAAvC,MAAA;MACDmC,MAAM,CAAAK,GAAO,CAAAxC,MAAM,EAAAyC,OAAS,CAAG;IAC/B;IACA,SAAQA,OAA2BA,CAAA;MACrC,OAAA9C,UAAA,CAAAK,MAAA,EAAAO,SAAA,EAAAvB,iBAAA,OAAAK,WAAA","ignoreList":[]}
@@ -0,0 +1,193 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var hooks_exports = {};
24
+ __export(hooks_exports, {
25
+ useAvailableSlots: () => useAvailableSlots,
26
+ useBooking: () => useBooking,
27
+ useCreateBooking: () => useCreateBooking,
28
+ useEventType: () => useEventType
29
+ });
30
+ module.exports = __toCommonJS(hooks_exports);
31
+ var import_react = require("react");
32
+ var import_client = require("./client.cjs");
33
+ function useEventType(api, eventSlug, username) {
34
+ const [state, setState] = (0, import_react.useState)({
35
+ data: null,
36
+ loading: true,
37
+ error: null
38
+ });
39
+ (0, import_react.useEffect)(() => {
40
+ const ctrl = new AbortController();
41
+ setState({
42
+ data: null,
43
+ loading: true,
44
+ error: null
45
+ });
46
+ (0, import_client.fetchEventType)(api, eventSlug, username, ctrl.signal).then(data => setState({
47
+ data,
48
+ loading: false,
49
+ error: null
50
+ })).catch(err => {
51
+ if (ctrl.signal.aborted) return;
52
+ setState({
53
+ data: null,
54
+ loading: false,
55
+ error: errorText(err)
56
+ });
57
+ });
58
+ return () => ctrl.abort();
59
+ }, [api, eventSlug, username]);
60
+ return state;
61
+ }
62
+ function useAvailableSlots(api, query) {
63
+ const {
64
+ eventTypeSlug,
65
+ username,
66
+ startTime,
67
+ endTime,
68
+ timeZone,
69
+ enabled = true
70
+ } = query;
71
+ const [state, setState] = (0, import_react.useState)({
72
+ data: null,
73
+ loading: enabled,
74
+ error: null
75
+ });
76
+ const [nonce, setNonce] = (0, import_react.useState)(0);
77
+ const refetch = (0, import_react.useCallback)(() => setNonce(n => n + 1), []);
78
+ (0, import_react.useEffect)(() => {
79
+ if (!enabled) return;
80
+ const ctrl = new AbortController();
81
+ setState(s => ({
82
+ data: s.data,
83
+ loading: true,
84
+ error: null
85
+ }));
86
+ (0, import_client.fetchSlots)(api, {
87
+ eventTypeSlug,
88
+ username,
89
+ startTime,
90
+ endTime,
91
+ timeZone
92
+ }, ctrl.signal).then(data => setState({
93
+ data,
94
+ loading: false,
95
+ error: null
96
+ })).catch(err => {
97
+ if (ctrl.signal.aborted) return;
98
+ setState({
99
+ data: null,
100
+ loading: false,
101
+ error: errorText(err)
102
+ });
103
+ });
104
+ return () => ctrl.abort();
105
+ }, [api, eventTypeSlug, username, startTime, endTime, timeZone, enabled, nonce]);
106
+ return {
107
+ ...state,
108
+ refetch
109
+ };
110
+ }
111
+ function useCreateBooking(api) {
112
+ const [submitting, setSubmitting] = (0, import_react.useState)(false);
113
+ const [error, setError] = (0, import_react.useState)(null);
114
+ const [conflict, setConflict] = (0, import_react.useState)(false);
115
+ const mounted = (0, import_react.useRef)(true);
116
+ (0, import_react.useEffect)(() => {
117
+ mounted.current = true;
118
+ return () => {
119
+ mounted.current = false;
120
+ };
121
+ }, []);
122
+ const reset = (0, import_react.useCallback)(() => {
123
+ setError(null);
124
+ setConflict(false);
125
+ }, []);
126
+ const submit = (0, import_react.useCallback)(async input => {
127
+ setSubmitting(true);
128
+ setError(null);
129
+ setConflict(false);
130
+ try {
131
+ const booking = await (0, import_client.createBooking)(api, input);
132
+ return {
133
+ ok: true,
134
+ booking
135
+ };
136
+ } catch (err) {
137
+ const isConflict = err instanceof import_client.CalendarError && err.conflict;
138
+ const message = errorText(err);
139
+ if (mounted.current) {
140
+ setError(message);
141
+ setConflict(isConflict);
142
+ }
143
+ return {
144
+ ok: false,
145
+ conflict: isConflict,
146
+ message
147
+ };
148
+ } finally {
149
+ if (mounted.current) setSubmitting(false);
150
+ }
151
+ }, [api]);
152
+ return {
153
+ submit,
154
+ submitting,
155
+ error,
156
+ conflict,
157
+ reset
158
+ };
159
+ }
160
+ function useBooking(api, uid) {
161
+ const [state, setState] = (0, import_react.useState)({
162
+ data: null,
163
+ loading: !!uid,
164
+ error: null
165
+ });
166
+ (0, import_react.useEffect)(() => {
167
+ if (!uid) return;
168
+ const ctrl = new AbortController();
169
+ setState({
170
+ data: null,
171
+ loading: true,
172
+ error: null
173
+ });
174
+ (0, import_client.fetchBooking)(api, uid, ctrl.signal).then(data => setState({
175
+ data,
176
+ loading: false,
177
+ error: null
178
+ })).catch(err => {
179
+ if (ctrl.signal.aborted) return;
180
+ setState({
181
+ data: null,
182
+ loading: false,
183
+ error: errorText(err)
184
+ });
185
+ });
186
+ return () => ctrl.abort();
187
+ }, [api, uid]);
188
+ return state;
189
+ }
190
+ function errorText(err) {
191
+ if (err instanceof Error) return err.message;
192
+ return "Something went wrong";
193
+ }
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var hooks_exports = {};
26
+ __export(hooks_exports, {
27
+ useAvailableSlots: () => useAvailableSlots,
28
+ useBooking: () => useBooking,
29
+ useCreateBooking: () => useCreateBooking,
30
+ useEventType: () => useEventType
31
+ });
32
+ module.exports = __toCommonJS(hooks_exports);
33
+ var import_react = require("react");
34
+ var import_client = require("./client.native.js");
35
+ function _instanceof(left, right) {
36
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
37
+ return !!right[Symbol.hasInstance](left);
38
+ } else {
39
+ return left instanceof right;
40
+ }
41
+ }
42
+ function useEventType(api, eventSlug, username) {
43
+ var [state, setState] = (0, import_react.useState)({
44
+ data: null,
45
+ loading: true,
46
+ error: null
47
+ });
48
+ (0, import_react.useEffect)(function () {
49
+ var ctrl = new AbortController();
50
+ setState({
51
+ data: null,
52
+ loading: true,
53
+ error: null
54
+ });
55
+ (0, import_client.fetchEventType)(api, eventSlug, username, ctrl.signal).then(function (data) {
56
+ return setState({
57
+ data,
58
+ loading: false,
59
+ error: null
60
+ });
61
+ }).catch(function (err) {
62
+ if (ctrl.signal.aborted) return;
63
+ setState({
64
+ data: null,
65
+ loading: false,
66
+ error: errorText(err)
67
+ });
68
+ });
69
+ return function () {
70
+ return ctrl.abort();
71
+ };
72
+ }, [api, eventSlug, username]);
73
+ return state;
74
+ }
75
+ function useAvailableSlots(api, query) {
76
+ var {
77
+ eventTypeSlug,
78
+ username,
79
+ startTime,
80
+ endTime,
81
+ timeZone,
82
+ enabled = true
83
+ } = query;
84
+ var [state, setState] = (0, import_react.useState)({
85
+ data: null,
86
+ loading: enabled,
87
+ error: null
88
+ });
89
+ var [nonce, setNonce] = (0, import_react.useState)(0);
90
+ var refetch = (0, import_react.useCallback)(function () {
91
+ return setNonce(function (n) {
92
+ return n + 1;
93
+ });
94
+ }, []);
95
+ (0, import_react.useEffect)(function () {
96
+ if (!enabled) return;
97
+ var ctrl = new AbortController();
98
+ setState(function (s) {
99
+ return {
100
+ data: s.data,
101
+ loading: true,
102
+ error: null
103
+ };
104
+ });
105
+ (0, import_client.fetchSlots)(api, {
106
+ eventTypeSlug,
107
+ username,
108
+ startTime,
109
+ endTime,
110
+ timeZone
111
+ }, ctrl.signal).then(function (data) {
112
+ return setState({
113
+ data,
114
+ loading: false,
115
+ error: null
116
+ });
117
+ }).catch(function (err) {
118
+ if (ctrl.signal.aborted) return;
119
+ setState({
120
+ data: null,
121
+ loading: false,
122
+ error: errorText(err)
123
+ });
124
+ });
125
+ return function () {
126
+ return ctrl.abort();
127
+ };
128
+ }, [api, eventTypeSlug, username, startTime, endTime, timeZone, enabled, nonce]);
129
+ return {
130
+ ...state,
131
+ refetch
132
+ };
133
+ }
134
+ function useCreateBooking(api) {
135
+ var [submitting, setSubmitting] = (0, import_react.useState)(false);
136
+ var [error, setError] = (0, import_react.useState)(null);
137
+ var [conflict, setConflict] = (0, import_react.useState)(false);
138
+ var mounted = (0, import_react.useRef)(true);
139
+ (0, import_react.useEffect)(function () {
140
+ mounted.current = true;
141
+ return function () {
142
+ mounted.current = false;
143
+ };
144
+ }, []);
145
+ var reset = (0, import_react.useCallback)(function () {
146
+ setError(null);
147
+ setConflict(false);
148
+ }, []);
149
+ var submit = (0, import_react.useCallback)(async function (input) {
150
+ setSubmitting(true);
151
+ setError(null);
152
+ setConflict(false);
153
+ try {
154
+ var booking = await (0, import_client.createBooking)(api, input);
155
+ return {
156
+ ok: true,
157
+ booking
158
+ };
159
+ } catch (err) {
160
+ var isConflict = _instanceof(err, import_client.CalendarError) && err.conflict;
161
+ var message = errorText(err);
162
+ if (mounted.current) {
163
+ setError(message);
164
+ setConflict(isConflict);
165
+ }
166
+ return {
167
+ ok: false,
168
+ conflict: isConflict,
169
+ message
170
+ };
171
+ } finally {
172
+ if (mounted.current) setSubmitting(false);
173
+ }
174
+ }, [api]);
175
+ return {
176
+ submit,
177
+ submitting,
178
+ error,
179
+ conflict,
180
+ reset
181
+ };
182
+ }
183
+ function useBooking(api, uid) {
184
+ var [state, setState] = (0, import_react.useState)({
185
+ data: null,
186
+ loading: !!uid,
187
+ error: null
188
+ });
189
+ (0, import_react.useEffect)(function () {
190
+ if (!uid) return;
191
+ var ctrl = new AbortController();
192
+ setState({
193
+ data: null,
194
+ loading: true,
195
+ error: null
196
+ });
197
+ (0, import_client.fetchBooking)(api, uid, ctrl.signal).then(function (data) {
198
+ return setState({
199
+ data,
200
+ loading: false,
201
+ error: null
202
+ });
203
+ }).catch(function (err) {
204
+ if (ctrl.signal.aborted) return;
205
+ setState({
206
+ data: null,
207
+ loading: false,
208
+ error: errorText(err)
209
+ });
210
+ });
211
+ return function () {
212
+ return ctrl.abort();
213
+ };
214
+ }, [api, uid]);
215
+ return state;
216
+ }
217
+ function errorText(err) {
218
+ if (_instanceof(err, Error)) return err.message;
219
+ return "Something went wrong";
220
+ }
221
+ //# sourceMappingURL=hooks.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","hooks_exports","__export","useAvailableSlots","useBooking","useCreateBooking","useEventType","module","exports","import_react","require","import_client","_instanceof","left","right","Symbol","hasInstance","api","eventSlug","username","state","setState","useState","data","loading","error","useEffect","ctrl","AbortController","fetchEventType","signal","then","catch","err","aborted","errorText","abort","query","eventTypeSlug","startTime","endTime","timeZone","enabled","nonce","setNonce","refetch","useCallback","n","s","fetchSlots"],"sources":["../../src/hooks.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,iBAAA,EAAAA,CAAA,KAAAA,iBAAA;EAAAC,UAAA,EAAAA,CAAA,KAAAA,UAAA;EAAAC,gBAAA,EAAAA,CAAA,KAAAA,gBAAA;EAAAC,YAAA,EAAAA,CAAA,KAAAA;AAAA;AAEAC,MAAA,CAAAC,OAAA,GAAAZ,YAAyD,CAAAK,aAAA;AACzD,IAAAQ,YAAA,GAAAC,OAUO;AAQA,IAAAC,aAAS,GAAAD,OAEd,qBACA;AAEA,SAAOE,WAAOA,CAAAC,IAAQ,EAAAC,KAAI;EAAgC,IACxDA,KAAM,mBAAAC,MAAA,oBAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA;IACN,SAASF,KAAA,CAAAC,MAAA,CAAAC,WAAA,EAAAH,IAAA;EAAA,OACT;IACD,OAAAA,IAAA,YAAAC,KAAA;EACD;AACE;AACA,SAAAR,YAAiBA,CAAAW,GAAA,EAAMC,SAAS,EAAAC,QAAM;EACtC,KAAAC,KAAA,EAAAC,QAAA,QAAAZ,YAAe,CAAKa,QAAA;IAGhBC,IAAA,EAAI;IACJC,OAAA,MAAW;IACbC,KAAC;EACH;EACF,IAAIhB,YAAK,CAAAiB,SAAW,EAAQ,YAAC;IAC7B,IAAAC,IAAO,OAAAC,eAAA;IACTP,QAAA;MAeOE,IAAS;MACdC,OAAQ;MACRC,KAAO;IACL;IACA,IAAAd,aAAS,CAAAkB,cAAA,EAAAZ,GAAA,EAAAC,SAAA,EAAAC,QAAA,EAAAQ,IAAA,CAAAG,MAAA,EAAAC,IAAA,WAAAR,IAAA;MACT,OAAOF,QAAA;QACRE,IAAA;QACKC,OAAC,EAAO;QACRC,KAAA;MAEN;IACE,GAAAO,KAAK,WAASC,GAAA;MACd,IAAMN,IAAA,CAAAG,MAAW,CAAAI,OAAA;MACjBb,QAAU;QACVE,IAAA;QACEC,OAAA;QACEC,KAAA,EAAAU,SAAe,CAAAF,GAAA;MACjB;IACF,EACG;IAEC,OAAI,YAAY;MAChB,OAAAN,IAAW,CAAAS,KAAM;IACnB,CAAC;EACH,IACFnB,GAAI,EAEJC,SAAS,EACXC,QAAA,CAoBO;EACL,OAAOC,KAAA;AACP;AACA,SAAOjB,iBAAUA,CAAAc,GAAW,EAAAoB,KAAA,EAAI;EAChC;IAAMC,aAAA;IAAUnB,QAAA;IAAAoB,SAAA;IAAOC,OAAI;IAAAC,QAAA;IAAAC,OAAA;EAAA,IAAAL,KAAA;EAC3B,KAAAjB,KAAA,EAAAC,QAAA,QAAUZ,YAAM,CAAAa,QAAA;IACdC,IAAA,MAAQ;IACRC,OAAO,EAAAkB,OAAM;IACXjB,KAAA;EAAkB,EACpB;EACF,IAAI,CAACkB,KAAA,EAAAC,QAAA,QAAAnC,YAAA,CAAAa,QAAA;EAEL,IAAAuB,OAAM,OAAQpC,YAAA,CAAAqC,WAAA,EAAY,YAAM;IAC9B,OAAAF,QAAa,WAAAG,CAAA;MACb,OAAAA,CAAA,GAAY;IACd,CAAG,CAAC;EAEJ,MAAM;EAAS,EACb,EAAAtC,YAAO,CAAAiB,SAMsB;IAC3B,KAAAgB,OAAA;IACA,IAAAf,IAAA,GAAS,IAAIC,eAAA;IACbP,QAAA,WAAY2B,CAAK;MACjB,OAAI;QACFzB,IAAA,EAAMyB,CAAA,CAAAzB,IAAA;QACNC,OAAO,EAAE,IAAI;QACfC,KAAA,EAAS;MACP;IACA;IACA,IAAAd,aAAY,CAAAsC,UAAS,EAAAhC,GAAA;MACnBqB,aAAS;MACTnB,QAAA;MAAsBoB,SACxB;MACAC,OAAA;MACFC;IACE,GAAAd,IAAA,CAAIG,MAAA,EAAQC,IAAA,WAASR,IAAA;MACvB,OAAAF,QAAA;QACFE,IAAA;QACIC,OAAA;QACNC,KAAA;MAEA;IACF,GAAAO,KAAA,WAAAC,GAAA;MAEO,IAASN,IAAA,CAAAG,MAAW,CAAAI,OAAa,EAA8C;MACpFb,QAAO;QACLE,IAAM;QACNC,OAAW;QACXC,KAAO,EAAAU,SAAA,CAAAF,GAAA;MACR;IACD;IACE,OAAK,YAAK;MACV,OAAMN,IAAO,CAAAS,KAAI;IACjB;EACA,IAGInB,GAAA,EACAqB,aAAW,EACbnB,QAAC,EACHoB,SAAO,EACTC,OAAS,EACTC,QAAO,EACTC,OAAA,EAEAC,KAAS,CACP;EACA,OAAO;IACT,GAAAvB,KAAA","ignoreList":[]}