@prosopo/procaptcha-react 2.11.3 → 2.12.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 (117) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +13 -13
  2. package/.turbo/turbo-build$colon$tsc.log +21 -21
  3. package/.turbo/turbo-build.log +14 -13
  4. package/CHANGELOG.md +41 -0
  5. package/dist/cjs/components/button.cjs +100 -0
  6. package/dist/cjs/components/captchaComponent.cjs +210 -0
  7. package/dist/cjs/components/captchaWidget.cjs +203 -0
  8. package/dist/cjs/components/collector.cjs +49 -0
  9. package/dist/cjs/components/index.cjs +15 -6
  10. package/dist/cjs/components/modal.cjs +35 -0
  11. package/dist/cjs/components/procaptcha.cjs +23 -0
  12. package/dist/cjs/components/procaptchaWidget.cjs +166 -0
  13. package/dist/cjs/index.cjs +15 -6
  14. package/dist/cjs/util/index.cjs +6 -4
  15. package/dist/components/button.d.ts +9 -0
  16. package/dist/components/button.d.ts.map +1 -0
  17. package/dist/components/button.js +100 -0
  18. package/dist/components/button.js.map +1 -0
  19. package/dist/components/{CaptchaComponent.d.ts → captchaComponent.d.ts} +5 -3
  20. package/dist/components/captchaComponent.d.ts.map +1 -0
  21. package/dist/components/captchaComponent.js +210 -0
  22. package/dist/components/captchaComponent.js.map +1 -0
  23. package/dist/components/{CaptchaWidget.d.ts → captchaWidget.d.ts} +3 -2
  24. package/dist/components/captchaWidget.d.ts.map +1 -0
  25. package/dist/components/captchaWidget.js +203 -0
  26. package/dist/components/captchaWidget.js.map +1 -0
  27. package/dist/components/collector.d.ts +5 -4
  28. package/dist/components/collector.d.ts.map +1 -1
  29. package/dist/components/collector.js +46 -24
  30. package/dist/components/collector.js.map +1 -1
  31. package/dist/components/index.d.ts +7 -5
  32. package/dist/components/index.d.ts.map +1 -1
  33. package/dist/components/index.js +8 -4
  34. package/dist/components/index.js.map +1 -1
  35. package/dist/components/modal.d.ts +14 -0
  36. package/dist/components/modal.d.ts.map +1 -0
  37. package/dist/components/modal.js +35 -0
  38. package/dist/components/modal.js.map +1 -0
  39. package/dist/components/procaptcha.d.ts +7 -0
  40. package/dist/components/procaptcha.d.ts.map +1 -0
  41. package/dist/components/procaptcha.js +22 -0
  42. package/dist/components/procaptcha.js.map +1 -0
  43. package/dist/components/procaptchaWidget.d.ts +7 -0
  44. package/dist/components/procaptchaWidget.d.ts.map +1 -0
  45. package/dist/components/procaptchaWidget.js +166 -0
  46. package/dist/components/procaptchaWidget.js.map +1 -0
  47. package/dist/index.js +8 -4
  48. package/dist/tests/button.unit.test.d.ts.map +1 -1
  49. package/dist/tests/button.unit.test.js +69 -49
  50. package/dist/tests/button.unit.test.js.map +1 -1
  51. package/dist/tests/captchaComponent.unit.test.d.ts.map +1 -1
  52. package/dist/tests/captchaComponent.unit.test.js +31 -9
  53. package/dist/tests/captchaComponent.unit.test.js.map +1 -1
  54. package/dist/tests/captchaWidget.unit.test.d.ts.map +1 -1
  55. package/dist/tests/captchaWidget.unit.test.js +55 -9
  56. package/dist/tests/captchaWidget.unit.test.js.map +1 -1
  57. package/dist/tests/collector.unit.test.d.ts.map +1 -1
  58. package/dist/tests/collector.unit.test.js +43 -10
  59. package/dist/tests/collector.unit.test.js.map +1 -1
  60. package/dist/tests/harness.d.ts +2 -0
  61. package/dist/tests/harness.d.ts.map +1 -1
  62. package/dist/tests/harness.js +7 -0
  63. package/dist/tests/harness.js.map +1 -1
  64. package/dist/tests/modal.unit.test.d.ts.map +1 -1
  65. package/dist/tests/modal.unit.test.js +20 -7
  66. package/dist/tests/modal.unit.test.js.map +1 -1
  67. package/dist/tests/procaptcha.unit.test.d.ts.map +1 -1
  68. package/dist/tests/procaptcha.unit.test.js +37 -15
  69. package/dist/tests/procaptcha.unit.test.js.map +1 -1
  70. package/dist/tests/procaptchaReact.test-d.js +8 -6
  71. package/dist/tests/procaptchaReact.test-d.js.map +1 -1
  72. package/dist/tests/procaptchaWidget.unit.test.d.ts.map +1 -1
  73. package/dist/tests/procaptchaWidget.unit.test.js +112 -89
  74. package/dist/tests/procaptchaWidget.unit.test.js.map +1 -1
  75. package/dist/tests/render.d.ts +6 -7
  76. package/dist/tests/render.d.ts.map +1 -1
  77. package/dist/tests/render.js +23 -30
  78. package/dist/tests/render.js.map +1 -1
  79. package/dist/util/index.d.ts +8 -7
  80. package/dist/util/index.d.ts.map +1 -1
  81. package/dist/util/index.js +6 -4
  82. package/dist/util/index.js.map +1 -1
  83. package/package.json +8 -13
  84. package/vite.test.config.ts +1 -2
  85. package/dist/cjs/_virtual/_rolldown/runtime.cjs +0 -23
  86. package/dist/cjs/components/Button.cjs +0 -81
  87. package/dist/cjs/components/CaptchaComponent.cjs +0 -171
  88. package/dist/cjs/components/CaptchaWidget.cjs +0 -129
  89. package/dist/cjs/components/Modal.cjs +0 -35
  90. package/dist/cjs/components/Procaptcha.cjs +0 -7
  91. package/dist/cjs/components/ProcaptchaWidget.cjs +0 -168
  92. package/dist/components/Button.d.ts +0 -11
  93. package/dist/components/Button.d.ts.map +0 -1
  94. package/dist/components/Button.js +0 -81
  95. package/dist/components/Button.js.map +0 -1
  96. package/dist/components/CaptchaComponent.d.ts.map +0 -1
  97. package/dist/components/CaptchaComponent.js +0 -171
  98. package/dist/components/CaptchaComponent.js.map +0 -1
  99. package/dist/components/CaptchaWidget.d.ts.map +0 -1
  100. package/dist/components/CaptchaWidget.js +0 -129
  101. package/dist/components/CaptchaWidget.js.map +0 -1
  102. package/dist/components/Modal.d.ts +0 -13
  103. package/dist/components/Modal.d.ts.map +0 -1
  104. package/dist/components/Modal.js +0 -33
  105. package/dist/components/Modal.js.map +0 -1
  106. package/dist/components/Procaptcha.d.ts +0 -4
  107. package/dist/components/Procaptcha.d.ts.map +0 -1
  108. package/dist/components/Procaptcha.js +0 -7
  109. package/dist/components/Procaptcha.js.map +0 -1
  110. package/dist/components/ProcaptchaWidget.d.ts +0 -4
  111. package/dist/components/ProcaptchaWidget.d.ts.map +0 -1
  112. package/dist/components/ProcaptchaWidget.js +0 -168
  113. package/dist/components/ProcaptchaWidget.js.map +0 -1
  114. package/dist/tests/setup.d.ts +0 -5
  115. package/dist/tests/setup.d.ts.map +0 -1
  116. package/dist/tests/setup.js +0 -3
  117. package/dist/tests/setup.js.map +0 -1
