@acorex/core 18.16.0-next.8 → 19.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/fesm2022/acorex-core-config.mjs +3 -3
- package/fesm2022/acorex-core-date-time.mjs +23 -20
- package/fesm2022/acorex-core-date-time.mjs.map +1 -1
- package/fesm2022/acorex-core-events.mjs +3 -3
- package/fesm2022/acorex-core-file.mjs +10 -10
- package/fesm2022/acorex-core-format.mjs +17 -16
- package/fesm2022/acorex-core-format.mjs.map +1 -1
- package/fesm2022/acorex-core-image.mjs +3 -3
- package/fesm2022/acorex-core-network.mjs +3 -3
- package/fesm2022/acorex-core-pipes.mjs +3 -3
- package/fesm2022/acorex-core-platform.mjs +3 -3
- package/fesm2022/acorex-core-storage.mjs +9 -9
- package/fesm2022/acorex-core-translation.mjs +27 -27
- package/fesm2022/acorex-core-translation.mjs.map +1 -1
- package/fesm2022/acorex-core-utils.mjs +12 -11
- package/fesm2022/acorex-core-utils.mjs.map +1 -1
- package/fesm2022/acorex-core-validation.mjs +40 -40
- package/package.json +3 -37
- package/esm2022/acorex-core.mjs +0 -5
- package/esm2022/common/acorex-core-common.mjs +0 -5
- package/esm2022/common/countries/countries.data.mjs +0 -2640
- package/esm2022/common/countries/country.mjs +0 -2
- package/esm2022/common/index.mjs +0 -3
- package/esm2022/config/acorex-core-config.mjs +0 -5
- package/esm2022/config/index.mjs +0 -3
- package/esm2022/config/lib/configs.mjs +0 -7
- package/esm2022/config/lib/configs.service.mjs +0 -27
- package/esm2022/date-time/acorex-core-date-time.mjs +0 -5
- package/esm2022/date-time/index.mjs +0 -11
- package/esm2022/date-time/lib/calendar.service.mjs +0 -93
- package/esm2022/date-time/lib/dateTime.config.mjs +0 -50
- package/esm2022/date-time/lib/datetime.class.mjs +0 -337
- package/esm2022/date-time/lib/datetime.module.mjs +0 -28
- package/esm2022/date-time/lib/datetime.pipe.mjs +0 -29
- package/esm2022/date-time/lib/formatters/datetime-formatter.mjs +0 -38
- package/esm2022/date-time/lib/formatters/time-duration-formatter.mjs +0 -52
- package/esm2022/date-time/lib/formatters/timeleft-formatter.mjs +0 -90
- package/esm2022/date-time/lib/georgian.calendar.mjs +0 -198
- package/esm2022/date-time/lib/holidays.loader.mjs +0 -13
- package/esm2022/date-time/lib/jalali.calendar.mjs +0 -417
- package/esm2022/events/acorex-core-events.mjs +0 -5
- package/esm2022/events/index.mjs +0 -3
- package/esm2022/events/lib/event.service.mjs +0 -43
- package/esm2022/events/lib/event.type.mjs +0 -6
- package/esm2022/file/acorex-core-file.mjs +0 -5
- package/esm2022/file/index.mjs +0 -4
- package/esm2022/file/lib/file-size-formatter.mjs +0 -24
- package/esm2022/file/lib/file.module.mjs +0 -20
- package/esm2022/file/lib/file.service.mjs +0 -77
- package/esm2022/format/acorex-core-format.mjs +0 -5
- package/esm2022/format/index.mjs +0 -8
- package/esm2022/format/lib/format.config.mjs +0 -3
- package/esm2022/format/lib/format.module.mjs +0 -64
- package/esm2022/format/lib/format.pipe.mjs +0 -33
- package/esm2022/format/lib/format.service.mjs +0 -93
- package/esm2022/format/lib/format.types.mjs +0 -2
- package/esm2022/format/lib/formatters/number-formatter.mjs +0 -74
- package/esm2022/format/lib/formatters/string-formatter.mjs +0 -17
- package/esm2022/image/acorex-core-image.mjs +0 -5
- package/esm2022/image/index.mjs +0 -2
- package/esm2022/image/lib/image.service.mjs +0 -48
- package/esm2022/index.mjs +0 -2
- package/esm2022/memorize/acorex-core-memorize.mjs +0 -5
- package/esm2022/memorize/index.mjs +0 -2
- package/esm2022/memorize/lib/memorize.decorator.mjs +0 -19
- package/esm2022/network/acorex-core-network.mjs +0 -5
- package/esm2022/network/index.mjs +0 -5
- package/esm2022/network/lib/download-task.mjs +0 -47
- package/esm2022/network/lib/network.service.mjs +0 -85
- package/esm2022/network/lib/network.types.mjs +0 -16
- package/esm2022/network/lib/upload-task.mjs +0 -81
- package/esm2022/pipes/acorex-core-pipes.mjs +0 -5
- package/esm2022/pipes/index.mjs +0 -2
- package/esm2022/pipes/lib/safe/safe.pipe.mjs +0 -38
- package/esm2022/platform/acorex-core-platform.mjs +0 -5
- package/esm2022/platform/index.mjs +0 -2
- package/esm2022/platform/lib/platform.service.mjs +0 -293
- package/esm2022/storage/acorex-core-storage.mjs +0 -5
- package/esm2022/storage/cookie-storage.service.mjs +0 -196
- package/esm2022/storage/index.mjs +0 -5
- package/esm2022/storage/local-storage.service.mjs +0 -59
- package/esm2022/storage/session-storage.service.mjs +0 -35
- package/esm2022/storage/storage.interface.mjs +0 -2
- package/esm2022/translation/acorex-core-translation.mjs +0 -5
- package/esm2022/translation/index.mjs +0 -9
- package/esm2022/translation/lib/translation-scope.resolver.mjs +0 -11
- package/esm2022/translation/lib/translation.config.mjs +0 -20
- package/esm2022/translation/lib/translation.loader.mjs +0 -14
- package/esm2022/translation/lib/translation.module.mjs +0 -40
- package/esm2022/translation/lib/translation.service.mjs +0 -215
- package/esm2022/translation/lib/translation.types.mjs +0 -2
- package/esm2022/translation/lib/translator.directive.mjs +0 -28
- package/esm2022/translation/lib/translator.pipe.mjs +0 -23
- package/esm2022/types/acorex-core-types.mjs +0 -5
- package/esm2022/types/index.mjs +0 -2
- package/esm2022/utils/acorex-core-utils.mjs +0 -5
- package/esm2022/utils/index.mjs +0 -8
- package/esm2022/utils/lib/auto-unsubscribe.mjs +0 -36
- package/esm2022/utils/lib/color-util.mjs +0 -136
- package/esm2022/utils/lib/drawing-util.mjs +0 -32
- package/esm2022/utils/lib/html-util.mjs +0 -54
- package/esm2022/utils/lib/resize.directive.mjs +0 -124
- package/esm2022/utils/lib/string-util.mjs +0 -19
- package/esm2022/utils/lib/utils.module.mjs +0 -18
- package/esm2022/validation/acorex-core-validation.mjs +0 -5
- package/esm2022/validation/index.mjs +0 -18
- package/esm2022/validation/lib/rules/between-rule.mjs +0 -31
- package/esm2022/validation/lib/rules/callback-rule.mjs +0 -36
- package/esm2022/validation/lib/rules/equal-rule.mjs +0 -26
- package/esm2022/validation/lib/rules/greater-than.mjs +0 -25
- package/esm2022/validation/lib/rules/length-rule.mjs +0 -23
- package/esm2022/validation/lib/rules/less-than-rule.mjs +0 -25
- package/esm2022/validation/lib/rules/maxlength-rule.mjs +0 -24
- package/esm2022/validation/lib/rules/minlength-rule.mjs +0 -23
- package/esm2022/validation/lib/rules/regex-rule.mjs +0 -46
- package/esm2022/validation/lib/rules/required-rule.mjs +0 -39
- package/esm2022/validation/lib/validation.config.mjs +0 -33
- package/esm2022/validation/lib/validation.module.mjs +0 -84
- package/esm2022/validation/lib/validation.service.mjs +0 -98
- package/esm2022/validation/lib/validation.types.mjs +0 -3
@@ -1,36 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import { Subject, takeUntil } from 'rxjs';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export function AXAutoUnsubscriber() {
|
5
|
-
return function (constructor) {
|
6
|
-
const orig = constructor.prototype.ngOnDestroy;
|
7
|
-
constructor.prototype.ngOnDestroy = function () {
|
8
|
-
for (const prop in this) {
|
9
|
-
const property = this[prop];
|
10
|
-
if (typeof property.subscribe === 'function') {
|
11
|
-
property.unsubscribe();
|
12
|
-
}
|
13
|
-
}
|
14
|
-
orig.apply();
|
15
|
-
};
|
16
|
-
};
|
17
|
-
}
|
18
|
-
export class AXUnsubscriber {
|
19
|
-
constructor() {
|
20
|
-
this._destroy$ = new Subject();
|
21
|
-
this.takeUntilDestroy = (origin) => origin.pipe(takeUntil(this._destroy$));
|
22
|
-
}
|
23
|
-
unsubscribe() {
|
24
|
-
this._destroy$.next();
|
25
|
-
this._destroy$.complete();
|
26
|
-
}
|
27
|
-
ngOnDestroy() {
|
28
|
-
this.unsubscribe();
|
29
|
-
}
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXUnsubscriber, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
31
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXUnsubscriber }); }
|
32
|
-
}
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXUnsubscriber, decorators: [{
|
34
|
-
type: Injectable
|
35
|
-
}] });
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by11bnN1YnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS91dGlscy9zcmMvbGliL2F1dG8tdW5zdWJzY3JpYmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdEQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLFVBQVUsV0FBVztRQUMxQixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUMvQyxXQUFXLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRztZQUNsQyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVCLElBQUksT0FBTyxRQUFRLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUM3QyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUdELE1BQU0sT0FBTyxjQUFjO0lBRDNCO1FBRW1CLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWpDLHFCQUFnQixHQUFHLENBQUksTUFBa0MsRUFBOEIsRUFBRSxDQUN2RyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQVUxQztJQVJRLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDOzhHQWJVLGNBQWM7a0hBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBBWEF1dG9VbnN1YnNjcmliZXIoKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoY29uc3RydWN0b3IpIHtcbiAgICBjb25zdCBvcmlnID0gY29uc3RydWN0b3IucHJvdG90eXBlLm5nT25EZXN0cm95O1xuICAgIGNvbnN0cnVjdG9yLnByb3RvdHlwZS5uZ09uRGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAoY29uc3QgcHJvcCBpbiB0aGlzKSB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpc1twcm9wXTtcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eS5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBwcm9wZXJ0eS51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvcmlnLmFwcGx5KCk7XG4gICAgfTtcbiAgfTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYVW5zdWJzY3JpYmVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ID0gPFQ+KG9yaWdpbjogT2JzZXJ2YWJsZTxUPiB8IFN1YmplY3Q8VD4pOiBPYnNlcnZhYmxlPFQ+IHwgU3ViamVjdDxUPiA9PlxuICAgIG9yaWdpbi5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpO1xuXG4gIHB1YmxpYyB1bnN1YnNjcmliZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,136 +0,0 @@
|
|
1
|
-
import tinycolor from 'tinycolor2';
|
2
|
-
import tinygradient from 'tinygradient-es';
|
3
|
-
export class AXColorUtil {
|
4
|
-
static to(color, mode) {
|
5
|
-
const _color = tinycolor(color);
|
6
|
-
switch (mode) {
|
7
|
-
case 'rgba':
|
8
|
-
return _color.toRgb();
|
9
|
-
case 'hsla':
|
10
|
-
return _color.toHsl();
|
11
|
-
case 'hsva':
|
12
|
-
return _color.toHsv();
|
13
|
-
default:
|
14
|
-
return _color.toHex();
|
15
|
-
}
|
16
|
-
}
|
17
|
-
static toString(color, mode = null) {
|
18
|
-
const _color = tinycolor(color);
|
19
|
-
switch (mode) {
|
20
|
-
case 'rgba':
|
21
|
-
return _color.toRgbString();
|
22
|
-
case 'hsla':
|
23
|
-
return _color.toHslString();
|
24
|
-
case 'hsva':
|
25
|
-
return _color.toHsvString();
|
26
|
-
case 'hex': {
|
27
|
-
const rgba = _color.toRgb();
|
28
|
-
return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();
|
29
|
-
}
|
30
|
-
default: {
|
31
|
-
if (typeof color == 'string') {
|
32
|
-
if (color.toLowerCase().startsWith('#'))
|
33
|
-
return this.toString(color, 'hex');
|
34
|
-
else
|
35
|
-
return this.toString(color, 'rgba');
|
36
|
-
}
|
37
|
-
else {
|
38
|
-
return this.toString(color, 'rgba');
|
39
|
-
}
|
40
|
-
}
|
41
|
-
}
|
42
|
-
}
|
43
|
-
static isValid(color) {
|
44
|
-
const _color = tinycolor(color);
|
45
|
-
return _color.isValid();
|
46
|
-
}
|
47
|
-
static mix(baseColor, hex, percentage) {
|
48
|
-
return tinycolor.mix(baseColor, hex, percentage).toString('rgb');
|
49
|
-
}
|
50
|
-
static multiply(color1, color2) {
|
51
|
-
const rgb1 = tinycolor(color1).toRgb();
|
52
|
-
const rgb2 = tinycolor(color2).toRgb();
|
53
|
-
rgb1.b = Math.floor((rgb1.b * rgb2.b) / 255);
|
54
|
-
rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);
|
55
|
-
rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);
|
56
|
-
return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');
|
57
|
-
}
|
58
|
-
static contrastToWhite(color) {
|
59
|
-
return tinycolor.readability('#fff', color);
|
60
|
-
}
|
61
|
-
static lighten(hex, percentage) {
|
62
|
-
return tinycolor(hex).lighten(percentage);
|
63
|
-
}
|
64
|
-
static darken(hex, percentage) {
|
65
|
-
return tinycolor(hex).darken(percentage);
|
66
|
-
}
|
67
|
-
static brighten(hex, percentage) {
|
68
|
-
return tinycolor(hex).brighten(percentage);
|
69
|
-
}
|
70
|
-
static saturate(hex, percentage) {
|
71
|
-
return tinycolor(hex).saturate(percentage);
|
72
|
-
}
|
73
|
-
static desaturate(hex) {
|
74
|
-
return tinycolor(hex).getLuminance();
|
75
|
-
}
|
76
|
-
static equal(color1, color2) {
|
77
|
-
return tinycolor.equals(color1, color2);
|
78
|
-
}
|
79
|
-
static gradient(values) {
|
80
|
-
return tinygradient([...values]);
|
81
|
-
}
|
82
|
-
static getLuminance(hex) {
|
83
|
-
return tinycolor(hex).getLuminance();
|
84
|
-
}
|
85
|
-
static xyToRgb(vX, vY) {
|
86
|
-
vY = vY || 0.00000000001;
|
87
|
-
const Y = 1;
|
88
|
-
const X = (Y / vY) * vX;
|
89
|
-
const Z = (Y / vY) * (1 - vX - vY);
|
90
|
-
// Convert to RGB using Wide RGB D65 conversion.
|
91
|
-
let rgb = [
|
92
|
-
X * 1.656492 - Y * 0.354851 - Z * 0.255038,
|
93
|
-
-X * 0.707196 + Y * 1.655397 + Z * 0.036152,
|
94
|
-
X * 0.051713 - Y * 0.121364 + Z * 1.01153,
|
95
|
-
];
|
96
|
-
// Apply reverse gamma correction.
|
97
|
-
rgb = rgb.map((x) => (x <= 0.0031308 ? 12.92 * x : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055));
|
98
|
-
// Bring all negative components to zero.
|
99
|
-
rgb = rgb.map((x) => Math.max(0, x));
|
100
|
-
// If one component is greater than 1, weight components by that value.
|
101
|
-
const max = Math.max(...rgb);
|
102
|
-
if (max > 1) {
|
103
|
-
rgb = rgb.map((x) => x / max);
|
104
|
-
}
|
105
|
-
rgb = rgb.map((x) => Math.round(x * 255));
|
106
|
-
return 'rgb(' + rgb.join(',') + ')';
|
107
|
-
}
|
108
|
-
static colorStringToHex(color) {
|
109
|
-
// Check if the input is an RGBA color string
|
110
|
-
const rgbaMatch = color.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)$/i);
|
111
|
-
if (rgbaMatch) {
|
112
|
-
let [_, r, g, b, a] = rgbaMatch;
|
113
|
-
r = parseInt(r, 10);
|
114
|
-
g = parseInt(g, 10);
|
115
|
-
b = parseInt(b, 10);
|
116
|
-
a = a ? parseFloat(a) : 1;
|
117
|
-
// Convert RGB to hex
|
118
|
-
let hexColor = `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;
|
119
|
-
// Include alpha if present
|
120
|
-
if (a < 1) {
|
121
|
-
const alphaHex = Math.round(a * 255)
|
122
|
-
.toString(16)
|
123
|
-
.padStart(2, '0');
|
124
|
-
hexColor += alphaHex;
|
125
|
-
}
|
126
|
-
return hexColor;
|
127
|
-
}
|
128
|
-
// Check if the input is a hex color string
|
129
|
-
const hexMatch = color.match(/^#([0-9a-fA-F]{3}){1,2}$/);
|
130
|
-
if (hexMatch) {
|
131
|
-
return color;
|
132
|
-
}
|
133
|
-
throw new Error('Invalid color format');
|
134
|
-
}
|
135
|
-
}
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS91dGlscy9zcmMvbGliL2NvbG9yLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxTQUF5QixNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLFlBQTBCLE1BQU0saUJBQWlCLENBQUM7QUFJekQsTUFBTSxPQUFPLFdBQVc7SUFDdEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFvQixFQUFFLElBQWlCO1FBQy9DLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxNQUFNO2dCQUNULE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEI7Z0JBQ0UsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQW9CLEVBQUUsT0FBb0IsSUFBSTtRQUM1RCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDOUIsS0FBSyxNQUFNO2dCQUNULE9BQU8sTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRTlCLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDWCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMs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QUNsQixDQUFDO1FBRUQsMkNBQTJDO1FBQzNDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN6RCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFYQ29sb3JNb2RlID0gJ3JnYmEnIHwgJ2hleCcgfCAnaHNsYScgfCAnaHN2YScgfCBudWxsO1xuXG5pbXBvcnQgdGlueWNvbG9yLCB7IENvbG9ySW5wdXQgfSBmcm9tICd0aW55Y29sb3IyJztcbmltcG9ydCB0aW55Z3JhZGllbnQsIHsgSW5zdGFuY2UgfSBmcm9tICd0aW55Z3JhZGllbnQtZXMnO1xuXG5leHBvcnQgdHlwZSBBWENvbG9yRm9ybWF0ID0gQ29sb3JJbnB1dDtcblxuZXhwb3J0IGNsYXNzIEFYQ29sb3JVdGlsIHtcbiAgc3RhdGljIHRvKGNvbG9yOiBBWENvbG9yRm9ybWF0LCBtb2RlOiBBWENvbG9yTW9kZSk6IEFYQ29sb3JGb3JtYXQge1xuICAgIGNvbnN0IF9jb2xvciA9IHRpbnljb2xvcihjb2xvcik7XG4gICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICBjYXNlICdyZ2JhJzpcbiAgICAgICAgcmV0dXJuIF9jb2xvci50b1JnYigpO1xuICAgICAgY2FzZSAnaHNsYSc6XG4gICAgICAgIHJldHVybiBfY29sb3IudG9Ic2woKTtcbiAgICAgIGNhc2UgJ2hzdmEnOlxuICAgICAgICByZXR1cm4gX2NvbG9yLnRvSHN2KCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gX2NvbG9yLnRvSGV4KCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHRvU3RyaW5nKGNvbG9yOiBBWENvbG9yRm9ybWF0LCBtb2RlOiBBWENvbG9yTW9kZSA9IG51bGwpOiBzdHJpbmcge1xuICAgIGNvbnN0IF9jb2xvciA9IHRpbnljb2xvcihjb2xvcik7XG4gICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICBjYXNlICdyZ2JhJzpcbiAgICAgICAgcmV0dXJuIF9jb2xvci50b1JnYlN0cmluZygpO1xuICAgICAgY2FzZSAnaHNsYSc6XG4gICAgICAgIHJldHVybiBfY29sb3IudG9Ic2xTdHJpbmcoKTtcbiAgICAgIGNhc2UgJ2hzdmEnOlxuICAgICAgICByZXR1cm4gX2NvbG9yLnRvSHN2U3RyaW5nKCk7XG5cbiAgICAgIGNhc2UgJ2hleCc6IHtcbiAgICAgICAgY29uc3QgcmdiYSA9IF9jb2xvci50b1JnYigpO1xuICAgICAgICByZXR1cm4gcmdiYS5hICE9IDEgPyBfY29sb3IudG9IZXg4U3RyaW5nKCkgOiBfY29sb3IudG9IZXhTdHJpbmcoKTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb2xvciA9PSAnc3RyaW5nJykge1xuICAgICAgICAgIGlmIChjb2xvci50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJyMnKSkgcmV0dXJuIHRoaXMudG9TdHJpbmcoY29sb3IsICdoZXgnKTtcbiAgICAgICAgICBlbHNlIHJldHVybiB0aGlzLnRvU3RyaW5nKGNvbG9yLCAncmdiYScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKGNvbG9yLCAncmdiYScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGlzVmFsaWQoY29sb3I6IEFYQ29sb3JGb3JtYXQpOiBib29sZWFuIHtcbiAgICBjb25zdCBfY29sb3IgPSB0aW55Y29sb3IoY29sb3IpO1xuICAgIHJldHVybiBfY29sb3IuaXNWYWxpZCgpO1xuICB9XG5cbiAgc3RhdGljIG1peChiYXNlQ29sb3I6IEFYQ29sb3JGb3JtYXQsIGhleDogQVhDb2xvckZvcm1hdCwgcGVyY2VudGFnZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGlueWNvbG9yLm1peChiYXNlQ29sb3IsIGhleCwgcGVyY2VudGFnZSkudG9TdHJpbmcoJ3JnYicpO1xuICB9XG5cbiAgc3RhdGljIG11bHRpcGx5KGNvbG9yMTogQVhDb2xvckZvcm1hdCwgY29sb3IyOiBBWENvbG9yRm9ybWF0KTogc3RyaW5nIHtcbiAgICBjb25zdCByZ2IxID0gdGlueWNvbG9yKGNvbG9yMSkudG9SZ2IoKTtcbiAgICBjb25zdCByZ2IyID0gdGlueWNvbG9yKGNvbG9yMikudG9SZ2IoKTtcbiAgICByZ2IxLmIgPSBNYXRoLmZsb29yKChyZ2IxLmIgKiByZ2IyLmIpIC8gMjU1KTtcbiAgICByZ2IxLmcgPSBNYXRoLmZsb29yKChyZ2IxLmcgKiByZ2IyLmcpIC8gMjU1KTtcbiAgICByZ2IxLnIgPSBNYXRoLmZsb29yKChyZ2IxLnIgKiByZ2IyLnIpIC8gMjU1KTtcbiAgICByZXR1cm4gdGlueWNvbG9yKCdyZ2IgJyArIHJnYjEuciArICcgJyArIHJnYjEuZyArICcgJyArIHJnYjEuYikudG9TdHJpbmcoJ3JnYicpO1xuICB9XG5cbiAgc3RhdGljIGNvbnRyYXN0VG9XaGl0ZShjb2xvcjogQVhDb2xvckZvcm1hdCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRpbnljb2xvci5yZWFkYWJpbGl0eSgnI2ZmZicsIGNvbG9yKTtcbiAgfVxuXG4gIHN0YXRpYyBsaWdodGVuKGhleDogQVhDb2xvckZvcm1hdCwgcGVyY2VudGFnZT86IG51bWJlcikge1xuICAgIHJldHVybiB0aW55Y29sb3IoaGV4KS5saWdodGVuKHBlcmNlbnRhZ2UpO1xuICB9XG5cbiAgc3RhdGljIGRhcmtlbihoZXg6IEFYQ29sb3JGb3JtYXQsIHBlcmNlbnRhZ2U/OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGlueWNvbG9yKGhleCkuZGFya2VuKHBlcmNlbnRhZ2UpO1xuICB9XG5cbiAgc3RhdGljIGJyaWdodGVuKGhleDogQVhDb2xvckZvcm1hdCwgcGVyY2VudGFnZT86IG51bWJlcikge1xuICAgIHJldHVybiB0aW55Y29sb3IoaGV4KS5icmlnaHRlbihwZXJjZW50YWdlKTtcbiAgfVxuXG4gIHN0YXRpYyBzYXR1cmF0ZShoZXg6IEFYQ29sb3JGb3JtYXQsIHBlcmNlbnRhZ2U/OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGlueWNvbG9yKGhleCkuc2F0dXJhdGUocGVyY2VudGFnZSk7XG4gIH1cblxuICBzdGF0aWMgZGVzYXR1cmF0ZShoZXg6IEFYQ29sb3JGb3JtYXQpIHtcbiAgICByZXR1cm4gdGlueWNvbG9yKGhleCkuZ2V0THVtaW5hbmNlKCk7XG4gIH1cblxuICBzdGF0aWMgZXF1YWwoY29sb3IxOiBBWENvbG9yRm9ybWF0LCBjb2xvcjI6IEFYQ29sb3JGb3JtYXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGlueWNvbG9yLmVxdWFscyhjb2xvcjEsIGNvbG9yMik7XG4gIH1cblxuICBzdGF0aWMgZ3JhZGllbnQodmFsdWVzOiB1bmtub3duW10gfCB7IGNvbG9yOiB1bmtub3duOyBwb3M6IG51bWJlciB9W10pOiBJbnN0YW5jZSB7XG4gICAgcmV0dXJuIHRpbnlncmFkaWVudChbLi4udmFsdWVzXSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0THVtaW5hbmNlKGhleDogQVhDb2xvckZvcm1hdCkge1xuICAgIHJldHVybiB0aW55Y29sb3IoaGV4KS5nZXRMdW1pbmFuY2UoKTtcbiAgfVxuXG4gIHN0YXRpYyB4eVRvUmdiKHZYLCB2WSk6IHN0cmluZyB7XG4gICAgdlkgPSB2WSB8fCAwLjAwMDAwMDAwMDAxO1xuICAgIGNvbnN0IFkgPSAxO1xuICAgIGNvbnN0IFggPSAoWSAvIHZZKSAqIHZYO1xuICAgIGNvbnN0IFogPSAoWSAvIHZZKSAqICgxIC0gdlggLSB2WSk7XG5cbiAgICAvLyBDb252ZXJ0IHRvIFJHQiB1c2luZyBXaWRlIFJHQiBENjUgY29udmVyc2lvbi5cbiAgICBsZXQgcmdiID0gW1xuICAgICAgWCAqIDEuNjU2NDkyIC0gWSAqIDAuMzU0ODUxIC0gWiAqIDAuMjU1MDM4LFxuICAgICAgLVggKiAwLjcwNzE5NiArIFkgKiAxLjY1NTM5NyArIFogKiAwLjAzNjE1MixcbiAgICAgIFggKiAwLjA1MTcxMyAtIFkgKiAwLjEyMTM2NCArIFogKiAxLjAxMTUzLFxuICAgIF07XG5cbiAgICAvLyBBcHBseSByZXZlcnNlIGdhbW1hIGNvcnJlY3Rpb24uXG4gICAgcmdiID0gcmdiLm1hcCgoeCkgPT4gKHggPD0gMC4wMDMxMzA4ID8gMTIuOTIgKiB4IDogKDEuMCArIDAuMDU1KSAqIE1hdGgucG93KHgsIDEuMCAvIDIuNCkgLSAwLjA1NSkpO1xuXG4gICAgLy8gQnJpbmcgYWxsIG5lZ2F0aXZlIGNvbXBvbmVudHMgdG8gemVyby5cbiAgICByZ2IgPSByZ2IubWFwKCh4KSA9PiBNYXRoLm1heCgwLCB4KSk7XG5cbiAgICAvLyBJZiBvbmUgY29tcG9uZW50IGlzIGdyZWF0ZXIgdGhhbiAxLCB3ZWlnaHQgY29tcG9uZW50cyBieSB0aGF0IHZhbHVlLlxuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnJnYik7XG4gICAgaWYgKG1heCA+IDEpIHtcbiAgICAgIHJnYiA9IHJnYi5tYXAoKHgpID0+IHggLyBtYXgpO1xuICAgIH1cblxuICAgIHJnYiA9IHJnYi5tYXAoKHgpID0+IE1hdGgucm91bmQoeCAqIDI1NSkpO1xuXG4gICAgcmV0dXJuICdyZ2IoJyArIHJnYi5qb2luKCcsJykgKyAnKSc7XG4gIH1cblxuICBzdGF0aWMgY29sb3JTdHJpbmdUb0hleChjb2xvcikge1xuICAgIC8vIENoZWNrIGlmIHRoZSBpbnB1dCBpcyBhbiBSR0JBIGNvbG9yIHN0cmluZ1xuICAgIGNvbnN0IHJnYmFNYXRjaCA9IGNvbG9yLm1hdGNoKC9ecmdiYT9cXChcXHMqKFxcZCspXFxzKixcXHMqKFxcZCspXFxzKixcXHMqKFxcZCspXFxzKig/OixcXHMqKFtcXGQuXSspKT9cXHMqXFwpJC9pKTtcbiAgICBpZiAocmdiYU1hdGNoKSB7XG4gICAgICBsZXQgW18sIHIsIGcsIGIsIGFdID0gcmdiYU1hdGNoO1xuICAgICAgciA9IHBhcnNlSW50KHIsIDEwKTtcbiAgICAgIGcgPSBwYXJzZUludChnLCAxMCk7XG4gICAgICBiID0gcGFyc2VJbnQoYiwgMTApO1xuICAgICAgYSA9IGEgPyBwYXJzZUZsb2F0KGEpIDogMTtcblxuICAgICAgLy8gQ29udmVydCBSR0IgdG8gaGV4XG4gICAgICBsZXQgaGV4Q29sb3IgPSBgIyR7KCgxIDw8IDI0KSArIChyIDw8IDE2KSArIChnIDw8IDgpICsgYikudG9TdHJpbmcoMTYpLnNsaWNlKDEpfWA7XG5cbiAgICAgIC8vIEluY2x1ZGUgYWxwaGEgaWYgcHJlc2VudFxuICAgICAgaWYgKGEgPCAxKSB7XG4gICAgICAgIGNvbnN0IGFscGhhSGV4ID0gTWF0aC5yb3VuZChhICogMjU1KVxuICAgICAgICAgIC50b1N0cmluZygxNilcbiAgICAgICAgICAucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgaGV4Q29sb3IgKz0gYWxwaGFIZXg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBoZXhDb2xvcjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgaW5wdXQgaXMgYSBoZXggY29sb3Igc3RyaW5nXG4gICAgY29uc3QgaGV4TWF0Y2ggPSBjb2xvci5tYXRjaCgvXiMoWzAtOWEtZkEtRl17M30pezEsMn0kLyk7XG4gICAgaWYgKGhleE1hdGNoKSB7XG4gICAgICByZXR1cm4gY29sb3I7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbG9yIGZvcm1hdCcpO1xuICB9XG59XG4iXX0=
|
@@ -1,32 +0,0 @@
|
|
1
|
-
// @dynamic
|
2
|
-
export class AXDrawingUtil {
|
3
|
-
static collision(a, b) {
|
4
|
-
const ac = a.getBoundingClientRect();
|
5
|
-
const bc = b.getBoundingClientRect();
|
6
|
-
if (ac.left < bc.left + bc.width &&
|
7
|
-
ac.left + ac.width > bc.left &&
|
8
|
-
ac.top < bc.top + bc.height &&
|
9
|
-
ac.top + ac.height > bc.top) {
|
10
|
-
return true;
|
11
|
-
}
|
12
|
-
else {
|
13
|
-
return false;
|
14
|
-
}
|
15
|
-
}
|
16
|
-
static isInElementBound(pos, element) {
|
17
|
-
const elBound = element.getBoundingClientRect();
|
18
|
-
return AXDrawingUtil.isInRecPoint(pos, {
|
19
|
-
left: elBound.x,
|
20
|
-
width: elBound.width,
|
21
|
-
top: elBound.y,
|
22
|
-
height: elBound.height,
|
23
|
-
});
|
24
|
-
}
|
25
|
-
static isInRecPoint(pos, rec) {
|
26
|
-
return (pos.x >= rec.left && pos.x <= rec.left + rec.width && pos.y >= rec.top && pos.y <= rec.top + rec.height);
|
27
|
-
}
|
28
|
-
static convertRemToPixels(rem) {
|
29
|
-
return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);
|
30
|
-
}
|
31
|
-
}
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2luZy11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3V0aWxzL3NyYy9saWIvZHJhd2luZy11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLFdBQVc7QUFDWCxNQUFNLE9BQU8sYUFBYTtJQUN4QixNQUFNLENBQUMsU0FBUyxDQUFDLENBQWMsRUFBRSxDQUFjO1FBQzdDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRXJDLElBQ0UsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLO1lBQzVCLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSTtZQUM1QixFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU07WUFDM0IsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQzNCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFZLEVBQUUsT0FBb0I7UUFDeEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDaEQsT0FBTyxhQUFhLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtZQUNyQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDZixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2QsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQVksRUFBRSxHQUErQjtRQUMvRCxPQUFPLENBQ0wsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FDeEcsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBVztRQUNuQyxPQUFPLEdBQUcsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9FLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQVhQb2ludCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYQm91bmRpbmdDbGllbnRSZWN0IHtcbiAgbGVmdD86IG51bWJlcjtcbiAgdG9wPzogbnVtYmVyO1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICBib3R0b20/OiBudW1iZXI7XG4gIHJpZ2h0PzogbnVtYmVyO1xufVxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBBWERyYXdpbmdVdGlsIHtcbiAgc3RhdGljIGNvbGxpc2lvbihhOiBIVE1MRWxlbWVudCwgYjogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBhYyA9IGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgYmMgPSBiLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgaWYgKFxuICAgICAgYWMubGVmdCA8IGJjLmxlZnQgKyBiYy53aWR0aCAmJlxuICAgICAgYWMubGVmdCArIGFjLndpZHRoID4gYmMubGVmdCAmJlxuICAgICAgYWMudG9wIDwgYmMudG9wICsgYmMuaGVpZ2h0ICYmXG4gICAgICBhYy50b3AgKyBhYy5oZWlnaHQgPiBiYy50b3BcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGlzSW5FbGVtZW50Qm91bmQocG9zOiBBWFBvaW50LCBlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVsQm91bmQgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiBBWERyYXdpbmdVdGlsLmlzSW5SZWNQb2ludChwb3MsIHtcbiAgICAgIGxlZnQ6IGVsQm91bmQueCxcbiAgICAgIHdpZHRoOiBlbEJvdW5kLndpZHRoLFxuICAgICAgdG9wOiBlbEJvdW5kLnksXG4gICAgICBoZWlnaHQ6IGVsQm91bmQuaGVpZ2h0LFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGlzSW5SZWNQb2ludChwb3M6IEFYUG9pbnQsIHJlYzogQVhCb3VuZGluZ0NsaWVudFJlY3QgfCBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgcG9zLnggPj0gcmVjLmxlZnQgJiYgcG9zLnggPD0gcmVjLmxlZnQgKyByZWMud2lkdGggJiYgcG9zLnkgPj0gcmVjLnRvcCAmJiBwb3MueSA8PSByZWMudG9wICsgcmVjLmhlaWdodFxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgY29udmVydFJlbVRvUGl4ZWxzKHJlbTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcmVtICogcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZm9udFNpemUpO1xuICB9XG59XG4iXX0=
|
@@ -1,54 +0,0 @@
|
|
1
|
-
import { isBrowser } from '@acorex/core/platform';
|
2
|
-
// @dynamic
|
3
|
-
export class AXHtmlUtil {
|
4
|
-
static focusElement(element) {
|
5
|
-
const list = ['button', 'input', '[href]', 'select', 'textarea', '[tabindex]'].map((c) => c + ':not([tabindex="-1"])');
|
6
|
-
const focusable = element.querySelector(list.join(', '));
|
7
|
-
if (focusable) {
|
8
|
-
focusable.focus();
|
9
|
-
return focusable;
|
10
|
-
}
|
11
|
-
return null;
|
12
|
-
}
|
13
|
-
static blurElement(element) {
|
14
|
-
const list = ['button', 'input', '[href]', 'select', 'textarea', '[tabindex]'].map((c) => c + ':not([tabindex="-1"])');
|
15
|
-
const focusable = element.querySelector(list.join(', '));
|
16
|
-
if (focusable) {
|
17
|
-
focusable.blur();
|
18
|
-
return focusable;
|
19
|
-
}
|
20
|
-
return null;
|
21
|
-
}
|
22
|
-
static hasFocus(element) {
|
23
|
-
return element.matches(':focus-within') || element.matches(':focus');
|
24
|
-
}
|
25
|
-
static isRtl(element) {
|
26
|
-
if (isBrowser()) {
|
27
|
-
const rtl = element.classList.contains('ax-rtl') || window.getComputedStyle(element, null).getPropertyValue('direction') === 'rtl';
|
28
|
-
return rtl;
|
29
|
-
}
|
30
|
-
return false;
|
31
|
-
}
|
32
|
-
/**
|
33
|
-
* Helper function to check if an element is scrollable
|
34
|
-
*/
|
35
|
-
static isScrollable(element) {
|
36
|
-
const overflowY = window.getComputedStyle(element).overflowY;
|
37
|
-
return (overflowY === 'auto' || overflowY === 'scroll') && element.scrollHeight > element.clientHeight;
|
38
|
-
}
|
39
|
-
/**
|
40
|
-
* Utility function to find scrollable parent elements
|
41
|
-
*/
|
42
|
-
static getScrollableParents(element) {
|
43
|
-
const parents = [];
|
44
|
-
let currentElement = element;
|
45
|
-
while (currentElement) {
|
46
|
-
if (AXHtmlUtil.isScrollable(currentElement)) {
|
47
|
-
parents.push(currentElement);
|
48
|
-
}
|
49
|
-
currentElement = currentElement.parentElement;
|
50
|
-
}
|
51
|
-
return parents;
|
52
|
-
}
|
53
|
-
}
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3V0aWxzL3NyYy9saWIvaHRtbC11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRCxXQUFXO0FBQ1gsTUFBTSxPQUFPLFVBQVU7SUFFckIsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFvQjtRQUN0QyxNQUFNLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsdUJBQXVCLENBQUMsQ0FBQztRQUN2SCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQW9CO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3ZILE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBb0I7UUFDbEMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBb0I7UUFDL0IsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEtBQUssS0FBSyxDQUFDO1lBQ25JLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztNQUVFO0lBQ0YsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFvQjtRQUN0QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzdELE9BQU8sQ0FBQyxTQUFTLEtBQUssTUFBTSxJQUFJLFNBQVMsS0FBSyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7SUFDekcsQ0FBQztJQUVEOztLQUVDO0lBQ0QsTUFBTSxDQUFDLG9CQUFvQixDQUFDLE9BQW9CO1FBQzlDLE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7UUFDbEMsSUFBSSxjQUFjLEdBQXVCLE9BQU8sQ0FBQztRQUVqRCxPQUFPLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQy9CLENBQUM7WUFDRCxjQUFjLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQztRQUNoRCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNCcm93c2VyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBBWEh0bWxVdGlsIHtcblxuICBzdGF0aWMgZm9jdXNFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGxpc3QgPSBbJ2J1dHRvbicsICdpbnB1dCcsICdbaHJlZl0nLCAnc2VsZWN0JywgJ3RleHRhcmVhJywgJ1t0YWJpbmRleF0nXS5tYXAoKGMpID0+IGMgKyAnOm5vdChbdGFiaW5kZXg9XCItMVwiXSknKTtcbiAgICBjb25zdCBmb2N1c2FibGUgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KGxpc3Quam9pbignLCAnKSk7XG4gICAgaWYgKGZvY3VzYWJsZSkge1xuICAgICAgZm9jdXNhYmxlLmZvY3VzKCk7XG4gICAgICByZXR1cm4gZm9jdXNhYmxlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBibHVyRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBsaXN0ID0gWydidXR0b24nLCAnaW5wdXQnLCAnW2hyZWZdJywgJ3NlbGVjdCcsICd0ZXh0YXJlYScsICdbdGFiaW5kZXhdJ10ubWFwKChjKSA9PiBjICsgJzpub3QoW3RhYmluZGV4PVwiLTFcIl0pJyk7XG4gICAgY29uc3QgZm9jdXNhYmxlID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihsaXN0LmpvaW4oJywgJykpO1xuICAgIGlmIChmb2N1c2FibGUpIHtcbiAgICAgIGZvY3VzYWJsZS5ibHVyKCk7XG4gICAgICByZXR1cm4gZm9jdXNhYmxlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBoYXNGb2N1cyhlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoJzpmb2N1cy13aXRoaW4nKSB8fCBlbGVtZW50Lm1hdGNoZXMoJzpmb2N1cycpO1xuICB9XG5cbiAgc3RhdGljIGlzUnRsKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICBjb25zdCBydGwgPSBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnYXgtcnRsJykgfHwgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnZGlyZWN0aW9uJykgPT09ICdydGwnO1xuICAgICAgcmV0dXJuIHJ0bDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYW4gZWxlbWVudCBpcyBzY3JvbGxhYmxlXG4gICovXG4gIHN0YXRpYyBpc1Njcm9sbGFibGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBvdmVyZmxvd1kgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5vdmVyZmxvd1k7XG4gICAgcmV0dXJuIChvdmVyZmxvd1kgPT09ICdhdXRvJyB8fCBvdmVyZmxvd1kgPT09ICdzY3JvbGwnKSAmJiBlbGVtZW50LnNjcm9sbEhlaWdodCA+IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICB9XG5cbiAgLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGZpbmQgc2Nyb2xsYWJsZSBwYXJlbnQgZWxlbWVudHNcbiAqL1xuICBzdGF0aWMgZ2V0U2Nyb2xsYWJsZVBhcmVudHMoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFtdIHtcbiAgICBjb25zdCBwYXJlbnRzOiBIVE1MRWxlbWVudFtdID0gW107XG4gICAgbGV0IGN1cnJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbGVtZW50O1xuXG4gICAgd2hpbGUgKGN1cnJlbnRFbGVtZW50KSB7XG4gICAgICBpZiAoQVhIdG1sVXRpbC5pc1Njcm9sbGFibGUoY3VycmVudEVsZW1lbnQpKSB7XG4gICAgICAgIHBhcmVudHMucHVzaChjdXJyZW50RWxlbWVudCk7XG4gICAgICB9XG4gICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudHM7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,124 +0,0 @@
|
|
1
|
-
import { DOCUMENT, isPlatformBrowser } from '@angular/common';
|
2
|
-
import { Directive, ElementRef, HostListener, inject, Input, NgZone, PLATFORM_ID, Renderer2, } from '@angular/core';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class AXResizableDirective {
|
5
|
-
constructor(el, renderer, zone) {
|
6
|
-
this.el = el;
|
7
|
-
this.renderer = renderer;
|
8
|
-
this.zone = zone;
|
9
|
-
this.document = inject(DOCUMENT);
|
10
|
-
this.platformID = inject(PLATFORM_ID);
|
11
|
-
this.minWidth = 100; // Minimum width for the resizable element
|
12
|
-
this.isResizing = false;
|
13
|
-
this.createResizeHandle(); // Initialize the resize handle
|
14
|
-
}
|
15
|
-
// Create the resize handle element and apply inline styles
|
16
|
-
createResizeHandle() {
|
17
|
-
// Apply position relative to the container to allow the absolute positioning of the handle
|
18
|
-
this.renderer.setStyle(this.el.nativeElement, 'position', 'relative');
|
19
|
-
// Create the resize handle dynamically
|
20
|
-
this.resizeHandle = this.renderer.createElement('div');
|
21
|
-
this.renderer.addClass(this.resizeHandle, 'resize-handle');
|
22
|
-
this.renderer.appendChild(this.el.nativeElement, this.resizeHandle);
|
23
|
-
// Apply inline styles for the resize handle
|
24
|
-
this.renderer.setStyle(this.resizeHandle, 'width', '6px'); // Resize handle width
|
25
|
-
this.renderer.setStyle(this.resizeHandle, 'background-color', 'rgba(0, 0, 0, 0.2)');
|
26
|
-
this.renderer.setStyle(this.resizeHandle, 'position', 'absolute');
|
27
|
-
this.renderer.setStyle(this.resizeHandle, 'top', '0');
|
28
|
-
this.renderer.setStyle(this.resizeHandle, 'right', '0');
|
29
|
-
this.renderer.setStyle(this.resizeHandle, 'bottom', '0');
|
30
|
-
this.renderer.setStyle(this.resizeHandle, 'cursor', 'ew-resize'); // Horizontal resize cursor
|
31
|
-
this.renderer.setStyle(this.resizeHandle, 'z-index', '10');
|
32
|
-
this.renderer.setStyle(this.resizeHandle, 'transition', 'background-color 0.2s ease');
|
33
|
-
this.renderer.setStyle(this.resizeHandle, 'border-radius', '4px');
|
34
|
-
}
|
35
|
-
// Mouse down event: Start resizing
|
36
|
-
onMouseDown(event) {
|
37
|
-
// Only allow resizing when clicking on the handle
|
38
|
-
const handleRect = this.resizeHandle.getBoundingClientRect();
|
39
|
-
if (event.clientX >= handleRect.left &&
|
40
|
-
event.clientX <= handleRect.right &&
|
41
|
-
isPlatformBrowser(this.platformID)) {
|
42
|
-
this.zone.runOutsideAngular(() => {
|
43
|
-
this.isResizing = true;
|
44
|
-
this.document.body.style.cursor = 'ew-resize'; // Change cursor to resize mode
|
45
|
-
// Change resize handle color to blue when resizing starts
|
46
|
-
this.renderer.setStyle(this.resizeHandle, 'background-color', '#007bff');
|
47
|
-
event.preventDefault();
|
48
|
-
});
|
49
|
-
}
|
50
|
-
}
|
51
|
-
// Mouse move event: Resize the element
|
52
|
-
onMouseMove(event) {
|
53
|
-
this.zone.runOutsideAngular(() => {
|
54
|
-
if (this.isResizing) {
|
55
|
-
const rect = this.el.nativeElement.getBoundingClientRect();
|
56
|
-
let newWidth;
|
57
|
-
// Resize logic (LTR or RTL support)
|
58
|
-
if (isPlatformBrowser(this.platformID)) {
|
59
|
-
if (this.document.documentElement.dir === 'rtl') {
|
60
|
-
newWidth = rect.right - event.clientX;
|
61
|
-
}
|
62
|
-
else {
|
63
|
-
newWidth = event.clientX - rect.left;
|
64
|
-
}
|
65
|
-
}
|
66
|
-
// Ensure the width does not go below the minimum width
|
67
|
-
if (newWidth > this.minWidth) {
|
68
|
-
this.renderer.setStyle(this.el.nativeElement, 'width', `${newWidth}px`);
|
69
|
-
}
|
70
|
-
}
|
71
|
-
});
|
72
|
-
}
|
73
|
-
// Mouse up event: End resizing
|
74
|
-
onMouseUp() {
|
75
|
-
this.zone.runOutsideAngular(() => {
|
76
|
-
if (this.isResizing && isPlatformBrowser(this.platformID)) {
|
77
|
-
this.isResizing = false;
|
78
|
-
this.document.body.style.cursor = 'default'; // Reset the cursor
|
79
|
-
// Reset the resize handle color to default when resizing ends
|
80
|
-
this.renderer.setStyle(this.resizeHandle, 'background-color', 'rgba(0, 0, 0, 0.2)');
|
81
|
-
}
|
82
|
-
});
|
83
|
-
}
|
84
|
-
// Mouse enter event to change the background color (hover effect)
|
85
|
-
onMouseEnter() {
|
86
|
-
// Only change color to blue if not resizing
|
87
|
-
if (!this.isResizing) {
|
88
|
-
this.renderer.setStyle(this.resizeHandle, 'background-color', '#007bff'); // Blue color on hover
|
89
|
-
}
|
90
|
-
}
|
91
|
-
// Mouse leave event to reset the background color
|
92
|
-
onMouseLeave() {
|
93
|
-
// Only reset to default color if not resizing
|
94
|
-
if (!this.isResizing) {
|
95
|
-
this.renderer.setStyle(this.resizeHandle, 'background-color', 'rgba(0, 0, 0, 0.2)'); // Default background color
|
96
|
-
}
|
97
|
-
}
|
98
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXResizableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
|
99
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: AXResizableDirective, selector: "[axResizable]", inputs: { minWidth: "minWidth" }, host: { listeners: { "mousedown": "onMouseDown($event)", "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp()", "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave($event)" } }, ngImport: i0 }); }
|
100
|
-
}
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXResizableDirective, decorators: [{
|
102
|
-
type: Directive,
|
103
|
-
args: [{
|
104
|
-
selector: '[axResizable]', // Apply this directive on any element like <div axResizable></div>
|
105
|
-
}]
|
106
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }], propDecorators: { minWidth: [{
|
107
|
-
type: Input
|
108
|
-
}], onMouseDown: [{
|
109
|
-
type: HostListener,
|
110
|
-
args: ['mousedown', ['$event']]
|
111
|
-
}], onMouseMove: [{
|
112
|
-
type: HostListener,
|
113
|
-
args: ['document:mousemove', ['$event']]
|
114
|
-
}], onMouseUp: [{
|
115
|
-
type: HostListener,
|
116
|
-
args: ['document:mouseup']
|
117
|
-
}], onMouseEnter: [{
|
118
|
-
type: HostListener,
|
119
|
-
args: ['mouseenter', ['$event']]
|
120
|
-
}], onMouseLeave: [{
|
121
|
-
type: HostListener,
|
122
|
-
args: ['mouseleave', ['$event']]
|
123
|
-
}] } });
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS91dGlscy9zcmMvbGliL3Jlc2l6ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOztBQUt2QixNQUFNLE9BQU8sb0JBQW9CO0lBUS9CLFlBQ1UsRUFBYyxFQUNkLFFBQW1CLEVBQ25CLElBQVk7UUFGWixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBVmQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWhDLGFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQywwQ0FBMEM7UUFDM0QsZUFBVSxHQUFHLEtBQUssQ0FBQztRQVF6QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLCtCQUErQjtJQUM1RCxDQUFDO0lBRUQsMkRBQTJEO0lBQ25ELGtCQUFrQjtRQUN4QiwyRkFBMkY7UUFDM0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXRFLHVDQUF1QztRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXBFLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtRQUNqRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQywyQkFBMkI7UUFDN0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsbUNBQW1DO0lBRW5DLFdBQVcsQ0FBQyxLQUFpQjtRQUMzQixrREFBa0Q7UUFDbEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdELElBQ0UsS0FBSyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSTtZQUNoQyxLQUFLLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLO1lBQ2pDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFDbEMsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQywrQkFBK0I7Z0JBQzlFLDBEQUEwRDtnQkFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDekUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCx1Q0FBdUM7SUFFdkMsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUMzRCxJQUFJLFFBQWdCLENBQUM7Z0JBRXJCLG9DQUFvQztnQkFDcEMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDdkMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7d0JBQ2hELFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7b0JBQ3hDLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUN2QyxDQUFDO2dCQUNILENBQUM7Z0JBRUQsdURBQXVEO2dCQUN2RCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxHQUFHLFFBQVEsSUFBSSxDQUFDLENBQUM7Z0JBQzFFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsK0JBQStCO0lBRS9CLFNBQVM7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzFELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLG1CQUFtQjtnQkFDaEUsOERBQThEO2dCQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixDQUFDLENBQUM7WUFDdEYsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtFQUFrRTtJQUVsRSxZQUFZO1FBQ1YsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtRQUNsRyxDQUFDO0lBQ0gsQ0FBQztJQUVELGtEQUFrRDtJQUVsRCxZQUFZO1FBQ1YsOENBQThDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsMkJBQTJCO1FBQ2xILENBQUM7SUFDSCxDQUFDOzhHQWpIVSxvQkFBb0I7a0dBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZSxFQUFFLG1FQUFtRTtpQkFDL0Y7NEhBS1UsUUFBUTtzQkFBaEIsS0FBSztnQkFxQ04sV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFxQnJDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkEwQjlDLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxrQkFBa0I7Z0JBY2hDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVXRDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgUExBVEZPUk1fSUQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1theFJlc2l6YWJsZV0nLCAvLyBBcHBseSB0aGlzIGRpcmVjdGl2ZSBvbiBhbnkgZWxlbWVudCBsaWtlIDxkaXYgYXhSZXNpemFibGU+PC9kaXY+XG59KVxuZXhwb3J0IGNsYXNzIEFYUmVzaXphYmxlRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgQElucHV0KCkgbWluV2lkdGggPSAxMDA7IC8vIE1pbmltdW0gd2lkdGggZm9yIHRoZSByZXNpemFibGUgZWxlbWVudFxuICBwcml2YXRlIGlzUmVzaXppbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZXNpemVIYW5kbGU6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICApIHtcbiAgICB0aGlzLmNyZWF0ZVJlc2l6ZUhhbmRsZSgpOyAvLyBJbml0aWFsaXplIHRoZSByZXNpemUgaGFuZGxlXG4gIH1cblxuICAvLyBDcmVhdGUgdGhlIHJlc2l6ZSBoYW5kbGUgZWxlbWVudCBhbmQgYXBwbHkgaW5saW5lIHN0eWxlc1xuICBwcml2YXRlIGNyZWF0ZVJlc2l6ZUhhbmRsZSgpOiB2b2lkIHtcbiAgICAvLyBBcHBseSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgY29udGFpbmVyIHRvIGFsbG93IHRoZSBhYnNvbHV0ZSBwb3NpdGlvbmluZyBvZiB0aGUgaGFuZGxlXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdwb3NpdGlvbicsICdyZWxhdGl2ZScpO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSByZXNpemUgaGFuZGxlIGR5bmFtaWNhbGx5XG4gICAgdGhpcy5yZXNpemVIYW5kbGUgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5yZXNpemVIYW5kbGUsICdyZXNpemUtaGFuZGxlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMucmVzaXplSGFuZGxlKTtcblxuICAgIC8vIEFwcGx5IGlubGluZSBzdHlsZXMgZm9yIHRoZSByZXNpemUgaGFuZGxlXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJlc2l6ZUhhbmRsZSwgJ3dpZHRoJywgJzZweCcpOyAvLyBSZXNpemUgaGFuZGxlIHdpZHRoXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJlc2l6ZUhhbmRsZSwgJ2JhY2tncm91bmQtY29sb3InLCAncmdiYSgwLCAwLCAwLCAwLjIpJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJlc2l6ZUhhbmRsZSwgJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJlc2l6ZUhhbmRsZSwgJ3RvcCcsICcwJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJlc2l6ZUhhbmRsZSwgJ3JpZ2h0JywgJzAnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucmVzaXplSGFuZGxlLCAnYm90dG9tJywgJzAnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucmVzaXplSGFuZGxlLCAnY3Vyc29yJywgJ2V3LXJlc2l6ZScpOyAvLyBIb3Jpem9udGFsIHJlc2l6ZSBjdXJzb3JcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucmVzaXplSGFuZGxlLCAnei1pbmRleCcsICcxMCcpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yZXNpemVIYW5kbGUsICd0cmFuc2l0aW9uJywgJ2JhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJlc2l6ZUhhbmRsZSwgJ2JvcmRlci1yYWRpdXMnLCAnNHB4Jyk7XG4gIH1cblxuICAvLyBNb3VzZSBkb3duIGV2ZW50OiBTdGFydCByZXNpemluZ1xuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIC8vIE9ubHkgYWxsb3cgcmVzaXppbmcgd2hlbiBjbGlja2luZyBvbiB0aGUgaGFuZGxlXG4gICAgY29uc3QgaGFuZGxlUmVjdCA9IHRoaXMucmVzaXplSGFuZGxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmIChcbiAgICAgIGV2ZW50LmNsaWVudFggPj0gaGFuZGxlUmVjdC5sZWZ0ICYmXG4gICAgICBldmVudC5jbGllbnRYIDw9IGhhbmRsZVJlY3QucmlnaHQgJiZcbiAgICAgIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRClcbiAgICApIHtcbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNSZXNpemluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnZXctcmVzaXplJzsgLy8gQ2hhbmdlIGN1cnNvciB0byByZXNpemUgbW9kZVxuICAgICAgICAvLyBDaGFuZ2UgcmVzaXplIGhhbmRsZSBjb2xvciB0byBibHVlIHdoZW4gcmVzaXppbmcgc3RhcnRzXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yZXNpemVIYW5kbGUsICdiYWNrZ3JvdW5kLWNvbG9yJywgJyMwMDdiZmYnKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1vdXNlIG1vdmUgZXZlbnQ6IFJlc2l6ZSB0aGUgZWxlbWVudFxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1Jlc2l6aW5nKSB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGxldCBuZXdXaWR0aDogbnVtYmVyO1xuXG4gICAgICAgIC8vIFJlc2l6ZSBsb2dpYyAoTFRSIG9yIFJUTCBzdXBwb3J0KVxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgICAgIGlmICh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXIgPT09ICdydGwnKSB7XG4gICAgICAgICAgICBuZXdXaWR0aCA9IHJlY3QucmlnaHQgLSBldmVudC5jbGllbnRYO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdXaWR0aCA9IGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW5zdXJlIHRoZSB3aWR0aCBkb2VzIG5vdCBnbyBiZWxvdyB0aGUgbWluaW11bSB3aWR0aFxuICAgICAgICBpZiAobmV3V2lkdGggPiB0aGlzLm1pbldpZHRoKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke25ld1dpZHRofXB4YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIE1vdXNlIHVwIGV2ZW50OiBFbmQgcmVzaXppbmdcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcpXG4gIG9uTW91c2VVcCgpOiB2b2lkIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSZXNpemluZyAmJiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICAgIHRoaXMuaXNSZXNpemluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJ2RlZmF1bHQnOyAvLyBSZXNldCB0aGUgY3Vyc29yXG4gICAgICAgIC8vIFJlc2V0IHRoZSByZXNpemUgaGFuZGxlIGNvbG9yIHRvIGRlZmF1bHQgd2hlbiByZXNpemluZyBlbmRzXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yZXNpemVIYW5kbGUsICdiYWNrZ3JvdW5kLWNvbG9yJywgJ3JnYmEoMCwgMCwgMCwgMC4yKScpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gTW91c2UgZW50ZXIgZXZlbnQgdG8gY2hhbmdlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIChob3ZlciBlZmZlY3QpXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBbJyRldmVudCddKVxuICBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgLy8gT25seSBjaGFuZ2UgY29sb3IgdG8gYmx1ZSBpZiBub3QgcmVzaXppbmdcbiAgICBpZiAoIXRoaXMuaXNSZXNpemluZykge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJlc2l6ZUhhbmRsZSwgJ2JhY2tncm91bmQtY29sb3InLCAnIzAwN2JmZicpOyAvLyBCbHVlIGNvbG9yIG9uIGhvdmVyXG4gICAgfVxuICB9XG5cbiAgLy8gTW91c2UgbGVhdmUgZXZlbnQgdG8gcmVzZXQgdGhlIGJhY2tncm91bmQgY29sb3JcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICAvLyBPbmx5IHJlc2V0IHRvIGRlZmF1bHQgY29sb3IgaWYgbm90IHJlc2l6aW5nXG4gICAgaWYgKCF0aGlzLmlzUmVzaXppbmcpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yZXNpemVIYW5kbGUsICdiYWNrZ3JvdW5kLWNvbG9yJywgJ3JnYmEoMCwgMCwgMCwgMC4yKScpOyAvLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3JcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
@@ -1,19 +0,0 @@
|
|
1
|
-
// @dynamic
|
2
|
-
export class AXStringUtil {
|
3
|
-
static getWordBoundsAtPosition(str, position) {
|
4
|
-
const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);
|
5
|
-
let start = position - 1;
|
6
|
-
while (start >= 0 && !isSpace(str[start])) {
|
7
|
-
start -= 1;
|
8
|
-
}
|
9
|
-
start = Math.max(0, start + 1);
|
10
|
-
const leftSideString = str.slice(start).match(/[a-zA-Z0-9]+/i);
|
11
|
-
start += leftSideString.index;
|
12
|
-
let end = start + leftSideString[0].length;
|
13
|
-
return {
|
14
|
-
start,
|
15
|
-
end,
|
16
|
-
};
|
17
|
-
}
|
18
|
-
}
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdXRpbHMvc3JjL2xpYi9zdHJpbmctdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxXQUFXO0FBQ1gsTUFBTSxPQUFPLFlBQVk7SUFDdkIsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQVcsRUFBRSxRQUFnQjtRQUMxRCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksS0FBSyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFFekIsT0FBTyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNiLENBQUM7UUFDRCxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sY0FBYyxHQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BFLEtBQUssSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQzlCLElBQUksR0FBRyxHQUFHLEtBQUssR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzNDLE9BQU87WUFDTCxLQUFLO1lBQ0wsR0FBRztTQUNKLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIEFYU3RyaW5nVXRpbCB7XG4gIHN0YXRpYyBnZXRXb3JkQm91bmRzQXRQb3NpdGlvbihzdHI6IHN0cmluZywgcG9zaXRpb246IG51bWJlcik6IHsgc3RhcnQ6IG51bWJlcjsgZW5kOiBudW1iZXIgfSB7XG4gICAgY29uc3QgaXNTcGFjZSA9IChjKSA9PiAvW15hLXpBLVowLTldKy9pLnRlc3QoYyk7XG4gICAgbGV0IHN0YXJ0ID0gcG9zaXRpb24gLSAxO1xuXG4gICAgd2hpbGUgKHN0YXJ0ID49IDAgJiYgIWlzU3BhY2Uoc3RyW3N0YXJ0XSkpIHtcbiAgICAgIHN0YXJ0IC09IDE7XG4gICAgfVxuICAgIHN0YXJ0ID0gTWF0aC5tYXgoMCwgc3RhcnQgKyAxKTtcbiAgICBjb25zdCBsZWZ0U2lkZVN0cmluZzogYW55ID0gc3RyLnNsaWNlKHN0YXJ0KS5tYXRjaCgvW2EtekEtWjAtOV0rL2kpO1xuICAgIHN0YXJ0ICs9IGxlZnRTaWRlU3RyaW5nLmluZGV4O1xuICAgIGxldCBlbmQgPSBzdGFydCArIGxlZnRTaWRlU3RyaW5nWzBdLmxlbmd0aDtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQsXG4gICAgICBlbmQsXG4gICAgfTtcbiAgfVxufVxuIl19
|
@@ -1,18 +0,0 @@
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
2
|
-
import { NgModule } from '@angular/core';
|
3
|
-
import { AXResizableDirective } from './resize.directive';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
export class UtilsModule {
|
6
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: UtilsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
7
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: UtilsModule, declarations: [AXResizableDirective], imports: [CommonModule], exports: [AXResizableDirective] }); }
|
8
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: UtilsModule, imports: [CommonModule] }); }
|
9
|
-
}
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: UtilsModule, decorators: [{
|
11
|
-
type: NgModule,
|
12
|
-
args: [{
|
13
|
-
declarations: [AXResizableDirective],
|
14
|
-
imports: [CommonModule],
|
15
|
-
exports: [AXResizableDirective],
|
16
|
-
}]
|
17
|
-
}] });
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3V0aWxzL3NyYy9saWIvdXRpbHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQU8xRCxNQUFNLE9BQU8sV0FBVzs4R0FBWCxXQUFXOytHQUFYLFdBQVcsaUJBSlAsb0JBQW9CLGFBQ3pCLFlBQVksYUFDWixvQkFBb0I7K0dBRW5CLFdBQVcsWUFIWixZQUFZOzsyRkFHWCxXQUFXO2tCQUx2QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUNwQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhSZXNpemFibGVEaXJlY3RpdmUgfSBmcm9tICcuL3Jlc2l6ZS5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtBWFJlc2l6YWJsZURpcmVjdGl2ZV0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbQVhSZXNpemFibGVEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBVdGlsc01vZHVsZSB7fVxuIl19
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Generated bundle index. Do not edit.
|
3
|
-
*/
|
4
|
-
export * from './index';
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtdmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9hY29yZXgtY29yZS12YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
@@ -1,18 +0,0 @@
|
|
1
|
-
export * from './lib/rules/callback-rule';
|
2
|
-
export * from './lib/rules/regex-rule';
|
3
|
-
export * from './lib/rules/required-rule';
|
4
|
-
//
|
5
|
-
export * from './lib/rules/length-rule';
|
6
|
-
export * from './lib/rules/maxlength-rule';
|
7
|
-
export * from './lib/rules/minlength-rule';
|
8
|
-
//
|
9
|
-
export * from './lib/rules/between-rule';
|
10
|
-
export * from './lib/rules/equal-rule';
|
11
|
-
export * from './lib/rules/greater-than';
|
12
|
-
export * from './lib/rules/less-than-rule';
|
13
|
-
//
|
14
|
-
export * from './lib/validation.config';
|
15
|
-
export * from './lib/validation.module';
|
16
|
-
export * from './lib/validation.service';
|
17
|
-
export * from './lib/validation.types';
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsRUFBRTtBQUNGLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLEVBQUU7QUFDRixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLEVBQUU7QUFDRixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvcnVsZXMvY2FsbGJhY2stcnVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ydWxlcy9yZWdleC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL3JlcXVpcmVkLXJ1bGUnO1xuLy9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL2xlbmd0aC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL21heGxlbmd0aC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL21pbmxlbmd0aC1ydWxlJztcbi8vXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ydWxlcy9iZXR3ZWVuLXJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcnVsZXMvZXF1YWwtcnVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ydWxlcy9ncmVhdGVyLXRoYW4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcnVsZXMvbGVzcy10aGFuLXJ1bGUnO1xuLy9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRpb24uY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRpb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92YWxpZGF0aW9uLnR5cGVzJztcbiJdfQ==
|
@@ -1,31 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import { isEmpty } from 'lodash-es';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class AXBetweenValidationRule {
|
5
|
-
get name() {
|
6
|
-
return 'between';
|
7
|
-
}
|
8
|
-
async validate(value, options) {
|
9
|
-
let isValid;
|
10
|
-
if (options.inclusive) {
|
11
|
-
isValid = value >= options.lowerValue && value <= options.upperValue;
|
12
|
-
}
|
13
|
-
else {
|
14
|
-
isValid = value > options.lowerValue && value < options.upperValue;
|
15
|
-
}
|
16
|
-
const rangeType = options.inclusive ? 'inclusive' : 'exclusive';
|
17
|
-
const baseMessage = `The value must be within the ${rangeType} range of ${options.lowerValue} to ${options.upperValue}.`;
|
18
|
-
return {
|
19
|
-
rule: this.name,
|
20
|
-
result: isValid || isEmpty(value),
|
21
|
-
message: isValid ? '' : options?.message ?? baseMessage,
|
22
|
-
value: value,
|
23
|
-
};
|
24
|
-
}
|
25
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXBetweenValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
26
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXBetweenValidationRule }); }
|
27
|
-
}
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXBetweenValidationRule, decorators: [{
|
29
|
-
type: Injectable
|
30
|
-
}] });
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV0d2Vlbi1ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3ZhbGlkYXRpb24vc3JjL2xpYi9ydWxlcy9iZXR3ZWVuLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQWdCcEMsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxJQUFJLElBQUk7UUFDTixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFRLEVBQUUsT0FBMEM7UUFDakUsSUFBSSxPQUFPLENBQUM7UUFDWixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixPQUFPLEdBQUcsS0FBSyxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksS0FBSyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDdkUsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEdBQUcsS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDckUsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQ2hFLE1BQU0sV0FBVyxHQUFHLGdDQUFnQyxTQUFTLGFBQWEsT0FBTyxDQUFDLFVBQVUsT0FBTyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUM7UUFFekgsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE1BQU0sRUFBRSxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNqQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVztZQUN2RCxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUM7SUFDSixDQUFDOzhHQXRCVSx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZSwgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMsIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tICcuLi92YWxpZGF0aW9uLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWEJldHdlZW5WYWxpZGF0aW9uUnVsZU9wdGlvbnM8VCA9IG51bWJlciB8IERhdGU+IGV4dGVuZHMgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMge1xuICBsb3dlclZhbHVlOiBUO1xuICB1cHBlclZhbHVlOiBUO1xuICBpbmNsdXNpdmU/OiBib29sZWFuOyAvLyBPcHRpb25hbCBmbGFnIGZvciBpbmNsdXNpdmVuZXNzXG59XG5cbmRlY2xhcmUgbW9kdWxlICcuLi92YWxpZGF0aW9uLnR5cGVzJyB7XG4gIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgYmV0d2VlbjogQVhCZXR3ZWVuVmFsaWRhdGlvblJ1bGVPcHRpb25zO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWEJldHdlZW5WYWxpZGF0aW9uUnVsZTxUID0gbnVtYmVyIHwgRGF0ZT4gaW1wbGVtZW50cyBBWFZhbGlkYXRpb25SdWxlIHtcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2JldHdlZW4nO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUodmFsdWU6IFQsIG9wdGlvbnM6IEFYQmV0d2VlblZhbGlkYXRpb25SdWxlT3B0aW9uczxUPik6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD4ge1xuICAgIGxldCBpc1ZhbGlkO1xuICAgIGlmIChvcHRpb25zLmluY2x1c2l2ZSkge1xuICAgICAgaXNWYWxpZCA9IHZhbHVlID49IG9wdGlvbnMubG93ZXJWYWx1ZSAmJiB2YWx1ZSA8PSBvcHRpb25zLnVwcGVyVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlzVmFsaWQgPSB2YWx1ZSA+IG9wdGlvbnMubG93ZXJWYWx1ZSAmJiB2YWx1ZSA8IG9wdGlvbnMudXBwZXJWYWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCByYW5nZVR5cGUgPSBvcHRpb25zLmluY2x1c2l2ZSA/ICdpbmNsdXNpdmUnIDogJ2V4Y2x1c2l2ZSc7XG4gICAgY29uc3QgYmFzZU1lc3NhZ2UgPSBgVGhlIHZhbHVlIG11c3QgYmUgd2l0aGluIHRoZSAke3JhbmdlVHlwZX0gcmFuZ2Ugb2YgJHtvcHRpb25zLmxvd2VyVmFsdWV9IHRvICR7b3B0aW9ucy51cHBlclZhbHVlfS5gO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJ1bGU6IHRoaXMubmFtZSxcbiAgICAgIHJlc3VsdDogaXNWYWxpZCB8fCBpc0VtcHR5KHZhbHVlKSxcbiAgICAgIG1lc3NhZ2U6IGlzVmFsaWQgPyAnJyA6IG9wdGlvbnM/Lm1lc3NhZ2UgPz8gYmFzZU1lc3NhZ2UsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgfTtcbiAgfVxufVxuIl19
|
@@ -1,36 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
export class AXCallbackValidationRule {
|
4
|
-
get name() {
|
5
|
-
return 'callback';
|
6
|
-
}
|
7
|
-
async validate(value, options) {
|
8
|
-
const validationResult = options?.validate
|
9
|
-
? options?.validate(value, options)
|
10
|
-
: {
|
11
|
-
result: false,
|
12
|
-
message: 'Invalid callback function',
|
13
|
-
};
|
14
|
-
const createResult = (result) => ({
|
15
|
-
rule: this.name,
|
16
|
-
result: result.result,
|
17
|
-
message: result.message ?? options?.message ?? '',
|
18
|
-
value: value,
|
19
|
-
});
|
20
|
-
if (typeof validationResult === 'boolean') {
|
21
|
-
return createResult({
|
22
|
-
result: validationResult,
|
23
|
-
});
|
24
|
-
}
|
25
|
-
if (validationResult instanceof Promise) {
|
26
|
-
return validationResult.then(createResult);
|
27
|
-
}
|
28
|
-
return createResult(validationResult);
|
29
|
-
}
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXCallbackValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
31
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXCallbackValidationRule }); }
|
32
|
-
}
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXCallbackValidationRule, decorators: [{
|
34
|
-
type: Injectable
|
35
|
-
}] });
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbGJhY2stcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvcnVsZXMvY2FsbGJhY2stcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXNCM0MsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxJQUFJLElBQUk7UUFDTixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFRLEVBQUUsT0FBMkM7UUFDbEUsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLEVBQUUsUUFBUTtZQUN4QyxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1lBQ25DLENBQUMsQ0FBQztnQkFDRSxNQUFNLEVBQUUsS0FBSztnQkFDYixPQUFPLEVBQUUsMkJBQTJCO2FBQ3JDLENBQUM7UUFDTixNQUFNLFlBQVksR0FBRyxDQUFDLE1BQTZDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRTtZQUNqRCxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztRQUVILElBQUksT0FBTyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQyxPQUFPLFlBQVksQ0FBQztnQkFDbEIsTUFBTSxFQUFFLGdCQUFnQjthQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxnQkFBZ0IsWUFBWSxPQUFPLEVBQUUsQ0FBQztZQUN4QyxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQTlCVSx3QkFBd0I7a0hBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLCBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSAnLi4vdmFsaWRhdGlvbi50eXBlcyc7XG5cbmV4cG9ydCB0eXBlIEFYQ2FsbGJhY2tWYWxpZGF0aW9uUnVsZVJlc3VsdCA9XG4gIHwgUHJvbWlzZTx7IHJlc3VsdDogYm9vbGVhbjsgbWVzc2FnZT86IHN0cmluZyB9PlxuICB8IHsgcmVzdWx0OiBib29sZWFuOyBtZXNzYWdlPzogc3RyaW5nIH1cbiAgfCBib29sZWFuO1xuXG5leHBvcnQgdHlwZSBBWENhbGxiYWNrVmFsaWRhdGlvbjxUPiA9ICh2YWx1ZTogVCwgb3B0aW9ucz86IEFYQ2FsbGJhY2tWYWxpZGF0aW9uUnVsZU9wdGlvbnM8VD4pID0+IEFYQ2FsbGJhY2tWYWxpZGF0aW9uUnVsZVJlc3VsdDtcblxuZXhwb3J0IGludGVyZmFjZSBBWENhbGxiYWNrVmFsaWRhdGlvblJ1bGVPcHRpb25zPFQ+IGV4dGVuZHMgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnMge1xuICB2YWxpZGF0ZTogQVhDYWxsYmFja1ZhbGlkYXRpb248VD47XG59XG5cbi8vIEF1Z21lbnQgdGhlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwXG5kZWNsYXJlIG1vZHVsZSAnLi4vdmFsaWRhdGlvbi50eXBlcycge1xuICBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnNNYXAge1xuICAgIGNhbGxiYWNrOiBBWENhbGxiYWNrVmFsaWRhdGlvblJ1bGVPcHRpb25zPHVua25vd24+O1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWENhbGxiYWNrVmFsaWRhdGlvblJ1bGU8VD4gaW1wbGVtZW50cyBBWFZhbGlkYXRpb25SdWxlIHtcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NhbGxiYWNrJztcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlKHZhbHVlOiBULCBvcHRpb25zOiBBWENhbGxiYWNrVmFsaWRhdGlvblJ1bGVPcHRpb25zPFQ+KTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0PiB7XG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IG9wdGlvbnM/LnZhbGlkYXRlXG4gICAgICA/IG9wdGlvbnM/LnZhbGlkYXRlKHZhbHVlLCBvcHRpb25zKVxuICAgICAgOiB7XG4gICAgICAgICAgcmVzdWx0OiBmYWxzZSxcbiAgICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBjYWxsYmFjayBmdW5jdGlvbicsXG4gICAgICAgIH07XG4gICAgY29uc3QgY3JlYXRlUmVzdWx0ID0gKHJlc3VsdDogeyByZXN1bHQ6IGJvb2xlYW47IG1lc3NhZ2U/OiBzdHJpbmcgfSkgPT4gKHtcbiAgICAgIHJ1bGU6IHRoaXMubmFtZSxcbiAgICAgIHJlc3VsdDogcmVzdWx0LnJlc3VsdCxcbiAgICAgIG1lc3NhZ2U6IHJlc3VsdC5tZXNzYWdlID8/IG9wdGlvbnM/Lm1lc3NhZ2UgPz8gJycsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIHZhbGlkYXRpb25SZXN1bHQgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGNyZWF0ZVJlc3VsdCh7XG4gICAgICAgIHJlc3VsdDogdmFsaWRhdGlvblJlc3VsdCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQudGhlbihjcmVhdGVSZXN1bHQpO1xuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVSZXN1bHQodmFsaWRhdGlvblJlc3VsdCk7XG4gIH1cbn1cbiJdfQ==
|