@esri/solutions-components 0.3.6 → 0.3.7

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 (274) hide show
  1. package/dist/cjs/buffer-tools_6.cjs.entry.js +8 -5
  2. package/dist/cjs/calcite-combobox_3.cjs.entry.js +2 -2
  3. package/dist/cjs/calcite-input-message_5.cjs.entry.js +6 -4
  4. package/dist/cjs/calcite-shell-panel_14.cjs.entry.js +2 -2
  5. package/dist/cjs/{csvUtils-83af7ae1.js → csvUtils-34666909.js} +1 -1
  6. package/dist/cjs/{interfaces-772edf61.js → interfaces-17c631bf.js} +1 -1
  7. package/dist/cjs/layer-table.cjs.entry.js +3 -3
  8. package/dist/cjs/map-card.cjs.entry.js +1 -1
  9. package/dist/cjs/{mapViewUtils-55ac76cb.js → mapViewUtils-24d1d859.js} +1 -1
  10. package/dist/cjs/public-notification.cjs.entry.js +16 -10
  11. package/dist/cjs/solution-configuration.cjs.entry.js +2 -2
  12. package/dist/cjs/solution-contents_3.cjs.entry.js +2 -2
  13. package/dist/cjs/{solution-store-39726b81.js → solution-store-2dbab624.js} +1 -1
  14. package/dist/collection/components/buffer-tools/buffer-tools.js +2 -2
  15. package/dist/collection/components/map-draw-tools/map-draw-tools.js +2 -1
  16. package/dist/collection/components/public-notification/public-notification.js +14 -8
  17. package/dist/collection/components/refine-selection/refine-selection.js +4 -2
  18. package/dist/collection/components/refine-selection-tools/refine-selection-tools.css +1 -0
  19. package/dist/collection/components/refine-selection-tools/refine-selection-tools.js +3 -1
  20. package/dist/collection/demos/new-public-notification.html +2 -1
  21. package/dist/collection/utils/interfaces.js +1 -1
  22. package/dist/collection/utils/interfaces.ts +2 -2
  23. package/dist/components/interfaces3.js +1 -1
  24. package/dist/components/map-draw-tools2.js +2 -1
  25. package/dist/components/public-notification.js +14 -8
  26. package/dist/components/refine-selection-tools2.js +4 -2
  27. package/dist/components/refine-selection2.js +4 -2
  28. package/dist/esm/buffer-tools_6.entry.js +8 -5
  29. package/dist/esm/calcite-combobox_3.entry.js +2 -2
  30. package/dist/esm/calcite-input-message_5.entry.js +6 -4
  31. package/dist/esm/calcite-shell-panel_14.entry.js +2 -2
  32. package/dist/esm/{csvUtils-eb231cfb.js → csvUtils-ae3004b9.js} +1 -1
  33. package/dist/esm/{interfaces-3b23a5f9.js → interfaces-d0d83efa.js} +1 -1
  34. package/dist/esm/layer-table.entry.js +3 -3
  35. package/dist/esm/map-card.entry.js +1 -1
  36. package/dist/esm/{mapViewUtils-e5d8a1e1.js → mapViewUtils-541e7a3c.js} +1 -1
  37. package/dist/esm/public-notification.entry.js +16 -10
  38. package/dist/esm/solution-configuration.entry.js +2 -2
  39. package/dist/esm/solution-contents_3.entry.js +2 -2
  40. package/dist/esm/{solution-store-c0bf9200.js → solution-store-41e15f1c.js} +1 -1
  41. package/dist/solutions-components/demos/new-public-notification.html +2 -1
  42. package/dist/solutions-components/p-05e64bd1.js +498 -2
  43. package/dist/solutions-components/p-08a95b33.entry.js +138 -0
  44. package/dist/solutions-components/p-0da5bbdf.entry.js +91 -0
  45. package/dist/solutions-components/p-0ef91144.entry.js +913 -0
  46. package/dist/solutions-components/p-0f523243.entry.js +1916 -0
  47. package/dist/solutions-components/p-11b9510e.entry.js +173 -0
  48. package/dist/solutions-components/p-1b875d94.entry.js +58 -0
  49. package/dist/solutions-components/p-1c567f3a.js +23 -16
  50. package/dist/solutions-components/p-1c883db9.entry.js +43 -0
  51. package/dist/solutions-components/p-1f225056.js +322 -0
  52. package/dist/solutions-components/p-1f499e67.entry.js +72 -0
  53. package/dist/solutions-components/p-20d3d758.entry.js +881 -0
  54. package/dist/solutions-components/p-2274ac9e.entry.js +160 -0
  55. package/dist/solutions-components/p-23ec5ac5.entry.js +93 -0
  56. package/dist/solutions-components/p-2447798c.entry.js +155 -0
  57. package/dist/solutions-components/p-2525e691.entry.js +432 -0
  58. package/dist/solutions-components/p-2561f5b5.js +4092 -0
  59. package/dist/solutions-components/p-29f887c0.entry.js +234 -0
  60. package/dist/solutions-components/p-2a0d8047.entry.js +345 -0
  61. package/dist/solutions-components/p-2c177e6a.entry.js +101 -0
  62. package/dist/solutions-components/p-2e9ed892.js +46 -1
  63. package/dist/solutions-components/p-316f56db.js +219 -2
  64. package/dist/solutions-components/p-327f3ebf.entry.js +98 -0
  65. package/dist/solutions-components/p-356f8b54.entry.js +138 -0
  66. package/dist/solutions-components/p-359c58de.entry.js +172 -0
  67. package/dist/solutions-components/p-37336c0d.entry.js +116 -0
  68. package/dist/solutions-components/p-374a5031.js +105 -2
  69. package/dist/solutions-components/p-39ea6ef4.entry.js +71 -0
  70. package/dist/solutions-components/p-3b010ce1.js +17 -1
  71. package/dist/solutions-components/p-4307dacd.js +194 -1
  72. package/dist/solutions-components/p-44da2507.js +405 -14
  73. package/dist/solutions-components/p-46bdffe8.entry.js +54 -0
  74. package/dist/solutions-components/p-4894bbeb.js +53 -2
  75. package/dist/solutions-components/p-4cd569f1.entry.js +1298 -0
  76. package/dist/solutions-components/p-4d4160f9.entry.js +121 -0
  77. package/dist/solutions-components/p-4e32bf8c.js +482 -1
  78. package/dist/solutions-components/p-4e9cbd32.entry.js +184 -0
  79. package/dist/solutions-components/p-508317b3.js +13 -2
  80. package/dist/solutions-components/p-54697d58.entry.js +198 -0
  81. package/dist/solutions-components/p-55c79103.entry.js +311 -0
  82. package/dist/solutions-components/p-57fd19c0.entry.js +706 -0
  83. package/dist/solutions-components/p-59b48fde.entry.js +443 -0
  84. package/dist/solutions-components/p-60e0e6a0.entry.js +214 -0
  85. package/dist/solutions-components/p-621d0534.entry.js +123 -0
  86. package/dist/solutions-components/p-63f6e8f1.js +14 -1
  87. package/dist/solutions-components/p-66aeec57.entry.js +61 -0
  88. package/dist/solutions-components/p-69834f46.entry.js +618 -0
  89. package/dist/solutions-components/p-6d9da8e5.entry.js +21530 -0
  90. package/dist/solutions-components/p-6e0da576.js +13 -1
  91. package/dist/solutions-components/p-6ec3f294.entry.js +106 -0
  92. package/dist/solutions-components/p-6fe17794.js +9 -1
  93. package/dist/solutions-components/p-7024cb16.entry.js +72 -0
  94. package/dist/solutions-components/p-70535506.entry.js +226 -0
  95. package/dist/solutions-components/p-708a63a8.js +12 -1
  96. package/dist/solutions-components/p-729708a3.js +14 -1
  97. package/dist/solutions-components/p-73e23995.js +6 -1
  98. package/dist/solutions-components/p-74b29d75.entry.js +231 -0
  99. package/dist/solutions-components/p-74b7ee25.entry.js +711 -0
  100. package/dist/solutions-components/p-77182c3a.js +3015 -1
  101. package/dist/solutions-components/p-78b3ef80.entry.js +456 -0
  102. package/dist/solutions-components/p-79709c19.js +60 -3
  103. package/dist/solutions-components/p-7a46ef97.js +181 -2
  104. package/dist/solutions-components/p-7be159e6.entry.js +175 -0
  105. package/dist/solutions-components/p-7d4451c2.entry.js +71 -0
  106. package/dist/solutions-components/p-7daea1df.js +41 -1
  107. package/dist/solutions-components/p-7e39e5ad.entry.js +102 -0
  108. package/dist/solutions-components/p-7fb45059.entry.js +43 -0
  109. package/dist/solutions-components/p-815533de.js +306 -3
  110. package/dist/solutions-components/p-816622ca.entry.js +248 -0
  111. package/dist/solutions-components/p-83166522.js +205 -2
  112. package/dist/solutions-components/p-83bd1991.entry.js +36 -0
  113. package/dist/solutions-components/p-856464d7.entry.js +572 -0
  114. package/dist/solutions-components/p-8c349bad.entry.js +347 -0
  115. package/dist/solutions-components/p-8dccb390.entry.js +1986 -0
  116. package/dist/solutions-components/p-904c185a.entry.js +228 -0
  117. package/dist/solutions-components/p-9092f8b3.entry.js +156 -0
  118. package/dist/solutions-components/p-9371145a.entry.js +477 -0
  119. package/dist/solutions-components/p-93d3119d.js +1948 -1
  120. package/dist/solutions-components/p-95ec8062.entry.js +173 -0
  121. package/dist/solutions-components/p-991ee695.js +109 -1
  122. package/dist/solutions-components/p-9a57dab7.entry.js +213 -0
  123. package/dist/solutions-components/p-9a9955db.js +41 -1
  124. package/dist/solutions-components/p-9c1ebc90.js +35 -16
  125. package/dist/solutions-components/p-9eba5c66.js +399 -3
  126. package/dist/solutions-components/p-a033a507.entry.js +252 -0
  127. package/dist/solutions-components/p-a3773415.entry.js +1132 -0
  128. package/dist/solutions-components/p-a44fe40f.entry.js +94 -0
  129. package/dist/solutions-components/p-a5b1ab03.js +33 -3
  130. package/dist/solutions-components/p-a5b2c13d.entry.js +723 -0
  131. package/dist/solutions-components/p-a6d729b7.entry.js +85 -0
  132. package/dist/solutions-components/p-a8005026.entry.js +565 -0
  133. package/dist/solutions-components/p-a80b3880.js +14 -1
  134. package/dist/solutions-components/p-a89198a3.entry.js +2620 -0
  135. package/dist/solutions-components/p-aa04bd1f.entry.js +95 -0
  136. package/dist/solutions-components/p-aa0a0922.entry.js +80 -0
  137. package/dist/solutions-components/p-ae1fd76b.js +11 -1
  138. package/dist/solutions-components/p-b2cf435e.entry.js +87 -0
  139. package/dist/solutions-components/p-b359dc78.js +41 -1
  140. package/dist/solutions-components/p-b57bc4eb.entry.js +71 -0
  141. package/dist/solutions-components/p-b75cc407.entry.js +145 -0
  142. package/dist/solutions-components/p-b911cb75.entry.js +71 -0
  143. package/dist/solutions-components/p-b965e177.entry.js +335 -0
  144. package/dist/solutions-components/p-b978636e.js +14 -1
  145. package/dist/solutions-components/p-ba10a5c8.entry.js +42 -0
  146. package/dist/solutions-components/p-bd67334c.js +122 -2
  147. package/dist/solutions-components/p-bde20dba.entry.js +212 -0
  148. package/dist/solutions-components/p-be0b5a94.entry.js +248 -0
  149. package/dist/solutions-components/p-c023e6a1.js +2028 -2
  150. package/dist/solutions-components/p-c27b0c2d.entry.js +150 -0
  151. package/dist/solutions-components/p-c579ed60.entry.js +447 -0
  152. package/dist/solutions-components/p-c92bc231.js +101 -2
  153. package/dist/solutions-components/p-cc815aca.js +839 -16
  154. package/dist/solutions-components/p-cc8beabb.entry.js +695 -0
  155. package/dist/solutions-components/p-cdc46c0c.js +1751 -2
  156. package/dist/solutions-components/p-d12e6992.entry.js +118 -0
  157. package/dist/solutions-components/p-d1dfed6b.entry.js +179 -0
  158. package/dist/solutions-components/p-d48a24e6.js +754 -2
  159. package/dist/solutions-components/p-d96ee3ef.entry.js +579 -0
  160. package/dist/solutions-components/p-dbc9a5a8.js +80 -0
  161. package/dist/solutions-components/p-dcdbe712.entry.js +278 -0
  162. package/dist/solutions-components/p-de39206f.entry.js +113 -0
  163. package/dist/solutions-components/p-de5416e8.js +28 -1
  164. package/dist/solutions-components/p-df420d54.entry.js +213 -0
  165. package/dist/solutions-components/p-e3138cf0.entry.js +20 -0
  166. package/dist/solutions-components/p-e4845fec.entry.js +152 -0
  167. package/dist/solutions-components/p-e611d8c8.js +28 -1
  168. package/dist/solutions-components/p-e947d3b0.js +5 -1
  169. package/dist/solutions-components/p-ea534300.js +41 -2
  170. package/dist/solutions-components/p-ec84ee85.entry.js +55 -0
  171. package/dist/solutions-components/p-ed36c637.entry.js +85 -0
  172. package/dist/solutions-components/p-f0add71c.js +74 -0
  173. package/dist/solutions-components/p-f42e014b.js +171 -2
  174. package/dist/solutions-components/p-fc02e7de.entry.js +308 -0
  175. package/dist/solutions-components/p-fc884dd6.js +28 -16
  176. package/dist/solutions-components/p-fcbfa59c.entry.js +181 -0
  177. package/dist/solutions-components/p-fdc5cf5f.entry.js +138 -0
  178. package/dist/solutions-components/solutions-components.esm.js +20 -1
  179. package/dist/solutions-components/utils/interfaces.ts +2 -2
  180. package/dist/types/components/buffer-tools/buffer-tools.d.ts +2 -2
  181. package/dist/types/components/public-notification/public-notification.d.ts +9 -1
  182. package/dist/types/components.d.ts +2 -2
  183. package/package.json +1 -1
  184. package/dist/solutions-components/p-021432b8.entry.js +0 -12
  185. package/dist/solutions-components/p-03440b1e.entry.js +0 -11
  186. package/dist/solutions-components/p-0512635b.entry.js +0 -6
  187. package/dist/solutions-components/p-086ef115.entry.js +0 -29
  188. package/dist/solutions-components/p-0b4bf57f.entry.js +0 -6
  189. package/dist/solutions-components/p-0c088725.entry.js +0 -6
  190. package/dist/solutions-components/p-0f820c08.entry.js +0 -6
  191. package/dist/solutions-components/p-164780a0.entry.js +0 -6
  192. package/dist/solutions-components/p-179a68a0.entry.js +0 -6
  193. package/dist/solutions-components/p-184b5005.entry.js +0 -11
  194. package/dist/solutions-components/p-1d082fee.entry.js +0 -11
  195. package/dist/solutions-components/p-1e6c02a2.entry.js +0 -11
  196. package/dist/solutions-components/p-20a58e62.entry.js +0 -17
  197. package/dist/solutions-components/p-20b2458c.entry.js +0 -11
  198. package/dist/solutions-components/p-245d47c1.entry.js +0 -6
  199. package/dist/solutions-components/p-2cb057a9.entry.js +0 -11
  200. package/dist/solutions-components/p-2cc72806.entry.js +0 -23
  201. package/dist/solutions-components/p-2de1db9c.entry.js +0 -11
  202. package/dist/solutions-components/p-2e9c7055.entry.js +0 -11
  203. package/dist/solutions-components/p-2ed5e6c8.entry.js +0 -11
  204. package/dist/solutions-components/p-3109d940.entry.js +0 -6
  205. package/dist/solutions-components/p-31a8bcfa.entry.js +0 -6
  206. package/dist/solutions-components/p-3649acb3.entry.js +0 -18
  207. package/dist/solutions-components/p-3f88ba73.entry.js +0 -6
  208. package/dist/solutions-components/p-3fa9b3c8.js +0 -36
  209. package/dist/solutions-components/p-40c41709.entry.js +0 -6
  210. package/dist/solutions-components/p-40e963c7.entry.js +0 -11
  211. package/dist/solutions-components/p-40f480da.entry.js +0 -11
  212. package/dist/solutions-components/p-49d5d2d3.entry.js +0 -11
  213. package/dist/solutions-components/p-4f7049a4.entry.js +0 -11
  214. package/dist/solutions-components/p-506e4d78.entry.js +0 -6
  215. package/dist/solutions-components/p-576fdcab.entry.js +0 -6
  216. package/dist/solutions-components/p-5bd0cf34.entry.js +0 -23
  217. package/dist/solutions-components/p-65e177f1.entry.js +0 -6
  218. package/dist/solutions-components/p-67d710c2.entry.js +0 -6
  219. package/dist/solutions-components/p-7268b445.entry.js +0 -11
  220. package/dist/solutions-components/p-75ea4667.entry.js +0 -6
  221. package/dist/solutions-components/p-778c0a36.entry.js +0 -17
  222. package/dist/solutions-components/p-7a22509b.entry.js +0 -12
  223. package/dist/solutions-components/p-7bff51db.entry.js +0 -6
  224. package/dist/solutions-components/p-7d2d0d5d.entry.js +0 -6
  225. package/dist/solutions-components/p-7f0036f1.entry.js +0 -11
  226. package/dist/solutions-components/p-8060fb94.entry.js +0 -6
  227. package/dist/solutions-components/p-80a1b305.entry.js +0 -6
  228. package/dist/solutions-components/p-81eae877.entry.js +0 -12
  229. package/dist/solutions-components/p-84e86b8b.entry.js +0 -6
  230. package/dist/solutions-components/p-851e04ae.entry.js +0 -6
  231. package/dist/solutions-components/p-9106950a.entry.js +0 -11
  232. package/dist/solutions-components/p-979804a4.entry.js +0 -11
  233. package/dist/solutions-components/p-9862baa8.entry.js +0 -11
  234. package/dist/solutions-components/p-9b5a9117.entry.js +0 -12
  235. package/dist/solutions-components/p-9deff0c2.entry.js +0 -6
  236. package/dist/solutions-components/p-9f400eeb.entry.js +0 -6
  237. package/dist/solutions-components/p-a0639ad1.entry.js +0 -11
  238. package/dist/solutions-components/p-a33c044e.entry.js +0 -6
  239. package/dist/solutions-components/p-a516c658.entry.js +0 -6
  240. package/dist/solutions-components/p-aa0ef36d.entry.js +0 -11
  241. package/dist/solutions-components/p-aaccbdf3.entry.js +0 -18
  242. package/dist/solutions-components/p-ab03a5c9.entry.js +0 -11
  243. package/dist/solutions-components/p-ad469b92.entry.js +0 -11
  244. package/dist/solutions-components/p-adc86ac3.entry.js +0 -6
  245. package/dist/solutions-components/p-addc1156.entry.js +0 -11
  246. package/dist/solutions-components/p-ae846934.entry.js +0 -11
  247. package/dist/solutions-components/p-b0572fc4.entry.js +0 -37
  248. package/dist/solutions-components/p-b4e476b7.js +0 -257
  249. package/dist/solutions-components/p-b668daf8.js +0 -21
  250. package/dist/solutions-components/p-b6e6eae1.entry.js +0 -6
  251. package/dist/solutions-components/p-bc317a7f.entry.js +0 -6
  252. package/dist/solutions-components/p-be41429f.js +0 -21
  253. package/dist/solutions-components/p-bf6b6353.entry.js +0 -11
  254. package/dist/solutions-components/p-c2e3dfbb.entry.js +0 -11
  255. package/dist/solutions-components/p-c4afae53.entry.js +0 -12
  256. package/dist/solutions-components/p-c9da1c26.entry.js +0 -6
  257. package/dist/solutions-components/p-cbf8cd49.entry.js +0 -6
  258. package/dist/solutions-components/p-cc1a064a.entry.js +0 -11
  259. package/dist/solutions-components/p-d09a168c.entry.js +0 -6
  260. package/dist/solutions-components/p-d377f913.entry.js +0 -11
  261. package/dist/solutions-components/p-d4cefead.entry.js +0 -37
  262. package/dist/solutions-components/p-d7bc0baf.entry.js +0 -16
  263. package/dist/solutions-components/p-d8968487.entry.js +0 -11
  264. package/dist/solutions-components/p-e00a0b86.entry.js +0 -11
  265. package/dist/solutions-components/p-e9a7ed49.entry.js +0 -11
  266. package/dist/solutions-components/p-ec27e493.entry.js +0 -11
  267. package/dist/solutions-components/p-ed6404eb.entry.js +0 -6
  268. package/dist/solutions-components/p-ef21e195.entry.js +0 -23
  269. package/dist/solutions-components/p-f6068a2d.entry.js +0 -11
  270. package/dist/solutions-components/p-f6c4cff3.entry.js +0 -11
  271. package/dist/solutions-components/p-f847291f.entry.js +0 -6
  272. package/dist/solutions-components/p-f90fd262.entry.js +0 -11
  273. package/dist/solutions-components/p-fc973005.entry.js +0 -6
  274. package/dist/solutions-components/p-ff9fb6bc.entry.js +0 -11