@@ -0,0 +1,35 @@
1
+ import { applyStyles, createElement, mountChallengeSurface } from "@prosopo/procaptcha-common";
2
+ //#region src/components/modal.ts
3
+ /**
4
+ * The image captcha's dialog frame; positioning lives in `ChallengeSurface`.
5
+ */
6
+ var mountModal = (initialProps) => {
7
+ const inner = createElement("div", { className: "prosopo-modalInner" });
8
+ applyStyles(inner, {
9
+ maxWidth: "500px",
10
+ maxHeight: "100%",
11
+ backgroundColor: "transparent",
12
+ border: "none",
13
+ borderRadius: "28px",
14
+ alignSelf: "center",
15
+ boxSizing: "border-box"
16
+ });
17
+ const surfaceProps = (props) => ({
18
+ show: props.show,
19
+ placement: props.placement,
20
+ anchor: props.anchor,
21
+ onDismiss: props.onDismiss,
22
+ scrim: "none",
23
+ className: "prosopo-modalOuter",
24
+ dialogLabel: props.dialogLabel
25
+ });
26
+ const surface = mountChallengeSurface(surfaceProps(initialProps));
27
+ surface.content.appendChild(inner);
28
+ return {
29
+ content: inner,
30
+ update: (props) => surface.update(surfaceProps(props)),
31
+ destroy: () => surface.destroy()
32
+ };
33
+ };
34
+ //#endregion
35
+ export { mountModal };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.js","sourceRoot":"","sources":["../../src/components/modal.ts"],"names":[],"mappings":"AAcA,OAAO,EAEN,WAAW,EACX,aAAa,EACb,qBAAqB,GACrB,MAAM,4BAA4B,CAAC;AAoBpC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,YAAwB,EAAkB,EAAE;IACtE,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAExE,WAAW,CAAC,KAAK,EAAE;QAClB,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,MAAM;QACjB,eAAe,EAAE,aAAa;QAC9B,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,MAAM;QACpB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,YAAY;KACvB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,KAAiB,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,MAAe;QACtB,SAAS,EAAE,oBAAoB;QAC/B,WAAW,EAAE,KAAK,CAAC,WAAW;KAC9B,CAAC,CAAC;IAEH,MAAM,OAAO,GAA8B,qBAAqB,CAC/D,YAAY,CAAC,YAAY,CAAC,CAC1B,CAAC;IACF,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAEnC,OAAO;QACN,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;KAChC,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ProcaptchaProps } from "@prosopo/types";
2
+ import type { ProcaptchaWidgetHandle } from "./procaptchaWidget.js";
3
+ export type { ProcaptchaWidgetHandle };
4
+ export type ProcaptchaMountFn = (container: HTMLElement, props: ProcaptchaProps) => ProcaptchaWidgetHandle;
5
+ export declare const loadProcaptcha: () => Promise<ProcaptchaMountFn>;
6
+ export declare const mountProcaptcha: (container: HTMLElement, props: ProcaptchaProps) => ProcaptchaWidgetHandle;
7
+ //# sourceMappingURL=procaptcha.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procaptcha.d.ts","sourceRoot":"","sources":["../../src/components/procaptcha.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,YAAY,EAAE,sBAAsB,EAAE,CAAC;AAOvC,MAAM,MAAM,iBAAiB,GAAG,CAC/B,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,eAAe,KAClB,sBAAsB,CAAC;AAE5B,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,iBAAiB,CACE,CAAC;AAOpE,eAAO,MAAM,eAAe,cAChB,WAAW,SACf,eAAe,KACpB,sBAkBF,CAAC"}
@@ -0,0 +1,22 @@
1
+ //#region src/components/procaptcha.ts
2
+ var loadProcaptcha = async () => (await import("./procaptchaWidget.js")).mountProcaptchaImageWidget;
3
+ /**
4
+ * Mount without awaiting the chunk. Nothing renders until the import lands,
5
+ * matching `<Suspense>` with no fallback; destroying before then cancels the
6
+ * mount rather than leaving an orphan behind.
7
+ */
8
+ var mountProcaptcha = (container, props) => {
9
+ let destroyed = false;
10
+ let inner;
11
+ loadProcaptcha().then((mount) => {
12
+ if (destroyed) return;
13
+ inner = mount(container, props);
14
+ });
15
+ return { destroy: () => {
16
+ destroyed = true;
17
+ inner?.destroy();
18
+ inner = void 0;
19
+ } };
20
+ };
21
+ //#endregion
22
+ export { loadProcaptcha, mountProcaptcha };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procaptcha.js","sourceRoot":"","sources":["../../src/components/procaptcha.ts"],"names":[],"mappings":"AA6BA,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAAgC,EAAE,CACpE,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,0BAA0B,CAAC;AAOpE,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,SAAsB,EACtB,KAAsB,EACG,EAAE;IAC3B,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,KAAyC,CAAC;IAE9C,KAAK,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,KAAwB,EAAE,EAAE;QACvD,IAAI,SAAS,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QACD,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,OAAO;QACN,OAAO,EAAE,GAAG,EAAE;YACb,SAAS,GAAG,IAAI,CAAC;YACjB,KAAK,EAAE,OAAO,EAAE,CAAC;YACjB,KAAK,GAAG,SAAS,CAAC;QACnB,CAAC;KACD,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type ProcaptchaProps } from "@prosopo/types";
2
+ export interface ProcaptchaWidgetHandle {
3
+ destroy(): void;
4
+ }
5
+ export declare const mountProcaptchaImageWidget: (container: HTMLElement, props: ProcaptchaProps) => ProcaptchaWidgetHandle;
6
+ export default mountProcaptchaImageWidget;
7
+ //# sourceMappingURL=procaptchaWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procaptchaWidget.d.ts","sourceRoot":"","sources":["../../src/components/procaptchaWidget.ts"],"names":[],"mappings":"AA8BA,OAAO,EAEN,KAAK,eAAe,EAEpB,MAAM,gBAAgB,CAAC;AAWxB,MAAM,WAAW,sBAAsB;IACtC,OAAO,IAAI,IAAI,CAAC;CAChB;AAED,eAAO,MAAM,0BAA0B,cAC3B,WAAW,SACf,eAAe,KACpB,sBAuQF,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,166 @@
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { mountModal } from "./modal.js";
3
+ import { mountCaptchaComponent } from "./captchaComponent.js";
4
+ import { Teardown, createElement, createProcaptchaState, createRenderScheduler, isEventTrusted, mountCheckbox, mountHoneypot, mountTestModeBanner } from "@prosopo/procaptcha-common";
5
+ import { darkTheme, lightTheme } from "@prosopo/widget-skeleton";
6
+ import { Manager } from "@prosopo/procaptcha";
7
+ import { createTranslator, loadI18next } from "@prosopo/locale";
8
+ import { ProcaptchaConfigSchema } from "@prosopo/types";
9
+ //#region src/components/procaptchaWidget.ts
10
+ var PROCAPTCHA_EXECUTE_EVENT = "procaptcha:execute";
11
+ var mountProcaptchaImageWidget = (container, props) => {
12
+ const teardown = new Teardown();
13
+ const config = ProcaptchaConfigSchema.parse(props.config);
14
+ const frictionlessState = props.frictionlessState;
15
+ const i18n = props.i18n;
16
+ const callbacks = props.callbacks || {};
17
+ const translator = createTranslator(i18n);
18
+ const isInvisible = "invisible" === config.mode;
19
+ const store = createProcaptchaState();
20
+ let loading = false;
21
+ let lastError = store.state.error;
22
+ let lastCoords = null;
23
+ let sessionInvalidatedFired = false;
24
+ let honeypot;
25
+ let captcha;
26
+ let checkbox;
27
+ const delegatesReload = Boolean(props.onReload);
28
+ const manager = Manager(config, store.state, store.update, callbacks, frictionlessState, () => honeypot?.getValue(), delegatesReload ? (x, y) => props.onReload?.(x, y) : void 0);
29
+ const root = createElement("div", { className: isInvisible ? void 0 : "image-captcha" });
30
+ container.appendChild(root);
31
+ if (frictionlessState?.hp) honeypot = mountHoneypot(root, { encodedQuestion: frictionlessState.hp });
32
+ const modalProps = () => ({
33
+ show: store.state.showModal,
34
+ placement: config.placement,
35
+ anchor: props.container,
36
+ onDismiss: manager.cancel,
37
+ dialogLabel: translator.t("WIDGET.IMAGE_DIALOG_LABEL", { defaultValue: "Image challenge" })
38
+ });
39
+ const modal = mountModal(modalProps());
40
+ const emptyChallenge = createElement("div", { text: "No challenge set." });
41
+ const banner = isInvisible ? void 0 : mountTestModeBanner(root, { siteKey: config.account.address ?? "" });
42
+ const captchaProps = (challenge) => ({
43
+ challenge,
44
+ index: store.state.index,
45
+ solutions: store.state.solutions,
46
+ onSubmit: manager.submit,
47
+ onCancel: manager.cancel,
48
+ onClick: manager.select,
49
+ onNext: manager.nextRound,
50
+ onReload: manager.reload,
51
+ themeColor: config.theme ?? "light",
52
+ translator
53
+ });
54
+ const renderModal = () => {
55
+ modal.update(modalProps());
56
+ const challenge = store.state.challenge;
57
+ if (void 0 !== challenge) {
58
+ emptyChallenge.parentNode?.removeChild(emptyChallenge);
59
+ if (void 0 === captcha) captcha = mountCaptchaComponent(modal.content, captchaProps(challenge));
60
+ else captcha.update(captchaProps(challenge));
61
+ return;
62
+ }
63
+ captcha?.destroy();
64
+ captcha = void 0;
65
+ if (!isInvisible && emptyChallenge.parentNode !== modal.content) modal.content.appendChild(emptyChallenge);
66
+ };
67
+ const runErrorEffect = () => {
68
+ if (store.state.error === lastError) return;
69
+ lastError = store.state.error;
70
+ if (!store.state.error) return;
71
+ loading = false;
72
+ if ("CAPTCHA.NO_SESSION_FOUND" !== store.state.error.key) return;
73
+ if (props.onSessionInvalidated && !sessionInvalidatedFired) {
74
+ sessionInvalidatedFired = true;
75
+ props.onSessionInvalidated(lastCoords?.x, lastCoords?.y);
76
+ return;
77
+ }
78
+ if (frictionlessState) {
79
+ const timer = setTimeout(() => {
80
+ frictionlessState.restart();
81
+ }, 100);
82
+ teardown.add(() => clearTimeout(timer));
83
+ }
84
+ };
85
+ const render = () => {
86
+ runErrorEffect();
87
+ renderModal();
88
+ checkbox?.update(checkboxProps());
89
+ };
90
+ const scheduler = createRenderScheduler(render);
91
+ const checkboxProps = () => ({
92
+ theme: "light" === props.config.theme ? lightTheme : darkTheme,
93
+ checked: store.state.isHuman,
94
+ labelText: translator.isReady() ? translator.t("WIDGET.I_AM_HUMAN") : "",
95
+ error: store.state.error?.message,
96
+ loadingText: translator.t("WIDGET.CHECKING", { defaultValue: "Checking that you are human" }),
97
+ loading,
98
+ onChange: async (event) => {
99
+ if (!isEventTrusted(event)) return;
100
+ if (loading) return;
101
+ loading = true;
102
+ scheduler.schedule();
103
+ let x = 0;
104
+ let y = 0;
105
+ if ("clientX" in event && "clientY" in event) {
106
+ x = event.clientX;
107
+ y = event.clientY;
108
+ }
109
+ lastCoords = {
110
+ x,
111
+ y
112
+ };
113
+ try {
114
+ await manager.start(x, y);
115
+ } catch (error) {
116
+ console.error("Error starting verification:", error);
117
+ } finally {
118
+ loading = false;
119
+ scheduler.schedule();
120
+ }
121
+ }
122
+ });
123
+ if (!isInvisible) checkbox = mountCheckbox(root, checkboxProps());
124
+ teardown.add(scheduler.cancel);
125
+ teardown.add(store.subscribe(scheduler.schedule));
126
+ teardown.add(translator.subscribe(scheduler.schedule));
127
+ const handleExecute = () => {
128
+ store.update({ showModal: true });
129
+ if (!store.state.challenge) {
130
+ console.log("No challenge set, attempting to start verification");
131
+ try {
132
+ manager.start();
133
+ } catch (error) {
134
+ console.error("Error starting verification:", error);
135
+ }
136
+ }
137
+ };
138
+ teardown.addEventListener(document, PROCAPTCHA_EXECUTE_EVENT, handleExecute);
139
+ if (props.container) teardown.addEventListener(props.container, PROCAPTCHA_EXECUTE_EVENT, handleExecute);
140
+ if (config.language) if (i18n) {
141
+ if (i18n.language !== config.language) i18n.changeLanguage(config.language);
142
+ } else loadI18next(false, config.language);
143
+ if (props.autoStart) {
144
+ loading = true;
145
+ const coords = props.startCoords;
146
+ lastCoords = coords ?? null;
147
+ scheduler.schedule();
148
+ const clearLoading = () => {
149
+ loading = false;
150
+ scheduler.schedule();
151
+ };
152
+ manager.start(coords?.x ?? 0, coords?.y ?? 0).then(clearLoading, clearLoading);
153
+ }
154
+ render();
155
+ return { destroy: () => {
156
+ teardown.run();
157
+ captcha?.destroy();
158
+ modal.destroy();
159
+ checkbox?.destroy();
160
+ banner?.destroy();
161
+ honeypot?.destroy();
162
+ root.parentNode?.removeChild(root);
163
+ } };
164
+ };
165
+ //#endregion
166
+ export { mountProcaptchaImageWidget as default, mountProcaptchaImageWidget };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procaptchaWidget.js","sourceRoot":"","sources":["../../src/components/procaptchaWidget.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,9 @@
1
1
  import "./_virtual/_rolldown/runtime.js";
