@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.
Files changed (17) hide show
  1. package/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.js +170 -46
  2. package/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.js.map +1 -1
  3. package/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.js +10 -6
  4. package/build/cjs/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.js.map +1 -1
  5. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.d.ts +15 -2
  6. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.js +170 -46
  7. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator.js.map +1 -1
  8. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator_types.d.ts +45 -0
  9. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator_types.js +4 -0
  10. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_calculator_types.js.map +1 -0
  11. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.d.ts +3 -3
  12. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.js +10 -6
  13. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller.js.map +1 -1
  14. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_types.d.ts +4 -11
  15. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_types.js +2 -1
  16. package/build/esm/packages/phoenix/src/controllers/relative_position_controller/relative_position_controller_types.js.map +1 -1
  17. 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
- _calculateSidePosition(side) {
50
- const topSideOfRelativeElement = tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").top - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").top - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").height;
51
- const bottomSideOfRelativeElement = tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").bottom - tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").top;
52
- const centerOfRelativeElement = (topSideOfRelativeElement + bottomSideOfRelativeElement) / 2;
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
- if (tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
56
- return { top: topSideOfRelativeElement, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.top };
57
- if (!this._canFitTopSide() && !this._canFitBottomSide() && !this._canFitCenter(centerOfRelativeElement))
58
- return { top: bottomSideOfRelativeElement, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom, shrinkMode: true };
59
- if (!this._canFitTopSide() && !this._canFitBottomSide())
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
- if (tslib_es6.__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
66
- return { top: bottomSideOfRelativeElement, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom };
67
- if (!this._canFitTopSide() && !this._canFitBottomSide() && !this._canFitCenter(centerOfRelativeElement))
68
- return { top: bottomSideOfRelativeElement, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom, shrinkMode: true };
69
- if (!this._canFitTopSide() && !this._canFitBottomSide())
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 { top: centerOfRelativeElement, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.center };
86
+ return this._calculateCenterSide({
87
+ verticalCenter: verticalCenterOfRelativeElement,
88
+ horizontalCenter: horizontalCenterOfRelativeElement,
89
+ alignment
90
+ });
76
91
  case relative_position_controller_constants.CALCULATOR_DIRECTIONS.left:
77
- // do zaimplementowania
78
- return { top: 0 };
92
+ return this._calculateLeftSide({
93
+ leftSide: leftSideOfRelativeElement,
94
+ rightSide: rightSideOfRelativeElement
95
+ });
79
96
  case relative_position_controller_constants.CALCULATOR_DIRECTIONS.right:
80
- // do zaimplementowania
81
- return { top: 0 };
97
+ return this._calculateRightSide({
98
+ leftSide: leftSideOfRelativeElement,
99
+ rightSide: rightSideOfRelativeElement
100
+ });
82
101
  default:
83
102
  return { top: 0 };
84
103
  }
85
104
  }
