@marimo-team/islands 0.19.12-dev1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/dist/Combination-Du-o_hC9.js +11897 -0
  2. package/dist/{ConnectedDataExplorerComponent-CkXO-pKy.js → ConnectedDataExplorerComponent-BMiGWK57.js} +19 -18
  3. package/dist/{_baseIsEqual-CBSjxu-D.js → _baseIsEqual-DN5YkPnl.js} +1 -1
  4. package/dist/{_baseProperty-BVGrW_NZ.js → _baseProperty-6juuyX7Z.js} +5 -5
  5. package/dist/{_baseUniq-4lqa8rDi.js → _baseUniq-BlF21ach.js} +1 -1
  6. package/dist/{any-language-editor-t_VsTNa-.js → any-language-editor-1OMbohwD.js} +19 -19
  7. package/dist/architecture-U656AL7Q-Jd2CvPgJ.js +6 -0
  8. package/dist/{architectureDiagram-VXUJARFQ-DmJQhcJb.js → architectureDiagram-VXUJARFQ-DhN0C3Xf.js} +15 -15
  9. package/dist/{blockDiagram-VD42YOAC-CRofISJs.js → blockDiagram-VD42YOAC-DrBkIcbV.js} +7 -7
  10. package/dist/{button-Cy0ElmIm.js → button-KYalaJYu.js} +783 -200
  11. package/dist/{c4Diagram-YG6GDRKO-Deqoag4I.js → c4Diagram-YG6GDRKO-pWt4zmu0.js} +4 -4
  12. package/dist/{channel-CMsnebrL.js → channel-C56Jz8EL.js} +1 -1
  13. package/dist/{check-DkNR52Mm.js → check-C50jsehH.js} +1 -1
  14. package/dist/{chunk-76Q3JFCE-jPuajZH_.js → chunk-76Q3JFCE-CQ6a2yGJ.js} +1 -1
  15. package/dist/{chunk-ABZYJK2D-BGWvKte3.js → chunk-ABZYJK2D-BwNsaa1P.js} +1 -1
  16. package/dist/{chunk-ATLVNIR6-BYZB6C5T.js → chunk-ATLVNIR6-DtFMAawc.js} +1 -1
  17. package/dist/{chunk-B4BG7PRW-CwYUp6Uj.js → chunk-B4BG7PRW-lfWcLlzS.js} +4 -4
  18. package/dist/{chunk-DI55MBZ5-Gyro6dvN.js → chunk-DI55MBZ5-RhhAimfG.js} +4 -4
  19. package/dist/{chunk-EXTU4WIE-BlA7aWEw.js → chunk-EXTU4WIE-Bmo660a9.js} +1 -1
  20. package/dist/{chunk-FPAJGGOC-CduL34ft.js → chunk-FPAJGGOC-quWdfNUB.js} +7 -7
  21. package/dist/{chunk-FWNWRKHM-C-2TI4gt.js → chunk-FWNWRKHM-DmrwhAQr.js} +1 -1
  22. package/dist/{chunk-JA3XYJ7Z-Cm-pccR-.js → chunk-JA3XYJ7Z-n8UTzfok.js} +2 -2
  23. package/dist/{chunk-JZLCHNYA-CoLqqXMe.js → chunk-JZLCHNYA-ChKqHUdB.js} +4 -4
  24. package/dist/{chunk-LBM3YZW2-DWgQiioW.js → chunk-LBM3YZW2-BkxsqkNK.js} +1 -1
  25. package/dist/{chunk-LHMN2FUI-Dj_AHSvI.js → chunk-LHMN2FUI-CgYPnxfN.js} +1 -1
  26. package/dist/{chunk-N4CR4FBY-ByLbY9L-.js → chunk-N4CR4FBY-BxOHGL3P.js} +5 -5
  27. package/dist/{chunk-O7ZBX7Z2-CRZ8i1rP.js → chunk-O7ZBX7Z2-CdpLwOP0.js} +1 -1
  28. package/dist/{chunk-QN33PNHL-eodIiY9F.js → chunk-QN33PNHL-Dda-55xY.js} +1 -1
  29. package/dist/{chunk-QXUST7PY-CuJlDW6A.js → chunk-QXUST7PY-ClIEpoCT.js} +5 -5
  30. package/dist/{chunk-S3R3BYOJ-CwDGYMVf.js → chunk-S3R3BYOJ-C_1SJcWo.js} +3 -3
  31. package/dist/{chunk-S6J4BHB3-DNVMr0_v.js → chunk-S6J4BHB3-zfWjyfUg.js} +1 -1
  32. package/dist/{chunk-T53DSG4Q-BFWkpOX5.js → chunk-T53DSG4Q-Bewz1tiU.js} +1 -1
  33. package/dist/{chunk-TZMSLE5B-DFDr5FCr.js → chunk-TZMSLE5B-XW3duOft.js} +1 -1
  34. package/dist/{classDiagram-2ON5EDUG-BDBX9etk.js → classDiagram-2ON5EDUG-CUJlS_eo.js} +10 -10
  35. package/dist/{classDiagram-v2-WZHVMYZB-Bzj_L_BF.js → classDiagram-v2-WZHVMYZB-BhSPpbkE.js} +10 -10
  36. package/dist/{clone-Cc_6PW77.js → clone-V9hndNcj.js} +1 -1
  37. package/dist/{constants-DrOu5vvd.js → constants-BGRTDzdW.js} +2 -2
  38. package/dist/{copy-DRaXIb_a.js → copy-oc-FcZzt.js} +2 -2
  39. package/dist/{dagre-6UL2VRFP-r2rSdJYL.js → dagre-6UL2VRFP-BArPH353.js} +11 -11
  40. package/dist/{dagre-D2F8UdM6.js → dagre-Dcgyn_Uy.js} +15 -15
  41. package/dist/{diagram-PSM6KHXK-BpxVUe9U.js → diagram-PSM6KHXK-B1xAkr9y.js} +16 -16
  42. package/dist/{diagram-QEK2KX5R-q3dHUcp6.js → diagram-QEK2KX5R-CaoqwzPb.js} +14 -14
  43. package/dist/{diagram-S2PKOQOG-MDBKrxSC.js → diagram-S2PKOQOG-NXCsFLvR.js} +14 -14
  44. package/dist/dist-B8Y11RWn.js +1381 -0
  45. package/dist/dist-BA-HK7pI.js +5 -0
  46. package/dist/dist-BD5GU948.js +5 -0
  47. package/dist/{dist-BfactX3G.js → dist-BGzkWRSl.js} +4 -4
  48. package/dist/dist-BIYmAsND.js +5 -0
  49. package/dist/{dist-CmZYrgd_.js → dist-BUEi7EKT.js} +1 -1
  50. package/dist/{dist-B94MxrQS.js → dist-B_i29Q6L.js} +2 -2
  51. package/dist/dist-BcKTJXJi.js +5 -0
  52. package/dist/dist-BgnrtcWg.js +8 -0
  53. package/dist/{dist-glA_fIK_.js → dist-BoagoQQw.js} +2 -2
  54. package/dist/{dist-C2-m5aEk.js → dist-BswsDM4k.js} +2 -2
  55. package/dist/dist-C1njTlBq.js +5 -0
  56. package/dist/{dist-B2-r9y-0.js → dist-C5QB1NtD.js} +3 -3
  57. package/dist/{dist-Crk9ejOy.js → dist-CD7uLx0M.js} +2 -2
  58. package/dist/{dist-B4tYJP_i.js → dist-CMOy93xY.js} +2 -2
  59. package/dist/dist-CSKHwJYH.js +5 -0
  60. package/dist/dist-CSKKyiIq.js +5 -0
  61. package/dist/{dist-iiugPhCC.js → dist-C_9IMrtt.js} +1 -1
  62. package/dist/{dist-CE43BRmt.js → dist-Cb3iqED3.js} +1 -1
  63. package/dist/{dist-Dit9tk8a.js → dist-CoZ8kKKW.js} +1 -1
  64. package/dist/{dist-B5ATpkxy.js → dist-CrAYcS_4.js} +2 -2
  65. package/dist/dist-CrQ_pOuK.js +6 -0
  66. package/dist/dist-Cskx1daf.js +5 -0
  67. package/dist/dist-D4i0Ef34.js +8 -0
  68. package/dist/{dist-T4g7Sr6e.js → dist-D8EhXZ4S.js} +3 -3
  69. package/dist/{dist-CJrHMxlI.js → dist-DOLQQtWK.js} +3 -3
  70. package/dist/dist-DOcn61TX.js +8 -0
  71. package/dist/{dist-DqJdzAYM.js → dist-Dmr_nXF6.js} +2 -2
  72. package/dist/{dist-yVJ4xE5n.js → dist-DpAbrLuF.js} +5 -5
  73. package/dist/{dist-CcOGT46m.js → dist-DrC0QKFK.js} +1 -1
  74. package/dist/{dist-BYmtF1W6.js → dist-Dv2Phbh5.js} +2 -2
  75. package/dist/dist-DwMejAPB.js +6 -0
  76. package/dist/dist-DzSe1wby.js +8 -0
  77. package/dist/{dist-BbBnU4tG.js → dist-EZFqUJhh.js} +1 -1
  78. package/dist/{dist-Cgf353Ki.js → dist-Ey9hP8-j.js} +1 -1
  79. package/dist/{dist-BLwfpZD-.js → dist-IlWGXVjO.js} +2 -2
  80. package/dist/{dist-DOil6y-3.js → dist-LNp8svLl.js} +4 -4
  81. package/dist/{dist-CPTE45iS.js → dist-W6TdeACj.js} +1 -1
  82. package/dist/{dist-Dc1SFk5I.js → dist-a6Obzr07.js} +2 -2
  83. package/dist/{dist-Bsv_ARko.js → dist-bz6WguLy.js} +2 -2
  84. package/dist/{dist-CC9VUnXd.js → dist-iDeoXzdN.js} +1 -1
  85. package/dist/{dist-BoAHOW2l.js → dist-iyBCcLRa.js} +2 -2
  86. package/dist/{dist-CkEUrAus.js → dist-xCB683Dh.js} +2 -2
  87. package/dist/{erDiagram-Q2GNP2WA-CX1XdqVD.js → erDiagram-Q2GNP2WA-DWCa11g5.js} +10 -10
  88. package/dist/error-banner-vCG-EbUQ.js +619 -0
  89. package/dist/{esm-BAS2d2Ad.js → esm-DZSk8vt3.js} +27 -27
  90. package/dist/{flatten-eGRGXrC3.js → flatten-CWZjF1fc.js} +1 -1
  91. package/dist/{flowDiagram-NV44I4VS-BCj-ONTw.js → flowDiagram-NV44I4VS-BQ5PQs4L.js} +10 -10
  92. package/dist/{ganttDiagram-JELNMOA3-D1l5ewiQ.js → ganttDiagram-JELNMOA3-NTOuNWeT.js} +3 -3
  93. package/dist/{gitGraph-F6HP7TQM-CDM3aU-T.js → gitGraph-F6HP7TQM-DfRNsaDw.js} +3 -3
  94. package/dist/{gitGraphDiagram-NY62KEGX-KdZh0iiW.js → gitGraphDiagram-NY62KEGX-CYke62Ot.js} +13 -13
  95. package/dist/{glide-data-editor-2RvcPqmc.js → glide-data-editor-DttqGjrT.js} +571 -572
  96. package/dist/{graphlib-7UgfJadv.js → graphlib-CwMnCnQ9.js} +8 -8
  97. package/dist/{info-NVLQJR56-CoL1x1Fy.js → info-NVLQJR56-CUaoPtis.js} +3 -3
  98. package/dist/{infoDiagram-WHAUD3N6-PSH7lQ0D.js → infoDiagram-WHAUD3N6-B42WjAPh.js} +13 -13
  99. package/dist/{isEmpty-DQXRKNtW.js → isEmpty-6z2uv6gM.js} +2 -2
  100. package/dist/{isString-Clqvtgmo.js → isString-D6abkXrl.js} +1 -1
  101. package/dist/{isSymbol-TWXhTa8k.js → isSymbol-hk7foJ70.js} +1 -1
  102. package/dist/{journeyDiagram-XKPGCS4Q-BrTAxQ1J.js → journeyDiagram-XKPGCS4Q-ahXD97kr.js} +3 -3
  103. package/dist/{kanban-definition-3W4ZIXB7-BoYCDp_9.js → kanban-definition-3W4ZIXB7-CiTIpnhy.js} +7 -7
  104. package/dist/{label-CxU5JNBW.js → label-Cc5tEavt.js} +250 -250
  105. package/dist/{loader-C0-eIoas.js → loader-Cob3XFOw.js} +2 -2
  106. package/dist/main.js +1791 -1056
  107. package/dist/{memoize-Bag7B41I.js → memoize-Ckyqzyu_.js} +1 -1
  108. package/dist/{merge-Dl1bfxsj.js → merge-Db4Uulx4.js} +1 -1
  109. package/dist/{mermaid-C2cSe5YL.js → mermaid-B5xl_2hx.js} +73 -62
  110. package/dist/{mermaid-parser.core-D20zFbMa.js → mermaid-parser.core-BXj7Il0J.js} +8 -8
  111. package/dist/{min-Bg4bqmiD.js → min-ypdVXicC.js} +4 -4
  112. package/dist/{mindmap-definition-VGOIOE7T-CmRjsKEt.js → mindmap-definition-VGOIOE7T-Mni766A_.js} +9 -9
  113. package/dist/{now-mivqkCIv.js → now-Dwu5ou19.js} +2 -2
  114. package/dist/{once-BqS42WgZ.js → once-C9dA9qgQ.js} +1 -1
  115. package/dist/{packet-BFZMPI3H-C6aZmgV-.js → packet-BFZMPI3H-DHtQCusE.js} +3 -3
  116. package/dist/{pie-7BOR55EZ-NB6xYwcB.js → pie-7BOR55EZ-2sVLYbpR.js} +3 -3
  117. package/dist/{pieDiagram-ADFJNKIX-CtxQlnsU.js → pieDiagram-ADFJNKIX-PbXpgT8_.js} +14 -14
  118. package/dist/{quadrantDiagram-AYHSOK5B-DllnB2Hl.js → quadrantDiagram-AYHSOK5B-BtXGnx8i.js} +2 -2
  119. package/dist/{radar-NHE76QYJ-RKhErikV.js → radar-NHE76QYJ-Be0pEUux.js} +3 -3
  120. package/dist/{range-LoQMRQIX.js → range-D9jxVFd_.js} +5 -5
  121. package/dist/{reduce-B9mZDxPo.js → reduce-C6NEPj6s.js} +4 -4
  122. package/dist/{requirementDiagram-UZGBJVZJ-D36MI1k0.js → requirementDiagram-UZGBJVZJ-DxzXQRgq.js} +9 -9
  123. package/dist/{sankeyDiagram-TZEHDZUN-D1mygNPC.js → sankeyDiagram-TZEHDZUN-D-I7dJ0_.js} +2 -2
  124. package/dist/{sequenceDiagram-WL72ISMW-CWdn91Rf.js → sequenceDiagram-WL72ISMW-VDme2ljw.js} +4 -4
  125. package/dist/{slides-component-DfwLApNr.js → slides-component-ql7-5GDI.js} +2 -2
  126. package/dist/{spec-HoYHAQo2.js → spec-GwhMEXwK.js} +8 -9
  127. package/dist/{stateDiagram-FKZM4ZOC-CPxroWXd.js → stateDiagram-FKZM4ZOC-g3GI1EcK.js} +12 -12
  128. package/dist/{stateDiagram-v2-4FDKWEC3-BpM9Q54b.js → stateDiagram-v2-4FDKWEC3-7i6jBXe6.js} +10 -10
  129. package/dist/stex-D2rme5UG.js +4 -0
  130. package/dist/style.css +1 -1
  131. package/dist/{timeline-definition-IT6M3QCI-CVnRHx_t.js → timeline-definition-IT6M3QCI-bhvLlX_b.js} +2 -2
  132. package/dist/{toString-C4TLO6FA.js → toString-BwTJvlyD.js} +2 -2
  133. package/dist/tooltip-CL8m4f9y.js +404 -0
  134. package/dist/{treemap-KMMF4GRG-B37ugcLd.js → treemap-KMMF4GRG-Ba9ifjpG.js} +3 -3
  135. package/dist/{types-Ckva8JJq.js → types-Dsh6yC4B.js} +412 -413
  136. package/dist/{useAsyncData-dr8GazGv.js → useAsyncData-BPpyKjTJ.js} +2 -2
  137. package/dist/{useDeepCompareMemoize-ChviuF5n.js → useDeepCompareMemoize-C8Ms87P-.js} +18 -19
  138. package/dist/{useIframeCapabilities-DurI5SJh.js → useIframeCapabilities-C7z8VrZ1.js} +2 -2
  139. package/dist/{useTheme-SlKl8MlS.js → useTheme-Cq-gIssy.js} +299 -300
  140. package/dist/{vega-component-CnG0vAjf.js → vega-component-B5sxdjMq.js} +10 -10
  141. package/dist/{xychartDiagram-PRI3JC2R-BltwMWKC.js → xychartDiagram-PRI3JC2R-CFxuifYY.js} +5 -5
  142. package/package.json +1 -1
  143. package/src/components/editor/Output.tsx +8 -6
  144. package/src/components/editor/__tests__/Output.test.tsx +59 -0
  145. package/src/components/editor/chrome/__tests__/state.test.ts +321 -0
  146. package/src/components/editor/chrome/state.ts +27 -2
  147. package/src/components/editor/file-tree/upload.tsx +46 -23
  148. package/src/components/editor/links/cell-link.tsx +3 -2
  149. package/src/components/editor/output/console/ConsoleOutput.tsx +13 -3
  150. package/src/components/pages/gallery-page.tsx +1 -1
  151. package/src/components/pages/home-page.tsx +5 -3
  152. package/src/components/tracing/tracing.tsx +50 -39
  153. package/src/core/documentation/DocHoverTarget.tsx +23 -0
  154. package/src/core/documentation/doc-lookup.ts +50 -0
  155. package/src/core/islands/main.ts +1 -0
  156. package/src/core/websocket/useMarimoKernelConnection.tsx +3 -0
  157. package/src/css/app/Cell.css +5 -0
  158. package/src/mount.tsx +2 -2
  159. package/src/plugins/core/RenderHTML.tsx +15 -0
  160. package/src/plugins/core/__test__/registerReactComponent.test.ts +204 -0
  161. package/src/plugins/core/registerReactComponent.tsx +33 -0
  162. package/src/plugins/impl/MatrixPlugin.tsx +275 -0
  163. package/src/plugins/impl/__tests__/MatrixPlugin.test.tsx +415 -0
  164. package/src/plugins/impl/anywidget/model.ts +1 -2
  165. package/src/plugins/impl/matplotlib/MatplotlibPlugin.tsx +70 -0
  166. package/src/plugins/impl/matplotlib/__tests__/matplotlib-renderer.test.ts +152 -0
  167. package/src/plugins/impl/matplotlib/matplotlib-renderer.ts +781 -0
  168. package/src/plugins/impl/matrix.css +45 -0
  169. package/src/plugins/layout/mermaid/mermaid.tsx +11 -3
  170. package/src/plugins/plugins.ts +4 -0
  171. package/src/utils/__tests__/download.test.tsx +47 -0
  172. package/src/utils/download.ts +13 -1
  173. package/src/utils/links.ts +1 -1
  174. package/src/utils/urls.ts +1 -1
  175. package/dist/Combination-BTMrlhzT.js +0 -2611
  176. package/dist/architecture-U656AL7Q-COfwZju8.js +0 -6
  177. package/dist/dist-4YNZxwMI.js +0 -8
  178. package/dist/dist-7nR3r2kG.js +0 -5
  179. package/dist/dist-B2gkyT3r.js +0 -5
  180. package/dist/dist-B8G3I6vJ.js +0 -8
  181. package/dist/dist-BJ96Ykfp.js +0 -8
  182. package/dist/dist-BKLIWGw4.js +0 -5
  183. package/dist/dist-Bf3ou00A.js +0 -6
  184. package/dist/dist-BvkKXuPm.js +0 -5
  185. package/dist/dist-C6NJ3n6r.js +0 -5
  186. package/dist/dist-CecLPYY5.js +0 -5
  187. package/dist/dist-Ch0SwRzK.js +0 -5
  188. package/dist/dist-D6eWHiFh.js +0 -6
  189. package/dist/dist-DCQ710Bv.js +0 -5
  190. package/dist/dist-P_pkS5f-.js +0 -8
  191. package/dist/error-banner-D2zjeN_a.js +0 -1015
  192. package/dist/hotkeys-B5WnGZXF.js +0 -587
  193. package/dist/stex-ChDHQs3R.js +0 -4
  194. package/dist/zod-bjADtMKr.js +0 -10663
  195. /package/dist/{_arrayReduce-DlK7U3Q6.js → _arrayReduce-REKcIEj3.js} +0 -0
  196. /package/dist/{_baseFor-DSVmVciX.js → _baseFor-B69PDbIz.js} +0 -0
  197. /package/dist/{_hasUnicode-Bz2x6u6r.js → _hasUnicode-DrSAc5A5.js} +0 -0
  198. /package/dist/{dist-r8ecBV-v.js → dist-CUOuFgHt.js} +0 -0
  199. /package/dist/{invariant-D9QLJ4SZ.js → invariant-D-K49MfV.js} +0 -0
  200. /package/dist/{main-DhFbkwoC.js → main-DmxVpB19.js} +0 -0
  201. /package/dist/{purify.es-Brw-U87Q.js → purify.es-D4vaFt5N.js} +0 -0
  202. /package/dist/{stex-DrxP7bb3.js → stex-DIvyJfNO.js} +0 -0