2
- import { CaptchaWidget } from "./components/CaptchaWidget.js";
3
- import ProcaptchaWidget from "./components/ProcaptchaWidget.js";
4
- import Procaptcha from "./components/Procaptcha.js";
5
- export { CaptchaWidget, Procaptcha, ProcaptchaWidget };
2
+ import { mountButton } from "./components/button.js";
3
+ import { mountModal } from "./components/modal.js";
4
+ import { mountCaptchaWidget } from "./components/captchaWidget.js";
5
+ import { mountCaptchaComponent } from "./components/captchaComponent.js";
6
+ import mountCollector from "./components/collector.js";
7
+ import mountProcaptchaImageWidget from "./components/procaptchaWidget.js";
8
+ import { loadProcaptcha, mountProcaptcha } from "./components/procaptcha.js";
9
+ export { loadProcaptcha, mountButton, mountCaptchaComponent, mountCaptchaWidget, mountCollector, mountModal, mountProcaptcha, mountProcaptchaImageWidget };
@@ -1 +1 @@
1
- {"version":3,"file":"button.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/button.unit.test.tsx"],"names":[],"mappings":""}
1
+ {"version":3,"file":"button.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/button.unit.test.ts"],"names":[],"mappings":""}
@@ -1,93 +1,106 @@
1
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
2
1
  import { darkTheme, lightTheme, withAlpha } from "@prosopo/widget-skeleton";
