1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | 'use strict';
|
12 |
|
13 | var getRangeClientRects = require("./getRangeClientRects");
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | function getRangeBoundingClientRect(range) {
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | var rects = getRangeClientRects(range);
|
24 | var top = 0;
|
25 | var right = 0;
|
26 | var bottom = 0;
|
27 | var left = 0;
|
28 |
|
29 | if (rects.length) {
|
30 |
|
31 |
|
32 |
|
33 | if (rects.length > 1 && rects[0].width === 0) {
|
34 | var _rects$ = rects[1];
|
35 | top = _rects$.top;
|
36 | right = _rects$.right;
|
37 | bottom = _rects$.bottom;
|
38 | left = _rects$.left;
|
39 | } else {
|
40 | var _rects$2 = rects[0];
|
41 | top = _rects$2.top;
|
42 | right = _rects$2.right;
|
43 | bottom = _rects$2.bottom;
|
44 | left = _rects$2.left;
|
45 | }
|
46 |
|
47 | for (var ii = 1; ii < rects.length; ii++) {
|
48 | var rect = rects[ii];
|
49 |
|
50 | if (rect.height !== 0 && rect.width !== 0) {
|
51 | top = Math.min(top, rect.top);
|
52 | right = Math.max(right, rect.right);
|
53 | bottom = Math.max(bottom, rect.bottom);
|
54 | left = Math.min(left, rect.left);
|
55 | }
|
56 | }
|
57 | }
|
58 |
|
59 | return {
|
60 | top: top,
|
61 | right: right,
|
62 | bottom: bottom,
|
63 | left: left,
|
64 | width: right - left,
|
65 | height: bottom - top
|
66 | };
|
67 | }
|
68 |
|
69 | module.exports = getRangeBoundingClientRect; |
\ | No newline at end of file |