1 | import getBasePlacement from "./getBasePlacement.js";
|
2 | import getVariation from "./getVariation.js";
|
3 | import getMainAxisFromPlacement from "./getMainAxisFromPlacement.js";
|
4 | import { top, right, bottom, left, start, end } from "../enums.js";
|
5 | export default function computeOffsets(_ref) {
|
6 | var reference = _ref.reference,
|
7 | element = _ref.element,
|
8 | placement = _ref.placement;
|
9 | var basePlacement = placement ? getBasePlacement(placement) : null;
|
10 | var variation = placement ? getVariation(placement) : null;
|
11 | var commonX = reference.x + reference.width / 2 - element.width / 2;
|
12 | var commonY = reference.y + reference.height / 2 - element.height / 2;
|
13 | var offsets;
|
14 |
|
15 | switch (basePlacement) {
|
16 | case top:
|
17 | offsets = {
|
18 | x: commonX,
|
19 | y: reference.y - element.height
|
20 | };
|
21 | break;
|
22 |
|
23 | case bottom:
|
24 | offsets = {
|
25 | x: commonX,
|
26 | y: reference.y + reference.height
|
27 | };
|
28 | break;
|
29 |
|
30 | case right:
|
31 | offsets = {
|
32 | x: reference.x + reference.width,
|
33 | y: commonY
|
34 | };
|
35 | break;
|
36 |
|
37 | case left:
|
38 | offsets = {
|
39 | x: reference.x - element.width,
|
40 | y: commonY
|
41 | };
|
42 | break;
|
43 |
|
44 | default:
|
45 | offsets = {
|
46 | x: reference.x,
|
47 | y: reference.y
|
48 | };
|
49 | }
|
50 |
|
51 | var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
52 |
|
53 | if (mainAxis != null) {
|
54 | var len = mainAxis === 'y' ? 'height' : 'width';
|
55 |
|
56 | switch (variation) {
|
57 | case start:
|
58 | offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
|
59 | break;
|
60 |
|
61 | case end:
|
62 | offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
|
63 | break;
|
64 |
|
65 | default:
|
66 | }
|
67 | }
|
68 |
|
69 | return offsets;
|
70 | } |
\ | No newline at end of file |