@prosopo/procaptcha-common 2.13.3 → 2.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +6 -6
  2. package/.turbo/turbo-build$colon$tsc.log +18 -18
  3. package/.turbo/turbo-build.log +7 -7
  4. package/CHANGELOG.md +74 -0
  5. package/dist/callbacks/defaultCallbacks.d.ts.map +1 -1
  6. package/dist/callbacks/defaultCallbacks.js +1 -4
  7. package/dist/callbacks/defaultCallbacks.js.map +1 -1
  8. package/dist/cjs/callbacks/defaultCallbacks.cjs +1 -4
  9. package/dist/cjs/elements/window.cjs +5 -2
  10. package/dist/cjs/reactComponents/ChallengeSurface.cjs +44 -1
  11. package/dist/cjs/reactComponents/Checkbox.cjs +29 -3
  12. package/dist/elements/window.d.ts +3 -1
  13. package/dist/elements/window.d.ts.map +1 -1
  14. package/dist/elements/window.js +5 -2
  15. package/dist/elements/window.js.map +1 -1
  16. package/dist/reactComponents/ChallengeSurface.d.ts +1 -0
  17. package/dist/reactComponents/ChallengeSurface.d.ts.map +1 -1
  18. package/dist/reactComponents/ChallengeSurface.js +44 -1
  19. package/dist/reactComponents/ChallengeSurface.js.map +1 -1
  20. package/dist/reactComponents/Checkbox.d.ts +1 -0
  21. package/dist/reactComponents/Checkbox.d.ts.map +1 -1
  22. package/dist/reactComponents/Checkbox.js +30 -4
  23. package/dist/reactComponents/Checkbox.js.map +1 -1
  24. package/dist/tests/challengeSurfaceRender.unit.test.js +71 -3
  25. package/dist/tests/challengeSurfaceRender.unit.test.js.map +1 -1
  26. package/package.json +9 -9
  27. package/src/callbacks/defaultCallbacks.ts +5 -7
  28. package/src/elements/window.ts +13 -4
  29. package/src/reactComponents/ChallengeSurface.tsx +74 -0
  30. package/src/reactComponents/Checkbox.tsx +51 -2
  31. package/src/tests/challengeSurfaceRender.unit.test.tsx +111 -0
  32. package/tsconfig.tsbuildinfo +1 -1
@@ -1,5 +1,5 @@
1
1
 
2
- > @prosopo/procaptcha-common@2.13.3 build:cjs
2
+ > @prosopo/procaptcha-common@2.14.1 build:cjs
3
3
  > NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
4
4
 
5
5
  ViteCommonJSConfig: .
@@ -48,16 +48,16 @@ dist/cjs/elements/form.cjs 0.62 kB │ gzip: 0.31 kB
48
48
  dist/cjs/simdReadings.cjs 0.79 kB │ gzip: 0.36 kB
49
49
  dist/cjs/clientMetaData.cjs 0.83 kB │ gzip: 0.47 kB
50
50
  dist/cjs/events/trust.cjs 0.91 kB │ gzip: 0.53 kB
51
- dist/cjs/elements/window.cjs 0.96 kB │ gzip: 0.54 kB
52
51
  dist/cjs/_virtual/_rolldown/runtime.cjs 1.00 kB │ gzip: 0.50 kB
52
+ dist/cjs/elements/window.cjs 1.12 kB │ gzip: 0.60 kB
53
53
  dist/cjs/reactComponents/TestModeBanner.cjs 1.36 kB │ gzip: 0.75 kB
54
54
  dist/cjs/providers.cjs 1.54 kB │ gzip: 0.64 kB
55
55
  dist/cjs/reactComponents/Honeypot.cjs 2.03 kB │ gzip: 0.91 kB
56
56
  dist/cjs/index.cjs 2.45 kB │ gzip: 0.63 kB
57
57
  dist/cjs/reactComponents/Reload.cjs 2.94 kB │ gzip: 1.30 kB
58
58
  dist/cjs/state/builder.cjs 3.13 kB │ gzip: 0.84 kB
59
- dist/cjs/callbacks/defaultCallbacks.cjs 3.84 kB │ gzip: 1.03 kB
60
- dist/cjs/reactComponents/ChallengeSurface.cjs 5.12 kB │ gzip: 1.87 kB
61
- dist/cjs/reactComponents/Checkbox.cjs 5.39 kB │ gzip: 2.12 kB
59
+ dist/cjs/callbacks/defaultCallbacks.cjs 3.78 kB │ gzip: 1.01 kB
60
+ dist/cjs/reactComponents/Checkbox.cjs 6.21 kB │ gzip: 2.42 kB
61
+ dist/cjs/reactComponents/ChallengeSurface.cjs 6.72 kB │ gzip: 2.29 kB
62
62
 
