@prosopo/procaptcha-puzzle 2.13.2 → 2.14.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.
Files changed (72) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +6 -6
  2. package/.turbo/turbo-build$colon$tsc.log +19 -19
  3. package/.turbo/turbo-build.log +7 -7
  4. package/CHANGELOG.md +50 -0
  5. package/dist/cjs/components/procaptchaPuzzle.cjs +22 -0
  6. package/dist/cjs/components/procaptchaWidget.cjs +225 -0
  7. package/dist/cjs/components/puzzleCanvas.cjs +450 -0
  8. package/dist/cjs/index.cjs +7 -2
  9. package/dist/components/procaptchaPuzzle.d.ts +7 -0
  10. package/dist/components/procaptchaPuzzle.d.ts.map +1 -0
  11. package/dist/components/procaptchaPuzzle.js +21 -0
  12. package/dist/components/procaptchaPuzzle.js.map +1 -0
  13. package/dist/components/procaptchaWidget.d.ts +7 -0
  14. package/dist/components/procaptchaWidget.d.ts.map +1 -0
  15. package/dist/components/procaptchaWidget.js +225 -0
  16. package/dist/components/procaptchaWidget.js.map +1 -0
  17. package/dist/components/{PuzzleCanvas.d.ts → puzzleCanvas.d.ts} +6 -4
  18. package/dist/components/puzzleCanvas.d.ts.map +1 -0
  19. package/dist/components/puzzleCanvas.js +450 -0
  20. package/dist/components/puzzleCanvas.js.map +1 -0
  21. package/dist/index.d.ts +3 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +4 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/tests/domHarness.d.ts +20 -0
  26. package/dist/tests/domHarness.d.ts.map +1 -0
  27. package/dist/tests/domHarness.js +56 -0
  28. package/dist/tests/domHarness.js.map +1 -0
  29. package/dist/tests/procaptchaPuzzle.test-d.js +13 -10
  30. package/dist/tests/procaptchaPuzzle.test-d.js.map +1 -1
  31. package/dist/tests/procaptchaPuzzle.unit.test.js +44 -33
  32. package/dist/tests/procaptchaPuzzle.unit.test.js.map +1 -1
  33. package/dist/tests/procaptchaWidget.unit.test.js +108 -175
  34. package/dist/tests/procaptchaWidget.unit.test.js.map +1 -1
  35. package/dist/tests/puzzleCanvas.unit.test.js +47 -80
  36. package/dist/tests/puzzleCanvas.unit.test.js.map +1 -1
  37. package/package.json +8 -12
  38. package/src/components/procaptchaPuzzle.ts +54 -0
  39. package/src/components/procaptchaWidget.ts +392 -0
  40. package/src/components/puzzleCanvas.ts +653 -0
  41. package/src/index.ts +3 -2
  42. package/src/tests/domHarness.ts +122 -0
  43. package/src/tests/procaptchaPuzzle.test-d.ts +33 -17
  44. package/src/tests/procaptchaPuzzle.unit.test.ts +59 -44
  45. package/src/tests/procaptchaWidget.unit.test.ts +145 -258
  46. package/src/tests/puzzleCanvas.unit.test.ts +76 -120
  47. package/tsconfig.cjs.json +1 -2
  48. package/tsconfig.json +1 -2
  49. package/tsconfig.tsbuildinfo +1 -1
  50. package/vite.test.config.ts +3 -4
  51. package/dist/cjs/components/ProcaptchaPuzzle.cjs +0 -7
  52. package/dist/cjs/components/ProcaptchaWidget.cjs +0 -206
  53. package/dist/cjs/components/PuzzleCanvas.cjs +0 -476
  54. package/dist/components/ProcaptchaPuzzle.d.ts +0 -3
  55. package/dist/components/ProcaptchaPuzzle.d.ts.map +0 -1
  56. package/dist/components/ProcaptchaPuzzle.js +0 -7
  57. package/dist/components/ProcaptchaPuzzle.js.map +0 -1
  58. package/dist/components/ProcaptchaWidget.d.ts +0 -4
  59. package/dist/components/ProcaptchaWidget.d.ts.map +0 -1
  60. package/dist/components/ProcaptchaWidget.js +0 -207
  61. package/dist/components/ProcaptchaWidget.js.map +0 -1
  62. package/dist/components/PuzzleCanvas.d.ts.map +0 -1
  63. package/dist/components/PuzzleCanvas.js +0 -476
  64. package/dist/components/PuzzleCanvas.js.map +0 -1
  65. package/dist/tests/setup.d.ts +0 -5
  66. package/dist/tests/setup.d.ts.map +0 -1
  67. package/dist/tests/setup.js +0 -3
  68. package/dist/tests/setup.js.map +0 -1
  69. package/src/components/ProcaptchaPuzzle.tsx +0 -36
  70. package/src/components/ProcaptchaWidget.tsx +0 -320
  71. package/src/components/PuzzleCanvas.tsx +0 -638
  72. package/src/tests/setup.ts +0 -26
