@prosopo/procaptcha-common 2.11.22 → 2.11.23
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.
- package/.turbo/turbo-build$colon$cjs.log +7 -6
- package/.turbo/turbo-build$colon$tsc.log +18 -18
- package/.turbo/turbo-build.log +8 -7
- package/CHANGELOG.md +33 -0
- package/dist/cjs/events/trust.cjs +20 -0
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/reactComponents/Checkbox.cjs +41 -20
- package/dist/cjs/reactComponents/Reload.cjs +22 -16
- package/dist/events/trust.d.ts +5 -0
- package/dist/events/trust.d.ts.map +1 -0
- package/dist/events/trust.js +20 -0
- package/dist/events/trust.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/reactComponents/Checkbox.d.ts.map +1 -1
- package/dist/reactComponents/Checkbox.js +42 -21
- package/dist/reactComponents/Checkbox.js.map +1 -1
- package/dist/reactComponents/Reload.d.ts.map +1 -1
- package/dist/reactComponents/Reload.js +22 -16
- package/dist/reactComponents/Reload.js.map +1 -1
- package/package.json +5 -5
- package/src/events/trust.ts +46 -0
- package/src/index.ts +1 -0
- package/src/reactComponents/Checkbox.tsx +68 -23
- package/src/reactComponents/Reload.tsx +28 -25
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/procaptcha-common@2.11.
|
|
2
|
+
> @prosopo/procaptcha-common@2.11.23 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -39,22 +39,23 @@ ViteCommonJSConfig: .
|
|
|
39
39
|
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
40
40
|
Bundle build started
|
|
41
41
|
[2K
|
|
42
|
-
✓
|
|
42
|
+
✓ 15 modules transformed.
|
|
43
43
|
rendering chunks...
|
|
44
44
|
computing gzip size...
|
|
45
45
|
dist/cjs/extensionLoader.cjs 0.27 kB │ gzip: 0.16 kB
|
|
46
46
|
dist/cjs/callbacks/defaultEvents.cjs 0.28 kB │ gzip: 0.16 kB
|
|
47
47
|
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
|
+
dist/cjs/events/trust.cjs 0.91 kB │ gzip: 0.53 kB
|
|
49
50
|
dist/cjs/elements/window.cjs 0.96 kB │ gzip: 0.54 kB
|
|
50
51
|
dist/cjs/_virtual/_rolldown/runtime.cjs 1.00 kB │ gzip: 0.50 kB
|
|
51
52
|
dist/cjs/reactComponents/TestModeBanner.cjs 1.36 kB │ gzip: 0.75 kB
|
|
52
53
|
dist/cjs/providers.cjs 1.54 kB │ gzip: 0.64 kB
|
|
53
|
-
dist/cjs/index.cjs 1.97 kB │ gzip: 0.54 kB
|
|
54
54
|
dist/cjs/reactComponents/Honeypot.cjs 2.03 kB │ gzip: 0.91 kB
|
|
55
|
-
dist/cjs/
|
|
55
|
+
dist/cjs/index.cjs 2.08 kB │ gzip: 0.57 kB
|
|
56
|
+
dist/cjs/reactComponents/Reload.cjs 2.94 kB │ gzip: 1.30 kB
|
|
56
57
|
dist/cjs/state/builder.cjs 3.13 kB │ gzip: 0.84 kB
|
|
57
58
|
dist/cjs/callbacks/defaultCallbacks.cjs 3.84 kB │ gzip: 1.03 kB
|
|
58
|
-
dist/cjs/reactComponents/Checkbox.cjs
|
|
59
|
+
dist/cjs/reactComponents/Checkbox.cjs 5.30 kB │ gzip: 2.09 kB
|
|
59
60
|
|
|
60
|
-
[32m✓ built in
|
|
61
|
+
[32m✓ built in 112ms[39m
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/procaptcha-common@2.11.
|
|
2
|
+
> @prosopo/procaptcha-common@2.11.23 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
7:05:21 AM - 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
|
-
|
|
21
|
+
7:05:21 AM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/vite/vite-plugin-copy.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
7:05:21 AM - 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
|
-
|
|
25
|
+
7:05:21 AM - 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
|
-
|
|
27
|
+
7:05:21 AM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
7:05:21 AM - 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
|
-
|
|
31
|
+
7:05:21 AM - 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
|
-
|
|
33
|
+
7:05:21 AM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/index.ts' is older than output '../common/tsconfig.tsbuildinfo'
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
7:05:21 AM - 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'
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
7:05:21 AM - Project '../widget-skeleton/tsconfig.json' is up to date because newest input '../widget-skeleton/src/webComponent/createWebComponent.ts' is older than output '../widget-skeleton/tsconfig.tsbuildinfo'
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
7:05:21 AM - Project '../fingerprintjs/tsconfig.json' is up to date because newest input '../fingerprintjs/src/sources/webgl.ts' is older than output '../fingerprintjs/tsconfig.tsbuildinfo'
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
7:05:21 AM - 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
|
-
|
|
43
|
+
7:05:21 AM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/index.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
7:05:21 AM - Project '../account/tsconfig.json' is out of date because output file '../account/tsconfig.tsbuildinfo' does not exist
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
7:05:21 AM - Building project '/home/runner/work/captcha/captcha/packages/account/tsconfig.json'...
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
7:05:27 AM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
7:05:27 AM - Building project '/home/runner/work/captcha/captcha/packages/procaptcha-common/tsconfig.json'...
|
|
52
52
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/procaptcha-common@2.11.
|
|
2
|
+
> @prosopo/procaptcha-common@2.11.23 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/procaptcha-common@2.11.
|
|
6
|
+
> @prosopo/procaptcha-common@2.11.23 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -43,7 +43,7 @@ ViteEsmConfig: .
|
|
|
43
43
|
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
44
44
|
Bundle build started
|
|
45
45
|
[2K
|
|
46
|
-
✓
|
|
46
|
+
✓ 15 modules transformed.
|
|
47
47
|
rendering chunks...
|
|
48
48
|
computing gzip size...
|
|
49
49
|
dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
|
|
@@ -51,14 +51,15 @@ dist/callbacks/defaultEvents.js 0.23 kB │ gzip: 0.15 kB
|
|
|
51
51
|
dist/extensionLoader.js 0.25 kB │ gzip: 0.16 kB
|
|
52
52
|
dist/elements/form.js 0.56 kB │ gzip: 0.30 kB
|
|
53
53
|
dist/simdReadings.js 0.72 kB │ gzip: 0.35 kB
|
|
54
|
+
dist/events/trust.js 0.89 kB │ gzip: 0.52 kB
|
|
54
55
|
dist/elements/window.js 0.91 kB │ gzip: 0.53 kB
|
|
55
|
-
dist/index.js 1.20 kB │ gzip: 0.42 kB
|
|
56
56
|
dist/reactComponents/TestModeBanner.js 1.23 kB │ gzip: 0.71 kB
|
|
57
|
+
dist/index.js 1.27 kB │ gzip: 0.44 kB
|
|
57
58
|
dist/providers.js 1.41 kB │ gzip: 0.62 kB
|
|
58
59
|
dist/reactComponents/Honeypot.js 1.86 kB │ gzip: 0.89 kB
|
|
59
|
-
dist/reactComponents/Reload.js 2.
|
|
60
|
+
dist/reactComponents/Reload.js 2.69 kB │ gzip: 1.26 kB
|
|
60
61
|
dist/state/builder.js 3.09 kB │ gzip: 0.84 kB
|
|
61
|
-
dist/reactComponents/Checkbox.js 3.62 kB │ gzip: 1.51 kB
|
|
62
62
|
dist/callbacks/defaultCallbacks.js 3.64 kB │ gzip: 1.00 kB
|
|
63
|
+
dist/reactComponents/Checkbox.js 4.77 kB │ gzip: 2.01 kB
|
|
63
64
|
|
|
64
|
-
[32m✓ built in
|
|
65
|
+
[32m✓ built in 77ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
# @prosopo/procaptcha-common
|
|
2
2
|
|
|
3
|
+
## 2.11.23
|
|
4
|
+
### Patch Changes
|
|
5
|
+
|
|
6
|
+
- 729349e: Run the cypress suite in firefox as well as chrome whenever the PR is a release
|
|
7
|
+
PR, via a new cypress-firefox workflow. cypress.yml is untouched.
|
|
8
|
+
|
|
9
|
+
The trusted-event checks scattered across the widget components now go through a
|
|
10
|
+
single `isEventTrusted()` helper in `@prosopo/procaptcha-common`. Behaviour is
|
|
11
|
+
unchanged: it still returns early for synthetic input, unless the bundle was
|
|
12
|
+
built with `PROSOPO_ALLOW_UNTRUSTED_EVENTS=1`, which only the firefox CI leg
|
|
13
|
+
sets. Production builds pin the define to `false`, so the branch is folded away
|
|
14
|
+
at build time and the allowance cannot reach a shipped bundle.
|
|
15
|
+
|
|
16
|
+
The allowance exists because cypress-real-events dispatches input over the chrome
|
|
17
|
+
devtools protocol, which cypress exposes for chromium browsers only — on firefox
|
|
18
|
+
the specs fall back to cypress' own synthetic clicks.
|
|
19
|
+
- b525956: Refresh the captcha widget appearance with a Material 3 theme across the widget-skeleton, procaptcha-common, procaptcha-react and procaptcha-puzzle packages.
|
|
20
|
+
|
|
21
|
+
- Split the single tinted surface into M3 surface roles: the widget now sits on a white `surface` (surfaceContainerLowest) and the challenge dialog on `surfaceContainerHigh`.
|
|
22
|
+
- Removed all drop shadows. Separation comes from surface roles and outlines; hover and drag feedback use M3 state layers and outline rings instead.
|
|
23
|
+
- Added shared `typography` (label large / title medium / body medium) and `stateLayer` (8%/10%/10%) tokens, and aligned the shape scale to M3 steps.
|
|
24
|
+
- Buttons: M3 label-large type, 40dp height, spec padding, state-layer hover in place of a brightness filter, and no resting elevation on the filled variant.
|
|
25
|
+
- Added the missing focus indicators (3dp outline, 2dp offset, keyboard-only) to the checkbox, buttons and reload control.
|
|
26
|
+
- Secondary dialog text now uses the `onSurfaceVariant` role rather than reduced opacity.
|
|
27
|
+
- Updated dependencies [16dbab0]
|
|
28
|
+
- Updated dependencies [b525956]
|
|
29
|
+
- Updated dependencies [063e69d]
|
|
30
|
+
- Updated dependencies [8a4d6ad]
|
|
31
|
+
- @prosopo/types@5.0.3
|
|
32
|
+
- @prosopo/widget-skeleton@2.8.6
|
|
33
|
+
- @prosopo/account@2.8.69
|
|
34
|
+
- @prosopo/load-balancer@2.10.20
|
|
35
|
+
|
|
3
36
|
## 2.11.22
|
|
4
37
|
### Patch Changes
|
|
5
38
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/events/trust.ts
|
|
2
|
+
/**
|
|
3
|
+
* Whether an event came from a real user rather than a script.
|
|
4
|
+
*
|
|
5
|
+
* The widget acts only on trusted input: a synthetic event is precisely how a
|
|
6
|
+
* bot drives a page, so honouring one would hand over the captcha for free.
|
|
7
|
+
*
|
|
8
|
+
* The single exception is the firefox cypress leg. cypress can only dispatch
|
|
9
|
+
* trusted input through the chrome devtools protocol, which it exposes for
|
|
10
|
+
* chromium browsers only, so on firefox every spec clicks synthetically.
|
|
11
|
+
* Building with PROSOPO_ALLOW_UNTRUSTED_EVENTS=1 opens the gate for that leg.
|
|
12
|
+
* Production builds pin the constant to false and the branch folds away, so
|
|
13
|
+
* the allowance cannot reach a shipped bundle.
|
|
14
|
+
*/
|
|
15
|
+
function isEventTrusted(event) {
|
|
16
|
+
if (event.isTrusted) return true;
|
|
17
|
+
return typeof __PROSOPO_ALLOW_UNTRUSTED_EVENTS__ !== "undefined" && __PROSOPO_ALLOW_UNTRUSTED_EVENTS__;
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
exports.isEventTrusted = isEventTrusted;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_providers = require("./providers.cjs");
|
|
3
|
+
const require_trust = require("./events/trust.cjs");
|
|
3
4
|
const require_builder = require("./state/builder.cjs");
|
|
4
5
|
const require_window = require("./elements/window.cjs");
|
|
5
6
|
const require_defaultCallbacks = require("./callbacks/defaultCallbacks.cjs");
|
|
@@ -23,6 +24,7 @@ exports.getProcaptchaRandomActiveProvider = require_providers.getProcaptchaRando
|
|
|
23
24
|
exports.getRetryDelayMs = require_providers.getRetryDelayMs;
|
|
24
25
|
exports.getSimdReadingsForSubmit = require_simdReadings.getSimdReadingsForSubmit;
|
|
25
26
|
exports.getWindowCallback = require_window.getWindowCallback;
|
|
27
|
+
exports.isEventTrusted = require_trust.isEventTrusted;
|
|
26
28
|
exports.isSecureBrowserContext = require_window.isSecureBrowserContext;
|
|
27
29
|
exports.pickIpMode = require_providers.pickIpMode;
|
|
28
30
|
exports.providerRetry = require_providers.providerRetry;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_trust = require("../events/trust.cjs");
|
|
2
3
|
let _prosopo_widget_skeleton = require("@prosopo/widget-skeleton");
|
|
3
4
|
let react = require("react");
|
|
4
5
|
let _emotion_react_jsx_runtime = require("@emotion/react/jsx-runtime");
|
|
@@ -14,20 +15,26 @@ var checkboxBefore = _emotion_react.css`{
|
|
|
14
15
|
width: 100%;
|
|
15
16
|
}
|
|
16
17
|
}`;
|
|
18
|
+
var checkboxForcedColors = _emotion_react.css`
|
|
19
|
+
@media (forced-colors: active) {
|
|
20
|
+
appearance: auto !important;
|
|
21
|
+
background-image: none !important;
|
|
22
|
+
}
|
|
23
|
+
`;
|
|
24
|
+
var CHECKBOX_SIZE = "28px";
|
|
17
25
|
var baseStyle = {
|
|
18
|
-
width:
|
|
19
|
-
height:
|
|
20
|
-
minWidth:
|
|
21
|
-
minHeight:
|
|
26
|
+
width: CHECKBOX_SIZE,
|
|
27
|
+
height: CHECKBOX_SIZE,
|
|
28
|
+
minWidth: CHECKBOX_SIZE,
|
|
29
|
+
minHeight: CHECKBOX_SIZE,
|
|
22
30
|
top: "auto",
|
|
23
31
|
left: "auto",
|
|
24
32
|
opacity: "1",
|
|
25
|
-
borderRadius: "12.5%",
|
|
26
33
|
appearance: "none",
|
|
27
34
|
cursor: "pointer",
|
|
28
35
|
margin: "0",
|
|
29
36
|
borderStyle: "solid",
|
|
30
|
-
borderWidth: "
|
|
37
|
+
borderWidth: "2px"
|
|
31
38
|
};
|
|
32
39
|
var ID_LETTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
33
40
|
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/";
|
|
@@ -35,13 +42,17 @@ var generateRandomId = () => {
|
|
|
35
42
|
return Array.from({ length: 8 }, () => ID_LETTERS[Math.floor(Math.random() * ID_LETTERS.length)]).join("");
|
|
36
43
|
};
|
|
37
44
|
var Checkbox = ({ theme, onChange, checked, labelText, error, loading }) => {
|
|
38
|
-
const checkboxStyleBase = {
|
|
39
|
-
...baseStyle,
|
|
40
|
-
border: `1px solid ${theme.palette.background.contrastText}`
|
|
41
|
-
};
|
|
42
45
|
const [hover, setHover] = (0, react.useState)(false);
|
|
46
|
+
const checkboxFocus = (0, react.useMemo)(() => _emotion_react.css`
|
|
47
|
+
&:focus-visible {
|
|
48
|
+
outline: 3px solid ${theme.palette.primary.main};
|
|
49
|
+
outline-offset: 2px;
|
|
50
|
+
}
|
|
51
|
+
`, [theme]);
|
|
43
52
|
const ResponsiveLabel = _emotion_styled.default.label`
|
|
44
|
-
|
|
53
|
+
/* The label sits on the widget surface, so it takes onSurface — not the
|
|
54
|
+
dialog container's on-colour. */
|
|
55
|
+
color: ${theme.palette.onSurface};
|
|
45
56
|
position: relative;
|
|
46
57
|
display: flex !important;
|
|
47
58
|
cursor: pointer;
|
|
@@ -65,14 +76,20 @@ var Checkbox = ({ theme, onChange, checked, labelText, error, loading }) => {
|
|
|
65
76
|
}
|
|
66
77
|
`;
|
|
67
78
|
const checkboxStyle = (0, react.useMemo)(() => {
|
|
79
|
+
const checkImage = `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='${encodeURIComponent(theme.palette.checkbox.tick)}' d='M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E")`;
|
|
80
|
+
const stateLayerColor = checked ? theme.palette.checkbox.fill : theme.palette.onSurface;
|
|
68
81
|
return {
|
|
69
|
-
...
|
|
70
|
-
borderColor: hover ? theme.palette.background.contrastText : theme.palette.border,
|
|
71
|
-
appearance: checked ? "auto" : "none",
|
|
72
|
-
flex: 1,
|
|
82
|
+
...baseStyle,
|
|
73
83
|
margin: "15px",
|
|
74
|
-
|
|
75
|
-
|
|
84
|
+
borderRadius: theme.shape.checkbox,
|
|
85
|
+
borderColor: checked ? theme.palette.checkbox.fill : theme.palette.checkbox.border,
|
|
86
|
+
backgroundColor: checked ? theme.palette.checkbox.fill : theme.palette.surface,
|
|
87
|
+
backgroundImage: checked ? checkImage : "none",
|
|
88
|
+
backgroundRepeat: "no-repeat",
|
|
89
|
+
backgroundPosition: "center",
|
|
90
|
+
backgroundSize: "20px 20px",
|
|
91
|
+
boxShadow: hover ? `0 0 0 10px ${(0, _prosopo_widget_skeleton.withAlpha)(stateLayerColor, theme.stateLayer.hover)}` : "none",
|
|
92
|
+
transition: "background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease"
|
|
76
93
|
};
|
|
77
94
|
}, [
|
|
78
95
|
hover,
|
|
@@ -94,12 +111,16 @@ var Checkbox = ({ theme, onChange, checked, labelText, error, loading }) => {
|
|
|
94
111
|
id,
|
|
95
112
|
onMouseEnter: () => setHover(true),
|
|
96
113
|
onMouseLeave: () => setHover(false),
|
|
97
|
-
css:
|
|
114
|
+
css: [
|
|
115
|
+
checkboxBefore,
|
|
116
|
+
checkboxForcedColors,
|
|
117
|
+
checkboxFocus
|
|
118
|
+
],
|
|
98
119
|
type: "checkbox",
|
|
99
120
|
"aria-live": "assertive",
|
|
100
121
|
"aria-label": labelText,
|
|
101
122
|
onKeyDown: (e) => {
|
|
102
|
-
if (!e
|
|
123
|
+
if (!require_trust.isEventTrusted(e)) return;
|
|
103
124
|
if (e.key === "Enter") {
|
|
104
125
|
e.preventDefault();
|
|
105
126
|
e.stopPropagation();
|
|
@@ -108,7 +129,7 @@ var Checkbox = ({ theme, onChange, checked, labelText, error, loading }) => {
|
|
|
108
129
|
}
|
|
109
130
|
},
|
|
110
131
|
onChange: (e) => {
|
|
111
|
-
if (!e
|
|
132
|
+
if (!require_trust.isEventTrusted(e)) return;
|
|
112
133
|
e.preventDefault();
|
|
113
134
|
e.stopPropagation();
|
|
114
135
|
setHover(false);
|
|
@@ -4,32 +4,36 @@ let _emotion_react_jsx_runtime = require("@emotion/react/jsx-runtime");
|
|
|
4
4
|
//#region src/reactComponents/Reload.tsx
|
|
5
5
|
var buttonStyleBase = {
|
|
6
6
|
border: "none",
|
|
7
|
-
|
|
8
|
-
paddingBottom: "6px",
|
|
7
|
+
padding: "8px",
|
|
9
8
|
cursor: "pointer",
|
|
10
|
-
height: "
|
|
11
|
-
width: "
|
|
9
|
+
height: "40px",
|
|
10
|
+
width: "40px",
|
|
12
11
|
borderRadius: "50%",
|
|
13
12
|
display: "flex"
|
|
14
13
|
};
|
|
15
14
|
var ReloadButton = ({ themeColor, onReload }) => {
|
|
16
15
|
const theme = (0, react.useMemo)(() => themeColor === "light" ? _prosopo_widget_skeleton.lightTheme : _prosopo_widget_skeleton.darkTheme, [themeColor]);
|
|
17
16
|
const [hover, setHover] = (0, react.useState)(false);
|
|
17
|
+
const [focusVisible, setFocusVisible] = (0, react.useState)(false);
|
|
18
18
|
const buttonStyle = (0, react.useMemo)(() => {
|
|
19
19
|
return {
|
|
20
20
|
...buttonStyleBase,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
...focusVisible ? {
|
|
22
|
+
outline: `3px solid ${theme.palette.primary.main}`,
|
|
23
|
+
outlineOffset: "2px"
|
|
24
|
+
} : {},
|
|
25
|
+
backgroundColor: hover ? theme.palette.primaryContainer.hover : theme.palette.primaryContainer.main,
|
|
26
|
+
color: theme.palette.primaryContainer.contrastText,
|
|
27
|
+
transition: "background-color 0.25s",
|
|
27
28
|
justifyContent: "center",
|
|
28
29
|
alignItems: "center",
|
|
29
|
-
margin: "0 auto"
|
|
30
|
-
backgroundColor: hover ? theme.palette.grey[700] : theme.palette.background.default
|
|
30
|
+
margin: "0 auto"
|
|
31
31
|
};
|
|
32
|
-
}, [
|
|
32
|
+
}, [
|
|
33
|
+
hover,
|
|
34
|
+
theme,
|
|
35
|
+
focusVisible
|
|
36
|
+
]);
|
|
33
37
|
return /* @__PURE__ */ (0, _emotion_react_jsx_runtime.jsx)("button", {
|
|
34
38
|
className: "reload-button",
|
|
35
39
|
"aria-label": "Reload",
|
|
@@ -37,13 +41,15 @@ var ReloadButton = ({ themeColor, onReload }) => {
|
|
|
37
41
|
style: buttonStyle,
|
|
38
42
|
onMouseEnter: () => setHover(true),
|
|
39
43
|
onMouseLeave: () => setHover(false),
|
|
44
|
+
onFocus: (e) => setFocusVisible(e.target.matches(":focus-visible")),
|
|
45
|
+
onBlur: () => setFocusVisible(false),
|
|
40
46
|
onClick: (e) => {
|
|
41
47
|
e.preventDefault();
|
|
42
48
|
onReload();
|
|
43
49
|
},
|
|
44
50
|
children: /* @__PURE__ */ (0, _emotion_react_jsx_runtime.jsxs)("svg", {
|
|
45
|
-
width: "
|
|
46
|
-
height: "
|
|
51
|
+
width: "24px",
|
|
52
|
+
height: "24px",
|
|
47
53
|
viewBox: "0 0 16 16",
|
|
48
54
|
version: "1.1",
|
|
49
55
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -51,7 +57,7 @@ var ReloadButton = ({ themeColor, onReload }) => {
|
|
|
51
57
|
style: { display: "flex" },
|
|
52
58
|
children: [/* @__PURE__ */ (0, _emotion_react_jsx_runtime.jsx)("title", { children: "reload" }), /* @__PURE__ */ (0, _emotion_react_jsx_runtime.jsx)("path", {
|
|
53
59
|
shapeRendering: "optimizeQuality",
|
|
54
|
-
fill:
|
|
60
|
+
fill: theme.palette.primaryContainer.contrastText,
|
|
55
61
|
transform: "scale(0.0416)",
|
|
56
62
|
d: "M234.666667,149.333333 L234.666667,106.666667 L314.564847,106.664112 C287.579138,67.9778918 242.745446,42.6666667 192,42.6666667 C109.525477,42.6666667 42.6666667,109.525477 42.6666667,192 C42.6666667,274.474523 109.525477,341.333333 192,341.333333 C268.201293,341.333333 331.072074,284.258623 340.195444,210.526102 L382.537159,215.817985 C370.807686,310.617565 289.973536,384 192,384 C85.961328,384 1.42108547e-14,298.038672 1.42108547e-14,192 C1.42108547e-14,85.961328 85.961328,1.42108547e-14 192,1.42108547e-14 C252.316171,1.42108547e-14 306.136355,27.8126321 341.335366,71.3127128 L341.333333,1.42108547e-14 L384,1.42108547e-14 L384,149.333333 L234.666667,149.333333 Z"
|
|
57
63
|
})]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust.d.ts","sourceRoot":"","sources":["../../src/events/trust.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC5B;AAeD,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAQ7D"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/events/trust.ts
|
|
2
|
+
/**
|
|
3
|
+
* Whether an event came from a real user rather than a script.
|
|
4
|
+
*
|
|
5
|
+
* The widget acts only on trusted input: a synthetic event is precisely how a
|
|
6
|
+
* bot drives a page, so honouring one would hand over the captcha for free.
|
|
7
|
+
*
|
|
8
|
+
* The single exception is the firefox cypress leg. cypress can only dispatch
|
|
9
|
+
* trusted input through the chrome devtools protocol, which it exposes for
|
|
10
|
+
* chromium browsers only, so on firefox every spec clicks synthetically.
|
|
11
|
+
* Building with PROSOPO_ALLOW_UNTRUSTED_EVENTS=1 opens the gate for that leg.
|
|
12
|
+
* Production builds pin the constant to false and the branch folds away, so
|
|
13
|
+
* the allowance cannot reach a shipped bundle.
|
|
14
|
+
*/
|
|
15
|
+
function isEventTrusted(event) {
|
|
16
|
+
if (event.isTrusted) return true;
|
|
17
|
+
return typeof __PROSOPO_ALLOW_UNTRUSTED_EVENTS__ !== "undefined" && __PROSOPO_ALLOW_UNTRUSTED_EVENTS__;
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { isEventTrusted };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/events/trust.ts"],"names":[],"mappings":"AAqCA,MAAM,UAAU,cAAc,CAAC,KAAqB;IACnD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,CACN,OAAO,kCAAkC,KAAK,WAAW;QACzD,kCAAkC,CAClC,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import "./_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { getProcaptchaRandomActiveProvider, getRetryDelayMs, pickIpMode, providerRetry } from "./providers.js";
|
|
3
|
+
import { isEventTrusted } from "./events/trust.js";
|
|
3
4
|
import { buildUpdateState, useProcaptcha } from "./state/builder.js";
|
|
4
5
|
import { getWindowCallback, isSecureBrowserContext } from "./elements/window.js";
|
|
5
6
|
import { getDefaultCallbacks, setUserCallbacks } from "./callbacks/defaultCallbacks.js";
|
|
@@ -10,4 +11,4 @@ import { ReloadButton } from "./reactComponents/Reload.js";
|
|
|
10
11
|
import { Checkbox } from "./reactComponents/Checkbox.js";
|
|
11
12
|
import { Honeypot } from "./reactComponents/Honeypot.js";
|
|
12
13
|
import { TestModeBanner } from "./reactComponents/TestModeBanner.js";
|
|
13
|
-
export { Checkbox, ExtensionLoader, Honeypot, ReloadButton, SIMD_READINGS_SUBMIT_TIMEOUT_MS, TestModeBanner, buildUpdateState, getDefaultCallbacks, getDefaultEvents, getProcaptchaRandomActiveProvider, getRetryDelayMs, getSimdReadingsForSubmit, getWindowCallback, isSecureBrowserContext, pickIpMode, providerRetry, setUserCallbacks, useProcaptcha };
|
|
14
|
+
export { Checkbox, ExtensionLoader, Honeypot, ReloadButton, SIMD_READINGS_SUBMIT_TIMEOUT_MS, TestModeBanner, buildUpdateState, getDefaultCallbacks, getDefaultEvents, getProcaptchaRandomActiveProvider, getRetryDelayMs, getSimdReadingsForSubmit, getWindowCallback, isEventTrusted, isSecureBrowserContext, pickIpMode, providerRetry, setUserCallbacks, useProcaptcha };
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/reactComponents/Checkbox.tsx"],"names":[],"mappings":"AAgBA,OAAO,EACN,KAAK,KAAK,
|
|
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,CAsJtC,CAAC;AACF,eAAe,QAAQ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isEventTrusted } from "../events/trust.js";
|
|
2
|
+
import { WIDGET_CHECKBOX_SPINNER_CSS_CLASS, withAlpha } from "@prosopo/widget-skeleton";
|
|
2
3
|
import { useMemo, useState } from "react";
|
|
3
4
|
import { jsx, jsxs } from "@emotion/react/jsx-runtime";
|
|
4
5
|
import { css } from "@emotion/react";
|
|
@@ -12,20 +13,26 @@ var checkboxBefore = css`{
|
|
|
12
13
|
width: 100%;
|
|
13
14
|
}
|
|
14
15
|
}`;
|
|
16
|
+
var checkboxForcedColors = css`
|
|
17
|
+
@media (forced-colors: active) {
|
|
18
|
+
appearance: auto !important;
|
|
19
|
+
background-image: none !important;
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
22
|
+
var CHECKBOX_SIZE = "28px";
|
|
15
23
|
var baseStyle = {
|
|
16
|
-
width:
|
|
17
|
-
height:
|
|
18
|
-
minWidth:
|
|
19
|
-
minHeight:
|
|
24
|
+
width: CHECKBOX_SIZE,
|
|
25
|
+
height: CHECKBOX_SIZE,
|
|
26
|
+
minWidth: CHECKBOX_SIZE,
|
|
27
|
+
minHeight: CHECKBOX_SIZE,
|
|
20
28
|
top: "auto",
|
|
21
29
|
left: "auto",
|
|
22
30
|
opacity: "1",
|
|
23
|
-
borderRadius: "12.5%",
|
|
24
31
|
appearance: "none",
|
|
25
32
|
cursor: "pointer",
|
|
26
33
|
margin: "0",
|
|
27
34
|
borderStyle: "solid",
|
|
28
|
-
borderWidth: "
|
|
35
|
+
borderWidth: "2px"
|
|
29
36
|
};
|
|
30
37
|
var ID_LETTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
31
38
|
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/";
|
|
@@ -33,13 +40,17 @@ var generateRandomId = () => {
|
|
|
33
40
|
return Array.from({ length: 8 }, () => ID_LETTERS[Math.floor(Math.random() * ID_LETTERS.length)]).join("");
|
|
34
41
|
};
|
|
35
42
|
var Checkbox = ({ theme, onChange, checked, labelText, error, loading }) => {
|
|
36
|
-
const checkboxStyleBase = {
|
|
37
|
-
...baseStyle,
|
|
38
|
-
border: `1px solid ${theme.palette.background.contrastText}`
|
|
39
|
-
};
|
|
40
43
|
const [hover, setHover] = useState(false);
|
|
44
|
+
const checkboxFocus = useMemo(() => css`
|
|
45
|
+
&:focus-visible {
|
|
46
|
+
outline: 3px solid ${theme.palette.primary.main};
|
|
47
|
+
outline-offset: 2px;
|
|
48
|
+
}
|
|
49
|
+
`, [theme]);
|
|
41
50
|
const ResponsiveLabel = styled.label`
|
|
42
|
-
|
|
51
|
+
/* The label sits on the widget surface, so it takes onSurface — not the
|
|
52
|
+
dialog container's on-colour. */
|
|
53
|
+
color: ${theme.palette.onSurface};
|
|
43
54
|
position: relative;
|
|
44
55
|
display: flex !important;
|
|
45
56
|
cursor: pointer;
|
|
@@ -63,14 +74,20 @@ var Checkbox = ({ theme, onChange, checked, labelText, error, loading }) => {
|
|
|
63
74
|
}
|
|
64
75
|
`;
|
|
65
76
|
const checkboxStyle = useMemo(() => {
|
|
77
|
+
const checkImage = `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='${encodeURIComponent(theme.palette.checkbox.tick)}' d='M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E")`;
|
|
78
|
+
const stateLayerColor = checked ? theme.palette.checkbox.fill : theme.palette.onSurface;
|
|
66
79
|
return {
|
|
67
|
-
...
|
|
68
|
-
borderColor: hover ? theme.palette.background.contrastText : theme.palette.border,
|
|
69
|
-
appearance: checked ? "auto" : "none",
|
|
70
|
-
flex: 1,
|
|
80
|
+
...baseStyle,
|
|
71
81
|
margin: "15px",
|
|
72
|
-
|
|
73
|
-
|
|
82
|
+
borderRadius: theme.shape.checkbox,
|
|
83
|
+
borderColor: checked ? theme.palette.checkbox.fill : theme.palette.checkbox.border,
|
|
84
|
+
backgroundColor: checked ? theme.palette.checkbox.fill : theme.palette.surface,
|
|
85
|
+
backgroundImage: checked ? checkImage : "none",
|
|
86
|
+
backgroundRepeat: "no-repeat",
|
|
87
|
+
backgroundPosition: "center",
|
|
88
|
+
backgroundSize: "20px 20px",
|
|
89
|
+
boxShadow: hover ? `0 0 0 10px ${withAlpha(stateLayerColor, theme.stateLayer.hover)}` : "none",
|
|
90
|
+
transition: "background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease"
|
|
74
91
|
};
|
|
75
92
|
}, [
|
|
76
93
|
hover,
|
|
@@ -92,12 +109,16 @@ var Checkbox = ({ theme, onChange, checked, labelText, error, loading }) => {
|
|
|
92
109
|
id,
|
|
93
110
|
onMouseEnter: () => setHover(true),
|
|
94
111
|
onMouseLeave: () => setHover(false),
|
|
95
|
-
css:
|
|
112
|
+
css: [
|
|
113
|
+
checkboxBefore,
|
|
114
|
+
checkboxForcedColors,
|
|
115
|
+
checkboxFocus
|
|
116
|
+
],
|
|
96
117
|
type: "checkbox",
|
|
97
118
|
"aria-live": "assertive",
|
|
98
119
|
"aria-label": labelText,
|
|
99
120
|
onKeyDown: (e) => {
|
|
100
|
-
if (!e
|
|
121
|
+
if (!isEventTrusted(e)) return;
|
|
101
122
|
if (e.key === "Enter") {
|
|
102
123
|
e.preventDefault();
|
|
103
124
|
e.stopPropagation();
|
|
@@ -106,7 +127,7 @@ var Checkbox = ({ theme, onChange, checked, labelText, error, loading }) => {
|
|
|
106
127
|
}
|
|
107
128
|
},
|
|
108
129
|
onChange: (e) => {
|
|
109
|
-
if (!e
|
|
130
|
+
if (!isEventTrusted(e)) return;
|
|
110
131
|
e.preventDefault();
|
|
111
132
|
e.stopPropagation();
|
|
112
133
|
setHover(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/reactComponents/Checkbox.tsx"],"names":[],"mappings":";AAcA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAEN,iCAAiC,
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/reactComponents/Checkbox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Reload.d.ts","sourceRoot":"","sources":["../../src/reactComponents/Reload.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,EAAE,EAAqB,MAAM,OAAO,CAAC;AAE9E,UAAU,iBAAkB,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,UAAU,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AAaD,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"Reload.d.ts","sourceRoot":"","sources":["../../src/reactComponents/Reload.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,EAAE,EAAqB,MAAM,OAAO,CAAC;AAE9E,UAAU,iBAAkB,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,UAAU,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AAaD,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAoE9C,CAAC"}
|