prime-dev-cli 1.0.11-beta.1 → 1.0.12-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/dist/server/.next/BUILD_ID +1 -1
  2. package/dist/server/.next/app-build-manifest.json +5 -5
  3. package/dist/server/.next/app-path-routes-manifest.json +1 -0
  4. package/dist/server/.next/build-manifest.json +6 -6
  5. package/dist/server/.next/cache/.tsbuildinfo +1 -1
  6. package/dist/server/.next/cache/eslint/.cache_1qa5vxt +1 -1
  7. package/dist/server/.next/fallback-build-manifest.json +6 -6
  8. package/dist/server/.next/next-minimal-server.js.nft.json +1 -1
  9. package/dist/server/.next/next-server.js.nft.json +1 -1
  10. package/dist/server/.next/prerender-manifest.json +9 -9
  11. package/dist/server/.next/server/app/_not-found/page/app-build-manifest.json +1 -1
  12. package/dist/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/dist/server/.next/server/app/_not-found.html +1 -1
  14. package/dist/server/.next/server/app/_not-found.rsc +2 -2
  15. package/dist/server/.next/server/app/api/all-projects-envs/route.js +1 -1
  16. package/dist/server/.next/server/app/api/all-projects-envs/route.js.nft.json +1 -1
  17. package/dist/server/.next/server/app/api/check-mock-intercept/route.js +1 -1
  18. package/dist/server/.next/server/app/api/check-mock-intercept/route.js.nft.json +1 -1
  19. package/dist/server/.next/server/app/api/check-workspace/route.js +1 -1
  20. package/dist/server/.next/server/app/api/check-workspace/route.js.nft.json +1 -1
  21. package/dist/server/.next/server/app/api/cleanup-mock/route.js +1 -1
  22. package/dist/server/.next/server/app/api/cleanup-mock/route.js.nft.json +1 -1
  23. package/dist/server/.next/server/app/api/current-branch/route/app-build-manifest.json +11 -0
  24. package/dist/server/.next/server/app/api/current-branch/route/app-paths-manifest.json +3 -0
  25. package/dist/server/.next/server/app/api/current-branch/route/build-manifest.json +17 -0
  26. package/dist/server/.next/server/app/api/current-branch/route/next-font-manifest.json +6 -0
  27. package/dist/server/.next/server/app/api/current-branch/route/react-loadable-manifest.json +1 -0
  28. package/dist/server/.next/server/app/api/current-branch/route/server-reference-manifest.json +4 -0
  29. package/dist/server/.next/server/app/api/current-branch/route.js +8 -0
  30. package/dist/server/.next/server/app/api/current-branch/route.js.map +5 -0
  31. package/dist/server/.next/server/app/api/current-branch/route.js.nft.json +1 -0
  32. package/dist/server/.next/server/app/api/current-branch/route_client-reference-manifest.js +2 -0
  33. package/dist/server/.next/server/app/api/delete-mock-api/route.js +1 -1
  34. package/dist/server/.next/server/app/api/delete-mock-api/route.js.nft.json +1 -1
  35. package/dist/server/.next/server/app/api/get-mock-data/route.js +1 -1
  36. package/dist/server/.next/server/app/api/get-mock-data/route.js.nft.json +1 -1
  37. package/dist/server/.next/server/app/api/initialize-workspace/route.js +1 -1
  38. package/dist/server/.next/server/app/api/initialize-workspace/route.js.nft.json +1 -1
  39. package/dist/server/.next/server/app/api/microapp-proxy-change-stream/route.js +1 -1
  40. package/dist/server/.next/server/app/api/microapp-proxy-change-stream/route.js.nft.json +1 -1
  41. package/dist/server/.next/server/app/api/microapp-proxy-config/route.js +1 -1
  42. package/dist/server/.next/server/app/api/microapp-proxy-config/route.js.nft.json +1 -1
  43. package/dist/server/.next/server/app/api/mock-file/route.js +1 -1
  44. package/dist/server/.next/server/app/api/mock-file/route.js.nft.json +1 -1
  45. package/dist/server/.next/server/app/api/mock-file-content/route.js +1 -1
  46. package/dist/server/.next/server/app/api/mock-file-content/route.js.nft.json +1 -1
  47. package/dist/server/.next/server/app/api/mock-open-status/route.js +1 -1
  48. package/dist/server/.next/server/app/api/mock-open-status/route.js.nft.json +1 -1
  49. package/dist/server/.next/server/app/api/mock-setting/route.js +1 -1
  50. package/dist/server/.next/server/app/api/mock-setting/route.js.nft.json +1 -1
  51. package/dist/server/.next/server/app/api/open-all-mock/route.js +1 -1
  52. package/dist/server/.next/server/app/api/open-all-mock/route.js.nft.json +1 -1
  53. package/dist/server/.next/server/app/api/process/start/route.js +1 -1
  54. package/dist/server/.next/server/app/api/process/start/route.js.nft.json +1 -1
  55. package/dist/server/.next/server/app/api/process/status/route.js +1 -1
  56. package/dist/server/.next/server/app/api/process/status/route.js.nft.json +1 -1
  57. package/dist/server/.next/server/app/api/project-config/route.js +1 -1
  58. package/dist/server/.next/server/app/api/project-config/route.js.nft.json +1 -1
  59. package/dist/server/.next/server/app/api/retry-project/route.js +1 -1
  60. package/dist/server/.next/server/app/api/retry-project/route.js.nft.json +1 -1
  61. package/dist/server/.next/server/app/configuration/page/app-build-manifest.json +2 -2
  62. package/dist/server/.next/server/app/configuration/page.js.nft.json +1 -1
  63. package/dist/server/.next/server/app/configuration/page_client-reference-manifest.js +1 -1
  64. package/dist/server/.next/server/app/configuration.html +1 -1
  65. package/dist/server/.next/server/app/configuration.rsc +3 -3
  66. package/dist/server/.next/server/app/index.html +1 -1
  67. package/dist/server/.next/server/app/index.rsc +2 -2
  68. package/dist/server/.next/server/app/initialization/page/app-build-manifest.json +1 -1
  69. package/dist/server/.next/server/app/initialization/page_client-reference-manifest.js +1 -1
  70. package/dist/server/.next/server/app/initialization.html +1 -1
  71. package/dist/server/.next/server/app/initialization.rsc +2 -2
  72. package/dist/server/.next/server/app/page/app-build-manifest.json +1 -1
  73. package/dist/server/.next/server/app/page_client-reference-manifest.js +1 -1
  74. package/dist/server/.next/server/app-paths-manifest.json +1 -0
  75. package/dist/server/.next/server/chunks/{[root-of-the-server]__27f3b464._.js → [root-of-the-server]__07de450e._.js} +2 -2
  76. package/dist/server/.next/server/chunks/{[root-of-the-server]__27f3b464._.js.map → [root-of-the-server]__07de450e._.js.map} +1 -1
  77. package/dist/server/.next/server/chunks/{[root-of-the-server]__ec631eb4._.js → [root-of-the-server]__09808308._.js} +2 -2
  78. package/dist/server/.next/server/chunks/{[root-of-the-server]__ec631eb4._.js.map → [root-of-the-server]__09808308._.js.map} +1 -1
  79. package/dist/server/.next/server/chunks/{[root-of-the-server]__dfe36c1a._.js → [root-of-the-server]__09914a79._.js} +2 -2
  80. package/dist/server/.next/server/chunks/{[root-of-the-server]__dfe36c1a._.js.map → [root-of-the-server]__09914a79._.js.map} +1 -1
  81. package/dist/server/.next/server/chunks/{[root-of-the-server]__c513ec4a._.js → [root-of-the-server]__42bc7b42._.js} +2 -2
  82. package/dist/server/.next/server/chunks/{[root-of-the-server]__c513ec4a._.js.map → [root-of-the-server]__42bc7b42._.js.map} +1 -1
  83. package/dist/server/.next/server/chunks/{[root-of-the-server]__b68e0025._.js → [root-of-the-server]__4dc677cb._.js} +2 -2
  84. package/dist/server/.next/server/chunks/{[root-of-the-server]__b68e0025._.js.map → [root-of-the-server]__4dc677cb._.js.map} +1 -1
  85. package/dist/server/.next/server/chunks/{[root-of-the-server]__92625851._.js → [root-of-the-server]__52d487d8._.js} +2 -2
  86. package/dist/server/.next/server/chunks/{[root-of-the-server]__92625851._.js.map → [root-of-the-server]__52d487d8._.js.map} +1 -1
  87. package/dist/server/.next/server/chunks/{[root-of-the-server]__7a46f739._.js → [root-of-the-server]__582946e6._.js} +2 -2
  88. package/dist/server/.next/server/chunks/{[root-of-the-server]__7a46f739._.js.map → [root-of-the-server]__582946e6._.js.map} +1 -1
  89. package/dist/server/.next/server/chunks/{[root-of-the-server]__0111ac14._.js → [root-of-the-server]__5cddc64c._.js} +2 -2
  90. package/dist/server/.next/server/chunks/{[root-of-the-server]__0111ac14._.js.map → [root-of-the-server]__5cddc64c._.js.map} +1 -1
  91. package/dist/server/.next/server/chunks/{[root-of-the-server]__63462bcb._.js → [root-of-the-server]__802aba2d._.js} +2 -2
  92. package/dist/server/.next/server/chunks/{[root-of-the-server]__63462bcb._.js.map → [root-of-the-server]__802aba2d._.js.map} +1 -1
  93. package/dist/server/.next/server/chunks/{[root-of-the-server]__9544d1f9._.js → [root-of-the-server]__837d58ae._.js} +2 -2
  94. package/dist/server/.next/server/chunks/{[root-of-the-server]__9544d1f9._.js.map → [root-of-the-server]__837d58ae._.js.map} +1 -1
  95. package/dist/server/.next/server/chunks/{[root-of-the-server]__c43c9880._.js → [root-of-the-server]__933f7077._.js} +2 -2
  96. package/dist/server/.next/server/chunks/{[root-of-the-server]__c43c9880._.js.map → [root-of-the-server]__933f7077._.js.map} +1 -1
  97. package/dist/server/.next/server/chunks/[root-of-the-server]__94e10604._.js +3 -0
  98. package/dist/server/.next/server/chunks/[root-of-the-server]__94e10604._.js.map +1 -0
  99. package/dist/server/.next/server/chunks/{[root-of-the-server]__84542811._.js → [root-of-the-server]__a6211ee0._.js} +2 -2
  100. package/dist/server/.next/server/chunks/{[root-of-the-server]__84542811._.js.map → [root-of-the-server]__a6211ee0._.js.map} +1 -1
  101. package/dist/server/.next/server/chunks/{[root-of-the-server]__29969c0b._.js → [root-of-the-server]__aca25fcf._.js} +2 -2
  102. package/dist/server/.next/server/chunks/{[root-of-the-server]__29969c0b._.js.map → [root-of-the-server]__aca25fcf._.js.map} +1 -1
  103. package/dist/server/.next/server/chunks/{[root-of-the-server]__3da8edfd._.js → [root-of-the-server]__be3de126._.js} +2 -2
  104. package/dist/server/.next/server/chunks/{[root-of-the-server]__3da8edfd._.js.map → [root-of-the-server]__be3de126._.js.map} +1 -1
  105. package/dist/server/.next/server/chunks/{[root-of-the-server]__fab72f0c._.js → [root-of-the-server]__da89e112._.js} +2 -2
  106. package/dist/server/.next/server/chunks/{[root-of-the-server]__fab72f0c._.js.map → [root-of-the-server]__da89e112._.js.map} +1 -1
  107. package/dist/server/.next/server/chunks/[root-of-the-server]__e07d75ff._.js +3 -0
  108. package/dist/server/.next/server/chunks/[root-of-the-server]__e07d75ff._.js.map +1 -0
  109. package/dist/server/.next/server/chunks/{[root-of-the-server]__1efea51d._.js → [root-of-the-server]__e301c560._.js} +2 -2
  110. package/dist/server/.next/server/chunks/{[root-of-the-server]__1efea51d._.js.map → [root-of-the-server]__e301c560._.js.map} +1 -1
  111. package/dist/server/.next/server/chunks/{[root-of-the-server]__525f44e0._.js → [root-of-the-server]__ef09a48e._.js} +2 -2
  112. package/dist/server/.next/server/chunks/{[root-of-the-server]__525f44e0._.js.map → [root-of-the-server]__ef09a48e._.js.map} +1 -1
  113. package/dist/server/.next/server/chunks/ssr/{_2488faea._.js → _bb352729._.js} +3 -3
  114. package/dist/server/.next/server/chunks/ssr/_bb352729._.js.map +1 -0
  115. package/dist/server/.next/server/middleware-build-manifest.js +4 -4
  116. package/dist/server/.next/server/pages/404.html +1 -1
  117. package/dist/server/.next/server/pages/500.html +1 -1
  118. package/dist/server/.next/server/pages/_app/build-manifest.json +2 -2
  119. package/dist/server/.next/server/pages/_error/build-manifest.json +2 -2
  120. package/dist/server/.next/static/chunks/{d5028315079b40b4.js → 2befba13bed43c5f.js} +1 -1
  121. package/dist/server/.next/static/chunks/344b0062191ace22.css.map +1 -0
  122. package/dist/server/.next/static/chunks/{249486689b72c55c.js → 4cbec079b6e3e189.js} +2 -2
  123. package/dist/server/.next/static/chunks/6c91d5f280e79a14.css +3 -0
  124. package/dist/server/.next/static/chunks/700389bfed628512.js +61 -0
  125. package/dist/server/.next/static/chunks/8d4c1c4e33fc41f3.js.map +1 -0
  126. package/dist/server/.next/static/chunks/{5e9dc9d078da6e2d.js.map → a898634af0862944.js.map} +1 -1
  127. package/dist/server/.next/static/chunks/{8d6bbd36cdf03018.js → d74cc70dd8ef74c9.js} +1 -1
  128. package/dist/server/.next/static/chunks/pages/_app.js +2 -2
  129. package/dist/server/.next/static/chunks/pages/_error.js +2 -2
  130. package/dist/server/.next/trace +1 -1
  131. package/lib/mock-file-utils.mjs +103 -0
  132. package/package.json +5 -3
  133. package/dist/server/.next/server/chunks/[root-of-the-server]__ec0f2f72._.js +0 -3
  134. package/dist/server/.next/server/chunks/[root-of-the-server]__ec0f2f72._.js.map +0 -1
  135. package/dist/server/.next/server/chunks/ssr/_2488faea._.js.map +0 -1
  136. package/dist/server/.next/static/chunks/1f1c09f06b1f73d5.css +0 -3
  137. package/dist/server/.next/static/chunks/4791e420776e4b33.js.map +0 -1
  138. package/dist/server/.next/static/chunks/76692beeeb707278.css.map +0 -1
  139. package/dist/server/.next/static/chunks/f99d8b48dbb26003.js +0 -61
  140. /package/dist/server/.next/static/{DiL7txnLfsR2XvLBEz06H → CockuVPN955YqCV3kRDYs}/_buildManifest.js +0 -0
  141. /package/dist/server/.next/static/{DiL7txnLfsR2XvLBEz06H → CockuVPN955YqCV3kRDYs}/_clientMiddlewareManifest.json +0 -0
  142. /package/dist/server/.next/static/{DiL7txnLfsR2XvLBEz06H → CockuVPN955YqCV3kRDYs}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["turbopack:///[project]/node_modules/.pnpm/@radix-ui+primitive@1.1.2/node_modules/@radix-ui/primitive/src/primitive.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-context@1.1.2_@types+react@19.1.8_react@19.1.0/node_modules/@radix-ui/react-context/src/create-context.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-collection@1.1.7_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19_dejhodby2rizagkdej22t4faz4/node_modules/@radix-ui/react-collection/src/collection-legacy.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-collection@1.1.7_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19_dejhodby2rizagkdej22t4faz4/node_modules/@radix-ui/react-collection/src/ordered-dictionary.ts","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-collection@1.1.7_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19_dejhodby2rizagkdej22t4faz4/node_modules/@radix-ui/react-collection/src/collection.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.1_@types+react@19.1.8_react@19.1.0/node_modules/@radix-ui/react-use-layout-effect/src/use-layout-effect.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-id@1.1.1_@types+react@19.1.8_react@19.1.0/node_modules/@radix-ui/react-id/src/id.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-primitive@2.1.3_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19._sqnj4wa3mllckai5din6afvope/node_modules/@radix-ui/react-primitive/src/primitive.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.1_@types+react@19.1.8_react@19.1.0/node_modules/@radix-ui/react-use-callback-ref/src/use-callback-ref.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-use-effect-event@0.0.2_@types+react@19.1.8_react@19.1.0/node_modules/@radix-ui/react-use-effect-event/src/use-effect-event.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.2_@types+react@19.1.8_react@19.1.0/node_modules/@radix-ui/react-use-controllable-state/src/use-controllable-state.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.2_@types+react@19.1.8_react@19.1.0/node_modules/@radix-ui/react-use-controllable-state/src/use-controllable-state-reducer.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-direction@1.1.1_@types+react@19.1.8_react@19.1.0/node_modules/@radix-ui/react-direction/src/direction.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.10_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react_65slb5wyejpmoqh5rvcyfozubm/node_modules/@radix-ui/react-roving-focus/src/roving-focus-group.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-presence@1.1.4_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19.1_2lguv7jzxii6s3eigxktbpwkji/node_modules/@radix-ui/react-presence/src/presence.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-presence@1.1.4_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19.1_2lguv7jzxii6s3eigxktbpwkji/node_modules/@radix-ui/react-presence/src/use-state-machine.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-tabs@1.1.12_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19.1.8__gtaitu4suptj6ctv7pr2leddbq/node_modules/@radix-ui/react-tabs/src/tabs.tsx","turbopack:///[project]/packages/server/src/components/ui/tabs.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+number@1.1.1/node_modules/@radix-ui/number/src/number.ts","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-use-escape-keydown@1.1.1_@types+react@19.1.8_react@19.1.0/node_modules/@radix-ui/react-use-escape-keydown/src/use-escape-keydown.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-dismissable-layer@1.1.10_@types+react-dom@19.1.6_@types+react@19.1.8__@types+_ya5augm4xgo65hmrlxfyu743vi/node_modules/@radix-ui/react-dismissable-layer/src/dismissable-layer.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-focus-guards@1.1.2_@types+react@19.1.8_react@19.1.0/node_modules/@radix-ui/react-focus-guards/src/focus-guards.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-focus-scope@1.1.7_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@1_7liqdxmess7vaws2bkjw22mwva/node_modules/@radix-ui/react-focus-scope/src/focus-scope.tsx","turbopack:///[project]/node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","turbopack:///[project]/node_modules/.pnpm/@floating-ui+core@1.7.1/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","turbopack:///[project]/node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","turbopack:///[project]/node_modules/.pnpm/@floating-ui+dom@1.7.1/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","turbopack:///[project]/node_modules/.pnpm/@floating-ui+react-dom@2.1.3_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-arrow@1.1.7_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19.1.8__k3vdwn4oujzgfg4h66z6kymfyq/node_modules/@radix-ui/react-arrow/src/arrow.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-use-size@1.1.1_@types+react@19.1.8_react@19.1.0/node_modules/@radix-ui/react-use-size/src/use-size.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-popper@1.2.7_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19.1.8_itfjovpaz7ozxobqqhn2dn4epm/node_modules/@radix-ui/react-popper/src/popper.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-portal@1.1.9_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19.1.8_5jmzxxd65wsdfod4yurl7mkae4/node_modules/@radix-ui/react-portal/src/portal.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-use-previous@1.1.1_@types+react@19.1.8_react@19.1.0/node_modules/@radix-ui/react-use-previous/src/use-previous.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-visually-hidden@1.2.3_@types+react-dom@19.1.6_@types+react@19.1.8__@types+rea_ly3w4pl74yg4rz5l5dfnr2bqca/node_modules/@radix-ui/react-visually-hidden/src/visually-hidden.tsx","turbopack:///[project]/node_modules/.pnpm/aria-hidden@1.2.6/node_modules/aria-hidden/dist/es2015/index.js","turbopack:///[project]/node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","turbopack:///[project]/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.1.8_react@19.1.0/node_modules/react-remove-scroll-bar/dist/es2015/constants.js","turbopack:///[project]/node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.1.8_react@19.1.0/node_modules/use-callback-ref/dist/es2015/assignRef.js","turbopack:///[project]/node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.1.8_react@19.1.0/node_modules/use-callback-ref/dist/es2015/useRef.js","turbopack:///[project]/node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.1.8_react@19.1.0/node_modules/use-callback-ref/dist/es2015/useMergeRef.js","turbopack:///[project]/node_modules/.pnpm/use-sidecar@1.1.3_@types+react@19.1.8_react@19.1.0/node_modules/use-sidecar/dist/es2015/medium.js","turbopack:///[project]/node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@19.1.8_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/medium.js","turbopack:///[project]/node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@19.1.8_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/UI.js","turbopack:///[project]/node_modules/.pnpm/use-sidecar@1.1.3_@types+react@19.1.8_react@19.1.0/node_modules/use-sidecar/dist/es2015/exports.js","turbopack:///[project]/node_modules/.pnpm/get-nonce@1.0.1/node_modules/get-nonce/dist/es2015/index.js","turbopack:///[project]/node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.1.8_react@19.1.0/node_modules/react-style-singleton/dist/es2015/singleton.js","turbopack:///[project]/node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.1.8_react@19.1.0/node_modules/react-style-singleton/dist/es2015/hook.js","turbopack:///[project]/node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.1.8_react@19.1.0/node_modules/react-style-singleton/dist/es2015/component.js","turbopack:///[project]/node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.1.8_react@19.1.0/node_modules/react-style-singleton/dist/es2015/index.js","turbopack:///[project]/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.1.8_react@19.1.0/node_modules/react-remove-scroll-bar/dist/es2015/utils.js","turbopack:///[project]/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.1.8_react@19.1.0/node_modules/react-remove-scroll-bar/dist/es2015/component.js","turbopack:///[project]/node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.1.8_react@19.1.0/node_modules/react-remove-scroll-bar/dist/es2015/index.js","turbopack:///[project]/node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@19.1.8_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","turbopack:///[project]/node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@19.1.8_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/handleScroll.js","turbopack:///[project]/node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@19.1.8_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/SideEffect.js","turbopack:///[project]/node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@19.1.8_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/sidecar.js","turbopack:///[project]/node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@19.1.8_react@19.1.0/node_modules/react-remove-scroll/dist/es2015/Combination.js","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-select@2.2.5_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19.1.8_h3u75pabkk75sw2qjhdanlolna/node_modules/@radix-ui/react-select/src/select.tsx","turbopack:///[project]/node_modules/.pnpm/lucide-react@0.522.0_react@19.1.0/node_modules/shared/src/utils.ts","turbopack:///[project]/node_modules/.pnpm/lucide-react@0.522.0_react@19.1.0/node_modules/lucide-react/src/defaultAttributes.ts","turbopack:///[project]/node_modules/.pnpm/lucide-react@0.522.0_react@19.1.0/node_modules/lucide-react/src/Icon.ts","turbopack:///[project]/node_modules/.pnpm/lucide-react@0.522.0_react@19.1.0/node_modules/lucide-react/src/createLucideIcon.ts","turbopack:///[project]/node_modules/.pnpm/lucide-react@0.522.0_react@19.1.0/node_modules/lucide-react/src/icons/check.ts","turbopack:///[project]/node_modules/.pnpm/lucide-react@0.522.0_react@19.1.0/node_modules/lucide-react/src/icons/chevron-down.ts","turbopack:///[project]/node_modules/.pnpm/lucide-react@0.522.0_react@19.1.0/node_modules/lucide-react/src/icons/chevron-up.ts","turbopack:///[project]/packages/server/src/components/ui/select.tsx","turbopack:///[project]/packages/server/src/components/ui/input.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-label@2.1.7_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19.1.8__j2la6ja3cljjx4wkqu22cb224u/node_modules/@radix-ui/react-label/src/label.tsx","turbopack:///[project]/packages/server/src/components/ui/label.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-switch@1.2.5_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19.1.8_uhx276sbw7dr3tfricp4xfbxsq/node_modules/@radix-ui/react-switch/src/switch.tsx","turbopack:///[project]/packages/server/src/components/ui/switch.tsx","turbopack:///[project]/packages/server/src/components/ui/table.tsx","turbopack:///[project]/node_modules/.pnpm/@radix-ui+react-dialog@1.1.14_@types+react-dom@19.1.6_@types+react@19.1.8__@types+react@19.1._xkx6efnpqhhb4lkirxfs4qofci/node_modules/@radix-ui/react-dialog/src/dialog.tsx","turbopack:///[project]/node_modules/.pnpm/lucide-react@0.522.0_react@19.1.0/node_modules/lucide-react/src/icons/x.ts","turbopack:///[project]/packages/server/src/components/ui/dialog.tsx","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js","turbopack:///[project]/node_modules/.pnpm/state-local@1.0.7/node_modules/state-local/lib/es/state-local.js","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/config/index.js","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/utils/curry.js","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/utils/isObject.js","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/validators/index.js","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/utils/compose.js","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/utils/deepMerge.js","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/utils/makeCancelable.js","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/loader/index.js","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+loader@1.5.0/node_modules/@monaco-editor/loader/lib/es/index.js","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/index.ts","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/DiffEditor/index.ts","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/DiffEditor/DiffEditor.tsx","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/MonacoContainer/index.ts","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/MonacoContainer/MonacoContainer.tsx","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/MonacoContainer/styles.ts","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/Loading/Loading.tsx","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/Loading/styles.ts","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/Loading/index.ts","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/hooks/useMount/index.ts","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/hooks/useUpdate/index.ts","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/utils/index.ts","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/hooks/useMonaco/index.ts","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/Editor/index.ts","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/Editor/Editor.tsx","turbopack:///[project]/node_modules/.pnpm/@monaco-editor+react@4.7.0_monaco-editor@0.52.2_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/@monaco-editor/react/src/hooks/usePrevious/index.ts","turbopack:///[project]/packages/server/src/components/MicroAppProxyTable.tsx","turbopack:///[project]/node_modules/.pnpm/styled-jsx@5.1.6_react@19.1.0/node_modules/styled-jsx/dist/index/index.js","turbopack:///[project]/node_modules/.pnpm/styled-jsx@5.1.6_react@19.1.0/node_modules/styled-jsx/style.js","turbopack:///[project]/packages/server/src/components/LogViewer.tsx","turbopack:///[project]/packages/server/src/app/configuration/page.tsx"],"sourcesContent":["function composeEventHandlers<E extends { defaultPrevented: boolean }>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport { composeEventHandlers };\n","import * as React from 'react';\n\nfunction createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n) {\n const Context = React.createContext<ContextValueType | undefined>(defaultContext);\n\n const Provider: React.FC<ContextValueType & { children: React.ReactNode }> = (props) => {\n const { children, ...context } = props;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/\n\ntype Scope<C = any> = { [scopeName: string]: React.Context<C>[] } | undefined;\ntype ScopeHook = (scope: Scope) => { [__scopeProp: string]: Scope };\ninterface CreateScope {\n scopeName: string;\n (): ScopeHook;\n}\n\nfunction createContextScope(scopeName: string, createContextScopeDeps: CreateScope[] = []) {\n let defaultContexts: any[] = [];\n\n /* -----------------------------------------------------------------------------------------------\n * createContext\n * ---------------------------------------------------------------------------------------------*/\n\n function createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n ) {\n const BaseContext = React.createContext<ContextValueType | undefined>(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n\n const Provider: React.FC<\n ContextValueType & { scope: Scope<ContextValueType>; children: React.ReactNode }\n > = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string, scope: Scope<ContextValueType | undefined>) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n }\n\n /* -----------------------------------------------------------------------------------------------\n * createScope\n * ---------------------------------------------------------------------------------------------*/\n\n const createScope: CreateScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope: Scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n\n createScope.scopeName = scopeName;\n return [createContext, composeContextScopes(createScope, ...createContextScopeDeps)] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/\n\nfunction composeContextScopes(...scopes: CreateScope[]) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n\n const createScope: CreateScope = () => {\n const scopeHooks = scopes.map((createScope) => ({\n useScope: createScope(),\n scopeName: createScope.scopeName,\n }));\n\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes, { useScope, scopeName }) => {\n // We are calling a hook inside a callback which React warns against to avoid inconsistent\n // renders, however, scoping doesn't have render side effects so we ignore the rule.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes, ...currentScope };\n }, {});\n\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport { createContext, createContextScope };\nexport type { CreateScope, Scope };\n","import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createSlot, type Slot } from '@radix-ui/react-slot';\n\ntype SlotProps = React.ComponentPropsWithoutRef<typeof Slot>;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\n// We have resorted to returning slots directly rather than exposing primitives that can then\n// be slotted like `<CollectionItem as={Slot}>…</CollectionItem>`.\n// This is because we encountered issues with generic types that cannot be statically analysed\n// due to creating them dynamically via createCollection.\n\nfunction createCollection<ItemElement extends HTMLElement, ItemData = {}>(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionRef: React.RefObject<CollectionElement | null>;\n itemMap: Map<\n React.RefObject<ItemElement | null>,\n { ref: React.RefObject<ItemElement | null> } & ItemData\n >;\n };\n\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext<ContextValue>(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: new Map() }\n );\n\n const CollectionProvider: React.FC<{ children?: React.ReactNode; scope: any }> = (props) => {\n const { scope, children } = props;\n const ref = React.useRef<CollectionElement>(null);\n const itemMap = React.useRef<ContextValue['itemMap']>(new Map()).current;\n return (\n <CollectionProviderImpl scope={scope} itemMap={itemMap} collectionRef={ref}>\n {children}\n </CollectionProviderImpl>\n );\n };\n\n CollectionProvider.displayName = PROVIDER_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef<CollectionElement, CollectionProps>(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return <CollectionSlotImpl ref={composedRefs}>{children}</CollectionSlotImpl>;\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef<ItemElement, CollectionItemSlotProps>(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef<ItemElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...(itemData as unknown as ItemData) });\n return () => void context.itemMap.delete(ref);\n });\n\n return (\n <CollectionItemSlotImpl {...{ [ITEM_DATA_ATTR]: '' }} ref={composedRefs}>\n {children}\n </CollectionItemSlotImpl>\n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const context = useCollectionContext(name + 'CollectionConsumer', scope);\n\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current!) - orderedNodes.indexOf(b.ref.current!)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n\n return getItems;\n }\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n","// Not a real member because it shouldn't be accessible, but the super class\n// calls `set` which needs to read the instanciation state, so it can't be a\n// private member.\nconst __instanciated = new WeakMap<OrderedDict<any, any>, boolean>();\nexport class OrderedDict<K, V> extends Map<K, V> {\n #keys: K[];\n\n constructor(iterable?: Iterable<readonly [K, V]> | null | undefined);\n constructor(entries?: readonly (readonly [K, V])[] | null) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n\n set(key: K, value: V) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n\n insert(index: number, key: K, value: V) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n\n if (safeIndex === this.size || (has && safeIndex === this.size - 1) || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n\n const size = this.size + (has ? 0 : 1);\n\n // If you insert at, say, -2, without this bit you'd replace the\n // second-to-last item and push the rest up one, which means the new item is\n // 3rd to last. This isn't very intuitive; inserting at -2 is more like\n // saying \"make this item the second to last\".\n if (relativeIndex < 0) {\n actualIndex++;\n }\n\n const keys = [...this.#keys];\n let nextValue: V | undefined;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i]!;\n if (keys[i] === key) {\n nextKey = keys[i + 1]!;\n }\n if (has) {\n // delete first to ensure that the item is moved to the end\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1]!;\n const currentValue = nextValue!;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n\n with(index: number, key: K, value: V) {\n const copy = new OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n\n before(key: K) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return undefined;\n }\n return this.entryAt(index);\n }\n\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key: K, newKey: K, value: V) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n\n after(key: K) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return undefined;\n }\n return this.entryAt(index);\n }\n\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key: K, newKey: K, value: V) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n\n first() {\n return this.entryAt(0);\n }\n\n last() {\n return this.entryAt(-1);\n }\n\n clear() {\n this.#keys = [];\n return super.clear();\n }\n\n delete(key: K) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n\n deleteAt(index: number) {\n const key = this.keyAt(index);\n if (key !== undefined) {\n return this.delete(key);\n }\n return false;\n }\n\n at(index: number) {\n const key = at(this.#keys, index);\n if (key !== undefined) {\n return this.get(key);\n }\n }\n\n entryAt(index: number): [K, V] | undefined {\n const key = at(this.#keys, index);\n if (key !== undefined) {\n return [key, this.get(key)!];\n }\n }\n\n indexOf(key: K) {\n return this.#keys.indexOf(key);\n }\n\n keyAt(index: number) {\n return at(this.#keys, index);\n }\n\n from(key: K, offset: number) {\n const index = this.indexOf(key);\n if (index === -1) {\n return undefined;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n\n keyFrom(key: K, offset: number) {\n const index = this.indexOf(key);\n if (index === -1) {\n return undefined;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n\n find(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => boolean,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return undefined;\n }\n\n findIndex(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => boolean,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n\n filter<KK extends K, VV extends V>(\n predicate: (entry: [K, V], index: number, dict: OrderedDict<K, V>) => entry is [KK, VV],\n thisArg?: any\n ): OrderedDict<KK, VV>;\n\n filter(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ): OrderedDict<K, V>;\n\n filter(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ) {\n const entries: Array<[K, V]> = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new OrderedDict(entries);\n }\n\n map<U>(\n callbackfn: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => U,\n thisArg?: any\n ): OrderedDict<K, U> {\n const entries: [K, U][] = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new OrderedDict(entries);\n }\n\n reduce(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V]\n ): [K, V];\n reduce(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V],\n initialValue: [K, V]\n ): [K, V];\n reduce<U>(\n callbackfn: (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n initialValue: U\n ): U;\n\n reduce<U>(\n ...args: [\n (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n U?,\n ]\n ) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0)!;\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry as any;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n\n reduceRight(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V]\n ): [K, V];\n reduceRight(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V],\n initialValue: [K, V]\n ): [K, V];\n reduceRight<U>(\n callbackfn: (\n previousValue: [K, V],\n currentValue: U,\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n initialValue: U\n ): U;\n\n reduceRight<U>(\n ...args: [\n (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n U?,\n ]\n ) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1)!;\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index)!;\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry as any;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n\n toSorted(compareFn?: (a: [K, V], b: [K, V]) => number): OrderedDict<K, V> {\n const entries = [...this.entries()].sort(compareFn);\n return new OrderedDict(entries);\n }\n\n toReversed(): OrderedDict<K, V> {\n const reversed = new OrderedDict<K, V>();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index)!;\n const element = this.get(key)!;\n reversed.set(key, element);\n }\n return reversed;\n }\n\n toSpliced(start: number, deleteCount?: number): OrderedDict<K, V>;\n toSpliced(start: number, deleteCount: number, ...items: [K, V][]): OrderedDict<K, V>;\n\n toSpliced(...args: [start: number, deleteCount: number, ...items: [K, V][]]) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new OrderedDict(entries);\n }\n\n slice(start?: number, end?: number) {\n const result = new OrderedDict<K, V>();\n let stop = this.size - 1;\n\n if (start === undefined) {\n return result;\n }\n\n if (start < 0) {\n start = start + this.size;\n }\n\n if (end !== undefined && end > 0) {\n stop = end - 1;\n }\n\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index)!;\n const element = this.get(key)!;\n result.set(key, element);\n }\n return result;\n }\n\n every(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n\n some(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n}\n\nexport type KeyOf<D extends OrderedDict<any, any>> =\n D extends OrderedDict<infer K, any> ? K : never;\nexport type ValueOf<D extends OrderedDict<any, any>> =\n D extends OrderedDict<any, infer V> ? V : never;\nexport type EntryOf<D extends OrderedDict<any, any>> = [KeyOf<D>, ValueOf<D>];\nexport type KeyFrom<E extends EntryOf<any>> = E[0];\nexport type ValueFrom<E extends EntryOf<any>> = E[1];\n\nfunction at<T>(array: ArrayLike<T>, index: number): T | undefined {\n if ('at' in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? undefined : array[actualIndex];\n}\n\nfunction toSafeIndex(array: ArrayLike<any>, index: number) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\n\nfunction toSafeInteger(number: number) {\n // eslint-disable-next-line no-self-compare\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n","import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createSlot, type Slot } from '@radix-ui/react-slot';\nimport type { EntryOf } from './ordered-dictionary';\nimport { OrderedDict } from './ordered-dictionary';\n\ntype SlotProps = React.ComponentPropsWithoutRef<typeof Slot>;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\ninterface BaseItemData {\n id?: string;\n}\n\ntype ItemDataWithElement<\n ItemData extends BaseItemData,\n ItemElement extends HTMLElement,\n> = ItemData & {\n element: ItemElement;\n};\n\ntype ItemMap<ItemElement extends HTMLElement, ItemData extends BaseItemData> = OrderedDict<\n ItemElement,\n ItemDataWithElement<ItemData, ItemElement>\n>;\n\nfunction createCollection<\n ItemElement extends HTMLElement,\n ItemData extends BaseItemData = BaseItemData,\n>(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionElement: CollectionElement | null;\n collectionRef: React.Ref<CollectionElement | null>;\n collectionRefObject: React.RefObject<CollectionElement | null>;\n itemMap: ItemMap<ItemElement, ItemData>;\n setItemMap: React.Dispatch<React.SetStateAction<ItemMap<ItemElement, ItemData>>>;\n };\n\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext<ContextValue>(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0,\n }\n );\n\n type CollectionState = [\n ItemMap: ItemMap<ItemElement, ItemData>,\n SetItemMap: React.Dispatch<React.SetStateAction<ItemMap<ItemElement, ItemData>>>,\n ];\n\n const CollectionProvider: React.FC<{\n children?: React.ReactNode;\n scope: any;\n state?: CollectionState;\n }> = ({ state, ...props }) => {\n return state ? (\n <CollectionProviderImpl {...props} state={state} />\n ) : (\n <CollectionInit {...props} />\n );\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n\n const CollectionInit: React.FC<{\n children?: React.ReactNode;\n scope: any;\n }> = (props) => {\n const state = useInitCollection();\n return <CollectionProviderImpl {...props} state={state} />;\n };\n CollectionInit.displayName = PROVIDER_NAME + 'Init';\n\n const CollectionProviderImpl: React.FC<{\n children?: React.ReactNode;\n scope: any;\n state: CollectionState;\n }> = (props) => {\n const { scope, children, state } = props;\n const ref = React.useRef<CollectionElement>(null);\n const [collectionElement, setCollectionElement] = React.useState<CollectionElement | null>(\n null\n );\n const composeRefs = useComposedRefs(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n\n React.useEffect(() => {\n if (!collectionElement) return;\n\n const observer = getChildListObserver(() => {\n // setItemMap((map) => {\n // const copy = new OrderedDict(map).toSorted(([, a], [, b]) =>\n // !a.element || !b.element ? 0 : isElementPreceding(a.element, b.element) ? -1 : 1\n // );\n // // check if the order has changed\n // let index = -1;\n // for (const entry of copy) {\n // index++;\n // const key = map.keyAt(index)!;\n // const [copyKey] = entry;\n // if (key !== copyKey) {\n // // order has changed!\n // return copy;\n // }\n // }\n // return map;\n // });\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true,\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n\n return (\n <CollectionContextProvider\n scope={scope}\n itemMap={itemMap}\n setItemMap={setItemMap}\n collectionRef={composeRefs}\n collectionRefObject={ref}\n collectionElement={collectionElement}\n >\n {children}\n </CollectionContextProvider>\n );\n };\n\n CollectionProviderImpl.displayName = PROVIDER_NAME + 'Impl';\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef<CollectionElement, CollectionProps>(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return <CollectionSlotImpl ref={composedRefs}>{children}</CollectionSlotImpl>;\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef<ItemElement, CollectionItemSlotProps>(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef<ItemElement>(null);\n const [element, setElement] = React.useState<ItemElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n const { setItemMap } = context;\n\n const itemDataRef = React.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n\n React.useEffect(() => {\n const itemData = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n\n if (!map.has(element)) {\n map.set(element, { ...(itemData as unknown as ItemData), element });\n return map.toSorted(sortByDocumentPosition);\n }\n\n return map\n .set(element, { ...(itemData as unknown as ItemData), element })\n .toSorted(sortByDocumentPosition);\n });\n\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n\n return (\n <CollectionItemSlotImpl {...{ [ITEM_DATA_ATTR]: '' }} ref={composedRefs as any}>\n {children}\n </CollectionItemSlotImpl>\n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useInitCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useInitCollection() {\n return React.useState<ItemMap<ItemElement, ItemData>>(new OrderedDict());\n }\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const { itemMap } = useCollectionContext(name + 'CollectionConsumer', scope);\n\n return itemMap;\n }\n\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection,\n };\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n\nfunction shallowEqual(a: any, b: any) {\n if (a === b) return true;\n if (typeof a !== 'object' || typeof b !== 'object') return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\n\nfunction isElementPreceding(a: Element, b: Element) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\n\nfunction sortByDocumentPosition<E extends HTMLElement, T extends BaseItemData>(\n a: EntryOf<ItemMap<E, T>>,\n b: EntryOf<ItemMap<E, T>>\n) {\n return !a[1].element || !b[1].element\n ? 0\n : isElementPreceding(a[1].element, b[1].element)\n ? -1\n : 1;\n}\n\nfunction getChildListObserver(callback: () => void) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n callback();\n return;\n }\n }\n });\n\n return observer;\n}\n","import * as React from 'react';\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */\nconst useLayoutEffect = globalThis?.document ? React.useLayoutEffect : () => {};\n\nexport { useLayoutEffect };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// We spaces with `.trim().toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)[' useId '.trim().toString()] || (() => undefined);\nlet count = 0;\n\nfunction useId(deterministicId?: string): string {\n const [id, setId] = React.useState<string | undefined>(useReactId());\n // React versions older than 18 will have client-side ids only.\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : '');\n}\n\nexport { useId };\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createSlot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'select',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n if (typeof window !== 'undefined') {\n (window as any)[Symbol.for('radix-ui')] = true;\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from 'react';\n\n/**\n * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a\n * prop or avoid re-executing effects when passed as a dependency\n */\nfunction useCallbackRef<T extends (...args: any[]) => any>(callback: T | undefined): T {\n const callbackRef = React.useRef(callback);\n\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n\n // https://github.com/facebook/react/issues/19240\n return React.useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);\n}\n\nexport { useCallbackRef };\n","/* eslint-disable react-hooks/rules-of-hooks */\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport * as React from 'react';\n\ntype AnyFunction = (...args: any[]) => any;\n\n// See https://github.com/webpack/webpack/issues/14814\nconst useReactEffectEvent = (React as any)[' useEffectEvent '.trim().toString()];\nconst useReactInsertionEffect = (React as any)[' useInsertionEffect '.trim().toString()];\n\n/**\n * Designed to approximate the behavior on `experimental_useEffectEvent` as best\n * as possible until its stable release, and back-fill it as a shim as needed.\n */\nexport function useEffectEvent<T extends AnyFunction>(callback?: T): T {\n if (typeof useReactEffectEvent === 'function') {\n return useReactEffectEvent(callback);\n }\n\n const ref = React.useRef<AnyFunction | undefined>(() => {\n throw new Error('Cannot call an event handler while rendering.');\n });\n // See https://github.com/webpack/webpack/issues/14814\n if (typeof useReactInsertionEffect === 'function') {\n useReactInsertionEffect(() => {\n ref.current = callback;\n });\n } else {\n useLayoutEffect(() => {\n ref.current = callback;\n });\n }\n\n // https://github.com/facebook/react/issues/19240\n return React.useMemo(() => ((...args) => ref.current?.(...args)) as T, []);\n}\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// Prevent bundlers from trying to optimize the import\nconst useInsertionEffect: typeof useLayoutEffect =\n (React as any)[' useInsertionEffect '.trim().toString()] || useLayoutEffect;\n\ntype ChangeHandler<T> = (state: T) => void;\ntype SetStateFn<T> = React.Dispatch<React.SetStateAction<T>>;\n\ninterface UseControllableStateParams<T> {\n prop?: T | undefined;\n defaultProp: T;\n onChange?: ChangeHandler<T>;\n caller?: string;\n}\n\nexport function useControllableState<T>({\n prop,\n defaultProp,\n onChange = () => {},\n caller,\n}: UseControllableStateParams<T>): [T, SetStateFn<T>] {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange,\n });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n\n // OK to disable conditionally calling hooks here because they will always run\n // consistently in the same environment. Bundlers should be able to remove the\n // code block entirely in production.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (process.env.NODE_ENV !== 'production') {\n const isControlledRef = React.useRef(prop !== undefined);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? 'controlled' : 'uncontrolled';\n const to = isControlled ? 'controlled' : 'uncontrolled';\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n /* eslint-enable react-hooks/rules-of-hooks */\n\n const setValue = React.useCallback<SetStateFn<T>>(\n (nextValue) => {\n if (isControlled) {\n const value = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value !== prop) {\n onChangeRef.current?.(value);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n\n return [value, setValue];\n}\n\nfunction useUncontrolledState<T>({\n defaultProp,\n onChange,\n}: Omit<UseControllableStateParams<T>, 'prop'>): [\n Value: T,\n setValue: React.Dispatch<React.SetStateAction<T>>,\n OnChangeRef: React.RefObject<ChangeHandler<T> | undefined>,\n] {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n\n return [value, setValue, onChangeRef];\n}\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n","import * as React from 'react';\nimport { useEffectEvent } from '@radix-ui/react-use-effect-event';\n\ntype ChangeHandler<T> = (state: T) => void;\n\ninterface UseControllableStateParams<T> {\n prop: T | undefined;\n defaultProp: T;\n onChange: ChangeHandler<T> | undefined;\n caller: string;\n}\n\ninterface AnyAction {\n type: string;\n}\n\nconst SYNC_STATE = Symbol('RADIX:SYNC_STATE');\n\ninterface SyncStateAction<T> {\n type: typeof SYNC_STATE;\n state: T;\n}\n\nexport function useControllableStateReducer<T, S extends {}, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialState: S\n): [S & { state: T }, React.Dispatch<A>];\n\nexport function useControllableStateReducer<T, S extends {}, I, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialArg: I,\n init: (i: I & { state: T }) => S\n): [S & { state: T }, React.Dispatch<A>];\n\nexport function useControllableStateReducer<T, S extends {}, A extends AnyAction>(\n reducer: (prevState: S & { state: T }, action: A) => S & { state: T },\n userArgs: UseControllableStateParams<T>,\n initialArg: any,\n init?: (i: any) => Omit<S, 'state'>\n): [S & { state: T }, React.Dispatch<A>] {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== undefined;\n\n const onChange = useEffectEvent(onChangeProp);\n\n // OK to disable conditionally calling hooks here because they will always run\n // consistently in the same environment. Bundlers should be able to remove the\n // code block entirely in production.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (process.env.NODE_ENV !== 'production') {\n const isControlledRef = React.useRef(controlledState !== undefined);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? 'controlled' : 'uncontrolled';\n const to = isControlled ? 'controlled' : 'uncontrolled';\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n /* eslint-enable react-hooks/rules-of-hooks */\n\n type InternalState = S & { state: T };\n const args: [InternalState] = [{ ...initialArg, state: defaultProp }];\n if (init) {\n // @ts-expect-error\n args.push(init);\n }\n\n const [internalState, dispatch] = React.useReducer(\n (state: InternalState, action: A | SyncStateAction<T>): InternalState => {\n if (action.type === SYNC_STATE) {\n return { ...state, state: action.state };\n }\n\n const next = reducer(state, action);\n if (isControlled && !Object.is(next.state, state.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n\n const uncontrolledState = internalState.state;\n const prevValueRef = React.useRef(uncontrolledState);\n React.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n\n const state = React.useMemo(() => {\n const isControlled = controlledState !== undefined;\n if (isControlled) {\n return { ...internalState, state: controlledState };\n }\n\n return internalState;\n }, [internalState, controlledState]);\n\n React.useEffect(() => {\n // Sync internal state for controlled components so that reducer is called\n // with the correct state values\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n\n return [state, dispatch as React.Dispatch<A>];\n}\n","import * as React from 'react';\n\ntype Direction = 'ltr' | 'rtl';\nconst DirectionContext = React.createContext<Direction | undefined>(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Direction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DirectionProviderProps {\n children?: React.ReactNode;\n dir: Direction;\n}\nconst DirectionProvider: React.FC<DirectionProviderProps> = (props) => {\n const { dir, children } = props;\n return <DirectionContext.Provider value={dir}>{children}</DirectionContext.Provider>;\n};\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction useDirection(localDir?: Direction) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || 'ltr';\n}\n\nconst Provider = DirectionProvider;\n\nexport {\n useDirection,\n //\n Provider,\n //\n DirectionProvider,\n};\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createCollection } from '@radix-ui/react-collection';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\n\nimport type { Scope } from '@radix-ui/react-context';\n\nconst ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus';\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = 'RovingFocusGroup';\n\ntype ItemData = { id: string; focusable: boolean; active: boolean };\nconst [Collection, useCollection, createCollectionScope] = createCollection<\n HTMLSpanElement,\n ItemData\n>(GROUP_NAME);\n\ntype ScopedProps<P> = P & { __scopeRovingFocusGroup?: Scope };\nconst [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\n\ntype Orientation = React.AriaAttributes['aria-orientation'];\ntype Direction = 'ltr' | 'rtl';\n\ninterface RovingFocusGroupOptions {\n /**\n * The orientation of the group.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n */\n orientation?: Orientation;\n /**\n * The direction of navigation between items.\n */\n dir?: Direction;\n /**\n * Whether keyboard navigation should loop around\n * @defaultValue false\n */\n loop?: boolean;\n}\n\ntype RovingContextValue = RovingFocusGroupOptions & {\n currentTabStopId: string | null;\n onItemFocus(tabStopId: string): void;\n onItemShiftTab(): void;\n onFocusableItemAdd(): void;\n onFocusableItemRemove(): void;\n};\n\nconst [RovingFocusProvider, useRovingFocusContext] =\n createRovingFocusGroupContext<RovingContextValue>(GROUP_NAME);\n\ntype RovingFocusGroupElement = RovingFocusGroupImplElement;\ninterface RovingFocusGroupProps extends RovingFocusGroupImplProps {}\n\nconst RovingFocusGroup = React.forwardRef<RovingFocusGroupElement, RovingFocusGroupProps>(\n (props: ScopedProps<RovingFocusGroupProps>, forwardedRef) => {\n return (\n <Collection.Provider scope={props.__scopeRovingFocusGroup}>\n <Collection.Slot scope={props.__scopeRovingFocusGroup}>\n <RovingFocusGroupImpl {...props} ref={forwardedRef} />\n </Collection.Slot>\n </Collection.Provider>\n );\n }\n);\n\nRovingFocusGroup.displayName = GROUP_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype RovingFocusGroupImplElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface RovingFocusGroupImplProps\n extends Omit<PrimitiveDivProps, 'dir'>,\n RovingFocusGroupOptions {\n currentTabStopId?: string | null;\n defaultCurrentTabStopId?: string;\n onCurrentTabStopIdChange?: (tabStopId: string | null) => void;\n onEntryFocus?: (event: Event) => void;\n preventScrollOnEntryFocus?: boolean;\n}\n\nconst RovingFocusGroupImpl = React.forwardRef<\n RovingFocusGroupImplElement,\n RovingFocusGroupImplProps\n>((props: ScopedProps<RovingFocusGroupImplProps>, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef<RovingFocusGroupImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME,\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n\n return (\n <RovingFocusProvider\n scope={__scopeRovingFocusGroup}\n orientation={orientation}\n dir={direction}\n loop={loop}\n currentTabStopId={currentTabStopId}\n onItemFocus={React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n )}\n onItemShiftTab={React.useCallback(() => setIsTabbingBackOut(true), [])}\n onFocusableItemAdd={React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n )}\n onFocusableItemRemove={React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n )}\n >\n <Primitive.div\n tabIndex={isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0}\n data-orientation={orientation}\n {...groupProps}\n ref={composedRefs}\n style={{ outline: 'none', ...props.style }}\n onMouseDown={composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n })}\n onFocus={composeEventHandlers(props.onFocus, (event) => {\n // We normally wouldn't need this check, because we already check\n // that the focus is on the current target and not bubbling to it.\n // We do this because Safari doesn't focus buttons when clicked, and\n // instead, the wrapper will get focused and not through a bubbling event.\n const isKeyboardFocus = !isClickFocusRef.current;\n\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n ) as typeof items;\n const candidateNodes = candidateItems.map((item) => item.ref.current!);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n\n isClickFocusRef.current = false;\n })}\n onBlur={composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))}\n />\n </RovingFocusProvider>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'RovingFocusGroupItem';\n\ntype RovingFocusItemElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface RovingFocusItemProps extends Omit<PrimitiveSpanProps, 'children'> {\n tabStopId?: string;\n focusable?: boolean;\n active?: boolean;\n children?:\n | React.ReactNode\n | ((props: { hasTabStop: boolean; isCurrentTabStop: boolean }) => React.ReactNode);\n}\n\nconst RovingFocusGroupItem = React.forwardRef<RovingFocusItemElement, RovingFocusItemProps>(\n (props: ScopedProps<RovingFocusItemProps>, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n\n return (\n <Collection.ItemSlot\n scope={__scopeRovingFocusGroup}\n id={id}\n focusable={focusable}\n active={active}\n >\n <Primitive.span\n tabIndex={isCurrentTabStop ? 0 : -1}\n data-orientation={context.orientation}\n {...itemProps}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n // We prevent focusing non-focusable items on `mousedown`.\n // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n if (!focusable) event.preventDefault();\n // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n else context.onItemFocus(id);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => context.onItemFocus(id))}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'Tab' && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n\n if (event.target !== event.currentTarget) return;\n\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n\n if (focusIntent !== undefined) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current!);\n\n if (focusIntent === 'last') candidateNodes.reverse();\n else if (focusIntent === 'prev' || focusIntent === 'next') {\n if (focusIntent === 'prev') candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop\n ? wrapArray(candidateNodes, currentIndex + 1)\n : candidateNodes.slice(currentIndex + 1);\n }\n\n /**\n * Imperative focus during keydown is risky so we prevent React's batching updates\n * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332\n */\n setTimeout(() => focusFirst(candidateNodes));\n }\n })}\n >\n {typeof children === 'function'\n ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null })\n : children}\n </Primitive.span>\n </Collection.ItemSlot>\n );\n }\n);\n\nRovingFocusGroupItem.displayName = ITEM_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\n// prettier-ignore\nconst MAP_KEY_TO_FOCUS_INTENT: Record<string, FocusIntent> = {\n ArrowLeft: 'prev', ArrowUp: 'prev',\n ArrowRight: 'next', ArrowDown: 'next',\n PageUp: 'first', Home: 'first',\n PageDown: 'last', End: 'last',\n};\n\nfunction getDirectionAwareKey(key: string, dir?: Direction) {\n if (dir !== 'rtl') return key;\n return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key;\n}\n\ntype FocusIntent = 'first' | 'last' | 'prev' | 'next';\n\nfunction getFocusIntent(event: React.KeyboardEvent, orientation?: Orientation, dir?: Direction) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === 'vertical' && ['ArrowLeft', 'ArrowRight'].includes(key)) return undefined;\n if (orientation === 'horizontal' && ['ArrowUp', 'ArrowDown'].includes(key)) return undefined;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\n\nfunction focusFirst(candidates: HTMLElement[], preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nfunction wrapArray<T>(array: T[], startIndex: number) {\n return array.map<T>((_, index) => array[(startIndex + index) % array.length]!);\n}\n\nconst Root = RovingFocusGroup;\nconst Item = RovingFocusGroupItem;\n\nexport {\n createRovingFocusGroupScope,\n //\n RovingFocusGroup,\n RovingFocusGroupItem,\n //\n Root,\n Item,\n};\nexport type { RovingFocusGroupProps, RovingFocusItemProps };\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './use-state-machine';\n\ninterface PresenceProps {\n children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n present: boolean;\n}\n\nconst Presence: React.FC<PresenceProps> = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n\n const child = (\n typeof children === 'function'\n ? children({ present: presence.isPresent })\n : React.Children.only(children)\n ) as React.ReactElement<{ ref?: React.Ref<HTMLElement> }>;\n\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === 'function';\n return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n const [node, setNode] = React.useState<HTMLElement>();\n const stylesRef = React.useRef<CSSStyleDeclaration | null>(null);\n const prevPresentRef = React.useRef(present);\n const prevAnimationNameRef = React.useRef<string>('none');\n const initialState = present ? 'mounted' : 'unmounted';\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: 'unmounted',\n ANIMATION_OUT: 'unmountSuspended',\n },\n unmountSuspended: {\n MOUNT: 'mounted',\n ANIMATION_END: 'unmounted',\n },\n unmounted: {\n MOUNT: 'mounted',\n },\n });\n\n React.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n }, [state]);\n\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n\n if (present) {\n send('MOUNT');\n } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n // If there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send('UNMOUNT');\n } else {\n /**\n * When `present` changes to `false`, we check changes to animation-name to\n * determine whether an animation has started. We chose this approach (reading\n * computed styles) because there is no `animationrun` event and `animationstart`\n * fires after `animation-delay` has expired which would be too late.\n */\n const isAnimating = prevAnimationName !== currentAnimationName;\n\n if (wasPresent && isAnimating) {\n send('ANIMATION_OUT');\n } else {\n send('UNMOUNT');\n }\n }\n\n prevPresentRef.current = present;\n }\n }, [present, send]);\n\n useLayoutEffect(() => {\n if (node) {\n let timeoutId: number;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node && isCurrentAnimation) {\n // With React 18 concurrency this update is applied a frame after the\n // animation ends, creating a flash of visible content. By setting the\n // animation fill mode to \"forwards\", we force the node to keep the\n // styles of the last keyframe, removing the flash.\n //\n // Previously we flushed the update via ReactDom.flushSync, but with\n // exit animations this resulted in the node being removed from the\n // DOM before the synthetic animationEnd event was dispatched, meaning\n // user-provided event handlers would not be called.\n // https://github.com/radix-ui/primitives/pull/1849\n send('ANIMATION_END');\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = 'forwards';\n // Reset the style after the node had time to unmount (for cases\n // where the component chooses not to unmount). Doing this any\n // sooner than `setTimeout` (e.g. with `requestAnimationFrame`)\n // still causes a flash.\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === 'forwards') {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event: AnimationEvent) => {\n if (event.target === node) {\n // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener('animationstart', handleAnimationStart);\n node.addEventListener('animationcancel', handleAnimationEnd);\n node.addEventListener('animationend', handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener('animationstart', handleAnimationStart);\n node.removeEventListener('animationcancel', handleAnimationEnd);\n node.removeEventListener('animationend', handleAnimationEnd);\n };\n } else {\n // Transition to the unmounted state if the node is removed prematurely.\n // We avoid doing so during cleanup as the node may change but still exist.\n send('ANIMATION_END');\n }\n }, [node, send]);\n\n return {\n isPresent: ['mounted', 'unmountSuspended'].includes(state),\n ref: React.useCallback((node: HTMLElement) => {\n stylesRef.current = node ? getComputedStyle(node) : null;\n setNode(node);\n }, []),\n };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles: CSSStyleDeclaration | null) {\n return styles?.animationName || 'none';\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement<{ ref?: React.Ref<unknown> }>) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n\n // Not DEV\n return element.props.ref || (element as any).ref;\n}\n\nconst Root = Presence;\n\nexport {\n Presence,\n //\n Root,\n};\nexport type { PresenceProps };\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine<M>(\n initialState: MachineState<M>,\n machine: M & Machine<MachineState<M>>\n) {\n return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useId } from '@radix-ui/react-id';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs\n * -----------------------------------------------------------------------------------------------*/\n\nconst TABS_NAME = 'Tabs';\n\ntype ScopedProps<P> = P & { __scopeTabs?: Scope };\nconst [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype TabsContextValue = {\n baseId: string;\n value: string;\n onValueChange: (value: string) => void;\n orientation?: TabsProps['orientation'];\n dir?: TabsProps['dir'];\n activationMode?: TabsProps['activationMode'];\n};\n\nconst [TabsProvider, useTabsContext] = createTabsContext<TabsContextValue>(TABS_NAME);\n\ntype TabsElement = React.ComponentRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = React.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface TabsProps extends PrimitiveDivProps {\n /** The value for the selected tab, if controlled */\n value?: string;\n /** The value of the tab to select by default, if uncontrolled */\n defaultValue?: string;\n /** A function called when a new tab is selected */\n onValueChange?: (value: string) => void;\n /**\n * The orientation the tabs are layed out.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n * @defaultValue horizontal\n */\n orientation?: RovingFocusGroupProps['orientation'];\n /**\n * The direction of navigation between toolbar items.\n */\n dir?: RovingFocusGroupProps['dir'];\n /**\n * Whether a tab is activated automatically or manually.\n * @defaultValue automatic\n * */\n activationMode?: 'automatic' | 'manual';\n}\n\nconst Tabs = React.forwardRef<TabsElement, TabsProps>(\n (props: ScopedProps<TabsProps>, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = 'horizontal',\n dir,\n activationMode = 'automatic',\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? '',\n caller: TABS_NAME,\n });\n\n return (\n <TabsProvider\n scope={__scopeTabs}\n baseId={useId()}\n value={value}\n onValueChange={setValue}\n orientation={orientation}\n dir={direction}\n activationMode={activationMode}\n >\n <Primitive.div\n dir={direction}\n data-orientation={orientation}\n {...tabsProps}\n ref={forwardedRef}\n />\n </TabsProvider>\n );\n }\n);\n\nTabs.displayName = TABS_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst TAB_LIST_NAME = 'TabsList';\n\ntype TabsListElement = React.ComponentRef<typeof Primitive.div>;\ninterface TabsListProps extends PrimitiveDivProps {\n loop?: RovingFocusGroupProps['loop'];\n}\n\nconst TabsList = React.forwardRef<TabsListElement, TabsListProps>(\n (props: ScopedProps<TabsListProps>, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return (\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={context.orientation}\n dir={context.dir}\n loop={loop}\n >\n <Primitive.div\n role=\"tablist\"\n aria-orientation={context.orientation}\n {...listProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n );\n }\n);\n\nTabsList.displayName = TAB_LIST_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'TabsTrigger';\n\ntype TabsTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface TabsTriggerProps extends PrimitiveButtonProps {\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef<TabsTriggerElement, TabsTriggerProps>(\n (props: ScopedProps<TabsTriggerProps>, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled}\n active={isSelected}\n >\n <Primitive.button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={contentId}\n data-state={isSelected ? 'active' : 'inactive'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n id={triggerId}\n {...triggerProps}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n // prevent focus to avoid accidental activation\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if ([' ', 'Enter'].includes(event.key)) context.onValueChange(value);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n // handle \"automatic\" activation if necessary\n // ie. activate tab following focus\n const isAutomaticActivation = context.activationMode !== 'manual';\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nTabsTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'TabsContent';\n\ntype TabsContentElement = React.ComponentRef<typeof Primitive.div>;\ninterface TabsContentProps extends PrimitiveDivProps {\n value: string;\n\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TabsContent = React.forwardRef<TabsContentElement, TabsContentProps>(\n (props: ScopedProps<TabsContentProps>, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n return (\n <Presence present={forceMount || isSelected}>\n {({ present }) => (\n <Primitive.div\n data-state={isSelected ? 'active' : 'inactive'}\n data-orientation={context.orientation}\n role=\"tabpanel\"\n aria-labelledby={triggerId}\n hidden={!present}\n id={contentId}\n tabIndex={0}\n {...contentProps}\n ref={forwardedRef}\n style={{\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? '0s' : undefined,\n }}\n >\n {present && children}\n </Primitive.div>\n )}\n </Presence>\n );\n }\n);\n\nTabsContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction makeTriggerId(baseId: string, value: string) {\n return `${baseId}-trigger-${value}`;\n}\n\nfunction makeContentId(baseId: string, value: string) {\n return `${baseId}-content-${value}`;\n}\n\nconst Root = Tabs;\nconst List = TabsList;\nconst Trigger = TabsTrigger;\nconst Content = TabsContent;\n\nexport {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n};\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","function clamp(value: number, [min, max]: [number, number]): number {\n return Math.min(max, Math.max(min, value));\n}\n\nexport { clamp };\n","import * as React from 'react';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\n/**\n * Listens for when the escape key is down\n */\nfunction useEscapeKeydown(\n onEscapeKeyDownProp?: (event: KeyboardEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener('keydown', handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener('keydown', handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\n\nexport { useEscapeKeydown };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive, dispatchDiscreteCustomEvent } from '@radix-ui/react-primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useEscapeKeydown } from '@radix-ui/react-use-escape-keydown';\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayer\n * -----------------------------------------------------------------------------------------------*/\n\nconst DISMISSABLE_LAYER_NAME = 'DismissableLayer';\nconst CONTEXT_UPDATE = 'dismissableLayer.update';\nconst POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside';\nconst FOCUS_OUTSIDE = 'dismissableLayer.focusOutside';\n\nlet originalBodyPointerEvents: string;\n\nconst DismissableLayerContext = React.createContext({\n layers: new Set<DismissableLayerElement>(),\n layersWithOutsidePointerEventsDisabled: new Set<DismissableLayerElement>(),\n branches: new Set<DismissableLayerBranchElement>(),\n});\n\ntype DismissableLayerElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface DismissableLayerProps extends PrimitiveDivProps {\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n disableOutsidePointerEvents?: boolean;\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `DismissableLayer`.\n * Can be prevented.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void;\n /**\n * Event handler called when the focus moves outside of the `DismissableLayer`.\n * Can be prevented.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void;\n /**\n * Event handler called when an interaction happens outside the `DismissableLayer`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: (event: PointerDownOutsideEvent | FocusOutsideEvent) => void;\n /**\n * Handler called when the `DismissableLayer` should be dismissed\n */\n onDismiss?: () => void;\n}\n\nconst DismissableLayer = React.forwardRef<DismissableLayerElement, DismissableLayerProps>(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState<DismissableLayerElement | null>(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node) => setNode(node));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1); // prettier-ignore\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled!); // prettier-ignore\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target as HTMLElement;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n\n const focusOutside = useFocusOutside((event) => {\n const target = event.target as HTMLElement;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = 'none';\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (\n disableOutsidePointerEvents &&\n context.layersWithOutsidePointerEventsDisabled.size === 1\n ) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n\n /**\n * We purposefully prevent combining this effect with the `disableOutsidePointerEvents` effect\n * because a change to `disableOutsidePointerEvents` would remove this layer from the stack\n * and add it to the end again so the layering order wouldn't be _creation order_.\n * We only want them to be removed from context stacks when unmounted.\n */\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n\n return (\n <Primitive.div\n {...layerProps}\n ref={composedRefs}\n style={{\n pointerEvents: isBodyPointerEventsDisabled\n ? isPointerEventsEnabled\n ? 'auto'\n : 'none'\n : undefined,\n ...props.style,\n }}\n onFocusCapture={composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture)}\n onBlurCapture={composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture)}\n onPointerDownCapture={composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )}\n />\n );\n }\n);\n\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayerBranch\n * -----------------------------------------------------------------------------------------------*/\n\nconst BRANCH_NAME = 'DismissableLayerBranch';\n\ntype DismissableLayerBranchElement = React.ComponentRef<typeof Primitive.div>;\ninterface DismissableLayerBranchProps extends PrimitiveDivProps {}\n\nconst DismissableLayerBranch = React.forwardRef<\n DismissableLayerBranchElement,\n DismissableLayerBranchProps\n>((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef<DismissableLayerBranchElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n\n return <Primitive.div {...props} ref={composedRefs} />;\n});\n\nDismissableLayerBranch.displayName = BRANCH_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype PointerDownOutsideEvent = CustomEvent<{ originalEvent: PointerEvent }>;\ntype FocusOutsideEvent = CustomEvent<{ originalEvent: FocusEvent }>;\n\n/**\n * Listens for `pointerdown` outside a react subtree. We use `pointerdown` rather than `pointerup`\n * to mimic layer dismissing behaviour present in OS.\n * Returns props to pass to the node we want to check for outside events.\n */\nfunction usePointerDownOutside(\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside) as EventListener;\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {});\n\n React.useEffect(() => {\n const handlePointerDown = (event: PointerEvent) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n\n function handleAndDispatchPointerDownOutsideEvent() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n }\n\n /**\n * On touch devices, we need to wait for a click event because browsers implement\n * a ~350ms delay between the time the user stops touching the display and when the\n * browser executres events. We need to ensure we don't reactivate pointer-events within\n * this timeframe otherwise the browser may execute events that should have been prevented.\n *\n * Additionally, this also lets us deal automatically with cancellations when a click event\n * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.\n *\n * This is why we also continuously remove the previous listener, because we cannot be\n * certain that it was raised, and therefore cleaned-up.\n */\n if (event.pointerType === 'touch') {\n ownerDocument.removeEventListener('click', handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent;\n ownerDocument.addEventListener('click', handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent();\n }\n } else {\n // We need to remove the event listener in case the outside click has been canceled.\n // See: https://github.com/radix-ui/primitives/issues/2171\n ownerDocument.removeEventListener('click', handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n /**\n * if this hook executes in a component that mounts via a `pointerdown` event, the event\n * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid\n * this by delaying the event listener registration on the document.\n * This is not React specific, but rather how the DOM works, ie:\n * ```\n * button.addEventListener('pointerdown', () => {\n * console.log('I will log');\n * document.addEventListener('pointerdown', () => {\n * console.log('I will also log');\n * })\n * });\n */\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener('pointerdown', handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n ownerDocument.removeEventListener('click', handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => (isPointerInsideReactTreeRef.current = true),\n };\n}\n\n/**\n * Listens for when focus happens outside a react subtree.\n * Returns props to pass to the root (node) of the subtree we want to check.\n */\nfunction useFocusOutside(\n onFocusOutside?: (event: FocusOutsideEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const handleFocusOutside = useCallbackRef(onFocusOutside) as EventListener;\n const isFocusInsideReactTreeRef = React.useRef(false);\n\n React.useEffect(() => {\n const handleFocus = (event: FocusEvent) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false,\n });\n }\n };\n ownerDocument.addEventListener('focusin', handleFocus);\n return () => ownerDocument.removeEventListener('focusin', handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n\n return {\n onFocusCapture: () => (isFocusInsideReactTreeRef.current = true),\n onBlurCapture: () => (isFocusInsideReactTreeRef.current = false),\n };\n}\n\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\n\nfunction handleAndDispatchCustomEvent<E extends CustomEvent, OriginalEvent extends Event>(\n name: string,\n handler: ((event: E) => void) | undefined,\n detail: { originalEvent: OriginalEvent } & (E extends CustomEvent<infer D> ? D : never),\n { discrete }: { discrete: boolean }\n) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler as EventListener, { once: true });\n\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\n\nconst Root = DismissableLayer;\nconst Branch = DismissableLayerBranch;\n\nexport {\n DismissableLayer,\n DismissableLayerBranch,\n //\n Root,\n Branch,\n};\nexport type { DismissableLayerProps };\n","import * as React from 'react';\n\n/** Number of components which have requested interest to have focus guards */\nlet count = 0;\n\nfunction FocusGuards(props: any) {\n useFocusGuards();\n return props.children;\n}\n\n/**\n * Injects a pair of focus guards at the edges of the whole DOM tree\n * to ensure `focusin` & `focusout` events can be caught consistently.\n */\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll('[data-radix-focus-guard]');\n document.body.insertAdjacentElement('afterbegin', edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement('beforeend', edgeGuards[1] ?? createFocusGuard());\n count++;\n\n return () => {\n if (count === 1) {\n document.querySelectorAll('[data-radix-focus-guard]').forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\n\nfunction createFocusGuard() {\n const element = document.createElement('span');\n element.setAttribute('data-radix-focus-guard', '');\n element.tabIndex = 0;\n element.style.outline = 'none';\n element.style.opacity = '0';\n element.style.position = 'fixed';\n element.style.pointerEvents = 'none';\n return element;\n}\n\nconst Root = FocusGuards;\n\nexport {\n FocusGuards,\n //\n Root,\n //\n useFocusGuards,\n};\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\nconst AUTOFOCUS_ON_MOUNT = 'focusScope.autoFocusOnMount';\nconst AUTOFOCUS_ON_UNMOUNT = 'focusScope.autoFocusOnUnmount';\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\ntype FocusableTarget = HTMLElement | { focus(): void };\n\n/* -------------------------------------------------------------------------------------------------\n * FocusScope\n * -----------------------------------------------------------------------------------------------*/\n\nconst FOCUS_SCOPE_NAME = 'FocusScope';\n\ntype FocusScopeElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface FocusScopeProps extends PrimitiveDivProps {\n /**\n * When `true`, tabbing from last item will focus first tabbable\n * and shift+tab from first item will focus last tababble.\n * @defaultValue false\n */\n loop?: boolean;\n\n /**\n * When `true`, focus cannot escape the focus scope via keyboard,\n * pointer, or a programmatic focus.\n * @defaultValue false\n */\n trapped?: boolean;\n\n /**\n * Event handler called when auto-focusing on mount.\n * Can be prevented.\n */\n onMountAutoFocus?: (event: Event) => void;\n\n /**\n * Event handler called when auto-focusing on unmount.\n * Can be prevented.\n */\n onUnmountAutoFocus?: (event: Event) => void;\n}\n\nconst FocusScope = React.forwardRef<FocusScopeElement, FocusScopeProps>((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState<HTMLElement | null>(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef<HTMLElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n },\n }).current;\n\n // Takes care of trapping focus if focus is moved outside programmatically for example\n React.useEffect(() => {\n if (trapped) {\n function handleFocusIn(event: FocusEvent) {\n if (focusScope.paused || !container) return;\n const target = event.target as HTMLElement | null;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n\n // A `focusout` event with a `null` `relatedTarget` will happen in at least two cases:\n //\n // 1. When the user switches app/tabs/windows/the browser itself loses focus.\n // 2. In Google Chrome, when the focused element is removed from the DOM.\n //\n // We let the browser do its thing here because:\n //\n // 1. The browser already keeps a memory of what's focused for when the page gets refocused.\n // 2. In Google Chrome, if we try to focus the deleted focused element (as per below), it\n // throws the CPU to 100%, so we avoid doing anything for this reason here too.\n if (relatedTarget === null) return;\n\n // If the focus has moved to an actual legitimate element (`relatedTarget !== null`)\n // that is outside the container, we move focus to the last valid focused element inside.\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }\n\n // When the focused element gets removed from the DOM, browsers move focus\n // back to the document.body. In this case, we move focus to the container\n // to keep focus trapped correctly.\n function handleMutations(mutations: MutationRecord[]) {\n const focusedElement = document.activeElement as HTMLElement | null;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n }\n\n document.addEventListener('focusin', handleFocusIn);\n document.addEventListener('focusout', handleFocusOut);\n const mutationObserver = new MutationObserver(handleMutations);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n\n return () => {\n document.removeEventListener('focusin', handleFocusIn);\n document.removeEventListener('focusout', handleFocusOut);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement as HTMLElement | null;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n\n // We hit a react bug (fixed in v17) with focusing in unmount.\n // We need to delay the focus a little to get around it for now.\n // See: https://github.com/facebook/react/issues/17894\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n // we need to remove the listener after we `dispatchEvent`\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n\n // Takes care of looping focus (when tabbing whilst at the edges)\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n\n const isTabKey = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement as HTMLElement | null;\n\n if (isTabKey && focusedElement) {\n const container = event.currentTarget as HTMLElement;\n const [first, last] = getTabbableEdges(container);\n const hasTabbableElementsInside = first && last;\n\n // we can only wrap focus if we have tabbable edges\n if (!hasTabbableElementsInside) {\n if (focusedElement === container) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n\n return (\n <Primitive.div tabIndex={-1} {...scopeProps} ref={composedRefs} onKeyDown={handleKeyDown} />\n );\n});\n\nFocusScope.displayName = FOCUS_SCOPE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Attempts focusing the first element in a list of candidates.\n * Stops when focus has actually moved.\n */\nfunction focusFirst(candidates: HTMLElement[], { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\n\n/**\n * Returns the first and last tabbable elements inside a container.\n */\nfunction getTabbableEdges(container: HTMLElement) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last] as const;\n}\n\n/**\n * Returns a list of potential tabbable candidates.\n *\n * NOTE: This is only a close approximation. For example it doesn't take into account cases like when\n * elements are not visible. This cannot be worked out easily by just reading a property, but rather\n * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1\n */\nfunction getTabbableCandidates(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden';\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n // we do not take into account the order of nodes with positive `tabIndex` as it\n // hinders accessibility to have tab order different from visual order.\n return nodes;\n}\n\n/**\n * Returns the first visible element in a list.\n * NOTE: Only checks visibility up to the `container`.\n */\nfunction findVisible(elements: HTMLElement[], container: HTMLElement) {\n for (const element of elements) {\n // we stop checking if it's hidden at the `container` level (excluding)\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\n\nfunction isHidden(node: HTMLElement, { upTo }: { upTo?: HTMLElement }) {\n if (getComputedStyle(node).visibility === 'hidden') return true;\n while (node) {\n // we stop at `upTo` (excluding it)\n if (upTo !== undefined && node === upTo) return false;\n if (getComputedStyle(node).display === 'none') return true;\n node = node.parentElement as HTMLElement;\n }\n return false;\n}\n\nfunction isSelectableInput(element: any): element is FocusableTarget & { select: () => void } {\n return element instanceof HTMLInputElement && 'select' in element;\n}\n\nfunction focus(element?: FocusableTarget | null, { select = false } = {}) {\n // only focus if that element is focusable\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n // NOTE: we prevent scrolling on focus, to minimize jarring transitions for users\n element.focus({ preventScroll: true });\n // only select if its not the same element, it supports selection and we need to select\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FocusScope stack\n * -----------------------------------------------------------------------------------------------*/\n\ntype FocusScopeAPI = { paused: boolean; pause(): void; resume(): void };\nconst focusScopesStack = createFocusScopesStack();\n\nfunction createFocusScopesStack() {\n /** A stack of focus scopes, with the active one at the top */\n let stack: FocusScopeAPI[] = [];\n\n return {\n add(focusScope: FocusScopeAPI) {\n // pause the currently active focus scope (at the top of the stack)\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n // remove in case it already exists (because we'll re-add it at the top of the stack)\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n\n remove(focusScope: FocusScopeAPI) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n },\n };\n}\n\nfunction arrayRemove<T>(array: T[], item: T) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\n\nfunction removeLinks(items: HTMLElement[]) {\n return items.filter((item) => item.tagName !== 'A');\n}\n\nconst Root = FocusScope;\n\nexport {\n FocusScope,\n //\n Root,\n};\nexport type { FocusScopeProps };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n 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))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => d.overflows[0] > 0 && getSideAxis(d.placement) === initialSideAxis)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [':popover-open', ':modal'].some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL <body> scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * Arrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'Arrow';\n\ntype ArrowElement = React.ComponentRef<typeof Primitive.svg>;\ntype PrimitiveSvgProps = React.ComponentPropsWithoutRef<typeof Primitive.svg>;\ninterface ArrowProps extends PrimitiveSvgProps {}\n\nconst Arrow = React.forwardRef<ArrowElement, ArrowProps>((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return (\n <Primitive.svg\n {...arrowProps}\n ref={forwardedRef}\n width={width}\n height={height}\n viewBox=\"0 0 30 10\"\n preserveAspectRatio=\"none\"\n >\n {/* We use their children if they're slotting to replace the whole svg */}\n {props.asChild ? children : <polygon points=\"0,0 30,0 15,10\" />}\n </Primitive.svg>\n );\n});\n\nArrow.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Arrow;\n\nexport {\n Arrow,\n //\n Root,\n};\nexport type { ArrowProps };\n","/// <reference types=\"resize-observer-browser\" />\n\nimport * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\nfunction useSize(element: HTMLElement | null) {\n const [size, setSize] = React.useState<{ width: number; height: number } | undefined>(undefined);\n\n useLayoutEffect(() => {\n if (element) {\n // provide size as early as possible\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n\n // Since we only observe the one element, we don't need to loop over the\n // array\n if (!entries.length) {\n return;\n }\n\n const entry = entries[0];\n let width: number;\n let height: number;\n\n if ('borderBoxSize' in entry) {\n const borderSizeEntry = entry['borderBoxSize'];\n // iron out differences between browsers\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize['inlineSize'];\n height = borderSize['blockSize'];\n } else {\n // for browsers that don't support `borderBoxSize`\n // we calculate it ourselves to get the correct border box.\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n\n setSize({ width, height });\n });\n\n resizeObserver.observe(element, { box: 'border-box' });\n\n return () => resizeObserver.unobserve(element);\n } else {\n // We only want to reset to `undefined` when the element becomes `null`,\n // not if it changes to another element.\n setSize(undefined);\n }\n }, [element]);\n\n return size;\n}\n\nexport { useSize };\n","import * as React from 'react';\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size,\n} from '@floating-ui/react-dom';\nimport * as ArrowPrimitive from '@radix-ui/react-arrow';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useSize } from '@radix-ui/react-use-size';\n\nimport type { Placement, Middleware } from '@floating-ui/react-dom';\nimport type { Scope } from '@radix-ui/react-context';\nimport type { Measurable } from '@radix-ui/rect';\n\nconst SIDE_OPTIONS = ['top', 'right', 'bottom', 'left'] as const;\nconst ALIGN_OPTIONS = ['start', 'center', 'end'] as const;\n\ntype Side = (typeof SIDE_OPTIONS)[number];\ntype Align = (typeof ALIGN_OPTIONS)[number];\n\n/* -------------------------------------------------------------------------------------------------\n * Popper\n * -----------------------------------------------------------------------------------------------*/\n\nconst POPPER_NAME = 'Popper';\n\ntype ScopedProps<P> = P & { __scopePopper?: Scope };\nconst [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\n\ntype PopperContextValue = {\n anchor: Measurable | null;\n onAnchorChange(anchor: Measurable | null): void;\n};\nconst [PopperProvider, usePopperContext] = createPopperContext<PopperContextValue>(POPPER_NAME);\n\ninterface PopperProps {\n children?: React.ReactNode;\n}\nconst Popper: React.FC<PopperProps> = (props: ScopedProps<PopperProps>) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState<Measurable | null>(null);\n return (\n <PopperProvider scope={__scopePopper} anchor={anchor} onAnchorChange={setAnchor}>\n {children}\n </PopperProvider>\n );\n};\n\nPopper.displayName = POPPER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopperAnchor\n * -----------------------------------------------------------------------------------------------*/\n\nconst ANCHOR_NAME = 'PopperAnchor';\n\ntype PopperAnchorElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface PopperAnchorProps extends PrimitiveDivProps {\n virtualRef?: React.RefObject<Measurable>;\n}\n\nconst PopperAnchor = React.forwardRef<PopperAnchorElement, PopperAnchorProps>(\n (props: ScopedProps<PopperAnchorProps>, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef<PopperAnchorElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n\n React.useEffect(() => {\n // Consumer can anchor the popper to something that isn't\n // a DOM node e.g. pointer position, so we override the\n // `anchorRef` with their virtual ref in this case.\n context.onAnchorChange(virtualRef?.current || ref.current);\n });\n\n return virtualRef ? null : <Primitive.div {...anchorProps} ref={composedRefs} />;\n }\n);\n\nPopperAnchor.displayName = ANCHOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopperContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'PopperContent';\n\ntype PopperContentContextValue = {\n placedSide: Side;\n onArrowChange(arrow: HTMLSpanElement | null): void;\n arrowX?: number;\n arrowY?: number;\n shouldHideArrow: boolean;\n};\n\nconst [PopperContentProvider, useContentContext] =\n createPopperContext<PopperContentContextValue>(CONTENT_NAME);\n\ntype Boundary = Element | null;\n\ntype PopperContentElement = React.ComponentRef<typeof Primitive.div>;\ninterface PopperContentProps extends PrimitiveDivProps {\n side?: Side;\n sideOffset?: number;\n align?: Align;\n alignOffset?: number;\n arrowPadding?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Boundary | Boundary[];\n collisionPadding?: number | Partial<Record<Side, number>>;\n sticky?: 'partial' | 'always';\n hideWhenDetached?: boolean;\n updatePositionStrategy?: 'optimized' | 'always';\n onPlaced?: () => void;\n}\n\nconst PopperContent = React.forwardRef<PopperContentElement, PopperContentProps>(\n (props: ScopedProps<PopperContentProps>, forwardedRef) => {\n const {\n __scopePopper,\n side = 'bottom',\n sideOffset = 0,\n align = 'center',\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = 'partial',\n hideWhenDetached = false,\n updatePositionStrategy = 'optimized',\n onPlaced,\n ...contentProps\n } = props;\n\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n\n const [content, setContent] = React.useState<HTMLDivElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n\n const [arrow, setArrow] = React.useState<HTMLSpanElement | null>(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n\n const desiredPlacement = (side + (align !== 'center' ? '-' + align : '')) as Placement;\n\n const collisionPadding =\n typeof collisionPaddingProp === 'number'\n ? collisionPaddingProp\n : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries,\n };\n\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: 'fixed',\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === 'always',\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor,\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions &&\n shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === 'partial' ? limitShift() : undefined,\n ...detectOverflowOptions,\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty('--radix-popper-available-width', `${availableWidth}px`);\n contentStyle.setProperty('--radix-popper-available-height', `${availableHeight}px`);\n contentStyle.setProperty('--radix-popper-anchor-width', `${anchorWidth}px`);\n contentStyle.setProperty('--radix-popper-anchor-height', `${anchorHeight}px`);\n },\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: 'referenceHidden', ...detectOverflowOptions }),\n ],\n });\n\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n\n const [contentZIndex, setContentZIndex] = React.useState<string>();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n\n return (\n <div\n ref={refs.setFloating}\n data-radix-popper-content-wrapper=\"\"\n style={{\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : 'translate(0, -200%)', // keep off the page when measuring\n minWidth: 'max-content',\n zIndex: contentZIndex,\n ['--radix-popper-transform-origin' as any]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y,\n ].join(' '),\n\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...(middlewareData.hide?.referenceHidden && {\n visibility: 'hidden',\n pointerEvents: 'none',\n }),\n }}\n // Floating UI interally calculates logical alignment based the `dir` attribute on\n // the reference/floating node, we must add this attribute here to ensure\n // this is calculated when portalled as well as inline.\n dir={props.dir}\n >\n <PopperContentProvider\n scope={__scopePopper}\n placedSide={placedSide}\n onArrowChange={setArrow}\n arrowX={arrowX}\n arrowY={arrowY}\n shouldHideArrow={cannotCenterArrow}\n >\n <Primitive.div\n data-side={placedSide}\n data-align={placedAlign}\n {...contentProps}\n ref={composedRefs}\n style={{\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? 'none' : undefined,\n }}\n />\n </PopperContentProvider>\n </div>\n );\n }\n);\n\nPopperContent.displayName = CONTENT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopperArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'PopperArrow';\n\nconst OPPOSITE_SIDE: Record<Side, Side> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n};\n\ntype PopperArrowElement = React.ComponentRef<typeof ArrowPrimitive.Root>;\ntype ArrowProps = React.ComponentPropsWithoutRef<typeof ArrowPrimitive.Root>;\ninterface PopperArrowProps extends ArrowProps {}\n\nconst PopperArrow = React.forwardRef<PopperArrowElement, PopperArrowProps>(function PopperArrow(\n props: ScopedProps<PopperArrowProps>,\n forwardedRef\n) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n <span\n ref={contentContext.onArrowChange}\n style={{\n position: 'absolute',\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: '',\n right: '0 0',\n bottom: 'center 0',\n left: '100% 0',\n }[contentContext.placedSide],\n transform: {\n top: 'translateY(100%)',\n right: 'translateY(50%) rotate(90deg) translateX(-50%)',\n bottom: `rotate(180deg)`,\n left: 'translateY(50%) rotate(-90deg) translateX(50%)',\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? 'hidden' : undefined,\n }}\n >\n <ArrowPrimitive.Root\n {...arrowProps}\n ref={forwardedRef}\n style={{\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: 'block',\n }}\n />\n </span>\n );\n});\n\nPopperArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction isNotNull<T>(value: T | null): value is T {\n return value !== null;\n}\n\nconst transformOrigin = (options: { arrowWidth: number; arrowHeight: number }): Middleware => ({\n name: 'transformOrigin',\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: '0%', center: '50%', end: '100%' }[placedAlign];\n\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n\n let x = '';\n let y = '';\n\n if (placedSide === 'bottom') {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === 'top') {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === 'right') {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === 'left') {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n },\n});\n\nfunction getSideAndAlignFromPlacement(placement: Placement) {\n const [side, align = 'center'] = placement.split('-');\n return [side as Side, align as Align] as const;\n}\n\nconst Root = Popper;\nconst Anchor = PopperAnchor;\nconst Content = PopperContent;\nconst Arrow = PopperArrow;\n\nexport {\n createPopperScope,\n //\n Popper,\n PopperAnchor,\n PopperContent,\n PopperArrow,\n //\n Root,\n Anchor,\n Content,\n Arrow,\n //\n SIDE_OPTIONS,\n ALIGN_OPTIONS,\n};\nexport type { PopperProps, PopperAnchorProps, PopperContentProps, PopperArrowProps };\n","import * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n/* -------------------------------------------------------------------------------------------------\n * Portal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'Portal';\n\ntype PortalElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface PortalProps extends PrimitiveDivProps {\n /**\n * An optional container where the portaled content should be appended.\n */\n container?: Element | DocumentFragment | null;\n}\n\nconst Portal = React.forwardRef<PortalElement, PortalProps>((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || (mounted && globalThis?.document?.body);\n return container\n ? ReactDOM.createPortal(<Primitive.div {...portalProps} ref={forwardedRef} />, container)\n : null;\n});\n\nPortal.displayName = PORTAL_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Portal;\n\nexport {\n Portal,\n //\n Root,\n};\nexport type { PortalProps };\n","import * as React from 'react';\n\nfunction usePrevious<T>(value: T) {\n const ref = React.useRef({ value, previous: value });\n\n // We compare values before making an update to ensure that\n // a change has been made. This ensures the previous value is\n // persisted correctly between renders.\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\n\nexport { usePrevious };\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * VisuallyHidden\n * -----------------------------------------------------------------------------------------------*/\n\nconst VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: 'absolute',\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n wordWrap: 'normal',\n}) satisfies React.CSSProperties;\n\nconst NAME = 'VisuallyHidden';\n\ntype VisuallyHiddenElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface VisuallyHiddenProps extends PrimitiveSpanProps {}\n\nconst VisuallyHidden = React.forwardRef<VisuallyHiddenElement, VisuallyHiddenProps>(\n (props, forwardedRef) => {\n return (\n <Primitive.span\n {...props}\n ref={forwardedRef}\n style={{ ...VISUALLY_HIDDEN_STYLES, ...props.style }}\n />\n );\n }\n);\n\nVisuallyHidden.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = VisuallyHidden;\n\nexport {\n VisuallyHidden,\n //\n Root,\n //\n VISUALLY_HIDDEN_STYLES,\n};\nexport type { VisuallyHiddenProps };\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export { styleSingleton } from './component';\nexport { stylesheetSingleton } from './singleton';\nexport { styleHookSingleton } from './hook';\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","import { RemoveScrollBar } from './component';\nimport { zeroRightClassName, fullWidthClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nexport { RemoveScrollBar, zeroRightClassName, fullWidthClassName, noScrollbarsClassName, removedBarSizeVariable, getGapWidth, };\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { clamp } from '@radix-ui/number';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createCollection } from '@radix-ui/react-collection';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\nimport { useFocusGuards } from '@radix-ui/react-focus-guards';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { useId } from '@radix-ui/react-id';\nimport * as PopperPrimitive from '@radix-ui/react-popper';\nimport { createPopperScope } from '@radix-ui/react-popper';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { createSlot } from '@radix-ui/react-slot';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { VISUALLY_HIDDEN_STYLES } from '@radix-ui/react-visually-hidden';\nimport { hideOthers } from 'aria-hidden';\nimport { RemoveScroll } from 'react-remove-scroll';\n\nimport type { Scope } from '@radix-ui/react-context';\n\ntype Direction = 'ltr' | 'rtl';\n\nconst OPEN_KEYS = [' ', 'Enter', 'ArrowUp', 'ArrowDown'];\nconst SELECTION_KEYS = [' ', 'Enter'];\n\n/* -------------------------------------------------------------------------------------------------\n * Select\n * -----------------------------------------------------------------------------------------------*/\n\nconst SELECT_NAME = 'Select';\n\ntype ItemData = { value: string; disabled: boolean; textValue: string };\nconst [Collection, useCollection, createCollectionScope] = createCollection<\n SelectItemElement,\n ItemData\n>(SELECT_NAME);\n\ntype ScopedProps<P> = P & { __scopeSelect?: Scope };\nconst [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [\n createCollectionScope,\n createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\ntype SelectContextValue = {\n trigger: SelectTriggerElement | null;\n onTriggerChange(node: SelectTriggerElement | null): void;\n valueNode: SelectValueElement | null;\n onValueNodeChange(node: SelectValueElement): void;\n valueNodeHasChildren: boolean;\n onValueNodeHasChildrenChange(hasChildren: boolean): void;\n contentId: string;\n value: string | undefined;\n onValueChange(value: string): void;\n open: boolean;\n required?: boolean;\n onOpenChange(open: boolean): void;\n dir: SelectProps['dir'];\n triggerPointerDownPosRef: React.MutableRefObject<{ x: number; y: number } | null>;\n disabled?: boolean;\n};\n\nconst [SelectProvider, useSelectContext] = createSelectContext<SelectContextValue>(SELECT_NAME);\n\ntype NativeOption = React.ReactElement<React.ComponentProps<'option'>>;\n\ntype SelectNativeOptionsContextValue = {\n onNativeOptionAdd(option: NativeOption): void;\n onNativeOptionRemove(option: NativeOption): void;\n};\nconst [SelectNativeOptionsProvider, useSelectNativeOptionsContext] =\n createSelectContext<SelectNativeOptionsContextValue>(SELECT_NAME);\n\ninterface ControlledClearableSelectProps {\n value: string | undefined;\n defaultValue?: never;\n onValueChange: (value: string | undefined) => void;\n}\n\ninterface ControlledUnclearableSelectProps {\n value: string;\n defaultValue?: never;\n onValueChange: (value: string) => void;\n}\n\ninterface UncontrolledSelectProps {\n value?: never;\n defaultValue?: string;\n onValueChange?: {\n (value: string): void;\n (value: string | undefined): void;\n };\n}\n\ntype SelectControlProps =\n | ControlledClearableSelectProps\n | ControlledUnclearableSelectProps\n | UncontrolledSelectProps;\n\ninterface SelectSharedProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?(open: boolean): void;\n dir?: Direction;\n name?: string;\n autoComplete?: string;\n disabled?: boolean;\n required?: boolean;\n form?: string;\n}\n\n// TODO: Should improve typing somewhat, but this would be a breaking change.\n// Consider using in the next major version (along with some testing to be sure\n// it works as expected and doesn't cause problems)\ntype _FutureSelectProps = SelectSharedProps & SelectControlProps;\n\ntype SelectProps = SelectSharedProps & {\n value?: string;\n defaultValue?: string;\n onValueChange?(value: string): void;\n};\n\nconst Select: React.FC<SelectProps> = (props: ScopedProps<SelectProps>) => {\n const {\n __scopeSelect,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n value: valueProp,\n defaultValue,\n onValueChange,\n dir,\n name,\n autoComplete,\n disabled,\n required,\n form,\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const [trigger, setTrigger] = React.useState<SelectTriggerElement | null>(null);\n const [valueNode, setValueNode] = React.useState<SelectValueElement | null>(null);\n const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false);\n const direction = useDirection(dir);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: SELECT_NAME,\n });\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange as any,\n caller: SELECT_NAME,\n });\n const triggerPointerDownPosRef = React.useRef<{ x: number; y: number } | null>(null);\n\n // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = trigger ? form || !!trigger.closest('form') : true;\n const [nativeOptionsSet, setNativeOptionsSet] = React.useState(new Set<NativeOption>());\n\n // The native `select` only associates the correct default value if the corresponding\n // `option` is rendered as a child **at the same time** as itself.\n // Because it might take a few renders for our items to gather the information to build\n // the native `option`(s), we generate a key on the `select` to make sure React re-builds it\n // each time the options change.\n const nativeSelectKey = Array.from(nativeOptionsSet)\n .map((option) => option.props.value)\n .join(';');\n\n return (\n <PopperPrimitive.Root {...popperScope}>\n <SelectProvider\n required={required}\n scope={__scopeSelect}\n trigger={trigger}\n onTriggerChange={setTrigger}\n valueNode={valueNode}\n onValueNodeChange={setValueNode}\n valueNodeHasChildren={valueNodeHasChildren}\n onValueNodeHasChildrenChange={setValueNodeHasChildren}\n contentId={useId()}\n value={value}\n onValueChange={setValue}\n open={open}\n onOpenChange={setOpen}\n dir={direction}\n triggerPointerDownPosRef={triggerPointerDownPosRef}\n disabled={disabled}\n >\n <Collection.Provider scope={__scopeSelect}>\n <SelectNativeOptionsProvider\n scope={props.__scopeSelect}\n onNativeOptionAdd={React.useCallback((option) => {\n setNativeOptionsSet((prev) => new Set(prev).add(option));\n }, [])}\n onNativeOptionRemove={React.useCallback((option) => {\n setNativeOptionsSet((prev) => {\n const optionsSet = new Set(prev);\n optionsSet.delete(option);\n return optionsSet;\n });\n }, [])}\n >\n {children}\n </SelectNativeOptionsProvider>\n </Collection.Provider>\n\n {isFormControl ? (\n <SelectBubbleInput\n key={nativeSelectKey}\n aria-hidden\n required={required}\n tabIndex={-1}\n name={name}\n autoComplete={autoComplete}\n value={value}\n // enable form autofill\n onChange={(event) => setValue(event.target.value)}\n disabled={disabled}\n form={form}\n >\n {value === undefined ? <option value=\"\" /> : null}\n {Array.from(nativeOptionsSet)}\n </SelectBubbleInput>\n ) : null}\n </SelectProvider>\n </PopperPrimitive.Root>\n );\n};\n\nSelect.displayName = SELECT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'SelectTrigger';\n\ntype SelectTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface SelectTriggerProps extends PrimitiveButtonProps {}\n\nconst SelectTrigger = React.forwardRef<SelectTriggerElement, SelectTriggerProps>(\n (props: ScopedProps<SelectTriggerProps>, forwardedRef) => {\n const { __scopeSelect, disabled = false, ...triggerProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(TRIGGER_NAME, __scopeSelect);\n const isDisabled = context.disabled || disabled;\n const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange);\n const getItems = useCollection(__scopeSelect);\n const pointerTypeRef = React.useRef<React.PointerEvent['pointerType']>('touch');\n\n const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.value === context.value);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem !== undefined) {\n context.onValueChange(nextItem.value);\n }\n });\n\n const handleOpen = (pointerEvent?: React.MouseEvent | React.PointerEvent) => {\n if (!isDisabled) {\n context.onOpenChange(true);\n // reset typeahead when we open\n resetTypeahead();\n }\n\n if (pointerEvent) {\n context.triggerPointerDownPosRef.current = {\n x: Math.round(pointerEvent.pageX),\n y: Math.round(pointerEvent.pageY),\n };\n }\n };\n\n return (\n <PopperPrimitive.Anchor asChild {...popperScope}>\n <Primitive.button\n type=\"button\"\n role=\"combobox\"\n aria-controls={context.contentId}\n aria-expanded={context.open}\n aria-required={context.required}\n aria-autocomplete=\"none\"\n dir={context.dir}\n data-state={context.open ? 'open' : 'closed'}\n disabled={isDisabled}\n data-disabled={isDisabled ? '' : undefined}\n data-placeholder={shouldShowPlaceholder(context.value) ? '' : undefined}\n {...triggerProps}\n ref={composedRefs}\n // Enable compatibility with native label or custom `Label` \"click\" for Safari:\n onClick={composeEventHandlers(triggerProps.onClick, (event) => {\n // Whilst browsers generally have no issue focusing the trigger when clicking\n // on a label, Safari seems to struggle with the fact that there's no `onClick`.\n // We force `focus` in this case. Note: this doesn't create any other side-effect\n // because we are preventing default in `onPointerDown` so effectively\n // this only runs for a label \"click\"\n event.currentTarget.focus();\n\n // Open on click when using a touch or pen device\n if (pointerTypeRef.current !== 'mouse') {\n handleOpen(event);\n }\n })}\n onPointerDown={composeEventHandlers(triggerProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n\n // prevent implicit pointer capture\n // https://www.w3.org/TR/pointerevents3/#implicit-pointer-capture\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click); also not for touch\n // devices because that would open the menu on scroll. (pen devices behave as touch on iOS).\n if (event.button === 0 && event.ctrlKey === false && event.pointerType === 'mouse') {\n handleOpen(event);\n // prevent trigger from stealing focus from the active item after opening.\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(triggerProps.onKeyDown, (event) => {\n const isTypingAhead = searchRef.current !== '';\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if (isTypingAhead && event.key === ' ') return;\n if (OPEN_KEYS.includes(event.key)) {\n handleOpen();\n event.preventDefault();\n }\n })}\n />\n </PopperPrimitive.Anchor>\n );\n }\n);\n\nSelectTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectValue\n * -----------------------------------------------------------------------------------------------*/\n\nconst VALUE_NAME = 'SelectValue';\n\ntype SelectValueElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface SelectValueProps extends Omit<PrimitiveSpanProps, 'placeholder'> {\n placeholder?: React.ReactNode;\n}\n\nconst SelectValue = React.forwardRef<SelectValueElement, SelectValueProps>(\n (props: ScopedProps<SelectValueProps>, forwardedRef) => {\n // We ignore `className` and `style` as this part shouldn't be styled.\n const { __scopeSelect, className, style, children, placeholder = '', ...valueProps } = props;\n const context = useSelectContext(VALUE_NAME, __scopeSelect);\n const { onValueNodeHasChildrenChange } = context;\n const hasChildren = children !== undefined;\n const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n\n useLayoutEffect(() => {\n onValueNodeHasChildrenChange(hasChildren);\n }, [onValueNodeHasChildrenChange, hasChildren]);\n\n return (\n <Primitive.span\n {...valueProps}\n ref={composedRefs}\n // we don't want events from the portalled `SelectValue` children to bubble\n // through the item they came from\n style={{ pointerEvents: 'none' }}\n >\n {shouldShowPlaceholder(context.value) ? <>{placeholder}</> : children}\n </Primitive.span>\n );\n }\n);\n\nSelectValue.displayName = VALUE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectIcon\n * -----------------------------------------------------------------------------------------------*/\n\nconst ICON_NAME = 'SelectIcon';\n\ntype SelectIconElement = React.ComponentRef<typeof Primitive.span>;\ninterface SelectIconProps extends PrimitiveSpanProps {}\n\nconst SelectIcon = React.forwardRef<SelectIconElement, SelectIconProps>(\n (props: ScopedProps<SelectIconProps>, forwardedRef) => {\n const { __scopeSelect, children, ...iconProps } = props;\n return (\n <Primitive.span aria-hidden {...iconProps} ref={forwardedRef}>\n {children || '▼'}\n </Primitive.span>\n );\n }\n);\n\nSelectIcon.displayName = ICON_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'SelectPortal';\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface SelectPortalProps {\n children?: React.ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps['container'];\n}\n\nconst SelectPortal: React.FC<SelectPortalProps> = (props: ScopedProps<SelectPortalProps>) => {\n return <PortalPrimitive asChild {...props} />;\n};\n\nSelectPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'SelectContent';\n\ntype SelectContentElement = SelectContentImplElement;\ninterface SelectContentProps extends SelectContentImplProps {}\n\nconst SelectContent = React.forwardRef<SelectContentElement, SelectContentProps>(\n (props: ScopedProps<SelectContentProps>, forwardedRef) => {\n const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);\n const [fragment, setFragment] = React.useState<DocumentFragment>();\n\n // setting the fragment in `useLayoutEffect` as `DocumentFragment` doesn't exist on the server\n useLayoutEffect(() => {\n setFragment(new DocumentFragment());\n }, []);\n\n if (!context.open) {\n const frag = fragment as Element | undefined;\n return frag\n ? ReactDOM.createPortal(\n <SelectContentProvider scope={props.__scopeSelect}>\n <Collection.Slot scope={props.__scopeSelect}>\n <div>{props.children}</div>\n </Collection.Slot>\n </SelectContentProvider>,\n frag\n )\n : null;\n }\n\n return <SelectContentImpl {...props} ref={forwardedRef} />;\n }\n);\n\nSelectContent.displayName = CONTENT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectContentImpl\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_MARGIN = 10;\n\ntype SelectContentContextValue = {\n content?: SelectContentElement | null;\n viewport?: SelectViewportElement | null;\n onViewportChange?: (node: SelectViewportElement | null) => void;\n itemRefCallback?: (node: SelectItemElement | null, value: string, disabled: boolean) => void;\n selectedItem?: SelectItemElement | null;\n onItemLeave?: () => void;\n itemTextRefCallback?: (\n node: SelectItemTextElement | null,\n value: string,\n disabled: boolean\n ) => void;\n focusSelectedItem?: () => void;\n selectedItemText?: SelectItemTextElement | null;\n position?: SelectContentProps['position'];\n isPositioned?: boolean;\n searchRef?: React.RefObject<string>;\n};\n\nconst [SelectContentProvider, useSelectContentContext] =\n createSelectContext<SelectContentContextValue>(CONTENT_NAME);\n\nconst CONTENT_IMPL_NAME = 'SelectContentImpl';\n\ntype SelectContentImplElement = SelectPopperPositionElement | SelectItemAlignedPositionElement;\ntype DismissableLayerProps = React.ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype FocusScopeProps = React.ComponentPropsWithoutRef<typeof FocusScope>;\n\ntype SelectPopperPrivateProps = { onPlaced?: PopperContentProps['onPlaced'] };\n\ninterface SelectContentImplProps\n extends Omit<SelectPopperPositionProps, keyof SelectPopperPrivateProps>,\n Omit<SelectItemAlignedPositionProps, keyof SelectPopperPrivateProps> {\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus'];\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `DismissableLayer`.\n * Can be prevented.\n */\n onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];\n\n position?: 'item-aligned' | 'popper';\n}\n\nconst Slot = createSlot('SelectContent.RemoveScroll');\n\nconst SelectContentImpl = React.forwardRef<SelectContentImplElement, SelectContentImplProps>(\n (props: ScopedProps<SelectContentImplProps>, forwardedRef) => {\n const {\n __scopeSelect,\n position = 'item-aligned',\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n //\n // PopperContent props\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions,\n //\n ...contentProps\n } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const [content, setContent] = React.useState<SelectContentImplElement | null>(null);\n const [viewport, setViewport] = React.useState<SelectViewportElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [selectedItem, setSelectedItem] = React.useState<SelectItemElement | null>(null);\n const [selectedItemText, setSelectedItemText] = React.useState<SelectItemTextElement | null>(\n null\n );\n const getItems = useCollection(__scopeSelect);\n const [isPositioned, setIsPositioned] = React.useState(false);\n const firstValidItemFoundRef = React.useRef(false);\n\n // aria-hide everything except the content (better supported equivalent to setting aria-modal)\n React.useEffect(() => {\n if (content) return hideOthers(content);\n }, [content]);\n\n // Make sure the whole tree has focus guards as our `Select` may be\n // the last element in the DOM (because of the `Portal`)\n useFocusGuards();\n\n const focusFirst = React.useCallback(\n (candidates: Array<HTMLElement | null>) => {\n const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);\n const [lastItem] = restItems.slice(-1);\n\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate?.scrollIntoView({ block: 'nearest' });\n // viewport might have padding so scroll to its edges when focusing first/last items.\n if (candidate === firstItem && viewport) viewport.scrollTop = 0;\n if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;\n candidate?.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n },\n [getItems, viewport]\n );\n\n const focusSelectedItem = React.useCallback(\n () => focusFirst([selectedItem, content]),\n [focusFirst, selectedItem, content]\n );\n\n // Since this is not dependent on layout, we want to ensure this runs at the same time as\n // other effects across components. Hence why we don't call `focusSelectedItem` inside `position`.\n React.useEffect(() => {\n if (isPositioned) {\n focusSelectedItem();\n }\n }, [isPositioned, focusSelectedItem]);\n\n // prevent selecting items on `pointerup` in some cases after opening from `pointerdown`\n // and close on `pointerup` outside.\n const { onOpenChange, triggerPointerDownPosRef } = context;\n React.useEffect(() => {\n if (content) {\n let pointerMoveDelta = { x: 0, y: 0 };\n\n const handlePointerMove = (event: PointerEvent) => {\n pointerMoveDelta = {\n x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),\n y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0)),\n };\n };\n const handlePointerUp = (event: PointerEvent) => {\n // If the pointer hasn't moved by a certain threshold then we prevent selecting item on `pointerup`.\n if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n event.preventDefault();\n } else {\n // otherwise, if the event was outside the content, close.\n if (!content.contains(event.target as HTMLElement)) {\n onOpenChange(false);\n }\n }\n document.removeEventListener('pointermove', handlePointerMove);\n triggerPointerDownPosRef.current = null;\n };\n\n if (triggerPointerDownPosRef.current !== null) {\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp, { capture: true, once: true });\n }\n\n return () => {\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp, { capture: true });\n };\n }\n }, [content, onOpenChange, triggerPointerDownPosRef]);\n\n React.useEffect(() => {\n const close = () => onOpenChange(false);\n window.addEventListener('blur', close);\n window.addEventListener('resize', close);\n return () => {\n window.removeEventListener('blur', close);\n window.removeEventListener('resize', close);\n };\n }, [onOpenChange]);\n\n const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem) {\n /**\n * Imperative focus during keydown is risky so we prevent React's batching updates\n * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332\n */\n setTimeout(() => (nextItem.ref.current as HTMLElement).focus());\n }\n });\n\n const itemRefCallback = React.useCallback(\n (node: SelectItemElement | null, value: string, disabled: boolean) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== undefined && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItem(node);\n if (isFirstValidItem) firstValidItemFoundRef.current = true;\n }\n },\n [context.value]\n );\n const handleItemLeave = React.useCallback(() => content?.focus(), [content]);\n const itemTextRefCallback = React.useCallback(\n (node: SelectItemTextElement | null, value: string, disabled: boolean) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== undefined && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItemText(node);\n }\n },\n [context.value]\n );\n\n const SelectPosition = position === 'popper' ? SelectPopperPosition : SelectItemAlignedPosition;\n\n // Silently ignore props that are not supported by `SelectItemAlignedPosition`\n const popperContentProps =\n SelectPosition === SelectPopperPosition\n ? {\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions,\n }\n : {};\n\n return (\n <SelectContentProvider\n scope={__scopeSelect}\n content={content}\n viewport={viewport}\n onViewportChange={setViewport}\n itemRefCallback={itemRefCallback}\n selectedItem={selectedItem}\n onItemLeave={handleItemLeave}\n itemTextRefCallback={itemTextRefCallback}\n focusSelectedItem={focusSelectedItem}\n selectedItemText={selectedItemText}\n position={position}\n isPositioned={isPositioned}\n searchRef={searchRef}\n >\n <RemoveScroll as={Slot} allowPinchZoom>\n <FocusScope\n asChild\n // we make sure we're not trapping once it's been closed\n // (closed !== unmounted when animating out)\n trapped={context.open}\n onMountAutoFocus={(event) => {\n // we prevent open autofocus because we manually focus the selected item\n event.preventDefault();\n }}\n onUnmountAutoFocus={composeEventHandlers(onCloseAutoFocus, (event) => {\n context.trigger?.focus({ preventScroll: true });\n event.preventDefault();\n })}\n >\n <DismissableLayer\n asChild\n disableOutsidePointerEvents\n onEscapeKeyDown={onEscapeKeyDown}\n onPointerDownOutside={onPointerDownOutside}\n // When focus is trapped, a focusout event may still happen.\n // We make sure we don't trigger our `onDismiss` in such case.\n onFocusOutside={(event) => event.preventDefault()}\n onDismiss={() => context.onOpenChange(false)}\n >\n <SelectPosition\n role=\"listbox\"\n id={context.contentId}\n data-state={context.open ? 'open' : 'closed'}\n dir={context.dir}\n onContextMenu={(event) => event.preventDefault()}\n {...contentProps}\n {...popperContentProps}\n onPlaced={() => setIsPositioned(true)}\n ref={composedRefs}\n style={{\n // flex layout so we can place the scroll buttons properly\n display: 'flex',\n flexDirection: 'column',\n // reset the outline by default as the content MAY get focused\n outline: 'none',\n ...contentProps.style,\n }}\n onKeyDown={composeEventHandlers(contentProps.onKeyDown, (event) => {\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n\n // select should not be navigated using tab key so we prevent it\n if (event.key === 'Tab') event.preventDefault();\n\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n\n if (['ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {\n const items = getItems().filter((item) => !item.disabled);\n let candidateNodes = items.map((item) => item.ref.current!);\n\n if (['ArrowUp', 'End'].includes(event.key)) {\n candidateNodes = candidateNodes.slice().reverse();\n }\n if (['ArrowUp', 'ArrowDown'].includes(event.key)) {\n const currentElement = event.target as SelectItemElement;\n const currentIndex = candidateNodes.indexOf(currentElement);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n\n /**\n * Imperative focus during keydown is risky so we prevent React's batching updates\n * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332\n */\n setTimeout(() => focusFirst(candidateNodes));\n\n event.preventDefault();\n }\n })}\n />\n </DismissableLayer>\n </FocusScope>\n </RemoveScroll>\n </SelectContentProvider>\n );\n }\n);\n\nSelectContentImpl.displayName = CONTENT_IMPL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectItemAlignedPosition\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_ALIGNED_POSITION_NAME = 'SelectItemAlignedPosition';\n\ntype SelectItemAlignedPositionElement = React.ComponentRef<typeof Primitive.div>;\ninterface SelectItemAlignedPositionProps extends PrimitiveDivProps, SelectPopperPrivateProps {}\n\nconst SelectItemAlignedPosition = React.forwardRef<\n SelectItemAlignedPositionElement,\n SelectItemAlignedPositionProps\n>((props: ScopedProps<SelectItemAlignedPositionProps>, forwardedRef) => {\n const { __scopeSelect, onPlaced, ...popperProps } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);\n const [contentWrapper, setContentWrapper] = React.useState<HTMLDivElement | null>(null);\n const [content, setContent] = React.useState<SelectItemAlignedPositionElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const getItems = useCollection(__scopeSelect);\n const shouldExpandOnScrollRef = React.useRef(false);\n const shouldRepositionRef = React.useRef(true);\n\n const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;\n const position = React.useCallback(() => {\n if (\n context.trigger &&\n context.valueNode &&\n contentWrapper &&\n content &&\n viewport &&\n selectedItem &&\n selectedItemText\n ) {\n const triggerRect = context.trigger.getBoundingClientRect();\n\n // -----------------------------------------------------------------------------------------\n // Horizontal positioning\n // -----------------------------------------------------------------------------------------\n const contentRect = content.getBoundingClientRect();\n const valueNodeRect = context.valueNode.getBoundingClientRect();\n const itemTextRect = selectedItemText.getBoundingClientRect();\n\n if (context.dir !== 'rtl') {\n const itemTextOffset = itemTextRect.left - contentRect.left;\n const left = valueNodeRect.left - itemTextOffset;\n const leftDelta = triggerRect.left - left;\n const minContentWidth = triggerRect.width + leftDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const rightEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedLeft = clamp(left, [\n CONTENT_MARGIN,\n // Prevents the content from going off the starting edge of the\n // viewport. It may still go off the ending edge, but this can be\n // controlled by the user since they may want to manage overflow in a\n // specific way.\n // https://github.com/radix-ui/primitives/issues/2049\n Math.max(CONTENT_MARGIN, rightEdge - contentWidth),\n ]);\n\n contentWrapper.style.minWidth = minContentWidth + 'px';\n contentWrapper.style.left = clampedLeft + 'px';\n } else {\n const itemTextOffset = contentRect.right - itemTextRect.right;\n const right = window.innerWidth - valueNodeRect.right - itemTextOffset;\n const rightDelta = window.innerWidth - triggerRect.right - right;\n const minContentWidth = triggerRect.width + rightDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const leftEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedRight = clamp(right, [\n CONTENT_MARGIN,\n Math.max(CONTENT_MARGIN, leftEdge - contentWidth),\n ]);\n\n contentWrapper.style.minWidth = minContentWidth + 'px';\n contentWrapper.style.right = clampedRight + 'px';\n }\n\n // -----------------------------------------------------------------------------------------\n // Vertical positioning\n // -----------------------------------------------------------------------------------------\n const items = getItems();\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const itemsHeight = viewport.scrollHeight;\n\n const contentStyles = window.getComputedStyle(content);\n const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);\n const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);\n const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);\n const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);\n const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth; // prettier-ignore\n const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);\n\n const viewportStyles = window.getComputedStyle(viewport);\n const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);\n const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);\n\n const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n\n const selectedItemHalfHeight = selectedItem.offsetHeight / 2;\n const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;\n const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n\n const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n\n if (willAlignWithoutTopOverflow) {\n const isLastItem =\n items.length > 0 && selectedItem === items[items.length - 1]!.ref.current;\n contentWrapper.style.bottom = 0 + 'px';\n const viewportOffsetBottom =\n content.clientHeight - viewport.offsetTop - viewport.offsetHeight;\n const clampedTriggerMiddleToBottomEdge = Math.max(\n triggerMiddleToBottomEdge,\n selectedItemHalfHeight +\n // viewport might have padding bottom, include it to avoid a scrollable viewport\n (isLastItem ? viewportPaddingBottom : 0) +\n viewportOffsetBottom +\n contentBorderBottomWidth\n );\n const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n contentWrapper.style.height = height + 'px';\n } else {\n const isFirstItem = items.length > 0 && selectedItem === items[0]!.ref.current;\n contentWrapper.style.top = 0 + 'px';\n const clampedTopEdgeToTriggerMiddle = Math.max(\n topEdgeToTriggerMiddle,\n contentBorderTopWidth +\n viewport.offsetTop +\n // viewport might have padding top, include it to avoid a scrollable viewport\n (isFirstItem ? viewportPaddingTop : 0) +\n selectedItemHalfHeight\n );\n const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n contentWrapper.style.height = height + 'px';\n viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;\n }\n\n contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;\n contentWrapper.style.minHeight = minContentHeight + 'px';\n contentWrapper.style.maxHeight = availableHeight + 'px';\n // -----------------------------------------------------------------------------------------\n\n onPlaced?.();\n\n // we don't want the initial scroll position adjustment to trigger \"expand on scroll\"\n // so we explicitly turn it on only after they've registered.\n requestAnimationFrame(() => (shouldExpandOnScrollRef.current = true));\n }\n }, [\n getItems,\n context.trigger,\n context.valueNode,\n contentWrapper,\n content,\n viewport,\n selectedItem,\n selectedItemText,\n context.dir,\n onPlaced,\n ]);\n\n useLayoutEffect(() => position(), [position]);\n\n // copy z-index from content to wrapper\n const [contentZIndex, setContentZIndex] = React.useState<string>();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n\n // When the viewport becomes scrollable at the top, the scroll up button will mount.\n // Because it is part of the normal flow, it will push down the viewport, thus throwing our\n // trigger => selectedItem alignment off by the amount the viewport was pushed down.\n // We wait for this to happen and then re-run the positining logic one more time to account for it.\n const handleScrollButtonChange = React.useCallback(\n (node: SelectScrollButtonImplElement | null) => {\n if (node && shouldRepositionRef.current === true) {\n position();\n focusSelectedItem?.();\n shouldRepositionRef.current = false;\n }\n },\n [position, focusSelectedItem]\n );\n\n return (\n <SelectViewportProvider\n scope={__scopeSelect}\n contentWrapper={contentWrapper}\n shouldExpandOnScrollRef={shouldExpandOnScrollRef}\n onScrollButtonChange={handleScrollButtonChange}\n >\n <div\n ref={setContentWrapper}\n style={{\n display: 'flex',\n flexDirection: 'column',\n position: 'fixed',\n zIndex: contentZIndex,\n }}\n >\n <Primitive.div\n {...popperProps}\n ref={composedRefs}\n style={{\n // When we get the height of the content, it includes borders. If we were to set\n // the height without having `boxSizing: 'border-box'` it would be too big.\n boxSizing: 'border-box',\n // We need to ensure the content doesn't get taller than the wrapper\n maxHeight: '100%',\n ...popperProps.style,\n }}\n />\n </div>\n </SelectViewportProvider>\n );\n});\n\nSelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectPopperPosition\n * -----------------------------------------------------------------------------------------------*/\n\nconst POPPER_POSITION_NAME = 'SelectPopperPosition';\n\ntype SelectPopperPositionElement = React.ComponentRef<typeof PopperPrimitive.Content>;\ntype PopperContentProps = React.ComponentPropsWithoutRef<typeof PopperPrimitive.Content>;\ninterface SelectPopperPositionProps extends PopperContentProps, SelectPopperPrivateProps {}\n\nconst SelectPopperPosition = React.forwardRef<\n SelectPopperPositionElement,\n SelectPopperPositionProps\n>((props: ScopedProps<SelectPopperPositionProps>, forwardedRef) => {\n const {\n __scopeSelect,\n align = 'start',\n collisionPadding = CONTENT_MARGIN,\n ...popperProps\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n\n return (\n <PopperPrimitive.Content\n {...popperScope}\n {...popperProps}\n ref={forwardedRef}\n align={align}\n collisionPadding={collisionPadding}\n style={{\n // Ensure border-box for floating-ui calculations\n boxSizing: 'border-box',\n ...popperProps.style,\n // re-namespace exposed content custom properties\n ...{\n '--radix-select-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-select-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-select-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-select-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-select-trigger-height': 'var(--radix-popper-anchor-height)',\n },\n }}\n />\n );\n});\n\nSelectPopperPosition.displayName = POPPER_POSITION_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectViewport\n * -----------------------------------------------------------------------------------------------*/\n\ntype SelectViewportContextValue = {\n contentWrapper?: HTMLDivElement | null;\n shouldExpandOnScrollRef?: React.RefObject<boolean>;\n onScrollButtonChange?: (node: SelectScrollButtonImplElement | null) => void;\n};\n\nconst [SelectViewportProvider, useSelectViewportContext] =\n createSelectContext<SelectViewportContextValue>(CONTENT_NAME, {});\n\nconst VIEWPORT_NAME = 'SelectViewport';\n\ntype SelectViewportElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface SelectViewportProps extends PrimitiveDivProps {\n nonce?: string;\n}\n\nconst SelectViewport = React.forwardRef<SelectViewportElement, SelectViewportProps>(\n (props: ScopedProps<SelectViewportProps>, forwardedRef) => {\n const { __scopeSelect, nonce, ...viewportProps } = props;\n const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);\n const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);\n const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);\n const prevScrollTopRef = React.useRef(0);\n return (\n <>\n {/* Hide scrollbars cross-browser and enable momentum scroll for touch devices */}\n <style\n dangerouslySetInnerHTML={{\n __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`,\n }}\n nonce={nonce}\n />\n <Collection.Slot scope={__scopeSelect}>\n <Primitive.div\n data-radix-select-viewport=\"\"\n role=\"presentation\"\n {...viewportProps}\n ref={composedRefs}\n style={{\n // we use position: 'relative' here on the `viewport` so that when we call\n // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n // (independent of the scrollUpButton).\n position: 'relative',\n flex: 1,\n // Viewport should only be scrollable in the vertical direction.\n // This won't work in vertical writing modes, so we'll need to\n // revisit this if/when that is supported\n // https://developer.chrome.com/blog/vertical-form-controls\n overflow: 'hidden auto',\n ...viewportProps.style,\n }}\n onScroll={composeEventHandlers(viewportProps.onScroll, (event) => {\n const viewport = event.currentTarget;\n const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;\n if (shouldExpandOnScrollRef?.current && contentWrapper) {\n const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);\n if (scrolledBy > 0) {\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const cssMinHeight = parseFloat(contentWrapper.style.minHeight);\n const cssHeight = parseFloat(contentWrapper.style.height);\n const prevHeight = Math.max(cssMinHeight, cssHeight);\n\n if (prevHeight < availableHeight) {\n const nextHeight = prevHeight + scrolledBy;\n const clampedNextHeight = Math.min(availableHeight, nextHeight);\n const heightDiff = nextHeight - clampedNextHeight;\n\n contentWrapper.style.height = clampedNextHeight + 'px';\n if (contentWrapper.style.bottom === '0px') {\n viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n // ensure the content stays pinned to the bottom\n contentWrapper.style.justifyContent = 'flex-end';\n }\n }\n }\n }\n prevScrollTopRef.current = viewport.scrollTop;\n })}\n />\n </Collection.Slot>\n </>\n );\n }\n);\n\nSelectViewport.displayName = VIEWPORT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = 'SelectGroup';\n\ntype SelectGroupContextValue = { id: string };\n\nconst [SelectGroupContextProvider, useSelectGroupContext] =\n createSelectContext<SelectGroupContextValue>(GROUP_NAME);\n\ntype SelectGroupElement = React.ComponentRef<typeof Primitive.div>;\ninterface SelectGroupProps extends PrimitiveDivProps {}\n\nconst SelectGroup = React.forwardRef<SelectGroupElement, SelectGroupProps>(\n (props: ScopedProps<SelectGroupProps>, forwardedRef) => {\n const { __scopeSelect, ...groupProps } = props;\n const groupId = useId();\n return (\n <SelectGroupContextProvider scope={__scopeSelect} id={groupId}>\n <Primitive.div role=\"group\" aria-labelledby={groupId} {...groupProps} ref={forwardedRef} />\n </SelectGroupContextProvider>\n );\n }\n);\n\nSelectGroup.displayName = GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = 'SelectLabel';\n\ntype SelectLabelElement = React.ComponentRef<typeof Primitive.div>;\ninterface SelectLabelProps extends PrimitiveDivProps {}\n\nconst SelectLabel = React.forwardRef<SelectLabelElement, SelectLabelProps>(\n (props: ScopedProps<SelectLabelProps>, forwardedRef) => {\n const { __scopeSelect, ...labelProps } = props;\n const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);\n return <Primitive.div id={groupContext.id} {...labelProps} ref={forwardedRef} />;\n }\n);\n\nSelectLabel.displayName = LABEL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'SelectItem';\n\ntype SelectItemContextValue = {\n value: string;\n disabled: boolean;\n textId: string;\n isSelected: boolean;\n onItemTextChange(node: SelectItemTextElement | null): void;\n};\n\nconst [SelectItemContextProvider, useSelectItemContext] =\n createSelectContext<SelectItemContextValue>(ITEM_NAME);\n\ntype SelectItemElement = React.ComponentRef<typeof Primitive.div>;\ninterface SelectItemProps extends PrimitiveDivProps {\n value: string;\n disabled?: boolean;\n textValue?: string;\n}\n\nconst SelectItem = React.forwardRef<SelectItemElement, SelectItemProps>(\n (props: ScopedProps<SelectItemProps>, forwardedRef) => {\n const {\n __scopeSelect,\n value,\n disabled = false,\n textValue: textValueProp,\n ...itemProps\n } = props;\n const context = useSelectContext(ITEM_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);\n const isSelected = context.value === value;\n const [textValue, setTextValue] = React.useState(textValueProp ?? '');\n const [isFocused, setIsFocused] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, (node) =>\n contentContext.itemRefCallback?.(node, value, disabled)\n );\n const textId = useId();\n const pointerTypeRef = React.useRef<React.PointerEvent['pointerType']>('touch');\n\n const handleSelect = () => {\n if (!disabled) {\n context.onValueChange(value);\n context.onOpenChange(false);\n }\n };\n\n if (value === '') {\n throw new Error(\n 'A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.'\n );\n }\n\n return (\n <SelectItemContextProvider\n scope={__scopeSelect}\n value={value}\n disabled={disabled}\n textId={textId}\n isSelected={isSelected}\n onItemTextChange={React.useCallback((node) => {\n setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? '').trim());\n }, [])}\n >\n <Collection.ItemSlot\n scope={__scopeSelect}\n value={value}\n disabled={disabled}\n textValue={textValue}\n >\n <Primitive.div\n role=\"option\"\n aria-labelledby={textId}\n data-highlighted={isFocused ? '' : undefined}\n // `isFocused` caveat fixes stuttering in VoiceOver\n aria-selected={isSelected && isFocused}\n data-state={isSelected ? 'checked' : 'unchecked'}\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? '' : undefined}\n tabIndex={disabled ? undefined : -1}\n {...itemProps}\n ref={composedRefs}\n onFocus={composeEventHandlers(itemProps.onFocus, () => setIsFocused(true))}\n onBlur={composeEventHandlers(itemProps.onBlur, () => setIsFocused(false))}\n onClick={composeEventHandlers(itemProps.onClick, () => {\n // Open on click when using a touch or pen device\n if (pointerTypeRef.current !== 'mouse') handleSelect();\n })}\n onPointerUp={composeEventHandlers(itemProps.onPointerUp, () => {\n // Using a mouse you should be able to do pointer down, move through\n // the list, and release the pointer over the item to select it.\n if (pointerTypeRef.current === 'mouse') handleSelect();\n })}\n onPointerDown={composeEventHandlers(itemProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n })}\n onPointerMove={composeEventHandlers(itemProps.onPointerMove, (event) => {\n // Remember pointer type when sliding over to this item from another one\n pointerTypeRef.current = event.pointerType;\n if (disabled) {\n contentContext.onItemLeave?.();\n } else if (pointerTypeRef.current === 'mouse') {\n // even though safari doesn't support this option, it's acceptable\n // as it only means it might scroll a few pixels when using the pointer.\n event.currentTarget.focus({ preventScroll: true });\n }\n })}\n onPointerLeave={composeEventHandlers(itemProps.onPointerLeave, (event) => {\n if (event.currentTarget === document.activeElement) {\n contentContext.onItemLeave?.();\n }\n })}\n onKeyDown={composeEventHandlers(itemProps.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef?.current !== '';\n if (isTypingAhead && event.key === ' ') return;\n if (SELECTION_KEYS.includes(event.key)) handleSelect();\n // prevent page scroll if using the space key to select an item\n if (event.key === ' ') event.preventDefault();\n })}\n />\n </Collection.ItemSlot>\n </SelectItemContextProvider>\n );\n }\n);\n\nSelectItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectItemText\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_TEXT_NAME = 'SelectItemText';\n\ntype SelectItemTextElement = React.ComponentRef<typeof Primitive.span>;\ninterface SelectItemTextProps extends PrimitiveSpanProps {}\n\nconst SelectItemText = React.forwardRef<SelectItemTextElement, SelectItemTextProps>(\n (props: ScopedProps<SelectItemTextProps>, forwardedRef) => {\n // We ignore `className` and `style` as this part shouldn't be styled.\n const { __scopeSelect, className, style, ...itemTextProps } = props;\n const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);\n const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);\n const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);\n const [itemTextNode, setItemTextNode] = React.useState<SelectItemTextElement | null>(null);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => setItemTextNode(node),\n itemContext.onItemTextChange,\n (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)\n );\n\n const textContent = itemTextNode?.textContent;\n const nativeOption = React.useMemo(\n () => (\n <option key={itemContext.value} value={itemContext.value} disabled={itemContext.disabled}>\n {textContent}\n </option>\n ),\n [itemContext.disabled, itemContext.value, textContent]\n );\n\n const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;\n useLayoutEffect(() => {\n onNativeOptionAdd(nativeOption);\n return () => onNativeOptionRemove(nativeOption);\n }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);\n\n return (\n <>\n <Primitive.span id={itemContext.textId} {...itemTextProps} ref={composedRefs} />\n\n {/* Portal the select item text into the trigger value node */}\n {itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren\n ? ReactDOM.createPortal(itemTextProps.children, context.valueNode)\n : null}\n </>\n );\n }\n);\n\nSelectItemText.displayName = ITEM_TEXT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectItemIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_INDICATOR_NAME = 'SelectItemIndicator';\n\ntype SelectItemIndicatorElement = React.ComponentRef<typeof Primitive.span>;\ninterface SelectItemIndicatorProps extends PrimitiveSpanProps {}\n\nconst SelectItemIndicator = React.forwardRef<SelectItemIndicatorElement, SelectItemIndicatorProps>(\n (props: ScopedProps<SelectItemIndicatorProps>, forwardedRef) => {\n const { __scopeSelect, ...itemIndicatorProps } = props;\n const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);\n return itemContext.isSelected ? (\n <Primitive.span aria-hidden {...itemIndicatorProps} ref={forwardedRef} />\n ) : null;\n }\n);\n\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectScrollUpButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_UP_BUTTON_NAME = 'SelectScrollUpButton';\n\ntype SelectScrollUpButtonElement = SelectScrollButtonImplElement;\ninterface SelectScrollUpButtonProps extends Omit<SelectScrollButtonImplProps, 'onAutoScroll'> {}\n\nconst SelectScrollUpButton = React.forwardRef<\n SelectScrollUpButtonElement,\n SelectScrollUpButtonProps\n>((props: ScopedProps<SelectScrollUpButtonProps>, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const [canScrollUp, setCanScrollUp] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n const viewport = contentContext.viewport;\n function handleScroll() {\n const canScrollUp = viewport.scrollTop > 0;\n setCanScrollUp(canScrollUp);\n }\n handleScroll();\n viewport.addEventListener('scroll', handleScroll);\n return () => viewport.removeEventListener('scroll', handleScroll);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n\n return canScrollUp ? (\n <SelectScrollButtonImpl\n {...props}\n ref={composedRefs}\n onAutoScroll={() => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;\n }\n }}\n />\n ) : null;\n});\n\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectScrollDownButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_DOWN_BUTTON_NAME = 'SelectScrollDownButton';\n\ntype SelectScrollDownButtonElement = SelectScrollButtonImplElement;\ninterface SelectScrollDownButtonProps extends Omit<SelectScrollButtonImplProps, 'onAutoScroll'> {}\n\nconst SelectScrollDownButton = React.forwardRef<\n SelectScrollDownButtonElement,\n SelectScrollDownButtonProps\n>((props: ScopedProps<SelectScrollDownButtonProps>, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const [canScrollDown, setCanScrollDown] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n const viewport = contentContext.viewport;\n function handleScroll() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight;\n // we use Math.ceil here because if the UI is zoomed-in\n // `scrollTop` is not always reported as an integer\n const canScrollDown = Math.ceil(viewport.scrollTop) < maxScroll;\n setCanScrollDown(canScrollDown);\n }\n handleScroll();\n viewport.addEventListener('scroll', handleScroll);\n return () => viewport.removeEventListener('scroll', handleScroll);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n\n return canScrollDown ? (\n <SelectScrollButtonImpl\n {...props}\n ref={composedRefs}\n onAutoScroll={() => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;\n }\n }}\n />\n ) : null;\n});\n\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;\n\ntype SelectScrollButtonImplElement = React.ComponentRef<typeof Primitive.div>;\ninterface SelectScrollButtonImplProps extends PrimitiveDivProps {\n onAutoScroll(): void;\n}\n\nconst SelectScrollButtonImpl = React.forwardRef<\n SelectScrollButtonImplElement,\n SelectScrollButtonImplProps\n>((props: ScopedProps<SelectScrollButtonImplProps>, forwardedRef) => {\n const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;\n const contentContext = useSelectContentContext('SelectScrollButton', __scopeSelect);\n const autoScrollTimerRef = React.useRef<number | null>(null);\n const getItems = useCollection(__scopeSelect);\n\n const clearAutoScrollTimer = React.useCallback(() => {\n if (autoScrollTimerRef.current !== null) {\n window.clearInterval(autoScrollTimerRef.current);\n autoScrollTimerRef.current = null;\n }\n }, []);\n\n React.useEffect(() => {\n return () => clearAutoScrollTimer();\n }, [clearAutoScrollTimer]);\n\n // When the viewport becomes scrollable on either side, the relevant scroll button will mount.\n // Because it is part of the normal flow, it will push down (top button) or shrink (bottom button)\n // the viewport, potentially causing the active item to now be partially out of view.\n // We re-run the `scrollIntoView` logic to make sure it stays within the viewport.\n useLayoutEffect(() => {\n const activeItem = getItems().find((item) => item.ref.current === document.activeElement);\n activeItem?.ref.current?.scrollIntoView({ block: 'nearest' });\n }, [getItems]);\n\n return (\n <Primitive.div\n aria-hidden\n {...scrollIndicatorProps}\n ref={forwardedRef}\n style={{ flexShrink: 0, ...scrollIndicatorProps.style }}\n onPointerDown={composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n })}\n onPointerMove={composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {\n contentContext.onItemLeave?.();\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n })}\n onPointerLeave={composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {\n clearAutoScrollTimer();\n })}\n />\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * SelectSeparator\n * -----------------------------------------------------------------------------------------------*/\n\nconst SEPARATOR_NAME = 'SelectSeparator';\n\ntype SelectSeparatorElement = React.ComponentRef<typeof Primitive.div>;\ninterface SelectSeparatorProps extends PrimitiveDivProps {}\n\nconst SelectSeparator = React.forwardRef<SelectSeparatorElement, SelectSeparatorProps>(\n (props: ScopedProps<SelectSeparatorProps>, forwardedRef) => {\n const { __scopeSelect, ...separatorProps } = props;\n return <Primitive.div aria-hidden {...separatorProps} ref={forwardedRef} />;\n }\n);\n\nSelectSeparator.displayName = SEPARATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'SelectArrow';\n\ntype SelectArrowElement = React.ComponentRef<typeof PopperPrimitive.Arrow>;\ntype PopperArrowProps = React.ComponentPropsWithoutRef<typeof PopperPrimitive.Arrow>;\ninterface SelectArrowProps extends PopperArrowProps {}\n\nconst SelectArrow = React.forwardRef<SelectArrowElement, SelectArrowProps>(\n (props: ScopedProps<SelectArrowProps>, forwardedRef) => {\n const { __scopeSelect, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(ARROW_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);\n return context.open && contentContext.position === 'popper' ? (\n <PopperPrimitive.Arrow {...popperScope} {...arrowProps} ref={forwardedRef} />\n ) : null;\n }\n);\n\nSelectArrow.displayName = ARROW_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SelectBubbleInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst BUBBLE_INPUT_NAME = 'SelectBubbleInput';\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Primitive.select>;\ninterface SwitchBubbleInputProps extends InputProps {}\n\nconst SelectBubbleInput = React.forwardRef<HTMLSelectElement, SwitchBubbleInputProps>(\n ({ __scopeSelect, value, ...props }: ScopedProps<SwitchBubbleInputProps>, forwardedRef) => {\n const ref = React.useRef<HTMLSelectElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const prevValue = usePrevious(value);\n\n // Bubble value change to parents (e.g form change event)\n React.useEffect(() => {\n const select = ref.current;\n if (!select) return;\n\n const selectProto = window.HTMLSelectElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n selectProto,\n 'value'\n ) as PropertyDescriptor;\n const setValue = descriptor.set;\n if (prevValue !== value && setValue) {\n const event = new Event('change', { bubbles: true });\n setValue.call(select, value);\n select.dispatchEvent(event);\n }\n }, [prevValue, value]);\n\n /**\n * We purposefully use a `select` here to support form autofill as much as\n * possible.\n *\n * We purposefully do not add the `value` attribute here to allow the value\n * to be set programmatically and bubble to any parent form `onChange`\n * event. Adding the `value` will cause React to consider the programmatic\n * dispatch a duplicate and it will get swallowed.\n *\n * We use visually hidden styles rather than `display: \"none\"` because\n * Safari autofill won't work otherwise.\n */\n return (\n <Primitive.select\n {...props}\n style={{ ...VISUALLY_HIDDEN_STYLES, ...props.style }}\n ref={composedRefs}\n defaultValue={value}\n />\n );\n }\n);\n\nSelectBubbleInput.displayName = BUBBLE_INPUT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction shouldShowPlaceholder(value?: string) {\n return value === '' || value === undefined;\n}\n\nfunction useTypeaheadSearch(onSearchChange: (search: string) => void) {\n const handleSearchChange = useCallbackRef(onSearchChange);\n const searchRef = React.useRef('');\n const timerRef = React.useRef(0);\n\n const handleTypeaheadSearch = React.useCallback(\n (key: string) => {\n const search = searchRef.current + key;\n handleSearchChange(search);\n\n (function updateSearch(value: string) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n // Reset `searchRef` 1 second after it was last updated\n if (value !== '') timerRef.current = window.setTimeout(() => updateSearch(''), 1000);\n })(search);\n },\n [handleSearchChange]\n );\n\n const resetTypeahead = React.useCallback(() => {\n searchRef.current = '';\n window.clearTimeout(timerRef.current);\n }, []);\n\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n\n return [searchRef, handleTypeaheadSearch, resetTypeahead] as const;\n}\n\n/**\n * This is the \"meat\" of the typeahead matching logic. It takes in a list of items,\n * the search and the current item, and returns the next item (or `undefined`).\n *\n * We normalize the search because if a user has repeatedly pressed a character,\n * we want the exact same behavior as if we only had that one character\n * (ie. cycle through items starting with that character)\n *\n * We also reorder the items by wrapping the array around the current item.\n * This is so we always look forward from the current item, and picking the first\n * item will always be the correct one.\n *\n * Finally, if the normalized search is exactly one character, we exclude the\n * current item from the values because otherwise it would be the first to match always\n * and focus would never move. This is as opposed to the regular case, where we\n * don't want focus to move if the current item still matches.\n */\nfunction findNextItem<T extends { textValue: string }>(\n items: T[],\n search: string,\n currentItem?: T\n) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0]! : search;\n const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;\n let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));\n const excludeCurrentItem = normalizedSearch.length === 1;\n if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);\n const nextItem = wrappedItems.find((item) =>\n item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextItem !== currentItem ? nextItem : undefined;\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nfunction wrapArray<T>(array: T[], startIndex: number) {\n return array.map<T>((_, index) => array[(startIndex + index) % array.length]!);\n}\n\nconst Root = Select;\nconst Trigger = SelectTrigger;\nconst Value = SelectValue;\nconst Icon = SelectIcon;\nconst Portal = SelectPortal;\nconst Content = SelectContent;\nconst Viewport = SelectViewport;\nconst Group = SelectGroup;\nconst Label = SelectLabel;\nconst Item = SelectItem;\nconst ItemText = SelectItemText;\nconst ItemIndicator = SelectItemIndicator;\nconst ScrollUpButton = SelectScrollUpButton;\nconst ScrollDownButton = SelectScrollDownButton;\nconst Separator = SelectSeparator;\nconst Arrow = SelectArrow;\n\nexport {\n createSelectScope,\n //\n Select,\n SelectTrigger,\n SelectValue,\n SelectIcon,\n SelectPortal,\n SelectContent,\n SelectViewport,\n SelectGroup,\n SelectLabel,\n SelectItem,\n SelectItemText,\n SelectItemIndicator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n SelectSeparator,\n SelectArrow,\n //\n Root,\n Trigger,\n Value,\n Icon,\n Portal,\n Content,\n Viewport,\n Group,\n Label,\n Item,\n ItemText,\n ItemIndicator,\n ScrollUpButton,\n ScrollDownButton,\n Separator,\n Arrow,\n};\nexport type {\n SelectProps,\n SelectTriggerProps,\n SelectValueProps,\n SelectIconProps,\n SelectPortalProps,\n SelectContentProps,\n SelectViewportProps,\n SelectGroupProps,\n SelectLabelProps,\n SelectItemProps,\n SelectItemTextProps,\n SelectItemIndicatorProps,\n SelectScrollUpButtonProps,\n SelectScrollDownButtonProps,\n SelectSeparatorProps,\n SelectArrowProps,\n};\n","import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n\n/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]];\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon('check', __iconNode);\n\nexport default Check;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm18 15-6-6-6 6', key: '153udz' }]];\n\n/**\n * @component @name ChevronUp\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTggMTUtNi02LTYgNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-up\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronUp = createLucideIcon('chevron-up', __iconNode);\n\nexport default ChevronUp;\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","import * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\n\n/* -------------------------------------------------------------------------------------------------\n * Label\n * -----------------------------------------------------------------------------------------------*/\n\nconst NAME = 'Label';\n\ntype LabelElement = React.ComponentRef<typeof Primitive.label>;\ntype PrimitiveLabelProps = React.ComponentPropsWithoutRef<typeof Primitive.label>;\ninterface LabelProps extends PrimitiveLabelProps {}\n\nconst Label = React.forwardRef<LabelElement, LabelProps>((props, forwardedRef) => {\n return (\n <Primitive.label\n {...props}\n ref={forwardedRef}\n onMouseDown={(event) => {\n // only prevent text selection if clicking inside the label itself\n const target = event.target as HTMLElement;\n if (target.closest('button, input, select, textarea')) return;\n\n props.onMouseDown?.(event);\n // prevent text selection when double clicking label\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }}\n />\n );\n});\n\nLabel.displayName = NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Label;\n\nexport {\n Label,\n //\n Root,\n};\nexport type { LabelProps };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Switch\n * -----------------------------------------------------------------------------------------------*/\n\nconst SWITCH_NAME = 'Switch';\n\ntype ScopedProps<P> = P & { __scopeSwitch?: Scope };\nconst [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\n\ntype SwitchContextValue = { checked: boolean; disabled?: boolean };\nconst [SwitchProvider, useSwitchContext] = createSwitchContext<SwitchContextValue>(SWITCH_NAME);\n\ntype SwitchElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface SwitchProps extends PrimitiveButtonProps {\n checked?: boolean;\n defaultChecked?: boolean;\n required?: boolean;\n onCheckedChange?(checked: boolean): void;\n}\n\nconst Switch = React.forwardRef<SwitchElement, SwitchProps>(\n (props: ScopedProps<SwitchProps>, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = 'on',\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState<HTMLButtonElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = button ? form || !!button.closest('form') : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME,\n });\n\n return (\n <SwitchProvider scope={__scopeSwitch} checked={checked} disabled={disabled}>\n <Primitive.button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-required={required}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...switchProps}\n ref={composedRefs}\n onClick={composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if switch is in a form, stop propagation from the button so that we only propagate\n // one click event (from the input). We propagate changes from an input so that native\n // form validation works and form events reflect switch updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n {isFormControl && (\n <SwitchBubbleInput\n control={button}\n bubbles={!hasConsumerStoppedPropagationRef.current}\n name={name}\n value={value}\n checked={checked}\n required={required}\n disabled={disabled}\n form={form}\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n style={{ transform: 'translateX(-100%)' }}\n />\n )}\n </SwitchProvider>\n );\n }\n);\n\nSwitch.displayName = SWITCH_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SwitchThumb\n * -----------------------------------------------------------------------------------------------*/\n\nconst THUMB_NAME = 'SwitchThumb';\n\ntype SwitchThumbElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface SwitchThumbProps extends PrimitiveSpanProps {}\n\nconst SwitchThumb = React.forwardRef<SwitchThumbElement, SwitchThumbProps>(\n (props: ScopedProps<SwitchThumbProps>, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return (\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...thumbProps}\n ref={forwardedRef}\n />\n );\n }\n);\n\nSwitchThumb.displayName = THUMB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SwitchBubbleInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst BUBBLE_INPUT_NAME = 'SwitchBubbleInput';\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface SwitchBubbleInputProps extends Omit<InputProps, 'checked'> {\n checked: boolean;\n control: HTMLElement | null;\n bubbles: boolean;\n}\n\nconst SwitchBubbleInput = React.forwardRef<HTMLInputElement, SwitchBubbleInputProps>(\n (\n {\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }: ScopedProps<SwitchBubbleInputProps>,\n forwardedRef\n ) => {\n const ref = React.useRef<HTMLInputElement>(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n 'checked'\n ) as PropertyDescriptor;\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n\n return (\n <input\n type=\"checkbox\"\n aria-hidden\n defaultChecked={checked}\n {...props}\n tabIndex={-1}\n ref={composedRefs}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n }}\n />\n );\n }\n);\n\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(checked: boolean) {\n return checked ? 'checked' : 'unchecked';\n}\n\nconst Root = Switch;\nconst Thumb = SwitchThumb;\n\nexport {\n createSwitchScope,\n //\n Switch,\n SwitchThumb,\n //\n Root,\n Thumb,\n};\nexport type { SwitchProps, SwitchThumbProps };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContext, createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useFocusGuards } from '@radix-ui/react-focus-guards';\nimport { RemoveScroll } from 'react-remove-scroll';\nimport { hideOthers } from 'aria-hidden';\nimport { createSlot } from '@radix-ui/react-slot';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Dialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst DIALOG_NAME = 'Dialog';\n\ntype ScopedProps<P> = P & { __scopeDialog?: Scope };\nconst [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\n\ntype DialogContextValue = {\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n contentRef: React.RefObject<DialogContentElement | null>;\n contentId: string;\n titleId: string;\n descriptionId: string;\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpenToggle(): void;\n modal: boolean;\n};\n\nconst [DialogProvider, useDialogContext] = createDialogContext<DialogContextValue>(DIALOG_NAME);\n\ninterface DialogProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?(open: boolean): void;\n modal?: boolean;\n}\n\nconst Dialog: React.FC<DialogProps> = (props: ScopedProps<DialogProps>) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true,\n } = props;\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const contentRef = React.useRef<DialogContentElement>(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME,\n });\n\n return (\n <DialogProvider\n scope={__scopeDialog}\n triggerRef={triggerRef}\n contentRef={contentRef}\n contentId={useId()}\n titleId={useId()}\n descriptionId={useId()}\n open={open}\n onOpenChange={setOpen}\n onOpenToggle={React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}\n modal={modal}\n >\n {children}\n </DialogProvider>\n );\n};\n\nDialog.displayName = DIALOG_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'DialogTrigger';\n\ntype DialogTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface DialogTriggerProps extends PrimitiveButtonProps {}\n\nconst DialogTrigger = React.forwardRef<DialogTriggerElement, DialogTriggerProps>(\n (props: ScopedProps<DialogTriggerProps>, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return (\n <Primitive.button\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={context.open}\n aria-controls={context.contentId}\n data-state={getState(context.open)}\n {...triggerProps}\n ref={composedTriggerRef}\n onClick={composeEventHandlers(props.onClick, context.onOpenToggle)}\n />\n );\n }\n);\n\nDialogTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'DialogPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createDialogContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface DialogPortalProps {\n children?: React.ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps['container'];\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst DialogPortal: React.FC<DialogPortalProps> = (props: ScopedProps<DialogPortalProps>) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return (\n <PortalProvider scope={__scopeDialog} forceMount={forceMount}>\n {React.Children.map(children, (child) => (\n <Presence present={forceMount || context.open}>\n <PortalPrimitive asChild container={container}>\n {child}\n </PortalPrimitive>\n </Presence>\n ))}\n </PortalProvider>\n );\n};\n\nDialogPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogOverlay\n * -----------------------------------------------------------------------------------------------*/\n\nconst OVERLAY_NAME = 'DialogOverlay';\n\ntype DialogOverlayElement = DialogOverlayImplElement;\ninterface DialogOverlayProps extends DialogOverlayImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst DialogOverlay = React.forwardRef<DialogOverlayElement, DialogOverlayProps>(\n (props: ScopedProps<DialogOverlayProps>, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? (\n <Presence present={forceMount || context.open}>\n <DialogOverlayImpl {...overlayProps} ref={forwardedRef} />\n </Presence>\n ) : null;\n }\n);\n\nDialogOverlay.displayName = OVERLAY_NAME;\n\ntype DialogOverlayImplElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface DialogOverlayImplProps extends PrimitiveDivProps {}\n\nconst Slot = createSlot('DialogOverlay.RemoveScroll');\n\nconst DialogOverlayImpl = React.forwardRef<DialogOverlayImplElement, DialogOverlayImplProps>(\n (props: ScopedProps<DialogOverlayImplProps>, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n <RemoveScroll as={Slot} allowPinchZoom shards={[context.contentRef]}>\n <Primitive.div\n data-state={getState(context.open)}\n {...overlayProps}\n ref={forwardedRef}\n // We re-enable pointer-events prevented by `Dialog.Content` to allow scrolling the overlay.\n style={{ pointerEvents: 'auto', ...overlayProps.style }}\n />\n </RemoveScroll>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DialogContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'DialogContent';\n\ntype DialogContentElement = DialogContentTypeElement;\ninterface DialogContentProps extends DialogContentTypeProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst DialogContent = React.forwardRef<DialogContentElement, DialogContentProps>(\n (props: ScopedProps<DialogContentProps>, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return (\n <Presence present={forceMount || context.open}>\n {context.modal ? (\n <DialogContentModal {...contentProps} ref={forwardedRef} />\n ) : (\n <DialogContentNonModal {...contentProps} ref={forwardedRef} />\n )}\n </Presence>\n );\n }\n);\n\nDialogContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype DialogContentTypeElement = DialogContentImplElement;\ninterface DialogContentTypeProps\n extends Omit<DialogContentImplProps, 'trapFocus' | 'disableOutsidePointerEvents'> {}\n\nconst DialogContentModal = React.forwardRef<DialogContentTypeElement, DialogContentTypeProps>(\n (props: ScopedProps<DialogContentTypeProps>, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n\n // aria-hide everything except the content (better supported equivalent to setting aria-modal)\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n\n return (\n <DialogContentImpl\n {...props}\n ref={composedRefs}\n // we make sure focus isn't trapped once `DialogContent` has been closed\n // (closed !== unmounted when animating out)\n trapFocus={context.open}\n disableOutsidePointerEvents\n onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n })}\n onPointerDownOutside={composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n\n // If the event is a right-click, we shouldn't close because\n // it is effectively as if we right-clicked the `Overlay`.\n if (isRightClick) event.preventDefault();\n })}\n // When focus is trapped, a `focusout` event may still happen.\n // We make sure we don't trigger our `onDismiss` in such case.\n onFocusOutside={composeEventHandlers(props.onFocusOutside, (event) =>\n event.preventDefault()\n )}\n />\n );\n }\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst DialogContentNonModal = React.forwardRef<DialogContentTypeElement, DialogContentTypeProps>(\n (props: ScopedProps<DialogContentTypeProps>, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n\n return (\n <DialogContentImpl\n {...props}\n ref={forwardedRef}\n trapFocus={false}\n disableOutsidePointerEvents={false}\n onCloseAutoFocus={(event) => {\n props.onCloseAutoFocus?.(event);\n\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault();\n }\n\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n }}\n onInteractOutside={(event) => {\n props.onInteractOutside?.(event);\n\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === 'pointerdown') {\n hasPointerDownOutsideRef.current = true;\n }\n }\n\n // Prevent dismissing when clicking the trigger.\n // As the trigger is already setup to close, without doing so would\n // cause it to close and immediately open.\n const target = event.target as HTMLElement;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n\n // On Safari if the trigger is inside a container with tabIndex={0}, when clicked\n // we will get the pointer down outside event on the trigger, but then a subsequent\n // focus outside event on the container, we ignore any focus outside event when we've\n // already had a pointer down outside event.\n if (event.detail.originalEvent.type === 'focusin' && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }}\n />\n );\n }\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype DialogContentImplElement = React.ComponentRef<typeof DismissableLayer>;\ntype DismissableLayerProps = React.ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype FocusScopeProps = React.ComponentPropsWithoutRef<typeof FocusScope>;\ninterface DialogContentImplProps extends Omit<DismissableLayerProps, 'onDismiss'> {\n /**\n * When `true`, focus cannot escape the `Content` via keyboard,\n * pointer, or a programmatic focus.\n * @defaultValue false\n */\n trapFocus?: FocusScopeProps['trapped'];\n\n /**\n * Event handler called when auto-focusing on open.\n * Can be prevented.\n */\n onOpenAutoFocus?: FocusScopeProps['onMountAutoFocus'];\n\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus'];\n}\n\nconst DialogContentImpl = React.forwardRef<DialogContentImplElement, DialogContentImplProps>(\n (props: ScopedProps<DialogContentImplProps>, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n\n // Make sure the whole tree has focus guards as our `Dialog` will be\n // the last element in the DOM (because of the `Portal`)\n useFocusGuards();\n\n return (\n <>\n <FocusScope\n asChild\n loop\n trapped={trapFocus}\n onMountAutoFocus={onOpenAutoFocus}\n onUnmountAutoFocus={onCloseAutoFocus}\n >\n <DismissableLayer\n role=\"dialog\"\n id={context.contentId}\n aria-describedby={context.descriptionId}\n aria-labelledby={context.titleId}\n data-state={getState(context.open)}\n {...contentProps}\n ref={composedRefs}\n onDismiss={() => context.onOpenChange(false)}\n />\n </FocusScope>\n {process.env.NODE_ENV !== 'production' && (\n <>\n <TitleWarning titleId={context.titleId} />\n <DescriptionWarning contentRef={contentRef} descriptionId={context.descriptionId} />\n </>\n )}\n </>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DialogTitle\n * -----------------------------------------------------------------------------------------------*/\n\nconst TITLE_NAME = 'DialogTitle';\n\ntype DialogTitleElement = React.ComponentRef<typeof Primitive.h2>;\ntype PrimitiveHeading2Props = React.ComponentPropsWithoutRef<typeof Primitive.h2>;\ninterface DialogTitleProps extends PrimitiveHeading2Props {}\n\nconst DialogTitle = React.forwardRef<DialogTitleElement, DialogTitleProps>(\n (props: ScopedProps<DialogTitleProps>, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return <Primitive.h2 id={context.titleId} {...titleProps} ref={forwardedRef} />;\n }\n);\n\nDialogTitle.displayName = TITLE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogDescription\n * -----------------------------------------------------------------------------------------------*/\n\nconst DESCRIPTION_NAME = 'DialogDescription';\n\ntype DialogDescriptionElement = React.ComponentRef<typeof Primitive.p>;\ntype PrimitiveParagraphProps = React.ComponentPropsWithoutRef<typeof Primitive.p>;\ninterface DialogDescriptionProps extends PrimitiveParagraphProps {}\n\nconst DialogDescription = React.forwardRef<DialogDescriptionElement, DialogDescriptionProps>(\n (props: ScopedProps<DialogDescriptionProps>, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return <Primitive.p id={context.descriptionId} {...descriptionProps} ref={forwardedRef} />;\n }\n);\n\nDialogDescription.displayName = DESCRIPTION_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogClose\n * -----------------------------------------------------------------------------------------------*/\n\nconst CLOSE_NAME = 'DialogClose';\n\ntype DialogCloseElement = React.ComponentRef<typeof Primitive.button>;\ninterface DialogCloseProps extends PrimitiveButtonProps {}\n\nconst DialogClose = React.forwardRef<DialogCloseElement, DialogCloseProps>(\n (props: ScopedProps<DialogCloseProps>, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return (\n <Primitive.button\n type=\"button\"\n {...closeProps}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => context.onOpenChange(false))}\n />\n );\n }\n);\n\nDialogClose.displayName = CLOSE_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst TITLE_WARNING_NAME = 'DialogTitleWarning';\n\nconst [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: 'dialog',\n});\n\ntype TitleWarningProps = { titleId?: string };\n\nconst TitleWarning: React.FC<TitleWarningProps> = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n\n return null;\n};\n\nconst DESCRIPTION_WARNING_NAME = 'DialogDescriptionWarning';\n\ntype DescriptionWarningProps = {\n contentRef: React.RefObject<DialogContentElement | null>;\n descriptionId?: string;\n};\n\nconst DescriptionWarning: React.FC<DescriptionWarningProps> = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute('aria-describedby');\n // if we have an id and the user hasn't set aria-describedby={undefined}\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n\n return null;\n};\n\nconst Root = Dialog;\nconst Trigger = DialogTrigger;\nconst Portal = DialogPortal;\nconst Overlay = DialogOverlay;\nconst Content = DialogContent;\nconst Title = DialogTitle;\nconst Description = DialogDescription;\nconst Close = DialogClose;\n\nexport {\n createDialogScope,\n //\n Dialog,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogContent,\n DialogTitle,\n DialogDescription,\n DialogClose,\n //\n Root,\n Trigger,\n Portal,\n Overlay,\n Content,\n Title,\n Description,\n Close,\n //\n WarningProvider,\n};\nexport type {\n DialogProps,\n DialogTriggerProps,\n DialogPortalProps,\n DialogOverlayProps,\n DialogContentProps,\n DialogTitleProps,\n DialogDescriptionProps,\n DialogCloseProps,\n};\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n];\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPgogIDxwYXRoIGQ9Im02IDYgMTIgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('x', __iconNode);\n\nexport default X;\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nexport { _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _defineProperty as defineProperty, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _objectSpread2 as objectSpread2, _objectWithoutProperties as objectWithoutProperties, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _slicedToArray as slicedToArray, _unsupportedIterableToArray as unsupportedIterableToArray };\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n}\n\nfunction curry(fn) {\n return function curried() {\n var _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len3 = arguments.length, nextArgs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n nextArgs[_key3] = arguments[_key3];\n }\n\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nfunction isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nfunction isEmpty(obj) {\n return !Object.keys(obj).length;\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nfunction hasOwnProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nfunction validateChanges(initial, changes) {\n if (!isObject(changes)) errorHandler('changeType');\n if (Object.keys(changes).some(function (field) {\n return !hasOwnProperty(initial, field);\n })) errorHandler('changeField');\n return changes;\n}\n\nfunction validateSelector(selector) {\n if (!isFunction(selector)) errorHandler('selectorType');\n}\n\nfunction validateHandler(handler) {\n if (!(isFunction(handler) || isObject(handler))) errorHandler('handlerType');\n if (isObject(handler) && Object.values(handler).some(function (_handler) {\n return !isFunction(_handler);\n })) errorHandler('handlersType');\n}\n\nfunction validateInitial(initial) {\n if (!initial) errorHandler('initialIsRequired');\n if (!isObject(initial)) errorHandler('initialType');\n if (isEmpty(initial)) errorHandler('initialContent');\n}\n\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\n\nvar errorMessages = {\n initialIsRequired: 'initial state is required',\n initialType: 'initial state should be an object',\n initialContent: 'initial state shouldn\\'t be an empty object',\n handlerType: 'handler should be an object or a function',\n handlersType: 'all handlers should be a functions',\n selectorType: 'selector should be a function',\n changeType: 'provided value of changes should be an object',\n changeField: 'it seams you want to change a field in the state which is not specified in the \"initial\" state',\n \"default\": 'an unknown error accured in `state-local` package'\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n changes: validateChanges,\n selector: validateSelector,\n handler: validateHandler,\n initial: validateInitial\n};\n\nfunction create(initial) {\n var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n validators.initial(initial);\n validators.handler(handler);\n var state = {\n current: initial\n };\n var didUpdate = curry(didStateUpdate)(state, handler);\n var update = curry(updateState)(state);\n var validate = curry(validators.changes)(initial);\n var getChanges = curry(extractChanges)(state);\n\n function getState() {\n var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (state) {\n return state;\n };\n validators.selector(selector);\n return selector(state.current);\n }\n\n function setState(causedChanges) {\n compose(didUpdate, update, validate, getChanges)(causedChanges);\n }\n\n return [getState, setState];\n}\n\nfunction extractChanges(state, causedChanges) {\n return isFunction(causedChanges) ? causedChanges(state.current) : causedChanges;\n}\n\nfunction updateState(state, changes) {\n state.current = _objectSpread2(_objectSpread2({}, state.current), changes);\n return changes;\n}\n\nfunction didStateUpdate(state, handler, changes) {\n isFunction(handler) ? handler(state.current) : Object.keys(changes).forEach(function (field) {\n var _handler$field;\n\n return (_handler$field = handler[field]) === null || _handler$field === void 0 ? void 0 : _handler$field.call(handler, state.current[field]);\n });\n return changes;\n}\n\nvar index = {\n create: create\n};\n\nexport default index;\n","var config = {\n paths: {\n vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.52.2/min/vs'\n }\n};\n\nexport default config;\n","function curry(fn) {\n return function curried() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len2 = arguments.length, nextArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n nextArgs[_key2] = arguments[_key2];\n }\n\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nexport default curry;\n","function isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nexport default isObject;\n","import curry from '../utils/curry.js';\nimport isObject from '../utils/isObject.js';\n\n/**\n * validates the configuration object and informs about deprecation\n * @param {Object} config - the configuration object \n * @return {Object} config - the validated configuration object\n */\n\nfunction validateConfig(config) {\n if (!config) errorHandler('configIsRequired');\n if (!isObject(config)) errorHandler('configType');\n\n if (config.urls) {\n informAboutDeprecation();\n return {\n paths: {\n vs: config.urls.monacoBase\n }\n };\n }\n\n return config;\n}\n/**\n * logs deprecation message\n */\n\n\nfunction informAboutDeprecation() {\n console.warn(errorMessages.deprecation);\n}\n\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\n\nvar errorMessages = {\n configIsRequired: 'the configuration object is required',\n configType: 'the configuration object should be an object',\n \"default\": 'an unknown error accured in `@monaco-editor/loader` package',\n deprecation: \"Deprecation warning!\\n You are using deprecated way of configuration.\\n\\n Instead of using\\n monaco.config({ urls: { monacoBase: '...' } })\\n use\\n monaco.config({ paths: { vs: '...' } })\\n\\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\\n \"\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n config: validateConfig\n};\n\nexport default validators;\nexport { errorHandler, errorMessages };\n","var compose = function compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n};\n\nexport default compose;\n","import { objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';\n\nfunction merge(target, source) {\n Object.keys(source).forEach(function (key) {\n if (source[key] instanceof Object) {\n if (target[key]) {\n Object.assign(source[key], merge(target[key], source[key]));\n }\n }\n });\n return _objectSpread2(_objectSpread2({}, target), source);\n}\n\nexport default merge;\n","// The source (has been changed) is https://github.com/facebook/react/issues/5465#issuecomment-157888325\nvar CANCELATION_MESSAGE = {\n type: 'cancelation',\n msg: 'operation is manually canceled'\n};\n\nfunction makeCancelable(promise) {\n var hasCanceled_ = false;\n var wrappedPromise = new Promise(function (resolve, reject) {\n promise.then(function (val) {\n return hasCanceled_ ? reject(CANCELATION_MESSAGE) : resolve(val);\n });\n promise[\"catch\"](reject);\n });\n return wrappedPromise.cancel = function () {\n return hasCanceled_ = true;\n }, wrappedPromise;\n}\n\nexport default makeCancelable;\nexport { CANCELATION_MESSAGE };\n","import { slicedToArray as _slicedToArray, objectWithoutProperties as _objectWithoutProperties } from '../_virtual/_rollupPluginBabelHelpers.js';\nimport state from 'state-local';\nimport config$1 from '../config/index.js';\nimport validators from '../validators/index.js';\nimport compose from '../utils/compose.js';\nimport merge from '../utils/deepMerge.js';\nimport makeCancelable from '../utils/makeCancelable.js';\n\n/** the local state of the module */\n\nvar _state$create = state.create({\n config: config$1,\n isInitialized: false,\n resolve: null,\n reject: null,\n monaco: null\n}),\n _state$create2 = _slicedToArray(_state$create, 2),\n getState = _state$create2[0],\n setState = _state$create2[1];\n/**\n * set the loader configuration\n * @param {Object} config - the configuration object\n */\n\n\nfunction config(globalConfig) {\n var _validators$config = validators.config(globalConfig),\n monaco = _validators$config.monaco,\n config = _objectWithoutProperties(_validators$config, [\"monaco\"]);\n\n setState(function (state) {\n return {\n config: merge(state.config, config),\n monaco: monaco\n };\n });\n}\n/**\n * handles the initialization of the monaco-editor\n * @return {Promise} - returns an instance of monaco (with a cancelable promise)\n */\n\n\nfunction init() {\n var state = getState(function (_ref) {\n var monaco = _ref.monaco,\n isInitialized = _ref.isInitialized,\n resolve = _ref.resolve;\n return {\n monaco: monaco,\n isInitialized: isInitialized,\n resolve: resolve\n };\n });\n\n if (!state.isInitialized) {\n setState({\n isInitialized: true\n });\n\n if (state.monaco) {\n state.resolve(state.monaco);\n return makeCancelable(wrapperPromise);\n }\n\n if (window.monaco && window.monaco.editor) {\n storeMonacoInstance(window.monaco);\n state.resolve(window.monaco);\n return makeCancelable(wrapperPromise);\n }\n\n compose(injectScripts, getMonacoLoaderScript)(configureLoader);\n }\n\n return makeCancelable(wrapperPromise);\n}\n/**\n * injects provided scripts into the document.body\n * @param {Object} script - an HTML script element\n * @return {Object} - the injected HTML script element\n */\n\n\nfunction injectScripts(script) {\n return document.body.appendChild(script);\n}\n/**\n * creates an HTML script element with/without provided src\n * @param {string} [src] - the source path of the script\n * @return {Object} - the created HTML script element\n */\n\n\nfunction createScript(src) {\n var script = document.createElement('script');\n return src && (script.src = src), script;\n}\n/**\n * creates an HTML script element with the monaco loader src\n * @return {Object} - the created HTML script element\n */\n\n\nfunction getMonacoLoaderScript(configureLoader) {\n var state = getState(function (_ref2) {\n var config = _ref2.config,\n reject = _ref2.reject;\n return {\n config: config,\n reject: reject\n };\n });\n var loaderScript = createScript(\"\".concat(state.config.paths.vs, \"/loader.js\"));\n\n loaderScript.onload = function () {\n return configureLoader();\n };\n\n loaderScript.onerror = state.reject;\n return loaderScript;\n}\n/**\n * configures the monaco loader\n */\n\n\nfunction configureLoader() {\n var state = getState(function (_ref3) {\n var config = _ref3.config,\n resolve = _ref3.resolve,\n reject = _ref3.reject;\n return {\n config: config,\n resolve: resolve,\n reject: reject\n };\n });\n var require = window.require;\n\n require.config(state.config);\n\n require(['vs/editor/editor.main'], function (monaco) {\n storeMonacoInstance(monaco);\n state.resolve(monaco);\n }, function (error) {\n state.reject(error);\n });\n}\n/**\n * store monaco instance in local state\n */\n\n\nfunction storeMonacoInstance(monaco) {\n if (!getState().monaco) {\n setState({\n monaco: monaco\n });\n }\n}\n/**\n * internal helper function\n * extracts stored monaco instance\n * @return {Object|null} - the monaco instance\n */\n\n\nfunction __getMonacoInstance() {\n return getState(function (_ref4) {\n var monaco = _ref4.monaco;\n return monaco;\n });\n}\n\nvar wrapperPromise = new Promise(function (resolve, reject) {\n return setState({\n resolve: resolve,\n reject: reject\n });\n});\nvar loader = {\n config: config,\n init: init,\n __getMonacoInstance: __getMonacoInstance\n};\n\nexport default loader;\n","import loader from './loader/index.js';\nexport { default } from './loader/index.js';\n","import loader from '@monaco-editor/loader';\nexport { loader };\n\nimport DiffEditor from './DiffEditor';\nexport * from './DiffEditor/types';\nexport { DiffEditor };\n\nimport useMonaco from './hooks/useMonaco';\nexport { useMonaco };\n\nimport Editor from './Editor';\nexport * from './Editor/types';\nexport { Editor };\nexport default Editor;\n\n// Monaco\nimport type * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\nexport type Monaco = typeof monaco;\n\n// Default themes\nexport type Theme = 'vs-dark' | 'light';\n","import { memo } from 'react';\n\nimport DiffEditor from './DiffEditor';\n\nexport * from './types';\n\nexport default memo(DiffEditor);\n","'use client';\n\nimport React, { useState, useRef, useCallback, useEffect } from 'react';\nimport loader from '@monaco-editor/loader';\n\nimport MonacoContainer from '../MonacoContainer';\nimport useMount from '../hooks/useMount';\nimport useUpdate from '../hooks/useUpdate';\nimport { noop, getOrCreateModel } from '../utils';\nimport { type DiffEditorProps, type MonacoDiffEditor } from './types';\nimport { type Monaco } from '..';\n\nfunction DiffEditor({\n original,\n modified,\n language,\n originalLanguage,\n modifiedLanguage,\n originalModelPath,\n modifiedModelPath,\n keepCurrentOriginalModel = false,\n keepCurrentModifiedModel = false,\n theme = 'light',\n loading = 'Loading...',\n options = {},\n height = '100%',\n width = '100%',\n className,\n wrapperProps = {},\n beforeMount = noop,\n onMount = noop,\n}: DiffEditorProps) {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [isMonacoMounting, setIsMonacoMounting] = useState(true);\n const editorRef = useRef<MonacoDiffEditor | null>(null);\n const monacoRef = useRef<Monaco | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const onMountRef = useRef(onMount);\n const beforeMountRef = useRef(beforeMount);\n const preventCreation = useRef(false);\n\n useMount(() => {\n const cancelable = loader.init();\n\n cancelable\n .then((monaco) => (monacoRef.current = monaco) && setIsMonacoMounting(false))\n .catch(\n (error) =>\n error?.type !== 'cancelation' && console.error('Monaco initialization: error:', error),\n );\n\n return () => (editorRef.current ? disposeEditor() : cancelable.cancel());\n });\n\n useUpdate(\n () => {\n if (editorRef.current && monacoRef.current) {\n const originalEditor = editorRef.current.getOriginalEditor();\n const model = getOrCreateModel(\n monacoRef.current,\n original || '',\n originalLanguage || language || 'text',\n originalModelPath || '',\n );\n\n if (model !== originalEditor.getModel()) {\n originalEditor.setModel(model);\n }\n }\n },\n [originalModelPath],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n if (editorRef.current && monacoRef.current) {\n const modifiedEditor = editorRef.current.getModifiedEditor();\n const model = getOrCreateModel(\n monacoRef.current,\n modified || '',\n modifiedLanguage || language || 'text',\n modifiedModelPath || '',\n );\n\n if (model !== modifiedEditor.getModel()) {\n modifiedEditor.setModel(model);\n }\n }\n },\n [modifiedModelPath],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n const modifiedEditor = editorRef.current!.getModifiedEditor();\n if (modifiedEditor.getOption(monacoRef.current!.editor.EditorOption.readOnly)) {\n modifiedEditor.setValue(modified || '');\n } else {\n if (modified !== modifiedEditor.getValue()) {\n modifiedEditor.executeEdits('', [\n {\n range: modifiedEditor.getModel()!.getFullModelRange(),\n text: modified || '',\n forceMoveMarkers: true,\n },\n ]);\n\n modifiedEditor.pushUndoStop();\n }\n }\n },\n [modified],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n editorRef.current?.getModel()?.original.setValue(original || '');\n },\n [original],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n const { original, modified } = editorRef.current!.getModel()!;\n\n monacoRef.current!.editor.setModelLanguage(original, originalLanguage || language || 'text');\n monacoRef.current!.editor.setModelLanguage(modified, modifiedLanguage || language || 'text');\n },\n [language, originalLanguage, modifiedLanguage],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n monacoRef.current?.editor.setTheme(theme);\n },\n [theme],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n editorRef.current?.updateOptions(options);\n },\n [options],\n isEditorReady,\n );\n\n const setModels = useCallback(() => {\n if (!monacoRef.current) return;\n beforeMountRef.current(monacoRef.current);\n const originalModel = getOrCreateModel(\n monacoRef.current,\n original || '',\n originalLanguage || language || 'text',\n originalModelPath || '',\n );\n\n const modifiedModel = getOrCreateModel(\n monacoRef.current,\n modified || '',\n modifiedLanguage || language || 'text',\n modifiedModelPath || '',\n );\n\n editorRef.current?.setModel({\n original: originalModel,\n modified: modifiedModel,\n });\n }, [\n language,\n modified,\n modifiedLanguage,\n original,\n originalLanguage,\n originalModelPath,\n modifiedModelPath,\n ]);\n\n const createEditor = useCallback(() => {\n if (!preventCreation.current && containerRef.current) {\n editorRef.current = monacoRef.current!.editor.createDiffEditor(containerRef.current, {\n automaticLayout: true,\n ...options,\n });\n\n setModels();\n\n monacoRef.current?.editor.setTheme(theme);\n\n setIsEditorReady(true);\n preventCreation.current = true;\n }\n }, [options, theme, setModels]);\n\n useEffect(() => {\n if (isEditorReady) {\n onMountRef.current(editorRef.current!, monacoRef.current!);\n }\n }, [isEditorReady]);\n\n useEffect(() => {\n !isMonacoMounting && !isEditorReady && createEditor();\n }, [isMonacoMounting, isEditorReady, createEditor]);\n\n function disposeEditor() {\n const models = editorRef.current?.getModel();\n\n if (!keepCurrentOriginalModel) {\n models?.original?.dispose();\n }\n\n if (!keepCurrentModifiedModel) {\n models?.modified?.dispose();\n }\n\n editorRef.current?.dispose();\n }\n\n return (\n <MonacoContainer\n width={width}\n height={height}\n isEditorReady={isEditorReady}\n loading={loading}\n _ref={containerRef}\n className={className}\n wrapperProps={wrapperProps}\n />\n );\n}\n\nexport default DiffEditor;\n","import { memo } from 'react';\n\nimport MonacoContainer from './MonacoContainer';\n\nexport default memo(MonacoContainer);\n","import React from 'react';\n\nimport styles from './styles';\nimport Loading from '../Loading';\nimport { type ContainerProps } from './types';\n\n// ** forwardref render functions do not support proptypes or defaultprops **\n// one of the reasons why we use a separate prop for passing ref instead of using forwardref\n\nfunction MonacoContainer({\n width,\n height,\n isEditorReady,\n loading,\n _ref,\n className,\n wrapperProps,\n}: ContainerProps) {\n return (\n <section style={{ ...styles.wrapper, width, height }} {...wrapperProps}>\n {!isEditorReady && <Loading>{loading}</Loading>}\n <div\n ref={_ref}\n style={{ ...styles.fullWidth, ...(!isEditorReady && styles.hide) }}\n className={className}\n />\n </section>\n );\n}\n\nexport default MonacoContainer;\n","import { type CSSProperties } from 'react';\n\nconst styles: Record<string, CSSProperties> = {\n wrapper: {\n display: 'flex',\n position: 'relative',\n textAlign: 'initial',\n },\n fullWidth: {\n width: '100%',\n },\n hide: {\n display: 'none',\n },\n};\n\nexport default styles;\n","import React, { type PropsWithChildren } from 'react';\n\nimport styles from './styles';\n\nfunction Loading({ children }: PropsWithChildren) {\n return <div style={styles.container}>{children}</div>;\n}\n\nexport default Loading;\n","import { type CSSProperties } from 'react';\n\nconst styles: Record<string, CSSProperties> = {\n container: {\n display: 'flex',\n height: '100%',\n width: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n};\n\nexport default styles;\n","import Loading from './Loading';\n\nexport default Loading;\n","import { useEffect, type EffectCallback } from 'react';\n\nfunction useMount(effect: EffectCallback) {\n useEffect(effect, []);\n}\n\nexport default useMount;\n","import { useEffect, useRef, type DependencyList, type EffectCallback } from 'react';\n\nfunction useUpdate(effect: EffectCallback, deps: DependencyList, applyChanges = true) {\n const isInitialMount = useRef(true);\n\n useEffect(\n isInitialMount.current || !applyChanges\n ? () => {\n isInitialMount.current = false;\n }\n : effect,\n deps,\n );\n}\n\nexport default useUpdate;\n","import { type Monaco } from '..';\n\n/**\n * noop is a helper function that does nothing\n * @returns undefined\n */\nfunction noop() {\n /** no-op */\n}\n\n/**\n * getOrCreateModel is a helper function that will return a model if it exists\n * or create a new model if it does not exist.\n * This is useful for when you want to create a model for a file that may or may not exist yet.\n * @param monaco The monaco instance\n * @param value The value of the model\n * @param language The language of the model\n * @param path The path of the model\n * @returns The model that was found or created\n */\nfunction getOrCreateModel(monaco: Monaco, value: string, language: string, path: string) {\n return getModel(monaco, path) || createModel(monaco, value, language, path);\n}\n\n/**\n * getModel is a helper function that will return a model if it exists\n * or return undefined if it does not exist.\n * @param monaco The monaco instance\n * @param path The path of the model\n * @returns The model that was found or undefined\n */\nfunction getModel(monaco: Monaco, path: string) {\n return monaco.editor.getModel(createModelUri(monaco, path));\n}\n\n/**\n * createModel is a helper function that will create a new model\n * @param monaco The monaco instance\n * @param value The value of the model\n * @param language The language of the model\n * @param path The path of the model\n * @returns The model that was created\n */\nfunction createModel(monaco: Monaco, value: string, language?: string, path?: string) {\n return monaco.editor.createModel(\n value,\n language,\n path ? createModelUri(monaco, path) : undefined,\n );\n}\n\n/**\n * createModelUri is a helper function that will create a new model uri\n * @param monaco The monaco instance\n * @param path The path of the model\n * @returns The model uri that was created\n */\nfunction createModelUri(monaco: Monaco, path: string) {\n return monaco.Uri.parse(path);\n}\n\nexport { noop, getOrCreateModel };\n","import { useState } from 'react';\nimport loader from '@monaco-editor/loader';\n\nimport useMount from '../useMount';\n\nfunction useMonaco() {\n const [monaco, setMonaco] = useState(loader.__getMonacoInstance());\n\n useMount(() => {\n let cancelable: ReturnType<typeof loader.init>;\n\n if (!monaco) {\n cancelable = loader.init();\n\n cancelable.then((monaco) => {\n setMonaco(monaco);\n });\n }\n\n return () => cancelable?.cancel();\n });\n\n return monaco;\n}\n\nexport default useMonaco;\n","import { memo } from 'react';\n\nimport Editor from './Editor';\n\nexport * from './types';\n\nexport default memo(Editor);\n","'use client';\n\nimport React, { useState, useEffect, useRef, useCallback } from 'react';\nimport loader from '@monaco-editor/loader';\nimport useMount from '../hooks/useMount';\nimport useUpdate from '../hooks/useUpdate';\nimport usePrevious from '../hooks/usePrevious';\nimport { type IDisposable, type editor } from 'monaco-editor';\nimport { noop, getOrCreateModel } from '../utils';\nimport { type EditorProps } from './types';\nimport { type Monaco } from '..';\nimport MonacoContainer from '../MonacoContainer';\n\nconst viewStates = new Map();\n\nfunction Editor({\n defaultValue,\n defaultLanguage,\n defaultPath,\n value,\n language,\n path,\n /* === */\n theme = 'light',\n line,\n loading = 'Loading...',\n options = {},\n overrideServices = {},\n saveViewState = true,\n keepCurrentModel = false,\n /* === */\n width = '100%',\n height = '100%',\n className,\n wrapperProps = {},\n /* === */\n beforeMount = noop,\n onMount = noop,\n onChange,\n onValidate = noop,\n}: EditorProps) {\n const [isEditorReady, setIsEditorReady] = useState(false);\n const [isMonacoMounting, setIsMonacoMounting] = useState(true);\n const monacoRef = useRef<Monaco | null>(null);\n const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const onMountRef = useRef(onMount);\n const beforeMountRef = useRef(beforeMount);\n const subscriptionRef = useRef<IDisposable>();\n const valueRef = useRef(value);\n const previousPath = usePrevious(path);\n const preventCreation = useRef(false);\n const preventTriggerChangeEvent = useRef<boolean>(false);\n\n useMount(() => {\n const cancelable = loader.init();\n\n cancelable\n .then((monaco) => (monacoRef.current = monaco) && setIsMonacoMounting(false))\n .catch(\n (error) =>\n error?.type !== 'cancelation' && console.error('Monaco initialization: error:', error),\n );\n\n return () => (editorRef.current ? disposeEditor() : cancelable.cancel());\n });\n\n useUpdate(\n () => {\n const model = getOrCreateModel(\n monacoRef.current!,\n defaultValue || value || '',\n defaultLanguage || language || '',\n path || defaultPath || '',\n );\n\n if (model !== editorRef.current?.getModel()) {\n if (saveViewState) viewStates.set(previousPath, editorRef.current?.saveViewState());\n editorRef.current?.setModel(model);\n if (saveViewState) editorRef.current?.restoreViewState(viewStates.get(path));\n }\n },\n [path],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n editorRef.current?.updateOptions(options);\n },\n [options],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n if (!editorRef.current || value === undefined) return;\n if (editorRef.current.getOption(monacoRef.current!.editor.EditorOption.readOnly)) {\n editorRef.current.setValue(value);\n } else if (value !== editorRef.current.getValue()) {\n preventTriggerChangeEvent.current = true;\n editorRef.current.executeEdits('', [\n {\n range: editorRef.current.getModel()!.getFullModelRange(),\n text: value,\n forceMoveMarkers: true,\n },\n ]);\n\n editorRef.current.pushUndoStop();\n preventTriggerChangeEvent.current = false;\n }\n },\n [value],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n const model = editorRef.current?.getModel();\n if (model && language) monacoRef.current?.editor.setModelLanguage(model, language);\n },\n [language],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n // reason for undefined check: https://github.com/suren-atoyan/monaco-react/pull/188\n if (line !== undefined) {\n editorRef.current?.revealLine(line);\n }\n },\n [line],\n isEditorReady,\n );\n\n useUpdate(\n () => {\n monacoRef.current?.editor.setTheme(theme);\n },\n [theme],\n isEditorReady,\n );\n\n const createEditor = useCallback(() => {\n if (!containerRef.current || !monacoRef.current) return;\n if (!preventCreation.current) {\n beforeMountRef.current(monacoRef.current);\n const autoCreatedModelPath = path || defaultPath;\n\n const defaultModel = getOrCreateModel(\n monacoRef.current,\n value || defaultValue || '',\n defaultLanguage || language || '',\n autoCreatedModelPath || '',\n );\n\n editorRef.current = monacoRef.current?.editor.create(\n containerRef.current,\n {\n model: defaultModel,\n automaticLayout: true,\n ...options,\n },\n overrideServices,\n );\n\n saveViewState && editorRef.current.restoreViewState(viewStates.get(autoCreatedModelPath));\n\n monacoRef.current.editor.setTheme(theme);\n\n if (line !== undefined) {\n editorRef.current.revealLine(line);\n }\n\n setIsEditorReady(true);\n preventCreation.current = true;\n }\n }, [\n defaultValue,\n defaultLanguage,\n defaultPath,\n value,\n language,\n path,\n options,\n overrideServices,\n saveViewState,\n theme,\n line,\n ]);\n\n useEffect(() => {\n if (isEditorReady) {\n onMountRef.current(editorRef.current!, monacoRef.current!);\n }\n }, [isEditorReady]);\n\n useEffect(() => {\n !isMonacoMounting && !isEditorReady && createEditor();\n }, [isMonacoMounting, isEditorReady, createEditor]);\n\n // subscription\n // to avoid unnecessary updates (attach - dispose listener) in subscription\n valueRef.current = value;\n\n // onChange\n useEffect(() => {\n if (isEditorReady && onChange) {\n subscriptionRef.current?.dispose();\n subscriptionRef.current = editorRef.current?.onDidChangeModelContent((event) => {\n if (!preventTriggerChangeEvent.current) {\n onChange(editorRef.current!.getValue(), event);\n }\n });\n }\n }, [isEditorReady, onChange]);\n\n // onValidate\n useEffect(() => {\n if (isEditorReady) {\n const changeMarkersListener = monacoRef.current!.editor.onDidChangeMarkers((uris) => {\n const editorUri = editorRef.current!.getModel()?.uri;\n\n if (editorUri) {\n const currentEditorHasMarkerChanges = uris.find((uri) => uri.path === editorUri.path);\n if (currentEditorHasMarkerChanges) {\n const markers = monacoRef.current!.editor.getModelMarkers({\n resource: editorUri,\n });\n onValidate?.(markers);\n }\n }\n });\n\n return () => {\n changeMarkersListener?.dispose();\n };\n }\n return () => {\n // eslint happy\n };\n }, [isEditorReady, onValidate]);\n\n function disposeEditor() {\n subscriptionRef.current?.dispose();\n\n if (keepCurrentModel) {\n saveViewState && viewStates.set(path, editorRef.current!.saveViewState());\n } else {\n editorRef.current!.getModel()?.dispose();\n }\n\n editorRef.current!.dispose();\n }\n\n return (\n <MonacoContainer\n width={width}\n height={height}\n isEditorReady={isEditorReady}\n loading={loading}\n _ref={containerRef}\n className={className}\n wrapperProps={wrapperProps}\n />\n );\n}\n\nexport default Editor;\n","import { useEffect, useRef } from 'react';\n\nfunction usePrevious<T>(value: T) {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n\nexport default usePrevious;\n","\"use client\";\n\nimport { useState, useEffect, useRef } from 'react';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/ui/table';\nimport { Input } from '@/components/ui/input';\nimport { Button } from '@/components/ui/button';\n\ninterface ProjectEnvInfo {\n projectName: string;\n envName: string;\n host: string;\n repo: string;\n currentProxy: string;\n proxyEnv: {\n [key: string]: string;\n };\n subApps: string[];\n}\n\ninterface MicroAppProxyTableProps {\n className?: string;\n currentProjectName: string;\n currentEnvName: string;\n}\n\ninterface SSEMessage {\n type: string;\n envName?: string;\n timestamp: number;\n message?: string;\n changes?: {\n before: string[];\n after: string[];\n added: string[];\n removed: string[];\n };\n}\n\nexport default function MicroAppProxyTable({ \n className, \n currentProjectName, \n currentEnvName \n}: MicroAppProxyTableProps) {\n const [allProjectsEnvs, setAllProjectsEnvs] = useState<ProjectEnvInfo[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [selectedItems, setSelectedItems] = useState<Set<string>>(new Set());\n const [searchKeyword, setSearchKeyword] = useState<string>('');\n const [saving, setSaving] = useState(false);\n const [saveMessage, setSaveMessage] = useState<string>('');\n \n // SSE连接状态\n const [sseConnected, setSseConnected] = useState(false);\n const [sseError, setSseError] = useState<string | null>(null);\n const eventSourceRef = useRef<EventSource | null>(null);\n\n // 从服务器配置初始化选择状态\n useEffect(() => {\n if (allProjectsEnvs.length > 0) {\n // 找到当前环境的subApps配置\n const currentEnv = allProjectsEnvs.find(\n env => env.projectName === currentProjectName && env.envName === currentEnvName\n );\n \n if (currentEnv && currentEnv.subApps.length > 0) {\n // 将subApps中的环境名称转换为完整的项目环境ID\n const selectedIds = new Set<string>();\n currentEnv.subApps.forEach(subAppEnv => {\n // 查找所有项目中匹配该环境名的项目环境\n allProjectsEnvs.forEach(env => {\n if (env.envName === subAppEnv) {\n selectedIds.add(getItemId(env));\n }\n });\n });\n setSelectedItems(selectedIds);\n }\n }\n }, [allProjectsEnvs, currentProjectName, currentEnvName]);\n\n // 获取所有项目环境信息\n const fetchAllProjectsEnvs = async () => {\n setLoading(true);\n setError(null);\n try {\n const response = await fetch('/api/all-projects-envs');\n const result = await response.json();\n\n if (result.success) {\n setAllProjectsEnvs(result.data);\n } else {\n setError(result.error || '获取项目环境信息失败');\n }\n } catch (error) {\n console.error('获取项目环境信息失败:', error);\n setError('获取项目环境信息失败: 网络错误');\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n fetchAllProjectsEnvs();\n setupSSEConnection();\n \n // 清理函数\n return () => {\n cleanupSSEConnection();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentEnvName]); // 依赖于currentEnvName,环境变化时重新连接\n\n // 建立SSE连接\n const setupSSEConnection = () => {\n if (eventSourceRef.current) {\n cleanupSSEConnection();\n }\n\n const clientId = `microapp-table-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n const url = `/api/microapp-proxy-change-stream?env=${encodeURIComponent(currentEnvName)}&clientId=${encodeURIComponent(clientId)}`;\n \n console.log(`[SSE] 建立连接到: ${url}`);\n setSseError(null);\n \n try {\n const eventSource = new EventSource(url);\n eventSourceRef.current = eventSource;\n\n eventSource.onopen = () => {\n console.log(`[SSE] 连接已建立,环境: ${currentEnvName}`);\n setSseConnected(true);\n setSseError(null);\n };\n\n eventSource.onmessage = (event) => {\n try {\n const data = JSON.parse(event.data);\n handleSSEMessage(data);\n } catch (error) {\n console.error('[SSE] 解析消息失败:', error);\n }\n };\n\n eventSource.onerror = () => {\n console.error(`[SSE] 连接错误,环境: ${currentEnvName}`);\n setSseConnected(false);\n setSseError('实时推送连接断开');\n \n // 自动重连机制(延迟3秒)\n setTimeout(() => {\n if (!eventSourceRef.current || eventSourceRef.current.readyState === EventSource.CLOSED) {\n console.log('[SSE] 尝试重新连接...');\n setupSSEConnection();\n }\n }, 3000);\n };\n\n } catch (error) {\n console.error('[SSE] 建立连接失败:', error);\n setSseError('无法建立实时推送连接');\n }\n };\n\n // 清理SSE连接\n const cleanupSSEConnection = () => {\n if (eventSourceRef.current) {\n console.log('[SSE] 关闭连接');\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n setSseConnected(false);\n }\n };\n\n // 处理SSE消息\n const handleSSEMessage = (data: SSEMessage) => {\n console.log('[SSE] 收到消息:', data);\n \n switch (data.type) {\n case 'connection-established':\n console.log(`[SSE] 连接确认: ${data.message}`);\n setSseConnected(true);\n setSseError(null);\n break;\n \n case 'microapp-proxy-config-change':\n console.log(`[SSE] 配置变化通知: 环境=${data.envName}`);\n console.log(`[SSE] 变化详情:`, data.changes);\n \n // 显示变化提示\n if (data.changes) {\n const { added, removed } = data.changes;\n let changeText = '';\n if (added.length > 0) {\n changeText += `新增: ${added.join(', ')}`;\n }\n if (removed.length > 0) {\n if (changeText) changeText += '; ';\n changeText += `移除: ${removed.join(', ')}`;\n }\n setSaveMessage(`配置已更新 (${changeText})`);\n } else {\n setSaveMessage('配置已更新');\n }\n \n // 刷新数据显示最新配置\n fetchAllProjectsEnvs();\n \n // 3秒后清除提示\n setTimeout(() => setSaveMessage(''), 3000);\n break;\n \n case 'heartbeat':\n // 心跳消息,更新连接状态\n setSseConnected(true);\n setSseError(null);\n break;\n \n default:\n console.log('[SSE] 未知消息类型:', data.type);\n }\n };\n\n // 生成唯一的项目环境ID\n const getItemId = (item: ProjectEnvInfo) => `${item.projectName}-${item.envName}`;\n\n // 根据搜索关键词过滤数据\n const filteredData = searchKeyword.trim() \n ? allProjectsEnvs.filter(item => \n item.projectName.toLowerCase().includes(searchKeyword.toLowerCase()) ||\n item.envName.toLowerCase().includes(searchKeyword.toLowerCase()) ||\n item.host.toLowerCase().includes(searchKeyword.toLowerCase())\n )\n : allProjectsEnvs;\n\n // 处理单项选择\n const handleItemSelection = (itemId: string, checked: boolean) => {\n const newSelection = new Set(selectedItems);\n if (checked) {\n newSelection.add(itemId);\n } else {\n newSelection.delete(itemId);\n }\n setSelectedItems(newSelection);\n };\n\n // 处理全选/取消全选\n const handleSelectAll = (checked: boolean) => {\n if (checked) {\n const allIds = filteredData.map(item => getItemId(item));\n setSelectedItems(new Set(allIds));\n } else {\n setSelectedItems(new Set());\n }\n };\n\n // 清空搜索关键词\n const handleClearSearch = () => {\n setSearchKeyword('');\n };\n\n // 清空选择\n const handleClearSelection = () => {\n setSelectedItems(new Set());\n };\n\n // 保存MicroApp代理配置\n const handleSaveConfig = async () => {\n setSaving(true);\n setSaveMessage('');\n \n try {\n // 从选中的项目环境中提取环境名称\n const selectedEnvNames = Array.from(selectedItems).map(itemId => {\n const matchedEnv = allProjectsEnvs.find(env => getItemId(env) === itemId);\n return matchedEnv ? matchedEnv.envName : '';\n }).filter(envName => envName !== '');\n \n // 去重,因为可能多个项目有相同的环境名\n const uniqueEnvNames = [...new Set(selectedEnvNames)];\n \n const response = await fetch('/api/microapp-proxy-config', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n projectName: currentProjectName,\n envName: currentEnvName,\n selectedItems: uniqueEnvNames,\n }),\n });\n\n const result = await response.json();\n\n if (result.success) {\n setSaveMessage(result.message || '保存成功');\n // 刷新数据以同步最新状态\n await fetchAllProjectsEnvs();\n } else {\n setSaveMessage(`保存失败: ${result.error}`);\n }\n } catch (error) {\n console.error('保存MicroApp代理配置失败:', error);\n setSaveMessage('保存失败: 网络错误');\n } finally {\n setSaving(false);\n // 清除保存消息\n setTimeout(() => {\n setSaveMessage('');\n }, 5000);\n }\n };\n\n const selectedCount = selectedItems.size;\n const allItemsSelected = filteredData.length > 0 && filteredData.every(item => selectedItems.has(getItemId(item)));\n const someItemsSelected = filteredData.some(item => selectedItems.has(getItemId(item)));\n\n if (loading) {\n return (\n <div className={`p-6 bg-gray-50 rounded-lg ${className}`}>\n <h4 className=\"text-md font-medium mb-4\">MicroApp代理配置</h4>\n <div className=\"text-center py-8\">\n <p className=\"text-gray-500\">加载中...</p>\n </div>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className={`p-6 bg-gray-50 rounded-lg ${className}`}>\n <h4 className=\"text-md font-medium mb-4\">MicroApp代理配置</h4>\n <div className=\"text-center py-8\">\n <p className=\"text-red-500\">{error}</p>\n <Button \n variant=\"outline\" \n size=\"sm\" \n onClick={fetchAllProjectsEnvs}\n className=\"mt-2\"\n >\n 重试\n </Button>\n </div>\n </div>\n );\n }\n\n return (\n <div className={`p-6 bg-gray-50 rounded-lg ${className}`}>\n <div className=\"flex items-center justify-between mb-4\">\n <div>\n <h4 className=\"text-md font-medium\">MicroApp代理配置</h4>\n <p className=\"text-xs text-gray-500 mt-1\">\n 为 {currentProjectName} - {currentEnvName} 环境配置微应用代理\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n {/* SSE连接状态指示器 */}\n <div className=\"flex items-center gap-1\">\n <div className={`w-2 h-2 rounded-full ${\n sseConnected ? 'bg-green-500' : 'bg-red-500'\n }`} title={sseConnected ? '实时推送已连接' : '实时推送断开'}></div>\n <span className=\"text-xs text-gray-500\">\n {sseConnected ? '实时' : '离线'}\n </span>\n </div>\n \n {(saveMessage || sseError) && (\n <span className={`text-sm max-w-xs ${\n (saveMessage && saveMessage.includes('失败')) || sseError ? 'text-red-600' : \n saveMessage && saveMessage.includes('但有') ? 'text-yellow-600' : \n 'text-green-600'\n }`} title={saveMessage || sseError || ''}>\n {saveMessage || sseError}\n </span>\n )}\n <Button \n variant=\"outline\" \n size=\"sm\" \n onClick={fetchAllProjectsEnvs}\n disabled={saving}\n >\n 刷新\n </Button>\n <Button \n variant=\"default\" \n size=\"sm\" \n onClick={handleSaveConfig}\n disabled={saving}\n >\n {saving ? '保存中...' : '保存配置'}\n </Button>\n </div>\n </div>\n\n {/* 搜索和选择统计 */}\n <div className=\"space-y-3 mb-4\">\n <div className=\"flex items-center gap-2\">\n <div className=\"relative flex-1 max-w-md\">\n <Input\n placeholder=\"搜索项目名称、环境名称或Host...\"\n value={searchKeyword}\n onChange={(e) => setSearchKeyword(e.target.value)}\n className=\"pr-8\"\n />\n {searchKeyword && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClearSearch}\n className=\"absolute right-1 top-1/2 transform -translate-y-1/2 h-6 w-6 p-0 hover:bg-gray-100\"\n >\n ×\n </Button>\n )}\n </div>\n </div>\n \n <div className=\"flex items-center justify-between text-sm text-gray-600\">\n <div className=\"flex items-center gap-4\">\n <span>\n 显示 {filteredData.length} 个环境配置\n {searchKeyword && ` (搜索: \"${searchKeyword}\")`}\n </span>\n {selectedCount > 0 && (\n <span className=\"text-blue-600 font-medium\">\n 已选择 {selectedCount} 项\n </span>\n )}\n </div>\n {selectedCount > 0 && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={handleClearSelection}\n >\n 清空选择\n </Button>\n )}\n </div>\n </div>\n\n {/* 表格 */}\n {filteredData.length > 0 ? (\n <div className=\"border rounded-md\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className=\"w-12\">\n <input\n type=\"checkbox\"\n checked={allItemsSelected}\n onChange={(e) => handleSelectAll(e.target.checked)}\n ref={(ref: HTMLInputElement | null) => {\n if (ref) {\n ref.indeterminate = someItemsSelected && !allItemsSelected;\n }\n }}\n className=\"rounded border-gray-300\"\n />\n </TableHead>\n <TableHead>环境名称</TableHead>\n <TableHead>项目名称</TableHead>\n <TableHead>Host地址</TableHead>\n <TableHead>当前代理</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {filteredData.map((item) => {\n const itemId = getItemId(item);\n const isSelected = selectedItems.has(itemId);\n \n return (\n <TableRow key={itemId}>\n <TableCell>\n <input\n type=\"checkbox\"\n checked={isSelected}\n onChange={(e) => handleItemSelection(itemId, e.target.checked)}\n className=\"rounded border-gray-300\"\n />\n </TableCell>\n <TableCell>\n <span className=\"px-2 py-1 rounded text-xs font-medium bg-blue-100 text-blue-800\">\n {item.envName}\n </span>\n </TableCell>\n <TableCell className=\"font-medium\">\n {item.projectName}\n </TableCell>\n <TableCell className=\"font-mono text-sm\">\n {item.host}\n </TableCell>\n <TableCell className=\"text-sm text-gray-600\">\n {item.currentProxy}\n {item.proxyEnv[item.currentProxy] && (\n <div className=\"text-xs text-gray-500\">\n {item.proxyEnv[item.currentProxy]}\n </div>\n )}\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </div>\n ) : (\n <div className=\"text-center py-8\">\n <p className=\"text-gray-500\">\n {searchKeyword ? '没有找到匹配的环境配置' : '暂无环境配置'}\n </p>\n </div>\n )}\n\n {/* 选择状态提示 */}\n {selectedCount > 0 && (\n <div className=\"mt-4 p-3 bg-blue-50 rounded-md\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-blue-700\">\n 已选择 {selectedCount} 个环境配置将作为微应用代理\n </span>\n <span className=\"text-xs text-blue-600\">\n 点击上方&ldquo;保存配置&rdquo;按钮保存设置\n </span>\n </div>\n </div>\n )}\n </div>\n );\n} ","require('client-only');\nvar React = require('react');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar React__default = /*#__PURE__*/_interopDefaultLegacy(React);\n\n/*\nBased on Glamor's sheet\nhttps://github.com/threepointone/glamor/blob/667b480d31b3721a905021b26e1290ce92ca2879/src/sheet.js\n*/ function _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nvar isProd = typeof process !== \"undefined\" && process.env && process.env.NODE_ENV === \"production\";\nvar isString = function(o) {\n return Object.prototype.toString.call(o) === \"[object String]\";\n};\nvar StyleSheet = /*#__PURE__*/ function() {\n function StyleSheet(param) {\n var ref = param === void 0 ? {} : param, _name = ref.name, name = _name === void 0 ? \"stylesheet\" : _name, _optimizeForSpeed = ref.optimizeForSpeed, optimizeForSpeed = _optimizeForSpeed === void 0 ? isProd : _optimizeForSpeed;\n invariant$1(isString(name), \"`name` must be a string\");\n this._name = name;\n this._deletedRulePlaceholder = \"#\" + name + \"-deleted-rule____{}\";\n invariant$1(typeof optimizeForSpeed === \"boolean\", \"`optimizeForSpeed` must be a boolean\");\n this._optimizeForSpeed = optimizeForSpeed;\n this._serverSheet = undefined;\n this._tags = [];\n this._injected = false;\n this._rulesCount = 0;\n var node = typeof window !== \"undefined\" && document.querySelector('meta[property=\"csp-nonce\"]');\n this._nonce = node ? node.getAttribute(\"content\") : null;\n }\n var _proto = StyleSheet.prototype;\n _proto.setOptimizeForSpeed = function setOptimizeForSpeed(bool) {\n invariant$1(typeof bool === \"boolean\", \"`setOptimizeForSpeed` accepts a boolean\");\n invariant$1(this._rulesCount === 0, \"optimizeForSpeed cannot be when rules have already been inserted\");\n this.flush();\n this._optimizeForSpeed = bool;\n this.inject();\n };\n _proto.isOptimizeForSpeed = function isOptimizeForSpeed() {\n return this._optimizeForSpeed;\n };\n _proto.inject = function inject() {\n var _this = this;\n invariant$1(!this._injected, \"sheet already injected\");\n this._injected = true;\n if (typeof window !== \"undefined\" && this._optimizeForSpeed) {\n this._tags[0] = this.makeStyleTag(this._name);\n this._optimizeForSpeed = \"insertRule\" in this.getSheet();\n if (!this._optimizeForSpeed) {\n if (!isProd) {\n console.warn(\"StyleSheet: optimizeForSpeed mode not supported falling back to standard mode.\");\n }\n this.flush();\n this._injected = true;\n }\n return;\n }\n this._serverSheet = {\n cssRules: [],\n insertRule: function(rule, index) {\n if (typeof index === \"number\") {\n _this._serverSheet.cssRules[index] = {\n cssText: rule\n };\n } else {\n _this._serverSheet.cssRules.push({\n cssText: rule\n });\n }\n return index;\n },\n deleteRule: function(index) {\n _this._serverSheet.cssRules[index] = null;\n }\n };\n };\n _proto.getSheetForTag = function getSheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n }\n // this weirdness brought to you by firefox\n for(var i = 0; i < document.styleSheets.length; i++){\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n }\n };\n _proto.getSheet = function getSheet() {\n return this.getSheetForTag(this._tags[this._tags.length - 1]);\n };\n _proto.insertRule = function insertRule(rule, index) {\n invariant$1(isString(rule), \"`insertRule` accepts only strings\");\n if (typeof window === \"undefined\") {\n if (typeof index !== \"number\") {\n index = this._serverSheet.cssRules.length;\n }\n this._serverSheet.insertRule(rule, index);\n return this._rulesCount++;\n }\n if (this._optimizeForSpeed) {\n var sheet = this.getSheet();\n if (typeof index !== \"number\") {\n index = sheet.cssRules.length;\n }\n // this weirdness for perf, and chrome's weird bug\n // https://stackoverflow.com/questions/20007992/chrome-suddenly-stopped-accepting-insertrule\n try {\n sheet.insertRule(rule, index);\n } catch (error) {\n if (!isProd) {\n console.warn(\"StyleSheet: illegal rule: \\n\\n\" + rule + \"\\n\\nSee https://stackoverflow.com/q/20007992 for more info\");\n }\n return -1;\n }\n } else {\n var insertionPoint = this._tags[index];\n this._tags.push(this.makeStyleTag(this._name, rule, insertionPoint));\n }\n return this._rulesCount++;\n };\n _proto.replaceRule = function replaceRule(index, rule) {\n if (this._optimizeForSpeed || typeof window === \"undefined\") {\n var sheet = typeof window !== \"undefined\" ? this.getSheet() : this._serverSheet;\n if (!rule.trim()) {\n rule = this._deletedRulePlaceholder;\n }\n if (!sheet.cssRules[index]) {\n // @TBD Should we throw an error?\n return index;\n }\n sheet.deleteRule(index);\n try {\n sheet.insertRule(rule, index);\n } catch (error) {\n if (!isProd) {\n console.warn(\"StyleSheet: illegal rule: \\n\\n\" + rule + \"\\n\\nSee https://stackoverflow.com/q/20007992 for more info\");\n }\n // In order to preserve the indices we insert a deleteRulePlaceholder\n sheet.insertRule(this._deletedRulePlaceholder, index);\n }\n } else {\n var tag = this._tags[index];\n invariant$1(tag, \"old rule at index `\" + index + \"` not found\");\n tag.textContent = rule;\n }\n return index;\n };\n _proto.deleteRule = function deleteRule(index) {\n if (typeof window === \"undefined\") {\n this._serverSheet.deleteRule(index);\n return;\n }\n if (this._optimizeForSpeed) {\n this.replaceRule(index, \"\");\n } else {\n var tag = this._tags[index];\n invariant$1(tag, \"rule at index `\" + index + \"` not found\");\n tag.parentNode.removeChild(tag);\n this._tags[index] = null;\n }\n };\n _proto.flush = function flush() {\n this._injected = false;\n this._rulesCount = 0;\n if (typeof window !== \"undefined\") {\n this._tags.forEach(function(tag) {\n return tag && tag.parentNode.removeChild(tag);\n });\n this._tags = [];\n } else {\n // simpler on server\n this._serverSheet.cssRules = [];\n }\n };\n _proto.cssRules = function cssRules() {\n var _this = this;\n if (typeof window === \"undefined\") {\n return this._serverSheet.cssRules;\n }\n return this._tags.reduce(function(rules, tag) {\n if (tag) {\n rules = rules.concat(Array.prototype.map.call(_this.getSheetForTag(tag).cssRules, function(rule) {\n return rule.cssText === _this._deletedRulePlaceholder ? null : rule;\n }));\n } else {\n rules.push(null);\n }\n return rules;\n }, []);\n };\n _proto.makeStyleTag = function makeStyleTag(name, cssString, relativeToTag) {\n if (cssString) {\n invariant$1(isString(cssString), \"makeStyleTag accepts only strings as second parameter\");\n }\n var tag = document.createElement(\"style\");\n if (this._nonce) tag.setAttribute(\"nonce\", this._nonce);\n tag.type = \"text/css\";\n tag.setAttribute(\"data-\" + name, \"\");\n if (cssString) {\n tag.appendChild(document.createTextNode(cssString));\n }\n var head = document.head || document.getElementsByTagName(\"head\")[0];\n if (relativeToTag) {\n head.insertBefore(tag, relativeToTag);\n } else {\n head.appendChild(tag);\n }\n return tag;\n };\n _createClass(StyleSheet, [\n {\n key: \"length\",\n get: function get() {\n return this._rulesCount;\n }\n }\n ]);\n return StyleSheet;\n}();\nfunction invariant$1(condition, message) {\n if (!condition) {\n throw new Error(\"StyleSheet: \" + message + \".\");\n }\n}\n\nfunction hash(str) {\n var _$hash = 5381, i = str.length;\n while(i){\n _$hash = _$hash * 33 ^ str.charCodeAt(--i);\n }\n /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed\n * integers. Since we want the results to be always positive, convert the\n * signed int to an unsigned by doing an unsigned bitshift. */ return _$hash >>> 0;\n}\nvar stringHash = hash;\n\nvar sanitize = function(rule) {\n return rule.replace(/\\/style/gi, \"\\\\/style\");\n};\nvar cache = {};\n/**\n * computeId\n *\n * Compute and memoize a jsx id from a basedId and optionally props.\n */ function computeId(baseId, props) {\n if (!props) {\n return \"jsx-\" + baseId;\n }\n var propsToString = String(props);\n var key = baseId + propsToString;\n if (!cache[key]) {\n cache[key] = \"jsx-\" + stringHash(baseId + \"-\" + propsToString);\n }\n return cache[key];\n}\n/**\n * computeSelector\n *\n * Compute and memoize dynamic selectors.\n */ function computeSelector(id, css) {\n var selectoPlaceholderRegexp = /__jsx-style-dynamic-selector/g;\n // Sanitize SSR-ed CSS.\n // Client side code doesn't need to be sanitized since we use\n // document.createTextNode (dev) and the CSSOM api sheet.insertRule (prod).\n if (typeof window === \"undefined\") {\n css = sanitize(css);\n }\n var idcss = id + css;\n if (!cache[idcss]) {\n cache[idcss] = css.replace(selectoPlaceholderRegexp, id);\n }\n return cache[idcss];\n}\n\nfunction mapRulesToStyle(cssRules, options) {\n if (options === void 0) options = {};\n return cssRules.map(function(args) {\n var id = args[0];\n var css = args[1];\n return /*#__PURE__*/ React__default[\"default\"].createElement(\"style\", {\n id: \"__\" + id,\n // Avoid warnings upon render with a key\n key: \"__\" + id,\n nonce: options.nonce ? options.nonce : undefined,\n dangerouslySetInnerHTML: {\n __html: css\n }\n });\n });\n}\nvar StyleSheetRegistry = /*#__PURE__*/ function() {\n function StyleSheetRegistry(param) {\n var ref = param === void 0 ? {} : param, _styleSheet = ref.styleSheet, styleSheet = _styleSheet === void 0 ? null : _styleSheet, _optimizeForSpeed = ref.optimizeForSpeed, optimizeForSpeed = _optimizeForSpeed === void 0 ? false : _optimizeForSpeed;\n this._sheet = styleSheet || new StyleSheet({\n name: \"styled-jsx\",\n optimizeForSpeed: optimizeForSpeed\n });\n this._sheet.inject();\n if (styleSheet && typeof optimizeForSpeed === \"boolean\") {\n this._sheet.setOptimizeForSpeed(optimizeForSpeed);\n this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();\n }\n this._fromServer = undefined;\n this._indices = {};\n this._instancesCounts = {};\n }\n var _proto = StyleSheetRegistry.prototype;\n _proto.add = function add(props) {\n var _this = this;\n if (undefined === this._optimizeForSpeed) {\n this._optimizeForSpeed = Array.isArray(props.children);\n this._sheet.setOptimizeForSpeed(this._optimizeForSpeed);\n this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();\n }\n if (typeof window !== \"undefined\" && !this._fromServer) {\n this._fromServer = this.selectFromServer();\n this._instancesCounts = Object.keys(this._fromServer).reduce(function(acc, tagName) {\n acc[tagName] = 0;\n return acc;\n }, {});\n }\n var ref = this.getIdAndRules(props), styleId = ref.styleId, rules = ref.rules;\n // Deduping: just increase the instances count.\n if (styleId in this._instancesCounts) {\n this._instancesCounts[styleId] += 1;\n return;\n }\n var indices = rules.map(function(rule) {\n return _this._sheet.insertRule(rule);\n })// Filter out invalid rules\n .filter(function(index) {\n return index !== -1;\n });\n this._indices[styleId] = indices;\n this._instancesCounts[styleId] = 1;\n };\n _proto.remove = function remove(props) {\n var _this = this;\n var styleId = this.getIdAndRules(props).styleId;\n invariant(styleId in this._instancesCounts, \"styleId: `\" + styleId + \"` not found\");\n this._instancesCounts[styleId] -= 1;\n if (this._instancesCounts[styleId] < 1) {\n var tagFromServer = this._fromServer && this._fromServer[styleId];\n if (tagFromServer) {\n tagFromServer.parentNode.removeChild(tagFromServer);\n delete this._fromServer[styleId];\n } else {\n this._indices[styleId].forEach(function(index) {\n return _this._sheet.deleteRule(index);\n });\n delete this._indices[styleId];\n }\n delete this._instancesCounts[styleId];\n }\n };\n _proto.update = function update(props, nextProps) {\n this.add(nextProps);\n this.remove(props);\n };\n _proto.flush = function flush() {\n this._sheet.flush();\n this._sheet.inject();\n this._fromServer = undefined;\n this._indices = {};\n this._instancesCounts = {};\n };\n _proto.cssRules = function cssRules() {\n var _this = this;\n var fromServer = this._fromServer ? Object.keys(this._fromServer).map(function(styleId) {\n return [\n styleId,\n _this._fromServer[styleId]\n ];\n }) : [];\n var cssRules = this._sheet.cssRules();\n return fromServer.concat(Object.keys(this._indices).map(function(styleId) {\n return [\n styleId,\n _this._indices[styleId].map(function(index) {\n return cssRules[index].cssText;\n }).join(_this._optimizeForSpeed ? \"\" : \"\\n\")\n ];\n })// filter out empty rules\n .filter(function(rule) {\n return Boolean(rule[1]);\n }));\n };\n _proto.styles = function styles(options) {\n return mapRulesToStyle(this.cssRules(), options);\n };\n _proto.getIdAndRules = function getIdAndRules(props) {\n var css = props.children, dynamic = props.dynamic, id = props.id;\n if (dynamic) {\n var styleId = computeId(id, dynamic);\n return {\n styleId: styleId,\n rules: Array.isArray(css) ? css.map(function(rule) {\n return computeSelector(styleId, rule);\n }) : [\n computeSelector(styleId, css)\n ]\n };\n }\n return {\n styleId: computeId(id),\n rules: Array.isArray(css) ? css : [\n css\n ]\n };\n };\n /**\n * selectFromServer\n *\n * Collects style tags from the document with id __jsx-XXX\n */ _proto.selectFromServer = function selectFromServer() {\n var elements = Array.prototype.slice.call(document.querySelectorAll('[id^=\"__jsx-\"]'));\n return elements.reduce(function(acc, element) {\n var id = element.id.slice(2);\n acc[id] = element;\n return acc;\n }, {});\n };\n return StyleSheetRegistry;\n}();\nfunction invariant(condition, message) {\n if (!condition) {\n throw new Error(\"StyleSheetRegistry: \" + message + \".\");\n }\n}\nvar StyleSheetContext = /*#__PURE__*/ React.createContext(null);\nStyleSheetContext.displayName = \"StyleSheetContext\";\nfunction createStyleRegistry() {\n return new StyleSheetRegistry();\n}\nfunction StyleRegistry(param) {\n var configuredRegistry = param.registry, children = param.children;\n var rootRegistry = React.useContext(StyleSheetContext);\n var ref = React.useState(function() {\n return rootRegistry || configuredRegistry || createStyleRegistry();\n }), registry = ref[0];\n return /*#__PURE__*/ React__default[\"default\"].createElement(StyleSheetContext.Provider, {\n value: registry\n }, children);\n}\nfunction useStyleRegistry() {\n return React.useContext(StyleSheetContext);\n}\n\n// Opt-into the new `useInsertionEffect` API in React 18, fallback to `useLayoutEffect`.\n// https://github.com/reactwg/react-18/discussions/110\nvar useInsertionEffect = React__default[\"default\"].useInsertionEffect || React__default[\"default\"].useLayoutEffect;\nvar defaultRegistry = typeof window !== \"undefined\" ? createStyleRegistry() : undefined;\nfunction JSXStyle(props) {\n var registry = defaultRegistry ? defaultRegistry : useStyleRegistry();\n // If `registry` does not exist, we do nothing here.\n if (!registry) {\n return null;\n }\n if (typeof window === \"undefined\") {\n registry.add(props);\n return null;\n }\n useInsertionEffect(function() {\n registry.add(props);\n return function() {\n registry.remove(props);\n };\n // props.children can be string[], will be striped since id is identical\n }, [\n props.id,\n String(props.dynamic)\n ]);\n return null;\n}\nJSXStyle.dynamic = function(info) {\n return info.map(function(tagInfo) {\n var baseId = tagInfo[0];\n var props = tagInfo[1];\n return computeId(baseId, props);\n }).join(\" \");\n};\n\nexports.StyleRegistry = StyleRegistry;\nexports.createStyleRegistry = createStyleRegistry;\nexports.style = JSXStyle;\nexports.useStyleRegistry = useStyleRegistry;\n","module.exports = require('./dist/index').style\n","\"use client\";\n\nimport { useEffect, useRef } from 'react';\n\ninterface LogViewerProps {\n logs: string[];\n}\n\nexport default function LogViewer({ logs }: LogViewerProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const shouldAutoScroll = useRef(true);\n \n // 清理ANSI转义序列和控制字符\n const cleanAnsiCodes = (text: string): string => {\n return text\n // 移除所有ANSI转义序列\n .replace(/\\x1b\\[[0-9;]*m/g, '') // 颜色代码\n .replace(/\\x1b\\[[0-9]*[A-Z]/g, '') // 光标移动\n .replace(/\\x1b\\[K/g, '') // 清除行\n .replace(/\\x1b\\[2K/g, '') // 清除整行\n .replace(/\\x1b\\[G/g, '') // 光标到行首\n .replace(/\\x1b\\[\\d+A/g, '') // 光标上移\n .replace(/\\x1b\\[\\d+B/g, '') // 光标下移\n .replace(/\\x1b\\[\\d+C/g, '') // 光标右移\n .replace(/\\x1b\\[\\d+D/g, '') // 光标左移\n .replace(/\\[2K\\[1A\\[2K\\[G/g, '') // 常见的组合\n .replace(/\\[\\d+[A-Z]/g, '') // 其他控制序列\n .replace(/\\[STDOUT\\]/g, '[OUT]')\n .replace(/\\[STDERR\\]/g, '[ERR]');\n };\n \n // 检查是否在底部\n const checkIfAtBottom = () => {\n if (!containerRef.current) return true;\n \n const { scrollTop, scrollHeight, clientHeight } = containerRef.current;\n // 如果距离底部小于100像素,认为在底部\n return scrollHeight - scrollTop - clientHeight < 100;\n };\n \n // 滚动到底部\n const scrollToBottom = () => {\n if (containerRef.current && shouldAutoScroll.current) {\n containerRef.current.scrollTop = containerRef.current.scrollHeight;\n }\n };\n \n // 处理滚动事件\n const handleScroll = () => {\n shouldAutoScroll.current = checkIfAtBottom();\n };\n \n // 当日志更新时滚动到底部\n useEffect(() => {\n // 使用setTimeout确保DOM更新后再滚动\n setTimeout(scrollToBottom, 10);\n }, [logs]);\n \n return (\n <div \n ref={containerRef}\n className=\"h-full w-full overflow-y-auto overflow-x-hidden p-4 custom-scrollbar\" \n onScroll={handleScroll}\n style={{\n scrollBehavior: 'smooth',\n maxHeight: '100%',\n }}\n >\n <style jsx>{`\n .custom-scrollbar {\n scrollbar-width: thin;\n scrollbar-color: rgba(255, 255, 255, 0.2) rgba(0, 0, 0, 0.1);\n }\n .custom-scrollbar::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n }\n .custom-scrollbar::-webkit-scrollbar-track {\n background: rgba(0, 0, 0, 0.1);\n border-radius: 5px;\n }\n .custom-scrollbar::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.3);\n border-radius: 5px;\n }\n .custom-scrollbar::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, 0.4);\n }\n `}</style>\n \n <div className=\"space-y-0.5\">\n {logs.length > 0 ? (\n logs.map((log, index) => {\n const cleanLog = cleanAnsiCodes(log);\n \n // 跳过空行和只包含控制字符的行\n if (!cleanLog.trim()) return null;\n \n const isError = log.includes('[STDERR]');\n const isSystem = log.includes('[SYSTEM]');\n const timestamp = cleanLog.match(/^\\[([\\d-T:.Z]+)\\]/)?.[1];\n const content = cleanLog.replace(/^\\[[\\d-T:.Z]+\\]\\s*/, '');\n \n return (\n <div \n key={index} \n className={`font-mono text-xs leading-5 ${\n isError ? 'text-red-400' : \n isSystem ? 'text-yellow-400' : \n 'text-gray-100'\n }`}\n >\n {timestamp && (\n <span className=\"text-gray-500 mr-2\">\n [{new Date(timestamp).toLocaleTimeString('zh-CN')}]\n </span>\n )}\n <span className=\"whitespace-pre-wrap break-all\">\n {content}\n </span>\n </div>\n );\n })\n ) : (\n <div className=\"text-center text-gray-500 mt-8\">\n 等待日志输出...\n </div>\n )}\n </div>\n </div>\n );\n}","\"use client\";\n\nimport { useState, useEffect, Suspense, useCallback } from 'react';\nimport { useSearchParams, useRouter } from 'next/navigation';\nimport { Button } from '@/components/ui/button';\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '@/components/ui/tabs';\nimport { \n Select, \n SelectContent, \n SelectItem, \n SelectTrigger, \n SelectValue \n} from '@/components/ui/select';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { Switch } from '@/components/ui/switch';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/ui/table';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport Editor from '@monaco-editor/react';\nimport MicroAppProxyTable from '@/components/MicroAppProxyTable';\nimport LogViewer from '@/components/LogViewer';\n\ninterface ProxyEnv {\n [key: string]: string;\n}\n\ninterface EnvConfig {\n currentProxy: string;\n proxyEnv: ProxyEnv;\n host?: string;\n startCommand?: string;\n}\n\ninterface ProjectConfigData {\n projectName: string;\n repo: string;\n mockingIntercept?: boolean;\n mockOpen?: boolean;\n envs: {\n [envName: string]: EnvConfig;\n };\n}\n\ninterface ConfigState {\n [envName: string]: {\n selectedProxy: string;\n selectedOption: string; // 跟踪当前选择的选项(key或'custom')\n saving?: boolean;\n saveMessage?: string;\n };\n}\n\ninterface ProjectConfigState {\n mockingIntercept: boolean;\n mockOpen: boolean;\n saving?: boolean;\n saveMessage?: string;\n}\n\ninterface MockFile {\n siteName: string;\n fileName: string;\n filePath: string;\n}\n\ninterface MockMethod {\n method: string;\n setting?: {\n currentSite?: string;\n open?: string[];\n [key: string]: unknown;\n };\n files: MockFile[];\n}\n\ninterface MockApi {\n apiName: string;\n methods: MockMethod[];\n}\n\ninterface MockData {\n projectName: string;\n mockFiles: MockApi[];\n}\n\n// 项目状态枚举\nenum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n}\n\n// 可用项目接口\ninterface ProjectItem {\n name: string;\n status: ProjectStatus;\n message: string;\n}\n\n// 新建Mock表单数据接口\ninterface CreateMockFormData {\n apiPath: string;\n method: string;\n siteName: string;\n mockOpen: boolean;\n}\n\n// 新增场景上下文接口\ninterface SceneContext {\n apiName: string;\n method: string;\n apiPath: string;\n}\n\n// 配置内容组件 - 包含所有使用 useSearchParams 的逻辑\nfunction ConfigurationContent() {\n const searchParams = useSearchParams();\n const router = useRouter();\n const projectName = searchParams.get('project');\n \n const [projectConfig, setProjectConfig] = useState<ProjectConfigData | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [configState, setConfigState] = useState<ConfigState>({});\n const [projectConfigState, setProjectConfigState] = useState<ProjectConfigState>({\n mockingIntercept: false,\n mockOpen: false,\n });\n const [openingProject, setOpeningProject] = useState(false);\n const [mockData, setMockData] = useState<MockData | null>(null);\n const [mockLoading, setMockLoading] = useState(false);\n const [currentPage, setCurrentPage] = useState(1);\n const [itemsPerPage] = useState(10);\n const [currentTab, setCurrentTab] = useState<string>('');\n const [editingFile, setEditingFile] = useState<{\n projectName: string;\n apiName: string;\n method: string;\n siteName: string;\n content: string;\n } | null>(null);\n const [editDialogOpen, setEditDialogOpen] = useState(false);\n const [editLoading, setEditLoading] = useState(false);\n const [saveLoading, setSaveLoading] = useState(false);\n const [editorLoading, setEditorLoading] = useState(true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [editorInstance, setEditorInstance] = useState<any>(null);\n \n // 项目列表相关状态\n const [availableProjects, setAvailableProjects] = useState<ProjectItem[]>([]);\n const [projectsLoading, setProjectsLoading] = useState(false);\n \n // 新建Mock相关状态\n const [isCreateMode, setIsCreateMode] = useState(false);\n const [isAddSceneMode, setIsAddSceneMode] = useState(false); // 新增场景模式\n const [createFormData, setCreateFormData] = useState<CreateMockFormData>({\n apiPath: '',\n method: 'GET',\n siteName: '默认场景',\n mockOpen: true,\n });\n const [currentSceneContext, setCurrentSceneContext] = useState<SceneContext | null>(null);\n const [isCreating, setIsCreating] = useState(false);\n\n // 删除确认对话框状态\n const [deleteConfirmDialog, setDeleteConfirmDialog] = useState<{\n open: boolean;\n apiName: string;\n method: string;\n siteName: string;\n }>({\n open: false,\n apiName: '',\n method: '',\n siteName: '',\n });\n\n // 删除接口确认对话框状态\n const [deleteApiDialog, setDeleteApiDialog] = useState<{\n open: boolean;\n apiName: string;\n apiPath: string;\n }>({\n open: false,\n apiName: '',\n apiPath: '',\n });\n\n // 通知状态\n const [notification, setNotification] = useState<{\n open: boolean;\n type: 'success' | 'error';\n message: string;\n }>({\n open: false,\n type: 'success',\n message: '',\n });\n\n // Mock接口搜索相关状态\n const [searchKeyword, setSearchKeyword] = useState<string>('');\n \n // 进程状态相关\n const [processStatuses, setProcessStatuses] = useState<{[key: string]: {\n running: boolean;\n pid?: number;\n startTime?: string;\n port?: string;\n loading?: boolean;\n }}>({});\n \n // 日志相关状态\n const [showLogsDialog, setShowLogsDialog] = useState(false);\n const [currentLogsEnv, setCurrentLogsEnv] = useState<string>('');\n const [processLogs, setProcessLogs] = useState<string[]>([]);\n\n // 格式化代码函数\n const formatCode = async () => {\n if (editorInstance) {\n await autoFormatCode(editorInstance);\n }\n };\n\n // 键盘快捷键处理\n const handleKeyDown = async (event: KeyboardEvent) => {\n // 只在编辑对话框打开时处理快捷键\n if (!editDialogOpen) return;\n \n // 检查是否按下了 Cmd+S (Mac) 或 Ctrl+S (Windows/Linux)\n if ((event.metaKey || event.ctrlKey) && event.key === 's') {\n event.preventDefault(); // 阻止浏览器默认的保存行为\n await formatCode(); // 触发格式化\n }\n };\n\n // 添加键盘事件监听器\n useEffect(() => {\n if (editDialogOpen) {\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }\n }, [editDialogOpen, editorInstance]);\n\n // 自动格式化代码\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const autoFormatCode = async (editor: any) => {\n try {\n // 先等待编辑器完全加载\n await new Promise(resolve => setTimeout(resolve, 200));\n \n // 获取当前内容并进行基本格式化\n const model = editor.getModel();\n if (model) {\n // 执行格式化操作\n await editor.getAction('editor.action.formatDocument')?.run();\n \n // 如果格式化后还是单行,手动添加换行\n const content = model.getValue();\n if (content && !content.includes('\\n') && content.length > 50) {\n // 简单的JavaScript格式化:在大括号和分号后添加换行\n const formatted = content\n .replace(/\\{\\s*/g, '{\\n ')\n .replace(/\\}\\s*/g, '\\n}')\n .replace(/;\\s*/g, ';\\n ')\n .replace(/,\\s*/g, ',\\n ')\n .replace(/\\n\\s*\\n/g, '\\n')\n .trim();\n \n if (formatted !== content) {\n model.setValue(formatted);\n // 再次执行格式化\n setTimeout(() => {\n editor.getAction('editor.action.formatDocument')?.run();\n }, 100);\n }\n }\n }\n } catch (error) {\n console.log('自动格式化失败:', error);\n }\n };\n\n const handleBackToInitialization = () => {\n router.push('/initialization');\n };\n\n // 获取可用项目列表\n const fetchAvailableProjects = async () => {\n setProjectsLoading(true);\n try {\n const response = await fetch('/api/check-workspace');\n const data = await response.json();\n\n if (data.success && data.projects) {\n const projects: ProjectItem[] = data.projects.map((project: { name: string; status: string; message: string }) => ({\n name: project.name,\n status: project.status as ProjectStatus,\n message: project.message,\n }));\n setAvailableProjects(projects);\n } else {\n console.error('获取项目列表失败:', data.error);\n setAvailableProjects([]);\n }\n } catch (error) {\n console.error('获取项目列表失败:', error);\n setAvailableProjects([]);\n } finally {\n setProjectsLoading(false);\n }\n };\n\n // 处理项目切换\n const handleProjectSwitch = (selectedProjectName: string) => {\n if (selectedProjectName === projectName) return; // 如果选择的是当前项目则不切换\n \n // 保持当前的tab参数\n const currentTab = searchParams.get('tab');\n const newUrl = `/configuration?project=${encodeURIComponent(selectedProjectName)}${\n currentTab ? `&tab=${currentTab}` : ''\n }`;\n \n router.push(newUrl);\n };\n\n // 在 Cursor 中打开项目\n const handleOpenProject = async () => {\n if (!projectName) return;\n \n setOpeningProject(true);\n \n try {\n const response = await fetch('/api/open-project', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ projectName }),\n });\n\n const result = await response.json();\n\n if (!result.success) {\n console.error('打开项目失败:', result.error);\n // 这里可以添加用户友好的错误提示\n showNotification('error', `打开项目失败: ${result.error}`);\n }\n } catch (error) {\n console.error('打开项目失败:', error);\n showNotification('error', '打开项目失败: 网络错误');\n } finally {\n setOpeningProject(false);\n }\n };\n\n // 获取项目配置\n useEffect(() => {\n if (!projectName) {\n setError('项目名称缺失');\n setLoading(false);\n return;\n }\n\n const fetchProjectConfig = async () => {\n try {\n const response = await fetch(`/api/project-config?project=${encodeURIComponent(projectName)}`);\n const result = await response.json();\n\n if (result.success) {\n setProjectConfig(result.data);\n \n // 初始化环境配置状态\n const initialState: ConfigState = {};\n Object.keys(result.data.envs).forEach(envName => {\n const envConfig = result.data.envs[envName];\n \n // selectedProxy 始终存储当前代理的URL值\n let currentProxyUrl = '';\n if (envConfig.proxyEnv[envConfig.currentProxy]) {\n // currentProxy 是 key 格式,获取对应的 URL\n currentProxyUrl = envConfig.proxyEnv[envConfig.currentProxy];\n } else {\n // currentProxy 可能是 URL 格式,直接使用\n currentProxyUrl = envConfig.currentProxy;\n }\n \n // 确定当前选择的选项\n let currentSelectedOption = '';\n if (envConfig.proxyEnv[envConfig.currentProxy]) {\n // currentProxy 是预设选项的key\n currentSelectedOption = envConfig.currentProxy;\n } else {\n // currentProxy 是自定义URL,选项为custom\n currentSelectedOption = 'custom';\n }\n \n initialState[envName] = {\n selectedProxy: currentProxyUrl || '', // selectedProxy 存储实际的代理URL\n selectedOption: currentSelectedOption, // 存储当前选择的选项\n };\n });\n setConfigState(initialState);\n \n // 初始化项目级配置状态\n setProjectConfigState({\n mockingIntercept: result.data.mockingIntercept || false,\n mockOpen: result.data.mockOpen || false,\n });\n } else {\n setError(result.error);\n }\n } catch (err) {\n setError('获取项目配置失败');\n console.error('获取项目配置失败:', err);\n } finally {\n setLoading(false);\n }\n };\n\n fetchProjectConfig();\n }, [projectName]);\n\n // 当项目配置加载完成后,设置正确的tab并获取相应数据\n useEffect(() => {\n if (projectConfig && projectName) {\n const envNames = Object.keys(projectConfig.envs);\n // 检查URL参数是否指定了tab\n const urlParams = new URLSearchParams(window.location.search);\n const urlTab = urlParams.get('tab');\n \n let validTab = '';\n \n // 优先检查当前tab是否仍然有效\n if (currentTab && (currentTab === 'mock' || envNames.includes(currentTab))) {\n // 当前tab仍然有效,保持不变\n validTab = currentTab;\n } else if (urlTab) {\n // 当前tab无效,检查URL参数是否有效\n if (urlTab === 'mock' || envNames.includes(urlTab)) {\n validTab = urlTab;\n } else {\n // URL中的tab在新项目中无效,选择默认tab\n validTab = envNames.length > 0 ? envNames[0] : 'mock';\n }\n } else {\n // 没有URL参数,选择默认tab\n validTab = envNames.length > 0 ? envNames[0] : 'mock';\n // validTab = 'mock';\n }\n \n // 只有当需要设置的tab与当前tab不同时才更新\n if (validTab !== currentTab) {\n setCurrentTab(validTab);\n \n if (validTab === 'mock') {\n fetchMockData();\n }\n }\n }\n }, [projectConfig, projectName]); // 移除currentTab依赖,避免循环依赖\n\n // 获取可用项目列表\n useEffect(() => {\n fetchAvailableProjects();\n }, []);\n\n // 获取所有环境的进程状态\n const fetchAllProcessStatuses = useCallback(async () => {\n if (!projectName || !projectConfig) return;\n \n const statuses: typeof processStatuses = {};\n \n for (const envName of Object.keys(projectConfig.envs)) {\n const key = `${envName}`;\n statuses[key] = { loading: true, running: false };\n }\n \n setProcessStatuses(statuses);\n \n // 并发获取所有环境的状态\n const promises = Object.keys(projectConfig.envs).map(async (envName) => {\n try {\n const response = await fetch(\n `/api/process/status?projectName=${encodeURIComponent(projectName)}&envName=${encodeURIComponent(envName)}`\n );\n const result = await response.json();\n \n if (result.success && result.data) {\n return { envName, status: result.data };\n }\n } catch (error) {\n console.error(`获取环境 ${envName} 状态失败:`, error);\n }\n return { envName, status: { running: false } };\n });\n \n const results = await Promise.all(promises);\n \n const newStatuses: typeof processStatuses = {};\n results.forEach(({ envName, status }) => {\n newStatuses[envName] = {\n running: status.running || false,\n pid: status.pid,\n startTime: status.startTime,\n port: status.port,\n loading: false\n };\n });\n \n setProcessStatuses(newStatuses);\n }, [projectName, projectConfig]);\n\n // 启动进程\n const handleStartProcess = async (envName: string) => {\n if (!projectName || !projectConfig) return;\n \n const envConfig = projectConfig.envs[envName];\n if (!envConfig.startCommand) {\n showNotification('error', '该环境未配置启动命令');\n return;\n }\n \n setProcessStatuses(prev => ({\n ...prev,\n [envName]: { ...prev[envName], loading: true }\n }));\n \n try {\n const response = await fetch('/api/process/start', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n projectName,\n envName,\n startCommand: envConfig.startCommand,\n }),\n });\n \n const result = await response.json();\n \n if (result.success) {\n setProcessStatuses(prev => ({\n ...prev,\n [envName]: {\n running: true,\n pid: result.data.pid,\n startTime: result.data.startTime,\n port: result.data.port,\n loading: false\n }\n }));\n } else {\n throw new Error(result.error || '启动失败');\n }\n } catch (error) {\n console.error('启动进程失败:', error);\n showNotification('error', `启动失败: ${error instanceof Error ? error.message : '未知错误'}`);\n setProcessStatuses(prev => ({\n ...prev,\n [envName]: { ...prev[envName], loading: false }\n }));\n }\n };\n\n // 停止进程\n const handleStopProcess = async (envName: string) => {\n if (!projectName) return;\n \n setProcessStatuses(prev => ({\n ...prev,\n [envName]: { ...prev[envName], loading: true }\n }));\n \n try {\n const response = await fetch(\n `/api/process/start?projectName=${encodeURIComponent(projectName)}&envName=${encodeURIComponent(envName)}`,\n { method: 'DELETE' }\n );\n \n const result = await response.json();\n \n if (result.success) {\n setProcessStatuses(prev => ({\n ...prev,\n [envName]: { running: false, loading: false }\n }));\n } else {\n throw new Error(result.error || '停止失败');\n }\n } catch (error) {\n console.error('停止进程失败:', error);\n showNotification('error', `停止失败: ${error instanceof Error ? error.message : '未知错误'}`);\n setProcessStatuses(prev => ({\n ...prev,\n [envName]: { ...prev[envName], loading: false }\n }));\n }\n };\n\n // 日志流控制\n const [logEventSource, setLogEventSource] = useState<EventSource | null>(null);\n \n // 开始实时日志流\n const startLogStream = (envName: string) => {\n if (!projectName) return;\n \n // 关闭之前的连接\n if (logEventSource) {\n logEventSource.close();\n }\n \n // 清空现有日志\n setProcessLogs([]);\n \n // 创建新的 EventSource\n const source = new EventSource(\n `/api/process/logs/stream?projectName=${encodeURIComponent(projectName)}&envName=${encodeURIComponent(envName)}`\n );\n \n source.onmessage = (event) => {\n try {\n const data = JSON.parse(event.data);\n \n if (data.type === 'log') {\n setProcessLogs(prev => {\n const newLogs = [...prev, data.content];\n // 限制显示的日志行数\n if (newLogs.length > 1000) {\n return newLogs.slice(-1000);\n }\n return newLogs;\n });\n } else if (data.type === 'init') {\n setProcessLogs([data.message]);\n } else if (data.type === 'end') {\n setProcessLogs(prev => [...prev, `[系统] ${data.message}`]);\n }\n } catch (error) {\n console.error('解析日志数据失败:', error);\n }\n };\n \n source.onerror = (error) => {\n console.error('日志流错误:', error);\n source.close();\n setLogEventSource(null);\n };\n \n setLogEventSource(source);\n };\n \n // 停止日志流\n const stopLogStream = () => {\n if (logEventSource) {\n logEventSource.close();\n setLogEventSource(null);\n }\n };\n \n // 显示日志对话框\n const handleShowLogs = (envName: string) => {\n setCurrentLogsEnv(envName);\n setShowLogsDialog(true);\n startLogStream(envName);\n };\n \n // 关闭日志对话框\n const handleCloseLogsDialog = () => {\n setShowLogsDialog(false);\n setProcessLogs([]);\n setCurrentLogsEnv('');\n stopLogStream();\n };\n \n // 刷新日志\n const handleRefreshLogs = () => {\n if (currentLogsEnv) {\n stopLogStream();\n startLogStream(currentLogsEnv);\n }\n };\n\n // 监听项目配置变化,获取进程状态\n useEffect(() => {\n if (projectConfig && projectName) {\n fetchAllProcessStatuses();\n \n // 定期检查进程状态\n const interval = setInterval(() => {\n fetchAllProcessStatuses();\n }, 5000); // 每5秒检查一次\n \n return () => clearInterval(interval);\n }\n }, [projectConfig, projectName, fetchAllProcessStatuses]);\n\n // 处理代理环境选择变化\n const handleProxyChange = (envName: string, proxyKey: string) => {\n if (!projectConfig) return;\n \n const envConfig = projectConfig.envs[envName];\n let proxyUrl = '';\n \n if (proxyKey === 'custom') {\n // 选择custom时,如果当前已经是custom选项,保持当前值;否则使用custom的预设值或空值\n if (configState[envName]?.selectedOption === 'custom') {\n proxyUrl = configState[envName]?.selectedProxy || '';\n } else {\n proxyUrl = envConfig.proxyEnv.custom || '';\n }\n } else {\n // 选择预设选项时,从proxyEnv获取对应的URL\n proxyUrl = envConfig.proxyEnv[proxyKey] || '';\n }\n \n setConfigState(prev => ({\n ...prev,\n [envName]: {\n ...prev[envName],\n selectedProxy: proxyUrl,\n selectedOption: proxyKey, // 更新选择的选项\n saveMessage: '', // 清除之前的保存消息\n },\n }));\n };\n\n // 处理自定义代理输入变化\n const handleCustomProxyChange = (envName: string, customUrl: string) => {\n setConfigState(prev => ({\n ...prev,\n [envName]: {\n ...prev[envName],\n selectedProxy: customUrl,\n saveMessage: '', // 清除之前的保存消息\n },\n }));\n };\n\n // 处理Mock拦截开关变化\n const handleMockingInterceptChange = async (checked: boolean) => {\n setProjectConfigState(prev => ({\n ...prev,\n mockingIntercept: checked,\n saving: true,\n saveMessage: '',\n }));\n\n try {\n const response = await fetch('/api/project-config', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n projectName,\n projectConfig: {\n mockingIntercept: checked,\n mockOpen: projectConfigState.mockOpen,\n },\n }),\n });\n\n const result = await response.json();\n\n if (result.success) {\n // 更新项目配置\n setProjectConfig(prev => {\n if (!prev) return prev;\n return {\n ...prev,\n mockingIntercept: checked,\n };\n });\n\n setProjectConfigState(prev => ({\n ...prev,\n saving: false,\n saveMessage: 'Mock拦截配置已保存',\n }));\n\n // 清除保存消息\n setTimeout(() => {\n setProjectConfigState(prev => ({\n ...prev,\n saveMessage: '',\n }));\n }, 2000);\n } else {\n throw new Error(result.error || '保存失败');\n }\n } catch (error) {\n console.error('保存Mock拦截配置失败:', error);\n setProjectConfigState(prev => ({\n ...prev,\n mockingIntercept: !checked, // 回滚状态\n saving: false,\n saveMessage: `保存失败: ${error instanceof Error ? error.message : '未知错误'}`,\n }));\n\n // 清除错误消息\n setTimeout(() => {\n setProjectConfigState(prev => ({\n ...prev,\n saveMessage: '',\n }));\n }, 3000);\n }\n };\n\n // 处理Mock开启开关变化\n const handleMockOpenChange = async (checked: boolean) => {\n setProjectConfigState(prev => ({\n ...prev,\n mockOpen: checked,\n saving: true,\n saveMessage: '',\n }));\n\n try {\n const response = await fetch('/api/project-config', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n projectName,\n projectConfig: {\n mockingIntercept: projectConfigState.mockingIntercept,\n mockOpen: checked,\n },\n }),\n });\n\n const result = await response.json();\n\n if (result.success) {\n // 更新项目配置\n setProjectConfig(prev => {\n if (!prev) return prev;\n return {\n ...prev,\n mockOpen: checked,\n };\n });\n\n setProjectConfigState(prev => ({\n ...prev,\n saving: false,\n saveMessage: 'Mock开启配置已保存',\n }));\n\n // 清除保存消息\n setTimeout(() => {\n setProjectConfigState(prev => ({\n ...prev,\n saveMessage: '',\n }));\n }, 2000);\n } else {\n throw new Error(result.error || '保存失败');\n }\n } catch (error) {\n console.error('保存Mock开启配置失败:', error);\n setProjectConfigState(prev => ({\n ...prev,\n mockOpen: !checked, // 回滚状态\n saving: false,\n saveMessage: `保存失败: ${error instanceof Error ? error.message : '未知错误'}`,\n }));\n\n // 清除错误消息\n setTimeout(() => {\n setProjectConfigState(prev => ({\n ...prev,\n saveMessage: '',\n }));\n }, 3000);\n }\n };\n\n // 保存配置\n const handleSaveConfig = async (envName: string) => {\n if (!projectConfig || !projectName) return;\n\n const selectedProxyUrl = configState[envName]?.selectedProxy?.trim();\n if (!selectedProxyUrl) {\n setConfigState(prev => ({\n ...prev,\n [envName]: {\n ...prev[envName],\n saveMessage: '请先选择或填写代理地址',\n },\n }));\n return;\n }\n\n // 判断当前选择的是预设选项还是自定义选项\n const selectedOption = configState[envName]?.selectedOption;\n const isCustomProxy = selectedOption === 'custom';\n \n // 设置保存状态\n setConfigState(prev => ({\n ...prev,\n [envName]: {\n ...prev[envName],\n saving: true,\n saveMessage: '',\n },\n }));\n\n try {\n const requestBody: {\n projectName: string;\n envName: string;\n newProxy: string;\n customProxyUrl?: string;\n } = {\n projectName,\n envName,\n newProxy: isCustomProxy ? 'custom' : (selectedOption || ''),\n };\n\n if (isCustomProxy) {\n requestBody.customProxyUrl = selectedProxyUrl;\n }\n\n const response = await fetch('/api/project-config', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(requestBody),\n });\n\n const result = await response.json();\n\n if (result.success) {\n // 更新项目配置中的 currentProxy\n setProjectConfig(prev => {\n if (!prev) return prev;\n const updatedEnvs = { ...prev.envs };\n updatedEnvs[envName] = {\n ...updatedEnvs[envName],\n currentProxy: result.data.currentProxy, // 这个值现在是 key 格式\n };\n\n // 如果是 custom 选项,同时更新 proxyEnv.custom 的值\n if (result.data.currentProxy === 'custom') {\n updatedEnvs[envName].proxyEnv = {\n ...updatedEnvs[envName].proxyEnv,\n custom: selectedProxyUrl,\n };\n }\n\n return {\n ...prev,\n envs: updatedEnvs,\n };\n });\n\n setConfigState(prev => ({\n ...prev,\n [envName]: {\n ...prev[envName],\n saving: false,\n saveMessage: '保存成功',\n },\n }));\n } else {\n setConfigState(prev => ({\n ...prev,\n [envName]: {\n ...prev[envName],\n saving: false,\n saveMessage: `保存失败: ${result.error}`,\n },\n }));\n }\n } catch (error) {\n console.error('保存配置失败:', error);\n setConfigState(prev => ({\n ...prev,\n [envName]: {\n ...prev[envName],\n saving: false,\n saveMessage: '保存失败: 网络错误',\n },\n }));\n }\n };\n\n const cleanUpMock=async()=>{\n // 加入alert确定后才执行\n const confirm = window.confirm('确定要一键关闭所有Mock吗?');\n if (!confirm) return;\n \n try {\n const response = await fetch('/api/cleanup-mock', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n projectName: projectName,\n }),\n });\n const result = await response.json();\n if (result.success) {\n await fetchMockData();\n }\n } catch (error) {\n console.error('清空Mock配置失败:', error);\n }\n }\n\n const openAllMock=async()=>{\n // 加入alert确定后才执行\n const confirm = window.confirm('确定要一键开启所有Mock吗?');\n if (!confirm) return;\n \n try {\n const response = await fetch('/api/open-all-mock', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n projectName: projectName,\n }),\n });\n const result = await response.json();\n if (result.success) {\n await fetchMockData();\n }\n } catch (error) {\n console.error('清空Mock配置失败:', error);\n }\n }\n\n // 获取Mock数据\n const fetchMockData = async () => {\n if (!projectName) return;\n \n setMockLoading(true);\n try {\n const response = await fetch(`/api/mock-file?project=${encodeURIComponent(projectName)}`);\n const result = await response.json();\n\n if (result.success) {\n setMockData(result.data);\n } else {\n console.error('获取Mock数据失败:', result.error);\n }\n } catch (error) {\n console.error('获取Mock数据失败:', error);\n } finally {\n setMockLoading(false);\n }\n };\n\n // 处理场景切换\n const handleSiteChange = async (apiName: string, method: string, newSite: string) => {\n if (!projectName) return;\n \n try {\n const response = await fetch('/api/mock-setting', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n projectName,\n apiName,\n method,\n currentSite: newSite,\n }),\n });\n\n const result = await response.json();\n\n if (result.success) {\n // 更新本地数据\n setMockData(prev => {\n if (!prev) return prev;\n \n return {\n ...prev,\n mockFiles: prev.mockFiles.map(api => {\n if (api.apiName === apiName) {\n return {\n ...api,\n methods: api.methods.map(methodData => {\n if (methodData.method === method) {\n return {\n ...methodData,\n setting: {\n ...methodData.setting,\n currentSite: newSite,\n },\n };\n }\n return methodData;\n }),\n };\n }\n return api;\n }),\n };\n });\n } else {\n console.error('更新场景失败:', result.error);\n showNotification('error', `更新场景失败: ${result.error}`);\n }\n } catch (error) {\n console.error('更新场景失败:', error);\n showNotification('error', '更新场景失败: 网络错误');\n }\n };\n\n // 处理编辑文件\n const handleEditFile = async (apiName: string, method: string, siteName: string) => {\n if (!projectName) return;\n \n setEditLoading(true);\n setEditorLoading(true);\n try {\n const response = await fetch(\n `/api/mock-file-content?project=${encodeURIComponent(projectName)}&apiName=${encodeURIComponent(apiName)}&method=${encodeURIComponent(method)}&siteName=${encodeURIComponent(siteName)}`\n );\n const result = await response.json();\n\n if (result.success) {\n setEditingFile({\n projectName,\n apiName,\n method,\n siteName,\n content: result.data.content,\n });\n setEditDialogOpen(true);\n } else {\n console.error('获取文件内容失败:', result.error);\n showNotification('error', `获取文件内容失败: ${result.error}`);\n }\n } catch (error) {\n console.error('获取文件内容失败:', error);\n showNotification('error', '获取文件内容失败: 网络错误');\n } finally {\n setEditLoading(false);\n }\n };\n\n // 处理保存文件\n const handleSaveFile = async () => {\n if (!editingFile) return;\n \n setSaveLoading(true);\n try {\n const response = await fetch('/api/mock-file-content', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(editingFile),\n });\n\n const result = await response.json();\n\n if (result.success) {\n setEditDialogOpen(false);\n setEditingFile(null);\n // 可以选择显示成功消息或刷新数据\n } else {\n console.error('保存文件失败:', result.error);\n showNotification('error', `保存文件失败: ${result.error}`);\n }\n } catch (error) {\n console.error('保存文件失败:', error);\n showNotification('error', '保存文件失败: 网络错误');\n } finally {\n setSaveLoading(false);\n }\n };\n\n // 处理取消编辑\n const handleCancelEdit = () => {\n setEditDialogOpen(false);\n setEditingFile(null);\n setEditorLoading(true);\n };\n\n // 处理Mock开启状态切换\n // 处理新建Mock表单数据变化\n const handleCreateFormChange = (field: keyof CreateMockFormData, value: string | boolean) => {\n // 只在新建模式下场景名称固定为\"默认场景\",新增场景模式下允许修改\n if (field === 'siteName' && isCreateMode) return;\n \n setCreateFormData(prev => ({\n ...prev,\n [field]: value\n }));\n };\n\n // 生成默认Mock内容模板(支持MockJS语法)\n const generateMockTemplate = (method: string, apiPath: string) => {\n const methodUpper = method.toUpperCase();\n const apiName = apiPath.replace(/\\//g, '_').replace(/^_/, '');\n \n switch (methodUpper) {\n case 'GET':\n return `const Mock = require('mockjs');\n\nmodule.exports = Mock.mock({\n \"code\": 200,\n \"message\": \"获取${apiName}成功\",\n \"data\": {\n \"id|1-100\": 1,\n \"name\": \"@cname\",\n \"email\": \"@email\",\n \"phone\": /^1[3-9]\\\\d{9}$/,\n \"status|1\": [\"active\", \"inactive\", \"pending\"],\n \"createTime\": \"@datetime('yyyy-MM-dd HH:mm:ss')\",\n \"updateTime\": \"@now('yyyy-MM-dd HH:mm:ss')\",\n \"avatar\": \"@image('200x200', '@color', '@cname')\",\n \"address\": \"@county(true)\"\n }\n});`;\n case 'POST':\n return `const Mock = require('mockjs');\n\nmodule.exports = Mock.mock({\n \"code\": 200,\n \"message\": \"创建${apiName}成功\",\n \"data\": {\n \"id|1-100\": 1,\n \"result\": \"success\",\n \"createTime\": \"@now('yyyy-MM-dd HH:mm:ss')\"\n }\n});`;\n case 'PUT':\n return `const Mock = require('mockjs');\n\nmodule.exports = Mock.mock({\n \"code\": 200,\n \"message\": \"更新${apiName}成功\",\n \"data\": {\n \"id|1-100\": 1,\n \"result\": \"success\",\n \"updateTime\": \"@now('yyyy-MM-dd HH:mm:ss')\"\n }\n});`;\n case 'DELETE':\n return `const Mock = require('mockjs');\n\nmodule.exports = Mock.mock({\n \"code\": 200,\n \"message\": \"删除${apiName}成功\",\n \"data\": {\n \"result\": \"success\",\n \"deleteTime\": \"@now('yyyy-MM-dd HH:mm:ss')\"\n }\n});`;\n default:\n return `const Mock = require('mockjs');\n\nmodule.exports = Mock.mock({\n \"code\": 200,\n \"message\": \"操作成功\",\n \"data\": {\n \"id|1-100\": 1,\n \"timestamp\": \"@now('yyyy-MM-dd HH:mm:ss')\"\n }\n});`;\n }\n };\n\n // 检查接口场景是否已存在\n const checkMockExists = (apiPath: string, method: string, siteName: string) => {\n if (!mockData) return false;\n \n const apiName = apiPath.replace(/\\//g, '_').replace(/^_/, '');\n \n // 在mockData中查找是否存在相同的API、方法和场景组合\n const existingApi = mockData.mockFiles.find(api => api.apiName === apiName);\n if (!existingApi) return false;\n \n const existingMethod = existingApi.methods.find(m => m.method.toLowerCase() === method.toLowerCase());\n if (!existingMethod) return false;\n \n const existingSite = existingMethod.files.find(file => file.siteName === siteName);\n return !!existingSite;\n };\n\n // 创建新的Mock文件\n const handleCreateMock = async () => {\n if (!createFormData.apiPath.trim()) {\n showNotification('error', '请输入接口地址');\n return;\n }\n\n // 检查是否已存在相同的接口场景\n if (checkMockExists(createFormData.apiPath, createFormData.method, createFormData.siteName)) {\n showNotification('error', `接口 ${createFormData.apiPath} [${createFormData.method.toUpperCase()}] 的场景 \"${createFormData.siteName}\" 已存在,不能重复创建`);\n return;\n }\n\n setIsCreating(true);\n try {\n // 将接口路径转换为API名称\n const apiName = createFormData.apiPath.replace(/\\//g, '_').replace(/^_/, '');\n \n // 生成默认Mock内容\n const defaultContent =editingFile?.content?? generateMockTemplate(createFormData.method, createFormData.apiPath);\n \n const response = await fetch('/api/mock-file', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n projectName: projectName,\n apiName: apiName,\n method: createFormData.method.toLowerCase(),\n siteName: createFormData.siteName,\n content: defaultContent,\n }),\n });\n\n const result = await response.json();\n \n if (result.success) {\n // 创建成功后,如果需要开启Mock,则调用开启接口\n if (createFormData.mockOpen) {\n await handleMockOpenToggle(apiName, createFormData.method.toLowerCase(), createFormData.siteName, true);\n }\n \n // 重置表单数据\n setCreateFormData({\n apiPath: '',\n method: 'GET',\n siteName: '默认场景',\n mockOpen: true,\n });\n \n // 关闭弹框\n setIsCreateMode(false);\n \n // 刷新Mock列表\n await fetchMockData();\n \n showNotification('success', 'Mock文件创建成功');\n } else {\n throw new Error(result.error || '创建失败');\n }\n } catch (error) {\n console.error('创建Mock文件失败:', error);\n showNotification('error', `创建Mock文件失败: ${error instanceof Error ? error.message : '未知错误'}`);\n } finally {\n setIsCreating(false);\n }\n };\n\n // 新增mock场景\n const handleAddMockScene = () => {\n // 打开弹窗 填充默认值\n setIsCreateMode(true)\n const defaultMockContent=generateMockTemplate(createFormData.method, createFormData.apiPath);\n setEditingFile({\n projectName: projectName || '',\n apiName: createFormData.apiPath,\n method: createFormData.method.toLowerCase(),\n siteName: '',\n content: defaultMockContent || '',\n } );\n }\n\n // 处理新增场景按钮点击\n const handleAddScene = (apiName: string, method: string, apiPath: string) => {\n console.log('新增场景点击:', { apiName, method, apiPath }); // 调试信息\n setCurrentSceneContext({ apiName, method, apiPath });\n // 使用当前行的数据填充表单,但场景名称重置为空\n const formData = {\n apiPath: apiPath,\n method: method.toUpperCase(),\n siteName: '',\n mockOpen: true,\n };\n console.log('设置表单数据:', formData); // 调试信息\n setCreateFormData(formData);\n setIsAddSceneMode(true);\n const defaultMockContent=generateMockTemplate(formData.method, formData.apiPath);\n setEditingFile({\n projectName: projectName || '',\n apiName: apiName,\n method: method.toLowerCase(),\n siteName: '',\n content: defaultMockContent || '',\n } );\n };\n\n // 检查场景名称是否已存在(针对当前API和方法)\n const checkSceneExists = (apiName: string, method: string, siteName: string) => {\n if (!mockData) return false;\n \n const existingApi = mockData.mockFiles.find(api => api.apiName === apiName);\n if (!existingApi) return false;\n \n const existingMethod = existingApi.methods.find(m => m.method.toLowerCase() === method.toLowerCase());\n if (!existingMethod) return false;\n \n const existingSite = existingMethod.files.find(file => file.siteName === siteName);\n return !!existingSite;\n };\n\n // 新增场景提交\n const handleAddSceneSubmit = async () => {\n if (!currentSceneContext || !createFormData.siteName.trim()) {\n showNotification('error', '请输入场景名称');\n return;\n }\n\n // 检查是否已存在相同的场景名称\n if (checkSceneExists(currentSceneContext.apiName, currentSceneContext.method, createFormData.siteName)) {\n showNotification('error', `接口 ${currentSceneContext.apiPath} [${currentSceneContext.method.toUpperCase()}] 的场景 \"${createFormData.siteName}\" 已存在`);\n return;\n }\n\n setIsCreating(true);\n try {\n // 生成默认Mock内容\n const defaultContent =editingFile?.content?? generateMockTemplate(currentSceneContext.method, currentSceneContext.apiPath);\n console.log('defaultContent', defaultContent,editingFile);\n\n const response = await fetch('/api/mock-file', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n projectName: projectName,\n apiName: currentSceneContext.apiName,\n method: currentSceneContext.method.toLowerCase(),\n siteName: createFormData.siteName,\n content: defaultContent,\n }),\n });\n\n const result = await response.json();\n \n if (result.success) {\n // 创建成功后,如果需要开启Mock,则调用开启接口\n if (createFormData.mockOpen) {\n await handleMockOpenToggle(currentSceneContext.apiName, currentSceneContext.method, createFormData.siteName, true);\n }\n \n // 重置表单数据和状态\n setCreateFormData({\n apiPath: '',\n method: 'GET',\n siteName: '默认场景',\n mockOpen: true,\n });\n \n // 自动切换到新创建的场景\n if (projectConfig) {\n try {\n const switchResponse = await fetch('/api/mock-setting', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n projectName: projectConfig.projectName,\n apiName: currentSceneContext.apiName,\n method: currentSceneContext.method,\n currentSite: createFormData.siteName,\n }),\n });\n\n const switchResult = await switchResponse.json();\n if (!switchResult.success) {\n console.warn('切换到新场景失败:', switchResult.error);\n }\n } catch (error) {\n console.warn('切换到新场景失败:', error);\n }\n }\n\n // 自动开启新创建的场景\n try {\n await handleMockOpenToggle(currentSceneContext.apiName, currentSceneContext.method, createFormData.siteName, true);\n } catch (error) {\n console.warn('自动开启新场景失败:', error);\n }\n\n // 关闭弹框\n setIsAddSceneMode(false);\n setCurrentSceneContext(null);\n \n // 刷新Mock列表\n await fetchMockData();\n \n showNotification('success', '场景创建成功');\n } else {\n throw new Error(result.error || '创建失败');\n }\n } catch (error) {\n console.error('创建场景失败:', error);\n showNotification('error', `创建场景失败: ${error instanceof Error ? error.message : '未知错误'}`);\n } finally {\n setIsCreating(false);\n }\n };\n\n const handleMockOpenToggle = async (apiName: string, method: string, siteName: string, isOpen: boolean) => {\n if (!projectConfig) return;\n \n try {\n const response = await fetch('/api/mock-open-status', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n projectName: projectConfig.projectName,\n apiName,\n method,\n siteName,\n isOpen,\n }),\n });\n\n const result = await response.json();\n if (result.success) {\n // 重新获取Mock数据以更新状态\n await fetchMockData();\n } else {\n console.error('更新Mock开启状态失败:', result.error);\n }\n } catch (error) {\n console.error('更新Mock开启状态失败:', error);\n }\n };\n\n // 显示通知\n const showNotification = (type: 'success' | 'error', message: string) => {\n setNotification({ open: true, type, message });\n setTimeout(() => {\n setNotification({ open: false, type: 'success', message: '' });\n }, 3000);\n };\n\n // 处理删除场景 - 显示确认对话框\n const handleDeleteScenario = (apiName: string, method: string, siteName: string) => {\n setDeleteConfirmDialog({\n open: true,\n apiName,\n method,\n siteName,\n });\n };\n\n // 确认删除场景\n const confirmDeleteScenario = async () => {\n if (!projectConfig) return;\n \n const { apiName, method, siteName } = deleteConfirmDialog;\n \n try {\n const response = await fetch(`/api/mock-file?project=${encodeURIComponent(projectConfig.projectName)}&apiName=${encodeURIComponent(apiName)}&method=${encodeURIComponent(method)}&siteName=${encodeURIComponent(siteName)}`, {\n method: 'DELETE',\n });\n\n const result = await response.json();\n if (result.success) {\n // 保存当前滚动位置\n const scrollPosition = window.scrollY;\n \n // 重新获取Mock数据以更新状态\n await fetchMockData();\n \n // 恢复滚动位置\n window.scrollTo(0, scrollPosition);\n \n showNotification('success', '场景删除成功');\n } else {\n console.error('删除场景失败:', result.error);\n showNotification('error', `删除场景失败: ${result.error}`);\n }\n } catch (error) {\n console.error('删除场景失败:', error);\n showNotification('error', '删除场景失败: 网络错误');\n } finally {\n // 关闭确认对话框\n setDeleteConfirmDialog({\n open: false,\n apiName: '',\n method: '',\n siteName: '',\n });\n }\n };\n\n // 处理删除接口 - 显示确认对话框\n const handleDeleteApi = (apiName: string, apiPath: string) => {\n setDeleteApiDialog({\n open: true,\n apiName,\n apiPath,\n });\n };\n\n // 确认删除接口\n const confirmDeleteApi = async () => {\n if (!projectConfig) return;\n \n const { apiName } = deleteApiDialog;\n \n try {\n const response = await fetch(`/api/delete-mock-api?project=${encodeURIComponent(projectConfig.projectName)}&apiName=${encodeURIComponent(apiName)}`, {\n method: 'DELETE',\n });\n\n const result = await response.json();\n if (result.success) {\n // 保存当前滚动位置\n const scrollPosition = window.scrollY;\n \n // 重新获取Mock数据以更新状态\n await fetchMockData();\n \n // 恢复滚动位置\n window.scrollTo(0, scrollPosition);\n \n showNotification('success', '接口删除成功');\n } else {\n console.error('删除接口失败:', result.error);\n showNotification('error', `删除接口失败: ${result.error}`);\n }\n } catch (error) {\n console.error('删除接口失败:', error);\n showNotification('error', '删除接口失败: 网络错误');\n } finally {\n // 关闭确认对话框\n setDeleteApiDialog({\n open: false,\n apiName: '',\n apiPath: '',\n });\n }\n };\n\n // 处理搜索关键词变化\n const handleSearchChange = (value: string) => {\n setSearchKeyword(value);\n // 搜索时重置分页到第一页\n setCurrentPage(1);\n };\n\n // 清空搜索关键词\n const handleClearSearch = () => {\n setSearchKeyword('');\n // 清空搜索时重置分页到第一页\n setCurrentPage(1);\n };\n\n if (loading) {\n return (\n <main className=\"container mx-auto p-4 sm:p-6 md:p-8\">\n <div className=\"text-center py-8\">\n <p>加载中...</p>\n </div>\n </main>\n );\n }\n\n if (error || !projectConfig) {\n return (\n <main className=\"container mx-auto p-4 sm:p-6 md:p-8\">\n <div className=\"flex justify-between items-center mb-6\">\n <h1 className=\"text-2xl font-bold\">项目配置</h1>\n <div className=\"flex gap-2\">\n {projectName && (\n <Button \n variant=\"default\"\n onClick={handleOpenProject}\n disabled={openingProject}\n >\n {openingProject ? '打开中...' : '在 Cursor 中打开'}\n </Button>\n )}\n <Button \n variant=\"outline\"\n onClick={handleBackToInitialization}\n >\n 返回初始化页面\n </Button>\n </div>\n </div>\n <div className=\"text-center text-red-500 py-8\">\n <p>{error || '未找到项目配置'}</p>\n </div>\n </main>\n );\n }\n\n const envNames = Object.keys(projectConfig.envs);\n\n return (\n <main className=\"container mx-auto p-4 sm:p-6 md:p-8\">\n <div className=\"flex justify-between items-center mb-6\">\n <div className=\"flex items-center gap-4\">\n <h1 className=\"text-2xl font-bold\">\n {projectConfig.projectName} - 项目配置\n </h1>\n {/* 项目切换选择器 */}\n <div className=\"flex items-center gap-2\">\n <Label className=\"text-sm font-medium text-gray-600\">切换项目:</Label>\n <Select\n value={projectName || ''}\n onValueChange={handleProjectSwitch}\n disabled={projectsLoading}\n >\n <SelectTrigger className=\"w-40\">\n <SelectValue placeholder={projectsLoading ? \"加载中...\" : \"选择项目\"} />\n </SelectTrigger>\n <SelectContent>\n {availableProjects.map((project) => (\n <SelectItem key={project.name} value={project.name}>\n <div className=\"flex items-center gap-2\">\n <span className={`w-2 h-2 rounded-full ${\n project.status === ProjectStatus.EXISTING \n ? 'bg-green-500' \n : project.status === ProjectStatus.FAILED\n ? 'bg-red-500'\n : 'bg-yellow-500'\n }`} />\n <span>{project.name}</span>\n </div>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n <div className=\"flex gap-2\">\n <Button \n variant=\"default\"\n onClick={handleOpenProject}\n disabled={openingProject}\n >\n {openingProject ? '打开中...' : '在 Cursor 中打开'}\n </Button>\n <Button \n variant=\"outline\"\n onClick={handleBackToInitialization}\n >\n 返回初始化页面\n </Button>\n </div>\n </div>\n\n {envNames.length > 0 ? (\n <Tabs \n value={currentTab || envNames[0]} \n onValueChange={(value) => {\n setCurrentTab(value);\n if (value === 'mock') {\n fetchMockData();\n }\n }}\n className=\"w-full\"\n >\n <TabsList className=\"grid w-full\" style={{ gridTemplateColumns: `repeat(${envNames.length + 1}, 1fr)` }}>\n {envNames.map((envName) => (\n <TabsTrigger key={envName} value={envName} className=\"capitalize relative\">\n <span className=\"flex items-center gap-2\">\n {envName}\n {processStatuses[envName]?.running && (\n <span className=\"w-2 h-2 bg-green-500 rounded-full animate-pulse\" title=\"运行中\" />\n )}\n </span>\n </TabsTrigger>\n ))}\n <TabsTrigger value=\"mock\" className=\"capitalize\">\n Mock配置\n </TabsTrigger>\n </TabsList>\n\n {envNames.map((envName) => {\n const envConfig = projectConfig.envs[envName];\n const proxyOptions = Object.entries(envConfig.proxyEnv);\n const currentSelectedUrl = configState[envName]?.selectedProxy || '';\n \n // 获取当前选择的选项\n const currentEditSelection = configState[envName]?.selectedOption || '';\n\n // 获取已保存的配置信息(用于显示当前生效的配置)\n const savedCurrentProxy = envConfig.currentProxy;\n const savedProxyUrl = envConfig.proxyEnv[savedCurrentProxy] || savedCurrentProxy;\n const savedSelection = envConfig.proxyEnv[savedCurrentProxy] ? savedCurrentProxy : 'custom';\n\n return (\n <TabsContent key={envName} value={envName} className=\"space-y-6\">\n {/* 启动/停止控制区域 */}\n <div className=\"p-6 bg-gray-50 rounded-lg\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-lg font-semibold\">开发服务器控制</h3>\n <div className=\"flex items-center gap-4\">\n {processStatuses[envName]?.running ? (\n <>\n <span className=\"flex items-center gap-2 text-sm text-green-600\">\n <span className=\"w-2 h-2 bg-green-500 rounded-full animate-pulse\" />\n 运行中 (PID: {processStatuses[envName]?.pid})\n </span>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleShowLogs(envName)}\n >\n 查看日志\n </Button>\n <Button\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => handleStopProcess(envName)}\n disabled={processStatuses[envName]?.loading}\n >\n {processStatuses[envName]?.loading ? '处理中...' : '停止'}\n </Button>\n </>\n ) : (\n <>\n <span className=\"flex items-center gap-2 text-sm text-gray-500\">\n <span className=\"w-2 h-2 bg-gray-400 rounded-full\" />\n 未运行\n </span>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleShowLogs(envName)}\n >\n 查看日志\n </Button>\n <Button\n variant=\"default\"\n size=\"sm\"\n onClick={() => handleStartProcess(envName)}\n disabled={processStatuses[envName]?.loading || !envConfig.startCommand}\n >\n {processStatuses[envName]?.loading ? '处理中...' : '启动'}\n </Button>\n </>\n )}\n </div>\n </div>\n \n {envConfig.startCommand ? (\n <div className=\"text-sm text-gray-600\">\n <span className=\"font-medium\">启动命令:</span> <code className=\"px-2 py-1 bg-gray-200 rounded\">{envConfig.startCommand}</code>\n </div>\n ) : (\n <div className=\"text-sm text-yellow-600\">\n ⚠️ 该环境未配置启动命令\n </div>\n )}\n \n {envConfig.host && (\n <div className=\"text-sm text-gray-600 mt-2\">\n <span className=\"font-medium\">访问地址:</span>\n {processStatuses[envName]?.running ? (\n <a\n href={envConfig.host}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"ml-2 text-blue-600 hover:underline\"\n >\n {envConfig.host}\n </a>\n ) : (\n <span className=\"ml-2\">{envConfig.host}</span>\n )}\n </div>\n )}\n </div>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n {/* 左侧:环境配置 */}\n <div className=\"p-6 bg-gray-50 rounded-lg\">\n <h3 className=\"text-lg font-semibold mb-4\">{envName} 环境配置</h3>\n \n <div className=\"space-y-4\">\n <div>\n <Label className=\"block text-sm font-medium mb-2\">\n 接口代理环境切换\n </Label>\n <Select\n value={currentEditSelection}\n onValueChange={(value) => handleProxyChange(envName, value)}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"选择代理环境\" />\n </SelectTrigger>\n <SelectContent>\n {proxyOptions.map(([key, value]) => (\n <SelectItem key={key} value={key}>\n {key}({value})\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {savedProxyUrl && (\n <div className=\"p-3 bg-blue-50 rounded-md\">\n <p className=\"text-sm text-blue-700\">\n 当前项目接口已代理至:{savedSelection} 环境\n </p>\n <p className=\"text-sm text-blue-600\">\n 代理地址为:{savedProxyUrl}\n </p>\n </div>\n )}\n\n {currentEditSelection === 'custom' && (\n <div className=\"space-y-2\">\n <Label className=\"block text-sm font-medium\">\n 自定义代理地址\n </Label>\n <Input\n type=\"url\"\n placeholder=\"请输入自定义代理地址 (如: http://localhost:52741)\"\n value={currentSelectedUrl}\n onChange={(e) => handleCustomProxyChange(envName, e.target.value)}\n className=\"w-full\"\n />\n <p className=\"text-xs text-gray-500\">\n 请输入完整的代理地址,包括协议 (http:// 或 https://)\n </p>\n </div>\n )}\n\n <div className=\"flex items-center justify-between\">\n <Button \n onClick={() => handleSaveConfig(envName)}\n disabled={configState[envName]?.saving}\n className=\"w-full sm:w-auto\"\n >\n {configState[envName]?.saving ? '保存中...' : '保存配置'}\n </Button>\n \n {configState[envName]?.saveMessage && (\n <span className={`text-sm ml-3 ${\n configState[envName]?.saveMessage === '保存成功' \n ? 'text-green-600' \n : 'text-red-600'\n }`}>\n {configState[envName]?.saveMessage}\n </span>\n )}\n </div>\n </div>\n </div>\n\n {/* 右侧:MicroApp代理配置 */}\n <MicroAppProxyTable \n currentProjectName={projectConfig.projectName}\n currentEnvName={envName}\n />\n </div>\n </TabsContent>\n );\n })}\n \n {/* Mock配置Tab */}\n <TabsContent value=\"mock\" className=\"space-y-6\">\n <div className=\"p-6 bg-gray-50 rounded-lg\">\n <h3 className=\"text-lg font-semibold mb-4\">Mock配置</h3>\n \n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6 mb-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-1\">\n <Label className=\"text-sm font-medium\">Mock拦截</Label>\n <p className=\"text-xs text-gray-500\">启用或禁用Mock拦截功能</p>\n </div>\n <Switch\n checked={projectConfigState.mockingIntercept}\n onCheckedChange={handleMockingInterceptChange}\n />\n </div>\n \n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-1\">\n <Label className=\"text-sm font-medium\">Mock开启</Label>\n <p className=\"text-xs text-gray-500\">启用或禁用Mock功能</p>\n </div>\n <Switch\n checked={projectConfigState.mockOpen}\n onCheckedChange={handleMockOpenChange}\n />\n </div>\n </div>\n \n {/* 保存状态消息 */}\n {projectConfigState.saveMessage && (\n <div className=\"mb-6\">\n <span className={`text-sm ${\n projectConfigState.saveMessage.includes('已保存') \n ? 'text-green-600' \n : 'text-red-600'\n }`}>\n {projectConfigState.saveMessage}\n </span>\n </div>\n )}\n\n {/* Mock接口列表 */}\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h4 className=\"text-md font-medium\">Mock接口列表</h4>\n <div className=\"flex items-center gap-2\">\n <Button \n onClick={handleAddMockScene}\n variant=\"default\"\n size=\"sm\"\n >\n 新建\n </Button>\n <Button \n onClick={fetchMockData}\n disabled={mockLoading}\n variant=\"outline\"\n size=\"sm\"\n >\n {mockLoading ? '加载中...' : '刷新'}\n </Button>\n <Button \n onClick={cleanUpMock}\n variant=\"outline\"\n size=\"sm\"\n >\n 一键关闭\n </Button>\n <Button \n onClick={openAllMock}\n variant=\"outline\"\n size=\"sm\"\n >\n 一键开启\n </Button>\n </div>\n </div>\n\n {/* 搜索输入框 */}\n <div className=\"flex items-center gap-2\">\n <div className=\"relative flex-1 max-w-md\">\n <Input\n placeholder=\"搜索接口地址...\"\n value={searchKeyword}\n onChange={(e) => handleSearchChange(e.target.value)}\n className=\"pr-8\"\n />\n {searchKeyword && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClearSearch}\n className=\"absolute right-1 top-1/2 transform -translate-y-1/2 h-6 w-6 p-0 hover:bg-gray-100\"\n >\n ×\n </Button>\n )}\n </div>\n {searchKeyword && (\n <span className=\"text-sm text-gray-500\">\n 搜索关键词: &quot;{searchKeyword}&quot;\n </span>\n )}\n </div>\n\n {mockLoading ? (\n <div className=\"text-center py-8\">\n <p className=\"text-gray-500\">加载Mock数据中...</p>\n </div>\n ) : mockData && mockData.mockFiles.length > 0 ? (\n (() => {\n // 扁平化数据用于表格展示\n const flatData: Array<{\n apiPath: string;\n method: string;\n currentSite: string;\n availableSites: string[];\n apiName: string;\n isOpen: boolean;\n openSites: string[];\n }> = [];\n\n mockData.mockFiles.forEach(api => {\n api.methods.forEach(methodData => {\n const apiPath = api.apiName.replace(/_/g, '/');\n const availableSites = methodData.files.map(file => file.siteName);\n const currentSite = methodData.setting?.currentSite || (availableSites[0] || '');\n const openSites = methodData.setting?.open || [];\n const isOpen = openSites.includes(currentSite);\n \n flatData.push({\n apiPath,\n method: methodData.method.toUpperCase(),\n currentSite,\n availableSites,\n apiName: api.apiName,\n isOpen,\n openSites,\n });\n });\n });\n\n // 根据搜索关键词过滤数据\n const filteredData = searchKeyword.trim() \n ? flatData.filter(item => \n item.apiPath.toLowerCase().includes(searchKeyword.toLowerCase())\n )\n : flatData;\n\n // 分页计算\n const totalItems = filteredData.length;\n const totalPages = Math.ceil(totalItems / itemsPerPage);\n const startIndex = (currentPage - 1) * itemsPerPage;\n const endIndex = startIndex + itemsPerPage;\n const currentData = filteredData.slice(startIndex, endIndex);\n\n return (\n <div className=\"space-y-4\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>接口地址</TableHead>\n <TableHead>请求方法</TableHead>\n <TableHead>当前场景</TableHead>\n <TableHead>开启mock</TableHead>\n <TableHead>操作</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {currentData.map((row, index) => (\n <TableRow key={`${row.apiName}-${row.method}-${index}`}>\n <TableCell className=\"font-medium\">\n {row.apiPath}\n </TableCell>\n <TableCell>\n <span className={`px-2 py-1 rounded text-xs font-medium ${\n row.method === 'GET' ? 'bg-green-100 text-green-800' :\n row.method === 'POST' ? 'bg-blue-100 text-blue-800' :\n row.method === 'PUT' ? 'bg-yellow-100 text-yellow-800' :\n row.method === 'DELETE' ? 'bg-red-100 text-red-800' :\n 'bg-gray-100 text-gray-800'\n }`}>\n {row.method}\n </span>\n </TableCell>\n <TableCell>\n <div className=\"flex items-center gap-2\">\n <Select\n value={row.currentSite}\n onValueChange={(newSite) => handleSiteChange(row.apiName, row.method.toLowerCase(), newSite)}\n >\n <SelectTrigger className=\"w-32\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {row.availableSites.map(site => (\n <SelectItem key={site} value={site}>\n {site}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {row.availableSites.length > 1 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => handleDeleteScenario(row.apiName, row.method.toLowerCase(), row.currentSite)}\n className=\"h-8 w-8 p-0 text-red-500 hover:text-red-700 hover:bg-red-50\"\n title=\"删除当前场景\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M3 6h18\"></path>\n <path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\"></path>\n <path d=\"M8 6V4c0-1 1-2 2-2h4c0 1 1 2 2 2v2\"></path>\n </svg>\n </Button>\n )}\n </div>\n </TableCell>\n <TableCell>\n <Switch\n checked={row.isOpen}\n onCheckedChange={(checked) => handleMockOpenToggle(row.apiName, row.method.toLowerCase(), row.currentSite, checked)}\n />\n </TableCell>\n <TableCell>\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleEditFile(row.apiName, row.method.toLowerCase(), row.currentSite)}\n disabled={editLoading}\n >\n {editLoading ? '加载中...' : '编辑'}\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleAddScene(row.apiName, row.method.toLowerCase(), row.apiPath)}\n disabled={isCreating}\n >\n 新增场景\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleDeleteApi(row.apiName, row.apiPath)}\n className=\"text-red-500 hover:text-red-700 hover:border-red-300\"\n >\n 删除接口\n </Button>\n </div>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n\n {/* 分页控件 */}\n {totalPages > 1 && (\n <div className=\"flex items-center justify-between\">\n <div className=\"text-sm text-gray-500\">\n 显示 {startIndex + 1}-{Math.min(endIndex, totalItems)} 条,共 {totalItems} 条\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setCurrentPage(prev => Math.max(1, prev - 1))}\n disabled={currentPage === 1}\n >\n 上一页\n </Button>\n <span className=\"text-sm\">\n {currentPage} / {totalPages}\n </span>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setCurrentPage(prev => Math.min(totalPages, prev + 1))}\n disabled={currentPage === totalPages}\n >\n 下一页\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n })()\n ) : (\n <div className=\"text-center py-8\">\n <p className=\"text-gray-500\">暂无Mock接口数据</p>\n <p className=\"text-xs text-gray-400 mt-1\">请先创建Mock文件</p>\n </div>\n )}\n </div>\n </div>\n </TabsContent>\n </Tabs>\n ) : (\n <div className=\"text-center text-gray-500 py-8\">\n <p>该项目没有配置环境信息</p>\n </div>\n )}\n\n {/* 编辑/新建Mock文件/新增场景对话框 */}\n <Dialog open={editDialogOpen || isCreateMode || isAddSceneMode} onOpenChange={(open) => {\n if (!open) {\n setEditDialogOpen(false);\n setIsCreateMode(false);\n setIsAddSceneMode(false);\n setCurrentSceneContext(null);\n }\n }}>\n <DialogContent className=\"w-screen h-screen max-w-none max-h-none m-0 rounded-none overflow-hidden flex flex-col\">\n <DialogHeader className=\"flex-shrink-0 border-b pb-4\">\n <DialogTitle>\n {isCreateMode ? '新建Mock文件' : \n isAddSceneMode ? '新增场景' : \n '编辑Mock文件'}\n </DialogTitle>\n <DialogDescription>\n {isCreateMode ? (\n '创建一个新的Mock接口文件'\n ) : isAddSceneMode && currentSceneContext ? (\n <>\n 为接口 {currentSceneContext.apiPath} [{currentSceneContext.method.toUpperCase()}] 新增场景\n </>\n ) : editingFile ? (\n <>\n 编辑 {editingFile.apiName.replace(/_/g, '/')} - {editingFile.method.toUpperCase()} - {editingFile.siteName}.cjs\n </>\n ) : null}\n </DialogDescription>\n </DialogHeader>\n \n {/* 新建模式/新增场景的表单区域 */}\n {(isCreateMode || isAddSceneMode) && (\n <div className=\"flex-shrink-0 border-b pb-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"apiPath\" className=\"text-sm font-medium\">接口地址</Label>\n {isAddSceneMode ? (\n <div className=\"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600\">\n {createFormData.apiPath}\n </div>\n ) : (\n <Input\n id=\"apiPath\"\n placeholder=\"/api/user/info\"\n value={createFormData.apiPath}\n onChange={(e) => handleCreateFormChange('apiPath', e.target.value)}\n />\n )}\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"method\" className=\"text-sm font-medium\">请求方法</Label>\n {isAddSceneMode ? (\n <div className=\"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600\">\n {createFormData.method}\n </div>\n ) : (\n <Select\n value={createFormData.method}\n onValueChange={(value) => handleCreateFormChange('method', value)}\n >\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"GET\">GET</SelectItem>\n <SelectItem value=\"POST\">POST</SelectItem>\n <SelectItem value=\"PUT\">PUT</SelectItem>\n <SelectItem value=\"DELETE\">DELETE</SelectItem>\n <SelectItem value=\"PATCH\">PATCH</SelectItem>\n </SelectContent>\n </Select>\n )}\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"siteName\" className=\"text-sm font-medium\">场景名称</Label>\n {isCreateMode ? (\n <div className=\"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600\">\n 默认场景\n </div>\n ) : (\n <Input\n id=\"siteName\"\n placeholder=\"请输入场景名称\"\n value={createFormData.siteName}\n onChange={(e) => handleCreateFormChange('siteName', e.target.value)}\n />\n )}\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"mockOpen\" className=\"text-sm font-medium\">开启Mock</Label>\n <div className=\"flex items-center space-x-2\">\n <Switch\n id=\"mockOpen\"\n checked={createFormData.mockOpen}\n onCheckedChange={(checked) => handleCreateFormChange('mockOpen', checked)}\n />\n <span className=\"text-sm text-gray-600\">\n {createFormData.mockOpen ? '开启' : '关闭'}\n </span>\n </div>\n </div>\n </div>\n \n {/* 重复性检查提示 */}\n {isCreateMode && createFormData.apiPath.trim() && createFormData.siteName.trim() && \n checkMockExists(createFormData.apiPath, createFormData.method, createFormData.siteName) && (\n <div className=\"mt-4 p-3 bg-red-50 border border-red-200 rounded-md\">\n <div className=\"flex items-center\">\n <span className=\"text-red-600 text-sm\">\n ⚠️ 接口 {createFormData.apiPath} [{createFormData.method.toUpperCase()}] 的场景 &quot;{createFormData.siteName}&quot; 已存在\n </span>\n </div>\n </div>\n )}\n \n {/* 新增场景模式的重复性检查提示 */}\n {isAddSceneMode && currentSceneContext && createFormData.siteName.trim() && \n checkSceneExists(currentSceneContext.apiName, currentSceneContext.method, createFormData.siteName) && (\n <div className=\"mt-4 p-3 bg-red-50 border border-red-200 rounded-md\">\n <div className=\"flex items-center\">\n <span className=\"text-red-600 text-sm\">\n ⚠️ 场景 &quot;{createFormData.siteName}&quot; 已存在\n </span>\n </div>\n </div>\n )}\n </div>\n )}\n \n <div className=\"flex-1 flex flex-col space-y-4 py-4\">\n <div className=\"flex-1 flex flex-col\">\n <Label className=\"text-sm font-medium mb-2\">文件内容</Label>\n <div className=\"flex-1 border rounded-md overflow-hidden relative\">\n {editorLoading && (\n <div className=\"absolute inset-0 bg-gray-50 flex items-center justify-center z-10\">\n <p className=\"text-gray-500\">编辑器加载中...</p>\n </div>\n )}\n <Editor\n key={isCreateMode ? 'create' : isAddSceneMode ? 'addscene' : 'edit'} // 添加key确保重新挂载\n height=\"100%\"\n defaultLanguage=\"javascript\"\n value={editingFile?.content || ''}\n onChange={(value) => {\n setEditingFile(prev => prev ? { ...prev, content: value || '' } : null);\n }}\n onMount={async (editor) => {\n console.log('编辑器挂载,模式:', { isCreateMode, isAddSceneMode, createFormData }); // 调试信息\n setEditorInstance(editor);\n setEditorLoading(false);\n // 自动格式化代码\n setTimeout(() => autoFormatCode(editor), 500);\n }}\n loading={<div className=\"flex items-center justify-center h-full\"><p className=\"text-gray-500\">编辑器加载中...</p></div>}\n options={{\n minimap: { enabled: false },\n fontSize: 14,\n lineNumbers: 'on',\n roundedSelection: false,\n scrollBeyondLastLine: false,\n automaticLayout: true,\n tabSize: 2,\n insertSpaces: true,\n wordWrap: 'on',\n theme: 'vs-dark',\n bracketPairColorization: { enabled: true },\n quickSuggestions: {\n other: true,\n comments: true,\n strings: true,\n },\n formatOnPaste: true,\n formatOnType: true,\n readOnly: false, // 编辑器始终可编辑\n }}\n />\n </div>\n </div>\n </div>\n\n <DialogFooter className=\"flex justify-between flex-shrink-0 border-t pt-4\">\n <Button \n variant=\"secondary\" \n onClick={formatCode}\n disabled={!editorInstance || editorLoading}\n >\n 格式化代码\n </Button>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" onClick={() => {\n if (isCreateMode) {\n setIsCreateMode(false);\n setCreateFormData({\n apiPath: '',\n method: 'GET',\n siteName: '默认场景',\n mockOpen: true,\n });\n } else if (isAddSceneMode) {\n setIsAddSceneMode(false);\n setCurrentSceneContext(null);\n setCreateFormData({\n apiPath: '',\n method: 'GET',\n siteName: '默认场景',\n mockOpen: true,\n });\n } else {\n handleCancelEdit();\n }\n }}>\n 取消\n </Button>\n {isCreateMode ? (\n <Button onClick={handleCreateMock} disabled={\n isCreating || \n !createFormData.apiPath.trim() || \n !createFormData.siteName.trim() ||\n checkMockExists(createFormData.apiPath, createFormData.method, createFormData.siteName)\n }>\n {isCreating ? '创建中...' : '创建'}\n </Button>\n ) : isAddSceneMode ? (\n <Button onClick={handleAddSceneSubmit} disabled={\n isCreating || \n !createFormData.siteName.trim() ||\n (currentSceneContext ? checkSceneExists(currentSceneContext.apiName, currentSceneContext.method, createFormData.siteName) : false)\n }>\n {isCreating ? '创建中...' : '创建'}\n </Button>\n ) : (\n <Button onClick={handleSaveFile} disabled={saveLoading}>\n {saveLoading ? '保存中...' : '保存'}\n </Button>\n )}\n </div>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n\n {/* 日志查看对话框 */}\n <Dialog open={showLogsDialog} onOpenChange={(open) => {\n if (!open) {\n handleCloseLogsDialog();\n }\n }}>\n <DialogContent className=\"max-w-5xl h-[85vh] max-h-[85vh] flex flex-col p-0\">\n <DialogHeader className=\"px-6 pt-6 pb-4\">\n <DialogTitle className=\"flex items-center justify-between\">\n <span>进程日志 - {projectName} - {currentLogsEnv}</span>\n <span className=\"flex items-center gap-2 text-sm font-normal\">\n {logEventSource && (\n <span className=\"flex items-center gap-1 text-green-600\">\n <span className=\"w-2 h-2 bg-green-500 rounded-full animate-pulse\" />\n 实时连接\n </span>\n )}\n </span>\n </DialogTitle>\n <DialogDescription>\n 实时显示进程输出日志\n </DialogDescription>\n </DialogHeader>\n \n <div className=\"flex-1 min-h-0 bg-gray-900 mx-6 rounded-md overflow-hidden\">\n <LogViewer logs={processLogs} />\n </div>\n \n <DialogFooter className=\"flex items-center justify-between px-6 pb-6 pt-4\">\n <div className=\"text-sm text-gray-500\">\n 共 {processLogs.length} 条日志\n </div>\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n onClick={handleRefreshLogs}\n disabled={!!logEventSource}\n >\n 重新连接\n </Button>\n <Button variant=\"default\" onClick={handleCloseLogsDialog}>\n 关闭\n </Button>\n </div>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n\n {/* 删除场景确认对话框 */}\n <Dialog open={deleteConfirmDialog.open} onOpenChange={(open) => {\n if (!open) {\n setDeleteConfirmDialog({\n open: false,\n apiName: '',\n method: '',\n siteName: '',\n });\n }\n }}>\n <DialogContent className=\"max-w-md\">\n <DialogHeader>\n <DialogTitle className=\"flex items-center gap-2 text-red-600\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M3 6h18\"></path>\n <path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\"></path>\n <path d=\"M8 6V4c0-1 1-2 2-2h4c0 1 1 2 2 2v2\"></path>\n </svg>\n 确认删除场景\n </DialogTitle>\n <DialogDescription>\n 确定要删除场景 <span className=\"font-medium text-gray-900\">&quot;{deleteConfirmDialog.siteName}&quot;</span> 吗?\n <br />\n <span className=\"text-red-500 text-sm mt-2 block\">此操作不可撤销</span>\n </DialogDescription>\n </DialogHeader>\n \n <DialogFooter className=\"flex gap-2 justify-end\">\n <Button\n variant=\"outline\"\n onClick={() => setDeleteConfirmDialog({\n open: false,\n apiName: '',\n method: '',\n siteName: '',\n })}\n >\n 取消\n </Button>\n <Button\n variant=\"destructive\"\n onClick={confirmDeleteScenario}\n >\n 删除\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n\n {/* 删除接口确认对话框 */}\n <Dialog open={deleteApiDialog.open} onOpenChange={(open) => {\n if (!open) {\n setDeleteApiDialog({\n open: false,\n apiName: '',\n apiPath: '',\n });\n }\n }}>\n <DialogContent className=\"max-w-md\">\n <DialogHeader>\n <DialogTitle className=\"flex items-center gap-2 text-red-600\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M3 6h18\"></path>\n <path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\"></path>\n <path d=\"M8 6V4c0-1 1-2 2-2h4c0 1 1 2 2 2v2\"></path>\n </svg>\n 确认删除接口\n </DialogTitle>\n <DialogDescription>\n 确定要删除整个接口 <span className=\"font-medium text-gray-900\">&quot;{deleteApiDialog.apiPath}&quot;</span> 吗?\n <br />\n <span className=\"text-red-500 text-sm mt-2 block font-medium\">⚠️ 这将删除该接口的所有场景和相关文件,此操作不可撤销</span>\n </DialogDescription>\n </DialogHeader>\n \n <DialogFooter className=\"flex gap-2 justify-end\">\n <Button\n variant=\"outline\"\n onClick={() => setDeleteApiDialog({\n open: false,\n apiName: '',\n apiPath: '',\n })}\n >\n 取消\n </Button>\n <Button\n variant=\"destructive\"\n onClick={confirmDeleteApi}\n >\n 删除整个接口\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n\n {/* 通知组件 */}\n {notification.open && (\n <div className=\"fixed top-4 right-4 z-50 animate-in slide-in-from-top-2 duration-300\">\n <div className={`flex items-center gap-3 px-4 py-3 rounded-lg shadow-lg border max-w-sm ${\n notification.type === 'success' \n ? 'bg-green-50 border-green-200 text-green-800' \n : 'bg-red-50 border-red-200 text-red-800'\n }`}>\n <div className=\"flex-shrink-0\">\n {notification.type === 'success' ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-green-600\"\n >\n <path d=\"M20 6L9 17l-5-5\"></path>\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-red-600\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line>\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line>\n </svg>\n )}\n </div>\n <p className=\"text-sm font-medium\">{notification.message}</p>\n <button\n onClick={() => setNotification({ open: false, type: 'success', message: '' })}\n className=\"flex-shrink-0 ml-auto\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"opacity-60 hover:opacity-100\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n </div>\n )}\n \n </main>\n );\n}\n\n// 主配置页面组件 - 包含 Suspense 边界\nexport default function ConfigurationPage() {\n return (\n <Suspense fallback={\n <div className=\"min-h-screen bg-gray-50 flex items-center justify-center\">\n <div className=\"text-center space-y-4\">\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto\"></div>\n <p className=\"text-gray-600\">正在加载配置页面...</p>\n </div>\n </div>\n }>\n <ConfigurationContent />\n </Suspense>\n );\n} "],"names":["createContext","useContext","createScope","nextScopes","createCollection","createContextScope","jsx","React","useComposedRefs","createSlot","itemData","useLayoutEffect","value","state","isControlled","node","Root","handleAndDispatchPointerDownOutsideEvent","handleFocusIn","handleFocusOut","handleMutations","container","PopperArrow","handleScroll","canScrollUp","canScrollDown","Content","Arrow","loader","memo","useState","useRef","useCallback","useEffect","styles","styles_default","Loading","children","Loading_default","MonacoContainer","width","height","isEditorReady","loading","_ref","className","wrapperProps","MonacoContainer_default","useMount","effect","useMount_default","useUpdate","deps","applyChanges","isInitialMount","useUpdate_default","noop","getOrCreateModel","monaco","language","path","getModel","createModel","createModelUri","DiffEditor","original","modified","originalLanguage","modifiedLanguage","originalModelPath","modifiedModelPath","keepCurrentOriginalModel","keepCurrentModifiedModel","theme","options","beforeMount","onMount","setIsEditorReady","isMonacoMounting","setIsMonacoMounting","editorRef","monacoRef","containerRef","onMountRef","beforeMountRef","preventCreation","cancelable","error","disposeEditor","originalEditor","model","modifiedEditor","setModels","originalModel","modifiedModel","createEditor","models","DiffEditor_default","useMonaco","setMonaco","useMonaco_default","usePrevious","ref","usePrevious_default","viewStates","Editor","defaultValue","defaultLanguage","defaultPath","line","overrideServices","saveViewState","keepCurrentModel","onChange","onValidate","subscriptionRef","valueRef","previousPath","preventTriggerChangeEvent","autoCreatedModelPath","defaultModel","event","changeMarkersListener","uris","editorUri","uri","markers","Editor_default","src_default"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,67,69,72,73,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104]}