@acorex/core 6.5.29 → 6.5.30
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/README.md +3 -3
- package/acorex-core.d.ts +5 -5
- package/esm2020/acorex-core.mjs +4 -4
- package/esm2020/lib/classes/base-page.class.mjs +28 -28
- package/esm2020/lib/classes/color.class.mjs +49 -49
- package/esm2020/lib/classes/datetime.class.mjs +314 -314
- package/esm2020/lib/classes/menu.class.mjs +27 -27
- package/esm2020/lib/classes/navigator.class.mjs +2 -2
- package/esm2020/lib/classes/popup.class.mjs +2 -2
- package/esm2020/lib/classes/promise.class.mjs +19 -19
- package/esm2020/lib/classes/sectionlist.class.mjs +2 -2
- package/esm2020/lib/classes/select.class.mjs +3 -3
- package/esm2020/lib/core.module.mjs +27 -27
- package/esm2020/lib/error/error.class.mjs +2 -2
- package/esm2020/lib/error/error.module.mjs +19 -19
- package/esm2020/lib/error/error.service.mjs +21 -21
- package/esm2020/lib/events/keyboard.mjs +2 -2
- package/esm2020/lib/http/http-error.class.mjs +2 -2
- package/esm2020/lib/http/http-events.interceptor.mjs +3 -3
- package/esm2020/lib/http/http-request.class.mjs +2 -2
- package/esm2020/lib/http/http-result.class.mjs +21 -21
- package/esm2020/lib/http/http.module.mjs +37 -37
- package/esm2020/lib/http/http.service.mjs +145 -145
- package/esm2020/lib/locale/en.json +255 -255
- package/esm2020/lib/locale/fa.json +245 -245
- package/esm2020/lib/pipe/datetime.pipe.mjs +25 -25
- package/esm2020/lib/pipe/htmlToText.pipe.mjs +25 -25
- package/esm2020/lib/platform/index.mjs +1 -1
- package/esm2020/lib/platform/platform.service.mjs +150 -150
- package/esm2020/lib/services/config.mjs +29 -29
- package/esm2020/lib/services/event.service.mjs +36 -36
- package/esm2020/lib/services/navigator.service.mjs +10 -10
- package/esm2020/lib/services/storage.service.mjs +16 -16
- package/esm2020/lib/translator/translator.mjs +26 -26
- package/esm2020/lib/translator/translator.module.mjs +25 -25
- package/esm2020/lib/translator/translator.pipe.mjs +24 -24
- package/esm2020/lib/translator/translator.service.mjs +21 -21
- package/esm2020/lib/utils/array/array-util.mjs +133 -133
- package/esm2020/lib/utils/html/html-util.mjs +192 -192
- package/esm2020/lib/utils/html/html.module.mjs +19 -19
- package/esm2020/lib/utils/math/math-util.mjs +6 -6
- package/esm2020/lib/utils/object/object-util.mjs +83 -83
- package/esm2020/lib/utils/render/on-demand-preload-strategy.service.mjs +20 -20
- package/esm2020/lib/utils/render/render.service.mjs +103 -103
- package/esm2020/lib/utils/render/rendering.module.mjs +35 -35
- package/esm2020/lib/utils/scroll/scroll.directive.mjs +54 -54
- package/esm2020/lib/utils/scroll/scroll.module.mjs +19 -19
- package/esm2020/lib/utils/separator/separator.module.mjs +19 -19
- package/esm2020/lib/utils/separator/separator.pipe.mjs +33 -33
- package/esm2020/public-api.mjs +44 -44
- package/fesm2015/acorex-core.mjs +2162 -2162
- package/fesm2015/acorex-core.mjs.map +1 -1
- package/fesm2020/acorex-core.mjs +1651 -1651
- package/fesm2020/acorex-core.mjs.map +1 -1
- package/lib/classes/base-page.class.d.ts +13 -13
- package/lib/classes/color.class.d.ts +17 -17
- package/lib/classes/datetime.class.d.ts +63 -63
- package/lib/classes/menu.class.d.ts +34 -34
- package/lib/classes/navigator.class.d.ts +5 -5
- package/lib/classes/popup.class.d.ts +12 -12
- package/lib/classes/promise.class.d.ts +7 -7
- package/lib/classes/sectionlist.class.d.ts +8 -8
- package/lib/classes/select.class.d.ts +7 -7
- package/lib/core.module.d.ts +9 -9
- package/lib/error/error.class.d.ts +4 -4
- package/lib/error/error.module.d.ts +7 -7
- package/lib/error/error.service.d.ts +13 -13
- package/lib/events/keyboard.d.ts +2 -2
- package/lib/http/http-error.class.d.ts +7 -7
- package/lib/http/http-events.interceptor.d.ts +10 -10
- package/lib/http/http-request.class.d.ts +14 -14
- package/lib/http/http-result.class.d.ts +11 -11
- package/lib/http/http.module.d.ts +10 -10
- package/lib/http/http.service.d.ts +23 -23
- package/lib/pipe/datetime.pipe.d.ts +8 -8
- package/lib/pipe/htmlToText.pipe.d.ts +7 -7
- package/lib/platform/index.d.ts +1 -1
- package/lib/platform/platform.service.d.ts +26 -26
- package/lib/services/config.d.ts +9 -9
- package/lib/services/event.service.d.ts +9 -9
- package/lib/services/navigator.service.d.ts +8 -8
- package/lib/services/storage.service.d.ts +7 -7
- package/lib/translator/translator.d.ts +9 -9
- package/lib/translator/translator.module.d.ts +8 -8
- package/lib/translator/translator.pipe.d.ts +8 -8
- package/lib/translator/translator.service.d.ts +8 -8
- package/lib/utils/array/array-util.d.ts +6 -6
- package/lib/utils/html/html-util.d.ts +62 -62
- package/lib/utils/html/html.module.d.ts +8 -8
- package/lib/utils/math/math-util.d.ts +3 -3
- package/lib/utils/object/object-util.d.ts +7 -7
- package/lib/utils/render/on-demand-preload-strategy.service.d.ts +10 -10
- package/lib/utils/render/render.service.d.ts +18 -18
- package/lib/utils/render/rendering.module.d.ts +8 -8
- package/lib/utils/scroll/scroll.directive.d.ts +18 -18
- package/lib/utils/scroll/scroll.module.d.ts +8 -8
- package/lib/utils/separator/separator.module.d.ts +8 -8
- package/lib/utils/separator/separator.pipe.d.ts +8 -8
- package/package.json +2 -2
- package/public-api.d.ts +43 -43
|
@@ -1,192 +1,192 @@
|
|
|
1
|
-
import { AXMathUtil } from '../math/math-util';
|
|
2
|
-
export class AXPoint {
|
|
3
|
-
constructor(x, y) {
|
|
4
|
-
this.x = x;
|
|
5
|
-
this.y = y;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
export class AXClientRec {
|
|
9
|
-
constructor(rec) {
|
|
10
|
-
this._left = rec.left;
|
|
11
|
-
this._top = rec.top;
|
|
12
|
-
this._width = rec.width;
|
|
13
|
-
this._height = rec.height;
|
|
14
|
-
this._right = this._left + this._width;
|
|
15
|
-
this._bottom = this._top + this._height;
|
|
16
|
-
}
|
|
17
|
-
get left() {
|
|
18
|
-
return this._left;
|
|
19
|
-
}
|
|
20
|
-
set left(v) {
|
|
21
|
-
this._left = v;
|
|
22
|
-
}
|
|
23
|
-
get top() {
|
|
24
|
-
return this._top;
|
|
25
|
-
}
|
|
26
|
-
set top(v) {
|
|
27
|
-
this._top = v;
|
|
28
|
-
}
|
|
29
|
-
get right() {
|
|
30
|
-
return this._right;
|
|
31
|
-
}
|
|
32
|
-
set right(v) {
|
|
33
|
-
this._right = v;
|
|
34
|
-
}
|
|
35
|
-
get bottom() {
|
|
36
|
-
return this._bottom;
|
|
37
|
-
}
|
|
38
|
-
set bottom(v) {
|
|
39
|
-
this._bottom = v;
|
|
40
|
-
}
|
|
41
|
-
get width() {
|
|
42
|
-
return this._width;
|
|
43
|
-
}
|
|
44
|
-
set width(v) {
|
|
45
|
-
this._width = v;
|
|
46
|
-
}
|
|
47
|
-
get height() {
|
|
48
|
-
return this._height;
|
|
49
|
-
}
|
|
50
|
-
set height(v) {
|
|
51
|
-
this._height = v;
|
|
52
|
-
}
|
|
53
|
-
intersect(rec) {
|
|
54
|
-
return (this.left < rec.left + rec.width &&
|
|
55
|
-
this.left + this.width > rec.left &&
|
|
56
|
-
this.top < rec.top + rec.height &&
|
|
57
|
-
this.top + this.height > rec.top);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// @dynamic
|
|
61
|
-
export class AXHtmlUtil {
|
|
62
|
-
static getBoundingRectPoint(el, placement) {
|
|
63
|
-
const rec = el.getBoundingClientRect();
|
|
64
|
-
const width = el.offsetWidth;
|
|
65
|
-
const height = el.offsetHeight;
|
|
66
|
-
switch (placement) {
|
|
67
|
-
case 'top-start':
|
|
68
|
-
return new AXPoint(rec.left, rec.top);
|
|
69
|
-
case 'top-middle':
|
|
70
|
-
return new AXPoint(rec.left + (width / 2), rec.top);
|
|
71
|
-
case 'top-end':
|
|
72
|
-
return new AXPoint(rec.left + (width), rec.top);
|
|
73
|
-
case 'center-end':
|
|
74
|
-
return new AXPoint(rec.left + (width), rec.top + (height / 2));
|
|
75
|
-
case 'bottom-end':
|
|
76
|
-
return new AXPoint(rec.left + (width), rec.top + (height));
|
|
77
|
-
case 'bottom-middle':
|
|
78
|
-
return new AXPoint(rec.left + (width / 2), rec.top + (height));
|
|
79
|
-
case 'bottom-start':
|
|
80
|
-
return new AXPoint(rec.left, rec.top + (height));
|
|
81
|
-
case 'center-start':
|
|
82
|
-
return new AXPoint(rec.left, rec.top + (height / 2));
|
|
83
|
-
default:
|
|
84
|
-
return new AXPoint(rec.left + (width / 2), rec.top + (height));
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
static isInRecPoint(pos, rec) {
|
|
88
|
-
return pos.x >= rec.left && pos.x <= (rec.left + rec.width) && pos.y >= rec.top && (pos.y <= (rec.top + rec.height));
|
|
89
|
-
}
|
|
90
|
-
// static isOverLap(rec1: AXClientRecCtor, rec2: AXClientRecCtor): boolean {
|
|
91
|
-
// const r1: AXClientRec = new AXClientRec(rec1);
|
|
92
|
-
// const r2: AXClientRec = new AXClientRec(rec2);
|
|
93
|
-
// return ;
|
|
94
|
-
// }
|
|
95
|
-
static isInElementBound(pos, element) {
|
|
96
|
-
const elBound = element.getBoundingClientRect();
|
|
97
|
-
return AXHtmlUtil.isInRecPoint(pos, {
|
|
98
|
-
left: elBound.left,
|
|
99
|
-
width: elBound.width,
|
|
100
|
-
top: elBound.top,
|
|
101
|
-
height: elBound.height
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
static getDimensions() {
|
|
105
|
-
let winW = 630;
|
|
106
|
-
let winH = 460;
|
|
107
|
-
if (document.body && document.body.offsetWidth) {
|
|
108
|
-
winW = document.body.offsetWidth;
|
|
109
|
-
winH = document.body.offsetHeight;
|
|
110
|
-
}
|
|
111
|
-
if (document.compatMode === 'CSS1Compat' && document.documentElement && document.documentElement.offsetWidth) {
|
|
112
|
-
winW = document.documentElement.offsetWidth;
|
|
113
|
-
winH = document.documentElement.offsetHeight;
|
|
114
|
-
}
|
|
115
|
-
if (window.innerWidth && window.innerHeight) {
|
|
116
|
-
winW = window.innerWidth;
|
|
117
|
-
winH = window.innerHeight;
|
|
118
|
-
}
|
|
119
|
-
return { width: winW, height: winH };
|
|
120
|
-
}
|
|
121
|
-
static getOffsetRight(elem) {
|
|
122
|
-
let element = elem;
|
|
123
|
-
const width = element.offsetWidth;
|
|
124
|
-
let right = 0;
|
|
125
|
-
while (element.offsetParent) {
|
|
126
|
-
right += element.offsetLeft;
|
|
127
|
-
element = element.offsetParent;
|
|
128
|
-
}
|
|
129
|
-
right += element.offsetLeft;
|
|
130
|
-
right = AXHtmlUtil.getDimensions().width - right;
|
|
131
|
-
right -= width;
|
|
132
|
-
return right;
|
|
133
|
-
}
|
|
134
|
-
static getUID() {
|
|
135
|
-
return 'el-' + AXMathUtil.randomRange(1000000000, 9999999999).toString();
|
|
136
|
-
}
|
|
137
|
-
static getRelatedPosition(source, placement, target, alignment) {
|
|
138
|
-
const result = { x: 0, y: 0 };
|
|
139
|
-
const sourcePos = AXHtmlUtil.getBoundingRectPoint(source, placement);
|
|
140
|
-
let top = 0;
|
|
141
|
-
let left = 0;
|
|
142
|
-
switch (alignment) {
|
|
143
|
-
case 'top-start':
|
|
144
|
-
top = sourcePos.y;
|
|
145
|
-
left = sourcePos.x;
|
|
146
|
-
break;
|
|
147
|
-
case 'top-middle':
|
|
148
|
-
top = sourcePos.y;
|
|
149
|
-
left = sourcePos.x - target.offsetWidth / 2;
|
|
150
|
-
break;
|
|
151
|
-
case 'top-end':
|
|
152
|
-
top = sourcePos.y;
|
|
153
|
-
left = sourcePos.x - target.offsetWidth;
|
|
154
|
-
break;
|
|
155
|
-
case 'center-end':
|
|
156
|
-
top = sourcePos.y - target.offsetHeight / 2;
|
|
157
|
-
left = sourcePos.x - target.offsetWidth;
|
|
158
|
-
break;
|
|
159
|
-
case 'bottom-end':
|
|
160
|
-
top = sourcePos.y - target.offsetHeight;
|
|
161
|
-
left = sourcePos.x - target.offsetWidth;
|
|
162
|
-
break;
|
|
163
|
-
case 'bottom-middle':
|
|
164
|
-
top = sourcePos.y - target.offsetHeight;
|
|
165
|
-
left = sourcePos.x - target.offsetWidth / 2;
|
|
166
|
-
break;
|
|
167
|
-
case 'bottom-start':
|
|
168
|
-
top = sourcePos.y - target.offsetHeight;
|
|
169
|
-
left = sourcePos.x;
|
|
170
|
-
break;
|
|
171
|
-
case 'center-start':
|
|
172
|
-
top = sourcePos.y - target.offsetHeight / 2;
|
|
173
|
-
left = sourcePos.x;
|
|
174
|
-
break;
|
|
175
|
-
}
|
|
176
|
-
result.y = top;
|
|
177
|
-
result.x = left;
|
|
178
|
-
return result;
|
|
179
|
-
}
|
|
180
|
-
static collision(a, b) {
|
|
181
|
-
const ac = a.getBoundingClientRect();
|
|
182
|
-
const bc = b.getBoundingClientRect();
|
|
183
|
-
if (ac.left < bc.left + bc.width && ac.left + ac.width > bc.left &&
|
|
184
|
-
ac.top < bc.top + bc.height && ac.top + ac.height > bc.top) {
|
|
185
|
-
return true;
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
return false;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi91dGlscy9odG1sL2h0bWwtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUEyQi9DLE1BQU0sT0FBTyxPQUFPO0lBQ2xCLFlBQW1CLENBQVMsRUFBUyxDQUFTO1FBQTNCLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO0lBQzlDLENBQUM7Q0FDRjtBQVVELE1BQU0sT0FBTyxXQUFXO0lBMER0QixZQUFZLEdBQW9CO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUMxQyxDQUFDO0lBN0RELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBVyxJQUFJLENBQUMsQ0FBUztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBSUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFXLEdBQUcsQ0FBQyxDQUFTO1FBQ3RC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RSxDQUFjO1FBQzdDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRXJDLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJO1lBQzlELEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFO1lBQzVELE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFDSTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1hdGhVdGlsIH0gZnJvbSAnLi4vbWF0aC9tYXRoLXV0aWwnO1xyXG5cclxuZXhwb3J0IHR5cGUgQVhQbGFjZW1lbnQgPVxyXG4gIHwgJ3RvcC1zdGFydCdcclxuICB8ICd0b3AtbWlkZGxlJ1xyXG4gIHwgJ3RvcC1lbmQnXHJcbiAgfCAnY2VudGVyLXN0YXJ0J1xyXG4gIHwgJ2NlbnRlci1lbmQnXHJcbiAgfCAnYm90dG9tLXN0YXJ0J1xyXG4gIHwgJ2JvdHRvbS1taWRkbGUnXHJcbiAgfCAnYm90dG9tLWVuZCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYSVBvaW50IHtcclxuICB4OiBudW1iZXI7XHJcbiAgeTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYQ29ubmVjdGVkUG9zaXRpb24ge1xyXG4gIG9yaWdpblg6ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xyXG4gIG9yaWdpblk6ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJztcclxuICBvdmVybGF5WDogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XHJcbiAgb3ZlcmxheVk6ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJztcclxuICB3ZWlnaHQ/OiBudW1iZXI7XHJcbiAgb2Zmc2V0WD86IG51bWJlcjtcclxuICBvZmZzZXRZPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhQb2ludCBpbXBsZW1lbnRzIEFYSVBvaW50IHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgeDogbnVtYmVyLCBwdWJsaWMgeTogbnVtYmVyKSB7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYQ2xpZW50UmVjQ3RvciB7XHJcbiAgbGVmdD86IG51bWJlcjtcclxuICB0b3A/OiBudW1iZXI7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgaGVpZ2h0PzogbnVtYmVyO1xyXG4gIGJvdHRvbT86IG51bWJlcjtcclxuICByaWdodD86IG51bWJlcjtcclxufVxyXG5leHBvcnQgY2xhc3MgQVhDbGllbnRSZWMgaW1wbGVtZW50cyBBWENsaWVudFJlY0N0b3Ige1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBfbGVmdDogbnVtYmVyO1xyXG4gIHB1YmxpYyBnZXQgbGVmdCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xlZnQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgbGVmdCh2OiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2xlZnQgPSB2O1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgX3RvcDogbnVtYmVyO1xyXG4gIHB1YmxpYyBnZXQgdG9wKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdG9wO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHRvcCh2OiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3RvcCA9IHY7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfcmlnaHQ6IG51bWJlcjtcclxuICBwdWJsaWMgZ2V0IHJpZ2h0KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmlnaHQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgcmlnaHQodjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9yaWdodCA9IHY7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfYm90dG9tOiBudW1iZXI7XHJcbiAgcHVibGljIGdldCBib3R0b20oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9ib3R0b207XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgYm90dG9tKHY6IG51bWJlcikge1xyXG4gICAgdGhpcy5fYm90dG9tID0gdjtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfd2lkdGg6IG51bWJlcjtcclxuICBwdWJsaWMgZ2V0IHdpZHRoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2lkdGg7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgd2lkdGgodjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl93aWR0aCA9IHY7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfaGVpZ2h0OiBudW1iZXI7XHJcbiAgcHVibGljIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9oZWlnaHQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgaGVpZ2h0KHY6IG51bWJlcikge1xyXG4gICAgdGhpcy5faGVpZ2h0ID0gdjtcclxuICB9XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihyZWM6IEFYQ2xpZW50UmVjQ3Rvcikge1xyXG4gICAgdGhpcy5fbGVmdCA9IHJlYy5sZWZ0O1xyXG4gICAgdGhpcy5fdG9wID0gcmVjLnRvcDtcclxuICAgIHRoaXMuX3dpZHRoID0gcmVjLndpZHRoO1xyXG4gICAgdGhpcy5faGVpZ2h0ID0gcmVjLmhlaWdodDtcclxuICAgIHRoaXMuX3JpZ2h0ID0gdGhpcy5fbGVmdCArIHRoaXMuX3dpZHRoO1xyXG4gICAgdGhpcy5fYm90dG9tID0gdGhpcy5fdG9wICsgdGhpcy5faGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGludGVyc2VjdChyZWM6IEFYQ2xpZW50UmVjQ3Rvcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICh0aGlzLmxlZnQgPCByZWMubGVmdCArIHJlYy53aWR0aCAmJlxyXG4gICAgICB0aGlzLmxlZnQgKyB0aGlzLndpZHRoID4gcmVjLmxlZnQgJiZcclxuICAgICAgdGhpcy50b3AgPCByZWMudG9wICsgcmVjLmhlaWdodCAmJlxyXG4gICAgICB0aGlzLnRvcCArIHRoaXMuaGVpZ2h0ID4gcmVjLnRvcCk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEFYSHRtbFV0aWwge1xyXG4gIHN0YXRpYyBnZXRCb3VuZGluZ1JlY3RQb2ludChlbDogSFRNTEVsZW1lbnQsIHBsYWNlbWVudDogQVhQbGFjZW1lbnQpOiBBWFBvaW50IHtcclxuICAgIGNvbnN0IHJlYyA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3Qgd2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcclxuICAgIGNvbnN0IGhlaWdodCA9IGVsLm9mZnNldEhlaWdodDtcclxuICAgIHN3aXRjaCAocGxhY2VtZW50KSB7XHJcbiAgICAgIGNhc2UgJ3RvcC1zdGFydCc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBvaW50KHJlYy5sZWZ0LCByZWMudG9wKTtcclxuICAgICAgY2FzZSAndG9wLW1pZGRsZSc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBvaW50KHJlYy5sZWZ0ICsgKHdpZHRoIC8gMiksIHJlYy50b3ApO1xyXG4gICAgICBjYXNlICd0b3AtZW5kJzpcclxuICAgICAgICByZXR1cm4gbmV3IEFYUG9pbnQocmVjLmxlZnQgKyAod2lkdGgpLCByZWMudG9wKTtcclxuICAgICAgY2FzZSAnY2VudGVyLWVuZCc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBvaW50KHJlYy5sZWZ0ICsgKHdpZHRoKSwgcmVjLnRvcCArIChoZWlnaHQgLyAyKSk7XHJcbiAgICAgIGNhc2UgJ2JvdHRvbS1lbmQnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCArICh3aWR0aCksIHJlYy50b3AgKyAoaGVpZ2h0KSk7XHJcbiAgICAgIGNhc2UgJ2JvdHRvbS1taWRkbGUnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCArICh3aWR0aCAvIDIpLCByZWMudG9wICsgKGhlaWdodCkpO1xyXG4gICAgICBjYXNlICdib3R0b20tc3RhcnQnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCwgcmVjLnRvcCArIChoZWlnaHQpKTtcclxuICAgICAgY2FzZSAnY2VudGVyLXN0YXJ0JzpcclxuICAgICAgICByZXR1cm4gbmV3IEFYUG9pbnQocmVjLmxlZnQsIHJlYy50b3AgKyAoaGVpZ2h0IC8gMikpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCArICh3aWR0aCAvIDIpLCByZWMudG9wICsgKGhlaWdodCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzSW5SZWNQb2ludChwb3M6IEFYSVBvaW50LCByZWM6IEFYQ2xpZW50UmVjQ3Rvcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHBvcy54ID49IHJlYy5sZWZ0ICYmIHBvcy54IDw9IChyZWMubGVmdCArIHJlYy53aWR0aCkgJiYgcG9zLnkgPj0gcmVjLnRvcCAmJiAocG9zLnkgPD0gKHJlYy50b3AgKyByZWMuaGVpZ2h0KSk7XHJcbiAgfVxyXG5cclxuICAvLyBzdGF0aWMgaXNPdmVyTGFwKHJlYzE6IEFYQ2xpZW50UmVjQ3RvciwgcmVjMjogQVhDbGllbnRSZWNDdG9yKTogYm9vbGVhbiB7XHJcbiAgLy8gICBjb25zdCByMTogQVhDbGllbnRSZWMgPSBuZXcgQVhDbGllbnRSZWMocmVjMSk7XHJcbiAgLy8gICBjb25zdCByMjogQVhDbGllbnRSZWMgPSBuZXcgQVhDbGllbnRSZWMocmVjMik7XHJcblxyXG4gIC8vICAgcmV0dXJuIDtcclxuICAvLyB9XHJcblxyXG4gIHN0YXRpYyBpc0luRWxlbWVudEJvdW5kKHBvczogQVhJUG9pbnQsIGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBlbEJvdW5kID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIHJldHVybiBBWEh0bWxVdGlsLmlzSW5SZWNQb2ludChwb3MsIHtcclxuICAgICAgbGVmdDogZWxCb3VuZC5sZWZ0LFxyXG4gICAgICB3aWR0aDogZWxCb3VuZC53aWR0aCxcclxuICAgICAgdG9wOiBlbEJvdW5kLnRvcCxcclxuICAgICAgaGVpZ2h0OiBlbEJvdW5kLmhlaWdodFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RGltZW5zaW9ucygpOiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0ge1xyXG4gICAgbGV0IHdpblcgPSA2MzA7XHJcbiAgICBsZXQgd2luSCA9IDQ2MDtcclxuICAgIGlmIChkb2N1bWVudC5ib2R5ICYmIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpIHtcclxuICAgICAgd2luVyA9IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHdpbkggPSBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDtcclxuICAgIH1cclxuICAgIGlmIChkb2N1bWVudC5jb21wYXRNb2RlID09PSAnQ1NTMUNvbXBhdCcgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aCkge1xyXG4gICAgICB3aW5XID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB3aW5IID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuICAgIH1cclxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCAmJiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcclxuICAgICAgd2luVyA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgICB3aW5IID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgd2lkdGg6IHdpblcsIGhlaWdodDogd2luSCB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldE9mZnNldFJpZ2h0KGVsZW06IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcclxuICAgIGxldCBlbGVtZW50ID0gZWxlbTtcclxuICAgIGNvbnN0IHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgIGxldCByaWdodCA9IDA7XHJcbiAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcclxuICAgICAgcmlnaHQgKz0gZWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgICByaWdodCArPSBlbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICByaWdodCA9IEFYSHRtbFV0aWwuZ2V0RGltZW5zaW9ucygpLndpZHRoIC0gcmlnaHQ7XHJcbiAgICByaWdodCAtPSB3aWR0aDtcclxuICAgIHJldHVybiByaWdodDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRVSUQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAnZWwtJyArIEFYTWF0aFV0aWwucmFuZG9tUmFuZ2UoMTAwMDAwMDAwMCwgOTk5OTk5OTk5OSkudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgZ2V0UmVsYXRlZFBvc2l0aW9uKHNvdXJjZTogSFRNTEVsZW1lbnQsIHBsYWNlbWVudDogQVhQbGFjZW1lbnQsIHRhcmdldDogSFRNTEVsZW1lbnQsIGFsaWdubWVudDogQVhQbGFjZW1lbnQpOiBBWElQb2ludCB7XHJcbiAgICBjb25zdCByZXN1bHQ6IEFYSVBvaW50ID0geyB4OiAwLCB5OiAwIH07XHJcblxyXG4gICAgY29uc3Qgc291cmNlUG9zOiBBWFBvaW50ID0gQVhIdG1sVXRpbC5nZXRCb3VuZGluZ1JlY3RQb2ludChzb3VyY2UsIHBsYWNlbWVudCk7XHJcblxyXG5cclxuICAgIGxldCB0b3A6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgbGVmdDogbnVtYmVyID0gMDtcclxuICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7XHJcbiAgICAgIGNhc2UgJ3RvcC1zdGFydCc6XHJcbiAgICAgICAgdG9wID0gc291cmNlUG9zLnk7XHJcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd0b3AtbWlkZGxlJzpcclxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueTtcclxuICAgICAgICBsZWZ0ID0gc291cmNlUG9zLnggLSB0YXJnZXQub2Zmc2V0V2lkdGggLyAyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd0b3AtZW5kJzpcclxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueTtcclxuICAgICAgICBsZWZ0ID0gc291cmNlUG9zLnggLSB0YXJnZXQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NlbnRlci1lbmQnOlxyXG4gICAgICAgIHRvcCA9IHNvdXJjZVBvcy55IC0gdGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7XHJcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54IC0gdGFyZ2V0Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdib3R0b20tZW5kJzpcclxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueSAtIHRhcmdldC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54IC0gdGFyZ2V0Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdib3R0b20tbWlkZGxlJzpcclxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueSAtIHRhcmdldC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54IC0gdGFyZ2V0Lm9mZnNldFdpZHRoIC8gMjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYm90dG9tLXN0YXJ0JzpcclxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueSAtIHRhcmdldC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjZW50ZXItc3RhcnQnOlxyXG4gICAgICAgIHRvcCA9IHNvdXJjZVBvcy55IC0gdGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7XHJcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmVzdWx0LnkgPSB0b3A7XHJcbiAgICByZXN1bHQueCA9IGxlZnQ7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyBjb2xsaXNpb24oYTogSFRNTEVsZW1lbnQsIGI6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBhYyA9IGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBiYyA9IGIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgaWYgKGFjLmxlZnQgPCBiYy5sZWZ0ICsgYmMud2lkdGggJiYgYWMubGVmdCArIGFjLndpZHRoID4gYmMubGVmdCAmJlxyXG4gICAgICBhYy50b3AgPCBiYy50b3AgKyBiYy5oZWlnaHQgJiYgYWMudG9wICsgYWMuaGVpZ2h0ID4gYmMudG9wKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
1
|
+
import { AXMathUtil } from '../math/math-util';
|
|
2
|
+
export class AXPoint {
|
|
3
|
+
constructor(x, y) {
|
|
4
|
+
this.x = x;
|
|
5
|
+
this.y = y;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export class AXClientRec {
|
|
9
|
+
constructor(rec) {
|
|
10
|
+
this._left = rec.left;
|
|
11
|
+
this._top = rec.top;
|
|
12
|
+
this._width = rec.width;
|
|
13
|
+
this._height = rec.height;
|
|
14
|
+
this._right = this._left + this._width;
|
|
15
|
+
this._bottom = this._top + this._height;
|
|
16
|
+
}
|
|
17
|
+
get left() {
|
|
18
|
+
return this._left;
|
|
19
|
+
}
|
|
20
|
+
set left(v) {
|
|
21
|
+
this._left = v;
|
|
22
|
+
}
|
|
23
|
+
get top() {
|
|
24
|
+
return this._top;
|
|
25
|
+
}
|
|
26
|
+
set top(v) {
|
|
27
|
+
this._top = v;
|
|
28
|
+
}
|
|
29
|
+
get right() {
|
|
30
|
+
return this._right;
|
|
31
|
+
}
|
|
32
|
+
set right(v) {
|
|
33
|
+
this._right = v;
|
|
34
|
+
}
|
|
35
|
+
get bottom() {
|
|
36
|
+
return this._bottom;
|
|
37
|
+
}
|
|
38
|
+
set bottom(v) {
|
|
39
|
+
this._bottom = v;
|
|
40
|
+
}
|
|
41
|
+
get width() {
|
|
42
|
+
return this._width;
|
|
43
|
+
}
|
|
44
|
+
set width(v) {
|
|
45
|
+
this._width = v;
|
|
46
|
+
}
|
|
47
|
+
get height() {
|
|
48
|
+
return this._height;
|
|
49
|
+
}
|
|
50
|
+
set height(v) {
|
|
51
|
+
this._height = v;
|
|
52
|
+
}
|
|
53
|
+
intersect(rec) {
|
|
54
|
+
return (this.left < rec.left + rec.width &&
|
|
55
|
+
this.left + this.width > rec.left &&
|
|
56
|
+
this.top < rec.top + rec.height &&
|
|
57
|
+
this.top + this.height > rec.top);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// @dynamic
|
|
61
|
+
export class AXHtmlUtil {
|
|
62
|
+
static getBoundingRectPoint(el, placement) {
|
|
63
|
+
const rec = el.getBoundingClientRect();
|
|
64
|
+
const width = el.offsetWidth;
|
|
65
|
+
const height = el.offsetHeight;
|
|
66
|
+
switch (placement) {
|
|
67
|
+
case 'top-start':
|
|
68
|
+
return new AXPoint(rec.left, rec.top);
|
|
69
|
+
case 'top-middle':
|
|
70
|
+
return new AXPoint(rec.left + (width / 2), rec.top);
|
|
71
|
+
case 'top-end':
|
|
72
|
+
return new AXPoint(rec.left + (width), rec.top);
|
|
73
|
+
case 'center-end':
|
|
74
|
+
return new AXPoint(rec.left + (width), rec.top + (height / 2));
|
|
75
|
+
case 'bottom-end':
|
|
76
|
+
return new AXPoint(rec.left + (width), rec.top + (height));
|
|
77
|
+
case 'bottom-middle':
|
|
78
|
+
return new AXPoint(rec.left + (width / 2), rec.top + (height));
|
|
79
|
+
case 'bottom-start':
|
|
80
|
+
return new AXPoint(rec.left, rec.top + (height));
|
|
81
|
+
case 'center-start':
|
|
82
|
+
return new AXPoint(rec.left, rec.top + (height / 2));
|
|
83
|
+
default:
|
|
84
|
+
return new AXPoint(rec.left + (width / 2), rec.top + (height));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
static isInRecPoint(pos, rec) {
|
|
88
|
+
return pos.x >= rec.left && pos.x <= (rec.left + rec.width) && pos.y >= rec.top && (pos.y <= (rec.top + rec.height));
|
|
89
|
+
}
|
|
90
|
+
// static isOverLap(rec1: AXClientRecCtor, rec2: AXClientRecCtor): boolean {
|
|
91
|
+
// const r1: AXClientRec = new AXClientRec(rec1);
|
|
92
|
+
// const r2: AXClientRec = new AXClientRec(rec2);
|
|
93
|
+
// return ;
|
|
94
|
+
// }
|
|
95
|
+
static isInElementBound(pos, element) {
|
|
96
|
+
const elBound = element.getBoundingClientRect();
|
|
97
|
+
return AXHtmlUtil.isInRecPoint(pos, {
|
|
98
|
+
left: elBound.left,
|
|
99
|
+
width: elBound.width,
|
|
100
|
+
top: elBound.top,
|
|
101
|
+
height: elBound.height
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
static getDimensions() {
|
|
105
|
+
let winW = 630;
|
|
106
|
+
let winH = 460;
|
|
107
|
+
if (document.body && document.body.offsetWidth) {
|
|
108
|
+
winW = document.body.offsetWidth;
|
|
109
|
+
winH = document.body.offsetHeight;
|
|
110
|
+
}
|
|
111
|
+
if (document.compatMode === 'CSS1Compat' && document.documentElement && document.documentElement.offsetWidth) {
|
|
112
|
+
winW = document.documentElement.offsetWidth;
|
|
113
|
+
winH = document.documentElement.offsetHeight;
|
|
114
|
+
}
|
|
115
|
+
if (window.innerWidth && window.innerHeight) {
|
|
116
|
+
winW = window.innerWidth;
|
|
117
|
+
winH = window.innerHeight;
|
|
118
|
+
}
|
|
119
|
+
return { width: winW, height: winH };
|
|
120
|
+
}
|
|
121
|
+
static getOffsetRight(elem) {
|
|
122
|
+
let element = elem;
|
|
123
|
+
const width = element.offsetWidth;
|
|
124
|
+
let right = 0;
|
|
125
|
+
while (element.offsetParent) {
|
|
126
|
+
right += element.offsetLeft;
|
|
127
|
+
element = element.offsetParent;
|
|
128
|
+
}
|
|
129
|
+
right += element.offsetLeft;
|
|
130
|
+
right = AXHtmlUtil.getDimensions().width - right;
|
|
131
|
+
right -= width;
|
|
132
|
+
return right;
|
|
133
|
+
}
|
|
134
|
+
static getUID() {
|
|
135
|
+
return 'el-' + AXMathUtil.randomRange(1000000000, 9999999999).toString();
|
|
136
|
+
}
|
|
137
|
+
static getRelatedPosition(source, placement, target, alignment) {
|
|
138
|
+
const result = { x: 0, y: 0 };
|
|
139
|
+
const sourcePos = AXHtmlUtil.getBoundingRectPoint(source, placement);
|
|
140
|
+
let top = 0;
|
|
141
|
+
let left = 0;
|
|
142
|
+
switch (alignment) {
|
|
143
|
+
case 'top-start':
|
|
144
|
+
top = sourcePos.y;
|
|
145
|
+
left = sourcePos.x;
|
|
146
|
+
break;
|
|
147
|
+
case 'top-middle':
|
|
148
|
+
top = sourcePos.y;
|
|
149
|
+
left = sourcePos.x - target.offsetWidth / 2;
|
|
150
|
+
break;
|
|
151
|
+
case 'top-end':
|
|
152
|
+
top = sourcePos.y;
|
|
153
|
+
left = sourcePos.x - target.offsetWidth;
|
|
154
|
+
break;
|
|
155
|
+
case 'center-end':
|
|
156
|
+
top = sourcePos.y - target.offsetHeight / 2;
|
|
157
|
+
left = sourcePos.x - target.offsetWidth;
|
|
158
|
+
break;
|
|
159
|
+
case 'bottom-end':
|
|
160
|
+
top = sourcePos.y - target.offsetHeight;
|
|
161
|
+
left = sourcePos.x - target.offsetWidth;
|
|
162
|
+
break;
|
|
163
|
+
case 'bottom-middle':
|
|
164
|
+
top = sourcePos.y - target.offsetHeight;
|
|
165
|
+
left = sourcePos.x - target.offsetWidth / 2;
|
|
166
|
+
break;
|
|
167
|
+
case 'bottom-start':
|
|
168
|
+
top = sourcePos.y - target.offsetHeight;
|
|
169
|
+
left = sourcePos.x;
|
|
170
|
+
break;
|
|
171
|
+
case 'center-start':
|
|
172
|
+
top = sourcePos.y - target.offsetHeight / 2;
|
|
173
|
+
left = sourcePos.x;
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
result.y = top;
|
|
177
|
+
result.x = left;
|
|
178
|
+
return result;
|
|
179
|
+
}
|
|
180
|
+
static collision(a, b) {
|
|
181
|
+
const ac = a.getBoundingClientRect();
|
|
182
|
+
const bc = b.getBoundingClientRect();
|
|
183
|
+
if (ac.left < bc.left + bc.width && ac.left + ac.width > bc.left &&
|
|
184
|
+
ac.top < bc.top + bc.height && ac.top + ac.height > bc.top) {
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi91dGlscy9odG1sL2h0bWwtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUEyQi9DLE1BQU0sT0FBTyxPQUFPO0lBQ2xCLFlBQW1CLENBQVMsRUFBUyxDQUFTO1FBQTNCLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO0lBQzlDLENBQUM7Q0FDRjtBQVVELE1BQU0sT0FBTyxXQUFXO0lBMER0QixZQUFZLEdBQW9CO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUMxQyxDQUFDO0lBN0RELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBVyxJQUFJLENBQUMsQ0FBUztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBSUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFXLEdBQUcsQ0FBQyxDQUFTO1FBQ3RC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RSxDQUFjO1FBQzdDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRXJDLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJO1lBQzlELEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFO1lBQzVELE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFDSTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1hdGhVdGlsIH0gZnJvbSAnLi4vbWF0aC9tYXRoLXV0aWwnO1xuXG5leHBvcnQgdHlwZSBBWFBsYWNlbWVudCA9XG4gIHwgJ3RvcC1zdGFydCdcbiAgfCAndG9wLW1pZGRsZSdcbiAgfCAndG9wLWVuZCdcbiAgfCAnY2VudGVyLXN0YXJ0J1xuICB8ICdjZW50ZXItZW5kJ1xuICB8ICdib3R0b20tc3RhcnQnXG4gIHwgJ2JvdHRvbS1taWRkbGUnXG4gIHwgJ2JvdHRvbS1lbmQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYSVBvaW50IHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhDb25uZWN0ZWRQb3NpdGlvbiB7XG4gIG9yaWdpblg6ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBvcmlnaW5ZOiAndG9wJyB8ICdjZW50ZXInIHwgJ2JvdHRvbSc7XG4gIG92ZXJsYXlYOiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJztcbiAgb3ZlcmxheVk6ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJztcbiAgd2VpZ2h0PzogbnVtYmVyO1xuICBvZmZzZXRYPzogbnVtYmVyO1xuICBvZmZzZXRZPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgQVhQb2ludCBpbXBsZW1lbnRzIEFYSVBvaW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIHg6IG51bWJlciwgcHVibGljIHk6IG51bWJlcikge1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhDbGllbnRSZWNDdG9yIHtcbiAgbGVmdD86IG51bWJlcjtcbiAgdG9wPzogbnVtYmVyO1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICBib3R0b20/OiBudW1iZXI7XG4gIHJpZ2h0PzogbnVtYmVyO1xufVxuZXhwb3J0IGNsYXNzIEFYQ2xpZW50UmVjIGltcGxlbWVudHMgQVhDbGllbnRSZWNDdG9yIHtcblxuXG4gIHByaXZhdGUgX2xlZnQ6IG51bWJlcjtcbiAgcHVibGljIGdldCBsZWZ0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2xlZnQ7XG4gIH1cbiAgcHVibGljIHNldCBsZWZ0KHY6IG51bWJlcikge1xuICAgIHRoaXMuX2xlZnQgPSB2O1xuICB9XG5cblxuICBwcml2YXRlIF90b3A6IG51bWJlcjtcbiAgcHVibGljIGdldCB0b3AoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdG9wO1xuICB9XG4gIHB1YmxpYyBzZXQgdG9wKHY6IG51bWJlcikge1xuICAgIHRoaXMuX3RvcCA9IHY7XG4gIH1cblxuXG4gIHByaXZhdGUgX3JpZ2h0OiBudW1iZXI7XG4gIHB1YmxpYyBnZXQgcmlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcmlnaHQ7XG4gIH1cbiAgcHVibGljIHNldCByaWdodCh2OiBudW1iZXIpIHtcbiAgICB0aGlzLl9yaWdodCA9IHY7XG4gIH1cblxuXG4gIHByaXZhdGUgX2JvdHRvbTogbnVtYmVyO1xuICBwdWJsaWMgZ2V0IGJvdHRvbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9ib3R0b207XG4gIH1cbiAgcHVibGljIHNldCBib3R0b20odjogbnVtYmVyKSB7XG4gICAgdGhpcy5fYm90dG9tID0gdjtcbiAgfVxuXG5cblxuICBwcml2YXRlIF93aWR0aDogbnVtYmVyO1xuICBwdWJsaWMgZ2V0IHdpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpZHRoO1xuICB9XG4gIHB1YmxpYyBzZXQgd2lkdGgodjogbnVtYmVyKSB7XG4gICAgdGhpcy5fd2lkdGggPSB2O1xuICB9XG5cblxuICBwcml2YXRlIF9oZWlnaHQ6IG51bWJlcjtcbiAgcHVibGljIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xuICB9XG4gIHB1YmxpYyBzZXQgaGVpZ2h0KHY6IG51bWJlcikge1xuICAgIHRoaXMuX2hlaWdodCA9IHY7XG4gIH1cblxuXG4gIGNvbnN0cnVjdG9yKHJlYzogQVhDbGllbnRSZWNDdG9yKSB7XG4gICAgdGhpcy5fbGVmdCA9IHJlYy5sZWZ0O1xuICAgIHRoaXMuX3RvcCA9IHJlYy50b3A7XG4gICAgdGhpcy5fd2lkdGggPSByZWMud2lkdGg7XG4gICAgdGhpcy5faGVpZ2h0ID0gcmVjLmhlaWdodDtcbiAgICB0aGlzLl9yaWdodCA9IHRoaXMuX2xlZnQgKyB0aGlzLl93aWR0aDtcbiAgICB0aGlzLl9ib3R0b20gPSB0aGlzLl90b3AgKyB0aGlzLl9oZWlnaHQ7XG4gIH1cblxuICBwdWJsaWMgaW50ZXJzZWN0KHJlYzogQVhDbGllbnRSZWNDdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmxlZnQgPCByZWMubGVmdCArIHJlYy53aWR0aCAmJlxuICAgICAgdGhpcy5sZWZ0ICsgdGhpcy53aWR0aCA+IHJlYy5sZWZ0ICYmXG4gICAgICB0aGlzLnRvcCA8IHJlYy50b3AgKyByZWMuaGVpZ2h0ICYmXG4gICAgICB0aGlzLnRvcCArIHRoaXMuaGVpZ2h0ID4gcmVjLnRvcCk7XG4gIH1cblxuXG59XG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIEFYSHRtbFV0aWwge1xuICBzdGF0aWMgZ2V0Qm91bmRpbmdSZWN0UG9pbnQoZWw6IEhUTUxFbGVtZW50LCBwbGFjZW1lbnQ6IEFYUGxhY2VtZW50KTogQVhQb2ludCB7XG4gICAgY29uc3QgcmVjID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3Qgd2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBoZWlnaHQgPSBlbC5vZmZzZXRIZWlnaHQ7XG4gICAgc3dpdGNoIChwbGFjZW1lbnQpIHtcbiAgICAgIGNhc2UgJ3RvcC1zdGFydCc6XG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCwgcmVjLnRvcCk7XG4gICAgICBjYXNlICd0b3AtbWlkZGxlJzpcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBvaW50KHJlYy5sZWZ0ICsgKHdpZHRoIC8gMiksIHJlYy50b3ApO1xuICAgICAgY2FzZSAndG9wLWVuZCc6XG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCArICh3aWR0aCksIHJlYy50b3ApO1xuICAgICAgY2FzZSAnY2VudGVyLWVuZCc6XG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCArICh3aWR0aCksIHJlYy50b3AgKyAoaGVpZ2h0IC8gMikpO1xuICAgICAgY2FzZSAnYm90dG9tLWVuZCc6XG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCArICh3aWR0aCksIHJlYy50b3AgKyAoaGVpZ2h0KSk7XG4gICAgICBjYXNlICdib3R0b20tbWlkZGxlJzpcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBvaW50KHJlYy5sZWZ0ICsgKHdpZHRoIC8gMiksIHJlYy50b3AgKyAoaGVpZ2h0KSk7XG4gICAgICBjYXNlICdib3R0b20tc3RhcnQnOlxuICAgICAgICByZXR1cm4gbmV3IEFYUG9pbnQocmVjLmxlZnQsIHJlYy50b3AgKyAoaGVpZ2h0KSk7XG4gICAgICBjYXNlICdjZW50ZXItc3RhcnQnOlxuICAgICAgICByZXR1cm4gbmV3IEFYUG9pbnQocmVjLmxlZnQsIHJlYy50b3AgKyAoaGVpZ2h0IC8gMikpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBvaW50KHJlYy5sZWZ0ICsgKHdpZHRoIC8gMiksIHJlYy50b3AgKyAoaGVpZ2h0KSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGlzSW5SZWNQb2ludChwb3M6IEFYSVBvaW50LCByZWM6IEFYQ2xpZW50UmVjQ3Rvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwb3MueCA+PSByZWMubGVmdCAmJiBwb3MueCA8PSAocmVjLmxlZnQgKyByZWMud2lkdGgpICYmIHBvcy55ID49IHJlYy50b3AgJiYgKHBvcy55IDw9IChyZWMudG9wICsgcmVjLmhlaWdodCkpO1xuICB9XG5cbiAgLy8gc3RhdGljIGlzT3ZlckxhcChyZWMxOiBBWENsaWVudFJlY0N0b3IsIHJlYzI6IEFYQ2xpZW50UmVjQ3Rvcik6IGJvb2xlYW4ge1xuICAvLyAgIGNvbnN0IHIxOiBBWENsaWVudFJlYyA9IG5ldyBBWENsaWVudFJlYyhyZWMxKTtcbiAgLy8gICBjb25zdCByMjogQVhDbGllbnRSZWMgPSBuZXcgQVhDbGllbnRSZWMocmVjMik7XG5cbiAgLy8gICByZXR1cm4gO1xuICAvLyB9XG5cbiAgc3RhdGljIGlzSW5FbGVtZW50Qm91bmQocG9zOiBBWElQb2ludCwgZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbEJvdW5kID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4gQVhIdG1sVXRpbC5pc0luUmVjUG9pbnQocG9zLCB7XG4gICAgICBsZWZ0OiBlbEJvdW5kLmxlZnQsXG4gICAgICB3aWR0aDogZWxCb3VuZC53aWR0aCxcbiAgICAgIHRvcDogZWxCb3VuZC50b3AsXG4gICAgICBoZWlnaHQ6IGVsQm91bmQuaGVpZ2h0XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RGltZW5zaW9ucygpOiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0ge1xuICAgIGxldCB3aW5XID0gNjMwO1xuICAgIGxldCB3aW5IID0gNDYwO1xuICAgIGlmIChkb2N1bWVudC5ib2R5ICYmIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpIHtcbiAgICAgIHdpblcgPSBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoO1xuICAgICAgd2luSCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0O1xuICAgIH1cbiAgICBpZiAoZG9jdW1lbnQuY29tcGF0TW9kZSA9PT0gJ0NTUzFDb21wYXQnICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcbiAgICAgIHdpblcgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICB3aW5IID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICB9XG4gICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoICYmIHdpbmRvdy5pbm5lckhlaWdodCkge1xuICAgICAgd2luVyA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgd2luSCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICB9XG4gICAgcmV0dXJuIHsgd2lkdGg6IHdpblcsIGhlaWdodDogd2luSCB9O1xuICB9XG5cbiAgc3RhdGljIGdldE9mZnNldFJpZ2h0KGVsZW06IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICBsZXQgZWxlbWVudCA9IGVsZW07XG4gICAgY29uc3Qgd2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIGxldCByaWdodCA9IDA7XG4gICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XG4gICAgICByaWdodCArPSBlbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuICAgIHJpZ2h0ICs9IGVsZW1lbnQub2Zmc2V0TGVmdDtcbiAgICByaWdodCA9IEFYSHRtbFV0aWwuZ2V0RGltZW5zaW9ucygpLndpZHRoIC0gcmlnaHQ7XG4gICAgcmlnaHQgLT0gd2lkdGg7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9XG5cbiAgc3RhdGljIGdldFVJRCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZWwtJyArIEFYTWF0aFV0aWwucmFuZG9tUmFuZ2UoMTAwMDAwMDAwMCwgOTk5OTk5OTk5OSkudG9TdHJpbmcoKTtcbiAgfVxuXG5cbiAgc3RhdGljIGdldFJlbGF0ZWRQb3NpdGlvbihzb3VyY2U6IEhUTUxFbGVtZW50LCBwbGFjZW1lbnQ6IEFYUGxhY2VtZW50LCB0YXJnZXQ6IEhUTUxFbGVtZW50LCBhbGlnbm1lbnQ6IEFYUGxhY2VtZW50KTogQVhJUG9pbnQge1xuICAgIGNvbnN0IHJlc3VsdDogQVhJUG9pbnQgPSB7IHg6IDAsIHk6IDAgfTtcblxuICAgIGNvbnN0IHNvdXJjZVBvczogQVhQb2ludCA9IEFYSHRtbFV0aWwuZ2V0Qm91bmRpbmdSZWN0UG9pbnQoc291cmNlLCBwbGFjZW1lbnQpO1xuXG5cbiAgICBsZXQgdG9wOiBudW1iZXIgPSAwO1xuICAgIGxldCBsZWZ0OiBudW1iZXIgPSAwO1xuICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7XG4gICAgICBjYXNlICd0b3Atc3RhcnQnOlxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueTtcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcC1taWRkbGUnOlxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueTtcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54IC0gdGFyZ2V0Lm9mZnNldFdpZHRoIC8gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3AtZW5kJzpcbiAgICAgICAgdG9wID0gc291cmNlUG9zLnk7XG4gICAgICAgIGxlZnQgPSBzb3VyY2VQb3MueCAtIHRhcmdldC5vZmZzZXRXaWR0aDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjZW50ZXItZW5kJzpcbiAgICAgICAgdG9wID0gc291cmNlUG9zLnkgLSB0YXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjtcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54IC0gdGFyZ2V0Lm9mZnNldFdpZHRoO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbS1lbmQnOlxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueSAtIHRhcmdldC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGxlZnQgPSBzb3VyY2VQb3MueCAtIHRhcmdldC5vZmZzZXRXaWR0aDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20tbWlkZGxlJzpcbiAgICAgICAgdG9wID0gc291cmNlUG9zLnkgLSB0YXJnZXQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBsZWZ0ID0gc291cmNlUG9zLnggLSB0YXJnZXQub2Zmc2V0V2lkdGggLyAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbS1zdGFydCc6XG4gICAgICAgIHRvcCA9IHNvdXJjZVBvcy55IC0gdGFyZ2V0Lm9mZnNldEhlaWdodDtcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlci1zdGFydCc6XG4gICAgICAgIHRvcCA9IHNvdXJjZVBvcy55IC0gdGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7XG4gICAgICAgIGxlZnQgPSBzb3VyY2VQb3MueDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJlc3VsdC55ID0gdG9wO1xuICAgIHJlc3VsdC54ID0gbGVmdDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cblxuICBzdGF0aWMgY29sbGlzaW9uKGE6IEhUTUxFbGVtZW50LCBiOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFjID0gYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBiYyA9IGIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBpZiAoYWMubGVmdCA8IGJjLmxlZnQgKyBiYy53aWR0aCAmJiBhYy5sZWZ0ICsgYWMud2lkdGggPiBiYy5sZWZ0ICYmXG4gICAgICBhYy50b3AgPCBiYy50b3AgKyBiYy5oZWlnaHQgJiYgYWMudG9wICsgYWMuaGVpZ2h0ID4gYmMudG9wKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { AXHtmlToTextPipe } from '../../pipe/htmlToText.pipe';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class AXHtmlModule {
|
|
6
|
-
}
|
|
7
|
-
AXHtmlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHtmlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
-
AXHtmlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHtmlModule, declarations: [AXHtmlToTextPipe], imports: [CommonModule], exports: [AXHtmlToTextPipe] });
|
|
9
|
-
AXHtmlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHtmlModule, providers: [], imports: [[CommonModule]] });
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHtmlModule, decorators: [{
|
|
11
|
-
type: NgModule,
|
|
12
|
-
args: [{
|
|
13
|
-
declarations: [AXHtmlToTextPipe],
|
|
14
|
-
imports: [CommonModule],
|
|
15
|
-
exports: [AXHtmlToTextPipe],
|
|
16
|
-
providers: []
|
|
17
|
-
}]
|
|
18
|
-
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { AXHtmlToTextPipe } from '../../pipe/htmlToText.pipe';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class AXHtmlModule {
|
|
6
|
+
}
|
|
7
|
+
AXHtmlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHtmlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
AXHtmlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHtmlModule, declarations: [AXHtmlToTextPipe], imports: [CommonModule], exports: [AXHtmlToTextPipe] });
|
|
9
|
+
AXHtmlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHtmlModule, providers: [], imports: [[CommonModule]] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHtmlModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
declarations: [AXHtmlToTextPipe],
|
|
14
|
+
imports: [CommonModule],
|
|
15
|
+
exports: [AXHtmlToTextPipe],
|
|
16
|
+
providers: []
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvbGliL3V0aWxzL2h0bWwvaHRtbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBUTlELE1BQU0sT0FBTyxZQUFZOzswR0FBWixZQUFZOzJHQUFaLFlBQVksaUJBTFIsZ0JBQWdCLGFBQ3JCLFlBQVksYUFDWixnQkFBZ0I7MkdBR2YsWUFBWSxhQUZaLEVBQUUsWUFGSixDQUFDLFlBQVksQ0FBQzs0RkFJWixZQUFZO2tCQU54QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQVhIdG1sVG9UZXh0UGlwZSB9IGZyb20gJy4uLy4uL3BpcGUvaHRtbFRvVGV4dC5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQVhIdG1sVG9UZXh0UGlwZV0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbQVhIdG1sVG9UZXh0UGlwZV0sXG4gIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgQVhIdG1sTW9kdWxlIHsgfVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export class AXMathUtil {
|
|
2
|
-
static randomRange(min, max) {
|
|
3
|
-
return Math.floor(Math.random() * (max - min + 1) + min);
|
|
4
|
-
}
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export class AXMathUtil {
|
|
2
|
+
static randomRange(min, max) {
|
|
3
|
+
return Math.floor(Math.random() * (max - min + 1) + min);
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi91dGlscy9tYXRoL21hdGgtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUNuQixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzdELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBBWE1hdGhVdGlsIHtcbiAgICBzdGF0aWMgcmFuZG9tUmFuZ2UobWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSArIG1pbik7XG4gICAgfVxufVxuIl19
|