@artsy/palette 41.0.0-canary.1423.31655.0 → 41.0.0

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 (196) hide show
  1. package/dist/Theme.d.ts +7 -7
  2. package/dist/elements/AutocompleteInput/AutocompleteInput.js +2 -2
  3. package/dist/elements/AutocompleteInput/AutocompleteInput.js.map +1 -1
  4. package/dist/elements/AutocompleteInput/AutocompleteInput.story.js +8 -8
  5. package/dist/elements/AutocompleteInput/AutocompleteInput.story.js.map +1 -1
  6. package/dist/elements/AutocompleteInput/AutocompleteInputOption.js +2 -2
  7. package/dist/elements/AutocompleteInput/AutocompleteInputOption.js.map +1 -1
  8. package/dist/elements/Avatar/Avatar.js +2 -2
  9. package/dist/elements/Avatar/Avatar.js.map +1 -1
  10. package/dist/elements/Banner/Banner.js +7 -7
  11. package/dist/elements/Banner/Banner.js.map +1 -1
  12. package/dist/elements/BaseTabs/BaseTab.d.ts +2 -2
  13. package/dist/elements/BaseTabs/BaseTabs.js +1 -1
  14. package/dist/elements/BaseTabs/BaseTabs.js.map +1 -1
  15. package/dist/elements/BaseTabs/BaseTabs.story.js +2 -2
  16. package/dist/elements/BaseTabs/BaseTabs.story.js.map +1 -1
  17. package/dist/elements/BaseTabs/tokens.js +3 -3
  18. package/dist/elements/BaseTabs/tokens.js.map +1 -1
  19. package/dist/elements/BorderBox/BorderBox.d.ts +1 -1
  20. package/dist/elements/BorderBox/BorderBox.js +2 -2
  21. package/dist/elements/BorderBox/BorderBox.js.map +1 -1
  22. package/dist/elements/BorderBox/BorderBoxBase.js +1 -1
  23. package/dist/elements/BorderBox/BorderBoxBase.js.map +1 -1
  24. package/dist/elements/BorderedRadio/BorderedRadio.js +1 -1
  25. package/dist/elements/BorderedRadio/BorderedRadio.js.map +1 -1
  26. package/dist/elements/Box/Box.d.ts +5 -2
  27. package/dist/elements/Box/Box.js +9 -2
  28. package/dist/elements/Box/Box.js.map +1 -1
  29. package/dist/elements/Breadcrumbs/Breadcrumbs.js +2 -2
  30. package/dist/elements/Breadcrumbs/Breadcrumbs.js.map +1 -1
  31. package/dist/elements/Button/Button.story.js +5 -5
  32. package/dist/elements/Button/Button.story.js.map +1 -1
  33. package/dist/elements/Button/tokens.js +45 -45
  34. package/dist/elements/Button/tokens.js.map +1 -1
  35. package/dist/elements/Cards/Card.js +3 -3
  36. package/dist/elements/Cards/Card.js.map +1 -1
  37. package/dist/elements/Cards/TriptychCard.js +13 -13
  38. package/dist/elements/Cards/TriptychCard.js.map +1 -1
  39. package/dist/elements/Carousel/Carousel.story.js +16 -16
  40. package/dist/elements/Carousel/Carousel.story.js.map +1 -1
  41. package/dist/elements/Carousel/CarouselNavigation.js +2 -2
  42. package/dist/elements/Carousel/CarouselNavigation.js.map +1 -1
  43. package/dist/elements/CarouselBar/CarouselBar.js +1 -1
  44. package/dist/elements/CarouselBar/CarouselBar.js.map +1 -1
  45. package/dist/elements/Checkbox/tokens.js +14 -14
  46. package/dist/elements/Checkbox/tokens.js.map +1 -1
  47. package/dist/elements/Clickable/Clickable.story.js +1 -1
  48. package/dist/elements/Clickable/Clickable.story.js.map +1 -1
  49. package/dist/elements/Drawer/Drawer.js +1 -1
  50. package/dist/elements/Drawer/Drawer.js.map +1 -1
  51. package/dist/elements/Dropdown/Dropdown.d.ts +3 -1
  52. package/dist/elements/Dropdown/Dropdown.js +41 -7
  53. package/dist/elements/Dropdown/Dropdown.js.map +1 -1
  54. package/dist/elements/Dropdown/Dropdown.story.js +35 -5
  55. package/dist/elements/Dropdown/Dropdown.story.js.map +1 -1
  56. package/dist/elements/EntityHeader/EntityHeader.js +1 -1
  57. package/dist/elements/EntityHeader/EntityHeader.js.map +1 -1
  58. package/dist/elements/Expandable/Expandable.js +1 -1
  59. package/dist/elements/Expandable/Expandable.js.map +1 -1
  60. package/dist/elements/Expandable/Expandable.story.js +3 -3
  61. package/dist/elements/Expandable/Expandable.story.js.map +1 -1
  62. package/dist/elements/FilterSelect/FilterSelect.js +1 -1
  63. package/dist/elements/FilterSelect/FilterSelect.js.map +1 -1
  64. package/dist/elements/FullBleed/FullBleed.story.js +1 -1
  65. package/dist/elements/FullBleed/FullBleed.story.js.map +1 -1
  66. package/dist/elements/GridColumns/GridColumns.story.js +25 -25
  67. package/dist/elements/GridColumns/GridColumns.story.js.map +1 -1
  68. package/dist/elements/HTML/HTML.js +1 -1
  69. package/dist/elements/HTML/HTML.js.map +1 -1
  70. package/dist/elements/HorizontalOverflow/HorizontalOverflow.story.js +3 -3
  71. package/dist/elements/HorizontalOverflow/HorizontalOverflow.story.js.map +1 -1
  72. package/dist/elements/Image/Image.js +1 -1
  73. package/dist/elements/Image/Image.js.map +1 -1
  74. package/dist/elements/Input/Input.js +3 -3
  75. package/dist/elements/Input/Input.js.map +1 -1
  76. package/dist/elements/Input/tokens.js +6 -6
  77. package/dist/elements/Input/tokens.js.map +1 -1
  78. package/dist/elements/Label/Label.js +5 -5
  79. package/dist/elements/Label/Label.js.map +1 -1
  80. package/dist/elements/LabeledInput/LabeledInput.js +1 -1
  81. package/dist/elements/LabeledInput/LabeledInput.js.map +1 -1
  82. package/dist/elements/LabeledInput/LabeledInput.story.js +1 -1
  83. package/dist/elements/LabeledInput/LabeledInput.story.js.map +1 -1
  84. package/dist/elements/Marquee/Marquee.js +6 -6
  85. package/dist/elements/Marquee/Marquee.js.map +1 -1
  86. package/dist/elements/Message/Message.js +3 -3
  87. package/dist/elements/Message/Message.js.map +1 -1
  88. package/dist/elements/Modal/ModalBase.story.js +1 -1
  89. package/dist/elements/Modal/ModalBase.story.js.map +1 -1
  90. package/dist/elements/ModalDialog/ModalDialog.story.js +10 -10
  91. package/dist/elements/ModalDialog/ModalDialog.story.js.map +1 -1
  92. package/dist/elements/ModalDialog/ModalDialogContent.js +2 -2
  93. package/dist/elements/ModalDialog/ModalDialogContent.js.map +1 -1
  94. package/dist/elements/ModalDialog/ModalDialogContent.story.js +1 -1
  95. package/dist/elements/ModalDialog/ModalDialogContent.story.js.map +1 -1
  96. package/dist/elements/MultiSelect/MultiSelect.js +4 -4
  97. package/dist/elements/MultiSelect/MultiSelect.js.map +1 -1
  98. package/dist/elements/MultiSelect/tokens.js +6 -6
  99. package/dist/elements/MultiSelect/tokens.js.map +1 -1
  100. package/dist/elements/Pagination/Pagination.js +5 -5
  101. package/dist/elements/Pagination/Pagination.js.map +1 -1
  102. package/dist/elements/PhoneInput/PhoneInput.js +7 -7
  103. package/dist/elements/PhoneInput/PhoneInput.js.map +1 -1
  104. package/dist/elements/PhoneInput/tokens.js +6 -6
  105. package/dist/elements/PhoneInput/tokens.js.map +1 -1
  106. package/dist/elements/Pill/Pill.js +2 -2
  107. package/dist/elements/Pill/Pill.js.map +1 -1
  108. package/dist/elements/Pill/Pill.story.js +4 -4
  109. package/dist/elements/Pill/Pill.story.js.map +1 -1
  110. package/dist/elements/Pill/tokens.js +23 -23
  111. package/dist/elements/Pill/tokens.js.map +1 -1
  112. package/dist/elements/Pointer/Pointer.js +2 -2
  113. package/dist/elements/Pointer/Pointer.js.map +1 -1
  114. package/dist/elements/Popover/Popover.js +4 -4
  115. package/dist/elements/Popover/Popover.js.map +1 -1
  116. package/dist/elements/Popover/Popover.story.d.ts +1 -0
  117. package/dist/elements/Popover/Popover.story.js +48 -2
  118. package/dist/elements/Popover/Popover.story.js.map +1 -1
  119. package/dist/elements/ProgressBar/ProgressBar.js +1 -1
  120. package/dist/elements/ProgressBar/ProgressBar.js.map +1 -1
  121. package/dist/elements/ProgressDots/ProgressDots.js +1 -1
  122. package/dist/elements/ProgressDots/ProgressDots.js.map +1 -1
  123. package/dist/elements/Radio/Radio.js +1 -1
  124. package/dist/elements/Radio/Radio.js.map +1 -1
  125. package/dist/elements/Radio/Radio.story.js +1 -1
  126. package/dist/elements/Radio/Radio.story.js.map +1 -1
  127. package/dist/elements/Radio/tokens.js +14 -14
  128. package/dist/elements/Radio/tokens.js.map +1 -1
  129. package/dist/elements/RadioGroup/RadioGroup.js +1 -1
  130. package/dist/elements/RadioGroup/RadioGroup.js.map +1 -1
  131. package/dist/elements/Range/Range.js +3 -3
  132. package/dist/elements/Range/Range.js.map +1 -1
  133. package/dist/elements/Range/Range.story.js +2 -2
  134. package/dist/elements/Range/Range.story.js.map +1 -1
  135. package/dist/elements/ResponsiveBox/ResponsiveBox.story.js +2 -2
  136. package/dist/elements/ResponsiveBox/ResponsiveBox.story.js.map +1 -1
  137. package/dist/elements/Select/Select.js +4 -4
  138. package/dist/elements/Select/Select.js.map +1 -1
  139. package/dist/elements/Select/tokens.js +6 -6
  140. package/dist/elements/Select/tokens.js.map +1 -1
  141. package/dist/elements/Separator/Separator.js +1 -1
  142. package/dist/elements/Separator/Separator.js.map +1 -1
  143. package/dist/elements/Separator/Separator.story.js +1 -1
  144. package/dist/elements/Separator/Separator.story.js.map +1 -1
  145. package/dist/elements/Shelf/Shelf.story.js +2 -2
  146. package/dist/elements/Shelf/Shelf.story.js.map +1 -1
  147. package/dist/elements/Shelf/ShelfNavigation.js +3 -3
  148. package/dist/elements/Shelf/ShelfNavigation.js.map +1 -1
  149. package/dist/elements/Shelf/ShelfScrollBar.js +3 -3
  150. package/dist/elements/Shelf/ShelfScrollBar.js.map +1 -1
  151. package/dist/elements/Skeleton/Skeleton.d.ts +1 -1
  152. package/dist/elements/Skeleton/Skeleton.js +3 -3
  153. package/dist/elements/Skeleton/Skeleton.js.map +1 -1
  154. package/dist/elements/Skip/Skip.js +1 -1
  155. package/dist/elements/Skip/Skip.js.map +1 -1
  156. package/dist/elements/Spacer/Spacer.story.js +4 -4
  157. package/dist/elements/Spacer/Spacer.story.js.map +1 -1
  158. package/dist/elements/Spinner/Spinner.js +1 -1
  159. package/dist/elements/Spinner/Spinner.js.map +1 -1
  160. package/dist/elements/Stepper/Stepper.js +3 -4
  161. package/dist/elements/Stepper/Stepper.js.map +1 -1
  162. package/dist/elements/Sup/Sup.d.ts +2 -2
  163. package/dist/elements/Swiper/Swiper.story.js +13 -13
  164. package/dist/elements/Swiper/Swiper.story.js.map +1 -1
  165. package/dist/elements/Tabs/Tabs.d.ts +0 -4
  166. package/dist/elements/Tabs/Tabs.js +2 -11
  167. package/dist/elements/Tabs/Tabs.js.map +1 -1
  168. package/dist/elements/Tabs/Tabs.story.d.ts +1 -0
  169. package/dist/elements/Tabs/Tabs.story.js +35 -3
  170. package/dist/elements/Tabs/Tabs.story.js.map +1 -1
  171. package/dist/elements/Text/Text.story.js +4 -4
  172. package/dist/elements/Text/Text.story.js.map +1 -1
  173. package/dist/elements/TextArea/TextArea.js +5 -5
  174. package/dist/elements/TextArea/TextArea.js.map +1 -1
  175. package/dist/elements/TextArea/tokens.js +6 -6
  176. package/dist/elements/TextArea/tokens.js.map +1 -1
  177. package/dist/elements/Toasts/Toast.js +7 -7
  178. package/dist/elements/Toasts/Toast.js.map +1 -1
  179. package/dist/elements/Toggle/tokens.js +2 -2
  180. package/dist/elements/Toggle/tokens.js.map +1 -1
  181. package/dist/elements/Tooltip/Tooltip.js +4 -4
  182. package/dist/elements/Tooltip/Tooltip.js.map +1 -1
  183. package/dist/elements/Tooltip/Tooltip.story.js +7 -7
  184. package/dist/elements/Tooltip/Tooltip.story.js.map +1 -1
  185. package/dist/helpers/injectGlobalStyles.js +1 -1
  186. package/dist/helpers/injectGlobalStyles.js.map +1 -1
  187. package/dist/shared/RequiredField.js +1 -1
  188. package/dist/shared/RequiredField.js.map +1 -1
  189. package/dist/styles.css +21 -21
  190. package/dist/themes/Themes.story.js +42 -42
  191. package/dist/themes/Themes.story.js.map +1 -1
  192. package/dist/tokens.json +7 -7
  193. package/dist/utils/usePosition.d.ts +18 -3
  194. package/dist/utils/usePosition.js +123 -40
  195. package/dist/utils/usePosition.js.map +1 -1
  196. package/package.json +3 -4
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.usePosition = exports.translateWithOffset = exports.shouldFlip = exports.placeTooltip = exports.getPosition = exports.getDocumentBoundingRect = exports.POSITION = void 0;
6
+ exports.usePosition = exports.translateWithOffset = exports.shouldFlip = exports.placeTooltip = exports.getPosition = exports.getDocumentBoundingRect = exports.calculateMaxHeight = exports.POSITION = void 0;
7
7
  var _react = require("react");