3
2
  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";
3
+ import { mountButton } from "../components/button.js";
4
+ import { asRgb, fire, fireAndReturn, mount, styleSnapshot, } from "./render.js";
6
5
  let mounted;
6
+ let button;
7
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)
8
+ const props = (overrides = {}) => ({
9
+ themeColor: overrides.themeColor ?? "light",
10
+ buttonType: overrides.buttonType ?? "next",
11
+ text: overrides.text ?? "Next",
12
+ onClick,
13
+ });
14
+ const render = (overrides = {}) => {
15
+ if (button) {
16
+ button.update(props(overrides));
17
+ }
18
+ else {
19
+ button = mountButton(mounted.container, props(overrides));
20
+ }
21
+ const element = mounted.container.querySelector("button");
22
+ if (!element)
12
23
  throw new Error("expected a button to be rendered");
13
- return button;
24
+ return element;
14
25
  };
15
26
  beforeEach(() => {
16
27
  vi.clearAllMocks();
17
28
  process.env.NODE_ENV = "test";
18
29
  mounted = mount();
30
+ button = undefined;
19
31
  });
20
32
  afterEach(() => {
33
+ button?.destroy();
21
34
  mounted.unmount();
22
35
  });
23
36
  describe("what the button renders", () => {
24
37
  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");
38
+ const element = render({ text: "Submit" });
39
+ expect(element.textContent).toBe("Submit");
40
+ expect(element.getAttribute("aria-label")).toBe("Submit");
28
41
  });
