kaafil-react-uikit 0.1.0-beta.1
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/CHANGELOG.md +70 -0
- package/LICENSE +21 -0
- package/README.md +187 -0
- package/dist/OfflineFallbackScreen-B5dfaJBN.d.ts +37 -0
- package/dist/OfflineFallbackScreen-Ctm7nBa-.d.cts +37 -0
- package/dist/SessionExpiredScreen-CytQNuak.d.cts +50 -0
- package/dist/SessionExpiredScreen-D8GHyZc3.d.ts +50 -0
- package/dist/admin/index.cjs +23779 -0
- package/dist/admin/index.cjs.map +1 -0
- package/dist/admin/index.d.cts +1157 -0
- package/dist/admin/index.d.ts +1157 -0
- package/dist/admin/index.js +23724 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/chunk-6FPAGGFL.js +6028 -0
- package/dist/chunk-6FPAGGFL.js.map +1 -0
- package/dist/chunk-ACVU55PZ.cjs +294 -0
- package/dist/chunk-ACVU55PZ.cjs.map +1 -0
- package/dist/chunk-EM7JV3D7.cjs +6051 -0
- package/dist/chunk-EM7JV3D7.cjs.map +1 -0
- package/dist/chunk-IIPQ4JNC.js +287 -0
- package/dist/chunk-IIPQ4JNC.js.map +1 -0
- package/dist/chunk-LL243STJ.cjs +2195 -0
- package/dist/chunk-LL243STJ.cjs.map +1 -0
- package/dist/chunk-PJRZCOFF.cjs +958 -0
- package/dist/chunk-PJRZCOFF.cjs.map +1 -0
- package/dist/chunk-PTQ2CJKE.cjs +40 -0
- package/dist/chunk-PTQ2CJKE.cjs.map +1 -0
- package/dist/chunk-PZKXLQSU.js +10 -0
- package/dist/chunk-PZKXLQSU.js.map +1 -0
- package/dist/chunk-QHUDOVKW.cjs +111 -0
- package/dist/chunk-QHUDOVKW.cjs.map +1 -0
- package/dist/chunk-TOBZFADB.cjs +12 -0
- package/dist/chunk-TOBZFADB.cjs.map +1 -0
- package/dist/chunk-UUGMNP27.js +936 -0
- package/dist/chunk-UUGMNP27.js.map +1 -0
- package/dist/chunk-UYJ6LIWP.js +2154 -0
- package/dist/chunk-UYJ6LIWP.js.map +1 -0
- package/dist/chunk-VHTSTUCJ.cjs +346 -0
- package/dist/chunk-VHTSTUCJ.cjs.map +1 -0
- package/dist/chunk-WUAFL77X.js +340 -0
- package/dist/chunk-WUAFL77X.js.map +1 -0
- package/dist/chunk-XI7MK4Y7.js +38 -0
- package/dist/chunk-XI7MK4Y7.js.map +1 -0
- package/dist/chunk-YDGR7JSY.js +107 -0
- package/dist/chunk-YDGR7JSY.js.map +1 -0
- package/dist/core/index.cjs +1254 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.cts +1267 -0
- package/dist/core/index.d.ts +1267 -0
- package/dist/core/index.js +995 -0
- package/dist/core/index.js.map +1 -0
- package/dist/index.css +1 -0
- package/dist/manager/index.cjs +13562 -0
- package/dist/manager/index.cjs.map +1 -0
- package/dist/manager/index.d.cts +1054 -0
- package/dist/manager/index.d.ts +1054 -0
- package/dist/manager/index.js +13518 -0
- package/dist/manager/index.js.map +1 -0
- package/dist/testing/index.cjs +221 -0
- package/dist/testing/index.cjs.map +1 -0
- package/dist/testing/index.d.cts +269 -0
- package/dist/testing/index.d.ts +269 -0
- package/dist/testing/index.js +208 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/tokenStyle-CToG5oOS.d.cts +3 -0
- package/dist/tokenStyle-CToG5oOS.d.ts +3 -0
- package/dist/traveller/index.cjs +1799 -0
- package/dist/traveller/index.cjs.map +1 -0
- package/dist/traveller/index.d.cts +58 -0
- package/dist/traveller/index.d.ts +58 -0
- package/dist/traveller/index.js +1789 -0
- package/dist/traveller/index.js.map +1 -0
- package/dist/useAgencyTrip-BUYSIaC2.d.cts +454 -0
- package/dist/useAgencyTrip-BzyJB1D9.d.ts +454 -0
- package/dist/useNotifications-BZW1Z_ur.d.cts +356 -0
- package/dist/useNotifications-D262i5BQ.d.ts +356 -0
- package/dist/useVendors-DXOuZWhZ.d.cts +784 -0
- package/dist/useVendors-DXOuZWhZ.d.ts +784 -0
- package/package.json +95 -0
|
@@ -0,0 +1,958 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkLL243STJ_cjs = require('./chunk-LL243STJ.cjs');
|
|
4
|
+
var chunkPTQ2CJKE_cjs = require('./chunk-PTQ2CJKE.cjs');
|
|
5
|
+
var chunkEM7JV3D7_cjs = require('./chunk-EM7JV3D7.cjs');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var client = require('kaafil-js/client');
|
|
8
|
+
|
|
9
|
+
function useAgencyAdminMe() {
|
|
10
|
+
const client = chunkEM7JV3D7_cjs.useKaafilClient();
|
|
11
|
+
const [result, setResult] = react.useState({ status: "loading" });
|
|
12
|
+
react.useEffect(() => {
|
|
13
|
+
let cancelled = false;
|
|
14
|
+
setResult({ status: "loading" });
|
|
15
|
+
client.agencyAdminMe.read().then((response) => {
|
|
16
|
+
if (cancelled) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
setResult({ status: "ready", agencyAdmin: response.agencyAdmin });
|
|
20
|
+
}).catch(() => {
|
|
21
|
+
if (!cancelled) {
|
|
22
|
+
setResult({ status: "error" });
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return () => {
|
|
26
|
+
cancelled = true;
|
|
27
|
+
};
|
|
28
|
+
}, [client]);
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
function useAgencyChecklistTemplates() {
|
|
32
|
+
const client = chunkEM7JV3D7_cjs.useKaafilClient();
|
|
33
|
+
const [templates, setTemplates] = react.useState([]);
|
|
34
|
+
const [loaded, setLoaded] = react.useState(false);
|
|
35
|
+
const [lastFetchFailed, setLastFetchFailed] = react.useState(false);
|
|
36
|
+
const refresh = react.useCallback(async () => {
|
|
37
|
+
try {
|
|
38
|
+
const response = await client.checklists.agencyTemplates.list({});
|
|
39
|
+
setTemplates(response.templates);
|
|
40
|
+
setLoaded(true);
|
|
41
|
+
setLastFetchFailed(false);
|
|
42
|
+
} catch {
|
|
43
|
+
setLastFetchFailed(true);
|
|
44
|
+
}
|
|
45
|
+
}, [client]);
|
|
46
|
+
react.useEffect(() => {
|
|
47
|
+
void refresh();
|
|
48
|
+
}, [refresh]);
|
|
49
|
+
const createTemplate = react.useCallback(
|
|
50
|
+
async (input) => {
|
|
51
|
+
const response = await client.checklists.agencyTemplates.create(input);
|
|
52
|
+
void refresh();
|
|
53
|
+
return response;
|
|
54
|
+
},
|
|
55
|
+
[client, refresh]
|
|
56
|
+
);
|
|
57
|
+
const patchTemplate = react.useCallback(
|
|
58
|
+
async (input) => {
|
|
59
|
+
const response = await client.checklists.agencyTemplates.patch(input);
|
|
60
|
+
void refresh();
|
|
61
|
+
return response;
|
|
62
|
+
},
|
|
63
|
+
[client, refresh]
|
|
64
|
+
);
|
|
65
|
+
const removeTemplate = react.useCallback(
|
|
66
|
+
async (input) => {
|
|
67
|
+
await client.checklists.agencyTemplates.remove(input);
|
|
68
|
+
void refresh();
|
|
69
|
+
},
|
|
70
|
+
[client, refresh]
|
|
71
|
+
);
|
|
72
|
+
const publishTemplate = react.useCallback(
|
|
73
|
+
async (input) => {
|
|
74
|
+
const response = await client.checklists.agencyTemplates.publish(input);
|
|
75
|
+
void refresh();
|
|
76
|
+
return response;
|
|
77
|
+
},
|
|
78
|
+
[client, refresh]
|
|
79
|
+
);
|
|
80
|
+
return {
|
|
81
|
+
templates,
|
|
82
|
+
loaded,
|
|
83
|
+
lastFetchFailed,
|
|
84
|
+
refresh,
|
|
85
|
+
createTemplate,
|
|
86
|
+
patchTemplate,
|
|
87
|
+
removeTemplate,
|
|
88
|
+
publishTemplate
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function useAgencyForms() {
|
|
92
|
+
const client = chunkEM7JV3D7_cjs.useKaafilClient();
|
|
93
|
+
const [forms, setForms] = react.useState([]);
|
|
94
|
+
const [loaded, setLoaded] = react.useState(false);
|
|
95
|
+
const [lastFetchFailed, setLastFetchFailed] = react.useState(false);
|
|
96
|
+
const refresh = react.useCallback(async () => {
|
|
97
|
+
try {
|
|
98
|
+
const response = await client.forms.list({});
|
|
99
|
+
setForms(response.items);
|
|
100
|
+
setLoaded(true);
|
|
101
|
+
setLastFetchFailed(false);
|
|
102
|
+
} catch {
|
|
103
|
+
setLastFetchFailed(true);
|
|
104
|
+
}
|
|
105
|
+
}, [client]);
|
|
106
|
+
react.useEffect(() => {
|
|
107
|
+
void refresh();
|
|
108
|
+
}, [refresh]);
|
|
109
|
+
const createForm = react.useCallback(
|
|
110
|
+
async (input) => {
|
|
111
|
+
const response = await client.forms.create(input);
|
|
112
|
+
void refresh();
|
|
113
|
+
return response;
|
|
114
|
+
},
|
|
115
|
+
[client, refresh]
|
|
116
|
+
);
|
|
117
|
+
const getForm = react.useCallback(
|
|
118
|
+
async (formId) => client.forms.get({ formId }),
|
|
119
|
+
[client]
|
|
120
|
+
);
|
|
121
|
+
const patchForm = react.useCallback(
|
|
122
|
+
async (input) => {
|
|
123
|
+
const response = await client.forms.patch(input);
|
|
124
|
+
void refresh();
|
|
125
|
+
return response;
|
|
126
|
+
},
|
|
127
|
+
[client, refresh]
|
|
128
|
+
);
|
|
129
|
+
const deleteForm = react.useCallback(
|
|
130
|
+
async (input) => {
|
|
131
|
+
await client.forms.delete(input);
|
|
132
|
+
void refresh();
|
|
133
|
+
},
|
|
134
|
+
[client, refresh]
|
|
135
|
+
);
|
|
136
|
+
const archiveForm = react.useCallback(
|
|
137
|
+
async (formId) => {
|
|
138
|
+
const response = await client.forms.archive({ formId });
|
|
139
|
+
void refresh();
|
|
140
|
+
return response;
|
|
141
|
+
},
|
|
142
|
+
[client, refresh]
|
|
143
|
+
);
|
|
144
|
+
const unarchiveForm = react.useCallback(
|
|
145
|
+
async (formId) => {
|
|
146
|
+
const response = await client.forms.unarchive({ formId });
|
|
147
|
+
void refresh();
|
|
148
|
+
return response;
|
|
149
|
+
},
|
|
150
|
+
[client, refresh]
|
|
151
|
+
);
|
|
152
|
+
const publishForm = react.useCallback(
|
|
153
|
+
async (formId) => {
|
|
154
|
+
const response = await client.forms.publish({ formId });
|
|
155
|
+
void refresh();
|
|
156
|
+
return response;
|
|
157
|
+
},
|
|
158
|
+
[client, refresh]
|
|
159
|
+
);
|
|
160
|
+
const closeForm = react.useCallback(
|
|
161
|
+
async (formId) => {
|
|
162
|
+
const response = await client.forms.close({ formId });
|
|
163
|
+
void refresh();
|
|
164
|
+
return response;
|
|
165
|
+
},
|
|
166
|
+
[client, refresh]
|
|
167
|
+
);
|
|
168
|
+
const reopenForm = react.useCallback(
|
|
169
|
+
async (formId) => {
|
|
170
|
+
const response = await client.forms.reopen({ formId });
|
|
171
|
+
void refresh();
|
|
172
|
+
return response;
|
|
173
|
+
},
|
|
174
|
+
[client, refresh]
|
|
175
|
+
);
|
|
176
|
+
const cloneForm = react.useCallback(
|
|
177
|
+
async (input) => {
|
|
178
|
+
const response = await client.forms.clone(input);
|
|
179
|
+
void refresh();
|
|
180
|
+
return response;
|
|
181
|
+
},
|
|
182
|
+
[client, refresh]
|
|
183
|
+
);
|
|
184
|
+
const reorderForm = react.useCallback(
|
|
185
|
+
async (input) => {
|
|
186
|
+
await client.forms.reorder(input);
|
|
187
|
+
},
|
|
188
|
+
[client]
|
|
189
|
+
);
|
|
190
|
+
const createSection = react.useCallback(
|
|
191
|
+
async (input) => client.forms.sections.create(input),
|
|
192
|
+
[client]
|
|
193
|
+
);
|
|
194
|
+
const patchSection = react.useCallback(
|
|
195
|
+
async (input) => client.forms.sections.patch(input),
|
|
196
|
+
[client]
|
|
197
|
+
);
|
|
198
|
+
const deleteSection = react.useCallback(
|
|
199
|
+
async (input) => {
|
|
200
|
+
await client.forms.sections.delete(input);
|
|
201
|
+
},
|
|
202
|
+
[client]
|
|
203
|
+
);
|
|
204
|
+
const createField = react.useCallback(
|
|
205
|
+
async (input) => client.forms.fields.create(input),
|
|
206
|
+
[client]
|
|
207
|
+
);
|
|
208
|
+
const patchField = react.useCallback(
|
|
209
|
+
async (input) => client.forms.fields.patch(input),
|
|
210
|
+
[client]
|
|
211
|
+
);
|
|
212
|
+
const deleteField = react.useCallback(
|
|
213
|
+
async (input) => {
|
|
214
|
+
await client.forms.fields.delete(input);
|
|
215
|
+
},
|
|
216
|
+
[client]
|
|
217
|
+
);
|
|
218
|
+
const listBindings = react.useCallback(async () => {
|
|
219
|
+
const response = await client.forms.bindings.list();
|
|
220
|
+
return response.items;
|
|
221
|
+
}, [client]);
|
|
222
|
+
return {
|
|
223
|
+
forms,
|
|
224
|
+
loaded,
|
|
225
|
+
lastFetchFailed,
|
|
226
|
+
refresh,
|
|
227
|
+
createForm,
|
|
228
|
+
getForm,
|
|
229
|
+
patchForm,
|
|
230
|
+
deleteForm,
|
|
231
|
+
archiveForm,
|
|
232
|
+
unarchiveForm,
|
|
233
|
+
publishForm,
|
|
234
|
+
closeForm,
|
|
235
|
+
reopenForm,
|
|
236
|
+
cloneForm,
|
|
237
|
+
reorderForm,
|
|
238
|
+
createSection,
|
|
239
|
+
patchSection,
|
|
240
|
+
deleteSection,
|
|
241
|
+
createField,
|
|
242
|
+
patchField,
|
|
243
|
+
deleteField,
|
|
244
|
+
listBindings
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
function useAgencyJourneyTriggers() {
|
|
248
|
+
const client = chunkEM7JV3D7_cjs.useKaafilClient();
|
|
249
|
+
const [triggers, setTriggers] = react.useState([]);
|
|
250
|
+
const [loaded, setLoaded] = react.useState(false);
|
|
251
|
+
const [lastFetchFailed, setLastFetchFailed] = react.useState(false);
|
|
252
|
+
const refresh = react.useCallback(async () => {
|
|
253
|
+
try {
|
|
254
|
+
const response = await client.journey.triggers.list({});
|
|
255
|
+
setTriggers(response);
|
|
256
|
+
setLoaded(true);
|
|
257
|
+
setLastFetchFailed(false);
|
|
258
|
+
} catch {
|
|
259
|
+
setLastFetchFailed(true);
|
|
260
|
+
}
|
|
261
|
+
}, [client]);
|
|
262
|
+
react.useEffect(() => {
|
|
263
|
+
void refresh();
|
|
264
|
+
}, [refresh]);
|
|
265
|
+
const patchTrigger = react.useCallback(
|
|
266
|
+
async (input) => {
|
|
267
|
+
const response = await client.journey.triggers.patch(input);
|
|
268
|
+
void refresh();
|
|
269
|
+
return response;
|
|
270
|
+
},
|
|
271
|
+
[client, refresh]
|
|
272
|
+
);
|
|
273
|
+
return { triggers, loaded, lastFetchFailed, refresh, patchTrigger };
|
|
274
|
+
}
|
|
275
|
+
function useAgencyManagerProfile(managerRef) {
|
|
276
|
+
const client = chunkEM7JV3D7_cjs.useKaafilClient();
|
|
277
|
+
const [read, setRead] = react.useState(void 0);
|
|
278
|
+
const [readFailed, setReadFailed] = react.useState(false);
|
|
279
|
+
const refresh = react.useCallback(async () => {
|
|
280
|
+
try {
|
|
281
|
+
const response = await client.agencies.managers.get({ managerRef });
|
|
282
|
+
setRead(response);
|
|
283
|
+
setReadFailed(false);
|
|
284
|
+
} catch {
|
|
285
|
+
setReadFailed(true);
|
|
286
|
+
}
|
|
287
|
+
}, [client, managerRef]);
|
|
288
|
+
react.useEffect(() => {
|
|
289
|
+
void refresh();
|
|
290
|
+
}, [refresh]);
|
|
291
|
+
return { read, readFailed, refresh };
|
|
292
|
+
}
|
|
293
|
+
function useAgencySettings() {
|
|
294
|
+
const client = chunkEM7JV3D7_cjs.useKaafilClient();
|
|
295
|
+
const [document, setDocument] = react.useState(void 0);
|
|
296
|
+
const [loaded, setLoaded] = react.useState(false);
|
|
297
|
+
const [lastFetchFailed, setLastFetchFailed] = react.useState(false);
|
|
298
|
+
const refresh = react.useCallback(async () => {
|
|
299
|
+
try {
|
|
300
|
+
const response = await client.agencies.settings.get({});
|
|
301
|
+
setDocument(response);
|
|
302
|
+
setLoaded(true);
|
|
303
|
+
setLastFetchFailed(false);
|
|
304
|
+
} catch {
|
|
305
|
+
setLastFetchFailed(true);
|
|
306
|
+
}
|
|
307
|
+
}, [client]);
|
|
308
|
+
react.useEffect(() => {
|
|
309
|
+
void refresh();
|
|
310
|
+
}, [refresh]);
|
|
311
|
+
const patchSettings = react.useCallback(
|
|
312
|
+
async (input) => {
|
|
313
|
+
const response = await client.agencies.settings.patch(input);
|
|
314
|
+
void refresh();
|
|
315
|
+
return response;
|
|
316
|
+
},
|
|
317
|
+
[client, refresh]
|
|
318
|
+
);
|
|
319
|
+
return { document, loaded, lastFetchFailed, refresh, patchSettings };
|
|
320
|
+
}
|
|
321
|
+
function useAgencyTrip(tripRef) {
|
|
322
|
+
const client = chunkEM7JV3D7_cjs.useKaafilClient();
|
|
323
|
+
const [read, setRead] = react.useState(void 0);
|
|
324
|
+
const [readFailed, setReadFailed] = react.useState(false);
|
|
325
|
+
const refresh = react.useCallback(async () => {
|
|
326
|
+
try {
|
|
327
|
+
const response = await client.agencies.trips.get({ tripRef });
|
|
328
|
+
setRead(response);
|
|
329
|
+
setReadFailed(false);
|
|
330
|
+
} catch {
|
|
331
|
+
setReadFailed(true);
|
|
332
|
+
}
|
|
333
|
+
}, [client, tripRef]);
|
|
334
|
+
react.useEffect(() => {
|
|
335
|
+
void refresh();
|
|
336
|
+
}, [refresh]);
|
|
337
|
+
return { read, readFailed, refresh };
|
|
338
|
+
}
|
|
339
|
+
var DEFAULT_PAGE_LIMIT = 20;
|
|
340
|
+
var GROUPED_PAGE_LIMIT = 200;
|
|
341
|
+
function useAgencyTripManifest(tripRef) {
|
|
342
|
+
const client = chunkEM7JV3D7_cjs.useKaafilClient();
|
|
343
|
+
const [facets, setFacets] = react.useState(void 0);
|
|
344
|
+
const mountedRef = react.useRef(true);
|
|
345
|
+
react.useEffect(() => {
|
|
346
|
+
mountedRef.current = true;
|
|
347
|
+
return () => {
|
|
348
|
+
mountedRef.current = false;
|
|
349
|
+
};
|
|
350
|
+
}, []);
|
|
351
|
+
const makeManifestFetch = react.useCallback(
|
|
352
|
+
(filters, pageSize) => async (cursor) => {
|
|
353
|
+
const page = await client.agencies.trips.manifest.listPage({
|
|
354
|
+
tripRef,
|
|
355
|
+
...filters,
|
|
356
|
+
cursor,
|
|
357
|
+
limit: pageSize ?? DEFAULT_PAGE_LIMIT
|
|
358
|
+
});
|
|
359
|
+
if (mountedRef.current) {
|
|
360
|
+
setFacets(page.facets);
|
|
361
|
+
}
|
|
362
|
+
return {
|
|
363
|
+
rows: page,
|
|
364
|
+
nextCursor: page.meta.page.hasNext ? page.meta.page.cursor ?? void 0 : void 0
|
|
365
|
+
};
|
|
366
|
+
},
|
|
367
|
+
[client, tripRef]
|
|
368
|
+
);
|
|
369
|
+
return { makeManifestFetch, facets, groupedPageSize: GROUPED_PAGE_LIMIT };
|
|
370
|
+
}
|
|
371
|
+
var DEFAULT_PAGE_LIMIT2 = 20;
|
|
372
|
+
function useAgencyTrips() {
|
|
373
|
+
const client = chunkEM7JV3D7_cjs.useKaafilClient();
|
|
374
|
+
const [segmentCounts, setSegmentCounts] = react.useState(
|
|
375
|
+
void 0
|
|
376
|
+
);
|
|
377
|
+
const mountedRef = react.useRef(true);
|
|
378
|
+
react.useEffect(() => {
|
|
379
|
+
mountedRef.current = true;
|
|
380
|
+
return () => {
|
|
381
|
+
mountedRef.current = false;
|
|
382
|
+
};
|
|
383
|
+
}, []);
|
|
384
|
+
const makeTripsFetch = react.useCallback(
|
|
385
|
+
(filters) => async (cursor) => {
|
|
386
|
+
const page = await client.agencies.trips.listPage({
|
|
387
|
+
...filters,
|
|
388
|
+
cursor,
|
|
389
|
+
limit: DEFAULT_PAGE_LIMIT2
|
|
390
|
+
});
|
|
391
|
+
if (mountedRef.current) {
|
|
392
|
+
setSegmentCounts(page.facets.segments);
|
|
393
|
+
}
|
|
394
|
+
return {
|
|
395
|
+
rows: page,
|
|
396
|
+
nextCursor: page.meta.page.hasNext ? page.meta.page.cursor ?? void 0 : void 0
|
|
397
|
+
};
|
|
398
|
+
},
|
|
399
|
+
[client]
|
|
400
|
+
);
|
|
401
|
+
return { makeTripsFetch, segmentCounts };
|
|
402
|
+
}
|
|
403
|
+
var useBookingsInternal = chunkLL243STJ_cjs.createDomainHook("bookings", (tripRef) => {
|
|
404
|
+
const {
|
|
405
|
+
rows: bookings,
|
|
406
|
+
syncedAt,
|
|
407
|
+
refreshLive
|
|
408
|
+
} = chunkLL243STJ_cjs.useSnapshotList(tripRef, "bookings", {
|
|
409
|
+
live: async (liveClient, ref) => {
|
|
410
|
+
const response = await liveClient.bookings.list({ tripRef: ref });
|
|
411
|
+
return { rows: [...response], syncedAt: response.meta.serverTime };
|
|
412
|
+
}
|
|
413
|
+
});
|
|
414
|
+
const vouchersMutation = chunkEM7JV3D7_cjs.useOfflineMutation({
|
|
415
|
+
tripRef,
|
|
416
|
+
enqueue: (engine, input) => engine.enqueue({
|
|
417
|
+
tripRef,
|
|
418
|
+
method: client.SyncOpMethod.Patch,
|
|
419
|
+
path: `/api/v1/trips/${tripRef}/bookings/${input.bookingRef}/vouchers`,
|
|
420
|
+
// Hardcoded literal, not imported: `OperationId` is not exported from
|
|
421
|
+
// `kaafil-js/client`'s public surface (the reasoning `useRooming.ts`
|
|
422
|
+
// documents). Verified against `kaafil-js/src/generated/security.ts`:
|
|
423
|
+
// `OperationId.ReplaceBookingVouchers === 'replaceBookingVouchers'`.
|
|
424
|
+
operationId: "replaceBookingVouchers",
|
|
425
|
+
body: { voucherFileKeys: [...input.voucherFileKeys] }
|
|
426
|
+
}),
|
|
427
|
+
// THE DESK LANE, and the only lane that matters in practice: filing a
|
|
428
|
+
// voucher is desk work and a desk console mounts no `OfflineShell`. The
|
|
429
|
+
// outbox lane above exists because this hook cannot know which shell it
|
|
430
|
+
// is under, not because a manager can call this route — they cannot.
|
|
431
|
+
direct: (liveClient, input) => liveClient.bookings.vouchers.replace({
|
|
432
|
+
tripRef,
|
|
433
|
+
bookingRef: input.bookingRef,
|
|
434
|
+
voucherFileKeys: [...input.voucherFileKeys]
|
|
435
|
+
})
|
|
436
|
+
});
|
|
437
|
+
const mutate = vouchersMutation.mutate;
|
|
438
|
+
const replaceVouchers = react.useCallback(
|
|
439
|
+
async (input) => {
|
|
440
|
+
await mutate(input);
|
|
441
|
+
await refreshLive();
|
|
442
|
+
},
|
|
443
|
+
[mutate, refreshLive]
|
|
444
|
+
);
|
|
445
|
+
return { bookings, syncedAt, refreshLive, replaceVouchers };
|
|
446
|
+
});
|
|
447
|
+
function useBookings(tripRef) {
|
|
448
|
+
return useBookingsInternal(tripRef);
|
|
449
|
+
}
|
|
450
|
+
function useCapabilityStatuses(tripRef) {
|
|
451
|
+
const { rows, loaded } = chunkEM7JV3D7_cjs.useCapabilityRows(tripRef);
|
|
452
|
+
const statuses = react.useMemo(() => {
|
|
453
|
+
const map = /* @__PURE__ */ new Map();
|
|
454
|
+
for (const row of rows) map.set(row.capability, chunkEM7JV3D7_cjs.deriveCapabilityTriple(row).status);
|
|
455
|
+
return map;
|
|
456
|
+
}, [rows]);
|
|
457
|
+
return { statuses, loaded };
|
|
458
|
+
}
|
|
459
|
+
var DEFAULT_PAGE_LIMIT3 = 20;
|
|
460
|
+
var DirectoriesWriteError = class _DirectoriesWriteError extends Error {
|
|
461
|
+
classification;
|
|
462
|
+
constructor(classification) {
|
|
463
|
+
super(
|
|
464
|
+
classification.cause instanceof Error ? classification.cause.message : "The directory write failed."
|
|
465
|
+
);
|
|
466
|
+
this.name = "DirectoriesWriteError";
|
|
467
|
+
Object.setPrototypeOf(this, _DirectoriesWriteError.prototype);
|
|
468
|
+
this.classification = classification;
|
|
469
|
+
}
|
|
470
|
+
};
|
|
471
|
+
function useDirectories(agencyRef) {
|
|
472
|
+
const client = chunkEM7JV3D7_cjs.useKaafilClient();
|
|
473
|
+
const serverTime = chunkPTQ2CJKE_cjs.useServerTime();
|
|
474
|
+
const makeManagersFetch = react.useCallback(
|
|
475
|
+
(filters) => async (cursor) => {
|
|
476
|
+
const page = await client.agencies.managers.listPage({
|
|
477
|
+
...filters,
|
|
478
|
+
cursor,
|
|
479
|
+
limit: DEFAULT_PAGE_LIMIT3
|
|
480
|
+
});
|
|
481
|
+
return {
|
|
482
|
+
rows: page,
|
|
483
|
+
nextCursor: page.meta.page.hasNext ? page.meta.page.cursor ?? void 0 : void 0
|
|
484
|
+
};
|
|
485
|
+
},
|
|
486
|
+
[client]
|
|
487
|
+
);
|
|
488
|
+
const makeTravellersFetch = react.useCallback(
|
|
489
|
+
(filters) => async (cursor) => {
|
|
490
|
+
const page = await client.travellers.listForAgencyPage({
|
|
491
|
+
...filters,
|
|
492
|
+
cursor,
|
|
493
|
+
limit: DEFAULT_PAGE_LIMIT3
|
|
494
|
+
});
|
|
495
|
+
return {
|
|
496
|
+
rows: page,
|
|
497
|
+
nextCursor: page.meta.page.hasNext ? page.meta.page.cursor ?? void 0 : void 0
|
|
498
|
+
};
|
|
499
|
+
},
|
|
500
|
+
[client]
|
|
501
|
+
);
|
|
502
|
+
const listTripManifest = react.useCallback(
|
|
503
|
+
async (tripRef) => {
|
|
504
|
+
const response = await client.travellers.listForTrip({ tripRef });
|
|
505
|
+
return response;
|
|
506
|
+
},
|
|
507
|
+
[client]
|
|
508
|
+
);
|
|
509
|
+
const promoteManager = react.useCallback(
|
|
510
|
+
async (input) => {
|
|
511
|
+
try {
|
|
512
|
+
return await client.trips.managers.patch({
|
|
513
|
+
tripRef: input.tripRef,
|
|
514
|
+
managerRef: input.managerRef,
|
|
515
|
+
version: input.version,
|
|
516
|
+
role: input.role,
|
|
517
|
+
isLead: input.isLead
|
|
518
|
+
});
|
|
519
|
+
} catch (error) {
|
|
520
|
+
throw new DirectoriesWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
521
|
+
}
|
|
522
|
+
},
|
|
523
|
+
[client]
|
|
524
|
+
);
|
|
525
|
+
const assignManager = react.useCallback(
|
|
526
|
+
async (input) => {
|
|
527
|
+
try {
|
|
528
|
+
await client.trips.managers.assign({
|
|
529
|
+
tripRef: input.tripRef,
|
|
530
|
+
managerRef: input.managerRef,
|
|
531
|
+
...input.role === void 0 ? {} : { role: input.role },
|
|
532
|
+
...input.isLead === void 0 ? {} : { isLead: input.isLead }
|
|
533
|
+
});
|
|
534
|
+
} catch (error) {
|
|
535
|
+
throw new DirectoriesWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
536
|
+
}
|
|
537
|
+
},
|
|
538
|
+
[client]
|
|
539
|
+
);
|
|
540
|
+
const unassignManager = react.useCallback(
|
|
541
|
+
async (input) => {
|
|
542
|
+
try {
|
|
543
|
+
await client.trips.managers.unassign({
|
|
544
|
+
tripRef: input.tripRef,
|
|
545
|
+
managerRef: input.managerRef
|
|
546
|
+
});
|
|
547
|
+
} catch (error) {
|
|
548
|
+
throw new DirectoriesWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
549
|
+
}
|
|
550
|
+
},
|
|
551
|
+
[client]
|
|
552
|
+
);
|
|
553
|
+
const addTraveller = react.useCallback(
|
|
554
|
+
async (input) => {
|
|
555
|
+
try {
|
|
556
|
+
const response = await client.trips.travellers.pushManifest({
|
|
557
|
+
tripRef: input.tripRef,
|
|
558
|
+
travellers: [
|
|
559
|
+
{
|
|
560
|
+
externalTravellerId: input.externalTravellerId,
|
|
561
|
+
fullName: input.fullName,
|
|
562
|
+
phone: input.phone,
|
|
563
|
+
sourceUpdatedAt: serverTime.now()
|
|
564
|
+
}
|
|
565
|
+
]
|
|
566
|
+
});
|
|
567
|
+
const item = response.items.find(
|
|
568
|
+
(entry) => entry.externalTravellerId === input.externalTravellerId
|
|
569
|
+
);
|
|
570
|
+
if (item === void 0 || item.verdict !== "applied") {
|
|
571
|
+
throw new DirectoriesWriteError({
|
|
572
|
+
path: "surface-to-user",
|
|
573
|
+
code: item?.verdict === "rejected" ? "BUSINESS_RULE_VIOLATION" : void 0,
|
|
574
|
+
status: void 0,
|
|
575
|
+
unsatisfiableScheme: false,
|
|
576
|
+
cause: void 0
|
|
577
|
+
});
|
|
578
|
+
}
|
|
579
|
+
return item.externalTravellerId;
|
|
580
|
+
} catch (error) {
|
|
581
|
+
if (error instanceof DirectoriesWriteError) {
|
|
582
|
+
throw error;
|
|
583
|
+
}
|
|
584
|
+
throw new DirectoriesWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
585
|
+
}
|
|
586
|
+
},
|
|
587
|
+
[client, serverTime]
|
|
588
|
+
);
|
|
589
|
+
const createAgencyTraveller = react.useCallback(
|
|
590
|
+
async (input) => {
|
|
591
|
+
try {
|
|
592
|
+
return await client.travellers.create({
|
|
593
|
+
fullName: input.fullName,
|
|
594
|
+
phone: input.phone,
|
|
595
|
+
email: input.email,
|
|
596
|
+
locale: input.locale,
|
|
597
|
+
externalTravellerId: input.externalTravellerId
|
|
598
|
+
});
|
|
599
|
+
} catch (error) {
|
|
600
|
+
throw new DirectoriesWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
601
|
+
}
|
|
602
|
+
},
|
|
603
|
+
[client]
|
|
604
|
+
);
|
|
605
|
+
const removeFromManifest = react.useCallback(
|
|
606
|
+
async (input) => {
|
|
607
|
+
try {
|
|
608
|
+
await client.trips.travellers.remove({
|
|
609
|
+
tripRef: input.tripRef,
|
|
610
|
+
travellerRef: input.travellerRef
|
|
611
|
+
});
|
|
612
|
+
} catch (error) {
|
|
613
|
+
throw new DirectoriesWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
614
|
+
}
|
|
615
|
+
},
|
|
616
|
+
[client]
|
|
617
|
+
);
|
|
618
|
+
const createParty = react.useCallback(
|
|
619
|
+
async (input) => {
|
|
620
|
+
try {
|
|
621
|
+
return await client.trips.parties.add({
|
|
622
|
+
tripRef: input.tripRef,
|
|
623
|
+
kind: input.kind,
|
|
624
|
+
...input.label !== void 0 ? { label: input.label } : {},
|
|
625
|
+
travellerRefs: [...input.travellerRefs]
|
|
626
|
+
});
|
|
627
|
+
} catch (error) {
|
|
628
|
+
throw new DirectoriesWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
629
|
+
}
|
|
630
|
+
},
|
|
631
|
+
[client]
|
|
632
|
+
);
|
|
633
|
+
const patchParty = react.useCallback(
|
|
634
|
+
async (input) => {
|
|
635
|
+
try {
|
|
636
|
+
return await client.trips.parties.patch({
|
|
637
|
+
tripRef: input.tripRef,
|
|
638
|
+
partyId: input.partyId,
|
|
639
|
+
version: input.version,
|
|
640
|
+
...input.kind !== void 0 ? { kind: input.kind } : {},
|
|
641
|
+
...input.label !== void 0 ? { label: input.label } : {},
|
|
642
|
+
...input.travellerRefs !== void 0 ? { travellerRefs: [...input.travellerRefs] } : {}
|
|
643
|
+
});
|
|
644
|
+
} catch (error) {
|
|
645
|
+
throw new DirectoriesWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
646
|
+
}
|
|
647
|
+
},
|
|
648
|
+
[client]
|
|
649
|
+
);
|
|
650
|
+
const deleteParty = react.useCallback(
|
|
651
|
+
async (input) => {
|
|
652
|
+
try {
|
|
653
|
+
await client.trips.parties.remove({ tripRef: input.tripRef, partyId: input.partyId });
|
|
654
|
+
} catch (error) {
|
|
655
|
+
throw new DirectoriesWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
656
|
+
}
|
|
657
|
+
},
|
|
658
|
+
[client]
|
|
659
|
+
);
|
|
660
|
+
const addTravellerNote = react.useCallback(
|
|
661
|
+
async (input) => {
|
|
662
|
+
try {
|
|
663
|
+
await client.travellers.addNote({
|
|
664
|
+
tripRef: input.tripRef,
|
|
665
|
+
travellerRef: input.travellerRef,
|
|
666
|
+
body: input.body
|
|
667
|
+
});
|
|
668
|
+
} catch (error) {
|
|
669
|
+
throw new DirectoriesWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
670
|
+
}
|
|
671
|
+
},
|
|
672
|
+
[client]
|
|
673
|
+
);
|
|
674
|
+
return {
|
|
675
|
+
makeManagersFetch,
|
|
676
|
+
makeTravellersFetch,
|
|
677
|
+
listTripManifest,
|
|
678
|
+
promoteManager,
|
|
679
|
+
assignManager,
|
|
680
|
+
unassignManager,
|
|
681
|
+
addTraveller,
|
|
682
|
+
createAgencyTraveller,
|
|
683
|
+
removeFromManifest,
|
|
684
|
+
createParty,
|
|
685
|
+
patchParty,
|
|
686
|
+
deleteParty,
|
|
687
|
+
addTravellerNote
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
function usePaginatedList(fetch, options) {
|
|
691
|
+
const [rows, setRows] = react.useState([]);
|
|
692
|
+
const [hasNext, setHasNext] = react.useState(false);
|
|
693
|
+
const [pageIndex, setPageIndex] = react.useState(0);
|
|
694
|
+
const fetchRef = react.useRef(fetch);
|
|
695
|
+
fetchRef.current = fetch;
|
|
696
|
+
const cursorsRef = react.useRef([void 0]);
|
|
697
|
+
const loadPage = react.useCallback(async (index) => {
|
|
698
|
+
const cursor = cursorsRef.current[index];
|
|
699
|
+
const result = await fetchRef.current(cursor);
|
|
700
|
+
cursorsRef.current = cursorsRef.current.slice(0, index + 1);
|
|
701
|
+
if (result.nextCursor !== void 0) {
|
|
702
|
+
cursorsRef.current[index + 1] = result.nextCursor;
|
|
703
|
+
}
|
|
704
|
+
setRows(result.rows);
|
|
705
|
+
setHasNext(result.nextCursor !== void 0);
|
|
706
|
+
setPageIndex(index);
|
|
707
|
+
}, []);
|
|
708
|
+
react.useEffect(() => {
|
|
709
|
+
void loadPage(0);
|
|
710
|
+
}, [loadPage]);
|
|
711
|
+
const loadNext = react.useCallback(async () => {
|
|
712
|
+
if (!hasNext) {
|
|
713
|
+
return;
|
|
714
|
+
}
|
|
715
|
+
await loadPage(pageIndex + 1);
|
|
716
|
+
}, [hasNext, pageIndex, loadPage]);
|
|
717
|
+
const loadPrev = react.useCallback(async () => {
|
|
718
|
+
if (pageIndex === 0) {
|
|
719
|
+
return;
|
|
720
|
+
}
|
|
721
|
+
await loadPage(pageIndex - 1);
|
|
722
|
+
}, [pageIndex, loadPage]);
|
|
723
|
+
return { rows, hasNext, hasPrev: pageIndex > 0, loadNext, loadPrev };
|
|
724
|
+
}
|
|
725
|
+
var SHARE_SECTION_KEYS = [
|
|
726
|
+
"itinerary",
|
|
727
|
+
"rooming",
|
|
728
|
+
"seating",
|
|
729
|
+
"checklists",
|
|
730
|
+
"pickup",
|
|
731
|
+
"accommodation",
|
|
732
|
+
"transport",
|
|
733
|
+
"activities",
|
|
734
|
+
"documents",
|
|
735
|
+
"money",
|
|
736
|
+
"managerContact",
|
|
737
|
+
"agencyContact",
|
|
738
|
+
"household",
|
|
739
|
+
"forms"
|
|
740
|
+
];
|
|
741
|
+
function familySafeSections(isFamilyLink) {
|
|
742
|
+
return isFamilyLink ? SHARE_SECTION_KEYS.filter((key) => key !== "money") : SHARE_SECTION_KEYS;
|
|
743
|
+
}
|
|
744
|
+
var ShareLinkWriteError = class extends Error {
|
|
745
|
+
classification;
|
|
746
|
+
constructor(classification) {
|
|
747
|
+
super("Share-link write failed");
|
|
748
|
+
this.name = "ShareLinkWriteError";
|
|
749
|
+
this.classification = classification;
|
|
750
|
+
}
|
|
751
|
+
};
|
|
752
|
+
function useShareLinks(tripRef, travellerRef) {
|
|
753
|
+
const client = chunkEM7JV3D7_cjs.useKaafilClient();
|
|
754
|
+
const [links, setLinks] = react.useState(void 0);
|
|
755
|
+
const [readFailed, setReadFailed] = react.useState(false);
|
|
756
|
+
const refresh = react.useCallback(async () => {
|
|
757
|
+
try {
|
|
758
|
+
const response = await client.shareTokens.list({
|
|
759
|
+
tripRef,
|
|
760
|
+
...travellerRef !== null ? { travellerRef } : {}
|
|
761
|
+
});
|
|
762
|
+
setLinks(response);
|
|
763
|
+
setReadFailed(false);
|
|
764
|
+
} catch (error) {
|
|
765
|
+
setReadFailed(true);
|
|
766
|
+
}
|
|
767
|
+
}, [client, tripRef, travellerRef]);
|
|
768
|
+
react.useEffect(() => {
|
|
769
|
+
void refresh();
|
|
770
|
+
}, [refresh]);
|
|
771
|
+
const mint = react.useCallback(
|
|
772
|
+
async (input) => {
|
|
773
|
+
try {
|
|
774
|
+
const minted = await client.shareTokens.create({
|
|
775
|
+
tripRef,
|
|
776
|
+
...input.travellerRef !== void 0 ? { travellerRef: input.travellerRef } : {},
|
|
777
|
+
...input.sections !== void 0 ? { config: { sections: input.sections } } : {},
|
|
778
|
+
...input.ttlDays !== void 0 ? { ttlDays: input.ttlDays } : {},
|
|
779
|
+
...input.expiresAt !== void 0 ? { expiresAt: input.expiresAt } : {}
|
|
780
|
+
});
|
|
781
|
+
await refresh();
|
|
782
|
+
return minted;
|
|
783
|
+
} catch (error) {
|
|
784
|
+
throw new ShareLinkWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
785
|
+
}
|
|
786
|
+
},
|
|
787
|
+
[client, tripRef, refresh]
|
|
788
|
+
);
|
|
789
|
+
const revoke = react.useCallback(
|
|
790
|
+
async (id) => {
|
|
791
|
+
try {
|
|
792
|
+
await client.shareTokens.revoke({ id });
|
|
793
|
+
await refresh();
|
|
794
|
+
} catch (error) {
|
|
795
|
+
throw new ShareLinkWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
796
|
+
}
|
|
797
|
+
},
|
|
798
|
+
[client, refresh]
|
|
799
|
+
);
|
|
800
|
+
const patch = react.useCallback(
|
|
801
|
+
async (input) => {
|
|
802
|
+
try {
|
|
803
|
+
await client.shareTokens.patch({
|
|
804
|
+
id: input.id,
|
|
805
|
+
version: input.version,
|
|
806
|
+
...input.sections !== void 0 ? { config: { sections: input.sections } } : {},
|
|
807
|
+
...input.expiresAt !== void 0 ? { expiresAt: input.expiresAt } : {}
|
|
808
|
+
});
|
|
809
|
+
await refresh();
|
|
810
|
+
} catch (error) {
|
|
811
|
+
throw new ShareLinkWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
812
|
+
}
|
|
813
|
+
},
|
|
814
|
+
[client, refresh]
|
|
815
|
+
);
|
|
816
|
+
const regenerate = react.useCallback(
|
|
817
|
+
async (id) => {
|
|
818
|
+
try {
|
|
819
|
+
const minted = await client.shareTokens.regenerate({ id });
|
|
820
|
+
await refresh();
|
|
821
|
+
return minted;
|
|
822
|
+
} catch (error) {
|
|
823
|
+
throw new ShareLinkWriteError(chunkLL243STJ_cjs.classifyError(error));
|
|
824
|
+
}
|
|
825
|
+
},
|
|
826
|
+
[client, refresh]
|
|
827
|
+
);
|
|
828
|
+
return { links, readFailed, refresh, mint, revoke, patch, regenerate };
|
|
829
|
+
}
|
|
830
|
+
function useTravellerFormResponses(tripRef, travellerRef) {
|
|
831
|
+
const client = chunkEM7JV3D7_cjs.useKaafilClient();
|
|
832
|
+
const [responses, setResponses] = react.useState(
|
|
833
|
+
void 0
|
|
834
|
+
);
|
|
835
|
+
const [readFailed, setReadFailed] = react.useState(false);
|
|
836
|
+
const refresh = react.useCallback(async () => {
|
|
837
|
+
if (travellerRef === null) {
|
|
838
|
+
setResponses(void 0);
|
|
839
|
+
setReadFailed(false);
|
|
840
|
+
return;
|
|
841
|
+
}
|
|
842
|
+
try {
|
|
843
|
+
const response = await client.forms.trip.travellerResponses.list({ tripRef, travellerRef });
|
|
844
|
+
setResponses(response.items);
|
|
845
|
+
setReadFailed(false);
|
|
846
|
+
} catch {
|
|
847
|
+
setReadFailed(true);
|
|
848
|
+
}
|
|
849
|
+
}, [client, tripRef, travellerRef]);
|
|
850
|
+
react.useEffect(() => {
|
|
851
|
+
void refresh();
|
|
852
|
+
}, [refresh]);
|
|
853
|
+
return { responses, readFailed, refresh };
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
// src/core/routing/deepLinks.ts
|
|
857
|
+
var CLOSEOUT_ACTION_TAB = {
|
|
858
|
+
open_collections: "payments",
|
|
859
|
+
open_expenses: "expenses",
|
|
860
|
+
open_float: "float",
|
|
861
|
+
open_checklist: "checklist",
|
|
862
|
+
open_mandatory_checklist: "checklist",
|
|
863
|
+
open_forms: "forms",
|
|
864
|
+
open_rooming: "rooming",
|
|
865
|
+
open_seating: "vehicles",
|
|
866
|
+
open_pickups: "pickups",
|
|
867
|
+
open_itinerary: "itinerary",
|
|
868
|
+
open_past_itinerary: "itinerary",
|
|
869
|
+
open_vendors: "vendors"
|
|
870
|
+
};
|
|
871
|
+
var BLOCKER_PRESET_FILTER = {
|
|
872
|
+
balance_due: "outstanding",
|
|
873
|
+
missing_receipt: "missing-receipt",
|
|
874
|
+
open_mandatory_checklist: "open-mandatory",
|
|
875
|
+
required_form_gap: "outstanding-respondents",
|
|
876
|
+
unassigned_rooming: "unassigned",
|
|
877
|
+
// Mirrors `unassigned_rooming` — the spec gives seating the identical
|
|
878
|
+
// arrival contract, pointed at the seating pool instead of the bed pool.
|
|
879
|
+
unseated_travellers: "unassigned"
|
|
880
|
+
// DELIBERATELY ABSENT, each for its own reason:
|
|
881
|
+
// `float_not_returned`, `pickup_no_show`, `open_past_itinerary` — these
|
|
882
|
+
// arrive by `highlightId` on a single row, not by narrowing a list.
|
|
883
|
+
// `reimbursements_pending` — see this map's header; filtering the
|
|
884
|
+
// expense ledger to missing receipts would be actively wrong here.
|
|
885
|
+
// `unrated_vendors` — see `resolveBlockerDeepLink`.
|
|
886
|
+
};
|
|
887
|
+
function resolveBlockerDeepLink(input) {
|
|
888
|
+
const tab = CLOSEOUT_ACTION_TAB[input.actionKey];
|
|
889
|
+
if (tab === void 0) return null;
|
|
890
|
+
const presetFilter = input.key === void 0 ? void 0 : BLOCKER_PRESET_FILTER[input.key];
|
|
891
|
+
return {
|
|
892
|
+
tab,
|
|
893
|
+
...presetFilter !== void 0 ? { presetFilter } : {},
|
|
894
|
+
...input.highlightId !== void 0 ? { highlightId: input.highlightId } : {}
|
|
895
|
+
};
|
|
896
|
+
}
|
|
897
|
+
var PARAM_TAB = "kfTab";
|
|
898
|
+
var PARAM_HIGHLIGHT = "kfHighlight";
|
|
899
|
+
var PARAM_FILTER = "kfFilter";
|
|
900
|
+
function toSearchParams(link) {
|
|
901
|
+
const params = new URLSearchParams();
|
|
902
|
+
if (link.tab !== void 0) params.set(PARAM_TAB, link.tab);
|
|
903
|
+
if (link.highlightId !== void 0) params.set(PARAM_HIGHLIGHT, link.highlightId);
|
|
904
|
+
if (link.presetFilter !== void 0) params.set(PARAM_FILTER, link.presetFilter);
|
|
905
|
+
return params;
|
|
906
|
+
}
|
|
907
|
+
function fromSearchParams(params) {
|
|
908
|
+
const rawTab = params.get(PARAM_TAB);
|
|
909
|
+
const highlightId = params.get(PARAM_HIGHLIGHT);
|
|
910
|
+
const presetFilter = params.get(PARAM_FILTER);
|
|
911
|
+
if (rawTab === null && highlightId === null && presetFilter === null) return null;
|
|
912
|
+
const initialTab = isTripTabKey(rawTab) ? rawTab : void 0;
|
|
913
|
+
return {
|
|
914
|
+
...initialTab !== void 0 ? { initialTab } : {},
|
|
915
|
+
...highlightId !== null ? { highlightId } : {},
|
|
916
|
+
...presetFilter !== null ? { presetFilter } : {}
|
|
917
|
+
};
|
|
918
|
+
}
|
|
919
|
+
function isTripTabKey(value) {
|
|
920
|
+
if (value === null || value === void 0) return false;
|
|
921
|
+
return Object.hasOwn(TRIP_TAB_KEY_SET, value);
|
|
922
|
+
}
|
|
923
|
+
var TRIP_TAB_KEY_SET = {
|
|
924
|
+
itinerary: true,
|
|
925
|
+
pickups: true,
|
|
926
|
+
rooming: true,
|
|
927
|
+
vehicles: true,
|
|
928
|
+
vendors: true,
|
|
929
|
+
payments: true,
|
|
930
|
+
expenses: true,
|
|
931
|
+
float: true,
|
|
932
|
+
checklist: true,
|
|
933
|
+
forms: true
|
|
934
|
+
};
|
|
935
|
+
|
|
936
|
+
exports.CLOSEOUT_ACTION_TAB = CLOSEOUT_ACTION_TAB;
|
|
937
|
+
exports.familySafeSections = familySafeSections;
|
|
938
|
+
exports.fromSearchParams = fromSearchParams;
|
|
939
|
+
exports.isTripTabKey = isTripTabKey;
|
|
940
|
+
exports.resolveBlockerDeepLink = resolveBlockerDeepLink;
|
|
941
|
+
exports.toSearchParams = toSearchParams;
|
|
942
|
+
exports.useAgencyAdminMe = useAgencyAdminMe;
|
|
943
|
+
exports.useAgencyChecklistTemplates = useAgencyChecklistTemplates;
|
|
944
|
+
exports.useAgencyForms = useAgencyForms;
|
|
945
|
+
exports.useAgencyJourneyTriggers = useAgencyJourneyTriggers;
|
|
946
|
+
exports.useAgencyManagerProfile = useAgencyManagerProfile;
|
|
947
|
+
exports.useAgencySettings = useAgencySettings;
|
|
948
|
+
exports.useAgencyTrip = useAgencyTrip;
|
|
949
|
+
exports.useAgencyTripManifest = useAgencyTripManifest;
|
|
950
|
+
exports.useAgencyTrips = useAgencyTrips;
|
|
951
|
+
exports.useBookings = useBookings;
|
|
952
|
+
exports.useCapabilityStatuses = useCapabilityStatuses;
|
|
953
|
+
exports.useDirectories = useDirectories;
|
|
954
|
+
exports.usePaginatedList = usePaginatedList;
|
|
955
|
+
exports.useShareLinks = useShareLinks;
|
|
956
|
+
exports.useTravellerFormResponses = useTravellerFormResponses;
|
|
957
|
+
//# sourceMappingURL=chunk-PJRZCOFF.cjs.map
|
|
958
|
+
//# sourceMappingURL=chunk-PJRZCOFF.cjs.map
|