@prosopo/procaptcha-react 2.9.96 → 2.9.98

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 (80) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +20 -35
  2. package/.turbo/turbo-build$colon$tsc.log +21 -21
  3. package/.turbo/turbo-build.log +21 -36
  4. package/CHANGELOG.md +41 -0
  5. package/dist/_virtual/_rolldown/runtime.js +3 -0
  6. package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  7. package/dist/cjs/components/Button.cjs +68 -78
  8. package/dist/cjs/components/CaptchaComponent.cjs +164 -228
  9. package/dist/cjs/components/CaptchaWidget.cjs +104 -158
  10. package/dist/cjs/components/Modal.cjs +30 -23
  11. package/dist/cjs/components/Procaptcha.cjs +7 -7
  12. package/dist/cjs/components/ProcaptchaWidget.cjs +147 -163
  13. package/dist/cjs/components/index.cjs +6 -9
  14. package/dist/cjs/index.cjs +6 -9
  15. package/dist/cjs/util/index.cjs +17 -15
  16. package/dist/components/Button.js +67 -78
  17. package/dist/components/CaptchaComponent.d.ts.map +1 -1
  18. package/dist/components/CaptchaComponent.js +160 -225
  19. package/dist/components/CaptchaComponent.js.map +1 -1
  20. package/dist/components/CaptchaWidget.d.ts.map +1 -1
  21. package/dist/components/CaptchaWidget.js +103 -157
  22. package/dist/components/CaptchaWidget.js.map +1 -1
  23. package/dist/components/Modal.js +24 -21
  24. package/dist/components/Procaptcha.js +6 -6
  25. package/dist/components/ProcaptchaWidget.d.ts.map +1 -1
  26. package/dist/components/ProcaptchaWidget.js +146 -162
  27. package/dist/components/ProcaptchaWidget.js.map +1 -1
  28. package/dist/components/index.js +3 -8
  29. package/dist/index.js +4 -9
  30. package/dist/tests/button.unit.test.d.ts +2 -0
  31. package/dist/tests/button.unit.test.d.ts.map +1 -0
  32. package/dist/tests/button.unit.test.js +113 -0
  33. package/dist/tests/button.unit.test.js.map +1 -0
  34. package/dist/tests/captchaComponent.unit.test.d.ts +2 -0
  35. package/dist/tests/captchaComponent.unit.test.d.ts.map +1 -0
  36. package/dist/tests/captchaComponent.unit.test.js +141 -0
  37. package/dist/tests/captchaComponent.unit.test.js.map +1 -0
  38. package/dist/tests/captchaWidget.unit.test.d.ts +2 -0
  39. package/dist/tests/captchaWidget.unit.test.d.ts.map +1 -0
  40. package/dist/tests/captchaWidget.unit.test.js +191 -0
  41. package/dist/tests/captchaWidget.unit.test.js.map +1 -0
  42. package/dist/tests/collector.unit.test.d.ts +2 -0
  43. package/dist/tests/collector.unit.test.d.ts.map +1 -0
  44. package/dist/tests/collector.unit.test.js +109 -0
  45. package/dist/tests/collector.unit.test.js.map +1 -0
  46. package/dist/tests/harness.d.ts +12 -0
  47. package/dist/tests/harness.d.ts.map +1 -0
  48. package/dist/tests/harness.js +69 -0
  49. package/dist/tests/harness.js.map +1 -0
  50. package/dist/tests/modal.unit.test.d.ts +2 -0
  51. package/dist/tests/modal.unit.test.d.ts.map +1 -0
  52. package/dist/tests/modal.unit.test.js +72 -0
  53. package/dist/tests/modal.unit.test.js.map +1 -0
  54. package/dist/tests/procaptcha.unit.test.d.ts +2 -0
  55. package/dist/tests/procaptcha.unit.test.d.ts.map +1 -0
  56. package/dist/tests/procaptcha.unit.test.js +57 -0
  57. package/dist/tests/procaptcha.unit.test.js.map +1 -0
  58. package/dist/tests/procaptchaReact.test-d.d.ts +2 -0
  59. package/dist/tests/procaptchaReact.test-d.d.ts.map +1 -0
  60. package/dist/tests/procaptchaReact.test-d.js +72 -0
  61. package/dist/tests/procaptchaReact.test-d.js.map +1 -0
  62. package/dist/tests/procaptchaWidget.unit.test.d.ts +2 -0
  63. package/dist/tests/procaptchaWidget.unit.test.d.ts.map +1 -0
  64. package/dist/tests/procaptchaWidget.unit.test.js +403 -0
  65. package/dist/tests/procaptchaWidget.unit.test.js.map +1 -0
  66. package/dist/tests/render.d.ts +23 -0
  67. package/dist/tests/render.d.ts.map +1 -0
  68. package/dist/tests/render.js +77 -0
  69. package/dist/tests/render.js.map +1 -0
  70. package/dist/tests/setup.d.ts +5 -0
  71. package/dist/tests/setup.d.ts.map +1 -0
  72. package/dist/tests/setup.js +3 -0
  73. package/dist/tests/setup.js.map +1 -0
  74. package/dist/tests/util.unit.test.d.ts +2 -0
  75. package/dist/tests/util.unit.test.d.ts.map +1 -0
  76. package/dist/tests/util.unit.test.js +84 -0
  77. package/dist/tests/util.unit.test.js.map +1 -0
  78. package/dist/util/index.js +17 -16
  79. package/package.json +16 -12
  80. package/vite.test.config.ts +28 -0
