@haiilo/catalyst 0.5.0 → 0.5.1

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 (249) hide show
  1. package/dist/catalyst/app-globals-23d8c4a8.js +948 -0
  2. package/dist/catalyst/app-globals-23d8c4a8.js.map +1 -0
  3. package/dist/catalyst/app-globals-3dd6a26b.js +948 -0
  4. package/dist/catalyst/app-globals-3dd6a26b.js.map +1 -0
  5. package/dist/catalyst/app-globals-42ce39cc.js +948 -0
  6. package/dist/catalyst/app-globals-42ce39cc.js.map +1 -0
  7. package/dist/catalyst/app-globals-5cf43b57.js +949 -0
  8. package/dist/catalyst/app-globals-5cf43b57.js.map +1 -0
  9. package/dist/catalyst/app-globals-8598c768.js +948 -0
  10. package/dist/catalyst/app-globals-8598c768.js.map +1 -0
  11. package/dist/catalyst/app-globals-a41af143.js +948 -0
  12. package/dist/catalyst/app-globals-a41af143.js.map +1 -0
  13. package/dist/catalyst/app-globals-c6a8b994.js +949 -0
  14. package/dist/catalyst/app-globals-c6a8b994.js.map +1 -0
  15. package/dist/catalyst/cat-alert.entry.js +33 -0
  16. package/dist/catalyst/cat-alert.entry.js.map +1 -0
  17. package/dist/catalyst/cat-badge.entry.js +44 -0
  18. package/dist/catalyst/cat-badge.entry.js.map +1 -0
  19. package/dist/catalyst/cat-button.entry.js +298 -0
  20. package/dist/catalyst/cat-button.entry.js.map +1 -0
  21. package/dist/catalyst/cat-card.entry.js +17 -0
  22. package/dist/catalyst/cat-card.entry.js.map +1 -0
  23. package/dist/catalyst/cat-checkbox.entry.js +75 -0
  24. package/dist/catalyst/cat-checkbox.entry.js.map +1 -0
  25. package/dist/catalyst/cat-i18n-registry-2a6187c9.js +75 -0
  26. package/dist/catalyst/cat-i18n-registry-2a6187c9.js.map +1 -0
  27. package/dist/catalyst/cat-i18n-registry-330db605.js +74 -0
  28. package/dist/catalyst/cat-i18n-registry-330db605.js.map +1 -0
  29. package/dist/catalyst/cat-i18n-registry-83d20604.js +74 -0
  30. package/dist/catalyst/cat-i18n-registry-83d20604.js.map +1 -0
  31. package/dist/catalyst/cat-i18n-registry-dd55821d.js +73 -0
  32. package/dist/catalyst/cat-i18n-registry-dd55821d.js.map +1 -0
  33. package/dist/catalyst/cat-i18n-registry-f6560651.js +75 -0
  34. package/dist/catalyst/cat-i18n-registry-f6560651.js.map +1 -0
  35. package/dist/catalyst/cat-icon-registry-2dcfc9fb.js +59 -0
  36. package/dist/catalyst/cat-icon-registry-2dcfc9fb.js.map +1 -0
  37. package/dist/catalyst/cat-icon.entry.js +31 -0
  38. package/dist/catalyst/cat-icon.entry.js.map +1 -0
  39. package/dist/catalyst/cat-input.entry.js +111 -0
  40. package/dist/catalyst/cat-input.entry.js.map +1 -0
  41. package/dist/catalyst/cat-menu.entry.js +850 -0
  42. package/dist/catalyst/cat-menu.entry.js.map +1 -0
  43. package/dist/catalyst/cat-radio.entry.js +66 -0
  44. package/dist/catalyst/cat-radio.entry.js.map +1 -0
  45. package/dist/catalyst/cat-scrollable.entry.js +4522 -0
  46. package/dist/catalyst/cat-scrollable.entry.js.map +1 -0
  47. package/dist/catalyst/cat-skeleton.entry.js +55 -0
  48. package/dist/catalyst/cat-skeleton.entry.js.map +1 -0
  49. package/dist/catalyst/cat-spinner.entry.js +23 -0
  50. package/dist/catalyst/cat-spinner.entry.js.map +1 -0
  51. package/dist/catalyst/cat-textarea.entry.js +87 -0
  52. package/dist/catalyst/cat-textarea.entry.js.map +1 -0
  53. package/dist/catalyst/cat-toggle.entry.js +66 -0
  54. package/dist/catalyst/cat-toggle.entry.js.map +1 -0
  55. package/dist/catalyst/cat-tooltip.entry.js +129 -0
  56. package/dist/catalyst/cat-tooltip.entry.js.map +1 -0
  57. package/dist/catalyst/catalyst.css +2033 -1
  58. package/dist/catalyst/catalyst.esm.js +133 -1
  59. package/dist/catalyst/catalyst.esm.js.map +1 -1
  60. package/dist/catalyst/css-shim-e6dd2538.js +6 -0
  61. package/dist/catalyst/css-shim-e6dd2538.js.map +1 -0
  62. package/dist/catalyst/dom-7fc649b0.js +75 -0
  63. package/dist/catalyst/dom-7fc649b0.js.map +1 -0
  64. package/dist/catalyst/first-tabbable-2d9f9e9a.js +2123 -0
  65. package/dist/catalyst/first-tabbable-2d9f9e9a.js.map +1 -0
  66. package/dist/catalyst/index-471d4e05.js +3059 -0
  67. package/dist/catalyst/index-471d4e05.js.map +1 -0
  68. package/dist/catalyst/index-bbb694f5.js +3059 -0
  69. package/dist/catalyst/index-bbb694f5.js.map +1 -0
  70. package/dist/catalyst/index.esm.js +4 -1
  71. package/dist/catalyst/index.esm.js.map +1 -1
  72. package/dist/{esm/cat-icon-registry-77963c26.js → catalyst/loglevel-7f0f71af.js} +35 -126
  73. package/dist/catalyst/loglevel-7f0f71af.js.map +1 -0
  74. package/dist/catalyst/shadow-css-4d56fa31.js +390 -0
  75. package/dist/catalyst/shadow-css-4d56fa31.js.map +1 -0
  76. package/dist/cjs/app-globals-aaefc070.js +950 -0
  77. package/dist/cjs/app-globals-aaefc070.js.map +1 -0
  78. package/dist/cjs/cat-alert.cjs.entry.js +37 -0
  79. package/dist/cjs/cat-alert.cjs.entry.js.map +1 -0
  80. package/dist/cjs/cat-badge.cjs.entry.js +48 -0
  81. package/dist/cjs/cat-badge.cjs.entry.js.map +1 -0
  82. package/dist/cjs/cat-button.cjs.entry.js +302 -0
  83. package/dist/cjs/cat-button.cjs.entry.js.map +1 -0
  84. package/dist/cjs/cat-card.cjs.entry.js +21 -0
  85. package/dist/cjs/cat-card.cjs.entry.js.map +1 -0
  86. package/dist/cjs/cat-checkbox.cjs.entry.js +79 -0
  87. package/dist/cjs/cat-checkbox.cjs.entry.js.map +1 -0
  88. package/dist/cjs/cat-i18n-registry-a1379d1e.js +76 -0
  89. package/dist/cjs/cat-i18n-registry-a1379d1e.js.map +1 -0
  90. package/dist/cjs/cat-icon-registry-74247389.js +61 -0
  91. package/dist/cjs/cat-icon-registry-74247389.js.map +1 -0
  92. package/dist/cjs/cat-icon.cjs.entry.js +35 -0
  93. package/dist/cjs/cat-icon.cjs.entry.js.map +1 -0
  94. package/dist/cjs/cat-input.cjs.entry.js +115 -0
  95. package/dist/cjs/cat-input.cjs.entry.js.map +1 -0
  96. package/dist/cjs/cat-menu.cjs.entry.js +854 -0
  97. package/dist/cjs/cat-menu.cjs.entry.js.map +1 -0
  98. package/dist/cjs/cat-radio.cjs.entry.js +70 -0
  99. package/dist/cjs/cat-radio.cjs.entry.js.map +1 -0
  100. package/dist/cjs/cat-scrollable.cjs.entry.js +4526 -0
  101. package/dist/cjs/cat-scrollable.cjs.entry.js.map +1 -0
  102. package/dist/cjs/cat-skeleton.cjs.entry.js +59 -0
  103. package/dist/cjs/cat-skeleton.cjs.entry.js.map +1 -0
  104. package/dist/cjs/cat-spinner.cjs.entry.js +27 -0
  105. package/dist/cjs/cat-spinner.cjs.entry.js.map +1 -0
  106. package/dist/cjs/cat-textarea.cjs.entry.js +91 -0
  107. package/dist/cjs/cat-textarea.cjs.entry.js.map +1 -0
  108. package/dist/cjs/cat-toggle.cjs.entry.js +70 -0
  109. package/dist/cjs/cat-toggle.cjs.entry.js.map +1 -0
  110. package/dist/cjs/cat-tooltip.cjs.entry.js +133 -0
  111. package/dist/cjs/cat-tooltip.cjs.entry.js.map +1 -0
  112. package/dist/cjs/catalyst.cjs.js +118 -6
  113. package/dist/cjs/catalyst.cjs.js.map +1 -1
  114. package/dist/cjs/css-shim-6ca600c2.js +8 -0
  115. package/dist/cjs/css-shim-6ca600c2.js.map +1 -0
  116. package/dist/cjs/dom-8d415461.js +77 -0
  117. package/dist/cjs/dom-8d415461.js.map +1 -0
  118. package/dist/cjs/first-tabbable-2068dcc6.js +2133 -0
  119. package/dist/cjs/first-tabbable-2068dcc6.js.map +1 -0
  120. package/dist/cjs/index-abcb3941.js +3094 -0
  121. package/dist/cjs/index-abcb3941.js.map +1 -0
  122. package/dist/cjs/index.cjs.js +4 -2
  123. package/dist/cjs/index.cjs.js.map +1 -1
  124. package/dist/cjs/loader.cjs.js +20 -4
  125. package/dist/cjs/loader.cjs.js.map +1 -1
  126. package/dist/cjs/{cat-icon-registry-6895750f.js → loglevel-24040e9d.js} +34 -127
  127. package/dist/cjs/loglevel-24040e9d.js.map +1 -0
  128. package/dist/cjs/shadow-css-78860e39.js +392 -0
  129. package/dist/cjs/shadow-css-78860e39.js.map +1 -0
  130. package/dist/collection/components/cat-i18n/cat-i18n-registry.js +2 -1
  131. package/dist/collection/components/cat-i18n/cat-i18n-registry.js.map +1 -1
  132. package/dist/components/cat-i18n-registry.js +2 -1
  133. package/dist/components/cat-i18n-registry.js.map +1 -1
  134. package/dist/components/cat-scrollable.js +3209 -23
  135. package/dist/components/cat-scrollable.js.map +1 -1
  136. package/dist/components/first-tabbable.js +627 -0
  137. package/dist/components/first-tabbable.js.map +1 -1
  138. package/dist/components/index.js +769 -0
  139. package/dist/components/index.js.map +1 -1
  140. package/dist/components/loglevel.js +33 -2
  141. package/dist/components/loglevel.js.map +1 -1
  142. package/dist/esm/app-globals-3dd6a26b.js +948 -0
  143. package/dist/esm/app-globals-3dd6a26b.js.map +1 -0
  144. package/dist/esm/cat-alert.entry.js +33 -0
  145. package/dist/esm/cat-alert.entry.js.map +1 -0
  146. package/dist/esm/cat-badge.entry.js +44 -0
  147. package/dist/esm/cat-badge.entry.js.map +1 -0
  148. package/dist/esm/cat-button.entry.js +298 -0
  149. package/dist/esm/cat-button.entry.js.map +1 -0
  150. package/dist/esm/cat-card.entry.js +17 -0
  151. package/dist/esm/cat-card.entry.js.map +1 -0
  152. package/dist/esm/cat-checkbox.entry.js +75 -0
  153. package/dist/esm/cat-checkbox.entry.js.map +1 -0
  154. package/dist/esm/cat-i18n-registry-83d20604.js +74 -0
  155. package/dist/esm/cat-i18n-registry-83d20604.js.map +1 -0
  156. package/dist/esm/cat-icon-registry-2dcfc9fb.js +59 -0
  157. package/dist/esm/cat-icon-registry-2dcfc9fb.js.map +1 -0
  158. package/dist/esm/cat-icon.entry.js +31 -0
  159. package/dist/esm/cat-icon.entry.js.map +1 -0
  160. package/dist/esm/cat-input.entry.js +111 -0
  161. package/dist/esm/cat-input.entry.js.map +1 -0
  162. package/dist/esm/cat-menu.entry.js +850 -0
  163. package/dist/esm/cat-menu.entry.js.map +1 -0
  164. package/dist/esm/cat-radio.entry.js +66 -0
  165. package/dist/esm/cat-radio.entry.js.map +1 -0
  166. package/dist/esm/cat-scrollable.entry.js +4522 -0
  167. package/dist/esm/cat-scrollable.entry.js.map +1 -0
  168. package/dist/esm/cat-skeleton.entry.js +55 -0
  169. package/dist/esm/cat-skeleton.entry.js.map +1 -0
  170. package/dist/esm/cat-spinner.entry.js +23 -0
  171. package/dist/esm/cat-spinner.entry.js.map +1 -0
  172. package/dist/esm/cat-textarea.entry.js +87 -0
  173. package/dist/esm/cat-textarea.entry.js.map +1 -0
  174. package/dist/esm/cat-toggle.entry.js +66 -0
  175. package/dist/esm/cat-toggle.entry.js.map +1 -0
  176. package/dist/esm/cat-tooltip.entry.js +129 -0
  177. package/dist/esm/cat-tooltip.entry.js.map +1 -0
  178. package/dist/esm/catalyst.js +118 -6
  179. package/dist/esm/catalyst.js.map +1 -1
  180. package/dist/esm/css-shim-e6dd2538.js +6 -0
  181. package/dist/esm/css-shim-e6dd2538.js.map +1 -0
  182. package/dist/esm/dom-7fc649b0.js +75 -0
  183. package/dist/esm/dom-7fc649b0.js.map +1 -0
  184. package/dist/esm/first-tabbable-2d9f9e9a.js +2123 -0
  185. package/dist/esm/first-tabbable-2d9f9e9a.js.map +1 -0
  186. package/dist/esm/index-471d4e05.js +3059 -0
  187. package/dist/esm/index-471d4e05.js.map +1 -0
  188. package/dist/esm/index.js +3 -1
  189. package/dist/esm/index.js.map +1 -1
  190. package/dist/esm/loader.js +20 -4
  191. package/dist/esm/loader.js.map +1 -1
  192. package/dist/esm/loglevel-7f0f71af.js +346 -0
  193. package/dist/esm/loglevel-7f0f71af.js.map +1 -0
  194. package/dist/esm/shadow-css-4d56fa31.js +390 -0
  195. package/dist/esm/shadow-css-4d56fa31.js.map +1 -0
  196. package/dist/types/components/cat-alert/cat-alert.e2e.d.ts +1 -0
  197. package/dist/types/components/cat-alert/cat-alert.spec.d.ts +1 -0
  198. package/dist/types/components/cat-badge/cat-badge.e2e.d.ts +1 -0
  199. package/dist/types/components/cat-badge/cat-badge.spec.d.ts +1 -0
  200. package/dist/types/components/cat-button/cat-button.e2e.d.ts +1 -0
  201. package/dist/types/components/cat-button/cat-button.spec.d.ts +1 -0
  202. package/dist/types/components/cat-card/cat-card.e2e.d.ts +1 -0
  203. package/dist/types/components/cat-card/cat-card.spec.d.ts +1 -0
  204. package/dist/types/components/cat-checkbox/cat-checkbox.e2e.d.ts +1 -0
  205. package/dist/types/components/cat-checkbox/cat-checkbox.spec.d.ts +1 -0
  206. package/dist/types/components/cat-icon/cat-icon.e2e.d.ts +1 -0
  207. package/dist/types/components/cat-icon/cat-icon.spec.d.ts +1 -0
  208. package/dist/types/components/cat-input/cat-input.e2e.d.ts +1 -0
  209. package/dist/types/components/cat-input/cat-input.spec.d.ts +1 -0
  210. package/dist/types/components/cat-menu/cat-menu.e2e.d.ts +1 -0
  211. package/dist/types/components/cat-menu/cat-menu.spec.d.ts +1 -0
  212. package/dist/types/components/cat-radio/cat-radio.e2e.d.ts +1 -0
  213. package/dist/types/components/cat-radio/cat-radio.spec.d.ts +1 -0
  214. package/dist/types/components/cat-scrollable/cat-scrollable.e2e.d.ts +1 -0
  215. package/dist/types/components/cat-scrollable/cat-scrollable.spec.d.ts +1 -0
  216. package/dist/types/components/cat-skeleton/cat-skeleton.e2e.d.ts +1 -0
  217. package/dist/types/components/cat-skeleton/cat-skeleton.spec.d.ts +1 -0
  218. package/dist/types/components/cat-spinner/cat-spinner.e2e.d.ts +1 -0
  219. package/dist/types/components/cat-spinner/cat-spinner.spec.d.ts +1 -0
  220. package/dist/types/components/cat-textarea/cat-textarea.e2e.d.ts +1 -0
  221. package/dist/types/components/cat-textarea/cat-textarea.spec.d.ts +1 -0
  222. package/dist/types/components/cat-toggle/cat-toggle.e2e.d.ts +1 -0
  223. package/dist/types/components/cat-toggle/cat-toggle.spec.d.ts +1 -0
  224. package/dist/types/components/cat-tooltip/cat-tooltip.e2e.d.ts +1 -0
  225. package/dist/types/components/cat-tooltip/cat-tooltip.spec.d.ts +1 -0
  226. package/dist/types/utils/media-matcher.spec.d.ts +1 -0
  227. package/package.json +3 -3
  228. package/dist/catalyst/p-23d54bc6.js +0 -2
  229. package/dist/catalyst/p-23d54bc6.js.map +0 -1
  230. package/dist/catalyst/p-84693f87.entry.js +0 -24
  231. package/dist/catalyst/p-84693f87.entry.js.map +0 -1
  232. package/dist/catalyst/p-8f5cfa78.js +0 -2
  233. package/dist/catalyst/p-8f5cfa78.js.map +0 -1
  234. package/dist/catalyst/p-fa7da4c6.js +0 -2
  235. package/dist/catalyst/p-fa7da4c6.js.map +0 -1
  236. package/dist/cjs/app-globals-50e7504d.js +0 -180
  237. package/dist/cjs/app-globals-50e7504d.js.map +0 -1
  238. package/dist/cjs/cat-alert_15.cjs.entry.js +0 -4652
  239. package/dist/cjs/cat-alert_15.cjs.entry.js.map +0 -1
  240. package/dist/cjs/cat-icon-registry-6895750f.js.map +0 -1
  241. package/dist/cjs/index-2db8e23d.js +0 -1347
  242. package/dist/cjs/index-2db8e23d.js.map +0 -1
  243. package/dist/esm/app-globals-6906ac5c.js +0 -178
  244. package/dist/esm/app-globals-6906ac5c.js.map +0 -1
  245. package/dist/esm/cat-alert_15.entry.js +0 -4634
  246. package/dist/esm/cat-alert_15.entry.js.map +0 -1
  247. package/dist/esm/cat-icon-registry-77963c26.js.map +0 -1
  248. package/dist/esm/index-1f3ca03b.js +0 -1320
  249. package/dist/esm/index-1f3ca03b.js.map +0 -1
