@sparqjs/captcha-runtime 0.2.2 → 0.2.3
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/dist/host/basic-layout.d.ts +3 -0
- package/dist/host/basic-layout.d.ts.map +1 -1
- package/dist/host/basic-layout.js +25 -2
- package/dist/host/basic-layout.js.map +1 -1
- package/dist/host/image-text-renderer.d.ts.map +1 -1
- package/dist/host/image-text-renderer.js +4 -1
- package/dist/host/image-text-renderer.js.map +1 -1
- package/package.json +1 -1
- package/src/style.css +137 -51
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { CaptchaLayout, RuntimeState } from '../types';
|
|
2
|
+
type CaptchaIconName = 'refresh' | 'close';
|
|
3
|
+
export declare function captchaIconPathData(name: CaptchaIconName): readonly string[];
|
|
2
4
|
export declare function captchaStatusText(state: RuntimeState): string;
|
|
3
5
|
export declare const inlineLayout: CaptchaLayout;
|
|
4
6
|
export declare const modalLayout: CaptchaLayout;
|
|
7
|
+
export {};
|
|
5
8
|
//# sourceMappingURL=basic-layout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic-layout.d.ts","sourceRoot":"","sources":["../../src/host/basic-layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAsC,YAAY,EAAE,MAAM,UAAU,CAAA;AAI/F,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAI7D;
|
|
1
|
+
{"version":3,"file":"basic-layout.d.ts","sourceRoot":"","sources":["../../src/host/basic-layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAsC,YAAY,EAAE,MAAM,UAAU,CAAA;AAI/F,KAAK,eAAe,GAAG,SAAS,GAAG,OAAO,CAAA;AAO1C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,GAAG,SAAS,MAAM,EAAE,CAE5E;AAkBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAI7D;AA6HD,eAAO,MAAM,YAAY,eAA6C,CAAA;AACtE,eAAO,MAAM,WAAW,eAA2C,CAAA"}
|
|
@@ -1,4 +1,26 @@
|
|
|
1
1
|
let layoutSequence = 0;
|
|
2
|
+
const captchaIconPaths = {
|
|
3
|
+
refresh: ['M20 11a8 8 0 1 0-2.34 5.66', 'M20 4v7h-7'],
|
|
4
|
+
close: ['M18 6 6 18', 'M6 6 18 18'],
|
|
5
|
+
};
|
|
6
|
+
export function captchaIconPathData(name) {
|
|
7
|
+
return captchaIconPaths[name];
|
|
8
|
+
}
|
|
9
|
+
function createCaptchaIcon(name) {
|
|
10
|
+
const namespace = 'http://www.w3.org/2000/svg';
|
|
11
|
+
const icon = document.createElementNS(namespace, 'svg');
|
|
12
|
+
icon.classList.add('sparq-captcha-modal__icon');
|
|
13
|
+
icon.setAttribute('viewBox', '0 0 24 24');
|
|
14
|
+
icon.setAttribute('aria-hidden', 'true');
|
|
15
|
+
icon.setAttribute('focusable', 'false');
|
|
16
|
+
icon.setAttribute('data-captcha-icon', name);
|
|
17
|
+
for (const data of captchaIconPathData(name)) {
|
|
18
|
+
const path = document.createElementNS(namespace, 'path');
|
|
19
|
+
path.setAttribute('d', data);
|
|
20
|
+
icon.append(path);
|
|
21
|
+
}
|
|
22
|
+
return icon;
|
|
23
|
+
}
|
|
2
24
|
export function captchaStatusText(state) {
|
|
3
25
|
if (state === 'verifying')
|
|
4
26
|
return '正在验证…';
|
|
@@ -37,16 +59,16 @@ function createLayout(key, modal) {
|
|
|
37
59
|
const refresh = document.createElement('button');
|
|
38
60
|
refresh.type = 'button';
|
|
39
61
|
refresh.className = 'sparq-captcha-modal__icon-button';
|
|
40
|
-
refresh.textContent = '↻';
|
|
41
62
|
refresh.setAttribute('aria-label', '刷新验证码');
|
|
42
63
|
refresh.title = '刷新验证码';
|
|
64
|
+
refresh.append(createCaptchaIcon('refresh'));
|
|
43
65
|
refresh.addEventListener('click', () => void context.refresh().catch(() => undefined));
|
|
44
66
|
const close = document.createElement('button');
|
|
45
67
|
close.type = 'button';
|
|
46
68
|
close.className = 'sparq-captcha-modal__icon-button';
|
|
47
|
-
close.textContent = '×';
|
|
48
69
|
close.setAttribute('aria-label', '关闭验证码');
|
|
49
70
|
close.title = '关闭验证码';
|
|
71
|
+
close.append(createCaptchaIcon('close'));
|
|
50
72
|
close.addEventListener('click', context.cancel);
|
|
51
73
|
headerActions.append(refresh, close);
|
|
52
74
|
header.append(title, headerActions);
|
|
@@ -59,6 +81,7 @@ function createLayout(key, modal) {
|
|
|
59
81
|
const actions = document.createElement('div');
|
|
60
82
|
const submit = document.createElement('button');
|
|
61
83
|
submit.type = 'button';
|
|
84
|
+
submit.className = 'sparq-captcha-submit';
|
|
62
85
|
submit.textContent = '继续';
|
|
63
86
|
submit.addEventListener('click', () => void context.submit());
|
|
64
87
|
if (context.submission === 'layout')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic-layout.js","sourceRoot":"","sources":["../../src/host/basic-layout.ts"],"names":[],"mappings":"AAEA,IAAI,cAAc,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"basic-layout.js","sourceRoot":"","sources":["../../src/host/basic-layout.ts"],"names":[],"mappings":"AAEA,IAAI,cAAc,GAAG,CAAC,CAAA;AAItB,MAAM,gBAAgB,GAA+C;IACjE,OAAO,EAAE,CAAC,4BAA4B,EAAE,YAAY,CAAC;IACrD,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;CACtC,CAAA;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAqB;IACrD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAqB;IAC5C,MAAM,SAAS,GAAG,4BAA4B,CAAA;IAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACvD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;IAC/C,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IACzC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IACxC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACvC,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAA;IAC5C,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACxD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC;IACD,OAAO,IAAI,CAAA;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAmB;IACjD,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,OAAO,CAAA;IACzC,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAA;IACrC,OAAO,EAAE,CAAA;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAiB;IACxC,OAAO,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,gBAAgB,CACjB,2IAA2I,CAC9I,CACJ,CAAA;AACL,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,KAAc;IAC7C,OAAO;QACH,GAAG;QACH,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACrC,KAAK,CAAC,SAAsB,EAAE,OAAsB;YAChD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,YAAY,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAA;YAC5G,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;YAC1C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,2BAA2B,CAAA;YAC/E,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;YACjD,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,sBAAsB,CAAA;YAC1E,MAAM,OAAO,GAAG,uBAAuB,EAAE,cAAc,EAAE,CAAA;YACzD,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;gBACtC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;gBAC1C,OAAO,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;gBAChD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAA;YACzB,CAAC;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;YAC1C,KAAK,CAAC,EAAE,GAAG,OAAO,CAAA;YAClB,KAAK,CAAC,WAAW,GAAG,SAAS,CAAA;YAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YAC/C,MAAM,CAAC,SAAS,GAAG,6BAA6B,CAAA;YAChD,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;YACnD,aAAa,CAAC,SAAS,GAAG,8BAA8B,CAAA;YACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YAChD,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAA;YACvB,OAAO,CAAC,SAAS,GAAG,kCAAkC,CAAA;YACtD,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;YAC3C,OAAO,CAAC,KAAK,GAAG,OAAO,CAAA;YACvB,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAA;YAC5C,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;YACtF,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YAC9C,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAA;YACrB,KAAK,CAAC,SAAS,GAAG,kCAAkC,CAAA;YACpD,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;YACzC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAA;YACrB,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAA;YACxC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;YAC/C,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YACpC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;YACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;YAC/C,SAAS,CAAC,SAAS,GAAG,yBAAyB,CAAA;YAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YAC1C,MAAM,CAAC,SAAS,GAAG,sBAAsB,CAAA;YACzC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YACrC,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;YAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YAC/C,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAA;YACtB,MAAM,CAAC,SAAS,GAAG,sBAAsB,CAAA;YACzC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAA;YACzB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;YAC7D,IAAI,OAAO,CAAC,UAAU,KAAK,QAAQ;gBAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC3D,IAAI,KAAK;gBAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACjC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YACjC,IAAI,OAAO,CAAC,iBAAiB,GAAG,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACpB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACtB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;YAEhC,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC5C,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;gBACrB,MAAM,IAAI,GAAG,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,WAAW,CAAA;gBACtF,MAAM,eAAe,GAAG,IAAI,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAA;gBAC/F,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC/C,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACtB,OAAO,CAAC,QAAQ,GAAG,IAAI,IAAI,KAAK,KAAK,QAAQ,CAAA;gBAC7C,KAAK,CAAC,QAAQ,GAAG,KAAK,KAAK,QAAQ,CAAA;gBACnC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;gBACnD,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,KAAK,WAAW,CAAC,CAAA;gBAC/D,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAA;gBACzD,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,kBAAkB,CAAC,CAAA;gBACnE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,KAAK,YAAY,CAAC,CAAA;gBACjE,MAAM,CAAC,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;YACF,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAE,EAAE;gBACvC,IAAI,CAAC,KAAK;oBAAE,OAAM;gBAClB,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;oBACzB,KAAK,CAAC,cAAc,EAAE,CAAA;oBACtB,OAAO,CAAC,MAAM,EAAE,CAAA;oBAChB,OAAM;gBACV,CAAC;gBACD,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK;oBAAE,OAAM;gBAC/B,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAA;gBAC5C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,KAAK,CAAC,cAAc,EAAE,CAAA;oBACtB,OAAO,CAAC,KAAK,EAAE,CAAA;oBACf,OAAM;gBACV,CAAC;gBACD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;gBAC1B,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;gBAC5C,IAAI,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;oBACrD,KAAK,CAAC,cAAc,EAAE,CAAA;oBACtB,IAAI,CAAC,KAAK,EAAE,CAAA;gBAChB,CAAC;qBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;oBAC5D,KAAK,CAAC,cAAc,EAAE,CAAA;oBACtB,KAAK,CAAC,KAAK,EAAE,CAAA;gBACjB,CAAC;YACL,CAAC,CAAA;YACD,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YAC9C,IAAI,KAAK;gBAAE,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;YACnF,OAAO;gBACH,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS;gBACvB,OAAO,EAAE,GAAG,EAAE;oBACV,WAAW,EAAE,CAAA;oBACb,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;oBACjD,IAAI,CAAC,MAAM,EAAE,CAAA;oBACb,IAAI,KAAK,IAAI,iBAAiB,EAAE,WAAW;wBAAE,iBAAiB,CAAC,KAAK,EAAE,CAAA;gBAC1E,CAAC;aACJ,CAAA;QACL,CAAC;KACJ,CAAA;AACL,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAA;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-text-renderer.d.ts","sourceRoot":"","sources":["../../src/host/image-text-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA2D,MAAM,UAAU,CAAA;AAExG,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"image-text-renderer.d.ts","sourceRoot":"","sources":["../../src/host/image-text-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA2D,MAAM,UAAU,CAAA;AAExG,eAAO,MAAM,iBAAiB,EAAE,eA0D/B,CAAA"}
|
|
@@ -40,7 +40,10 @@ export const imageTextRenderer = {
|
|
|
40
40
|
imageButton.disabled = true;
|
|
41
41
|
imageButton.classList.add('is-refreshing');
|
|
42
42
|
imageButton.setAttribute('aria-busy', 'true');
|
|
43
|
-
void callbacks
|
|
43
|
+
void callbacks
|
|
44
|
+
.refresh()
|
|
45
|
+
.catch(() => undefined)
|
|
46
|
+
.finally(() => {
|
|
44
47
|
refreshing = false;
|
|
45
48
|
imageButton.disabled = false;
|
|
46
49
|
imageButton.classList.remove('is-refreshing');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-text-renderer.js","sourceRoot":"","sources":["../../src/host/image-text-renderer.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAC9C,GAAG,EAAE,yBAAyB;IAC9B,OAAO,EAAE,CAAC;IACV,KAAK,CAAC,SAAsB,EAAE,IAAmB,EAAE,SAA4B;QAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC7C,OAAO,CAAC,SAAS,GAAG,0BAA0B,CAAA;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAC7C,KAAK,CAAC,IAAI,GAAG,MAAM,CAAA;QACnB,KAAK,CAAC,SAAS,GAAG,SAAS,CAAA;QAC3B,KAAK,CAAC,YAAY,GAAG,KAAK,CAAA;QAC1B,KAAK,CAAC,SAAS,GAAG,CAAC,CAAA;QACnB,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;QACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QACpD,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAA;QAC3B,WAAW,CAAC,SAAS,GAAG,4BAA4B,CAAA;QACpD,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAC/C,WAAW,CAAC,KAAK,GAAG,SAAS,CAAA;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC3C,KAAK,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAA;QACxF,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAA;QACxB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QAClC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACzB,IAAI,UAAU,GAAG,KAAK,CAAA;QACtB,MAAM,WAAW,GAAG,CAAC,QAAuB,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;YAC3C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC7B,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAA;gBACnD,OAAM;YACV,CAAC;YACD,KAAK,CAAC,GAAG,GAAG,MAAM,CAAA;YAClB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAA;QACpB,CAAC,CAAA;QACD,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;QAC1D,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAA;QAC7D,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACvC,IAAI,UAAU;gBAAE,OAAM;YACtB,UAAU,GAAG,IAAI,CAAA;YACjB,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAA;YAC3B,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;YAC1C,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;YAC7C,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"image-text-renderer.js","sourceRoot":"","sources":["../../src/host/image-text-renderer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/style.css
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
.sparq-captcha-runtime {
|
|
2
|
-
|
|
2
|
+
/*
|
|
3
|
+
* 宿主通过 --sparq-captcha-color-*、radius、shadow 和 focus 映射自身主题。
|
|
4
|
+
* control-height 与 image-width 控制各 Renderer 共用的尺寸节奏;inline-* 只调整内联容器结构。
|
|
5
|
+
* 每个使用点都保留独立运行时的默认值,使变量能够从 Shadow DOM 宿主继承而不被本层覆盖。
|
|
6
|
+
*/
|
|
7
|
+
color: var(--sparq-captcha-color-text, #1f2937);
|
|
3
8
|
font-family: system-ui, sans-serif;
|
|
4
9
|
font-size: 14px;
|
|
5
10
|
line-height: 1.5;
|
|
@@ -13,7 +18,7 @@
|
|
|
13
18
|
place-items: center;
|
|
14
19
|
overflow: auto;
|
|
15
20
|
padding: 16px;
|
|
16
|
-
background: rgb(17 24 39 / 46%);
|
|
21
|
+
background: var(--sparq-captcha-color-backdrop, rgb(17 24 39 / 46%));
|
|
17
22
|
}
|
|
18
23
|
|
|
19
24
|
.sparq-captcha-modal,
|
|
@@ -21,13 +26,21 @@
|
|
|
21
26
|
width: min(100%, 360px);
|
|
22
27
|
box-sizing: border-box;
|
|
23
28
|
padding: 20px;
|
|
24
|
-
border: 1px solid #d1d5db;
|
|
25
|
-
border-radius: 6px;
|
|
26
|
-
background: #ffffff;
|
|
29
|
+
border: 1px solid var(--sparq-captcha-color-border, #d1d5db);
|
|
30
|
+
border-radius: var(--sparq-captcha-radius, 6px);
|
|
31
|
+
background: var(--sparq-captcha-color-surface, #ffffff);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.sparq-captcha-inline {
|
|
35
|
+
width: var(--sparq-captcha-inline-width, min(100%, 360px));
|
|
36
|
+
padding: var(--sparq-captcha-inline-padding, 20px);
|
|
37
|
+
border-width: var(--sparq-captcha-inline-border-width, 1px);
|
|
38
|
+
background: var(--sparq-captcha-inline-background, var(--sparq-captcha-color-surface, #ffffff));
|
|
39
|
+
box-shadow: var(--sparq-captcha-inline-shadow, none);
|
|
27
40
|
}
|
|
28
41
|
|
|
29
42
|
.sparq-captcha-modal {
|
|
30
|
-
box-shadow: 0 16px 36px rgb(17 24 39 / 20%);
|
|
43
|
+
box-shadow: var(--sparq-captcha-shadow, 0 16px 36px rgb(17 24 39 / 20%));
|
|
31
44
|
}
|
|
32
45
|
|
|
33
46
|
.sparq-captcha-modal__header {
|
|
@@ -41,13 +54,13 @@
|
|
|
41
54
|
.sparq-captcha-modal__actions {
|
|
42
55
|
display: flex;
|
|
43
56
|
flex: 0 0 auto;
|
|
44
|
-
gap:
|
|
57
|
+
gap: 4px;
|
|
45
58
|
}
|
|
46
59
|
|
|
47
60
|
.sparq-captcha-modal h2,
|
|
48
61
|
.sparq-captcha-inline h2 {
|
|
49
62
|
margin: 0;
|
|
50
|
-
color: #111827;
|
|
63
|
+
color: var(--sparq-captcha-color-title, #111827);
|
|
51
64
|
font-size: 18px;
|
|
52
65
|
font-weight: 600;
|
|
53
66
|
letter-spacing: 0;
|
|
@@ -60,18 +73,18 @@
|
|
|
60
73
|
}
|
|
61
74
|
|
|
62
75
|
.sparq-captcha-image-text {
|
|
63
|
-
grid-template-columns: minmax(0, 1fr)
|
|
76
|
+
grid-template-columns: minmax(0, 1fr) var(--sparq-captcha-image-width, 144px);
|
|
64
77
|
align-items: center;
|
|
65
78
|
gap: 10px;
|
|
66
79
|
}
|
|
67
80
|
|
|
68
81
|
.sparq-captcha-status {
|
|
69
82
|
margin: 12px 0 0;
|
|
70
|
-
color: #b42318;
|
|
83
|
+
color: var(--sparq-captcha-color-danger, #b42318);
|
|
71
84
|
}
|
|
72
85
|
|
|
73
86
|
.sparq-captcha-modal.is-passed .sparq-captcha-status {
|
|
74
|
-
color: #157347;
|
|
87
|
+
color: var(--sparq-captcha-color-success, #157347);
|
|
75
88
|
}
|
|
76
89
|
|
|
77
90
|
.sparq-captcha-modal.is-verifying .sparq-captcha-challenge {
|
|
@@ -85,15 +98,23 @@
|
|
|
85
98
|
.sparq-captcha-image-button {
|
|
86
99
|
position: relative;
|
|
87
100
|
display: block;
|
|
88
|
-
width: 144px;
|
|
89
|
-
height:
|
|
101
|
+
width: var(--sparq-captcha-image-width, 144px);
|
|
102
|
+
height: var(--sparq-captcha-control-height, 44px);
|
|
90
103
|
box-sizing: border-box;
|
|
91
104
|
padding: 0;
|
|
92
|
-
border: 1px solid #d1d5db;
|
|
93
|
-
border-radius:
|
|
105
|
+
border: 1px solid var(--sparq-captcha-color-border, #d1d5db);
|
|
106
|
+
border-radius: var(--sparq-captcha-radius, 6px);
|
|
94
107
|
overflow: hidden;
|
|
95
|
-
background: #
|
|
108
|
+
background: var(--sparq-captcha-color-surface-soft, #f3f4f6);
|
|
96
109
|
cursor: pointer;
|
|
110
|
+
transition:
|
|
111
|
+
border-color 180ms ease,
|
|
112
|
+
box-shadow 180ms ease,
|
|
113
|
+
opacity 180ms ease;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.sparq-captcha-image-button:hover:not(:disabled) {
|
|
117
|
+
border-color: var(--sparq-captcha-color-border-strong, #9ca3af);
|
|
97
118
|
}
|
|
98
119
|
|
|
99
120
|
.sparq-captcha-image-button.is-refreshing img {
|
|
@@ -108,8 +129,8 @@
|
|
|
108
129
|
height: 18px;
|
|
109
130
|
box-sizing: border-box;
|
|
110
131
|
margin: -9px 0 0 -9px;
|
|
111
|
-
border: 2px solid
|
|
112
|
-
border-top-color: #2563eb;
|
|
132
|
+
border: 2px solid var(--sparq-captcha-color-surface, #ffffff);
|
|
133
|
+
border-top-color: var(--sparq-captcha-color-primary, #2563eb);
|
|
113
134
|
border-radius: 50%;
|
|
114
135
|
animation: sparq-captcha-spin 720ms linear infinite;
|
|
115
136
|
content: '';
|
|
@@ -133,23 +154,47 @@
|
|
|
133
154
|
}
|
|
134
155
|
}
|
|
135
156
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
.sparq-captcha-modal .sparq-captcha-modal__icon-button.is-refreshing {
|
|
139
|
-
animation-duration: 0ms;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
.sparq-captcha-image-text input {
|
|
157
|
+
.sparq-captcha-image-text input,
|
|
158
|
+
.sparq-captcha-question-answer input {
|
|
144
159
|
width: 100%;
|
|
145
160
|
min-width: 0;
|
|
146
|
-
min-height:
|
|
161
|
+
min-height: var(--sparq-captcha-control-height, 44px);
|
|
147
162
|
box-sizing: border-box;
|
|
148
163
|
padding: 8px 10px;
|
|
149
|
-
border: 1px solid #
|
|
150
|
-
border-radius:
|
|
151
|
-
|
|
164
|
+
border: 1px solid var(--sparq-captcha-color-border, #d1d5db);
|
|
165
|
+
border-radius: var(--sparq-captcha-radius, 6px);
|
|
166
|
+
outline: 0;
|
|
167
|
+
color: var(--sparq-captcha-color-text, #1f2937);
|
|
168
|
+
background: var(--sparq-captcha-color-surface, #ffffff);
|
|
152
169
|
font: inherit;
|
|
170
|
+
transition:
|
|
171
|
+
border-color 180ms ease,
|
|
172
|
+
box-shadow 180ms ease,
|
|
173
|
+
background-color 180ms ease;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.sparq-captcha-image-text input:hover:not(:disabled),
|
|
177
|
+
.sparq-captcha-question-answer input:hover:not(:disabled) {
|
|
178
|
+
border-color: var(--sparq-captcha-color-border-strong, #9ca3af);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.sparq-captcha-image-text input:focus,
|
|
182
|
+
.sparq-captcha-question-answer input:focus {
|
|
183
|
+
border-color: var(--sparq-captcha-color-primary, #2563eb);
|
|
184
|
+
box-shadow: var(--sparq-captcha-focus, 0 0 0 3px rgb(37 99 235 / 22%));
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.sparq-captcha-image-text input:disabled,
|
|
188
|
+
.sparq-captcha-question-answer input:disabled {
|
|
189
|
+
color: var(--sparq-captcha-color-muted, #6b7280);
|
|
190
|
+
background: var(--sparq-captcha-color-surface-soft, #f3f4f6);
|
|
191
|
+
cursor: not-allowed;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.sparq-captcha-image-text input::placeholder,
|
|
195
|
+
.sparq-captcha-question-answer input::placeholder {
|
|
196
|
+
color: var(--sparq-captcha-color-muted, #6b7280);
|
|
197
|
+
opacity: 1;
|
|
153
198
|
}
|
|
154
199
|
|
|
155
200
|
.sparq-captcha-modal > div:last-child,
|
|
@@ -162,37 +207,74 @@
|
|
|
162
207
|
|
|
163
208
|
.sparq-captcha-modal button,
|
|
164
209
|
.sparq-captcha-inline button {
|
|
165
|
-
min-height:
|
|
166
|
-
padding:
|
|
167
|
-
border: 1px solid #9ca3af;
|
|
168
|
-
border-radius:
|
|
169
|
-
background: #ffffff;
|
|
170
|
-
color: #111827;
|
|
210
|
+
min-height: var(--sparq-captcha-control-height, 44px);
|
|
211
|
+
padding: 8px 14px;
|
|
212
|
+
border: 1px solid var(--sparq-captcha-color-border-strong, #9ca3af);
|
|
213
|
+
border-radius: var(--sparq-captcha-radius, 6px);
|
|
214
|
+
background: var(--sparq-captcha-color-surface, #ffffff);
|
|
215
|
+
color: var(--sparq-captcha-color-title, #111827);
|
|
171
216
|
cursor: pointer;
|
|
172
217
|
font: inherit;
|
|
218
|
+
transition:
|
|
219
|
+
border-color 180ms ease,
|
|
220
|
+
background-color 180ms ease,
|
|
221
|
+
color 180ms ease,
|
|
222
|
+
box-shadow 180ms ease;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.sparq-captcha-modal button:hover:not(:disabled),
|
|
226
|
+
.sparq-captcha-inline button:hover:not(:disabled) {
|
|
227
|
+
border-color: var(--sparq-captcha-color-primary, #2563eb);
|
|
228
|
+
background: var(--sparq-captcha-color-surface-soft, #f3f4f6);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.sparq-captcha-modal .sparq-captcha-submit,
|
|
232
|
+
.sparq-captcha-inline .sparq-captcha-submit {
|
|
233
|
+
border-color: var(--sparq-captcha-color-primary, #2563eb);
|
|
234
|
+
background: var(--sparq-captcha-color-primary, #2563eb);
|
|
235
|
+
color: var(--sparq-captcha-color-primary-contrast, #ffffff);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.sparq-captcha-modal .sparq-captcha-submit:hover:not(:disabled),
|
|
239
|
+
.sparq-captcha-inline .sparq-captcha-submit:hover:not(:disabled) {
|
|
240
|
+
background: color-mix(
|
|
241
|
+
in srgb,
|
|
242
|
+
var(--sparq-captcha-color-primary, #2563eb) 88%,
|
|
243
|
+
var(--sparq-captcha-color-title, #111827)
|
|
244
|
+
);
|
|
173
245
|
}
|
|
174
246
|
|
|
175
247
|
.sparq-captcha-modal .sparq-captcha-modal__icon-button {
|
|
176
248
|
display: inline-grid;
|
|
177
|
-
width: 44px;
|
|
178
|
-
height: 44px;
|
|
179
|
-
min-height: 44px;
|
|
249
|
+
width: var(--sparq-captcha-control-height, 44px);
|
|
250
|
+
height: var(--sparq-captcha-control-height, 44px);
|
|
251
|
+
min-height: var(--sparq-captcha-control-height, 44px);
|
|
180
252
|
place-items: center;
|
|
181
253
|
padding: 0;
|
|
182
254
|
border-color: transparent;
|
|
183
255
|
background: transparent;
|
|
184
|
-
color: #
|
|
185
|
-
font-size: 24px;
|
|
256
|
+
color: var(--sparq-captcha-color-muted, #6b7280);
|
|
186
257
|
line-height: 1;
|
|
187
258
|
}
|
|
188
259
|
|
|
189
260
|
.sparq-captcha-modal .sparq-captcha-modal__icon-button:hover:not(:disabled) {
|
|
190
|
-
border-color: #d1d5db;
|
|
191
|
-
background: #f3f4f6;
|
|
192
|
-
color: #111827;
|
|
261
|
+
border-color: var(--sparq-captcha-color-border, #d1d5db);
|
|
262
|
+
background: var(--sparq-captcha-color-surface-soft, #f3f4f6);
|
|
263
|
+
color: var(--sparq-captcha-color-title, #111827);
|
|
193
264
|
}
|
|
194
265
|
|
|
195
|
-
.sparq-captcha-
|
|
266
|
+
.sparq-captcha-modal__icon {
|
|
267
|
+
display: block;
|
|
268
|
+
width: 18px;
|
|
269
|
+
height: 18px;
|
|
270
|
+
fill: none;
|
|
271
|
+
stroke: currentColor;
|
|
272
|
+
stroke-linecap: round;
|
|
273
|
+
stroke-linejoin: round;
|
|
274
|
+
stroke-width: 2;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.sparq-captcha-modal .sparq-captcha-modal__icon-button.is-refreshing .sparq-captcha-modal__icon {
|
|
196
278
|
animation: sparq-captcha-spin 720ms linear infinite;
|
|
197
279
|
}
|
|
198
280
|
|
|
@@ -211,13 +293,17 @@
|
|
|
211
293
|
.sparq-captcha-modal :focus-visible,
|
|
212
294
|
.sparq-captcha-inline :focus-visible,
|
|
213
295
|
.sparq-captcha-image-button:focus-visible {
|
|
214
|
-
outline:
|
|
215
|
-
|
|
296
|
+
outline: 0;
|
|
297
|
+
border-color: var(--sparq-captcha-color-primary, #2563eb);
|
|
298
|
+
box-shadow: var(--sparq-captcha-focus, 0 0 0 3px rgb(37 99 235 / 22%));
|
|
216
299
|
}
|
|
217
300
|
|
|
218
|
-
@media (
|
|
219
|
-
.sparq-captcha-
|
|
220
|
-
|
|
221
|
-
|
|
301
|
+
@media (prefers-reduced-motion: reduce) {
|
|
302
|
+
.sparq-captcha-runtime *,
|
|
303
|
+
.sparq-captcha-runtime *::before,
|
|
304
|
+
.sparq-captcha-runtime *::after {
|
|
305
|
+
transition-duration: 0.01ms !important;
|
|
306
|
+
animation-duration: 0.01ms !important;
|
|
307
|
+
animation-iteration-count: 1 !important;
|
|
222
308
|
}
|
|
223
309
|
}
|