63
- ✓ built in 87ms
63
+ ✓ built in 86ms
@@ -1,8 +1,8 @@
1
1
 
2
- > @prosopo/procaptcha-common@2.13.3 build:tsc
2
+ > @prosopo/procaptcha-common@2.14.1 build:tsc
3
3
  > tsc --build --verbose
4
4
 
5
- 1:49:05 PM - Projects in this build:
5
+ 1:04:33 PM - Projects in this build:
6
6
  * ../../dev/config/tsconfig.json
7
7
  * ../locale/tsconfig.json
8
8
  * ../util/tsconfig.json
@@ -18,35 +18,35 @@
18
18
  * ../account/tsconfig.json
19
19
  * tsconfig.json
20
20
 
21
- 1:49:05 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
21
+ 1:04:34 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
22
22
 
23
- 1:49:05 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
23
+ 1:04:34 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
24
24
 
25
- 1:49:05 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
25
+ 1:04:34 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
26
26
 
27
- 1:49:05 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/logger.ts' is older than output '../logger/tsconfig.tsbuildinfo'
27
+ 1:04:34 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/logger.ts' is older than output '../logger/tsconfig.tsbuildinfo'
28
28
 
29
- 1:49:05 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
29
+ 1:04:34 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
30
30
 
31
- 1:49:06 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
31
+ 1:04:34 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
32
32
 
33
- 1:49:06 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/tests/utils/batches.unit.test.ts' is older than output '../common/tsconfig.tsbuildinfo'
33
+ 1:04:34 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/tests/utils/batches.unit.test.ts' is older than output '../common/tsconfig.tsbuildinfo'
34
34
 
35
- 1:49:06 PM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/balancer.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
35
+ 1:04:34 PM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/tests/productionProviderList.unit.test.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
36
36
 
37
- 1:49:06 PM - Project '../widget-skeleton/tsconfig.json' is up to date because newest input '../widget-skeleton/src/webComponent/createWidget.ts' is older than output '../widget-skeleton/tsconfig.tsbuildinfo'
37
+ 1:04:34 PM - Project '../widget-skeleton/tsconfig.json' is up to date because newest input '../widget-skeleton/src/webComponent/createWidget.ts' is older than output '../widget-skeleton/tsconfig.tsbuildinfo'
38
38
 
39
- 1:49:06 PM - Project '../fingerprintjs/tsconfig.json' is up to date because newest input '../fingerprintjs/src/utils/browser.ts' is older than output '../fingerprintjs/tsconfig.tsbuildinfo'
39
+ 1:04:34 PM - Project '../fingerprintjs/tsconfig.json' is up to date because newest input '../fingerprintjs/src/utils/browser.ts' is older than output '../fingerprintjs/tsconfig.tsbuildinfo'
40
40
 
41
- 1:49:06 PM - Project '../fingerprint/tsconfig.json' is up to date because newest input '../fingerprint/src/merkle.ts' is older than output '../fingerprint/tsconfig.tsbuildinfo'
41
+ 1:04:34 PM - Project '../fingerprint/tsconfig.json' is up to date because newest input '../fingerprint/src/index.ts' is older than output '../fingerprint/tsconfig.tsbuildinfo'
42
42
 
43
- 1:49:06 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/index.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
43
+ 1:04:34 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/pair/decode.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
44
44
 
45
- 1:49:06 PM - Project '../account/tsconfig.json' is out of date because output file '../account/tsconfig.tsbuildinfo' does not exist
45
+ 1:04:34 PM - Project '../account/tsconfig.json' is out of date because output file '../account/tsconfig.tsbuildinfo' does not exist
46
46
 
47
- 1:49:06 PM - Building project '/home/runner/work/captcha/captcha/packages/account/tsconfig.json'...
47
+ 1:04:34 PM - Building project '/home/runner/work/captcha/captcha/packages/account/tsconfig.json'...
48
48
 
49
- 1:49:09 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
49
+ 1:04:37 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
50
50
 
51
- 1:49:09 PM - Building project '/home/runner/work/captcha/captcha/packages/procaptcha-common/tsconfig.json'...
51
+ 1:04:37 PM - Building project '/home/runner/work/captcha/captcha/packages/procaptcha-common/tsconfig.json'...
52
52
 
@@ -1,9 +1,9 @@
1
1
 