@@ -94,6 +94,21 @@ const computePosition$1 = async (reference, floating, config) => {
94
94
  } = config;
95
95
  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
96
96
 
97
+ if ("development" !== "production") {
98
+ if (platform == null) {
99
+ console.error(['Floating UI: `platform` property was not passed to config. If you', 'want to use Floating UI on the web, install @floating-ui/dom', 'instead of the /core package. Otherwise, you can create your own', '`platform`: https://floating-ui.com/docs/platform'].join(' '));
100
+ }
101
+
102
+ if (middleware.filter(_ref => {
103
+ let {
104
+ name
105
+ } = _ref;
106
+ return name === 'autoPlacement' || name === 'flip';
107
+ }).length > 1) {
108
+ throw new Error(['Floating UI: duplicate `flip` and/or `autoPlacement`', 'middleware detected. This will lead to an infinite loop. Ensure only', 'one of either has been passed to the `middleware` array.'].join(' '));
109
+ }
110
+ }
111
+
97
112
  let rects = await platform.getElementRects({
98
113
  reference,
99
114
  floating,
@@ -105,8 +120,16 @@ const computePosition$1 = async (reference, floating, config) => {
105
120
  } = computeCoordsFromPlacement(rects, placement, rtl);
106
121
  let statefulPlacement = placement;
107
122
  let middlewareData = {};
123
+ let _debug_loop_count_ = 0;
108
124
 
109
125
  for (let i = 0; i < middleware.length; i++) {
126
+ if ("development" !== "production") {
127
+ _debug_loop_count_++;
128
+
129
+ if (_debug_loop_count_ > 100) {
130
+ throw new Error(['Floating UI: The middleware lifecycle appears to be', 'running in an infinite loop. This is usually caused by a `reset`', 'continually being returned without a break condition.'].join(' '));
131
+ }
132
+ }
110
133
 
111
134
  const {
112
135
  name,
@@ -258,6 +281,75 @@ async function detectOverflow(middlewareArguments, options) {
258
281
  };
259
282
  }
260
283
 
284
+ const min$1 = Math.min;
285
+ const max$1 = Math.max;
286
+
287
+ function within(min$1$1, value, max$1$1) {
288
+ return max$1(min$1$1, min$1(value, max$1$1));
289
+ }
290
+
291
+ /**
292
+ * Positions an inner element of the floating element such that it is centered
293
+ * to the reference element.
294
+ * @see https://floating-ui.com/docs/arrow
295
+ */
296
+ const arrow = options => ({
297
+ name: 'arrow',
298
+ options,
299
+
300
+ async fn(middlewareArguments) {
301
+ // Since `element` is required, we don't Partial<> the type
302
+ const {
303
+ element,
304
+ padding = 0
305
+ } = options != null ? options : {};
306
+ const {
307
+ x,
308
+ y,
309
+ placement,
310
+ rects,
311
+ platform
312
+ } = middlewareArguments;
313
+
314
+ if (element == null) {
315
+ if ("development" !== "production") {
316
+ console.warn('Floating UI: No `element` was passed to the `arrow` middleware.');
317
+ }
318
+
319
+ return {};
320
+ }
321
+
322
+ const paddingObject = getSideObjectFromPadding(padding);
323
+ const coords = {
324
+ x,
325
+ y
326
+ };
327
+ const axis = getMainAxisFromPlacement(placement);
328
+ const length = getLengthFromAxis(axis);
329
+ const arrowDimensions = await platform.getDimensions(element);
330
+ const minProp = axis === 'y' ? 'top' : 'left';
331
+ const maxProp = axis === 'y' ? 'bottom' : 'right';
332
+ const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
333
+ const startDiff = coords[axis] - rects.reference[axis];
334
+ const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));
335
+ const clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
336
+ const centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the floating element if the center
337
+ // point is outside of the floating element's bounds
338
+
339
+ const min = paddingObject[minProp];
340
+ const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];
341
+ const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
342
+ const offset = within(min, center, max);
343
+ return {
344
+ data: {
345
+ [axis]: offset,
346
+ centerOffset: center - offset
347
+ }
348
+ };
349
+ }
350
+
351
+ });
352
+
261
353
  const hash$1 = {
262
354
  left: 'right',
263
355
  right: 'left',
@@ -296,6 +388,121 @@ function getOppositeAlignmentPlacement(placement) {
296
388
  return placement.replace(/start|end/g, matched => hash[matched]);
297
389
  }
298
390
 
391
+ const sides = ['top', 'right', 'bottom', 'left'];
392
+ const allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + "-start", side + "-end"), []);
393
+
394
+ function getPlacementList(alignment, autoAlignment, allowedPlacements) {
395
+ const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);
396
+ return allowedPlacementsSortedByAlignment.filter(placement => {
397
+ if (alignment) {
398
+ return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);
399
+ }
400
+
401
+ return true;
402
+ });
403
+ }
404
+
405
+ /**
406
+ * Automatically chooses the `placement` which has the most space available.
407
+ * @see https://floating-ui.com/docs/autoPlacement
408
+ */
409
+ const autoPlacement = function (options) {
410
+ if (options === void 0) {
411
+ options = {};
412
+ }
413
+
414
+ return {
415
+ name: 'autoPlacement',
416
+ options,
417
+
418
+ async fn(middlewareArguments) {
419
+ var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _placementsSortedByLe;
420
+
421
+ const {
422
+ x,
423
+ y,
424
+ rects,
425
+ middlewareData,
426
+ placement,
427
+ platform,
428
+ elements
429
+ } = middlewareArguments;
430
+ const {
431
+ alignment = null,
432
+ allowedPlacements = allPlacements,
433
+ autoAlignment = true,
434
+ ...detectOverflowOptions
435
+ } = options;
436
+ const placements = getPlacementList(alignment, autoAlignment, allowedPlacements);
437
+ const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);
438
+ const currentIndex = (_middlewareData$autoP = (_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.index) != null ? _middlewareData$autoP : 0;
439
+ const currentPlacement = placements[currentIndex];
440
+
441
+ if (currentPlacement == null) {
442
+ return {};
443
+ }
444
+
445
+ const {
446
+ main,
447
+ cross
448
+ } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))); // Make `computeCoords` start from the right place
449
+
450
+ if (placement !== currentPlacement) {
451
+ return {
452
+ x,
453
+ y,
454
+ reset: {
455
+ placement: placements[0]
456
+ }
457
+ };
458
+ }
459
+
460
+ const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];
461
+ const allOverflows = [...((_middlewareData$autoP3 = (_middlewareData$autoP4 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP4.overflows) != null ? _middlewareData$autoP3 : []), {
462
+ placement: currentPlacement,
463
+ overflows: currentOverflows
464
+ }];
465
+ const nextPlacement = placements[currentIndex + 1]; // There are more placements to check
466
+
467
+ if (nextPlacement) {
468
+ return {
469
+ data: {
470
+ index: currentIndex + 1,
471
+ overflows: allOverflows
472
+ },
473
+ reset: {
474
+ placement: nextPlacement
475
+ }
476
+ };
477
+ }
478
+
479
+ const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);
480
+ const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {
481
+ let {
482
+ overflows
483
+ } = _ref;
484
+ return overflows.every(overflow => overflow <= 0);
485
+ })) == null ? void 0 : _placementsSortedByLe.placement;
486
+ const resetPlacement = placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement;
487
+
488
+ if (resetPlacement !== placement) {
489
+ return {
490
+ data: {
491
+ index: currentIndex + 1,
492
+ overflows: allOverflows
493
+ },
494
+ reset: {
495
+ placement: resetPlacement
496
+ }
497
+ };
498
+ }
499
+
500
+ return {};
501
+ }
502
+
503
+ };
504
+ };
505
+
299
506
  function getExpandedPlacements(placement) {
300
507
  const oppositePlacement = getOppositePlacement(placement);
301
508
  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
@@ -414,6 +621,76 @@ const flip = function (options) {
414
621
  };
415
622
  };