86
- calculateAlignmentPosition(side) {
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 alignmentToCenter = (alignmentToLeftSide + alignmentToRightSide) / 2;
90
- switch (side) {
91
- case relative_position_controller_constants.CALCULATOR_DIRECTIONS.top:
92
- // do zaimplementowania
93
- return { left: 0 };
94
- case relative_position_controller_constants.CALCULATOR_DIRECTIONS.bottom:
95
- // do zaimplementowania
96
- return { left: 0 };
97
- case relative_position_controller_constants.CALCULATOR_DIRECTIONS.left:
98
- return { left: alignmentToLeftSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.left };
99
- case relative_position_controller_constants.CALCULATOR_DIRECTIONS.right:
100
- return { left: alignmentToRightSide, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.right };
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 { left: alignmentToCenter, calculatedSide: relative_position_controller_constants.CALCULATOR_DIRECTIONS.center };
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, TRelativePositionControllerPositionData } from "./relative_position_controller_types";
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
- _calculateSidePosition(side) {
46
- const topSideOfRelativeElement = __classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").top - __classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").top - __classPrivateFieldGet(this, _PositionCalculator_positionElementRect, "f").height;
47
- const bottomSideOfRelativeElement = __classPrivateFieldGet(this, _PositionCalculator_relativeElementRect, "f").bottom - __classPrivateFieldGet(this, _PositionCalculator_nearestNonStaticElementFromElementToPositionRect, "f").top;
48
- const centerOfRelativeElement = (topSideOfRelativeElement + bottomSideOfRelativeElement) / 2;
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
- if (__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
52
- return { top: topSideOfRelativeElement, calculatedSide: CALCULATOR_DIRECTIONS.top };
53
- if (!this._canFitTopSide() && !this._canFitBottomSide() && !this._canFitCenter(centerOfRelativeElement))
54
- return { top: bottomSideOfRelativeElement, calculatedSide: CALCULATOR_DIRECTIONS.bottom, shrinkMode: true };
55
- if (!this._canFitTopSide() && !this._canFitBottomSide())
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
- if (__classPrivateFieldGet(this, _PositionCalculator_shouldNotReposition, "f"))
62
- return { top: bottomSideOfRelativeElement, calculatedSide: CALCULATOR_DIRECTIONS.bottom };
63
- if (!this._canFitTopSide() && !this._canFitBottomSide() && !this._canFitCenter(centerOfRelativeElement))
64
- return { top: bottomSideOfRelativeElement, calculatedSide: CALCULATOR_DIRECTIONS.bottom, shrinkMode: true };
65
- if (!this._canFitTopSide() && !this._canFitBottomSide())
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 { top: centerOfRelativeElement, calculatedSide: CALCULATOR_DIRECTIONS.center };
82
+ return this._calculateCenterSide({
83
+ verticalCenter: verticalCenterOfRelativeElement,
84
+ horizontalCenter: horizontalCenterOfRelativeElement,
85
+ alignment
86
+ });
72
87
  case CALCULATOR_DIRECTIONS.left:
73
- // do zaimplementowania
74
- return { top: 0 };
88
+ return this._calculateLeftSide({
89
+ leftSide: leftSideOfRelativeElement,
90
+ rightSide: rightSideOfRelativeElement
91
+ });
75
92
  case CALCULATOR_DIRECTIONS.right:
76
- // do zaimplementowania
77
- return { top: 0 };
93
+ return this._calculateRightSide({
94
+ leftSide: leftSideOfRelativeElement,
95
+ rightSide: rightSideOfRelativeElement
96
+ });
78
97
  default:
79
98
  return { top: 0 };
80
99
  }
81
100
  }
82
- calculateAlignmentPosition(side) {
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 alignmentToCenter = (alignmentToLeftSide + alignmentToRightSide) / 2;
86
- switch (side) {
87
- case CALCULATOR_DIRECTIONS.top:
88
- // do zaimplementowania
89
- return { left: 0 };
90
- case CALCULATOR_DIRECTIONS.bottom:
91
- // do zaimplementowania
92
- return { left: 0 };
93
- case CALCULATOR_DIRECTIONS.left:
94
- return { left: alignmentToLeftSide, calculatedSide: CALCULATOR_DIRECTIONS.left };
95
- case CALCULATOR_DIRECTIONS.right:
96
- return { left: alignmentToRightSide, calculatedSide: CALCULATOR_DIRECTIONS.right };
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 { left: alignmentToCenter, calculatedSide: CALCULATOR_DIRECTIONS.center };
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,4 @@
1
+ import 'ts-toolbelt';
2
+ import './relative_position_controller_constants';
3
+ import './relative_position_controller_types';
4
+ //# sourceMappingURL=relative_position_calculator_types.js.map
@@ -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): void;
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
- export declare type TDirection = Any.Keys<typeof DIRECTIONS>;
5
- export declare type TCalculatorDirection = Any.Keys<typeof CALCULATOR_DIRECTIONS>;
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,OAAkD,8FAA8F,CAAC;AACjJ,OAA2D,KAAK,CAAC;AAEjE,OAAoB,aAAa,CAAC"}
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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@shoper/phoenix_design_system",
3
3
  "packageManager": "yarn@3.2.0",
4
4
  "sideEffects": false,
5
- "version": "0.22.4",
5
+ "version": "0.22.5",
6
6
  "description": "phoenix design system",
7
7
  "author": "zefirek",
8
8
  "license": "MIT",