@shoper/phoenix_design_system 0.22.4 → 0.22.5
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/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.js +170 -46
- package/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.js.map +1 -1
- package/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.js +10 -6
- package/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.js.map +1 -1
- package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.d.ts +15 -2
- package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.js +170 -46
- package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.js.map +1 -1
- package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator_types.d.ts +45 -0
- package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator_types.js +4 -0
- package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator_types.js.map +1 -0
- package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.d.ts +3 -3
- package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.js +10 -6
- package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.js.map +1 -1
- package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_types.d.ts +4 -11
- package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_types.js +2 -1
- package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_types.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,9 +5,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
|
|
6
6
|
var relative_position_controller_constants = require('./relative_position_controller_constants.js');
|
|
7
7
|
|
|
8
|
-
var _PositionCalculator_direction, _PositionCalculator_relativeElementRect, _PositionCalculator_positionElementRect, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, _PositionCalculator_containerRect, _PositionCalculator_documentHeight, _PositionCalculator_shouldNotReposition;
|
|
8
|
+
var _PositionCalculator_direction, _PositionCalculator_relativeElementRect, _PositionCalculator_positionElementRect, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, _PositionCalculator_containerRect, _PositionCalculator_documentHeight, _PositionCalculator_shouldNotReposition, _PositionCalculator_offset;
|
|
9
9
|
class PositionCalculator {
|
|
10
|
-
constructor({ direction, relativeElementRect, positionElementRect, container = document.body, nearestNonStaticElementFromElementToPositionRect, shouldNotReposition }) {
|
|
10
|
+
constructor({ direction, relativeElementRect, positionElementRect, container = document.body, nearestNonStaticElementFromElementToPositionRect, offset = 0, shouldNotReposition }) {
|
|
11
11
|
_PositionCalculator_direction.set(this, void 0);
|
|
12
12
|
_PositionCalculator_relativeElementRect.set(this, void 0);
|
|
13
13
|
_PositionCalculator_positionElementRect.set(this, void 0);
|
|
@@ -15,20 +15,22 @@ class PositionCalculator {
|
|
|
15
15
|
_PositionCalculator_containerRect.set(this, void 0);
|
|
16
16
|
_PositionCalculator_documentHeight.set(this, void 0);
|
|
17
17
|
_PositionCalculator_shouldNotReposition.set(this, void 0);
|
|
18
|
+
_PositionCalculator_offset.set(this, void 0);
|
|
18
19
|
tslib_es6.__classPrivateFieldSet(this, _PositionCalculator_direction, direction, "f");
|
|
19
20
|
tslib_es6.__classPrivateFieldSet(this, _PositionCalculator_relativeElementRect, relativeElementRect, "f");
|
|
20
21
|
tslib_es6.__classPrivateFieldSet(this, _PositionCalculator_positionElementRect, positionElementRect, "f");
|
|
21
22
|
tslib_es6.__classPrivateFieldSet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, nearestNonStaticElementFromElementToPositionRect, "f");
|
|
22
23
|
tslib_es6.__classPrivateFieldSet(this, _PositionCalculator_containerRect, container.getBoundingClientRect(), "f");
|
|
23
24
|
tslib_es6.__classPrivateFieldSet(this, _PositionCalculator_shouldNotReposition, !!shouldNotReposition, "f");
|
|
25
|
+
tslib_es6.__classPrivateFieldSet(this, _PositionCalculator_offset, offset, "f");
|
|
24
26
|
const body = document.body;
|
|
25
27
|
const documentElement = document.documentElement;
|
|
26
28
|
tslib_es6.__classPrivateFieldSet(this, _PositionCalculator_documentHeight, Math.max(body.scrollHeight, body.offsetHeight, documentElement.clientHeight, documentElement.scrollHeight, documentElement.offsetHeight), "f");
|
|
27
29
|
}
|
|
28
30
|
calculatePosition() {
|
|
29
31
|
const [side, alignment = relative_position_controller_constants.CALCULATOR_DIRECTIONS.center] = tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_direction, "f").split('-');
|
|
30
|
-
const sidePosition = this._calculateSidePosition(side);
|
|
31
|
-
const alignmentPosition = this.calculateAlignmentPosition(alignment);
|
|
32
|
+
const sidePosition = this._calculateSidePosition(side, alignment);
|
|
33
|
+
const alignmentPosition = this.calculateAlignmentPosition(alignment, side);
|
|
32
34
|
return {
|
|
33
35
|
...sidePosition,
|
|
34
36
|
...alignmentPosition,
|
|
@@ -46,66 +48,188 @@ class PositionCalculator {
|
|
|
46
48
|
_canFitCenter(centerPosition) {
|
|
47
49
|
return centerPosition + tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").height - window.scrollY < window.innerHeight && centerPosition - window.scrollY > 0;
|
|
48
50
|
}
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
_canFitLeftSide() {
|
|
52
|
+
const positionElementLeftSide = tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").left - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").left - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width;
|
|
53
|
+
return positionElementLeftSide >= tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_containerRect, "f").left;
|
|
54
|
+
}
|
|
55
|
+
_canFitRightSide() {
|
|
56
|
+
const positionElementRightSide = tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").right - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").left;
|
|
57
|
+
return positionElementRightSide + tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width <= tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_containerRect, "f").width;
|
|
58
|
+
}
|
|
59
|
+
_calculateSidePosition(side, alignment) {
|
|
60
|
+
const topSideOfRelativeElement = tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").top -
|
|
61
|
+
tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").top -
|
|
62
|
+
tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").height -
|
|
63
|
+
tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_offset, "f");
|
|
64
|
+
const bottomSideOfRelativeElement = tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").bottom - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").top + tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_offset, "f");
|
|
65
|
+
const leftSideOfRelativeElement = tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").left -
|
|
66
|
+
tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").left -
|
|
67
|
+
tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width -
|
|
68
|
+
tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_offset, "f");
|
|
69
|
+
const rightSideOfRelativeElement = tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").right - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").left + tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_offset, "f");
|
|
70
|
+
const verticalCenterOfRelativeElement = (topSideOfRelativeElement + bottomSideOfRelativeElement) / 2;
|
|
71
|
+
const horizontalCenterOfRelativeElement = (leftSideOfRelativeElement + rightSideOfRelativeElement) / 2;
|
|
53
72
|
switch (side) {
|
|
54
73
|
case relative_position_controller_constants.CALCULATOR_DIRECTIONS.top:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return { top: centerOfRelativeElement, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.center };
|
|
61
|
-
if (!this._canFitTopSide())
|
|
62
|
-
return { top: bottomSideOfRelativeElement, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom };
|
|
63
|
-
return { top: topSideOfRelativeElement, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.top };
|
|
74
|
+
return this._calculateTopSide({
|
|
75
|
+
topSide: topSideOfRelativeElement,
|
|
76
|
+
bottomSide: bottomSideOfRelativeElement,
|
|
77
|
+
verticalCenter: verticalCenterOfRelativeElement
|
|
78
|
+
});
|
|
64
79
|
case relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom:
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return { top: centerOfRelativeElement, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.center };
|
|
71
|
-
if (!this._canFitBottomSide())
|
|
72
|
-
return { top: topSideOfRelativeElement, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.top };
|
|
73
|
-
return { top: bottomSideOfRelativeElement, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom };
|
|
80
|
+
return this._calculateBottomSide({
|
|
81
|
+
topSide: topSideOfRelativeElement,
|
|
82
|
+
bottomSide: bottomSideOfRelativeElement,
|
|
83
|
+
verticalCenter: verticalCenterOfRelativeElement
|
|
84
|
+
});
|
|
74
85
|
case relative_position_controller_constants.CALCULATOR_DIRECTIONS.center:
|
|
75
|
-
return {
|
|
86
|
+
return this._calculateCenterSide({
|
|
87
|
+
verticalCenter: verticalCenterOfRelativeElement,
|
|
88
|
+
horizontalCenter: horizontalCenterOfRelativeElement,
|
|
89
|
+
alignment
|
|
90
|
+
});
|
|
76
91
|
case relative_position_controller_constants.CALCULATOR_DIRECTIONS.left:
|
|
77
|
-
|
|
78
|
-
|
|
92
|
+
return this._calculateLeftSide({
|
|
93
|
+
leftSide: leftSideOfRelativeElement,
|
|
94
|
+
rightSide: rightSideOfRelativeElement
|
|
95
|
+
});
|
|
79
96
|
case relative_position_controller_constants.CALCULATOR_DIRECTIONS.right:
|
|
80
|
-
|
|
81
|
-
|
|
97
|
+
return this._calculateRightSide({
|
|
98
|
+
leftSide: leftSideOfRelativeElement,
|
|
99
|
+
rightSide: rightSideOfRelativeElement
|
|
100
|
+
});
|
|
82
101
|
default:
|
|
83
102
|
return { top: 0 };
|
|
84
103
|
}
|
|
85
104
|
}
|
|
86
|
-
|
|
105
|
+
_calculateTopSide({ topSide, bottomSide, verticalCenter }) {
|
|
106
|
+
if (tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
|
|
107
|
+
return { top: topSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.top };
|
|
108
|
+
if (!this._canFitTopSide() && !this._canFitBottomSide() && !this._canFitCenter(verticalCenter))
|
|
109
|
+
return { top: bottomSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom, shrinkMode: true };
|
|
110
|
+
if (!this._canFitTopSide() && !this._canFitBottomSide())
|
|
111
|
+
return { top: verticalCenter, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.center };
|
|
112
|
+
if (!this._canFitTopSide())
|
|
113
|
+
return { top: bottomSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom };
|
|
114
|
+
return { top: topSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.top };
|
|
115
|
+
}
|
|
116
|
+
_calculateBottomSide({ topSide, bottomSide, verticalCenter }) {
|
|
117
|
+
if (tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
|
|
118
|
+
return { top: bottomSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom };
|
|
119
|
+
if (!this._canFitTopSide() && !this._canFitBottomSide() && !this._canFitCenter(verticalCenter))
|
|
120
|
+
return { top: bottomSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom, shrinkMode: true };
|
|
121
|
+
if (!this._canFitTopSide() && !this._canFitBottomSide())
|
|
122
|
+
return { top: verticalCenter, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.center };
|
|
123
|
+
if (!this._canFitBottomSide())
|
|
124
|
+
return { top: topSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.top };
|
|
125
|
+
return { top: bottomSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom };
|
|
126
|
+
}
|
|
127
|
+
_calculateCenterSide({ verticalCenter, horizontalCenter, alignment }) {
|
|
128
|
+
if (alignment === relative_position_controller_constants.CALCULATOR_DIRECTIONS.left || alignment === relative_position_controller_constants.CALCULATOR_DIRECTIONS.right)
|
|
129
|
+
return { top: verticalCenter, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.center };
|
|
130
|
+
return { left: horizontalCenter, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.center };
|
|
131
|
+
}
|
|
132
|
+
_calculateLeftSide({ leftSide, rightSide }) {
|
|
133
|
+
if (tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
|
|
134
|
+
return { left: leftSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.left };
|
|
135
|
+
if (!this._canFitLeftSide() && !this._canFitRightSide())
|
|
136
|
+
return { left: leftSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.left };
|
|
137
|
+
if (!this._canFitLeftSide())
|
|
138
|
+
return { left: rightSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.right };
|
|
139
|
+
return { left: leftSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.left };
|
|
140
|
+
}
|
|
141
|
+
_calculateRightSide({ leftSide, rightSide }) {
|
|
142
|
+
if (tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
|
|
143
|
+
return { left: rightSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.right };
|
|
144
|
+
if (!this._canFitRightSide() && !this._canFitLeftSide())
|
|
145
|
+
return { left: rightSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.right };
|
|
146
|
+
if (!this._canFitRightSide())
|
|
147
|
+
return { left: leftSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.left };
|
|
148
|
+
return { left: rightSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.right };
|
|
149
|
+
}
|
|
150
|
+
calculateAlignmentPosition(alignment, side) {
|
|
87
151
|
const alignmentToLeftSide = tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").left - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").left;
|
|
88
152
|
const alignmentToRightSide = tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").right - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").left - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width;
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
return {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
153
|
+
const alignmentToTopSide = tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").top - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").top;
|
|
154
|
+
const alignmentToBottomSide = tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").bottom - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").top - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").height;
|
|
155
|
+
const verticalCenterOfRelativeElement = (alignmentToTopSide + alignmentToBottomSide) / 2;
|
|
156
|
+
const horizontalCenterOfRelativeElement = (alignmentToLeftSide + alignmentToRightSide) / 2;
|
|
157
|
+
const isSideCenter = side === relative_position_controller_constants.CALCULATOR_DIRECTIONS.center;
|
|
158
|
+
switch (alignment) {
|
|
159
|
+
case relative_position_controller_constants.CALCULATOR_DIRECTIONS.top: {
|
|
160
|
+
return this._calculateTopAlignment({ topAlignment: alignmentToTopSide, isSideCenter });
|
|
161
|
+
}
|
|
162
|
+
case relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom: {
|
|
163
|
+
return this._calculateBottomAlignment({ bottomAlignment: alignmentToBottomSide, isSideCenter });
|
|
164
|
+
}
|
|
165
|
+
case relative_position_controller_constants.CALCULATOR_DIRECTIONS.left: {
|
|
166
|
+
return this._calculateLeftAlignment({
|
|
167
|
+
leftAlignment: alignmentToLeftSide,
|
|
168
|
+
rightAlignment: alignmentToRightSide,
|
|
169
|
+
isSideCenter
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
case relative_position_controller_constants.CALCULATOR_DIRECTIONS.right: {
|
|
173
|
+
return this._calculateRightAlignment({
|
|
174
|
+
leftAlignment: alignmentToLeftSide,
|
|
175
|
+
rightAlignment: alignmentToRightSide,
|
|
176
|
+
isSideCenter
|
|
177
|
+
});
|
|
178
|
+
}
|
|
101
179
|
case relative_position_controller_constants.CALCULATOR_DIRECTIONS.center:
|
|
102
|
-
return {
|
|
180
|
+
return this._calculateCenterAlignment({
|
|
181
|
+
horizontalCenter: horizontalCenterOfRelativeElement,
|
|
182
|
+
verticalCenter: verticalCenterOfRelativeElement,
|
|
183
|
+
side
|
|
184
|
+
});
|
|
103
185
|
default:
|
|
104
186
|
return { left: 0 };
|
|
105
187
|
}
|
|
106
188
|
}
|
|
189
|
+
_calculateTopAlignment({ topAlignment, isSideCenter }) {
|
|
190
|
+
const alignmentToTop = isSideCenter ? topAlignment - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").height - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_offset, "f") : topAlignment;
|
|
191
|
+
return {
|
|
192
|
+
top: alignmentToTop,
|
|
193
|
+
calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.top
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
_calculateBottomAlignment({ bottomAlignment, isSideCenter }) {
|
|
197
|
+
const alignmentToBottom = isSideCenter ? bottomAlignment + tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").height + tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_offset, "f") : bottomAlignment;
|
|
198
|
+
return { top: alignmentToBottom, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom };
|
|
199
|
+
}
|
|
200
|
+
_calculateLeftAlignment({ leftAlignment, rightAlignment, isSideCenter }) {
|
|
201
|
+
const alignmentToLeftSide = isSideCenter ? leftAlignment - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width : leftAlignment;
|
|
202
|
+
const alignmentToRightSide = rightAlignment + tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width + tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_offset, "f");
|
|
203
|
+
if (!isSideCenter)
|
|
204
|
+
return { left: alignmentToLeftSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.left };
|
|
205
|
+
if (tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
|
|
206
|
+
return { left: alignmentToLeftSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.left };
|
|
207
|
+
if (!this._canFitLeftSide() && !this._canFitRightSide())
|
|
208
|
+
return { left: alignmentToLeftSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.left };
|
|
209
|
+
if (!this._canFitLeftSide())
|
|
210
|
+
return { left: alignmentToRightSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.right };
|
|
211
|
+
return { left: alignmentToLeftSide - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_offset, "f"), calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.left };
|
|
212
|
+
}
|
|
213
|
+
_calculateRightAlignment({ leftAlignment, rightAlignment, isSideCenter }) {
|
|
214
|
+
const alignmentToRightSide = isSideCenter ? rightAlignment + tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width : rightAlignment;
|
|
215
|
+
const alignmentToLeftSide = leftAlignment - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_offset, "f");
|
|
216
|
+
if (!isSideCenter)
|
|
217
|
+
return { left: alignmentToRightSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.right };
|
|
218
|
+
if (tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
|
|
219
|
+
return { left: alignmentToRightSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.right };
|
|
220
|
+
if (!this._canFitLeftSide() && !this._canFitRightSide())
|
|
221
|
+
return { left: alignmentToRightSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.right };
|
|
222
|
+
if (!this._canFitRightSide())
|
|
223
|
+
return { left: alignmentToLeftSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.left };
|
|
224
|
+
return { left: alignmentToRightSide + tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_offset, "f"), calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.right };
|
|
225
|
+
}
|
|
226
|
+
_calculateCenterAlignment({ horizontalCenter, verticalCenter, side }) {
|
|
227
|
+
if (side === relative_position_controller_constants.CALCULATOR_DIRECTIONS.top || side === relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom)
|
|
228
|
+
return { left: horizontalCenter, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.center };
|
|
229
|
+
return { top: verticalCenter, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.center };
|
|
230
|
+
}
|
|
107
231
|
}
|
|
108
|
-
_PositionCalculator_direction = new WeakMap(), _PositionCalculator_relativeElementRect = new WeakMap(), _PositionCalculator_positionElementRect = new WeakMap(), _PositionCalculator_nearestNonStaticElementFromElementToPositionRect = new WeakMap(), _PositionCalculator_containerRect = new WeakMap(), _PositionCalculator_documentHeight = new WeakMap(), _PositionCalculator_shouldNotReposition = new WeakMap();
|
|
232
|
+
_PositionCalculator_direction = new WeakMap(), _PositionCalculator_relativeElementRect = new WeakMap(), _PositionCalculator_positionElementRect = new WeakMap(), _PositionCalculator_nearestNonStaticElementFromElementToPositionRect = new WeakMap(), _PositionCalculator_containerRect = new WeakMap(), _PositionCalculator_documentHeight = new WeakMap(), _PositionCalculator_shouldNotReposition = new WeakMap(), _PositionCalculator_offset = new WeakMap();
|
|
109
233
|
|
|
110
234
|
exports.PositionCalculator = PositionCalculator;
|
|
111
235
|
//# sourceMappingURL=relative_position_calculator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -9,9 +9,9 @@ var relative_position_controller_constants = require('./relative_position_contro
|
|
|
9
9
|
var relative_position_calculator = require('./relative_position_calculator.js');
|
|
10
10
|
var throttle = require('../../../../../external/lodash/throttle.js');
|
|
11
11
|
|
|
12
|
-
var _RelativePositionController_host, _RelativePositionController_container, _RelativePositionController_nearestNonStaticElementFromElementToPosition, _RelativePositionController_direction, _RelativePositionController_nearestScrollableElement, _RelativePositionController_relativeElement, _RelativePositionController_elementToPosition, _RelativePositionController_disablePositioningOnCondition, _RelativePositionController_portalElementsNames, _RelativePositionController_isInitiallyScrollable, _RelativePositionController_initialMaxHeight, _RelativePositionController_initialHeight, _RelativePositionController_calculatedDirection, _RelativePositionController_hasPositioningBeenDisabled, _RelativePositionController_doesCurrentlyHaveShrinkMode, _RelativePositionController_throttledReposition, _RelativePositionController_throttledRepositionForScroll;
|
|
12
|
+
var _RelativePositionController_host, _RelativePositionController_container, _RelativePositionController_nearestNonStaticElementFromElementToPosition, _RelativePositionController_direction, _RelativePositionController_nearestScrollableElement, _RelativePositionController_relativeElement, _RelativePositionController_elementToPosition, _RelativePositionController_disablePositioningOnCondition, _RelativePositionController_portalElementsNames, _RelativePositionController_isInitiallyScrollable, _RelativePositionController_initialMaxHeight, _RelativePositionController_initialHeight, _RelativePositionController_calculatedDirection, _RelativePositionController_hasPositioningBeenDisabled, _RelativePositionController_doesCurrentlyHaveShrinkMode, _RelativePositionController_offset, _RelativePositionController_throttledReposition, _RelativePositionController_throttledRepositionForScroll;
|
|
13
13
|
class RelativePositionController {
|
|
14
|
-
constructor({ host, container, direction, relativeElement, elementToPosition, disablePositioningOnCondition = () => true, portalElementsNames = [] }) {
|
|
14
|
+
constructor({ host, container, direction, relativeElement, elementToPosition, disablePositioningOnCondition = () => true, portalElementsNames = [], offset = 0 }) {
|
|
15
15
|
_RelativePositionController_host.set(this, void 0);
|
|
16
16
|
_RelativePositionController_container.set(this, void 0);
|
|
17
17
|
_RelativePositionController_nearestNonStaticElementFromElementToPosition.set(this, void 0);
|
|
@@ -27,6 +27,7 @@ class RelativePositionController {
|
|
|
27
27
|
_RelativePositionController_calculatedDirection.set(this, void 0);
|
|
28
28
|
_RelativePositionController_hasPositioningBeenDisabled.set(this, void 0);
|
|
29
29
|
_RelativePositionController_doesCurrentlyHaveShrinkMode.set(this, void 0);
|
|
30
|
+
_RelativePositionController_offset.set(this, void 0);
|
|
30
31
|
_RelativePositionController_throttledReposition.set(this, throttle['default'](() => {
|
|
31
32
|
if (tslib_es6.__classPrivateFieldGet(this, _RelativePositionController_disablePositioningOnCondition, "f").call(this)) {
|
|
32
33
|
this.disableRelativePositioning();
|
|
@@ -52,6 +53,7 @@ class RelativePositionController {
|
|
|
52
53
|
tslib_es6.__classPrivateFieldSet(this, _RelativePositionController_elementToPosition, elementToPosition, "f");
|
|
53
54
|
tslib_es6.__classPrivateFieldSet(this, _RelativePositionController_disablePositioningOnCondition, disablePositioningOnCondition, "f");
|
|
54
55
|
tslib_es6.__classPrivateFieldSet(this, _RelativePositionController_portalElementsNames, portalElementsNames, "f");
|
|
56
|
+
tslib_es6.__classPrivateFieldSet(this, _RelativePositionController_offset, offset, "f");
|
|
55
57
|
tslib_es6.__classPrivateFieldSet(this, _RelativePositionController_isInitiallyScrollable, elementToPosition.classList.contains(global_constants.SCROLLABLE_CLASS_NAME), "f");
|
|
56
58
|
tslib_es6.__classPrivateFieldSet(this, _RelativePositionController_initialMaxHeight, getComputedStyle(elementToPosition).maxHeight, "f");
|
|
57
59
|
tslib_es6.__classPrivateFieldGet(this, _RelativePositionController_host, "f").addController(this);
|
|
@@ -84,19 +86,21 @@ class RelativePositionController {
|
|
|
84
86
|
positionElementRect,
|
|
85
87
|
nearestNonStaticElementFromElementToPositionRect: tslib_es6.__classPrivateFieldGet(this, _RelativePositionController_nearestNonStaticElementFromElementToPosition, "f").getBoundingClientRect(),
|
|
86
88
|
container: tslib_es6.__classPrivateFieldGet(this, _RelativePositionController_container, "f"),
|
|
87
|
-
shouldNotReposition
|
|
89
|
+
shouldNotReposition: shouldNotReposition || !tslib_es6.__classPrivateFieldGet(this, _RelativePositionController_elementToPosition, "f").getAttribute('style'),
|
|
90
|
+
offset: tslib_es6.__classPrivateFieldGet(this, _RelativePositionController_offset, "f")
|
|
88
91
|
}).calculatePosition();
|
|
89
92
|
this._setElementPosition(position);
|
|
90
93
|
const isRepositioningDisabled = shouldNotReposition && tslib_es6.__classPrivateFieldGet(this, _RelativePositionController_doesCurrentlyHaveShrinkMode, "f");
|
|
91
94
|
if (isRepositioningDisabled)
|
|
92
|
-
return;
|
|
95
|
+
return position.calculatedSide;
|
|
93
96
|
tslib_es6.__classPrivateFieldSet(this, _RelativePositionController_calculatedDirection, position.calculatedSide, "f");
|
|
94
97
|
tslib_es6.__classPrivateFieldSet(this, _RelativePositionController_doesCurrentlyHaveShrinkMode, !!position.shrinkMode, "f");
|
|
95
98
|
if (!position.shrinkMode) {
|
|
96
99
|
this._disableShrinkMode();
|
|
97
|
-
return;
|
|
100
|
+
return position.calculatedSide;
|
|
98
101
|
}
|
|
99
102
|
this._enableShrinkMode();
|
|
103
|
+
return position.calculatedSide;
|
|
100
104
|
}
|
|
101
105
|
_dispatchReenabledPositioningEvent() {
|
|
102
106
|
tslib_es6.__classPrivateFieldSet(this, _RelativePositionController_hasPositioningBeenDisabled, false, "f");
|
|
@@ -155,7 +159,7 @@ class RelativePositionController {
|
|
|
155
159
|
elementStyle.transform = '';
|
|
156
160
|
}
|
|
157
161
|
}
|
|
158
|
-
_RelativePositionController_host = new WeakMap(), _RelativePositionController_container = new WeakMap(), _RelativePositionController_nearestNonStaticElementFromElementToPosition = new WeakMap(), _RelativePositionController_direction = new WeakMap(), _RelativePositionController_nearestScrollableElement = new WeakMap(), _RelativePositionController_relativeElement = new WeakMap(), _RelativePositionController_elementToPosition = new WeakMap(), _RelativePositionController_disablePositioningOnCondition = new WeakMap(), _RelativePositionController_portalElementsNames = new WeakMap(), _RelativePositionController_isInitiallyScrollable = new WeakMap(), _RelativePositionController_initialMaxHeight = new WeakMap(), _RelativePositionController_initialHeight = new WeakMap(), _RelativePositionController_calculatedDirection = new WeakMap(), _RelativePositionController_hasPositioningBeenDisabled = new WeakMap(), _RelativePositionController_doesCurrentlyHaveShrinkMode = new WeakMap(), _RelativePositionController_throttledReposition = new WeakMap(), _RelativePositionController_throttledRepositionForScroll = new WeakMap();
|
|
162
|
+
_RelativePositionController_host = new WeakMap(), _RelativePositionController_container = new WeakMap(), _RelativePositionController_nearestNonStaticElementFromElementToPosition = new WeakMap(), _RelativePositionController_direction = new WeakMap(), _RelativePositionController_nearestScrollableElement = new WeakMap(), _RelativePositionController_relativeElement = new WeakMap(), _RelativePositionController_elementToPosition = new WeakMap(), _RelativePositionController_disablePositioningOnCondition = new WeakMap(), _RelativePositionController_portalElementsNames = new WeakMap(), _RelativePositionController_isInitiallyScrollable = new WeakMap(), _RelativePositionController_initialMaxHeight = new WeakMap(), _RelativePositionController_initialHeight = new WeakMap(), _RelativePositionController_calculatedDirection = new WeakMap(), _RelativePositionController_hasPositioningBeenDisabled = new WeakMap(), _RelativePositionController_doesCurrentlyHaveShrinkMode = new WeakMap(), _RelativePositionController_offset = new WeakMap(), _RelativePositionController_throttledReposition = new WeakMap(), _RelativePositionController_throttledRepositionForScroll = new WeakMap();
|
|
159
163
|
|
|
160
164
|
exports.RelativePositionController = RelativePositionController;
|
|
161
165
|
//# sourceMappingURL=relative_position_controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA,uBAAuB,4CAAgD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA,uBAAuB,4CAAgD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -1,11 +1,24 @@
|
|
|
1
|
-
import { TRelativePositionCalculatorConstructorOptions
|
|
1
|
+
import { TRelativePositionCalculatorConstructorOptions } from './relative_position_calculator_types';
|
|
2
|
+
import { TRelativePositionControllerPositionData } from "./relative_position_controller_types";
|
|
2
3
|
export declare class PositionCalculator {
|
|
3
4
|
#private;
|
|
4
|
-
constructor({ direction, relativeElementRect, positionElementRect, container, nearestNonStaticElementFromElementToPositionRect, shouldNotReposition }: TRelativePositionCalculatorConstructorOptions);
|
|
5
|
+
constructor({ direction, relativeElementRect, positionElementRect, container, nearestNonStaticElementFromElementToPositionRect, offset, shouldNotReposition }: TRelativePositionCalculatorConstructorOptions);
|
|
5
6
|
calculatePosition(): TRelativePositionControllerPositionData;
|
|
6
7
|
private _canFitTopSide;
|
|
7
8
|
private _canFitBottomSide;
|
|
8
9
|
private _canFitCenter;
|
|
10
|
+
private _canFitLeftSide;
|
|
11
|
+
private _canFitRightSide;
|
|
9
12
|
private _calculateSidePosition;
|
|
13
|
+
private _calculateTopSide;
|
|
14
|
+
private _calculateBottomSide;
|
|
15
|
+
private _calculateCenterSide;
|
|
16
|
+
private _calculateLeftSide;
|
|
17
|
+
private _calculateRightSide;
|
|
10
18
|
private calculateAlignmentPosition;
|
|
19
|
+
private _calculateTopAlignment;
|
|
20
|
+
private _calculateBottomAlignment;
|
|
21
|
+
private _calculateLeftAlignment;
|
|
22
|
+
private _calculateRightAlignment;
|
|
23
|
+
private _calculateCenterAlignment;
|
|
11
24
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { __classPrivateFieldSet, __classPrivateFieldGet } from '../../../../../external/tslib/tslib.es6.js';
|
|
2
2
|
import { CALCULATOR_DIRECTIONS } from './relative_position_controller_constants.js';
|
|
3
3
|
|
|
4
|
-
var _PositionCalculator_direction, _PositionCalculator_relativeElementRect, _PositionCalculator_positionElementRect, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, _PositionCalculator_containerRect, _PositionCalculator_documentHeight, _PositionCalculator_shouldNotReposition;
|
|
4
|
+
var _PositionCalculator_direction, _PositionCalculator_relativeElementRect, _PositionCalculator_positionElementRect, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, _PositionCalculator_containerRect, _PositionCalculator_documentHeight, _PositionCalculator_shouldNotReposition, _PositionCalculator_offset;
|
|
5
5
|
class PositionCalculator {
|
|
6
|
-
constructor({ direction, relativeElementRect, positionElementRect, container = document.body, nearestNonStaticElementFromElementToPositionRect, shouldNotReposition }) {
|
|
6
|
+
constructor({ direction, relativeElementRect, positionElementRect, container = document.body, nearestNonStaticElementFromElementToPositionRect, offset = 0, shouldNotReposition }) {
|
|
7
7
|
_PositionCalculator_direction.set(this, void 0);
|
|
8
8
|
_PositionCalculator_relativeElementRect.set(this, void 0);
|
|
9
9
|
_PositionCalculator_positionElementRect.set(this, void 0);
|
|
@@ -11,20 +11,22 @@ class PositionCalculator {
|
|
|
11
11
|
_PositionCalculator_containerRect.set(this, void 0);
|
|
12
12
|
_PositionCalculator_documentHeight.set(this, void 0);
|
|
13
13
|
_PositionCalculator_shouldNotReposition.set(this, void 0);
|
|
14
|
+
_PositionCalculator_offset.set(this, void 0);
|
|
14
15
|
__classPrivateFieldSet(this, _PositionCalculator_direction, direction, "f");
|
|
15
16
|
__classPrivateFieldSet(this, _PositionCalculator_relativeElementRect, relativeElementRect, "f");
|
|
16
17
|
__classPrivateFieldSet(this, _PositionCalculator_positionElementRect, positionElementRect, "f");
|
|
17
18
|
__classPrivateFieldSet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, nearestNonStaticElementFromElementToPositionRect, "f");
|
|
18
19
|
__classPrivateFieldSet(this, _PositionCalculator_containerRect, container.getBoundingClientRect(), "f");
|
|
19
20
|
__classPrivateFieldSet(this, _PositionCalculator_shouldNotReposition, !!shouldNotReposition, "f");
|
|
21
|
+
__classPrivateFieldSet(this, _PositionCalculator_offset, offset, "f");
|
|
20
22
|
const body = document.body;
|
|
21
23
|
const documentElement = document.documentElement;
|
|
22
24
|
__classPrivateFieldSet(this, _PositionCalculator_documentHeight, Math.max(body.scrollHeight, body.offsetHeight, documentElement.clientHeight, documentElement.scrollHeight, documentElement.offsetHeight), "f");
|
|
23
25
|
}
|
|
24
26
|
calculatePosition() {
|
|
25
27
|
const [side, alignment = CALCULATOR_DIRECTIONS.center] = __classPrivateFieldGet(this, _PositionCalculator_direction, "f").split('-');
|
|
26
|
-
const sidePosition = this._calculateSidePosition(side);
|
|
27
|
-
const alignmentPosition = this.calculateAlignmentPosition(alignment);
|
|
28
|
+
const sidePosition = this._calculateSidePosition(side, alignment);
|
|
29
|
+
const alignmentPosition = this.calculateAlignmentPosition(alignment, side);
|
|
28
30
|
return {
|
|
29
31
|
...sidePosition,
|
|
30
32
|
...alignmentPosition,
|
|
@@ -42,66 +44,188 @@ class PositionCalculator {
|
|
|
42
44
|
_canFitCenter(centerPosition) {
|
|
43
45
|
return centerPosition + __classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").height - window.scrollY < window.innerHeight && centerPosition - window.scrollY > 0;
|
|
44
46
|
}
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
_canFitLeftSide() {
|
|
48
|
+
const positionElementLeftSide = __classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").left - __classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").left - __classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width;
|
|
49
|
+
return positionElementLeftSide >= __classPrivateFieldGet(this, _PositionCalculator_containerRect, "f").left;
|
|
50
|
+
}
|
|
51
|
+
_canFitRightSide() {
|
|
52
|
+
const positionElementRightSide = __classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").right - __classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").left;
|
|
53
|
+
return positionElementRightSide + __classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width <= __classPrivateFieldGet(this, _PositionCalculator_containerRect, "f").width;
|
|
54
|
+
}
|
|
55
|
+
_calculateSidePosition(side, alignment) {
|
|
56
|
+
const topSideOfRelativeElement = __classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").top -
|
|
57
|
+
__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").top -
|
|
58
|
+
__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").height -
|
|
59
|
+
__classPrivateFieldGet(this, _PositionCalculator_offset, "f");
|
|
60
|
+
const bottomSideOfRelativeElement = __classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").bottom - __classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").top + __classPrivateFieldGet(this, _PositionCalculator_offset, "f");
|
|
61
|
+
const leftSideOfRelativeElement = __classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").left -
|
|
62
|
+
__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").left -
|
|
63
|
+
__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width -
|
|
64
|
+
__classPrivateFieldGet(this, _PositionCalculator_offset, "f");
|
|
65
|
+
const rightSideOfRelativeElement = __classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").right - __classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").left + __classPrivateFieldGet(this, _PositionCalculator_offset, "f");
|
|
66
|
+
const verticalCenterOfRelativeElement = (topSideOfRelativeElement + bottomSideOfRelativeElement) / 2;
|
|
67
|
+
const horizontalCenterOfRelativeElement = (leftSideOfRelativeElement + rightSideOfRelativeElement) / 2;
|
|
49
68
|
switch (side) {
|
|
50
69
|
case CALCULATOR_DIRECTIONS.top:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return { top: centerOfRelativeElement, calculatedSide: CALCULATOR_DIRECTIONS.center };
|
|
57
|
-
if (!this._canFitTopSide())
|
|
58
|
-
return { top: bottomSideOfRelativeElement, calculatedSide: CALCULATOR_DIRECTIONS.bottom };
|
|
59
|
-
return { top: topSideOfRelativeElement, calculatedSide: CALCULATOR_DIRECTIONS.top };
|
|
70
|
+
return this._calculateTopSide({
|
|
71
|
+
topSide: topSideOfRelativeElement,
|
|
72
|
+
bottomSide: bottomSideOfRelativeElement,
|
|
73
|
+
verticalCenter: verticalCenterOfRelativeElement
|
|
74
|
+
});
|
|
60
75
|
case CALCULATOR_DIRECTIONS.bottom:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return { top: centerOfRelativeElement, calculatedSide: CALCULATOR_DIRECTIONS.center };
|
|
67
|
-
if (!this._canFitBottomSide())
|
|
68
|
-
return { top: topSideOfRelativeElement, calculatedSide: CALCULATOR_DIRECTIONS.top };
|
|
69
|
-
return { top: bottomSideOfRelativeElement, calculatedSide: CALCULATOR_DIRECTIONS.bottom };
|
|
76
|
+
return this._calculateBottomSide({
|
|
77
|
+
topSide: topSideOfRelativeElement,
|
|
78
|
+
bottomSide: bottomSideOfRelativeElement,
|
|
79
|
+
verticalCenter: verticalCenterOfRelativeElement
|
|
80
|
+
});
|
|
70
81
|
case CALCULATOR_DIRECTIONS.center:
|
|
71
|
-
return {
|
|
82
|
+
return this._calculateCenterSide({
|
|
83
|
+
verticalCenter: verticalCenterOfRelativeElement,
|
|
84
|
+
horizontalCenter: horizontalCenterOfRelativeElement,
|
|
85
|
+
alignment
|
|
86
|
+
});
|
|
72
87
|
case CALCULATOR_DIRECTIONS.left:
|
|
73
|
-
|
|
74
|
-
|
|
88
|
+
return this._calculateLeftSide({
|
|
89
|
+
leftSide: leftSideOfRelativeElement,
|
|
90
|
+
rightSide: rightSideOfRelativeElement
|
|
91
|
+
});
|
|
75
92
|
case CALCULATOR_DIRECTIONS.right:
|
|
76
|
-
|
|
77
|
-
|
|
93
|
+
return this._calculateRightSide({
|
|
94
|
+
leftSide: leftSideOfRelativeElement,
|
|
95
|
+
rightSide: rightSideOfRelativeElement
|
|
96
|
+
});
|
|
78
97
|
default:
|
|
79
98
|
return { top: 0 };
|
|
80
99
|
}
|
|
81
100
|
}
|
|
82
|
-
|
|
101
|
+
_calculateTopSide({ topSide, bottomSide, verticalCenter }) {
|
|
102
|
+
if (__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
|
|
103
|
+
return { top: topSide, calculatedSide: CALCULATOR_DIRECTIONS.top };
|
|
104
|
+
if (!this._canFitTopSide() && !this._canFitBottomSide() && !this._canFitCenter(verticalCenter))
|
|
105
|
+
return { top: bottomSide, calculatedSide: CALCULATOR_DIRECTIONS.bottom, shrinkMode: true };
|
|
106
|
+
if (!this._canFitTopSide() && !this._canFitBottomSide())
|
|
107
|
+
return { top: verticalCenter, calculatedSide: CALCULATOR_DIRECTIONS.center };
|
|
108
|
+
if (!this._canFitTopSide())
|
|
109
|
+
return { top: bottomSide, calculatedSide: CALCULATOR_DIRECTIONS.bottom };
|
|
110
|
+
return { top: topSide, calculatedSide: CALCULATOR_DIRECTIONS.top };
|
|
111
|
+
}
|
|
112
|
+
_calculateBottomSide({ topSide, bottomSide, verticalCenter }) {
|
|
113
|
+
if (__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
|
|
114
|
+
return { top: bottomSide, calculatedSide: CALCULATOR_DIRECTIONS.bottom };
|
|
115
|
+
if (!this._canFitTopSide() && !this._canFitBottomSide() && !this._canFitCenter(verticalCenter))
|
|
116
|
+
return { top: bottomSide, calculatedSide: CALCULATOR_DIRECTIONS.bottom, shrinkMode: true };
|
|
117
|
+
if (!this._canFitTopSide() && !this._canFitBottomSide())
|
|
118
|
+
return { top: verticalCenter, calculatedSide: CALCULATOR_DIRECTIONS.center };
|
|
119
|
+
if (!this._canFitBottomSide())
|
|
120
|
+
return { top: topSide, calculatedSide: CALCULATOR_DIRECTIONS.top };
|
|
121
|
+
return { top: bottomSide, calculatedSide: CALCULATOR_DIRECTIONS.bottom };
|
|
122
|
+
}
|
|
123
|
+
_calculateCenterSide({ verticalCenter, horizontalCenter, alignment }) {
|
|
124
|
+
if (alignment === CALCULATOR_DIRECTIONS.left || alignment === CALCULATOR_DIRECTIONS.right)
|
|
125
|
+
return { top: verticalCenter, calculatedSide: CALCULATOR_DIRECTIONS.center };
|
|
126
|
+
return { left: horizontalCenter, calculatedSide: CALCULATOR_DIRECTIONS.center };
|
|
127
|
+
}
|
|
128
|
+
_calculateLeftSide({ leftSide, rightSide }) {
|
|
129
|
+
if (__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
|
|
130
|
+
return { left: leftSide, calculatedSide: CALCULATOR_DIRECTIONS.left };
|
|
131
|
+
if (!this._canFitLeftSide() && !this._canFitRightSide())
|
|
132
|
+
return { left: leftSide, calculatedSide: CALCULATOR_DIRECTIONS.left };
|
|
133
|
+
if (!this._canFitLeftSide())
|
|
134
|
+
return { left: rightSide, calculatedSide: CALCULATOR_DIRECTIONS.right };
|
|
135
|
+
return { left: leftSide, calculatedSide: CALCULATOR_DIRECTIONS.left };
|
|
136
|
+
}
|
|
137
|
+
_calculateRightSide({ leftSide, rightSide }) {
|
|
138
|
+
if (__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
|
|
139
|
+
return { left: rightSide, calculatedSide: CALCULATOR_DIRECTIONS.right };
|
|
140
|
+
if (!this._canFitRightSide() && !this._canFitLeftSide())
|
|
141
|
+
return { left: rightSide, calculatedSide: CALCULATOR_DIRECTIONS.right };
|
|
142
|
+
if (!this._canFitRightSide())
|
|
143
|
+
return { left: leftSide, calculatedSide: CALCULATOR_DIRECTIONS.left };
|
|
144
|
+
return { left: rightSide, calculatedSide: CALCULATOR_DIRECTIONS.right };
|
|
145
|
+
}
|
|
146
|
+
calculateAlignmentPosition(alignment, side) {
|
|
83
147
|
const alignmentToLeftSide = __classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").left - __classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").left;
|
|
84
148
|
const alignmentToRightSide = __classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").right - __classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").left - __classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width;
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
149
|
+
const alignmentToTopSide = __classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").top - __classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").top;
|
|
150
|
+
const alignmentToBottomSide = __classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").bottom - __classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").top - __classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").height;
|
|
151
|
+
const verticalCenterOfRelativeElement = (alignmentToTopSide + alignmentToBottomSide) / 2;
|
|
152
|
+
const horizontalCenterOfRelativeElement = (alignmentToLeftSide + alignmentToRightSide) / 2;
|
|
153
|
+
const isSideCenter = side === CALCULATOR_DIRECTIONS.center;
|
|
154
|
+
switch (alignment) {
|
|
155
|
+
case CALCULATOR_DIRECTIONS.top: {
|
|
156
|
+
return this._calculateTopAlignment({ topAlignment: alignmentToTopSide, isSideCenter });
|
|
157
|
+
}
|
|
158
|
+
case CALCULATOR_DIRECTIONS.bottom: {
|
|
159
|
+
return this._calculateBottomAlignment({ bottomAlignment: alignmentToBottomSide, isSideCenter });
|
|
160
|
+
}
|
|
161
|
+
case CALCULATOR_DIRECTIONS.left: {
|
|
162
|
+
return this._calculateLeftAlignment({
|
|
163
|
+
leftAlignment: alignmentToLeftSide,
|
|
164
|
+
rightAlignment: alignmentToRightSide,
|
|
165
|
+
isSideCenter
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
case CALCULATOR_DIRECTIONS.right: {
|
|
169
|
+
return this._calculateRightAlignment({
|
|
170
|
+
leftAlignment: alignmentToLeftSide,
|
|
171
|
+
rightAlignment: alignmentToRightSide,
|
|
172
|
+
isSideCenter
|
|
173
|
+
});
|
|
174
|
+
}
|
|
97
175
|
case CALCULATOR_DIRECTIONS.center:
|
|
98
|
-
return {
|
|
176
|
+
return this._calculateCenterAlignment({
|
|
177
|
+
horizontalCenter: horizontalCenterOfRelativeElement,
|
|
178
|
+
verticalCenter: verticalCenterOfRelativeElement,
|
|
179
|
+
side
|
|
180
|
+
});
|
|
99
181
|
default:
|
|
100
182
|
return { left: 0 };
|
|
101
183
|
}
|
|
102
184
|
}
|
|
185
|
+
_calculateTopAlignment({ topAlignment, isSideCenter }) {
|
|
186
|
+
const alignmentToTop = isSideCenter ? topAlignment - __classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").height - __classPrivateFieldGet(this, _PositionCalculator_offset, "f") : topAlignment;
|
|
187
|
+
return {
|
|
188
|
+
top: alignmentToTop,
|
|
189
|
+
calculatedSide: CALCULATOR_DIRECTIONS.top
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
_calculateBottomAlignment({ bottomAlignment, isSideCenter }) {
|
|
193
|
+
const alignmentToBottom = isSideCenter ? bottomAlignment + __classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").height + __classPrivateFieldGet(this, _PositionCalculator_offset, "f") : bottomAlignment;
|
|
194
|
+
return { top: alignmentToBottom, calculatedSide: CALCULATOR_DIRECTIONS.bottom };
|
|
195
|
+
}
|
|
196
|
+
_calculateLeftAlignment({ leftAlignment, rightAlignment, isSideCenter }) {
|
|
197
|
+
const alignmentToLeftSide = isSideCenter ? leftAlignment - __classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width : leftAlignment;
|
|
198
|
+
const alignmentToRightSide = rightAlignment + __classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width + __classPrivateFieldGet(this, _PositionCalculator_offset, "f");
|
|
199
|
+
if (!isSideCenter)
|
|
200
|
+
return { left: alignmentToLeftSide, calculatedSide: CALCULATOR_DIRECTIONS.left };
|
|
201
|
+
if (__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
|
|
202
|
+
return { left: alignmentToLeftSide, calculatedSide: CALCULATOR_DIRECTIONS.left };
|
|
203
|
+
if (!this._canFitLeftSide() && !this._canFitRightSide())
|
|
204
|
+
return { left: alignmentToLeftSide, calculatedSide: CALCULATOR_DIRECTIONS.left };
|
|
205
|
+
if (!this._canFitLeftSide())
|
|
206
|
+
return { left: alignmentToRightSide, calculatedSide: CALCULATOR_DIRECTIONS.right };
|
|
207
|
+
return { left: alignmentToLeftSide - __classPrivateFieldGet(this, _PositionCalculator_offset, "f"), calculatedSide: CALCULATOR_DIRECTIONS.left };
|
|
208
|
+
}
|
|
209
|
+
_calculateRightAlignment({ leftAlignment, rightAlignment, isSideCenter }) {
|
|
210
|
+
const alignmentToRightSide = isSideCenter ? rightAlignment + __classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width : rightAlignment;
|
|
211
|
+
const alignmentToLeftSide = leftAlignment - __classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").width - __classPrivateFieldGet(this, _PositionCalculator_offset, "f");
|
|
212
|
+
if (!isSideCenter)
|
|
213
|
+
return { left: alignmentToRightSide, calculatedSide: CALCULATOR_DIRECTIONS.right };
|
|
214
|
+
if (__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
|
|
215
|
+
return { left: alignmentToRightSide, calculatedSide: CALCULATOR_DIRECTIONS.right };
|
|
216
|
+
if (!this._canFitLeftSide() && !this._canFitRightSide())
|
|
217
|
+
return { left: alignmentToRightSide, calculatedSide: CALCULATOR_DIRECTIONS.right };
|
|
218
|
+
if (!this._canFitRightSide())
|
|
219
|
+
return { left: alignmentToLeftSide, calculatedSide: CALCULATOR_DIRECTIONS.left };
|
|
220
|
+
return { left: alignmentToRightSide + __classPrivateFieldGet(this, _PositionCalculator_offset, "f"), calculatedSide: CALCULATOR_DIRECTIONS.right };
|
|
221
|
+
}
|
|
222
|
+
_calculateCenterAlignment({ horizontalCenter, verticalCenter, side }) {
|
|
223
|
+
if (side === CALCULATOR_DIRECTIONS.top || side === CALCULATOR_DIRECTIONS.bottom)
|
|
224
|
+
return { left: horizontalCenter, calculatedSide: CALCULATOR_DIRECTIONS.center };
|
|
225
|
+
return { top: verticalCenter, calculatedSide: CALCULATOR_DIRECTIONS.center };
|
|
226
|
+
}
|
|
103
227
|
}
|
|
104
|
-
_PositionCalculator_direction = new WeakMap(), _PositionCalculator_relativeElementRect = new WeakMap(), _PositionCalculator_positionElementRect = new WeakMap(), _PositionCalculator_nearestNonStaticElementFromElementToPositionRect = new WeakMap(), _PositionCalculator_containerRect = new WeakMap(), _PositionCalculator_documentHeight = new WeakMap(), _PositionCalculator_shouldNotReposition = new WeakMap();
|
|
228
|
+
_PositionCalculator_direction = new WeakMap(), _PositionCalculator_relativeElementRect = new WeakMap(), _PositionCalculator_positionElementRect = new WeakMap(), _PositionCalculator_nearestNonStaticElementFromElementToPositionRect = new WeakMap(), _PositionCalculator_containerRect = new WeakMap(), _PositionCalculator_documentHeight = new WeakMap(), _PositionCalculator_shouldNotReposition = new WeakMap(), _PositionCalculator_offset = new WeakMap();
|
|
105
229
|
|
|
106
230
|
export { PositionCalculator };
|
|
107
231
|
//# sourceMappingURL=relative_position_calculator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,+DAA+D,4CAAgD;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,+DAA+D,4CAAgD;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Any } from 'ts-toolbelt';
|
|
2
|
+
import { CALCULATOR_DIRECTIONS } from './relative_position_controller_constants';
|
|
3
|
+
import { TDirection } from './relative_position_controller_types';
|
|
4
|
+
export declare type TCalculatorDirection = typeof CALCULATOR_DIRECTIONS[Any.Keys<typeof CALCULATOR_DIRECTIONS>];
|
|
5
|
+
export declare type TRelativePositionCalculatorConstructorOptions = {
|
|
6
|
+
direction: TDirection;
|
|
7
|
+
relativeElementRect: DOMRect;
|
|
8
|
+
positionElementRect: DOMRect;
|
|
9
|
+
nearestNonStaticElementFromElementToPositionRect: DOMRect;
|
|
10
|
+
offset?: number;
|
|
11
|
+
container?: HTMLElement;
|
|
12
|
+
shouldNotReposition?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare type TCalculateVerticalSideProps = {
|
|
15
|
+
topSide: number;
|
|
16
|
+
bottomSide: number;
|
|
17
|
+
verticalCenter: number;
|
|
18
|
+
};
|
|
19
|
+
export declare type TCalculateCenterSideProps = {
|
|
20
|
+
verticalCenter: number;
|
|
21
|
+
horizontalCenter: number;
|
|
22
|
+
alignment: TCalculatorDirection;
|
|
23
|
+
};
|
|
24
|
+
export declare type TCalculateHorizontalSideProps = {
|
|
25
|
+
leftSide: number;
|
|
26
|
+
rightSide: number;
|
|
27
|
+
};
|
|
28
|
+
export declare type TCalculateTopAlignmentProps = {
|
|
29
|
+
topAlignment: number;
|
|
30
|
+
isSideCenter: boolean;
|
|
31
|
+
};
|
|
32
|
+
export declare type TCalculateBottomAlignmentProps = {
|
|
33
|
+
bottomAlignment: number;
|
|
34
|
+
isSideCenter: boolean;
|
|
35
|
+
};
|
|
36
|
+
export declare type TCalculateHorizontalAlignmentProps = {
|
|
37
|
+
leftAlignment: number;
|
|
38
|
+
rightAlignment: number;
|
|
39
|
+
isSideCenter: boolean;
|
|
40
|
+
};
|
|
41
|
+
export declare type TCalculateCenterAlignmentProps = {
|
|
42
|
+
verticalCenter: number;
|
|
43
|
+
horizontalCenter: number;
|
|
44
|
+
side: TCalculatorDirection;
|
|
45
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relative_position_calculator_types.js","sourceRoot":"","sources":["../../../../../../../src/controllers/relative_position_controller/relative_position_calculator_types.ts"],"names":[],"mappings":"AAAA,OAAoB,aAAa,CAAC;AAClC,OAAsC,0CAA0C,CAAC;AACjF,OAA2B,sCAAsC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { IRelativePositionController, TRelativePositionControllerConstructorOptions } from "./relative_position_controller_types";
|
|
1
|
+
import { IRelativePositionController, TDirection, TRelativePositionControllerConstructorOptions } from "./relative_position_controller_types";
|
|
2
2
|
export declare class RelativePositionController implements IRelativePositionController {
|
|
3
3
|
#private;
|
|
4
|
-
constructor({ host, container, direction, relativeElement, elementToPosition, disablePositioningOnCondition, portalElementsNames }: TRelativePositionControllerConstructorOptions);
|
|
4
|
+
constructor({ host, container, direction, relativeElement, elementToPosition, disablePositioningOnCondition, portalElementsNames, offset }: TRelativePositionControllerConstructorOptions);
|
|
5
5
|
hostConnected(): void;
|
|
6
6
|
hostDisconnected(): void;
|
|
7
|
-
position(shouldNotReposition?: boolean):
|
|
7
|
+
position(shouldNotReposition?: boolean): TDirection;
|
|
8
8
|
private _dispatchReenabledPositioningEvent;
|
|
9
9
|
private _findNearestScrollableElement;
|
|
10
10
|
private _findContainer;
|
|
@@ -5,9 +5,9 @@ import { RELATIVE_POSITION_CONTROLLER_EVENTS, OVERFLOW_SCROLL, OVERFLOW_AUTO, NO
|
|
|
5
5
|
import { PositionCalculator } from './relative_position_calculator.js';
|
|
6
6
|
import throttle_1 from '../../../../../external/lodash/throttle.js';
|
|
7
7
|
|
|
8
|
-
var _RelativePositionController_host, _RelativePositionController_container, _RelativePositionController_nearestNonStaticElementFromElementToPosition, _RelativePositionController_direction, _RelativePositionController_nearestScrollableElement, _RelativePositionController_relativeElement, _RelativePositionController_elementToPosition, _RelativePositionController_disablePositioningOnCondition, _RelativePositionController_portalElementsNames, _RelativePositionController_isInitiallyScrollable, _RelativePositionController_initialMaxHeight, _RelativePositionController_initialHeight, _RelativePositionController_calculatedDirection, _RelativePositionController_hasPositioningBeenDisabled, _RelativePositionController_doesCurrentlyHaveShrinkMode, _RelativePositionController_throttledReposition, _RelativePositionController_throttledRepositionForScroll;
|
|
8
|
+
var _RelativePositionController_host, _RelativePositionController_container, _RelativePositionController_nearestNonStaticElementFromElementToPosition, _RelativePositionController_direction, _RelativePositionController_nearestScrollableElement, _RelativePositionController_relativeElement, _RelativePositionController_elementToPosition, _RelativePositionController_disablePositioningOnCondition, _RelativePositionController_portalElementsNames, _RelativePositionController_isInitiallyScrollable, _RelativePositionController_initialMaxHeight, _RelativePositionController_initialHeight, _RelativePositionController_calculatedDirection, _RelativePositionController_hasPositioningBeenDisabled, _RelativePositionController_doesCurrentlyHaveShrinkMode, _RelativePositionController_offset, _RelativePositionController_throttledReposition, _RelativePositionController_throttledRepositionForScroll;
|
|
9
9
|
class RelativePositionController {
|
|
10
|
-
constructor({ host, container, direction, relativeElement, elementToPosition, disablePositioningOnCondition = () => true, portalElementsNames = [] }) {
|
|
10
|
+
constructor({ host, container, direction, relativeElement, elementToPosition, disablePositioningOnCondition = () => true, portalElementsNames = [], offset = 0 }) {
|
|
11
11
|
_RelativePositionController_host.set(this, void 0);
|
|
12
12
|
_RelativePositionController_container.set(this, void 0);
|
|
13
13
|
_RelativePositionController_nearestNonStaticElementFromElementToPosition.set(this, void 0);
|
|
@@ -23,6 +23,7 @@ class RelativePositionController {
|
|
|
23
23
|
_RelativePositionController_calculatedDirection.set(this, void 0);
|
|
24
24
|
_RelativePositionController_hasPositioningBeenDisabled.set(this, void 0);
|
|
25
25
|
_RelativePositionController_doesCurrentlyHaveShrinkMode.set(this, void 0);
|
|
26
|
+
_RelativePositionController_offset.set(this, void 0);
|
|
26
27
|
_RelativePositionController_throttledReposition.set(this, throttle_1(() => {
|
|
27
28
|
if (__classPrivateFieldGet(this, _RelativePositionController_disablePositioningOnCondition, "f").call(this)) {
|
|
28
29
|
this.disableRelativePositioning();
|
|
@@ -48,6 +49,7 @@ class RelativePositionController {
|
|
|
48
49
|
__classPrivateFieldSet(this, _RelativePositionController_elementToPosition, elementToPosition, "f");
|
|
49
50
|
__classPrivateFieldSet(this, _RelativePositionController_disablePositioningOnCondition, disablePositioningOnCondition, "f");
|
|
50
51
|
__classPrivateFieldSet(this, _RelativePositionController_portalElementsNames, portalElementsNames, "f");
|
|
52
|
+
__classPrivateFieldSet(this, _RelativePositionController_offset, offset, "f");
|
|
51
53
|
__classPrivateFieldSet(this, _RelativePositionController_isInitiallyScrollable, elementToPosition.classList.contains(SCROLLABLE_CLASS_NAME), "f");
|
|
52
54
|
__classPrivateFieldSet(this, _RelativePositionController_initialMaxHeight, getComputedStyle(elementToPosition).maxHeight, "f");
|
|
53
55
|
__classPrivateFieldGet(this, _RelativePositionController_host, "f").addController(this);
|
|
@@ -80,19 +82,21 @@ class RelativePositionController {
|
|
|
80
82
|
positionElementRect,
|
|
81
83
|
nearestNonStaticElementFromElementToPositionRect: __classPrivateFieldGet(this, _RelativePositionController_nearestNonStaticElementFromElementToPosition, "f").getBoundingClientRect(),
|
|
82
84
|
container: __classPrivateFieldGet(this, _RelativePositionController_container, "f"),
|
|
83
|
-
shouldNotReposition
|
|
85
|
+
shouldNotReposition: shouldNotReposition || !__classPrivateFieldGet(this, _RelativePositionController_elementToPosition, "f").getAttribute('style'),
|
|
86
|
+
offset: __classPrivateFieldGet(this, _RelativePositionController_offset, "f")
|
|
84
87
|
}).calculatePosition();
|
|
85
88
|
this._setElementPosition(position);
|
|
86
89
|
const isRepositioningDisabled = shouldNotReposition && __classPrivateFieldGet(this, _RelativePositionController_doesCurrentlyHaveShrinkMode, "f");
|
|
87
90
|
if (isRepositioningDisabled)
|
|
88
|
-
return;
|
|
91
|
+
return position.calculatedSide;
|
|
89
92
|
__classPrivateFieldSet(this, _RelativePositionController_calculatedDirection, position.calculatedSide, "f");
|
|
90
93
|
__classPrivateFieldSet(this, _RelativePositionController_doesCurrentlyHaveShrinkMode, !!position.shrinkMode, "f");
|
|
91
94
|
if (!position.shrinkMode) {
|
|
92
95
|
this._disableShrinkMode();
|
|
93
|
-
return;
|
|
96
|
+
return position.calculatedSide;
|
|
94
97
|
}
|
|
95
98
|
this._enableShrinkMode();
|
|
99
|
+
return position.calculatedSide;
|
|
96
100
|
}
|
|
97
101
|
_dispatchReenabledPositioningEvent() {
|
|
98
102
|
__classPrivateFieldSet(this, _RelativePositionController_hasPositioningBeenDisabled, false, "f");
|
|
@@ -151,7 +155,7 @@ class RelativePositionController {
|
|
|
151
155
|
elementStyle.transform = '';
|
|
152
156
|
}
|
|
153
157
|
}
|
|
154
|
-
_RelativePositionController_host = new WeakMap(), _RelativePositionController_container = new WeakMap(), _RelativePositionController_nearestNonStaticElementFromElementToPosition = new WeakMap(), _RelativePositionController_direction = new WeakMap(), _RelativePositionController_nearestScrollableElement = new WeakMap(), _RelativePositionController_relativeElement = new WeakMap(), _RelativePositionController_elementToPosition = new WeakMap(), _RelativePositionController_disablePositioningOnCondition = new WeakMap(), _RelativePositionController_portalElementsNames = new WeakMap(), _RelativePositionController_isInitiallyScrollable = new WeakMap(), _RelativePositionController_initialMaxHeight = new WeakMap(), _RelativePositionController_initialHeight = new WeakMap(), _RelativePositionController_calculatedDirection = new WeakMap(), _RelativePositionController_hasPositioningBeenDisabled = new WeakMap(), _RelativePositionController_doesCurrentlyHaveShrinkMode = new WeakMap(), _RelativePositionController_throttledReposition = new WeakMap(), _RelativePositionController_throttledRepositionForScroll = new WeakMap();
|
|
158
|
+
_RelativePositionController_host = new WeakMap(), _RelativePositionController_container = new WeakMap(), _RelativePositionController_nearestNonStaticElementFromElementToPosition = new WeakMap(), _RelativePositionController_direction = new WeakMap(), _RelativePositionController_nearestScrollableElement = new WeakMap(), _RelativePositionController_relativeElement = new WeakMap(), _RelativePositionController_elementToPosition = new WeakMap(), _RelativePositionController_disablePositioningOnCondition = new WeakMap(), _RelativePositionController_portalElementsNames = new WeakMap(), _RelativePositionController_isInitiallyScrollable = new WeakMap(), _RelativePositionController_initialMaxHeight = new WeakMap(), _RelativePositionController_initialHeight = new WeakMap(), _RelativePositionController_calculatedDirection = new WeakMap(), _RelativePositionController_hasPositioningBeenDisabled = new WeakMap(), _RelativePositionController_doesCurrentlyHaveShrinkMode = new WeakMap(), _RelativePositionController_offset = new WeakMap(), _RelativePositionController_throttledReposition = new WeakMap(), _RelativePositionController_throttledRepositionForScroll = new WeakMap();
|
|
155
159
|
|
|
156
160
|
export { RelativePositionController };
|
|
157
161
|
//# sourceMappingURL=relative_position_controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,+DAA+D,4CAAgD;AAC/G;AACA;AACA;AACA;AACA,uBAAuB,4CAAgD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,+DAA+D,4CAAgD;AAC/G;AACA;AACA;AACA;AACA,uBAAuB,4CAAgD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { CALCULATOR_DIRECTIONS, DIRECTIONS } from "./relative_position_controller_constants";
|
|
2
1
|
import { ReactiveController, ReactiveControllerHost } from 'lit';
|
|
3
2
|
import { Any } from 'ts-toolbelt';
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { DIRECTIONS } from "./relative_position_controller_constants";
|
|
4
|
+
import { TCalculatorDirection } from './relative_position_calculator_types';
|
|
5
|
+
export declare type TDirection = typeof DIRECTIONS[Any.Keys<typeof DIRECTIONS>];
|
|
6
6
|
export declare type TRelativePositionControllerConstructorOptions = {
|
|
7
7
|
host: ReactiveControllerHost & HTMLElement;
|
|
8
8
|
direction: TDirection;
|
|
@@ -11,6 +11,7 @@ export declare type TRelativePositionControllerConstructorOptions = {
|
|
|
11
11
|
elementToPosition: HTMLElement;
|
|
12
12
|
disablePositioningOnCondition?: () => boolean;
|
|
13
13
|
portalElementsNames?: string[];
|
|
14
|
+
offset?: number;
|
|
14
15
|
};
|
|
15
16
|
export interface IRelativePositionController extends ReactiveController {
|
|
16
17
|
position(): void;
|
|
@@ -24,11 +25,3 @@ export declare type TRelativePositionControllerPositionData = {
|
|
|
24
25
|
export declare type TPartialPositionControllerPositionData = Omit<TRelativePositionControllerPositionData, 'calculatedSide'> & {
|
|
25
26
|
calculatedSide: TCalculatorDirection;
|
|
26
27
|
};
|
|
27
|
-
export declare type TRelativePositionCalculatorConstructorOptions = {
|
|
28
|
-
direction: TDirection;
|
|
29
|
-
relativeElementRect: DOMRect;
|
|
30
|
-
positionElementRect: DOMRect;
|
|
31
|
-
nearestNonStaticElementFromElementToPositionRect: DOMRect;
|
|
32
|
-
container?: HTMLElement;
|
|
33
|
-
shouldNotReposition?: boolean;
|
|
34
|
-
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import '@phoenixRoot/controllers/relative_position_controller/relative_position_controller_constants';
|
|
2
1
|
import 'lit';
|
|
3
2
|
import 'ts-toolbelt';
|
|
3
|
+
import '@phoenixRoot/controllers/relative_position_controller/relative_position_controller_constants';
|
|
4
|
+
import './relative_position_calculator_types';
|
|
4
5
|
//# sourceMappingURL=relative_position_controller_types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relative_position_controller_types.js","sourceRoot":"","sources":["../../../../../../../src/controllers/relative_position_controller/relative_position_controller_types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"relative_position_controller_types.js","sourceRoot":"","sources":["../../../../../../../src/controllers/relative_position_controller/relative_position_controller_types.ts"],"names":[],"mappings":"AAAA,OAA2D,KAAK,CAAC;AAEjE,OAAoB,aAAa,CAAC;AAClC,OAA2B,8FAA8F,CAAC;AAC1H,OAAqC,sCAAsC,CAAC"}
|