@prosopo/procaptcha-puzzle 2.17.8 → 2.17.10

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 (124) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +2 -2
  2. package/.turbo/{turbo-build.log → turbo-build$colon$esm.log} +8 -9
  3. package/.turbo/turbo-build$colon$tsc.log +17 -17
  4. package/.turbo/turbo-build$colon$types.log +1 -0
  5. package/CHANGELOG.md +46 -0
  6. package/dist/cjs/services/Manager.cjs +1 -2
  7. package/dist/{services → esm/services}/Manager.js +2 -3
  8. package/dist/tsc/components/procaptchaPuzzle.d.ts.map +1 -0
  9. package/dist/tsc/components/procaptchaPuzzle.js +4 -0
  10. package/dist/tsc/components/procaptchaPuzzle.js.map +1 -0
  11. package/dist/tsc/components/procaptchaWidget.d.ts.map +1 -0
  12. package/dist/tsc/components/procaptchaWidget.js +300 -0
  13. package/dist/tsc/components/procaptchaWidget.js.map +1 -0
  14. package/dist/tsc/components/puzzleCanvas.d.ts.map +1 -0
  15. package/dist/tsc/components/puzzleCanvas.js +545 -0
  16. package/dist/tsc/components/puzzleCanvas.js.map +1 -0
  17. package/dist/tsc/errorSites.d.ts.map +1 -0
  18. package/dist/{errorSites.js.map → tsc/errorSites.js.map} +1 -1
  19. package/dist/tsc/index.d.ts.map +1 -0
  20. package/dist/tsc/index.js +4 -0
  21. package/dist/tsc/index.js.map +1 -0
  22. package/dist/tsc/services/Manager.d.ts.map +1 -0
  23. package/dist/tsc/services/Manager.js +262 -0
  24. package/dist/tsc/services/Manager.js.map +1 -0
  25. package/dist/tsc/tests/domHarness.d.ts.map +1 -0
  26. package/dist/tsc/tests/domHarness.js.map +1 -0
  27. package/dist/tsc/tests/invisibleCanvasVisibility.unit.test.d.ts.map +1 -0
  28. package/dist/tsc/tests/invisibleCanvasVisibility.unit.test.js.map +1 -0
  29. package/dist/tsc/tests/manager.unit.test.d.ts.map +1 -0
  30. package/dist/{tests → tsc/tests}/manager.unit.test.js +10 -3
  31. package/dist/tsc/tests/manager.unit.test.js.map +1 -0
  32. package/dist/tsc/tests/managerHarness.d.ts.map +1 -0
  33. package/dist/tsc/tests/managerHarness.js.map +1 -0
  34. package/dist/tsc/tests/procaptchaPuzzle.test-d.d.ts.map +1 -0
  35. package/dist/tsc/tests/procaptchaPuzzle.test-d.js.map +1 -0
  36. package/dist/tsc/tests/procaptchaPuzzle.unit.test.d.ts.map +1 -0
  37. package/dist/tsc/tests/procaptchaPuzzle.unit.test.js.map +1 -0
  38. package/dist/tsc/tests/procaptchaWidget.unit.test.d.ts.map +1 -0
  39. package/dist/tsc/tests/procaptchaWidget.unit.test.js.map +1 -0
  40. package/dist/tsc/tests/puzzleCanvas.unit.test.d.ts.map +1 -0
  41. package/dist/tsc/tests/puzzleCanvas.unit.test.js.map +1 -0
  42. package/dist/types/components/procaptchaPuzzle.d.ts +7 -0
  43. package/dist/types/components/procaptchaPuzzle.d.ts.map +1 -0
  44. package/dist/types/components/procaptchaWidget.d.ts +7 -0
  45. package/dist/types/components/procaptchaWidget.d.ts.map +1 -0
  46. package/dist/types/components/puzzleCanvas.d.ts +25 -0
  47. package/dist/types/components/puzzleCanvas.d.ts.map +1 -0
  48. package/dist/types/errorSites.d.ts +12 -0
  49. package/dist/types/errorSites.d.ts.map +1 -0
  50. package/dist/types/index.d.ts +4 -0
  51. package/dist/types/index.d.ts.map +1 -0
  52. package/dist/types/services/Manager.d.ts +12 -0
  53. package/dist/types/services/Manager.d.ts.map +1 -0
  54. package/dist/types/tests/domHarness.d.ts +20 -0
  55. package/dist/types/tests/domHarness.d.ts.map +1 -0
  56. package/dist/types/tests/invisibleCanvasVisibility.unit.test.d.ts +2 -0
  57. package/dist/types/tests/invisibleCanvasVisibility.unit.test.d.ts.map +1 -0
  58. package/dist/types/tests/manager.unit.test.d.ts +2 -0
  59. package/dist/types/tests/manager.unit.test.d.ts.map +1 -0
  60. package/dist/types/tests/managerHarness.d.ts +20 -0
  61. package/dist/types/tests/managerHarness.d.ts.map +1 -0
  62. package/dist/types/tests/procaptchaPuzzle.test-d.d.ts +2 -0
  63. package/dist/types/tests/procaptchaPuzzle.test-d.d.ts.map +1 -0
  64. package/dist/types/tests/procaptchaPuzzle.unit.test.d.ts +2 -0
  65. package/dist/types/tests/procaptchaPuzzle.unit.test.d.ts.map +1 -0
  66. package/dist/types/tests/procaptchaWidget.unit.test.d.ts +2 -0
  67. package/dist/types/tests/procaptchaWidget.unit.test.d.ts.map +1 -0
  68. package/dist/types/tests/puzzleCanvas.unit.test.d.ts +2 -0
  69. package/dist/types/tests/puzzleCanvas.unit.test.d.ts.map +1 -0
  70. package/package.json +17 -18
  71. package/dist/components/procaptchaPuzzle.d.ts.map +0 -1
  72. package/dist/components/procaptchaPuzzle.js.map +0 -1
  73. package/dist/components/procaptchaWidget.d.ts.map +0 -1
  74. package/dist/components/procaptchaWidget.js.map +0 -1
  75. package/dist/components/puzzleCanvas.d.ts.map +0 -1
  76. package/dist/components/puzzleCanvas.js.map +0 -1
  77. package/dist/errorSites.d.ts.map +0 -1
  78. package/dist/index.d.ts.map +0 -1
  79. package/dist/index.js.map +0 -1
  80. package/dist/services/Manager.d.ts.map +0 -1
  81. package/dist/services/Manager.js.map +0 -1
  82. package/dist/tests/domHarness.d.ts.map +0 -1
  83. package/dist/tests/domHarness.js.map +0 -1
  84. package/dist/tests/invisibleCanvasVisibility.unit.test.d.ts.map +0 -1
  85. package/dist/tests/invisibleCanvasVisibility.unit.test.js.map +0 -1
  86. package/dist/tests/manager.unit.test.d.ts.map +0 -1
  87. package/dist/tests/manager.unit.test.js.map +0 -1
  88. package/dist/tests/managerHarness.d.ts.map +0 -1
  89. package/dist/tests/managerHarness.js.map +0 -1
  90. package/dist/tests/procaptchaPuzzle.test-d.d.ts.map +0 -1
  91. package/dist/tests/procaptchaPuzzle.test-d.js.map +0 -1
  92. package/dist/tests/procaptchaPuzzle.unit.test.d.ts.map +0 -1
  93. package/dist/tests/procaptchaPuzzle.unit.test.js.map +0 -1
  94. package/dist/tests/procaptchaWidget.unit.test.d.ts.map +0 -1
  95. package/dist/tests/procaptchaWidget.unit.test.js.map +0 -1
  96. package/dist/tests/puzzleCanvas.unit.test.d.ts.map +0 -1
  97. package/dist/tests/puzzleCanvas.unit.test.js.map +0 -1
  98. /package/dist/{_virtual → esm/_virtual}/_rolldown/runtime.js +0 -0
  99. /package/dist/{components → esm/components}/procaptchaPuzzle.js +0 -0
  100. /package/dist/{components → esm/components}/procaptchaWidget.js +0 -0
  101. /package/dist/{components → esm/components}/puzzleCanvas.js +0 -0
  102. /package/dist/{index.js → esm/index.js} +0 -0
  103. /package/dist/{components → tsc/components}/procaptchaPuzzle.d.ts +0 -0
  104. /package/dist/{components → tsc/components}/procaptchaWidget.d.ts +0 -0
  105. /package/dist/{components → tsc/components}/puzzleCanvas.d.ts +0 -0
  106. /package/dist/{errorSites.d.ts → tsc/errorSites.d.ts} +0 -0
  107. /package/dist/{errorSites.js → tsc/errorSites.js} +0 -0
  108. /package/dist/{index.d.ts → tsc/index.d.ts} +0 -0
  109. /package/dist/{services → tsc/services}/Manager.d.ts +0 -0
  110. /package/dist/{tests → tsc/tests}/domHarness.d.ts +0 -0
  111. /package/dist/{tests → tsc/tests}/domHarness.js +0 -0
  112. /package/dist/{tests → tsc/tests}/invisibleCanvasVisibility.unit.test.d.ts +0 -0
  113. /package/dist/{tests → tsc/tests}/invisibleCanvasVisibility.unit.test.js +0 -0
  114. /package/dist/{tests → tsc/tests}/manager.unit.test.d.ts +0 -0
  115. /package/dist/{tests → tsc/tests}/managerHarness.d.ts +0 -0
  116. /package/dist/{tests → tsc/tests}/managerHarness.js +0 -0
  117. /package/dist/{tests → tsc/tests}/procaptchaPuzzle.test-d.d.ts +0 -0
  118. /package/dist/{tests → tsc/tests}/procaptchaPuzzle.test-d.js +0 -0
  119. /package/dist/{tests → tsc/tests}/procaptchaPuzzle.unit.test.d.ts +0 -0
  120. /package/dist/{tests → tsc/tests}/procaptchaPuzzle.unit.test.js +0 -0
  121. /package/dist/{tests → tsc/tests}/procaptchaWidget.unit.test.d.ts +0 -0
  122. /package/dist/{tests → tsc/tests}/procaptchaWidget.unit.test.js +0 -0
  123. /package/dist/{tests → tsc/tests}/puzzleCanvas.unit.test.d.ts +0 -0
  124. /package/dist/{tests → tsc/tests}/puzzleCanvas.unit.test.js +0 -0
