@unlev/exeq 0.1.6 → 0.1.7

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/index.mjs CHANGED
@@ -1303,11 +1303,18 @@ function SignerView({
1303
1303
  const [fields, setFields] = useState3([]);
1304
1304
  const [selectedFieldId, setSelectedFieldId] = useState3(null);
1305
1305
  const [signer, setSigner] = useState3(initialSigner || "Signer 1");
1306
+ const initializedRef = useRef4(false);
1306
1307
  const [loading, setLoading] = useState3(false);
1307
1308
  const [submitting, setSubmitting] = useState3(false);
1308
1309
  const [pdfSource, setPdfSource] = useState3(null);
1309
1310
  const [callbackUrl, setCallbackUrl] = useState3(initialCallbackUrl || "");
1310
1311
  const containerRef = useRef4(null);
1312
+ useEffect3(() => {
1313
+ if (initialSigner) {
1314
+ setSigner(initialSigner);
1315
+ setSelectedFieldId(null);
1316
+ }
1317
+ }, [initialSigner]);
1311
1318
  useEffect3(() => {
1312
1319
  if (initialTemplate) {
1313
1320
  let templateFields = initialTemplate.fields;
@@ -1321,7 +1328,15 @@ function SignerView({
1321
1328
  return value !== void 0 ? { ...f, value } : f;
1322
1329
  });
1323
1330
  }
1324
- setFields(templateFields);
1331
+ if (initializedRef.current) {
1332
+ setFields((prev) => {
1333
+ const valueMap = new Map(prev.filter((f) => f.value).map((f) => [f.id, f.value]));
1334
+ return templateFields.map((f) => valueMap.has(f.id) ? { ...f, value: valueMap.get(f.id) } : f);
1335
+ });
1336
+ } else {
1337
+ setFields(templateFields);
1338
+ initializedRef.current = true;
1339
+ }
1325
1340
  if (initialPdfUrl) loadPdf(initialPdfUrl);
1326
1341
  return;
1327
1342
  }
@@ -1334,11 +1349,31 @@ function SignerView({
1334
1349
  if (cbUrl) setCallbackUrl(cbUrl);
1335
1350
  if (pdfUrl) loadPdf(pdfUrl);
1336
1351
  if (fieldsUrl) {
1337
- fetch(fieldsUrl).then((r) => r.json()).then((template) => setFields(template.fields)).catch((err) => console.error("Failed to load fields:", err));
1352
+ fetch(fieldsUrl).then((r) => r.json()).then((template) => {
1353
+ if (initializedRef.current) {
1354
+ setFields((prev) => {
1355
+ const valueMap = new Map(prev.filter((f) => f.value).map((f) => [f.id, f.value]));
1356
+ return template.fields.map((f) => valueMap.has(f.id) ? { ...f, value: valueMap.get(f.id) } : f);
1357
+ });
1358
+ } else {
1359
+ setFields(template.fields);
1360
+ initializedRef.current = true;
1361
+ }
1362
+ }).catch((err) => console.error("Failed to load fields:", err));
1338
1363
  }
1339
1364
  const handleMessage = (e) => {
1340
1365
  if (e.data?.type === "load-signing") {
1341
- if (e.data.fields) setFields(e.data.fields);
1366
+ if (e.data.fields) {
1367
+ if (initializedRef.current) {
1368
+ setFields((prev) => {
1369
+ const valueMap = new Map(prev.filter((f) => f.value).map((f) => [f.id, f.value]));
1370
+ return e.data.fields.map((f) => valueMap.has(f.id) ? { ...f, value: valueMap.get(f.id) } : f);
1371
+ });
1372
+ } else {
1373
+ setFields(e.data.fields);
1374
+ initializedRef.current = true;
1375
+ }
1376
+ }
1342
1377
  if (e.data.pdfUrl) loadPdf(e.data.pdfUrl);
1343
1378
  if (e.data.signer) setSigner(e.data.signer);
1344
1379
  if (e.data.callbackUrl) setCallbackUrl(e.data.callbackUrl);