2
- > @prosopo/procaptcha-common@2.13.3 build
2
+ > @prosopo/procaptcha-common@2.14.1 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/procaptcha-common@2.13.3 build:cross-env
6
+ > @prosopo/procaptcha-common@2.14.1 build:cross-env
7
7
  > vite build --config vite.esm.config.ts --mode production
8
8
 
9
9
  ViteEsmConfig: .
@@ -53,15 +53,15 @@ dist/elements/form.js 0.56 kB │ gzip: 0.30 kB
53
53
  dist/simdReadings.js 0.72 kB │ gzip: 0.35 kB
54
54
  dist/clientMetaData.js 0.81 kB │ gzip: 0.47 kB
55
55
  dist/events/trust.js 0.89 kB │ gzip: 0.52 kB
56
- dist/elements/window.js 0.91 kB │ gzip: 0.53 kB
56
+ dist/elements/window.js 1.07 kB │ gzip: 0.60 kB
57
57
  dist/reactComponents/TestModeBanner.js 1.23 kB │ gzip: 0.71 kB
58
58
  dist/providers.js 1.41 kB │ gzip: 0.62 kB
59
59
  dist/index.js 1.49 kB │ gzip: 0.50 kB
60
60
  dist/reactComponents/Honeypot.js 1.86 kB │ gzip: 0.89 kB
61
61
  dist/reactComponents/Reload.js 2.69 kB │ gzip: 1.26 kB
62
62
  dist/state/builder.js 3.09 kB │ gzip: 0.84 kB
63
- dist/callbacks/defaultCallbacks.js 3.64 kB │ gzip: 1.00 kB
64
- dist/reactComponents/ChallengeSurface.js 4.81 kB │ gzip: 1.79 kB
65
- dist/reactComponents/Checkbox.js 4.87 kB │ gzip: 2.04 kB
63
+ dist/callbacks/defaultCallbacks.js 3.58 kB │ gzip: 0.98 kB
64
+ dist/reactComponents/Checkbox.js 5.66 kB │ gzip: 2.34 kB
65
+ dist/reactComponents/ChallengeSurface.js 6.39 kB │ gzip: 2.21 kB
66
66
 
67
- ✓ built in 98ms
67
+ ✓ built in 89ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,79 @@
1
1
  # @prosopo/procaptcha-common
2
2
 
3
+ ## 2.14.1
4
+ ### Patch Changes
5
+
6
+ - f4e4a83: chore(deps): roll up the open dependabot bumps (react 19.3, mongoose 9.10, @polkadot/util 14, redis 6, cron-parser 5, react-i18next 17 with i18next 26, @scure/base 2, cypress 16, rollup/babel plugin majors, vitest 4.1.11, angular 20.3.28, js-yaml)
7
+ - 0be8838: Look up user callbacks on `window` without `any`, so each callback is type-checked against the arguments it is actually called with. Only a leading `window.` is now stripped from a callback name. The `error-callback` render option type now accepts the `Error` it is called with.
8
+ - Updated dependencies [f4e4a83]
9
+ - Updated dependencies [c386199]
10
+ - Updated dependencies [d4e9425]
11
+ - Updated dependencies [0be8838]
12
+ - @prosopo/account@2.8.93
13
+ - @prosopo/types@5.8.4
14
+ - @prosopo/load-balancer@2.10.45
15
+
16
+ ## 2.14.0
17
+ ### Minor Changes
18
+
19
+ - 864ddde: Make the challenges usable with a keyboard and a screen reader.
20
+
21
+ The puzzle could only be solved by dragging with a mouse or a finger. The piece
22
+ was a plain `div`, so it could not be tabbed to, had no name or role, and a
23
+ screen reader announced nothing at all — a user on assistive tech could tick "I
24
+ am human", get a silent overlay, and have no way forward. The image captcha had
25
+ the same problem in its tiles.
26
+
27
+ What changed:
28
+
29
+ - The puzzle piece can now be focused and moved with the arrow keys (hold shift
30
+ for smaller steps, Home to start over, Enter or Space to submit). It has a
31
+ name, a role, and a visible focus ring.
32
+ - The puzzle announces its state as you go: where the piece is, as a percentage
33
+ across and down the board; that an answer is being checked; and that a failed
34
+ go has been replaced by a fresh puzzle.
35
+ - The image captcha tiles are now buttons rather than clickable `div`s, so they
36
+ can be tabbed to and activated with Enter or Space, and they report whether
37
+ they are selected instead of only looking selected.
38
+ - Both challenges now open as a proper dialog: it takes focus when it opens,
39
+ keeps Tab inside itself, and gives focus back to the checkbox on close.
40
+ - The spinner that replaces the checkbox while a check runs used to drop focus
41
+ to the top of the page without saying why. It now takes focus in the
42
+ checkbox's place, names itself, and hands focus back when the check finishes.
43
+ This affects the pow, image and puzzle flows.
44
+ - The puzzle's on-screen text was hardcoded English. It now goes through the
45
+ locale package, and the new strings are translated into all 32 locales.
46
+
47
+ A visual puzzle still cannot be solved by someone who cannot see it — the widget
48
+ is never told where the target is, so there is nothing it could describe. Sites
49
+ that need a challenge a blind user can complete should use the pow captcha type,
50
+ which needs no interaction beyond the checkbox.
51
+
52
+ ### Patch Changes
53
+
54
+ - 028a158: Stop the widget taking focus off the form the user is filling in.
55
+
56
+ While the widget checks a user, its checkbox is replaced by a spinner, and the
57
+ box takes focus back when the check finishes so a keyboard user is not left
58
+ stranded at the top of the page. It did that unconditionally, so if the user
59
+ spent the wait typing into the page's own form, the box grabbed focus off
60
+ whatever field they were in — and the keystroke that arrived with it went
61
+ nowhere. It now only claims focus back when nothing else holds it, which is
62
+ where removing the spinner leaves it.
63
+
64
+ This is what made the `puzzle` cypress spec flaky: it fills the signup form as
65
+ soon as the puzzle is solved, and lost the race with the widget often enough to
66
+ fail CI.
67
+
68
+ Covered by a new unit test in `procaptcha-react` that focuses an element outside
69
+ the widget mid-check and asserts focus is still there afterwards.
70
+ - Updated dependencies [028a158]
71
+ - Updated dependencies [3958046]
72
+ - Updated dependencies [028a158]
73
+ - @prosopo/types@5.8.3
74
+ - @prosopo/account@2.8.92
75
+ - @prosopo/load-balancer@2.10.44
76
+
3
77
  ## 2.13.3
