@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,71 @@
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 index_exports = {};
24
+ __export(index_exports, {
25
+ Booker: () => import_Booker.Booker,
26
+ BookingForm: () => import_BookingForm.BookingForm,
27
+ CAL_API_VERSION: () => import_client.CAL_API_VERSION,
28
+ CalendarEmbed: () => import_CalendarEmbed.CalendarEmbed,
29
+ CalendarError: () => import_client.CalendarError,
30
+ Confirmation: () => import_Confirmation.Confirmation,
31
+ DEFAULT_API_URL: () => import_client.DEFAULT_API_URL,
32
+ EventHeader: () => import_EventHeader.EventHeader,
33
+ MonthCalendar: () => import_MonthCalendar.MonthCalendar,
34
+ TimeSlots: () => import_TimeSlots.TimeSlots,
35
+ addMonths: () => import_time.addMonths,
36
+ cancelBooking: () => import_client.cancelBooking,
37
+ createBooking: () => import_client.createBooking,
38
+ dateFromKey: () => import_time.dateFromKey,
39
+ fetchBooking: () => import_client.fetchBooking,
40
+ fetchEventType: () => import_client.fetchEventType,
41
+ fetchSlots: () => import_client.fetchSlots,
42
+ formatBookingWhen: () => import_time.formatBookingWhen,
43
+ formatDayLong: () => import_time.formatDayLong,
44
+ formatMonthLabel: () => import_time.formatMonthLabel,
45
+ formatSlotTime: () => import_time.formatSlotTime,
46
+ isBeforeToday: () => import_time.isBeforeToday,
47
+ monthMatrix: () => import_time.monthMatrix,
48
+ monthRange: () => import_time.monthRange,
49
+ sameMonth: () => import_time.sameMonth,
50
+ startOfMonth: () => import_time.startOfMonth,
51
+ useAvailableSlots: () => import_hooks.useAvailableSlots,
52
+ useBooker: () => import_useBooker.useBooker,
53
+ useBooking: () => import_hooks.useBooking,
54
+ useCreateBooking: () => import_hooks.useCreateBooking,
55
+ useEventType: () => import_hooks.useEventType,
56
+ visitorTimeZone: () => import_time.visitorTimeZone,
57
+ weekdayLabels: () => import_time.weekdayLabels,
58
+ ymd: () => import_time.ymd
59
+ });
60
+ module.exports = __toCommonJS(index_exports);
61
+ var import_Booker = require("./Booker.cjs");
62
+ var import_CalendarEmbed = require("./CalendarEmbed.cjs");
63
+ var import_Confirmation = require("./Confirmation.cjs");
64
+ var import_EventHeader = require("./EventHeader.cjs");
65
+ var import_MonthCalendar = require("./MonthCalendar.cjs");
66
+ var import_TimeSlots = require("./TimeSlots.cjs");
67
+ var import_BookingForm = require("./BookingForm.cjs");
68
+ var import_useBooker = require("./useBooker.cjs");
69
+ var import_hooks = require("./hooks.cjs");
70
+ var import_client = require("./client.cjs");
71
+ var import_time = require("./time.cjs");
@@ -0,0 +1,74 @@
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 index_exports = {};
26
+ __export(index_exports, {
27
+ Booker: () => import_Booker.Booker,
28
+ BookingForm: () => import_BookingForm.BookingForm,
29
+ CAL_API_VERSION: () => import_client.CAL_API_VERSION,
30
+ CalendarEmbed: () => import_CalendarEmbed.CalendarEmbed,
31
+ CalendarError: () => import_client.CalendarError,
32
+ Confirmation: () => import_Confirmation.Confirmation,
33
+ DEFAULT_API_URL: () => import_client.DEFAULT_API_URL,
34
+ EventHeader: () => import_EventHeader.EventHeader,
35
+ MonthCalendar: () => import_MonthCalendar.MonthCalendar,
36
+ TimeSlots: () => import_TimeSlots.TimeSlots,
37
+ addMonths: () => import_time.addMonths,
38
+ cancelBooking: () => import_client.cancelBooking,
39
+ createBooking: () => import_client.createBooking,
40
+ dateFromKey: () => import_time.dateFromKey,
41
+ fetchBooking: () => import_client.fetchBooking,
42
+ fetchEventType: () => import_client.fetchEventType,
43
+ fetchSlots: () => import_client.fetchSlots,
44
+ formatBookingWhen: () => import_time.formatBookingWhen,
45
+ formatDayLong: () => import_time.formatDayLong,
46
+ formatMonthLabel: () => import_time.formatMonthLabel,
47
+ formatSlotTime: () => import_time.formatSlotTime,
48
+ isBeforeToday: () => import_time.isBeforeToday,
49
+ monthMatrix: () => import_time.monthMatrix,
50
+ monthRange: () => import_time.monthRange,
51
+ sameMonth: () => import_time.sameMonth,
52
+ startOfMonth: () => import_time.startOfMonth,
53
+ useAvailableSlots: () => import_hooks.useAvailableSlots,
54
+ useBooker: () => import_useBooker.useBooker,
55
+ useBooking: () => import_hooks.useBooking,
56
+ useCreateBooking: () => import_hooks.useCreateBooking,
57
+ useEventType: () => import_hooks.useEventType,
58
+ visitorTimeZone: () => import_time.visitorTimeZone,
59
+ weekdayLabels: () => import_time.weekdayLabels,
60
+ ymd: () => import_time.ymd
61
+ });
62
+ module.exports = __toCommonJS(index_exports);
63
+ var import_Booker = require("./Booker.native.js");
64
+ var import_CalendarEmbed = require("./CalendarEmbed.native.js");
65
+ var import_Confirmation = require("./Confirmation.native.js");
66
+ var import_EventHeader = require("./EventHeader.native.js");
67
+ var import_MonthCalendar = require("./MonthCalendar.native.js");
68
+ var import_TimeSlots = require("./TimeSlots.native.js");
69
+ var import_BookingForm = require("./BookingForm.native.js");
70
+ var import_useBooker = require("./useBooker.native.js");
71
+ var import_hooks = require("./hooks.native.js");
72
+ var import_client = require("./client.native.js");
73
+ var import_time = require("./time.native.js");
74
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","Booker","import_Booker","BookingForm","import_BookingForm","CAL_API_VERSION","import_client","CalendarEmbed","import_CalendarEmbed","CalendarError","Confirmation","import_Confirmation","DEFAULT_API_URL","EventHeader","import_EventHeader","MonthCalendar","import_MonthCalendar","TimeSlots","import_TimeSlots","addMonths","import_time","cancelBooking","createBooking","dateFromKey","fetchBooking","fetchEventType","fetchSlots","formatBookingWhen","formatDayLong","formatMonthLabel","formatSlotTime","isBeforeToday","monthMatrix","monthRange","sameMonth","startOfMonth","useAvailableSlots","import_hooks","useBooker","import_useBooker","useBooking","useCreateBooking","useEventType","visitorTimeZone","weekdayLabels","ymd","module","exports","require"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,145 @@
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 time_exports = {};
24
+ __export(time_exports, {
25
+ addMonths: () => addMonths,
26
+ dateFromKey: () => dateFromKey,
27
+ formatBookingWhen: () => formatBookingWhen,
28
+ formatDayLong: () => formatDayLong,
29
+ formatMonthLabel: () => formatMonthLabel,
30
+ formatSlotTime: () => formatSlotTime,
31
+ isBeforeToday: () => isBeforeToday,
32
+ monthMatrix: () => monthMatrix,
33
+ monthRange: () => monthRange,
34
+ sameMonth: () => sameMonth,
35
+ startOfMonth: () => startOfMonth,
36
+ visitorTimeZone: () => visitorTimeZone,
37
+ weekdayLabels: () => weekdayLabels,
38
+ ymd: () => ymd
39
+ });
40
+ module.exports = __toCommonJS(time_exports);
41
+ function visitorTimeZone() {
42
+ try {
43
+ return Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
44
+ } catch {
45
+ return "UTC";
46
+ }
47
+ }
48
+ function ymd(d) {
49
+ const y = d.getFullYear();
50
+ const m = String(d.getMonth() + 1).padStart(2, "0");
51
+ const day = String(d.getDate()).padStart(2, "0");
52
+ return `${y}-${m}-${day}`;
53
+ }
54
+ function startOfMonth(d) {
55
+ return new Date(d.getFullYear(), d.getMonth(), 1);
56
+ }
57
+ function addMonths(d, n) {
58
+ return new Date(d.getFullYear(), d.getMonth() + n, 1);
59
+ }
60
+ function sameMonth(a, b) {
61
+ return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();
62
+ }
63
+ function isBeforeToday(key) {
64
+ return key < ymd(/* @__PURE__ */new Date());
65
+ }
66
+ function monthMatrix(viewDate, weekStartsOn = 0) {
67
+ const year = viewDate.getFullYear();
68
+ const month = viewDate.getMonth();
69
+ const firstWeekday = new Date(year, month, 1).getDay();
70
+ const startOffset = (firstWeekday - weekStartsOn + 7) % 7;
71
+ const cells = [];
72
+ for (let i = 0; i < 42; i++) {
73
+ const date = new Date(year, month, 1 - startOffset + i);
74
+ cells.push({
75
+ date,
76
+ key: ymd(date),
77
+ inMonth: date.getMonth() === month
78
+ });
79
+ }
80
+ return cells;
81
+ }
82
+ function monthRange(viewDate) {
83
+ const year = viewDate.getFullYear();
84
+ const month = viewDate.getMonth();
85
+ const startOfView = new Date(year, month, 1, 0, 0, 0, 0);
86
+ const now = /* @__PURE__ */new Date();
87
+ const start = startOfView.getTime() > now.getTime() ? startOfView : now;
88
+ const endOfView = new Date(year, month + 1, 0, 23, 59, 59, 999);
89
+ return {
90
+ startTime: start.toISOString(),
91
+ endTime: endOfView.toISOString()
92
+ };
93
+ }
94
+ function weekdayLabels(weekStartsOn = 0) {
95
+ const fmt = new Intl.DateTimeFormat(void 0, {
96
+ weekday: "short"
97
+ });
98
+ const out = [];
99
+ for (let i = 0; i < 7; i++) {
100
+ const d = new Date(2023, 0, 1 + (i + weekStartsOn) % 7);
101
+ out.push(fmt.format(d));
102
+ }
103
+ return out;
104
+ }
105
+ function formatMonthLabel(d) {
106
+ return new Intl.DateTimeFormat(void 0, {
107
+ month: "long",
108
+ year: "numeric"
109
+ }).format(d);
110
+ }
111
+ function formatDayLong(d) {
112
+ return new Intl.DateTimeFormat(void 0, {
113
+ weekday: "long",
114
+ month: "long",
115
+ day: "numeric"
116
+ }).format(d);
117
+ }
118
+ function formatSlotTime(iso, timeZone) {
119
+ return new Intl.DateTimeFormat(void 0, {
120
+ hour: "numeric",
121
+ minute: "2-digit",
122
+ timeZone
123
+ }).format(new Date(iso));
124
+ }
125
+ function formatBookingWhen(iso, timeZone) {
126
+ const at = new Date(iso);
127
+ const date = new Intl.DateTimeFormat(void 0, {
128
+ weekday: "long",
129
+ month: "long",
130
+ day: "numeric",
131
+ year: "numeric",
132
+ timeZone
133
+ }).format(at);
134
+ const time = new Intl.DateTimeFormat(void 0, {
135
+ hour: "numeric",
136
+ minute: "2-digit",
137
+ timeZoneName: "short",
138
+ timeZone
139
+ }).format(at);
140
+ return `${date} at ${time}`;
141
+ }
142
+ function dateFromKey(key) {
143
+ const [y, m, d] = key.split("-").map(Number);
144
+ return new Date(y, (m ?? 1) - 1, d ?? 1, 12, 0, 0, 0);
145
+ }
@@ -0,0 +1,150 @@
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 time_exports = {};
26
+ __export(time_exports, {
27
+ addMonths: () => addMonths,
28
+ dateFromKey: () => dateFromKey,
29
+ formatBookingWhen: () => formatBookingWhen,
30
+ formatDayLong: () => formatDayLong,
31
+ formatMonthLabel: () => formatMonthLabel,
32
+ formatSlotTime: () => formatSlotTime,
33
+ isBeforeToday: () => isBeforeToday,
34
+ monthMatrix: () => monthMatrix,
35
+ monthRange: () => monthRange,
36
+ sameMonth: () => sameMonth,
37
+ startOfMonth: () => startOfMonth,
38
+ visitorTimeZone: () => visitorTimeZone,
39
+ weekdayLabels: () => weekdayLabels,
40
+ ymd: () => ymd
41
+ });
42
+ module.exports = __toCommonJS(time_exports);
43
+ function visitorTimeZone() {
44
+ try {
45
+ return Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
46
+ } catch (e) {
47
+ return "UTC";
48
+ }
49
+ }
50
+ function ymd(d) {
51
+ var y = d.getFullYear();
52
+ var m = String(d.getMonth() + 1).padStart(2, "0");
53
+ var day = String(d.getDate()).padStart(2, "0");
54
+ return `${y}-${m}-${day}`;
55
+ }
56
+ function startOfMonth(d) {
57
+ return new Date(d.getFullYear(), d.getMonth(), 1);
58
+ }
59
+ function addMonths(d, n) {
60
+ return new Date(d.getFullYear(), d.getMonth() + n, 1);
61
+ }
62
+ function sameMonth(a, b) {
63
+ return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();
64
+ }
65
+ function isBeforeToday(key) {
66
+ return key < ymd(/* @__PURE__ */new Date());
67
+ }
68
+ function monthMatrix(viewDate) {
69
+ var weekStartsOn = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
70
+ var year = viewDate.getFullYear();
71
+ var month = viewDate.getMonth();
72
+ var firstWeekday = new Date(year, month, 1).getDay();
73
+ var startOffset = (firstWeekday - weekStartsOn + 7) % 7;
74
+ var cells = [];
75
+ for (var i = 0; i < 42; i++) {
76
+ var date = new Date(year, month, 1 - startOffset + i);
77
+ cells.push({
78
+ date,
79
+ key: ymd(date),
80
+ inMonth: date.getMonth() === month
81
+ });
82
+ }
83
+ return cells;
84
+ }
85
+ function monthRange(viewDate) {
86
+ var year = viewDate.getFullYear();
87
+ var month = viewDate.getMonth();
88
+ var startOfView = new Date(year, month, 1, 0, 0, 0, 0);
89
+ var now = /* @__PURE__ */new Date();
90
+ var start = startOfView.getTime() > now.getTime() ? startOfView : now;
91
+ var endOfView = new Date(year, month + 1, 0, 23, 59, 59, 999);
92
+ return {
93
+ startTime: start.toISOString(),
94
+ endTime: endOfView.toISOString()
95
+ };
96
+ }
97
+ function weekdayLabels() {
98
+ var weekStartsOn = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
99
+ var fmt = new Intl.DateTimeFormat(void 0, {
100
+ weekday: "short"
101
+ });
102
+ var out = [];
103
+ for (var i = 0; i < 7; i++) {
104
+ var d = new Date(2023, 0, 1 + (i + weekStartsOn) % 7);
105
+ out.push(fmt.format(d));
106
+ }
107
+ return out;
108
+ }
109
+ function formatMonthLabel(d) {
110
+ return new Intl.DateTimeFormat(void 0, {
111
+ month: "long",
112
+ year: "numeric"
113
+ }).format(d);
114
+ }
115
+ function formatDayLong(d) {
116
+ return new Intl.DateTimeFormat(void 0, {
117
+ weekday: "long",
118
+ month: "long",
119
+ day: "numeric"
120
+ }).format(d);
121
+ }
122
+ function formatSlotTime(iso, timeZone) {
123
+ return new Intl.DateTimeFormat(void 0, {
124
+ hour: "numeric",
125
+ minute: "2-digit",
126
+ timeZone
127
+ }).format(new Date(iso));
128
+ }
129
+ function formatBookingWhen(iso, timeZone) {
130
+ var at = new Date(iso);
131
+ var date = new Intl.DateTimeFormat(void 0, {
132
+ weekday: "long",
133
+ month: "long",
134
+ day: "numeric",
135
+ year: "numeric",
136
+ timeZone
137
+ }).format(at);
138
+ var time = new Intl.DateTimeFormat(void 0, {
139
+ hour: "numeric",
140
+ minute: "2-digit",
141
+ timeZoneName: "short",
142
+ timeZone
143
+ }).format(at);
144
+ return `${date} at ${time}`;
145
+ }
146
+ function dateFromKey(key) {
147
+ var [y, m, d] = key.split("-").map(Number);
148
+ return new Date(y, (m !== null && m !== void 0 ? m : 1) - 1, d !== null && d !== void 0 ? d : 1, 12, 0, 0, 0);
149
+ }
150
+ //# sourceMappingURL=time.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","time_exports","__export","addMonths","dateFromKey","formatBookingWhen","formatDayLong","formatMonthLabel","formatSlotTime","isBeforeToday","monthMatrix","monthRange","sameMonth","startOfMonth","visitorTimeZone","weekdayLabels","ymd","module","exports","Intl","DateTimeFormat","resolvedOptions","timeZone","e","d","y","getFullYear","m","String","getMonth","padStart","day","getDate","Date","n","a","b","key","viewDate","weekStartsOn","arguments","length","year","month","firstWeekday","getDay","startOffset","cells","i","date","push","inMonth","startOfView","now","start","getTime","endOfView","startTime","toISOString","endTime","fmt","weekday","out","format","iso","hour","minute","at"],"sources":["../../src/time.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,151 @@
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 useBooker_exports = {};
24
+ __export(useBooker_exports, {
25
+ useBooker: () => useBooker
26
+ });
27
+ module.exports = __toCommonJS(useBooker_exports);
28
+ var import_react = require("react");
29
+ var import_client = require("./client.cjs");
30
+ var import_hooks = require("./hooks.cjs");
31
+ var import_time = require("./time.cjs");
32
+ function useBooker(opts) {
33
+ const api = opts.apiUrl ?? import_client.DEFAULT_API_URL;
34
+ const timeZone = opts.timeZone ?? (0, import_time.visitorTimeZone)();
35
+ const weekStartsOn = opts.weekStartsOn ?? 0;
36
+ const event = (0, import_hooks.useEventType)(api, opts.eventSlug, opts.host);
37
+ const [viewDate, setViewDate] = (0, import_react.useState)(() => (0, import_time.startOfMonth)(/* @__PURE__ */new Date()));
38
+ const {
39
+ startTime,
40
+ endTime
41
+ } = (0, import_react.useMemo)(() => (0, import_time.monthRange)(viewDate), [viewDate]);
42
+ const slots = (0, import_hooks.useAvailableSlots)(api, {
43
+ eventTypeSlug: opts.eventSlug,
44
+ username: opts.host,
45
+ startTime,
46
+ endTime,
47
+ timeZone,
48
+ enabled: !!event.data
49
+ });
50
+ const [selectedDay, setSelectedDay] = (0, import_react.useState)(null);
51
+ const [selectedSlot, setSelectedSlot] = (0, import_react.useState)(null);
52
+ const [phase, setPhase] = (0, import_react.useState)("pick");
53
+ const [booking, setBooking] = (0, import_react.useState)(null);
54
+ const create = (0, import_hooks.useCreateBooking)(api);
55
+ const availableKeys = (0, import_react.useMemo)(() => {
56
+ const map = slots.data ?? {};
57
+ return new Set(Object.keys(map).filter(k => (map[k]?.length ?? 0) > 0));
58
+ }, [slots.data]);
59
+ const daySlots = (0, import_react.useMemo)(() => {
60
+ if (!selectedDay) return [];
61
+ return slots.data?.[selectedDay] ?? [];
62
+ }, [slots.data, selectedDay]);
63
+ (0, import_react.useEffect)(() => {
64
+ if (!opts.autoSelectFirst) return;
65
+ if (selectedDay && availableKeys.has(selectedDay)) return;
66
+ const first = [...availableKeys].sort()[0];
67
+ if (first) {
68
+ setSelectedDay(first);
69
+ setSelectedSlot(null);
70
+ }
71
+ }, [opts.autoSelectFirst, availableKeys, selectedDay]);
72
+ const now = (0, import_time.startOfMonth)(/* @__PURE__ */new Date());
73
+ const atFirstMonth = viewDate.getFullYear() === now.getFullYear() && viewDate.getMonth() === now.getMonth();
74
+ const goPrevMonth = () => {
75
+ if (atFirstMonth) return;
76
+ setViewDate(d => (0, import_time.addMonths)(d, -1));
77
+ setSelectedDay(null);
78
+ setSelectedSlot(null);
79
+ };
80
+ const goNextMonth = () => {
81
+ setViewDate(d => (0, import_time.addMonths)(d, 1));
82
+ setSelectedDay(null);
83
+ setSelectedSlot(null);
84
+ };
85
+ const selectDay = key => {
86
+ setSelectedDay(key);
87
+ setSelectedSlot(null);
88
+ };
89
+ const selectSlot = iso => {
90
+ setSelectedSlot(iso);
91
+ setPhase("form");
92
+ create.reset();
93
+ };
94
+ const back = () => {
95
+ setPhase("pick");
96
+ setSelectedSlot(null);
97
+ create.reset();
98
+ };
99
+ const reset = () => {
100
+ setBooking(null);
101
+ setSelectedSlot(null);
102
+ setSelectedDay(null);
103
+ setPhase("pick");
104
+ create.reset();
105
+ slots.refetch();
106
+ };
107
+ const submit = async responses => {
108
+ if (!selectedSlot) return;
109
+ const result = await create.submit({
110
+ eventTypeSlug: opts.eventSlug,
111
+ username: opts.host,
112
+ start: selectedSlot,
113
+ timeZone,
114
+ responses
115
+ });
116
+ if (result.ok) {
117
+ setBooking(result.booking);
118
+ setPhase("done");
119
+ opts.onBooked?.(result.booking);
120
+ } else if (result.conflict) {
121
+ slots.refetch();
122
+ setSelectedSlot(null);
123
+ setPhase("pick");
124
+ }
125
+ };
126
+ return {
127
+ api,
128
+ timeZone,
129
+ weekStartsOn,
130
+ event,
131
+ slots,
132
+ viewDate,
133
+ availableKeys,
134
+ selectedDay,
135
+ daySlots,
136
+ selectedSlot,
137
+ phase,
138
+ booking,
139
+ submitting: create.submitting,
140
+ error: create.error,
141
+ conflict: create.conflict,
142
+ goPrevMonth,
143
+ goNextMonth,
144
+ atFirstMonth,
145
+ selectDay,
146
+ selectSlot,
147
+ submit,
148
+ back,
149
+ reset
150
+ };
151
+ }