@snapkyc-ooru/consent-handoff-react 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +158 -0
- package/dist/index.cjs +1395 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +225 -0
- package/dist/index.d.ts +225 -0
- package/dist/index.js +1343 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.css +710 -0
- package/package.json +54 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,1395 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/index.ts
|
|
31
|
+
var src_exports = {};
|
|
32
|
+
__export(src_exports, {
|
|
33
|
+
API_ORIGIN: () => API_ORIGIN,
|
|
34
|
+
DEFAULT_SNAP_CONSENT_THEME: () => DEFAULT_SNAP_CONSENT_THEME,
|
|
35
|
+
SnapConsentHandoffFlow: () => SnapConsentHandoffFlow,
|
|
36
|
+
SnapSdkHttpError: () => SnapSdkHttpError,
|
|
37
|
+
demographicAccordionSections: () => demographicAccordionSections,
|
|
38
|
+
demographicFieldsForDisplay: () => demographicFieldsForDisplay,
|
|
39
|
+
extractDemographicData: () => extractDemographicData,
|
|
40
|
+
formatDisplayValue: () => formatDisplayValue,
|
|
41
|
+
formatPurposeLabel: () => formatPurposeLabel,
|
|
42
|
+
hasDisplayableDemographics: () => hasDisplayableDemographics,
|
|
43
|
+
normalizeTxnStatusPayload: () => normalizeTxnStatusPayload,
|
|
44
|
+
openSnapConsentHandoffFlow: () => openSnapConsentHandoffFlow,
|
|
45
|
+
openSnapConsentQrFlow: () => openSnapConsentQrFlow,
|
|
46
|
+
parseDemographicPayload: () => parseDemographicPayload,
|
|
47
|
+
resolveSnapConsentTheme: () => resolveSnapConsentTheme,
|
|
48
|
+
themeToCssProperties: () => themeToCssProperties
|
|
49
|
+
});
|
|
50
|
+
module.exports = __toCommonJS(src_exports);
|
|
51
|
+
|
|
52
|
+
// src/http/errors.ts
|
|
53
|
+
var SnapSdkHttpError = class extends Error {
|
|
54
|
+
constructor(url, status, message, bodyText) {
|
|
55
|
+
super(message);
|
|
56
|
+
this.url = url;
|
|
57
|
+
this.status = status;
|
|
58
|
+
this.bodyText = bodyText;
|
|
59
|
+
}
|
|
60
|
+
url;
|
|
61
|
+
status;
|
|
62
|
+
bodyText;
|
|
63
|
+
name = "SnapSdkHttpError";
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// src/theme.ts
|
|
67
|
+
var DEFAULT_SNAP_CONSENT_THEME = {
|
|
68
|
+
fontFamily: `system-ui, -apple-system, "Segoe UI", Roboto, sans-serif`,
|
|
69
|
+
primary: "#E87D43",
|
|
70
|
+
onPrimary: "#ffffff",
|
|
71
|
+
canvas: "#FAFAF9",
|
|
72
|
+
surface: "#ffffff",
|
|
73
|
+
surfaceMuted: "#FFF7ED",
|
|
74
|
+
text: "#1c1917",
|
|
75
|
+
textMuted: "#57534e",
|
|
76
|
+
border: "#e7e5e4",
|
|
77
|
+
borderActive: "#E87D43",
|
|
78
|
+
modalOverlay: "rgba(28, 25, 23, 0.55)",
|
|
79
|
+
danger: "#b91c1c",
|
|
80
|
+
radius: "12px",
|
|
81
|
+
gap: "12px",
|
|
82
|
+
maxWidth: "720px",
|
|
83
|
+
modalZ: "10000",
|
|
84
|
+
success: "#16a34a",
|
|
85
|
+
successStatusSurface: "#fff5f0",
|
|
86
|
+
successPurposesSurface: "#f0f2ff",
|
|
87
|
+
successAccordionBorder: "#e0d7d0"
|
|
88
|
+
};
|
|
89
|
+
function resolveSnapConsentTheme(partial) {
|
|
90
|
+
const merged = { ...DEFAULT_SNAP_CONSENT_THEME, ...partial };
|
|
91
|
+
if (partial?.primary !== void 0 && partial.borderActive === void 0) {
|
|
92
|
+
merged.borderActive = partial.primary;
|
|
93
|
+
}
|
|
94
|
+
return merged;
|
|
95
|
+
}
|
|
96
|
+
function themeToCssProperties(theme) {
|
|
97
|
+
return {
|
|
98
|
+
"--snap-consent-font-family": theme.fontFamily,
|
|
99
|
+
"--snap-consent-text": theme.text,
|
|
100
|
+
"--snap-consent-muted": theme.textMuted,
|
|
101
|
+
"--snap-consent-bg": theme.canvas,
|
|
102
|
+
"--snap-consent-surface": theme.surface,
|
|
103
|
+
"--snap-consent-surface-muted": theme.surfaceMuted,
|
|
104
|
+
"--snap-consent-border": theme.border,
|
|
105
|
+
"--snap-consent-border-active": theme.borderActive,
|
|
106
|
+
"--snap-consent-overlay": theme.modalOverlay,
|
|
107
|
+
"--snap-consent-accent": theme.primary,
|
|
108
|
+
"--snap-consent-on-primary": theme.onPrimary,
|
|
109
|
+
"--snap-consent-danger": theme.danger,
|
|
110
|
+
"--snap-consent-radius": theme.radius,
|
|
111
|
+
"--snap-consent-gap": theme.gap,
|
|
112
|
+
"--snap-consent-max-width": theme.maxWidth,
|
|
113
|
+
"--snap-consent-modal-z": theme.modalZ,
|
|
114
|
+
"--snap-consent-success": theme.success,
|
|
115
|
+
"--snap-consent-success-status-bg": theme.successStatusSurface,
|
|
116
|
+
"--snap-consent-success-purposes-bg": theme.successPurposesSurface,
|
|
117
|
+
"--snap-consent-success-accordion-border": theme.successAccordionBorder
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// src/http/normalizeStatus.ts
|
|
122
|
+
function parseJsonObject(raw) {
|
|
123
|
+
if (raw == null) return null;
|
|
124
|
+
if (typeof raw === "string") {
|
|
125
|
+
const trimmed = raw.trim();
|
|
126
|
+
if (!trimmed) return null;
|
|
127
|
+
try {
|
|
128
|
+
const parsed = JSON.parse(trimmed);
|
|
129
|
+
return parseJsonObject(parsed);
|
|
130
|
+
} catch {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (Array.isArray(raw) || typeof raw !== "object") return null;
|
|
135
|
+
return raw;
|
|
136
|
+
}
|
|
137
|
+
function parseDemographicPayload(raw) {
|
|
138
|
+
const obj = parseJsonObject(raw);
|
|
139
|
+
if (!obj) return null;
|
|
140
|
+
return obj;
|
|
141
|
+
}
|
|
142
|
+
function parseEvidencePayload(raw) {
|
|
143
|
+
const obj = parseJsonObject(raw);
|
|
144
|
+
if (!obj) return void 0;
|
|
145
|
+
const demographic = parseDemographicPayload(obj.demographic_data) ?? parseDemographicPayload(obj.demographicData);
|
|
146
|
+
return {
|
|
147
|
+
...obj,
|
|
148
|
+
aadhaar_uuid: typeof obj.aadhaar_uuid === "string" ? obj.aadhaar_uuid : void 0,
|
|
149
|
+
sd_jwt: typeof obj.sd_jwt === "string" ? obj.sd_jwt : void 0,
|
|
150
|
+
disclosures: Array.isArray(obj.disclosures) ? obj.disclosures : void 0,
|
|
151
|
+
demographic_data: demographic ?? void 0
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
function parsePurposes(raw) {
|
|
155
|
+
if (!Array.isArray(raw)) return [];
|
|
156
|
+
return raw.map((item) => {
|
|
157
|
+
if (!item || typeof item !== "object") return null;
|
|
158
|
+
const row = item;
|
|
159
|
+
const id = typeof row.id === "string" ? row.id : "";
|
|
160
|
+
const name = typeof row.name === "string" ? row.name : "";
|
|
161
|
+
if (!id && !name) return null;
|
|
162
|
+
return { id: id || name, name: name || id };
|
|
163
|
+
}).filter((row) => row != null);
|
|
164
|
+
}
|
|
165
|
+
function normalizeTxnStatusPayload(input) {
|
|
166
|
+
const root = parseJsonObject(input);
|
|
167
|
+
if (!root) {
|
|
168
|
+
return { txn_id: "", status: "UNKNOWN" };
|
|
169
|
+
}
|
|
170
|
+
if (root.data && typeof root.data === "object" && !Array.isArray(root.data) && ("txn_id" in root.data || "status" in root.data)) {
|
|
171
|
+
return normalizeTxnStatusPayload(root.data);
|
|
172
|
+
}
|
|
173
|
+
const txn_id = typeof root.txn_id === "string" ? root.txn_id : typeof root.txnId === "string" ? root.txnId : "";
|
|
174
|
+
const status = typeof root.status === "string" ? root.status : String(root.status ?? "UNKNOWN");
|
|
175
|
+
const created_at = typeof root.created_at === "string" ? root.created_at : void 0;
|
|
176
|
+
const purposes = parsePurposes(root.purposes);
|
|
177
|
+
let evidence = parseEvidencePayload(root.evidence);
|
|
178
|
+
const flatDemo = parseDemographicPayload(root.demographic_data) ?? parseDemographicPayload(root.demographicData);
|
|
179
|
+
if (flatDemo) {
|
|
180
|
+
evidence = { ...evidence ?? {}, demographic_data: flatDemo };
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
...root,
|
|
184
|
+
txn_id,
|
|
185
|
+
status,
|
|
186
|
+
created_at,
|
|
187
|
+
purposes,
|
|
188
|
+
evidence
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// src/demographicDisplay.ts
|
|
193
|
+
var SKIP_DEMOGRAPHIC_KEYS = /* @__PURE__ */ new Set(["resident_image"]);
|
|
194
|
+
var PERSONAL_DETAIL_KEYS = /* @__PURE__ */ new Set([
|
|
195
|
+
"resident_name",
|
|
196
|
+
"resident_name_local_language",
|
|
197
|
+
"date_of_birth",
|
|
198
|
+
"gender",
|
|
199
|
+
"care_of",
|
|
200
|
+
"care_of_local_language",
|
|
201
|
+
"is_age_above_18",
|
|
202
|
+
"is_age_above_50",
|
|
203
|
+
"is_age_above_60",
|
|
204
|
+
"is_age_above_75",
|
|
205
|
+
"is_non_resident_indian"
|
|
206
|
+
]);
|
|
207
|
+
var CONTACT_DETAIL_KEYS = /* @__PURE__ */ new Set([
|
|
208
|
+
"mobile_number",
|
|
209
|
+
"masked_mobile_number",
|
|
210
|
+
"email_address",
|
|
211
|
+
"masked_email_address"
|
|
212
|
+
]);
|
|
213
|
+
var ADDRESS_DETAIL_KEYS = /* @__PURE__ */ new Set([
|
|
214
|
+
"full_address",
|
|
215
|
+
"regional_address",
|
|
216
|
+
"building",
|
|
217
|
+
"street",
|
|
218
|
+
"locality",
|
|
219
|
+
"landmark",
|
|
220
|
+
"village_town_city",
|
|
221
|
+
"sub_district",
|
|
222
|
+
"district",
|
|
223
|
+
"state",
|
|
224
|
+
"postal_code",
|
|
225
|
+
"post_office_name"
|
|
226
|
+
]);
|
|
227
|
+
var GROUPED_DETAIL_KEYS = /* @__PURE__ */ new Set([
|
|
228
|
+
...PERSONAL_DETAIL_KEYS,
|
|
229
|
+
...CONTACT_DETAIL_KEYS,
|
|
230
|
+
...ADDRESS_DETAIL_KEYS
|
|
231
|
+
]);
|
|
232
|
+
var MAX_RESIDENT_IMAGE_B64_CHARS = 15e4;
|
|
233
|
+
var DEMOGRAPHIC_KEY_ORDER = [
|
|
234
|
+
"resident_name",
|
|
235
|
+
"resident_name_local_language",
|
|
236
|
+
"date_of_birth",
|
|
237
|
+
"gender",
|
|
238
|
+
"care_of",
|
|
239
|
+
"care_of_local_language",
|
|
240
|
+
"mobile_number",
|
|
241
|
+
"masked_mobile_number",
|
|
242
|
+
"email_address",
|
|
243
|
+
"masked_email_address",
|
|
244
|
+
"full_address",
|
|
245
|
+
"regional_address",
|
|
246
|
+
"building",
|
|
247
|
+
"street",
|
|
248
|
+
"locality",
|
|
249
|
+
"landmark",
|
|
250
|
+
"village_town_city",
|
|
251
|
+
"sub_district",
|
|
252
|
+
"district",
|
|
253
|
+
"state",
|
|
254
|
+
"postal_code",
|
|
255
|
+
"post_office_name",
|
|
256
|
+
"enrolment_date",
|
|
257
|
+
"enrolment_number",
|
|
258
|
+
"credential_issuing_date",
|
|
259
|
+
"is_age_above_18",
|
|
260
|
+
"is_age_above_50",
|
|
261
|
+
"is_age_above_60",
|
|
262
|
+
"is_age_above_75",
|
|
263
|
+
"is_non_resident_indian"
|
|
264
|
+
];
|
|
265
|
+
function extractDemographicData(status) {
|
|
266
|
+
if (!status || typeof status !== "object") return null;
|
|
267
|
+
const fromEvidence = parseDemographicPayload(status.evidence?.demographic_data);
|
|
268
|
+
if (fromEvidence) return fromEvidence;
|
|
269
|
+
return parseDemographicPayload(status.demographic_data);
|
|
270
|
+
}
|
|
271
|
+
function hasDisplayableDemographics(status) {
|
|
272
|
+
const data = extractDemographicData(status);
|
|
273
|
+
if (!data) return false;
|
|
274
|
+
if (demographicFieldsForDisplay(data).length > 0) return true;
|
|
275
|
+
const raw = data.resident_image;
|
|
276
|
+
if (typeof raw !== "string" || !raw.trim()) return false;
|
|
277
|
+
return raw.trim().length <= MAX_RESIDENT_IMAGE_B64_CHARS;
|
|
278
|
+
}
|
|
279
|
+
function formatDisplayValue(value) {
|
|
280
|
+
if (value === null || value === void 0) return "null";
|
|
281
|
+
if (typeof value === "string") return value.trim() === "" ? "null" : value;
|
|
282
|
+
if (typeof value === "object") return "null";
|
|
283
|
+
return String(value);
|
|
284
|
+
}
|
|
285
|
+
function humanizeDemographicKey(key) {
|
|
286
|
+
return key.replace(/_/g, " ").replace(/\b\w/g, (ch) => ch.toUpperCase());
|
|
287
|
+
}
|
|
288
|
+
function orderedDemographicKeys(data) {
|
|
289
|
+
const keys = Object.keys(data).filter((k) => !SKIP_DEMOGRAPHIC_KEYS.has(k));
|
|
290
|
+
const rank = new Map(DEMOGRAPHIC_KEY_ORDER.map((k, i) => [k, i]));
|
|
291
|
+
return keys.sort((a, b) => {
|
|
292
|
+
const ra = rank.get(a) ?? Number.MAX_SAFE_INTEGER;
|
|
293
|
+
const rb = rank.get(b) ?? Number.MAX_SAFE_INTEGER;
|
|
294
|
+
if (ra !== rb) return ra - rb;
|
|
295
|
+
return a.localeCompare(b);
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
function demographicFieldsForDisplay(data) {
|
|
299
|
+
return orderedDemographicKeys(data).map((key) => ({
|
|
300
|
+
key,
|
|
301
|
+
label: humanizeDemographicKey(key),
|
|
302
|
+
value: formatDisplayValue(data[key])
|
|
303
|
+
}));
|
|
304
|
+
}
|
|
305
|
+
function demographicAccordionSections(data, options) {
|
|
306
|
+
const all = demographicFieldsForDisplay(data);
|
|
307
|
+
const byKey = (keys) => all.filter((f) => keys.has(f.key));
|
|
308
|
+
const personalFields = byKey(PERSONAL_DETAIL_KEYS);
|
|
309
|
+
const contactFields = byKey(CONTACT_DETAIL_KEYS);
|
|
310
|
+
const addressFields = byKey(ADDRESS_DETAIL_KEYS);
|
|
311
|
+
const additionalFields = all.filter((f) => !GROUPED_DETAIL_KEYS.has(f.key));
|
|
312
|
+
const sections = [];
|
|
313
|
+
if (personalFields.length > 0 || options.includePhoto) {
|
|
314
|
+
sections.push({
|
|
315
|
+
id: "personal",
|
|
316
|
+
title: "Personal Details",
|
|
317
|
+
fields: personalFields,
|
|
318
|
+
includePhoto: options.includePhoto
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
if (contactFields.length > 0) {
|
|
322
|
+
sections.push({
|
|
323
|
+
id: "contact",
|
|
324
|
+
title: "Contact Information",
|
|
325
|
+
fields: contactFields,
|
|
326
|
+
includePhoto: false
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
if (addressFields.length > 0) {
|
|
330
|
+
sections.push({
|
|
331
|
+
id: "address",
|
|
332
|
+
title: "Address Details",
|
|
333
|
+
fields: addressFields,
|
|
334
|
+
includePhoto: false
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
if (additionalFields.length > 0) {
|
|
338
|
+
sections.push({
|
|
339
|
+
id: "additional",
|
|
340
|
+
title: "Additional details",
|
|
341
|
+
fields: additionalFields,
|
|
342
|
+
includePhoto: false
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
return sections;
|
|
346
|
+
}
|
|
347
|
+
function residentImageDataUrl(data) {
|
|
348
|
+
const raw = data.resident_image;
|
|
349
|
+
if (typeof raw !== "string" || !raw.trim()) return null;
|
|
350
|
+
const b64 = raw.trim();
|
|
351
|
+
if (b64.length > MAX_RESIDENT_IMAGE_B64_CHARS) return null;
|
|
352
|
+
if (b64.startsWith("data:")) return b64;
|
|
353
|
+
return `data:image/jpeg;base64,${b64}`;
|
|
354
|
+
}
|
|
355
|
+
function formatPurposeLabel(name) {
|
|
356
|
+
if (typeof name !== "string" || !name.trim()) return "Purpose";
|
|
357
|
+
return name.split("_").map((part) => part.charAt(0) + part.slice(1).toLowerCase()).join(" ");
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// src/react/SnapConsentHandoffFlow.tsx
|
|
361
|
+
var import_dompurify = __toESM(require("dompurify"), 1);
|
|
362
|
+
var import_react3 = require("react");
|
|
363
|
+
|
|
364
|
+
// src/device/detectIntentPlatform.ts
|
|
365
|
+
function detectIntentPlatform(userAgent) {
|
|
366
|
+
const uaRaw = userAgent ?? (typeof navigator !== "undefined" ? navigator.userAgent : "");
|
|
367
|
+
const ua = uaRaw.toLowerCase();
|
|
368
|
+
if (!ua) return { kind: "ambiguous", reason: "missing-user-agent" };
|
|
369
|
+
const isAndroid = /android/.test(ua);
|
|
370
|
+
const touchPoints = typeof navigator !== "undefined" ? Number(navigator.maxTouchPoints ?? 0) : 0;
|
|
371
|
+
const isIOSDevice = /iphone|ipad|ipod/.test(ua) || ua.includes("macintosh") && touchPoints > 1;
|
|
372
|
+
if (isAndroid && !isIOSDevice) return { kind: "resolved", platform: "android" };
|
|
373
|
+
if (!isAndroid && isIOSDevice) return { kind: "resolved", platform: "ios" };
|
|
374
|
+
return { kind: "ambiguous", reason: "ambiguous-or-non-mobile" };
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// src/config.ts
|
|
378
|
+
var API_ORIGIN = "https://staging-api.snapkyc.com/";
|
|
379
|
+
var paths = {
|
|
380
|
+
agreement: () => `${API_ORIGIN}/api/integrations/agreement`,
|
|
381
|
+
txnInitiate: () => `${API_ORIGIN}/api/integrations/transactions/initiate`,
|
|
382
|
+
generateQr: () => `${API_ORIGIN}/api/integrations/generate-qr`,
|
|
383
|
+
generateIntent: (platform) => `${API_ORIGIN}/api/integrations/generate-intent?platform=${platform}`,
|
|
384
|
+
txnStatus: (txnId) => `${API_ORIGIN}/api/integrations/transactions/${encodeURIComponent(txnId)}/status`
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
// src/http/envelope.ts
|
|
388
|
+
function unwrapEnvelope(envelope, fallbackMessage = "API error") {
|
|
389
|
+
if (envelope.error || envelope.data == null) {
|
|
390
|
+
const detail = typeof envelope.error_message === "string" ? envelope.error_message : envelope.error_message != null ? JSON.stringify(envelope.error_message) : envelope.message;
|
|
391
|
+
throw new Error(detail || fallbackMessage);
|
|
392
|
+
}
|
|
393
|
+
return envelope.data;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
// src/http/auth.ts
|
|
397
|
+
function authorizationHeaders(integrationToken) {
|
|
398
|
+
return {
|
|
399
|
+
Authorization: `Token ${integrationToken}`
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
// src/http/client.ts
|
|
404
|
+
async function assertOk(res, url) {
|
|
405
|
+
if (!res.ok) {
|
|
406
|
+
const text = await res.text().catch(() => "");
|
|
407
|
+
const err = new SnapSdkHttpError(url, res.status, `HTTP ${res.status} calling ${url}`, text);
|
|
408
|
+
throw err;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
async function fetchJson(options) {
|
|
412
|
+
const { url, integrationToken, method = "GET", body, signal, headers = {} } = options;
|
|
413
|
+
const res = await fetch(url, {
|
|
414
|
+
method,
|
|
415
|
+
signal,
|
|
416
|
+
headers: {
|
|
417
|
+
...authorizationHeaders(integrationToken),
|
|
418
|
+
Accept: "application/json",
|
|
419
|
+
...body !== void 0 ? { "Content-Type": "application/json" } : {},
|
|
420
|
+
...headers
|
|
421
|
+
},
|
|
422
|
+
body: body === void 0 ? void 0 : JSON.stringify(body)
|
|
423
|
+
}).catch((e) => {
|
|
424
|
+
throw e;
|
|
425
|
+
});
|
|
426
|
+
await assertOk(res, url);
|
|
427
|
+
return await res.json();
|
|
428
|
+
}
|
|
429
|
+
async function fetchBlob(options) {
|
|
430
|
+
const { url, integrationToken, method = "POST", body, signal } = options;
|
|
431
|
+
const res = await fetch(url, {
|
|
432
|
+
method,
|
|
433
|
+
signal,
|
|
434
|
+
headers: {
|
|
435
|
+
...authorizationHeaders(integrationToken),
|
|
436
|
+
Accept: "image/png,*/*",
|
|
437
|
+
...body !== void 0 ? { "Content-Type": "application/json" } : {}
|
|
438
|
+
},
|
|
439
|
+
body: body === void 0 ? void 0 : JSON.stringify(body)
|
|
440
|
+
}).catch((e) => {
|
|
441
|
+
throw e;
|
|
442
|
+
});
|
|
443
|
+
await assertOk(res, url);
|
|
444
|
+
return await res.blob();
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
// src/http/endpoints.ts
|
|
448
|
+
async function getAgreement(options) {
|
|
449
|
+
return fetchJson({
|
|
450
|
+
url: paths.agreement(),
|
|
451
|
+
integrationToken: options.integrationToken,
|
|
452
|
+
method: "GET",
|
|
453
|
+
signal: options.signal,
|
|
454
|
+
headers: options.acceptLanguage ? {
|
|
455
|
+
"Accept-Language": options.acceptLanguage
|
|
456
|
+
} : {}
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
async function initiateTxn(options) {
|
|
460
|
+
const envelope = await fetchJson({
|
|
461
|
+
url: paths.txnInitiate(),
|
|
462
|
+
integrationToken: options.integrationToken,
|
|
463
|
+
method: "POST",
|
|
464
|
+
body: options.body,
|
|
465
|
+
signal: options.signal
|
|
466
|
+
});
|
|
467
|
+
return unwrapEnvelope(envelope, "Transaction initiate failed");
|
|
468
|
+
}
|
|
469
|
+
async function generateQr(options) {
|
|
470
|
+
return fetchBlob({
|
|
471
|
+
url: paths.generateQr(),
|
|
472
|
+
integrationToken: options.integrationToken,
|
|
473
|
+
body: {
|
|
474
|
+
txn_id: options.txnId,
|
|
475
|
+
size: options.size ?? 376
|
|
476
|
+
},
|
|
477
|
+
signal: options.signal
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
async function createIntent(options) {
|
|
481
|
+
const envelope = await fetchJson({
|
|
482
|
+
url: paths.generateIntent(options.platform),
|
|
483
|
+
integrationToken: options.integrationToken,
|
|
484
|
+
method: "POST",
|
|
485
|
+
body: { txn_id: options.txnId },
|
|
486
|
+
signal: options.signal
|
|
487
|
+
});
|
|
488
|
+
return unwrapEnvelope(envelope, "Intent generation failed");
|
|
489
|
+
}
|
|
490
|
+
async function pollTxnStatus(options) {
|
|
491
|
+
const envelope = await fetchJson({
|
|
492
|
+
url: paths.txnStatus(options.txnId),
|
|
493
|
+
integrationToken: options.integrationToken,
|
|
494
|
+
method: "GET",
|
|
495
|
+
signal: options.signal
|
|
496
|
+
});
|
|
497
|
+
return normalizeTxnStatusPayload(unwrapEnvelope(envelope, "Transaction status fetch failed"));
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// src/http/pollTxn.ts
|
|
501
|
+
var successStatusesLower = /* @__PURE__ */ new Set(["success", "completed", "complete"]);
|
|
502
|
+
var pendingHintsLower = /* @__PURE__ */ new Set([
|
|
503
|
+
"pending",
|
|
504
|
+
"in_progress",
|
|
505
|
+
"processing",
|
|
506
|
+
"initiated",
|
|
507
|
+
"waiting",
|
|
508
|
+
"started"
|
|
509
|
+
]);
|
|
510
|
+
var failureStatusesLower = /* @__PURE__ */ new Set(["failed", "failure", "error", "rejected", "expired"]);
|
|
511
|
+
var DEMOGRAPHIC_WAIT_AFTER_SUCCESS_MS = 15e3;
|
|
512
|
+
function normalizeStatus(raw) {
|
|
513
|
+
return typeof raw === "string" ? raw.trim().toLowerCase() : "";
|
|
514
|
+
}
|
|
515
|
+
function classifyTxnStatus(raw) {
|
|
516
|
+
const s = normalizeStatus(raw);
|
|
517
|
+
if (!s) return "pending";
|
|
518
|
+
if (successStatusesLower.has(s)) return "success";
|
|
519
|
+
if (failureStatusesLower.has(s)) return "failure";
|
|
520
|
+
if (pendingHintsLower.has(s)) return "pending";
|
|
521
|
+
return "pending";
|
|
522
|
+
}
|
|
523
|
+
async function delay(ms, signal) {
|
|
524
|
+
await new Promise((resolve, reject) => {
|
|
525
|
+
if (signal.aborted) {
|
|
526
|
+
reject(new DOMException("Aborted", "AbortError"));
|
|
527
|
+
return;
|
|
528
|
+
}
|
|
529
|
+
const timer = globalThis.setTimeout(() => resolve(), ms);
|
|
530
|
+
signal.addEventListener(
|
|
531
|
+
"abort",
|
|
532
|
+
() => {
|
|
533
|
+
globalThis.clearTimeout(timer);
|
|
534
|
+
reject(new DOMException("Aborted", "AbortError"));
|
|
535
|
+
},
|
|
536
|
+
{ once: true }
|
|
537
|
+
);
|
|
538
|
+
});
|
|
539
|
+
}
|
|
540
|
+
async function pollTxnUntilTerminal(options) {
|
|
541
|
+
const start = Date.now();
|
|
542
|
+
let successAt = null;
|
|
543
|
+
let lastSuccess = null;
|
|
544
|
+
while (true) {
|
|
545
|
+
if (options.signal.aborted) {
|
|
546
|
+
throw new DOMException("Aborted", "AbortError");
|
|
547
|
+
}
|
|
548
|
+
if (Date.now() - start > options.deadlineMs) {
|
|
549
|
+
if (lastSuccess) return lastSuccess;
|
|
550
|
+
throw new Error(`Txn polling timed out after ${options.deadlineMs}ms`);
|
|
551
|
+
}
|
|
552
|
+
const latest = await pollTxnStatus({
|
|
553
|
+
integrationToken: options.integrationToken,
|
|
554
|
+
txnId: options.txnId,
|
|
555
|
+
signal: options.signal
|
|
556
|
+
});
|
|
557
|
+
const bucket = classifyTxnStatus(latest.status);
|
|
558
|
+
if (bucket === "success") {
|
|
559
|
+
lastSuccess = latest;
|
|
560
|
+
if (successAt == null) successAt = Date.now();
|
|
561
|
+
if (hasDisplayableDemographics(latest)) return latest;
|
|
562
|
+
if (Date.now() - successAt >= DEMOGRAPHIC_WAIT_AFTER_SUCCESS_MS) return latest;
|
|
563
|
+
} else {
|
|
564
|
+
successAt = null;
|
|
565
|
+
lastSuccess = null;
|
|
566
|
+
if (bucket === "failure") {
|
|
567
|
+
throw new Error(`Txn failed with terminal status '${String(latest.status)}'`);
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
await delay(options.pollIntervalMs, options.signal);
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
// src/purposeSelection.ts
|
|
575
|
+
function buildSelectablePurposes(data) {
|
|
576
|
+
return (data.purposes ?? []).map((purpose) => ({
|
|
577
|
+
id: purpose.id,
|
|
578
|
+
label: purpose.description?.en ?? purpose.name
|
|
579
|
+
}));
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
// src/uiHelpers.ts
|
|
583
|
+
function agreementTextHtml(data, acceptLanguage) {
|
|
584
|
+
const texts = data.agreement_text ?? {};
|
|
585
|
+
const preferredLang = acceptLanguage?.split(",")[0]?.trim();
|
|
586
|
+
const key = preferredLang && texts[preferredLang] ? preferredLang : texts.en ? "en" : Object.keys(texts)[0];
|
|
587
|
+
const raw = key ? texts[key] : "";
|
|
588
|
+
const text = typeof raw === "string" ? raw.trim() : "";
|
|
589
|
+
if (!text) return null;
|
|
590
|
+
const escaped = text.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
591
|
+
return escaped.replace(/\n/g, "<br />");
|
|
592
|
+
}
|
|
593
|
+
function coerceForcedIntentOs(props) {
|
|
594
|
+
return props._dangerouslyForceIntentPlatform ?? props.dangerousForceIntentPlatform ?? props.intentPlatformOverride;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
// src/react/FlowErrorBoundary.tsx
|
|
598
|
+
var import_react = require("react");
|
|
599
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
600
|
+
var FlowErrorBoundary = class extends import_react.Component {
|
|
601
|
+
state = { error: null };
|
|
602
|
+
static getDerivedStateFromError(error) {
|
|
603
|
+
return { error };
|
|
604
|
+
}
|
|
605
|
+
componentDidCatch(error, info) {
|
|
606
|
+
console.error("[snap-consent-handoff] render error", error, info.componentStack);
|
|
607
|
+
}
|
|
608
|
+
render() {
|
|
609
|
+
if (this.state.error) {
|
|
610
|
+
return this.props.fallback ?? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "snap-consent-handoff_err", role: "alert", children: [
|
|
611
|
+
"Something went wrong displaying the verification result. Please check the browser console or use the data returned in ",
|
|
612
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { children: "onSuccess" }),
|
|
613
|
+
"."
|
|
614
|
+
] });
|
|
615
|
+
}
|
|
616
|
+
return this.props.children;
|
|
617
|
+
}
|
|
618
|
+
};
|
|
619
|
+
|
|
620
|
+
// src/assets/snapkycog.svg
|
|
621
|
+
var snapkycog_default = 'data:image/svg+xml,<svg width="1007" height="518" viewBox="0 0 1007 518" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">%0A<rect width="1007" height="518" fill="url(%23pattern0_60_2)"/>%0A<defs>%0A<pattern id="pattern0_60_2" patternContentUnits="objectBoundingBox" width="1" height="1">%0A<use xlink:href="%23image0_60_2" transform="scale(0.000350408 0.000681199)"/>%0A</pattern>%0A<image id="image0_60_2" width="2854" height="1468" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACyYAAAW8CAYAAABl2XRoAAAACXBIWXMAAD2DAAA9gwGH6AkLAAAgAElEQVR4nOzcO3YUBxbH4dtzJgfB5LADK0NEZgdDavBDMyvwUsY248dMotmB2IGcIoJmBxAKErECTdB6olaruv6lekjfd05bLapuVZeOdI6D37mzo6OjAgAAAAAAAAAAAABI/GXoDwAAAAAAAAAAAAAATJ8wGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAAgJgwGQAAAAAAAAAAAACICZMBAAAAAAAAAAAA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ZAAAAAAAAAAAAACgNmEyAAAAAAAAAAAAAFCbMBkAAAAAAAAAAAAAqE2YDAAAAAAAAAAAAADUJkwGAAAAAAAAAAAAAGoTJgMAAAAAAAAAAAAAtQmTAQAAAAAAAAAAAIDahMkAAAAAAAAAAAAAQG3CZAAAAAAAAAAAAACgNmEyAAAAAAAAAAAAAFCbMBkAAAAAAAAAAAAAqE2YDAAAAAAAAAAAAADUJkwGAAAAAAAAAAAAAGoTJgMAAAAAAAAAAAAAtQmTAQAAAAAAAAAAAIDahMkAAAAAAAAAAAAAQG3CZAAAAAAAAAAAAACgNmEyAAAAAAAAAAAAAFCbMBkAAAAAAAAAAAAAqE2YDAAAAAAAAAAAAADUJkwGAAAAAAAAAAAAAGoTJgMAAAAAAAAAAAAAtQmTAQAAAAAAAAAAAIDahMkAAAAAAAAAAAAAQG3CZAAAAAAAAAAAAACgNmEyAAAAAAAAAAAAAFCbMBkAAAAAAAAAAAAAqE2YDAAAAAAAAAAAAADUJkwGAAAAAAAAAAAAAGoTJgMAAAAAAAAAAAAAtQmTAQAAAAAAAAAAAIDahMkAAAAAAAAAAAAAQG3CZAAAAAAAAAAAAACgNmEyAAAAAAAAAAAAAFCbMBkAAAAAAAAAAAAAqE2YDAAAAAAAAAAAAADUJkwGAAAAAAAAAAAAAGoTJgMAAAAAAAAAAAAAtQmTAQAAAAAAAAAAAIDahMkAAAAAAAAAAAAAQG3CZAAAAAAAAAAAAACgNmEyAAAAAAAAAAAAAFCbMBkAAAAAAAAAAAAAqE2YDAAAAAAAAAAAAADUJkwGAAAAAAAAAAAAAGoTJgMAAAAAAAAAAAAAtQmTAQAAAAAAAAAAAIDahMkAAAAAAAAAAAAAQG3CZAAAAAAAAAAAAACgNmEyAAAAAAAAAAAAAFCbMBkAAAAAAAAAAAAAqE2YDAAAAAAAAAAAAADUJkwGAAAAAAAAAAAAAGoTJgMAAAAAAAAAAAAAtQmTAQAAAAAAAAAAAIDahMkAAAAAAAAAAAAAQG3CZAAAAAAAAAAAAACgNmEyAAAAAAAAAAAAAFCbMBkAAAAAAAAAAAAAqE2YDAAAAAAAAAAAAADUJkwGAAAAAAAAAAAAAGoTJgMAAAAAAAAAAAAAtQmTAQAAAAAAAAAAAIDahMkAAAAAAAAAAAAAQG3CZAAAAAAAAAAAAACgNmEyAAAAAAAAAAAAAFCbMBkAAAAAAAAAAAAAqE2YDAAAAAAAAAAAAADUJkwGAAAAAAAAAAAAAGoTJgMA/P927VgAAAAAYJC/9SD2FkcAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAABrXUw8AAAF5UlEQVQAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAm5gMAAAAAAAAAAAAAGxiMgAAAAAAAAAAAACwickAAAAAAAAAAAAAwCYmAwAAAAAAAAAAAACbmAwAAAAAAAAAAAAAbGIyAAAAAAAAAAAAALCJyQAAAAAAAAAAAADAJiYDAAAAAAAAAAAAAJuYDAAAAAAAAAAAAABsYjIAAAAAAAAAAAAAsInJAAAAAAAAAAAAAMAmJgMAAAAAAAAAAAAAW6TmvKNicE2hAAAAAElFTkSuQmCC"/>%0A</defs>%0A</svg>%0A';
|
|
622
|
+
|
|
623
|
+
// src/react/PoweredBySnapKyc.tsx
|
|
624
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
625
|
+
function PoweredBySnapKyc() {
|
|
626
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("footer", { className: "snap-consent-handoff_powered", "data-testid": "snap-consent-handoff-powered", children: [
|
|
627
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "snap-consent-handoff_poweredLabel", children: "Powered by" }),
|
|
628
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("img", { className: "snap-consent-handoff_poweredLogo", src: snapkycog_default, alt: "snapkyc" })
|
|
629
|
+
] });
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
// src/react/TxnSuccessPanel.tsx
|
|
633
|
+
var import_react2 = require("react");
|
|
634
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
635
|
+
function SuccessShieldIcon() {
|
|
636
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": true, children: [
|
|
637
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
638
|
+
"path",
|
|
639
|
+
{
|
|
640
|
+
d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z",
|
|
641
|
+
stroke: "currentColor",
|
|
642
|
+
strokeWidth: "2",
|
|
643
|
+
strokeLinecap: "round",
|
|
644
|
+
strokeLinejoin: "round"
|
|
645
|
+
}
|
|
646
|
+
),
|
|
647
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
648
|
+
"path",
|
|
649
|
+
{
|
|
650
|
+
d: "m9 12 2 2 4-4",
|
|
651
|
+
stroke: "currentColor",
|
|
652
|
+
strokeWidth: "2",
|
|
653
|
+
strokeLinecap: "round",
|
|
654
|
+
strokeLinejoin: "round"
|
|
655
|
+
}
|
|
656
|
+
)
|
|
657
|
+
] });
|
|
658
|
+
}
|
|
659
|
+
function SmallCheckIcon() {
|
|
660
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
661
|
+
"path",
|
|
662
|
+
{
|
|
663
|
+
d: "M3.5 8.2 6.3 11l6.2-6.2",
|
|
664
|
+
stroke: "currentColor",
|
|
665
|
+
strokeWidth: "2",
|
|
666
|
+
strokeLinecap: "round",
|
|
667
|
+
strokeLinejoin: "round"
|
|
668
|
+
}
|
|
669
|
+
) });
|
|
670
|
+
}
|
|
671
|
+
function SectionListIcon() {
|
|
672
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": true, children: [
|
|
673
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M8 6h13M8 12h13M8 18h13", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
|
|
674
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
675
|
+
"path",
|
|
676
|
+
{
|
|
677
|
+
d: "M3.5 6l1 1-1 1M3.5 12l1 1-1 1M3.5 18l1 1-1 1",
|
|
678
|
+
stroke: "currentColor",
|
|
679
|
+
strokeWidth: "1.5",
|
|
680
|
+
strokeLinecap: "round",
|
|
681
|
+
strokeLinejoin: "round"
|
|
682
|
+
}
|
|
683
|
+
)
|
|
684
|
+
] });
|
|
685
|
+
}
|
|
686
|
+
function SectionUserIcon() {
|
|
687
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
688
|
+
"path",
|
|
689
|
+
{
|
|
690
|
+
d: "M12 11a3 3 0 1 0-3-3 3 3 0 0 0 3 3zm0 2c-3.3 0-6 1.6-6 3.5V19h12v-2.5C18 14.6 15.3 13 12 13z",
|
|
691
|
+
fill: "currentColor"
|
|
692
|
+
}
|
|
693
|
+
) });
|
|
694
|
+
}
|
|
695
|
+
function AccordionChevron({ open }) {
|
|
696
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
697
|
+
"span",
|
|
698
|
+
{
|
|
699
|
+
className: open ? "snap-consent-handoff_accordionChevron snap-consent-handoff_accordionChevron--open" : "snap-consent-handoff_accordionChevron",
|
|
700
|
+
"aria-hidden": true,
|
|
701
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M6 9l6 6 6-6", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) })
|
|
702
|
+
}
|
|
703
|
+
);
|
|
704
|
+
}
|
|
705
|
+
function TxnSuccessPanel({ status }) {
|
|
706
|
+
const normalized = (0, import_react2.useMemo)(() => normalizeTxnStatusPayload(status), [status]);
|
|
707
|
+
const demographics = (0, import_react2.useMemo)(() => extractDemographicData(normalized), [normalized]);
|
|
708
|
+
const photoUrl = demographics ? residentImageDataUrl(demographics) : null;
|
|
709
|
+
const photoOmitted = Boolean(
|
|
710
|
+
demographics && typeof demographics.resident_image === "string" && demographics.resident_image.trim().length > 0 && !photoUrl
|
|
711
|
+
);
|
|
712
|
+
const accordionSections = (0, import_react2.useMemo)(() => {
|
|
713
|
+
if (!demographics) return [];
|
|
714
|
+
return demographicAccordionSections(demographics, {
|
|
715
|
+
includePhoto: Boolean(photoUrl || photoOmitted)
|
|
716
|
+
});
|
|
717
|
+
}, [demographics, photoUrl, photoOmitted]);
|
|
718
|
+
const defaultOpenId = (0, import_react2.useMemo)(() => {
|
|
719
|
+
const personal = accordionSections.find((s) => s.id === "personal");
|
|
720
|
+
return personal?.id ?? accordionSections[0]?.id ?? "";
|
|
721
|
+
}, [accordionSections]);
|
|
722
|
+
const [openAccordionId, setOpenAccordionId] = (0, import_react2.useState)(defaultOpenId);
|
|
723
|
+
(0, import_react2.useEffect)(() => {
|
|
724
|
+
setOpenAccordionId(defaultOpenId);
|
|
725
|
+
}, [defaultOpenId]);
|
|
726
|
+
const purposes = Array.isArray(normalized.purposes) ? normalized.purposes : [];
|
|
727
|
+
const hasSummaryPayload = Boolean(normalized.txn_id || normalized.status);
|
|
728
|
+
if (!hasSummaryPayload) {
|
|
729
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "snap-consent-handoff_muted", style: { marginTop: "12px" }, children: "Verification completed, but no status payload was available to display." });
|
|
730
|
+
}
|
|
731
|
+
const showDemographicsBlock = demographics && (accordionSections.length > 0 || photoOmitted);
|
|
732
|
+
function toggleAccordion(id) {
|
|
733
|
+
setOpenAccordionId((prev) => prev === id ? "" : id);
|
|
734
|
+
}
|
|
735
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "snap-consent-handoff_successBody", "data-testid": "snap-consent-handoff-success-body", children: [
|
|
736
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "snap-consent-handoff_successHero", children: [
|
|
737
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "snap-consent-handoff_successBadge", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SuccessShieldIcon, {}) }),
|
|
738
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "snap-consent-handoff_successHeroText", children: [
|
|
739
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h2", { className: "snap-consent-handoff_successTitle", children: "Verification successful" }),
|
|
740
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "snap-consent-handoff_successSubtitle", children: "Identity has been verified successfully." })
|
|
741
|
+
] })
|
|
742
|
+
] }),
|
|
743
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("section", { className: "snap-consent-handoff_statusStrip", "aria-label": "Transaction summary", children: [
|
|
744
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "snap-consent-handoff_statusStripCol", children: [
|
|
745
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "snap-consent-handoff_statusLabel", children: "Status" }),
|
|
746
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("p", { className: "snap-consent-handoff_statusValue", children: [
|
|
747
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "snap-consent-handoff_statusCheck", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SmallCheckIcon, {}) }),
|
|
748
|
+
formatDisplayValue(normalized.status)
|
|
749
|
+
] })
|
|
750
|
+
] }),
|
|
751
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "snap-consent-handoff_statusStripCol snap-consent-handoff_statusStripCol--end", children: [
|
|
752
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "snap-consent-handoff_statusLabel snap-consent-handoff_statusLabel--neutral", children: "Completed at" }),
|
|
753
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "snap-consent-handoff_statusMeta", children: formatDisplayValue(normalized.created_at) })
|
|
754
|
+
] })
|
|
755
|
+
] }),
|
|
756
|
+
purposes.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("section", { className: "snap-consent-handoff_purposeCard", "data-testid": "snap-consent-handoff-purposes", children: [
|
|
757
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("h3", { className: "snap-consent-handoff_successSectionTitle", children: [
|
|
758
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "snap-consent-handoff_successSectionIcon", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SectionListIcon, {}) }),
|
|
759
|
+
"Confirmed purposes"
|
|
760
|
+
] }),
|
|
761
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("ul", { className: "snap-consent-handoff_purposeGrid", children: purposes.map((purpose, index) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("li", { className: "snap-consent-handoff_purposeGridItem", children: [
|
|
762
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "snap-consent-handoff_purposeCheck", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SmallCheckIcon, {}) }),
|
|
763
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { children: formatPurposeLabel(purpose?.name) })
|
|
764
|
+
] }, purpose?.id ?? `purpose-${index}`)) })
|
|
765
|
+
] }) : null,
|
|
766
|
+
showDemographicsBlock ? /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("section", { className: "snap-consent-handoff_demographics", "data-testid": "snap-consent-handoff-demographics", children: [
|
|
767
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("h3", { className: "snap-consent-handoff_successSectionTitle", children: [
|
|
768
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "snap-consent-handoff_successSectionIcon", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SectionUserIcon, {}) }),
|
|
769
|
+
"Demographic data"
|
|
770
|
+
] }),
|
|
771
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "snap-consent-handoff_accordionList", children: accordionSections.map((section) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
772
|
+
DemographicAccordion,
|
|
773
|
+
{
|
|
774
|
+
section,
|
|
775
|
+
photoUrl: section.includePhoto ? photoUrl : null,
|
|
776
|
+
photoOmitted: section.includePhoto ? photoOmitted : false,
|
|
777
|
+
expanded: openAccordionId === section.id,
|
|
778
|
+
onToggle: () => toggleAccordion(section.id)
|
|
779
|
+
},
|
|
780
|
+
section.id
|
|
781
|
+
)) })
|
|
782
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "snap-consent-handoff_muted snap-consent-handoff_successNoDemo", children: "No demographic details were returned for this transaction." })
|
|
783
|
+
] });
|
|
784
|
+
}
|
|
785
|
+
function DemographicAccordion({
|
|
786
|
+
section,
|
|
787
|
+
photoUrl,
|
|
788
|
+
photoOmitted,
|
|
789
|
+
expanded,
|
|
790
|
+
onToggle
|
|
791
|
+
}) {
|
|
792
|
+
const panelId = `snap-demo-accordion-${section.id}`;
|
|
793
|
+
const headerId = `snap-demo-accordion-h-${section.id}`;
|
|
794
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "snap-consent-handoff_accordion", children: [
|
|
795
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
796
|
+
"button",
|
|
797
|
+
{
|
|
798
|
+
type: "button",
|
|
799
|
+
id: headerId,
|
|
800
|
+
className: "snap-consent-handoff_accordionHeader",
|
|
801
|
+
"aria-expanded": expanded,
|
|
802
|
+
"aria-controls": panelId,
|
|
803
|
+
onClick: onToggle,
|
|
804
|
+
children: [
|
|
805
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "snap-consent-handoff_accordionTitle", children: section.title }),
|
|
806
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(AccordionChevron, { open: expanded })
|
|
807
|
+
]
|
|
808
|
+
}
|
|
809
|
+
),
|
|
810
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
811
|
+
"div",
|
|
812
|
+
{
|
|
813
|
+
id: panelId,
|
|
814
|
+
role: "region",
|
|
815
|
+
"aria-labelledby": headerId,
|
|
816
|
+
className: expanded ? "snap-consent-handoff_accordionPanel snap-consent-handoff_accordionPanel--open" : "snap-consent-handoff_accordionPanel",
|
|
817
|
+
children: [
|
|
818
|
+
photoOmitted ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "snap-consent-handoff_muted snap-consent-handoff_accordionNote", children: "Photo omitted (too large to preview in the browser)." }) : null,
|
|
819
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
820
|
+
"div",
|
|
821
|
+
{
|
|
822
|
+
className: photoUrl ? "snap-consent-handoff_accordionBody snap-consent-handoff_accordionBody--withPhoto" : "snap-consent-handoff_accordionBody",
|
|
823
|
+
children: [
|
|
824
|
+
photoUrl ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "snap-consent-handoff_accordionPhoto", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("img", { src: photoUrl, alt: "Resident", loading: "lazy", decoding: "async" }) }) : null,
|
|
825
|
+
section.fields.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("dl", { className: "snap-consent-handoff_successFields", children: section.fields.map((row) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "snap-consent-handoff_successField", children: [
|
|
826
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("dt", { children: row.label }),
|
|
827
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("dd", { children: row.value })
|
|
828
|
+
] }, row.key)) }) : photoUrl || photoOmitted ? null : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "snap-consent-handoff_muted", children: "No fields in this category." })
|
|
829
|
+
]
|
|
830
|
+
}
|
|
831
|
+
)
|
|
832
|
+
]
|
|
833
|
+
}
|
|
834
|
+
)
|
|
835
|
+
] });
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
// src/react/SnapConsentHandoffFlow.tsx
|
|
839
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
840
|
+
var defaultQrSize = 376;
|
|
841
|
+
function emitEvt(onFlowEvent, evt) {
|
|
842
|
+
try {
|
|
843
|
+
onFlowEvent?.(evt);
|
|
844
|
+
} catch {
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
function SnapConsentHandoffFlow(props) {
|
|
848
|
+
const {
|
|
849
|
+
integrationToken,
|
|
850
|
+
rpContext,
|
|
851
|
+
agreementId: _agreementIdProp,
|
|
852
|
+
acceptLanguage,
|
|
853
|
+
handoffMode,
|
|
854
|
+
qrRequestBody,
|
|
855
|
+
pollIntervalMs = 1500,
|
|
856
|
+
pollDeadlineMs = 12e4,
|
|
857
|
+
onFlowEvent,
|
|
858
|
+
onSuccess,
|
|
859
|
+
onError,
|
|
860
|
+
onRequestClose,
|
|
861
|
+
displayMode = "modal",
|
|
862
|
+
title,
|
|
863
|
+
userAgent,
|
|
864
|
+
theme: themePartial
|
|
865
|
+
} = props;
|
|
866
|
+
const themeCss = (0, import_react3.useMemo)(() => themeToCssProperties(resolveSnapConsentTheme(themePartial)), [themePartial]);
|
|
867
|
+
const forcedOs = coerceForcedIntentOs(props);
|
|
868
|
+
const flowAbortRef = (0, import_react3.useRef)(new AbortController());
|
|
869
|
+
(0, import_react3.useEffect)(() => {
|
|
870
|
+
flowAbortRef.current.abort();
|
|
871
|
+
flowAbortRef.current = new AbortController();
|
|
872
|
+
return () => {
|
|
873
|
+
flowAbortRef.current.abort();
|
|
874
|
+
};
|
|
875
|
+
}, [integrationToken, handoffMode]);
|
|
876
|
+
const qrObjectUrlRef = (0, import_react3.useRef)(null);
|
|
877
|
+
const sheetRef = (0, import_react3.useRef)(null);
|
|
878
|
+
(0, import_react3.useEffect)(() => {
|
|
879
|
+
return () => {
|
|
880
|
+
if (qrObjectUrlRef.current) URL.revokeObjectURL(qrObjectUrlRef.current);
|
|
881
|
+
qrObjectUrlRef.current = null;
|
|
882
|
+
};
|
|
883
|
+
}, []);
|
|
884
|
+
const signal = () => flowAbortRef.current.signal;
|
|
885
|
+
const [fatalError, setFatalError] = (0, import_react3.useState)(null);
|
|
886
|
+
const [agreementEnvelope, setAgreementEnvelope] = (0, import_react3.useState)(null);
|
|
887
|
+
const [loadingAgreement, setLoadingAgreement] = (0, import_react3.useState)(true);
|
|
888
|
+
const [busyConsent, setBusyConsent] = (0, import_react3.useState)(false);
|
|
889
|
+
const [txnIdDisplay, setTxnIdDisplay] = (0, import_react3.useState)(null);
|
|
890
|
+
const [intentUrl, setIntentUrl] = (0, import_react3.useState)(null);
|
|
891
|
+
const [intentNeedsPick, setIntentNeedsPick] = (0, import_react3.useState)(false);
|
|
892
|
+
const [qrObjectUrl, setQrObjectUrl] = (0, import_react3.useState)(null);
|
|
893
|
+
const [busyPolling, setBusyPolling] = (0, import_react3.useState)(false);
|
|
894
|
+
const [completed, setCompleted] = (0, import_react3.useState)(null);
|
|
895
|
+
const [flowDismissed, setFlowDismissed] = (0, import_react3.useState)(false);
|
|
896
|
+
(0, import_react3.useEffect)(() => {
|
|
897
|
+
setFlowDismissed(false);
|
|
898
|
+
}, [integrationToken, handoffMode]);
|
|
899
|
+
const selectable = (0, import_react3.useMemo)(() => {
|
|
900
|
+
if (!agreementEnvelope) return [];
|
|
901
|
+
return buildSelectablePurposes(agreementEnvelope.data);
|
|
902
|
+
}, [agreementEnvelope]);
|
|
903
|
+
const [selectedPurposesMap, setSelectedPurposesMap] = (0, import_react3.useState)({});
|
|
904
|
+
(0, import_react3.useEffect)(() => {
|
|
905
|
+
setSelectedPurposesMap((prev) => {
|
|
906
|
+
const next = {};
|
|
907
|
+
for (const row of selectable) {
|
|
908
|
+
next[row.id] = prev[row.id] ?? false;
|
|
909
|
+
}
|
|
910
|
+
return next;
|
|
911
|
+
});
|
|
912
|
+
}, [selectable]);
|
|
913
|
+
const hydrateAgreementHtml = (0, import_react3.useCallback)(
|
|
914
|
+
(data) => {
|
|
915
|
+
const html = agreementTextHtml(data, acceptLanguage);
|
|
916
|
+
if (!html) return null;
|
|
917
|
+
return import_dompurify.default.sanitize(html, { ALLOWED_TAGS: ["br"], ALLOWED_ATTR: [] });
|
|
918
|
+
},
|
|
919
|
+
[acceptLanguage]
|
|
920
|
+
);
|
|
921
|
+
const agreementHtml = (0, import_react3.useMemo)(() => {
|
|
922
|
+
if (!agreementEnvelope) return null;
|
|
923
|
+
return hydrateAgreementHtml(agreementEnvelope.data);
|
|
924
|
+
}, [agreementEnvelope, hydrateAgreementHtml]);
|
|
925
|
+
const revokeQrIfAny = () => {
|
|
926
|
+
if (qrObjectUrlRef.current) URL.revokeObjectURL(qrObjectUrlRef.current);
|
|
927
|
+
qrObjectUrlRef.current = null;
|
|
928
|
+
setQrObjectUrl(null);
|
|
929
|
+
};
|
|
930
|
+
const finishWithSuccess = (0, import_react3.useCallback)(
|
|
931
|
+
(raw, txnIdHint) => {
|
|
932
|
+
const normalized = normalizeTxnStatusPayload(raw);
|
|
933
|
+
revokeQrIfAny();
|
|
934
|
+
setIntentUrl(null);
|
|
935
|
+
setIntentNeedsPick(false);
|
|
936
|
+
setTxnIdDisplay(null);
|
|
937
|
+
setBusyPolling(false);
|
|
938
|
+
setBusyConsent(false);
|
|
939
|
+
const completion = {
|
|
940
|
+
txn_id: normalized.txn_id || txnIdHint,
|
|
941
|
+
status: normalized.status,
|
|
942
|
+
raw: normalized
|
|
943
|
+
};
|
|
944
|
+
setCompleted(completion);
|
|
945
|
+
emitEvt(onFlowEvent, { phase: "completed", txnId: completion.txn_id });
|
|
946
|
+
queueMicrotask(() => {
|
|
947
|
+
onSuccess?.(completion);
|
|
948
|
+
});
|
|
949
|
+
},
|
|
950
|
+
[onFlowEvent, onSuccess]
|
|
951
|
+
);
|
|
952
|
+
(0, import_react3.useEffect)(() => {
|
|
953
|
+
if (!completed) return;
|
|
954
|
+
sheetRef.current?.scrollTo({ top: 0, behavior: "smooth" });
|
|
955
|
+
}, [completed]);
|
|
956
|
+
(0, import_react3.useEffect)(() => {
|
|
957
|
+
emitEvt(onFlowEvent, { phase: "agreement-loading" });
|
|
958
|
+
let cancelled = false;
|
|
959
|
+
async function bootstrap() {
|
|
960
|
+
try {
|
|
961
|
+
setLoadingAgreement(true);
|
|
962
|
+
setFatalError(null);
|
|
963
|
+
const env = await getAgreement({
|
|
964
|
+
integrationToken,
|
|
965
|
+
signal: signal(),
|
|
966
|
+
acceptLanguage
|
|
967
|
+
});
|
|
968
|
+
if (cancelled) return;
|
|
969
|
+
if (env.error) throw new Error(env.error_message ?? env.message ?? "Agreement fetch error");
|
|
970
|
+
setAgreementEnvelope(env);
|
|
971
|
+
emitEvt(onFlowEvent, { phase: "agreement-ready" });
|
|
972
|
+
} catch (e) {
|
|
973
|
+
if (e?.name === "AbortError") return;
|
|
974
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
975
|
+
setFatalError(msg);
|
|
976
|
+
emitEvt(onFlowEvent, { phase: "failed", error: e });
|
|
977
|
+
onError?.(e);
|
|
978
|
+
} finally {
|
|
979
|
+
if (!cancelled) setLoadingAgreement(false);
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
void bootstrap();
|
|
983
|
+
return () => {
|
|
984
|
+
cancelled = true;
|
|
985
|
+
};
|
|
986
|
+
}, [integrationToken, acceptLanguage]);
|
|
987
|
+
async function finalizeIntentAndPoll(currentTxnId, platform) {
|
|
988
|
+
revokeQrIfAny();
|
|
989
|
+
emitEvt(onFlowEvent, {
|
|
990
|
+
phase: "handoff-loading",
|
|
991
|
+
txnId: currentTxnId,
|
|
992
|
+
meta: { kind: "ambiguous-choice", chosen: platform }
|
|
993
|
+
});
|
|
994
|
+
try {
|
|
995
|
+
setIntentNeedsPick(false);
|
|
996
|
+
setFatalError(null);
|
|
997
|
+
const res = await createIntent({
|
|
998
|
+
integrationToken,
|
|
999
|
+
txnId: currentTxnId,
|
|
1000
|
+
platform,
|
|
1001
|
+
signal: signal()
|
|
1002
|
+
});
|
|
1003
|
+
setIntentUrl(res.intent_url);
|
|
1004
|
+
emitEvt(onFlowEvent, {
|
|
1005
|
+
phase: "handoff-ready",
|
|
1006
|
+
txnId: currentTxnId,
|
|
1007
|
+
meta: { kind: "ambiguous-choice", chosen: platform }
|
|
1008
|
+
});
|
|
1009
|
+
emitEvt(onFlowEvent, { phase: "polling", txnId: currentTxnId });
|
|
1010
|
+
setBusyPolling(true);
|
|
1011
|
+
const raw = await pollTxnUntilTerminal({
|
|
1012
|
+
integrationToken,
|
|
1013
|
+
txnId: currentTxnId,
|
|
1014
|
+
signal: signal(),
|
|
1015
|
+
pollIntervalMs,
|
|
1016
|
+
deadlineMs: pollDeadlineMs
|
|
1017
|
+
});
|
|
1018
|
+
finishWithSuccess(raw, currentTxnId);
|
|
1019
|
+
} catch (e) {
|
|
1020
|
+
setBusyPolling(false);
|
|
1021
|
+
if (e?.name === "AbortError") return;
|
|
1022
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
1023
|
+
setFatalError(msg);
|
|
1024
|
+
emitEvt(onFlowEvent, { phase: "failed", txnId: currentTxnId, error: e });
|
|
1025
|
+
onError?.(e);
|
|
1026
|
+
}
|
|
1027
|
+
}
|
|
1028
|
+
async function runQrHandoff(currentTxnId) {
|
|
1029
|
+
emitEvt(onFlowEvent, { phase: "handoff-loading", txnId: currentTxnId });
|
|
1030
|
+
revokeQrIfAny();
|
|
1031
|
+
const blob = await generateQr({
|
|
1032
|
+
integrationToken,
|
|
1033
|
+
txnId: currentTxnId,
|
|
1034
|
+
size: qrRequestBody?.size ?? defaultQrSize,
|
|
1035
|
+
signal: signal()
|
|
1036
|
+
});
|
|
1037
|
+
const url = URL.createObjectURL(blob);
|
|
1038
|
+
qrObjectUrlRef.current = url;
|
|
1039
|
+
setQrObjectUrl(url);
|
|
1040
|
+
emitEvt(onFlowEvent, { phase: "handoff-ready", txnId: currentTxnId });
|
|
1041
|
+
}
|
|
1042
|
+
async function runIntentHandoff(currentTxnId, platform) {
|
|
1043
|
+
emitEvt(onFlowEvent, {
|
|
1044
|
+
phase: "handoff-loading",
|
|
1045
|
+
txnId: currentTxnId,
|
|
1046
|
+
meta: forcedOs ? { kind: "forced", platform } : { kind: "resolved", platform }
|
|
1047
|
+
});
|
|
1048
|
+
const res = await createIntent({
|
|
1049
|
+
integrationToken,
|
|
1050
|
+
txnId: currentTxnId,
|
|
1051
|
+
platform,
|
|
1052
|
+
signal: signal()
|
|
1053
|
+
});
|
|
1054
|
+
setIntentUrl(res.intent_url);
|
|
1055
|
+
emitEvt(onFlowEvent, {
|
|
1056
|
+
phase: "handoff-ready",
|
|
1057
|
+
txnId: currentTxnId,
|
|
1058
|
+
meta: forcedOs ? { kind: "forced", platform } : { kind: "resolved", platform }
|
|
1059
|
+
});
|
|
1060
|
+
}
|
|
1061
|
+
const handleContinueConsent = async () => {
|
|
1062
|
+
if (!agreementEnvelope) return;
|
|
1063
|
+
emitEvt(onFlowEvent, { phase: "txn-initiating" });
|
|
1064
|
+
revokeQrIfAny();
|
|
1065
|
+
setIntentUrl(null);
|
|
1066
|
+
setIntentNeedsPick(false);
|
|
1067
|
+
setCompleted(null);
|
|
1068
|
+
try {
|
|
1069
|
+
setBusyConsent(true);
|
|
1070
|
+
setFatalError(null);
|
|
1071
|
+
const purposeIds = selectable.filter((item) => selectedPurposesMap[item.id]).map((item) => item.id);
|
|
1072
|
+
if (!purposeIds.length) throw new Error("Please select at least one purpose.");
|
|
1073
|
+
const txn = await initiateTxn({
|
|
1074
|
+
integrationToken,
|
|
1075
|
+
body: {
|
|
1076
|
+
purpose_ids: purposeIds,
|
|
1077
|
+
rp_context: {
|
|
1078
|
+
ref_id: rpContext.reference_id
|
|
1079
|
+
}
|
|
1080
|
+
},
|
|
1081
|
+
signal: signal()
|
|
1082
|
+
});
|
|
1083
|
+
setTxnIdDisplay(txn.txn_id);
|
|
1084
|
+
emitEvt(onFlowEvent, { phase: "txn-created", txnId: txn.txn_id });
|
|
1085
|
+
if (handoffMode === "qr") {
|
|
1086
|
+
await runQrHandoff(txn.txn_id);
|
|
1087
|
+
emitEvt(onFlowEvent, { phase: "polling", txnId: txn.txn_id });
|
|
1088
|
+
setBusyPolling(true);
|
|
1089
|
+
try {
|
|
1090
|
+
const raw = await pollTxnUntilTerminal({
|
|
1091
|
+
integrationToken,
|
|
1092
|
+
txnId: txn.txn_id,
|
|
1093
|
+
signal: signal(),
|
|
1094
|
+
pollIntervalMs,
|
|
1095
|
+
deadlineMs: pollDeadlineMs
|
|
1096
|
+
});
|
|
1097
|
+
finishWithSuccess(raw, txn.txn_id);
|
|
1098
|
+
} catch (pollErr) {
|
|
1099
|
+
setBusyPolling(false);
|
|
1100
|
+
throw pollErr;
|
|
1101
|
+
}
|
|
1102
|
+
} else {
|
|
1103
|
+
if (forcedOs) {
|
|
1104
|
+
setIntentNeedsPick(false);
|
|
1105
|
+
await runIntentHandoff(txn.txn_id, forcedOs);
|
|
1106
|
+
emitEvt(onFlowEvent, { phase: "polling", txnId: txn.txn_id });
|
|
1107
|
+
setBusyPolling(true);
|
|
1108
|
+
try {
|
|
1109
|
+
const raw = await pollTxnUntilTerminal({
|
|
1110
|
+
integrationToken,
|
|
1111
|
+
txnId: txn.txn_id,
|
|
1112
|
+
signal: signal(),
|
|
1113
|
+
pollIntervalMs,
|
|
1114
|
+
deadlineMs: pollDeadlineMs
|
|
1115
|
+
});
|
|
1116
|
+
finishWithSuccess(raw, txn.txn_id);
|
|
1117
|
+
} catch (pollErr) {
|
|
1118
|
+
setBusyPolling(false);
|
|
1119
|
+
throw pollErr;
|
|
1120
|
+
}
|
|
1121
|
+
} else {
|
|
1122
|
+
const inferred = detectIntentPlatform(userAgent);
|
|
1123
|
+
if (inferred.kind === "resolved") {
|
|
1124
|
+
setIntentNeedsPick(false);
|
|
1125
|
+
emitEvt(onFlowEvent, {
|
|
1126
|
+
phase: "txn-created",
|
|
1127
|
+
txnId: txn.txn_id,
|
|
1128
|
+
meta: { kind: "resolved", platform: inferred.platform }
|
|
1129
|
+
});
|
|
1130
|
+
await runIntentHandoff(txn.txn_id, inferred.platform);
|
|
1131
|
+
emitEvt(onFlowEvent, { phase: "polling", txnId: txn.txn_id });
|
|
1132
|
+
setBusyPolling(true);
|
|
1133
|
+
try {
|
|
1134
|
+
const raw = await pollTxnUntilTerminal({
|
|
1135
|
+
integrationToken,
|
|
1136
|
+
txnId: txn.txn_id,
|
|
1137
|
+
signal: signal(),
|
|
1138
|
+
pollIntervalMs,
|
|
1139
|
+
deadlineMs: pollDeadlineMs
|
|
1140
|
+
});
|
|
1141
|
+
finishWithSuccess(raw, txn.txn_id);
|
|
1142
|
+
} catch (pollErr) {
|
|
1143
|
+
setBusyPolling(false);
|
|
1144
|
+
throw pollErr;
|
|
1145
|
+
}
|
|
1146
|
+
} else {
|
|
1147
|
+
emitEvt(onFlowEvent, {
|
|
1148
|
+
phase: "txn-created",
|
|
1149
|
+
txnId: txn.txn_id,
|
|
1150
|
+
meta: { kind: "ambiguous-choice" }
|
|
1151
|
+
});
|
|
1152
|
+
setIntentNeedsPick(true);
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
}
|
|
1156
|
+
setBusyConsent(false);
|
|
1157
|
+
} catch (e) {
|
|
1158
|
+
setBusyConsent(false);
|
|
1159
|
+
setBusyPolling(false);
|
|
1160
|
+
if (e?.name === "AbortError") return;
|
|
1161
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
1162
|
+
setFatalError(msg);
|
|
1163
|
+
emitEvt(onFlowEvent, { phase: "failed", error: e });
|
|
1164
|
+
onError?.(e);
|
|
1165
|
+
}
|
|
1166
|
+
};
|
|
1167
|
+
const handlePickIntent = (os) => async () => {
|
|
1168
|
+
if (!txnIdDisplay) return;
|
|
1169
|
+
await finalizeIntentAndPoll(txnIdDisplay, os);
|
|
1170
|
+
};
|
|
1171
|
+
const handleCopyIntent = async () => {
|
|
1172
|
+
try {
|
|
1173
|
+
if (!intentUrl) return;
|
|
1174
|
+
await navigator.clipboard.writeText(intentUrl);
|
|
1175
|
+
} catch {
|
|
1176
|
+
}
|
|
1177
|
+
};
|
|
1178
|
+
const handleClosePressed = () => {
|
|
1179
|
+
emitEvt(onFlowEvent, { phase: "cancelled" });
|
|
1180
|
+
flowAbortRef.current.abort();
|
|
1181
|
+
const close = onRequestClose;
|
|
1182
|
+
queueMicrotask(() => {
|
|
1183
|
+
close?.();
|
|
1184
|
+
if (close === void 0) {
|
|
1185
|
+
setFlowDismissed(true);
|
|
1186
|
+
}
|
|
1187
|
+
});
|
|
1188
|
+
};
|
|
1189
|
+
const shellClass = displayMode === "modal" ? "snap-consent-handoff_overlay" : "snap-consent-handoff_inline";
|
|
1190
|
+
const headingFallback = agreementEnvelope?.data.name ?? "Consent";
|
|
1191
|
+
if (flowDismissed) {
|
|
1192
|
+
return null;
|
|
1193
|
+
}
|
|
1194
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "snap-consent-handoff", style: themeCss, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: shellClass, "data-testid": "snap-consent-handoff-shell", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "snap-consent-handoff_body", children: [
|
|
1195
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1196
|
+
"div",
|
|
1197
|
+
{
|
|
1198
|
+
ref: sheetRef,
|
|
1199
|
+
className: "snap-consent-handoff_sheet",
|
|
1200
|
+
role: "dialog",
|
|
1201
|
+
"aria-modal": displayMode === "modal",
|
|
1202
|
+
children: [
|
|
1203
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("header", { className: "snap-consent-handoff_hdr", children: [
|
|
1204
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h2", { className: "snap-consent-handoff_title", children: title ?? headingFallback }),
|
|
1205
|
+
displayMode === "modal" ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1206
|
+
"button",
|
|
1207
|
+
{
|
|
1208
|
+
type: "button",
|
|
1209
|
+
className: "snap-consent-handoff_btnIcon",
|
|
1210
|
+
"aria-label": "Close",
|
|
1211
|
+
"data-testid": "snap-consent-handoff-close",
|
|
1212
|
+
onClick: handleClosePressed,
|
|
1213
|
+
children: "\xD7"
|
|
1214
|
+
}
|
|
1215
|
+
) : null
|
|
1216
|
+
] }),
|
|
1217
|
+
completed ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "snap-consent-handoff_done", "data-testid": "snap-consent-handoff-done", children: [
|
|
1218
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FlowErrorBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TxnSuccessPanel, { status: normalizeTxnStatusPayload(completed.raw) }) }),
|
|
1219
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "snap-consent-handoff_actions", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1220
|
+
"button",
|
|
1221
|
+
{
|
|
1222
|
+
type: "button",
|
|
1223
|
+
className: "snap-consent-handoff_btnPrimary",
|
|
1224
|
+
"data-testid": "snap-consent-handoff-done-button",
|
|
1225
|
+
onClick: handleClosePressed,
|
|
1226
|
+
children: "Done"
|
|
1227
|
+
}
|
|
1228
|
+
) })
|
|
1229
|
+
] }) : null,
|
|
1230
|
+
!completed && fatalError ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "snap-consent-handoff_err", children: fatalError }) : null,
|
|
1231
|
+
!completed && loadingAgreement ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { "aria-busy": true, children: "Loading agreement\u2026" }) : null,
|
|
1232
|
+
!completed && agreementEnvelope ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { "aria-live": "polite", children: [
|
|
1233
|
+
agreementHtml ? (
|
|
1234
|
+
// eslint-disable-next-line react/no-danger -- sanitized via DOMPurify
|
|
1235
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("article", { className: "snap-consent-handoff_notice", dangerouslySetInnerHTML: { __html: agreementHtml } })
|
|
1236
|
+
) : null,
|
|
1237
|
+
!txnIdDisplay ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("section", { children: [
|
|
1238
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h3", { className: "snap-consent-handoff_headingSm", children: "Consent Required" }),
|
|
1239
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "snap-consent-handoff_list", children: selectable.map((row) => {
|
|
1240
|
+
const rowDisabled = busyConsent || busyPolling || loadingAgreement;
|
|
1241
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1242
|
+
"label",
|
|
1243
|
+
{
|
|
1244
|
+
className: [
|
|
1245
|
+
"snap-consent-handoff_row",
|
|
1246
|
+
selectedPurposesMap[row.id] ? "snap-consent-handoff_row--selected" : "",
|
|
1247
|
+
rowDisabled ? "snap-consent-handoff_row--disabled" : ""
|
|
1248
|
+
].filter(Boolean).join(" "),
|
|
1249
|
+
htmlFor: `purpose-${row.id}`,
|
|
1250
|
+
children: [
|
|
1251
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1252
|
+
"input",
|
|
1253
|
+
{
|
|
1254
|
+
id: `purpose-${row.id}`,
|
|
1255
|
+
type: "checkbox",
|
|
1256
|
+
checked: Boolean(selectedPurposesMap[row.id]),
|
|
1257
|
+
disabled: busyConsent || busyPolling || loadingAgreement,
|
|
1258
|
+
onChange: (e) => setSelectedPurposesMap((prev) => ({
|
|
1259
|
+
...prev,
|
|
1260
|
+
[row.id]: e.target.checked
|
|
1261
|
+
}))
|
|
1262
|
+
}
|
|
1263
|
+
),
|
|
1264
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { fontWeight: 600 }, children: row.label })
|
|
1265
|
+
]
|
|
1266
|
+
},
|
|
1267
|
+
row.id
|
|
1268
|
+
);
|
|
1269
|
+
}) }),
|
|
1270
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "snap-consent-handoff_actions snap-consent-handoff_actions--split", children: [
|
|
1271
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1272
|
+
"button",
|
|
1273
|
+
{
|
|
1274
|
+
type: "button",
|
|
1275
|
+
className: "snap-consent-handoff_btnSecondary",
|
|
1276
|
+
"data-testid": "snap-consent-handoff-cancel",
|
|
1277
|
+
disabled: busyConsent || busyPolling || loadingAgreement,
|
|
1278
|
+
onClick: handleClosePressed,
|
|
1279
|
+
children: "Cancel"
|
|
1280
|
+
}
|
|
1281
|
+
),
|
|
1282
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1283
|
+
"button",
|
|
1284
|
+
{
|
|
1285
|
+
type: "button",
|
|
1286
|
+
className: "snap-consent-handoff_btnPrimary",
|
|
1287
|
+
"data-testid": "snap-consent-handoff-submit",
|
|
1288
|
+
disabled: busyConsent || busyPolling || loadingAgreement,
|
|
1289
|
+
onClick: () => void handleContinueConsent(),
|
|
1290
|
+
children: "I Agree"
|
|
1291
|
+
}
|
|
1292
|
+
)
|
|
1293
|
+
] })
|
|
1294
|
+
] }) : null,
|
|
1295
|
+
txnIdDisplay ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("section", { style: { marginTop: "14px" }, "data-testid": "snap-consent-handoff-active-txn", children: [
|
|
1296
|
+
handoffMode === "intent" ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children: intentNeedsPick ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "snap-consent-handoff_intents", role: "group", "aria-label": "Choose OS", children: [
|
|
1297
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "snap-consent-handoff_muted", children: "Automatic platform detection couldn\u2019t confidently choose Android vs iOS. Pick yours:" }),
|
|
1298
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1299
|
+
"button",
|
|
1300
|
+
{
|
|
1301
|
+
type: "button",
|
|
1302
|
+
className: "snap-consent-handoff_btnPrimary",
|
|
1303
|
+
onClick: () => void handlePickIntent("android")(),
|
|
1304
|
+
disabled: busyConsent || busyPolling,
|
|
1305
|
+
children: "Continue with Android"
|
|
1306
|
+
}
|
|
1307
|
+
),
|
|
1308
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1309
|
+
"button",
|
|
1310
|
+
{
|
|
1311
|
+
type: "button",
|
|
1312
|
+
className: "snap-consent-handoff_btnPrimary",
|
|
1313
|
+
onClick: () => void handlePickIntent("ios")(),
|
|
1314
|
+
disabled: busyConsent || busyPolling,
|
|
1315
|
+
children: "Continue with iPhone / iPad"
|
|
1316
|
+
}
|
|
1317
|
+
)
|
|
1318
|
+
] }) : intentUrl ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { children: [
|
|
1319
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("textarea", { readOnly: true, value: intentUrl, className: "snap-consent-handoff_codeBox" }),
|
|
1320
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "snap-consent-handoff_actions", children: [
|
|
1321
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { type: "button", className: "snap-consent-handoff_btnSecondary", onClick: () => void handleCopyIntent(), children: "Copy deeplink" }),
|
|
1322
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("a", { className: "snap-consent-handoff_btnSecondary", href: intentUrl, style: { textDecoration: "none" }, children: "Open app" })
|
|
1323
|
+
] }),
|
|
1324
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "snap-consent-handoff_muted", style: { fontSize: "12px" }, children: "Some in-app browsers block custom-url schemes \u2014 use Safari/Chrome where possible." }),
|
|
1325
|
+
(busyConsent || busyPolling) && intentUrl ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "snap-consent-handoff_notice", "aria-live": "polite", children: busyPolling ? "Polling transaction status..." : "" }) : null
|
|
1326
|
+
] }) : busyConsent ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { children: "Preparing app link..." }) : busyPolling ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { children: "Waiting on device handshake..." }) : null }) : null,
|
|
1327
|
+
handoffMode === "qr" ? qrObjectUrl ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("figure", { className: "snap-consent-handoff_qr", "data-testid": "snap-consent-handoff-qr", children: [
|
|
1328
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("img", { alt: "QR code", src: qrObjectUrl }),
|
|
1329
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("figcaption", { className: "snap-consent-handoff_muted", children: [
|
|
1330
|
+
"Scan with your authorised app to proceed.",
|
|
1331
|
+
busyPolling ? " Listening for confirmation..." : null
|
|
1332
|
+
] })
|
|
1333
|
+
] }) : busyConsent ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { children: "Generating QR..." }) : busyPolling ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { children: "Waiting for scanned confirmation..." }) : null : null
|
|
1334
|
+
] }) : null
|
|
1335
|
+
] }) : null
|
|
1336
|
+
]
|
|
1337
|
+
}
|
|
1338
|
+
),
|
|
1339
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(PoweredBySnapKyc, {})
|
|
1340
|
+
] }) }) });
|
|
1341
|
+
}
|
|
1342
|
+
|
|
1343
|
+
// src/react/openSnapConsentHandoffFlow.tsx
|
|
1344
|
+
var import_react4 = require("react");
|
|
1345
|
+
var import_client2 = require("react-dom/client");
|
|
1346
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
1347
|
+
function openSnapConsentHandoffFlow(options) {
|
|
1348
|
+
if (typeof document === "undefined") {
|
|
1349
|
+
throw new Error("openSnapConsentHandoffFlow requires a browser environment");
|
|
1350
|
+
}
|
|
1351
|
+
const { strict = false, displayMode = "modal", ...flowProps } = options;
|
|
1352
|
+
const mount = document.createElement("div");
|
|
1353
|
+
mount.setAttribute("data-snap-consent-handoff-host", "");
|
|
1354
|
+
const root = (0, import_client2.createRoot)(mount);
|
|
1355
|
+
document.body.appendChild(mount);
|
|
1356
|
+
let disposed = false;
|
|
1357
|
+
function dispose() {
|
|
1358
|
+
if (disposed) return;
|
|
1359
|
+
disposed = true;
|
|
1360
|
+
try {
|
|
1361
|
+
root.unmount();
|
|
1362
|
+
} finally {
|
|
1363
|
+
mount.remove();
|
|
1364
|
+
}
|
|
1365
|
+
}
|
|
1366
|
+
const element = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SnapConsentHandoffFlow, { ...flowProps, displayMode, onRequestClose: () => dispose() });
|
|
1367
|
+
try {
|
|
1368
|
+
root.render(strict ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react4.StrictMode, { children: element }) : element);
|
|
1369
|
+
} catch (e) {
|
|
1370
|
+
dispose();
|
|
1371
|
+
throw e instanceof Error ? e : new Error(String(e));
|
|
1372
|
+
}
|
|
1373
|
+
return { dispose };
|
|
1374
|
+
}
|
|
1375
|
+
var openSnapConsentQrFlow = openSnapConsentHandoffFlow;
|
|
1376
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
1377
|
+
0 && (module.exports = {
|
|
1378
|
+
API_ORIGIN,
|
|
1379
|
+
DEFAULT_SNAP_CONSENT_THEME,
|
|
1380
|
+
SnapConsentHandoffFlow,
|
|
1381
|
+
SnapSdkHttpError,
|
|
1382
|
+
demographicAccordionSections,
|
|
1383
|
+
demographicFieldsForDisplay,
|
|
1384
|
+
extractDemographicData,
|
|
1385
|
+
formatDisplayValue,
|
|
1386
|
+
formatPurposeLabel,
|
|
1387
|
+
hasDisplayableDemographics,
|
|
1388
|
+
normalizeTxnStatusPayload,
|
|
1389
|
+
openSnapConsentHandoffFlow,
|
|
1390
|
+
openSnapConsentQrFlow,
|
|
1391
|
+
parseDemographicPayload,
|
|
1392
|
+
resolveSnapConsentTheme,
|
|
1393
|
+
themeToCssProperties
|
|
1394
|
+
});
|
|
1395
|
+
//# sourceMappingURL=index.cjs.map
|