datakeen-session-react 1.1.140-rc.65 → 1.1.140-rc.67
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/dist/cjs/components/template/ExternalVerificationNodeHandler.js +100 -45
- package/dist/cjs/components/template/ExternalVerificationNodeHandler.js.map +1 -1
- package/dist/cjs/components/template/TemplateNodeRenderer.js +17 -8
- package/dist/cjs/components/template/TemplateNodeRenderer.js.map +1 -1
- package/dist/cjs/hooks/useStepNavigation.js +23 -0
- package/dist/cjs/hooks/useStepNavigation.js.map +1 -1
- package/dist/cjs/hooks/useUserInputForm.js +29 -0
- package/dist/cjs/hooks/useUserInputForm.js.map +1 -1
- package/dist/cjs/index.css.js +1 -1
- package/dist/cjs/types/session.js.map +1 -1
- package/dist/esm/components/template/ExternalVerificationNodeHandler.js +100 -45
- package/dist/esm/components/template/ExternalVerificationNodeHandler.js.map +1 -1
- package/dist/esm/components/template/TemplateNodeRenderer.js +17 -8
- package/dist/esm/components/template/TemplateNodeRenderer.js.map +1 -1
- package/dist/esm/hooks/useStepNavigation.js +23 -0
- package/dist/esm/hooks/useStepNavigation.js.map +1 -1
- package/dist/esm/hooks/useUserInputForm.js +29 -0
- package/dist/esm/hooks/useUserInputForm.js.map +1 -1
- package/dist/esm/index.css.js +1 -1
- package/dist/esm/types/session.js.map +1 -1
- package/docs/multi-runs.md +5 -1
- package/package.json +1 -1
|
@@ -13,20 +13,24 @@ var LoadingState = require('../states/LoadingState.js');
|
|
|
13
13
|
var Title = require('../ui/Title.js');
|
|
14
14
|
var Subtitle = require('../ui/Subtitle.js');
|
|
15
15
|
var Button = require('../ui/Button.js');
|
|
16
|
-
var PageActions = require('../ui/PageActions.js');
|
|
17
|
-
var MobilePageLayout = require('../ui/MobilePageLayout.js');
|
|
18
16
|
|
|
17
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
19
18
|
var FIELD_ALIASES = {
|
|
20
19
|
siren: ['siren', 'siren_number', 'company_siren', 'legal_siren', 'num_siren'],
|
|
21
20
|
siret: ['siret', 'siret_number', 'company_siret', 'legal_siret', 'num_siret'],
|
|
22
21
|
};
|
|
22
|
+
var STANDARD_FIELD_ALIASES = {
|
|
23
|
+
prenom: ['firstName', 'first_name', 'prenom'],
|
|
24
|
+
nom: ['lastName', 'last_name', 'surname', 'familyName', 'nom'],
|
|
25
|
+
date_naissance: ['birthDate', 'birth_date', 'dateOfBirth', 'date_naissance'],
|
|
26
|
+
};
|
|
23
27
|
var normalizeReferenceField = function (field) {
|
|
24
28
|
if (!field)
|
|
25
29
|
return undefined;
|
|
26
|
-
var
|
|
27
|
-
if (
|
|
30
|
+
var n = field.toLowerCase().replace(/[\s_.-]/g, '');
|
|
31
|
+
if (n.includes('siret'))
|
|
28
32
|
return 'siret';
|
|
29
|
-
if (
|
|
33
|
+
if (n.includes('siren'))
|
|
30
34
|
return 'siren';
|
|
31
35
|
return undefined;
|
|
32
36
|
};
|
|
@@ -49,14 +53,18 @@ var resolveFieldValue = function (nodeInput, userInputFlat, keys) {
|
|
|
49
53
|
}
|
|
50
54
|
return undefined;
|
|
51
55
|
};
|
|
56
|
+
var expandFieldKey = function (key) { var _a; return tslib_es6.__spreadArray([key], ((_a = STANDARD_FIELD_ALIASES[key]) !== null && _a !== void 0 ? _a : []), true); };
|
|
57
|
+
// ─── Component ────────────────────────────────────────────────────────────────
|
|
52
58
|
var ExternalVerificationNodeHandler = function (_a) {
|
|
53
|
-
var
|
|
59
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
60
|
+
var node = _a.node, session = _a.session, userInput = _a.userInput, setUserInput = _a.setUserInput, onNext = _a.onNext, onPrevious = _a.onPrevious, onNavigateToNode = _a.onNavigateToNode;
|
|
54
61
|
var t = reactI18next.useTranslation('translation', { i18n: index.default }).t;
|
|
55
62
|
var nodeData = node;
|
|
56
63
|
var apiType = String(nodeData.targetApi || 'INSEE');
|
|
57
64
|
var isInpiRbe = apiType === 'INPI_RBE';
|
|
58
|
-
var
|
|
59
|
-
var
|
|
65
|
+
var _o = React.useState('loading'), phase = _o[0], setPhase = _o[1];
|
|
66
|
+
var _p = React.useState(null), errorScreenData = _p[0], setErrorScreenData = _p[1];
|
|
67
|
+
var _q = React.useState(function () {
|
|
60
68
|
if (isInpiRbe) {
|
|
61
69
|
return [
|
|
62
70
|
{
|
|
@@ -81,7 +89,7 @@ var ExternalVerificationNodeHandler = function (_a) {
|
|
|
81
89
|
subtitle: t('verification_node.verifying_desc', 'Connexion au service externe'),
|
|
82
90
|
status: 'active',
|
|
83
91
|
}];
|
|
84
|
-
}), steps =
|
|
92
|
+
}), steps = _q[0], setSteps = _q[1];
|
|
85
93
|
var advanceStep = function (index) {
|
|
86
94
|
setSteps(function (prev) {
|
|
87
95
|
return prev.map(function (s, i) {
|
|
@@ -93,24 +101,14 @@ var ExternalVerificationNodeHandler = function (_a) {
|
|
|
93
101
|
});
|
|
94
102
|
});
|
|
95
103
|
};
|
|
96
|
-
var completeSteps = function () {
|
|
97
|
-
setSteps(function (prev) { return prev.map(function (s) { return (tslib_es6.__assign(tslib_es6.__assign({}, s), { status: 'done' })); }); });
|
|
98
|
-
};
|
|
99
|
-
// Mapping from builder TYPE_FIELDS keys → actual SDK userInput storage keys.
|
|
100
|
-
// e.g. builder stores 'prenom' but SDK stores 'firstName'.
|
|
101
|
-
var STANDARD_FIELD_ALIASES = {
|
|
102
|
-
prenom: ['firstName', 'first_name', 'prenom'],
|
|
103
|
-
nom: ['lastName', 'last_name', 'surname', 'familyName', 'nom'],
|
|
104
|
-
date_naissance: ['birthDate', 'birth_date', 'dateOfBirth', 'date_naissance'],
|
|
105
|
-
};
|
|
106
|
-
var expandFieldKey = function (key) { var _a; return tslib_es6.__spreadArray([key], ((_a = STANDARD_FIELD_ALIASES[key]) !== null && _a !== void 0 ? _a : []), true); };
|
|
104
|
+
var completeSteps = function () { return setSteps(function (prev) { return prev.map(function (s) { return (tslib_es6.__assign(tslib_es6.__assign({}, s), { status: 'done' })); }); }); };
|
|
107
105
|
React.useEffect(function () {
|
|
108
106
|
var abortController = new AbortController();
|
|
109
107
|
var run = function () { return tslib_es6.__awaiter(void 0, void 0, void 0, function () {
|
|
110
|
-
var result, referenceField, referenceValueMasked, referenceNodeId, referenceVariable, nodeInput, userInputFlat, lookupKeys, referenceValue, allCustomFields, _i, _a, _b, value, str, comparisonConfig, cfg, personNodeInput, flat, firstNameKeys, lastNameKeys, birthDateKeys,
|
|
111
|
-
var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
112
|
-
return tslib_es6.__generator(this, function (
|
|
113
|
-
switch (
|
|
108
|
+
var result, referenceField, referenceValueMasked, resolvedReferenceValue, referenceNodeId, referenceVariable, submittedFirstName, submittedLastName, nodeInput, userInputFlat, lookupKeys, referenceValue, allCustomFields, _i, _a, _b, value, str, comparisonConfig, cfg, personNodeInput, flat, firstNameKeys, lastNameKeys, birthDateKeys, dateOfBirth, response, res, apiErr_1, apiResult, inpi, cfg;
|
|
109
|
+
var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
110
|
+
return tslib_es6.__generator(this, function (_s) {
|
|
111
|
+
switch (_s.label) {
|
|
114
112
|
case 0:
|
|
115
113
|
result = {
|
|
116
114
|
isVerified: false,
|
|
@@ -118,13 +116,16 @@ var ExternalVerificationNodeHandler = function (_a) {
|
|
|
118
116
|
message: 'Verification did not run.',
|
|
119
117
|
};
|
|
120
118
|
referenceValueMasked = '';
|
|
121
|
-
|
|
119
|
+
resolvedReferenceValue = '';
|
|
120
|
+
referenceNodeId = String(nodeData.referenceNodeId || '');
|
|
121
|
+
referenceVariable = String(nodeData.referenceVariable || '');
|
|
122
|
+
submittedFirstName = '';
|
|
123
|
+
submittedLastName = '';
|
|
124
|
+
_s.label = 1;
|
|
122
125
|
case 1:
|
|
123
|
-
|
|
126
|
+
_s.trys.push([1, 9, , 10]);
|
|
124
127
|
if (!(session === null || session === void 0 ? void 0 : session.id))
|
|
125
128
|
throw new Error('Session ID is missing');
|
|
126
|
-
referenceNodeId = String(nodeData.referenceNodeId || '');
|
|
127
|
-
referenceVariable = String(nodeData.referenceVariable || '');
|
|
128
129
|
referenceField = normalizeReferenceField(String(nodeData.referenceField || referenceVariable || ''));
|
|
129
130
|
if (!(!referenceNodeId || !referenceField)) return [3 /*break*/, 2];
|
|
130
131
|
result = {
|
|
@@ -139,7 +140,6 @@ var ExternalVerificationNodeHandler = function (_a) {
|
|
|
139
140
|
userInputFlat = userInput;
|
|
140
141
|
lookupKeys = Array.from(new Set(tslib_es6.__spreadArray([referenceVariable, referenceField], FIELD_ALIASES[referenceField], true).filter(Boolean)));
|
|
141
142
|
referenceValue = resolveFieldValue(nodeInput, userInputFlat, lookupKeys);
|
|
142
|
-
// Smart numeric fallback
|
|
143
143
|
if (!referenceValue) {
|
|
144
144
|
allCustomFields = tslib_es6.__assign(tslib_es6.__assign(tslib_es6.__assign({}, ((userInputFlat === null || userInputFlat === void 0 ? void 0 : userInputFlat.customFormData) || {})), ((nodeInput === null || nodeInput === void 0 ? void 0 : nodeInput.customFormData) || {})), (nodeInput || {}));
|
|
145
145
|
for (_i = 0, _a = Object.entries(allCustomFields); _i < _a.length; _i++) {
|
|
@@ -166,6 +166,7 @@ var ExternalVerificationNodeHandler = function (_a) {
|
|
|
166
166
|
};
|
|
167
167
|
return [3 /*break*/, 8];
|
|
168
168
|
case 3:
|
|
169
|
+
resolvedReferenceValue = referenceValue;
|
|
169
170
|
referenceValueMasked = maskReferenceValue(referenceValue);
|
|
170
171
|
comparisonConfig = void 0;
|
|
171
172
|
if (isInpiRbe && ((_c = nodeData.comparisonConfig) === null || _c === void 0 ? void 0 : _c.personReferenceNodeId)) {
|
|
@@ -177,37 +178,35 @@ var ExternalVerificationNodeHandler = function (_a) {
|
|
|
177
178
|
birthDateKeys = cfg.personBirthDateField
|
|
178
179
|
? expandFieldKey(cfg.personBirthDateField).filter(Boolean)
|
|
179
180
|
: [];
|
|
180
|
-
|
|
181
|
-
|
|
181
|
+
submittedFirstName = (_g = resolveFieldValue(personNodeInput, flat, firstNameKeys)) !== null && _g !== void 0 ? _g : '';
|
|
182
|
+
submittedLastName = (_h = resolveFieldValue(personNodeInput, flat, lastNameKeys)) !== null && _h !== void 0 ? _h : '';
|
|
182
183
|
dateOfBirth = cfg.compareBirthDate && birthDateKeys.length
|
|
183
184
|
? resolveFieldValue(personNodeInput, flat, birthDateKeys)
|
|
184
185
|
: undefined;
|
|
185
|
-
if (
|
|
186
|
-
comparisonConfig = tslib_es6.__assign({ firstName:
|
|
186
|
+
if (submittedFirstName && submittedLastName) {
|
|
187
|
+
comparisonConfig = tslib_es6.__assign({ firstName: submittedFirstName, lastName: submittedLastName, compareTargets: (_j = cfg.compareTargets) !== null && _j !== void 0 ? _j : ['mandataires'] }, (dateOfBirth ? { dateOfBirth: dateOfBirth } : {}));
|
|
187
188
|
}
|
|
188
189
|
}
|
|
189
|
-
// Step 2 — after building request
|
|
190
190
|
if (isInpiRbe)
|
|
191
191
|
advanceStep(1);
|
|
192
|
-
|
|
192
|
+
_s.label = 4;
|
|
193
193
|
case 4:
|
|
194
|
-
|
|
194
|
+
_s.trys.push([4, 7, , 8]);
|
|
195
195
|
return [4 /*yield*/, api.apiService.post("/session/sdk/".concat(session.id, "/verify-external/").concat(node.id), tslib_es6.__assign({ apiType: apiType, referenceValue: referenceValue, referenceField: referenceField }, (comparisonConfig ? { comparisonConfig: comparisonConfig } : {})), { signal: abortController.signal })];
|
|
196
196
|
case 5:
|
|
197
|
-
response =
|
|
198
|
-
// Step 3 — response received
|
|
197
|
+
response = _s.sent();
|
|
199
198
|
if (isInpiRbe)
|
|
200
199
|
advanceStep(2);
|
|
201
200
|
return [4 /*yield*/, new Promise(function (r) { return setTimeout(r, 600); })];
|
|
202
201
|
case 6:
|
|
203
|
-
|
|
202
|
+
_s.sent();
|
|
204
203
|
res = (_k = response.data) === null || _k === void 0 ? void 0 : _k.data;
|
|
205
204
|
if (res && typeof res.isVerified === 'boolean') {
|
|
206
205
|
result = res;
|
|
207
206
|
}
|
|
208
207
|
return [3 /*break*/, 8];
|
|
209
208
|
case 7:
|
|
210
|
-
apiErr_1 =
|
|
209
|
+
apiErr_1 = _s.sent();
|
|
211
210
|
if (abortController.signal.aborted)
|
|
212
211
|
return [2 /*return*/];
|
|
213
212
|
if (isInpiRbe)
|
|
@@ -227,7 +226,7 @@ var ExternalVerificationNodeHandler = function (_a) {
|
|
|
227
226
|
return [3 /*break*/, 8];
|
|
228
227
|
case 8: return [3 /*break*/, 10];
|
|
229
228
|
case 9:
|
|
230
|
-
|
|
229
|
+
_s.sent();
|
|
231
230
|
result = {
|
|
232
231
|
isVerified: false,
|
|
233
232
|
status: 'external_error',
|
|
@@ -254,15 +253,39 @@ var ExternalVerificationNodeHandler = function (_a) {
|
|
|
254
253
|
hasError: result.status !== 'ok' && result.status !== 'not_found' && result.status !== 'person_mismatch',
|
|
255
254
|
}, _a)));
|
|
256
255
|
});
|
|
257
|
-
// Determine phase to show
|
|
258
256
|
if (result.status === 'person_mismatch') {
|
|
257
|
+
inpi = result.inpiData;
|
|
258
|
+
cfg = nodeData.comparisonConfig;
|
|
259
|
+
setErrorScreenData({
|
|
260
|
+
submittedLastName: submittedLastName,
|
|
261
|
+
submittedFirstName: submittedFirstName,
|
|
262
|
+
mandataires: ((_o = inpi === null || inpi === void 0 ? void 0 : inpi.mandataires) !== null && _o !== void 0 ? _o : []).filter(function (m) { return m.type === 'individu'; }),
|
|
263
|
+
beneficiairesEffectifs: (_p = inpi === null || inpi === void 0 ? void 0 : inpi.beneficiairesEffectifs) !== null && _p !== void 0 ? _p : [],
|
|
264
|
+
compareTargets: (_q = cfg === null || cfg === void 0 ? void 0 : cfg.compareTargets) !== null && _q !== void 0 ? _q : ['mandataires'],
|
|
265
|
+
personNodeId: (_r = cfg === null || cfg === void 0 ? void 0 : cfg.personReferenceNodeId) !== null && _r !== void 0 ? _r : '',
|
|
266
|
+
siren: resolvedReferenceValue,
|
|
267
|
+
sirenNodeId: referenceNodeId,
|
|
268
|
+
});
|
|
259
269
|
setPhase('mismatch');
|
|
260
270
|
}
|
|
261
|
-
else if (result.
|
|
271
|
+
else if (result.status === 'not_found' || result.status === 'invalid_input') {
|
|
272
|
+
setErrorScreenData({
|
|
273
|
+
submittedLastName: '',
|
|
274
|
+
submittedFirstName: '',
|
|
275
|
+
mandataires: [],
|
|
276
|
+
beneficiairesEffectifs: [],
|
|
277
|
+
compareTargets: [],
|
|
278
|
+
personNodeId: '',
|
|
279
|
+
siren: resolvedReferenceValue,
|
|
280
|
+
sirenNodeId: referenceNodeId,
|
|
281
|
+
});
|
|
282
|
+
setPhase('not_found');
|
|
283
|
+
}
|
|
284
|
+
else if (result.isVerified || result.status === 'ok') {
|
|
262
285
|
setPhase('success');
|
|
263
286
|
setTimeout(onNext, 1200);
|
|
264
287
|
}
|
|
265
|
-
else if (result.status === 'config_error'
|
|
288
|
+
else if (result.status === 'config_error') {
|
|
266
289
|
setPhase('success');
|
|
267
290
|
setTimeout(onNext, 800);
|
|
268
291
|
}
|
|
@@ -278,6 +301,18 @@ var ExternalVerificationNodeHandler = function (_a) {
|
|
|
278
301
|
return function () { return abortController.abort(); };
|
|
279
302
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
280
303
|
}, []);
|
|
304
|
+
// ─── Navigation helper ────────────────────────────────────────────────────
|
|
305
|
+
var handleCorrect = function () {
|
|
306
|
+
if (phase === 'mismatch' && (errorScreenData === null || errorScreenData === void 0 ? void 0 : errorScreenData.personNodeId) && onNavigateToNode) {
|
|
307
|
+
onNavigateToNode(errorScreenData.personNodeId);
|
|
308
|
+
}
|
|
309
|
+
else if (phase === 'not_found' && (errorScreenData === null || errorScreenData === void 0 ? void 0 : errorScreenData.sirenNodeId) && onNavigateToNode) {
|
|
310
|
+
onNavigateToNode(errorScreenData.sirenNodeId);
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
onPrevious();
|
|
314
|
+
}
|
|
315
|
+
};
|
|
281
316
|
// ─── Loading phase ─────────────────────────────────────────────────────────
|
|
282
317
|
if (phase === 'loading') {
|
|
283
318
|
return (jsxRuntime.jsx("div", { className: "flex flex-col justify-between h-full w-full", children: jsxRuntime.jsx("div", { className: "flex-1 px-4 py-6 pt-11 md:px-8 md:py-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto space-y-6", children: [jsxRuntime.jsxs("div", { className: "text-center space-y-4", children: [jsxRuntime.jsx(Title.default, { className: "text-xl md:text-2xl lg:text-3xl", children: t('verification_node.verifying_title', 'Vérification en cours…') }), jsxRuntime.jsx(Subtitle.default, { className: "text-sm text-gray-600 leading-relaxed", children: t('verification_node.verifying_desc', 'Nous vérifions vos informations. Cela peut prendre quelques instants.') })] }), jsxRuntime.jsx("div", { className: "w-full flex justify-center", children: jsxRuntime.jsx("div", { className: "space-y-5", children: steps.map(function (step, index) { return (jsxRuntime.jsxs("div", { className: "flex items-start", children: [jsxRuntime.jsx("div", { className: "mr-4 mt-1 flex-shrink-0", children: step.status === 'done' ? (jsxRuntime.jsx("div", { className: "flex items-center justify-center w-6 h-6 rounded-full bg-[#11E5C5] text-white text-xs", children: "\u2713" })) : step.status === 'active' ? (jsxRuntime.jsx("div", { className: "w-6 h-6 rounded-full border-2 border-t-[#11E5C5] border-r-[#11E5C5] border-b-[#11E5C5] border-l-transparent animate-spin" })) : (jsxRuntime.jsx("div", { className: "w-6 h-6 rounded-full border-2 border-gray-300" })) }), jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [jsxRuntime.jsx("p", { className: "font-medium text-[#3C3C40] text-sm", children: step.title }), jsxRuntime.jsx("p", { className: "text-xs text-gray-500 mt-1", children: step.subtitle })] })] }, index)); }) }) })] }) }) }));
|
|
@@ -288,7 +323,27 @@ var ExternalVerificationNodeHandler = function (_a) {
|
|
|
288
323
|
}
|
|
289
324
|
// ─── Mismatch phase ────────────────────────────────────────────────────────
|
|
290
325
|
if (phase === 'mismatch') {
|
|
291
|
-
|
|
326
|
+
var d = errorScreenData;
|
|
327
|
+
var showBeneficiaires = ((_b = d === null || d === void 0 ? void 0 : d.compareTargets) === null || _b === void 0 ? void 0 : _b.includes('beneficiairesEffectifs')) && ((_d = (_c = d === null || d === void 0 ? void 0 : d.beneficiairesEffectifs) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0;
|
|
328
|
+
var showMandataires = (!((_e = d === null || d === void 0 ? void 0 : d.compareTargets) === null || _e === void 0 ? void 0 : _e.length) || ((_f = d === null || d === void 0 ? void 0 : d.compareTargets) === null || _f === void 0 ? void 0 : _f.includes('mandataires'))) &&
|
|
329
|
+
((_h = (_g = d === null || d === void 0 ? void 0 : d.mandataires) === null || _g === void 0 ? void 0 : _g.length) !== null && _h !== void 0 ? _h : 0) > 0;
|
|
330
|
+
var personListLabel = ((_j = d === null || d === void 0 ? void 0 : d.compareTargets) === null || _j === void 0 ? void 0 : _j.includes('beneficiairesEffectifs')) && !((_k = d === null || d === void 0 ? void 0 : d.compareTargets) === null || _k === void 0 ? void 0 : _k.includes('mandataires'))
|
|
331
|
+
? t('inpi_verification.beneficiaires_label', 'Bénéficiaires effectifs renseignés au RNE')
|
|
332
|
+
: ((_l = d === null || d === void 0 ? void 0 : d.compareTargets) === null || _l === void 0 ? void 0 : _l.includes('mandataires')) && !((_m = d === null || d === void 0 ? void 0 : d.compareTargets) === null || _m === void 0 ? void 0 : _m.includes('beneficiairesEffectifs'))
|
|
333
|
+
? t('inpi_verification.mandataires_label', 'Mandataires renseignés au RNE')
|
|
334
|
+
: t('inpi_verification.persons_label', 'Personnes renseignées au RNE');
|
|
335
|
+
return (jsxRuntime.jsxs("div", { className: "flex flex-col justify-between h-full w-full", children: [jsxRuntime.jsx("div", { className: "flex-1 px-4 py-6 pt-11 md:px-8 md:py-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto space-y-6", children: [jsxRuntime.jsx("div", { className: "text-center", children: jsxRuntime.jsx("div", { className: "mx-auto w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mb-4", children: jsxRuntime.jsx("div", { className: "w-8 h-8 bg-red-500 rounded-full flex items-center justify-center", children: jsxRuntime.jsx("span", { className: "text-white text-lg", children: "\u2715" }) }) }) }), jsxRuntime.jsxs("div", { className: "text-center space-y-4", children: [jsxRuntime.jsx(Title.default, { className: "text-xl md:text-2xl lg:text-3xl text-red-600", children: t('inpi_verification.mismatch_title', 'Identité non confirmée') }), jsxRuntime.jsx(Subtitle.default, { className: "text-sm text-gray-600 leading-relaxed", children: t('inpi_verification.mismatch_desc', "Les informations saisies ne correspondent à aucune personne déclarée à l'INPI pour cette société.") })] }), d && (d.submittedLastName || d.submittedFirstName) && (jsxRuntime.jsxs("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4", children: [jsxRuntime.jsx("h3", { className: "font-medium text-red-900 mb-2", children: t('errors.problems_detected', 'Problèmes détectés') }), jsxRuntime.jsxs("div", { className: "text-sm text-red-800 space-y-1", children: [d.submittedLastName && (jsxRuntime.jsxs("p", { children: [t('inpi_verification.submitted_last_name', 'Nom saisi'), ' : ', jsxRuntime.jsx("strong", { children: d.submittedLastName })] })), d.submittedFirstName && (jsxRuntime.jsxs("p", { children: [t('inpi_verification.submitted_first_name', 'Prénom saisi'), ' : ', jsxRuntime.jsx("strong", { children: d.submittedFirstName })] }))] })] })), (showMandataires || showBeneficiaires) && (jsxRuntime.jsxs("div", { className: "bg-blue-50 border border-blue-200 rounded-lg p-4", children: [jsxRuntime.jsx("h3", { className: "font-medium text-blue-900 mb-2", children: personListLabel }), jsxRuntime.jsxs("div", { className: "text-sm text-blue-800 space-y-1", children: [showMandataires && d.mandataires.map(function (m, i) {
|
|
336
|
+
var _a, _b;
|
|
337
|
+
return (jsxRuntime.jsxs("p", { children: [jsxRuntime.jsx("strong", { children: (_a = m.nom) !== null && _a !== void 0 ? _a : '—' }), ((_b = m.prenoms) !== null && _b !== void 0 ? _b : []).length > 0 && " ".concat(m.prenoms.join(' '))] }, "m-".concat(i)));
|
|
338
|
+
}), showBeneficiaires && d.beneficiairesEffectifs.map(function (b, i) {
|
|
339
|
+
var _a, _b;
|
|
340
|
+
return (jsxRuntime.jsxs("p", { children: [jsxRuntime.jsx("strong", { children: (_a = b.nom) !== null && _a !== void 0 ? _a : '—' }), ((_b = b.prenoms) !== null && _b !== void 0 ? _b : []).length > 0 && " ".concat(b.prenoms.join(' '))] }, "b-".concat(i)));
|
|
341
|
+
})] })] }))] }) }), jsxRuntime.jsx("div", { className: "sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto", children: [jsxRuntime.jsxs("div", { className: "flex flex-col space-y-3 md:hidden", children: [jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: handleCorrect, "data-cy": "inpi-mismatch-go-back", children: t('inpi_verification.mismatch_correct', 'Corriger ma saisie') }), jsxRuntime.jsx(Button.default, { onClick: onNext, "data-cy": "inpi-mismatch-continue", children: t('inpi_verification.mismatch_continue', 'Continuer quand même') })] }), jsxRuntime.jsxs("div", { className: "hidden md:flex justify-center space-x-3", children: [jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: handleCorrect, "data-cy": "inpi-mismatch-go-back", children: t('inpi_verification.mismatch_correct', 'Corriger ma saisie') }), jsxRuntime.jsx(Button.default, { onClick: onNext, "data-cy": "inpi-mismatch-continue", children: t('inpi_verification.mismatch_continue', 'Continuer quand même') })] })] }) })] }));
|
|
342
|
+
}
|
|
343
|
+
// ─── Not found phase ───────────────────────────────────────────────────────
|
|
344
|
+
if (phase === 'not_found') {
|
|
345
|
+
var d = errorScreenData;
|
|
346
|
+
return (jsxRuntime.jsxs("div", { className: "flex flex-col justify-between h-full w-full", children: [jsxRuntime.jsx("div", { className: "flex-1 px-4 py-6 pt-11 md:px-8 md:py-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto space-y-6", children: [jsxRuntime.jsx("div", { className: "text-center", children: jsxRuntime.jsx("div", { className: "mx-auto w-16 h-16 bg-orange-100 rounded-full flex items-center justify-center mb-4", children: jsxRuntime.jsx("div", { className: "w-8 h-8 bg-orange-500 rounded-full flex items-center justify-center", children: jsxRuntime.jsx("span", { className: "text-white text-lg font-bold", children: "!" }) }) }) }), jsxRuntime.jsxs("div", { className: "text-center space-y-4", children: [jsxRuntime.jsx(Title.default, { className: "text-xl md:text-2xl lg:text-3xl text-orange-600", children: t('inpi_verification.not_found_title', 'Société introuvable') }), jsxRuntime.jsx(Subtitle.default, { className: "text-sm text-gray-600 leading-relaxed", children: t('inpi_verification.not_found_desc', "Le numéro saisi ne correspond à aucune société enregistrée dans le Registre National des Entreprises.") })] }), jsxRuntime.jsxs("div", { className: "bg-orange-50 border border-orange-200 rounded-lg p-4", children: [jsxRuntime.jsx("h3", { className: "font-medium text-orange-900 mb-2", children: t('errors.problems_detected', 'Problèmes détectés') }), jsxRuntime.jsxs("div", { className: "text-sm text-orange-800 space-y-1", children: [(d === null || d === void 0 ? void 0 : d.siren) && (jsxRuntime.jsxs("p", { children: [t('inpi_verification.siren_label', 'SIREN'), ' : ', jsxRuntime.jsx("strong", { children: d.siren })] })), jsxRuntime.jsx("p", { children: t('inpi_verification.not_found_detail', 'Aucune société trouvée dans le Registre National des Entreprises.') })] })] })] }) }), jsxRuntime.jsx("div", { className: "sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8", children: jsxRuntime.jsxs("div", { className: "w-full max-w-md mx-auto", children: [jsxRuntime.jsxs("div", { className: "flex flex-col space-y-3 md:hidden", children: [jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: handleCorrect, "data-cy": "inpi-not-found-go-back", children: t('inpi_verification.mismatch_correct', 'Corriger ma saisie') }), jsxRuntime.jsx(Button.default, { onClick: onNext, "data-cy": "inpi-not-found-continue", children: t('inpi_verification.mismatch_continue', 'Continuer quand même') })] }), jsxRuntime.jsxs("div", { className: "hidden md:flex justify-center space-x-3", children: [jsxRuntime.jsx(Button.default, { variant: "secondary", onClick: handleCorrect, "data-cy": "inpi-not-found-go-back", children: t('inpi_verification.mismatch_correct', 'Corriger ma saisie') }), jsxRuntime.jsx(Button.default, { onClick: onNext, "data-cy": "inpi-not-found-continue", children: t('inpi_verification.mismatch_continue', 'Continuer quand même') })] })] }) })] }));
|
|
292
347
|
}
|
|
293
348
|
// ─── Error / fallback ─────────────────────────────────────────────────────
|
|
294
349
|
return (jsxRuntime.jsx(LoadingState.default, { message: t('verification_node.verifying_title', 'Vérification en cours…'), subtitle: t('verification_node.verifying_desc', 'Vérification en cours…') }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExternalVerificationNodeHandler.js","sources":["../../../../../src/components/template/ExternalVerificationNodeHandler.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport sdkI18n from '../../i18n';\nimport { apiService } from '../../services/api';\nimport checkIcon from '../../assets/check.svg';\nimport LoadingState from '../states/LoadingState';\nimport Title from '../ui/Title';\nimport Subtitle from '../ui/Subtitle';\nimport Button from '../ui/Button';\nimport PageActions from '../ui/PageActions';\nimport MobilePageLayout from '../ui/MobilePageLayout';\nimport type { SessionData, SessionTemplateNode } from '../../types/session';\nimport type { UserInput } from '../../types/userInput';\n\ntype VerificationStatus =\n | 'ok'\n | 'not_found'\n | 'invalid_input'\n | 'config_error'\n | 'external_error'\n | 'person_mismatch';\n\ninterface VerificationResponsePayload {\n isVerified: boolean;\n status: VerificationStatus;\n message?: string;\n errorCode?: string;\n inpiData?: Record<string, unknown>;\n}\n\ninterface ExternalVerificationNodeHandlerProps {\n node: SessionTemplateNode;\n session: SessionData;\n userInput: UserInput;\n setUserInput: React.Dispatch<React.SetStateAction<UserInput>>;\n onNext: () => void;\n onPrevious: () => void;\n}\n\nconst FIELD_ALIASES: Record<'siren' | 'siret', string[]> = {\n siren: ['siren', 'siren_number', 'company_siren', 'legal_siren', 'num_siren'],\n siret: ['siret', 'siret_number', 'company_siret', 'legal_siret', 'num_siret'],\n};\n\nconst normalizeReferenceField = (field?: string): 'siren' | 'siret' | undefined => {\n if (!field) return undefined;\n const normalized = field.toLowerCase().replace(/[\\s_.-]/g, '');\n if (normalized.includes('siret')) return 'siret';\n if (normalized.includes('siren')) return 'siren';\n return undefined;\n};\n\nconst maskReferenceValue = (value: string): string => {\n const clean = value.replace(/\\s+/g, '');\n if (!clean) return '';\n if (clean.length <= 4) return '****';\n return `${'*'.repeat(clean.length - 4)}${clean.slice(-4)}`;\n};\n\nconst resolveFieldValue = (\n nodeInput: any,\n userInputFlat: any,\n keys: string[],\n): string | undefined => {\n for (const key of keys) {\n const candidate =\n nodeInput?.[key] ??\n nodeInput?.customFormData?.[key] ??\n userInputFlat?.customFormData?.[key] ??\n userInputFlat?.[key];\n if (candidate !== undefined && candidate !== null && `${candidate}`.trim() !== '') {\n return String(candidate);\n }\n }\n return undefined;\n};\n\ntype LoaderStep = { title: string; subtitle: string; status: 'pending' | 'active' | 'done' };\n\nconst ExternalVerificationNodeHandler: React.FC<ExternalVerificationNodeHandlerProps> = ({\n node,\n session,\n userInput,\n setUserInput,\n onNext,\n onPrevious,\n}) => {\n const { t } = useTranslation('translation', { i18n: sdkI18n });\n\n const nodeData = node as any;\n const apiType = String(nodeData.targetApi || 'INSEE');\n const isInpiRbe = apiType === 'INPI_RBE';\n\n const [phase, setPhase] = useState<'loading' | 'success' | 'mismatch' | 'error'>('loading');\n const [steps, setSteps] = useState<LoaderStep[]>(() => {\n if (isInpiRbe) {\n return [\n {\n title: t('inpi_verification.step1', 'Appel au RNE'),\n subtitle: t('inpi_verification.step1_sub', 'Connexion au registre national des entreprises'),\n status: 'active',\n },\n {\n title: t('inpi_verification.step2', \"Récupération des données d'entreprise\"),\n subtitle: t('inpi_verification.step2_sub', 'Lecture des informations légales et des dirigeants'),\n status: 'pending',\n },\n {\n title: t('inpi_verification.step3', 'Comparaison avec les données saisies'),\n subtitle: t('inpi_verification.step3_sub', 'Vérification de la concordance des informations'),\n status: 'pending',\n },\n ];\n }\n return [{\n title: t('verification_node.verifying_title', 'Vérification en cours…'),\n subtitle: t('verification_node.verifying_desc', 'Connexion au service externe'),\n status: 'active',\n }];\n });\n\n const advanceStep = (index: number) => {\n setSteps(prev =>\n prev.map((s, i) => {\n if (i < index) return { ...s, status: 'done' };\n if (i === index) return { ...s, status: 'active' };\n return s;\n }),\n );\n };\n\n const completeSteps = () => {\n setSteps(prev => prev.map(s => ({ ...s, status: 'done' })));\n };\n\n // Mapping from builder TYPE_FIELDS keys → actual SDK userInput storage keys.\n // e.g. builder stores 'prenom' but SDK stores 'firstName'.\n const STANDARD_FIELD_ALIASES: Record<string, string[]> = {\n prenom: ['firstName', 'first_name', 'prenom'],\n nom: ['lastName', 'last_name', 'surname', 'familyName', 'nom'],\n date_naissance: ['birthDate', 'birth_date', 'dateOfBirth', 'date_naissance'],\n };\n const expandFieldKey = (key: string): string[] =>\n [key, ...(STANDARD_FIELD_ALIASES[key] ?? [])];\n\n useEffect(() => {\n const abortController = new AbortController();\n\n const run = async () => {\n let result: VerificationResponsePayload = {\n isVerified: false,\n status: 'external_error',\n message: 'Verification did not run.',\n };\n let referenceField: 'siren' | 'siret' | undefined;\n let referenceValueMasked = '';\n\n try {\n if (!session?.id) throw new Error('Session ID is missing');\n\n const referenceNodeId = String(nodeData.referenceNodeId || '');\n const referenceVariable = String(nodeData.referenceVariable || '');\n referenceField = normalizeReferenceField(\n String(nodeData.referenceField || referenceVariable || ''),\n );\n\n if (!referenceNodeId || !referenceField) {\n result = {\n isVerified: false,\n status: 'config_error',\n message: 'External verification node is missing reference configuration.',\n errorCode: 'MISSING_REFERENCE_CONFIG',\n };\n } else {\n const nodeInput = (userInput as any)[referenceNodeId];\n const userInputFlat = userInput as any;\n const lookupKeys = Array.from(\n new Set([referenceVariable, referenceField, ...FIELD_ALIASES[referenceField]].filter(Boolean)),\n );\n\n let referenceValue = resolveFieldValue(nodeInput, userInputFlat, lookupKeys);\n\n // Smart numeric fallback\n if (!referenceValue) {\n const allCustomFields = {\n ...(userInputFlat?.customFormData || {}),\n ...(nodeInput?.customFormData || {}),\n ...(nodeInput || {}),\n };\n for (const [, value] of Object.entries(allCustomFields)) {\n if (typeof value !== 'string' && typeof value !== 'number') continue;\n const str = String(value).replace(/\\s+/g, '');\n if (referenceField === 'siren' && /^\\d{9}$/.test(str)) { referenceValue = str; break; }\n if (referenceField === 'siret' && /^\\d{14}$/.test(str)) { referenceValue = str; break; }\n }\n }\n\n if (!referenceValue) {\n result = {\n isVerified: false,\n status: 'invalid_input',\n message: 'No SIREN/SIRET value found in source node data.',\n errorCode: 'REFERENCE_VALUE_NOT_FOUND',\n };\n } else {\n referenceValueMasked = maskReferenceValue(referenceValue);\n\n // Build comparison payload for INPI_RBE\n let comparisonConfig: Record<string, unknown> | undefined;\n if (isInpiRbe && nodeData.comparisonConfig?.personReferenceNodeId) {\n const cfg = nodeData.comparisonConfig;\n const personNodeInput = (userInput as any)[cfg.personReferenceNodeId] ?? {};\n const flat = userInput as any;\n\n // Expand keys to handle builder's TYPE_FIELDS keys (e.g. 'prenom')\n // vs SDK storage keys (e.g. 'firstName').\n const firstNameKeys = expandFieldKey(cfg.personFirstNameField ?? '').filter(Boolean);\n const lastNameKeys = expandFieldKey(cfg.personLastNameField ?? '').filter(Boolean);\n const birthDateKeys = cfg.personBirthDateField\n ? expandFieldKey(cfg.personBirthDateField).filter(Boolean)\n : [];\n\n const firstName = resolveFieldValue(personNodeInput, flat, firstNameKeys) ?? '';\n const lastName = resolveFieldValue(personNodeInput, flat, lastNameKeys) ?? '';\n const dateOfBirth = cfg.compareBirthDate && birthDateKeys.length\n ? resolveFieldValue(personNodeInput, flat, birthDateKeys)\n : undefined;\n\n if (firstName && lastName) {\n comparisonConfig = {\n firstName,\n lastName,\n compareTargets: cfg.compareTargets ?? ['mandataires'],\n ...(dateOfBirth ? { dateOfBirth } : {}),\n };\n }\n }\n\n // Step 2 — after building request\n if (isInpiRbe) advanceStep(1);\n\n try {\n const response = await apiService.post(\n `/session/sdk/${session.id}/verify-external/${node.id}`,\n { apiType, referenceValue, referenceField, ...(comparisonConfig ? { comparisonConfig } : {}) },\n { signal: abortController.signal },\n );\n\n // Step 3 — response received\n if (isInpiRbe) advanceStep(2);\n await new Promise(r => setTimeout(r, 600));\n\n const res = response.data?.data as VerificationResponsePayload | undefined;\n if (res && typeof res.isVerified === 'boolean') {\n result = res;\n }\n } catch (apiErr: any) {\n if (abortController.signal.aborted) return;\n if (isInpiRbe) advanceStep(2);\n const apiResult = apiErr?.response?.data?.data as VerificationResponsePayload | undefined;\n if (apiResult && typeof apiResult.isVerified === 'boolean') {\n result = apiResult;\n } else {\n result = {\n isVerified: false,\n status: 'external_error',\n message: 'External verification request failed.',\n errorCode: 'REQUEST_FAILED',\n };\n }\n }\n }\n }\n } catch (err) {\n result = {\n isVerified: false,\n status: 'external_error',\n message: 'Unexpected error during verification.',\n errorCode: 'UNEXPECTED_ERROR',\n };\n }\n\n if (abortController.signal.aborted) return;\n\n completeSteps();\n\n setUserInput(prev => ({\n ...prev,\n [node.id]: {\n isVerified: result.isVerified,\n apiType,\n referenceField,\n referenceValueMasked,\n verifiedAt: new Date().toISOString(),\n status: result.status,\n errorCode: result.errorCode,\n message: result.message,\n inpiData: result.inpiData,\n hasError: result.status !== 'ok' && result.status !== 'not_found' && result.status !== 'person_mismatch',\n },\n } as any));\n\n // Determine phase to show\n if (result.status === 'person_mismatch') {\n setPhase('mismatch');\n } else if (result.isVerified || result.status === 'ok' || result.status === 'not_found') {\n setPhase('success');\n setTimeout(onNext, 1200);\n } else if (result.status === 'config_error' || result.status === 'invalid_input') {\n setPhase('success');\n setTimeout(onNext, 800);\n } else {\n setPhase('error');\n setTimeout(onNext, 1500);\n }\n };\n\n run();\n return () => abortController.abort();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // ─── Loading phase ─────────────────────────────────────────────────────────\n if (phase === 'loading') {\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {t('verification_node.verifying_title', 'Vérification en cours…')}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {t('verification_node.verifying_desc', 'Nous vérifions vos informations. Cela peut prendre quelques instants.')}\n </Subtitle>\n </div>\n <div className=\"w-full flex justify-center\">\n <div className=\"space-y-5\">\n {steps.map((step, index) => (\n <div key={index} className=\"flex items-start\">\n <div className=\"mr-4 mt-1 flex-shrink-0\">\n {step.status === 'done' ? (\n <div className=\"flex items-center justify-center w-6 h-6 rounded-full bg-[#11E5C5] text-white text-xs\">\n ✓\n </div>\n ) : step.status === 'active' ? (\n <div className=\"w-6 h-6 rounded-full border-2 border-t-[#11E5C5] border-r-[#11E5C5] border-b-[#11E5C5] border-l-transparent animate-spin\" />\n ) : (\n <div className=\"w-6 h-6 rounded-full border-2 border-gray-300\" />\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium text-[#3C3C40] text-sm\">{step.title}</p>\n <p className=\"text-xs text-gray-500 mt-1\">{step.subtitle}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ─── Success phase ─────────────────────────────────────────────────────────\n if (phase === 'success') {\n return (\n <div className=\"flex flex-col items-center justify-center h-full px-6 py-8 text-center space-y-4\">\n <img src={checkIcon} alt=\"success\" className=\"w-24 h-24\" />\n <h3 className=\"text-[#3C3C40] font-poppins text-xl font-bold\">\n {t('inpi_verification.success_title', 'Vérification réussie')}\n </h3>\n <p className=\"text-gray-500 text-sm\">\n {t('inpi_verification.success_desc', \"Passage à l'étape suivante…\")}\n </p>\n </div>\n );\n }\n\n // ─── Mismatch phase ────────────────────────────────────────────────────────\n if (phase === 'mismatch') {\n return (\n <MobilePageLayout\n header={\n <div className=\"p-4 text-center bg-white border-b border-gray-100\">\n <Title className=\"text-xl md:text-2xl\">\n {t('inpi_verification.mismatch_title', 'Identité non confirmée')}\n </Title>\n <Subtitle className=\"text-xs text-gray-600 mt-2 md:text-sm\">\n {t(\n 'inpi_verification.mismatch_desc',\n \"Les informations saisies ne correspondent à aucune personne déclarée à l'INPI pour cette société.\",\n )}\n </Subtitle>\n </div>\n }\n footer={\n <PageActions\n primary={\n <Button onClick={onNext} data-cy=\"inpi-mismatch-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n }\n secondary={\n <Button variant=\"secondary\" onClick={onPrevious} data-cy=\"inpi-mismatch-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n }\n />\n }\n className=\"bg-white\"\n >\n <div className=\"px-4 py-6 pt-8 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n <div className=\"flex justify-center\">\n <div className=\"w-20 h-20 rounded-full bg-amber-50 flex items-center justify-center\">\n <svg className=\"w-10 h-10 text-amber-500\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M12 9v2m0 4h.01M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\" />\n </svg>\n </div>\n </div>\n <div className=\"flex items-start bg-amber-50 border border-amber-200 rounded-lg p-4 gap-3\">\n <div className=\"w-5 h-5 rounded-full bg-amber-100 flex items-center justify-center flex-shrink-0 mt-0.5\">\n <svg className=\"w-3 h-3 text-amber-600\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" clipRule=\"evenodd\" />\n </svg>\n </div>\n <p className=\"text-sm text-amber-800\">\n {t(\n 'inpi_verification.mismatch_hint',\n 'Vérifiez que le nom et le prénom saisis correspondent exactement aux informations enregistrées au Registre National des Entreprises.',\n )}\n </p>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n }\n\n // ─── Error / fallback ─────────────────────────────────────────────────────\n return (\n <LoadingState\n message={t('verification_node.verifying_title', 'Vérification en cours…')}\n subtitle={t('verification_node.verifying_desc', 'Vérification en cours…')}\n />\n );\n};\n\nexport default ExternalVerificationNodeHandler;\n"],"names":["useTranslation","sdkI18n","useState","__assign","__spreadArray","useEffect","__awaiter","apiService","_jsx","_jsxs","Title","Subtitle","checkIcon","MobilePageLayout","PageActions","Button","LoadingState"],"mappings":";;;;;;;;;;;;;;;;;;AAuCA,IAAM,aAAa,GAAwC;IACvD,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC;IAC7E,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC;CAChF;AAED,IAAM,uBAAuB,GAAG,UAAC,KAAc,EAAA;AAC3C,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,SAAS;AAC5B,IAAA,IAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAC9D,IAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,OAAO;AAChD,IAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,OAAO;AAChD,IAAA,OAAO,SAAS;AACpB,CAAC;AAED,IAAM,kBAAkB,GAAG,UAAC,KAAa,EAAA;IACrC,IAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AACvC,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;AACrB,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AAAE,QAAA,OAAO,MAAM;IACpC,OAAO,EAAA,CAAA,MAAA,CAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,CAAA,MAAA,CAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAE;AAC9D,CAAC;AAED,IAAM,iBAAiB,GAAG,UACtB,SAAc,EACd,aAAkB,EAClB,IAAc,EAAA;;IAEd,KAAkB,IAAA,EAAA,GAAA,CAAI,EAAJ,MAAA,GAAA,IAAI,EAAJ,kBAAI,EAAJ,EAAA,EAAI,EAAE;AAAnB,QAAA,IAAM,GAAG,GAAA,MAAA,CAAA,EAAA,CAAA;QACV,IAAM,SAAS,GACX,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAG,GAAG,CAAC,mCAChB,CAAA,EAAA,GAAA,SAAS,aAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAG,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAChC,MAAA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,MAAA,GAAA,MAAA,GAAb,aAAa,CAAE,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAG,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GACpC,aAAa,KAAA,IAAA,IAAb,aAAa,uBAAb,aAAa,CAAG,GAAG,CAAC;AACxB,QAAA,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,IAAI,EAAA,CAAA,MAAA,CAAG,SAAS,CAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC/E,YAAA,OAAO,MAAM,CAAC,SAAS,CAAC;QAC5B;IACJ;AACA,IAAA,OAAO,SAAS;AACpB,CAAC;AAID,IAAM,+BAA+B,GAAmD,UAAC,EAOxF,EAAA;AANG,IAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,YAAY,kBAAA,EACZ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,UAAU,GAAA,EAAA,CAAA,UAAA;AAEF,IAAA,IAAA,CAAC,GAAKA,2BAAc,CAAC,aAAa,EAAE,EAAE,IAAI,EAAEC,aAAO,EAAE,CAAC,EAArD;IAET,IAAM,QAAQ,GAAG,IAAW;IAC5B,IAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC;AACrD,IAAA,IAAM,SAAS,GAAG,OAAO,KAAK,UAAU;IAElC,IAAA,EAAA,GAAoBC,cAAQ,CAA+C,SAAS,CAAC,EAApF,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAqE;IACrF,IAAA,EAAA,GAAoBA,cAAQ,CAAe,YAAA;QAC7C,IAAI,SAAS,EAAE;YACX,OAAO;AACH,gBAAA;AACI,oBAAA,KAAK,EAAE,CAAC,CAAC,yBAAyB,EAAE,cAAc,CAAC;AACnD,oBAAA,QAAQ,EAAE,CAAC,CAAC,6BAA6B,EAAE,gDAAgD,CAAC;AAC5F,oBAAA,MAAM,EAAE,QAAQ;AACnB,iBAAA;AACD,gBAAA;AACI,oBAAA,KAAK,EAAE,CAAC,CAAC,yBAAyB,EAAE,uCAAuC,CAAC;AAC5E,oBAAA,QAAQ,EAAE,CAAC,CAAC,6BAA6B,EAAE,oDAAoD,CAAC;AAChG,oBAAA,MAAM,EAAE,SAAS;AACpB,iBAAA;AACD,gBAAA;AACI,oBAAA,KAAK,EAAE,CAAC,CAAC,yBAAyB,EAAE,sCAAsC,CAAC;AAC3E,oBAAA,QAAQ,EAAE,CAAC,CAAC,6BAA6B,EAAE,iDAAiD,CAAC;AAC7F,oBAAA,MAAM,EAAE,SAAS;AACpB,iBAAA;aACJ;QACL;AACA,QAAA,OAAO,CAAC;AACJ,gBAAA,KAAK,EAAE,CAAC,CAAC,mCAAmC,EAAE,wBAAwB,CAAC;AACvE,gBAAA,QAAQ,EAAE,CAAC,CAAC,kCAAkC,EAAE,8BAA8B,CAAC;AAC/E,gBAAA,MAAM,EAAE,QAAQ;AACnB,aAAA,CAAC;AACN,IAAA,CAAC,CAAC,EAzBK,KAAK,QAAA,EAAE,QAAQ,QAyBpB;IAEF,IAAM,WAAW,GAAG,UAAC,KAAa,EAAA;QAC9B,QAAQ,CAAC,UAAA,IAAI,EAAA;AACT,YAAA,OAAA,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;gBACV,IAAI,CAAC,GAAG,KAAK;AAAE,oBAAA,OAAAC,kBAAA,CAAAA,kBAAA,CAAA,EAAA,EAAY,CAAC,CAAA,EAAA,EAAE,MAAM,EAAE,MAAM,EAAA,CAAA;gBAC5C,IAAI,CAAC,KAAK,KAAK;AAAE,oBAAA,OAAAA,kBAAA,CAAAA,kBAAA,CAAA,EAAA,EAAY,CAAC,CAAA,EAAA,EAAE,MAAM,EAAE,QAAQ,EAAA,CAAA;AAChD,gBAAA,OAAO,CAAC;AACZ,YAAA,CAAC,CAAC;AAJF,QAAA,CAIE,CACL;AACL,IAAA,CAAC;AAED,IAAA,IAAM,aAAa,GAAG,YAAA;QAClB,QAAQ,CAAC,UAAA,IAAI,EAAA,EAAI,OAAA,IAAI,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,kDAAM,CAAC,CAAA,EAAA,EAAE,MAAM,EAAE,MAAM,EAAA,CAAA,EAAG,CAA1B,CAA0B,CAAC,CAAA,CAAzC,CAAyC,CAAC;AAC/D,IAAA,CAAC;;;AAID,IAAA,IAAM,sBAAsB,GAA6B;AACrD,QAAA,MAAM,EAAU,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC;QACrD,GAAG,EAAa,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC;QACzE,cAAc,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC;KAC/E;AACD,IAAA,IAAM,cAAc,GAAG,UAAC,GAAW,EAAA,EAAA,IAAA,EAAA,CAAA,CAC/B,OAAAC,uBAAA,CAAA,CAAC,GAAG,CAAA,GAAM,MAAA,sBAAsB,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,GAAC,IAAA,CAAA,CAAC,EAAA;AAEjD,IAAAC,eAAS,CAAC,YAAA;AACN,QAAA,IAAM,eAAe,GAAG,IAAI,eAAe,EAAE;AAE7C,QAAA,IAAM,GAAG,GAAG,YAAA,EAAA,OAAAC,mBAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA;;;;;;AACJ,wBAAA,MAAM,GAAgC;AACtC,4BAAA,UAAU,EAAE,KAAK;AACjB,4BAAA,MAAM,EAAE,gBAAgB;AACxB,4BAAA,OAAO,EAAE,2BAA2B;yBACvC;wBAEG,oBAAoB,GAAG,EAAE;;;;wBAGzB,IAAI,EAAC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,EAAE,CAAA;AAAE,4BAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;wBAEpD,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;wBACxD,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,IAAI,EAAE,CAAC;AAClE,wBAAA,cAAc,GAAG,uBAAuB,CACpC,MAAM,CAAC,QAAQ,CAAC,cAAc,IAAI,iBAAiB,IAAI,EAAE,CAAC,CAC7D;AAEG,wBAAA,IAAA,EAAA,CAAC,eAAe,IAAI,CAAC,cAAc,CAAA,EAAnC,OAAA,CAAA,CAAA,YAAA,CAAA,CAAA;AACA,wBAAA,MAAM,GAAG;AACL,4BAAA,UAAU,EAAE,KAAK;AACjB,4BAAA,MAAM,EAAE,cAAc;AACtB,4BAAA,OAAO,EAAE,gEAAgE;AACzE,4BAAA,SAAS,EAAE,0BAA0B;yBACxC;;;AAEK,wBAAA,SAAS,GAAI,SAAiB,CAAC,eAAe,CAAC;wBAC/C,aAAa,GAAG,SAAgB;wBAChC,UAAU,GAAG,KAAK,CAAC,IAAI,CACzB,IAAI,GAAG,CAACF,uBAAA,CAAA,CAAC,iBAAiB,EAAE,cAAc,GAAK,aAAa,CAAC,cAAc,CAAC,EAAA,IAAA,CAAA,CAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CACjG;wBAEG,cAAc,GAAG,iBAAiB,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC;;wBAG5E,IAAI,CAAC,cAAc,EAAE;AACX,4BAAA,eAAe,GAAAD,kBAAA,CAAAA,kBAAA,CAAAA,kBAAA,CAAA,EAAA,GACb,CAAA,aAAa,aAAb,aAAa,KAAA,MAAA,GAAA,MAAA,GAAb,aAAa,CAAE,cAAc,KAAI,EAAE,KACnC,CAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,cAAc,KAAI,EAAE,EAAC,GAChC,SAAS,IAAI,EAAE,EACtB;AACD,4BAAA,KAAA,EAAA,GAAA,CAAuD,EAA/B,EAAA,GAAA,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAA/B,EAAA,GAAA,EAAA,CAAA,MAA+B,EAA/B,EAAA,EAA+B,EAAE;gCAA9C,EAAA,GAAA,EAAA,CAAA,EAAA,CAAS,EAAN,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA;gCACf,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;oCAAE;AACtD,gCAAA,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gCAC7C,IAAI,cAAc,KAAK,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oCAAE,cAAc,GAAG,GAAG;oCAAE;gCAAO;gCACtF,IAAI,cAAc,KAAK,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oCAAE,cAAc,GAAG,GAAG;oCAAE;gCAAO;4BAC3F;wBACJ;6BAEI,CAAC,cAAc,EAAf,OAAA,CAAA,CAAA,YAAA,CAAA,CAAA;AACA,wBAAA,MAAM,GAAG;AACL,4BAAA,UAAU,EAAE,KAAK;AACjB,4BAAA,MAAM,EAAE,eAAe;AACvB,4BAAA,OAAO,EAAE,iDAAiD;AAC1D,4BAAA,SAAS,EAAE,2BAA2B;yBACzC;;;AAED,wBAAA,oBAAoB,GAAG,kBAAkB,CAAC,cAAc,CAAC;AAGrD,wBAAA,gBAAgB,SAAqC;wBACzD,IAAI,SAAS,KAAI,CAAA,EAAA,GAAA,QAAQ,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,qBAAqB,CAAA,EAAE;AACzD,4BAAA,GAAG,GAAG,QAAQ,CAAC,gBAAgB;4BAC/B,eAAe,GAAG,CAAA,EAAA,GAAC,SAAiB,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE;4BACrE,IAAI,GAAG,SAAgB;AAIvB,4BAAA,aAAa,GAAG,cAAc,CAAC,CAAA,EAAA,GAAA,GAAG,CAAC,oBAAoB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC9E,4BAAA,YAAY,GAAG,cAAc,CAAC,CAAA,EAAA,GAAA,GAAG,CAAC,mBAAmB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;4BAC5E,aAAa,GAAG,GAAG,CAAC;kCACpB,cAAc,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,OAAO;kCACvD,EAAE;AAEF,4BAAA,SAAS,GAAG,CAAA,EAAA,GAAA,iBAAiB,CAAC,eAAe,EAAE,IAAI,EAAE,aAAa,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE;AACzE,4BAAA,QAAQ,GAAG,CAAA,EAAA,GAAA,iBAAiB,CAAC,eAAe,EAAE,IAAI,EAAE,YAAY,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE;AACvE,4BAAA,WAAW,GAAG,GAAG,CAAC,gBAAgB,IAAI,aAAa,CAAC;kCACpD,iBAAiB,CAAC,eAAe,EAAE,IAAI,EAAE,aAAa;kCACtD,SAAS;AAEf,4BAAA,IAAI,SAAS,IAAI,QAAQ,EAAE;AACvB,gCAAA,gBAAgB,GAAAA,kBAAA,CAAA,EACZ,SAAS,EAAA,SAAA,EACT,QAAQ,EAAA,QAAA,EACR,cAAc,EAAE,CAAA,EAAA,GAAA,GAAG,CAAC,cAAc,mCAAI,CAAC,aAAa,CAAC,EAAA,GACjD,WAAW,GAAG,EAAE,WAAW,EAAA,WAAA,EAAE,GAAG,EAAE,EACzC;4BACL;wBACJ;;AAGA,wBAAA,IAAI,SAAS;4BAAE,WAAW,CAAC,CAAC,CAAC;;;;wBAGR,OAAA,CAAA,CAAA,YAAMI,cAAU,CAAC,IAAI,CAClC,uBAAgB,OAAO,CAAC,EAAE,EAAA,mBAAA,CAAA,CAAA,MAAA,CAAoB,IAAI,CAAC,EAAE,CAAE,uBACrD,OAAO,EAAA,OAAA,EAAE,cAAc,EAAA,cAAA,EAAE,cAAc,EAAA,cAAA,EAAA,GAAM,gBAAgB,GAAG,EAAE,gBAAgB,EAAA,gBAAA,EAAE,GAAG,EAAE,EAAC,EAC5F,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CACrC,CAAA;;AAJK,wBAAA,QAAQ,GAAG,EAAA,CAAA,IAAA,EAIhB;;AAGD,wBAAA,IAAI,SAAS;4BAAE,WAAW,CAAC,CAAC,CAAC;AAC7B,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAlB,CAAkB,CAAC,CAAA;;AAA1C,wBAAA,EAAA,CAAA,IAAA,EAA0C;AAEpC,wBAAA,GAAG,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAA+C;wBAC1E,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE;4BAC5C,MAAM,GAAG,GAAG;wBAChB;;;;AAEA,wBAAA,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;4BAAE,OAAA,CAAA,CAAA,YAAA;AACpC,wBAAA,IAAI,SAAS;4BAAE,WAAW,CAAC,CAAC,CAAC;AACvB,wBAAA,SAAS,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAM,aAAN,QAAM,KAAA,MAAA,GAAA,MAAA,GAAN,QAAM,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAA+C;wBACzF,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,SAAS,EAAE;4BACxD,MAAM,GAAG,SAAS;wBACtB;6BAAO;AACH,4BAAA,MAAM,GAAG;AACL,gCAAA,UAAU,EAAE,KAAK;AACjB,gCAAA,MAAM,EAAE,gBAAgB;AACxB,gCAAA,OAAO,EAAE,uCAAuC;AAChD,gCAAA,SAAS,EAAE,gBAAgB;6BAC9B;wBACL;;;;;AAKZ,wBAAA,MAAM,GAAG;AACL,4BAAA,UAAU,EAAE,KAAK;AACjB,4BAAA,MAAM,EAAE,gBAAgB;AACxB,4BAAA,OAAO,EAAE,uCAAuC;AAChD,4BAAA,SAAS,EAAE,kBAAkB;yBAChC;;;AAGL,wBAAA,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;4BAAE,OAAA,CAAA,CAAA,YAAA;AAEpC,wBAAA,aAAa,EAAE;wBAEf,YAAY,CAAC,UAAA,IAAI,EAAA;;AAAI,4BAAA,QAACJ,kBAAA,CAAAA,kBAAA,CAAA,EAAA,EACf,IAAI,gBACN,IAAI,CAAC,EAAE,CAAA,GAAG;gCACP,UAAU,EAAE,MAAM,CAAC,UAAU;AAC7B,gCAAA,OAAO,EAAA,OAAA;AACP,gCAAA,cAAc,EAAA,cAAA;AACd,gCAAA,oBAAoB,EAAA,oBAAA;AACpB,gCAAA,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gCACpC,MAAM,EAAE,MAAM,CAAC,MAAM;gCACrB,SAAS,EAAE,MAAM,CAAC,SAAS;gCAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gCACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,gCAAA,QAAQ,EAAE,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,iBAAiB;AAC3G,6BAAA,EAAA,EAAA,EACI;AAdY,wBAAA,CAcZ,CAAC;;AAGV,wBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,iBAAiB,EAAE;4BACrC,QAAQ,CAAC,UAAU,CAAC;wBACxB;AAAO,6BAAA,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;4BACrF,QAAQ,CAAC,SAAS,CAAC;AACnB,4BAAA,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;wBAC5B;AAAO,6BAAA,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,IAAI,MAAM,CAAC,MAAM,KAAK,eAAe,EAAE;4BAC9E,QAAQ,CAAC,SAAS,CAAC;AACnB,4BAAA,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;wBAC3B;6BAAO;4BACH,QAAQ,CAAC,OAAO,CAAC;AACjB,4BAAA,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;wBAC5B;;;;aACH;AAED,QAAA,GAAG,EAAE;QACL,OAAO,YAAA,EAAM,OAAA,eAAe,CAAC,KAAK,EAAE,CAAA,CAAvB,CAAuB;;IAExC,CAAC,EAAE,EAAE,CAAC;;AAGN,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,QAAA,QACIK,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6CAA6C,YACxDA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wCAAwC,YACnDC,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAAA,CAC9CA,yBAAK,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,CAClCD,eAACE,aAAK,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC7C,CAAC,CAAC,mCAAmC,EAAE,wBAAwB,CAAC,GAC7D,EACRF,cAAA,CAACG,gBAAQ,EAAA,EAAC,SAAS,EAAC,uCAAuC,YACtD,CAAC,CAAC,kCAAkC,EAAE,uEAAuE,CAAC,EAAA,CACxG,CAAA,EAAA,CACT,EACNH,wBAAK,SAAS,EAAC,4BAA4B,EAAA,QAAA,EACvCA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EACrB,KAAK,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK,EAAA,EAAK,QACxBC,eAAA,CAAA,KAAA,EAAA,EAAiB,SAAS,EAAC,kBAAkB,aACzCD,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yBAAyB,EAAA,QAAA,EACnC,IAAI,CAAC,MAAM,KAAK,MAAM,IACnBA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uFAAuF,EAAA,QAAA,EAAA,QAAA,EAAA,CAEhG,IACN,IAAI,CAAC,MAAM,KAAK,QAAQ,IACxBA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0HAA0H,EAAA,CAAG,KAE5IA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+CAA+C,EAAA,CAAG,CACpE,EAAA,CACC,EACNC,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,aAC3BD,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,oCAAoC,YAAE,IAAI,CAAC,KAAK,EAAA,CAAK,EAClEA,sBAAG,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAE,IAAI,CAAC,QAAQ,GAAK,CAAA,EAAA,CAC3D,CAAA,EAAA,EAfA,KAAK,CAgBT,EACT,CAlB2B,CAkB3B,CAAC,EAAA,CACA,EAAA,CACJ,IACJ,EAAA,CACJ,EAAA,CACJ;IAEd;;AAGA,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;QACrB,QACIC,yBAAK,SAAS,EAAC,kFAAkF,EAAA,QAAA,EAAA,CAC7FD,cAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAEI,aAAS,EAAE,GAAG,EAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAA,CAAG,EAC3DJ,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,+CAA+C,EAAA,QAAA,EACxD,CAAC,CAAC,iCAAiC,EAAE,sBAAsB,CAAC,EAAA,CAC5D,EACLA,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAC/B,CAAC,CAAC,gCAAgC,EAAE,6BAA6B,CAAC,EAAA,CACnE,CAAA,EAAA,CACF;IAEd;;AAGA,IAAA,IAAI,KAAK,KAAK,UAAU,EAAE;QACtB,QACIA,eAACK,wBAAgB,EAAA,EACb,MAAM,EACFJ,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAAA,CAC9DD,eAACE,aAAK,EAAA,EAAC,SAAS,EAAC,qBAAqB,YACjC,CAAC,CAAC,kCAAkC,EAAE,wBAAwB,CAAC,GAC5D,EACRF,cAAA,CAACG,gBAAQ,EAAA,EAAC,SAAS,EAAC,uCAAuC,EAAA,QAAA,EACtD,CAAC,CACE,iCAAiC,EACjC,mGAAmG,CACtG,EAAA,CACM,CAAA,EAAA,CACT,EAEV,MAAM,EACFH,eAACM,mBAAW,EAAA,EACR,OAAO,EACHN,cAAA,CAACO,cAAM,IAAC,OAAO,EAAE,MAAM,EAAA,SAAA,EAAU,wBAAwB,YACpD,CAAC,CAAC,qCAAqC,EAAE,sBAAsB,CAAC,GAC5D,EAEb,SAAS,EACLP,cAAA,CAACO,cAAM,IAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,UAAU,EAAA,SAAA,EAAU,uBAAuB,YAC3E,CAAC,CAAC,oCAAoC,EAAE,oBAAoB,CAAC,EAAA,CACzD,EAAA,CAEf,EAEN,SAAS,EAAC,UAAU,EAAA,QAAA,EAEpBP,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAC3CC,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAAA,CAC9CD,wBAAK,SAAS,EAAC,qBAAqB,EAAA,QAAA,EAChCA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qEAAqE,EAAA,QAAA,EAChFA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0BAA0B,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,YAC3FA,cAAA,CAAA,MAAA,EAAA,EAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAE,GAAG,EAAE,CAAC,EAAC,oGAAoG,EAAA,CAAG,EAAA,CAC5K,EAAA,CACJ,GACJ,EACNC,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,2EAA2E,EAAA,QAAA,EAAA,CACtFD,wBAAK,SAAS,EAAC,yFAAyF,EAAA,QAAA,EACpGA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wBAAwB,EAAC,IAAI,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAA,QAAA,EAC3EA,cAAA,CAAA,MAAA,EAAA,EAAM,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,kIAAkI,EAAC,QAAQ,EAAC,SAAS,EAAA,CAAG,EAAA,CACjL,GACJ,EACNA,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,wBAAwB,EAAA,QAAA,EAChC,CAAC,CACE,iCAAiC,EACjC,sIAAsI,CACzI,EAAA,CACD,IACF,CAAA,EAAA,CACJ,EAAA,CACJ,EAAA,CACS;IAE3B;;IAGA,QACIA,eAACQ,oBAAY,EAAA,EACT,OAAO,EAAE,CAAC,CAAC,mCAAmC,EAAE,wBAAwB,CAAC,EACzE,QAAQ,EAAE,CAAC,CAAC,kCAAkC,EAAE,wBAAwB,CAAC,EAAA,CAC3E;AAEV;;;;"}
|
|
1
|
+
{"version":3,"file":"ExternalVerificationNodeHandler.js","sources":["../../../../../src/components/template/ExternalVerificationNodeHandler.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport sdkI18n from '../../i18n';\nimport { apiService } from '../../services/api';\nimport checkIcon from '../../assets/check.svg';\nimport LoadingState from '../states/LoadingState';\nimport Title from '../ui/Title';\nimport Subtitle from '../ui/Subtitle';\nimport Button from '../ui/Button';\nimport type { SessionData, SessionTemplateNode } from '../../types/session';\nimport type { UserInput } from '../../types/userInput';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype VerificationStatus =\n | 'ok'\n | 'not_found'\n | 'invalid_input'\n | 'config_error'\n | 'external_error'\n | 'person_mismatch';\n\ninterface InpiMandataire {\n type: 'individu' | 'personne_morale';\n nom?: string;\n prenoms?: string[];\n dateDeNaissance?: string;\n denominationSociale?: string;\n siren?: string;\n}\n\ninterface InpiVerificationData {\n identite?: { denomination?: string; siren?: string; dateImmat?: string };\n mandataires?: InpiMandataire[];\n beneficiairesEffectifs?: Array<{ nom?: string; prenoms?: string[]; dateDeNaissance?: string }>;\n comparison?: { matched: boolean; matchedPersonType?: string; targets: string[] };\n}\n\ninterface VerificationResponsePayload {\n isVerified: boolean;\n status: VerificationStatus;\n message?: string;\n errorCode?: string;\n inpiData?: InpiVerificationData;\n}\n\n// Data needed to render the error screens after API response\ninterface ErrorScreenData {\n // person_mismatch\n submittedLastName: string;\n submittedFirstName: string;\n mandataires: InpiMandataire[];\n beneficiairesEffectifs: Array<{ nom?: string; prenoms?: string[] }>;\n compareTargets: string[];\n personNodeId: string; // for \"Corriger ma saisie\" navigation\n // not_found / invalid_input\n siren: string;\n sirenNodeId: string; // for \"Corriger ma saisie\" navigation\n}\n\ninterface ExternalVerificationNodeHandlerProps {\n node: SessionTemplateNode;\n session: SessionData;\n userInput: UserInput;\n setUserInput: React.Dispatch<React.SetStateAction<UserInput>>;\n onNext: () => void;\n onPrevious: () => void;\n /** Navigate to a specific journey node by ID (used for \"Corriger ma saisie\") */\n onNavigateToNode?: (nodeId: string) => void;\n}\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\nconst FIELD_ALIASES: Record<'siren' | 'siret', string[]> = {\n siren: ['siren', 'siren_number', 'company_siren', 'legal_siren', 'num_siren'],\n siret: ['siret', 'siret_number', 'company_siret', 'legal_siret', 'num_siret'],\n};\n\nconst STANDARD_FIELD_ALIASES: Record<string, string[]> = {\n prenom: ['firstName', 'first_name', 'prenom'],\n nom: ['lastName', 'last_name', 'surname', 'familyName', 'nom'],\n date_naissance: ['birthDate', 'birth_date', 'dateOfBirth', 'date_naissance'],\n};\n\nconst normalizeReferenceField = (field?: string): 'siren' | 'siret' | undefined => {\n if (!field) return undefined;\n const n = field.toLowerCase().replace(/[\\s_.-]/g, '');\n if (n.includes('siret')) return 'siret';\n if (n.includes('siren')) return 'siren';\n return undefined;\n};\n\nconst maskReferenceValue = (value: string): string => {\n const clean = value.replace(/\\s+/g, '');\n if (!clean) return '';\n if (clean.length <= 4) return '****';\n return `${'*'.repeat(clean.length - 4)}${clean.slice(-4)}`;\n};\n\nconst resolveFieldValue = (nodeInput: any, userInputFlat: any, keys: string[]): string | undefined => {\n for (const key of keys) {\n const candidate =\n nodeInput?.[key] ??\n nodeInput?.customFormData?.[key] ??\n userInputFlat?.customFormData?.[key] ??\n userInputFlat?.[key];\n if (candidate !== undefined && candidate !== null && `${candidate}`.trim() !== '') {\n return String(candidate);\n }\n }\n return undefined;\n};\n\nconst expandFieldKey = (key: string): string[] => [key, ...(STANDARD_FIELD_ALIASES[key] ?? [])];\n\n// ─── Loader step type ─────────────────────────────────────────────────────────\n\ntype LoaderStep = { title: string; subtitle: string; status: 'pending' | 'active' | 'done' };\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nconst ExternalVerificationNodeHandler: React.FC<ExternalVerificationNodeHandlerProps> = ({\n node,\n session,\n userInput,\n setUserInput,\n onNext,\n onPrevious,\n onNavigateToNode,\n}) => {\n const { t } = useTranslation('translation', { i18n: sdkI18n });\n\n const nodeData = node as any;\n const apiType = String(nodeData.targetApi || 'INSEE');\n const isInpiRbe = apiType === 'INPI_RBE';\n\n const [phase, setPhase] = useState<'loading' | 'success' | 'mismatch' | 'not_found' | 'error'>('loading');\n const [errorScreenData, setErrorScreenData] = useState<ErrorScreenData | null>(null);\n\n const [steps, setSteps] = useState<LoaderStep[]>(() => {\n if (isInpiRbe) {\n return [\n {\n title: t('inpi_verification.step1', 'Appel au RNE'),\n subtitle: t('inpi_verification.step1_sub', 'Connexion au registre national des entreprises'),\n status: 'active',\n },\n {\n title: t('inpi_verification.step2', \"Récupération des données d'entreprise\"),\n subtitle: t('inpi_verification.step2_sub', 'Lecture des informations légales et des dirigeants'),\n status: 'pending',\n },\n {\n title: t('inpi_verification.step3', 'Comparaison avec les données saisies'),\n subtitle: t('inpi_verification.step3_sub', 'Vérification de la concordance des informations'),\n status: 'pending',\n },\n ];\n }\n return [{\n title: t('verification_node.verifying_title', 'Vérification en cours…'),\n subtitle: t('verification_node.verifying_desc', 'Connexion au service externe'),\n status: 'active',\n }];\n });\n\n const advanceStep = (index: number) => {\n setSteps(prev =>\n prev.map((s, i) => {\n if (i < index) return { ...s, status: 'done' };\n if (i === index) return { ...s, status: 'active' };\n return s;\n }),\n );\n };\n\n const completeSteps = () => setSteps(prev => prev.map(s => ({ ...s, status: 'done' })));\n\n useEffect(() => {\n const abortController = new AbortController();\n\n const run = async () => {\n let result: VerificationResponsePayload = {\n isVerified: false,\n status: 'external_error',\n message: 'Verification did not run.',\n };\n let referenceField: 'siren' | 'siret' | undefined;\n let referenceValueMasked = '';\n let resolvedReferenceValue = '';\n const referenceNodeId = String(nodeData.referenceNodeId || '');\n const referenceVariable = String(nodeData.referenceVariable || '');\n let submittedFirstName = '';\n let submittedLastName = '';\n\n try {\n if (!session?.id) throw new Error('Session ID is missing');\n\n referenceField = normalizeReferenceField(\n String(nodeData.referenceField || referenceVariable || ''),\n );\n\n if (!referenceNodeId || !referenceField) {\n result = {\n isVerified: false,\n status: 'config_error',\n message: 'External verification node is missing reference configuration.',\n errorCode: 'MISSING_REFERENCE_CONFIG',\n };\n } else {\n const nodeInput = (userInput as any)[referenceNodeId];\n const userInputFlat = userInput as any;\n const lookupKeys = Array.from(\n new Set([referenceVariable, referenceField, ...FIELD_ALIASES[referenceField]].filter(Boolean)),\n );\n\n let referenceValue = resolveFieldValue(nodeInput, userInputFlat, lookupKeys);\n\n if (!referenceValue) {\n const allCustomFields = {\n ...(userInputFlat?.customFormData || {}),\n ...(nodeInput?.customFormData || {}),\n ...(nodeInput || {}),\n };\n for (const [, value] of Object.entries(allCustomFields)) {\n if (typeof value !== 'string' && typeof value !== 'number') continue;\n const str = String(value).replace(/\\s+/g, '');\n if (referenceField === 'siren' && /^\\d{9}$/.test(str)) { referenceValue = str; break; }\n if (referenceField === 'siret' && /^\\d{14}$/.test(str)) { referenceValue = str; break; }\n }\n }\n\n if (!referenceValue) {\n result = {\n isVerified: false,\n status: 'invalid_input',\n message: 'No SIREN/SIRET value found in source node data.',\n errorCode: 'REFERENCE_VALUE_NOT_FOUND',\n };\n } else {\n resolvedReferenceValue = referenceValue;\n referenceValueMasked = maskReferenceValue(referenceValue);\n\n let comparisonConfig: Record<string, unknown> | undefined;\n if (isInpiRbe && nodeData.comparisonConfig?.personReferenceNodeId) {\n const cfg = nodeData.comparisonConfig;\n const personNodeInput = (userInput as any)[cfg.personReferenceNodeId] ?? {};\n const flat = userInput as any;\n\n const firstNameKeys = expandFieldKey(cfg.personFirstNameField ?? '').filter(Boolean);\n const lastNameKeys = expandFieldKey(cfg.personLastNameField ?? '').filter(Boolean);\n const birthDateKeys = cfg.personBirthDateField\n ? expandFieldKey(cfg.personBirthDateField).filter(Boolean)\n : [];\n\n submittedFirstName = resolveFieldValue(personNodeInput, flat, firstNameKeys) ?? '';\n submittedLastName = resolveFieldValue(personNodeInput, flat, lastNameKeys) ?? '';\n const dateOfBirth = cfg.compareBirthDate && birthDateKeys.length\n ? resolveFieldValue(personNodeInput, flat, birthDateKeys)\n : undefined;\n\n if (submittedFirstName && submittedLastName) {\n comparisonConfig = {\n firstName: submittedFirstName,\n lastName: submittedLastName,\n compareTargets: cfg.compareTargets ?? ['mandataires'],\n ...(dateOfBirth ? { dateOfBirth } : {}),\n };\n }\n }\n\n if (isInpiRbe) advanceStep(1);\n\n try {\n const response = await apiService.post(\n `/session/sdk/${session.id}/verify-external/${node.id}`,\n { apiType, referenceValue, referenceField, ...(comparisonConfig ? { comparisonConfig } : {}) },\n { signal: abortController.signal },\n );\n\n if (isInpiRbe) advanceStep(2);\n await new Promise(r => setTimeout(r, 600));\n\n const res = response.data?.data as VerificationResponsePayload | undefined;\n if (res && typeof res.isVerified === 'boolean') {\n result = res;\n }\n } catch (apiErr: any) {\n if (abortController.signal.aborted) return;\n if (isInpiRbe) advanceStep(2);\n const apiResult = apiErr?.response?.data?.data as VerificationResponsePayload | undefined;\n if (apiResult && typeof apiResult.isVerified === 'boolean') {\n result = apiResult;\n } else {\n result = {\n isVerified: false,\n status: 'external_error',\n message: 'External verification request failed.',\n errorCode: 'REQUEST_FAILED',\n };\n }\n }\n }\n }\n } catch (err) {\n result = {\n isVerified: false,\n status: 'external_error',\n message: 'Unexpected error during verification.',\n errorCode: 'UNEXPECTED_ERROR',\n };\n }\n\n if (abortController.signal.aborted) return;\n\n completeSteps();\n\n setUserInput(prev => ({\n ...prev,\n [node.id]: {\n isVerified: result.isVerified,\n apiType,\n referenceField,\n referenceValueMasked,\n verifiedAt: new Date().toISOString(),\n status: result.status,\n errorCode: result.errorCode,\n message: result.message,\n inpiData: result.inpiData,\n hasError: result.status !== 'ok' && result.status !== 'not_found' && result.status !== 'person_mismatch',\n },\n } as any));\n\n if (result.status === 'person_mismatch') {\n const inpi = result.inpiData;\n const cfg = nodeData.comparisonConfig;\n setErrorScreenData({\n submittedLastName,\n submittedFirstName,\n mandataires: (inpi?.mandataires ?? []).filter(m => m.type === 'individu'),\n beneficiairesEffectifs: inpi?.beneficiairesEffectifs ?? [],\n compareTargets: cfg?.compareTargets ?? ['mandataires'],\n personNodeId: cfg?.personReferenceNodeId ?? '',\n siren: resolvedReferenceValue,\n sirenNodeId: referenceNodeId,\n });\n setPhase('mismatch');\n\n } else if (result.status === 'not_found' || result.status === 'invalid_input') {\n setErrorScreenData({\n submittedLastName: '',\n submittedFirstName: '',\n mandataires: [],\n beneficiairesEffectifs: [],\n compareTargets: [],\n personNodeId: '',\n siren: resolvedReferenceValue,\n sirenNodeId: referenceNodeId,\n });\n setPhase('not_found');\n\n } else if (result.isVerified || result.status === 'ok') {\n setPhase('success');\n setTimeout(onNext, 1200);\n\n } else if (result.status === 'config_error') {\n setPhase('success');\n setTimeout(onNext, 800);\n\n } else {\n setPhase('error');\n setTimeout(onNext, 1500);\n }\n };\n\n run();\n return () => abortController.abort();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // ─── Navigation helper ────────────────────────────────────────────────────\n\n const handleCorrect = () => {\n if (phase === 'mismatch' && errorScreenData?.personNodeId && onNavigateToNode) {\n onNavigateToNode(errorScreenData.personNodeId);\n } else if (phase === 'not_found' && errorScreenData?.sirenNodeId && onNavigateToNode) {\n onNavigateToNode(errorScreenData.sirenNodeId);\n } else {\n onPrevious();\n }\n };\n\n // ─── Loading phase ─────────────────────────────────────────────────────────\n\n if (phase === 'loading') {\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {t('verification_node.verifying_title', 'Vérification en cours…')}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {t('verification_node.verifying_desc', 'Nous vérifions vos informations. Cela peut prendre quelques instants.')}\n </Subtitle>\n </div>\n <div className=\"w-full flex justify-center\">\n <div className=\"space-y-5\">\n {steps.map((step, index) => (\n <div key={index} className=\"flex items-start\">\n <div className=\"mr-4 mt-1 flex-shrink-0\">\n {step.status === 'done' ? (\n <div className=\"flex items-center justify-center w-6 h-6 rounded-full bg-[#11E5C5] text-white text-xs\">✓</div>\n ) : step.status === 'active' ? (\n <div className=\"w-6 h-6 rounded-full border-2 border-t-[#11E5C5] border-r-[#11E5C5] border-b-[#11E5C5] border-l-transparent animate-spin\" />\n ) : (\n <div className=\"w-6 h-6 rounded-full border-2 border-gray-300\" />\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium text-[#3C3C40] text-sm\">{step.title}</p>\n <p className=\"text-xs text-gray-500 mt-1\">{step.subtitle}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ─── Success phase ─────────────────────────────────────────────────────────\n\n if (phase === 'success') {\n return (\n <div className=\"flex flex-col items-center justify-center h-full px-6 py-8 text-center space-y-4\">\n <img src={checkIcon} alt=\"success\" className=\"w-24 h-24\" />\n <h3 className=\"text-[#3C3C40] font-poppins text-xl font-bold\">\n {t('inpi_verification.success_title', 'Vérification réussie')}\n </h3>\n <p className=\"text-gray-500 text-sm\">\n {t('inpi_verification.success_desc', \"Passage à l'étape suivante…\")}\n </p>\n </div>\n );\n }\n\n // ─── Mismatch phase ────────────────────────────────────────────────────────\n\n if (phase === 'mismatch') {\n const d = errorScreenData;\n const showBeneficiaires =\n d?.compareTargets?.includes('beneficiairesEffectifs') && (d?.beneficiairesEffectifs?.length ?? 0) > 0;\n const showMandataires =\n (!d?.compareTargets?.length || d?.compareTargets?.includes('mandataires')) &&\n (d?.mandataires?.length ?? 0) > 0;\n const personListLabel = d?.compareTargets?.includes('beneficiairesEffectifs') && !d?.compareTargets?.includes('mandataires')\n ? t('inpi_verification.beneficiaires_label', 'Bénéficiaires effectifs renseignés au RNE')\n : d?.compareTargets?.includes('mandataires') && !d?.compareTargets?.includes('beneficiairesEffectifs')\n ? t('inpi_verification.mandataires_label', 'Mandataires renseignés au RNE')\n : t('inpi_verification.persons_label', 'Personnes renseignées au RNE');\n\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n\n {/* Icon */}\n <div className=\"text-center\">\n <div className=\"mx-auto w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mb-4\">\n <div className=\"w-8 h-8 bg-red-500 rounded-full flex items-center justify-center\">\n <span className=\"text-white text-lg\">✕</span>\n </div>\n </div>\n </div>\n\n {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl text-red-600\">\n {t('inpi_verification.mismatch_title', 'Identité non confirmée')}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {t(\n 'inpi_verification.mismatch_desc',\n \"Les informations saisies ne correspondent à aucune personne déclarée à l'INPI pour cette société.\",\n )}\n </Subtitle>\n </div>\n\n {/* Submitted identity card */}\n {d && (d.submittedLastName || d.submittedFirstName) && (\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-red-900 mb-2\">\n {t('errors.problems_detected', 'Problèmes détectés')}\n </h3>\n <div className=\"text-sm text-red-800 space-y-1\">\n {d.submittedLastName && (\n <p>\n {t('inpi_verification.submitted_last_name', 'Nom saisi')}\n {' : '}\n <strong>{d.submittedLastName}</strong>\n </p>\n )}\n {d.submittedFirstName && (\n <p>\n {t('inpi_verification.submitted_first_name', 'Prénom saisi')}\n {' : '}\n <strong>{d.submittedFirstName}</strong>\n </p>\n )}\n </div>\n </div>\n )}\n\n {/* INPI persons card */}\n {(showMandataires || showBeneficiaires) && (\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-blue-900 mb-2\">{personListLabel}</h3>\n <div className=\"text-sm text-blue-800 space-y-1\">\n {showMandataires && d!.mandataires.map((m, i) => (\n <p key={`m-${i}`}>\n <strong>{m.nom ?? '—'}</strong>\n {(m.prenoms ?? []).length > 0 && ` ${m.prenoms!.join(' ')}`}\n </p>\n ))}\n {showBeneficiaires && d!.beneficiairesEffectifs.map((b, i) => (\n <p key={`b-${i}`}>\n <strong>{b.nom ?? '—'}</strong>\n {(b.prenoms ?? []).length > 0 && ` ${b.prenoms!.join(' ')}`}\n </p>\n ))}\n </div>\n </div>\n )}\n\n </div>\n </div>\n\n {/* Footer */}\n <div className=\"sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8\">\n <div className=\"w-full max-w-md mx-auto\">\n <div className=\"flex flex-col space-y-3 md:hidden\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-mismatch-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n <Button onClick={onNext} data-cy=\"inpi-mismatch-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n </div>\n <div className=\"hidden md:flex justify-center space-x-3\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-mismatch-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n <Button onClick={onNext} data-cy=\"inpi-mismatch-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ─── Not found phase ───────────────────────────────────────────────────────\n\n if (phase === 'not_found') {\n const d = errorScreenData;\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n\n {/* Icon */}\n <div className=\"text-center\">\n <div className=\"mx-auto w-16 h-16 bg-orange-100 rounded-full flex items-center justify-center mb-4\">\n <div className=\"w-8 h-8 bg-orange-500 rounded-full flex items-center justify-center\">\n <span className=\"text-white text-lg font-bold\">!</span>\n </div>\n </div>\n </div>\n\n {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl text-orange-600\">\n {t('inpi_verification.not_found_title', 'Société introuvable')}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {t(\n 'inpi_verification.not_found_desc',\n \"Le numéro saisi ne correspond à aucune société enregistrée dans le Registre National des Entreprises.\",\n )}\n </Subtitle>\n </div>\n\n {/* Details card */}\n <div className=\"bg-orange-50 border border-orange-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-orange-900 mb-2\">\n {t('errors.problems_detected', 'Problèmes détectés')}\n </h3>\n <div className=\"text-sm text-orange-800 space-y-1\">\n {d?.siren && (\n <p>\n {t('inpi_verification.siren_label', 'SIREN')}\n {' : '}\n <strong>{d.siren}</strong>\n </p>\n )}\n <p>{t('inpi_verification.not_found_detail', 'Aucune société trouvée dans le Registre National des Entreprises.')}</p>\n </div>\n </div>\n\n </div>\n </div>\n\n {/* Footer */}\n <div className=\"sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8\">\n <div className=\"w-full max-w-md mx-auto\">\n <div className=\"flex flex-col space-y-3 md:hidden\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-not-found-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n <Button onClick={onNext} data-cy=\"inpi-not-found-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n </div>\n <div className=\"hidden md:flex justify-center space-x-3\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-not-found-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n <Button onClick={onNext} data-cy=\"inpi-not-found-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ─── Error / fallback ─────────────────────────────────────────────────────\n\n return (\n <LoadingState\n message={t('verification_node.verifying_title', 'Vérification en cours…')}\n subtitle={t('verification_node.verifying_desc', 'Vérification en cours…')}\n />\n );\n};\n\nexport default ExternalVerificationNodeHandler;\n"],"names":["__spreadArray","useTranslation","sdkI18n","useState","__assign","useEffect","__awaiter","apiService","_jsx","_jsxs","Title","Subtitle","checkIcon","Button","LoadingState"],"mappings":"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"}
|
|
@@ -70,22 +70,28 @@ var TemplateNodeRenderer = function (_a) {
|
|
|
70
70
|
var currentStep_1 = templateIndex + 1;
|
|
71
71
|
var visitCount = stepHistory.filter(function (s) { return s === currentStep_1; }).length;
|
|
72
72
|
var runIndex = Math.max(0, visitCount - 1);
|
|
73
|
-
//
|
|
74
|
-
//
|
|
75
|
-
//
|
|
73
|
+
// Pré-remplissage multi-ENTITÉS : si _list présent, utiliser _list[runIndex]
|
|
74
|
+
// (ou {} hors borne). L'énumération de plusieurs entités successives passe
|
|
75
|
+
// exclusivement par _list (cf. docs/multi-runs.md).
|
|
76
|
+
// Sans _list : on pré-remplit TOUJOURS depuis le userInput persisté — y compris
|
|
77
|
+
// sur une ré-entrée (boucle condition de correction, retour arrière, bouton
|
|
78
|
+
// "Corriger ma saisie"). Une ré-entrée sans _list = corriger les MÊMES données,
|
|
79
|
+
// pas en saisir de nouvelles → on ne doit pas vider le formulaire.
|
|
76
80
|
var hasList = Array.isArray((_b = session.userInput) === null || _b === void 0 ? void 0 : _b._list);
|
|
77
81
|
var initialUserInput = void 0;
|
|
78
82
|
if (hasList) {
|
|
79
83
|
var prefill = sessionService.getRunPrefillData(session.userInput, runIndex);
|
|
80
84
|
initialUserInput = (prefill !== null && prefill !== void 0 ? prefill : {});
|
|
81
85
|
}
|
|
82
|
-
else if (runIndex > 0) {
|
|
83
|
-
initialUserInput = {};
|
|
84
|
-
}
|
|
85
86
|
else {
|
|
86
87
|
initialUserInput = userInput;
|
|
87
88
|
}
|
|
88
|
-
return (
|
|
89
|
+
return (
|
|
90
|
+
// key={node.id} : remonte le formulaire à chaque changement de nœud, pour
|
|
91
|
+
// qu'il se ré-initialise depuis initialUserInput (comportement "refresh sans
|
|
92
|
+
// refresh"). Évite la réutilisation d'instance qui laissait customFormData
|
|
93
|
+
// périmé au retour arrière entre deux nœuds information-input.
|
|
94
|
+
jsxRuntime.jsx(UserInputForm.default, { stepObject: stepObject, node: node, template: session.template, setUserInput: setUserInput, initialUserInput: initialUserInput, contactInfo: contactInfo, setContactInfo: setContactInfo, sessionId: sessionId }, node.id));
|
|
89
95
|
}
|
|
90
96
|
case "document-collection": {
|
|
91
97
|
return (jsxRuntime.jsx(DocumentCollection.default, { node: node, stepObject: stepObject, sessionId: sessionId, template: session.template, onContinueOnPC: onContinueOnPC, allowedDocumentTypes: (node.allowedDocumentTypes || []).map(function (docType) { return (tslib_es6.__assign(tslib_es6.__assign({}, docType), { side: typeof docType.side === "string" ||
|
|
@@ -125,8 +131,11 @@ var TemplateNodeRenderer = function (_a) {
|
|
|
125
131
|
console.debug("🔍 Rendering External Verification Node Handler");
|
|
126
132
|
return (jsxRuntime.jsx(ExternalVerificationNodeHandler.default, { node: node, session: session, userInput: userInput, setUserInput: setUserInput, onNext: function () { return stepObject.goToNextStep(node.id, session.template); }, onPrevious: function () { return stepObject.goBack(); }, onNavigateToNode: function (nodeId) {
|
|
127
133
|
var idx = templateNodes.findIndex(function (n) { return n.id === nodeId; });
|
|
134
|
+
// idx est 0-based, les steps sont 1-based → idx + 1.
|
|
135
|
+
// goBackToStep tronque l'historique pour que le nœud corrigé
|
|
136
|
+
// redevienne runIndex 0 (formulaire pré-rempli).
|
|
128
137
|
if (idx !== -1)
|
|
129
|
-
stepObject.
|
|
138
|
+
stepObject.goBackToStep(idx + 1);
|
|
130
139
|
else
|
|
131
140
|
stepObject.goBack();
|
|
132
141
|
} }));
|