29
42
  test("renders an empty label without falling over", () => {
30
- const button = render({ text: "" });
31
- expect(button.textContent).toBe("");
43
+ const element = render({ text: "" });
44
+ expect(element.textContent).toBe("");
32
45
  });
33
46
  test("carries the test hook naming its role", () => {
34
- const button = render({ buttonType: "cancel" });
35
- expect(button.getAttribute("data-cy")).toBe("button-cancel");
47
+ const element = render({ buttonType: "cancel" });
48
+ expect(element.getAttribute("data-cy")).toBe("button-cancel");
36
49
  });
37
50
  test("drops the test hook in a production build", () => {
38
51
  process.env.NODE_ENV = "production";
39
- const button = render({ buttonType: "cancel" });
40
- expect(button.getAttribute("data-cy")).toBeNull();
52
+ const element = render({ buttonType: "cancel" });
53
+ expect(element.getAttribute("data-cy")).toBeNull();
41
54
  });
42
55
  });
43
56
  describe("theming", () => {
44
57
  test("is a borderless pill, not an outlined box", () => {
45
- const button = render();
46
- expect(button.style.borderRadius).toBe(lightTheme.shape.button);
47
- expect(button.style.borderColor).toBe("");
48
- expect(button.style.borderWidth).toBe("");
58
+ const element = render();
59
+ expect(element.style.borderRadius).toBe(lightTheme.shape.button);
60
+ expect(element.style.borderColor).toBe("");
61
+ expect(element.style.borderWidth).toBe("");
49
62
  });
50
63
  test("a cancel button is transparent until it is hovered", () => {
51
- const button = render({ buttonType: "cancel" });
52
- expect(button.style.backgroundColor).toBe("transparent");
64
+ const element = render({ buttonType: "cancel" });
65
+ expect(element.style.backgroundColor).toBe("transparent");
53
66
  });
54
67
  test("a next button is filled with the brand primary", () => {
55
- const button = render({ buttonType: "next" });
56
- expect(button.style.backgroundColor).toBe(asRgb(lightTheme.palette.primary.main));
68
+ const element = render({ buttonType: "next" });
69
+ expect(element.style.backgroundColor).toBe(asRgb(lightTheme.palette.primary.main));
57
70
  });
58
71
  test("a dark next button takes its fill from the dark theme", () => {
59
- const button = render({ buttonType: "next", themeColor: "dark" });
60
- expect(button.style.backgroundColor).toBe(asRgb(darkTheme.palette.primary.main));
72
+ const element = render({ buttonType: "next", themeColor: "dark" });
73
+ expect(element.style.backgroundColor).toBe(asRgb(darkTheme.palette.primary.main));
61
74
  });
62
75
  test("hovering a cancel button reveals the primary state layer", () => {
63
- const button = render({ buttonType: "cancel" });
64
- fire(button, "mouseover");
65
- expect(button.style.backgroundColor).toBe(withAlpha(lightTheme.palette.primary.main, lightTheme.stateLayer.hover));
76
+ const element = render({ buttonType: "cancel" });
77
+ fire(element, "mouseenter");
78
+ expect(element.style.backgroundColor).toBe(withAlpha(lightTheme.palette.primary.main, lightTheme.stateLayer.hover));
66
79
  });
67
80
  test("hovering a next button composites a state layer over its fill", () => {
68
- const button = render({ buttonType: "next" });
69
- fire(button, "mouseover");
70
- expect(button.style.backgroundColor).toBe(asRgb(lightTheme.palette.primary.main));
71
- expect(button.style.boxShadow).toContain(withAlpha(lightTheme.palette.primary.contrastText, lightTheme.stateLayer.hover));
81
+ const element = render({ buttonType: "next" });
82
+ fire(element, "mouseenter");
83
+ expect(element.style.backgroundColor).toBe(asRgb(lightTheme.palette.primary.main));
84
+ expect(element.style.boxShadow).toContain(withAlpha(lightTheme.palette.primary.contrastText, lightTheme.stateLayer.hover));
72
85
  });
73
86
  test("leaving the button drops the state layer again", () => {
74
- const button = render({ buttonType: "next" });
75
- fire(button, "mouseover");
76
- fire(button, "mouseout");
77
- expect(button.style.backgroundColor).toBe(asRgb(lightTheme.palette.primary.main));
78
- expect(button.style.boxShadow).not.toContain("inset");
87
+ const element = render({ buttonType: "next" });
88
+ fire(element, "mouseenter");
89
+ fire(element, "mouseleave");
90
+ expect(element.style.backgroundColor).toBe(asRgb(lightTheme.palette.primary.main));
91
+ expect(element.style.boxShadow).not.toContain("inset");
79
92
  });
80
93
  test("a filled button keeps its on-primary text throughout", () => {
81
- const button = render();
82
- expect(button.style.color).toBe(asRgb(lightTheme.palette.primary.contrastText));
83
- fire(button, "mouseover");
84
- expect(button.style.color).toBe(asRgb(lightTheme.palette.primary.contrastText));
94
+ const element = render();
95
+ expect(element.style.color).toBe(asRgb(lightTheme.palette.primary.contrastText));
96
+ fire(element, "mouseenter");
97
+ expect(element.style.color).toBe(asRgb(lightTheme.palette.primary.contrastText));
85
98
  });
86
99
  test("re-rendering with the same theme keeps the styling stable", () => {
87
- const button = render({ themeColor: "dark" });
88
- const before = button.getAttribute("style");
100
+ const element = render({ themeColor: "dark" });
101
+ const before = styleSnapshot(element);
89
102
  render({ themeColor: "dark" });
90
- expect(button.getAttribute("style")).toBe(before);
103
+ expect(styleSnapshot(element)).toEqual(before);
91
104
  });
92
105
  });
