@new-vintage-labs/guest-prep 0.1.1 → 0.1.2
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 +3 -2
- package/dist/guest-prep.js +32 -6
- package/dist/guest-prep.mjs +940 -765
- package/package.json +1 -1
package/dist/guest-prep.mjs
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
class
|
|
1
|
+
class ne extends Error {
|
|
2
2
|
constructor(t) {
|
|
3
3
|
super(t.kind === "tool" ? t.message : t.kind), this.failure = t;
|
|
4
4
|
}
|
|
5
5
|
}
|
|
6
|
-
const
|
|
7
|
-
function
|
|
6
|
+
const Sn = ["New Vintage", "New Vintage Staging"];
|
|
7
|
+
function Qt() {
|
|
8
8
|
const e = globalThis.claude;
|
|
9
9
|
return e && typeof e.use == "function" ? e : null;
|
|
10
10
|
}
|
|
11
|
-
function
|
|
11
|
+
function Xt() {
|
|
12
12
|
const e = globalThis.openai;
|
|
13
13
|
return e && typeof e == "object" ? e : null;
|
|
14
14
|
}
|
|
15
|
-
function
|
|
16
|
-
return
|
|
15
|
+
function Ae() {
|
|
16
|
+
return Qt() ? "claude" : Xt() ? "chatgpt" : "browser";
|
|
17
17
|
}
|
|
18
|
-
function
|
|
18
|
+
function $n(e, t) {
|
|
19
19
|
let n = t.length === 1 ? t[0] : null;
|
|
20
|
-
return async (r,
|
|
21
|
-
var
|
|
22
|
-
if (n) return e.callTool(n, r,
|
|
23
|
-
const
|
|
24
|
-
for (const
|
|
20
|
+
return async (r, s) => {
|
|
21
|
+
var l;
|
|
22
|
+
if (n) return e.callTool(n, r, s);
|
|
23
|
+
const a = [];
|
|
24
|
+
for (const c of t)
|
|
25
25
|
try {
|
|
26
|
-
const d = await e.callTool(
|
|
27
|
-
return n =
|
|
26
|
+
const d = await e.callTool(c, r, s);
|
|
27
|
+
return n = c, d;
|
|
28
28
|
} catch (d) {
|
|
29
|
-
|
|
29
|
+
a.push(d);
|
|
30
30
|
}
|
|
31
|
-
throw (
|
|
31
|
+
throw (l = a.find((c) => ye(c).kind !== "reconnect")) != null ? l : a[0];
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
|
-
async function
|
|
35
|
-
const t =
|
|
34
|
+
async function Tn(e) {
|
|
35
|
+
const t = Qt();
|
|
36
36
|
if (t != null && t.use)
|
|
37
37
|
try {
|
|
38
38
|
const n = await Promise.race([
|
|
39
39
|
t.use("mcp"),
|
|
40
40
|
new Promise((r) => setTimeout(() => r(null), 1e4))
|
|
41
41
|
]);
|
|
42
|
-
return !n || typeof n.callTool != "function" ? null :
|
|
42
|
+
return !n || typeof n.callTool != "function" ? null : $n(n, e ? [e] : Sn);
|
|
43
43
|
} catch {
|
|
44
44
|
return null;
|
|
45
45
|
}
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
|
-
function
|
|
48
|
+
function Nn(e) {
|
|
49
49
|
const t = e.content;
|
|
50
50
|
if (!Array.isArray(t)) return;
|
|
51
51
|
const n = t.find((r) => r && typeof r == "object" && r.type === "text");
|
|
@@ -56,44 +56,44 @@ function fn(e) {
|
|
|
56
56
|
return n.text;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
function
|
|
60
|
-
var r,
|
|
61
|
-
if (!e || typeof e != "object") throw new
|
|
62
|
-
const t = e, n = (
|
|
59
|
+
function Mt(e) {
|
|
60
|
+
var r, s, a;
|
|
61
|
+
if (!e || typeof e != "object") throw new ne({ kind: "tool", message: "The connector returned nothing." });
|
|
62
|
+
const t = e, n = (a = (s = (r = t.payload) != null ? r : t.structuredContent) != null ? s : Nn(t)) != null ? a : t;
|
|
63
63
|
if (t.isError === !0 || n && typeof n == "object" && n.ok === !1) {
|
|
64
|
-
const
|
|
65
|
-
throw new
|
|
64
|
+
const l = n.error, c = typeof (l == null ? void 0 : l.message) == "string" ? l.message : typeof n == "string" ? n : "The New Vintage tool returned an error.";
|
|
65
|
+
throw new ne({ kind: "tool", message: c });
|
|
66
66
|
}
|
|
67
|
-
if (!n || typeof n != "object") throw new
|
|
67
|
+
if (!n || typeof n != "object") throw new ne({ kind: "tool", message: String(n) });
|
|
68
68
|
return n;
|
|
69
69
|
}
|
|
70
|
-
function
|
|
71
|
-
var r,
|
|
72
|
-
if (e instanceof
|
|
73
|
-
const t = String((r = e == null ? void 0 : e.code) != null ? r : ""), n = String((
|
|
70
|
+
function ye(e) {
|
|
71
|
+
var r, s, a;
|
|
72
|
+
if (e instanceof ne) return e.failure;
|
|
73
|
+
const t = String((r = e == null ? void 0 : e.code) != null ? r : ""), n = String((a = (s = e == null ? void 0 : e.message) != null ? s : e) != null ? a : "");
|
|
74
74
|
return /not_granted|consent|permission|denied/i.test(t) ? { kind: "approval" } : /server_not_connected|unauthori[sz]ed|auth|reconnect/i.test(t + " " + n) ? { kind: "reconnect" } : (e == null ? void 0 : e.retryable) === !0 || /timeout|unavailable|rate_limited|network|5\d\d/i.test(t + " " + n) ? { kind: "temporary" } : /cannot access|not in this session|tenant/i.test(n) ? { kind: "unavailable" } : { kind: "tool", message: n || "The New Vintage tool returned an error." };
|
|
75
75
|
}
|
|
76
|
-
function
|
|
76
|
+
function An(e = Ae()) {
|
|
77
77
|
return e === "claude" ? "Reconnect New Vintage in claude.ai Settings → Connectors." : "Reconnect New Vintage in your chat's connector settings.";
|
|
78
78
|
}
|
|
79
|
-
async function
|
|
80
|
-
var
|
|
81
|
-
const n =
|
|
79
|
+
async function Mn(e, t = {}) {
|
|
80
|
+
var s, a, l;
|
|
81
|
+
const n = Xt(), r = (s = t.followUp) != null ? s : n && typeof n.sendFollowUpMessage == "function" ? (c) => n.sendFollowUpMessage({ prompt: c, ...t.title ? { title: t.title } : {} }) : null;
|
|
82
82
|
if (r)
|
|
83
83
|
try {
|
|
84
84
|
return await r(e), { kind: "sent" };
|
|
85
|
-
} catch (
|
|
86
|
-
return { kind: "failed", message: String((
|
|
85
|
+
} catch (c) {
|
|
86
|
+
return { kind: "failed", message: String((a = c == null ? void 0 : c.message) != null ? a : "The request was not sent.") };
|
|
87
87
|
}
|
|
88
88
|
try {
|
|
89
|
-
const
|
|
90
|
-
if (!
|
|
91
|
-
return await
|
|
89
|
+
const c = (l = globalThis.navigator) == null ? void 0 : l.clipboard;
|
|
90
|
+
if (!c || typeof c.writeText != "function") throw new Error("no clipboard");
|
|
91
|
+
return await c.writeText(e), { kind: "copied" };
|
|
92
92
|
} catch {
|
|
93
93
|
return { kind: "manual", text: e };
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
const
|
|
96
|
+
const en = [
|
|
97
97
|
"America/Los_Angeles",
|
|
98
98
|
"America/Denver",
|
|
99
99
|
"America/Phoenix",
|
|
@@ -101,43 +101,43 @@ const Bt = [
|
|
|
101
101
|
"America/New_York",
|
|
102
102
|
"America/Anchorage",
|
|
103
103
|
"Pacific/Honolulu"
|
|
104
|
-
],
|
|
105
|
-
function
|
|
104
|
+
], _n = /^\d{4}-\d{2}-\d{2}$/, Cn = /^[A-Za-z0-9-]{1,100}$/, _t = /timestamptz '(\d{4}-\d{2}-\d{2}) 00:00:00 [^']*'/g, Ct = /(\bfocus as \(\s*(?:--[^\n]*\n\s*)?select \* from \(\s*values )\([^()]*\)(\s*\) focus_rows \()/;
|
|
105
|
+
function re(e) {
|
|
106
106
|
throw new Error("fillGuestPrepQuery: " + e);
|
|
107
107
|
}
|
|
108
|
-
function
|
|
109
|
-
(typeof e != "string" || !
|
|
110
|
-
const [t, n, r] = e.split("-").map(Number),
|
|
111
|
-
return
|
|
108
|
+
function En(e) {
|
|
109
|
+
(typeof e != "string" || !_n.test(e)) && re("day must be YYYY-MM-DD");
|
|
110
|
+
const [t, n, r] = e.split("-").map(Number), s = new Date(Date.UTC(t, n - 1, r));
|
|
111
|
+
return s.toISOString().slice(0, 10) !== e && re("bad date " + e), new Date(s.getTime() + 864e5).toISOString().slice(0, 10);
|
|
112
112
|
}
|
|
113
|
-
function
|
|
114
|
-
return e == null ? "(null::text, null::text)" : (e.source !== "commerce7" && e.source !== "tock" &&
|
|
113
|
+
function zn(e) {
|
|
114
|
+
return e == null ? "(null::text, null::text)" : (e.source !== "commerce7" && e.source !== "tock" && re("unexpected source " + String(e.source)), (typeof e.id != "string" || !Cn.test(e.id)) && re("arrival id may only hold letters, digits and hyphens"), "('" + e.source + "'::text, '" + e.id + "'::text)");
|
|
115
115
|
}
|
|
116
|
-
function
|
|
116
|
+
function Pn(e, t) {
|
|
117
117
|
const n = t || {};
|
|
118
|
-
|
|
119
|
-
const r =
|
|
120
|
-
let
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
const
|
|
124
|
-
return
|
|
125
|
-
}
|
|
126
|
-
function
|
|
118
|
+
en.indexOf(n.timeZone) < 0 && re("unsupported time zone");
|
|
119
|
+
const r = En(n.day);
|
|
120
|
+
let s = String(e);
|
|
121
|
+
const a = Array.from(new Set(Array.from(s.matchAll(_t), (c) => c[1]))).sort();
|
|
122
|
+
a.length > 2 && re("expected at most two day literals"), s = s.replace(_t, (c, d) => "timestamptz '" + (a.length === 2 && d === a[1] ? r : n.day) + " 00:00:00 " + n.timeZone + "'"), s = s.replace(/at time zone '[^']*'/gi, (c) => c.slice(0, c.indexOf("'")) + "'" + n.timeZone + "'");
|
|
123
|
+
const l = zn(n.arrival);
|
|
124
|
+
return Ct.test(s) ? s = s.replace(Ct, (c, d, m) => d + l + m) : n.arrival && re("this query has no focus row"), s;
|
|
125
|
+
}
|
|
126
|
+
function U(e) {
|
|
127
127
|
if (e == null || e === "") return null;
|
|
128
128
|
const t = typeof e == "number" ? e : Number(e);
|
|
129
129
|
return Number.isFinite(t) ? t : null;
|
|
130
130
|
}
|
|
131
|
-
const
|
|
132
|
-
function
|
|
131
|
+
const Ln = new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", minimumFractionDigits: 2, maximumFractionDigits: 2 }), In = new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", maximumFractionDigits: 0 });
|
|
132
|
+
function Y(e) {
|
|
133
133
|
var n;
|
|
134
|
-
const t = (n =
|
|
135
|
-
return Number.isInteger(Math.round(t * 100) / 100) ?
|
|
134
|
+
const t = (n = U(e)) != null ? n : 0;
|
|
135
|
+
return Number.isInteger(Math.round(t * 100) / 100) ? In.format(t) : Ln.format(t);
|
|
136
136
|
}
|
|
137
|
-
function
|
|
137
|
+
function A(e, t, n = `${t}s`) {
|
|
138
138
|
return `${e} ${e === 1 ? t : n}`;
|
|
139
139
|
}
|
|
140
|
-
function
|
|
140
|
+
function On(e) {
|
|
141
141
|
if (e) return e;
|
|
142
142
|
try {
|
|
143
143
|
return Intl.DateTimeFormat().resolvedOptions().timeZone || "America/Los_Angeles";
|
|
@@ -145,156 +145,156 @@ function Tn(e) {
|
|
|
145
145
|
return "America/Los_Angeles";
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
|
-
function
|
|
149
|
-
const n = new Intl.DateTimeFormat("en-CA", { timeZone: t, year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", hourCycle: "h23" }).formatToParts(e), r = (
|
|
150
|
-
var
|
|
151
|
-
return (
|
|
148
|
+
function Et(e, t) {
|
|
149
|
+
const n = new Intl.DateTimeFormat("en-CA", { timeZone: t, year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", hourCycle: "h23" }).formatToParts(e), r = (s) => {
|
|
150
|
+
var a, l;
|
|
151
|
+
return (l = (a = n.find((c) => c.type === s)) == null ? void 0 : a.value) != null ? l : "00";
|
|
152
152
|
};
|
|
153
153
|
return { day: `${r("year")}-${r("month")}-${r("day")}`, minutes: Number(r("hour")) % 24 * 60 + Number(r("minute")) };
|
|
154
154
|
}
|
|
155
|
-
const
|
|
156
|
-
function
|
|
157
|
-
return typeof e != "string" || !
|
|
155
|
+
const Rn = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
156
|
+
function zt(e) {
|
|
157
|
+
return typeof e != "string" || !Rn.test(e) ? !1 : be(e).toISOString().slice(0, 10) === e;
|
|
158
158
|
}
|
|
159
|
-
function
|
|
159
|
+
function be(e) {
|
|
160
160
|
const [t, n, r] = e.split("-").map(Number);
|
|
161
161
|
return new Date(Date.UTC(t, n - 1, r));
|
|
162
162
|
}
|
|
163
|
-
function
|
|
164
|
-
return new Date(
|
|
163
|
+
function W(e, t) {
|
|
164
|
+
return new Date(be(e).getTime() + t * 864e5).toISOString().slice(0, 10);
|
|
165
165
|
}
|
|
166
|
-
function
|
|
167
|
-
const [n, r] = e.split("-").map(Number),
|
|
168
|
-
return `${Math.floor(
|
|
166
|
+
function Ne(e, t) {
|
|
167
|
+
const [n, r] = e.split("-").map(Number), s = n * 12 + r - 1 + t;
|
|
168
|
+
return `${Math.floor(s / 12)}-${String(s % 12 + 1).padStart(2, "0")}`;
|
|
169
169
|
}
|
|
170
|
-
function
|
|
171
|
-
return Math.round((
|
|
170
|
+
function Se(e, t) {
|
|
171
|
+
return Math.round((be(t).getTime() - be(e).getTime()) / 864e5);
|
|
172
172
|
}
|
|
173
|
-
function
|
|
174
|
-
return
|
|
173
|
+
function ve(e) {
|
|
174
|
+
return be(e).getUTCDay();
|
|
175
175
|
}
|
|
176
|
-
const
|
|
177
|
-
function
|
|
178
|
-
return `${
|
|
176
|
+
const Ue = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], Me = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], tn = (e, t) => e.slice(0, 4) !== t.slice(0, 4) ? `, ${e.slice(0, 4)}` : "";
|
|
177
|
+
function nn(e, t) {
|
|
178
|
+
return `${Me[Number(e.slice(5, 7)) - 1].slice(0, 3)} ${Number(e.slice(8, 10))}${tn(e, t)}`;
|
|
179
179
|
}
|
|
180
|
-
function
|
|
181
|
-
return `${
|
|
180
|
+
function ae(e, t) {
|
|
181
|
+
return `${Ue[ve(e)].slice(0, 3)}, ${nn(e, t)}`;
|
|
182
182
|
}
|
|
183
|
-
function
|
|
184
|
-
return `${
|
|
183
|
+
function je(e, t) {
|
|
184
|
+
return `${Ue[ve(e)]}, ${Me[Number(e.slice(5, 7)) - 1]} ${Number(e.slice(8, 10))}${tn(e, t)}`;
|
|
185
185
|
}
|
|
186
|
-
function
|
|
187
|
-
return `${
|
|
186
|
+
function Pt(e) {
|
|
187
|
+
return `${Me[Number(e.slice(5, 7)) - 1]} ${e.slice(0, 4)}`;
|
|
188
188
|
}
|
|
189
|
-
function
|
|
189
|
+
function qn(e) {
|
|
190
190
|
const t = /^(\d{1,2}):(\d{2})/.exec(String(e != null ? e : ""));
|
|
191
191
|
return t ? Number(t[1]) * 60 + Number(t[2]) : null;
|
|
192
192
|
}
|
|
193
|
-
function
|
|
193
|
+
function J(e) {
|
|
194
194
|
const t = Math.floor(e / 60) % 24;
|
|
195
195
|
return `${t % 12 === 0 ? 12 : t % 12}:${String(e % 60).padStart(2, "0")} ${t < 12 ? "AM" : "PM"}`;
|
|
196
196
|
}
|
|
197
|
-
function
|
|
198
|
-
return `${
|
|
197
|
+
function we(e, t, n) {
|
|
198
|
+
return `${ae(e, n)}, ${J(t)}`;
|
|
199
199
|
}
|
|
200
|
-
function
|
|
200
|
+
function Ge(e) {
|
|
201
201
|
if (e <= 0) return "now";
|
|
202
202
|
const t = Math.floor(e / 60), n = e % 60;
|
|
203
203
|
return t ? n ? `in ${t} hr ${n} min` : `in ${t} hr` : `in ${n} min`;
|
|
204
204
|
}
|
|
205
|
-
function
|
|
206
|
-
const n =
|
|
205
|
+
function Dn(e, t) {
|
|
206
|
+
const n = Se(e, t);
|
|
207
207
|
if (n <= 0) return "today";
|
|
208
208
|
if (n === 1) return "yesterday";
|
|
209
209
|
if (n < 14) return `${n} days ago`;
|
|
210
210
|
let r = (Number(t.slice(0, 4)) - Number(e.slice(0, 4))) * 12 + Number(t.slice(5, 7)) - Number(e.slice(5, 7));
|
|
211
|
-
return Number(t.slice(8, 10)) < Number(e.slice(8, 10)) && (r -= 1), r < 2 ? `${Math.max(2, Math.floor(n / 7))} weeks ago` : r < 12 ? `${r} months ago` : `${
|
|
211
|
+
return Number(t.slice(8, 10)) < Number(e.slice(8, 10)) && (r -= 1), r < 2 ? `${Math.max(2, Math.floor(n / 7))} weeks ago` : r < 12 ? `${r} months ago` : `${A(Math.floor(r / 12), "year")} ago`;
|
|
212
212
|
}
|
|
213
|
-
function
|
|
214
|
-
var
|
|
215
|
-
const n = ((
|
|
216
|
-
return r &&
|
|
213
|
+
function Vn(e, t) {
|
|
214
|
+
var a;
|
|
215
|
+
const n = ((a = U(e)) != null ? a : 0) - 1, r = Me[n], s = U(t);
|
|
216
|
+
return r && s ? `${r} ${s}` : r != null ? r : s ? String(s) : "";
|
|
217
217
|
}
|
|
218
|
-
function
|
|
218
|
+
function Lt(e) {
|
|
219
219
|
const t = e.trim().toLowerCase();
|
|
220
220
|
return t.charAt(0).toUpperCase() + t.slice(1);
|
|
221
221
|
}
|
|
222
|
-
const
|
|
223
|
-
function
|
|
222
|
+
const Un = "guest-prep", De = "guest-prep-day-arrivals";
|
|
223
|
+
function Le(e, t) {
|
|
224
224
|
return {
|
|
225
225
|
call: async (n, r) => {
|
|
226
|
-
const
|
|
226
|
+
const s = n === "get_analysis_guide" || !t ? r : { tenantId: t, ...r };
|
|
227
227
|
try {
|
|
228
|
-
return
|
|
229
|
-
} catch (
|
|
230
|
-
if (
|
|
231
|
-
return await new Promise((
|
|
228
|
+
return Mt(await e(n, s));
|
|
229
|
+
} catch (a) {
|
|
230
|
+
if (ye(a).kind !== "temporary") throw a;
|
|
231
|
+
return await new Promise((l) => setTimeout(l, 2e3)), Mt(await e(n, s));
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
234
|
};
|
|
235
235
|
}
|
|
236
|
-
async function
|
|
237
|
-
var
|
|
236
|
+
async function It(e, t) {
|
|
237
|
+
var a, l, c;
|
|
238
238
|
const n = await e.call("get_analysis_guide", {
|
|
239
239
|
context: "Opening the Guest Prep briefing with the latest day query.",
|
|
240
|
-
slug:
|
|
240
|
+
slug: Un,
|
|
241
241
|
includeReferenceQueries: !0,
|
|
242
242
|
...t ? { pageSetup: t } : {}
|
|
243
|
-
}), r = (
|
|
244
|
-
for (const d of (
|
|
245
|
-
typeof d.slug == "string" && typeof d.sqlText == "string" && (
|
|
246
|
-
if (!
|
|
247
|
-
return { version: (
|
|
243
|
+
}), r = (a = n.item) != null ? a : n, s = {};
|
|
244
|
+
for (const d of (l = r.referenceQueries) != null ? l : [])
|
|
245
|
+
typeof d.slug == "string" && typeof d.sqlText == "string" && (s[d.slug] = d.sqlText);
|
|
246
|
+
if (!s[De]) throw new ne({ kind: "tool", message: `The guide is missing the ${De} query.` });
|
|
247
|
+
return { version: (c = U(r.version)) != null ? c : 0, queries: s };
|
|
248
248
|
}
|
|
249
|
-
async function
|
|
249
|
+
async function rn(e, t, n) {
|
|
250
250
|
const r = await e.call("safe_tenant_sql", { context: n, sqlText: t });
|
|
251
251
|
return { rows: Array.isArray(r.rows) ? r.rows : [], complete: r.resultMode === "complete" };
|
|
252
252
|
}
|
|
253
|
-
function
|
|
253
|
+
function jn(e, t, n, r) {
|
|
254
254
|
try {
|
|
255
|
-
return
|
|
255
|
+
return Pn(e.queries[De], { timeZone: t, day: n, arrival: r });
|
|
256
256
|
} catch {
|
|
257
|
-
throw new
|
|
257
|
+
throw new ne({ kind: "needs_update" });
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
|
-
async function
|
|
261
|
-
var
|
|
262
|
-
const r =
|
|
263
|
-
for (let
|
|
264
|
-
const
|
|
265
|
-
if (
|
|
260
|
+
async function Ot(e, t, n) {
|
|
261
|
+
var a;
|
|
262
|
+
const r = jn(t, n.timeZone, n.day, (a = n.arrival) != null ? a : null), s = n.arrival ? "Refreshing one guest's briefing for the Guest Prep page." : "Loading one day's arrivals for the Guest Prep briefing.";
|
|
263
|
+
for (let l = 0; l < 2; l += 1) {
|
|
264
|
+
const c = await rn(e, r, s);
|
|
265
|
+
if (c.complete) return c.rows;
|
|
266
266
|
}
|
|
267
|
-
throw new
|
|
267
|
+
throw new ne({ kind: "tool", message: "New Vintage returned only a preview of this day, so it wasn't loaded. Try again." });
|
|
268
268
|
}
|
|
269
|
-
async function
|
|
269
|
+
async function Gn(e) {
|
|
270
270
|
var t, n;
|
|
271
271
|
try {
|
|
272
|
-
const r = await e.call("discover_tenant_data_sources", { context: "Finding which wineries the Guest Prep page can load." }),
|
|
273
|
-
return Array.isArray(
|
|
272
|
+
const r = await e.call("discover_tenant_data_sources", { context: "Finding which wineries the Guest Prep page can load." }), s = (t = r.accessibleTenants) != null ? t : r.tenants;
|
|
273
|
+
return Array.isArray(s) ? s.filter((a) => typeof (a == null ? void 0 : a.tenantId) == "string").map((a) => ({ tenantId: String(a.tenantId), name: typeof a.name == "string" && a.name ? a.name : String(a.tenantId) })) : typeof r.tenantId == "string" ? [{ tenantId: r.tenantId, name: typeof r.tenantName == "string" ? r.tenantName : r.tenantId }] : [];
|
|
274
274
|
} catch (r) {
|
|
275
|
-
const
|
|
276
|
-
var
|
|
275
|
+
const s = String((n = r == null ? void 0 : r.message) != null ? n : ""), a = Array.from(s.matchAll(/(?:([^,:]+?) -> )?tenantId "([^"]+)"/g)).map((l) => {
|
|
276
|
+
var c;
|
|
277
277
|
return {
|
|
278
|
-
tenantId:
|
|
279
|
-
name: ((
|
|
278
|
+
tenantId: l[2],
|
|
279
|
+
name: ((c = l[1]) != null ? c : "").replace(/^.*(?:values|these)[^:]*:\s*/i, "").trim() || l[2]
|
|
280
280
|
};
|
|
281
281
|
});
|
|
282
|
-
if (
|
|
282
|
+
if (a.length) return a;
|
|
283
283
|
throw r;
|
|
284
284
|
}
|
|
285
285
|
}
|
|
286
|
-
const
|
|
287
|
-
function
|
|
286
|
+
const Fn = "Name not on file";
|
|
287
|
+
function xe(e) {
|
|
288
288
|
var t;
|
|
289
|
-
return (t = e.name) != null ? t :
|
|
289
|
+
return (t = e.name) != null ? t : Fn;
|
|
290
290
|
}
|
|
291
|
-
const
|
|
292
|
-
function
|
|
293
|
-
const t = String(e != null ? e : "").replace(
|
|
291
|
+
const Zn = /[A-Z0-9._%+-]+@[A-Z0-9-]+(?:\.[A-Z0-9-]+)*\.[A-Z]{2,}/gi, Bn = /(?:\+?\d{1,3}[\s.-]?)?(?:\(\d{3}\)\s?|\b\d{3}[\s.-]?)\d{3}[\s.-]?\d{4}\b|\b\d{3}[\s.-]\d{4}\b/g;
|
|
292
|
+
function Rt(e) {
|
|
293
|
+
const t = String(e != null ? e : "").replace(Zn, "[email]").replace(Bn, "[phone]").replace(/\s{2,}/g, " ").replace(/\s+([,.;:!?])/g, "$1").replace(/([,;:])(?=[.!?]|$)/g, "").replace(/^[\s,;:.-]+|[\s,;:-]+$/g, "");
|
|
294
294
|
return t || null;
|
|
295
295
|
}
|
|
296
|
-
const
|
|
297
|
-
function
|
|
296
|
+
const Ie = (e) => String(e != null ? e : "").trim().replace(/\s+/g, " ").toLowerCase();
|
|
297
|
+
function Hn(e) {
|
|
298
298
|
const t = (n) => (n != null ? n : []).flatMap((r) => {
|
|
299
299
|
try {
|
|
300
300
|
return [new RegExp(r, "i")];
|
|
@@ -304,27 +304,27 @@ function In(e) {
|
|
|
304
304
|
});
|
|
305
305
|
return { hide: t(e.hide), interests: t(e.interests), vip: t(e.vip), club: t(e.club) };
|
|
306
306
|
}
|
|
307
|
-
function
|
|
307
|
+
function Yn(e, t) {
|
|
308
308
|
var r;
|
|
309
309
|
const n = { vip: !1, interests: [], clubTags: [], accountTags: [] };
|
|
310
|
-
for (const
|
|
311
|
-
const
|
|
312
|
-
if (!
|
|
313
|
-
const
|
|
314
|
-
if (
|
|
315
|
-
n.interests.push(((r =
|
|
310
|
+
for (const s of e) {
|
|
311
|
+
const a = s.trim();
|
|
312
|
+
if (!a || t.hide.some((c) => c.test(a))) continue;
|
|
313
|
+
const l = t.interests.map((c) => c.exec(a)).find(Boolean);
|
|
314
|
+
if (l) {
|
|
315
|
+
n.interests.push(((r = l[1]) != null ? r : l[0]).trim());
|
|
316
316
|
continue;
|
|
317
317
|
}
|
|
318
|
-
t.vip.some((
|
|
318
|
+
t.vip.some((c) => c.test(a)) ? n.vip = !0 : t.club.some((c) => c.test(a)) ? n.clubTags.push(a) : n.accountTags.push(a);
|
|
319
319
|
}
|
|
320
320
|
return n;
|
|
321
321
|
}
|
|
322
|
-
function
|
|
322
|
+
function R(e) {
|
|
323
323
|
if (e == null) return null;
|
|
324
324
|
const t = String(e).trim();
|
|
325
325
|
return t || null;
|
|
326
326
|
}
|
|
327
|
-
function
|
|
327
|
+
function $e(e) {
|
|
328
328
|
if (Array.isArray(e)) return e;
|
|
329
329
|
if (typeof e == "string" && e.trim().startsWith("["))
|
|
330
330
|
try {
|
|
@@ -335,152 +335,188 @@ function xe(e) {
|
|
|
335
335
|
}
|
|
336
336
|
return [];
|
|
337
337
|
}
|
|
338
|
-
function
|
|
339
|
-
return typeof e == "string" && !e.trim().startsWith("[") ? e.split(",").map((t) => t.trim()).filter(Boolean) :
|
|
338
|
+
function ce(e) {
|
|
339
|
+
return typeof e == "string" && !e.trim().startsWith("[") ? e.split(",").map((t) => t.trim()).filter(Boolean) : $e(e).map((t) => R(t)).filter((t) => !!t);
|
|
340
340
|
}
|
|
341
|
-
const
|
|
342
|
-
function
|
|
341
|
+
const Wn = (e) => /^rose$/i.test(e) ? "Rosé" : e, qt = (e) => ce(e).map((t) => t.toLowerCase());
|
|
342
|
+
function Dt(e, t) {
|
|
343
343
|
if (!/^\d{2}-\d{2}$/.test(e)) return null;
|
|
344
|
-
const n = Number(t.slice(0, 4)),
|
|
345
|
-
return
|
|
346
|
-
}
|
|
347
|
-
function
|
|
348
|
-
const r = [],
|
|
349
|
-
|
|
350
|
-
const
|
|
351
|
-
return
|
|
352
|
-
}
|
|
353
|
-
function
|
|
354
|
-
var
|
|
355
|
-
const n = e.source === "tock" ? "tock" : "commerce7", r = String((
|
|
356
|
-
var
|
|
357
|
-
return { title: (
|
|
358
|
-
}).filter((
|
|
359
|
-
for (const
|
|
360
|
-
const
|
|
361
|
-
if (!(!
|
|
344
|
+
const n = Number(t.slice(0, 4)), s = [n - 1, n, n + 1].map((a) => `${a}-${e}`).filter((a) => W(a, 0) === a).sort((a, l) => Math.abs(Se(t, a)) - Math.abs(Se(t, l)))[0];
|
|
345
|
+
return s && Math.abs(Se(t, s)) <= 30 ? s : null;
|
|
346
|
+
}
|
|
347
|
+
function Kn(e, t, n) {
|
|
348
|
+
const r = [], s = R(e.bday_md), a = s ? Dt(s, t) : null;
|
|
349
|
+
a && r.push(a === t ? "Birthday on this day" : `Birthday ${ae(a, n)}`);
|
|
350
|
+
const l = R(e.club_signup), c = l && /^\d{4}-\d{2}-\d{2}$/.test(l) ? Dt(l.slice(5), t) : null, d = c && l ? Number(c.slice(0, 4)) - Number(l.slice(0, 4)) : 0;
|
|
351
|
+
return c && d > 0 && r.push(`${A(d, "year")} in the club ${c === t ? "on this day" : ae(c, n)}`), r;
|
|
352
|
+
}
|
|
353
|
+
function Jn(e, t) {
|
|
354
|
+
var Q, z, B;
|
|
355
|
+
const n = e.source === "tock" ? "tock" : "commerce7", r = String((Q = e.arr_id) != null ? Q : ""), s = (z = U(e.party)) != null ? z : 0, a = e.visit === "First visit" ? "first" : e.visit === "Return" ? "return" : "unknown", l = Yn(ce(e.tags), t.rules), c = R(e.club_titles), d = c !== null, m = R(e.signup_tier), M = R(e.churn_tier), k = !d && qt(m).some((g) => g === "high" || g === "very high"), h = d && qt(M).some((g) => g === "medium" || g === "high"), x = R(e.last_taste), y = x ? { title: x, day: R(e.last_taste_date) } : null, _ = $e(e.last_taste_items).map((g) => g).map((g) => {
|
|
356
|
+
var E, N;
|
|
357
|
+
return { title: (E = R(g == null ? void 0 : g.title)) != null ? E : "", qty: (N = U(g == null ? void 0 : g.qty)) != null ? N : 0 };
|
|
358
|
+
}).filter((g) => g.title), C = $e(e.notes).map((g) => g).map((g) => ({ content: Rt(g == null ? void 0 : g.content), when: Vn(g == null ? void 0 : g.month, g == null ? void 0 : g.year), original: Ie(g == null ? void 0 : g.content) })).filter((g) => !!g.content).slice(0, 3), L = C.map(({ content: g, when: E }) => ({ content: g, when: E })), T = new Set(C.map((g) => g.original)), q = [];
|
|
359
|
+
for (const g of $e(e.last_taste_notes)) {
|
|
360
|
+
const E = Rt(g);
|
|
361
|
+
if (!(!E || T.has(Ie(g))) && (T.add(Ie(g)), q.push(E), q.length === 3))
|
|
362
362
|
break;
|
|
363
363
|
}
|
|
364
|
-
const
|
|
364
|
+
const F = U(e.price_floor), I = U(e.price_ceiling), O = U(e.avg_unit_price), Z = U(e.ltv_cents), j = U(e.order_count);
|
|
365
365
|
return {
|
|
366
366
|
key: `${n}:${r}`,
|
|
367
367
|
source: n,
|
|
368
368
|
id: r,
|
|
369
369
|
row: e,
|
|
370
|
-
minutes: (
|
|
371
|
-
party:
|
|
372
|
-
experience:
|
|
373
|
-
name:
|
|
374
|
-
visit:
|
|
375
|
-
vip:
|
|
370
|
+
minutes: (B = qn(e.t)) != null ? B : 0,
|
|
371
|
+
party: s,
|
|
372
|
+
experience: R(e.experience),
|
|
373
|
+
name: R(e.name),
|
|
374
|
+
visit: a,
|
|
375
|
+
vip: l.vip,
|
|
376
376
|
clubMember: d,
|
|
377
|
-
clubTitles:
|
|
378
|
-
prospect:
|
|
379
|
-
signupTier:
|
|
380
|
-
atRisk:
|
|
381
|
-
churnTier:
|
|
382
|
-
clubPickup:
|
|
383
|
-
large:
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
377
|
+
clubTitles: c,
|
|
378
|
+
prospect: k,
|
|
379
|
+
signupTier: m,
|
|
380
|
+
atRisk: h,
|
|
381
|
+
churnTier: M,
|
|
382
|
+
clubPickup: R(e.next_ship) === t.day,
|
|
383
|
+
large: s >= t.largeParty,
|
|
384
|
+
partlyRefunded: e.refund_state === "partial",
|
|
385
|
+
occasions: Kn(e, t.day, t.today),
|
|
386
|
+
interests: l.interests,
|
|
387
|
+
clubTags: l.clubTags,
|
|
388
|
+
accountTags: l.accountTags,
|
|
389
|
+
varietals: ce(e.top_varietals).slice(0, 3),
|
|
390
|
+
wineTypes: ce(e.top_wine_types).map(Wn).slice(0, 2),
|
|
391
|
+
vintages: ce(e.top_vintages).slice(0, 3),
|
|
392
|
+
appellations: ce(e.top_appellations).slice(0, 2),
|
|
393
|
+
lastTaste: y,
|
|
394
|
+
bought: y ? { items: _, total: U(e.last_taste_spend) } : null,
|
|
395
|
+
orderNotes: q,
|
|
396
|
+
personalNotes: L,
|
|
397
|
+
price: F !== null || I !== null || O !== null ? { floor: F, ceiling: I, avg: O } : null,
|
|
398
|
+
lifetime: Z !== null && (Z > 0 || (j != null ? j : 0) > 0) ? { spend: Z / 100, orders: j } : null,
|
|
399
|
+
since: R(e.since_year)
|
|
399
400
|
};
|
|
400
401
|
}
|
|
401
|
-
function
|
|
402
|
-
return e.map((n) =>
|
|
402
|
+
function Qn(e, t) {
|
|
403
|
+
return e.map((n) => Jn(n, t)).map((n, r) => ({ arrival: n, index: r })).sort((n, r) => n.arrival.minutes - r.arrival.minutes || n.index - r.index).map(({ arrival: n }) => n);
|
|
404
|
+
}
|
|
405
|
+
function Xn(e, t) {
|
|
406
|
+
const n = [...e].sort((a, l) => a.minutes - l.minutes), r = [];
|
|
407
|
+
for (const a of n) {
|
|
408
|
+
const l = r[r.length - 1];
|
|
409
|
+
l && a.minutes - l[l.length - 1].minutes < t ? l.push(a) : r.push([a]);
|
|
410
|
+
}
|
|
411
|
+
return r.flatMap((a) => {
|
|
412
|
+
var c;
|
|
413
|
+
if (a[a.length - 1].minutes - a[0].minutes <= 120) return [a];
|
|
414
|
+
const l = /* @__PURE__ */ new Map();
|
|
415
|
+
for (const d of a) {
|
|
416
|
+
const m = Math.floor(d.minutes / 60);
|
|
417
|
+
l.set(m, [...(c = l.get(m)) != null ? c : [], d]);
|
|
418
|
+
}
|
|
419
|
+
return Array.from(l.values());
|
|
420
|
+
}).map((a) => ({ key: String(a[0].minutes), first: a[0].minutes, last: a[a.length - 1].minutes, arrivals: a }));
|
|
421
|
+
}
|
|
422
|
+
function er(e) {
|
|
423
|
+
const t = [], n = e.filter((a) => a.vip).length, r = e.filter((a) => a.large).length, s = e.filter((a) => a.clubPickup).length;
|
|
424
|
+
return n && t.push(A(n, "VIP")), r && t.push(A(r, "large party", "large parties")), s && t.push(A(s, "club pickup")), t.length ? t.join(", ") : null;
|
|
425
|
+
}
|
|
426
|
+
const an = [
|
|
427
|
+
{ id: "vip", label: "VIP", test: (e) => e.vip },
|
|
428
|
+
{ id: "first", label: "First visit", test: (e) => e.visit === "first" },
|
|
429
|
+
{ id: "club", label: "Club member", test: (e) => e.clubMember },
|
|
430
|
+
{ id: "large", label: "Large party", test: (e) => e.large }
|
|
431
|
+
];
|
|
432
|
+
function Vt(e) {
|
|
433
|
+
return e.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().trim();
|
|
434
|
+
}
|
|
435
|
+
function Oe(e, t, n) {
|
|
436
|
+
var s;
|
|
437
|
+
const r = Vt(t);
|
|
438
|
+
return r && !Vt((s = e.name) != null ? s : "").includes(r) ? !1 : an.every((a) => !n.includes(a.id) || a.test(e));
|
|
403
439
|
}
|
|
404
|
-
function
|
|
440
|
+
function Ve(e, t) {
|
|
405
441
|
return e < t ? "past" : e > t ? "future" : "today";
|
|
406
442
|
}
|
|
407
|
-
function
|
|
443
|
+
function sn(e, t, n) {
|
|
408
444
|
return t !== "today" ? { upcoming: e, earlier: [] } : { upcoming: e.filter((r) => r.minutes >= n), earlier: e.filter((r) => r.minutes < n) };
|
|
409
445
|
}
|
|
410
|
-
function
|
|
446
|
+
function tr(e, t, n) {
|
|
411
447
|
if (t !== "today") return null;
|
|
412
448
|
const r = e.minutes - n;
|
|
413
|
-
return r >= 0 && r <= 120 ?
|
|
449
|
+
return r >= 0 && r <= 120 ? Ge(r) : null;
|
|
414
450
|
}
|
|
415
|
-
function
|
|
416
|
-
const t = e.slice(0, 2).map(
|
|
451
|
+
function nr(e) {
|
|
452
|
+
const t = e.slice(0, 2).map(xe).join(", ");
|
|
417
453
|
return e.length > 2 ? `${t} and ${e.length - 2} more` : t;
|
|
418
454
|
}
|
|
419
|
-
function
|
|
420
|
-
return n.length ? n.length === 1 ? { label: e, value:
|
|
455
|
+
function Re(e, t, n, r, s) {
|
|
456
|
+
return n.length ? n.length === 1 ? { label: e, value: xe(n[0]), detail: we(r, n[0].minutes, s) } : { label: t, value: A(n.length, "guest"), detail: nr(n) } : null;
|
|
421
457
|
}
|
|
422
|
-
function
|
|
458
|
+
function Ut(e, t, n) {
|
|
423
459
|
const r = [];
|
|
424
|
-
r.push(
|
|
425
|
-
const
|
|
426
|
-
if (
|
|
427
|
-
else if (
|
|
428
|
-
const
|
|
460
|
+
r.push(Re("Club pickup", "Club pickups", e.filter((a) => a.clubPickup), t, n));
|
|
461
|
+
const s = e.filter((a) => a.large);
|
|
462
|
+
if (s.length === 1) r.push({ label: "Large party", value: `Party of ${s[0].party}`, detail: we(t, s[0].minutes, n) });
|
|
463
|
+
else if (s.length > 1) {
|
|
464
|
+
const a = s.reduce((c, d) => c + d.party, 0), l = s.slice(0, 2).map((c) => `${J(c.minutes)} for ${c.party}`).join(", ");
|
|
429
465
|
r.push({
|
|
430
466
|
label: "Large parties",
|
|
431
|
-
value: `${
|
|
432
|
-
detail: `${
|
|
467
|
+
value: `${A(s.length, "party", "parties")}, ${A(a, "guest")}`,
|
|
468
|
+
detail: `${ae(t, n)}, ${l}${s.length > 2 ? ` and ${s.length - 2} more` : ""}`
|
|
433
469
|
});
|
|
434
470
|
}
|
|
435
|
-
return r.push(
|
|
471
|
+
return r.push(Re("VIP", "VIPs", e.filter((a) => a.vip), t, n)), r.push(Re("Club prospect", "Club prospects", e.filter((a) => a.prospect), t, n)), r.filter((a) => a !== null);
|
|
436
472
|
}
|
|
437
|
-
function
|
|
438
|
-
var
|
|
473
|
+
function rr(e, t, n) {
|
|
474
|
+
var c;
|
|
439
475
|
const r = /* @__PURE__ */ new Map();
|
|
440
476
|
for (const d of e) {
|
|
441
|
-
const
|
|
442
|
-
r.set(
|
|
477
|
+
const m = Math.floor(d.minutes / 30) * 30, M = (c = r.get(m)) != null ? c : { parties: 0, guests: 0 };
|
|
478
|
+
r.set(m, { parties: M.parties + 1, guests: M.guests + d.party });
|
|
443
479
|
}
|
|
444
|
-
const
|
|
445
|
-
if (!
|
|
446
|
-
const [
|
|
480
|
+
const s = Array.from(r.entries()).sort((d, m) => m[1].guests - d[1].guests || m[1].parties - d[1].parties || d[0] - m[0])[0];
|
|
481
|
+
if (!s) return null;
|
|
482
|
+
const [a, l] = s;
|
|
447
483
|
return {
|
|
448
484
|
label: "Busiest half hour",
|
|
449
|
-
value: `${
|
|
450
|
-
detail: `${
|
|
485
|
+
value: `${J(a)} to ${J(a + 30)}`,
|
|
486
|
+
detail: `${ae(t, n)}, ${A(l.parties, "party", "parties")}, ${A(l.guests, "guest")}`
|
|
451
487
|
};
|
|
452
488
|
}
|
|
453
|
-
function
|
|
454
|
-
const
|
|
455
|
-
if (!e.length) return { ...
|
|
456
|
-
const
|
|
457
|
-
if (
|
|
458
|
-
const { upcoming:
|
|
459
|
-
if (!
|
|
460
|
-
if (
|
|
461
|
-
const
|
|
489
|
+
function ar(e, t, n, r) {
|
|
490
|
+
const s = { reservations: e.length, guests: e.reduce((m, M) => m + M.party, 0) };
|
|
491
|
+
if (!e.length) return { ...s, message: "No reservations on this day", facts: [] };
|
|
492
|
+
const a = Ve(t, n);
|
|
493
|
+
if (a === "past") return { ...s, message: "This day has passed", facts: [] };
|
|
494
|
+
const { upcoming: l, earlier: c } = sn(e, a, r);
|
|
495
|
+
if (!l.length) return { ...s, message: "No more arrivals today", facts: [] };
|
|
496
|
+
if (c.length) {
|
|
497
|
+
const m = l[0];
|
|
462
498
|
return {
|
|
463
|
-
...
|
|
499
|
+
...s,
|
|
464
500
|
message: null,
|
|
465
501
|
facts: [
|
|
466
|
-
{ label: "Still to arrive", value: `${
|
|
467
|
-
{ label: "Next arrival", value:
|
|
468
|
-
...
|
|
502
|
+
{ label: "Still to arrive", value: `${l.length} of ${e.length}` },
|
|
503
|
+
{ label: "Next arrival", value: we(t, m.minutes, n), detail: Ge(m.minutes - r) },
|
|
504
|
+
...Ut(l, t, n)
|
|
469
505
|
]
|
|
470
506
|
};
|
|
471
507
|
}
|
|
472
|
-
const d =
|
|
508
|
+
const d = Ut(l, t, n);
|
|
473
509
|
if (!d.length) {
|
|
474
|
-
const
|
|
475
|
-
|
|
510
|
+
const m = rr(l, t, n);
|
|
511
|
+
m && d.push(m);
|
|
476
512
|
}
|
|
477
|
-
return { ...
|
|
513
|
+
return { ...s, message: null, facts: d };
|
|
478
514
|
}
|
|
479
|
-
function
|
|
515
|
+
function sr(e) {
|
|
480
516
|
return new Set(e.map((n) => n.source)).size === 1 ? e[0].source : null;
|
|
481
517
|
}
|
|
482
|
-
const
|
|
483
|
-
function
|
|
518
|
+
const Fe = { commerce7: "Commerce7", tock: "Tock" }, ir = "Load Guest Prep day";
|
|
519
|
+
function or(e) {
|
|
484
520
|
var n;
|
|
485
521
|
const t = ((n = e.wineryName) == null ? void 0 : n.trim()) || "this winery";
|
|
486
522
|
return [
|
|
@@ -493,30 +529,30 @@ function Hn(e) {
|
|
|
493
529
|
"Do not use exports or invent guests."
|
|
494
530
|
].join(" ");
|
|
495
531
|
}
|
|
496
|
-
const
|
|
497
|
-
function
|
|
498
|
-
var n, r, a,
|
|
532
|
+
const lr = "0.1.2", fe = (e, t) => String(e != null ? e : "").replace(/\s+/g, " ").trim().slice(0, t);
|
|
533
|
+
function cr(e = {}, t = []) {
|
|
534
|
+
var n, r, s, a, l, c;
|
|
499
535
|
return {
|
|
500
|
-
packageVersion:
|
|
501
|
-
hiddenSections: ((n = e.hide) != null ? n : []).slice(0, 20).map((d) =>
|
|
536
|
+
packageVersion: lr,
|
|
537
|
+
hiddenSections: ((n = e.hide) != null ? n : []).slice(0, 20).map((d) => fe(d, 40)),
|
|
502
538
|
// Guest Prep has one view and no reordering.
|
|
503
539
|
reorderedViews: [],
|
|
504
|
-
renamedSections: Object.keys((r = e.labels) != null ? r : {}).slice(0, 20).map((d) =>
|
|
505
|
-
themeChanged: Object.keys((
|
|
506
|
-
fontsChanged: !!((
|
|
540
|
+
renamedSections: Object.keys((r = e.labels) != null ? r : {}).slice(0, 20).map((d) => fe(d, 40)),
|
|
541
|
+
themeChanged: Object.keys((s = e.theme) != null ? s : {}).length + Object.keys((a = e.themeDark) != null ? a : {}).length > 0,
|
|
542
|
+
fontsChanged: !!((l = e.fonts) != null && l.display || (c = e.fonts) != null && c.body),
|
|
507
543
|
titleChanged: !!e.title,
|
|
508
544
|
customCards: t.slice(0, 10).map((d) => {
|
|
509
|
-
var
|
|
510
|
-
return { title:
|
|
545
|
+
var m;
|
|
546
|
+
return { title: fe(d.title, 80), purpose: fe(d.purpose, 160), view: fe((m = d.after) != null ? m : "page", 20) };
|
|
511
547
|
})
|
|
512
548
|
};
|
|
513
549
|
}
|
|
514
|
-
const
|
|
515
|
-
function
|
|
550
|
+
const jt = "guest-prep.tenant", Gt = (e) => `guest-prep:${e}`;
|
|
551
|
+
function ur() {
|
|
516
552
|
const e = globalThis.storage;
|
|
517
553
|
return e && typeof e.get == "function" && typeof e.set == "function" ? e : null;
|
|
518
554
|
}
|
|
519
|
-
function
|
|
555
|
+
function dr() {
|
|
520
556
|
try {
|
|
521
557
|
const e = globalThis.localStorage, t = "__nv_probe__";
|
|
522
558
|
return e.setItem(t, "1"), e.removeItem(t), e;
|
|
@@ -524,29 +560,29 @@ function Jn() {
|
|
|
524
560
|
return null;
|
|
525
561
|
}
|
|
526
562
|
}
|
|
527
|
-
function
|
|
563
|
+
function pr(e) {
|
|
528
564
|
return typeof e == "string" ? e : e && typeof e == "object" && typeof e.value == "string" ? e.value : null;
|
|
529
565
|
}
|
|
530
|
-
function
|
|
566
|
+
function gr(e) {
|
|
531
567
|
if (e) return { adapter: e, mode: "artifact" };
|
|
532
|
-
const t =
|
|
568
|
+
const t = ur();
|
|
533
569
|
if (t)
|
|
534
570
|
return {
|
|
535
571
|
mode: "artifact",
|
|
536
572
|
adapter: {
|
|
537
|
-
get: async (r,
|
|
538
|
-
set: async (r,
|
|
539
|
-
await t.set(r,
|
|
573
|
+
get: async (r, s) => pr(await t.get(r, s)),
|
|
574
|
+
set: async (r, s, a) => {
|
|
575
|
+
await t.set(r, s, a);
|
|
540
576
|
}
|
|
541
577
|
}
|
|
542
578
|
};
|
|
543
|
-
const n =
|
|
579
|
+
const n = dr();
|
|
544
580
|
return n ? {
|
|
545
581
|
mode: "browser",
|
|
546
|
-
adapter: { get: async (r) => n.getItem(r), set: async (r,
|
|
582
|
+
adapter: { get: async (r) => n.getItem(r), set: async (r, s) => n.setItem(r, s) }
|
|
547
583
|
} : { adapter: null, mode: "none" };
|
|
548
584
|
}
|
|
549
|
-
async function
|
|
585
|
+
async function Ft(e, t) {
|
|
550
586
|
if (!e) return null;
|
|
551
587
|
try {
|
|
552
588
|
return await e.get(t, !1);
|
|
@@ -554,14 +590,14 @@ async function Ot(e, t) {
|
|
|
554
590
|
return null;
|
|
555
591
|
}
|
|
556
592
|
}
|
|
557
|
-
async function
|
|
593
|
+
async function Zt(e, t, n) {
|
|
558
594
|
if (e)
|
|
559
595
|
try {
|
|
560
596
|
await e.set(t, n, !1);
|
|
561
597
|
} catch {
|
|
562
598
|
}
|
|
563
599
|
}
|
|
564
|
-
function
|
|
600
|
+
function fr(e) {
|
|
565
601
|
if (!e) return null;
|
|
566
602
|
try {
|
|
567
603
|
const t = JSON.parse(e);
|
|
@@ -570,7 +606,7 @@ function er(e) {
|
|
|
570
606
|
return null;
|
|
571
607
|
}
|
|
572
608
|
}
|
|
573
|
-
const
|
|
609
|
+
const mr = {
|
|
574
610
|
"surface-base": "#f7f5f1",
|
|
575
611
|
"surface-subtle": "#f2efea",
|
|
576
612
|
"surface-raised": "#ffffff",
|
|
@@ -588,7 +624,7 @@ const tr = {
|
|
|
588
624
|
"status-warning-bg": "#fff7e7",
|
|
589
625
|
"font-display": "'Newsreader', Georgia, serif",
|
|
590
626
|
"font-body": "'Be Vietnam Pro', system-ui, sans-serif"
|
|
591
|
-
},
|
|
627
|
+
}, hr = {
|
|
592
628
|
"surface-base": "#171614",
|
|
593
629
|
"surface-subtle": "#24211f",
|
|
594
630
|
"surface-raised": "#34302d",
|
|
@@ -604,18 +640,18 @@ const tr = {
|
|
|
604
640
|
"focus-ring-color": "#8cd0a0",
|
|
605
641
|
"status-warning": "#f0c36a",
|
|
606
642
|
"status-warning-bg": "rgba(240,195,106,.16)"
|
|
607
|
-
},
|
|
608
|
-
function
|
|
609
|
-
return Object.entries(e).filter(([t, n]) =>
|
|
643
|
+
}, yr = /^[a-z][a-z0-9-]{0,40}$/, br = /^[^;{}<>\\]{1,120}$/;
|
|
644
|
+
function Bt(e) {
|
|
645
|
+
return Object.entries(e).filter(([t, n]) => yr.test(t) && typeof n == "string" && br.test(n)).map(([t, n]) => `--${t}:${n};`).join("");
|
|
610
646
|
}
|
|
611
|
-
function
|
|
647
|
+
function vr(e) {
|
|
612
648
|
return `https://fonts.googleapis.com/css2?${e.map((n) => `family=${encodeURIComponent(n).replace(/%20/g, "+")}:wght@300;400;500;600`).join("&")}&display=swap`;
|
|
613
649
|
}
|
|
614
|
-
function
|
|
615
|
-
const n =
|
|
650
|
+
function xr(e = {}, t = {}) {
|
|
651
|
+
const n = Bt({ ...mr, ...e }), r = Bt({ ...hr, ...t });
|
|
616
652
|
return `:root,.nvgp{${n}}@media (prefers-color-scheme: dark){:root,.nvgp{${r}}}`;
|
|
617
653
|
}
|
|
618
|
-
const
|
|
654
|
+
const me = "120ms cubic-bezier(0.2,0,0.2,1)", wr = `
|
|
619
655
|
html,body{margin:0;background:var(--surface-base,#f7f5f1)}
|
|
620
656
|
.nvgp{background:var(--surface-base);color:var(--text-primary);font:16px/1.5 var(--font-body);-webkit-font-smoothing:antialiased;min-height:100vh;overflow-x:clip}
|
|
621
657
|
.nvgp *{box-sizing:border-box}
|
|
@@ -636,7 +672,7 @@ html,body{margin:0;background:var(--surface-base,#f7f5f1)}
|
|
|
636
672
|
.nvgp .storage-note{font-size:13px;color:var(--text-tertiary);margin:0 0 8px}
|
|
637
673
|
.nvgp .daybar{position:sticky;top:0;z-index:20;background:var(--surface-base);display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:12px 0;padding-top:max(12px,env(safe-area-inset-top))}
|
|
638
674
|
.nvgp .day-wrap{position:relative;max-width:100%}
|
|
639
|
-
.nvgp .day-button{display:inline-flex;align-items:center;gap:8px;min-height:40px;max-width:100%;padding:0 14px;border:1px solid var(--border-default);border-radius:10px;background:var(--surface-raised);font-size:15px;font-weight:600;cursor:pointer;transition:border-color ${
|
|
675
|
+
.nvgp .day-button{display:inline-flex;align-items:center;gap:8px;min-height:40px;max-width:100%;padding:0 14px;border:1px solid var(--border-default);border-radius:10px;background:var(--surface-raised);font-size:15px;font-weight:600;cursor:pointer;transition:border-color ${me}}
|
|
640
676
|
.nvgp .day-button:hover{border-color:var(--border-strong)}
|
|
641
677
|
.nvgp .day-button svg{flex:none;color:var(--text-secondary)}
|
|
642
678
|
.nvgp .day-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
@@ -669,12 +705,34 @@ html,body{margin:0;background:var(--surface-base,#f7f5f1)}
|
|
|
669
705
|
.nvgp .fact-detail{font-size:13px;color:var(--text-secondary);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
|
|
670
706
|
.nvgp .fact-countdown .fact-detail,.nvgp .soon{color:var(--action-primary-bg);font-weight:500}
|
|
671
707
|
.nvgp .layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,420px);gap:16px;align-items:start}
|
|
672
|
-
.nvgp .list-card{padding:0;overflow:
|
|
708
|
+
.nvgp .list-card{padding:0;overflow:clip}
|
|
673
709
|
.nvgp .card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:16px 24px;border-bottom:1px solid var(--border-subtle)}
|
|
674
710
|
.nvgp h2{font:300 22px/1.3 var(--font-display);margin:0}
|
|
675
711
|
.nvgp .card-aside{font-size:13px;color:var(--text-secondary)}
|
|
676
712
|
.nvgp .rows{list-style:none;margin:0;padding:0}
|
|
677
|
-
.nvgp .
|
|
713
|
+
.nvgp .finder{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:12px 24px;border-bottom:1px solid var(--border-subtle)}
|
|
714
|
+
.nvgp .search{display:flex;align-items:center;gap:8px;flex:1 1 200px;min-width:0;min-height:40px;padding:0 12px;border:1px solid var(--border-default);border-radius:10px;background:var(--surface-raised);color:var(--text-secondary)}
|
|
715
|
+
.nvgp .search:focus-within{outline:2px solid var(--focus-ring-color);outline-offset:2px}
|
|
716
|
+
.nvgp .search-input{flex:1;min-width:0;border:0;background:none;color:var(--text-primary);font:inherit;font-size:15px;outline:none}
|
|
717
|
+
.nvgp .filters{display:flex;flex-wrap:wrap;gap:8px}
|
|
718
|
+
.nvgp .filter-chip{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border:1px solid var(--border-default);border-radius:999px;background:var(--surface-raised);color:var(--text-primary);font:inherit;font-size:13px;font-weight:500;cursor:pointer;transition:background ${me},border-color ${me}}
|
|
719
|
+
.nvgp .filter-chip:hover{border-color:var(--text-tertiary)}
|
|
720
|
+
.nvgp .filter-chip[aria-pressed="true"]{background:var(--action-primary-bg);border-color:var(--action-primary-bg);color:var(--action-primary-fg)}
|
|
721
|
+
.nvgp .filter-status{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 12px;padding:8px 24px;font-size:14px;color:var(--text-secondary);border-bottom:1px solid var(--border-subtle)}
|
|
722
|
+
.nvgp .link-button{min-height:32px;padding:0;border:0;background:none;color:var(--action-primary-bg);font:inherit;font-weight:500;cursor:pointer}
|
|
723
|
+
.nvgp .seatings{list-style:none;margin:0;padding:0}
|
|
724
|
+
.nvgp .seat-head{position:sticky;top:var(--seat-top,0px);z-index:5;display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:40px;padding:8px 24px;border:0;border-bottom:1px solid var(--border-subtle);background:var(--surface-raised);color:var(--text-primary);font:inherit;text-align:left}
|
|
725
|
+
.nvgp .seating:not(:first-child) .seat-head{border-top:1px solid var(--border-subtle)}
|
|
726
|
+
.nvgp .seat-label{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 12px;min-width:0}
|
|
727
|
+
.nvgp .seat-time{margin:0;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}
|
|
728
|
+
.nvgp .seat-counts{font-size:13px;color:var(--text-secondary);font-variant-numeric:tabular-nums}
|
|
729
|
+
.nvgp .seat-marker{flex:none;padding:0 8px;border-radius:999px;font-size:12px;font-weight:600;line-height:20px}
|
|
730
|
+
.nvgp .seat-now{background:var(--action-primary-bg);color:var(--action-primary-fg)}
|
|
731
|
+
.nvgp .seat-next{border:1px solid var(--action-primary-bg);color:var(--action-primary-bg)}
|
|
732
|
+
.nvgp .seat-toggle{justify-content:flex-start;background:var(--surface-subtle);color:var(--text-secondary);cursor:pointer}
|
|
733
|
+
.nvgp .seat-toggle .seat-time{font-weight:500}
|
|
734
|
+
.nvgp .seat-chevron{display:inline-flex;flex:none}
|
|
735
|
+
.nvgp .row{display:grid;grid-template-columns:88px minmax(0,1fr) auto;gap:12px;width:100%;padding:12px 24px;border:0;border-bottom:1px solid var(--border-subtle);border-left:3px solid transparent;background:none;text-align:left;cursor:pointer;transition:background ${me}}
|
|
678
736
|
.nvgp .row:hover{background:var(--surface-subtle)}
|
|
679
737
|
.nvgp .row[aria-current="true"]{border-left-color:var(--action-primary-bg);background:var(--surface-subtle)}
|
|
680
738
|
.nvgp .row-time{font-weight:600;font-variant-numeric:tabular-nums}
|
|
@@ -695,7 +753,7 @@ html,body{margin:0;background:var(--surface-base,#f7f5f1)}
|
|
|
695
753
|
.nvgp .empty-title{font:300 22px/1.3 var(--font-display);color:var(--text-primary);margin:0 0 8px}
|
|
696
754
|
.nvgp .note{font-size:14px;color:var(--text-secondary);margin:8px 0 0}
|
|
697
755
|
.nvgp .problem{color:var(--status-warning)}
|
|
698
|
-
.nvgp .button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 16px;border:0;border-radius:8px;background:var(--action-primary-bg);color:var(--action-primary-fg);font-weight:500;cursor:pointer;transition:background ${
|
|
756
|
+
.nvgp .button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 16px;border:0;border-radius:8px;background:var(--action-primary-bg);color:var(--action-primary-fg);font-weight:500;cursor:pointer;transition:background ${me}}
|
|
699
757
|
.nvgp .button:hover{background:var(--action-primary-hover)}
|
|
700
758
|
.nvgp .button:disabled{opacity:.55;cursor:default}
|
|
701
759
|
.nvgp .button-quiet{background:transparent;color:var(--text-primary);border:1px solid var(--border-strong)}
|
|
@@ -766,15 +824,20 @@ html,body{margin:0;background:var(--surface-base,#f7f5f1)}
|
|
|
766
824
|
.nvgp .card-head,.nvgp .panel-head{padding:12px 16px}
|
|
767
825
|
.nvgp .row{grid-template-columns:72px minmax(0,1fr) auto;padding:12px 16px;min-height:44px}
|
|
768
826
|
.nvgp .earlier-head{padding:8px 16px}
|
|
827
|
+
.nvgp .finder{padding:12px 16px}
|
|
828
|
+
.nvgp .search,.nvgp .filter-chip,.nvgp .link-button,.nvgp .seat-head{min-height:44px}
|
|
829
|
+
.nvgp .filter-status{padding:8px 16px}
|
|
830
|
+
.nvgp .seat-head{padding:8px 16px}
|
|
769
831
|
.nvgp .panel-body{padding:0 16px 24px}
|
|
770
832
|
.nvgp .fact-row{grid-template-columns:repeat(2,minmax(0,1fr))}
|
|
771
833
|
.nvgp .fact-grid{grid-template-columns:minmax(0,1fr)}
|
|
772
834
|
.nvgp .custom-card{padding:12px 16px}
|
|
773
835
|
}
|
|
774
836
|
@media (prefers-reduced-motion: reduce){.nvgp *{transition-duration:0ms!important;animation:none!important}}
|
|
775
|
-
`,
|
|
837
|
+
`, kr = ["summary", "guestList"], on = ["reservation", "talkAbout", "newVintageProfile", "relationship", "headsUp", "personalNotes"], ea = [...kr, ...on], he = {
|
|
776
838
|
timeZone: "America/Los_Angeles",
|
|
777
839
|
largeParty: 10,
|
|
840
|
+
seatingGapMinutes: 45,
|
|
778
841
|
tagRules: {
|
|
779
842
|
interests: ["^(?:client\\s+)?interest(?:ed)?(?:\\s+in)?\\s*[-–—:]\\s*(.+)$"],
|
|
780
843
|
vip: ["\\bvip\\b"],
|
|
@@ -782,23 +845,23 @@ html,body{margin:0;background:var(--surface-base,#f7f5f1)}
|
|
|
782
845
|
hide: ["^\\*+\\s*test\\s*\\*+$", "^test\\b"]
|
|
783
846
|
}
|
|
784
847
|
};
|
|
785
|
-
function
|
|
848
|
+
function i(e, t = null, ...n) {
|
|
786
849
|
const r = document.createElement(e);
|
|
787
|
-
for (const [
|
|
788
|
-
|
|
789
|
-
return
|
|
850
|
+
for (const [s, a] of Object.entries(t != null ? t : {}))
|
|
851
|
+
a == null || a === !1 || (typeof a == "function" ? r.addEventListener(s.replace(/^on/, "").toLowerCase(), a) : a === !0 ? r.setAttribute(s, "") : r.setAttribute(s, String(a)));
|
|
852
|
+
return ln(r, n), r;
|
|
790
853
|
}
|
|
791
|
-
function
|
|
854
|
+
function ln(e, t) {
|
|
792
855
|
for (const n of t)
|
|
793
|
-
n == null || n === !1 || (Array.isArray(n) ?
|
|
856
|
+
n == null || n === !1 || (Array.isArray(n) ? ln(e, n) : e.append(n instanceof Node ? n : String(n)));
|
|
794
857
|
}
|
|
795
|
-
const
|
|
796
|
-
function
|
|
797
|
-
const r = document.createElementNS(
|
|
798
|
-
for (const [
|
|
858
|
+
const Sr = "http://www.w3.org/2000/svg";
|
|
859
|
+
function Ht(e, t = {}, ...n) {
|
|
860
|
+
const r = document.createElementNS(Sr, e);
|
|
861
|
+
for (const [s, a] of Object.entries(t)) r.setAttribute(s, String(a));
|
|
799
862
|
return r.append(...n), r;
|
|
800
863
|
}
|
|
801
|
-
const
|
|
864
|
+
const $r = {
|
|
802
865
|
"chevron-left": ["M15 18l-6-6 6-6"],
|
|
803
866
|
"chevron-right": ["M9 18l6-6-6-6"],
|
|
804
867
|
"chevron-down": ["M6 9l6 6 6-6"],
|
|
@@ -808,115 +871,116 @@ const ur = {
|
|
|
808
871
|
"triangle-alert": ["M21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3z", "M12 9v4", "M12 17h.01"],
|
|
809
872
|
"sticky-note": ["M16 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8z", "M15 3v4a2 2 0 0 0 2 2h4"],
|
|
810
873
|
wine: ["M8 22h8", "M7 10h10", "M12 15v7", "M12 15a5 5 0 0 0 5-5c0-2-.5-4-2-8H9c-1.5 4-2 6-2 8a5 5 0 0 0 5 5z"],
|
|
874
|
+
search: ["M19 11a8 8 0 1 1-16 0 8 8 0 0 1 16 0z", "M21 21l-4.3-4.3"],
|
|
811
875
|
x: ["M18 6L6 18", "M6 6l12 12"],
|
|
812
876
|
"refresh-cw": ["M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", "M21 3v5h-5", "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", "M8 16H3v5"]
|
|
813
877
|
};
|
|
814
878
|
function K(e, t = 16) {
|
|
815
879
|
var n;
|
|
816
|
-
return
|
|
880
|
+
return Ht(
|
|
817
881
|
"svg",
|
|
818
882
|
{ width: t, height: t, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": 2, "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" },
|
|
819
|
-
...((n =
|
|
883
|
+
...((n = $r[e]) != null ? n : []).map((r) => Ht("path", { d: r }))
|
|
820
884
|
);
|
|
821
885
|
}
|
|
822
|
-
function
|
|
823
|
-
return
|
|
886
|
+
function P(e, t = "note") {
|
|
887
|
+
return i("p", { class: t }, e);
|
|
824
888
|
}
|
|
825
|
-
function
|
|
826
|
-
return
|
|
889
|
+
function S(e, t, n, r = "") {
|
|
890
|
+
return i(
|
|
827
891
|
"div",
|
|
828
892
|
{ class: `fact${r ? ` ${r}` : ""}` },
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
n ?
|
|
893
|
+
i("div", { class: "fact-label" }, e),
|
|
894
|
+
i("div", { class: "fact-value" }, t),
|
|
895
|
+
n ? i("div", { class: "fact-detail" }, n) : null
|
|
832
896
|
);
|
|
833
897
|
}
|
|
834
|
-
function
|
|
835
|
-
return
|
|
898
|
+
function Te(e, t = "neutral") {
|
|
899
|
+
return i("div", { class: "chips" }, e.map((n) => i("span", { class: `chip chip-${t}` }, n)));
|
|
836
900
|
}
|
|
837
|
-
function
|
|
838
|
-
return
|
|
901
|
+
function cn(e) {
|
|
902
|
+
return i("span", { class: `badge${e === "VIP" ? " badge-vip" : ""}` }, e);
|
|
839
903
|
}
|
|
840
|
-
function
|
|
841
|
-
return Number(
|
|
904
|
+
function un(e) {
|
|
905
|
+
return Number(W(`${Ne(e, 1)}-01`, -1).slice(8, 10));
|
|
842
906
|
}
|
|
843
|
-
function
|
|
844
|
-
const n =
|
|
845
|
-
return `${n}-${String(Math.min(Number(e.slice(8, 10)),
|
|
907
|
+
function Yt(e, t) {
|
|
908
|
+
const n = Ne(e.slice(0, 7), t);
|
|
909
|
+
return `${n}-${String(Math.min(Number(e.slice(8, 10)), un(n))).padStart(2, "0")}`;
|
|
846
910
|
}
|
|
847
|
-
function
|
|
848
|
-
const t = `${e}-01`, n = Array.from({ length:
|
|
849
|
-
for (let r = 0; r <
|
|
911
|
+
function Tr(e) {
|
|
912
|
+
const t = `${e}-01`, n = Array.from({ length: ve(t) }, () => null);
|
|
913
|
+
for (let r = 0; r < un(e); r += 1) n.push(W(t, r));
|
|
850
914
|
return n;
|
|
851
915
|
}
|
|
852
|
-
function
|
|
916
|
+
function Nr(e, t) {
|
|
853
917
|
switch (t) {
|
|
854
918
|
case "ArrowLeft":
|
|
855
|
-
return
|
|
919
|
+
return W(e, -1);
|
|
856
920
|
case "ArrowRight":
|
|
857
|
-
return
|
|
921
|
+
return W(e, 1);
|
|
858
922
|
case "ArrowUp":
|
|
859
|
-
return
|
|
923
|
+
return W(e, -7);
|
|
860
924
|
case "ArrowDown":
|
|
861
|
-
return
|
|
925
|
+
return W(e, 7);
|
|
862
926
|
case "PageUp":
|
|
863
|
-
return
|
|
927
|
+
return Yt(e, -1);
|
|
864
928
|
case "PageDown":
|
|
865
|
-
return
|
|
929
|
+
return Yt(e, 1);
|
|
866
930
|
case "Home":
|
|
867
|
-
return
|
|
931
|
+
return W(e, -ve(e));
|
|
868
932
|
case "End":
|
|
869
|
-
return
|
|
933
|
+
return W(e, 6 - ve(e));
|
|
870
934
|
default:
|
|
871
935
|
return null;
|
|
872
936
|
}
|
|
873
937
|
}
|
|
874
|
-
function
|
|
875
|
-
const { state: t } = e, n =
|
|
876
|
-
if (!
|
|
877
|
-
const
|
|
878
|
-
return
|
|
938
|
+
function Ar(e) {
|
|
939
|
+
const { state: t } = e, n = Tr(t.month).map((a, l) => {
|
|
940
|
+
if (!a) return i("span", { "aria-hidden": "true", "data-blank": l });
|
|
941
|
+
const c = a === t.focus;
|
|
942
|
+
return i(
|
|
879
943
|
"button",
|
|
880
944
|
{
|
|
881
945
|
type: "button",
|
|
882
|
-
class: `cal-day${
|
|
883
|
-
"aria-label":
|
|
884
|
-
"aria-selected":
|
|
885
|
-
"aria-current":
|
|
886
|
-
tabindex:
|
|
887
|
-
"data-day":
|
|
888
|
-
"data-fid":
|
|
889
|
-
onclick: () => e.onPick(
|
|
946
|
+
class: `cal-day${a === e.today ? " is-today" : ""}`,
|
|
947
|
+
"aria-label": je(a, e.today) + (a === e.today ? ", today" : ""),
|
|
948
|
+
"aria-selected": a === e.selected ? "true" : "false",
|
|
949
|
+
"aria-current": a === e.today ? "date" : null,
|
|
950
|
+
tabindex: c ? 0 : -1,
|
|
951
|
+
"data-day": a,
|
|
952
|
+
"data-fid": c ? "cal-focus" : null,
|
|
953
|
+
onclick: () => e.onPick(a)
|
|
890
954
|
},
|
|
891
|
-
String(Number(
|
|
955
|
+
String(Number(a.slice(8, 10)))
|
|
892
956
|
);
|
|
893
|
-
}), r =
|
|
957
|
+
}), r = i(
|
|
894
958
|
"div",
|
|
895
|
-
{ class: "cal-grid", role: "group", "aria-label":
|
|
896
|
-
|
|
959
|
+
{ class: "cal-grid", role: "group", "aria-label": Pt(t.month) },
|
|
960
|
+
Ue.map((a) => i("span", { class: "cal-dow", "aria-hidden": "true" }, a.slice(0, 2))),
|
|
897
961
|
n
|
|
898
962
|
);
|
|
899
|
-
r.addEventListener("keydown", (
|
|
900
|
-
const
|
|
901
|
-
|
|
963
|
+
r.addEventListener("keydown", (a) => {
|
|
964
|
+
const l = a.key, c = Nr(t.focus, l);
|
|
965
|
+
c && (a.preventDefault(), e.onFocus(c));
|
|
902
966
|
});
|
|
903
|
-
const
|
|
967
|
+
const s = i(
|
|
904
968
|
"div",
|
|
905
969
|
{ class: "calendar", role: "dialog", "aria-label": "Choose a day" },
|
|
906
|
-
|
|
970
|
+
i(
|
|
907
971
|
"div",
|
|
908
972
|
{ class: "cal-head" },
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
973
|
+
i("button", { type: "button", class: "icon-button", "aria-label": "Previous month", onclick: () => e.onMonth(Ne(t.month, -1)) }, K("chevron-left")),
|
|
974
|
+
i("span", { class: "cal-title", "aria-live": "polite" }, Pt(t.month)),
|
|
975
|
+
i("button", { type: "button", class: "icon-button", "aria-label": "Next month", onclick: () => e.onMonth(Ne(t.month, 1)) }, K("chevron-right"))
|
|
912
976
|
),
|
|
913
977
|
r
|
|
914
978
|
);
|
|
915
|
-
return
|
|
916
|
-
|
|
917
|
-
}),
|
|
979
|
+
return s.addEventListener("keydown", (a) => {
|
|
980
|
+
a.key === "Escape" && (a.preventDefault(), a.stopPropagation(), e.onClose());
|
|
981
|
+
}), s;
|
|
918
982
|
}
|
|
919
|
-
const
|
|
983
|
+
const Mr = "https://newvintage.ai/?utm_source=guest-prep&utm_medium=referral&utm_campaign=guest-prep&utm_content=season-bar-logo", _r = {
|
|
920
984
|
summary: "Summary",
|
|
921
985
|
guestList: "Everyone coming in",
|
|
922
986
|
reservation: "Reservation",
|
|
@@ -925,60 +989,60 @@ const fr = "https://newvintage.ai/?utm_source=guest-prep&utm_medium=referral&utm
|
|
|
925
989
|
relationship: "Relationship",
|
|
926
990
|
headsUp: "Heads-up",
|
|
927
991
|
personalNotes: "Personal notes"
|
|
928
|
-
},
|
|
992
|
+
}, Cr = {
|
|
929
993
|
reservation: "calendar",
|
|
930
994
|
talkAbout: "message-circle",
|
|
931
995
|
newVintageProfile: "wine",
|
|
932
996
|
relationship: "heart",
|
|
933
997
|
headsUp: "triangle-alert",
|
|
934
998
|
personalNotes: "sticky-note"
|
|
935
|
-
},
|
|
999
|
+
}, Wt = {
|
|
936
1000
|
newVintageProfile: "From New Vintage's analysis of their wine purchases."
|
|
937
1001
|
};
|
|
938
|
-
function
|
|
939
|
-
var r,
|
|
940
|
-
const n = (
|
|
941
|
-
return typeof n == "string" && n.trim() ? n.trim() :
|
|
1002
|
+
function Ze(e, t) {
|
|
1003
|
+
var r, s;
|
|
1004
|
+
const n = (s = (r = e.options.customize) == null ? void 0 : r.labels) == null ? void 0 : s[t];
|
|
1005
|
+
return typeof n == "string" && n.trim() ? n.trim() : _r[t];
|
|
942
1006
|
}
|
|
943
|
-
function
|
|
1007
|
+
function Be(e, t) {
|
|
944
1008
|
var n, r;
|
|
945
1009
|
return ((r = (n = e.options.customize) == null ? void 0 : n.hide) != null ? r : []).includes(t);
|
|
946
1010
|
}
|
|
947
|
-
const
|
|
948
|
-
function
|
|
1011
|
+
const Er = () => Ae() === "claude";
|
|
1012
|
+
function zr(e) {
|
|
949
1013
|
const t = e.dayState;
|
|
950
|
-
let n = "idle", r,
|
|
951
|
-
return t.status === "choose" ? r = "Choose a winery to load reservations" : t.status === "loading" ? r = "Loading reservations" : t.status === "unloaded" ? r = "This day isn't loaded yet" : t.status === "failed" ? (n = "problem", r = "This day couldn't load") : t.arrivals.length ? (n = "loaded", r = "Commerce7 reservations and Tock orders",
|
|
1014
|
+
let n = "idle", r, s = null;
|
|
1015
|
+
return t.status === "choose" ? r = "Choose a winery to load reservations" : t.status === "loading" ? r = "Loading reservations" : t.status === "unloaded" ? r = "This day isn't loaded yet" : t.status === "failed" ? (n = "problem", r = "This day couldn't load") : t.arrivals.length ? (n = "loaded", r = "Commerce7 reservations and Tock orders", s = "Commerce7 and Tock") : r = "No arrivals on this day", i(
|
|
952
1016
|
"div",
|
|
953
1017
|
{ class: `status status-${n}`, role: "status", "aria-live": "polite" },
|
|
954
|
-
|
|
955
|
-
|
|
1018
|
+
i("span", { class: "dot", "aria-hidden": "true" }),
|
|
1019
|
+
s ? [i("span", { class: "status-long" }, r), i("span", { class: "status-short", "aria-hidden": "true" }, s)] : i("span", null, r)
|
|
956
1020
|
);
|
|
957
1021
|
}
|
|
958
|
-
function
|
|
1022
|
+
function Pr(e, t) {
|
|
959
1023
|
if (!e.wineries || e.wineries.length < 2) return null;
|
|
960
|
-
const n =
|
|
1024
|
+
const n = i(
|
|
961
1025
|
"select",
|
|
962
1026
|
{ id: "winery-picker", "data-fid": "winery-picker", onchange: (r) => t.chooseWinery(r.target.value) },
|
|
963
|
-
|
|
964
|
-
e.wineries.map((r) =>
|
|
1027
|
+
i("option", { value: "", disabled: !0, selected: !e.tenantId }, "Choose a winery"),
|
|
1028
|
+
e.wineries.map((r) => i("option", { value: r.tenantId, selected: r.tenantId === e.tenantId }, r.name))
|
|
965
1029
|
);
|
|
966
|
-
return
|
|
1030
|
+
return i("label", { class: "picker", for: "winery-picker" }, "Winery", n);
|
|
967
1031
|
}
|
|
968
|
-
function
|
|
969
|
-
return
|
|
1032
|
+
function Lr(e, t) {
|
|
1033
|
+
return i(
|
|
970
1034
|
"header",
|
|
971
1035
|
{ class: "header" },
|
|
972
|
-
|
|
1036
|
+
i(
|
|
973
1037
|
"a",
|
|
974
|
-
{ class: "logo", href:
|
|
975
|
-
|
|
1038
|
+
{ class: "logo", href: Mr, target: "_blank", rel: "noopener", "aria-label": "New Vintage" },
|
|
1039
|
+
i("span", { class: "logo-mark", "aria-hidden": "true" }, "New Vintage")
|
|
976
1040
|
),
|
|
977
|
-
|
|
1041
|
+
i("div", { class: "heading" }, i("h1", null, e.title), zr(e), Pr(e, t))
|
|
978
1042
|
);
|
|
979
1043
|
}
|
|
980
|
-
function
|
|
981
|
-
const n = e.day === e.today ? "Today" : e.day ===
|
|
1044
|
+
function Ir(e, t) {
|
|
1045
|
+
const n = e.day === e.today ? "Today" : e.day === W(e.today, 1) ? "Tomorrow" : null, r = i(
|
|
982
1046
|
"button",
|
|
983
1047
|
{
|
|
984
1048
|
type: "button",
|
|
@@ -989,281 +1053,365 @@ function wr(e, t) {
|
|
|
989
1053
|
onclick: () => t.toggleCalendar()
|
|
990
1054
|
},
|
|
991
1055
|
K("calendar", 18),
|
|
992
|
-
|
|
993
|
-
n ?
|
|
1056
|
+
i("span", { class: "day-label" }, je(e.day, e.today)),
|
|
1057
|
+
n ? i("span", { class: "day-relative" }, n) : null,
|
|
994
1058
|
K("chevron-down", 16)
|
|
995
|
-
),
|
|
996
|
-
return
|
|
1059
|
+
), s = e.calendar.open ? Ar({ state: e.calendar, selected: e.day, today: e.today, onPick: t.pickDay, onFocus: t.focusDay, onMonth: t.showMonth, onClose: t.closeCalendar }) : null;
|
|
1060
|
+
return i(
|
|
997
1061
|
"div",
|
|
998
1062
|
{ class: "daybar" },
|
|
999
|
-
|
|
1000
|
-
e.dayNote ?
|
|
1063
|
+
i("div", { class: "day-wrap" }, r, s),
|
|
1064
|
+
e.dayNote ? i("span", { class: `day-note${e.dayNote.problem ? " problem" : ""}`, "aria-live": "polite" }, e.dayNote.text) : null
|
|
1001
1065
|
);
|
|
1002
1066
|
}
|
|
1003
|
-
function
|
|
1004
|
-
if (e.dayState.status !== "ready" ||
|
|
1005
|
-
const t =
|
|
1006
|
-
return
|
|
1067
|
+
function Or(e) {
|
|
1068
|
+
if (e.dayState.status !== "ready" || Be(e, "summary")) return null;
|
|
1069
|
+
const t = ar(e.dayState.arrivals, e.day, e.today, e.nowMinutes), n = (r, s, a) => i("div", { class: "number" }, i("div", { class: "number-value" }, String(r)), i("div", { class: "number-label" }, r === 1 ? s : a));
|
|
1070
|
+
return i(
|
|
1007
1071
|
"section",
|
|
1008
|
-
{ class: "card summary", "data-section": "summary", "aria-label":
|
|
1009
|
-
|
|
1010
|
-
|
|
1072
|
+
{ class: "card summary", "data-section": "summary", "aria-label": Ze(e, "summary") },
|
|
1073
|
+
i("div", { class: "numbers" }, n(t.reservations, "Reservation", "Reservations"), n(t.guests, "Guest", "Guests")),
|
|
1074
|
+
i(
|
|
1011
1075
|
"div",
|
|
1012
1076
|
{ class: "facts" },
|
|
1013
|
-
t.message ?
|
|
1077
|
+
t.message ? i("div", { class: "summary-message" }, t.message) : t.facts.map((r) => S(r.label, r.value, r.detail, r.label === "Next arrival" ? "fact-countdown" : ""))
|
|
1014
1078
|
),
|
|
1015
|
-
|
|
1079
|
+
S("Now", J(e.nowMinutes), ae(e.today, e.today), "now")
|
|
1016
1080
|
);
|
|
1017
1081
|
}
|
|
1018
|
-
function
|
|
1082
|
+
function Rr(e) {
|
|
1019
1083
|
const t = [];
|
|
1020
|
-
return e.vip && t.push("VIP"), e.clubMember && t.push("Club member"), e.prospect && t.push("Club prospect"), e.atRisk && t.push("Membership at risk"), e.visit === "first" && t.push("First visit"), t.map(
|
|
1084
|
+
return e.vip && t.push("VIP"), e.clubMember && t.push("Club member"), e.prospect && t.push("Club prospect"), e.atRisk && t.push("Membership at risk"), e.visit === "first" && t.push("First visit"), e.partlyRefunded && t.push("Partly refunded"), t.map(cn);
|
|
1021
1085
|
}
|
|
1022
|
-
function
|
|
1023
|
-
var
|
|
1024
|
-
const
|
|
1025
|
-
return
|
|
1086
|
+
function qr(e, t, n, r, s) {
|
|
1087
|
+
var c;
|
|
1088
|
+
const a = s ? null : tr(n, e.kind, e.nowMinutes), l = [n.experience, r ? Fe[n.source] : null].filter(Boolean).join(", ");
|
|
1089
|
+
return i(
|
|
1026
1090
|
"li",
|
|
1027
1091
|
null,
|
|
1028
|
-
|
|
1092
|
+
i(
|
|
1029
1093
|
"button",
|
|
1030
1094
|
{
|
|
1031
1095
|
type: "button",
|
|
1032
|
-
class: `row${
|
|
1096
|
+
class: `row${s ? " row-earlier" : ""}`,
|
|
1033
1097
|
"data-key": n.key,
|
|
1034
1098
|
"data-fid": `row-${n.key}`,
|
|
1035
|
-
"aria-current": ((
|
|
1099
|
+
"aria-current": ((c = e.selected) == null ? void 0 : c.key) === n.key ? "true" : "false",
|
|
1036
1100
|
onclick: () => t.select(n.key)
|
|
1037
1101
|
},
|
|
1038
|
-
|
|
1102
|
+
i(
|
|
1039
1103
|
"span",
|
|
1040
1104
|
{ class: "row-when" },
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1105
|
+
i("span", { class: "row-time" }, J(n.minutes)),
|
|
1106
|
+
i("span", { class: "row-date", style: "display:block" }, ae(e.day, e.today)),
|
|
1107
|
+
a ? i("span", { class: "row-soon soon", style: "display:block" }, a) : null
|
|
1044
1108
|
),
|
|
1045
|
-
|
|
1109
|
+
i(
|
|
1046
1110
|
"span",
|
|
1047
1111
|
{ style: "min-width:0" },
|
|
1048
|
-
|
|
1049
|
-
|
|
1112
|
+
i("span", { class: "row-name" }, i("span", null, xe(n)), Rr(n)),
|
|
1113
|
+
l ? i("span", { class: "row-experience", style: "display:block" }, l) : null
|
|
1050
1114
|
),
|
|
1051
|
-
|
|
1115
|
+
i("span", { class: "row-party" }, A(n.party, "guest"))
|
|
1052
1116
|
)
|
|
1053
1117
|
);
|
|
1054
1118
|
}
|
|
1055
|
-
function
|
|
1056
|
-
return
|
|
1119
|
+
function Dr() {
|
|
1120
|
+
return i(
|
|
1057
1121
|
"div",
|
|
1058
1122
|
{ "aria-hidden": "true" },
|
|
1059
|
-
[0, 1, 2, 3].map(() =>
|
|
1123
|
+
[0, 1, 2, 3].map(() => i("div", { class: "skeleton-row" }, i("span", { class: "skel", style: "flex:0 0 72px" }), i("span", { class: "skel", style: "flex:2" }), i("span", { class: "skel", style: "flex:0 0 56px" })))
|
|
1060
1124
|
);
|
|
1061
1125
|
}
|
|
1062
|
-
function
|
|
1063
|
-
const t = e.request, n =
|
|
1064
|
-
return (t == null ? void 0 : t.kind) === "sent" ?
|
|
1126
|
+
function Vr(e) {
|
|
1127
|
+
const t = e.request, n = je(e.day, e.today);
|
|
1128
|
+
return (t == null ? void 0 : t.kind) === "sent" ? P(`Request sent. You may need to finish sending it in the chat. The briefing updates after the assistant loads ${n}.`) : (t == null ? void 0 : t.kind) === "copied" ? P(`Request copied. Paste it into this chat to load ${n}.`) : (t == null ? void 0 : t.kind) === "manual" ? i(
|
|
1065
1129
|
"div",
|
|
1066
1130
|
null,
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
) : (t == null ? void 0 : t.kind) === "failed" ?
|
|
1131
|
+
P(`Copy this request into the chat to load ${n}.`),
|
|
1132
|
+
i("textarea", { class: "request-text", readonly: !0, rows: 6, "aria-label": "Request to copy", onfocus: (r) => r.target.select() }, t.text)
|
|
1133
|
+
) : (t == null ? void 0 : t.kind) === "failed" ? P(`The request wasn't sent. ${t.message}`, "note problem") : null;
|
|
1070
1134
|
}
|
|
1071
|
-
function
|
|
1072
|
-
var
|
|
1073
|
-
const n = ((
|
|
1074
|
-
return
|
|
1135
|
+
function Ur(e, t) {
|
|
1136
|
+
var s;
|
|
1137
|
+
const n = ((s = e.request) == null ? void 0 : s.kind) === "pending", r = Er() ? "This page holds the days loaded in this chat. Load this day asks the chat for it, or open the page where the New Vintage connector can run to load any day." : "This page holds the days loaded in this chat. Load this day asks the chat for it.";
|
|
1138
|
+
return i(
|
|
1075
1139
|
"div",
|
|
1076
1140
|
{ class: "empty" },
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1141
|
+
i("p", { class: "empty-title" }, "This day isn't loaded yet"),
|
|
1142
|
+
P(r),
|
|
1143
|
+
i(
|
|
1080
1144
|
"div",
|
|
1081
1145
|
{ class: "actions" },
|
|
1082
|
-
|
|
1146
|
+
i(
|
|
1083
1147
|
"button",
|
|
1084
1148
|
{ type: "button", class: "button", "data-fid": "load-day", disabled: n, "aria-busy": n ? "true" : "false", onclick: () => t.requestDay() },
|
|
1085
1149
|
n ? "Sending…" : "Load this day"
|
|
1086
1150
|
)
|
|
1087
1151
|
),
|
|
1088
|
-
|
|
1152
|
+
Vr(e)
|
|
1089
1153
|
);
|
|
1090
1154
|
}
|
|
1091
|
-
function
|
|
1092
|
-
if (
|
|
1093
|
-
const n = e.dayState, r =
|
|
1094
|
-
let
|
|
1095
|
-
if (n.status === "loading")
|
|
1096
|
-
else if (n.status === "choose")
|
|
1097
|
-
else if (n.status === "unloaded")
|
|
1155
|
+
function jr(e, t) {
|
|
1156
|
+
if (Be(e, "guestList")) return null;
|
|
1157
|
+
const n = e.dayState, r = Ze(e, "guestList");
|
|
1158
|
+
let s = null, a;
|
|
1159
|
+
if (n.status === "loading") a = Dr();
|
|
1160
|
+
else if (n.status === "choose") a = i("div", { class: "empty" }, i("p", { class: "empty-title" }, "Choose a winery"), n.message ? P(n.message) : null);
|
|
1161
|
+
else if (n.status === "unloaded") a = Ur(e, t);
|
|
1098
1162
|
else if (n.status === "failed")
|
|
1099
|
-
|
|
1163
|
+
a = i(
|
|
1100
1164
|
"div",
|
|
1101
1165
|
{ class: "empty" },
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1166
|
+
i("p", { class: "empty-title" }, "This day couldn't load"),
|
|
1167
|
+
P(n.message, "note problem"),
|
|
1168
|
+
i("div", { class: "actions" }, i("button", { type: "button", class: "button", "data-fid": "retry", onclick: () => t.retry() }, "Try again"))
|
|
1105
1169
|
);
|
|
1106
|
-
else if (!n.arrivals.length)
|
|
1170
|
+
else if (!n.arrivals.length) a = i("div", { class: "empty" }, i("p", { class: "empty-title" }, "No one is coming in on this day."));
|
|
1107
1171
|
else {
|
|
1108
|
-
const
|
|
1109
|
-
|
|
1110
|
-
const { upcoming: l, earlier: d } = Ve(n.arrivals, e.kind, e.nowMinutes);
|
|
1111
|
-
s = o(
|
|
1112
|
-
"ul",
|
|
1113
|
-
{ class: "rows" },
|
|
1114
|
-
l.map((h) => jt(e, t, h, !c, !1)),
|
|
1115
|
-
d.length ? o("li", { class: "earlier-head" }, "Earlier today", o("span", { class: "count", "aria-label": z(d.length, "reservation") }, String(d.length))) : null,
|
|
1116
|
-
d.map((h) => jt(e, t, h, !c, !0))
|
|
1117
|
-
);
|
|
1172
|
+
const l = sr(n.arrivals);
|
|
1173
|
+
l && (s = `All from ${Fe[l]}`), a = i("div", null, Gr(e, t), dn(e, t, n.arrivals, !l));
|
|
1118
1174
|
}
|
|
1119
|
-
return
|
|
1175
|
+
return i(
|
|
1120
1176
|
"section",
|
|
1121
1177
|
{ class: "card list-card", "data-section": "guestList", "aria-busy": n.status === "loading" ? "true" : "false" },
|
|
1122
|
-
|
|
1123
|
-
|
|
1178
|
+
i("div", { class: "card-head" }, i("h2", null, r), s ? i("span", { class: "card-aside" }, s) : null),
|
|
1179
|
+
a
|
|
1180
|
+
);
|
|
1181
|
+
}
|
|
1182
|
+
function Gr(e, t) {
|
|
1183
|
+
return i(
|
|
1184
|
+
"div",
|
|
1185
|
+
{ class: "finder" },
|
|
1186
|
+
i(
|
|
1187
|
+
"label",
|
|
1188
|
+
{ class: "search" },
|
|
1189
|
+
K("search", 16),
|
|
1190
|
+
i("span", { class: "sr-only" }, "Search guests by name"),
|
|
1191
|
+
i("input", {
|
|
1192
|
+
type: "search",
|
|
1193
|
+
class: "search-input",
|
|
1194
|
+
placeholder: "Search guests",
|
|
1195
|
+
autocomplete: "off",
|
|
1196
|
+
spellcheck: "false",
|
|
1197
|
+
value: e.query,
|
|
1198
|
+
"data-fid": "search",
|
|
1199
|
+
oninput: (n) => t.search(n.target.value)
|
|
1200
|
+
})
|
|
1201
|
+
),
|
|
1202
|
+
i(
|
|
1203
|
+
"div",
|
|
1204
|
+
{ class: "filters", role: "group", "aria-label": "Show only" },
|
|
1205
|
+
an.map(
|
|
1206
|
+
(n) => i(
|
|
1207
|
+
"button",
|
|
1208
|
+
{
|
|
1209
|
+
type: "button",
|
|
1210
|
+
class: "filter-chip",
|
|
1211
|
+
"aria-pressed": e.filters.includes(n.id) ? "true" : "false",
|
|
1212
|
+
"data-filter": n.id,
|
|
1213
|
+
"data-fid": `filter-${n.id}`,
|
|
1214
|
+
onclick: () => t.toggleFilter(n.id)
|
|
1215
|
+
},
|
|
1216
|
+
n.label
|
|
1217
|
+
)
|
|
1218
|
+
)
|
|
1219
|
+
)
|
|
1220
|
+
);
|
|
1221
|
+
}
|
|
1222
|
+
function Kt(e) {
|
|
1223
|
+
return e.first === e.last ? J(e.first) : `${J(e.first)} to ${J(e.last)}`;
|
|
1224
|
+
}
|
|
1225
|
+
function Fr(e, t, n) {
|
|
1226
|
+
const r = t.reduce((a, l) => a + l.party, 0);
|
|
1227
|
+
return [n ? `${t.length} of ${A(e.arrivals.length, "party", "parties")}` : A(t.length, "party", "parties"), A(r, "guest"), er(t)].filter(Boolean).join(", ");
|
|
1228
|
+
}
|
|
1229
|
+
function dn(e, t, n, r) {
|
|
1230
|
+
const s = !!e.query.trim() || e.filters.length > 0, a = Xn(n, e.seatingGap), l = e.kind === "today", c = (y) => l && y.last < e.nowMinutes, d = l ? a.find((y) => !c(y)) : void 0, m = n.filter((y) => Oe(y, e.query, e.filters)).length, M = (y) => {
|
|
1231
|
+
const _ = y.arrivals.filter((O) => Oe(O, e.query, e.filters));
|
|
1232
|
+
if (!_.length) return null;
|
|
1233
|
+
const C = c(y), L = !C || e.openEarlier.includes(y.key), T = y === d ? y.first <= e.nowMinutes ? "Now" : "Next" : null, q = i("span", { class: "seat-time" }, Kt(y)), F = i("span", { class: "seat-counts" }, Fr(y, _, s)), I = C ? i(
|
|
1234
|
+
"button",
|
|
1235
|
+
{
|
|
1236
|
+
type: "button",
|
|
1237
|
+
class: "seat-head seat-toggle",
|
|
1238
|
+
"aria-expanded": L ? "true" : "false",
|
|
1239
|
+
"data-fid": `seating-${y.key}`,
|
|
1240
|
+
onclick: () => t.toggleSeating(y.key)
|
|
1241
|
+
},
|
|
1242
|
+
i("span", { class: "seat-chevron" }, K(L ? "chevron-down" : "chevron-right", 16)),
|
|
1243
|
+
i("span", { class: "seat-label" }, q, F)
|
|
1244
|
+
) : i("div", { class: "seat-head" }, i("span", { class: "seat-label" }, i("h3", { class: "seat-time" }, Kt(y)), F), T ? i("span", { class: `seat-marker seat-${T.toLowerCase()}` }, T) : null);
|
|
1245
|
+
return i(
|
|
1246
|
+
"li",
|
|
1247
|
+
{ class: `seating${C ? " seating-earlier" : ""}`, "data-seating": y.key, "data-state": C ? "earlier" : T ? T.toLowerCase() : "later" },
|
|
1248
|
+
I,
|
|
1249
|
+
L ? i(
|
|
1250
|
+
"ul",
|
|
1251
|
+
{ class: "rows" },
|
|
1252
|
+
_.map((O) => qr(e, t, O, r, l && O.minutes < e.nowMinutes))
|
|
1253
|
+
) : null
|
|
1254
|
+
);
|
|
1255
|
+
}, k = a.filter((y) => !c(y)).map(M).filter((y) => y !== null), h = a.filter(c).map(M).filter((y) => y !== null), x = a.filter(c).reduce((y, _) => y + _.arrivals.filter((C) => Oe(C, e.query, e.filters)).length, 0);
|
|
1256
|
+
return i(
|
|
1257
|
+
"div",
|
|
1258
|
+
{ class: "list-results", "aria-live": "polite" },
|
|
1259
|
+
s ? i(
|
|
1260
|
+
"div",
|
|
1261
|
+
{ class: "filter-status" },
|
|
1262
|
+
i("span", null, m ? `${m} of ${A(n.length, "party", "parties")}` : "No guests match."),
|
|
1263
|
+
i("button", { type: "button", class: "link-button", "data-fid": "clear-filters", onclick: () => t.clearFilters() }, "Clear filters")
|
|
1264
|
+
) : null,
|
|
1265
|
+
k.length || h.length ? i(
|
|
1266
|
+
"ol",
|
|
1267
|
+
{ class: "seatings" },
|
|
1268
|
+
k,
|
|
1269
|
+
h.length ? i("li", { class: "earlier-head" }, "Earlier today", i("span", { class: "count", "aria-label": A(x, "reservation") }, String(x))) : null,
|
|
1270
|
+
h
|
|
1271
|
+
) : null
|
|
1124
1272
|
);
|
|
1125
1273
|
}
|
|
1126
|
-
function
|
|
1127
|
-
return e.map((t) =>
|
|
1274
|
+
function Zr(e) {
|
|
1275
|
+
return e.map((t) => i("p", { class: "soft" }, t.text, t.when ? i("span", { class: "soft-when" }, t.when) : null));
|
|
1128
1276
|
}
|
|
1129
|
-
function
|
|
1277
|
+
function Br(e) {
|
|
1130
1278
|
const t = e.bought;
|
|
1131
|
-
return t ? t.items.length ?
|
|
1279
|
+
return t ? t.items.length ? i(
|
|
1132
1280
|
"ul",
|
|
1133
1281
|
{ class: "bought" },
|
|
1134
|
-
t.items.map((n) =>
|
|
1135
|
-
t.total !== null ?
|
|
1136
|
-
) :
|
|
1282
|
+
t.items.map((n) => i("li", null, i("span", null, n.title), i("span", { class: "qty" }, `× ${n.qty}`))),
|
|
1283
|
+
t.total !== null ? i("li", { class: "total" }, i("span", null, "Total"), i("span", null, Y(t.total))) : null
|
|
1284
|
+
) : i("p", { class: "visit-muted" }, "Nothing beyond the tasting") : null;
|
|
1137
1285
|
}
|
|
1138
|
-
function
|
|
1286
|
+
function Hr(e, t) {
|
|
1139
1287
|
const n = t.lastTaste, r = [];
|
|
1140
1288
|
if (n) {
|
|
1141
|
-
const
|
|
1142
|
-
r.push(
|
|
1289
|
+
const l = n.day ? `${nn(n.day, e.today)}, ${Dn(n.day, e.today)}` : null;
|
|
1290
|
+
r.push(i("div", { class: "visit-part visit-taste" }, i("p", { class: "visit-title" }, n.title), l ? i("p", { class: "visit-muted" }, l) : null));
|
|
1143
1291
|
}
|
|
1144
|
-
const
|
|
1145
|
-
if (
|
|
1146
|
-
const
|
|
1147
|
-
return
|
|
1292
|
+
const s = Br(t);
|
|
1293
|
+
if (s && r.push(i("div", { class: "visit-part visit-bought" }, s)), t.orderNotes.length && r.push(i("div", { class: "visit-part visit-notes" }, t.orderNotes.map((l) => i("p", { class: "visit-note" }, l)))), !r.length) return null;
|
|
1294
|
+
const a = r.flatMap((l, c) => c ? [i("hr", { class: "visit-divider" }), l] : [l]);
|
|
1295
|
+
return i("div", { class: "fact fact-visit" }, i("div", { class: "fact-label" }, "Last visit"), i("div", { class: "visit" }, a));
|
|
1148
1296
|
}
|
|
1149
|
-
function
|
|
1297
|
+
function Yr(e) {
|
|
1150
1298
|
const { floor: t, ceiling: n } = e;
|
|
1151
|
-
return t !== null && n !== null ? t === n ?
|
|
1299
|
+
return t !== null && n !== null ? t === n ? Y(t) : `${Y(t)} to ${Y(n)}` : t !== null ? `From ${Y(t)}` : n !== null ? `Up to ${Y(n)}` : e.avg !== null ? Y(e.avg) : null;
|
|
1152
1300
|
}
|
|
1153
|
-
function
|
|
1154
|
-
var
|
|
1155
|
-
const r = [],
|
|
1156
|
-
|
|
1301
|
+
function Wr(e, t, n) {
|
|
1302
|
+
var a, l;
|
|
1303
|
+
const r = [], s = (c) => {
|
|
1304
|
+
c && r.push(c);
|
|
1157
1305
|
};
|
|
1158
1306
|
switch (n) {
|
|
1159
1307
|
case "reservation": {
|
|
1160
|
-
const
|
|
1308
|
+
const c = e.kind === "today" && t.minutes >= e.nowMinutes;
|
|
1161
1309
|
r.push(
|
|
1162
|
-
|
|
1310
|
+
i(
|
|
1163
1311
|
"div",
|
|
1164
1312
|
{ class: "fact-row" },
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1313
|
+
S("Arrives", we(e.day, t.minutes, e.today), c ? Ge(t.minutes - e.nowMinutes) : null, c ? "fact-countdown" : ""),
|
|
1314
|
+
S("Party", A(t.party, "guest")),
|
|
1315
|
+
S("Booked via", Fe[t.source])
|
|
1168
1316
|
)
|
|
1169
|
-
),
|
|
1317
|
+
), s(t.experience ? S("Experience", t.experience) : null);
|
|
1170
1318
|
break;
|
|
1171
1319
|
}
|
|
1172
1320
|
case "talkAbout": {
|
|
1173
|
-
|
|
1321
|
+
s(t.occasions.length ? S("Occasion", t.occasions.map((c, d) => i("div", { "data-line": d }, c))) : null), s(t.interests.length ? S("Interested in", Te(t.interests)) : null), s(Hr(e, t));
|
|
1174
1322
|
break;
|
|
1175
1323
|
}
|
|
1176
1324
|
case "newVintageProfile": {
|
|
1177
|
-
const
|
|
1178
|
-
|
|
1179
|
-
t.wineTypes.length ?
|
|
1180
|
-
t.varietals.length ?
|
|
1181
|
-
t.vintages.length ?
|
|
1182
|
-
t.appellations.length ?
|
|
1183
|
-
].filter((
|
|
1184
|
-
d.length && r.push(
|
|
1325
|
+
const c = t.price ? Yr(t.price) : null, d = [
|
|
1326
|
+
c ? S("Usual bottle price", c, ((a = t.price) == null ? void 0 : a.avg) !== null && ((l = t.price) == null ? void 0 : l.avg) !== void 0 ? `Average ${Y(t.price.avg)}` : null) : null,
|
|
1327
|
+
t.wineTypes.length ? S("Wine types", t.wineTypes.join(", ")) : null,
|
|
1328
|
+
t.varietals.length ? S("Favorite varietals", t.varietals.join(", ")) : null,
|
|
1329
|
+
t.vintages.length ? S("Vintages", t.vintages.join(", ")) : null,
|
|
1330
|
+
t.appellations.length ? S("Appellations", t.appellations.join(", ")) : null
|
|
1331
|
+
].filter((m) => m !== null);
|
|
1332
|
+
d.length && r.push(i("div", { class: "fact-grid" }, d));
|
|
1185
1333
|
break;
|
|
1186
1334
|
}
|
|
1187
1335
|
case "relationship":
|
|
1188
|
-
|
|
1336
|
+
s(t.since ? S("Customer since", t.since) : null), s(t.lifetime ? S("Lifetime spend", Y(t.lifetime.spend), t.lifetime.orders !== null ? A(t.lifetime.orders, "order") : null) : null), s(t.clubTitles ? S("Club", t.clubTitles) : null), s(t.clubPickup ? S("Club pickup", "Shipment ready to hand over") : null), s(t.prospect && t.signupTier ? S("Likely to join the club", Lt(t.signupTier)) : null), s(t.atRisk && t.churnTier ? S("Membership at risk", Lt(t.churnTier)) : null), s(t.clubTags.length ? S("Club tags", Te(t.clubTags)) : null);
|
|
1189
1337
|
break;
|
|
1190
1338
|
case "headsUp":
|
|
1191
|
-
|
|
1339
|
+
s(t.accountTags.length ? S("Account tags", Te(t.accountTags, "warning")) : null);
|
|
1192
1340
|
break;
|
|
1193
1341
|
case "personalNotes":
|
|
1194
|
-
r.push(...
|
|
1342
|
+
r.push(...Zr(t.personalNotes.map((c) => ({ text: c.content, when: c.when }))));
|
|
1195
1343
|
break;
|
|
1196
1344
|
}
|
|
1197
1345
|
return r;
|
|
1198
1346
|
}
|
|
1199
|
-
function
|
|
1347
|
+
function Kr(e) {
|
|
1200
1348
|
const t = [];
|
|
1201
|
-
return e.vip && t.push("VIP"), t.push(e.visit === "first" ? "First visit" : e.visit === "return" ? "Returning guest" : "Visit history unknown"), e.clubMember && t.push("Club member"), e.prospect && t.push("Club prospect"), e.atRisk && t.push("Membership at risk"),
|
|
1349
|
+
return e.vip && t.push("VIP"), t.push(e.visit === "first" ? "First visit" : e.visit === "return" ? "Returning guest" : "Visit history unknown"), e.clubMember && t.push("Club member"), e.prospect && t.push("Club prospect"), e.atRisk && t.push("Membership at risk"), e.partlyRefunded && t.push("Partly refunded"), i("div", { class: "chips" }, t.map(cn));
|
|
1202
1350
|
}
|
|
1203
|
-
const
|
|
1204
|
-
function
|
|
1205
|
-
var d,
|
|
1351
|
+
const Jr = ["reservation", "talkAbout", "newVintageProfile", "relationship", "headsUp", "personalNotes"];
|
|
1352
|
+
function Qr(e, t, n) {
|
|
1353
|
+
var d, m, M;
|
|
1206
1354
|
const r = e.selected;
|
|
1207
1355
|
if (!r || e.dayState.status !== "ready") return null;
|
|
1208
|
-
const
|
|
1209
|
-
for (const
|
|
1210
|
-
if (!
|
|
1211
|
-
const
|
|
1212
|
-
|
|
1213
|
-
|
|
1356
|
+
const s = [];
|
|
1357
|
+
for (const k of Jr) {
|
|
1358
|
+
if (!Be(e, k)) {
|
|
1359
|
+
const h = Wr(e, r, k);
|
|
1360
|
+
h.length && s.push(
|
|
1361
|
+
i(
|
|
1214
1362
|
"section",
|
|
1215
|
-
{ class: "psec", "data-section":
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1363
|
+
{ class: "psec", "data-section": k },
|
|
1364
|
+
i("h3", { class: "psec-title" }, i("span", { class: `tile${k === "headsUp" ? " tile-warning" : ""}` }, K((d = Cr[k]) != null ? d : "", 16)), Ze(e, k)),
|
|
1365
|
+
Wt[k] ? i("p", { class: "psec-source" }, Wt[k]) : null,
|
|
1366
|
+
i("div", { class: "psec-facts" }, h)
|
|
1219
1367
|
)
|
|
1220
1368
|
);
|
|
1221
1369
|
}
|
|
1222
|
-
|
|
1370
|
+
s.push(...n(k));
|
|
1223
1371
|
}
|
|
1224
|
-
const
|
|
1372
|
+
const a = ((m = e.research) == null ? void 0 : m.key) === r.key ? e.research : null, l = (a == null ? void 0 : a.status) === "pending", c = e.live ? i(
|
|
1225
1373
|
"div",
|
|
1226
1374
|
{ class: "research" },
|
|
1227
|
-
|
|
1375
|
+
i(
|
|
1228
1376
|
"button",
|
|
1229
|
-
{ type: "button", class: "button button-quiet", "data-fid": "research", disabled:
|
|
1377
|
+
{ type: "button", class: "button button-quiet", "data-fid": "research", disabled: l, "aria-busy": l ? "true" : "false", onclick: () => t.research() },
|
|
1230
1378
|
K("refresh-cw", 16),
|
|
1231
|
-
|
|
1379
|
+
l ? "Researching…" : "Research this guest again"
|
|
1232
1380
|
),
|
|
1233
|
-
(
|
|
1234
|
-
) :
|
|
1381
|
+
(a == null ? void 0 : a.status) === "failed" ? P((M = a.message) != null ? M : "This guest couldn't refresh.", "note problem") : null
|
|
1382
|
+
) : i(
|
|
1235
1383
|
"div",
|
|
1236
1384
|
{ class: "research" },
|
|
1237
|
-
|
|
1238
|
-
|
|
1385
|
+
i("button", { type: "button", class: "button button-quiet", disabled: !0, "aria-describedby": "research-reason" }, K("refresh-cw", 16), "Research this guest again"),
|
|
1386
|
+
i("p", { class: "note", id: "research-reason" }, "Ask in this chat to refresh this guest.")
|
|
1239
1387
|
);
|
|
1240
|
-
return
|
|
1388
|
+
return i(
|
|
1241
1389
|
"aside",
|
|
1242
|
-
{ class: "card panel", "aria-label": `Guest: ${
|
|
1243
|
-
|
|
1390
|
+
{ class: "card panel", "aria-label": `Guest: ${xe(r)}`, "data-key": r.key },
|
|
1391
|
+
i(
|
|
1244
1392
|
"div",
|
|
1245
1393
|
{ class: "panel-head" },
|
|
1246
|
-
|
|
1247
|
-
|
|
1394
|
+
i("div", { class: "handle", "aria-hidden": "true" }),
|
|
1395
|
+
i(
|
|
1248
1396
|
"div",
|
|
1249
1397
|
{ class: "panel-head-row" },
|
|
1250
|
-
|
|
1251
|
-
|
|
1398
|
+
i("h2", { class: "panel-name" }, xe(r)),
|
|
1399
|
+
i("button", { type: "button", class: "icon-button close", "aria-label": "Close", "data-fid": "close-sheet", onclick: () => t.closeSheet() }, K("x", 20))
|
|
1252
1400
|
),
|
|
1253
|
-
|
|
1401
|
+
Kr(r)
|
|
1254
1402
|
),
|
|
1255
|
-
|
|
1403
|
+
i("div", { class: "panel-body" }, s, c)
|
|
1256
1404
|
);
|
|
1257
1405
|
}
|
|
1258
|
-
const
|
|
1259
|
-
function
|
|
1406
|
+
const Jt = 900 * 1e3;
|
|
1407
|
+
function qe(e) {
|
|
1260
1408
|
switch (e.kind) {
|
|
1261
1409
|
case "unavailable":
|
|
1262
|
-
return
|
|
1410
|
+
return Ae() === "claude" ? "Loading a day needs the New Vintage connector with access to this winery. Add the connector in this chat, then try again." : "This page shows the days loaded in the chat. Ask in the chat to load another.";
|
|
1263
1411
|
case "approval":
|
|
1264
1412
|
return "Loading a day needs your permission to use the New Vintage connector. Allow it for this page, then try again.";
|
|
1265
1413
|
case "reconnect":
|
|
1266
|
-
return
|
|
1414
|
+
return An();
|
|
1267
1415
|
case "temporary":
|
|
1268
1416
|
return "New Vintage didn't answer. Try again in a moment.";
|
|
1269
1417
|
case "needs_update":
|
|
@@ -1274,305 +1422,332 @@ function ze(e) {
|
|
|
1274
1422
|
return e.message;
|
|
1275
1423
|
}
|
|
1276
1424
|
}
|
|
1277
|
-
function
|
|
1278
|
-
var
|
|
1279
|
-
const n = (
|
|
1280
|
-
...
|
|
1281
|
-
...(
|
|
1282
|
-
tagRules: { ...
|
|
1283
|
-
},
|
|
1284
|
-
let
|
|
1285
|
-
const
|
|
1286
|
-
let
|
|
1287
|
-
const
|
|
1288
|
-
let
|
|
1289
|
-
const
|
|
1425
|
+
function Xr(e, t) {
|
|
1426
|
+
var st, it, ot, lt, ct, ut, dt, pt, gt, ft, mt, ht, yt, bt, vt, xt, wt, kt, St, $t;
|
|
1427
|
+
const n = (st = t.now) != null ? st : (() => /* @__PURE__ */ new Date()), r = {
|
|
1428
|
+
...he,
|
|
1429
|
+
...(it = t.settings) != null ? it : {},
|
|
1430
|
+
tagRules: { ...he.tagRules, ...(lt = (ot = t.settings) == null ? void 0 : ot.tagRules) != null ? lt : {} }
|
|
1431
|
+
}, s = On(t.settings ? t.settings.timeZone : he.timeZone), a = Hn(r.tagRules), l = Number(r.largeParty) > 0 ? Number(r.largeParty) : he.largeParty, c = Number(r.seatingGapMinutes) > 0 ? Number(r.seatingGapMinutes) : (ct = he.seatingGapMinutes) != null ? ct : 45, d = cr(t.customize, t.cards), m = gr(t.storage), M = () => Et(n(), s);
|
|
1432
|
+
let k = M().day, h = k, x = (ut = t.tenantId) != null ? ut : null, y = (dt = t.wineryName) != null ? dt : null, _ = null, C = null, L = !0, T = null, q = null, F = !1, I = 0;
|
|
1433
|
+
const O = /* @__PURE__ */ new Map(), Z = /* @__PURE__ */ new Set(), j = /* @__PURE__ */ new Map();
|
|
1434
|
+
let Q = null, z = null, B = !1;
|
|
1435
|
+
const g = /* @__PURE__ */ new Map();
|
|
1436
|
+
let E = null, N = { open: !1, month: h.slice(0, 7), focus: h }, D = null, _e = "", se = [], te = [], Ce = null, ke = null, ue = !1;
|
|
1437
|
+
const He = /* @__PURE__ */ new Map();
|
|
1290
1438
|
e.innerHTML = "";
|
|
1291
|
-
const
|
|
1292
|
-
(
|
|
1293
|
-
const
|
|
1294
|
-
document.head.append(
|
|
1295
|
-
const
|
|
1296
|
-
e.append(
|
|
1297
|
-
const
|
|
1298
|
-
window.addEventListener("resize",
|
|
1299
|
-
const
|
|
1300
|
-
|
|
1301
|
-
},
|
|
1302
|
-
var
|
|
1303
|
-
if (!
|
|
1304
|
-
const u =
|
|
1305
|
-
(
|
|
1439
|
+
const pn = [(ft = (gt = (pt = t.customize) == null ? void 0 : pt.fonts) == null ? void 0 : gt.display) != null ? ft : "Newsreader", (yt = (ht = (mt = t.customize) == null ? void 0 : mt.fonts) == null ? void 0 : ht.body) != null ? yt : "Be Vietnam Pro"], Ye = i("link", { rel: "stylesheet", href: vr(pn.filter((o) => /^[A-Za-z0-9 ]{1,40}$/.test(o))) }), Ee = {};
|
|
1440
|
+
(vt = (bt = t.customize) == null ? void 0 : bt.fonts) != null && vt.display && (Ee["font-display"] = `'${t.customize.fonts.display}', Georgia, serif`), (wt = (xt = t.customize) == null ? void 0 : xt.fonts) != null && wt.body && (Ee["font-body"] = `'${t.customize.fonts.body}', system-ui, sans-serif`);
|
|
1441
|
+
const We = i("style", null, xr({ ...Ee, ...(St = (kt = t.customize) == null ? void 0 : kt.theme) != null ? St : {} }, ($t = t.customize) == null ? void 0 : $t.themeDark) + wr);
|
|
1442
|
+
document.head.append(Ye, We);
|
|
1443
|
+
const V = i("div", { class: "nvgp" });
|
|
1444
|
+
e.append(V);
|
|
1445
|
+
const Ke = () => Xe();
|
|
1446
|
+
window.addEventListener("resize", Ke);
|
|
1447
|
+
const Je = (o) => {
|
|
1448
|
+
o.key === "Escape" && (N.open ? ee.closeCalendar() : B && ee.closeSheet());
|
|
1449
|
+
}, Qe = (o) => {
|
|
1450
|
+
var p;
|
|
1451
|
+
if (!N.open) return;
|
|
1452
|
+
const u = o.target;
|
|
1453
|
+
(p = u == null ? void 0 : u.closest) != null && p.call(u, ".day-wrap") || (N = { ...N, open: !1 }, w());
|
|
1306
1454
|
};
|
|
1307
|
-
document.addEventListener("keydown",
|
|
1308
|
-
function
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1455
|
+
document.addEventListener("keydown", Je), document.addEventListener("mousedown", Qe);
|
|
1456
|
+
function Xe() {
|
|
1457
|
+
var f;
|
|
1458
|
+
const o = V.querySelector(".daybar");
|
|
1459
|
+
o && V.style.setProperty("--daybar-h", `${o.offsetHeight}px`);
|
|
1460
|
+
const u = V.querySelector(".summary");
|
|
1461
|
+
V.style.setProperty("--summary-h", `${u ? u.offsetHeight + 16 : 0}px`);
|
|
1462
|
+
const p = u && window.getComputedStyle(u).position === "sticky" ? u.offsetHeight : 0;
|
|
1463
|
+
V.style.setProperty("--seat-top", `${((f = o == null ? void 0 : o.offsetHeight) != null ? f : 0) + p}px`);
|
|
1313
1464
|
}
|
|
1314
|
-
const
|
|
1315
|
-
function
|
|
1316
|
-
var
|
|
1317
|
-
const u = (
|
|
1465
|
+
const X = () => !!(C && T && x);
|
|
1466
|
+
function gn(o) {
|
|
1467
|
+
var p, f;
|
|
1468
|
+
const u = (p = t.days) == null ? void 0 : p[o];
|
|
1318
1469
|
return u && Array.isArray(u.arrivals) ? { rows: u.arrivals, loadedAt: String((f = u.loadedAt) != null ? f : ""), live: !1 } : null;
|
|
1319
1470
|
}
|
|
1320
|
-
function
|
|
1471
|
+
function ze(o) {
|
|
1321
1472
|
var u;
|
|
1322
|
-
return (u =
|
|
1473
|
+
return (u = O.get(o)) != null ? u : gn(o);
|
|
1323
1474
|
}
|
|
1324
|
-
function
|
|
1325
|
-
if (!
|
|
1326
|
-
const
|
|
1327
|
-
if (
|
|
1328
|
-
return { status: "ready", arrivals:
|
|
1329
|
-
if (L || Z.has(
|
|
1330
|
-
const u =
|
|
1331
|
-
return u ? { status: "failed", message: u } :
|
|
1475
|
+
function et() {
|
|
1476
|
+
if (!x) return L ? { status: "loading" } : { status: "choose", message: Q };
|
|
1477
|
+
const o = ze(h);
|
|
1478
|
+
if (o)
|
|
1479
|
+
return { status: "ready", arrivals: Qn(o.rows, { day: h, today: k, largeParty: l, rules: a }), rows: o.rows, loadedAt: o.loadedAt, live: o.live };
|
|
1480
|
+
if (L || Z.has(h)) return { status: "loading" };
|
|
1481
|
+
const u = j.get(h);
|
|
1482
|
+
return u ? { status: "failed", message: u } : X() ? { status: "loading" } : { status: "unloaded" };
|
|
1332
1483
|
}
|
|
1333
|
-
function
|
|
1334
|
-
var f,
|
|
1335
|
-
const { upcoming:
|
|
1336
|
-
return (
|
|
1484
|
+
function fn(o, u) {
|
|
1485
|
+
var f, v;
|
|
1486
|
+
const { upcoming: p } = sn(o, Ve(h, k), u);
|
|
1487
|
+
return (v = (f = p[0]) != null ? f : o[0]) != null ? v : null;
|
|
1337
1488
|
}
|
|
1338
|
-
function
|
|
1339
|
-
const u =
|
|
1340
|
-
if (
|
|
1341
|
-
if (!
|
|
1342
|
-
if (Z.has(
|
|
1343
|
-
if (
|
|
1344
|
-
const
|
|
1345
|
-
if (Number.isNaN(
|
|
1346
|
-
const f =
|
|
1347
|
-
return { text: `Loaded in the chat ${
|
|
1489
|
+
function mn(o) {
|
|
1490
|
+
const u = j.get(h);
|
|
1491
|
+
if (o && u) return { text: u, problem: !0 };
|
|
1492
|
+
if (!o) return null;
|
|
1493
|
+
if (Z.has(h)) return { text: "Checking for changes", problem: !1 };
|
|
1494
|
+
if (o.live) return { text: "Up to date", problem: !1 };
|
|
1495
|
+
const p = new Date(o.loadedAt);
|
|
1496
|
+
if (Number.isNaN(p.getTime())) return { text: "Loaded in the chat", problem: !1 };
|
|
1497
|
+
const f = Et(p, s);
|
|
1498
|
+
return { text: `Loaded in the chat ${we(f.day, f.minutes, k)}`, problem: !1 };
|
|
1348
1499
|
}
|
|
1349
|
-
function
|
|
1350
|
-
var
|
|
1351
|
-
const
|
|
1500
|
+
function de() {
|
|
1501
|
+
var v, b, $, oe;
|
|
1502
|
+
const o = M(), u = et(), p = u.status === "ready" ? u.arrivals : [], f = (v = p.find((G) => G.key === z)) != null ? v : fn(p, o.minutes);
|
|
1352
1503
|
return {
|
|
1353
1504
|
options: t,
|
|
1354
|
-
title: ((
|
|
1355
|
-
timeZone:
|
|
1356
|
-
today:
|
|
1357
|
-
nowMinutes:
|
|
1358
|
-
day:
|
|
1359
|
-
kind:
|
|
1360
|
-
live:
|
|
1505
|
+
title: (($ = (b = t.customize) == null ? void 0 : b.title) == null ? void 0 : $.trim()) || (y ? `${y} Guest Prep` : "Guest Prep"),
|
|
1506
|
+
timeZone: s,
|
|
1507
|
+
today: k,
|
|
1508
|
+
nowMinutes: o.minutes,
|
|
1509
|
+
day: h,
|
|
1510
|
+
kind: Ve(h, k),
|
|
1511
|
+
live: X(),
|
|
1361
1512
|
dayState: u,
|
|
1362
1513
|
selected: f,
|
|
1363
|
-
sheetOpen:
|
|
1364
|
-
request: (
|
|
1365
|
-
research:
|
|
1366
|
-
calendar:
|
|
1367
|
-
dayNote:
|
|
1368
|
-
wineries:
|
|
1369
|
-
tenantId:
|
|
1370
|
-
storageNote:
|
|
1514
|
+
sheetOpen: B,
|
|
1515
|
+
request: (oe = g.get(h)) != null ? oe : null,
|
|
1516
|
+
research: E,
|
|
1517
|
+
calendar: N,
|
|
1518
|
+
dayNote: mn(x ? ze(h) : null),
|
|
1519
|
+
wineries: _,
|
|
1520
|
+
tenantId: x,
|
|
1521
|
+
storageNote: m.mode === "none" ? "Changes won't be saved in this browser." : null,
|
|
1522
|
+
seatingGap: c,
|
|
1523
|
+
query: _e,
|
|
1524
|
+
filters: se,
|
|
1525
|
+
openEarlier: te
|
|
1371
1526
|
};
|
|
1372
1527
|
}
|
|
1373
|
-
const
|
|
1528
|
+
const hn = () => typeof window.matchMedia == "function" && window.matchMedia("(max-width: 900px)").matches, ee = {
|
|
1374
1529
|
toggleCalendar: () => {
|
|
1375
|
-
|
|
1530
|
+
N = N.open ? { ...N, open: !1 } : { open: !0, month: h.slice(0, 7), focus: h }, D = N.open ? "cal-focus" : "day-button", w();
|
|
1376
1531
|
},
|
|
1377
1532
|
closeCalendar: () => {
|
|
1378
|
-
|
|
1533
|
+
N = { ...N, open: !1 }, D = "day-button", w();
|
|
1379
1534
|
},
|
|
1380
|
-
pickDay: (
|
|
1381
|
-
|
|
1382
|
-
const u =
|
|
1383
|
-
|
|
1535
|
+
pickDay: (o) => {
|
|
1536
|
+
N = { open: !1, month: o.slice(0, 7), focus: o }, D = "day-button", o !== h && (h = o, z = null, te = [], B = !1, E = null, tt()), w();
|
|
1537
|
+
const u = O.get(h);
|
|
1538
|
+
X() && (!u || Date.parse(u.loadedAt) < n().getTime() - Jt) && ie();
|
|
1384
1539
|
},
|
|
1385
|
-
focusDay: (
|
|
1386
|
-
|
|
1540
|
+
focusDay: (o) => {
|
|
1541
|
+
N = { ...N, focus: o, month: o.slice(0, 7) }, D = "cal-focus", w();
|
|
1387
1542
|
},
|
|
1388
|
-
showMonth: (
|
|
1543
|
+
showMonth: (o) => {
|
|
1389
1544
|
var f;
|
|
1390
|
-
const
|
|
1391
|
-
|
|
1545
|
+
const p = (f = [Number(N.focus.slice(8, 10)), 30, 29, 28].map((v) => `${o}-${String(v).padStart(2, "0")}`).find(zt)) != null ? f : `${o}-01`;
|
|
1546
|
+
N = { open: !0, month: o, focus: p }, w();
|
|
1392
1547
|
},
|
|
1393
|
-
select: (
|
|
1394
|
-
|
|
1548
|
+
select: (o) => {
|
|
1549
|
+
z = o, B = !0, hn() && (D = "close-sheet"), tt(), w();
|
|
1395
1550
|
},
|
|
1396
1551
|
closeSheet: () => {
|
|
1397
|
-
|
|
1552
|
+
B = !1, D = z ? `row-${z}` : null, w();
|
|
1553
|
+
},
|
|
1554
|
+
retry: () => void (x ? ie() : rt()),
|
|
1555
|
+
requestDay: () => void wn(),
|
|
1556
|
+
research: () => void xn(),
|
|
1557
|
+
chooseWinery: (o) => void kn(o),
|
|
1558
|
+
// Typing updates only the list, so the search box keeps focus and its caret.
|
|
1559
|
+
search: (o) => {
|
|
1560
|
+
_e = o, yn();
|
|
1561
|
+
},
|
|
1562
|
+
toggleFilter: (o) => {
|
|
1563
|
+
se = se.includes(o) ? se.filter((u) => u !== o) : [...se, o], w();
|
|
1398
1564
|
},
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1565
|
+
clearFilters: () => {
|
|
1566
|
+
_e = "", se = [], D = "search", w();
|
|
1567
|
+
},
|
|
1568
|
+
toggleSeating: (o) => {
|
|
1569
|
+
te = te.includes(o) ? te.filter((u) => u !== o) : [...te, o], w();
|
|
1570
|
+
}
|
|
1403
1571
|
};
|
|
1404
|
-
|
|
1405
|
-
|
|
1572
|
+
function yn() {
|
|
1573
|
+
const o = de(), u = V.querySelector(".list-results");
|
|
1574
|
+
if (!u || o.dayState.status !== "ready") return w();
|
|
1575
|
+
const p = new Set(o.dayState.arrivals.map((f) => f.source)).size === 1;
|
|
1576
|
+
u.replaceWith(dn(o, ee, o.dayState.arrivals, !p));
|
|
1406
1577
|
}
|
|
1407
|
-
async function
|
|
1408
|
-
|
|
1409
|
-
const i = er(await Ot(d.adapter, It(b)));
|
|
1410
|
-
!i || i.savedOn !== T || !Nt(i.day) || (m = i.day, N = i.guest, v = { open: !1, month: m.slice(0, 7), focus: m });
|
|
1578
|
+
async function tt() {
|
|
1579
|
+
x && await Zt(m.adapter, Gt(x), JSON.stringify({ day: h, guest: z, savedOn: k }));
|
|
1411
1580
|
}
|
|
1412
|
-
function
|
|
1413
|
-
|
|
1414
|
-
const
|
|
1581
|
+
async function nt() {
|
|
1582
|
+
if (!x) return;
|
|
1583
|
+
const o = fr(await Ft(m.adapter, Gt(x)));
|
|
1584
|
+
!o || o.savedOn !== k || !zt(o.day) || (h = o.day, z = o.guest, N = { open: !1, month: h.slice(0, 7), focus: h });
|
|
1585
|
+
}
|
|
1586
|
+
function bn(o) {
|
|
1587
|
+
var p, f;
|
|
1588
|
+
const u = de();
|
|
1415
1589
|
return {
|
|
1416
|
-
day:
|
|
1417
|
-
timeZone:
|
|
1418
|
-
live:
|
|
1590
|
+
day: h,
|
|
1591
|
+
timeZone: s,
|
|
1592
|
+
live: X(),
|
|
1419
1593
|
arrivals: u.dayState.status === "ready" ? u.dayState.rows : null,
|
|
1420
|
-
selected: (f = (
|
|
1421
|
-
ui: { h:
|
|
1422
|
-
runSql: async (
|
|
1423
|
-
if (!
|
|
1424
|
-
const
|
|
1425
|
-
if (!
|
|
1426
|
-
return
|
|
1594
|
+
selected: (f = (p = u.selected) == null ? void 0 : p.row) != null ? f : null,
|
|
1595
|
+
ui: { h: i, money: Y, note: (v) => P(v), fact: (v, b, $) => S(v, b, $), chips: Te },
|
|
1596
|
+
runSql: async (v) => {
|
|
1597
|
+
if (!T || !X()) throw new Error(`${o.title} needs the New Vintage connector.`);
|
|
1598
|
+
const b = await rn(T, v, "Loading a custom card on the Guest Prep page.");
|
|
1599
|
+
if (!b.complete) throw new Error("New Vintage returned only a preview for this card.");
|
|
1600
|
+
return b.rows;
|
|
1427
1601
|
}
|
|
1428
1602
|
};
|
|
1429
1603
|
}
|
|
1430
|
-
function
|
|
1431
|
-
const u =
|
|
1432
|
-
if (f && f.signature ===
|
|
1433
|
-
const
|
|
1434
|
-
return
|
|
1604
|
+
function vn(o) {
|
|
1605
|
+
const u = et(), p = [h, z != null ? z : "", u.status, u.status === "ready" ? u.loadedAt + u.rows.length : ""].join("|"), f = He.get(o.id);
|
|
1606
|
+
if (f && f.signature === p) return f.element;
|
|
1607
|
+
const v = i("div", null, P("Loading…")), b = i("section", { class: "card custom-card", "data-card": o.id }, i("h2", null, o.title), i("p", { class: "card-purpose" }, o.purpose), v);
|
|
1608
|
+
return He.set(o.id, { signature: p, element: b }), Promise.resolve().then(() => o.render(bn(o))).then(($) => v.replaceChildren($ == null ? P("Nothing to show yet.") : typeof $ == "string" ? P($) : $)).catch(($) => v.replaceChildren(P(`This card couldn't load: ${$ instanceof Error ? $.message : String($)}`, "note problem"))), b;
|
|
1435
1609
|
}
|
|
1436
|
-
function
|
|
1437
|
-
var
|
|
1438
|
-
return ((
|
|
1610
|
+
function Pe(o) {
|
|
1611
|
+
var p;
|
|
1612
|
+
return ((p = t.cards) != null ? p : []).filter((f) => o === null ? !f.after || !(f.after === "summary" || on.includes(f.after)) : f.after === o).map(vn);
|
|
1439
1613
|
}
|
|
1440
|
-
function
|
|
1441
|
-
var
|
|
1442
|
-
if (
|
|
1443
|
-
const
|
|
1444
|
-
|
|
1445
|
-
const
|
|
1614
|
+
function w() {
|
|
1615
|
+
var pe, H, ge, Tt, Nt, At;
|
|
1616
|
+
if (ue) return;
|
|
1617
|
+
const o = document.activeElement, u = (H = D != null ? D : (pe = o == null ? void 0 : o.getAttribute) == null ? void 0 : pe.call(o, "data-fid")) != null ? H : null, p = !D && o instanceof HTMLInputElement ? [o.selectionStart, o.selectionEnd] : null;
|
|
1618
|
+
D = null;
|
|
1619
|
+
const f = V.querySelector(".panel"), v = f ? { key: f.getAttribute("data-key"), top: (Tt = (ge = f.querySelector(".panel-body")) == null ? void 0 : ge.scrollTop) != null ? Tt : 0 } : null, b = de(), $ = Qr(b, ee, (le) => Pe(le)), oe = i(
|
|
1446
1620
|
"div",
|
|
1447
|
-
{ class: `page${
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1621
|
+
{ class: `page${B && $ ? " sheet-open" : ""}` },
|
|
1622
|
+
Lr(b, ee),
|
|
1623
|
+
b.storageNote ? P(b.storageNote, "storage-note") : null,
|
|
1624
|
+
Ir(b, ee),
|
|
1625
|
+
Or(b),
|
|
1626
|
+
b.dayState.status === "ready" ? Pe("summary") : null,
|
|
1627
|
+
i("div", { class: "layout" }, i("div", { style: "min-width:0" }, jr(b, ee), Pe(null)), $),
|
|
1628
|
+
B && $ ? i("div", { class: "backdrop", "aria-hidden": "true", onclick: () => ee.closeSheet() }) : null
|
|
1455
1629
|
);
|
|
1456
|
-
if (
|
|
1457
|
-
const
|
|
1458
|
-
|
|
1630
|
+
if (V.replaceChildren(oe), v && v.key === ((Nt = b.selected) == null ? void 0 : Nt.key)) {
|
|
1631
|
+
const le = V.querySelector(".panel-body");
|
|
1632
|
+
le && (le.scrollTop = v.top);
|
|
1459
1633
|
}
|
|
1460
|
-
|
|
1634
|
+
const G = u ? Array.from(V.querySelectorAll("[data-fid]")).find((le) => le.getAttribute("data-fid") === u) : null;
|
|
1635
|
+
G == null || G.focus(), p && G instanceof HTMLInputElement && p[0] !== null && G.setSelectionRange(p[0], (At = p[1]) != null ? At : p[0]), Xe();
|
|
1461
1636
|
}
|
|
1462
|
-
async function
|
|
1463
|
-
if (!
|
|
1464
|
-
const u =
|
|
1465
|
-
if (!
|
|
1466
|
-
|
|
1637
|
+
async function ie(o = h) {
|
|
1638
|
+
if (!T || !x || ue) return;
|
|
1639
|
+
const u = I;
|
|
1640
|
+
if (!en.includes(s)) {
|
|
1641
|
+
j.set(o, `Guest Prep can't load days in the ${s} time zone yet. Ask in this chat to set the winery's time zone.`), w();
|
|
1467
1642
|
return;
|
|
1468
1643
|
}
|
|
1469
|
-
Z.add(
|
|
1644
|
+
Z.add(o), j.delete(o), w();
|
|
1470
1645
|
try {
|
|
1471
|
-
|
|
1472
|
-
const
|
|
1473
|
-
if (u !==
|
|
1474
|
-
|
|
1475
|
-
} catch (
|
|
1476
|
-
if (u !==
|
|
1477
|
-
|
|
1646
|
+
q || (q = await It(T, F ? null : d), F = !0);
|
|
1647
|
+
const p = await Ot(T, q, { timeZone: s, day: o });
|
|
1648
|
+
if (u !== I) return;
|
|
1649
|
+
O.set(o, { rows: p, loadedAt: n().toISOString(), live: !0 });
|
|
1650
|
+
} catch (p) {
|
|
1651
|
+
if (u !== I) return;
|
|
1652
|
+
j.set(o, qe(ye(p)));
|
|
1478
1653
|
} finally {
|
|
1479
|
-
u ===
|
|
1654
|
+
u === I && Z.delete(o), w();
|
|
1480
1655
|
}
|
|
1481
1656
|
}
|
|
1482
|
-
async function
|
|
1483
|
-
const
|
|
1484
|
-
if (!
|
|
1485
|
-
const u =
|
|
1486
|
-
|
|
1657
|
+
async function xn() {
|
|
1658
|
+
const o = de().selected;
|
|
1659
|
+
if (!o || !T || !x || (E == null ? void 0 : E.status) === "pending") return;
|
|
1660
|
+
const u = h, p = I;
|
|
1661
|
+
E = { key: o.key, status: "pending" }, w();
|
|
1487
1662
|
try {
|
|
1488
|
-
|
|
1489
|
-
const f =
|
|
1490
|
-
if (
|
|
1491
|
-
const
|
|
1492
|
-
if (
|
|
1493
|
-
const
|
|
1494
|
-
var
|
|
1495
|
-
return `${
|
|
1496
|
-
},
|
|
1497
|
-
let
|
|
1498
|
-
for (const
|
|
1499
|
-
|
|
1500
|
-
|
|
1663
|
+
q || (q = await It(T, F ? null : d), F = !0);
|
|
1664
|
+
const f = o.id.replace(/[^A-Za-z0-9-]/g, ""), v = await Ot(T, q, { timeZone: s, day: u, arrival: { source: o.source, id: f } });
|
|
1665
|
+
if (p !== I) return;
|
|
1666
|
+
const b = ze(u);
|
|
1667
|
+
if (b) {
|
|
1668
|
+
const $ = (H) => {
|
|
1669
|
+
var ge;
|
|
1670
|
+
return `${H.source === "tock" ? "tock" : "commerce7"}:${String((ge = H.arr_id) != null ? ge : "")}`;
|
|
1671
|
+
}, oe = v.filter((H) => $(H) === o.key), G = [];
|
|
1672
|
+
let pe = !1;
|
|
1673
|
+
for (const H of b.rows)
|
|
1674
|
+
$(H) !== o.key ? G.push(H) : pe || (G.push(...oe), pe = !0);
|
|
1675
|
+
O.set(u, { rows: G, loadedAt: b.loadedAt, live: b.live });
|
|
1501
1676
|
}
|
|
1502
|
-
|
|
1677
|
+
E = null;
|
|
1503
1678
|
} catch (f) {
|
|
1504
|
-
if (
|
|
1505
|
-
|
|
1679
|
+
if (p !== I) return;
|
|
1680
|
+
E = { key: o.key, status: "failed", message: qe(ye(f)) };
|
|
1506
1681
|
}
|
|
1507
|
-
|
|
1682
|
+
w();
|
|
1508
1683
|
}
|
|
1509
|
-
async function
|
|
1510
|
-
var
|
|
1511
|
-
if (!
|
|
1512
|
-
const
|
|
1513
|
-
|
|
1514
|
-
const u = await
|
|
1515
|
-
|
|
1684
|
+
async function wn() {
|
|
1685
|
+
var p;
|
|
1686
|
+
if (!x || ((p = g.get(h)) == null ? void 0 : p.kind) === "pending") return;
|
|
1687
|
+
const o = h;
|
|
1688
|
+
g.set(o, { kind: "pending" }), w();
|
|
1689
|
+
const u = await Mn(or({ day: o, wineryName: y, tenantId: x, timeZone: s }), { title: ir, followUp: t.followUp });
|
|
1690
|
+
g.set(o, u), w();
|
|
1516
1691
|
}
|
|
1517
|
-
async function
|
|
1518
|
-
var u,
|
|
1519
|
-
!
|
|
1692
|
+
async function kn(o) {
|
|
1693
|
+
var u, p;
|
|
1694
|
+
!C || !o || o === x || (I += 1, x = o, y = (p = (u = _ == null ? void 0 : _.find((f) => f.tenantId === o)) == null ? void 0 : u.name) != null ? p : y, T = Le(C, o), O.clear(), j.clear(), Z.clear(), z = null, E = null, te = [], await Zt(m.adapter, jt, o), w(), await ie());
|
|
1520
1695
|
}
|
|
1521
|
-
async function
|
|
1522
|
-
var u,
|
|
1523
|
-
L = !0,
|
|
1524
|
-
const
|
|
1525
|
-
if (
|
|
1526
|
-
if (!
|
|
1527
|
-
L = !1,
|
|
1696
|
+
async function rt() {
|
|
1697
|
+
var u, p, f;
|
|
1698
|
+
L = !0, Q = null, w();
|
|
1699
|
+
const o = t.tenantId ? null : await Ft(m.adapter, jt);
|
|
1700
|
+
if (C = (u = t.callTool) != null ? u : await Tn(t.connectorName), !ue) {
|
|
1701
|
+
if (!C) {
|
|
1702
|
+
L = !1, x || (Q = Ae() === "claude" ? "Picking a winery needs the New Vintage connector. Add it in this chat, then reload the page." : "Ask in the chat which winery this page is for."), await nt(), w();
|
|
1528
1703
|
return;
|
|
1529
1704
|
}
|
|
1530
|
-
if (!
|
|
1705
|
+
if (!x) {
|
|
1531
1706
|
try {
|
|
1532
|
-
|
|
1533
|
-
} catch (
|
|
1534
|
-
L = !1,
|
|
1707
|
+
_ = await Gn(Le(C, null));
|
|
1708
|
+
} catch (b) {
|
|
1709
|
+
L = !1, Q = qe(ye(b)), w();
|
|
1535
1710
|
return;
|
|
1536
1711
|
}
|
|
1537
|
-
const
|
|
1538
|
-
if (!
|
|
1539
|
-
L = !1,
|
|
1712
|
+
const v = (p = _.find((b) => b.tenantId === o)) != null ? p : _.length === 1 ? _[0] : null;
|
|
1713
|
+
if (!v) {
|
|
1714
|
+
L = !1, Q = _.length ? null : "The New Vintage connector can't reach any winery for this account.", w();
|
|
1540
1715
|
return;
|
|
1541
1716
|
}
|
|
1542
|
-
|
|
1717
|
+
x = v.tenantId, y = (f = t.wineryName) != null ? f : v.name;
|
|
1543
1718
|
}
|
|
1544
|
-
|
|
1719
|
+
T = Le(C, x), await nt(), L = !1, await ie(), !ue && !ke && (ke = setInterval(() => void (X() && !Z.has(h) ? ie() : void 0), Jt));
|
|
1545
1720
|
}
|
|
1546
1721
|
}
|
|
1547
|
-
function
|
|
1548
|
-
const
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
},
|
|
1722
|
+
function at() {
|
|
1723
|
+
const o = 6e4 - n().getTime() % 6e4 + 50;
|
|
1724
|
+
Ce = setTimeout(() => {
|
|
1725
|
+
k = M().day, w(), at();
|
|
1726
|
+
}, o);
|
|
1552
1727
|
}
|
|
1553
|
-
return
|
|
1554
|
-
refresh: () =>
|
|
1728
|
+
return w(), at(), rt(), {
|
|
1729
|
+
refresh: () => X() ? ie() : Promise.resolve(),
|
|
1555
1730
|
destroy: () => {
|
|
1556
|
-
|
|
1731
|
+
ue = !0, Ce && clearTimeout(Ce), ke && clearInterval(ke), window.removeEventListener("resize", Ke), document.removeEventListener("keydown", Je), document.removeEventListener("mousedown", Qe), We.remove(), Ye.remove(), V.remove();
|
|
1557
1732
|
},
|
|
1558
1733
|
state: () => {
|
|
1559
|
-
var u,
|
|
1560
|
-
const
|
|
1561
|
-
return { day:
|
|
1734
|
+
var u, p;
|
|
1735
|
+
const o = de();
|
|
1736
|
+
return { day: h, tenantId: x, live: X(), selected: (p = (u = o.selected) == null ? void 0 : u.key) != null ? p : null, status: o.dayState.status };
|
|
1562
1737
|
}
|
|
1563
1738
|
};
|
|
1564
1739
|
}
|
|
1565
|
-
function
|
|
1740
|
+
function ta(e, t) {
|
|
1566
1741
|
const n = typeof e == "string" ? document.querySelector(e) : e;
|
|
1567
1742
|
if (!n) throw new Error(`NVGuestPrep: no element matches ${String(e)}`);
|
|
1568
|
-
return
|
|
1743
|
+
return Xr(n, t);
|
|
1569
1744
|
}
|
|
1570
1745
|
export {
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1746
|
+
he as DEFAULT_SETTINGS,
|
|
1747
|
+
ea as SECTION_IDS,
|
|
1748
|
+
en as SUPPORTED_TIME_ZONES,
|
|
1749
|
+
lr as VERSION,
|
|
1750
|
+
Pn as fillGuestPrepQuery,
|
|
1751
|
+
ta as mount,
|
|
1752
|
+
cr as pageSetup
|
|
1578
1753
|
};
|