4
78
  ### Patch Changes
5
79
 
@@ -1 +1 @@
1
- {"version":3,"file":"defaultCallbacks.d.ts","sourceRoot":"","sources":["../../src/callbacks/defaultCallbacks.ts"],"names":[],"mappings":"AAaA,OAAO,EAEN,KAAK,SAAS,EACd,KAAK,uBAAuB,EAE5B,MAAM,gBAAgB,CAAC;AAIxB,eAAO,MAAM,mBAAmB,aAAc,OAAO,KAAG,SAiCtD,CAAC;AAyBH,wBAAgB,gBAAgB,CAC/B,aAAa,EAAE,uBAAuB,GAAG,SAAS,EAClD,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,QA+FhB"}
1
+ {"version":3,"file":"defaultCallbacks.d.ts","sourceRoot":"","sources":["../../src/callbacks/defaultCallbacks.ts"],"names":[],"mappings":"AAaA,OAAO,EAEN,KAAK,SAAS,EACd,KAAK,uBAAuB,EAE5B,MAAM,gBAAgB,CAAC;AAIxB,eAAO,MAAM,mBAAmB,aAAc,OAAO,KAAG,SAiCtD,CAAC;AAuBH,wBAAgB,gBAAgB,CAC/B,aAAa,EAAE,uBAAuB,GAAG,SAAS,EAClD,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,QA+FhB"}
@@ -41,10 +41,7 @@ var getDefaultCallbacks = (element) => ({
41
41
  */
42
42
  var getUserCallback = (callback, element, callbackFnOrName) => {
43
43
  const callbackFnName = element.getAttribute(`data-${callback}`);
44
- if (callbackFnName) {
45
- const callbackFn = getWindowCallback(callbackFnName);
46
- if (callbackFn) return callbackFn;
47
- }
44
+ if (callbackFnName) return getWindowCallback(callbackFnName);
48
45
  if (typeof callbackFnOrName === "function") return callbackFnOrName;
49
46
  if (typeof callbackFnOrName === "string") return getWindowCallback(callbackFnOrName);
50
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"defaultCallbacks.js","sourceRoot":"","sources":["../../src/callbacks/defaultCallbacks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defaultCallbacks.js","sourceRoot":"","sources":["../../src/callbacks/defaultCallbacks.ts"],"names":[],"mappings":"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"}
@@ -41,10 +41,7 @@ var getDefaultCallbacks = (element) => ({
41
41
  */
42
42
  var getUserCallback = (callback, element, callbackFnOrName) => {
43
43
  const callbackFnName = element.getAttribute(`data-${callback}`);
44
- if (callbackFnName) {
45
- const callbackFn = require_window.getWindowCallback(callbackFnName);
46
- if (callbackFn) return callbackFn;
47
- }
44
+ if (callbackFnName) return require_window.getWindowCallback(callbackFnName);
48
45
  if (typeof callbackFnOrName === "function") return callbackFnOrName;
49
46
  if (typeof callbackFnOrName === "string") return require_window.getWindowCallback(callbackFnOrName);
50
47
  };
@@ -1,7 +1,10 @@
1
1
  //#region src/elements/window.ts
2
+ var WINDOW_PREFIX = "window.";
3
+ var isWindowCallback = (value) => typeof value === "function";
2
4
  var getWindowCallback = (callbackName) => {
3
- const fn = window[callbackName.replace("window.", "")];
4
- if (typeof fn !== "function") throw new Error(`Callback ${callbackName} is not defined on the window object`);
5
+ const name = callbackName.startsWith(WINDOW_PREFIX) ? callbackName.slice(7) : callbackName;
6
+ const fn = Reflect.get(window, name);
7
+ if (!isWindowCallback(fn)) throw new Error(`Callback ${callbackName} is not defined on the window object`);
5
8
  return fn;
6
9
  };
7
10
  /**
@@ -5,6 +5,15 @@ react = require_runtime.__toESM(react, 1);
5
5
  let _emotion_react_jsx_runtime = require("@emotion/react/jsx-runtime");
6
6
  let react_dom = require("react-dom");
7
7
  //#region src/reactComponents/ChallengeSurface.tsx
8
+ var FOCUSABLE_SELECTOR = [
9
+ "a[href]",
10
+ "button:not([disabled])",
11
+ "input:not([disabled])",
12
+ "select:not([disabled])",
13
+ "textarea:not([disabled])",
14
+ "[tabindex]:not([tabindex=\"-1\"])"
15
+ ].join(",");
16
+ var focusableWithin = (root) => Array.from(root.querySelectorAll(FOCUSABLE_SELECTOR));
8
17
  var SURFACE_Z_INDEX = 2147483646;
9
18
  var CONTENT_Z_INDEX = 2147483647;
10
19
  var POPUP_EDGE_GAP_PX = 8;
@@ -24,7 +33,7 @@ var computeFloatPosition = (anchorRect, panelHeight, scrollX, scrollY) => ({
24
33
  left: anchorRect.left + scrollX
25
34
  });
26
35
  var ChallengeSurface = react.default.memo((props) => {
27
- const { show, children, placement = _prosopo_types.PlacementEnum.popup, anchor, scrim = "none", onDismiss, className } = props;
36
+ const { show, children, placement = _prosopo_types.PlacementEnum.popup, anchor, scrim = "none", onDismiss, className, dialogLabel } = props;
28
37
  const contentRef = (0, react.useRef)(null);
29
38
  const [floatPosition, setFloatPosition] = (0, react.useState)(null);
30
39
  const isFloating = placement === _prosopo_types.PlacementEnum.float && !!anchor;
@@ -69,6 +78,36 @@ var ChallengeSurface = react.default.memo((props) => {
69
78
  document.addEventListener("keydown", onKeyDown);
70
79
  return () => document.removeEventListener("keydown", onKeyDown);
71
80
  }, [show, onDismiss]);
81
+ (0, react.useEffect)(() => {
82
+ if (!show || !dialogLabel) return;
83
+ const content = contentRef.current;
84
+ if (!content) return;
85
+ const opener = document.activeElement instanceof HTMLElement ? document.activeElement : null;
86
+ (focusableWithin(content)[0] ?? content).focus();
87
+ return () => opener?.focus();
88
+ }, [show, dialogLabel]);
89
+ (0, react.useEffect)(() => {
90
+ if (!show || !dialogLabel) return;
91
+ const onKeyDown = (event) => {
92
+ if (event.key !== "Tab") return;
93
+ const content = contentRef.current;
94
+ if (!content) return;
95
+ const focusable = focusableWithin(content);
96
+ const first = focusable[0] ?? content;
97
+ const last = focusable[focusable.length - 1] ?? content;
98
+ const active = document.activeElement;
99
+ const outside = !content.contains(active);
100
+ if (event.shiftKey && (outside || active === first)) {
101
+ event.preventDefault();
102
+ last.focus();
103
+ } else if (!event.shiftKey && (outside || active === last)) {
104
+ event.preventDefault();
105
+ first.focus();
106
+ }
107
+ };
108
+ document.addEventListener("keydown", onKeyDown);
109
+ return () => document.removeEventListener("keydown", onKeyDown);
110
+ }, [show, dialogLabel]);
72
111
  (0, react.useEffect)(() => {
73
112
  if (!show || !isFloating || !onDismiss) return;
74
113
  const onPointerDown = (event) => {
@@ -136,6 +175,10 @@ var ChallengeSurface = react.default.memo((props) => {
136
175
  ref: contentRef,
137
176
  className: "prosopo-challenge-content",
138
177
  style: contentStyle,
178
+ role: dialogLabel ? "dialog" : void 0,
179
+ "aria-modal": dialogLabel ? true : void 0,
180
+ "aria-label": dialogLabel,
181
+ tabIndex: dialogLabel ? -1 : void 0,
139
182
  children
140
183
  })
141
184
  }), document.body);
@@ -37,12 +37,29 @@ var baseStyle = {
37
37
  borderWidth: "2px"
38
38
  };
39
39
  var ID_LETTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
40
+ /**
41
+ * Whether nothing on the page holds focus, which is where the browser leaves it
42
+ * when the focused element is removed.
43
+ */
44
+ var focusIsStranded = (element) => {
45
+ const { activeElement, body } = element.ownerDocument;
46
+ return activeElement === null || activeElement === body;
47
+ };
40
48
  var FAQ_LINK = process.env.PROSOPO_DOCS_URL ? `${new URL(`${process.env.PROSOPO_DOCS_URL}/en/basics/faq/`).href}/` : "https://docs.prosopo.io/en/basics/faq/";
41
49
  var generateRandomId = () => {
42
50
  return Array.from({ length: 8 }, () => ID_LETTERS[Math.floor(Math.random() * ID_LETTERS.length)]).join("");
43
51
  };
44
- var Checkbox = ({ theme, onChange, checked, labelText, error, loading }) => {
52
+ var Checkbox = ({ theme, onChange, checked, labelText, error, loading, loadingText = "Checking that you are human" }) => {
45
53
  const [hover, setHover] = (0, react.useState)(false);
54
+ const inputRef = (0, react.useRef)(null);
55
+ const spinnerRef = (0, react.useRef)(null);
56
+ const hadFocus = (0, react.useRef)(false);
57
+ (0, react.useEffect)(() => {
58
+ if (!hadFocus.current) return;
59
+ const target = loading ? spinnerRef.current : inputRef.current;
60
+ if (!target || !focusIsStranded(target)) return;
61
+ target.focus();
62
+ }, [loading]);
46
63
  const checkboxFocus = (0, react.useMemo)(() => _emotion_react.css`
47
64
  &:focus-visible {
48
65
  outline: 3px solid ${theme.palette.primary.main};
@@ -104,20 +121,29 @@ var Checkbox = ({ theme, onChange, checked, labelText, error, loading }) => {
104
121
  minHeight: "58px"
105
122
  },
106
123
  children: [loading ? /* @__PURE__ */ (0, _emotion_react_jsx_runtime.jsx)("div", {
124
+ ref: spinnerRef,
107
125
  className: _prosopo_widget_skeleton.WIDGET_CHECKBOX_SPINNER_CSS_CLASS,
108
- "aria-label": "Loading spinner"
126
+ role: "status",
127
+ tabIndex: -1,
128
+ "aria-label": loadingText
109
129
  }) : /* @__PURE__ */ (0, _emotion_react_jsx_runtime.jsx)("input", {
130
+ ref: inputRef,
110
131
  name: id,
111
132
  id,
112
133
  onMouseEnter: () => setHover(true),
113
134
  onMouseLeave: () => setHover(false),
135
+ onFocus: () => {
136
+ hadFocus.current = true;
137
+ },
138
+ onBlur: () => {
139
+ hadFocus.current = false;
140
+ },
114
141
  css: [
115
142
  checkboxBefore,
116
143
  checkboxForcedColors,
117
144
  checkboxFocus
118
145
  ],
119
146
  type: "checkbox",
120
- "aria-live": "assertive",
121
147
  "aria-label": labelText,
122
148
  onKeyDown: (e) => {
123
149
  if (!require_trust.isEventTrusted(e)) return;
@@ -1,3 +1,5 @@
1
- export declare const getWindowCallback: (callbackName: string) => any;
1
+ type WindowCallback = (...args: unknown[]) => unknown;
2
+ export declare const getWindowCallback: (callbackName: string) => WindowCallback;
2
3
  export declare const isSecureBrowserContext: () => boolean;
4
+ export {};
3
5
  //# sourceMappingURL=window.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../src/elements/window.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,iBAAiB,iBAAkB,MAAM,QASrD,CAAC;AAUF,eAAO,MAAM,sBAAsB,QAAO,OAKzC,CAAC"}
1
+ {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../src/elements/window.ts"],"names":[],"mappings":"AAcA,KAAK,cAAc,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAOtD,eAAO,MAAM,iBAAiB,iBAAkB,MAAM,KAAG,cAWxD,CAAC;AAUF,eAAO,MAAM,sBAAsB,QAAO,OAKzC,CAAC"}
@@ -1,7 +1,10 @@
1
1
  //#region src/elements/window.ts
2
+ var WINDOW_PREFIX = "window.";
3
+ var isWindowCallback = (value) => typeof value === "function";
2
4
  var getWindowCallback = (callbackName) => {
3
- const fn = window[callbackName.replace("window.", "")];
4
- if (typeof fn !== "function") throw new Error(`Callback ${callbackName} is not defined on the window object`);
5
+ const name = callbackName.startsWith(WINDOW_PREFIX) ? callbackName.slice(7) : callbackName;
6
+ const fn = Reflect.get(window, name);
7
+ if (!isWindowCallback(fn)) throw new Error(`Callback ${callbackName} is not defined on the window object`);
5
8
  return fn;
6
9
  };
7
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/elements/window.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,YAAoB,EAAE,EAAE;IAEzD,MAAM,EAAE,GAAI,MAAc,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IAChE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACd,YAAY,YAAY,sCAAsC,CAC9D,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAY,EAAE;IACnD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC;AACxC,CAAC,CAAC"}
1
+ {"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/elements/window.ts"],"names":[],"mappings":"AAgBA,MAAM,aAAa,GAAG,SAAS,CAAC;AAEhC,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAA2B,EAAE,CACpE,OAAO,KAAK,KAAK,UAAU,CAAC;AAE7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,YAAoB,EAAkB,EAAE;IACzE,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC;QAClD,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;QAC1C,CAAC,CAAC,YAAY,CAAC;IAChB,MAAM,EAAE,GAAY,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACd,YAAY,YAAY,sCAAsC,CAC9D,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAY,EAAE;IACnD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC;AACxC,CAAC,CAAC"}
@@ -9,6 +9,7 @@ interface ChallengeSurfaceProps {
9
9
  scrim?: SurfaceScrim;
10
10
  onDismiss?: () => void;
11
11
  className?: string;
12
+ dialogLabel?: string;
12
13
  }
13
14
  interface FloatPosition {
14
15
  top: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeSurface.d.ts","sourceRoot":"","sources":["../../src/reactComponents/ChallengeSurface.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,EAEb,KAAK,SAAS,EAMd,MAAM,OAAO,CAAC;AAUf,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,CAAC;AAE1C,UAAU,qBAAqB;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,YAAY,CAAC;IAErB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAYD,UAAU,aAAa;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACb;AAWD,QAAA,MAAM,oBAAoB,eACb,OAAO,eACN,MAAM,WACV,MAAM,WACN,MAAM,KACb,aAKD,CAAC;AAEH,QAAA,MAAM,gBAAgB,oCAAsB,qBAAqB,8BA6K/D,CAAC;AAIH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"ChallengeSurface.d.ts","sourceRoot":"","sources":["../../src/reactComponents/ChallengeSurface.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,EAEb,KAAK,SAAS,EAMd,MAAM,OAAO,CAAC;AAUf,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,CAAC;AAE1C,UAAU,qBAAqB;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,YAAY,CAAC;IAErB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IAOnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAwBD,UAAU,aAAa;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACb;AAWD,QAAA,MAAM,oBAAoB,eACb,OAAO,eACN,MAAM,WACV,MAAM,WACN,MAAM,KACb,aAKD,CAAC;AAEH,QAAA,MAAM,gBAAgB,oCAAsB,qBAAqB,8BAoO/D,CAAC;AAIH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -3,6 +3,15 @@ import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from
3
3
  import { jsx } from "@emotion/react/jsx-runtime";
4
4
  import { createPortal } from "react-dom";
5
5
  //#region src/reactComponents/ChallengeSurface.tsx
6
+ var FOCUSABLE_SELECTOR = [
7
+ "a[href]",
8
+ "button:not([disabled])",
9
+ "input:not([disabled])",
10
+ "select:not([disabled])",
11
+ "textarea:not([disabled])",
12
+ "[tabindex]:not([tabindex=\"-1\"])"
13
+ ].join(",");
14
+ var focusableWithin = (root) => Array.from(root.querySelectorAll(FOCUSABLE_SELECTOR));
6
15
  var SURFACE_Z_INDEX = 2147483646;
7
16
  var CONTENT_Z_INDEX = 2147483647;
8
17
  var POPUP_EDGE_GAP_PX = 8;
@@ -22,7 +31,7 @@ var computeFloatPosition = (anchorRect, panelHeight, scrollX, scrollY) => ({
22
31
  left: anchorRect.left + scrollX
23
32
  });
24
33
  var ChallengeSurface = React.memo((props) => {
25
- const { show, children, placement = PlacementEnum.popup, anchor, scrim = "none", onDismiss, className } = props;
34
+ const { show, children, placement = PlacementEnum.popup, anchor, scrim = "none", onDismiss, className, dialogLabel } = props;
26
35
  const contentRef = useRef(null);
27
36
  const [floatPosition, setFloatPosition] = useState(null);
28
37
  const isFloating = placement === PlacementEnum.float && !!anchor;
@@ -67,6 +76,36 @@ var ChallengeSurface = React.memo((props) => {
67
76
  document.addEventListener("keydown", onKeyDown);
68
77
  return () => document.removeEventListener("keydown", onKeyDown);
69
78
  }, [show, onDismiss]);
79
+ useEffect(() => {
80
+ if (!show || !dialogLabel) return;
81
+ const content = contentRef.current;
82
+ if (!content) return;
83
+ const opener = document.activeElement instanceof HTMLElement ? document.activeElement : null;
84
+ (focusableWithin(content)[0] ?? content).focus();
85
+ return () => opener?.focus();
86
+ }, [show, dialogLabel]);
87
+ useEffect(() => {
88
+ if (!show || !dialogLabel) return;
89
+ const onKeyDown = (event) => {
90
+ if (event.key !== "Tab") return;
91
+ const content = contentRef.current;
92
+ if (!content) return;
93
+ const focusable = focusableWithin(content);
94
+ const first = focusable[0] ?? content;
95
+ const last = focusable[focusable.length - 1] ?? content;
96
+ const active = document.activeElement;
97
+ const outside = !content.contains(active);
98
+ if (event.shiftKey && (outside || active === first)) {
99
+ event.preventDefault();
100
+ last.focus();
101
+ } else if (!event.shiftKey && (outside || active === last)) {
102
+ event.preventDefault();
103
+ first.focus();
104
+ }
105
+ };
106
+ document.addEventListener("keydown", onKeyDown);
107
+ return () => document.removeEventListener("keydown", onKeyDown);
108
+ }, [show, dialogLabel]);
70
109
  useEffect(() => {
71
110
  if (!show || !isFloating || !onDismiss) return;
72
111
  const onPointerDown = (event) => {
@@ -134,6 +173,10 @@ var ChallengeSurface = React.memo((props) => {
134
173
  ref: contentRef,
135
174
  className: "prosopo-challenge-content",
136
175
  style: contentStyle,
176
+ role: dialogLabel ? "dialog" : void 0,
177
+ "aria-modal": dialogLabel ? true : void 0,
178
+ "aria-label": dialogLabel,
179
+ tabIndex: dialogLabel ? -1 : void 0,
137
180
  children
138
181
  })
139
182
  }), document.body);
@@ -1 +1 @@
1
- {"version":3,"file":"ChallengeSurface.js","sourceRoot":"","sources":["../../src/reactComponents/ChallengeSurface.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChallengeSurface.js","sourceRoot":"","sources":["../../src/reactComponents/ChallengeSurface.tsx"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ interface CheckboxProps extends ButtonHTMLAttributes<HTMLButtonElement> {
7
7
  labelText: string;
8
8
  error?: string;
9
9
  loading: boolean;
10
+ loadingText?: string;
10
11
  }
11
12
  export declare const Checkbox: FC<CheckboxProps>;
12
13
  export default Checkbox;
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/reactComponents/Checkbox.tsx"],"names":[],"mappings":"AAgBA,OAAO,EACN,KAAK,KAAK,EAGV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,KAAK,oBAAoB,EAEzB,KAAK,EAAE,EAGP,MAAM,OAAO,CAAC;AAGf,UAAU,aAAc,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IACtE,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IAEjB,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CACjB;AA0DD,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CA0JtC,CAAC;AACF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/reactComponents/Checkbox.tsx"],"names":[],"mappings":"AAgBA,OAAO,EACN,KAAK,KAAK,EAGV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,KAAK,oBAAoB,EAEzB,KAAK,EAAE,EAKP,MAAM,OAAO,CAAC;AAGf,UAAU,aAAc,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IACtE,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IAEjB,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IAEjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAmED,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CA8LtC,CAAC;AACF,eAAe,QAAQ,CAAC"}