8
8
  var _useMutationObserver = require("./useMutationObserver");
9
9
  var _useIsomorphicLayoutEffect = require("./useIsomorphicLayoutEffect");
@@ -46,7 +46,9 @@ var usePosition = function usePosition(_ref) {
46
46
  _ref$flip = _ref.flip,
47
47
  flip = _ref$flip === void 0 ? true : _ref$flip,
48
48
  _ref$clamp = _ref.clamp,
49
- clamp = _ref$clamp === void 0 ? true : _ref$clamp;
49
+ clamp = _ref$clamp === void 0 ? true : _ref$clamp,
50
+ _ref$padding = _ref.padding,
51
+ padding = _ref$padding === void 0 ? 0 : _ref$padding;
50
52
  var _useState = (0, _react.useState)({
51
53
  isFlipped: false
52
54
  }),
@@ -59,14 +61,17 @@ var usePosition = function usePosition(_ref) {
59
61
  if (!active || !tooltipRef.current || !anchorRef.current) return;
60
62
  var tooltip = tooltipRef.current;
61
63
  var anchor = anchorRef.current;
62
- setState(placeTooltip({
63
- anchor: anchor,
64
- tooltip: tooltip,
65
- position: position,
66
- offset: offset,
67
- flip: flip,
68
- clamp: clamp
69
- }));
64
+ requestAnimationFrame(function () {
65
+ setState(placeTooltip({
66
+ anchor: anchor,
67
+ tooltip: tooltip,
68
+ position: position,
69
+ offset: offset,
70
+ flip: flip,
71
+ clamp: clamp,
72
+ padding: padding
73
+ }));
74
+ });
70
75
  };
71
76
 
72
77
  // Re-position when there's any change to the tooltip
@@ -93,27 +98,33 @@ var usePosition = function usePosition(_ref) {
93
98
  tooltip.style.top = "0";
94
99
  tooltip.style.left = "0";
95
100
  var handleScroll = function handleScroll() {
96
- setState(placeTooltip({
97
- anchor: anchor,
98
- tooltip: tooltip,
99
- position: position,
100
- offset: offset,
101
- flip: flip,
102
- clamp: clamp
103
- }));
101
+ requestAnimationFrame(function () {
102
+ setState(placeTooltip({
103
+ anchor: anchor,
104
+ tooltip: tooltip,
105
+ position: position,
106
+ offset: offset,
107
+ flip: flip,
108
+ clamp: clamp,
109
+ padding: padding
110
+ }));
111
+ });
104
112
  };
105
113
  document.addEventListener("scroll", handleScroll, {
106
114
  passive: true
107
115
  });
108
116
  var handleResize = function handleResize() {
109
- setState(placeTooltip({
110
- anchor: anchor,
111
- tooltip: tooltip,
112
- position: position,
113
- offset: offset,
114
- flip: flip,
115
- clamp: clamp
116
- }));
117
+ requestAnimationFrame(function () {
118
+ setState(placeTooltip({
119
+ anchor: anchor,
120
+ tooltip: tooltip,
121
+ position: position,
122
+ offset: offset,
123
+ flip: flip,
124
+ clamp: clamp,
125
+ padding: padding
126
+ }));
127
+ });
117
128
  };
118
129
  window.addEventListener("resize", handleResize, {
119
130
  passive: true
@@ -124,7 +135,8 @@ var usePosition = function usePosition(_ref) {
124
135
  position: position,
125
136
  offset: offset,
126
137
  flip: flip,
127
- clamp: clamp
138
+ clamp: clamp,
139
+ padding: padding
128
140
  }));
129
141
  return function () {
130
142
  document.removeEventListener("scroll", handleScroll);
@@ -151,10 +163,16 @@ var placeTooltip = function placeTooltip(_ref2) {
151
163
  _ref2$flip = _ref2.flip,
152
164
  flip = _ref2$flip === void 0 ? true : _ref2$flip,
153
165
  _ref2$clamp = _ref2.clamp,
154
- clamp = _ref2$clamp === void 0 ? true : _ref2$clamp;
166
+ clamp = _ref2$clamp === void 0 ? true : _ref2$clamp,
167
+ _ref2$padding = _ref2.padding,
168
+ padding = _ref2$padding === void 0 ? 0 : _ref2$padding;
155
169
  var elementRect = anchor.getBoundingClientRect();
156
170
  var tooltipRect = tooltip.getBoundingClientRect();
157
- var targetPosition = getPosition(elementRect, tooltipRect, position);
171
+ var targetPosition = getPosition({
172
+ elementRect: elementRect,
173
+ tooltipRect: tooltipRect,
174
+ position: position
175
+ });
158
176
 
159
177
  // Flip to avoid edges
160
178
  var isFlipped = flip && shouldFlip({
@@ -165,7 +183,11 @@ var placeTooltip = function placeTooltip(_ref2) {
165
183
  });
166
184
  if (isFlipped) {
167
185
  position = getOppositePosition(position);
168
- targetPosition = getPosition(elementRect, tooltipRect, position);
186
+ targetPosition = getPosition({
187
+ elementRect: elementRect,
188
+ tooltipRect: tooltipRect,
189
+ position: position
190
+ });
169
191
  }
170
192
 
171
193
  // Clamp position within boundary
@@ -174,6 +196,26 @@ var placeTooltip = function placeTooltip(_ref2) {
174
196
  targetPosition.x = Math.min(boundaryRect.right - tooltipRect.width, targetPosition.x);
175
197
  targetPosition.y = Math.max(boundaryRect.top, targetPosition.y);
176
198
  targetPosition.y = Math.min(boundaryRect.bottom - tooltipRect.height, targetPosition.y);
199
+
200
+ // Apply padding to boundary
201
+ switch (position) {
202
+ case "top-start":
203
+ case "top":
204
+ case "top-end":
205
+ case "bottom-start":
206
+ case "bottom":
207
+ case "bottom-end":
208
+ targetPosition.x = targetPosition.x - padding;
209
+ break;
210
+ case "left-start":
211
+ case "left":
212
+ case "left-end":
213
+ case "right-start":
214
+ case "right":
215
+ case "right-end":
216
+ targetPosition.y = targetPosition.y + padding;
217
+ break;
218
+ }
177
219
  }
178
220
 
179
221
  // Should hide entirely if it scrolls out of view
@@ -185,9 +227,14 @@ var placeTooltip = function placeTooltip(_ref2) {
185
227
  };
186
228
  };
187
229
  exports.placeTooltip = placeTooltip;
188
- var getPosition = function getPosition(elementRect, tooltipRect, position) {
230
+ var getPosition = function getPosition(_ref3) {
231
+ var elementRect = _ref3.elementRect,
232
+ tooltipRect = _ref3.tooltipRect,
233
+ position = _ref3.position;
189
234
  var x;
190
235
  var y;
236
+
237
+ // X position
191
238
  switch (position) {
192
239
  case "top-start":
193
240
  case "bottom-start":
@@ -214,6 +261,8 @@ var getPosition = function getPosition(elementRect, tooltipRect, position) {
214
261
  x = elementRect.right;
215
262
  break;
216
263
  }
264
+
265
+ // Y position
217
266
  switch (position) {
218
267
  case "left-start":
219
268
  case "right-start":
@@ -249,7 +298,7 @@ var getPosition = function getPosition(elementRect, tooltipRect, position) {
249
298
  };
250
299
  exports.getPosition = getPosition;
251
300
  var translateWithOffset = function translateWithOffset(targetPosition, position, offset) {
252
- var _ref3 = function () {
301
+ var _ref4 = function () {
253
302
  switch (position) {
254
303
  case "top-start":
255
304
  return [targetPosition.x, targetPosition.y - offset];
@@ -277,9 +326,9 @@ var translateWithOffset = function translateWithOffset(targetPosition, position,
277
326
  return [targetPosition.x + offset, targetPosition.y];
278
327
  }
279
328
  }(),
280
- _ref4 = _slicedToArray(_ref3, 2),
281
- x = _ref4[0],
282
- y = _ref4[1];
329
+ _ref5 = _slicedToArray(_ref4, 2),
330
+ x = _ref5[0],
331
+ y = _ref5[1];
283
332
  return "translate(".concat(x, "px, ").concat(y, "px)");
284
333
  };
285
334
  exports.translateWithOffset = translateWithOffset;
@@ -324,11 +373,11 @@ var getDocumentBoundingRect = function getDocumentBoundingRect() {
324
373
  };
325
374
  };
326
375
  exports.getDocumentBoundingRect = getDocumentBoundingRect;
327
- var shouldFlip = function shouldFlip(_ref5) {
328
- var targetPosition = _ref5.targetPosition,
329
- position = _ref5.position,
330
- boundaryRect = _ref5.boundaryRect,
331
- tooltipRect = _ref5.tooltipRect;
376
+ var shouldFlip = function shouldFlip(_ref6) {
377
+ var targetPosition = _ref6.targetPosition,
378
+ position = _ref6.position,
379
+ boundaryRect = _ref6.boundaryRect,
380
+ tooltipRect = _ref6.tooltipRect;
332
381
  switch (position) {
333
382
  case "top-start":
334
383
  case "top":
@@ -352,4 +401,38 @@ exports.shouldFlip = shouldFlip;
352
401
  var isWithin = function isWithin(elementRect, boundaryRect) {
353
402
  return boundaryRect.top < elementRect.bottom && boundaryRect.left < elementRect.right && boundaryRect.bottom > elementRect.top && boundaryRect.right > elementRect.left;
354
403
  };
404
+
405
+ /**
406
+ * Calculate the maximum height available for a tooltip based on its placement and viewport constraints.
407
+ */
408
+ var calculateMaxHeight = function calculateMaxHeight(_ref7) {
409
+ var anchorRect = _ref7.anchorRect,
410
+ position = _ref7.position,
411
+ _ref7$offset = _ref7.offset,
412
+ offset = _ref7$offset === void 0 ? 0 : _ref7$offset;
413
+ var viewportHeight = window.innerHeight;
414
+ switch (position) {
415
+ case "top-start":
416
+ case "top":
417
+ case "top-end":
418
+ // Space from top of anchor to top of viewport
419
+ return anchorRect.top - offset * 2;
420
+ case "bottom-start":
421
+ case "bottom":
422
+ case "bottom-end":
423
+ // Space from bottom of anchor to bottom of viewport
424
+ return viewportHeight - anchorRect.bottom - offset * 2;
425
+ case "left-start":
426
+ case "left":
427
+ case "left-end":
428
+ case "right-start":
429
+ case "right":
430
+ case "right-end":
431
+ // For side placements, use the entire viewport height
432
+ return viewportHeight - offset * 2;
433
+ default:
434
+ return viewportHeight;
435
+ }
436
+ };
437
+ exports.calculateMaxHeight = calculateMaxHeight;
355
438
  //# sourceMappingURL=usePosition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePosition.js","names":["_react","require","_useMutationObserver","_useIsomorphicLayoutEffect","_useResizeObserver","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","len","length","arr2","_i","Symbol","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","push","value","err","return","isArray","POSITION","top","bottom","left","right","exports","usePosition","_ref","key","position","_ref$offset","offset","_ref$active","active","_ref$flip","flip","_ref$clamp","clamp","_useState","useState","isFlipped","_useState2","state","setState","tooltipRef","useRef","anchorRef","update","current","tooltip","anchor","placeTooltip","useMutationObserver","ref","onMutate","useResizeObserver","target","onResize","useIsomorphicLayoutEffect","style","handleScroll","document","addEventListener","passive","handleResize","window","removeEventListener","_ref2","_ref2$offset","_ref2$boundaryRect","boundaryRect","getDocumentBoundingRect","_ref2$flip","_ref2$clamp","elementRect","getBoundingClientRect","tooltipRect","targetPosition","getPosition","shouldFlip","getOppositePosition","x","Math","max","min","width","y","height","shouldHide","isWithin","display","transform","translateWithOffset","_ref3","_ref4","concat","body","clientWidth","clientHeight","_ref5"],"sources":["../../src/utils/usePosition.ts"],"sourcesContent":["/**\n * Adapted from https://codesandbox.io/s/positioning-tooltip-rhplo\n */\nimport { useState } from \"react\"\nimport { useRef } from \"react\"\nimport { useMutationObserver } from \"./useMutationObserver\"\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\"\nimport { useResizeObserver } from \"./useResizeObserver\"\n\nexport const POSITION = {\n \"top-start\": \"top-start\",\n top: \"top\",\n \"top-end\": \"top-end\",\n \"bottom-start\": \"bottom-start\",\n bottom: \"bottom\",\n \"bottom-end\": \"bottom-end\",\n \"left-start\": \"left-start\",\n left: \"left\",\n \"left-end\": \"left-end\",\n \"right-start\": \"right-start\",\n right: \"right\",\n \"right-end\": \"right-end\",\n} as const\n\nexport type Position = keyof typeof POSITION\n\ninterface TargetPosition {\n x: number\n y: number\n}\n\n/**\n * Will position the floating element (tooltip) relative to the anchor element,\n * using `position: fixed` and in such a way that it shouldn't ever appear\n * partially offscreen and will move correctly when the parent is scrolled.\n */\nexport const usePosition = ({\n key,\n position,\n offset = 0,\n active = true,\n flip = true,\n clamp = true,\n}: {\n /** Listen to changes on this value */\n key?: string | number | boolean\n /** Placement relative to anchor */\n position: Position\n /** Distance from anchor (default: `0`) */\n offset?: number\n /** Optionally disable for performance (default: `true`) */\n active?: boolean\n /** Optionally disable flipping (default: `true`) */\n flip?: boolean\n /** Optionally disable clamping (default: `true`) */\n clamp?: boolean\n}) => {\n const [state, setState] = useState<ReturnType<typeof placeTooltip>>({\n isFlipped: false,\n })\n\n const tooltipRef = useRef<HTMLElement | null>(null)\n const anchorRef = useRef<HTMLElement | null>(null)\n\n const update = () => {\n if (!active || !tooltipRef.current || !anchorRef.current) return\n\n const { current: tooltip } = tooltipRef\n const { current: anchor } = anchorRef\n\n setState(placeTooltip({ anchor, tooltip, position, offset, flip, clamp }))\n }\n\n // Re-position when there's any change to the tooltip\n useMutationObserver({ ref: tooltipRef, onMutate: update, active })\n\n // Re-position when there's any change to the anchor's size\n useResizeObserver({ target: anchorRef, onResize: update, active })\n\n // Listen to changes on key\n useIsomorphicLayoutEffect(update, [key])\n\n useIsomorphicLayoutEffect(() => {\n if (!active || !tooltipRef.current || !anchorRef.current) return\n\n const { current: tooltip } = tooltipRef\n const { current: anchor } = anchorRef\n\n tooltip.style.position = \"fixed\"\n tooltip.style.top = \"0\"\n tooltip.style.left = \"0\"\n\n const handleScroll = () => {\n setState(placeTooltip({ anchor, tooltip, position, offset, flip, clamp }))\n }\n\n document.addEventListener(\"scroll\", handleScroll, {\n passive: true,\n })\n\n const handleResize = () => {\n setState(placeTooltip({ anchor, tooltip, position, offset, flip, clamp }))\n }\n\n window.addEventListener(\"resize\", handleResize, { passive: true })\n\n setState(placeTooltip({ anchor, tooltip, position, offset, flip, clamp }))\n\n return () => {\n document.removeEventListener(\"scroll\", handleScroll)\n window.removeEventListener(\"resize\", handleResize)\n }\n }, [active, tooltipRef, anchorRef, position])\n\n return {\n // Element that floating element is anchored to\n tooltipRef,\n // Element you want to position relative to the anchor\n anchorRef,\n state,\n }\n}\n\ninterface PlaceTooltip {\n anchor: HTMLElement\n tooltip: HTMLElement\n position: Position\n offset?: number\n boundaryRect?: DOMRect\n flip?: boolean\n clamp?: boolean\n}\n\nexport const placeTooltip = ({\n anchor,\n tooltip,\n position,\n offset = 0,\n boundaryRect = getDocumentBoundingRect(),\n flip = true,\n clamp = true,\n}: PlaceTooltip) => {\n const elementRect = anchor.getBoundingClientRect()\n const tooltipRect = tooltip.getBoundingClientRect()\n\n let targetPosition = getPosition(elementRect, tooltipRect, position)\n\n // Flip to avoid edges\n const isFlipped =\n flip &&\n shouldFlip({\n targetPosition,\n position,\n boundaryRect,\n tooltipRect,\n })\n\n if (isFlipped) {\n position = getOppositePosition(position)\n targetPosition = getPosition(elementRect, tooltipRect, position)\n }\n\n // Clamp position within boundary\n if (clamp) {\n targetPosition.x = Math.max(boundaryRect.left, targetPosition.x)\n targetPosition.x = Math.min(\n boundaryRect.right - tooltipRect.width,\n targetPosition.x\n )\n targetPosition.y = Math.max(boundaryRect.top, targetPosition.y)\n targetPosition.y = Math.min(\n boundaryRect.bottom - tooltipRect.height,\n targetPosition.y\n )\n }\n\n // Should hide entirely if it scrolls out of view\n const shouldHide = !isWithin(elementRect, boundaryRect)\n tooltip.style.display = shouldHide ? \"none\" : \"block\"\n\n tooltip.style.transform = translateWithOffset(\n targetPosition,\n position,\n offset\n )\n\n return { isFlipped }\n}\n\nexport const getPosition = (\n elementRect: Pick<\n DOMRect,\n \"width\" | \"height\" | \"top\" | \"right\" | \"bottom\" | \"left\"\n >,\n tooltipRect: Pick<DOMRect, \"width\" | \"height\">,\n position: Position\n): TargetPosition => {\n let x: number\n let y: number\n\n switch (position) {\n case \"top-start\":\n case \"bottom-start\":\n x = elementRect.left\n break\n case \"top\":\n case \"bottom\":\n x = elementRect.left + elementRect.width / 2 - tooltipRect.width / 2\n break\n case \"top-end\":\n case \"bottom-end\":\n x = elementRect.right - tooltipRect.width\n break\n case \"left-start\":\n case \"left\":\n case \"left-end\":\n // [..] {XXX}\n x = elementRect.left - tooltipRect.width\n break\n case \"right-start\":\n case \"right\":\n case \"right-end\":\n // {XXX} [...]\n x = elementRect.right\n break\n }\n\n switch (position) {\n case \"left-start\":\n case \"right-start\":\n y = elementRect.top\n break\n case \"left\":\n case \"right\":\n y = elementRect.top + elementRect.height / 2 - tooltipRect.height / 2\n break\n case \"left-end\":\n case \"right-end\":\n y = elementRect.bottom - tooltipRect.height\n break\n case \"top-start\":\n case \"top\":\n case \"top-end\":\n // [..]\n // {XXX}\n y = elementRect.top - tooltipRect.height\n break\n case \"bottom-start\":\n case \"bottom\":\n case \"bottom-end\":\n // {XXX}\n // [...]\n y = elementRect.bottom\n break\n }\n\n return { x, y }\n}\n\nexport const translateWithOffset = (\n targetPosition: TargetPosition,\n position: Position,\n offset: number\n) => {\n const [x, y] = (() => {\n switch (position) {\n case \"top-start\":\n return [targetPosition.x, targetPosition.y - offset]\n case \"top\":\n return [targetPosition.x, targetPosition.y - offset]\n case \"top-end\":\n return [targetPosition.x, targetPosition.y - offset]\n case \"bottom-start\":\n return [targetPosition.x, targetPosition.y + offset]\n case \"bottom\":\n return [targetPosition.x, targetPosition.y + offset]\n case \"bottom-end\":\n return [targetPosition.x, targetPosition.y + offset]\n case \"left-start\":\n return [targetPosition.x - offset, targetPosition.y]\n case \"left\":\n return [targetPosition.x - offset, targetPosition.y]\n case \"left-end\":\n return [targetPosition.x - offset, targetPosition.y]\n case \"right-start\":\n return [targetPosition.x + offset, targetPosition.y]\n case \"right\":\n return [targetPosition.x + offset, targetPosition.y]\n case \"right-end\":\n return [targetPosition.x + offset, targetPosition.y]\n }\n })()\n\n return `translate(${x}px, ${y}px)`\n}\n\nconst getOppositePosition = (position: Position) => {\n switch (position) {\n case \"top-start\":\n return \"bottom-start\"\n case \"top\":\n return \"bottom\"\n case \"top-end\":\n return \"bottom-end\"\n case \"bottom-start\":\n return \"top-start\"\n case \"bottom\":\n return \"top\"\n case \"bottom-end\":\n return \"top-end\"\n case \"left-start\":\n return \"right-start\"\n case \"left\":\n return \"right\"\n case \"left-end\":\n return \"right-end\"\n case \"right-start\":\n return \"left-start\"\n case \"right\":\n return \"left\"\n case \"right-end\":\n return \"left-end\"\n }\n}\n\nexport const getDocumentBoundingRect = () => {\n const width = document.body.clientWidth\n const height = document.body.clientHeight\n\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height,\n } as DOMRect\n}\n\ninterface ShouldFlip {\n targetPosition: TargetPosition\n position: Position\n boundaryRect: Pick<DOMRect, \"top\" | \"right\" | \"bottom\" | \"left\">\n tooltipRect: Pick<DOMRect, \"width\" | \"height\">\n}\n\nexport const shouldFlip = ({\n targetPosition,\n position,\n boundaryRect,\n tooltipRect,\n}: ShouldFlip) => {\n switch (position) {\n case \"top-start\":\n case \"top\":\n case \"top-end\":\n return targetPosition.y < boundaryRect.top\n case \"bottom-start\":\n case \"bottom\":\n case \"bottom-end\":\n return targetPosition.y + tooltipRect.height > boundaryRect.bottom\n case \"left-start\":\n case \"left\":\n case \"left-end\":\n return targetPosition.x < boundaryRect.left\n case \"right-start\":\n case \"right\":\n case \"right-end\":\n return targetPosition.x + tooltipRect.width > boundaryRect.right\n }\n}\n\nconst isWithin = (elementRect: DOMRect, boundaryRect: DOMRect) => {\n return (\n boundaryRect.top < elementRect.bottom &&\n boundaryRect.left < elementRect.right &&\n boundaryRect.bottom > elementRect.top &&\n boundaryRect.right > elementRect.left\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"usePosition.js","names":["_react","require","_useMutationObserver","_useIsomorphicLayoutEffect","_useResizeObserver","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","len","length","arr2","_i","Symbol","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","push","value","err","return","isArray","POSITION","top","bottom","left","right","exports","usePosition","_ref","key","position","_ref$offset","offset","_ref$active","active","_ref$flip","flip","_ref$clamp","clamp","_ref$padding","padding","_useState","useState","isFlipped","_useState2","state","setState","tooltipRef","useRef","anchorRef","update","current","tooltip","anchor","requestAnimationFrame","placeTooltip","useMutationObserver","ref","onMutate","useResizeObserver","target","onResize","useIsomorphicLayoutEffect","style","handleScroll","document","addEventListener","passive","handleResize","window","removeEventListener","_ref2","_ref2$offset","_ref2$boundaryRect","boundaryRect","getDocumentBoundingRect","_ref2$flip","_ref2$clamp","_ref2$padding","elementRect","getBoundingClientRect","tooltipRect","targetPosition","getPosition","shouldFlip","getOppositePosition","x","Math","max","min","width","y","height","shouldHide","isWithin","display","transform","translateWithOffset","_ref3","_ref4","_ref5","concat","body","clientWidth","clientHeight","_ref6","calculateMaxHeight","_ref7","anchorRect","_ref7$offset","viewportHeight","innerHeight"],"sources":["../../src/utils/usePosition.ts"],"sourcesContent":["/**\n * Adapted from https://codesandbox.io/s/positioning-tooltip-rhplo\n */\nimport { useState } from \"react\"\nimport { useRef } from \"react\"\nimport { useMutationObserver } from \"./useMutationObserver\"\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\"\nimport { useResizeObserver } from \"./useResizeObserver\"\n\nexport const POSITION = {\n \"top-start\": \"top-start\",\n top: \"top\",\n \"top-end\": \"top-end\",\n \"bottom-start\": \"bottom-start\",\n bottom: \"bottom\",\n \"bottom-end\": \"bottom-end\",\n \"left-start\": \"left-start\",\n left: \"left\",\n \"left-end\": \"left-end\",\n \"right-start\": \"right-start\",\n right: \"right\",\n \"right-end\": \"right-end\",\n} as const\n\nexport type Position = keyof typeof POSITION\n\ninterface TargetPosition {\n x: number\n y: number\n}\n\n/**\n * Will position the floating element (tooltip) relative to the anchor element,\n * using `position: fixed` and in such a way that it shouldn't ever appear\n * partially offscreen and will move correctly when the parent is scrolled.\n */\nexport const usePosition = ({\n key,\n position,\n offset = 0,\n active = true,\n flip = true,\n clamp = true,\n padding = 0,\n}: {\n /** Listen to changes on this value */\n key?: string | number | boolean\n /** Placement relative to anchor */\n position: Position\n /** Distance from anchor (default: `0`) */\n offset?: number\n /** Optionally disable for performance (default: `true`) */\n active?: boolean\n /** Optionally disable flipping (default: `true`) */\n flip?: boolean\n /** Optionally disable clamping (default: `true`) */\n clamp?: boolean\n /** Add boundary padding (default: `0`) used when clamping */\n padding?: number\n}) => {\n const [state, setState] = useState<ReturnType<typeof placeTooltip>>({\n isFlipped: false,\n })\n\n const tooltipRef = useRef<HTMLElement | null>(null)\n const anchorRef = useRef<HTMLElement | null>(null)\n\n const update = () => {\n if (!active || !tooltipRef.current || !anchorRef.current) return\n\n const { current: tooltip } = tooltipRef\n const { current: anchor } = anchorRef\n\n requestAnimationFrame(() => {\n setState(\n placeTooltip({\n anchor,\n tooltip,\n position,\n offset,\n flip,\n clamp,\n padding,\n })\n )\n })\n }\n\n // Re-position when there's any change to the tooltip\n useMutationObserver({ ref: tooltipRef, onMutate: update, active })\n\n // Re-position when there's any change to the anchor's size\n useResizeObserver({ target: anchorRef, onResize: update, active })\n\n // Listen to changes on key\n useIsomorphicLayoutEffect(update, [key])\n\n useIsomorphicLayoutEffect(() => {\n if (!active || !tooltipRef.current || !anchorRef.current) return\n\n const { current: tooltip } = tooltipRef\n const { current: anchor } = anchorRef\n\n tooltip.style.position = \"fixed\"\n tooltip.style.top = \"0\"\n tooltip.style.left = \"0\"\n\n const handleScroll = () => {\n requestAnimationFrame(() => {\n setState(\n placeTooltip({\n anchor,\n tooltip,\n position,\n offset,\n flip,\n clamp,\n padding,\n })\n )\n })\n }\n\n document.addEventListener(\"scroll\", handleScroll, {\n passive: true,\n })\n\n const handleResize = () => {\n requestAnimationFrame(() => {\n setState(\n placeTooltip({\n anchor,\n tooltip,\n position,\n offset,\n flip,\n clamp,\n padding,\n })\n )\n })\n }\n\n window.addEventListener(\"resize\", handleResize, { passive: true })\n\n setState(\n placeTooltip({ anchor, tooltip, position, offset, flip, clamp, padding })\n )\n\n return () => {\n document.removeEventListener(\"scroll\", handleScroll)\n window.removeEventListener(\"resize\", handleResize)\n }\n }, [active, tooltipRef, anchorRef, position])\n\n return {\n // Element that floating element is anchored to\n tooltipRef,\n // Element you want to position relative to the anchor\n anchorRef,\n state,\n }\n}\n\ninterface PlaceTooltip {\n anchor: HTMLElement\n tooltip: HTMLElement\n position: Position\n offset?: number\n boundaryRect?: DOMRect\n flip?: boolean\n clamp?: boolean\n padding?: number\n}\n\nexport const placeTooltip = ({\n anchor,\n tooltip,\n position,\n offset = 0,\n boundaryRect = getDocumentBoundingRect(),\n flip = true,\n clamp = true,\n padding = 0,\n}: PlaceTooltip) => {\n const elementRect = anchor.getBoundingClientRect()\n const tooltipRect = tooltip.getBoundingClientRect()\n\n let targetPosition = getPosition({\n elementRect,\n tooltipRect,\n position,\n })\n\n // Flip to avoid edges\n const isFlipped =\n flip &&\n shouldFlip({\n targetPosition,\n position,\n boundaryRect,\n tooltipRect,\n })\n\n if (isFlipped) {\n position = getOppositePosition(position)\n targetPosition = getPosition({ elementRect, tooltipRect, position })\n }\n\n // Clamp position within boundary\n if (clamp) {\n targetPosition.x = Math.max(boundaryRect.left, targetPosition.x)\n targetPosition.x = Math.min(\n boundaryRect.right - tooltipRect.width,\n targetPosition.x\n )\n targetPosition.y = Math.max(boundaryRect.top, targetPosition.y)\n targetPosition.y = Math.min(\n boundaryRect.bottom - tooltipRect.height,\n targetPosition.y\n )\n\n // Apply padding to boundary\n switch (position) {\n case \"top-start\":\n case \"top\":\n case \"top-end\":\n case \"bottom-start\":\n case \"bottom\":\n case \"bottom-end\":\n targetPosition.x = targetPosition.x - padding\n break\n case \"left-start\":\n case \"left\":\n case \"left-end\":\n case \"right-start\":\n case \"right\":\n case \"right-end\":\n targetPosition.y = targetPosition.y + padding\n break\n }\n }\n\n // Should hide entirely if it scrolls out of view\n const shouldHide = !isWithin(elementRect, boundaryRect)\n tooltip.style.display = shouldHide ? \"none\" : \"block\"\n\n tooltip.style.transform = translateWithOffset(\n targetPosition,\n position,\n offset\n )\n\n return { isFlipped }\n}\n\nexport const getPosition = ({\n elementRect,\n tooltipRect,\n position,\n}: {\n elementRect: Pick<\n DOMRect,\n \"width\" | \"height\" | \"top\" | \"right\" | \"bottom\" | \"left\"\n >\n tooltipRect: Pick<DOMRect, \"width\" | \"height\">\n position: Position\n}): TargetPosition => {\n let x: number\n let y: number\n\n // X position\n switch (position) {\n case \"top-start\":\n case \"bottom-start\":\n x = elementRect.left\n break\n case \"top\":\n case \"bottom\":\n x = elementRect.left + elementRect.width / 2 - tooltipRect.width / 2\n break\n case \"top-end\":\n case \"bottom-end\":\n x = elementRect.right - tooltipRect.width\n break\n case \"left-start\":\n case \"left\":\n case \"left-end\":\n // [..] {XXX}\n x = elementRect.left - tooltipRect.width\n break\n case \"right-start\":\n case \"right\":\n case \"right-end\":\n // {XXX} [...]\n x = elementRect.right\n break\n }\n\n // Y position\n switch (position) {\n case \"left-start\":\n case \"right-start\":\n y = elementRect.top\n break\n case \"left\":\n case \"right\":\n y = elementRect.top + elementRect.height / 2 - tooltipRect.height / 2\n break\n case \"left-end\":\n case \"right-end\":\n y = elementRect.bottom - tooltipRect.height\n break\n case \"top-start\":\n case \"top\":\n case \"top-end\":\n // [..]\n // {XXX}\n y = elementRect.top - tooltipRect.height\n break\n case \"bottom-start\":\n case \"bottom\":\n case \"bottom-end\":\n // {XXX}\n // [...]\n y = elementRect.bottom\n break\n }\n\n return { x, y }\n}\n\nexport const translateWithOffset = (\n targetPosition: TargetPosition,\n position: Position,\n offset: number\n) => {\n const [x, y] = (() => {\n switch (position) {\n case \"top-start\":\n return [targetPosition.x, targetPosition.y - offset]\n case \"top\":\n return [targetPosition.x, targetPosition.y - offset]\n case \"top-end\":\n return [targetPosition.x, targetPosition.y - offset]\n case \"bottom-start\":\n return [targetPosition.x, targetPosition.y + offset]\n case \"bottom\":\n return [targetPosition.x, targetPosition.y + offset]\n case \"bottom-end\":\n return [targetPosition.x, targetPosition.y + offset]\n case \"left-start\":\n return [targetPosition.x - offset, targetPosition.y]\n case \"left\":\n return [targetPosition.x - offset, targetPosition.y]\n case \"left-end\":\n return [targetPosition.x - offset, targetPosition.y]\n case \"right-start\":\n return [targetPosition.x + offset, targetPosition.y]\n case \"right\":\n return [targetPosition.x + offset, targetPosition.y]\n case \"right-end\":\n return [targetPosition.x + offset, targetPosition.y]\n }\n })()\n\n return `translate(${x}px, ${y}px)`\n}\n\nconst getOppositePosition = (position: Position) => {\n switch (position) {\n case \"top-start\":\n return \"bottom-start\"\n case \"top\":\n return \"bottom\"\n case \"top-end\":\n return \"bottom-end\"\n case \"bottom-start\":\n return \"top-start\"\n case \"bottom\":\n return \"top\"\n case \"bottom-end\":\n return \"top-end\"\n case \"left-start\":\n return \"right-start\"\n case \"left\":\n return \"right\"\n case \"left-end\":\n return \"right-end\"\n case \"right-start\":\n return \"left-start\"\n case \"right\":\n return \"left\"\n case \"right-end\":\n return \"left-end\"\n }\n}\n\nexport const getDocumentBoundingRect = () => {\n const width = document.body.clientWidth\n const height = document.body.clientHeight\n\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height,\n } as DOMRect\n}\n\ninterface ShouldFlip {\n targetPosition: TargetPosition\n position: Position\n boundaryRect: Pick<DOMRect, \"top\" | \"right\" | \"bottom\" | \"left\">\n tooltipRect: Pick<DOMRect, \"width\" | \"height\">\n}\n\nexport const shouldFlip = ({\n targetPosition,\n position,\n boundaryRect,\n tooltipRect,\n}: ShouldFlip) => {\n switch (position) {\n case \"top-start\":\n case \"top\":\n case \"top-end\":\n return targetPosition.y < boundaryRect.top\n case \"bottom-start\":\n case \"bottom\":\n case \"bottom-end\":\n return targetPosition.y + tooltipRect.height > boundaryRect.bottom\n case \"left-start\":\n case \"left\":\n case \"left-end\":\n return targetPosition.x < boundaryRect.left\n case \"right-start\":\n case \"right\":\n case \"right-end\":\n return targetPosition.x + tooltipRect.width > boundaryRect.right\n }\n}\n\nconst isWithin = (elementRect: DOMRect, boundaryRect: DOMRect) => {\n return (\n boundaryRect.top < elementRect.bottom &&\n boundaryRect.left < elementRect.right &&\n boundaryRect.bottom > elementRect.top &&\n boundaryRect.right > elementRect.left\n )\n}\n\n/**\n * Calculate the maximum height available for a tooltip based on its placement and viewport constraints.\n */\nexport const calculateMaxHeight = ({\n anchorRect,\n position,\n offset = 0,\n}: {\n anchorRect: DOMRect\n position: Position\n offset?: number\n}): number => {\n const viewportHeight = window.innerHeight\n\n switch (position) {\n case \"top-start\":\n case \"top\":\n case \"top-end\":\n // Space from top of anchor to top of viewport\n return anchorRect.top - offset * 2\n case \"bottom-start\":\n case \"bottom\":\n case \"bottom-end\":\n // Space from bottom of anchor to bottom of viewport\n return viewportHeight - anchorRect.bottom - offset * 2\n case \"left-start\":\n case \"left\":\n case \"left-end\":\n case \"right-start\":\n case \"right\":\n case \"right-end\":\n // For side placements, use the entire viewport height\n return viewportHeight - offset * 2\n default:\n return viewportHeight\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@artsy/palette",
3
- "version": "41.0.0-canary.1423.31655.0",
3
+ "version": "41.0.0",
4
4
  "description": "Design system library for react components",
5
5
  "main": "dist/index.js",
6
6
  "publishConfig": {
@@ -118,13 +118,12 @@
118
118
  },
119
119
  "dependencies": {
120
120
  "@artsy/icons": "^3.2.2",
121
- "@artsy/palette-tokens": "^6.3.0",
121
+ "@artsy/palette-tokens": "^7.0.0",
122
122
  "@seznam/compose-react-refs": "^1.0.6",
123
123
  "@styled-system/theme-get": "^5.1.2",
124
124
  "es-toolkit": "^1.16.0",
125
125
  "proportional-scale": "^4.0.0",
126
126
  "react-focus-on": "^3.7.0",
127
- "react-lazy-load-image-component": "1.6.2",
128
127
  "styled-system": "^5.1.5",
129
128
  "trunc-html": "^1.1.2",
130
129
  "use-cursor": "^1.2.3",
@@ -188,5 +187,5 @@
188
187
  "url": "http://localhost"
189
188
  }
190
189
  },
191
- "gitHead": "06caaa5c5c75d8e4e82187032c7b99ef590a6bb3"
190
+ "gitHead": "eabef508540538f7d378dca5bfbbab166eda7ad6"
192
191
  }