@@ -3,9 +3,1758 @@
3
3
  * Licensed under the Apache License, Version 2.0
4
4
  * http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
- import{c as t,b as n}from"./p-83166522.js";import{d as e}from"./p-4e32bf8c.js";function o(t){return t.split("-")[1]}function r(t){return"y"===t?"height":"width"}function i(t){return t.split("-")[0]}function a(t){return["top","bottom"].includes(i(t))?"x":"y"}function l(t,n,e){let{reference:l,floating:s}=t;const c=l.x+l.width/2-s.width/2,u=l.y+l.height/2-s.height/2,f=a(n),d=r(f),m=l[d]/2-s[d]/2,p="x"===f;let y;switch(i(n)){case"top":y={x:c,y:l.y-s.height};break;case"bottom":y={x:c,y:l.y+l.height};break;case"right":y={x:l.x+l.width,y:u};break;case"left":y={x:l.x-s.width,y:u};break;default:y={x:l.x,y:l.y}}switch(o(n)){case"start":y[f]-=m*(e&&p?-1:1);break;case"end":y[f]+=m*(e&&p?-1:1)}return y}function s(t){return"number"!=typeof t?function(t){return{top:0,right:0,bottom:0,left:0,...t}}(t):{top:t,right:t,bottom:t,left:t}}function c(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height}}async function u(t,n){var e;void 0===n&&(n={});const{x:o,y:r,platform:i,rects:a,elements:l,strategy:u}=t,{boundary:f="clippingAncestors",rootBoundary:d="viewport",elementContext:m="floating",altBoundary:p=!1,padding:y=0}=n,g=s(y),v=l[p?"floating"===m?"reference":"floating":m],x=c(await i.getClippingRect({element:null==(e=await(null==i.isElement?void 0:i.isElement(v)))||e?v:v.contextElement||await(null==i.getDocumentElement?void 0:i.getDocumentElement(l.floating)),boundary:f,rootBoundary:d,strategy:u})),h="floating"===m?{...a.floating,x:o,y:r}:a.reference,w=await(null==i.getOffsetParent?void 0:i.getOffsetParent(l.floating)),b=await(null==i.isElement?void 0:i.isElement(w))&&await(null==i.getScale?void 0:i.getScale(w))||{x:1,y:1},A=c(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({rect:h,offsetParent:w,strategy:u}):h);return{top:(x.top-A.top+g.top)/b.y,bottom:(A.bottom-x.bottom+g.bottom)/b.y,left:(x.left-A.left+g.left)/b.x,right:(A.right-x.right+g.right)/b.x}}const f=Math.min,d=Math.max;function m(t,n,e){return d(t,f(n,e))}const p=["top","right","bottom","left"],y=p.reduce(((t,n)=>t.concat(n,n+"-start",n+"-end")),[]),g={left:"right",right:"left",bottom:"top",top:"bottom"};function v(t){return t.replace(/left|right|bottom|top/g,(t=>g[t]))}function x(t,n,e){void 0===e&&(e=!1);const i=o(t),l=a(t),s=r(l);let c="x"===l?i===(e?"end":"start")?"right":"left":"start"===i?"bottom":"top";return n.reference[s]>n.floating[s]&&(c=v(c)),{main:c,cross:v(c)}}const h={start:"end",end:"start"};function w(t){return t.replace(/start|end/g,(t=>h[t]))}const b=function(t){return void 0===t&&(t={}),{name:"flip",options:t,async fn(n){var e;const{placement:r,middlewareData:a,rects:l,initialPlacement:s,platform:c,elements:f}=n,{mainAxis:d=!0,crossAxis:m=!0,fallbackPlacements:p,fallbackStrategy:y="bestFit",fallbackAxisSideDirection:g="none",flipAlignment:h=!0,...b}=t,A=i(r),P=i(s)===s,k=await(null==c.isRTL?void 0:c.isRTL(f.floating)),R=p||(P||!h?[v(s)]:function(t){const n=v(t);return[w(t),n,w(n)]}(s));p||"none"===g||R.push(...function(t,n,e,r){const a=o(t);let l=function(t,n,e){const o=["left","right"],r=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(t){case"top":case"bottom":return e?n?r:o:n?o:r;case"left":case"right":return n?i:a;default:return[]}}(i(t),"start"===e,r);return a&&(l=l.map((t=>t+"-"+a)),n&&(l=l.concat(l.map(w)))),l}(s,h,g,k));const D=[s,...R],E=await u(n,b),F=[];let M=(null==(e=a.flip)?void 0:e.overflows)||[];if(d&&F.push(E[A]),m){const{main:t,cross:n}=x(r,l,k);F.push(E[t],E[n])}if(M=[...M,{placement:r,overflows:F}],!F.every((t=>t<=0))){var $;const t=((null==($=a.flip)?void 0:$.index)||0)+1,n=D[t];if(n)return{data:{index:t,overflows:M},reset:{placement:n}};let e="bottom";switch(y){case"bestFit":{var O;const t=null==(O=M.map((t=>[t,t.overflows.filter((t=>t>0)).reduce(((t,n)=>t+n),0)])).sort(((t,n)=>t[1]-n[1]))[0])?void 0:O[0].placement;t&&(e=t);break}case"initialPlacement":e=s}if(r!==e)return{reset:{placement:e}}}return{}}}};function A(t,n){return{top:t.top-n.height,right:t.right-n.width,bottom:t.bottom-n.height,left:t.left-n.width}}function P(t){return p.some((n=>t[n]>=0))}const k=function(t){return void 0===t&&(t={}),{name:"hide",options:t,async fn(n){const{strategy:e="referenceHidden",...o}=t,{rects:r}=n;switch(e){case"referenceHidden":{const t=A(await u(n,{...o,elementContext:"reference"}),r.reference);return{data:{referenceHiddenOffsets:t,referenceHidden:P(t)}}}case"escaped":{const t=A(await u(n,{...o,altBoundary:!0}),r.floating);return{data:{escapedOffsets:t,escaped:P(t)}}}default:return{}}}}};function R(t){return t&&t.document&&t.location&&t.alert&&t.setInterval}function D(t){if(null==t)return window;if(!R(t)){const n=t.ownerDocument;return n&&n.defaultView||window}return t}function E(t){return D(t).getComputedStyle(t)}function F(t){return R(t)?"":t?(t.nodeName||"").toLowerCase():""}function M(){const t=navigator.userAgentData;return null!=t&&t.brands?t.brands.map((t=>t.brand+"/"+t.version)).join(" "):navigator.userAgent}function $(t){return t instanceof D(t).HTMLElement}function O(t){return t instanceof D(t).Element}function S(t){return"undefined"!=typeof ShadowRoot&&(t instanceof D(t).ShadowRoot||t instanceof ShadowRoot)}function T(t){const{overflow:n,overflowX:e,overflowY:o,display:r}=E(t);return/auto|scroll|overlay|hidden/.test(n+o+e)&&!["inline","contents"].includes(r)}function j(t){return["table","td","th"].includes(F(t))}function B(t){const n=/firefox/i.test(M()),e=E(t);return"none"!==e.transform||"none"!==e.perspective||n&&"filter"===e.willChange||n&&!!e.filter&&"none"!==e.filter||["transform","perspective"].some((t=>e.willChange.includes(t)))||["paint","layout","strict","content"].some((t=>{const n=e.contain;return null!=n&&n.includes(t)}))}function C(){return!/^((?!chrome|android).)*safari/i.test(M())}function z(t){return["html","body","#document"].includes(F(t))}const L=Math.min,H=Math.max,I=Math.round;function W(t,n,e){var o,r,i,a;void 0===n&&(n=!1),void 0===e&&(e=!1);const l=t.getBoundingClientRect();let s=1,c=1;n&&$(t)&&(s=t.offsetWidth>0&&I(l.width)/t.offsetWidth||1,c=t.offsetHeight>0&&I(l.height)/t.offsetHeight||1);const u=O(t)?D(t):window,f=!C()&&e,d=(l.left+(f&&null!=(o=null==(r=u.visualViewport)?void 0:r.offsetLeft)?o:0))/s,m=(l.top+(f&&null!=(i=null==(a=u.visualViewport)?void 0:a.offsetTop)?i:0))/c,p=l.width/s,y=l.height/c;return{width:p,height:y,top:m,right:d+p,bottom:m+y,left:d,x:d,y:m}}function q(t){return(n=t,(n instanceof D(n).Node?t.ownerDocument:t.document)||window.document).documentElement;var n}function N(t){return O(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function U(t){return W(q(t)).left+N(t).scrollLeft}function V(t,n,e){const o=$(n),r=q(n),i=W(t,o&&function(t){const n=W(t);return I(n.width)!==t.offsetWidth||I(n.height)!==t.offsetHeight}(n),"fixed"===e);let a={scrollLeft:0,scrollTop:0};const l={x:0,y:0};if(o||!o&&"fixed"!==e)if(("body"!==F(n)||T(r))&&(a=N(n)),$(n)){const t=W(n,!0);l.x=t.x+n.clientLeft,l.y=t.y+n.clientTop}else r&&(l.x=U(r));return{x:i.left+a.scrollLeft-l.x,y:i.top+a.scrollTop-l.y,width:i.width,height:i.height}}function X(t){return"html"===F(t)?t:t.assignedSlot||t.parentNode||(S(t)?t.host:null)||q(t)}function Y(t){return $(t)&&"fixed"!==E(t).position?t.offsetParent:null}function G(t){const n=D(t);let e=Y(t);for(;e&&j(e)&&"static"===E(e).position;)e=Y(e);return e&&("html"===F(e)||"body"===F(e)&&"static"===E(e).position&&!B(e))?n:e||function(t){let n=X(t);for(S(n)&&(n=n.host);$(n)&&!z(n);){if(B(n))return n;{const t=n.parentNode;n=S(t)?t.host:t}}return null}(t)||n}function J(t){if($(t))return{width:t.offsetWidth,height:t.offsetHeight};const n=W(t);return{width:n.width,height:n.height}}function K(t){const n=X(t);return z(n)?t.ownerDocument.body:$(n)&&T(n)?n:K(n)}function Q(t,n){var e;void 0===n&&(n=[]);const o=K(t),r=o===(null==(e=t.ownerDocument)?void 0:e.body),i=D(o),a=r?[i].concat(i.visualViewport||[],T(o)?o:[]):o,l=n.concat(a);return r?l:l.concat(Q(a))}function Z(t,n,e){return"viewport"===n?c(function(t,n){const e=D(t),o=q(t),r=e.visualViewport;let i=o.clientWidth,a=o.clientHeight,l=0,s=0;if(r){i=r.width,a=r.height;const t=C();(t||!t&&"fixed"===n)&&(l=r.offsetLeft,s=r.offsetTop)}return{width:i,height:a,x:l,y:s}}(t,e)):O(n)?function(t,n){const e=W(t,!1,"fixed"===n),o=e.top+t.clientTop,r=e.left+t.clientLeft;return{top:o,left:r,x:r,y:o,right:r+t.clientWidth,bottom:o+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}(n,e):c(function(t){var n;const e=q(t),o=N(t),r=null==(n=t.ownerDocument)?void 0:n.body,i=H(e.scrollWidth,e.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),a=H(e.scrollHeight,e.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0);let l=-o.scrollLeft+U(t);const s=-o.scrollTop;return"rtl"===E(r||e).direction&&(l+=H(e.clientWidth,r?r.clientWidth:0)-i),{width:i,height:a,x:l,y:s}}(q(t)))}function _(t){const n=Q(t),e=function(t,n){let e=t;for(;e&&!z(e)&&!n.includes(e)&&(!O(e)||!["absolute","fixed"].includes(E(e).position));){const t=X(e);e=S(t)?t.host:t}return e}(t,n);let o=null;if(e&&$(e)){const t=G(e);T(e)?o=e:$(t)&&(o=t)}return O(o)?n.filter((t=>o&&O(t)&&function(t,n){const e=null==n.getRootNode?void 0:n.getRootNode();if(t.contains(n))return!0;if(e&&S(e)){let e=n;do{if(e&&t===e)return!0;e=e.parentNode||e.host}while(e)}return!1}(t,o)&&"body"!==F(t))):[]}const tt={getClippingRect:function(t){let{element:n,boundary:e,rootBoundary:o,strategy:r}=t;const i=[..."clippingAncestors"===e?_(n):[].concat(e),o],a=i.reduce(((t,e)=>{const o=Z(n,e,r);return t.top=H(o.top,t.top),t.right=L(o.right,t.right),t.bottom=L(o.bottom,t.bottom),t.left=H(o.left,t.left),t}),Z(n,i[0],r));return{width:a.right-a.left,height:a.bottom-a.top,x:a.left,y:a.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{rect:n,offsetParent:e,strategy:o}=t;const r=$(e),i=q(e);if(e===i)return n;let a={scrollLeft:0,scrollTop:0};const l={x:0,y:0};if((r||!r&&"fixed"!==o)&&(("body"!==F(e)||T(i))&&(a=N(e)),$(e))){const t=W(e,!0);l.x=t.x+e.clientLeft,l.y=t.y+e.clientTop}return{...n,x:n.x-a.scrollLeft+l.x,y:n.y-a.scrollTop+l.y}},isElement:O,getDimensions:J,getOffsetParent:G,getDocumentElement:q,getElementRects:t=>{let{reference:n,floating:e,strategy:o}=t;return{reference:V(n,G(e),o),floating:{...J(e),x:0,y:0}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>"rtl"===E(t).direction};const nt={floatingUINonChromiumPositioningFix:!0,...globalThis.calciteComponentsConfig},et=async function(){if(nt.floatingUINonChromiumPositioningFix&&/firefox|safari/i.test(function(){const t=navigator.userAgentData;return(null==t?void 0:t.brands)?t.brands.map((t=>`${t.brand}/${t.version}`)).join(" "):navigator.userAgent}())){const{getClippingRect:t,getElementRects:n,getOffsetParent:e}=await import("./p-05e64bd1.js");tt.getClippingRect=t,tt.getOffsetParent=e,tt.getElementRects=n}}(),ot="data-placement",rt=["top","bottom","right","left","top-start","top-end","bottom-start","bottom-end","right-start","right-end","left-start","left-end"],it="bottom-start",at={animation:"calcite-floating-ui-anim",animationActive:"calcite-floating-ui-anim--active"};
6
+ import { c as closestElementCrossShadowBoundary, b as getElementDir } from './p-83166522.js';
7
+ import { d as debounce } from './p-4e32bf8c.js';
8
+
9
+ function getAlignment(placement) {
10
+ return placement.split('-')[1];
11
+ }
12
+
13
+ function getLengthFromAxis(axis) {
14
+ return axis === 'y' ? 'height' : 'width';
15
+ }
16
+
17
+ function getSide(placement) {
18
+ return placement.split('-')[0];
19
+ }
20
+
21
+ function getMainAxisFromPlacement(placement) {
22
+ return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';
23
+ }
24
+
25
+ function computeCoordsFromPlacement(_ref, placement, rtl) {
26
+ let {
27
+ reference,
28
+ floating
29
+ } = _ref;
30
+ const commonX = reference.x + reference.width / 2 - floating.width / 2;
31
+ const commonY = reference.y + reference.height / 2 - floating.height / 2;
32
+ const mainAxis = getMainAxisFromPlacement(placement);
33
+ const length = getLengthFromAxis(mainAxis);
34
+ const commonAlign = reference[length] / 2 - floating[length] / 2;
35
+ const side = getSide(placement);
36
+ const isVertical = mainAxis === 'x';
37
+ let coords;
38
+ switch (side) {
39
+ case 'top':
40
+ coords = {
41
+ x: commonX,
42
+ y: reference.y - floating.height
43
+ };
44
+ break;
45
+ case 'bottom':
46
+ coords = {
47
+ x: commonX,
48
+ y: reference.y + reference.height
49
+ };
50
+ break;
51
+ case 'right':
52
+ coords = {
53
+ x: reference.x + reference.width,
54
+ y: commonY
55
+ };
56
+ break;
57
+ case 'left':
58
+ coords = {
59
+ x: reference.x - floating.width,
60
+ y: commonY
61
+ };
62
+ break;
63
+ default:
64
+ coords = {
65
+ x: reference.x,
66
+ y: reference.y
67
+ };
68
+ }
69
+ switch (getAlignment(placement)) {
70
+ case 'start':
71
+ coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
72
+ break;
73
+ case 'end':
74
+ coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
75
+ break;
76
+ }
77
+ return coords;
78
+ }
79
+
80
+ /**
81
+ * Computes the `x` and `y` coordinates that will place the floating element
82
+ * next to a reference element when it is given a certain positioning strategy.
83
+ *
84
+ * This export does not have any `platform` interface logic. You will need to
85
+ * write one for the platform you are using Floating UI with.
86
+ */
87
+ const computePosition$1 = async (reference, floating, config) => {
88
+ const {
89
+ placement = 'bottom',
90
+ strategy = 'absolute',
91
+ middleware = [],
92
+ platform
93
+ } = config;
94
+ const validMiddleware = middleware.filter(Boolean);
95
+ const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
96
+ let rects = await platform.getElementRects({
97
+ reference,
98
+ floating,
99
+ strategy
100
+ });
101
+ let {
102
+ x,
103
+ y
104
+ } = computeCoordsFromPlacement(rects, placement, rtl);
105
+ let statefulPlacement = placement;
106
+ let middlewareData = {};
107
+ let resetCount = 0;
108
+ for (let i = 0; i < validMiddleware.length; i++) {
109
+ const {
110
+ name,
111
+ fn
112
+ } = validMiddleware[i];
113
+ const {
114
+ x: nextX,
115
+ y: nextY,
116
+ data,
117
+ reset
118
+ } = await fn({
119
+ x,
120
+ y,
121
+ initialPlacement: placement,
122
+ placement: statefulPlacement,
123
+ strategy,
124
+ middlewareData,
125
+ rects,
126
+ platform,
127
+ elements: {
128
+ reference,
129
+ floating
130
+ }
131
+ });
132
+ x = nextX != null ? nextX : x;
133
+ y = nextY != null ? nextY : y;
134
+ middlewareData = {
135
+ ...middlewareData,
136
+ [name]: {
137
+ ...middlewareData[name],
138
+ ...data
139
+ }
140
+ };
141
+ if (reset && resetCount <= 50) {
142
+ resetCount++;
143
+ if (typeof reset === 'object') {
144
+ if (reset.placement) {
145
+ statefulPlacement = reset.placement;
146
+ }
147
+ if (reset.rects) {
148
+ rects = reset.rects === true ? await platform.getElementRects({
149
+ reference,
150
+ floating,
151
+ strategy
152
+ }) : reset.rects;
153
+ }
154
+ ({
155
+ x,
156
+ y
157
+ } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
158
+ }
159
+ i = -1;
160
+ continue;
161
+ }
162
+ }
163
+ return {
164
+ x,
165
+ y,
166
+ placement: statefulPlacement,
167
+ strategy,
168
+ middlewareData
169
+ };
170
+ };
171
+
172
+ function expandPaddingObject(padding) {
173
+ return {
174
+ top: 0,
175
+ right: 0,
176
+ bottom: 0,
177
+ left: 0,
178
+ ...padding
179
+ };
180
+ }
181
+
182
+ function getSideObjectFromPadding(padding) {
183
+ return typeof padding !== 'number' ? expandPaddingObject(padding) : {
184
+ top: padding,
185
+ right: padding,
186
+ bottom: padding,
187
+ left: padding
188
+ };
189
+ }
190
+
191
+ function rectToClientRect(rect) {
192
+ return {
193
+ ...rect,
194
+ top: rect.y,
195
+ left: rect.x,
196
+ right: rect.x + rect.width,
197
+ bottom: rect.y + rect.height
198
+ };
199
+ }
200
+
201
+ /**
202
+ * Resolves with an object of overflow side offsets that determine how much the
203
+ * element is overflowing a given clipping boundary.
204
+ * - positive = overflowing the boundary by that number of pixels
205
+ * - negative = how many pixels left before it will overflow
206
+ * - 0 = lies flush with the boundary
207
+ * @see https://floating-ui.com/docs/detectOverflow
208
+ */
209
+ async function detectOverflow(middlewareArguments, options) {
210
+ var _await$platform$isEle;
211
+ if (options === void 0) {
212
+ options = {};
213
+ }
214
+ const {
215
+ x,
216
+ y,
217
+ platform,
218
+ rects,
219
+ elements,
220
+ strategy
221
+ } = middlewareArguments;
222
+ const {
223
+ boundary = 'clippingAncestors',
224
+ rootBoundary = 'viewport',
225
+ elementContext = 'floating',
226
+ altBoundary = false,
227
+ padding = 0
228
+ } = options;
229
+ const paddingObject = getSideObjectFromPadding(padding);
230
+ const altContext = elementContext === 'floating' ? 'reference' : 'floating';
231
+ const element = elements[altBoundary ? altContext : elementContext];
232
+ const clippingClientRect = rectToClientRect(await platform.getClippingRect({
233
+ element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
234
+ boundary,
235
+ rootBoundary,
236
+ strategy
237
+ }));
238
+ const rect = elementContext === 'floating' ? {
239
+ ...rects.floating,
240
+ x,
241
+ y
242
+ } : rects.reference;
243
+ const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
244
+ const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
245
+ x: 1,
246
+ y: 1
247
+ } : {
248
+ x: 1,
249
+ y: 1
250
+ };
251
+ const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
252
+ rect,
253
+ offsetParent,
254
+ strategy
255
+ }) : rect);
256
+ return {
257
+ top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
258
+ bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
259
+ left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
260
+ right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
261
+ };
262
+ }
263
+
264
+ const min$1 = Math.min;
265
+ const max$1 = Math.max;
266
+
267
+ function within(min$1$1, value, max$1$1) {
268
+ return max$1(min$1$1, min$1(value, max$1$1));
269
+ }
270
+
271
+ /**
272
+ * Positions an inner element of the floating element such that it is centered
273
+ * to the reference element.
274
+ * @see https://floating-ui.com/docs/arrow
275
+ */
276
+ const arrow = options => ({
277
+ name: 'arrow',
278
+ options,
279
+ async fn(middlewareArguments) {
280
+ // Since `element` is required, we don't Partial<> the type.
281
+ const {
282
+ element,
283
+ padding = 0
284
+ } = options || {};
285
+ const {
286
+ x,
287
+ y,
288
+ placement,
289
+ rects,
290
+ platform
291
+ } = middlewareArguments;
292
+ if (element == null) {
293
+ return {};
294
+ }
295
+ const paddingObject = getSideObjectFromPadding(padding);
296
+ const coords = {
297
+ x,
298
+ y
299
+ };
300
+ const axis = getMainAxisFromPlacement(placement);
301
+ const length = getLengthFromAxis(axis);
302
+ const arrowDimensions = await platform.getDimensions(element);
303
+ const minProp = axis === 'y' ? 'top' : 'left';
304
+ const maxProp = axis === 'y' ? 'bottom' : 'right';
305
+ const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
306
+ const startDiff = coords[axis] - rects.reference[axis];
307
+ const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));
308
+ let clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
309
+ if (clientSize === 0) {
310
+ clientSize = rects.floating[length];
311
+ }
312
+ const centerToReference = endDiff / 2 - startDiff / 2;
313
+
314
+ // Make sure the arrow doesn't overflow the floating element if the center
315
+ // point is outside the floating element's bounds.
316
+ const min = paddingObject[minProp];
317
+ const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];
318
+ const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
319
+ const offset = within(min, center, max);
320
+
321
+ // If the reference is small enough that the arrow's padding causes it to
322
+ // to point to nothing for an aligned placement, adjust the offset of the
323
+ // floating element itself. This stops `shift()` from taking action, but can
324
+ // be worked around by calling it again after the `arrow()` if desired.
325
+ const shouldAddOffset = getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min ? paddingObject[minProp] : paddingObject[maxProp]) - arrowDimensions[length] / 2 < 0;
326
+ const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;
327
+ return {
328
+ [axis]: coords[axis] - alignmentOffset,
329
+ data: {
330
+ [axis]: offset,
331
+ centerOffset: center - offset
332
+ }
333
+ };
334
+ }
335
+ });
336
+
337
+ const sides = ['top', 'right', 'bottom', 'left'];
338
+ const allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + "-start", side + "-end"), []);
339
+
340
+ const oppositeSideMap = {
341
+ left: 'right',
342
+ right: 'left',
343
+ bottom: 'top',
344
+ top: 'bottom'
345
+ };
346
+ function getOppositePlacement(placement) {
347
+ return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);
348
+ }
349
+
350
+ function getAlignmentSides(placement, rects, rtl) {
351
+ if (rtl === void 0) {
352
+ rtl = false;
353
+ }
354
+ const alignment = getAlignment(placement);
355
+ const mainAxis = getMainAxisFromPlacement(placement);
356
+ const length = getLengthFromAxis(mainAxis);
357
+ let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';
358
+ if (rects.reference[length] > rects.floating[length]) {
359
+ mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
360
+ }
361
+ return {
362
+ main: mainAlignmentSide,
363
+ cross: getOppositePlacement(mainAlignmentSide)
364
+ };
365
+ }
366
+
367
+ const oppositeAlignmentMap = {
368
+ start: 'end',
369
+ end: 'start'
370
+ };
371
+ function getOppositeAlignmentPlacement(placement) {
372
+ return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
373
+ }
374
+
375
+ function getPlacementList(alignment, autoAlignment, allowedPlacements) {
376
+ const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);
377
+ return allowedPlacementsSortedByAlignment.filter(placement => {
378
+ if (alignment) {
379
+ return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);
380
+ }
381
+ return true;
382
+ });
383
+ }
384
+ /**
385
+ * Automatically chooses the `placement` which has the most space available.
386
+ * @see https://floating-ui.com/docs/autoPlacement
387
+ */
388
+ const autoPlacement = function (options) {
389
+ if (options === void 0) {
390
+ options = {};
391
+ }
392
+ return {
393
+ name: 'autoPlacement',
394
+ options,
395
+ async fn(middlewareArguments) {
396
+ var _middlewareData$autoP, _middlewareData$autoP2, _placementsSortedByLe;
397
+ const {
398
+ rects,
399
+ middlewareData,
400
+ placement,
401
+ platform,
402
+ elements
403
+ } = middlewareArguments;
404
+ const {
405
+ alignment,
406
+ allowedPlacements = allPlacements,
407
+ autoAlignment = true,
408
+ ...detectOverflowOptions
409
+ } = options;
410
+ const placements = alignment !== undefined || allowedPlacements === allPlacements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;
411
+ const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);
412
+ const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;
413
+ const currentPlacement = placements[currentIndex];
414
+ if (currentPlacement == null) {
415
+ return {};
416
+ }
417
+ const {
418
+ main,
419
+ cross
420
+ } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));
421
+
422
+ // Make `computeCoords` start from the right place.
423
+ if (placement !== currentPlacement) {
424
+ return {
425
+ reset: {
426
+ placement: placements[0]
427
+ }
428
+ };
429
+ }
430
+ const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];
431
+ const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {
432
+ placement: currentPlacement,
433
+ overflows: currentOverflows
434
+ }];
435
+ const nextPlacement = placements[currentIndex + 1];
436
+
437
+ // There are more placements to check.
438
+ if (nextPlacement) {
439
+ return {
440
+ data: {
441
+ index: currentIndex + 1,
442
+ overflows: allOverflows
443
+ },
444
+ reset: {
445
+ placement: nextPlacement
446
+ }
447
+ };
448
+ }
449
+ const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);
450
+ const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {
451
+ let {
452
+ overflows
453
+ } = _ref;
454
+ return overflows.every(overflow => overflow <= 0);
455
+ })) == null ? void 0 : _placementsSortedByLe.placement;
456
+ const resetPlacement = placementThatFitsOnAllSides || placementsSortedByLeastOverflow[0].placement;
457
+ if (resetPlacement !== placement) {
458
+ return {
459
+ data: {
460
+ index: currentIndex + 1,
461
+ overflows: allOverflows
462
+ },
463
+ reset: {
464
+ placement: resetPlacement
465
+ }
466
+ };
467
+ }
468
+ return {};
469
+ }
470
+ };
471
+ };
472
+
473
+ function getExpandedPlacements(placement) {
474
+ const oppositePlacement = getOppositePlacement(placement);
475
+ return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
476
+ }
477
+
478
+ function getSideList(side, isStart, rtl) {
479
+ const lr = ['left', 'right'];
480
+ const rl = ['right', 'left'];
481
+ const tb = ['top', 'bottom'];
482
+ const bt = ['bottom', 'top'];
483
+ switch (side) {
484
+ case 'top':
485
+ case 'bottom':
486
+ if (rtl) return isStart ? rl : lr;
487
+ return isStart ? lr : rl;
488
+ case 'left':
489
+ case 'right':
490
+ return isStart ? tb : bt;
491
+ default:
492
+ return [];
493
+ }
494
+ }
495
+ function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
496
+ const alignment = getAlignment(placement);
497
+ let list = getSideList(getSide(placement), direction === 'start', rtl);
498
+ if (alignment) {
499
+ list = list.map(side => side + "-" + alignment);
500
+ if (flipAlignment) {
501
+ list = list.concat(list.map(getOppositeAlignmentPlacement));
502
+ }
503
+ }
504
+ return list;
505
+ }
506
+
507
+ /**
508
+ * Changes the placement of the floating element to one that will fit if the
509
+ * initially specified `placement` does not.
510
+ * @see https://floating-ui.com/docs/flip
511
+ */
512
+ const flip = function (options) {
513
+ if (options === void 0) {
514
+ options = {};
515
+ }
516
+ return {
517
+ name: 'flip',
518
+ options,
519
+ async fn(middlewareArguments) {
520
+ var _middlewareData$flip;
521
+ const {
522
+ placement,
523
+ middlewareData,
524
+ rects,
525
+ initialPlacement,
526
+ platform,
527
+ elements
528
+ } = middlewareArguments;
529
+ const {
530
+ mainAxis: checkMainAxis = true,
531
+ crossAxis: checkCrossAxis = true,
532
+ fallbackPlacements: specifiedFallbackPlacements,
533
+ fallbackStrategy = 'bestFit',
534
+ fallbackAxisSideDirection = 'none',
535
+ flipAlignment = true,
536
+ ...detectOverflowOptions
537
+ } = options;
538
+ const side = getSide(placement);
539
+ const isBasePlacement = getSide(initialPlacement) === initialPlacement;
540
+ const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
541
+ const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
542
+ if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {
543
+ fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
544
+ }
545
+ const placements = [initialPlacement, ...fallbackPlacements];
546
+ const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);
547
+ const overflows = [];
548
+ let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
549
+ if (checkMainAxis) {
550
+ overflows.push(overflow[side]);
551
+ }
552
+ if (checkCrossAxis) {
553
+ const {
554
+ main,
555
+ cross
556
+ } = getAlignmentSides(placement, rects, rtl);
557
+ overflows.push(overflow[main], overflow[cross]);
558
+ }
559
+ overflowsData = [...overflowsData, {
560
+ placement,
561
+ overflows
562
+ }];
563
+
564
+ // One or more sides is overflowing.
565
+ if (!overflows.every(side => side <= 0)) {
566
+ var _middlewareData$flip2;
567
+ const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
568
+ const nextPlacement = placements[nextIndex];
569
+ if (nextPlacement) {
570
+ // Try next placement and re-run the lifecycle.
571
+ return {
572
+ data: {
573
+ index: nextIndex,
574
+ overflows: overflowsData
575
+ },
576
+ reset: {
577
+ placement: nextPlacement
578
+ }
579
+ };
580
+ }
581
+ let resetPlacement = 'bottom';
582
+ switch (fallbackStrategy) {
583
+ case 'bestFit':
584
+ {
585
+ var _overflowsData$map$so;
586
+ const placement = (_overflowsData$map$so = overflowsData.map(d => [d, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0].placement;
587
+ if (placement) {
588
+ resetPlacement = placement;
589
+ }
590
+ break;
591
+ }
592
+ case 'initialPlacement':
593
+ resetPlacement = initialPlacement;
594
+ break;
595
+ }
596
+ if (placement !== resetPlacement) {
597
+ return {
598
+ reset: {
599
+ placement: resetPlacement
600
+ }
601
+ };
602
+ }
603
+ }
604
+ return {};
605
+ }
606
+ };
607
+ };
608
+
609
+ function getSideOffsets(overflow, rect) {
610
+ return {
611
+ top: overflow.top - rect.height,
612
+ right: overflow.right - rect.width,
613
+ bottom: overflow.bottom - rect.height,
614
+ left: overflow.left - rect.width
615
+ };
616
+ }
617
+ function isAnySideFullyClipped(overflow) {
618
+ return sides.some(side => overflow[side] >= 0);
619
+ }
620
+ /**
621
+ * Provides data to hide the floating element in applicable situations, such as
622
+ * when it is not in the same clipping context as the reference element.
623
+ * @see https://floating-ui.com/docs/hide
624
+ */
625
+ const hide = function (options) {
626
+ if (options === void 0) {
627
+ options = {};
628
+ }
629
+ return {
630
+ name: 'hide',
631
+ options,
632
+ async fn(middlewareArguments) {
633
+ const {
634
+ strategy = 'referenceHidden',
635
+ ...detectOverflowOptions
636
+ } = options;
637
+ const {
638
+ rects
639
+ } = middlewareArguments;
640
+ switch (strategy) {
641
+ case 'referenceHidden':
642
+ {
643
+ const overflow = await detectOverflow(middlewareArguments, {
644
+ ...detectOverflowOptions,
645
+ elementContext: 'reference'
646
+ });
647
+ const offsets = getSideOffsets(overflow, rects.reference);
648
+ return {
649
+ data: {
650
+ referenceHiddenOffsets: offsets,
651
+ referenceHidden: isAnySideFullyClipped(offsets)
652
+ }
653
+ };
654
+ }
655
+ case 'escaped':
656
+ {
657
+ const overflow = await detectOverflow(middlewareArguments, {
658
+ ...detectOverflowOptions,
659
+ altBoundary: true
660
+ });
661
+ const offsets = getSideOffsets(overflow, rects.floating);
662
+ return {
663
+ data: {
664
+ escapedOffsets: offsets,
665
+ escaped: isAnySideFullyClipped(offsets)
666
+ }
667
+ };
668
+ }
669
+ default:
670
+ {
671
+ return {};
672
+ }
673
+ }
674
+ }
675
+ };
676
+ };
677
+
678
+ async function convertValueToCoords(middlewareArguments, value) {
679
+ const {
680
+ placement,
681
+ platform,
682
+ elements
683
+ } = middlewareArguments;
684
+ const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
685
+ const side = getSide(placement);
686
+ const alignment = getAlignment(placement);
687
+ const isVertical = getMainAxisFromPlacement(placement) === 'x';
688
+ const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;
689
+ const crossAxisMulti = rtl && isVertical ? -1 : 1;
690
+ const rawValue = typeof value === 'function' ? value(middlewareArguments) : value;
691
+
692
+ // eslint-disable-next-line prefer-const
693
+ let {
694
+ mainAxis,
695
+ crossAxis,
696
+ alignmentAxis
697
+ } = typeof rawValue === 'number' ? {
698
+ mainAxis: rawValue,
699
+ crossAxis: 0,
700
+ alignmentAxis: null
701
+ } : {
702
+ mainAxis: 0,
703
+ crossAxis: 0,
704
+ alignmentAxis: null,
705
+ ...rawValue
706
+ };
707
+ if (alignment && typeof alignmentAxis === 'number') {
708
+ crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;
709
+ }
710
+ return isVertical ? {
711
+ x: crossAxis * crossAxisMulti,
712
+ y: mainAxis * mainAxisMulti
713
+ } : {
714
+ x: mainAxis * mainAxisMulti,
715
+ y: crossAxis * crossAxisMulti
716
+ };
717
+ }
718
+
719
+ /**
720
+ * Displaces the floating element from its reference element.
721
+ * @see https://floating-ui.com/docs/offset
722
+ */
723
+ const offset = function (value) {
724
+ if (value === void 0) {
725
+ value = 0;
726
+ }
727
+ return {
728
+ name: 'offset',
729
+ options: value,
730
+ async fn(middlewareArguments) {
731
+ const {
732
+ x,
733
+ y
734
+ } = middlewareArguments;
735
+ const diffCoords = await convertValueToCoords(middlewareArguments, value);
736
+ return {
737
+ x: x + diffCoords.x,
738
+ y: y + diffCoords.y,
739
+ data: diffCoords
740
+ };
741
+ }
742
+ };
743
+ };
744
+
745
+ function getCrossAxis(axis) {
746
+ return axis === 'x' ? 'y' : 'x';
747
+ }
748
+
749
+ /**
750
+ * Shifts the floating element in order to keep it in view when it will overflow
751
+ * a clipping boundary.
752
+ * @see https://floating-ui.com/docs/shift
753
+ */
754
+ const shift = function (options) {
755
+ if (options === void 0) {
756
+ options = {};
757
+ }
758
+ return {
759
+ name: 'shift',
760
+ options,
761
+ async fn(middlewareArguments) {
762
+ const {
763
+ x,
764
+ y,
765
+ placement
766
+ } = middlewareArguments;
767
+ const {
768
+ mainAxis: checkMainAxis = true,
769
+ crossAxis: checkCrossAxis = false,
770
+ limiter = {
771
+ fn: _ref => {
772
+ let {
773
+ x,
774
+ y
775
+ } = _ref;
776
+ return {
777
+ x,
778
+ y
779
+ };
780
+ }
781
+ },
782
+ ...detectOverflowOptions
783
+ } = options;
784
+ const coords = {
785
+ x,
786
+ y
787
+ };
788
+ const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);
789
+ const mainAxis = getMainAxisFromPlacement(getSide(placement));
790
+ const crossAxis = getCrossAxis(mainAxis);
791
+ let mainAxisCoord = coords[mainAxis];
792
+ let crossAxisCoord = coords[crossAxis];
793
+ if (checkMainAxis) {
794
+ const minSide = mainAxis === 'y' ? 'top' : 'left';
795
+ const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
796
+ const min = mainAxisCoord + overflow[minSide];
797
+ const max = mainAxisCoord - overflow[maxSide];
798
+ mainAxisCoord = within(min, mainAxisCoord, max);
799
+ }
800
+ if (checkCrossAxis) {
801
+ const minSide = crossAxis === 'y' ? 'top' : 'left';
802
+ const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
803
+ const min = crossAxisCoord + overflow[minSide];
804
+ const max = crossAxisCoord - overflow[maxSide];
805
+ crossAxisCoord = within(min, crossAxisCoord, max);
806
+ }
807
+ const limitedCoords = limiter.fn({
808
+ ...middlewareArguments,
809
+ [mainAxis]: mainAxisCoord,
810
+ [crossAxis]: crossAxisCoord
811
+ });
812
+ return {
813
+ ...limitedCoords,
814
+ data: {
815
+ x: limitedCoords.x - x,
816
+ y: limitedCoords.y - y
817
+ }
818
+ };
819
+ }
820
+ };
821
+ };
822
+
823
+ function isWindow(value) {
824
+ return value && value.document && value.location && value.alert && value.setInterval;
825
+ }
826
+ function getWindow(node) {
827
+ if (node == null) {
828
+ return window;
829
+ }
830
+
831
+ if (!isWindow(node)) {
832
+ const ownerDocument = node.ownerDocument;
833
+ return ownerDocument ? ownerDocument.defaultView || window : window;
834
+ }
835
+
836
+ return node;
837
+ }
838
+
839
+ function getComputedStyle(element) {
840
+ return getWindow(element).getComputedStyle(element);
841
+ }
842
+
843
+ function getNodeName(node) {
844
+ return isWindow(node) ? '' : node ? (node.nodeName || '').toLowerCase() : '';
845
+ }
846
+
847
+ function getUAString() {
848
+ const uaData = navigator.userAgentData;
849
+
850
+ if (uaData != null && uaData.brands) {
851
+ return uaData.brands.map(item => item.brand + "/" + item.version).join(' ');
852
+ }
853
+
854
+ return navigator.userAgent;
855
+ }
856
+
857
+ function isHTMLElement(value) {
858
+ return value instanceof getWindow(value).HTMLElement;
859
+ }
860
+ function isElement(value) {
861
+ return value instanceof getWindow(value).Element;
862
+ }
863
+ function isNode(value) {
864
+ return value instanceof getWindow(value).Node;
865
+ }
866
+ function isShadowRoot(node) {
867
+ // Browsers without `ShadowRoot` support
868
+ if (typeof ShadowRoot === 'undefined') {
869
+ return false;
870
+ }
871
+
872
+ const OwnElement = getWindow(node).ShadowRoot;
873
+ return node instanceof OwnElement || node instanceof ShadowRoot;
874
+ }
875
+ function isOverflowElement(element) {
876
+ // Firefox wants us to check `-x` and `-y` variations as well
877
+ const {
878
+ overflow,
879
+ overflowX,
880
+ overflowY,
881
+ display
882
+ } = getComputedStyle(element);
883
+ return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);
884
+ }
885
+ function isTableElement(element) {
886
+ return ['table', 'td', 'th'].includes(getNodeName(element));
887
+ }
888
+ function isContainingBlock(element) {
889
+ // TODO: Try and use feature detection here instead
890
+ const isFirefox = /firefox/i.test(getUAString());
891
+ const css = getComputedStyle(element); // This is non-exhaustive but covers the most common CSS properties that
892
+ // create a containing block.
893
+ // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
894
+
895
+ return css.transform !== 'none' || css.perspective !== 'none' || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective'].some(value => css.willChange.includes(value)) || ['paint', 'layout', 'strict', 'content'].some( // TS 4.1 compat
896
+ value => {
897
+ const contain = css.contain;
898
+ return contain != null ? contain.includes(value) : false;
899
+ });
900
+ }
901
+ function isLayoutViewport() {
902
+ // Not Safari
903
+ return !/^((?!chrome|android).)*safari/i.test(getUAString()); // Feature detection for this fails in various ways
904
+ // • Always-visible scrollbar or not
905
+ // • Width of <html>, etc.
906
+ // const vV = win.visualViewport;
907
+ // return vV ? Math.abs(win.innerWidth / vV.scale - vV.width) < 0.5 : true;
908
+ }
909
+ function isLastTraversableNode(node) {
910
+ return ['html', 'body', '#document'].includes(getNodeName(node));
911
+ }
912
+
913
+ const min = Math.min;
914
+ const max = Math.max;
915
+ const round = Math.round;
916
+
917
+ function getBoundingClientRect(element, includeScale, isFixedStrategy) {
918
+ var _win$visualViewport$o, _win$visualViewport, _win$visualViewport$o2, _win$visualViewport2;
919
+
920
+ if (includeScale === void 0) {
921
+ includeScale = false;
922
+ }
923
+
924
+ if (isFixedStrategy === void 0) {
925
+ isFixedStrategy = false;
926
+ }
927
+
928
+ const clientRect = element.getBoundingClientRect();
929
+ let scaleX = 1;
930
+ let scaleY = 1;
931
+
932
+ if (includeScale && isHTMLElement(element)) {
933
+ scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
934
+ scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
935
+ }
936
+
937
+ const win = isElement(element) ? getWindow(element) : window;
938
+ const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
939
+ const x = (clientRect.left + (addVisualOffsets ? (_win$visualViewport$o = (_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) != null ? _win$visualViewport$o : 0 : 0)) / scaleX;
940
+ const y = (clientRect.top + (addVisualOffsets ? (_win$visualViewport$o2 = (_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) != null ? _win$visualViewport$o2 : 0 : 0)) / scaleY;
941
+ const width = clientRect.width / scaleX;
942
+ const height = clientRect.height / scaleY;
943
+ return {
944
+ width,
945
+ height,
946
+ top: y,
947
+ right: x + width,
948
+ bottom: y + height,
949
+ left: x,
950
+ x,
951
+ y
952
+ };
953
+ }
954
+
955
+ function getDocumentElement(node) {
956
+ return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;
957
+ }
958
+
959
+ function getNodeScroll(element) {
960
+ if (isElement(element)) {
961
+ return {
962
+ scrollLeft: element.scrollLeft,
963
+ scrollTop: element.scrollTop
964
+ };
965
+ }
966
+
967
+ return {
968
+ scrollLeft: element.pageXOffset,
969
+ scrollTop: element.pageYOffset
970
+ };
971
+ }
972
+
973
+ function getWindowScrollBarX(element) {
974
+ // If <html> has a CSS width greater than the viewport, then this will be
975
+ // incorrect for RTL.
976
+ return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;
977
+ }
978
+
979
+ function isScaled(element) {
980
+ const rect = getBoundingClientRect(element);
981
+ return round(rect.width) !== element.offsetWidth || round(rect.height) !== element.offsetHeight;
982
+ }
983
+
984
+ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
985
+ const isOffsetParentAnElement = isHTMLElement(offsetParent);
986
+ const documentElement = getDocumentElement(offsetParent);
987
+ const rect = getBoundingClientRect(element, // @ts-ignore - checked above (TS 4.1 compat)
988
+ isOffsetParentAnElement && isScaled(offsetParent), strategy === 'fixed');
989
+ let scroll = {
990
+ scrollLeft: 0,
991
+ scrollTop: 0
992
+ };
993
+ const offsets = {
994
+ x: 0,
995
+ y: 0
996
+ };
997
+
998
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {
999
+ if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
1000
+ scroll = getNodeScroll(offsetParent);
1001
+ }
1002
+
1003
+ if (isHTMLElement(offsetParent)) {
1004
+ const offsetRect = getBoundingClientRect(offsetParent, true);
1005
+ offsets.x = offsetRect.x + offsetParent.clientLeft;
1006
+ offsets.y = offsetRect.y + offsetParent.clientTop;
1007
+ } else if (documentElement) {
1008
+ offsets.x = getWindowScrollBarX(documentElement);
1009
+ }
1010
+ }
1011
+
1012
+ return {
1013
+ x: rect.left + scroll.scrollLeft - offsets.x,
1014
+ y: rect.top + scroll.scrollTop - offsets.y,
1015
+ width: rect.width,
1016
+ height: rect.height
1017
+ };
1018
+ }
1019
+
1020
+ function getParentNode(node) {
1021
+ if (getNodeName(node) === 'html') {
1022
+ return node;
1023
+ }
1024
+
1025
+ return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
1026
+ // @ts-ignore
1027
+ node.assignedSlot || // step into the shadow DOM of the parent of a slotted node
1028
+ node.parentNode || ( // DOM Element detected
1029
+ isShadowRoot(node) ? node.host : null) || // ShadowRoot detected
1030
+ getDocumentElement(node) // fallback
1031
+
1032
+ );
1033
+ }
1034
+
1035
+ function getTrueOffsetParent(element) {
1036
+ if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {
1037
+ return null;
1038
+ }
1039
+
1040
+ return element.offsetParent;
1041
+ }
1042
+
1043
+ function getContainingBlock(element) {
1044
+ let currentNode = getParentNode(element);
1045
+
1046
+ if (isShadowRoot(currentNode)) {
1047
+ currentNode = currentNode.host;
1048
+ }
1049
+
1050
+ while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
1051
+ if (isContainingBlock(currentNode)) {
1052
+ return currentNode;
1053
+ } else {
1054
+ const parent = currentNode.parentNode;
1055
+ currentNode = isShadowRoot(parent) ? parent.host : parent;
1056
+ }
1057
+ }
1058
+
1059
+ return null;
1060
+ } // Gets the closest ancestor positioned element. Handles some edge cases,
1061
+ // such as table ancestors and cross browser bugs.
1062
+
1063
+
1064
+ function getOffsetParent(element) {
1065
+ const window = getWindow(element);
1066
+ let offsetParent = getTrueOffsetParent(element);
1067
+
1068
+ while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
1069
+ offsetParent = getTrueOffsetParent(offsetParent);
1070
+ }
1071
+
1072
+ if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {
1073
+ return window;
1074
+ }
1075
+
1076
+ return offsetParent || getContainingBlock(element) || window;
1077
+ }
1078
+
1079
+ function getDimensions(element) {
1080
+ if (isHTMLElement(element)) {
1081
+ return {
1082
+ width: element.offsetWidth,
1083
+ height: element.offsetHeight
1084
+ };
1085
+ }
1086
+
1087
+ const rect = getBoundingClientRect(element);
1088
+ return {
1089
+ width: rect.width,
1090
+ height: rect.height
1091
+ };
1092
+ }
1093
+
1094
+ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
1095
+ let {
1096
+ rect,
1097
+ offsetParent,
1098
+ strategy
1099
+ } = _ref;
1100
+ const isOffsetParentAnElement = isHTMLElement(offsetParent);
1101
+ const documentElement = getDocumentElement(offsetParent);
1102
+
1103
+ if (offsetParent === documentElement) {
1104
+ return rect;
1105
+ }
1106
+
1107
+ let scroll = {
1108
+ scrollLeft: 0,
1109
+ scrollTop: 0
1110
+ };
1111
+ const offsets = {
1112
+ x: 0,
1113
+ y: 0
1114
+ };
1115
+
1116
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {
1117
+ if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
1118
+ scroll = getNodeScroll(offsetParent);
1119
+ }
1120
+
1121
+ if (isHTMLElement(offsetParent)) {
1122
+ const offsetRect = getBoundingClientRect(offsetParent, true);
1123
+ offsets.x = offsetRect.x + offsetParent.clientLeft;
1124
+ offsets.y = offsetRect.y + offsetParent.clientTop;
1125
+ } // This doesn't appear to be need to be negated.
1126
+ // else if (documentElement) {
1127
+ // offsets.x = getWindowScrollBarX(documentElement);
1128
+ // }
1129
+
1130
+ }
1131
+
1132
+ return { ...rect,
1133
+ x: rect.x - scroll.scrollLeft + offsets.x,
1134
+ y: rect.y - scroll.scrollTop + offsets.y
1135
+ };
1136
+ }
1137
+
1138
+ function getViewportRect(element, strategy) {
1139
+ const win = getWindow(element);
1140
+ const html = getDocumentElement(element);
1141
+ const visualViewport = win.visualViewport;
1142
+ let width = html.clientWidth;
1143
+ let height = html.clientHeight;
1144
+ let x = 0;
1145
+ let y = 0;
1146
+
1147
+ if (visualViewport) {
1148
+ width = visualViewport.width;
1149
+ height = visualViewport.height;
1150
+ const layoutViewport = isLayoutViewport();
1151
+
1152
+ if (layoutViewport || !layoutViewport && strategy === 'fixed') {
1153
+ x = visualViewport.offsetLeft;
1154
+ y = visualViewport.offsetTop;
1155
+ }
1156
+ }
1157
+
1158
+ return {
1159
+ width,
1160
+ height,
1161
+ x,
1162
+ y
1163
+ };
1164
+ }
1165
+
1166
+ // of the `<html>` and `<body>` rect bounds if horizontally scrollable
1167
+
1168
+ function getDocumentRect(element) {
1169
+ var _element$ownerDocumen;
1170
+
1171
+ const html = getDocumentElement(element);
1172
+ const scroll = getNodeScroll(element);
1173
+ const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
1174
+ const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
1175
+ const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
1176
+ let x = -scroll.scrollLeft + getWindowScrollBarX(element);
1177
+ const y = -scroll.scrollTop;
1178
+
1179
+ if (getComputedStyle(body || html).direction === 'rtl') {
1180
+ x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
1181
+ }
1182
+
1183
+ return {
1184
+ width,
1185
+ height,
1186
+ x,
1187
+ y
1188
+ };
1189
+ }
1190
+
1191
+ function getNearestOverflowAncestor(node) {
1192
+ const parentNode = getParentNode(node);
1193
+
1194
+ if (isLastTraversableNode(parentNode)) {
1195
+ // @ts-ignore assume body is always available
1196
+ return node.ownerDocument.body;
1197
+ }
1198
+
1199
+ if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
1200
+ return parentNode;
1201
+ }
1202
+
1203
+ return getNearestOverflowAncestor(parentNode);
1204
+ }
1205
+
1206
+ function getOverflowAncestors(node, list) {
1207
+ var _node$ownerDocument;
1208
+
1209
+ if (list === void 0) {
1210
+ list = [];
1211
+ }
1212
+
1213
+ const scrollableAncestor = getNearestOverflowAncestor(node);
1214
+ const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);
1215
+ const win = getWindow(scrollableAncestor);
1216
+ const target = isBody ? [win].concat(win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []) : scrollableAncestor;
1217
+ const updatedList = list.concat(target);
1218
+ return isBody ? updatedList : // @ts-ignore: isBody tells us target will be an HTMLElement here
1219
+ updatedList.concat(getOverflowAncestors(target));
1220
+ }
1221
+
1222
+ function contains(parent, child) {
1223
+ const rootNode = child.getRootNode == null ? void 0 : child.getRootNode(); // First, attempt with faster native method
1224
+
1225
+ if (parent.contains(child)) {
1226
+ return true;
1227
+ } // then fallback to custom implementation with Shadow DOM support
1228
+ else if (rootNode && isShadowRoot(rootNode)) {
1229
+ let next = child;
1230
+
1231
+ do {
1232
+ // use `===` replace node.isSameNode()
1233
+ if (next && parent === next) {
1234
+ return true;
1235
+ } // @ts-ignore: need a better way to handle this...
1236
+
1237
+
1238
+ next = next.parentNode || next.host;
1239
+ } while (next);
1240
+ }
1241
+
1242
+ return false;
1243
+ }
1244
+
1245
+ function getNearestParentCapableOfEscapingClipping(element, clippingAncestors) {
1246
+ let currentNode = element;
1247
+
1248
+ while (currentNode && !isLastTraversableNode(currentNode) && // @ts-expect-error
1249
+ !clippingAncestors.includes(currentNode)) {
1250
+ if (isElement(currentNode) && ['absolute', 'fixed'].includes(getComputedStyle(currentNode).position)) {
1251
+ break;
1252
+ }
1253
+
1254
+ const parentNode = getParentNode(currentNode);
1255
+ currentNode = isShadowRoot(parentNode) ? parentNode.host : parentNode;
1256
+ }
1257
+
1258
+ return currentNode;
1259
+ }
1260
+
1261
+ function getInnerBoundingClientRect(element, strategy) {
1262
+ const clientRect = getBoundingClientRect(element, false, strategy === 'fixed');
1263
+ const top = clientRect.top + element.clientTop;
1264
+ const left = clientRect.left + element.clientLeft;
1265
+ return {
1266
+ top,
1267
+ left,
1268
+ x: left,
1269
+ y: top,
1270
+ right: left + element.clientWidth,
1271
+ bottom: top + element.clientHeight,
1272
+ width: element.clientWidth,
1273
+ height: element.clientHeight
1274
+ };
1275
+ }
1276
+
1277
+ function getClientRectFromClippingAncestor(element, clippingParent, strategy) {
1278
+ if (clippingParent === 'viewport') {
1279
+ return rectToClientRect(getViewportRect(element, strategy));
1280
+ }
1281
+
1282
+ if (isElement(clippingParent)) {
1283
+ return getInnerBoundingClientRect(clippingParent, strategy);
1284
+ }
1285
+
1286
+ return rectToClientRect(getDocumentRect(getDocumentElement(element)));
1287
+ } // A "clipping ancestor" is an overflowable container with the characteristic of
1288
+ // clipping (or hiding) overflowing elements with a position different from
1289
+ // `initial`
1290
+
1291
+
1292
+ function getClippingAncestors(element) {
1293
+ const clippingAncestors = getOverflowAncestors(element);
1294
+ const nearestEscapableParent = getNearestParentCapableOfEscapingClipping(element, clippingAncestors);
1295
+ let clipperElement = null;
1296
+
1297
+ if (nearestEscapableParent && isHTMLElement(nearestEscapableParent)) {
1298
+ const offsetParent = getOffsetParent(nearestEscapableParent);
1299
+
1300
+ if (isOverflowElement(nearestEscapableParent)) {
1301
+ clipperElement = nearestEscapableParent;
1302
+ } else if (isHTMLElement(offsetParent)) {
1303
+ clipperElement = offsetParent;
1304
+ }
1305
+ }
1306
+
1307
+ if (!isElement(clipperElement)) {
1308
+ return [];
1309
+ } // @ts-ignore isElement check ensures we return Array<Element>
1310
+
1311
+
1312
+ return clippingAncestors.filter(clippingAncestors => clipperElement && isElement(clippingAncestors) && contains(clippingAncestors, clipperElement) && getNodeName(clippingAncestors) !== 'body');
1313
+ } // Gets the maximum area that the element is visible in due to any number of
1314
+ // clipping ancestors
1315
+
1316
+
1317
+ function getClippingRect(_ref) {
1318
+ let {
1319
+ element,
1320
+ boundary,
1321
+ rootBoundary,
1322
+ strategy
1323
+ } = _ref;
1324
+ const mainClippingAncestors = boundary === 'clippingAncestors' ? getClippingAncestors(element) : [].concat(boundary);
1325
+ const clippingAncestors = [...mainClippingAncestors, rootBoundary];
1326
+ const firstClippingAncestor = clippingAncestors[0];
1327
+ const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
1328
+ const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
1329
+ accRect.top = max(rect.top, accRect.top);
1330
+ accRect.right = min(rect.right, accRect.right);
1331
+ accRect.bottom = min(rect.bottom, accRect.bottom);
1332
+ accRect.left = max(rect.left, accRect.left);
1333
+ return accRect;
1334
+ }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
1335
+ return {
1336
+ width: clippingRect.right - clippingRect.left,
1337
+ height: clippingRect.bottom - clippingRect.top,
1338
+ x: clippingRect.left,
1339
+ y: clippingRect.top
1340
+ };
1341
+ }
1342
+
1343
+ const platform = {
1344
+ getClippingRect,
1345
+ convertOffsetParentRelativeRectToViewportRelativeRect,
1346
+ isElement,
1347
+ getDimensions,
1348
+ getOffsetParent,
1349
+ getDocumentElement,
1350
+ getElementRects: _ref => {
1351
+ let {
1352
+ reference,
1353
+ floating,
1354
+ strategy
1355
+ } = _ref;
1356
+ return {
1357
+ reference: getRectRelativeToOffsetParent(reference, getOffsetParent(floating), strategy),
1358
+ floating: { ...getDimensions(floating),
1359
+ x: 0,
1360
+ y: 0
1361
+ }
1362
+ };
1363
+ },
1364
+ getClientRects: element => Array.from(element.getClientRects()),
1365
+ isRTL: element => getComputedStyle(element).direction === 'rtl'
1366
+ };
1367
+
1368
+ /**
1369
+ * Automatically updates the position of the floating element when necessary.
1370
+ * @see https://floating-ui.com/docs/autoUpdate
1371
+ */
1372
+ function autoUpdate(reference, floating, update, options) {
1373
+ if (options === void 0) {
1374
+ options = {};
1375
+ }
1376
+
1377
+ const {
1378
+ ancestorScroll: _ancestorScroll = true,
1379
+ ancestorResize = true,
1380
+ elementResize = true,
1381
+ animationFrame = false
1382
+ } = options;
1383
+ const ancestorScroll = _ancestorScroll && !animationFrame;
1384
+ const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : []), ...getOverflowAncestors(floating)] : [];
1385
+ ancestors.forEach(ancestor => {
1386
+ ancestorScroll && ancestor.addEventListener('scroll', update, {
1387
+ passive: true
1388
+ });
1389
+ ancestorResize && ancestor.addEventListener('resize', update);
1390
+ });
1391
+ let observer = null;
1392
+
1393
+ if (elementResize) {
1394
+ let initialUpdate = true;
1395
+ observer = new ResizeObserver(() => {
1396
+ if (!initialUpdate) {
1397
+ update();
1398
+ }
1399
+
1400
+ initialUpdate = false;
1401
+ });
1402
+ isElement(reference) && !animationFrame && observer.observe(reference);
1403
+ observer.observe(floating);
1404
+ }
1405
+
1406
+ let frameId;
1407
+ let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
1408
+
1409
+ if (animationFrame) {
1410
+ frameLoop();
1411
+ }
1412
+
1413
+ function frameLoop() {
1414
+ const nextRefRect = getBoundingClientRect(reference);
1415
+
1416
+ if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {
1417
+ update();
1418
+ }
1419
+
1420
+ prevRefRect = nextRefRect;
1421
+ frameId = requestAnimationFrame(frameLoop);
1422
+ }
1423
+
1424
+ update();
1425
+ return () => {
1426
+ var _observer;
1427
+
1428
+ ancestors.forEach(ancestor => {
1429
+ ancestorScroll && ancestor.removeEventListener('scroll', update);
1430
+ ancestorResize && ancestor.removeEventListener('resize', update);
1431
+ });
1432
+ (_observer = observer) == null ? void 0 : _observer.disconnect();
1433
+ observer = null;
1434
+
1435
+ if (animationFrame) {
1436
+ cancelAnimationFrame(frameId);
1437
+ }
1438
+ };
1439
+ }
1440
+
1441
+ /**
1442
+ * Computes the `x` and `y` coordinates that will place the floating element
1443
+ * next to a reference element when it is given a certain CSS positioning
1444
+ * strategy.
1445
+ */
1446
+
1447
+ const computePosition = (reference, floating, options) => computePosition$1(reference, floating, {
1448
+ platform,
1449
+ ...options
1450
+ });
1451
+
7
1452
  /*!
8
1453
  * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
9
1454
  * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
10
1455
  * v1.0.0-beta.97
11
- */function lt({placement:t,disableFlip:n,flipPlacements:e,offsetDistance:l,offsetSkidding:c,arrowEl:f,type:d}){const p=[(void 0===g&&(g={}),{name:"shift",options:g,async fn(t){const{x:n,y:e,placement:o}=t,{mainAxis:r=!0,crossAxis:l=!1,limiter:s={fn:t=>{let{x:n,y:e}=t;return{x:n,y:e}}},...c}=g,f={x:n,y:e},d=await u(t,c),p=a(i(o)),y="x"===p?"y":"x";let v=f[p],x=f[y];r&&(v=m(v+d["y"===p?"top":"left"],v,v-d["y"===p?"bottom":"right"])),l&&(x=m(x+d["y"===y?"top":"left"],x,x-d["y"===y?"bottom":"right"]));const h=s.fn({...t,[p]:v,[y]:x});return{...h,data:{x:h.x-n,y:h.y-e}}}}),k()];var g,v;if("menu"===d)return[...p,b({fallbackPlacements:e||["top-start","top","top-end","bottom-start","bottom","bottom-end"]})];if("popover"===d||"tooltip"===d){const d=[...p,(v={mainAxis:"number"==typeof l?l:0,crossAxis:"number"==typeof c?c:0},void 0===v&&(v=0),{name:"offset",options:v,async fn(t){const{x:n,y:e}=t,r=await async function(t,n){const{placement:e,platform:r,elements:l}=t,s=await(null==r.isRTL?void 0:r.isRTL(l.floating)),c=i(e),u=o(e),f="x"===a(e),d=["left","top"].includes(c)?-1:1,m=s&&f?-1:1,p="function"==typeof n?n(t):n;let{mainAxis:y,crossAxis:g,alignmentAxis:v}="number"==typeof p?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...p};return u&&"number"==typeof v&&(g="end"===u?-1*v:v),f?{x:g*m,y:y*d}:{x:y*d,y:g*m}}(t,v);return{x:n+r.x,y:e+r.y,data:r}}})];return"auto"===t||"auto-start"===t||"auto-end"===t?d.push(function(t){return void 0===t&&(t={}),{name:"autoPlacement",options:t,async fn(n){var e,r,a;const{rects:l,middlewareData:s,placement:c,platform:f,elements:d}=n,{alignment:m,allowedPlacements:p=y,autoAlignment:g=!0,...v}=t,h=void 0!==m||p===y?function(t,n,e){return(t?[...e.filter((n=>o(n)===t)),...e.filter((n=>o(n)!==t))]:e.filter((t=>i(t)===t))).filter((e=>!t||o(e)===t||!!n&&w(e)!==e))}(m||null,g,p):p,b=await u(n,v),A=(null==(e=s.autoPlacement)?void 0:e.index)||0,P=h[A];if(null==P)return{};const{main:k,cross:R}=x(P,l,await(null==f.isRTL?void 0:f.isRTL(d.floating)));if(c!==P)return{reset:{placement:h[0]}};const D=[b[i(P)],b[k],b[R]],E=[...(null==(r=s.autoPlacement)?void 0:r.overflows)||[],{placement:P,overflows:D}],F=h[A+1];if(F)return{data:{index:A+1,overflows:E},reset:{placement:F}};const M=E.slice().sort(((t,n)=>t.overflows[0]-n.overflows[0])),$=null==(a=M.find((t=>{let{overflows:n}=t;return n.every((t=>t<=0))})))?void 0:a.placement,O=$||M[0].placement;return O!==c?{data:{index:A+1,overflows:E},reset:{placement:O}}:{}}}}({alignment:"auto-start"===t?"start":"auto-end"===t?"end":null})):n||d.push(b(e?{fallbackPlacements:e}:{})),f&&d.push((t=>({name:"arrow",options:t,async fn(n){const{element:e,padding:i=0}=t||{},{x:l,y:c,placement:u,rects:f,platform:d}=n;if(null==e)return{};const p=s(i),y={x:l,y:c},g=a(u),v=r(g),x=await d.getDimensions(e),h="y"===g?"top":"left",w="y"===g?"bottom":"right",b=f.reference[v]+f.reference[g]-y[g]-f.floating[v],A=y[g]-f.reference[g],P=await(null==d.getOffsetParent?void 0:d.getOffsetParent(e));let k=P?"y"===g?P.clientHeight||0:P.clientWidth||0:0;0===k&&(k=f.floating[v]);const R=p[h],D=k-x[v]-p[w],E=k/2-x[v]/2+(b/2-A/2),F=m(R,E,D),M=null!=o(u)&&E!=F&&f.reference[v]/2-(E<R?p[h]:p[w])-x[v]/2<0;return{[g]:y[g]-(M?E<R?R-E:D-E:0),data:{[g]:F,centerOffset:E-F}}}}))({element:f})),d}return[]}function st(t,n){const e=t.filter((t=>rt.includes(t)));return e.length!==t.length&&console.warn(`${n.tagName}: Invalid value found in: flipPlacements. Try any of these: ${rt.map((t=>`"${t}"`)).join(", ").trim()}`,{el:n}),e}function ct(t,e){const o=["left","right"];return"rtl"===n(t)&&o.reverse(),e.replace(/-leading/gi,"-start").replace(/-trailing/gi,"-end").replace(/leading/gi,o[0]).replace(/trailing/gi,o[1])}async function ut(t,n,e=!1){if(t.open)return e?ft(n):dt(n)}const ft=e(dt,100,{leading:!0,maxWait:100});async function dt({referenceEl:t,floatingEl:n,overlayPositioning:e="absolute",placement:o,disableFlip:r,flipPlacements:i,offsetDistance:a,offsetSkidding:s,includeArrow:c=!1,arrowEl:u,type:f}){var d;if(!t||!n||c&&!u)return null;await et;const{x:m,y:p,placement:y,strategy:g,middlewareData:v}=await(x=t,h=n,w={strategy:e,placement:"auto"===o||"auto-start"===o||"auto-end"===o?void 0:ct(n,o),middleware:lt({placement:o,disableFlip:r,flipPlacements:i,offsetDistance:a,offsetSkidding:s,arrowEl:u,type:f})},(async(t,n,e)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:a}=e,s=i.filter(Boolean),c=await(null==a.isRTL?void 0:a.isRTL(n));let u=await a.getElementRects({reference:t,floating:n,strategy:r}),{x:f,y:d}=l(u,o,c),m=o,p={},y=0;for(let e=0;e<s.length;e++){const{name:i,fn:g}=s[e],{x:v,y:x,data:h,reset:w}=await g({x:f,y:d,initialPlacement:o,placement:m,strategy:r,middlewareData:p,rects:u,platform:a,elements:{reference:t,floating:n}});f=null!=v?v:f,d=null!=x?x:d,p={...p,[i]:{...p[i],...h}},w&&y<=50&&(y++,"object"==typeof w&&(w.placement&&(m=w.placement),w.rects&&(u=!0===w.rects?await a.getElementRects({reference:t,floating:n,strategy:r}):w.rects),({x:f,y:d}=l(u,m,c))),e=-1)}return{x:f,y:d,placement:m,strategy:r,middlewareData:p}})(x,h,{platform:tt,...w}));var x,h,w;if(null==v?void 0:v.arrow){const{x:t,y:n}=v.arrow;Object.assign(u.style,{left:null!=t?`${t}px`:"",top:null!=n?`${n}px`:""})}const b=(null===(d=null==v?void 0:v.hide)||void 0===d?void 0:d.referenceHidden)?"hidden":null,A=b?"none":null;n.setAttribute(ot,y);const P=`translate(${Math.round(m)}px,${Math.round(p)}px)`;Object.assign(n.style,{visibility:b,pointerEvents:A,position:g,top:"0",left:"0",transform:P})}const mt=new WeakMap;function pt(t,n,e){if(!e||!n)return;yt(t,n,e);const o=t.overlayPositioning;e.style.position=o,"absolute"===o&&wt(e),mt.set(t,function(t,n,e,o){void 0===o&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:a=!0,animationFrame:l=!1}=o,s=r&&!l,c=s||i?[...O(t)?Q(t):[],...Q(n)]:[];c.forEach((t=>{s&&t.addEventListener("scroll",e,{passive:!0}),i&&t.addEventListener("resize",e)}));let u,f=null;if(a){let o=!0;f=new ResizeObserver((()=>{o||e(),o=!1})),O(t)&&!l&&f.observe(t),f.observe(n)}let d=l?W(t):null;return l&&function n(){const o=W(t);!d||o.x===d.x&&o.y===d.y&&o.width===d.width&&o.height===d.height||e(),d=o,u=requestAnimationFrame(n)}(),e(),()=>{var t;c.forEach((t=>{s&&t.removeEventListener("scroll",e),i&&t.removeEventListener("resize",e)})),null==(t=f)||t.disconnect(),f=null,l&&cancelAnimationFrame(u)}}(n,e,(()=>t.reposition())))}function yt(t,n,e){if(!e||!n)return;xt(e).removeEventListener("transitionend",ht);const o=mt.get(t);o&&o(),mt.delete(t)}const gt=Math.ceil(Math.hypot(4,4));function vt(t){t&&"absolute"===t.style.position&&xt(t).addEventListener("transitionend",ht)}function xt(t){return t.shadowRoot||t}function ht(n){const e=n.target;if("opacity"===n.propertyName&&e.classList.contains(at.animation)){const n=function(n){return t(n,`[${ot}]`)}(e);wt(n),xt(n).removeEventListener("transitionend",ht)}}function wt(t){t.style.transform="",t.style.top="-99999px",t.style.left="-99999px"}export{at as F,yt as a,gt as b,pt as c,it as d,c as e,st as f,ut as r,vt as u}
1456
+ */
1457
+ /**
1458
+ * This module helps users provide custom configuration for component internals.
1459
+ *
1460
+ * @internal
1461
+ */
1462
+ const configOverrides = globalThis["calciteComponentsConfig"];
1463
+ const config = {
1464
+ /**
1465
+ * We apply a custom fix to improve positioning for non-Chromium browsers.
1466
+ * The fix comes at a performance cost, so provides users a way to opt-out if necessary.
1467
+ *
1468
+ * @internal
1469
+ */
1470
+ floatingUINonChromiumPositioningFix: true,
1471
+ ...configOverrides
1472
+ };
1473
+
1474
+ /*!
1475
+ * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
1476
+ * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
1477
+ * v1.0.0-beta.97
1478
+ */
1479
+ const floatingUIBrowserCheck = patchFloatingUiForNonChromiumBrowsers();
1480
+ async function patchFloatingUiForNonChromiumBrowsers() {
1481
+ function getUAString() {
1482
+ const uaData = navigator.userAgentData;
1483
+ if (uaData === null || uaData === void 0 ? void 0 : uaData.brands) {
1484
+ return uaData.brands.map((item) => `${item.brand}/${item.version}`).join(" ");
1485
+ }
1486
+ return navigator.userAgent;
1487
+ }
1488
+ if (config.floatingUINonChromiumPositioningFix &&
1489
+ // ⚠️ browser-sniffing is not a best practice and should be avoided ⚠️
1490
+ /firefox|safari/i.test(getUAString())) {
1491
+ const { getClippingRect, getElementRects, getOffsetParent } = await import('./p-05e64bd1.js');
1492
+ platform.getClippingRect = getClippingRect;
1493
+ platform.getOffsetParent = getOffsetParent;
1494
+ platform.getElementRects = getElementRects;
1495
+ }
1496
+ }
1497
+ const placementDataAttribute = "data-placement";
1498
+ /**
1499
+ * Exported for testing purposes only
1500
+ */
1501
+ const repositionDebounceTimeout = 100;
1502
+ const effectivePlacements = [
1503
+ "top",
1504
+ "bottom",
1505
+ "right",
1506
+ "left",
1507
+ "top-start",
1508
+ "top-end",
1509
+ "bottom-start",
1510
+ "bottom-end",
1511
+ "right-start",
1512
+ "right-end",
1513
+ "left-start",
1514
+ "left-end"
1515
+ ];
1516
+ const defaultMenuPlacement = "bottom-start";
1517
+ const FloatingCSS = {
1518
+ animation: "calcite-floating-ui-anim",
1519
+ animationActive: "calcite-floating-ui-anim--active"
1520
+ };
1521
+ function getMiddleware({ placement, disableFlip, flipPlacements, offsetDistance, offsetSkidding, arrowEl, type }) {
1522
+ const defaultMiddleware = [shift(), hide()];
1523
+ if (type === "menu") {
1524
+ return [
1525
+ ...defaultMiddleware,
1526
+ flip({
1527
+ fallbackPlacements: flipPlacements || ["top-start", "top", "top-end", "bottom-start", "bottom", "bottom-end"]
1528
+ })
1529
+ ];
1530
+ }
1531
+ if (type === "popover" || type === "tooltip") {
1532
+ const middleware = [
1533
+ ...defaultMiddleware,
1534
+ offset({
1535
+ mainAxis: typeof offsetDistance === "number" ? offsetDistance : 0,
1536
+ crossAxis: typeof offsetSkidding === "number" ? offsetSkidding : 0
1537
+ })
1538
+ ];
1539
+ if (placement === "auto" || placement === "auto-start" || placement === "auto-end") {
1540
+ middleware.push(autoPlacement({ alignment: placement === "auto-start" ? "start" : placement === "auto-end" ? "end" : null }));
1541
+ }
1542
+ else if (!disableFlip) {
1543
+ middleware.push(flip(flipPlacements ? { fallbackPlacements: flipPlacements } : {}));
1544
+ }
1545
+ if (arrowEl) {
1546
+ middleware.push(arrow({
1547
+ element: arrowEl
1548
+ }));
1549
+ }
1550
+ return middleware;
1551
+ }
1552
+ return [];
1553
+ }
1554
+ function filterComputedPlacements(placements, el) {
1555
+ const filteredPlacements = placements.filter((placement) => effectivePlacements.includes(placement));
1556
+ if (filteredPlacements.length !== placements.length) {
1557
+ console.warn(`${el.tagName}: Invalid value found in: flipPlacements. Try any of these: ${effectivePlacements
1558
+ .map((placement) => `"${placement}"`)
1559
+ .join(", ")
1560
+ .trim()}`, { el });
1561
+ }
1562
+ return filteredPlacements;
1563
+ }
1564
+ /*
1565
+ In floating-ui, "*-start" and "*-end" are already flipped in RTL.
1566
+ There is no need for our "*-leading" and "*-trailing" values anymore.
1567
+ https://github.com/floating-ui/floating-ui/issues/1530
1568
+ https://github.com/floating-ui/floating-ui/issues/1563
1569
+ */
1570
+ function getEffectivePlacement(floatingEl, placement) {
1571
+ const placements = ["left", "right"];
1572
+ if (getElementDir(floatingEl) === "rtl") {
1573
+ placements.reverse();
1574
+ }
1575
+ return placement
1576
+ .replace(/-leading/gi, "-start")
1577
+ .replace(/-trailing/gi, "-end")
1578
+ .replace(/leading/gi, placements[0])
1579
+ .replace(/trailing/gi, placements[1]);
1580
+ }
1581
+ /**
1582
+ * Convenience function to manage `reposition` calls for FloatingUIComponents that use `positionFloatingUI.
1583
+ *
1584
+ * Note: this is not needed for components that use `calcite-popover`.
1585
+ *
1586
+ * @param component
1587
+ * @param options
1588
+ * @param options.referenceEl
1589
+ * @param options.floatingEl
1590
+ * @param options.overlayPositioning
1591
+ * @param options.placement
1592
+ * @param options.disableFlip
1593
+ * @param options.flipPlacements
1594
+ * @param options.offsetDistance
1595
+ * @param options.offsetSkidding
1596
+ * @param options.arrowEl
1597
+ * @param options.type
1598
+ * @param delayed
1599
+ */
1600
+ async function reposition(component, options, delayed = false) {
1601
+ if (!component.open) {
1602
+ return;
1603
+ }
1604
+ return delayed ? debouncedReposition(options) : positionFloatingUI(options);
1605
+ }
1606
+ const debouncedReposition = debounce(positionFloatingUI, repositionDebounceTimeout, {
1607
+ leading: true,
1608
+ maxWait: repositionDebounceTimeout
1609
+ });
1610
+ /**
1611
+ * Positions the floating element relative to the reference element.
1612
+ *
1613
+ * **Note:** exported for testing purposes only
1614
+ *
1615
+ * @param root0
1616
+ * @param root0.referenceEl
1617
+ * @param root0.floatingEl
1618
+ * @param root0.overlayPositioning
1619
+ * @param root0.placement
1620
+ * @param root0.disableFlip
1621
+ * @param root0.flipPlacements
1622
+ * @param root0.offsetDistance
1623
+ * @param root0.offsetSkidding
1624
+ * @param root0.arrowEl
1625
+ * @param root0.type
1626
+ * @param root0.includeArrow
1627
+ */
1628
+ async function positionFloatingUI({ referenceEl, floatingEl, overlayPositioning = "absolute", placement, disableFlip, flipPlacements, offsetDistance, offsetSkidding, includeArrow = false, arrowEl, type }) {
1629
+ var _a;
1630
+ if (!referenceEl || !floatingEl || (includeArrow && !arrowEl)) {
1631
+ return null;
1632
+ }
1633
+ await floatingUIBrowserCheck;
1634
+ const { x, y, placement: effectivePlacement, strategy: position, middlewareData } = await computePosition(referenceEl, floatingEl, {
1635
+ strategy: overlayPositioning,
1636
+ placement: placement === "auto" || placement === "auto-start" || placement === "auto-end"
1637
+ ? undefined
1638
+ : getEffectivePlacement(floatingEl, placement),
1639
+ middleware: getMiddleware({
1640
+ placement,
1641
+ disableFlip,
1642
+ flipPlacements,
1643
+ offsetDistance,
1644
+ offsetSkidding,
1645
+ arrowEl,
1646
+ type
1647
+ })
1648
+ });
1649
+ if (middlewareData === null || middlewareData === void 0 ? void 0 : middlewareData.arrow) {
1650
+ const { x: arrowX, y: arrowY } = middlewareData.arrow;
1651
+ Object.assign(arrowEl.style, {
1652
+ left: arrowX != null ? `${arrowX}px` : "",
1653
+ top: arrowY != null ? `${arrowY}px` : ""
1654
+ });
1655
+ }
1656
+ const referenceHidden = (_a = middlewareData === null || middlewareData === void 0 ? void 0 : middlewareData.hide) === null || _a === void 0 ? void 0 : _a.referenceHidden;
1657
+ const visibility = referenceHidden ? "hidden" : null;
1658
+ const pointerEvents = visibility ? "none" : null;
1659
+ floatingEl.setAttribute(placementDataAttribute, effectivePlacement);
1660
+ const transform = `translate(${Math.round(x)}px,${Math.round(y)}px)`;
1661
+ Object.assign(floatingEl.style, {
1662
+ visibility,
1663
+ pointerEvents,
1664
+ position,
1665
+ top: "0",
1666
+ left: "0",
1667
+ transform
1668
+ });
1669
+ }
1670
+ /**
1671
+ * Exported for testing purposes only
1672
+ *
1673
+ * @internal
1674
+ */
1675
+ const cleanupMap = new WeakMap();
1676
+ /**
1677
+ * Helper to set up floating element interactions on connectedCallback.
1678
+ *
1679
+ * @param component
1680
+ * @param referenceEl
1681
+ * @param floatingEl
1682
+ */
1683
+ function connectFloatingUI(component, referenceEl, floatingEl) {
1684
+ if (!floatingEl || !referenceEl) {
1685
+ return;
1686
+ }
1687
+ disconnectFloatingUI(component, referenceEl, floatingEl);
1688
+ const position = component.overlayPositioning;
1689
+ // ensure position matches for initial positioning
1690
+ floatingEl.style.position = position;
1691
+ if (position === "absolute") {
1692
+ moveOffScreen(floatingEl);
1693
+ }
1694
+ const runAutoUpdate = autoUpdate
1695
+ ;
1696
+ cleanupMap.set(component, runAutoUpdate(referenceEl, floatingEl, () => component.reposition()));
1697
+ }
1698
+ /**
1699
+ * Helper to tear down floating element interactions on disconnectedCallback.
1700
+ *
1701
+ * @param component
1702
+ * @param referenceEl
1703
+ * @param floatingEl
1704
+ */
1705
+ function disconnectFloatingUI(component, referenceEl, floatingEl) {
1706
+ if (!floatingEl || !referenceEl) {
1707
+ return;
1708
+ }
1709
+ getTransitionTarget(floatingEl).removeEventListener("transitionend", handleTransitionElTransitionEnd);
1710
+ const cleanup = cleanupMap.get(component);
1711
+ if (cleanup) {
1712
+ cleanup();
1713
+ }
1714
+ cleanupMap.delete(component);
1715
+ }
1716
+ const visiblePointerSize = 4;
1717
+ /**
1718
+ * Default offset the position of the floating element away from the reference element.
1719
+ *
1720
+ * @default 6
1721
+ */
1722
+ const defaultOffsetDistance = Math.ceil(Math.hypot(visiblePointerSize, visiblePointerSize));
1723
+ /**
1724
+ * This utils applies floating element styles to avoid affecting layout when closed.
1725
+ *
1726
+ * This should be called when the closing transition will start.
1727
+ *
1728
+ * @param floatingEl
1729
+ */
1730
+ function updateAfterClose(floatingEl) {
1731
+ if (!floatingEl || floatingEl.style.position !== "absolute") {
1732
+ return;
1733
+ }
1734
+ getTransitionTarget(floatingEl).addEventListener("transitionend", handleTransitionElTransitionEnd);
1735
+ }
1736
+ function getTransitionTarget(floatingEl) {
1737
+ // assumes floatingEl w/ shadowRoot is a FloatingUIComponent
1738
+ return floatingEl.shadowRoot || floatingEl;
1739
+ }
1740
+ function handleTransitionElTransitionEnd(event) {
1741
+ const floatingTransitionEl = event.target;
1742
+ if (
1743
+ // using any prop from floating-ui transition
1744
+ event.propertyName === "opacity" &&
1745
+ floatingTransitionEl.classList.contains(FloatingCSS.animation)) {
1746
+ const floatingEl = getFloatingElFromTransitionTarget(floatingTransitionEl);
1747
+ moveOffScreen(floatingEl);
1748
+ getTransitionTarget(floatingEl).removeEventListener("transitionend", handleTransitionElTransitionEnd);
1749
+ }
1750
+ }
1751
+ function moveOffScreen(floatingEl) {
1752
+ floatingEl.style.transform = "";
1753
+ floatingEl.style.top = "-99999px";
1754
+ floatingEl.style.left = "-99999px";
1755
+ }
1756
+ function getFloatingElFromTransitionTarget(floatingTransitionEl) {
1757
+ return closestElementCrossShadowBoundary(floatingTransitionEl, `[${placementDataAttribute}]`);
1758
+ }
1759
+
1760
+ export { FloatingCSS as F, disconnectFloatingUI as a, defaultOffsetDistance as b, connectFloatingUI as c, defaultMenuPlacement as d, rectToClientRect as e, filterComputedPlacements as f, reposition as r, updateAfterClose as u };