@@ -0,0 +1,1381 @@
1
+ import { s as __toESM } from "./chunk-BNovOVIE.js";
2
+ import { t as require_react } from "./react-Bs6Z0kvn.js";
3
+ import { m as useComposedRefs } from "./button-KYalaJYu.js";
4
+ import { _t as createContextScope, dt as useCallbackRef, ft as Primitive, lt as useLayoutEffect2 } from "./Combination-Du-o_hC9.js";
5
+ import { t as require_jsx_runtime } from "./jsx-runtime-CTBg5pdT.js";
6
+ import { t as require_react_dom } from "./react-dom-CqtLRVZP.js";
7
+ /**
8
+ * @license lucide-react v0.563.0 - ISC
9
+ *
10
+ * This source code is licensed under the ISC license.
11
+ * See the LICENSE file in the root directory of this source tree.
12
+ */
13
+ var mergeClasses = (...e) => e.filter((e2, s, c) => !!e2 && e2.trim() !== "" && c.indexOf(e2) === s).join(" ").trim(), toKebabCase = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), toCamelCase = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e2, s, c) => c ? c.toUpperCase() : s.toLowerCase()), toPascalCase = (e) => {
14
+ let s = toCamelCase(e);
15
+ return s.charAt(0).toUpperCase() + s.slice(1);
16
+ }, defaultAttributes = {
17
+ xmlns: "http://www.w3.org/2000/svg",
18
+ width: 24,
19
+ height: 24,
20
+ viewBox: "0 0 24 24",
21
+ fill: "none",
22
+ stroke: "currentColor",
23
+ strokeWidth: 2,
24
+ strokeLinecap: "round",
25
+ strokeLinejoin: "round"
26
+ }, hasA11yProp = (e) => {
27
+ for (let s in e) if (s.startsWith("aria-") || s === "role" || s === "title") return true;
28
+ return false;
29
+ }, import_react = /* @__PURE__ */ __toESM(require_react()), Icon = (0, import_react.forwardRef)(({ color: e = "currentColor", size: s = 24, strokeWidth: c = 2, absoluteStrokeWidth: l, className: u = "", children: d, iconNode: f, ...p }, m) => (0, import_react.createElement)("svg", {
30
+ ref: m,
31
+ ...defaultAttributes,
32
+ width: s,
33
+ height: s,
34
+ stroke: e,
35
+ strokeWidth: l ? Number(c) * 24 / Number(s) : c,
36
+ className: mergeClasses("lucide", u),
37
+ ...!d && !hasA11yProp(p) && { "aria-hidden": "true" },
38
+ ...p
39
+ }, [...f.map(([e2, s2]) => (0, import_react.createElement)(e2, s2)), ...Array.isArray(d) ? d : [d]])), createLucideIcon = (e, s) => {
40
+ let c = (0, import_react.forwardRef)(({ className: c2, ...l }, u) => (0, import_react.createElement)(Icon, {
41
+ ref: u,
42
+ iconNode: s,
43
+ className: mergeClasses(`lucide-${toKebabCase(toPascalCase(e))}`, `lucide-${e}`, c2),
44
+ ...l
45
+ }));
46
+ return c.displayName = toPascalCase(e), c;
47
+ }, sides = [
48
+ "top",
49
+ "right",
50
+ "bottom",
51
+ "left"
52
+ ], min = Math.min, max = Math.max, round = Math.round, floor = Math.floor, createCoords = (e) => ({
53
+ x: e,
54
+ y: e
55
+ }), oppositeSideMap = {
56
+ left: "right",
57
+ right: "left",
58
+ bottom: "top",
59
+ top: "bottom"
60
+ }, oppositeAlignmentMap = {
61
+ start: "end",
62
+ end: "start"
63
+ };
64
+ function clamp(e, s, c) {
65
+ return max(e, min(s, c));
66
+ }
67
+ function evaluate(e, s) {
68
+ return typeof e == "function" ? e(s) : e;
69
+ }
70
+ function getSide(e) {
71
+ return e.split("-")[0];
72
+ }
73
+ function getAlignment(e) {
74
+ return e.split("-")[1];
75
+ }
76
+ function getOppositeAxis(e) {
77
+ return e === "x" ? "y" : "x";
78
+ }
79
+ function getAxisLength(e) {
80
+ return e === "y" ? "height" : "width";
81
+ }
82
+ var yAxisSides = /* @__PURE__ */ new Set(["top", "bottom"]);
83
+ function getSideAxis(e) {
84
+ return yAxisSides.has(getSide(e)) ? "y" : "x";
85
+ }
86
+ function getAlignmentAxis(e) {
87
+ return getOppositeAxis(getSideAxis(e));
88
+ }
89
+ function getAlignmentSides(e, s, c) {
90
+ c === void 0 && (c = false);
91
+ let l = getAlignment(e), u = getAlignmentAxis(e), d = getAxisLength(u), f = u === "x" ? l === (c ? "end" : "start") ? "right" : "left" : l === "start" ? "bottom" : "top";
92
+ return s.reference[d] > s.floating[d] && (f = getOppositePlacement(f)), [f, getOppositePlacement(f)];
93
+ }
94
+ function getExpandedPlacements(e) {
95
+ let s = getOppositePlacement(e);
96
+ return [
97
+ getOppositeAlignmentPlacement(e),
98
+ s,
99
+ getOppositeAlignmentPlacement(s)
100
+ ];
101
+ }
102
+ function getOppositeAlignmentPlacement(e) {
103
+ return e.replace(/start|end/g, (e2) => oppositeAlignmentMap[e2]);
104
+ }
105
+ var lrPlacement = ["left", "right"], rlPlacement = ["right", "left"], tbPlacement = ["top", "bottom"], btPlacement = ["bottom", "top"];
106
+ function getSideList(e, s, c) {
107
+ switch (e) {
108
+ case "top":
109
+ case "bottom":
110
+ return c ? s ? rlPlacement : lrPlacement : s ? lrPlacement : rlPlacement;
111
+ case "left":
112
+ case "right":
113
+ return s ? tbPlacement : btPlacement;
114
+ default:
115
+ return [];
116
+ }
117
+ }
118
+ function getOppositeAxisPlacements(e, s, c, l) {
119
+ let u = getAlignment(e), d = getSideList(getSide(e), c === "start", l);
120
+ return u && (d = d.map((e2) => e2 + "-" + u), s && (d = d.concat(d.map(getOppositeAlignmentPlacement)))), d;
121
+ }
122
+ function getOppositePlacement(e) {
123
+ return e.replace(/left|right|bottom|top/g, (e2) => oppositeSideMap[e2]);
124
+ }
125
+ function expandPaddingObject(e) {
126
+ return {
127
+ top: 0,
128
+ right: 0,
129
+ bottom: 0,
130
+ left: 0,
131
+ ...e
132
+ };
133
+ }
134
+ function getPaddingObject(e) {
135
+ return typeof e == "number" ? {
136
+ top: e,
137
+ right: e,
138
+ bottom: e,
139
+ left: e
140
+ } : expandPaddingObject(e);
141
+ }
142
+ function rectToClientRect(e) {
143
+ let { x: s, y: c, width: l, height: u } = e;
144
+ return {
145
+ width: l,
146
+ height: u,
147
+ top: c,
148
+ left: s,
149
+ right: s + l,
150
+ bottom: c + u,
151
+ x: s,
152
+ y: c
153
+ };
154
+ }
155
+ function computeCoordsFromPlacement(e, s, c) {
156
+ let { reference: l, floating: u } = e, d = getSideAxis(s), f = getAlignmentAxis(s), p = getAxisLength(f), m = getSide(s), h = d === "y", g = l.x + l.width / 2 - u.width / 2, _ = l.y + l.height / 2 - u.height / 2, v = l[p] / 2 - u[p] / 2, y;
157
+ switch (m) {
158
+ case "top":
159
+ y = {
160
+ x: g,
161
+ y: l.y - u.height
162
+ };
163
+ break;
164
+ case "bottom":
165
+ y = {
166
+ x: g,
167
+ y: l.y + l.height
168
+ };
169
+ break;
170
+ case "right":
171
+ y = {
172
+ x: l.x + l.width,
173
+ y: _
174
+ };
175
+ break;
176
+ case "left":
177
+ y = {
178
+ x: l.x - u.width,
179
+ y: _
180
+ };
181
+ break;
182
+ default:
183
+ y = {
184
+ x: l.x,
185
+ y: l.y
186
+ };
187
+ }
188
+ switch (getAlignment(s)) {
189
+ case "start":
190
+ y[f] -= v * (c && h ? -1 : 1);
191
+ break;
192
+ case "end":
193
+ y[f] += v * (c && h ? -1 : 1);
194
+ break;
195
+ }
196
+ return y;
197
+ }
198
+ var computePosition$1 = async (e, s, c) => {
199
+ let { placement: l = "bottom", strategy: u = "absolute", middleware: d = [], platform: f } = c, p = d.filter(Boolean), m = await (f.isRTL == null ? void 0 : f.isRTL(s)), h = await f.getElementRects({
200
+ reference: e,
201
+ floating: s,
202
+ strategy: u
203
+ }), { x: g, y: _ } = computeCoordsFromPlacement(h, l, m), v = l, y = {}, b = 0;
204
+ for (let c2 = 0; c2 < p.length; c2++) {
205
+ let { name: d2, fn: x } = p[c2], { x: S, y: C, data: w, reset: T } = await x({
206
+ x: g,
207
+ y: _,
208
+ initialPlacement: l,
209
+ placement: v,
210
+ strategy: u,
211
+ middlewareData: y,
212
+ rects: h,
213
+ platform: f,
214
+ elements: {
215
+ reference: e,
216
+ floating: s
217
+ }
218
+ });
219
+ g = S ?? g, _ = C ?? _, y = {
220
+ ...y,
221
+ [d2]: {
222
+ ...y[d2],
223
+ ...w
224
+ }
225
+ }, T && b <= 50 && (b++, typeof T == "object" && (T.placement && (v = T.placement), T.rects && (h = T.rects === true ? await f.getElementRects({
226
+ reference: e,
227
+ floating: s,
228
+ strategy: u
229
+ }) : T.rects), { x: g, y: _ } = computeCoordsFromPlacement(h, v, m)), c2 = -1);
230
+ }
231
+ return {
232
+ x: g,
233
+ y: _,
234
+ placement: v,
235
+ strategy: u,
236
+ middlewareData: y
237
+ };
238
+ };
239
+ async function detectOverflow$1(e, s) {
240
+ s === void 0 && (s = {});
241
+ let { x: c, y: l, platform: u, rects: d, elements: f, strategy: p } = e, { boundary: m = "clippingAncestors", rootBoundary: h = "viewport", elementContext: g = "floating", altBoundary: _ = false, padding: v = 0 } = evaluate(s, e), y = getPaddingObject(v), b = f[_ ? g === "floating" ? "reference" : "floating" : g], x = rectToClientRect(await u.getClippingRect({
242
+ element: await (u.isElement == null ? void 0 : u.isElement(b)) ?? true ? b : b.contextElement || await (u.getDocumentElement == null ? void 0 : u.getDocumentElement(f.floating)),
243
+ boundary: m,
244
+ rootBoundary: h,
245
+ strategy: p
246
+ })), S = g === "floating" ? {
247
+ x: c,
248
+ y: l,
249
+ width: d.floating.width,
250
+ height: d.floating.height
251
+ } : d.reference, C = await (u.getOffsetParent == null ? void 0 : u.getOffsetParent(f.floating)), w = await (u.isElement == null ? void 0 : u.isElement(C)) && await (u.getScale == null ? void 0 : u.getScale(C)) || {
252
+ x: 1,
253
+ y: 1
254
+ }, T = rectToClientRect(u.convertOffsetParentRelativeRectToViewportRelativeRect ? await u.convertOffsetParentRelativeRectToViewportRelativeRect({
255
+ elements: f,
256
+ rect: S,
257
+ offsetParent: C,
258
+ strategy: p
259
+ }) : S);
260
+ return {
261
+ top: (x.top - T.top + y.top) / w.y,
262
+ bottom: (T.bottom - x.bottom + y.bottom) / w.y,
263
+ left: (x.left - T.left + y.left) / w.x,
264
+ right: (T.right - x.right + y.right) / w.x
265
+ };
266
+ }
267
+ var arrow$2 = (e) => ({
268
+ name: "arrow",
269
+ options: e,
270
+ async fn(s) {
271
+ let { x: c, y: l, placement: u, rects: d, platform: f, elements: p, middlewareData: m } = s, { element: h, padding: g = 0 } = evaluate(e, s) || {};
272
+ if (h == null) return {};
273
+ let _ = getPaddingObject(g), v = {
274
+ x: c,
275
+ y: l
276
+ }, y = getAlignmentAxis(u), b = getAxisLength(y), x = await f.getDimensions(h), S = y === "y", C = S ? "top" : "left", w = S ? "bottom" : "right", E = S ? "clientHeight" : "clientWidth", D = d.reference[b] + d.reference[y] - v[y] - d.floating[b], O = v[y] - d.reference[y], k = await (f.getOffsetParent == null ? void 0 : f.getOffsetParent(h)), A = k ? k[E] : 0;
277
+ (!A || !await (f.isElement == null ? void 0 : f.isElement(k))) && (A = p.floating[E] || d.floating[b]);
278
+ let j = D / 2 - O / 2, P = A / 2 - x[b] / 2 - 1, I = min(_[C], P), R = min(_[w], P), z = I, V = A - x[b] - R, H = A / 2 - x[b] / 2 + j, U = clamp(z, H, V), W = !m.arrow && getAlignment(u) != null && H !== U && d.reference[b] / 2 - (H < z ? I : R) - x[b] / 2 < 0, G = W ? H < z ? H - z : H - V : 0;
279
+ return {
280
+ [y]: v[y] + G,
281
+ data: {
282
+ [y]: U,
283
+ centerOffset: H - U - G,
284
+ ...W && { alignmentOffset: G }
285
+ },
286
+ reset: W
287
+ };
288
+ }
289
+ }), flip$2 = function(e) {
290
+ return e === void 0 && (e = {}), {
291
+ name: "flip",
292
+ options: e,
293
+ async fn(s) {
294
+ var _a, _b, _c, _d;
295
+ var c;
296
+ let { placement: l, middlewareData: u, rects: d, initialPlacement: f, platform: p, elements: m } = s, { mainAxis: h = true, crossAxis: g = true, fallbackPlacements: _, fallbackStrategy: v = "bestFit", fallbackAxisSideDirection: y = "none", flipAlignment: b = true, ...x } = evaluate(e, s);
297
+ if ((c = u.arrow) != null && c.alignmentOffset) return {};
298
+ let S = getSide(l), C = getSideAxis(f), w = getSide(f) === f, T = await (p.isRTL == null ? void 0 : p.isRTL(m.floating)), E = _ || (w || !b ? [getOppositePlacement(f)] : getExpandedPlacements(f)), D = y !== "none";
299
+ !_ && D && E.push(...getOppositeAxisPlacements(f, b, y, T));
300
+ let O = [f, ...E], k = await detectOverflow$1(s, x), A = [], j = ((_a = u.flip) == null ? void 0 : _a.overflows) || [];
301
+ if (h && A.push(k[S]), g) {
302
+ let e2 = getAlignmentSides(l, d, T);
303
+ A.push(k[e2[0]], k[e2[1]]);
304
+ }
305
+ if (j = [...j, {
306
+ placement: l,
307
+ overflows: A
308
+ }], !A.every((e2) => e2 <= 0)) {
309
+ let e2 = (((_b = u.flip) == null ? void 0 : _b.index) || 0) + 1, s2 = O[e2];
310
+ if (s2 && (!(g === "alignment" && C !== getSideAxis(s2)) || j.every((e3) => e3.overflows[0] > 0 && getSideAxis(e3.placement) === C))) return {
311
+ data: {
312
+ index: e2,
313
+ overflows: j
314
+ },
315
+ reset: { placement: s2 }
316
+ };
317
+ let c2 = (_c = j.filter((e3) => e3.overflows[0] <= 0).sort((e3, s3) => e3.overflows[1] - s3.overflows[1])[0]) == null ? void 0 : _c.placement;
318
+ if (!c2) switch (v) {
319
+ case "bestFit": {
320
+ let e3 = (_d = j.filter((e4) => {
321
+ if (D) {
322
+ let s3 = getSideAxis(e4.placement);
323
+ return s3 === C || s3 === "y";
324
+ }
325
+ return true;
326
+ }).map((e4) => [e4.placement, e4.overflows.filter((e5) => e5 > 0).reduce((e5, s3) => e5 + s3, 0)]).sort((e4, s3) => e4[1] - s3[1])[0]) == null ? void 0 : _d[0];
327
+ e3 && (c2 = e3);
328
+ break;
329
+ }
330
+ case "initialPlacement":
331
+ c2 = f;
332
+ break;
333
+ }
334
+ if (l !== c2) return { reset: { placement: c2 } };
335
+ }
336
+ return {};
337
+ }
338
+ };
339
+ };
340
+ function getSideOffsets(e, s) {
341
+ return {
342
+ top: e.top - s.height,
343
+ right: e.right - s.width,
344
+ bottom: e.bottom - s.height,
345
+ left: e.left - s.width
346
+ };
347
+ }
348
+ function isAnySideFullyClipped(e) {
349
+ return sides.some((s) => e[s] >= 0);
350
+ }
351
+ var hide$2 = function(e) {
352
+ return e === void 0 && (e = {}), {
353
+ name: "hide",
354
+ options: e,
355
+ async fn(s) {
356
+ let { rects: c } = s, { strategy: l = "referenceHidden", ...u } = evaluate(e, s);
357
+ switch (l) {
358
+ case "referenceHidden": {
359
+ let e2 = getSideOffsets(await detectOverflow$1(s, {
360
+ ...u,
361
+ elementContext: "reference"
362
+ }), c.reference);
363
+ return { data: {
364
+ referenceHiddenOffsets: e2,
365
+ referenceHidden: isAnySideFullyClipped(e2)
366
+ } };
367
+ }
368
+ case "escaped": {
369
+ let e2 = getSideOffsets(await detectOverflow$1(s, {
370
+ ...u,
371
+ altBoundary: true
372
+ }), c.floating);
373
+ return { data: {
374
+ escapedOffsets: e2,
375
+ escaped: isAnySideFullyClipped(e2)
376
+ } };
377
+ }
378
+ default:
379
+ return {};
380
+ }
381
+ }
382
+ };
383
+ }, originSides = /* @__PURE__ */ new Set(["left", "top"]);
384
+ async function convertValueToCoords(e, s) {
385
+ let { placement: c, platform: l, elements: u } = e, d = await (l.isRTL == null ? void 0 : l.isRTL(u.floating)), f = getSide(c), p = getAlignment(c), m = getSideAxis(c) === "y", h = originSides.has(f) ? -1 : 1, g = d && m ? -1 : 1, _ = evaluate(s, e), { mainAxis: v, crossAxis: y, alignmentAxis: b } = typeof _ == "number" ? {
386
+ mainAxis: _,
387
+ crossAxis: 0,
388
+ alignmentAxis: null
389
+ } : {
390
+ mainAxis: _.mainAxis || 0,
391
+ crossAxis: _.crossAxis || 0,
392
+ alignmentAxis: _.alignmentAxis
393
+ };
394
+ return p && typeof b == "number" && (y = p === "end" ? b * -1 : b), m ? {
395
+ x: y * g,
396
+ y: v * h
397
+ } : {
398
+ x: v * h,
399
+ y: y * g
400
+ };
401
+ }
402
+ var offset$2 = function(e) {
403
+ return e === void 0 && (e = 0), {
404
+ name: "offset",
405
+ options: e,
406
+ async fn(s) {
407
+ var _a;
408
+ var c;
409
+ let { x: l, y: u, placement: d, middlewareData: f } = s, p = await convertValueToCoords(s, e);
410
+ return d === ((_a = f.offset) == null ? void 0 : _a.placement) && (c = f.arrow) != null && c.alignmentOffset ? {} : {
411
+ x: l + p.x,
412
+ y: u + p.y,
413
+ data: {
414
+ ...p,
415
+ placement: d
416
+ }
417
+ };
418
+ }
419
+ };
420
+ }, shift$2 = function(e) {
421
+ return e === void 0 && (e = {}), {
422
+ name: "shift",
423
+ options: e,
424
+ async fn(s) {
425
+ let { x: c, y: l, placement: u } = s, { mainAxis: d = true, crossAxis: f = false, limiter: p = { fn: (e2) => {
426
+ let { x: s2, y: c2 } = e2;
427
+ return {
428
+ x: s2,
429
+ y: c2
430
+ };
431
+ } }, ...m } = evaluate(e, s), h = {
432
+ x: c,
433
+ y: l
434
+ }, g = await detectOverflow$1(s, m), _ = getSideAxis(getSide(u)), v = getOppositeAxis(_), y = h[v], b = h[_];
435
+ if (d) {
436
+ let e2 = v === "y" ? "top" : "left", s2 = v === "y" ? "bottom" : "right", c2 = y + g[e2], l2 = y - g[s2];
437
+ y = clamp(c2, y, l2);
438
+ }
439
+ if (f) {
440
+ let e2 = _ === "y" ? "top" : "left", s2 = _ === "y" ? "bottom" : "right", c2 = b + g[e2], l2 = b - g[s2];
441
+ b = clamp(c2, b, l2);
442
+ }
443
+ let x = p.fn({
444
+ ...s,
445
+ [v]: y,
446
+ [_]: b
447
+ });
448
+ return {
449
+ ...x,
450
+ data: {
451
+ x: x.x - c,
452
+ y: x.y - l,
453
+ enabled: {
454
+ [v]: d,
455
+ [_]: f
456
+ }
457
+ }
458
+ };
459
+ }
460
+ };
461
+ }, limitShift$2 = function(e) {
462
+ return e === void 0 && (e = {}), {
463
+ options: e,
464
+ fn(s) {
465
+ var _a, _b;
466
+ let { x: c, y: l, placement: u, rects: d, middlewareData: f } = s, { offset: p = 0, mainAxis: m = true, crossAxis: h = true } = evaluate(e, s), g = {
467
+ x: c,
468
+ y: l
469
+ }, _ = getSideAxis(u), v = getOppositeAxis(_), y = g[v], b = g[_], x = evaluate(p, s), S = typeof x == "number" ? {
470
+ mainAxis: x,
471
+ crossAxis: 0
472
+ } : {
473
+ mainAxis: 0,
474
+ crossAxis: 0,
475
+ ...x
476
+ };
477
+ if (m) {
478
+ let e2 = v === "y" ? "height" : "width", s2 = d.reference[v] - d.floating[e2] + S.mainAxis, c2 = d.reference[v] + d.reference[e2] - S.mainAxis;
479
+ y < s2 ? y = s2 : y > c2 && (y = c2);
480
+ }
481
+ if (h) {
482
+ let e2 = v === "y" ? "width" : "height", s2 = originSides.has(getSide(u)), c2 = d.reference[_] - d.floating[e2] + (s2 && ((_a = f.offset) == null ? void 0 : _a[_]) || 0) + (s2 ? 0 : S.crossAxis), l2 = d.reference[_] + d.reference[e2] + (s2 ? 0 : ((_b = f.offset) == null ? void 0 : _b[_]) || 0) - (s2 ? S.crossAxis : 0);
483
+ b < c2 ? b = c2 : b > l2 && (b = l2);
484
+ }
485
+ return {
486
+ [v]: y,
487
+ [_]: b
488
+ };
489
+ }
490
+ };
491
+ }, size$2 = function(e) {
492
+ return e === void 0 && (e = {}), {
493
+ name: "size",
494
+ options: e,
495
+ async fn(s) {
496
+ var c, l;
497
+ let { placement: u, rects: d, platform: f, elements: p } = s, { apply: m = () => {
498
+ }, ...h } = evaluate(e, s), g = await detectOverflow$1(s, h), _ = getSide(u), v = getAlignment(u), y = getSideAxis(u) === "y", { width: b, height: x } = d.floating, S, C;
499
+ _ === "top" || _ === "bottom" ? (S = _, C = v === (await (f.isRTL == null ? void 0 : f.isRTL(p.floating)) ? "start" : "end") ? "left" : "right") : (C = _, S = v === "end" ? "top" : "bottom");
500
+ let w = x - g.top - g.bottom, D = b - g.left - g.right, O = min(x - g[S], w), k = min(b - g[C], D), A = !s.middlewareData.shift, j = O, M = k;
501
+ if ((c = s.middlewareData.shift) != null && c.enabled.x && (M = D), (l = s.middlewareData.shift) != null && l.enabled.y && (j = w), A && !v) {
502
+ let e2 = max(g.left, 0), s2 = max(g.right, 0), c2 = max(g.top, 0), l2 = max(g.bottom, 0);
503
+ y ? M = b - 2 * (e2 !== 0 || s2 !== 0 ? e2 + s2 : max(g.left, g.right)) : j = x - 2 * (c2 !== 0 || l2 !== 0 ? c2 + l2 : max(g.top, g.bottom));
504
+ }
505
+ await m({
506
+ ...s,
507
+ availableWidth: M,
508
+ availableHeight: j
509
+ });
510
+ let I = await f.getDimensions(p.floating);
511
+ return b !== I.width || x !== I.height ? { reset: { rects: true } } : {};
512
+ }
513
+ };
514
+ };
515
+ function hasWindow() {
516
+ return typeof window < "u";
517
+ }
518
+ function getNodeName(e) {
519
+ return isNode(e) ? (e.nodeName || "").toLowerCase() : "#document";
520
+ }
521
+ function getWindow(e) {
522
+ var s;
523
+ return (e == null || (s = e.ownerDocument) == null ? void 0 : s.defaultView) || window;
524
+ }
525
+ function getDocumentElement(e) {
526
+ var _a;
527
+ return (_a = (isNode(e) ? e.ownerDocument : e.document) || window.document) == null ? void 0 : _a.documentElement;
528
+ }
529
+ function isNode(e) {
530
+ return hasWindow() ? e instanceof Node || e instanceof getWindow(e).Node : false;
531
+ }
532
+ function isElement(e) {
533
+ return hasWindow() ? e instanceof Element || e instanceof getWindow(e).Element : false;
534
+ }
535
+ function isHTMLElement(e) {
536
+ return hasWindow() ? e instanceof HTMLElement || e instanceof getWindow(e).HTMLElement : false;
537
+ }
538
+ function isShadowRoot(e) {
539
+ return !hasWindow() || typeof ShadowRoot > "u" ? false : e instanceof ShadowRoot || e instanceof getWindow(e).ShadowRoot;
540
+ }
541
+ var invalidOverflowDisplayValues = /* @__PURE__ */ new Set(["inline", "contents"]);
542
+ function isOverflowElement(e) {
543
+ let { overflow: s, overflowX: c, overflowY: l, display: u } = getComputedStyle(e);
544
+ return /auto|scroll|overlay|hidden|clip/.test(s + l + c) && !invalidOverflowDisplayValues.has(u);
545
+ }
546
+ var tableElements = /* @__PURE__ */ new Set([
547
+ "table",
548
+ "td",
549
+ "th"
550
+ ]);
551
+ function isTableElement(e) {
552
+ return tableElements.has(getNodeName(e));
553
+ }
554
+ var topLayerSelectors = [":popover-open", ":modal"];
555
+ function isTopLayer(e) {
556
+ return topLayerSelectors.some((s) => {
557
+ try {
558
+ return e.matches(s);
559
+ } catch {
560
+ return false;
561
+ }
562
+ });
563
+ }
564
+ var transformProperties = [
565
+ "transform",
566
+ "translate",
567
+ "scale",
568
+ "rotate",
569
+ "perspective"
570
+ ], willChangeValues = [
571
+ "transform",
572
+ "translate",
573
+ "scale",
574
+ "rotate",
575
+ "perspective",
576
+ "filter"
577
+ ], containValues = [
578
+ "paint",
579
+ "layout",
580
+ "strict",
581
+ "content"
582
+ ];
583
+ function isContainingBlock(e) {
584
+ let s = isWebKit(), c = isElement(e) ? getComputedStyle(e) : e;
585
+ return transformProperties.some((e2) => c[e2] ? c[e2] !== "none" : false) || (c.containerType ? c.containerType !== "normal" : false) || !s && (c.backdropFilter ? c.backdropFilter !== "none" : false) || !s && (c.filter ? c.filter !== "none" : false) || willChangeValues.some((e2) => (c.willChange || "").includes(e2)) || containValues.some((e2) => (c.contain || "").includes(e2));
586
+ }
587
+ function getContainingBlock(e) {
588
+ let s = getParentNode(e);
589
+ for (; isHTMLElement(s) && !isLastTraversableNode(s); ) {
590
+ if (isContainingBlock(s)) return s;
591
+ if (isTopLayer(s)) return null;
592
+ s = getParentNode(s);
593
+ }
594
+ return null;
595
+ }
596
+ function isWebKit() {
597
+ return typeof CSS > "u" || !CSS.supports ? false : CSS.supports("-webkit-backdrop-filter", "none");
598
+ }
599
+ var lastTraversableNodeNames = /* @__PURE__ */ new Set([
600
+ "html",
601
+ "body",
602
+ "#document"
603
+ ]);
604
+ function isLastTraversableNode(e) {
605
+ return lastTraversableNodeNames.has(getNodeName(e));
606
+ }
607
+ function getComputedStyle(e) {
608
+ return getWindow(e).getComputedStyle(e);
609
+ }
610
+ function getNodeScroll(e) {
611
+ return isElement(e) ? {
612
+ scrollLeft: e.scrollLeft,
613
+ scrollTop: e.scrollTop
614
+ } : {
615
+ scrollLeft: e.scrollX,
616
+ scrollTop: e.scrollY
617
+ };
618
+ }
619
+ function getParentNode(e) {
620
+ if (getNodeName(e) === "html") return e;
621
+ let s = e.assignedSlot || e.parentNode || isShadowRoot(e) && e.host || getDocumentElement(e);
622
+ return isShadowRoot(s) ? s.host : s;
623
+ }
624
+ function getNearestOverflowAncestor(e) {
625
+ let s = getParentNode(e);
626
+ return isLastTraversableNode(s) ? e.ownerDocument ? e.ownerDocument.body : e.body : isHTMLElement(s) && isOverflowElement(s) ? s : getNearestOverflowAncestor(s);
627
+ }
628
+ function getOverflowAncestors(e, s, c) {
629
+ var _a;
630
+ s === void 0 && (s = []), c === void 0 && (c = true);
631
+ let l = getNearestOverflowAncestor(e), u = l === ((_a = e.ownerDocument) == null ? void 0 : _a.body), d = getWindow(l);
632
+ if (u) {
633
+ let e2 = getFrameElement(d);
634
+ return s.concat(d, d.visualViewport || [], isOverflowElement(l) ? l : [], e2 && c ? getOverflowAncestors(e2) : []);
635
+ }
636
+ return s.concat(l, getOverflowAncestors(l, [], c));
637
+ }
638
+ function getFrameElement(e) {
639
+ return e.parent && Object.getPrototypeOf(e.parent) ? e.frameElement : null;
640
+ }
641
+ function getCssDimensions(e) {
642
+ let s = getComputedStyle(e), c = parseFloat(s.width) || 0, l = parseFloat(s.height) || 0, u = isHTMLElement(e), d = u ? e.offsetWidth : c, f = u ? e.offsetHeight : l, p = round(c) !== d || round(l) !== f;
643
+ return p && (c = d, l = f), {
644
+ width: c,
645
+ height: l,
646
+ $: p
647
+ };
648
+ }
649
+ function unwrapElement(e) {
650
+ return isElement(e) ? e : e.contextElement;
651
+ }
652
+ function getScale(e) {
653
+ let s = unwrapElement(e);
654
+ if (!isHTMLElement(s)) return createCoords(1);
655
+ let c = s.getBoundingClientRect(), { width: l, height: u, $: d } = getCssDimensions(s), f = (d ? round(c.width) : c.width) / l, p = (d ? round(c.height) : c.height) / u;
656
+ return (!f || !Number.isFinite(f)) && (f = 1), (!p || !Number.isFinite(p)) && (p = 1), {
657
+ x: f,
658
+ y: p
659
+ };
660
+ }
661
+ var noOffsets = /* @__PURE__ */ createCoords(0);
662
+ function getVisualOffsets(e) {
663
+ let s = getWindow(e);
664
+ return !isWebKit() || !s.visualViewport ? noOffsets : {
665
+ x: s.visualViewport.offsetLeft,
666
+ y: s.visualViewport.offsetTop
667
+ };
668
+ }
669
+ function shouldAddVisualOffsets(e, s, c) {
670
+ return s === void 0 && (s = false), !c || s && c !== getWindow(e) ? false : s;
671
+ }
672
+ function getBoundingClientRect(e, s, c, l) {
673
+ s === void 0 && (s = false), c === void 0 && (c = false);
674
+ let u = e.getBoundingClientRect(), d = unwrapElement(e), f = createCoords(1);
675
+ s && (l ? isElement(l) && (f = getScale(l)) : f = getScale(e));
676
+ let p = shouldAddVisualOffsets(d, c, l) ? getVisualOffsets(d) : createCoords(0), m = (u.left + p.x) / f.x, h = (u.top + p.y) / f.y, g = u.width / f.x, _ = u.height / f.y;
677
+ if (d) {
678
+ let e2 = getWindow(d), s2 = l && isElement(l) ? getWindow(l) : l, c2 = e2, u2 = getFrameElement(c2);
679
+ for (; u2 && l && s2 !== c2; ) {
680
+ let e3 = getScale(u2), s3 = u2.getBoundingClientRect(), l2 = getComputedStyle(u2), d2 = s3.left + (u2.clientLeft + parseFloat(l2.paddingLeft)) * e3.x, f2 = s3.top + (u2.clientTop + parseFloat(l2.paddingTop)) * e3.y;
681
+ m *= e3.x, h *= e3.y, g *= e3.x, _ *= e3.y, m += d2, h += f2, c2 = getWindow(u2), u2 = getFrameElement(c2);
682
+ }
683
+ }
684
+ return rectToClientRect({
685
+ width: g,
686
+ height: _,
687
+ x: m,
688
+ y: h
689
+ });
690
+ }
691
+ function getWindowScrollBarX(e, s) {
692
+ let c = getNodeScroll(e).scrollLeft;
693
+ return s ? s.left + c : getBoundingClientRect(getDocumentElement(e)).left + c;
694
+ }
695
+ function getHTMLOffset(e, s, c) {
696
+ c === void 0 && (c = false);
697
+ let l = e.getBoundingClientRect();
698
+ return {
699
+ x: l.left + s.scrollLeft - (c ? 0 : getWindowScrollBarX(e, l)),
700
+ y: l.top + s.scrollTop
701
+ };
702
+ }
703
+ function convertOffsetParentRelativeRectToViewportRelativeRect(e) {
704
+ let { elements: s, rect: c, offsetParent: l, strategy: u } = e, d = u === "fixed", f = getDocumentElement(l), p = s ? isTopLayer(s.floating) : false;
705
+ if (l === f || p && d) return c;
706
+ let m = {
707
+ scrollLeft: 0,
708
+ scrollTop: 0
709
+ }, h = createCoords(1), g = createCoords(0), _ = isHTMLElement(l);
710
+ if ((_ || !_ && !d) && ((getNodeName(l) !== "body" || isOverflowElement(f)) && (m = getNodeScroll(l)), isHTMLElement(l))) {
711
+ let e2 = getBoundingClientRect(l);
712
+ h = getScale(l), g.x = e2.x + l.clientLeft, g.y = e2.y + l.clientTop;
713
+ }
714
+ let v = f && !_ && !d ? getHTMLOffset(f, m, true) : createCoords(0);
715
+ return {
716
+ width: c.width * h.x,
717
+ height: c.height * h.y,
718
+ x: c.x * h.x - m.scrollLeft * h.x + g.x + v.x,
719
+ y: c.y * h.y - m.scrollTop * h.y + g.y + v.y
720
+ };
721
+ }
722
+ function getClientRects(e) {
723
+ return Array.from(e.getClientRects());
724
+ }
725
+ function getDocumentRect(e) {
726
+ let s = getDocumentElement(e), c = getNodeScroll(e), l = e.ownerDocument.body, u = max(s.scrollWidth, s.clientWidth, l.scrollWidth, l.clientWidth), d = max(s.scrollHeight, s.clientHeight, l.scrollHeight, l.clientHeight), f = -c.scrollLeft + getWindowScrollBarX(e), p = -c.scrollTop;
727
+ return getComputedStyle(l).direction === "rtl" && (f += max(s.clientWidth, l.clientWidth) - u), {
728
+ width: u,
729
+ height: d,
730
+ x: f,
731
+ y: p
732
+ };
733
+ }
734
+ function getViewportRect(e, s) {
735
+ let c = getWindow(e), l = getDocumentElement(e), u = c.visualViewport, d = l.clientWidth, f = l.clientHeight, p = 0, m = 0;
736
+ if (u) {
737
+ d = u.width, f = u.height;
738
+ let e2 = isWebKit();
739
+ (!e2 || e2 && s === "fixed") && (p = u.offsetLeft, m = u.offsetTop);
740
+ }
741
+ return {
742
+ width: d,
743
+ height: f,
744
+ x: p,
745
+ y: m
746
+ };
747
+ }
748
+ var absoluteOrFixed = /* @__PURE__ */ new Set(["absolute", "fixed"]);
749
+ function getInnerBoundingClientRect(e, s) {
750
+ let c = getBoundingClientRect(e, true, s === "fixed"), l = c.top + e.clientTop, u = c.left + e.clientLeft, d = isHTMLElement(e) ? getScale(e) : createCoords(1);
751
+ return {
752
+ width: e.clientWidth * d.x,
753
+ height: e.clientHeight * d.y,
754
+ x: u * d.x,
755
+ y: l * d.y
756
+ };
757
+ }
758
+ function getClientRectFromClippingAncestor(e, s, c) {
759
+ let l;
760
+ if (s === "viewport") l = getViewportRect(e, c);
761
+ else if (s === "document") l = getDocumentRect(getDocumentElement(e));
762
+ else if (isElement(s)) l = getInnerBoundingClientRect(s, c);
763
+ else {
764
+ let c2 = getVisualOffsets(e);
765
+ l = {
766
+ x: s.x - c2.x,
767
+ y: s.y - c2.y,
768
+ width: s.width,
769
+ height: s.height
770
+ };
771
+ }
772
+ return rectToClientRect(l);
773
+ }
774
+ function hasFixedPositionAncestor(e, s) {
775
+ let c = getParentNode(e);
776
+ return c === s || !isElement(c) || isLastTraversableNode(c) ? false : getComputedStyle(c).position === "fixed" || hasFixedPositionAncestor(c, s);
777
+ }
778
+ function getClippingElementAncestors(e, s) {
779
+ let c = s.get(e);
780
+ if (c) return c;
781
+ let l = getOverflowAncestors(e, [], false).filter((e2) => isElement(e2) && getNodeName(e2) !== "body"), u = null, d = getComputedStyle(e).position === "fixed", f = d ? getParentNode(e) : e;
782
+ for (; isElement(f) && !isLastTraversableNode(f); ) {
783
+ let s2 = getComputedStyle(f), c2 = isContainingBlock(f);
784
+ !c2 && s2.position === "fixed" && (u = null), (d ? !c2 && !u : !c2 && s2.position === "static" && u && absoluteOrFixed.has(u.position) || isOverflowElement(f) && !c2 && hasFixedPositionAncestor(e, f)) ? l = l.filter((e2) => e2 !== f) : u = s2, f = getParentNode(f);
785
+ }
786
+ return s.set(e, l), l;
787
+ }
788
+ function getClippingRect(e) {
789
+ let { element: s, boundary: c, rootBoundary: l, strategy: u } = e, d = [...c === "clippingAncestors" ? isTopLayer(s) ? [] : getClippingElementAncestors(s, this._c) : [].concat(c), l], f = d[0], p = d.reduce((e2, c2) => {
790
+ let l2 = getClientRectFromClippingAncestor(s, c2, u);
791
+ return e2.top = max(l2.top, e2.top), e2.right = min(l2.right, e2.right), e2.bottom = min(l2.bottom, e2.bottom), e2.left = max(l2.left, e2.left), e2;
792
+ }, getClientRectFromClippingAncestor(s, f, u));
793
+ return {
794
+ width: p.right - p.left,
795
+ height: p.bottom - p.top,
796
+ x: p.left,
797
+ y: p.top
798
+ };
799
+ }
800
+ function getDimensions(e) {
801
+ let { width: s, height: c } = getCssDimensions(e);
802
+ return {
803
+ width: s,
804
+ height: c
805
+ };
806
+ }
807
+ function getRectRelativeToOffsetParent(e, s, c) {
808
+ let l = isHTMLElement(s), u = getDocumentElement(s), d = c === "fixed", f = getBoundingClientRect(e, true, d, s), p = {
809
+ scrollLeft: 0,
810
+ scrollTop: 0
811
+ }, m = createCoords(0);
812
+ function h() {
813
+ m.x = getWindowScrollBarX(u);
814
+ }
815
+ if (l || !l && !d) if ((getNodeName(s) !== "body" || isOverflowElement(u)) && (p = getNodeScroll(s)), l) {
816
+ let e2 = getBoundingClientRect(s, true, d, s);
817
+ m.x = e2.x + s.clientLeft, m.y = e2.y + s.clientTop;
818
+ } else u && h();
819
+ d && !l && u && h();
820
+ let g = u && !l && !d ? getHTMLOffset(u, p) : createCoords(0);
821
+ return {
822
+ x: f.left + p.scrollLeft - m.x - g.x,
823
+ y: f.top + p.scrollTop - m.y - g.y,
824
+ width: f.width,
825
+ height: f.height
826
+ };
827
+ }
828
+ function isStaticPositioned(e) {
829
+ return getComputedStyle(e).position === "static";
830
+ }
831
+ function getTrueOffsetParent(e, s) {
832
+ if (!isHTMLElement(e) || getComputedStyle(e).position === "fixed") return null;
833
+ if (s) return s(e);
834
+ let c = e.offsetParent;
835
+ return getDocumentElement(e) === c && (c = c.ownerDocument.body), c;
836
+ }
837
+ function getOffsetParent(e, s) {
838
+ let c = getWindow(e);
839
+ if (isTopLayer(e)) return c;
840
+ if (!isHTMLElement(e)) {
841
+ let s2 = getParentNode(e);
842
+ for (; s2 && !isLastTraversableNode(s2); ) {
843
+ if (isElement(s2) && !isStaticPositioned(s2)) return s2;
844
+ s2 = getParentNode(s2);
845
+ }
846
+ return c;
847
+ }
848
+ let l = getTrueOffsetParent(e, s);
849
+ for (; l && isTableElement(l) && isStaticPositioned(l); ) l = getTrueOffsetParent(l, s);
850
+ return l && isLastTraversableNode(l) && isStaticPositioned(l) && !isContainingBlock(l) ? c : l || getContainingBlock(e) || c;
851
+ }
852
+ var getElementRects = async function(e) {
853
+ let s = this.getOffsetParent || getOffsetParent, c = this.getDimensions, l = await c(e.floating);
854
+ return {
855
+ reference: getRectRelativeToOffsetParent(e.reference, await s(e.floating), e.strategy),
856
+ floating: {
857
+ x: 0,
858
+ y: 0,
859
+ width: l.width,
860
+ height: l.height
861
+ }
862
+ };
863
+ };
864
+ function isRTL(e) {
865
+ return getComputedStyle(e).direction === "rtl";
866
+ }
867
+ var platform = {
868
+ convertOffsetParentRelativeRectToViewportRelativeRect,
869
+ getDocumentElement,
870
+ getClippingRect,
871
+ getOffsetParent,
872
+ getElementRects,
873
+ getClientRects,
874
+ getDimensions,
875
+ getScale,
876
+ isElement,
877
+ isRTL
878
+ };
879
+ function rectsAreEqual(e, s) {
880
+ return e.x === s.x && e.y === s.y && e.width === s.width && e.height === s.height;
881
+ }
882
+ function observeMove(e, s) {
883
+ let c = null, l, u = getDocumentElement(e);
884
+ function d() {
885
+ var e2;
886
+ clearTimeout(l), (e2 = c) == null || e2.disconnect(), c = null;
887
+ }
888
+ function f(p, m) {
889
+ p === void 0 && (p = false), m === void 0 && (m = 1), d();
890
+ let h = e.getBoundingClientRect(), { left: g, top: _, width: v, height: y } = h;
891
+ if (p || s(), !v || !y) return;
892
+ let b = floor(_), x = floor(u.clientWidth - (g + v)), S = floor(u.clientHeight - (_ + y)), C = floor(g), w = {
893
+ rootMargin: -b + "px " + -x + "px " + -S + "px " + -C + "px",
894
+ threshold: max(0, min(1, m)) || 1
895
+ }, D = true;
896
+ function k(s2) {
897
+ let c2 = s2[0].intersectionRatio;
898
+ if (c2 !== m) {
899
+ if (!D) return f();
900
+ c2 ? f(false, c2) : l = setTimeout(() => {
901
+ f(false, 1e-7);
902
+ }, 1e3);
903
+ }
904
+ c2 === 1 && !rectsAreEqual(h, e.getBoundingClientRect()) && f(), D = false;
905
+ }
906
+ try {
907
+ c = new IntersectionObserver(k, {
908
+ ...w,
909
+ root: u.ownerDocument
910
+ });
911
+ } catch {
912
+ c = new IntersectionObserver(k, w);
913
+ }
914
+ c.observe(e);
915
+ }
916
+ return f(true), d;
917
+ }
918
+ function autoUpdate(e, s, c, l) {
919
+ l === void 0 && (l = {});
920
+ let { ancestorScroll: u = true, ancestorResize: d = true, elementResize: f = typeof ResizeObserver == "function", layoutShift: p = typeof IntersectionObserver == "function", animationFrame: m = false } = l, h = unwrapElement(e), g = u || d ? [...h ? getOverflowAncestors(h) : [], ...getOverflowAncestors(s)] : [];
921
+ g.forEach((e2) => {
922
+ u && e2.addEventListener("scroll", c, { passive: true }), d && e2.addEventListener("resize", c);
923
+ });
924
+ let _ = h && p ? observeMove(h, c) : null, v = -1, y = null;
925
+ f && (y = new ResizeObserver((e2) => {
926
+ let [l2] = e2;
927
+ l2 && l2.target === h && y && (y.unobserve(s), cancelAnimationFrame(v), v = requestAnimationFrame(() => {
928
+ var e3;
929
+ (e3 = y) == null || e3.observe(s);
930
+ })), c();
931
+ }), h && !m && y.observe(h), y.observe(s));
932
+ let b, x = m ? getBoundingClientRect(e) : null;
933
+ m && S();
934
+ function S() {
935
+ let s2 = getBoundingClientRect(e);
936
+ x && !rectsAreEqual(x, s2) && c(), x = s2, b = requestAnimationFrame(S);
937
+ }
938
+ return c(), () => {
939
+ var e2;
940
+ g.forEach((e3) => {
941
+ u && e3.removeEventListener("scroll", c), d && e3.removeEventListener("resize", c);
942
+ }), _ == null ? void 0 : _(), (e2 = y) == null || e2.disconnect(), y = null, m && cancelAnimationFrame(b);
943
+ };
944
+ }
945
+ var offset$1 = offset$2, shift$1 = shift$2, flip$1 = flip$2, size$1 = size$2, hide$1 = hide$2, arrow$1 = arrow$2, limitShift$1 = limitShift$2, computePosition = (e, s, c) => {
946
+ let l = /* @__PURE__ */ new Map(), u = {
947
+ platform,
948
+ ...c
949
+ }, d = {
950
+ ...u.platform,
951
+ _c: l
952
+ };
953
+ return computePosition$1(e, s, {
954
+ ...u,
955
+ platform: d
956
+ });
957
+ }, import_react_dom = /* @__PURE__ */ __toESM(require_react_dom(), 1), index = typeof document < "u" ? import_react.useLayoutEffect : function() {
958
+ };
959
+ function deepEqual(e, s) {
960
+ if (e === s) return true;
961
+ if (typeof e != typeof s) return false;
962
+ if (typeof e == "function" && e.toString() === s.toString()) return true;
963
+ let c, l, u;
964
+ if (e && s && typeof e == "object") {
965
+ if (Array.isArray(e)) {
966
+ if (c = e.length, c !== s.length) return false;
967
+ for (l = c; l-- !== 0; ) if (!deepEqual(e[l], s[l])) return false;
968
+ return true;
969
+ }
970
+ if (u = Object.keys(e), c = u.length, c !== Object.keys(s).length) return false;
971
+ for (l = c; l-- !== 0; ) if (!{}.hasOwnProperty.call(s, u[l])) return false;
972
+ for (l = c; l-- !== 0; ) {
973
+ let c2 = u[l];
974
+ if (!(c2 === "_owner" && e.$$typeof) && !deepEqual(e[c2], s[c2])) return false;
975
+ }
976
+ return true;
977
+ }
978
+ return e !== e && s !== s;
979
+ }
980
+ function getDPR(e) {
981
+ return typeof window > "u" ? 1 : (e.ownerDocument.defaultView || window).devicePixelRatio || 1;
982
+ }
983
+ function roundByDPR(e, s) {
984
+ let c = getDPR(e);
985
+ return Math.round(s * c) / c;
986
+ }
987
+ function useLatestRef(e) {
988
+ let s = import_react.useRef(e);
989
+ return index(() => {
990
+ s.current = e;
991
+ }), s;
992
+ }
993
+ function useFloating(e) {
994
+ e === void 0 && (e = {});
995
+ let { placement: s = "bottom", strategy: c = "absolute", middleware: l = [], platform: u, elements: { reference: d, floating: f } = {}, transform: p = true, whileElementsMounted: m, open: h } = e, [g, _] = import_react.useState({
996
+ x: 0,
997
+ y: 0,
998
+ strategy: c,
999
+ placement: s,
1000
+ middlewareData: {},
1001
+ isPositioned: false
1002
+ }), [v, y] = import_react.useState(l);
1003
+ deepEqual(v, l) || y(l);
1004
+ let [b, S] = import_react.useState(null), [C, w] = import_react.useState(null), T = import_react.useCallback((e2) => {
1005
+ e2 !== k.current && (k.current = e2, S(e2));
1006
+ }, []), E = import_react.useCallback((e2) => {
1007
+ e2 !== A.current && (A.current = e2, w(e2));
1008
+ }, []), D = d || b, O = f || C, k = import_react.useRef(null), A = import_react.useRef(null), j = import_react.useRef(g), M = m != null, N = useLatestRef(m), P = useLatestRef(u), F = useLatestRef(h), I = import_react.useCallback(() => {
1009
+ if (!k.current || !A.current) return;
1010
+ let e2 = {
1011
+ placement: s,
1012
+ strategy: c,
1013
+ middleware: v
1014
+ };
1015
+ P.current && (e2.platform = P.current), computePosition(k.current, A.current, e2).then((e3) => {
1016
+ let s2 = {
1017
+ ...e3,
1018
+ isPositioned: F.current !== false
1019
+ };
1020
+ L.current && !deepEqual(j.current, s2) && (j.current = s2, import_react_dom.flushSync(() => {
1021
+ _(s2);
1022
+ }));
1023
+ });
1024
+ }, [
1025
+ v,
1026
+ s,
1027
+ c,
1028
+ P,
1029
+ F
1030
+ ]);
1031
+ index(() => {
1032
+ h === false && j.current.isPositioned && (j.current.isPositioned = false, _((e2) => ({
1033
+ ...e2,
1034
+ isPositioned: false
1035
+ })));
1036
+ }, [h]);
1037
+ let L = import_react.useRef(false);
1038
+ index(() => (L.current = true, () => {
1039
+ L.current = false;
1040
+ }), []), index(() => {
1041
+ if (D && (k.current = D), O && (A.current = O), D && O) {
1042
+ if (N.current) return N.current(D, O, I);
1043
+ I();
1044
+ }
1045
+ }, [
1046
+ D,
1047
+ O,
1048
+ I,
1049
+ N,
1050
+ M
1051
+ ]);
1052
+ let R = import_react.useMemo(() => ({
1053
+ reference: k,
1054
+ floating: A,
1055
+ setReference: T,
1056
+ setFloating: E
1057
+ }), [T, E]), z = import_react.useMemo(() => ({
1058
+ reference: D,
1059
+ floating: O
1060
+ }), [D, O]), B = import_react.useMemo(() => {
1061
+ let e2 = {
1062
+ position: c,
1063
+ left: 0,
1064
+ top: 0
1065
+ };
1066
+ if (!z.floating) return e2;
1067
+ let s2 = roundByDPR(z.floating, g.x), l2 = roundByDPR(z.floating, g.y);
1068
+ return p ? {
1069
+ ...e2,
1070
+ transform: "translate(" + s2 + "px, " + l2 + "px)",
1071
+ ...getDPR(z.floating) >= 1.5 && { willChange: "transform" }
1072
+ } : {
1073
+ position: c,
1074
+ left: s2,
1075
+ top: l2
1076
+ };
1077
+ }, [
1078
+ c,
1079
+ p,
1080
+ z.floating,
1081
+ g.x,
1082
+ g.y
1083
+ ]);
1084
+ return import_react.useMemo(() => ({
1085
+ ...g,
1086
+ update: I,
1087
+ refs: R,
1088
+ elements: z,
1089
+ floatingStyles: B
1090
+ }), [
1091
+ g,
1092
+ I,
1093
+ R,
1094
+ z,
1095
+ B
1096
+ ]);
1097
+ }
1098
+ var arrow$1$1 = (e) => {
1099
+ function s(e2) {
1100
+ return {}.hasOwnProperty.call(e2, "current");
1101
+ }
1102
+ return {
1103
+ name: "arrow",
1104
+ options: e,
1105
+ fn(c) {
1106
+ let { element: l, padding: u } = typeof e == "function" ? e(c) : e;
1107
+ return l && s(l) ? l.current == null ? {} : arrow$1({
1108
+ element: l.current,
1109
+ padding: u
1110
+ }).fn(c) : l ? arrow$1({
1111
+ element: l,
1112
+ padding: u
1113
+ }).fn(c) : {};
1114
+ }
1115
+ };
1116
+ }, offset = (e, s) => ({
1117
+ ...offset$1(e),
1118
+ options: [e, s]
1119
+ }), shift = (e, s) => ({
1120
+ ...shift$1(e),
1121
+ options: [e, s]
1122
+ }), limitShift = (e, s) => ({
1123
+ ...limitShift$1(e),
1124
+ options: [e, s]
1125
+ }), flip = (e, s) => ({
1126
+ ...flip$1(e),
1127
+ options: [e, s]
1128
+ }), size = (e, s) => ({
1129
+ ...size$1(e),
1130
+ options: [e, s]
1131
+ }), hide = (e, s) => ({
1132
+ ...hide$1(e),
1133
+ options: [e, s]
1134
+ }), arrow = (e, s) => ({
1135
+ ...arrow$1$1(e),
1136
+ options: [e, s]
1137
+ }), import_jsx_runtime = /* @__PURE__ */ __toESM(require_jsx_runtime(), 1), NAME$1 = "Arrow", Arrow$1 = import_react.forwardRef((e, s) => {
1138
+ let { children: c, width: l = 10, height: u = 5, ...f } = e;
1139
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Primitive.svg, {
1140
+ ...f,
1141
+ ref: s,
1142
+ width: l,
1143
+ height: u,
1144
+ viewBox: "0 0 30 10",
1145
+ preserveAspectRatio: "none",
1146
+ children: e.asChild ? c : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", { points: "0,0 30,0 15,10" })
1147
+ });
1148
+ });
1149
+ Arrow$1.displayName = NAME$1;
1150
+ var Root$1 = Arrow$1;
1151
+ function useSize(e) {
1152
+ let [s, c] = import_react.useState(void 0);
1153
+ return useLayoutEffect2(() => {
1154
+ if (e) {
1155
+ c({
1156
+ width: e.offsetWidth,
1157
+ height: e.offsetHeight
1158
+ });
1159
+ let s2 = new ResizeObserver((s3) => {
1160
+ if (!Array.isArray(s3) || !s3.length) return;
1161
+ let l = s3[0], u, d;
1162
+ if ("borderBoxSize" in l) {
1163
+ let e2 = l.borderBoxSize, s4 = Array.isArray(e2) ? e2[0] : e2;
1164
+ u = s4.inlineSize, d = s4.blockSize;
1165
+ } else u = e.offsetWidth, d = e.offsetHeight;
1166
+ c({
1167
+ width: u,
1168
+ height: d
1169
+ });
1170
+ });
1171
+ return s2.observe(e, { box: "border-box" }), () => s2.unobserve(e);
1172
+ } else c(void 0);
1173
+ }, [e]), s;
1174
+ }
1175
+ var POPPER_NAME = "Popper", [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME), [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME), Popper = (e) => {
1176
+ let { __scopePopper: s, children: c } = e, [l, u] = import_react.useState(null);
1177
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopperProvider, {
1178
+ scope: s,
1179
+ anchor: l,
1180
+ onAnchorChange: u,
1181
+ children: c
1182
+ });
1183
+ };
1184
+ Popper.displayName = POPPER_NAME;
1185
+ var ANCHOR_NAME = "PopperAnchor", PopperAnchor = import_react.forwardRef((e, s) => {
1186
+ let { __scopePopper: l, virtualRef: u, ...f } = e, p = usePopperContext(ANCHOR_NAME, l), m = import_react.useRef(null), h = useComposedRefs(s, m), g = import_react.useRef(null);
1187
+ return import_react.useEffect(() => {
1188
+ let e2 = g.current;
1189
+ g.current = (u == null ? void 0 : u.current) || m.current, e2 !== g.current && p.onAnchorChange(g.current);
1190
+ }), u ? null : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Primitive.div, {
1191
+ ...f,
1192
+ ref: h
1193
+ });
1194
+ });
1195
+ PopperAnchor.displayName = ANCHOR_NAME;
1196
+ var CONTENT_NAME = "PopperContent", [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME), PopperContent = import_react.forwardRef((e, s) => {
1197
+ var _a, _b, _c, _d, _e, _f;
1198
+ let { __scopePopper: l, side: p = "bottom", sideOffset: m = 0, align: h = "center", alignOffset: g = 0, arrowPadding: _ = 0, avoidCollisions: v = true, collisionBoundary: y = [], collisionPadding: b = 0, sticky: S = "partial", hideWhenDetached: C = false, updatePositionStrategy: w = "optimized", onPlaced: T, ...E } = e, D = usePopperContext(CONTENT_NAME, l), [O, k] = import_react.useState(null), A = useComposedRefs(s, (e2) => k(e2)), [j, M] = import_react.useState(null), N = useSize(j), P = (N == null ? void 0 : N.width) ?? 0, F = (N == null ? void 0 : N.height) ?? 0, I = p + (h === "center" ? "" : "-" + h), L = typeof b == "number" ? b : {
1199
+ top: 0,
1200
+ right: 0,
1201
+ bottom: 0,
1202
+ left: 0,
1203
+ ...b
1204
+ }, R = Array.isArray(y) ? y : [y], z = R.length > 0, B = {
1205
+ padding: L,
1206
+ boundary: R.filter(isNotNull),
1207
+ altBoundary: z
1208
+ }, { refs: V, floatingStyles: H, placement: U, isPositioned: W, middlewareData: G } = useFloating({
1209
+ strategy: "fixed",
1210
+ placement: I,
1211
+ whileElementsMounted: (...e2) => autoUpdate(...e2, { animationFrame: w === "always" }),
1212
+ elements: { reference: D.anchor },
1213
+ middleware: [
1214
+ offset({
1215
+ mainAxis: m + F,
1216
+ alignmentAxis: g
1217
+ }),
1218
+ v && shift({
1219
+ mainAxis: true,
1220
+ crossAxis: false,
1221
+ limiter: S === "partial" ? limitShift() : void 0,
1222
+ ...B
1223
+ }),
1224
+ v && flip({ ...B }),
1225
+ size({
1226
+ ...B,
1227
+ apply: ({ elements: e2, rects: s2, availableWidth: c, availableHeight: l2 }) => {
1228
+ let { width: u, height: d } = s2.reference, f = e2.floating.style;
1229
+ f.setProperty("--radix-popper-available-width", `${c}px`), f.setProperty("--radix-popper-available-height", `${l2}px`), f.setProperty("--radix-popper-anchor-width", `${u}px`), f.setProperty("--radix-popper-anchor-height", `${d}px`);
1230
+ }
1231
+ }),
1232
+ j && arrow({
1233
+ element: j,
1234
+ padding: _
1235
+ }),
1236
+ transformOrigin({
1237
+ arrowWidth: P,
1238
+ arrowHeight: F
1239
+ }),
1240
+ C && hide({
1241
+ strategy: "referenceHidden",
1242
+ ...B
1243
+ })
1244
+ ]
1245
+ }), [K, q] = getSideAndAlignFromPlacement(U), J = useCallbackRef(T);
1246
+ useLayoutEffect2(() => {
1247
+ W && (J == null ? void 0 : J());
1248
+ }, [W, J]);
1249
+ let Y = (_a = G.arrow) == null ? void 0 : _a.x, X = (_b = G.arrow) == null ? void 0 : _b.y, Z = ((_c = G.arrow) == null ? void 0 : _c.centerOffset) !== 0, [Q, $] = import_react.useState();
1250
+ return useLayoutEffect2(() => {
1251
+ O && $(window.getComputedStyle(O).zIndex);
1252
+ }, [O]), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
1253
+ ref: V.setFloating,
1254
+ "data-radix-popper-content-wrapper": "",
1255
+ style: {
1256
+ ...H,
1257
+ transform: W ? H.transform : "translate(0, -200%)",
1258
+ minWidth: "max-content",
1259
+ zIndex: Q,
1260
+ "--radix-popper-transform-origin": [(_d = G.transformOrigin) == null ? void 0 : _d.x, (_e = G.transformOrigin) == null ? void 0 : _e.y].join(" "),
1261
+ ...((_f = G.hide) == null ? void 0 : _f.referenceHidden) && {
1262
+ visibility: "hidden",
1263
+ pointerEvents: "none"
1264
+ }
1265
+ },
1266
+ dir: e.dir,
1267
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopperContentProvider, {
1268
+ scope: l,
1269
+ placedSide: K,
1270
+ onArrowChange: M,
1271
+ arrowX: Y,
1272
+ arrowY: X,
1273
+ shouldHideArrow: Z,
1274
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Primitive.div, {
1275
+ "data-side": K,
1276
+ "data-align": q,
1277
+ ...E,
1278
+ ref: A,
1279
+ style: {
1280
+ ...E.style,
1281
+ animation: W ? void 0 : "none"
1282
+ }
1283
+ })
1284
+ })
1285
+ });
1286
+ });
1287
+ PopperContent.displayName = CONTENT_NAME;
1288
+ var ARROW_NAME = "PopperArrow", OPPOSITE_SIDE = {
1289
+ top: "bottom",
1290
+ right: "left",
1291
+ bottom: "top",
1292
+ left: "right"
1293
+ }, PopperArrow = import_react.forwardRef(function(e, s) {
1294
+ let { __scopePopper: c, ...l } = e, u = useContentContext(ARROW_NAME, c), d = OPPOSITE_SIDE[u.placedSide];
1295
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
1296
+ ref: u.onArrowChange,
1297
+ style: {
1298
+ position: "absolute",
1299
+ left: u.arrowX,
1300
+ top: u.arrowY,
1301
+ [d]: 0,
1302
+ transformOrigin: {
1303
+ top: "",
1304
+ right: "0 0",
1305
+ bottom: "center 0",
1306
+ left: "100% 0"
1307
+ }[u.placedSide],
1308
+ transform: {
1309
+ top: "translateY(100%)",
1310
+ right: "translateY(50%) rotate(90deg) translateX(-50%)",
1311
+ bottom: "rotate(180deg)",
1312
+ left: "translateY(50%) rotate(-90deg) translateX(50%)"
1313
+ }[u.placedSide],
1314
+ visibility: u.shouldHideArrow ? "hidden" : void 0
1315
+ },
1316
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Root$1, {
1317
+ ...l,
1318
+ ref: s,
1319
+ style: {
1320
+ ...l.style,
1321
+ display: "block"
1322
+ }
1323
+ })
1324
+ });
1325
+ });
1326
+ PopperArrow.displayName = ARROW_NAME;
1327
+ function isNotNull(e) {
1328
+ return e !== null;
1329
+ }
1330
+ var transformOrigin = (e) => ({
1331
+ name: "transformOrigin",
1332
+ options: e,
1333
+ fn(s) {
1334
+ var _a, _b, _c;
1335
+ let { placement: c, rects: l, middlewareData: u } = s, d = ((_a = u.arrow) == null ? void 0 : _a.centerOffset) !== 0, f = d ? 0 : e.arrowWidth, p = d ? 0 : e.arrowHeight, [m, h] = getSideAndAlignFromPlacement(c), g = {
1336
+ start: "0%",
1337
+ center: "50%",
1338
+ end: "100%"
1339
+ }[h], _ = (((_b = u.arrow) == null ? void 0 : _b.x) ?? 0) + f / 2, v = (((_c = u.arrow) == null ? void 0 : _c.y) ?? 0) + p / 2, y = "", b = "";
1340
+ return m === "bottom" ? (y = d ? g : `${_}px`, b = `${-p}px`) : m === "top" ? (y = d ? g : `${_}px`, b = `${l.floating.height + p}px`) : m === "right" ? (y = `${-p}px`, b = d ? g : `${v}px`) : m === "left" && (y = `${l.floating.width + p}px`, b = d ? g : `${v}px`), { data: {
1341
+ x: y,
1342
+ y: b
1343
+ } };
1344
+ }
1345
+ });
1346
+ function getSideAndAlignFromPlacement(e) {
1347
+ let [s, c = "center"] = e.split("-");
1348
+ return [s, c];
1349
+ }
1350
+ var Root2 = Popper, Anchor = PopperAnchor, Content = PopperContent, Arrow = PopperArrow, VISUALLY_HIDDEN_STYLES = Object.freeze({
1351
+ position: "absolute",
1352
+ border: 0,
1353
+ width: 1,
1354
+ height: 1,
1355
+ padding: 0,
1356
+ margin: -1,
1357
+ overflow: "hidden",
1358
+ clip: "rect(0, 0, 0, 0)",
1359
+ whiteSpace: "nowrap",
1360
+ wordWrap: "normal"
1361
+ }), NAME = "VisuallyHidden", VisuallyHidden = import_react.forwardRef((e, s) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Primitive.span, {
1362
+ ...e,
1363
+ ref: s,
1364
+ style: {
1365
+ ...VISUALLY_HIDDEN_STYLES,
1366
+ ...e.style
1367
+ }
1368
+ }));
1369
+ VisuallyHidden.displayName = NAME;
1370
+ var Root = VisuallyHidden;
1371
+ export {
1372
+ Content as a,
1373
+ useSize as c,
1374
+ Arrow as i,
1375
+ createLucideIcon as l,
1376
+ VISUALLY_HIDDEN_STYLES as n,
1377
+ Root2 as o,
1378
+ Anchor as r,
1379
+ createPopperScope as s,
1380
+ Root as t
1381
+ };