93
106
  describe("clicking", () => {
@@ -108,10 +121,17 @@ describe("clicking", () => {
108
121
  expect(event.defaultPrevented).toBe(false);
109
122
  });
110
123
  test("every click is reported, not just the first", () => {
111
- const button = render();
112
- fire(button, "click");
113
- fire(button, "click");
124
+ const element = render();
125
+ fire(element, "click");
126
+ fire(element, "click");
114
127
  expect(onClick).toHaveBeenCalledTimes(2);
115
128
  });
129
+ test("a destroyed button stops listening", () => {
130
+ const element = render();
131
+ button?.destroy();
132
+ button = undefined;
133
+ element.dispatchEvent(new MouseEvent("click", { bubbles: true }));
134
+ expect(onClick).not.toHaveBeenCalled();
135
+ });
116
136
  });
117
137
  //# sourceMappingURL=button.unit.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button.unit.test.js","sourceRoot":"","sources":["../../src/tests/button.unit.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"button.unit.test.js","sourceRoot":"","sources":["../../src/tests/button.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"captchaComponent.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/captchaComponent.unit.test.tsx"],"names":[],"mappings":""}
1
+ {"version":3,"file":"captchaComponent.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/captchaComponent.unit.test.ts"],"names":[],"mappings":""}
@@ -1,14 +1,10 @@
1
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
2
1
  import { darkTheme, lightTheme } from "@prosopo/widget-skeleton";