@@ -0,0 +1,545 @@
1
+ import { Teardown, applyAttributes, applyStyles, createElement, isEventTrusted, mountAudioAlternativeFooter, mountChallengeSurface, mountImageSwitchButton, mountReloadButton, } from "@prosopo/procaptcha-common";
2
+ import { lightTheme } from "@prosopo/widget-skeleton";
3
+ const CONTAINER_WIDTH = 300;
4
+ const CONTAINER_HEIGHT = 200;
5
+ const PIECE_CSS_CLASS = "prosopo-puzzle-piece";
6
+ const STEP_PX = 10;
7
+ const FINE_STEP_PX = 2;
8
+ const ANNOUNCE_DEBOUNCE_MS = 400;
9
+ const VISUALLY_HIDDEN = {
10
+ position: "absolute",
11
+ width: "1px",
12
+ height: "1px",
13
+ padding: 0,
14
+ margin: "-1px",
15
+ overflow: "hidden",
16
+ clip: "rect(0, 0, 0, 0)",
17
+ clipPath: "inset(50%)",
18
+ whiteSpace: "nowrap",
19
+ border: 0,
20
+ };
21
+ const stylesheet = (focusRingColor) => `
22
+ @keyframes prosopo-puzzle-shake {
23
+ 0%, 100% { transform: translateX(0); }
24
+ 10%, 30%, 50%, 70%, 90% { transform: translateX(-4px); }
25
+ 20%, 40%, 60%, 80% { transform: translateX(4px); }
26
+ }
27
+ .${PIECE_CSS_CLASS}:focus-visible {
28
+ outline: 3px solid ${focusRingColor};
29
+ outline-offset: 2px;
30
+ }
31
+ `;
32
+ const KALEIDOSCOPE_TILES = [
33
+ [0, 0, -1, -1],
34
+ [1, 0, 1, -1],
35
+ [2, 0, -1, -1],
36
+ [0, 1, -1, 1],
37
+ [1, 1, 1, 1],
38
+ [2, 1, -1, 1],
39
+ [0, 2, -1, -1],
40
+ [1, 2, 1, -1],
41
+ [2, 2, -1, -1],
42
+ ];
43
+ const clamp = (value, min, max) => Math.max(min, Math.min(max, value));
44
+ let instanceCount = 0;
45
+ export const mountPuzzleCanvas = (initialProps) => {
46
+ const teardown = new Teardown();
47
+ let props = initialProps;
48
+ let posX = props.originX;
49
+ let posY = props.originY;
50
+ let dragging = false;
51
+ let puzzleEvents = [];
52
+ let dragOffset = { x: 0, y: 0 };
53
+ let visible = false;
54
+ let shaking = false;
55
+ let shakeTimer;
56
+ let announceTimer;
57
+ let keyboardDragging = false;
58
+ let hasMovedPiece = false;
59
+ const baseId = `prosopo-puzzle-${instanceCount++}`;
60
+ const instructionId = `${baseId}-instruction`;
61
+ const keyboardHintId = `${baseId}-keyboard-hint`;
62
+ const t = (key, options) => props.translator.t(key, options);
63
+ const style = createElement("style", {
64
+ text: stylesheet(props.theme.palette.primary.main),
65
+ });
66
+ const announcer = createElement("output", {
67
+ style: VISUALLY_HIDDEN,
68
+ attributes: { "aria-live": "polite", "aria-atomic": "true" },
69
+ });
70
+ const keyboardHint = createElement("div", {
71
+ style: VISUALLY_HIDDEN,
72
+ attributes: { id: keyboardHintId },
73
+ });
74
+ const backgroundTiles = KALEIDOSCOPE_TILES.map(([column, row, sx, sy]) => createElement("img", {
75
+ style: {
76
+ position: "absolute",
77
+ left: `${column * CONTAINER_WIDTH}px`,
78
+ top: `${row * CONTAINER_HEIGHT}px`,
79
+ width: `${CONTAINER_WIDTH}px`,
80
+ height: `${CONTAINER_HEIGHT}px`,
81
+ transform: `scale(${sx}, ${sy})`,
82
+ pointerEvents: "none",
83
+ userSelect: "none",
84
+ },
85
+ attributes: { alt: "", draggable: false },
86
+ }));
87
+ const backgroundLayer = createElement("div", {
88
+ style: {
89
+ left: `-${CONTAINER_WIDTH}px`,
90
+ top: `-${CONTAINER_HEIGHT}px`,
91
+ position: "absolute",
92
+ width: `${CONTAINER_WIDTH * 3}px`,
93
+ height: `${CONTAINER_HEIGHT * 3}px`,
94
+ pointerEvents: "none",
95
+ userSelect: "none",
96
+ transformOrigin: "center center",
97
+ willChange: "transform, filter",
98
+ },
99
+ children: backgroundTiles,
100
+ });
101
+ const piece = createElement("div", {
102
+ className: PIECE_CSS_CLASS,
103
+ style: {
104
+ position: "absolute",
105
+ backgroundSize: "100% 100%",
106
+ touchAction: "none",
107
+ },
108
+ attributes: {
109
+ role: "application",
110
+ "aria-describedby": `${instructionId} ${keyboardHintId}`,
111
+ },
112
+ });
113
+ if ("production" !== process.env.NODE_ENV) {
114
+ applyAttributes(piece, { "data-cy": "prosopo-puzzle-piece" });
115
+ }
116
+ const area = createElement("div", {
117
+ style: {
118
+ position: "relative",
119
+ width: `${CONTAINER_WIDTH}px`,
120
+ height: `${CONTAINER_HEIGHT}px`,
121
+ borderRadius: "0 0 20px 20px",
122
+ overflow: "hidden",
123
+ userSelect: "none",
124
+ transition: "opacity 0.2s ease",
125
+ },
126
+ children: [backgroundLayer, piece],
127
+ });
128
+ const instructionText = createElement("span", {
129
+ attributes: { id: instructionId },
130
+ });
131
+ const refreshSlot = createElement("div", {
132
+ style: {
133
+ position: "absolute",
134
+ right: "8px",
135
+ top: "50%",
136
+ transform: "translateY(-50%)",
137
+ },
138
+ });
139
+ const switchSlot = createElement("div", {
140
+ style: {
141
+ position: "absolute",
142
+ left: "8px",
143
+ top: "50%",
144
+ transform: "translateY(-50%)",
145
+ zIndex: "1",
146
+ },
147
+ });
148
+ const instruction = createElement("div", {
149
+ style: {
150
+ position: "relative",
151
+ borderRadius: "20px 20px 0 0",
152
+ padding: "12px 48px",
153
+ width: `${CONTAINER_WIDTH}px`,
154
+ boxSizing: "border-box",
155
+ textAlign: "center",
156
+ fontSize: "14px",
157
+ fontWeight: 500,
158
+ transition: "color 0.3s ease, border-color 0.3s ease",
159
+ },
160
+ children: [instructionText, refreshSlot, switchSlot],
161
+ });
162
+ const panel = createElement("div", {
163
+ style: {
164
+ display: "flex",
165
+ flexDirection: "column",
166
+ alignItems: "center",
167
+ gap: "0",
168
+ transition: "opacity 0.3s ease, transform 0.3s ease",
169
+ },
170
+ children: [instruction, area],
171
+ });
172
+ const refreshButtonProps = () => ({
173
+ themeColor: lightTheme === props.theme ? "light" : "dark",
174
+ label: t("WIDGET.PUZZLE.REFRESH", {
175
+ defaultValue: "Show a different puzzle",
176
+ }),
177
+ compact: true,
178
+ onReload: () => {
179
+ if (!props.submitting && !dragging) {
180
+ props.onRefresh?.();
181
+ }
182
+ },
183
+ });
184
+ const refreshButton = props.onRefresh
185
+ ? mountReloadButton(refreshSlot, refreshButtonProps())
186
+ : undefined;
187
+ const imageSwitchButtonProps = () => ({
188
+ themeColor: lightTheme === props.theme ? "light" : "dark",
189
+ label: t("WIDGET.PUZZLE.SWITCH_TO_IMAGE", {
190
+ defaultValue: "Switch to an image challenge",
191
+ }),
192
+ tooltipPinned: true === props.imageSwitchHighlighted && !hasMovedPiece,
193
+ onSwitch: () => {
194
+ if (!props.submitting && !dragging) {
195
+ props.onSwitchToImage?.();
196
+ }
197
+ },
198
+ });
199
+ let imageSwitchButton;
200
+ const hidePinnedSwitchTooltip = () => {
201
+ if (hasMovedPiece) {
202
+ return;
203
+ }
204
+ hasMovedPiece = true;
205
+ imageSwitchButton?.update(imageSwitchButtonProps());
206
+ };
207
+ const syncImageSwitchButton = () => {
208
+ if (undefined === props.onSwitchToImage) {
209
+ imageSwitchButton?.destroy();
210
+ imageSwitchButton = undefined;
211
+ return;
212
+ }
213
+ if (imageSwitchButton) {
214
+ imageSwitchButton.update(imageSwitchButtonProps());
215
+ }
216
+ else {
217
+ imageSwitchButton = mountImageSwitchButton(switchSlot, imageSwitchButtonProps());
218
+ }
219
+ };
220
+ const surfaceProps = () => ({
221
+ show: true,
222
+ placement: props.placement,
223
+ anchor: props.anchor,
224
+ onDismiss: props.onDismiss,
225
+ scrim: visible ? "dim" : "none",
226
+ dialogLabel: t("WIDGET.PUZZLE.DIALOG_LABEL", {
227
+ defaultValue: "Puzzle challenge",
228
+ }),
229
+ });
230
+ const surface = mountChallengeSurface(surfaceProps());
231
+ surface.content.append(style, announcer, keyboardHint, panel);
232
+ const audioAlternativeFooterProps = () => ({
233
+ offer: props.audioAlternative,
234
+ theme: props.theme,
235
+ width: CONTAINER_WIDTH,
236
+ });
237
+ const audioAlternativeFooter = mountAudioAlternativeFooter(panel, audioAlternativeFooterProps());
238
+ const announce = (message, delayMs = 0) => {
239
+ if (undefined !== announceTimer) {
240
+ clearTimeout(announceTimer);
241
+ announceTimer = undefined;
242
+ }
243
+ if (0 === delayMs) {
244
+ announcer.textContent = message;
245
+ return;
246
+ }
247
+ announceTimer = setTimeout(() => {
248
+ announcer.textContent = message;
249
+ }, delayMs);
250
+ };
251
+ const describePosition = (x, y) => t("WIDGET.PUZZLE.POSITION", {
252
+ defaultValue: "{{x}} percent across, {{y}} percent down",
253
+ x: Math.round((x / CONTAINER_WIDTH) * 100),
254
+ y: Math.round((y / CONTAINER_HEIGHT) * 100),
255
+ });
256
+ const applyPiecePosition = () => {
257
+ applyStyles(piece, {
258
+ left: `${posX - props.pieceSize / 2}px`,
259
+ top: `${posY - props.pieceSize / 2}px`,
260
+ });
261
+ };
262
+ const applyPieceChrome = () => {
263
+ applyStyles(piece, {
264
+ width: `${props.pieceSize}px`,
265
+ height: `${props.pieceSize}px`,
266
+ backgroundImage: `url(${props.piece})`,
267
+ cursor: props.submitting ? "default" : dragging ? "grabbing" : "grab",
268
+ filter: dragging
269
+ ? "drop-shadow(0 4px 10px rgba(0, 0, 0, 0.45))"
270
+ : "drop-shadow(0 2px 5px rgba(0, 0, 0, 0.35))",
271
+ transition: dragging
272
+ ? "none"
273
+ : "filter 0.2s ease, left 0.3s ease, top 0.3s ease",
274
+ });
275
+ };
276
+ const PARALLAX_FACTOR = 0.08;
277
+ const applyBackgroundMotion = () => {
278
+ const deltaX = posX - props.originX;
279
+ const deltaY = posY - props.originY;
280
+ const dragDistance = Math.hypot(deltaX, deltaY);
281
+ const translateX = dragging ? -deltaX * PARALLAX_FACTOR : 0;
282
+ const translateY = dragging ? -deltaY * PARALLAX_FACTOR : 0;
283
+ const scale = dragging ? 1.03 : 1;
284
+ const hueShift = dragging ? clamp(deltaX * 0.12, -18, 18) : 0;
285
+ const satBoost = dragging ? 1 + Math.min(0.25, dragDistance * 0.0035) : 1;
286
+ const brightness = dragging ? 1 - Math.min(0.06, dragDistance * 0.0008) : 1;
287
+ applyStyles(backgroundLayer, {
288
+ transform: `translate(${translateX.toFixed(2)}px, ${translateY.toFixed(2)}px) scale(${scale.toFixed(3)})`,
289
+ filter: `hue-rotate(${hueShift.toFixed(2)}deg) saturate(${satBoost.toFixed(3)}) brightness(${brightness.toFixed(3)})`,
290
+ transition: dragging
291
+ ? "none"
292
+ : "transform 0.35s cubic-bezier(0.22, 1, 0.36, 1), filter 0.35s ease",
293
+ });
294
+ };
295
+ const render = () => {
296
+ const { theme } = props;
297
+ applyStyles(panel, {
298
+ opacity: visible ? 1 : 0,
299
+ transform: visible ? "scale(1)" : "scale(0.9)",
300
+ animation: shaking ? "prosopo-puzzle-shake 0.5s ease" : "none",
301
+ });
302
+ instructionText.textContent = props.showRetry
303
+ ? t("WIDGET.PUZZLE.RETRY", { defaultValue: "Not quite — try again" })
304
+ : t("WIDGET.PUZZLE.DRAG", {
305
+ defaultValue: "Drag the piece to the target",
306
+ });
307
+ keyboardHint.textContent = t("WIDGET.PUZZLE.KEYBOARD_HINT", {
308
+ 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.",
309
+ });
310
+ applyStyles(instruction, {
311
+ backgroundColor: theme.palette.surface,
312
+ fontFamily: theme.font.fontFamily,
313
+ color: props.showRetry
314
+ ? theme.palette.error.main
315
+ : theme.palette.onSurface,
316
+ borderBottom: `2px solid ${props.showRetry ? theme.palette.error.main : "transparent"}`,
317
+ });
318
+ applyStyles(refreshSlot, {
319
+ visibility: props.submitting ? "hidden" : "visible",
320
+ });
321
+ refreshButton?.update(refreshButtonProps());
322
+ syncImageSwitchButton();
323
+ applyStyles(switchSlot, {
324
+ visibility: props.submitting ? "hidden" : "visible",
325
+ });
326
+ applyStyles(area, {
327
+ background: `linear-gradient(135deg, ${theme.palette.surface} 0%, ${theme.palette.primaryContainer.main} 50%, ${theme.palette.surface} 100%)`,
328
+ opacity: props.submitting ? 0.6 : 1,
329
+ pointerEvents: props.submitting ? "none" : "auto",
330
+ borderRadius: props.audioAlternative ? "0" : "0 0 20px 20px",
331
+ });
332
+ audioAlternativeFooter.update(audioAlternativeFooterProps());
333
+ for (const tile of backgroundTiles) {
334
+ tile.src = props.background;
335
+ }
336
+ applyAttributes(piece, {
337
+ tabindex: props.submitting ? -1 : 0,
338
+ "aria-roledescription": t("WIDGET.PUZZLE.PIECE_ROLE", {
339
+ defaultValue: "draggable puzzle piece",
340
+ }),
341
+ "aria-label": t("WIDGET.PUZZLE.PIECE_LABEL", {
342
+ defaultValue: "Puzzle piece",
343
+ }),
344
+ });
345
+ applyPiecePosition();
346
+ applyPieceChrome();
347
+ applyBackgroundMotion();
348
+ surface.update(surfaceProps());
349
+ };
350
+ const containerOffset = () => {
351
+ const rect = area.getBoundingClientRect();
352
+ return { x: rect.left, y: rect.top };
353
+ };
354
+ const complete = (finalX, finalY) => {
355
+ props.onComplete(finalX, finalY, [...puzzleEvents]);
356
+ };
357
+ const handleMove = (clientX, clientY) => {
358
+ if (!dragging) {
359
+ return;
360
+ }
361
+ const offset = containerOffset();
362
+ posX = clamp(clientX - offset.x - dragOffset.x, 0, CONTAINER_WIDTH);
363
+ posY = clamp(clientY - offset.y - dragOffset.y, 0, CONTAINER_HEIGHT);
364
+ applyPiecePosition();
365
+ applyBackgroundMotion();
366
+ puzzleEvents.push({ x: posX, y: posY, t: Date.now() });
367
+ };
368
+ const handleEnd = () => {
369
+ if (!dragging) {
370
+ return;
371
+ }
372
+ dragging = false;
373
+ applyPieceChrome();
374
+ applyBackgroundMotion();
375
+ const lastEvent = puzzleEvents[puzzleEvents.length - 1];
376
+ if (!lastEvent) {
377
+ return;
378
+ }
379
+ complete(lastEvent.x, lastEvent.y);
380
+ };
381
+ const beginDrag = (clientX, clientY) => {
382
+ if (props.submitting) {
383
+ return;
384
+ }
385
+ dragging = true;
386
+ keyboardDragging = false;
387
+ puzzleEvents = [];
388
+ hidePinnedSwitchTooltip();
389
+ const offset = containerOffset();
390
+ dragOffset = { x: clientX - offset.x - posX, y: clientY - offset.y - posY };
391
+ applyPieceChrome();
392
+ applyBackgroundMotion();
393
+ };
394
+ const moveByKeyboard = (deltaX, deltaY) => {
395
+ if (!keyboardDragging) {
396
+ keyboardDragging = true;
397
+ puzzleEvents = [];
398
+ hidePinnedSwitchTooltip();
399
+ }
400
+ posX = clamp(posX + deltaX, 0, CONTAINER_WIDTH);
401
+ posY = clamp(posY + deltaY, 0, CONTAINER_HEIGHT);
402
+ applyPiecePosition();
403
+ puzzleEvents.push({ x: posX, y: posY, t: Date.now() });
404
+ announce(describePosition(posX, posY), ANNOUNCE_DEBOUNCE_MS);
405
+ };
406
+ const keyboardMove = (key, step) => {
407
+ switch (key) {
408
+ case "ArrowLeft":
409
+ return [-step, 0];
410
+ case "ArrowRight":
411
+ return [step, 0];
412
+ case "ArrowUp":
413
+ return [0, -step];
414
+ case "ArrowDown":
415
+ return [0, step];
416
+ case "Home":
417
+ return [props.originX - posX, props.originY - posY];
418
+ default:
419
+ return undefined;
420
+ }
421
+ };
422
+ teardown.addEventListener(piece, "keydown", (event) => {
423
+ if (props.submitting || !isEventTrusted(event)) {
424
+ return;
425
+ }
426
+ const keyboardEvent = event;
427
+ const step = keyboardEvent.shiftKey ? FINE_STEP_PX : STEP_PX;
428
+ const move = keyboardMove(keyboardEvent.key, step);
429
+ if (move) {
430
+ keyboardEvent.preventDefault();
431
+ moveByKeyboard(move[0], move[1]);
432
+ return;
433
+ }
434
+ if ("Enter" === keyboardEvent.key || " " === keyboardEvent.key) {
435
+ keyboardEvent.preventDefault();
436
+ keyboardDragging = false;
437
+ complete(posX, posY);
438
+ }
439
+ });
440
+ teardown.addEventListener(piece, "focus", () => {
441
+ announce(describePosition(posX, posY));
442
+ });
443
+ teardown.addEventListener(piece, "mousedown", (event) => {
444
+ const mouseEvent = event;
445
+ beginDrag(mouseEvent.clientX, mouseEvent.clientY);
446
+ });
447
+ teardown.addEventListener(piece, "touchstart", (event) => {
448
+ const touch = event.touches[0];
449
+ if (touch) {
450
+ beginDrag(touch.clientX, touch.clientY);
451
+ }
452
+ });
453
+ teardown.addEventListener(document, "mousemove", (event) => {
454
+ const mouseEvent = event;
455
+ handleMove(mouseEvent.clientX, mouseEvent.clientY);
456
+ });
457
+ teardown.addEventListener(document, "mouseup", handleEnd);
458
+ teardown.addEventListener(document, "touchmove", (event) => {
459
+ const touch = event.touches[0];
460
+ if (touch) {
461
+ handleMove(touch.clientX, touch.clientY);
462
+ }
463
+ });
464
+ teardown.addEventListener(document, "touchend", handleEnd);
465
+ render();
466
+ const frame = requestAnimationFrame(() => {
467
+ visible = true;
468
+ render();
469
+ });
470
+ teardown.add(() => cancelAnimationFrame(frame));
471
+ const startShake = () => {
472
+ shaking = true;
473
+ render();
474
+ if (undefined !== shakeTimer) {
475
+ clearTimeout(shakeTimer);
476
+ }
477
+ shakeTimer = setTimeout(() => {
478
+ shaking = false;
479
+ render();
480
+ }, 500);
481
+ };
482
+ teardown.add(() => {
483
+ if (undefined !== shakeTimer) {
484
+ clearTimeout(shakeTimer);
485
+ }
486
+ if (undefined !== announceTimer) {
487
+ clearTimeout(announceTimer);
488
+ }
489
+ });
490
+ const announceSubmitting = () => {
491
+ announce(t("WIDGET.PUZZLE.CHECKING", { defaultValue: "Checking your answer" }));
492
+ };
493
+ const announceRetry = () => {
494
+ const retry = t("WIDGET.PUZZLE.RETRY_ANNOUNCEMENT", {
495
+ defaultValue: "Not quite. A new puzzle has loaded and the piece is back at the start.",
496
+ });
497
+ const offerSwitch = undefined !== props.onSwitchToImage &&
498
+ true === props.imageSwitchHighlighted;
499
+ announce(offerSwitch
500
+ ? `${retry} ${t("WIDGET.PUZZLE.SWITCH_TO_IMAGE_ANNOUNCEMENT", {
501
+ defaultValue: "You can also switch to an image challenge.",
502
+ })}`
503
+ : retry);
504
+ };
505
+ if (props.submitting) {
506
+ announceSubmitting();
507
+ }
508
+ else if (props.showRetry) {
509
+ announceRetry();
510
+ }
511
+ if (props.showRetry) {
512
+ startShake();
513
+ }
514
+ return {
515
+ update: (nextProps) => {
516
+ const previous = props;
517
+ props = nextProps;
518
+ if (nextProps.originX !== previous.originX ||
519
+ nextProps.originY !== previous.originY) {
520
+ posX = nextProps.originX;
521
+ posY = nextProps.originY;
522
+ keyboardDragging = false;
523
+ }
524
+ if (nextProps.submitting && !previous.submitting) {
525
+ announceSubmitting();
526
+ }
527
+ if (nextProps.showRetry && !previous.showRetry) {
528
+ announceRetry();
529
+ }
530
+ if (nextProps.showRetry && !previous.showRetry) {
531
+ startShake();
532
+ return;
533
+ }
534
+ render();
535
+ },
536
+ destroy: () => {
537
+ teardown.run();
538
+ audioAlternativeFooter.destroy();
539
+ refreshButton?.destroy();
540
+ imageSwitchButton?.destroy();
541
+ surface.destroy();
542
+ },
543
+ };
544
+ };
545
+ //# sourceMappingURL=puzzleCanvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"puzzleCanvas.js","sourceRoot":"","sources":["../../../src/components/puzzleCanvas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorSites.d.ts","sourceRoot":"","sources":["../../src/errorSites.ts"],"names":[],"mappings":"AAcA,OAAO,QAAQ,iBAAiB,CAAC;IAChC,UAAU,UAAU;QACnB,QAAQ,EAAE,IAAI,CAAC;QACf,QAAQ,EAAE,IAAI,CAAC;QACf,QAAQ,EAAE,IAAI,CAAC;QACf,QAAQ,EAAE,IAAI,CAAC;QACf,QAAQ,EAAE,IAAI,CAAC;QACf,QAAQ,EAAE,IAAI,CAAC;KACf;CACD;AAED,OAAO,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"errorSites.js","sourceRoot":"","sources":["../src/errorSites.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"errorSites.js","sourceRoot":"","sources":["../../src/errorSites.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./components/procaptchaWidget.js";
2
+ export * from "./components/procaptchaPuzzle.js";
3
+ export * from "./components/puzzleCanvas.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Manager.d.ts","sourceRoot":"","sources":["../../../src/services/Manager.ts"],"names":[],"mappings":"AA+BA,OAAO,EAIN,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAEhC,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAEhB,MAAM,gBAAgB,CAAC;AAIxB,UAAU,mBAAmB;IAC5B,KAAK,EAAE,CACN,CAAC,CAAC,EAAE,MAAM,EACV,CAAC,CAAC,EAAE,MAAM,KACN,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAAC;IACnD,cAAc,EAAE,CACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,WAAW,EAAE,KACvB,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,UAAU,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACvD,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,OAAO,gBACN,2BAA2B,SACjC,eAAe,iBACP,uBAAuB,aAC3B,mBAAmB,sBACV,iBAAiB,qBAGlB,MAAM,MAAM,GAAG,SAAS,YAIlC;IAAE,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAAE,KAC3C,mBAoZF,CAAC"}