@@ -1,165 +1,149 @@
1
- import { jsx, jsxs, Fragment } from "@emotion/react/jsx-runtime";
2
- import { useTranslation, loadI18next } from "@prosopo/locale";
3
- import { Manager } from "@prosopo/procaptcha";
4
- import { useProcaptcha, Honeypot, TestModeBanner, Checkbox } from "@prosopo/procaptcha-common";
5
- import { ProcaptchaConfigSchema } from "@prosopo/types";
6
- import { lightTheme, darkTheme } from "@prosopo/widget-skeleton";
7
- import { useState, useRef, useEffect } from "react";
1
+ import "../_virtual/_rolldown/runtime.js";
8
2
  import CaptchaComponent from "./CaptchaComponent.js";
9
3
  import ModalComponent from "./Modal.js";
10
- const PROCAPTCHA_EXECUTE_EVENT = "procaptcha:execute";
11
- const ProcaptchaWidget = (props) => {
12
- const { t, ready: isTranslationReady } = useTranslation();
13
- const config = ProcaptchaConfigSchema.parse(props.config);
14
- const frictionlessState = props.frictionlessState;
15
- const i18n = props.i18n;
16
- const callbacks = props.callbacks || {};
17
- const [state, updateState] = useProcaptcha(useState, useRef);
18
- const [loading, setLoading] = useState(false);
19
- const hpRef = useRef(null);
20
- const manager = useRef(
21
- Manager(
22
- config,
23
- state,
24
- updateState,
25
- callbacks,
26
- frictionlessState,
27
- () => hpRef.current?.value || void 0
28
- )
29
- );
30
- const lastCoordsRef = useRef(null);
31
- const sessionInvalidatedFiredRef = useRef(false);
32
- const theme = "light" === props.config.theme ? lightTheme : darkTheme;
33
- useEffect(() => {
34
- if (!config.language) return;
35
- if (i18n) {
36
- if (i18n.language !== config.language) {
37
- void i18n.changeLanguage(config.language);
38
- }
39
- return;
40
- }
41
- void loadI18next(false, config.language);
42
- }, [i18n, config.language]);
43
- useEffect(() => {
44
- if (!props.autoStart) return;
45
- setLoading(true);
46
- const coords = props.startCoords;
47
- lastCoordsRef.current = coords ?? null;
48
- manager.current.start(coords?.x ?? 0, coords?.y ?? 0).then(
49
- () => setLoading(false),
50
- () => setLoading(false)
51
- );
52
- }, [props.autoStart, props.startCoords]);
53
- useEffect(() => {
54
- if (!state.error) return;
55
- setLoading(false);
56
- if (state.error.key !== "CAPTCHA.NO_SESSION_FOUND") return;
57
- if (props.onSessionInvalidated && !sessionInvalidatedFiredRef.current) {
58
- sessionInvalidatedFiredRef.current = true;
59
- const coords = lastCoordsRef.current;
60
- props.onSessionInvalidated(coords?.x, coords?.y);
61
- return;
62
- }
63
- if (frictionlessState) {
64
- setTimeout(() => {
65
- frictionlessState.restart();
66
- }, 100);
67
- }
68
- }, [state.error, frictionlessState, props.onSessionInvalidated]);
69
- useEffect(() => {
70
- const handleExecuteEvent = (event) => {
71
- updateState({
72
- showModal: true
73
- });
74
- if (!state.challenge && manager.current.start) {
75
- console.log("No challenge set, attempting to start verification");
76
- try {
77
- manager.current.start();
78
- } catch (error) {
79
- console.error("Error starting verification:", error);
80
- }
81
- }
82
- };
83
- document.addEventListener(PROCAPTCHA_EXECUTE_EVENT, handleExecuteEvent);
84
- return () => {
85
- document.removeEventListener(
86
- PROCAPTCHA_EXECUTE_EVENT,
87
- handleExecuteEvent
88
- );
89
- };
90
- }, [state.challenge, updateState]);
91
- const honeypot = frictionlessState?.hp ? /* @__PURE__ */ jsx(Honeypot, { ref: hpRef, encodedQuestion: frictionlessState.hp }) : null;
92
- if (config.mode === "invisible") {
93
- return /* @__PURE__ */ jsxs(Fragment, { children: [
94
- honeypot,
95
- /* @__PURE__ */ jsx(ModalComponent, { show: state.showModal, children: state.challenge ? /* @__PURE__ */ jsx(
96
- CaptchaComponent,
97
- {
98
- challenge: state.challenge,
99
- index: state.index,
100
- solutions: state.solutions,
101
- onSubmit: manager.current.submit,
102
- onCancel: manager.current.cancel,
103
- onClick: manager.current.select,
104
- onNext: manager.current.nextRound,
105
- onReload: manager.current.reload,
106
- themeColor: config.theme ?? "light"
107
- }
108
- ) : null })
109
- ] });
110
- }
111
- return /* @__PURE__ */ jsxs("div", { className: "image-captcha", children: [
112
- honeypot,
113
- /* @__PURE__ */ jsx(ModalComponent, { show: state.showModal, children: state.challenge ? /* @__PURE__ */ jsx(
114
- CaptchaComponent,
115
- {
116
- challenge: state.challenge,
117
- index: state.index,
118
- solutions: state.solutions,
119
- onSubmit: manager.current.submit,
120
- onCancel: manager.current.cancel,
121
- onClick: manager.current.select,
122
- onNext: manager.current.nextRound,
123
- onReload: manager.current.reload,
124
- themeColor: config.theme ?? "light"
125
- }
126
- ) : /* @__PURE__ */ jsx("div", { children: "No challenge set." }) }),
127
- /* @__PURE__ */ jsx(TestModeBanner, { siteKey: config.account.address ?? "" }),
128
- /* @__PURE__ */ jsx(
129
- Checkbox,
130
- {
131
- theme,
132
- onChange: async (event) => {
133
- if (!event.isTrusted) {
134
- return;
135
- }
136
- if (loading) {
137
- return;
138
- }
139
- setLoading(true);
140
- let x = 0;
141
- let y = 0;
142
- const nativeEvent = event.nativeEvent;
143
- if ("touches" in nativeEvent && nativeEvent.touches.length > 0 && nativeEvent.touches[0]) {
144
- x = nativeEvent.touches[0].clientX;
145
- y = nativeEvent.touches[0].clientY;
146
- } else if ("clientX" in nativeEvent && "clientY" in nativeEvent) {
147
- x = nativeEvent.clientX;
148
- y = nativeEvent.clientY;
149
- }
150
- lastCoordsRef.current = { x, y };
151
- await manager.current.start(x, y);
152
- setLoading(false);
153
- },
154
- checked: state.isHuman,
155
- labelText: isTranslationReady ? t("WIDGET.I_AM_HUMAN") : "",
156
- error: state.error?.message,
157
- "aria-label": "human checkbox",
158
- loading
159
- }
160
- )
161
- ] });
162
- };
163
- export {
164
- ProcaptchaWidget as default
4
+ import { darkTheme, lightTheme } from "@prosopo/widget-skeleton";
5
+ import { useEffect, useRef, useState } from "react";
6
+ import { Fragment, jsx, jsxs } from "@emotion/react/jsx-runtime";
7
+ import { loadI18next, useTranslation } from "@prosopo/locale";
8
+ import { Checkbox, Honeypot, TestModeBanner, useProcaptcha } from "@prosopo/procaptcha-common";
9
+ import { Manager } from "@prosopo/procaptcha";
10
+ import { ProcaptchaConfigSchema } from "@prosopo/types";
11
+ //#region src/components/ProcaptchaWidget.tsx
12
+ /** @jsxImportSource @emotion/react */
13
+ var PROCAPTCHA_EXECUTE_EVENT = "procaptcha:execute";
14
+ var ProcaptchaWidget = (props) => {
15
+ const { t, ready: isTranslationReady } = useTranslation();
16
+ const config = ProcaptchaConfigSchema.parse(props.config);
17
+ const frictionlessState = props.frictionlessState;
18
+ const i18n = props.i18n;
19
+ const callbacks = props.callbacks || {};
20
+ const [state, updateState] = useProcaptcha(useState, useRef);
21
+ const [loading, setLoading] = useState(false);
22
+ const hpRef = useRef(null);
23
+ const manager = useRef(Manager(config, state, updateState, callbacks, frictionlessState, () => hpRef.current?.value || void 0));
24
+ const lastCoordsRef = useRef(null);
25
+ const sessionInvalidatedFiredRef = useRef(false);
26
+ const theme = "light" === props.config.theme ? lightTheme : darkTheme;
27
+ useEffect(() => {
28
+ if (!config.language) return;
29
+ if (i18n) {
30
+ if (i18n.language !== config.language) i18n.changeLanguage(config.language);
31
+ return;
32
+ }
33
+ loadI18next(false, config.language);
34
+ }, [i18n, config.language]);
35
+ useEffect(() => {
36
+ if (!props.autoStart) return;
37
+ setLoading(true);
38
+ const coords = props.startCoords;
39
+ lastCoordsRef.current = coords ?? null;
40
+ manager.current.start(coords?.x ?? 0, coords?.y ?? 0).then(() => setLoading(false), () => setLoading(false));
41
+ }, [props.autoStart, props.startCoords]);
42
+ useEffect(() => {
43
+ if (!state.error) return;
44
+ setLoading(false);
45
+ if (state.error.key !== "CAPTCHA.NO_SESSION_FOUND") return;
46
+ if (props.onSessionInvalidated && !sessionInvalidatedFiredRef.current) {
47
+ sessionInvalidatedFiredRef.current = true;
48
+ const coords = lastCoordsRef.current;
49
+ props.onSessionInvalidated(coords?.x, coords?.y);
50
+ return;
51
+ }
52
+ if (frictionlessState) setTimeout(() => {
53
+ frictionlessState.restart();
54
+ }, 100);
55
+ }, [
56
+ state.error,
57
+ frictionlessState,
58
+ props.onSessionInvalidated
59
+ ]);
60
+ useEffect(() => {
61
+ const handleExecuteEvent = (event) => {
62
+ updateState({ showModal: true });
63
+ if (!state.challenge && manager.current.start) {
64
+ console.log("No challenge set, attempting to start verification");
65
+ try {
66
+ manager.current.start();
67
+ } catch (error) {
68
+ console.error("Error starting verification:", error);
69
+ }
70
+ }
71
+ };
72
+ document.addEventListener(PROCAPTCHA_EXECUTE_EVENT, handleExecuteEvent);
73
+ return () => {
74
+ document.removeEventListener(PROCAPTCHA_EXECUTE_EVENT, handleExecuteEvent);
75
+ };
76
+ }, [state.challenge, updateState]);
77
+ const honeypot = frictionlessState?.hp ? /* @__PURE__ */ jsx(Honeypot, {
78
+ ref: hpRef,
79
+ encodedQuestion: frictionlessState.hp
80
+ }) : null;
81
+ if (config.mode === "invisible") return /* @__PURE__ */ jsxs(Fragment, { children: [honeypot, /* @__PURE__ */ jsx(ModalComponent, {
82
+ show: state.showModal,
83
+ children: state.challenge ? /* @__PURE__ */ jsx(CaptchaComponent, {
84
+ challenge: state.challenge,
85
+ index: state.index,
86
+ solutions: state.solutions,
87
+ onSubmit: manager.current.submit,
88
+ onCancel: manager.current.cancel,
89
+ onClick: manager.current.select,
90
+ onNext: manager.current.nextRound,
91
+ onReload: manager.current.reload,
92
+ themeColor: config.theme ?? "light"
93
+ }) : null
94
+ })] });
95
+ return /* @__PURE__ */ jsxs("div", {
96
+ className: "image-captcha",
97
+ children: [
98
+ honeypot,
99
+ /* @__PURE__ */ jsx(ModalComponent, {
100
+ show: state.showModal,
101
+ children: state.challenge ? /* @__PURE__ */ jsx(CaptchaComponent, {
102
+ challenge: state.challenge,
103
+ index: state.index,
104
+ solutions: state.solutions,
105
+ onSubmit: manager.current.submit,
106
+ onCancel: manager.current.cancel,
107
+ onClick: manager.current.select,
108
+ onNext: manager.current.nextRound,
109
+ onReload: manager.current.reload,
110
+ themeColor: config.theme ?? "light"
111
+ }) : /* @__PURE__ */ jsx("div", { children: "No challenge set." })
112
+ }),
113
+ /* @__PURE__ */ jsx(TestModeBanner, { siteKey: config.account.address ?? "" }),
114
+ /* @__PURE__ */ jsx(Checkbox, {
115
+ theme,
116
+ onChange: async (event) => {
117
+ if (!event.isTrusted) return;
118
+ if (loading) return;
119
+ setLoading(true);
120
+ let x = 0;
121
+ let y = 0;
122
+ const nativeEvent = event.nativeEvent;
123
+ if ("clientX" in nativeEvent && "clientY" in nativeEvent) {
124
+ x = nativeEvent.clientX;
125
+ y = nativeEvent.clientY;
126
+ }
127
+ lastCoordsRef.current = {
128
+ x,
129
+ y
130
+ };
131
+ try {
132
+ await manager.current.start(x, y);
133
+ } catch (error) {
134
+ console.error("Error starting verification:", error);
135
+ } finally {
136
+ setLoading(false);
137
+ }
138
+ },
139
+ checked: state.isHuman,
140
+ labelText: isTranslationReady ? t("WIDGET.I_AM_HUMAN") : "",
141
+ error: state.error?.message,
142
+ "aria-label": "human checkbox",
143
+ loading
144
+ })
145
+ ]
146
+ });
165
147
  };
148
+ //#endregion
149
+ export { ProcaptchaWidget as default };
@@ -1 +1 @@
1
- {"version":3,"file":"ProcaptchaWidget.js","sourceRoot":"","sources":["../../src/components/ProcaptchaWidget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProcaptchaWidget.js","sourceRoot":"","sources":["../../src/components/ProcaptchaWidget.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,4 @@
1
1
  import { CaptchaWidget } from "./CaptchaWidget.js";
2
- import "./CaptchaComponent.js";
3
- import { default as default2 } from "./ProcaptchaWidget.js";
4
- import { default as default3 } from "./Procaptcha.js";
5
- export {
6
- CaptchaWidget,
7
- default3 as Procaptcha,
8
- default2 as ProcaptchaWidget
9
- };
2
+ import ProcaptchaWidget from "./ProcaptchaWidget.js";
3
+ import Procaptcha from "./Procaptcha.js";
4
+ export { CaptchaWidget, Procaptcha, ProcaptchaWidget };
package/dist/index.js CHANGED
@@ -1,10 +1,5 @@
1
- import "./components/index.js";
2
- import "./util/index.js";
3
- import { default as default2 } from "./components/ProcaptchaWidget.js";
4
- import { default as default3 } from "./components/Procaptcha.js";
1
+ import "./_virtual/_rolldown/runtime.js";
5
2
  import { CaptchaWidget } from "./components/CaptchaWidget.js";
6
- export {
7
- CaptchaWidget,
8
- default3 as Procaptcha,
9
- default2 as ProcaptchaWidget
10
- };
3
+ import ProcaptchaWidget from "./components/ProcaptchaWidget.js";
4
+ import Procaptcha from "./components/Procaptcha.js";
5
+ export { CaptchaWidget, Procaptcha, ProcaptchaWidget };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=button.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/button.unit.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ import { jsx as _jsx } from "@emotion/react/jsx-runtime";
2
+ import { darkTheme, lightTheme } from "@prosopo/widget-skeleton";
3
+ import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
4
+ import Button from "../components/Button.js";
5
+ import { asRgb, fire, fireAndReturn, mount } from "./render.js";
6
+ let mounted;
7
+ const onClick = vi.fn();
8
+ const render = (props = {}) => {
9
+ mounted.render(_jsx(Button, { themeColor: props.themeColor ?? "light", buttonType: props.buttonType ?? "next", text: props.text ?? "Next", onClick: onClick }));
10
+ const button = mounted.container.querySelector("button");
11
+ if (!button)
12
+ throw new Error("expected a button to be rendered");
13
+ return button;
14
+ };
15
+ beforeEach(() => {
16
+ vi.clearAllMocks();
17
+ process.env.NODE_ENV = "test";
18
+ mounted = mount();
19
+ });
20
+ afterEach(() => {
21
+ mounted.unmount();
22
+ });
23
+ describe("what the button renders", () => {
24
+ test("shows its text and labels itself with it", () => {
25
+ const button = render({ text: "Submit" });
26
+ expect(button.textContent).toBe("Submit");
27
+ expect(button.getAttribute("aria-label")).toBe("Submit");
28
+ });
29
+ test("renders an empty label without falling over", () => {
30
+ const button = render({ text: "" });
31
+ expect(button.textContent).toBe("");
32
+ });
33
+ test("carries the test hook naming its role", () => {
34
+ const button = render({ buttonType: "cancel" });
35
+ expect(button.getAttribute("data-cy")).toBe("button-cancel");
36
+ });
37
+ test("drops the test hook in a production build", () => {
38
+ process.env.NODE_ENV = "production";
39
+ const button = render({ buttonType: "cancel" });
40
+ expect(button.getAttribute("data-cy")).toBeNull();
41
+ });
42
+ });
43
+ describe("theming", () => {
44
+ test("a light button takes its border from the light theme", () => {
45
+ const button = render({ themeColor: "light" });
46
+ expect(button.style.borderColor).toBe(asRgb(lightTheme.palette.grey[500]));
47
+ });
48
+ test("a dark button takes its border from the dark theme", () => {
49
+ const button = render({ themeColor: "dark" });
50
+ expect(button.style.borderColor).toBe(asRgb(darkTheme.palette.grey[500]));
51
+ });
52
+ test("a cancel button is transparent until it is hovered", () => {
53
+ const button = render({ buttonType: "cancel" });
54
+ expect(button.style.backgroundColor).toBe("transparent");
55
+ });
56
+ test("a next button is filled with the background colour", () => {
57
+ const button = render({ buttonType: "next" });
58
+ expect(button.style.backgroundColor).toBe(asRgb(lightTheme.palette.background.default));
59
+ });
60
+ test("hovering a cancel button reveals the grey fill", () => {
61
+ const button = render({ buttonType: "cancel" });
62
+ fire(button, "mouseover");
63
+ expect(button.style.backgroundColor).toBe(asRgb(lightTheme.palette.grey[600]));
64
+ });
65
+ test("hovering a next button reveals the primary fill", () => {
66
+ const button = render({ buttonType: "next" });
67
+ fire(button, "mouseover");
68
+ expect(button.style.backgroundColor).toBe(asRgb(lightTheme.palette.primary.main));
69
+ });
70
+ test("leaving the button puts the resting fill back", () => {
71
+ const button = render({ buttonType: "next" });
72
+ fire(button, "mouseover");
73
+ fire(button, "mouseout");
74
+ expect(button.style.backgroundColor).toBe(asRgb(lightTheme.palette.background.default));
75
+ });
76
+ test("hover switches the text to the contrast colour", () => {
77
+ const button = render();
78
+ expect(button.style.color).toBe(asRgb(lightTheme.palette.background.contrastText));
79
+ fire(button, "mouseover");
80
+ expect(button.style.color).toBe(asRgb(lightTheme.palette.primary.contrastText));
81
+ });
82
+ test("re-rendering with the same theme keeps the styling stable", () => {
83
+ const button = render({ themeColor: "dark" });
84
+ const before = button.getAttribute("style");
85
+ render({ themeColor: "dark" });
86
+ expect(button.getAttribute("style")).toBe(before);
87
+ });
88
+ });
89
+ describe("clicking", () => {
90
+ test("a real click calls the handler", () => {
91
+ fire(render(), "click");
92
+ expect(onClick).toHaveBeenCalledTimes(1);
93
+ });
94
+ test("a synthetic click is ignored", () => {
95
+ fire(render(), "click", { trusted: false });
96
+ expect(onClick).not.toHaveBeenCalled();
97
+ });
98
+ test("a real click does not submit the surrounding form", () => {
99
+ const event = fireAndReturn(render(), "click");
100
+ expect(event.defaultPrevented).toBe(true);
101
+ });
102
+ test("an ignored click leaves the event alone", () => {
103
+ const event = fireAndReturn(render(), "click", { trusted: false });
104
+ expect(event.defaultPrevented).toBe(false);
105
+ });
106
+ test("every click is reported, not just the first", () => {
107
+ const button = render();
108
+ fire(button, "click");
109
+ fire(button, "click");
110
+ expect(onClick).toHaveBeenCalledTimes(2);
111
+ });
112
+ });
113
+ //# sourceMappingURL=button.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.unit.test.js","sourceRoot":"","sources":["../../src/tests/button.unit.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=captchaComponent.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captchaComponent.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/captchaComponent.unit.test.tsx"],"names":[],"mappings":""}