3
2
  import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
4
- import CaptchaComponent from "../components/CaptchaComponent.js";
5
- import { captcha, challengeResponse } from "./harness.js";
3
+ import { mountCaptchaComponent, } from "../components/captchaComponent.js";
4
+ import { captcha, challengeResponse, translator } from "./harness.js";
6
5
  import { asRgb, fire, mount } from "./render.js";
7
- vi.mock("@prosopo/locale", async (importOriginal) => {
8
- const actual = await importOriginal();
9
- return { ...actual, useTranslation: () => ({ t: (key) => key }) };
10
- });
11
6
  let mounted;
7
+ let component;
12
8
  const onSubmit = vi.fn();
13
9
  const onCancel = vi.fn();
14
10
  const onClick = vi.fn();
@@ -20,8 +16,25 @@ const twoRoundChallenge = () => challengeResponse({
20
16
  captcha({ captchaId: "captcha-id-2", target: "train" }),
21
17
  ],
22
18
  });
23
- const render = (props = {}) => {
24
- mounted.render(_jsx(CaptchaComponent, { challenge: props.challenge ?? challengeResponse(), index: props.index ?? 0, solutions: props.solutions ?? [[]], onSubmit: onSubmit, onCancel: onCancel, onClick: onClick, onNext: onNext, onReload: onReload, themeColor: props.themeColor ?? "light" }));
19
+ const props = (overrides = {}) => ({
20
+ challenge: overrides.challenge ?? challengeResponse(),
21
+ index: overrides.index ?? 0,
22
+ solutions: overrides.solutions ?? [[]],
23
+ onSubmit,
24
+ onCancel,
25
+ onClick,
26
+ onNext,
27
+ onReload,
28
+ themeColor: overrides.themeColor ?? "light",
29
+ translator: translator(),
30
+ });
31
+ const render = (overrides = {}) => {
32
+ if (component) {
33
+ component.update(props(overrides));
34
+ }
35
+ else {
36
+ component = mountCaptchaComponent(mounted.container, props(overrides));
37
+ }
25
38
  };
26
39
  const buttonLabelled = (label) => {
27
40
  const button = mounted.container.querySelector(`button[aria-label="${label}"]`);
@@ -33,8 +46,10 @@ const text = () => mounted.container.textContent ?? "";
33
46
  beforeEach(() => {
34
47
  vi.clearAllMocks();
35
48
  mounted = mount();
49
+ component = undefined;
36
50
  });
37
51
  afterEach(() => {
52
+ component?.destroy();
38
53
  mounted.unmount();
39
54
  });
40
55
  describe("the prompt", () => {
@@ -116,6 +131,13 @@ describe("the controls", () => {
116
131
  render({ challenge: twoRoundChallenge(), index: 1, solutions: [[], []] });
117
132
  expect(buttonLabelled("WIDGET.SUBMIT")).toBeDefined();
118
133
  });
134
+ test("advancing a round swaps next for submit in place", () => {
135
+ const challenge = twoRoundChallenge();
136
+ render({ challenge, index: 0, solutions: [[], []] });
137
+ const next = buttonLabelled("WIDGET.NEXT");
138
+ render({ challenge, index: 1, solutions: [[], []] });
139
+ expect(buttonLabelled("WIDGET.SUBMIT")).toBe(next);
140
+ });
119
141
  test("a synthetic click on cancel is ignored", () => {
120
142
  render();
121
143
  fire(buttonLabelled("WIDGET.CANCEL"), "click", { trusted: false });
@@ -1 +1 @@
1
- {"version":3,"file":"captchaComponent.unit.test.js","sourceRoot":"","sources":["../../src/tests/captchaComponent.unit.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"captchaComponent.unit.test.js","sourceRoot":"","sources":["../../src/tests/captchaComponent.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"captchaWidget.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/captchaWidget.unit.test.tsx"],"names":[],"mappings":""}
1
+ {"version":3,"file":"captchaWidget.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/captchaWidget.unit.test.ts"],"names":[],"mappings":""}