416
623
 
624
+ function getSideOffsets(overflow, rect) {
625
+ return {
626
+ top: overflow.top - rect.height,
627
+ right: overflow.right - rect.width,
628
+ bottom: overflow.bottom - rect.height,
629
+ left: overflow.left - rect.width
630
+ };
631
+ }
632
+
633
+ function isAnySideFullyClipped(overflow) {
634
+ return sides.some(side => overflow[side] >= 0);
635
+ }
636
+
637
+ /**
638
+ * Provides data to hide the floating element in applicable situations, such as
639
+ * when it is not in the same clipping context as the reference element.
640
+ * @see https://floating-ui.com/docs/hide
641
+ */
642
+ const hide = function (_temp) {
643
+ let {
644
+ strategy = 'referenceHidden',
645
+ ...detectOverflowOptions
646
+ } = _temp === void 0 ? {} : _temp;
647
+ return {
648
+ name: 'hide',
649
+
650
+ async fn(middlewareArguments) {
651
+ const {
652
+ rects
653
+ } = middlewareArguments;
654
+
655
+ switch (strategy) {
656
+ case 'referenceHidden':
657
+ {
658
+ const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,
659
+ elementContext: 'reference'
660
+ });
661
+ const offsets = getSideOffsets(overflow, rects.reference);
662
+ return {
663
+ data: {
664
+ referenceHiddenOffsets: offsets,
665
+ referenceHidden: isAnySideFullyClipped(offsets)
666
+ }
667
+ };
668
+ }
669
+
670
+ case 'escaped':
671
+ {
672
+ const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,
673
+ altBoundary: true
674
+ });
675
+ const offsets = getSideOffsets(overflow, rects.floating);
676
+ return {
677
+ data: {
678
+ escapedOffsets: offsets,
679
+ escaped: isAnySideFullyClipped(offsets)
680
+ }
681
+ };
682
+ }
683
+
684
+ default:
685
+ {
686
+ return {};
687
+ }
688
+ }
689
+ }
690
+
691
+ };
692
+ };
693
+
417
694
  function convertValueToCoords(placement, rects, value, rtl) {
418
695
  if (rtl === void 0) {
419
696
  rtl = false;
@@ -490,6 +767,356 @@ const offset = function (value) {
490
767
  };
491
768
  };
492
769
 
770
+ function getCrossAxis(axis) {
771
+ return axis === 'x' ? 'y' : 'x';
772
+ }
773
+
774
+ /**
775
+ * Shifts the floating element in order to keep it in view when it will overflow
776
+ * a clipping boundary.
777
+ * @see https://floating-ui.com/docs/shift
778
+ */
779
+ const shift = function (options) {
780
+ if (options === void 0) {
781
+ options = {};
782
+ }
783
+
784
+ return {
785
+ name: 'shift',
786
+ options,
787
+
788
+ async fn(middlewareArguments) {
789
+ const {
790
+ x,
791
+ y,
792
+ placement
793
+ } = middlewareArguments;
794
+ const {
795
+ mainAxis: checkMainAxis = true,
796
+ crossAxis: checkCrossAxis = false,
797
+ limiter = {
798
+ fn: _ref => {
799
+ let {
800
+ x,
801
+ y
802
+ } = _ref;
803
+ return {
804
+ x,
805
+ y
806
+ };
807
+ }
808
+ },
809
+ ...detectOverflowOptions
810
+ } = options;
811
+ const coords = {
812
+ x,
813
+ y
814
+ };
815
+ const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);
816
+ const mainAxis = getMainAxisFromPlacement(getSide(placement));
817
+ const crossAxis = getCrossAxis(mainAxis);
818
+ let mainAxisCoord = coords[mainAxis];
819
+ let crossAxisCoord = coords[crossAxis];
820
+
821
+ if (checkMainAxis) {
822
+ const minSide = mainAxis === 'y' ? 'top' : 'left';
823
+ const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
824
+ const min = mainAxisCoord + overflow[minSide];
825
+ const max = mainAxisCoord - overflow[maxSide];
826
+ mainAxisCoord = within(min, mainAxisCoord, max);
827
+ }
828
+
829
+ if (checkCrossAxis) {
830
+ const minSide = crossAxis === 'y' ? 'top' : 'left';
831
+ const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
832
+ const min = crossAxisCoord + overflow[minSide];
833
+ const max = crossAxisCoord - overflow[maxSide];
834
+ crossAxisCoord = within(min, crossAxisCoord, max);
835
+ }
836
+
837
+ const limitedCoords = limiter.fn({ ...middlewareArguments,
838
+ [mainAxis]: mainAxisCoord,
839
+ [crossAxis]: crossAxisCoord
840
+ });
841
+ return { ...limitedCoords,
842
+ data: {
843
+ x: limitedCoords.x - x,
844
+ y: limitedCoords.y - y
845
+ }
846
+ };
847
+ }
848
+
849
+ };
850
+ };
851
+
852
+ /**
853
+ * Built-in `limiter` that will stop `shift()` at a certain point.
854
+ */
855
+ const limitShift = function (options) {
856
+ if (options === void 0) {
857
+ options = {};
858
+ }
859
+
860
+ return {
861
+ options,
862
+
863
+ fn(middlewareArguments) {
864
+ const {
865
+ x,
866
+ y,
867
+ placement,
868
+ rects,
869
+ middlewareData
870
+ } = middlewareArguments;
871
+ const {
872
+ offset = 0,
873
+ mainAxis: checkMainAxis = true,
874
+ crossAxis: checkCrossAxis = true
875
+ } = options;
876
+ const coords = {
877
+ x,
878
+ y
879
+ };
880
+ const mainAxis = getMainAxisFromPlacement(placement);
881
+ const crossAxis = getCrossAxis(mainAxis);
882
+ let mainAxisCoord = coords[mainAxis];
883
+ let crossAxisCoord = coords[crossAxis];
884
+ const rawOffset = typeof offset === 'function' ? offset({ ...rects,
885
+ placement
886
+ }) : offset;
887
+ const computedOffset = typeof rawOffset === 'number' ? {
888
+ mainAxis: rawOffset,
889
+ crossAxis: 0
890
+ } : {
891
+ mainAxis: 0,
892
+ crossAxis: 0,
893
+ ...rawOffset
894
+ };
895
+
896
+ if (checkMainAxis) {
897
+ const len = mainAxis === 'y' ? 'height' : 'width';
898
+ const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;
899
+ const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;
900
+
901
+ if (mainAxisCoord < limitMin) {
902
+ mainAxisCoord = limitMin;
903
+ } else if (mainAxisCoord > limitMax) {
904
+ mainAxisCoord = limitMax;
905
+ }
906
+ }
907
+
908
+ if (checkCrossAxis) {
909
+ var _middlewareData$offse, _middlewareData$offse2, _middlewareData$offse3, _middlewareData$offse4;
910
+
911
+ const len = mainAxis === 'y' ? 'width' : 'height';
912
+ const isOriginSide = ['top', 'left'].includes(getSide(placement));
913
+ const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? (_middlewareData$offse = (_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) != null ? _middlewareData$offse : 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);
914
+ const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : (_middlewareData$offse3 = (_middlewareData$offse4 = middlewareData.offset) == null ? void 0 : _middlewareData$offse4[crossAxis]) != null ? _middlewareData$offse3 : 0) - (isOriginSide ? computedOffset.crossAxis : 0);
915
+
916
+ if (crossAxisCoord < limitMin) {
917
+ crossAxisCoord = limitMin;
918
+ } else if (crossAxisCoord > limitMax) {
919
+ crossAxisCoord = limitMax;
920
+ }
921
+ }
922
+
923
+ return {
924
+ [mainAxis]: mainAxisCoord,
925
+ [crossAxis]: crossAxisCoord
926
+ };
927
+ }
928
+
929
+ };
930
+ };
931
+
932
+ /**
933
+ * Provides data to change the size of the floating element. For instance,
934
+ * prevent it from overflowing its clipping boundary or match the width of the
935
+ * reference element.
936
+ * @see https://floating-ui.com/docs/size
937
+ */
938
+ const size = function (options) {
939
+ if (options === void 0) {
940
+ options = {};
941
+ }
942
+
943
+ return {
944
+ name: 'size',
945
+ options,
946
+
947
+ async fn(middlewareArguments) {
948
+ const {
949
+ placement,
950
+ rects,
951
+ platform,
952
+ elements
953
+ } = middlewareArguments;
954
+ const {
955
+ apply,
956
+ ...detectOverflowOptions
957
+ } = options;
958
+ const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);
959
+ const side = getSide(placement);
960
+ const alignment = getAlignment(placement);
961
+ let heightSide;
962
+ let widthSide;
963
+
964
+ if (side === 'top' || side === 'bottom') {
965
+ heightSide = side;
966
+ widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';
967
+ } else {
968
+ widthSide = side;
969
+ heightSide = alignment === 'end' ? 'top' : 'bottom';
970
+ }
971
+
972
+ const xMin = max$1(overflow.left, 0);
973
+ const xMax = max$1(overflow.right, 0);
974
+ const yMin = max$1(overflow.top, 0);
975
+ const yMax = max$1(overflow.bottom, 0);
976
+ const dimensions = {
977
+ height: rects.floating.height - (['left', 'right'].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max$1(overflow.top, overflow.bottom)) : overflow[heightSide]),
978
+ width: rects.floating.width - (['top', 'bottom'].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max$1(overflow.left, overflow.right)) : overflow[widthSide])
979
+ };
980
+ const prevDimensions = await platform.getDimensions(elements.floating);
981
+ apply == null ? void 0 : apply({ ...dimensions,
982
+ ...rects
983
+ });
984
+ const nextDimensions = await platform.getDimensions(elements.floating);
985
+
986
+ if (prevDimensions.width !== nextDimensions.width || prevDimensions.height !== nextDimensions.height) {
987
+ return {
988
+ reset: {
989
+ rects: true
990
+ }
991
+ };
992
+ }
993
+
994
+ return {};
995
+ }
996
+
997
+ };
998
+ };
999
+
1000
+ /**
1001
+ * Provides improved positioning for inline reference elements that can span
1002
+ * over multiple lines, such as hyperlinks or range selections.
1003
+ * @see https://floating-ui.com/docs/inline
1004
+ */
1005
+ const inline = function (options) {
1006
+ if (options === void 0) {
1007
+ options = {};
1008
+ }
1009
+
1010
+ return {
1011
+ name: 'inline',
1012
+ options,
1013
+
1014
+ async fn(middlewareArguments) {
1015
+ var _await$platform$getCl;
1016
+
1017
+ const {
1018
+ placement,
1019
+ elements,
1020
+ rects,
1021
+ platform,
1022
+ strategy
1023
+ } = middlewareArguments; // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a
1024
+ // ClientRect's bounds, despite the event listener being triggered. A
1025
+ // padding of 2 seems to handle this issue.
1026
+
1027
+ const {
1028
+ padding = 2,
1029
+ x,
1030
+ y
1031
+ } = options;
1032
+ const fallback = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
1033
+ rect: rects.reference,
1034
+ offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),
1035
+ strategy
1036
+ }) : rects.reference);
1037
+ const clientRects = (_await$platform$getCl = await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) != null ? _await$platform$getCl : [];
1038
+ const paddingObject = getSideObjectFromPadding(padding);
1039
+
1040
+ function getBoundingClientRect() {
1041
+ // There are two rects and they are disjoined
1042
+ if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {
1043
+ var _clientRects$find;
1044
+
1045
+ // Find the first rect in which the point is fully inside
1046
+ return (_clientRects$find = clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom)) != null ? _clientRects$find : fallback;
1047
+ } // There are 2 or more connected rects
1048
+
1049
+
1050
+ if (clientRects.length >= 2) {
1051
+ if (getMainAxisFromPlacement(placement) === 'x') {
1052
+ const firstRect = clientRects[0];
1053
+ const lastRect = clientRects[clientRects.length - 1];
1054
+ const isTop = getSide(placement) === 'top';
1055
+ const top = firstRect.top;
1056
+ const bottom = lastRect.bottom;
1057
+ const left = isTop ? firstRect.left : lastRect.left;
1058
+ const right = isTop ? firstRect.right : lastRect.right;
1059
+ const width = right - left;
1060
+ const height = bottom - top;
1061
+ return {
1062
+ top,
1063
+ bottom,
1064
+ left,
1065
+ right,
1066
+ width,
1067
+ height,
1068
+ x: left,
1069
+ y: top
1070
+ };
1071
+ }
1072
+
1073
+ const isLeftSide = getSide(placement) === 'left';
1074
+ const maxRight = max$1(...clientRects.map(rect => rect.right));
1075
+ const minLeft = min$1(...clientRects.map(rect => rect.left));
1076
+ const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);
1077
+ const top = measureRects[0].top;
1078
+ const bottom = measureRects[measureRects.length - 1].bottom;
1079
+ const left = minLeft;
1080
+ const right = maxRight;
1081
+ const width = right - left;
1082
+ const height = bottom - top;
1083
+ return {
1084
+ top,
1085
+ bottom,
1086
+ left,
1087
+ right,
1088
+ width,
1089
+ height,
1090
+ x: left,
1091
+ y: top
1092
+ };
1093
+ }
1094
+
1095
+ return fallback;
1096
+ }
1097
+
1098
+ const resetRects = await platform.getElementRects({
1099
+ reference: {
1100
+ getBoundingClientRect
1101
+ },
1102
+ floating: elements.floating,
1103
+ strategy
1104
+ });
1105
+
1106
+ if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {
1107
+ return {
1108
+ reset: {
1109
+ rects: resetRects
1110
+ }
1111
+ };
1112
+ }
1113
+
1114
+ return {};
1115
+ }
1116
+
1117
+ };
1118
+ };
1119
+
493
1120
  function isWindow(value) {
494
1121
  return (value == null ? void 0 : value.toString()) === '[object Window]';
495
1122
  }