@solar-angular/ui-sun 19.3.4 → 20.0.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.
- package/enter-focus-next/index.d.ts +10 -0
- package/fesm2022/solar-angular-ui-sun-enter-focus-next.mjs +45 -0
- package/fesm2022/solar-angular-ui-sun-enter-focus-next.mjs.map +1 -0
- package/fesm2022/solar-angular-ui-sun-nav-progress-bar.mjs +3 -3
- package/fesm2022/solar-angular-ui-sun-nav-progress-bar.mjs.map +1 -1
- package/fesm2022/solar-angular-ui-sun-slider-captcha.mjs +13 -13
- package/fesm2022/solar-angular-ui-sun-slider-captcha.mjs.map +1 -1
- package/fesm2022/solar-angular-ui-sun.mjs.map +1 -1
- package/index.d.ts +2 -2
- package/nav-progress-bar/index.d.ts +9 -1
- package/package.json +10 -5
- package/slider-captcha/index.d.ts +59 -1
- package/nav-progress-bar/nav-progress-bar.component.d.ts +0 -6
- package/slider-captcha/slider-captcha.component.d.ts +0 -56
- package/slider-captcha/utils.d.ts +0 -7
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
|
|
3
|
+
declare class SunEnterFocusNext {
|
|
4
|
+
private readonly element;
|
|
5
|
+
onKeyDown(event: KeyboardEvent): void;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SunEnterFocusNext, never>;
|
|
7
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SunEnterFocusNext, "[sunEnterFocusNext]", never, {}, {}, never, never, true, never>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { SunEnterFocusNext };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ENTER } from '@angular/cdk/keycodes';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { inject, ElementRef, Directive } from '@angular/core';
|
|
4
|
+
|
|
5
|
+
class SunEnterFocusNext {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.element = inject(ElementRef);
|
|
8
|
+
}
|
|
9
|
+
onKeyDown(event) {
|
|
10
|
+
const target = event.target;
|
|
11
|
+
// 如果触发事件的是 input 标签,且按下了 Enter 键
|
|
12
|
+
if (target instanceof HTMLInputElement && event.keyCode === ENTER) {
|
|
13
|
+
event.preventDefault();
|
|
14
|
+
// 此时可能会有子组件的事件监听器也在监听 keydown 事件,先让它们执行完,以确保 DOM 更新完成
|
|
15
|
+
// 延迟执行以确保能够获取到最新的可用 input 元素
|
|
16
|
+
setTimeout(() => {
|
|
17
|
+
// 获取当前容器内所有可用的 input
|
|
18
|
+
const inputs = Array.from(this.element.nativeElement.querySelectorAll('input:not([disabled]):not([readonly])'));
|
|
19
|
+
const currentIndex = inputs.indexOf(target);
|
|
20
|
+
// 如果不是最后一个,就聚焦到下一个
|
|
21
|
+
if (currentIndex < inputs.length - 1) {
|
|
22
|
+
inputs[currentIndex + 1].focus();
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SunEnterFocusNext, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
28
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.9", type: SunEnterFocusNext, isStandalone: true, selector: "[sunEnterFocusNext]", host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0 }); }
|
|
29
|
+
}
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SunEnterFocusNext, decorators: [{
|
|
31
|
+
type: Directive,
|
|
32
|
+
args: [{
|
|
33
|
+
selector: '[sunEnterFocusNext]',
|
|
34
|
+
host: {
|
|
35
|
+
'(keydown)': 'onKeyDown($event)'
|
|
36
|
+
}
|
|
37
|
+
}]
|
|
38
|
+
}] });
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Generated bundle index. Do not edit.
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
export { SunEnterFocusNext };
|
|
45
|
+
//# sourceMappingURL=solar-angular-ui-sun-enter-focus-next.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solar-angular-ui-sun-enter-focus-next.mjs","sources":["../tmp-esm2022/enter-focus-next/enter-focus-next.js","../tmp-esm2022/enter-focus-next/solar-angular-ui-sun-enter-focus-next.js"],"sourcesContent":["import { ENTER } from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SunEnterFocusNext {\n constructor() {\n this.element = inject(ElementRef);\n }\n onKeyDown(event) {\n const target = event.target;\n // 如果触发事件的是 input 标签,且按下了 Enter 键\n if (target instanceof HTMLInputElement && event.keyCode === ENTER) {\n event.preventDefault();\n // 此时可能会有子组件的事件监听器也在监听 keydown 事件,先让它们执行完,以确保 DOM 更新完成\n // 延迟执行以确保能够获取到最新的可用 input 元素\n setTimeout(() => {\n // 获取当前容器内所有可用的 input\n const inputs = Array.from(this.element.nativeElement.querySelectorAll('input:not([disabled]):not([readonly])'));\n const currentIndex = inputs.indexOf(target);\n // 如果不是最后一个,就聚焦到下一个\n if (currentIndex < inputs.length - 1) {\n inputs[currentIndex + 1].focus();\n }\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: SunEnterFocusNext, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.9\", type: SunEnterFocusNext, isStandalone: true, selector: \"[sunEnterFocusNext]\", host: { listeners: { \"keydown\": \"onKeyDown($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: SunEnterFocusNext, decorators: [{\n type: Directive,\n args: [{\n selector: '[sunEnterFocusNext]',\n host: {\n '(keydown)': 'onKeyDown($event)'\n }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50ZXItZm9jdXMtbmV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3VpLXN1bi9lbnRlci1mb2N1cy1uZXh0L2VudGVyLWZvY3VzLW5leHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFROUQsTUFBTSxPQUFPLGlCQUFpQjtJQU45QjtRQU9tQixZQUFPLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztLQXlCeEU7SUF2QkMsU0FBUyxDQUFDLEtBQW9CO1FBQzVCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBRWhELGlDQUFpQztRQUNqQyxJQUFJLE1BQU0sWUFBWSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2xFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixzREFBc0Q7WUFDdEQsNkJBQTZCO1lBQzdCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QscUJBQXFCO2dCQUNyQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUMvRCxDQUFDO2dCQUV4QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUU1QyxtQkFBbUI7Z0JBQ25CLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3JDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ25DLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOzhHQXpCVSxpQkFBaUI7a0dBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFON0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixJQUFJLEVBQUU7d0JBQ0osV0FBVyxFQUFFLG1CQUFtQjtxQkFDakM7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc3VuRW50ZXJGb2N1c05leHRdJyxcbiAgaG9zdDoge1xuICAgICcoa2V5ZG93biknOiAnb25LZXlEb3duKCRldmVudCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgU3VuRW50ZXJGb2N1c05leHQge1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgLy8g5aaC5p6c6Kem5Y+R5LqL5Lu255qE5pivIGlucHV0IOagh+etvu+8jOS4lOaMieS4i+S6hiBFbnRlciDplK5cbiAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJiBldmVudC5rZXlDb2RlID09PSBFTlRFUikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIC8vIOatpOaXtuWPr+iDveS8muacieWtkOe7hOS7tueahOS6i+S7tuebkeWQrOWZqOS5n+WcqOebkeWQrCBrZXlkb3duIOS6i+S7tu+8jOWFiOiuqeWug+S7rOaJp+ihjOWujO+8jOS7peehruS/nSBET00g5pu05paw5a6M5oiQXG4gICAgICAvLyDlu7bov5/miafooYzku6Xnoa7kv53og73lpJ/ojrflj5bliLDmnIDmlrDnmoTlj6/nlKggaW5wdXQg5YWD57SgXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8g6I635Y+W5b2T5YmN5a655Zmo5YaF5omA5pyJ5Y+v55So55qEIGlucHV0XG4gICAgICAgIGNvbnN0IGlucHV0cyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQ6bm90KFtkaXNhYmxlZF0pOm5vdChbcmVhZG9ubHldKScpXG4gICAgICAgICkgYXMgSFRNTElucHV0RWxlbWVudFtdO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGlucHV0cy5pbmRleE9mKHRhcmdldCk7XG5cbiAgICAgICAgLy8g5aaC5p6c5LiN5piv5pyA5ZCO5LiA5Liq77yM5bCx6IGa54Sm5Yiw5LiL5LiA5LiqXG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPCBpbnB1dHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIGlucHV0c1tjdXJyZW50SW5kZXggKyAxXS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci11aS1zdW4tZW50ZXItZm9jdXMtbmV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3VpLXN1bi9lbnRlci1mb2N1cy1uZXh0L3NvbGFyLWFuZ3VsYXItdWktc3VuLWVudGVyLWZvY3VzLW5leHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":";;;;AAGO,MAAM,iBAAiB,CAAC;AAC/B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AACzC,IAAI;AACJ,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AACnC;AACA,QAAQ,IAAI,MAAM,YAAY,gBAAgB,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;AAC3E,YAAY,KAAK,CAAC,cAAc,EAAE;AAClC;AACA;AACA,YAAY,UAAU,CAAC,MAAM;AAC7B;AACA,gBAAgB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,uCAAuC,CAAC,CAAC;AAC/H,gBAAgB,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3D;AACA,gBAAgB,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACtD,oBAAoB,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;AACpD,gBAAgB;AAChB,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACnL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACnP;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,qBAAqB;AACnD,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,WAAW,EAAE;AACrC;AACA,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACpCb;AACA;AACA;;;;"}
|
|
@@ -9,10 +9,10 @@ class SunNavProgressBar {
|
|
|
9
9
|
constructor() {
|
|
10
10
|
this.navigating = toSignal(inject(Router).events.pipe(filter(event => [NavigationStart, NavigationEnd, NavigationError, NavigationCancel].some(o => event instanceof o)), map(event => event instanceof NavigationStart)), { initialValue: true });
|
|
11
11
|
}
|
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SunNavProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: SunNavProgressBar, isStandalone: true, selector: "sun-nav-progress-bar", host: { classAttribute: "sun-nav-progress-bar" }, ngImport: i0, template: `@if (navigating()) {<div @fadeAnimation></div>}`, isInline: true, styles: [".sun-nav-progress-bar{--track-color: transparent;--progress-color: var(--color-primary)}.sun-nav-progress-bar>div{position:fixed;top:0;left:0;width:100%;height:2.5px;background:var(--track-color);z-index:999}.sun-nav-progress-bar>div:after{content:\"\";display:block;height:100%;width:40%;transform-origin:left;background:var(--progress-color);animation:sun-nav-progress 1.5s infinite linear}@keyframes sun-nav-progress{0%{transform:translate(250%) scaleX(.2)}80%{transform:translate(0) scaleX(1)}to{transform:translate(0) scaleX(0)}}\n"], animations: [fadeAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
14
14
|
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SunNavProgressBar, decorators: [{
|
|
16
16
|
type: Component,
|
|
17
17
|
args: [{ selector: 'sun-nav-progress-bar', template: `@if (navigating()) {<div @fadeAnimation></div>}`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [fadeAnimation], host: {
|
|
18
18
|
class: 'sun-nav-progress-bar'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solar-angular-ui-sun-nav-progress-bar.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"solar-angular-ui-sun-nav-progress-bar.mjs","sources":["../tmp-esm2022/nav-progress-bar/nav-progress-bar.component.js","../tmp-esm2022/nav-progress-bar/solar-angular-ui-sun-nav-progress-bar.js"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';\nimport { fadeAnimation } from '@solar-angular/animations';\nimport { filter, map } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class SunNavProgressBar {\n constructor() {\n this.navigating = toSignal(inject(Router).events.pipe(filter(event => [NavigationStart, NavigationEnd, NavigationError, NavigationCancel].some(o => event instanceof o)), map(event => event instanceof NavigationStart)), { initialValue: true });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: SunNavProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.9\", type: SunNavProgressBar, isStandalone: true, selector: \"sun-nav-progress-bar\", host: { classAttribute: \"sun-nav-progress-bar\" }, ngImport: i0, template: `@if (navigating()) {<div @fadeAnimation></div>}`, isInline: true, styles: [\".sun-nav-progress-bar{--track-color: transparent;--progress-color: var(--color-primary)}.sun-nav-progress-bar>div{position:fixed;top:0;left:0;width:100%;height:2.5px;background:var(--track-color);z-index:999}.sun-nav-progress-bar>div:after{content:\\\"\\\";display:block;height:100%;width:40%;transform-origin:left;background:var(--progress-color);animation:sun-nav-progress 1.5s infinite linear}@keyframes sun-nav-progress{0%{transform:translate(250%) scaleX(.2)}80%{transform:translate(0) scaleX(1)}to{transform:translate(0) scaleX(0)}}\\n\"], animations: [fadeAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: SunNavProgressBar, decorators: [{\n type: Component,\n args: [{ selector: 'sun-nav-progress-bar', template: `@if (navigating()) {<div @fadeAnimation></div>}`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [fadeAnimation], host: {\n class: 'sun-nav-progress-bar'\n }, styles: [\".sun-nav-progress-bar{--track-color: transparent;--progress-color: var(--color-primary)}.sun-nav-progress-bar>div{position:fixed;top:0;left:0;width:100%;height:2.5px;background:var(--track-color);z-index:999}.sun-nav-progress-bar>div:after{content:\\\"\\\";display:block;height:100%;width:40%;transform-origin:left;background:var(--progress-color);animation:sun-nav-progress 1.5s infinite linear}@keyframes sun-nav-progress{0%{transform:translate(250%) scaleX(.2)}80%{transform:translate(0) scaleX(1)}to{transform:translate(0) scaleX(0)}}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXByb2dyZXNzLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS1zdW4vbmF2LXByb2dyZXNzLWJhci9uYXYtcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFhbkMsTUFBTSxPQUFPLGlCQUFpQjtJQVg5QjtRQVlXLGVBQVUsR0FBRyxRQUFRLENBQzVCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN4QixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDYixDQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUNsRyxFQUNELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSxlQUFlLENBQUMsQ0FDL0MsRUFDRCxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FDdkIsQ0FBQTtLQUNGOzhHQVZZLGlCQUFpQjtrR0FBakIsaUJBQWlCLGtJQVRsQixpREFBaUQsb2tCQUkvQyxDQUFDLGFBQWEsQ0FBQzs7MkZBS2hCLGlCQUFpQjtrQkFYN0IsU0FBUzsrQkFDRSxzQkFBc0IsWUFDdEIsaURBQWlELG1CQUUxQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLENBQUMsYUFBYSxDQUFDLFFBQ3JCO3dCQUNKLEtBQUssRUFBRSxzQkFBc0I7cUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uQ2FuY2VsLCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uRXJyb3IsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZhZGVBbmltYXRpb24gfSBmcm9tICdAc29sYXItYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N1bi1uYXYtcHJvZ3Jlc3MtYmFyJyxcbiAgdGVtcGxhdGU6IGBAaWYgKG5hdmlnYXRpbmcoKSkgezxkaXYgQGZhZGVBbmltYXRpb24+PC9kaXY+fWAsXG4gIHN0eWxlVXJsOiAnLi9uYXYtcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGFuaW1hdGlvbnM6IFtmYWRlQW5pbWF0aW9uXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnc3VuLW5hdi1wcm9ncmVzcy1iYXInXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgU3VuTmF2UHJvZ3Jlc3NCYXIge1xuICByZWFkb25seSBuYXZpZ2F0aW5nID0gdG9TaWduYWwoXG4gICAgaW5qZWN0KFJvdXRlcikuZXZlbnRzLnBpcGUoXG4gICAgICBmaWx0ZXIoZXZlbnQgPT5cbiAgICAgICAgW05hdmlnYXRpb25TdGFydCwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvbkVycm9yLCBOYXZpZ2F0aW9uQ2FuY2VsXS5zb21lKG8gPT4gZXZlbnQgaW5zdGFuY2VvZiBvKVxuICAgICAgKSxcbiAgICAgIG1hcChldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydClcbiAgICApLFxuICAgIHsgaW5pdGlhbFZhbHVlOiB0cnVlIH1cbiAgKVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci11aS1zdW4tbmF2LXByb2dyZXNzLWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3VpLXN1bi9uYXYtcHJvZ3Jlc3MtYmFyL3NvbGFyLWFuZ3VsYXItdWktc3VuLW5hdi1wcm9ncmVzcy1iYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":";;;;;;;AAMO,MAAM,iBAAiB,CAAC;AAC/B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,KAAK,YAAY,eAAe,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AAC1P,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACnL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,sBAAsB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,+CAA+C,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,0hBAA0hB,CAAC,EAAE,UAAU,EAAE,CAAC,aAAa,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC39B;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC,+CAA+C,CAAC,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE;AAC/O,wBAAwB,KAAK,EAAE;AAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC,0hBAA0hB,CAAC,EAAE;AAC7jB,SAAS,CAAC,EAAE,CAAC;;AClBb;AACA;AACA;;;;"}
|
|
@@ -33,15 +33,15 @@ class SunSliderCaptcha {
|
|
|
33
33
|
constructor(http) {
|
|
34
34
|
this.http = http;
|
|
35
35
|
this.canvasRef = viewChild.required('canvas');
|
|
36
|
-
this.srcUrl = input.required();
|
|
37
|
-
this.verifyUrl = input.required();
|
|
38
|
-
this.verifyData = input();
|
|
39
|
-
this.width = input(375, { transform: numberAttribute });
|
|
40
|
-
this.height = input(187.5, { transform: numberAttribute });
|
|
36
|
+
this.srcUrl = input.required(...(ngDevMode ? [{ debugName: "srcUrl" }] : []));
|
|
37
|
+
this.verifyUrl = input.required(...(ngDevMode ? [{ debugName: "verifyUrl" }] : []));
|
|
38
|
+
this.verifyData = input(...(ngDevMode ? [undefined, { debugName: "verifyData" }] : []));
|
|
39
|
+
this.width = input(375, ...(ngDevMode ? [{ debugName: "width", transform: numberAttribute }] : [{ transform: numberAttribute }]));
|
|
40
|
+
this.height = input(187.5, ...(ngDevMode ? [{ debugName: "height", transform: numberAttribute }] : [{ transform: numberAttribute }]));
|
|
41
41
|
this.verified = output();
|
|
42
42
|
this.secrets = {};
|
|
43
|
-
this.loading = signal(false);
|
|
44
|
-
this.verifying = signal(false);
|
|
43
|
+
this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
44
|
+
this.verifying = signal(false, ...(ngDevMode ? [{ debugName: "verifying" }] : []));
|
|
45
45
|
this.alert = {
|
|
46
46
|
type: signal('success'),
|
|
47
47
|
content: signal(''),
|
|
@@ -49,7 +49,7 @@ class SunSliderCaptcha {
|
|
|
49
49
|
};
|
|
50
50
|
/** 滑动开始的X */
|
|
51
51
|
this.dragStartX = -1;
|
|
52
|
-
this.offsetX = signal(0);
|
|
52
|
+
this.offsetX = signal(0, ...(ngDevMode ? [{ debugName: "offsetX" }] : []));
|
|
53
53
|
this.bar = {
|
|
54
54
|
background: signal('var(--indicator-primary-color)'), // 滑块背景色
|
|
55
55
|
};
|
|
@@ -60,7 +60,7 @@ class SunSliderCaptcha {
|
|
|
60
60
|
this.quotient = computed(() => ({
|
|
61
61
|
width: this.width() / WIDTH,
|
|
62
62
|
height: this.height() / HEIGHT
|
|
63
|
-
}));
|
|
63
|
+
}), ...(ngDevMode ? [{ debugName: "quotient" }] : []));
|
|
64
64
|
afterNextRender(() => {
|
|
65
65
|
const dpr = devicePixelRatio;
|
|
66
66
|
this.canvas = this.canvasRef().nativeElement;
|
|
@@ -187,17 +187,17 @@ class SunSliderCaptcha {
|
|
|
187
187
|
this.slide(this.offsetX());
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
191
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
190
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SunSliderCaptcha, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
191
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: SunSliderCaptcha, isStandalone: true, selector: "sun-slider-captcha", inputs: { srcUrl: { classPropertyName: "srcUrl", publicName: "srcUrl", isSignal: true, isRequired: true, transformFunction: null }, verifyUrl: { classPropertyName: "verifyUrl", publicName: "verifyUrl", isSignal: true, isRequired: true, transformFunction: null }, verifyData: { classPropertyName: "verifyData", publicName: "verifyData", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { verified: "verified" }, host: { listeners: { "window:pointerup": "onPointerEnd($event)", "window:pointercancel": "onPointerEnd($event)", "window:pointermove": "onPointerMove($event)" }, properties: { "class.sun-slider-captcha-loading": "loading()", "class.sun-slider-captcha-verifying": "verifying()" }, classAttribute: "sun-slider-captcha" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"sun-slider-captcha-canvas-container\" [style.width.px]=\"width()\" [style.height.px]=\"height()\">\n <canvas #canvas></canvas>\n @if (alert.visible()) {\n <div\n class=\"sun-slider-captcha-alert\"\n [class.sun-slider-captcha-alert-success]=\"alert.type() === 'success'\"\n [class.sun-slider-captcha-alert-danger]=\"alert.type() === 'error'\">\n {{ alert.content() }}\n </div>\n }\n</div>\n\n<div class=\"sun-slider-captcha-track\" [style]=\"{ background: bar.background() }\">\n <div class=\"sun-slider-captcha-trough\" [style.transform]=\"'translateX(' + offsetX() + 'px)'\">\n <span class=\"sun-slider-captcha-tip\">\u62D6\u52A8\u6ED1\u5757\u4EE5\u5B8C\u6210\u62FC\u56FE\u9A8C\u8BC1</span>\n <div class=\"sun-slider-captcha-handler\" (pointerdown)=\"onPorinterStart($event)\">\n <svg viewBox=\"0 0 512 512\">\n <path\n stroke-width=\"32\"\n stroke-linecap=\"round\"\n stroke-miterlimit=\"10\"\n d=\"M80 160h352M80 256h352M80 352h352\"></path>\n </svg>\n </div>\n </div>\n</div>\n", styles: [".sun-slider-captcha{--background: white;--indicator-primary-color: var(--color-primary);--indicator-danger-color: var(--color-danger);--alert-success-color: var(--color-success);--alert-danger-color: var(--color-danger);--alert-success-background: #dcfce7;--alert-danger-background: #fee2e2;--handler-size: 42px;--handler-color: #94a3b8;--handler-border-color: #e2e8f0;display:inline-block;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none}.sun-slider-captcha-canvas-container{position:relative;background:var(--background)}.sun-slider-captcha-alert{position:absolute;width:100%;bottom:0;opacity:.9;text-align:center;padding:4px 0;font-size:14px}.sun-slider-captcha-alert-success{color:var(--alert-success-color);background:var(--alert-success-background)}.sun-slider-captcha-alert-danger{color:var(--alert-danger-color);background:var(--alert-danger-background)}.sun-slider-captcha-bar{font-size:0;height:var(--handler-size);line-height:var(--handler-size);overflow:scroll hidden;white-space:nowrap;scrollbar-width:none}.sun-slider-captcha-bar::-webkit-scrollbar{display:none}.sun-slider-captcha-track{height:var(--handler-size)}.sun-slider-captcha-trough{position:relative;display:flex;justify-content:center;align-items:center;font-size:14px;text-align:center;background:var(--background);height:100%}.sun-slider-captcha-handler{position:absolute;top:0;left:0;cursor:grab;height:var(--handler-size);width:var(--handler-size);display:flex;justify-content:center;align-items:center;background:var(--background);border:1px solid var(--handler-border-color);-webkit-user-select:none;user-select:none}.sun-slider-captcha-handler>svg{font-size:24px;color:var(--handler-color);width:1em;height:1em;contain:strict;fill:currentcolor;box-sizing:content-box;stroke:currentcolor;transform:rotate(90deg)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
192
192
|
}
|
|
193
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
193
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SunSliderCaptcha, decorators: [{
|
|
194
194
|
type: Component,
|
|
195
195
|
args: [{ selector: 'sun-slider-captcha', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
196
196
|
class: 'sun-slider-captcha',
|
|
197
197
|
'[class.sun-slider-captcha-loading]': `loading()`,
|
|
198
198
|
'[class.sun-slider-captcha-verifying]': `verifying()`,
|
|
199
199
|
}, template: "<div class=\"sun-slider-captcha-canvas-container\" [style.width.px]=\"width()\" [style.height.px]=\"height()\">\n <canvas #canvas></canvas>\n @if (alert.visible()) {\n <div\n class=\"sun-slider-captcha-alert\"\n [class.sun-slider-captcha-alert-success]=\"alert.type() === 'success'\"\n [class.sun-slider-captcha-alert-danger]=\"alert.type() === 'error'\">\n {{ alert.content() }}\n </div>\n }\n</div>\n\n<div class=\"sun-slider-captcha-track\" [style]=\"{ background: bar.background() }\">\n <div class=\"sun-slider-captcha-trough\" [style.transform]=\"'translateX(' + offsetX() + 'px)'\">\n <span class=\"sun-slider-captcha-tip\">\u62D6\u52A8\u6ED1\u5757\u4EE5\u5B8C\u6210\u62FC\u56FE\u9A8C\u8BC1</span>\n <div class=\"sun-slider-captcha-handler\" (pointerdown)=\"onPorinterStart($event)\">\n <svg viewBox=\"0 0 512 512\">\n <path\n stroke-width=\"32\"\n stroke-linecap=\"round\"\n stroke-miterlimit=\"10\"\n d=\"M80 160h352M80 256h352M80 352h352\"></path>\n </svg>\n </div>\n </div>\n</div>\n", styles: [".sun-slider-captcha{--background: white;--indicator-primary-color: var(--color-primary);--indicator-danger-color: var(--color-danger);--alert-success-color: var(--color-success);--alert-danger-color: var(--color-danger);--alert-success-background: #dcfce7;--alert-danger-background: #fee2e2;--handler-size: 42px;--handler-color: #94a3b8;--handler-border-color: #e2e8f0;display:inline-block;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none}.sun-slider-captcha-canvas-container{position:relative;background:var(--background)}.sun-slider-captcha-alert{position:absolute;width:100%;bottom:0;opacity:.9;text-align:center;padding:4px 0;font-size:14px}.sun-slider-captcha-alert-success{color:var(--alert-success-color);background:var(--alert-success-background)}.sun-slider-captcha-alert-danger{color:var(--alert-danger-color);background:var(--alert-danger-background)}.sun-slider-captcha-bar{font-size:0;height:var(--handler-size);line-height:var(--handler-size);overflow:scroll hidden;white-space:nowrap;scrollbar-width:none}.sun-slider-captcha-bar::-webkit-scrollbar{display:none}.sun-slider-captcha-track{height:var(--handler-size)}.sun-slider-captcha-trough{position:relative;display:flex;justify-content:center;align-items:center;font-size:14px;text-align:center;background:var(--background);height:100%}.sun-slider-captcha-handler{position:absolute;top:0;left:0;cursor:grab;height:var(--handler-size);width:var(--handler-size);display:flex;justify-content:center;align-items:center;background:var(--background);border:1px solid var(--handler-border-color);-webkit-user-select:none;user-select:none}.sun-slider-captcha-handler>svg{font-size:24px;color:var(--handler-color);width:1em;height:1em;contain:strict;fill:currentcolor;box-sizing:content-box;stroke:currentcolor;transform:rotate(90deg)}\n"] }]
|
|
200
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }], propDecorators: { onPointerEnd: [{
|
|
200
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }], propDecorators: { canvasRef: [{ type: i0.ViewChild, args: ['canvas', { isSignal: true }] }], srcUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "srcUrl", required: true }] }], verifyUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "verifyUrl", required: true }] }], verifyData: [{ type: i0.Input, args: [{ isSignal: true, alias: "verifyData", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], verified: [{ type: i0.Output, args: ["verified"] }], onPointerEnd: [{
|
|
201
201
|
type: HostListener,
|
|
202
202
|
args: ['window:pointerup', ['$event']]
|
|
203
203
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solar-angular-ui-sun-slider-captcha.mjs","sources":["../../../packages/ui-sun/slider-captcha/utils.ts","../../../packages/ui-sun/slider-captcha/slider-captcha.component.ts","../../../packages/ui-sun/slider-captcha/slider-captcha.component.html","../../../packages/ui-sun/slider-captcha/solar-angular-ui-sun-slider-captcha.ts"],"sourcesContent":["import { HttpContext } from '@angular/common/http';\nimport { API_TOKEN, AUTH_TOKEN } from '@solar-angular/http';\nimport { encrypt } from 'crypto-js/aes';\nimport { parse } from 'crypto-js/enc-utf8';\nimport { default as mode } from 'crypto-js/mode-ecb';\nimport { default as padding } from 'crypto-js/pad-pkcs7';\n\nexport const HTTP_OPTIONS = {\n withCredentials: true,\n context: new HttpContext().set(API_TOKEN, false).set(AUTH_TOKEN, false)\n};\n\nexport const aesEncrypt = (word: string, secret: string) => {\n const key = parse(secret);\n const src = parse(word);\n const encrypted = encrypt(src, key, { mode, padding });\n return encrypted.toString();\n};\n\nexport function withDpr(value: number) {\n return value * devicePixelRatio;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, ElementRef, HostListener, input, numberAttribute, output, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { withPixel } from '@solar-kit/core';\nimport { Captcha, CaptchaType } from '@solar-kit/planets/mercury';\nimport { Result } from '@solar-kit/planets/sun';\nimport { fromEvent, take, zip } from 'rxjs';\nimport { aesEncrypt, HTTP_OPTIONS, withDpr } from './utils';\n\n/** 验证码的原始尺寸 */\nconst HEIGHT = 155, WIDTH = 310;\n/** 拼图的原始尺寸 */\nconst PUZZLE_HEIGHT = 155, PUZZLE_WIDTH = 50;\n\n@Component({\n selector: 'sun-slider-captcha',\n templateUrl: './slider-captcha.component.html',\n styleUrl: './slider-captcha.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'sun-slider-captcha',\n '[class.sun-slider-captcha-loading]': `loading()`,\n '[class.sun-slider-captcha-verifying]': `verifying()`,\n }\n})\nexport class SunSliderCaptcha {\n readonly canvasRef = viewChild.required<ElementRef<HTMLCanvasElement>>('canvas');\n\n readonly srcUrl = input.required<string>();\n readonly verifyUrl = input.required<string>();\n readonly verifyData = input<Record<string, any> | (() => Record<string, any>)>();\n readonly width = input(375, { transform: numberAttribute });\n readonly height = input(187.5, { transform: numberAttribute });\n\n readonly verified = output<Result<Captcha>>();\n\n private canvas!: HTMLCanvasElement;\n private ctx!: CanvasRenderingContext2D;\n private bgImage!: HTMLImageElement;\n private slideImage!: HTMLImageElement;\n\n secrets: { secretKey: string, token: string } = {} as any;\n\n readonly loading = signal(false);\n readonly verifying = signal(false);\n readonly alert = {\n type: signal<'success' | 'error'>('success'),\n content: signal<string>(''),\n visible: signal<boolean>(false)\n }\n\n beginTime!: number;\n endTime!: number;\n\n /** 滑动开始的X */\n dragStartX = -1;\n readonly offsetX = signal(0);\n\n readonly bar = {\n background: signal('var(--indicator-primary-color)'), // 滑块背景色\n }\n\n /**\n * 当前尺寸 除于 原始尺寸得到的商\n * 用于等比例缩放\n */\n readonly quotient = computed(() => ({\n width: this.width() / WIDTH,\n height: this.height() / HEIGHT\n }))\n\n constructor(private http: HttpClient) {\n afterNextRender(() => {\n const dpr = devicePixelRatio;\n this.canvas = this.canvasRef().nativeElement;\n this.canvas.style.width = withPixel(this.width());\n this.canvas.style.height = withPixel(this.height());\n this.canvas.width = withDpr(this.width());\n this.canvas.height = withDpr(this.height());\n\n this.ctx = this.canvas.getContext('2d')!;\n this.ctx.scale(dpr, dpr);\n\n this.refresh();\n })\n }\n\n refresh() {\n this.offsetX.set(0);\n this.alert.visible.set(false);\n this.bar.background.set('var(--indicator-primary-color)')\n this.loading.set(true);\n this.http.post<Result<Captcha>>(this.srcUrl(), { captchaType: CaptchaType.BlockPuzzle }, HTTP_OPTIONS).subscribe(response => {\n if (response.code === 0) {\n this.secrets.secretKey = response.data.secretKey;\n this.secrets.token = response.data.token;\n this.bgImage = new Image();\n this.slideImage = new Image();\n this.bgImage.src = `data:image/png;base64,${response.data.originalImageBase64}`;\n this.slideImage.src = `data:image/png;base64,${response.data.jigsawImageBase64}`;\n zip(\n fromEvent(this.bgImage, 'load'),\n fromEvent(this.slideImage, 'load'),\n ).pipe(take(1)).subscribe(() => {\n this.beginTime = Date.now();\n this.draw();\n });\n } else {\n console.error(response.msg);\n }\n });\n }\n\n private draw(x = 0) {\n const width = this.width();\n const height = this.height();\n this.ctx.clearRect(0, 0, width, height);\n this.ctx.drawImage(this.bgImage, 0, 0, width, height);\n this.ctx.drawImage(this.slideImage, x, 0, this.quotient().width * PUZZLE_WIDTH, this.quotient().height * PUZZLE_HEIGHT);\n this.loading.set(false);\n }\n\n slide(x: number) {\n this.draw(x);\n }\n\n verify(x: number) {\n this.verifying.set(true)\n // 计算出原始移动距离\n x = x / this.quotient().width;\n\n this.endTime = Date.now();\n const json = JSON.stringify({ x: x, y: 5.0 });\n const pointJson = this.secrets.secretKey ? aesEncrypt(json, this.secrets.secretKey) : json;\n const verifyDataValue = this.verifyData();\n const verifyData = typeof verifyDataValue === 'function' ? verifyDataValue() : verifyDataValue;\n const obj = {\n captchaType: CaptchaType.BlockPuzzle,\n pointJson,\n token: this.secrets.token,\n ...verifyData\n };\n this.http.post<Result<Captcha>>(this.verifyUrl(), obj, HTTP_OPTIONS).subscribe({\n next: response => {\n if (response.code !== 0) {\n this.alert.type.set('error')\n this.alert.content.set(response.msg)\n this.alert.visible.set(true);\n this.bar.background.set('var(--indicator-danger-color)')\n this.verified.emit({\n code: -1,\n msg: response.msg,\n data: null!\n });\n setTimeout(() => {\n this.alert.visible.set(false);\n this.refresh();\n }, 1000);\n } else {\n const seconds = Math.abs(this.endTime - this.beginTime) / 1000;\n this.alert.type.set('success')\n this.alert.content.set(`验证成功,耗时 ${seconds} 秒`)\n this.alert.visible.set(true);\n this.bar.background.set('var(--indicator-primary-color)')\n const temp = response.data.token + '---' + json;\n response.data.captcha = this.secrets.secretKey ? aesEncrypt(temp, this.secrets.secretKey) : temp;\n // delete response.data.token;\n // delete response.data.captchaType;\n // delete response.data.pointJson;\n // delete response.data.result;\n this.verified.emit({\n code: 0,\n msg: response.msg,\n data: response.data\n });\n }\n },\n complete: () => this.verifying.set(false)\n });\n }\n\n onPorinterStart(event: PointerEvent) {\n if (!this.loading() && !this.verifying()) {\n // 这里不阻止默认事件,否则会影响弹窗的 close on outside click 功能\n // event.stopPropagation();\n // event.preventDefault()\n this.dragStartX = event.clientX;\n }\n }\n\n @HostListener('window:pointerup', ['$event'])\n @HostListener('window:pointercancel', ['$event'])\n onPointerEnd(event: PointerEvent) {\n event.stopPropagation();\n event.preventDefault()\n if (this.dragStartX > -1) {\n this.verify(this.offsetX());\n }\n this.dragStartX = -1;\n }\n\n @HostListener('window:pointermove', ['$event'])\n onPointerMove(event: PointerEvent) {\n event.stopPropagation();\n event.preventDefault()\n if (this.dragStartX > -1) { // 如果在拖动了\n const currentX = event.clientX; // 得到当前的X\n const offset = currentX - this.dragStartX; // 得到拖动的距离\n this.offsetX.set(Math.min(Math.max(0, offset), this.width() - 42));\n this.slide(this.offsetX());\n }\n }\n\n}\n","<div class=\"sun-slider-captcha-canvas-container\" [style.width.px]=\"width()\" [style.height.px]=\"height()\">\n <canvas #canvas></canvas>\n @if (alert.visible()) {\n <div\n class=\"sun-slider-captcha-alert\"\n [class.sun-slider-captcha-alert-success]=\"alert.type() === 'success'\"\n [class.sun-slider-captcha-alert-danger]=\"alert.type() === 'error'\">\n {{ alert.content() }}\n </div>\n }\n</div>\n\n<div class=\"sun-slider-captcha-track\" [style]=\"{ background: bar.background() }\">\n <div class=\"sun-slider-captcha-trough\" [style.transform]=\"'translateX(' + offsetX() + 'px)'\">\n <span class=\"sun-slider-captcha-tip\">拖动滑块以完成拼图验证</span>\n <div class=\"sun-slider-captcha-handler\" (pointerdown)=\"onPorinterStart($event)\">\n <svg viewBox=\"0 0 512 512\">\n <path\n stroke-width=\"32\"\n stroke-linecap=\"round\"\n stroke-miterlimit=\"10\"\n d=\"M80 160h352M80 256h352M80 352h352\"></path>\n </svg>\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"solar-angular-ui-sun-slider-captcha.mjs","sources":["../tmp-esm2022/slider-captcha/utils.js","../tmp-esm2022/slider-captcha/slider-captcha.component.js","../tmp-esm2022/slider-captcha/solar-angular-ui-sun-slider-captcha.js"],"sourcesContent":["import { HttpContext } from '@angular/common/http';\nimport { API_TOKEN, AUTH_TOKEN } from '@solar-angular/http';\nimport { encrypt } from 'crypto-js/aes';\nimport { parse } from 'crypto-js/enc-utf8';\nimport { default as mode } from 'crypto-js/mode-ecb';\nimport { default as padding } from 'crypto-js/pad-pkcs7';\nexport const HTTP_OPTIONS = {\n withCredentials: true,\n context: new HttpContext().set(API_TOKEN, false).set(AUTH_TOKEN, false)\n};\nexport const aesEncrypt = (word, secret) => {\n const key = parse(secret);\n const src = parse(word);\n const encrypted = encrypt(src, key, { mode, padding });\n return encrypted.toString();\n};\nexport function withDpr(value) {\n return value * devicePixelRatio;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS1zdW4vc2xpZGVyLWNhcHRjaGEvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sSUFBSSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxJQUFJLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXpELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixlQUFlLEVBQUUsSUFBSTtJQUNyQixPQUFPLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO0NBQ3hFLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFZLEVBQUUsTUFBYyxFQUFFLEVBQUU7SUFDekQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzlCLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBYTtJQUNuQyxPQUFPLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBUElfVE9LRU4sIEFVVEhfVE9LRU4gfSBmcm9tICdAc29sYXItYW5ndWxhci9odHRwJztcbmltcG9ydCB7IGVuY3J5cHQgfSBmcm9tICdjcnlwdG8tanMvYWVzJztcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnY3J5cHRvLWpzL2VuYy11dGY4JztcbmltcG9ydCB7IGRlZmF1bHQgYXMgbW9kZSB9IGZyb20gJ2NyeXB0by1qcy9tb2RlLWVjYic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIHBhZGRpbmcgfSBmcm9tICdjcnlwdG8tanMvcGFkLXBrY3M3JztcblxuZXhwb3J0IGNvbnN0IEhUVFBfT1BUSU9OUyA9IHtcbiAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICBjb250ZXh0OiBuZXcgSHR0cENvbnRleHQoKS5zZXQoQVBJX1RPS0VOLCBmYWxzZSkuc2V0KEFVVEhfVE9LRU4sIGZhbHNlKVxufTtcblxuZXhwb3J0IGNvbnN0IGFlc0VuY3J5cHQgPSAod29yZDogc3RyaW5nLCBzZWNyZXQ6IHN0cmluZykgPT4ge1xuICBjb25zdCBrZXkgPSBwYXJzZShzZWNyZXQpO1xuICBjb25zdCBzcmMgPSBwYXJzZSh3b3JkKTtcbiAgY29uc3QgZW5jcnlwdGVkID0gZW5jcnlwdChzcmMsIGtleSwgeyBtb2RlLCBwYWRkaW5nIH0pO1xuICByZXR1cm4gZW5jcnlwdGVkLnRvU3RyaW5nKCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aERwcih2YWx1ZTogbnVtYmVyKSB7XG4gIHJldHVybiB2YWx1ZSAqIGRldmljZVBpeGVsUmF0aW87XG59XG4iXX0=","import { afterNextRender, ChangeDetectionStrategy, Component, computed, HostListener, input, numberAttribute, output, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { withPixel } from '@solar-kit/core';\nimport { CaptchaType } from '@solar-kit/planets/mercury';\nimport { fromEvent, take, zip } from 'rxjs';\nimport { aesEncrypt, HTTP_OPTIONS, withDpr } from './utils';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\n/** 验证码的原始尺寸 */\nconst HEIGHT = 155, WIDTH = 310;\n/** 拼图的原始尺寸 */\nconst PUZZLE_HEIGHT = 155, PUZZLE_WIDTH = 50;\nexport class SunSliderCaptcha {\n constructor(http) {\n this.http = http;\n this.canvasRef = viewChild.required('canvas');\n this.srcUrl = input.required(...(ngDevMode ? [{ debugName: \"srcUrl\" }] : []));\n this.verifyUrl = input.required(...(ngDevMode ? [{ debugName: \"verifyUrl\" }] : []));\n this.verifyData = input(...(ngDevMode ? [undefined, { debugName: \"verifyData\" }] : []));\n this.width = input(375, ...(ngDevMode ? [{ debugName: \"width\", transform: numberAttribute }] : [{ transform: numberAttribute }]));\n this.height = input(187.5, ...(ngDevMode ? [{ debugName: \"height\", transform: numberAttribute }] : [{ transform: numberAttribute }]));\n this.verified = output();\n this.secrets = {};\n this.loading = signal(false, ...(ngDevMode ? [{ debugName: \"loading\" }] : []));\n this.verifying = signal(false, ...(ngDevMode ? [{ debugName: \"verifying\" }] : []));\n this.alert = {\n type: signal('success'),\n content: signal(''),\n visible: signal(false)\n };\n /** 滑动开始的X */\n this.dragStartX = -1;\n this.offsetX = signal(0, ...(ngDevMode ? [{ debugName: \"offsetX\" }] : []));\n this.bar = {\n background: signal('var(--indicator-primary-color)'), // 滑块背景色\n };\n /**\n * 当前尺寸 除于 原始尺寸得到的商\n * 用于等比例缩放\n */\n this.quotient = computed(() => ({\n width: this.width() / WIDTH,\n height: this.height() / HEIGHT\n }), ...(ngDevMode ? [{ debugName: \"quotient\" }] : []));\n afterNextRender(() => {\n const dpr = devicePixelRatio;\n this.canvas = this.canvasRef().nativeElement;\n this.canvas.style.width = withPixel(this.width());\n this.canvas.style.height = withPixel(this.height());\n this.canvas.width = withDpr(this.width());\n this.canvas.height = withDpr(this.height());\n this.ctx = this.canvas.getContext('2d');\n this.ctx.scale(dpr, dpr);\n this.refresh();\n });\n }\n refresh() {\n this.offsetX.set(0);\n this.alert.visible.set(false);\n this.bar.background.set('var(--indicator-primary-color)');\n this.loading.set(true);\n this.http.post(this.srcUrl(), { captchaType: CaptchaType.BlockPuzzle }, HTTP_OPTIONS).subscribe(response => {\n if (response.code === 0) {\n this.secrets.secretKey = response.data.secretKey;\n this.secrets.token = response.data.token;\n this.bgImage = new Image();\n this.slideImage = new Image();\n this.bgImage.src = `data:image/png;base64,${response.data.originalImageBase64}`;\n this.slideImage.src = `data:image/png;base64,${response.data.jigsawImageBase64}`;\n zip(fromEvent(this.bgImage, 'load'), fromEvent(this.slideImage, 'load')).pipe(take(1)).subscribe(() => {\n this.beginTime = Date.now();\n this.draw();\n });\n }\n else {\n console.error(response.msg);\n }\n });\n }\n draw(x = 0) {\n const width = this.width();\n const height = this.height();\n this.ctx.clearRect(0, 0, width, height);\n this.ctx.drawImage(this.bgImage, 0, 0, width, height);\n this.ctx.drawImage(this.slideImage, x, 0, this.quotient().width * PUZZLE_WIDTH, this.quotient().height * PUZZLE_HEIGHT);\n this.loading.set(false);\n }\n slide(x) {\n this.draw(x);\n }\n verify(x) {\n this.verifying.set(true);\n // 计算出原始移动距离\n x = x / this.quotient().width;\n this.endTime = Date.now();\n const json = JSON.stringify({ x: x, y: 5.0 });\n const pointJson = this.secrets.secretKey ? aesEncrypt(json, this.secrets.secretKey) : json;\n const verifyDataValue = this.verifyData();\n const verifyData = typeof verifyDataValue === 'function' ? verifyDataValue() : verifyDataValue;\n const obj = {\n captchaType: CaptchaType.BlockPuzzle,\n pointJson,\n token: this.secrets.token,\n ...verifyData\n };\n this.http.post(this.verifyUrl(), obj, HTTP_OPTIONS).subscribe({\n next: response => {\n if (response.code !== 0) {\n this.alert.type.set('error');\n this.alert.content.set(response.msg);\n this.alert.visible.set(true);\n this.bar.background.set('var(--indicator-danger-color)');\n this.verified.emit({\n code: -1,\n msg: response.msg,\n data: null\n });\n setTimeout(() => {\n this.alert.visible.set(false);\n this.refresh();\n }, 1000);\n }\n else {\n const seconds = Math.abs(this.endTime - this.beginTime) / 1000;\n this.alert.type.set('success');\n this.alert.content.set(`验证成功,耗时 ${seconds} 秒`);\n this.alert.visible.set(true);\n this.bar.background.set('var(--indicator-primary-color)');\n const temp = response.data.token + '---' + json;\n response.data.captcha = this.secrets.secretKey ? aesEncrypt(temp, this.secrets.secretKey) : temp;\n // delete response.data.token;\n // delete response.data.captchaType;\n // delete response.data.pointJson;\n // delete response.data.result;\n this.verified.emit({\n code: 0,\n msg: response.msg,\n data: response.data\n });\n }\n },\n complete: () => this.verifying.set(false)\n });\n }\n onPorinterStart(event) {\n if (!this.loading() && !this.verifying()) {\n // 这里不阻止默认事件,否则会影响弹窗的 close on outside click 功能\n // event.stopPropagation();\n // event.preventDefault()\n this.dragStartX = event.clientX;\n }\n }\n onPointerEnd(event) {\n event.stopPropagation();\n event.preventDefault();\n if (this.dragStartX > -1) {\n this.verify(this.offsetX());\n }\n this.dragStartX = -1;\n }\n onPointerMove(event) {\n event.stopPropagation();\n event.preventDefault();\n if (this.dragStartX > -1) { // 如果在拖动了\n const currentX = event.clientX; // 得到当前的X\n const offset = currentX - this.dragStartX; // 得到拖动的距离\n this.offsetX.set(Math.min(Math.max(0, offset), this.width() - 42));\n this.slide(this.offsetX());\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: SunSliderCaptcha, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.9\", type: SunSliderCaptcha, isStandalone: true, selector: \"sun-slider-captcha\", inputs: { srcUrl: { classPropertyName: \"srcUrl\", publicName: \"srcUrl\", isSignal: true, isRequired: true, transformFunction: null }, verifyUrl: { classPropertyName: \"verifyUrl\", publicName: \"verifyUrl\", isSignal: true, isRequired: true, transformFunction: null }, verifyData: { classPropertyName: \"verifyData\", publicName: \"verifyData\", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: \"width\", publicName: \"width\", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: \"height\", publicName: \"height\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { verified: \"verified\" }, host: { listeners: { \"window:pointerup\": \"onPointerEnd($event)\", \"window:pointercancel\": \"onPointerEnd($event)\", \"window:pointermove\": \"onPointerMove($event)\" }, properties: { \"class.sun-slider-captcha-loading\": \"loading()\", \"class.sun-slider-captcha-verifying\": \"verifying()\" }, classAttribute: \"sun-slider-captcha\" }, viewQueries: [{ propertyName: \"canvasRef\", first: true, predicate: [\"canvas\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"sun-slider-captcha-canvas-container\\\" [style.width.px]=\\\"width()\\\" [style.height.px]=\\\"height()\\\">\\n <canvas #canvas></canvas>\\n @if (alert.visible()) {\\n <div\\n class=\\\"sun-slider-captcha-alert\\\"\\n [class.sun-slider-captcha-alert-success]=\\\"alert.type() === 'success'\\\"\\n [class.sun-slider-captcha-alert-danger]=\\\"alert.type() === 'error'\\\">\\n {{ alert.content() }}\\n </div>\\n }\\n</div>\\n\\n<div class=\\\"sun-slider-captcha-track\\\" [style]=\\\"{ background: bar.background() }\\\">\\n <div class=\\\"sun-slider-captcha-trough\\\" [style.transform]=\\\"'translateX(' + offsetX() + 'px)'\\\">\\n <span class=\\\"sun-slider-captcha-tip\\\">\\u62D6\\u52A8\\u6ED1\\u5757\\u4EE5\\u5B8C\\u6210\\u62FC\\u56FE\\u9A8C\\u8BC1</span>\\n <div class=\\\"sun-slider-captcha-handler\\\" (pointerdown)=\\\"onPorinterStart($event)\\\">\\n <svg viewBox=\\\"0 0 512 512\\\">\\n <path\\n stroke-width=\\\"32\\\"\\n stroke-linecap=\\\"round\\\"\\n stroke-miterlimit=\\\"10\\\"\\n d=\\\"M80 160h352M80 256h352M80 352h352\\\"></path>\\n </svg>\\n </div>\\n </div>\\n</div>\\n\", styles: [\".sun-slider-captcha{--background: white;--indicator-primary-color: var(--color-primary);--indicator-danger-color: var(--color-danger);--alert-success-color: var(--color-success);--alert-danger-color: var(--color-danger);--alert-success-background: #dcfce7;--alert-danger-background: #fee2e2;--handler-size: 42px;--handler-color: #94a3b8;--handler-border-color: #e2e8f0;display:inline-block;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none}.sun-slider-captcha-canvas-container{position:relative;background:var(--background)}.sun-slider-captcha-alert{position:absolute;width:100%;bottom:0;opacity:.9;text-align:center;padding:4px 0;font-size:14px}.sun-slider-captcha-alert-success{color:var(--alert-success-color);background:var(--alert-success-background)}.sun-slider-captcha-alert-danger{color:var(--alert-danger-color);background:var(--alert-danger-background)}.sun-slider-captcha-bar{font-size:0;height:var(--handler-size);line-height:var(--handler-size);overflow:scroll hidden;white-space:nowrap;scrollbar-width:none}.sun-slider-captcha-bar::-webkit-scrollbar{display:none}.sun-slider-captcha-track{height:var(--handler-size)}.sun-slider-captcha-trough{position:relative;display:flex;justify-content:center;align-items:center;font-size:14px;text-align:center;background:var(--background);height:100%}.sun-slider-captcha-handler{position:absolute;top:0;left:0;cursor:grab;height:var(--handler-size);width:var(--handler-size);display:flex;justify-content:center;align-items:center;background:var(--background);border:1px solid var(--handler-border-color);-webkit-user-select:none;user-select:none}.sun-slider-captcha-handler>svg{font-size:24px;color:var(--handler-color);width:1em;height:1em;contain:strict;fill:currentcolor;box-sizing:content-box;stroke:currentcolor;transform:rotate(90deg)}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: SunSliderCaptcha, decorators: [{\n type: Component,\n args: [{ selector: 'sun-slider-captcha', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'sun-slider-captcha',\n '[class.sun-slider-captcha-loading]': `loading()`,\n '[class.sun-slider-captcha-verifying]': `verifying()`,\n }, template: \"<div class=\\\"sun-slider-captcha-canvas-container\\\" [style.width.px]=\\\"width()\\\" [style.height.px]=\\\"height()\\\">\\n <canvas #canvas></canvas>\\n @if (alert.visible()) {\\n <div\\n class=\\\"sun-slider-captcha-alert\\\"\\n [class.sun-slider-captcha-alert-success]=\\\"alert.type() === 'success'\\\"\\n [class.sun-slider-captcha-alert-danger]=\\\"alert.type() === 'error'\\\">\\n {{ alert.content() }}\\n </div>\\n }\\n</div>\\n\\n<div class=\\\"sun-slider-captcha-track\\\" [style]=\\\"{ background: bar.background() }\\\">\\n <div class=\\\"sun-slider-captcha-trough\\\" [style.transform]=\\\"'translateX(' + offsetX() + 'px)'\\\">\\n <span class=\\\"sun-slider-captcha-tip\\\">\\u62D6\\u52A8\\u6ED1\\u5757\\u4EE5\\u5B8C\\u6210\\u62FC\\u56FE\\u9A8C\\u8BC1</span>\\n <div class=\\\"sun-slider-captcha-handler\\\" (pointerdown)=\\\"onPorinterStart($event)\\\">\\n <svg viewBox=\\\"0 0 512 512\\\">\\n <path\\n stroke-width=\\\"32\\\"\\n stroke-linecap=\\\"round\\\"\\n stroke-miterlimit=\\\"10\\\"\\n d=\\\"M80 160h352M80 256h352M80 352h352\\\"></path>\\n </svg>\\n </div>\\n </div>\\n</div>\\n\", styles: [\".sun-slider-captcha{--background: white;--indicator-primary-color: var(--color-primary);--indicator-danger-color: var(--color-danger);--alert-success-color: var(--color-success);--alert-danger-color: var(--color-danger);--alert-success-background: #dcfce7;--alert-danger-background: #fee2e2;--handler-size: 42px;--handler-color: #94a3b8;--handler-border-color: #e2e8f0;display:inline-block;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none}.sun-slider-captcha-canvas-container{position:relative;background:var(--background)}.sun-slider-captcha-alert{position:absolute;width:100%;bottom:0;opacity:.9;text-align:center;padding:4px 0;font-size:14px}.sun-slider-captcha-alert-success{color:var(--alert-success-color);background:var(--alert-success-background)}.sun-slider-captcha-alert-danger{color:var(--alert-danger-color);background:var(--alert-danger-background)}.sun-slider-captcha-bar{font-size:0;height:var(--handler-size);line-height:var(--handler-size);overflow:scroll hidden;white-space:nowrap;scrollbar-width:none}.sun-slider-captcha-bar::-webkit-scrollbar{display:none}.sun-slider-captcha-track{height:var(--handler-size)}.sun-slider-captcha-trough{position:relative;display:flex;justify-content:center;align-items:center;font-size:14px;text-align:center;background:var(--background);height:100%}.sun-slider-captcha-handler{position:absolute;top:0;left:0;cursor:grab;height:var(--handler-size);width:var(--handler-size);display:flex;justify-content:center;align-items:center;background:var(--background);border:1px solid var(--handler-border-color);-webkit-user-select:none;user-select:none}.sun-slider-captcha-handler>svg{font-size:24px;color:var(--handler-color);width:1em;height:1em;contain:strict;fill:currentcolor;box-sizing:content-box;stroke:currentcolor;transform:rotate(90deg)}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.HttpClient }], propDecorators: { canvasRef: [{ type: i0.ViewChild, args: ['canvas', { isSignal: true }] }], srcUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: \"srcUrl\", required: true }] }], verifyUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: \"verifyUrl\", required: true }] }], verifyData: [{ type: i0.Input, args: [{ isSignal: true, alias: \"verifyData\", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: \"width\", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: \"height\", required: false }] }], verified: [{ type: i0.Output, args: [\"verified\"] }], onPointerEnd: [{\n type: HostListener,\n args: ['window:pointerup', ['$event']]\n }, {\n type: HostListener,\n args: ['window:pointercancel', ['$event']]\n }], onPointerMove: [{\n type: HostListener,\n args: ['window:pointermove', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLWNhcHRjaGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvdWktc3VuL3NsaWRlci1jYXB0Y2hhL3NsaWRlci1jYXB0Y2hhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3VpLXN1bi9zbGlkZXItY2FwdGNoYS9zbGlkZXItY2FwdGNoYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUwsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBVyxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7QUFFNUQsZUFBZTtBQUNmLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ2hDLGNBQWM7QUFDZCxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUUsWUFBWSxHQUFHLEVBQUUsQ0FBQztBQWM3QyxNQUFNLE9BQU8sZ0JBQWdCO0lBOEMzQixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBN0MzQixjQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBZ0MsUUFBUSxDQUFDLENBQUM7UUFFeEUsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLGlEQUFVLENBQUM7UUFDbEMsY0FBUyxH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QUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVU7WUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDOzhHQTFMVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQix5cUNDekI3Qixpa0NBMEJBOzsyRkREYSxnQkFBZ0I7a0JBWjVCLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osS0FBSyxFQUFFLG9CQUFvQjt3QkFDM0Isb0NBQW9DLEVBQUUsV0FBVzt3QkFDakQsc0NBQXNDLEVBQUUsYUFBYTtxQkFDdEQ7d0hBR3NFLFFBQVE7c0JBb0s5RSxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDM0MsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBVS9DLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBpbnB1dCwgbnVtYmVyQXR0cmlidXRlLCBvdXRwdXQsIHNpZ25hbCwgdmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgd2l0aFBpeGVsIH0gZnJvbSAnQHNvbGFyLWtpdC9jb3JlJztcbmltcG9ydCB7IENhcHRjaGEsIENhcHRjaGFUeXBlIH0gZnJvbSAnQHNvbGFyLWtpdC9wbGFuZXRzL21lcmN1cnknO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSAnQHNvbGFyLWtpdC9wbGFuZXRzL3N1bic7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIHRha2UsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYWVzRW5jcnlwdCwgSFRUUF9PUFRJT05TLCB3aXRoRHByIH0gZnJvbSAnLi91dGlscyc7XG5cbi8qKiDpqozor4HnoIHnmoTljp/lp4vlsLrlr7ggKi9cbmNvbnN0IEhFSUdIVCA9IDE1NSwgV0lEVEggPSAzMTA7XG4vKiog5ou85Zu+55qE5Y6f5aeL5bC65a+4ICovXG5jb25zdCBQVVpaTEVfSEVJR0hUID0gMTU1LCBQVVpaTEVfV0lEVEggPSA1MDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3VuLXNsaWRlci1jYXB0Y2hhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlci1jYXB0Y2hhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3NsaWRlci1jYXB0Y2hhLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ3N1bi1zbGlkZXItY2FwdGNoYScsXG4gICAgJ1tjbGFzcy5zdW4tc2xpZGVyLWNhcHRjaGEtbG9hZGluZ10nOiBgbG9hZGluZygpYCxcbiAgICAnW2NsYXNzLnN1bi1zbGlkZXItY2FwdGNoYS12ZXJpZnlpbmddJzogYHZlcmlmeWluZygpYCxcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBTdW5TbGlkZXJDYXB0Y2hhIHtcbiAgcmVhZG9ubHkgY2FudmFzUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+PignY2FudmFzJyk7XG5cbiAgcmVhZG9ubHkgc3JjVXJsID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSB2ZXJpZnlVcmwgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHZlcmlmeURhdGEgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgKCgpID0+IFJlY29yZDxzdHJpbmcsIGFueT4pPigpO1xuICByZWFkb25seSB3aWR0aCA9IGlucHV0KDM3NSwgeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KTtcbiAgcmVhZG9ubHkgaGVpZ2h0ID0gaW5wdXQoMTg3LjUsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG5cbiAgcmVhZG9ubHkgdmVyaWZpZWQgPSBvdXRwdXQ8UmVzdWx0PENhcHRjaGE+PigpO1xuXG4gIHByaXZhdGUgY2FudmFzITogSFRNTENhbnZhc0VsZW1lbnQ7XG4gIHByaXZhdGUgY3R4ITogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICBwcml2YXRlIGJnSW1hZ2UhOiBIVE1MSW1hZ2VFbGVtZW50O1xuICBwcml2YXRlIHNsaWRlSW1hZ2UhOiBIVE1MSW1hZ2VFbGVtZW50O1xuXG4gIHNlY3JldHM6IHsgc2VjcmV0S2V5OiBzdHJpbmcsIHRva2VuOiBzdHJpbmcgfSA9IHt9IGFzIGFueTtcblxuICByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgdmVyaWZ5aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgYWxlcnQgPSB7XG4gICAgdHlwZTogc2lnbmFsPCdzdWNjZXNzJyB8ICdlcnJvcic+KCdzdWNjZXNzJyksXG4gICAgY29udGVudDogc2lnbmFsPHN0cmluZz4oJycpLFxuICAgIHZpc2libGU6IHNpZ25hbDxib29sZWFuPihmYWxzZSlcbiAgfVxuXG4gIGJlZ2luVGltZSE6IG51bWJlcjtcbiAgZW5kVGltZSE6IG51bWJlcjtcblxuICAvKiog5ruR5Yqo5byA5aeL55qEWCAqL1xuICBkcmFnU3RhcnRYID0gLTE7XG4gIHJlYWRvbmx5IG9mZnNldFggPSBzaWduYWwoMCk7XG5cbiAgcmVhZG9ubHkgYmFyID0ge1xuICAgIGJhY2tncm91bmQ6IHNpZ25hbCgndmFyKC0taW5kaWNhdG9yLXByaW1hcnktY29sb3IpJyksIC8vIOa7keWdl+iDjOaZr+iJslxuICB9XG5cbiAgLyoqXG4gICAqIOW9k+WJjeWwuuWvuCDpmaTkuo4g5Y6f5aeL5bC65a+45b6X5Yiw55qE5ZWGXG4gICAqIOeUqOS6juetieavlOS+i+e8qeaUvlxuICAgKi9cbiAgcmVhZG9ubHkgcXVvdGllbnQgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIHdpZHRoOiB0aGlzLndpZHRoKCkgLyBXSURUSCxcbiAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0KCkgLyBIRUlHSFRcbiAgfSkpXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGRwciA9IGRldmljZVBpeGVsUmF0aW87XG4gICAgICB0aGlzLmNhbnZhcyA9IHRoaXMuY2FudmFzUmVmKCkubmF0aXZlRWxlbWVudDtcbiAgICAgIHRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gd2l0aFBpeGVsKHRoaXMud2lkdGgoKSk7XG4gICAgICB0aGlzLmNhbnZhcy5zdHlsZS5oZWlnaHQgPSB3aXRoUGl4ZWwodGhpcy5oZWlnaHQoKSk7XG4gICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHdpdGhEcHIodGhpcy53aWR0aCgpKTtcbiAgICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IHdpdGhEcHIodGhpcy5oZWlnaHQoKSk7XG5cbiAgICAgIHRoaXMuY3R4ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKSE7XG4gICAgICB0aGlzLmN0eC5zY2FsZShkcHIsIGRwcik7XG5cbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH0pXG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMub2Zmc2V0WC5zZXQoMCk7XG4gICAgdGhpcy5hbGVydC52aXNpYmxlLnNldChmYWxzZSk7XG4gICAgdGhpcy5iYXIuYmFja2dyb3VuZC5zZXQoJ3ZhcigtLWluZGljYXRvci1wcmltYXJ5LWNvbG9yKScpXG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmh0dHAucG9zdDxSZXN1bHQ8Q2FwdGNoYT4+KHRoaXMuc3JjVXJsKCksIHsgY2FwdGNoYVR5cGU6IENhcHRjaGFUeXBlLkJsb2NrUHV6emxlIH0sIEhUVFBfT1BUSU9OUykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIGlmIChyZXNwb25zZS5jb2RlID09PSAwKSB7XG4gICAgICAgIHRoaXMuc2VjcmV0cy5zZWNyZXRLZXkgPSByZXNwb25zZS5kYXRhLnNlY3JldEtleTtcbiAgICAgICAgdGhpcy5zZWNyZXRzLnRva2VuID0gcmVzcG9uc2UuZGF0YS50b2tlbjtcbiAgICAgICAgdGhpcy5iZ0ltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgIHRoaXMuc2xpZGVJbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICB0aGlzLmJnSW1hZ2Uuc3JjID0gYGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwke3Jlc3BvbnNlLmRhdGEub3JpZ2luYWxJbWFnZUJhc2U2NH1gO1xuICAgICAgICB0aGlzLnNsaWRlSW1hZ2Uuc3JjID0gYGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwke3Jlc3BvbnNlLmRhdGEuamlnc2F3SW1hZ2VCYXNlNjR9YDtcbiAgICAgICAgemlwKFxuICAgICAgICAgIGZyb21FdmVudCh0aGlzLmJnSW1hZ2UsICdsb2FkJyksXG4gICAgICAgICAgZnJvbUV2ZW50KHRoaXMuc2xpZGVJbWFnZSwgJ2xvYWQnKSxcbiAgICAgICAgKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5iZWdpblRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIHRoaXMuZHJhdygpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IocmVzcG9uc2UubXNnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZHJhdyh4ID0gMCkge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy53aWR0aCgpO1xuICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7XG4gICAgdGhpcy5jdHguY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIHRoaXMuY3R4LmRyYXdJbWFnZSh0aGlzLmJnSW1hZ2UsIDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIHRoaXMuY3R4LmRyYXdJbWFnZSh0aGlzLnNsaWRlSW1hZ2UsIHgsIDAsIHRoaXMucXVvdGllbnQoKS53aWR0aCAqIFBVWlpMRV9XSURUSCwgdGhpcy5xdW90aWVudCgpLmhlaWdodCAqIFBVWlpMRV9IRUlHSFQpO1xuICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgc2xpZGUoeDogbnVtYmVyKSB7XG4gICAgdGhpcy5kcmF3KHgpO1xuICB9XG5cbiAgdmVyaWZ5KHg6IG51bWJlcikge1xuICAgIHRoaXMudmVyaWZ5aW5nLnNldCh0cnVlKVxuICAgIC8vIOiuoeeul+WHuuWOn+Wni+enu+WKqOi3neemu1xuICAgIHggPSB4IC8gdGhpcy5xdW90aWVudCgpLndpZHRoO1xuXG4gICAgdGhpcy5lbmRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkoeyB4OiB4LCB5OiA1LjAgfSk7XG4gICAgY29uc3QgcG9pbnRKc29uID0gdGhpcy5zZWNyZXRzLnNlY3JldEtleSA/IGFlc0VuY3J5cHQoanNvbiwgdGhpcy5zZWNyZXRzLnNlY3JldEtleSkgOiBqc29uO1xuICAgIGNvbnN0IHZlcmlmeURhdGFWYWx1ZSA9IHRoaXMudmVyaWZ5RGF0YSgpO1xuICAgIGNvbnN0IHZlcmlmeURhdGEgPSB0eXBlb2YgdmVyaWZ5RGF0YVZhbHVlID09PSAnZnVuY3Rpb24nID8gdmVyaWZ5RGF0YVZhbHVlKCkgOiB2ZXJpZnlEYXRhVmFsdWU7XG4gICAgY29uc3Qgb2JqID0ge1xuICAgICAgY2FwdGNoYVR5cGU6IENhcHRjaGFUeXBlLkJsb2NrUHV6emxlLFxuICAgICAgcG9pbnRKc29uLFxuICAgICAgdG9rZW46IHRoaXMuc2VjcmV0cy50b2tlbixcbiAgICAgIC4uLnZlcmlmeURhdGFcbiAgICB9O1xuICAgIHRoaXMuaHR0cC5wb3N0PFJlc3VsdDxDYXB0Y2hhPj4odGhpcy52ZXJpZnlVcmwoKSwgb2JqLCBIVFRQX09QVElPTlMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5jb2RlICE9PSAwKSB7XG4gICAgICAgICAgdGhpcy5hbGVydC50eXBlLnNldCgnZXJyb3InKVxuICAgICAgICAgIHRoaXMuYWxlcnQuY29udGVudC5zZXQocmVzcG9uc2UubXNnKVxuICAgICAgICAgIHRoaXMuYWxlcnQudmlzaWJsZS5zZXQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5iYXIuYmFja2dyb3VuZC5zZXQoJ3ZhcigtLWluZGljYXRvci1kYW5nZXItY29sb3IpJylcbiAgICAgICAgICB0aGlzLnZlcmlmaWVkLmVtaXQoe1xuICAgICAgICAgICAgY29kZTogLTEsXG4gICAgICAgICAgICBtc2c6IHJlc3BvbnNlLm1zZyxcbiAgICAgICAgICAgIGRhdGE6IG51bGwhXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsZXJ0LnZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmFicyh0aGlzLmVuZFRpbWUgLSB0aGlzLmJlZ2luVGltZSkgLyAxMDAwO1xuICAgICAgICAgIHRoaXMuYWxlcnQudHlwZS5zZXQoJ3N1Y2Nlc3MnKVxuICAgICAgICAgIHRoaXMuYWxlcnQuY29udGVudC5zZXQoYOmqjOivgeaIkOWKn++8jOiAl+aXtiAke3NlY29uZHN9IOenkmApXG4gICAgICAgICAgdGhpcy5hbGVydC52aXNpYmxlLnNldCh0cnVlKTtcbiAgICAgICAgICB0aGlzLmJhci5iYWNrZ3JvdW5kLnNldCgndmFyKC0taW5kaWNhdG9yLXByaW1hcnktY29sb3IpJylcbiAgICAgICAgICBjb25zdCB0ZW1wID0gcmVzcG9uc2UuZGF0YS50b2tlbiArICctLS0nICsganNvbjtcbiAgICAgICAgICByZXNwb25zZS5kYXRhLmNhcHRjaGEgPSB0aGlzLnNlY3JldHMuc2VjcmV0S2V5ID8gYWVzRW5jcnlwdCh0ZW1wLCB0aGlzLnNlY3JldHMuc2VjcmV0S2V5KSA6IHRlbXA7XG4gICAgICAgICAgLy8gZGVsZXRlIHJlc3BvbnNlLmRhdGEudG9rZW47XG4gICAgICAgICAgLy8gZGVsZXRlIHJlc3BvbnNlLmRhdGEuY2FwdGNoYVR5cGU7XG4gICAgICAgICAgLy8gZGVsZXRlIHJlc3BvbnNlLmRhdGEucG9pbnRKc29uO1xuICAgICAgICAgIC8vIGRlbGV0ZSByZXNwb25zZS5kYXRhLnJlc3VsdDtcbiAgICAgICAgICB0aGlzLnZlcmlmaWVkLmVtaXQoe1xuICAgICAgICAgICAgY29kZTogMCxcbiAgICAgICAgICAgIG1zZzogcmVzcG9uc2UubXNnLFxuICAgICAgICAgICAgZGF0YTogcmVzcG9uc2UuZGF0YVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMudmVyaWZ5aW5nLnNldChmYWxzZSlcbiAgICB9KTtcbiAgfVxuXG4gIG9uUG9yaW50ZXJTdGFydChldmVudDogUG9pbnRlckV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmcoKSAmJiAhdGhpcy52ZXJpZnlpbmcoKSkge1xuICAgICAgLy8g6L+Z6YeM5LiN6Zi75q2i6buY6K6k5LqL5Lu277yM5ZCm5YiZ5Lya5b2x5ZON5by556qX55qEIGNsb3NlIG9uIG91dHNpZGUgY2xpY2sg5Yqf6IO9XG4gICAgICAvLyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIHRoaXMuZHJhZ1N0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnBvaW50ZXJ1cCcsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpwb2ludGVyY2FuY2VsJywgWyckZXZlbnQnXSlcbiAgb25Qb2ludGVyRW5kKGV2ZW50OiBQb2ludGVyRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgaWYgKHRoaXMuZHJhZ1N0YXJ0WCA+IC0xKSB7XG4gICAgICB0aGlzLnZlcmlmeSh0aGlzLm9mZnNldFgoKSk7XG4gICAgfVxuICAgIHRoaXMuZHJhZ1N0YXJ0WCA9IC0xO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnBvaW50ZXJtb3ZlJywgWyckZXZlbnQnXSlcbiAgb25Qb2ludGVyTW92ZShldmVudDogUG9pbnRlckV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIGlmICh0aGlzLmRyYWdTdGFydFggPiAtMSkgeyAvLyDlpoLmnpzlnKjmi5bliqjkuoZcbiAgICAgIGNvbnN0IGN1cnJlbnRYID0gZXZlbnQuY2xpZW50WDsgLy8g5b6X5Yiw5b2T5YmN55qEWFxuICAgICAgY29uc3Qgb2Zmc2V0ID0gY3VycmVudFggLSB0aGlzLmRyYWdTdGFydFg7IC8vIOW+l+WIsOaLluWKqOeahOi3neemu1xuICAgICAgdGhpcy5vZmZzZXRYLnNldChNYXRoLm1pbihNYXRoLm1heCgwLCBvZmZzZXQpLCB0aGlzLndpZHRoKCkgLSA0MikpO1xuICAgICAgdGhpcy5zbGlkZSh0aGlzLm9mZnNldFgoKSk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdW4tc2xpZGVyLWNhcHRjaGEtY2FudmFzLWNvbnRhaW5lclwiIFtzdHlsZS53aWR0aC5weF09XCJ3aWR0aCgpXCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHQoKVwiPlxuICA8Y2FudmFzICNjYW52YXM+PC9jYW52YXM+XG4gIEBpZiAoYWxlcnQudmlzaWJsZSgpKSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJzdW4tc2xpZGVyLWNhcHRjaGEtYWxlcnRcIlxuICAgICAgW2NsYXNzLnN1bi1zbGlkZXItY2FwdGNoYS1hbGVydC1zdWNjZXNzXT1cImFsZXJ0LnR5cGUoKSA9PT0gJ3N1Y2Nlc3MnXCJcbiAgICAgIFtjbGFzcy5zdW4tc2xpZGVyLWNhcHRjaGEtYWxlcnQtZGFuZ2VyXT1cImFsZXJ0LnR5cGUoKSA9PT0gJ2Vycm9yJ1wiPlxuICAgICAge3sgYWxlcnQuY29udGVudCgpIH19XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwic3VuLXNsaWRlci1jYXB0Y2hhLXRyYWNrXCIgW3N0eWxlXT1cInsgYmFja2dyb3VuZDogYmFyLmJhY2tncm91bmQoKSB9XCI+XG4gIDxkaXYgY2xhc3M9XCJzdW4tc2xpZGVyLWNhcHRjaGEtdHJvdWdoXCIgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlWCgnICsgb2Zmc2V0WCgpICsgJ3B4KSdcIj5cbiAgICA8c3BhbiBjbGFzcz1cInN1bi1zbGlkZXItY2FwdGNoYS10aXBcIj7mi5bliqjmu5HlnZfku6XlrozmiJDmi7zlm77pqozor4E8L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cInN1bi1zbGlkZXItY2FwdGNoYS1oYW5kbGVyXCIgKHBvaW50ZXJkb3duKT1cIm9uUG9yaW50ZXJTdGFydCgkZXZlbnQpXCI+XG4gICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjMyXCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD1cIjEwXCJcbiAgICAgICAgICBkPVwiTTgwIDE2MGgzNTJNODAgMjU2aDM1Mk04MCAzNTJoMzUyXCI+PC9wYXRoPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci11aS1zdW4tc2xpZGVyLWNhcHRjaGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy91aS1zdW4vc2xpZGVyLWNhcHRjaGEvc29sYXItYW5ndWxhci11aS1zdW4tc2xpZGVyLWNhcHRjaGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solar-angular-ui-sun.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"solar-angular-ui-sun.mjs","sources":["../tmp-esm2022/index.js","../tmp-esm2022/solar-angular-ui-sun.js"],"sourcesContent":["export default void 0;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy91aS1zdW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxLQUFLLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHZvaWQgMFxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci11aS1zdW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy91aS1zdW4vc29sYXItYW5ndWxhci11aS1zdW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"AAAA,YAAe,KAAK,CAAC;;ACArB;AACA;AACA"}
|
package/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
1
|
+
|
|
2
|
+
export { };
|
|
@@ -1 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
|
|
3
|
+
declare class SunNavProgressBar {
|
|
4
|
+
readonly navigating: i0.Signal<boolean>;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SunNavProgressBar, never>;
|
|
6
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SunNavProgressBar, "sun-nav-progress-bar", never, {}, {}, never, never, true, never>;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export { SunNavProgressBar };
|
package/package.json
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solar-angular/ui-sun",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "20.0.0",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@solar-angular/http": "
|
|
10
|
-
"@solar-angular/animations": "
|
|
9
|
+
"@solar-angular/http": "20.0.0",
|
|
10
|
+
"@solar-angular/animations": "20.0.0",
|
|
11
11
|
"crypto-js": "^4.2.0",
|
|
12
12
|
"tslib": "^2.3.0"
|
|
13
13
|
},
|
|
14
14
|
"peerDependencies": {
|
|
15
|
-
"@angular/
|
|
16
|
-
"@angular/
|
|
15
|
+
"@angular/cdk": ">=20.0.0",
|
|
16
|
+
"@angular/common": ">=20.0.0",
|
|
17
|
+
"@angular/core": ">=20.0.0"
|
|
17
18
|
},
|
|
18
19
|
"module": "fesm2022/solar-angular-ui-sun.mjs",
|
|
19
20
|
"typings": "index.d.ts",
|
|
@@ -25,6 +26,10 @@
|
|
|
25
26
|
"types": "./index.d.ts",
|
|
26
27
|
"default": "./fesm2022/solar-angular-ui-sun.mjs"
|
|
27
28
|
},
|
|
29
|
+
"./enter-focus-next": {
|
|
30
|
+
"types": "./enter-focus-next/index.d.ts",
|
|
31
|
+
"default": "./fesm2022/solar-angular-ui-sun-enter-focus-next.mjs"
|
|
32
|
+
},
|
|
28
33
|
"./nav-progress-bar": {
|
|
29
34
|
"types": "./nav-progress-bar/index.d.ts",
|
|
30
35
|
"default": "./fesm2022/solar-angular-ui-sun-nav-progress-bar.mjs"
|
|
@@ -1 +1,59 @@
|
|
|
1
|
-
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { ElementRef } from '@angular/core';
|
|
3
|
+
import { HttpClient } from '@angular/common/http';
|
|
4
|
+
import { Captcha } from '@solar-kit/planets/mercury';
|
|
5
|
+
import { Result } from '@solar-kit/planets/sun';
|
|
6
|
+
|
|
7
|
+
declare class SunSliderCaptcha {
|
|
8
|
+
private http;
|
|
9
|
+
readonly canvasRef: _angular_core.Signal<ElementRef<HTMLCanvasElement>>;
|
|
10
|
+
readonly srcUrl: _angular_core.InputSignal<string>;
|
|
11
|
+
readonly verifyUrl: _angular_core.InputSignal<string>;
|
|
12
|
+
readonly verifyData: _angular_core.InputSignal<Record<string, any> | (() => Record<string, any>) | undefined>;
|
|
13
|
+
readonly width: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
14
|
+
readonly height: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
15
|
+
readonly verified: _angular_core.OutputEmitterRef<Result<Captcha>>;
|
|
16
|
+
private canvas;
|
|
17
|
+
private ctx;
|
|
18
|
+
private bgImage;
|
|
19
|
+
private slideImage;
|
|
20
|
+
secrets: {
|
|
21
|
+
secretKey: string;
|
|
22
|
+
token: string;
|
|
23
|
+
};
|
|
24
|
+
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
25
|
+
readonly verifying: _angular_core.WritableSignal<boolean>;
|
|
26
|
+
readonly alert: {
|
|
27
|
+
type: _angular_core.WritableSignal<"success" | "error">;
|
|
28
|
+
content: _angular_core.WritableSignal<string>;
|
|
29
|
+
visible: _angular_core.WritableSignal<boolean>;
|
|
30
|
+
};
|
|
31
|
+
beginTime: number;
|
|
32
|
+
endTime: number;
|
|
33
|
+
/** 滑动开始的X */
|
|
34
|
+
dragStartX: number;
|
|
35
|
+
readonly offsetX: _angular_core.WritableSignal<number>;
|
|
36
|
+
readonly bar: {
|
|
37
|
+
background: _angular_core.WritableSignal<string>;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* 当前尺寸 除于 原始尺寸得到的商
|
|
41
|
+
* 用于等比例缩放
|
|
42
|
+
*/
|
|
43
|
+
readonly quotient: _angular_core.Signal<{
|
|
44
|
+
width: number;
|
|
45
|
+
height: number;
|
|
46
|
+
}>;
|
|
47
|
+
constructor(http: HttpClient);
|
|
48
|
+
refresh(): void;
|
|
49
|
+
private draw;
|
|
50
|
+
slide(x: number): void;
|
|
51
|
+
verify(x: number): void;
|
|
52
|
+
onPorinterStart(event: PointerEvent): void;
|
|
53
|
+
onPointerEnd(event: PointerEvent): void;
|
|
54
|
+
onPointerMove(event: PointerEvent): void;
|
|
55
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SunSliderCaptcha, never>;
|
|
56
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SunSliderCaptcha, "sun-slider-captcha", never, { "srcUrl": { "alias": "srcUrl"; "required": true; "isSignal": true; }; "verifyUrl": { "alias": "verifyUrl"; "required": true; "isSignal": true; }; "verifyData": { "alias": "verifyData"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, { "verified": "verified"; }, never, never, true, never>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { SunSliderCaptcha };
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import * as i0 from "@angular/core";
|
|
2
|
-
export declare class SunNavProgressBar {
|
|
3
|
-
readonly navigating: import("@angular/core").Signal<boolean>;
|
|
4
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SunNavProgressBar, never>;
|
|
5
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SunNavProgressBar, "sun-nav-progress-bar", never, {}, {}, never, never, true, never>;
|
|
6
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { ElementRef } from '@angular/core';
|
|
3
|
-
import { Captcha } from '@solar-kit/planets/mercury';
|
|
4
|
-
import { Result } from '@solar-kit/planets/sun';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class SunSliderCaptcha {
|
|
7
|
-
private http;
|
|
8
|
-
readonly canvasRef: import("@angular/core").Signal<ElementRef<HTMLCanvasElement>>;
|
|
9
|
-
readonly srcUrl: import("@angular/core").InputSignal<string>;
|
|
10
|
-
readonly verifyUrl: import("@angular/core").InputSignal<string>;
|
|
11
|
-
readonly verifyData: import("@angular/core").InputSignal<Record<string, any> | (() => Record<string, any>) | undefined>;
|
|
12
|
-
readonly width: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
13
|
-
readonly height: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
14
|
-
readonly verified: import("@angular/core").OutputEmitterRef<Result<Captcha>>;
|
|
15
|
-
private canvas;
|
|
16
|
-
private ctx;
|
|
17
|
-
private bgImage;
|
|
18
|
-
private slideImage;
|
|
19
|
-
secrets: {
|
|
20
|
-
secretKey: string;
|
|
21
|
-
token: string;
|
|
22
|
-
};
|
|
23
|
-
readonly loading: import("@angular/core").WritableSignal<boolean>;
|
|
24
|
-
readonly verifying: import("@angular/core").WritableSignal<boolean>;
|
|
25
|
-
readonly alert: {
|
|
26
|
-
type: import("@angular/core").WritableSignal<"success" | "error">;
|
|
27
|
-
content: import("@angular/core").WritableSignal<string>;
|
|
28
|
-
visible: import("@angular/core").WritableSignal<boolean>;
|
|
29
|
-
};
|
|
30
|
-
beginTime: number;
|
|
31
|
-
endTime: number;
|
|
32
|
-
/** 滑动开始的X */
|
|
33
|
-
dragStartX: number;
|
|
34
|
-
readonly offsetX: import("@angular/core").WritableSignal<number>;
|
|
35
|
-
readonly bar: {
|
|
36
|
-
background: import("@angular/core").WritableSignal<string>;
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* 当前尺寸 除于 原始尺寸得到的商
|
|
40
|
-
* 用于等比例缩放
|
|
41
|
-
*/
|
|
42
|
-
readonly quotient: import("@angular/core").Signal<{
|
|
43
|
-
width: number;
|
|
44
|
-
height: number;
|
|
45
|
-
}>;
|
|
46
|
-
constructor(http: HttpClient);
|
|
47
|
-
refresh(): void;
|
|
48
|
-
private draw;
|
|
49
|
-
slide(x: number): void;
|
|
50
|
-
verify(x: number): void;
|
|
51
|
-
onPorinterStart(event: PointerEvent): void;
|
|
52
|
-
onPointerEnd(event: PointerEvent): void;
|
|
53
|
-
onPointerMove(event: PointerEvent): void;
|
|
54
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SunSliderCaptcha, never>;
|
|
55
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SunSliderCaptcha, "sun-slider-captcha", never, { "srcUrl": { "alias": "srcUrl"; "required": true; "isSignal": true; }; "verifyUrl": { "alias": "verifyUrl"; "required": true; "isSignal": true; }; "verifyData": { "alias": "verifyData"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, { "verified": "verified"; }, never, never, true, never>;
|
|
56
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { HttpContext } from '@angular/common/http';
|
|
2
|
-
export declare const HTTP_OPTIONS: {
|
|
3
|
-
withCredentials: boolean;
|
|
4
|
-
context: HttpContext;
|
|
5
|
-
};
|
|
6
|
-
export declare const aesEncrypt: (word: string, secret: string) => string;
|
|
7
|
-
export declare function withDpr(value: number): number;
|