@@ -1,476 +0,0 @@
1
- import { useTranslation } from "@prosopo/locale";
2
- import { ChallengeSurface, isEventTrusted } from "@prosopo/procaptcha-common";
3
- import { useCallback, useEffect, useId, useRef, useState } from "react";
4
- import { jsx, jsxs } from "@emotion/react/jsx-runtime";
5
- //#region src/components/PuzzleCanvas.tsx
6
- var CONTAINER_WIDTH = 300;
7
- var CONTAINER_HEIGHT = 200;
8
- var PIECE_CSS_CLASS = "prosopo-puzzle-piece";
9
- var STEP_PX = 10;
10
- var FINE_STEP_PX = 2;
11
- var ANNOUNCE_DEBOUNCE_MS = 400;
12
- var VISUALLY_HIDDEN = {
13
- position: "absolute",
14
- width: "1px",
15
- height: "1px",
16
- padding: 0,
17
- margin: "-1px",
18
- overflow: "hidden",
19
- clip: "rect(0, 0, 0, 0)",
20
- clipPath: "inset(50%)",
21
- whiteSpace: "nowrap",
22
- border: 0
23
- };
24
- var stylesheet = (focusRingColor) => `
25
- @keyframes prosopo-puzzle-shake {
26
- 0%, 100% { transform: translateX(0); }
27
- 10%, 30%, 50%, 70%, 90% { transform: translateX(-4px); }
28
- 20%, 40%, 60%, 80% { transform: translateX(4px); }
29
- }
30
- .${PIECE_CSS_CLASS}:focus-visible {
31
- outline: 3px solid ${focusRingColor};
32
- outline-offset: 2px;
33
- }
34
- `;
35
- var PuzzleCanvas = ({ originX, originY, background, piece, pieceSize, onComplete, showRetry, submitting, theme, placement, anchor, onDismiss }) => {
36
- const [posX, setPosX] = useState(originX);
37
- const [posY, setPosY] = useState(originY);
38
- const isDragging = useRef(false);
39
- const [dragging, setDragging] = useState(false);
40
- const puzzleEvents = useRef([]);
41
- const containerRef = useRef(null);
42
- const offsetRef = useRef({
43
- x: 0,
44
- y: 0
45
- });
46
- const [visible, setVisible] = useState(false);
47
- const [shaking, setShaking] = useState(false);
48
- const { t } = useTranslation();
49
- const baseId = useId();
50
- const instructionId = `${baseId}-instruction`;
51
- const keyboardHintId = `${baseId}-keyboard-hint`;
52
- const keyboardDragging = useRef(false);
53
- const [announcement, setAnnouncement] = useState("");
54
- const announceTimer = useRef(null);
55
- useEffect(() => {
56
- setPosX(originX);
57
- setPosY(originY);
58
- keyboardDragging.current = false;
59
- }, [originX, originY]);
60
- useEffect(() => {
61
- const frame = requestAnimationFrame(() => setVisible(true));
62
- return () => cancelAnimationFrame(frame);
63
- }, []);
64
- useEffect(() => {
65
- if (showRetry) {
66
- setShaking(true);
67
- const timer = setTimeout(() => setShaking(false), 500);
68
- return () => clearTimeout(timer);
69
- }
70
- return () => {};
71
- }, [showRetry]);
72
- const clamp = useCallback((value, min, max) => {
73
- return Math.max(min, Math.min(max, value));
74
- }, []);
75
- const announce = useCallback((message, delayMs = 0) => {
76
- if (announceTimer.current) {
77
- clearTimeout(announceTimer.current);
78
- announceTimer.current = null;
79
- }
80
- if (delayMs === 0) {
81
- setAnnouncement(message);
82
- return;
83
- }
84
- announceTimer.current = setTimeout(() => setAnnouncement(message), delayMs);
85
- }, []);
86
- useEffect(() => () => {
87
- if (announceTimer.current) clearTimeout(announceTimer.current);
88
- }, []);
89
- const describePosition = useCallback((x, y) => t("WIDGET.PUZZLE.POSITION", {
90
- defaultValue: "{{x}} percent across, {{y}} percent down",
91
- x: Math.round(x / CONTAINER_WIDTH * 100),
92
- y: Math.round(y / CONTAINER_HEIGHT * 100)
93
- }), [t]);
94
- const getContainerOffset = useCallback(() => {
95
- if (containerRef.current) {
96
- const rect = containerRef.current.getBoundingClientRect();
97
- return {
98
- x: rect.left,
99
- y: rect.top
100
- };
101
- }
102
- return {
103
- x: 0,
104
- y: 0
105
- };
106
- }, []);
107
- const handleMoveEvent = useCallback((clientX, clientY) => {
108
- if (!isDragging.current) return;
109
- const containerOffset = getContainerOffset();
110
- const newX = clamp(clientX - containerOffset.x - offsetRef.current.x, 0, CONTAINER_WIDTH);
111
- const newY = clamp(clientY - containerOffset.y - offsetRef.current.y, 0, CONTAINER_HEIGHT);
112
- setPosX(newX);
113
- setPosY(newY);
114
- puzzleEvents.current.push({
115
- x: newX,
116
- y: newY,
117
- t: Date.now()
118
- });
119
- }, [clamp, getContainerOffset]);
120
- const complete = useCallback((finalX, finalY) => {
121
- onComplete(finalX, finalY, [...puzzleEvents.current]);
122
- }, [onComplete]);
123
- const handleEndEvent = useCallback(() => {
124
- if (!isDragging.current) return;
125
- isDragging.current = false;
126
- setDragging(false);
127
- const lastEvent = puzzleEvents.current[puzzleEvents.current.length - 1];
128
- complete(lastEvent ? lastEvent.x : originX, lastEvent ? lastEvent.y : originY);
129
- }, [
130
- complete,
131
- originX,
132
- originY
133
- ]);
134
- const handleMouseMove = useCallback((event) => {
135
- handleMoveEvent(event.clientX, event.clientY);
136
- }, [handleMoveEvent]);
137
- const handleTouchMove = useCallback((event) => {
138
- const touch = event.touches[0];
139
- if (touch) handleMoveEvent(touch.clientX, touch.clientY);
140
- }, [handleMoveEvent]);
141
- const handleMouseUp = useCallback(() => {
142
- handleEndEvent();
143
- }, [handleEndEvent]);
144
- const handleTouchEnd = useCallback(() => {
145
- handleEndEvent();
146
- }, [handleEndEvent]);
147
- useEffect(() => {
148
- document.addEventListener("mousemove", handleMouseMove);
149
- document.addEventListener("mouseup", handleMouseUp);
150
- document.addEventListener("touchmove", handleTouchMove);
151
- document.addEventListener("touchend", handleTouchEnd);
152
- return () => {
153
- document.removeEventListener("mousemove", handleMouseMove);
154
- document.removeEventListener("mouseup", handleMouseUp);
155
- document.removeEventListener("touchmove", handleTouchMove);
156
- document.removeEventListener("touchend", handleTouchEnd);
157
- };
158
- }, [
159
- handleMouseMove,
160
- handleMouseUp,
161
- handleTouchMove,
162
- handleTouchEnd
163
- ]);
164
- const handlePieceMouseDown = useCallback((event) => {
165
- if (submitting) return;
166
- isDragging.current = true;
167
- keyboardDragging.current = false;
168
- setDragging(true);
169
- puzzleEvents.current = [];
170
- const containerOffset = getContainerOffset();
171
- offsetRef.current = {
172
- x: event.clientX - containerOffset.x - posX,
173
- y: event.clientY - containerOffset.y - posY
174
- };
175
- }, [
176
- getContainerOffset,
177
- posX,
178
- posY,
179
- submitting
180
- ]);
181
- const handlePieceTouchStart = useCallback((event) => {
182
- if (submitting) return;
183
- const touch = event.touches[0];
184
- if (touch) {
185
- isDragging.current = true;
186
- keyboardDragging.current = false;
187
- setDragging(true);
188
- puzzleEvents.current = [];
189
- const containerOffset = getContainerOffset();
190
- offsetRef.current = {
191
- x: touch.clientX - containerOffset.x - posX,
192
- y: touch.clientY - containerOffset.y - posY
193
- };
194
- }
195
- }, [
196
- getContainerOffset,
197
- posX,
198
- posY,
199
- submitting
200
- ]);
201
- const moveByKeyboard = useCallback((deltaX, deltaY) => {
202
- if (!keyboardDragging.current) {
203
- keyboardDragging.current = true;
204
- puzzleEvents.current = [];
205
- }
206
- const nextX = clamp(posX + deltaX, 0, CONTAINER_WIDTH);
207
- const nextY = clamp(posY + deltaY, 0, CONTAINER_HEIGHT);
208
- setPosX(nextX);
209
- setPosY(nextY);
210
- puzzleEvents.current.push({
211
- x: nextX,
212
- y: nextY,
213
- t: Date.now()
214
- });
215
- announce(describePosition(nextX, nextY), ANNOUNCE_DEBOUNCE_MS);
216
- }, [
217
- announce,
218
- clamp,
219
- describePosition,
220
- posX,
221
- posY
222
- ]);
223
- const handlePieceKeyDown = useCallback((event) => {
224
- if (submitting) return;
225
- if (!isEventTrusted(event)) return;
226
- const step = event.shiftKey ? FINE_STEP_PX : STEP_PX;
227
- const move = {
228
- ArrowLeft: [-step, 0],
229
- ArrowRight: [step, 0],
230
- ArrowUp: [0, -step],
231
- ArrowDown: [0, step],
232
- Home: [originX - posX, originY - posY]
233
- }[event.key];
234
- if (move) {
235
- event.preventDefault();
236
- moveByKeyboard(move[0], move[1]);
237
- return;
238
- }
239
- if (event.key === "Enter" || event.key === " ") {
240
- event.preventDefault();
241
- keyboardDragging.current = false;
242
- complete(posX, posY);
243
- }
244
- }, [
245
- complete,
246
- moveByKeyboard,
247
- originX,
248
- originY,
249
- posX,
250
- posY,
251
- submitting
252
- ]);
253
- const handlePieceFocus = useCallback(() => {
254
- announce(describePosition(posX, posY));
255
- }, [
256
- announce,
257
- describePosition,
258
- posX,
259
- posY
260
- ]);
261
- const instructionText = showRetry ? t("WIDGET.PUZZLE.RETRY", { defaultValue: "Not quite — try again" }) : t("WIDGET.PUZZLE.DRAG", { defaultValue: "Drag the piece to the target" });
262
- const keyboardHintText = t("WIDGET.PUZZLE.KEYBOARD_HINT", { defaultValue: "Use the arrow keys to move the piece, holding shift for smaller steps. Press Enter to submit it, Home to put it back at the start, or Escape to cancel." });
263
- useEffect(() => {
264
- if (!submitting) return;
265
- announce(t("WIDGET.PUZZLE.CHECKING", { defaultValue: "Checking your answer" }));
266
- }, [
267
- submitting,
268
- announce,
269
- t
270
- ]);
271
- useEffect(() => {
272
- if (!showRetry) return;
273
- announce(t("WIDGET.PUZZLE.RETRY_ANNOUNCEMENT", { defaultValue: "Not quite. A new puzzle has loaded and the piece is back at the start." }));
274
- }, [
275
- showRetry,
276
- announce,
277
- t
278
- ]);
279
- const headerBorderColor = showRetry ? theme.palette.error.main : "transparent";
280
- const headerTextColor = showRetry ? theme.palette.error.main : theme.palette.onSurface;
281
- const puzzleAreaBg = `linear-gradient(135deg, ${theme.palette.surface} 0%, ${theme.palette.primaryContainer.main} 50%, ${theme.palette.surface} 100%)`;
282
- const deltaX = posX - originX;
283
- const deltaY = posY - originY;
284
- const dragDistance = Math.hypot(deltaX, deltaY);
285
- const PARALLAX_FACTOR = .08;
286
- const bgTranslateX = dragging ? -deltaX * PARALLAX_FACTOR : 0;
287
- const bgTranslateY = dragging ? -deltaY * PARALLAX_FACTOR : 0;
288
- const bgScale = dragging ? 1.03 : 1;
289
- const hueShift = dragging ? Math.max(-18, Math.min(18, deltaX * .12)) : 0;
290
- const satBoost = dragging ? 1 + Math.min(.25, dragDistance * .0035) : 1;
291
- const brightness = dragging ? 1 - Math.min(.06, dragDistance * 8e-4) : 1;
292
- const bgFilter = `hue-rotate(${hueShift.toFixed(2)}deg) saturate(${satBoost.toFixed(3)}) brightness(${brightness.toFixed(3)})`;
293
- const bgTransform = `translate(${bgTranslateX.toFixed(2)}px, ${bgTranslateY.toFixed(2)}px) scale(${bgScale.toFixed(3)})`;
294
- return /* @__PURE__ */ jsxs(ChallengeSurface, {
295
- show: true,
296
- placement,
297
- anchor,
298
- onDismiss,
299
- scrim: visible ? "dim" : "none",
300
- dialogLabel: t("WIDGET.PUZZLE.DIALOG_LABEL", { defaultValue: "Puzzle challenge" }),
301
- children: [
302
- /* @__PURE__ */ jsx("style", { children: stylesheet(theme.palette.primary.main) }),
303
- /* @__PURE__ */ jsx("output", {
304
- "aria-live": "polite",
305
- "aria-atomic": "true",
306
- style: VISUALLY_HIDDEN,
307
- children: announcement
308
- }),
309
- /* @__PURE__ */ jsx("div", {
310
- id: keyboardHintId,
311
- style: VISUALLY_HIDDEN,
312
- children: keyboardHintText
313
- }),
314
- /* @__PURE__ */ jsxs("div", {
315
- style: {
316
- display: "flex",
317
- flexDirection: "column",
318
- alignItems: "center",
319
- gap: "0",
320
- opacity: visible ? 1 : 0,
321
- transform: visible ? "scale(1)" : "scale(0.9)",
322
- transition: "opacity 0.3s ease, transform 0.3s ease",
323
- animation: shaking ? "prosopo-puzzle-shake 0.5s ease" : "none"
324
- },
325
- children: [/* @__PURE__ */ jsx("div", {
326
- id: instructionId,
327
- style: {
328
- backgroundColor: theme.palette.surface,
329
- borderRadius: "20px 20px 0 0",
330
- padding: "12px 20px",
331
- width: `${CONTAINER_WIDTH}px`,
332
- boxSizing: "border-box",
333
- textAlign: "center",
334
- fontFamily: theme.font.fontFamily,
335
- fontSize: "14px",
336
- fontWeight: 500,
337
- color: headerTextColor,
338
- borderBottom: `2px solid ${headerBorderColor}`,
339
- transition: "color 0.3s ease, border-color 0.3s ease"
340
- },
341
- children: instructionText
342
- }), /* @__PURE__ */ jsxs("div", {
343
- ref: containerRef,
344
- style: {
345
- position: "relative",
346
- width: `${CONTAINER_WIDTH}px`,
347
- height: `${CONTAINER_HEIGHT}px`,
348
- background: puzzleAreaBg,
349
- borderRadius: "0 0 20px 20px",
350
- overflow: "hidden",
351
- userSelect: "none",
352
- opacity: submitting ? .6 : 1,
353
- pointerEvents: submitting ? "none" : "auto",
354
- transition: "opacity 0.2s ease"
355
- },
356
- children: [/* @__PURE__ */ jsx("div", {
357
- style: {
358
- position: "absolute",
359
- left: `-${CONTAINER_WIDTH}px`,
360
- top: `-${CONTAINER_HEIGHT}px`,
361
- width: `${CONTAINER_WIDTH * 3}px`,
362
- height: `${CONTAINER_HEIGHT * 3}px`,
363
- pointerEvents: "none",
364
- userSelect: "none",
365
- transform: bgTransform,
366
- transformOrigin: "center center",
367
- filter: bgFilter,
368
- transition: dragging ? "none" : "transform 0.35s cubic-bezier(0.22, 1, 0.36, 1), filter 0.35s ease",
369
- willChange: "transform, filter"
370
- },
371
- children: [
372
- [
373
- 0,
374
- 0,
375
- -1,
376
- -1
377
- ],
378
- [
379
- 1,
380
- 0,
381
- 1,
382
- -1
383
- ],
384
- [
385
- 2,
386
- 0,
387
- -1,
388
- -1
389
- ],
390
- [
391
- 0,
392
- 1,
393
- -1,
394
- 1
395
- ],
396
- [
397
- 1,
398
- 1,
399
- 1,
400
- 1
401
- ],
402
- [
403
- 2,
404
- 1,
405
- -1,
406
- 1
407
- ],
408
- [
409
- 0,
410
- 2,
411
- -1,
412
- -1
413
- ],
414
- [
415
- 1,
416
- 2,
417
- 1,
418
- -1
419
- ],
420
- [
421
- 2,
422
- 2,
423
- -1,
424
- -1
425
- ]
426
- ].map(([col, row, sx, sy]) => {
427
- const key = `${col}-${row}`;
428
- return /* @__PURE__ */ jsx("img", {
429
- src: background,
430
- alt: "",
431
- draggable: false,
432
- style: {
433
- position: "absolute",
434
- left: `${(col ?? 0) * CONTAINER_WIDTH}px`,
435
- top: `${(row ?? 0) * CONTAINER_HEIGHT}px`,
436
- width: `${CONTAINER_WIDTH}px`,
437
- height: `${CONTAINER_HEIGHT}px`,
438
- transform: `scale(${sx}, ${sy})`,
439
- pointerEvents: "none",
440
- userSelect: "none"
441
- }
442
- }, key);
443
- })
444
- }), /* @__PURE__ */ jsx("div", {
445
- ...process.env.NODE_ENV !== "production" && { "data-cy": "prosopo-puzzle-piece" },
446
- className: PIECE_CSS_CLASS,
447
- role: "application",
448
- "aria-roledescription": t("WIDGET.PUZZLE.PIECE_ROLE", { defaultValue: "draggable puzzle piece" }),
449
- "aria-label": t("WIDGET.PUZZLE.PIECE_LABEL", { defaultValue: "Puzzle piece" }),
450
- "aria-describedby": `${instructionId} ${keyboardHintId}`,
451
- tabIndex: submitting ? -1 : 0,
452
- onFocus: handlePieceFocus,
453
- onKeyDown: handlePieceKeyDown,
454
- onMouseDown: handlePieceMouseDown,
455
- onTouchStart: handlePieceTouchStart,
456
- style: {
457
- position: "absolute",
458
- left: `${posX - pieceSize / 2}px`,
459
- top: `${posY - pieceSize / 2}px`,
460
- width: `${pieceSize}px`,
461
- height: `${pieceSize}px`,
462
- backgroundImage: `url(${piece})`,
463
- backgroundSize: "100% 100%",
464
- touchAction: "none",
465
- cursor: submitting ? "default" : isDragging.current ? "grabbing" : "grab",
466
- filter: isDragging.current ? "drop-shadow(0 4px 10px rgba(0, 0, 0, 0.45))" : "drop-shadow(0 2px 5px rgba(0, 0, 0, 0.35))",
467
- transition: isDragging.current ? "none" : "filter 0.2s ease, left 0.3s ease, top 0.3s ease"
468
- }
469
- })]
470
- })]
471
- })
472
- ]
473
- });
474
- };
475
- //#endregion
476
- export { PuzzleCanvas };
@@ -1 +0,0 @@
1
- {"version":3,"file":"PuzzleCanvas.js","sourceRoot":"","sources":["../../src/components/PuzzleCanvas.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- declare global {
2
- var IS_REACT_ACT_ENVIRONMENT: boolean;
3
- }
4
- export {};
5
- //# sourceMappingURL=setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/tests/setup.ts"],"names":[],"mappings":"AAmBA,OAAO,CAAC,MAAM,CAAC;IACd,IAAI,wBAAwB,EAAE,OAAO,CAAC;CACtC;AAID,OAAO,EAAE,CAAC"}
@@ -1,3 +0,0 @@
1
- globalThis.IS_REACT_ACT_ENVIRONMENT = true;
2
- export {};
3
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/tests/setup.ts"],"names":[],"mappings":"AAuBA,UAAU,CAAC,wBAAwB,GAAG,IAAI,CAAC"}
@@ -1,36 +0,0 @@
1
- // Copyright 2021-2026 Prosopo (UK) Ltd.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- import type { ProcaptchaProps } from "@prosopo/types";
16
- import { type LazyExoticComponent, Suspense, lazy } from "react";
17
- import type { ReactElement } from "react";
18
-
19
- // Define the function signature more precisely
20
- type ProcaptchaWidgetComponent = (
21
- props: ProcaptchaProps,
22
- ) => ReactElement | null;
23
-
24
- // Lazy load the widget with the correct type signature
25
- const ProcaptchaWidget: LazyExoticComponent<ProcaptchaWidgetComponent> = lazy(
26
- async () => import("./ProcaptchaWidget.js"),
27
- );
28
-
29
- // Spread props rather than enumerating: matches the image (Procaptcha) and
30
- // PoW (ProcaptchaPow) sibling wrappers so any prop the inner widget consumes
31
- // can never be silently dropped by this Suspense wrapper.
32
- export const ProcaptchaPuzzle = (props: ProcaptchaProps) => (
33
- <Suspense>
34
- <ProcaptchaWidget {...props} />
35
- </Suspense>
36
- );