@aeolus-fleet/gateway 0.36.1 → 0.36.2

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 (876) hide show
  1. package/dist/adapters/fleet/active-ships.d.ts +8 -0
  2. package/dist/adapters/fleet/active-ships.js +22 -0
  3. package/dist/adapters/fleet/active-ships.js.map +1 -0
  4. package/dist/adapters/fleet/every-listed-ship.d.ts +21 -0
  5. package/dist/adapters/fleet/every-listed-ship.js +28 -0
  6. package/dist/adapters/fleet/every-listed-ship.js.map +1 -0
  7. package/dist/adapters/fleet/fleet-ships.d.ts +1 -3
  8. package/dist/adapters/fleet/fleet-ships.js +5 -22
  9. package/dist/adapters/fleet/fleet-ships.js.map +1 -1
  10. package/dist/adapters/fleet/rest-fleet-door.js +40 -6
  11. package/dist/adapters/fleet/rest-fleet-door.js.map +1 -1
  12. package/dist/adapters/http/party-sign-in-routes.d.ts +7 -0
  13. package/dist/adapters/http/party-sign-in-routes.js +18 -0
  14. package/dist/adapters/http/party-sign-in-routes.js.map +1 -1
  15. package/dist/adapters/http/person-tools.js +3 -2
  16. package/dist/adapters/http/person-tools.js.map +1 -1
  17. package/dist/adapters/http/slack-routes.d.ts +2 -0
  18. package/dist/adapters/http/slack-routes.js +12 -4
  19. package/dist/adapters/http/slack-routes.js.map +1 -1
  20. package/dist/adapters/mcp/mcp-servers.d.ts +8 -2
  21. package/dist/adapters/mcp/mcp-servers.js +8 -4
  22. package/dist/adapters/mcp/mcp-servers.js.map +1 -1
  23. package/dist/adapters/prisma/basket-entries.js +4 -2
  24. package/dist/adapters/prisma/basket-entries.js.map +1 -1
  25. package/dist/adapters/prisma/connected-chats.d.ts +4 -0
  26. package/dist/adapters/prisma/connected-chats.js +21 -0
  27. package/dist/adapters/prisma/connected-chats.js.map +1 -0
  28. package/dist/adapters/prisma/fleet-forgetter.js +1 -1
  29. package/dist/adapters/prisma/fleet-forgetter.js.map +1 -1
  30. package/dist/adapters/prisma/generated/browser.d.ts +6 -1
  31. package/dist/adapters/prisma/generated/client.d.ts +6 -1
  32. package/dist/adapters/prisma/generated/internal/class.d.ts +11 -0
  33. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  34. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  35. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +95 -1
  36. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +19 -1
  37. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  38. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +19 -0
  39. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +19 -1
  40. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  41. package/dist/adapters/prisma/generated/models/BasketEntry.d.ts +114 -18
  42. package/dist/adapters/prisma/generated/models/ItemOutcome.d.ts +91 -1
  43. package/dist/adapters/prisma/generated/models/OpenedDelivery.d.ts +95 -2
  44. package/dist/adapters/prisma/generated/models/Party.d.ts +32 -1
  45. package/dist/adapters/prisma/generated/models/SlackLinkStep.d.ts +1005 -0
  46. package/dist/adapters/prisma/generated/models/SlackLinkStep.js +2 -0
  47. package/dist/adapters/prisma/generated/models/SlackLinkStep.js.map +1 -0
  48. package/dist/adapters/prisma/generated/models.d.ts +1 -0
  49. package/dist/adapters/prisma/item-outcomes.d.ts +6 -1
  50. package/dist/adapters/prisma/item-outcomes.js +19 -3
  51. package/dist/adapters/prisma/item-outcomes.js.map +1 -1
  52. package/dist/adapters/prisma/opened-deliveries.js +5 -0
  53. package/dist/adapters/prisma/opened-deliveries.js.map +1 -1
  54. package/dist/adapters/prisma/party-store.js +4 -1
  55. package/dist/adapters/prisma/party-store.js.map +1 -1
  56. package/dist/adapters/prisma/slack-link-steps.d.ts +8 -0
  57. package/dist/adapters/prisma/slack-link-steps.js +28 -0
  58. package/dist/adapters/prisma/slack-link-steps.js.map +1 -0
  59. package/dist/adapters/prisma/slack-posts.js +4 -3
  60. package/dist/adapters/prisma/slack-posts.js.map +1 -1
  61. package/dist/adapters/slack/slack-messages.d.ts +2 -0
  62. package/dist/adapters/slack/slack-messages.js +124 -18
  63. package/dist/adapters/slack/slack-messages.js.map +1 -1
  64. package/dist/adapters/trpc/router.d.ts +54 -2
  65. package/dist/adapters/trpc/router.js +25 -1
  66. package/dist/adapters/trpc/router.js.map +1 -1
  67. package/dist/app.js +39 -13
  68. package/dist/app.js.map +1 -1
  69. package/dist/core/mcp-out/grant-calls.js +1 -1
  70. package/dist/core/mcp-out/grant-calls.js.map +1 -1
  71. package/dist/core/mcp-out/hand-call.js +1 -1
  72. package/dist/core/mcp-out/hand-call.js.map +1 -1
  73. package/dist/core/mcp-out/keep-server-title.d.ts +13 -0
  74. package/dist/core/mcp-out/keep-server-title.js +14 -0
  75. package/dist/core/mcp-out/keep-server-title.js.map +1 -0
  76. package/dist/core/mcp-out/ports.d.ts +10 -0
  77. package/dist/core/parties/approve-party.js +1 -1
  78. package/dist/core/parties/approve-party.js.map +1 -1
  79. package/dist/core/parties/party.d.ts +2 -0
  80. package/dist/core/parties/party.js.map +1 -1
  81. package/dist/core/parties/ports.d.ts +5 -0
  82. package/dist/core/party-grants/listing-connection.js +2 -2
  83. package/dist/core/party-grants/listing-connection.js.map +1 -1
  84. package/dist/core/party-grants/tell-sign-in-needed.d.ts +2 -0
  85. package/dist/core/party-grants/tell-sign-in-needed.js +16 -4
  86. package/dist/core/party-grants/tell-sign-in-needed.js.map +1 -1
  87. package/dist/core/people/act-in-place.d.ts +42 -0
  88. package/dist/core/people/act-in-place.js +26 -0
  89. package/dist/core/people/act-in-place.js.map +1 -0
  90. package/dist/core/people/answer-delivery.js +13 -1
  91. package/dist/core/people/answer-delivery.js.map +1 -1
  92. package/dist/core/people/basket.d.ts +32 -10
  93. package/dist/core/people/basket.js +24 -6
  94. package/dist/core/people/basket.js.map +1 -1
  95. package/dist/core/people/count-basket.d.ts +4 -3
  96. package/dist/core/people/count-basket.js +9 -3
  97. package/dist/core/people/count-basket.js.map +1 -1
  98. package/dist/core/people/done-delivery.js +1 -1
  99. package/dist/core/people/done-delivery.js.map +1 -1
  100. package/dist/core/people/finish-own-step.js +2 -2
  101. package/dist/core/people/finish-own-step.js.map +1 -1
  102. package/dist/core/people/inbox-entry.d.ts +17 -1
  103. package/dist/core/people/inbox-entry.js +28 -1
  104. package/dist/core/people/inbox-entry.js.map +1 -1
  105. package/dist/core/people/item-job.d.ts +3 -1
  106. package/dist/core/people/item-job.js +5 -1
  107. package/dist/core/people/item-job.js.map +1 -1
  108. package/dist/core/people/item-outcome.d.ts +21 -2
  109. package/dist/core/people/item-outcome.js.map +1 -1
  110. package/dist/core/people/item-places.d.ts +26 -0
  111. package/dist/core/people/item-places.js +12 -0
  112. package/dist/core/people/item-places.js.map +1 -0
  113. package/dist/core/people/open-delivery.d.ts +6 -6
  114. package/dist/core/people/open-delivery.js +13 -10
  115. package/dist/core/people/open-delivery.js.map +1 -1
  116. package/dist/core/people/opened-of.d.ts +5 -1
  117. package/dist/core/people/opened-of.js +5 -1
  118. package/dist/core/people/opened-of.js.map +1 -1
  119. package/dist/core/people/ports.d.ts +40 -3
  120. package/dist/core/people/put-in-basket.d.ts +8 -6
  121. package/dist/core/people/put-in-basket.js +16 -5
  122. package/dist/core/people/put-in-basket.js.map +1 -1
  123. package/dist/core/people/read-basket.d.ts +8 -3
  124. package/dist/core/people/read-basket.js +8 -10
  125. package/dist/core/people/read-basket.js.map +1 -1
  126. package/dist/core/people/read-bridge-home.d.ts +39 -11
  127. package/dist/core/people/read-bridge-home.js +74 -12
  128. package/dist/core/people/read-bridge-home.js.map +1 -1
  129. package/dist/core/people/read-chats.d.ts +21 -0
  130. package/dist/core/people/read-chats.js +20 -0
  131. package/dist/core/people/read-chats.js.map +1 -0
  132. package/dist/core/people/read-inbox.d.ts +19 -9
  133. package/dist/core/people/read-inbox.js +57 -15
  134. package/dist/core/people/read-inbox.js.map +1 -1
  135. package/dist/core/people/read-record.d.ts +37 -11
  136. package/dist/core/people/read-record.js +44 -12
  137. package/dist/core/people/read-record.js.map +1 -1
  138. package/dist/core/people/read-send-to.d.ts +23 -0
  139. package/dist/core/people/read-send-to.js +37 -0
  140. package/dist/core/people/read-send-to.js.map +1 -0
  141. package/dist/core/people/read-your-fleet.d.ts +19 -0
  142. package/dist/core/people/read-your-fleet.js +22 -0
  143. package/dist/core/people/read-your-fleet.js.map +1 -0
  144. package/dist/core/people/remove-from-basket.d.ts +2 -1
  145. package/dist/core/people/remove-from-basket.js +4 -1
  146. package/dist/core/people/remove-from-basket.js.map +1 -1
  147. package/dist/core/people/routing.d.ts +13 -4
  148. package/dist/core/people/routing.js +14 -0
  149. package/dist/core/people/routing.js.map +1 -1
  150. package/dist/core/people/send-basket.d.ts +11 -7
  151. package/dist/core/people/send-basket.js +68 -11
  152. package/dist/core/people/send-basket.js.map +1 -1
  153. package/dist/core/people/send-message.d.ts +3 -1
  154. package/dist/core/people/send-message.js +9 -2
  155. package/dist/core/people/send-message.js.map +1 -1
  156. package/dist/core/people/send-stored-answers.d.ts +4 -3
  157. package/dist/core/people/send-stored-answers.js +62 -12
  158. package/dist/core/people/send-stored-answers.js.map +1 -1
  159. package/dist/core/people/stale-item.d.ts +40 -0
  160. package/dist/core/people/stale-item.js +36 -0
  161. package/dist/core/people/stale-item.js.map +1 -0
  162. package/dist/core/people/wake-person.d.ts +3 -1
  163. package/dist/core/people/wake-person.js +4 -2
  164. package/dist/core/people/wake-person.js.map +1 -1
  165. package/dist/core/people/your-fleet.d.ts +44 -0
  166. package/dist/core/people/your-fleet.js +64 -0
  167. package/dist/core/people/your-fleet.js.map +1 -0
  168. package/dist/core/slack/answer-in-slack.d.ts +15 -9
  169. package/dist/core/slack/answer-in-slack.js +43 -18
  170. package/dist/core/slack/answer-in-slack.js.map +1 -1
  171. package/dist/core/slack/ask-to-link-slack.d.ts +28 -0
  172. package/dist/core/slack/ask-to-link-slack.js +31 -0
  173. package/dist/core/slack/ask-to-link-slack.js.map +1 -0
  174. package/dist/core/slack/complete-link.d.ts +6 -1
  175. package/dist/core/slack/complete-link.js +6 -0
  176. package/dist/core/slack/complete-link.js.map +1 -1
  177. package/dist/core/slack/done-in-slack.d.ts +36 -0
  178. package/dist/core/slack/done-in-slack.js +63 -0
  179. package/dist/core/slack/done-in-slack.js.map +1 -0
  180. package/dist/core/slack/edit-slack-posts.d.ts +7 -5
  181. package/dist/core/slack/edit-slack-posts.js +13 -10
  182. package/dist/core/slack/edit-slack-posts.js.map +1 -1
  183. package/dist/core/slack/edited-post-of.d.ts +19 -0
  184. package/dist/core/slack/edited-post-of.js +77 -0
  185. package/dist/core/slack/edited-post-of.js.map +1 -0
  186. package/dist/core/slack/ports.d.ts +68 -10
  187. package/dist/core/slack/pressed-post-of.d.ts +9 -0
  188. package/dist/core/slack/pressed-post-of.js +18 -0
  189. package/dist/core/slack/pressed-post-of.js.map +1 -0
  190. package/dist/core/slack/read-slack-dropped-out.d.ts +23 -0
  191. package/dist/core/slack/read-slack-dropped-out.js +24 -0
  192. package/dist/core/slack/read-slack-dropped-out.js.map +1 -0
  193. package/dist/core/slack/read-slack-link.d.ts +4 -0
  194. package/dist/core/slack/read-slack-link.js +5 -0
  195. package/dist/core/slack/read-slack-link.js.map +1 -1
  196. package/dist/core/slack/show-in-slack.js +8 -7
  197. package/dist/core/slack/show-in-slack.js.map +1 -1
  198. package/dist/core/slack/slack-post-of.d.ts +24 -12
  199. package/dist/core/slack/slack-post-of.js +118 -37
  200. package/dist/core/slack/slack-post-of.js.map +1 -1
  201. package/dist/core/slack/slack-post.d.ts +13 -1
  202. package/dist/core/slack/slack-post.js +16 -1
  203. package/dist/core/slack/slack-post.js.map +1 -1
  204. package/dist/core/slack/slack-press.d.ts +1 -1
  205. package/dist/core/slack/slack-press.js +2 -1
  206. package/dist/core/slack/slack-press.js.map +1 -1
  207. package/package.json +2 -1
  208. package/src/adapters/prisma/migrations/20261104090000_basket_entries_note_alone/migration.sql +2 -0
  209. package/src/adapters/prisma/migrations/20261105090000_slack_link_steps/migration.sql +10 -0
  210. package/src/adapters/prisma/migrations/20261106090000_opened_deliveries_withdrawn_steps/migration.sql +2 -0
  211. package/src/adapters/prisma/migrations/20261107090000_opened_deliveries_step_link/migration.sql +2 -0
  212. package/src/adapters/prisma/migrations/20261107100000_opened_deliveries_opened_in/migration.sql +2 -0
  213. package/src/adapters/prisma/migrations/20261108090000_item_outcomes_note_and_seen/migration.sql +4 -0
  214. package/src/adapters/prisma/migrations/20261108090000_parties_display_name/migration.sql +2 -0
  215. package/src/adapters/prisma/migrations/20261109090000_basket_entries_option_label/migration.sql +2 -0
  216. package/src/adapters/prisma/migrations/20261109100000_basket_entries_sent/migration.sql +3 -0
  217. package/src/adapters/prisma/migrations/20261110090000_connected_chats_indexes/migration.sql +5 -0
  218. package/src/adapters/prisma/schema.prisma +41 -6
  219. package/web/.next/BUILD_ID +1 -1
  220. package/web/.next/app-path-routes-manifest.json +10 -8
  221. package/web/.next/build-manifest.json +114 -90
  222. package/web/.next/diagnostics/route-bundle-stats.json +264 -206
  223. package/web/.next/fallback-build-manifest.json +3 -3
  224. package/web/.next/prerender-manifest.json +3 -3
  225. package/web/.next/routes-manifest.json +12 -0
  226. package/web/.next/server/app/(bridge)/bridge/basket/page/app-paths-manifest.json +3 -0
  227. package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page/build-manifest.json +4 -4
  228. package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page/next-font-manifest.json +1 -1
  229. package/web/.next/server/app/(bridge)/bridge/basket/page/server-reference-manifest.json +105 -0
  230. package/web/.next/server/app/{(console)/bridge/settings/requests/[requestId] → (bridge)/bridge/basket}/page.js +14 -13
  231. package/web/.next/server/app/(bridge)/bridge/basket/page.js.nft.json +1 -0
  232. package/web/.next/server/app/(bridge)/bridge/basket/page_client-reference-manifest.js +3 -0
  233. package/web/.next/server/app/(bridge)/bridge/changes/route/app-paths-manifest.json +3 -0
  234. package/web/.next/server/app/(bridge)/bridge/changes/route.js +8 -0
  235. package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route.js.nft.json +1 -1
  236. package/web/.next/server/app/(bridge)/bridge/changes/route_client-reference-manifest.js +3 -0
  237. package/web/.next/server/app/(bridge)/bridge/done/page/app-paths-manifest.json +3 -0
  238. package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page/build-manifest.json +4 -4
  239. package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page/next-font-manifest.json +1 -1
  240. package/web/.next/server/app/(bridge)/bridge/done/page/server-reference-manifest.json +25 -0
  241. package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page.js +15 -14
  242. package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page.js.nft.json +1 -1
  243. package/web/.next/server/app/(bridge)/bridge/done/page_client-reference-manifest.js +3 -0
  244. package/web/.next/server/app/(bridge)/bridge/fleet/page/app-paths-manifest.json +3 -0
  245. package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge/fleet}/page/build-manifest.json +4 -4
  246. package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge/fleet}/page/next-font-manifest.json +1 -1
  247. package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge/fleet}/page/server-reference-manifest.json +3 -3
  248. package/web/.next/server/app/(bridge)/bridge/fleet/page.js +24 -0
  249. package/web/.next/server/app/{(console)/bridge/basket → (bridge)/bridge/fleet}/page.js.nft.json +1 -1
  250. package/web/.next/server/app/(bridge)/bridge/fleet/page_client-reference-manifest.js +3 -0
  251. package/web/.next/server/app/(bridge)/bridge/focus/route/app-paths-manifest.json +3 -0
  252. package/web/.next/server/app/(bridge)/bridge/focus/route.js +8 -0
  253. package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route.js.nft.json +1 -1
  254. package/web/.next/server/app/(bridge)/bridge/focus/route_client-reference-manifest.js +3 -0
  255. package/web/.next/server/app/(bridge)/bridge/page/app-paths-manifest.json +3 -0
  256. package/web/.next/server/app/{(console) → (bridge)}/bridge/page/build-manifest.json +4 -4
  257. package/web/.next/server/app/{(console) → (bridge)}/bridge/page/next-font-manifest.json +1 -1
  258. package/web/.next/server/app/(bridge)/bridge/page/server-reference-manifest.json +95 -0
  259. package/web/.next/server/app/{(console) → (bridge)}/bridge/page.js +16 -14
  260. package/web/.next/server/app/{(console) → (bridge)}/bridge/page.js.nft.json +1 -1
  261. package/web/.next/server/app/(bridge)/bridge/page_client-reference-manifest.js +3 -0
  262. package/web/.next/server/app/(bridge)/bridge/settings/page/app-paths-manifest.json +3 -0
  263. package/web/.next/server/app/(bridge)/bridge/settings/page/build-manifest.json +23 -0
  264. package/web/.next/server/app/(bridge)/bridge/settings/page/next-font-manifest.json +11 -0
  265. package/web/.next/server/app/(bridge)/bridge/settings/page/server-reference-manifest.json +15 -0
  266. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/page.js +13 -12
  267. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/page.js.nft.json +1 -1
  268. package/web/.next/server/app/(bridge)/bridge/settings/page_client-reference-manifest.js +3 -0
  269. package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/app-paths-manifest.json +3 -0
  270. package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/build-manifest.json +23 -0
  271. package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page/next-font-manifest.json +11 -0
  272. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/requests/[requestId]/page/server-reference-manifest.json +6 -6
  273. package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page.js +26 -0
  274. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/requests/[requestId]/page.js.nft.json +1 -1
  275. package/web/.next/server/app/(bridge)/bridge/settings/requests/[requestId]/page_client-reference-manifest.js +3 -0
  276. package/web/.next/server/app/(bridge)/bridge/settings/routing/page/app-paths-manifest.json +3 -0
  277. package/web/.next/server/app/(bridge)/bridge/settings/routing/page/build-manifest.json +23 -0
  278. package/web/.next/server/app/(bridge)/bridge/settings/routing/page/next-font-manifest.json +11 -0
  279. package/web/.next/server/app/(bridge)/bridge/settings/routing/page/react-loadable-manifest.json +1 -0
  280. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/routing/page/server-reference-manifest.json +15 -15
  281. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/routing/page.js +15 -14
  282. package/web/.next/server/app/(bridge)/bridge/settings/routing/page.js.map +5 -0
  283. package/web/.next/server/app/{(console) → (bridge)}/bridge/settings/routing/page.js.nft.json +1 -1
  284. package/web/.next/server/app/(bridge)/bridge/settings/routing/page_client-reference-manifest.js +3 -0
  285. package/web/.next/server/app/(bridge)/bridge/stay-aware/page/app-paths-manifest.json +3 -0
  286. package/web/.next/server/app/(bridge)/bridge/stay-aware/page/build-manifest.json +23 -0
  287. package/web/.next/server/app/(bridge)/bridge/stay-aware/page/next-font-manifest.json +11 -0
  288. package/web/.next/server/app/(bridge)/bridge/stay-aware/page/react-loadable-manifest.json +1 -0
  289. package/web/.next/server/app/(bridge)/bridge/stay-aware/page/server-reference-manifest.json +95 -0
  290. package/web/.next/server/app/{(console)/bridge/basket → (bridge)/bridge/stay-aware}/page.js +15 -14
  291. package/web/.next/server/app/(bridge)/bridge/stay-aware/page.js.map +5 -0
  292. package/web/.next/server/app/(bridge)/bridge/stay-aware/page.js.nft.json +1 -0
  293. package/web/.next/server/app/(bridge)/bridge/stay-aware/page_client-reference-manifest.js +3 -0
  294. package/web/.next/server/app/(console)/gateway-off/page/build-manifest.json +4 -4
  295. package/web/.next/server/app/(console)/gateway-off/page/server-reference-manifest.json +1 -1
  296. package/web/.next/server/app/(console)/gateway-off/page.js +2 -2
  297. package/web/.next/server/app/(console)/gateway-off/page.js.nft.json +1 -1
  298. package/web/.next/server/app/(console)/gateway-off/page_client-reference-manifest.js +1 -1
  299. package/web/.next/server/app/(console)/meetings/[meetingId]/page/build-manifest.json +4 -4
  300. package/web/.next/server/app/(console)/meetings/[meetingId]/page/server-reference-manifest.json +3 -3
  301. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js +2 -2
  302. package/web/.next/server/app/(console)/meetings/[meetingId]/page.js.nft.json +1 -1
  303. package/web/.next/server/app/(console)/meetings/[meetingId]/page_client-reference-manifest.js +1 -1
  304. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/build-manifest.json +4 -4
  305. package/web/.next/server/app/(console)/outside-parties/[name]/change/page/server-reference-manifest.json +16 -16
  306. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js +2 -2
  307. package/web/.next/server/app/(console)/outside-parties/[name]/change/page.js.nft.json +1 -1
  308. package/web/.next/server/app/(console)/outside-parties/[name]/change/page_client-reference-manifest.js +1 -1
  309. package/web/.next/server/app/(console)/outside-parties/[name]/page/build-manifest.json +4 -4
  310. package/web/.next/server/app/(console)/outside-parties/[name]/page/server-reference-manifest.json +8 -8
  311. package/web/.next/server/app/(console)/outside-parties/[name]/page.js +2 -2
  312. package/web/.next/server/app/(console)/outside-parties/[name]/page.js.nft.json +1 -1
  313. package/web/.next/server/app/(console)/outside-parties/[name]/page_client-reference-manifest.js +1 -1
  314. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/build-manifest.json +4 -4
  315. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page/server-reference-manifest.json +16 -16
  316. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js +2 -2
  317. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page.js.nft.json +1 -1
  318. package/web/.next/server/app/(console)/outside-parties/[name]/retire/page_client-reference-manifest.js +1 -1
  319. package/web/.next/server/app/(console)/outside-parties/add/page/build-manifest.json +4 -4
  320. package/web/.next/server/app/(console)/outside-parties/add/page/server-reference-manifest.json +10 -10
  321. package/web/.next/server/app/(console)/outside-parties/add/page.js +2 -2
  322. package/web/.next/server/app/(console)/outside-parties/add/page.js.nft.json +1 -1
  323. package/web/.next/server/app/(console)/outside-parties/add/page_client-reference-manifest.js +1 -1
  324. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/build-manifest.json +4 -4
  325. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page/server-reference-manifest.json +2 -2
  326. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js +2 -2
  327. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page.js.nft.json +1 -1
  328. package/web/.next/server/app/(console)/outside-parties/add-a2a-agent/page_client-reference-manifest.js +1 -1
  329. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/build-manifest.json +4 -4
  330. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page/server-reference-manifest.json +2 -2
  331. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js +2 -2
  332. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page.js.nft.json +1 -1
  333. package/web/.next/server/app/(console)/outside-parties/add-a2a-client/page_client-reference-manifest.js +1 -1
  334. package/web/.next/server/app/(console)/outside-parties/page/build-manifest.json +4 -4
  335. package/web/.next/server/app/(console)/outside-parties/page/server-reference-manifest.json +2 -2
  336. package/web/.next/server/app/(console)/outside-parties/page.js +2 -2
  337. package/web/.next/server/app/(console)/outside-parties/page.js.nft.json +1 -1
  338. package/web/.next/server/app/(console)/outside-parties/page_client-reference-manifest.js +1 -1
  339. package/web/.next/server/app/(console)/parties/page/build-manifest.json +4 -4
  340. package/web/.next/server/app/(console)/parties/page/server-reference-manifest.json +7 -7
  341. package/web/.next/server/app/(console)/parties/page.js +2 -2
  342. package/web/.next/server/app/(console)/parties/page.js.nft.json +1 -1
  343. package/web/.next/server/app/(console)/parties/page_client-reference-manifest.js +1 -1
  344. package/web/.next/server/app/(console)/sign-in/failed/page/build-manifest.json +4 -4
  345. package/web/.next/server/app/(console)/sign-in/failed/page/server-reference-manifest.json +1 -1
  346. package/web/.next/server/app/(console)/sign-in/failed/page.js +2 -2
  347. package/web/.next/server/app/(console)/sign-in/failed/page.js.nft.json +1 -1
  348. package/web/.next/server/app/(console)/sign-in/failed/page_client-reference-manifest.js +1 -1
  349. package/web/.next/server/app/(console)/slack/disconnect/page/build-manifest.json +4 -4
  350. package/web/.next/server/app/(console)/slack/disconnect/page/server-reference-manifest.json +10 -10
  351. package/web/.next/server/app/(console)/slack/disconnect/page.js +2 -2
  352. package/web/.next/server/app/(console)/slack/disconnect/page.js.nft.json +1 -1
  353. package/web/.next/server/app/(console)/slack/disconnect/page_client-reference-manifest.js +1 -1
  354. package/web/.next/server/app/(console)/slack/expose/page/build-manifest.json +4 -4
  355. package/web/.next/server/app/(console)/slack/expose/page/server-reference-manifest.json +10 -10
  356. package/web/.next/server/app/(console)/slack/expose/page.js +2 -2
  357. package/web/.next/server/app/(console)/slack/expose/page.js.nft.json +1 -1
  358. package/web/.next/server/app/(console)/slack/expose/page_client-reference-manifest.js +1 -1
  359. package/web/.next/server/app/(console)/slack/link/route.js.nft.json +1 -1
  360. package/web/.next/server/app/(console)/slack/page/build-manifest.json +4 -4
  361. package/web/.next/server/app/(console)/slack/page/server-reference-manifest.json +10 -10
  362. package/web/.next/server/app/(console)/slack/page.js +2 -2
  363. package/web/.next/server/app/(console)/slack/page.js.nft.json +1 -1
  364. package/web/.next/server/app/(console)/slack/page_client-reference-manifest.js +1 -1
  365. package/web/.next/server/app/(console)/slack/remove/page/build-manifest.json +4 -4
  366. package/web/.next/server/app/(console)/slack/remove/page/server-reference-manifest.json +10 -10
  367. package/web/.next/server/app/(console)/slack/remove/page.js +4 -4
  368. package/web/.next/server/app/(console)/slack/remove/page.js.nft.json +1 -1
  369. package/web/.next/server/app/(console)/slack/remove/page_client-reference-manifest.js +1 -1
  370. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  371. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  372. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  373. package/web/.next/server/app/_global-error.html +1 -1
  374. package/web/.next/server/app/_global-error.rsc +1 -1
  375. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  376. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  377. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  378. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  379. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  380. package/web/.next/server/app/_not-found/page.js +2 -2
  381. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  382. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  383. package/web/.next/server/app/apple-icon.png/route.js.nft.json +1 -1
  384. package/web/.next/server/app/authorize/failed/page/build-manifest.json +4 -4
  385. package/web/.next/server/app/authorize/failed/page/server-reference-manifest.json +1 -1
  386. package/web/.next/server/app/authorize/failed/page.js +3 -2
  387. package/web/.next/server/app/authorize/failed/page.js.nft.json +1 -1
  388. package/web/.next/server/app/authorize/failed/page_client-reference-manifest.js +1 -1
  389. package/web/.next/server/app/authorize/pick/page/build-manifest.json +4 -4
  390. package/web/.next/server/app/authorize/pick/page/server-reference-manifest.json +1 -1
  391. package/web/.next/server/app/authorize/pick/page.js +7 -5
  392. package/web/.next/server/app/authorize/pick/page.js.nft.json +1 -1
  393. package/web/.next/server/app/authorize/pick/page_client-reference-manifest.js +1 -1
  394. package/web/.next/server/app/authorize/waiting/approval/page/build-manifest.json +4 -4
  395. package/web/.next/server/app/authorize/waiting/approval/page/server-reference-manifest.json +1 -1
  396. package/web/.next/server/app/authorize/waiting/approval/page.js +3 -2
  397. package/web/.next/server/app/authorize/waiting/approval/page.js.nft.json +1 -1
  398. package/web/.next/server/app/authorize/waiting/approval/page_client-reference-manifest.js +1 -1
  399. package/web/.next/server/app/icon.svg/route.js.nft.json +1 -1
  400. package/web/.next/server/app-paths-manifest.json +10 -8
  401. package/web/.next/server/chunks/0b9d__next-internal_server_app_(bridge)_bridge_changes_route_actions_0wd1c_8tnx6-f.js +3 -0
  402. package/web/.next/server/chunks/[root-of-the-server]__1j0sdz18lzulo._.js +2 -2
  403. package/web/.next/server/chunks/[root-of-the-server]__1o2xxi_001xql._.js +2 -2
  404. package/web/.next/server/chunks/_0up_7s_05-7vm._.js +3 -0
  405. package/web/.next/server/chunks/_0up_7s_05-7vm._.js.map +1 -0
  406. package/web/.next/server/chunks/_0xw0b7avhvg75._.js +1 -1
  407. package/web/.next/server/chunks/_1w2t6c0hpdsrn._.js +1 -1
  408. package/web/.next/server/chunks/_1xaed_q500ez6._.js +3 -0
  409. package/web/.next/server/chunks/_1xaed_q500ez6._.js.map +1 -0
  410. package/web/.next/server/chunks/_20ne4s-e_jzxp._.js +1 -1
  411. package/web/.next/server/chunks/_20ne4s-e_jzxp._.js.map +1 -1
  412. package/web/.next/server/chunks/ssr/01fr_app_(bridge)_bridge_settings_requests_[requestId]_page_actions_0o8g7_xshtmem.js +3 -0
  413. package/web/.next/server/chunks/ssr/01fr_app_(bridge)_bridge_settings_requests_[requestId]_page_actions_0o8g7_xshtmem.js.map +1 -0
  414. package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_stay-aware_page_actions_1u0xo0v3y9c34.js +3 -0
  415. package/web/.next/server/chunks/ssr/0b9d__next-internal_server_app_(bridge)_bridge_stay-aware_page_actions_1u0xo0v3y9c34.js.map +1 -0
  416. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_bridge_settings_routing_page_actions_06_j7s24dy5ee.js +3 -0
  417. package/web/.next/server/chunks/ssr/0vkm_server_app_(bridge)_bridge_settings_routing_page_actions_06_j7s24dy5ee.js.map +1 -0
  418. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js +1 -1
  419. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_change_page_actions_04td11fxohsfm.js.map +1 -1
  420. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js +1 -1
  421. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_page_actions_0u-45itza1ls7.js.map +1 -1
  422. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js +1 -1
  423. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_[name]_retire_page_actions_0s7ps6i0ts7v5.js.map +1 -1
  424. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js +1 -1
  425. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add-a2a-client_page_actions_0d_wgiu94c32e.js.map +1 -1
  426. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js +1 -1
  427. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_outside-parties_add_page_actions_0yfz_dfn-8uo7.js.map +1 -1
  428. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js +1 -1
  429. package/web/.next/server/chunks/ssr/[root-of-the-server]__001xx3sm5ur-e._.js.map +1 -1
  430. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1yyaeeylnezpi._.js → [root-of-the-server]__04_bc8g0oe4jt._.js} +1 -1
  431. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a6a1yc_ac-qt._.js +1 -1
  432. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js +1 -1
  433. package/web/.next/server/chunks/ssr/[root-of-the-server]__0a8db18tyk__5._.js.map +1 -1
  434. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e4l5gt01o04p._.js +3 -0
  435. package/web/.next/server/chunks/ssr/[root-of-the-server]__0e4l5gt01o04p._.js.map +1 -0
  436. package/web/.next/server/chunks/ssr/[root-of-the-server]__0gptrhg3mj4hs._.js +57 -0
  437. package/web/.next/server/chunks/ssr/[root-of-the-server]__0gptrhg3mj4hs._.js.map +1 -0
  438. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js +1 -1
  439. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k3g0p3t9t0c-._.js.map +1 -1
  440. package/web/.next/server/chunks/ssr/[root-of-the-server]__0kjcooo3pi4_k._.js +57 -0
  441. package/web/.next/server/chunks/ssr/[root-of-the-server]__0kjcooo3pi4_k._.js.map +1 -0
  442. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rmg7huc074bf._.js +3 -0
  443. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rmg7huc074bf._.js.map +1 -0
  444. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js +1 -1
  445. package/web/.next/server/chunks/ssr/[root-of-the-server]__10s9e8g5x-ws8._.js.map +1 -1
  446. package/web/.next/server/chunks/ssr/[root-of-the-server]__13v3maun347sn._.js +3 -0
  447. package/web/.next/server/chunks/ssr/[root-of-the-server]__13v3maun347sn._.js.map +1 -0
  448. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js +1 -1
  449. package/web/.next/server/chunks/ssr/[root-of-the-server]__13yoncr_nx3jc._.js.map +1 -1
  450. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0gnfxe62edx95._.js → [root-of-the-server]__179upda-y7uap._.js} +1 -1
  451. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js +1 -1
  452. package/web/.next/server/chunks/ssr/[root-of-the-server]__18-8taiduk1jn._.js.map +1 -1
  453. package/web/.next/server/chunks/ssr/[root-of-the-server]__1hgu6f5hpnykv._.js +57 -0
  454. package/web/.next/server/chunks/ssr/[root-of-the-server]__1hgu6f5hpnykv._.js.map +1 -0
  455. package/web/.next/server/chunks/ssr/[root-of-the-server]__1j6n8jj7-5t6v._.js +3 -0
  456. package/web/.next/server/chunks/ssr/[root-of-the-server]__1j6n8jj7-5t6v._.js.map +1 -0
  457. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js +1 -1
  458. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qpow96uit9t8._.js.map +1 -1
  459. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qtzvez4cn5be._.js +3 -0
  460. package/web/.next/server/chunks/ssr/[root-of-the-server]__1qtzvez4cn5be._.js.map +1 -0
  461. package/web/.next/server/chunks/ssr/[root-of-the-server]__1ul9rrs2g66lm._.js +4 -0
  462. package/web/.next/server/chunks/ssr/[root-of-the-server]__1ul9rrs2g66lm._.js.map +1 -0
  463. package/web/.next/server/chunks/ssr/[root-of-the-server]__20gvfqy33wcds._.js +57 -0
  464. package/web/.next/server/chunks/ssr/[root-of-the-server]__20gvfqy33wcds._.js.map +1 -0
  465. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js +1 -1
  466. package/web/.next/server/chunks/ssr/_00hfzlqn1og18._.js.map +1 -1
  467. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js +2 -2
  468. package/web/.next/server/chunks/ssr/_03lk54yp-yhw3._.js.map +1 -1
  469. package/web/.next/server/chunks/ssr/_0cnpz5jm2_9xf._.js +3 -0
  470. package/web/.next/server/chunks/ssr/_0cnpz5jm2_9xf._.js.map +1 -0
  471. package/web/.next/server/chunks/ssr/_0f7ucdt7bfmun._.js +3 -0
  472. package/web/.next/server/chunks/ssr/_0f7ucdt7bfmun._.js.map +1 -0
  473. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js +1 -1
  474. package/web/.next/server/chunks/ssr/_0ka_9elusb800._.js.map +1 -1
  475. package/web/.next/server/chunks/ssr/_0kk7op86em7z2._.js +3 -0
  476. package/web/.next/server/chunks/ssr/_0kk7op86em7z2._.js.map +1 -0
  477. package/web/.next/server/chunks/ssr/_0oekmfmigr0qv._.js +3 -0
  478. package/web/.next/server/chunks/ssr/_0oekmfmigr0qv._.js.map +1 -0
  479. package/web/.next/server/chunks/ssr/_0pirspvjp3ggl._.js +3 -0
  480. package/web/.next/server/chunks/ssr/_0pirspvjp3ggl._.js.map +1 -0
  481. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js +1 -1
  482. package/web/.next/server/chunks/ssr/_0pyd1_y7w8ngp._.js.map +1 -1
  483. package/web/.next/server/chunks/ssr/_0v_x6k3ztfvx0._.js +3 -0
  484. package/web/.next/server/chunks/ssr/_0v_x6k3ztfvx0._.js.map +1 -0
  485. package/web/.next/server/chunks/ssr/_0vid8-myyy-_4._.js +3 -0
  486. package/web/.next/server/chunks/ssr/_0vid8-myyy-_4._.js.map +1 -0
  487. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js +1 -1
  488. package/web/.next/server/chunks/ssr/_0xickgbbju_9-._.js.map +1 -1
  489. package/web/.next/server/chunks/ssr/_0y5eahpucp8g_._.js +3 -0
  490. package/web/.next/server/chunks/ssr/_0y5eahpucp8g_._.js.map +1 -0
  491. package/web/.next/server/chunks/ssr/_13fbnlwrl24s3._.js +3 -0
  492. package/web/.next/server/chunks/ssr/_13fbnlwrl24s3._.js.map +1 -0
  493. package/web/.next/server/chunks/ssr/_14k1oldo5chf8._.js +3 -0
  494. package/web/.next/server/chunks/ssr/_14k1oldo5chf8._.js.map +1 -0
  495. package/web/.next/server/chunks/ssr/_15whg3fd67b9x._.js +3 -0
  496. package/web/.next/server/chunks/ssr/_15whg3fd67b9x._.js.map +1 -0
  497. package/web/.next/server/chunks/ssr/_17zzluh48wsdb._.js +3 -0
  498. package/web/.next/server/chunks/ssr/_17zzluh48wsdb._.js.map +1 -0
  499. package/web/.next/server/chunks/ssr/_18xv7kh7i655_._.js +3 -0
  500. package/web/.next/server/chunks/ssr/_18xv7kh7i655_._.js.map +1 -0
  501. package/web/.next/server/chunks/ssr/_1_wav28san6dm._.js +1 -1
  502. package/web/.next/server/chunks/ssr/_1_ym4hwge_4r0._.js +3 -0
  503. package/web/.next/server/chunks/ssr/_1_ym4hwge_4r0._.js.map +1 -0
  504. package/web/.next/server/chunks/ssr/_1a9wrl8uw7x-y._.js +3 -0
  505. package/web/.next/server/chunks/ssr/_1a9wrl8uw7x-y._.js.map +1 -0
  506. package/web/.next/server/chunks/ssr/{_1hmjvjuxx92vo._.js → _1airu8wwf7z1b._.js} +2 -2
  507. package/web/.next/server/chunks/ssr/_1airu8wwf7z1b._.js.map +1 -0
  508. package/web/.next/server/chunks/ssr/_1e2o809f0ekry._.js +1 -1
  509. package/web/.next/server/chunks/ssr/{_0a_nsm-ye2r6v._.js → _1gbkqq8ra1nei._.js} +2 -2
  510. package/web/.next/server/chunks/ssr/_1gbkqq8ra1nei._.js.map +1 -0
  511. package/web/.next/server/chunks/ssr/_1i5zdy3tp2ykh._.js +3 -0
  512. package/web/.next/server/chunks/ssr/_1i5zdy3tp2ykh._.js.map +1 -0
  513. package/web/.next/server/chunks/ssr/_1i8ofnr1a5yle._.js +3 -0
  514. package/web/.next/server/chunks/ssr/_1i8ofnr1a5yle._.js.map +1 -0
  515. package/web/.next/server/chunks/ssr/_1iorutn_o9hja._.js +3 -0
  516. package/web/.next/server/chunks/ssr/_1iorutn_o9hja._.js.map +1 -0
  517. package/web/.next/server/chunks/ssr/_1kdx8a0j5cxyl._.js +3 -0
  518. package/web/.next/server/chunks/ssr/_1kdx8a0j5cxyl._.js.map +1 -0
  519. package/web/.next/server/chunks/ssr/_1mg5oon0wpocg._.js +3 -0
  520. package/web/.next/server/chunks/ssr/_1mg5oon0wpocg._.js.map +1 -0
  521. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js +1 -1
  522. package/web/.next/server/chunks/ssr/_1pjtire7rqla0._.js.map +1 -1
  523. package/web/.next/server/chunks/ssr/_1pp0z5srqqqyl._.js +3 -0
  524. package/web/.next/server/chunks/ssr/_1pp0z5srqqqyl._.js.map +1 -0
  525. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js +1 -1
  526. package/web/.next/server/chunks/ssr/_1qbsmlji34yph._.js.map +1 -1
  527. package/web/.next/server/chunks/ssr/_1rfpx4ze-3l8z._.js +3 -0
  528. package/web/.next/server/chunks/ssr/{web_features_0mi9a9pdzkdji._.js.map → _1rfpx4ze-3l8z._.js.map} +1 -1
  529. package/web/.next/server/chunks/ssr/_1t74yvog5g6g2._.js +3 -0
  530. package/web/.next/server/chunks/ssr/_1t74yvog5g6g2._.js.map +1 -0
  531. package/web/.next/server/chunks/ssr/_1ve-ao6odintc._.js +3 -0
  532. package/web/.next/server/chunks/ssr/_1ve-ao6odintc._.js.map +1 -0
  533. package/web/.next/server/chunks/ssr/_1xuikhitica6p._.js +3 -0
  534. package/web/.next/server/chunks/ssr/_1xuikhitica6p._.js.map +1 -0
  535. package/web/.next/server/chunks/ssr/_1zmd3armaxhyu._.js +4 -0
  536. package/web/.next/server/chunks/ssr/_1zmd3armaxhyu._.js.map +1 -0
  537. package/web/.next/server/chunks/ssr/node_modules_0489ke-80obwd._.js +3 -0
  538. package/web/.next/server/chunks/ssr/node_modules_0489ke-80obwd._.js.map +1 -0
  539. package/web/.next/server/chunks/ssr/node_modules_0gpbs01t1c_a4._.js +3 -0
  540. package/web/.next/server/chunks/ssr/node_modules_0gpbs01t1c_a4._.js.map +1 -0
  541. package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js +3 -0
  542. package/web/.next/server/chunks/ssr/node_modules_0ue_35q2cegwf._.js.map +1 -0
  543. package/web/.next/server/chunks/ssr/node_modules_0zgrzr0ui3gi8._.js +3 -0
  544. package/web/.next/server/chunks/ssr/node_modules_0zgrzr0ui3gi8._.js.map +1 -0
  545. package/web/.next/server/chunks/ssr/node_modules_174jf4d4t_bo_._.js +3 -0
  546. package/web/.next/server/chunks/ssr/node_modules_174jf4d4t_bo_._.js.map +1 -0
  547. package/web/.next/server/chunks/ssr/node_modules_1qxtjrbc2-6xd._.js +3 -0
  548. package/web/.next/server/chunks/ssr/node_modules_1qxtjrbc2-6xd._.js.map +1 -0
  549. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js +1 -1
  550. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_0t_cmi-llaq7g._.js.map +1 -1
  551. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_app-switcher_08qq5-uxv7jii.js +3 -0
  552. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_app-switcher_08qq5-uxv7jii.js.map +1 -0
  553. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_class-names_1h5pbm2ucssiq.js +3 -0
  554. package/web/.next/server/chunks/ssr/node_modules_@aeolus-fleet_common_dist_header_class-names_1h5pbm2ucssiq.js.map +1 -0
  555. package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js +1 -1
  556. package/web/.next/server/chunks/ssr/node_modules_@base-ui_0jlwmxa9rk8p_._.js.map +1 -1
  557. package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js +1 -1
  558. package/web/.next/server/chunks/ssr/node_modules_@base-ui_19e_nxxf4a88q._.js.map +1 -1
  559. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1cvjxnw-b3pnv._.js +3 -0
  560. package/web/.next/server/chunks/ssr/{node_modules_@base-ui_react_1lbvjrzg8s2ox._.js.map → node_modules_@base-ui_react_1cvjxnw-b3pnv._.js.map} +1 -1
  561. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_toast_index_parts_mjs_20gwon7142aop._.js +3 -0
  562. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_toast_index_parts_mjs_20gwon7142aop._.js.map +1 -0
  563. package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_bell_mjs_1sxms6d0wfxa2._.js +3 -0
  564. package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_bell_mjs_1sxms6d0wfxa2._.js.map +1 -0
  565. package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_search_mjs_047mxu6_po4kl._.js +3 -0
  566. package/web/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_search_mjs_047mxu6_po4kl._.js.map +1 -0
  567. package/web/.next/server/chunks/ssr/node_modules_next_08hq6z46rczo0._.js +2 -2
  568. package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +2 -2
  569. package/web/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js.map +1 -1
  570. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0g15rgn4n-oiz.js +3 -0
  571. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0g15rgn4n-oiz.js.map +1 -0
  572. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0hzwtyh-646p2.js +3 -0
  573. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0hzwtyh-646p2.js.map +1 -0
  574. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mm8dt8tws1fz.js +3 -0
  575. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mm8dt8tws1fz.js.map +1 -0
  576. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tcy7phl8a4gj.js +3 -0
  577. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tcy7phl8a4gj.js.map +1 -0
  578. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ynno0usi0bwx.js +1 -1
  579. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11x159_oszki3.js +3 -0
  580. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11x159_oszki3.js.map +1 -0
  581. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js +1 -1
  582. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_128zox167vtjm.js.map +1 -1
  583. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dltrn6ii5dd6.js +3 -0
  584. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dltrn6ii5dd6.js.map +1 -0
  585. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1hm1iu016c1fy.js +3 -0
  586. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1hm1iu016c1fy.js.map +1 -0
  587. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1zaoeyy4_vir_.js +3 -0
  588. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1zaoeyy4_vir_.js.map +1 -0
  589. package/web/.next/server/chunks/ssr/web_0_peudz6-o69m._.js +3 -0
  590. package/web/.next/server/chunks/ssr/web_0_peudz6-o69m._.js.map +1 -0
  591. package/web/.next/server/chunks/ssr/web_0cxcy088wnfmw._.js +3 -0
  592. package/web/.next/server/chunks/ssr/web_0cxcy088wnfmw._.js.map +1 -0
  593. package/web/.next/server/chunks/ssr/web_0oz8bypfxh82g._.js +3 -0
  594. package/web/.next/server/chunks/ssr/web_0oz8bypfxh82g._.js.map +1 -0
  595. package/web/.next/server/chunks/ssr/web_0pk41f5m34jvi._.js +3 -0
  596. package/web/.next/server/chunks/ssr/web_0pk41f5m34jvi._.js.map +1 -0
  597. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js +1 -1
  598. package/web/.next/server/chunks/ssr/web_0wys4l6za8umr._.js.map +1 -1
  599. package/web/.next/server/chunks/ssr/web_1fi1x3y7rg7mf._.js +3 -0
  600. package/web/.next/server/chunks/ssr/web_1fi1x3y7rg7mf._.js.map +1 -0
  601. package/web/.next/server/chunks/ssr/web_1irsulms62lzf._.js +3 -0
  602. package/web/.next/server/chunks/ssr/web_1irsulms62lzf._.js.map +1 -0
  603. package/web/.next/server/chunks/ssr/web_1k2rrq-kr6f9k._.js +3 -0
  604. package/web/.next/server/chunks/ssr/web_1k2rrq-kr6f9k._.js.map +1 -0
  605. package/web/.next/server/chunks/ssr/web_1qvxzqmq4aw94._.js +3 -0
  606. package/web/.next/server/chunks/ssr/web_1qvxzqmq4aw94._.js.map +1 -0
  607. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_basket_page_actions_0g7q_rc5nma1e.js +3 -0
  608. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_basket_page_actions_0g7q_rc5nma1e.js.map +1 -0
  609. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_done_page_actions_0kjm34arntdzv.js +3 -0
  610. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_done_page_actions_0kjm34arntdzv.js.map +1 -0
  611. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_page_actions_1ok64rg3edm_u.js +3 -0
  612. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(bridge)_bridge_page_actions_1ok64rg3edm_u.js.map +1 -0
  613. package/web/.next/server/chunks/ssr/{web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js → web_app_(bridge)_bridge_error_tsx_0-142o0iqsh3j._.js} +2 -2
  614. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_error_tsx_0-142o0iqsh3j._.js.map +1 -0
  615. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_error_tsx_1m86qyp1bl9pi._.js +3 -0
  616. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_error_tsx_1m86qyp1bl9pi._.js.map +1 -0
  617. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_fleet_page_tsx_0uvtx8hiy8g0n._.js +3 -0
  618. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_fleet_page_tsx_0uvtx8hiy8g0n._.js.map +1 -0
  619. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_settings_page_tsx_1z5yr8ss25q7n._.js +3 -0
  620. package/web/.next/server/chunks/ssr/web_app_(bridge)_bridge_settings_page_tsx_1z5yr8ss25q7n._.js.map +1 -0
  621. package/web/.next/server/chunks/ssr/{web_features_0f6r-m-dq36vf._.js → web_features_025l9l6m2zkya._.js} +2 -2
  622. package/web/.next/server/chunks/ssr/{web_features_0f6r-m-dq36vf._.js.map → web_features_025l9l6m2zkya._.js.map} +1 -1
  623. package/web/.next/server/chunks/ssr/web_features_05aos-xwnl3m_._.js +3 -0
  624. package/web/.next/server/chunks/ssr/web_features_05aos-xwnl3m_._.js.map +1 -0
  625. package/web/.next/server/chunks/ssr/web_features_0bwqcs9wjf4y8._.js +3 -0
  626. package/web/.next/server/chunks/ssr/web_features_0bwqcs9wjf4y8._.js.map +1 -0
  627. package/web/.next/server/chunks/ssr/{web_features_0d48z2epb6oie._.js → web_features_0f2pobf_t4wjt._.js} +2 -2
  628. package/web/.next/server/chunks/ssr/{web_features_0d48z2epb6oie._.js.map → web_features_0f2pobf_t4wjt._.js.map} +1 -1
  629. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js +1 -1
  630. package/web/.next/server/chunks/ssr/web_features_add-a2a-agent_ui_a2a-agent-form_tsx_0z8t1aalwzyl7._.js.map +1 -1
  631. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js +1 -1
  632. package/web/.next/server/chunks/ssr/web_features_add-a2a-client_ui_a2a-client-form_tsx_1anv88g385nwe._.js.map +1 -1
  633. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js +1 -1
  634. package/web/.next/server/chunks/ssr/web_features_add-server_ui_add-server_tsx_1jnmar5xju49k._.js.map +1 -1
  635. package/web/.next/server/chunks/ssr/web_features_bridge_0w95y19yk5w14._.js +3 -0
  636. package/web/.next/server/chunks/ssr/web_features_bridge_0w95y19yk5w14._.js.map +1 -0
  637. package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js +1 -1
  638. package/web/.next/server/chunks/ssr/web_features_bridge_1mi9qlb-z5iwt._.js.map +1 -1
  639. package/web/.next/server/chunks/ssr/web_features_bridge_fleet_ui_fleet-numbers_tsx_0_afv4j248_w-._.js +3 -0
  640. package/web/.next/server/chunks/ssr/web_features_bridge_fleet_ui_fleet-numbers_tsx_0_afv4j248_w-._.js.map +1 -0
  641. package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js +1 -1
  642. package/web/.next/server/chunks/ssr/web_features_bridge_hooks_bridge-actions_ts_0h-_xm2rcb-ij._.js.map +1 -1
  643. package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js +1 -1
  644. package/web/.next/server/chunks/ssr/web_features_bridge_state_basket-panel_tsx_1qi_kzld0rfgs._.js.map +1 -1
  645. package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js +1 -1
  646. package/web/.next/server/chunks/ssr/web_features_bridge_state_decision-panel_tsx_1mzsixgc8zuxc._.js.map +1 -1
  647. package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js +1 -1
  648. package/web/.next/server/chunks/ssr/web_features_bridge_state_done-panel_tsx_1m844-qb1z9p_._.js.map +1 -1
  649. package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js +1 -1
  650. package/web/.next/server/chunks/ssr/web_features_bridge_state_home-panel_tsx_1cc5zdhxogl_2._.js.map +1 -1
  651. package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js +1 -1
  652. package/web/.next/server/chunks/ssr/web_features_bridge_ui_1y4g3fe75nqn5._.js.map +1 -1
  653. package/web/.next/server/chunks/ssr/web_features_bridge_ui_item-row_tsx_0c_a8wjzwsr7j._.js +3 -0
  654. package/web/.next/server/chunks/ssr/web_features_bridge_ui_item-row_tsx_0c_a8wjzwsr7j._.js.map +1 -0
  655. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js +1 -1
  656. package/web/.next/server/chunks/ssr/web_features_frame_0pe8cwpxe1egb._.js.map +1 -1
  657. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js +1 -1
  658. package/web/.next/server/chunks/ssr/web_features_frame_ui_gateway-header_tsx_0e9tekx4jf7ng._.js.map +1 -1
  659. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js +1 -1
  660. package/web/.next/server/chunks/ssr/web_features_meeting_state_meeting-controls_tsx_12g4kzk2mbvvz._.js.map +1 -1
  661. package/web/.next/server/chunks/ssr/web_features_outside-parties_paths_ts_0vbj9elyqekpp._.js +3 -0
  662. package/web/.next/server/chunks/ssr/web_features_outside-parties_paths_ts_0vbj9elyqekpp._.js.map +1 -0
  663. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js +1 -1
  664. package/web/.next/server/chunks/ssr/web_features_outside-parties_ui_switch-card_tsx_1_xnu9bm4tc-_._.js.map +1 -1
  665. package/web/.next/server/chunks/ssr/web_features_outside-party_actions_ts_102ar5pdowf8s._.js +1 -1
  666. package/web/.next/server/chunks/ssr/web_features_parties_actions_ts_0r-tbfsig2ty-._.js +1 -1
  667. package/web/.next/server/chunks/ssr/web_features_slack_actions_ts_1l3yg9vl20_vu._.js +1 -1
  668. package/web/.next/server/chunks/web__next-internal_server_app_(bridge)_bridge_focus_route_actions_0fx2vmqfq23mq.js +3 -0
  669. package/web/.next/server/middleware-build-manifest.js +114 -90
  670. package/web/.next/server/next-font-manifest.js +1 -1
  671. package/web/.next/server/next-font-manifest.json +14 -6
  672. package/web/.next/server/pages/500.html +1 -1
  673. package/web/.next/server/preview-props.json +3 -3
  674. package/web/.next/server/server-reference-manifest.js +1 -1
  675. package/web/.next/server/server-reference-manifest.json +165 -103
  676. package/web/.next/static/chunks/{2z2auwx1s2mgl.js → 0k33n07zesv12.js} +1 -1
  677. package/web/.next/static/chunks/0ozz8jadgfdrx.js +1 -0
  678. package/web/.next/static/chunks/{1166rxt6h6ilq.js → 1c8q9h-van9r6.js} +1 -1
  679. package/web/.next/static/chunks/1nzfw6ajt5nf9.js +55 -0
  680. package/web/.next/static/chunks/1uhmdmkn5gsk2.js +1 -0
  681. package/web/.next/static/chunks/1v36iovy1f5cj.js +1 -0
  682. package/web/.next/static/chunks/1vhvy8bx4fxur.js +1 -0
  683. package/web/.next/static/chunks/1vhx_nu9nxo1v.js +1 -0
  684. package/web/.next/static/chunks/{3db90zxmny2y-.js → 23vvtbj-zoa_f.js} +1 -1
  685. package/web/.next/static/chunks/24vn5i6ojvl8l.js +1 -0
  686. package/web/.next/static/chunks/2dgbb29jkr_tu.js +1 -0
  687. package/web/.next/static/chunks/2ewacyhp73due.js +1 -0
  688. package/web/.next/static/chunks/2fimf0wcjnmpj.js +1 -0
  689. package/web/.next/static/chunks/2fk9ydkphmyna.js +1 -0
  690. package/web/.next/static/chunks/2l6hafvocw-rd.js +1 -0
  691. package/web/.next/static/chunks/2ld8_nap7g_uy.js +1 -0
  692. package/web/.next/static/chunks/2mpwg-t6pat39.js +1 -0
  693. package/web/.next/static/chunks/2pvcbql986wln.js +1 -0
  694. package/web/.next/static/chunks/2s1efgj6gxjgl.js +1 -0
  695. package/web/.next/static/chunks/2zlx-c_0x38uo.css +3 -0
  696. package/web/.next/static/chunks/34u_331hqync_.js +1 -0
  697. package/web/.next/static/chunks/39tst46ewpx_k.js +1 -0
  698. package/web/.next/static/chunks/{3x0p-z3zdrk_b.js → 3_bb0g4jkqn8q.js} +1 -1
  699. package/web/.next/static/chunks/3d5z1i-6yksxd.js +1 -0
  700. package/web/.next/static/chunks/3jq9vu8tr29j2.js +1 -0
  701. package/web/.next/static/chunks/3kenmp9pjwgf2.js +1 -0
  702. package/web/.next/static/chunks/3knqujtrdi225.js +1 -0
  703. package/web/.next/static/chunks/{0lzisjsmhlhjf.js → 3zhaqdsq15d1e.js} +1 -1
  704. package/web/.next/trace +1 -1
  705. package/web/.next/trace-build +1 -1
  706. package/web/.next/types/routes.d.ts +3 -1
  707. package/web/.next/types/validator.ts +50 -16
  708. package/dist/core/people/stale-question.d.ts +0 -28
  709. package/dist/core/people/stale-question.js +0 -26
  710. package/dist/core/people/stale-question.js.map +0 -1
  711. package/web/.next/server/app/(console)/bridge/basket/page/app-paths-manifest.json +0 -3
  712. package/web/.next/server/app/(console)/bridge/basket/page/server-reference-manifest.json +0 -75
  713. package/web/.next/server/app/(console)/bridge/basket/page_client-reference-manifest.js +0 -3
  714. package/web/.next/server/app/(console)/bridge/changes/route/app-paths-manifest.json +0 -3
  715. package/web/.next/server/app/(console)/bridge/changes/route.js +0 -8
  716. package/web/.next/server/app/(console)/bridge/changes/route_client-reference-manifest.js +0 -3
  717. package/web/.next/server/app/(console)/bridge/done/page/app-paths-manifest.json +0 -3
  718. package/web/.next/server/app/(console)/bridge/done/page/server-reference-manifest.json +0 -75
  719. package/web/.next/server/app/(console)/bridge/done/page_client-reference-manifest.js +0 -3
  720. package/web/.next/server/app/(console)/bridge/focus/route/app-paths-manifest.json +0 -3
  721. package/web/.next/server/app/(console)/bridge/focus/route.js +0 -8
  722. package/web/.next/server/app/(console)/bridge/focus/route_client-reference-manifest.js +0 -3
  723. package/web/.next/server/app/(console)/bridge/page/app-paths-manifest.json +0 -3
  724. package/web/.next/server/app/(console)/bridge/page/server-reference-manifest.json +0 -65
  725. package/web/.next/server/app/(console)/bridge/page_client-reference-manifest.js +0 -3
  726. package/web/.next/server/app/(console)/bridge/settings/page/app-paths-manifest.json +0 -3
  727. package/web/.next/server/app/(console)/bridge/settings/page_client-reference-manifest.js +0 -3
  728. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/app-paths-manifest.json +0 -3
  729. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/build-manifest.json +0 -23
  730. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page/next-font-manifest.json +0 -11
  731. package/web/.next/server/app/(console)/bridge/settings/requests/[requestId]/page_client-reference-manifest.js +0 -3
  732. package/web/.next/server/app/(console)/bridge/settings/routing/page/app-paths-manifest.json +0 -3
  733. package/web/.next/server/app/(console)/bridge/settings/routing/page/build-manifest.json +0 -23
  734. package/web/.next/server/app/(console)/bridge/settings/routing/page/next-font-manifest.json +0 -11
  735. package/web/.next/server/app/(console)/bridge/settings/routing/page_client-reference-manifest.js +0 -3
  736. package/web/.next/server/chunks/0b9d__next-internal_server_app_(console)_bridge_changes_route_actions_0hj8aqohz6bu6.js +0 -3
  737. package/web/.next/server/chunks/_05qgg3__4kdbm._.js +0 -3
  738. package/web/.next/server/chunks/_05qgg3__4kdbm._.js.map +0 -1
  739. package/web/.next/server/chunks/_1uap5tql2vvsb._.js +0 -3
  740. package/web/.next/server/chunks/_1uap5tql2vvsb._.js.map +0 -1
  741. package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js +0 -3
  742. package/web/.next/server/chunks/ssr/01fr_app_(console)_bridge_settings_requests_[requestId]_page_actions_1au-p5lgnv5e-.js.map +0 -1
  743. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js +0 -3
  744. package/web/.next/server/chunks/ssr/0vkm_server_app_(console)_bridge_settings_routing_page_actions_136lm_jip4d_x.js.map +0 -1
  745. package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js +0 -3
  746. package/web/.next/server/chunks/ssr/[root-of-the-server]__00jy4lqrcvxvc._.js.map +0 -1
  747. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js +0 -3
  748. package/web/.next/server/chunks/ssr/[root-of-the-server]__0k-5_al3xk509._.js.map +0 -1
  749. package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js +0 -4
  750. package/web/.next/server/chunks/ssr/[root-of-the-server]__18v7b5ga58a9n._.js.map +0 -1
  751. package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js +0 -3
  752. package/web/.next/server/chunks/ssr/[root-of-the-server]__1nxy_j9eswr3i._.js.map +0 -1
  753. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js +0 -3
  754. package/web/.next/server/chunks/ssr/[root-of-the-server]__1rf344o33bmi4._.js.map +0 -1
  755. package/web/.next/server/chunks/ssr/_0a_nsm-ye2r6v._.js.map +0 -1
  756. package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js +0 -3
  757. package/web/.next/server/chunks/ssr/_0h-ua-y4p4u1p._.js.map +0 -1
  758. package/web/.next/server/chunks/ssr/_10-gn6g9yc63s._.js +0 -3
  759. package/web/.next/server/chunks/ssr/_10-gn6g9yc63s._.js.map +0 -1
  760. package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js +0 -3
  761. package/web/.next/server/chunks/ssr/_12fsn_33ga-n0._.js.map +0 -1
  762. package/web/.next/server/chunks/ssr/_177fdczus39s7._.js +0 -3
  763. package/web/.next/server/chunks/ssr/_177fdczus39s7._.js.map +0 -1
  764. package/web/.next/server/chunks/ssr/_1hmjvjuxx92vo._.js.map +0 -1
  765. package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js +0 -3
  766. package/web/.next/server/chunks/ssr/_1jx41z6kmxtt0._.js.map +0 -1
  767. package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js +0 -3
  768. package/web/.next/server/chunks/ssr/_1q2s-hb67yjfb._.js.map +0 -1
  769. package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js +0 -3
  770. package/web/.next/server/chunks/ssr/_1yi3j4a16uet-._.js.map +0 -1
  771. package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js +0 -3
  772. package/web/.next/server/chunks/ssr/node_modules_01oyodz1bs245._.js.map +0 -1
  773. package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js +0 -3
  774. package/web/.next/server/chunks/ssr/node_modules_16d4um5s513wz._.js.map +0 -1
  775. package/web/.next/server/chunks/ssr/node_modules_@base-ui_react_1lbvjrzg8s2ox._.js +0 -3
  776. package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js +0 -3
  777. package/web/.next/server/chunks/ssr/node_modules_next_dist_0hkpfqt9ne626._.js.map +0 -1
  778. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js +0 -3
  779. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031g89sb4kgzn.js.map +0 -1
  780. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js +0 -3
  781. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09rviehv6rh0n.js.map +0 -1
  782. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js +0 -3
  783. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ka8v6_fxug8r.js.map +0 -1
  784. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js +0 -3
  785. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1c8zekuy1gkch.js.map +0 -1
  786. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js +0 -3
  787. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dhzng2nnu0m7.js.map +0 -1
  788. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js +0 -3
  789. package/web/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1rya2ag3z4vug.js.map +0 -1
  790. package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js +0 -3
  791. package/web/.next/server/chunks/ssr/web_0i_1uraygw2ld._.js.map +0 -1
  792. package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js +0 -3
  793. package/web/.next/server/chunks/ssr/web_0wz4onhfbq359._.js.map +0 -1
  794. package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js +0 -3
  795. package/web/.next/server/chunks/ssr/web_1-hlf1xzemd3-._.js.map +0 -1
  796. package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js +0 -3
  797. package/web/.next/server/chunks/ssr/web_107a79_nx4jdd._.js.map +0 -1
  798. package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js +0 -3
  799. package/web/.next/server/chunks/ssr/web_127_b93avkwaq._.js.map +0 -1
  800. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js +0 -3
  801. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_basket_page_actions_102xk3g8eko_q.js.map +0 -1
  802. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js +0 -3
  803. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_done_page_actions_0mm90xd2feta2.js.map +0 -1
  804. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js +0 -3
  805. package/web/.next/server/chunks/ssr/web__next-internal_server_app_(console)_bridge_page_actions_082880qz6xa5k.js.map +0 -1
  806. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js +0 -3
  807. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_0ty_yk1robyaj._.js.map +0 -1
  808. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_error_tsx_10gkrn3ey8162._.js.map +0 -1
  809. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js +0 -3
  810. package/web/.next/server/chunks/ssr/web_app_(console)_bridge_settings_page_tsx_0xzphp7k9ge1u._.js.map +0 -1
  811. package/web/.next/server/chunks/ssr/web_features_0mi9a9pdzkdji._.js +0 -3
  812. package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js +0 -3
  813. package/web/.next/server/chunks/ssr/web_features_0s8erick0xk77._.js.map +0 -1
  814. package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js +0 -3
  815. package/web/.next/server/chunks/ssr/web_features_0wuo5bgp5tabn._.js.map +0 -1
  816. package/web/.next/server/chunks/ssr/web_features_16cy3vmcijydk._.js +0 -3
  817. package/web/.next/server/chunks/ssr/web_features_16cy3vmcijydk._.js.map +0 -1
  818. package/web/.next/server/chunks/ssr/web_features_1iiqi6dhrst33._.js +0 -3
  819. package/web/.next/server/chunks/ssr/web_features_1iiqi6dhrst33._.js.map +0 -1
  820. package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js +0 -3
  821. package/web/.next/server/chunks/ssr/web_features_1n1hy3nwha2vi._.js.map +0 -1
  822. package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js +0 -3
  823. package/web/.next/server/chunks/ssr/web_features_bridge_0-mhu0jaig2u3._.js.map +0 -1
  824. package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js +0 -3
  825. package/web/.next/server/chunks/ssr/web_features_bridge_0219fbfmsi68-._.js.map +0 -1
  826. package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js +0 -3
  827. package/web/.next/server/chunks/ssr/web_features_bridge_11jndonu4o8fq._.js.map +0 -1
  828. package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js +0 -3
  829. package/web/.next/server/chunks/ssr/web_features_bridge_state_0354e3wb0dzx1._.js.map +0 -1
  830. package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js +0 -3
  831. package/web/.next/server/chunks/ssr/web_features_bridge_state_live-refresh_tsx_1c1xk-oe0kllv._.js.map +0 -1
  832. package/web/.next/server/chunks/web__next-internal_server_app_(console)_bridge_focus_route_actions_0syd_u8mgzdmi.js +0 -3
  833. package/web/.next/static/chunks/0az9upwm-8_q9.js +0 -1
  834. package/web/.next/static/chunks/0c1tqlbsvq1dj.js +0 -1
  835. package/web/.next/static/chunks/0fh11dkddwf_2.js +0 -1
  836. package/web/.next/static/chunks/0gbozvd_yh421.js +0 -1
  837. package/web/.next/static/chunks/0l9_oie6xi0kd.js +0 -1
  838. package/web/.next/static/chunks/0m512dxdcrv-b.js +0 -1
  839. package/web/.next/static/chunks/0zbcy0_3jemrv.js +0 -1
  840. package/web/.next/static/chunks/1485slb5zus5p.js +0 -1
  841. package/web/.next/static/chunks/180aowme095ds.js +0 -1
  842. package/web/.next/static/chunks/24olc0btcvn7q.js +0 -1
  843. package/web/.next/static/chunks/296w-74ry5lzk.js +0 -1
  844. package/web/.next/static/chunks/2gghdkr64z9f9.js +0 -1
  845. package/web/.next/static/chunks/2hoi73vy1wqpo.js +0 -1
  846. package/web/.next/static/chunks/2mtfca4qk_s34.js +0 -1
  847. package/web/.next/static/chunks/397zvdr6xr5pq.js +0 -1
  848. package/web/.next/static/chunks/3ow9h8hreko-p.css +0 -3
  849. package/web/.next/static/chunks/3pd8pele5x1o9.js +0 -1
  850. package/web/.next/static/chunks/3srfjz42u14tx.js +0 -1
  851. package/web/.next/static/chunks/3yq9jt4p_0uid.js +0 -1
  852. /package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page/react-loadable-manifest.json +0 -0
  853. /package/web/.next/server/app/{(console) → (bridge)}/bridge/basket/page.js.map +0 -0
  854. /package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route/build-manifest.json +0 -0
  855. /package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route/server-reference-manifest.json +0 -0
  856. /package/web/.next/server/app/{(console) → (bridge)}/bridge/changes/route.js.map +0 -0
  857. /package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page/react-loadable-manifest.json +0 -0
  858. /package/web/.next/server/app/{(console) → (bridge)}/bridge/done/page.js.map +0 -0
  859. /package/web/.next/server/app/{(console)/bridge → (bridge)/bridge/fleet}/page/react-loadable-manifest.json +0 -0
  860. /package/web/.next/server/app/{(console)/bridge → (bridge)/bridge/fleet}/page.js.map +0 -0
  861. /package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route/build-manifest.json +0 -0
  862. /package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route/server-reference-manifest.json +0 -0
  863. /package/web/.next/server/app/{(console) → (bridge)}/bridge/focus/route.js.map +0 -0
  864. /package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge}/page/react-loadable-manifest.json +0 -0
  865. /package/web/.next/server/app/{(console)/bridge/settings → (bridge)/bridge}/page.js.map +0 -0
  866. /package/web/.next/server/app/{(console)/bridge/settings/requests/[requestId] → (bridge)/bridge/settings}/page/react-loadable-manifest.json +0 -0
  867. /package/web/.next/server/app/{(console)/bridge/settings/requests/[requestId] → (bridge)/bridge/settings}/page.js.map +0 -0
  868. /package/web/.next/server/app/{(console)/bridge/settings/routing → (bridge)/bridge/settings/requests/[requestId]}/page/react-loadable-manifest.json +0 -0
  869. /package/web/.next/server/app/{(console)/bridge/settings/routing → (bridge)/bridge/settings/requests/[requestId]}/page.js.map +0 -0
  870. /package/web/.next/server/chunks/{0b9d__next-internal_server_app_(console)_bridge_changes_route_actions_0hj8aqohz6bu6.js.map → 0b9d__next-internal_server_app_(bridge)_bridge_changes_route_actions_0wd1c_8tnx6-f.js.map} +0 -0
  871. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__1yyaeeylnezpi._.js.map → [root-of-the-server]__04_bc8g0oe4jt._.js.map} +0 -0
  872. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__0gnfxe62edx95._.js.map → [root-of-the-server]__179upda-y7uap._.js.map} +0 -0
  873. /package/web/.next/server/chunks/{web__next-internal_server_app_(console)_bridge_focus_route_actions_0syd_u8mgzdmi.js.map → web__next-internal_server_app_(bridge)_bridge_focus_route_actions_0fx2vmqfq23mq.js.map} +0 -0
  874. /package/web/.next/static/{CMppMkysNciqc8k4TWwia → 2O8_FQX7YN47L5_OxojXH}/_buildManifest.js +0 -0
  875. /package/web/.next/static/{CMppMkysNciqc8k4TWwia → 2O8_FQX7YN47L5_OxojXH}/_clientMiddlewareManifest.js +0 -0
  876. /package/web/.next/static/{CMppMkysNciqc8k4TWwia → 2O8_FQX7YN47L5_OxojXH}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../node_modules/%40base-ui/react/toast/provider/ToastProvider.mjs","../../../../../node_modules/%40base-ui/react/toast/provider/ToastProviderContext.mjs","../../../../../node_modules/%40base-ui/react/toast/store.mjs","../../../../../node_modules/%40base-ui/utils/generateId.mjs","../../../../../node_modules/%40base-ui/react/toast/utils/resolvePromiseOptions.mjs","../../../../../node_modules/%40base-ui/react/toast/viewport/ToastViewport.mjs","../../../../../node_modules/%40base-ui/react/toast/viewport/ToastViewportCssVars.mjs","../../../../../node_modules/%40base-ui/react/toast/root/ToastRoot.mjs","../../../../../node_modules/%40base-ui/react/toast/root/ToastRootContext.mjs","../../../../../node_modules/%40base-ui/utils/clamp.mjs","../../../../../node_modules/%40base-ui/react/utils/useSwipeDismiss.mjs","../../../../../node_modules/%40base-ui/react/utils/getElementAtPoint.mjs","../../../../../node_modules/%40base-ui/react/utils/getElementTransform.mjs","../../../../../node_modules/%40base-ui/react/toast/root/ToastRootCssVars.mjs","../../../../../node_modules/%40base-ui/react/toast/root/ToastRootDataAttributes.mjs","../../../../../node_modules/%40base-ui/react/toast/content/ToastContent.mjs","../../../../../node_modules/%40base-ui/react/toast/utils/useToastLabelPart.mjs","../../../../../node_modules/%40base-ui/react/toast/utils/isRenderableNode.mjs","../../../../../node_modules/%40base-ui/react/toast/title/ToastTitle.mjs","../../../../../node_modules/%40base-ui/react/toast/close/ToastClose.mjs","../../../../../node_modules/%40base-ui/react/toast/portal/ToastPortal.mjs","../../../../../node_modules/%40base-ui/react/toast/useToastManager.mjs","../../../../../web/features/outside-party/data%3Ab7925e%20%3Ctext/javascript%3E","../../../../../web/features/outside-party/tools-table/table-messages.ts","../../../../../web/features/outside-party/tools-table/ui/needs-chips.tsx","../../../../../web/features/outside-party/tools-table/ui/scope-picker.tsx","../../../../../web/features/outside-party/tools-table/ui/table-dialog.tsx","../../../../../web/features/outside-party/tools-table/ui/table-toasts.tsx","../../../../../web/features/forms/ui/switch.tsx","../../../../../web/features/outside-party/data%3Ad54b45%20%3Ctext/javascript%3E","../../../../../web/features/outside-party/tools-table/ui/agent-needs.tsx","../../../../../node_modules/%40base-ui/react/drawer/backdrop/DrawerBackdrop.mjs","../../../../../node_modules/%40base-ui/react/drawer/popup/DrawerPopupCssVars.mjs","../../../../../node_modules/%40base-ui/react/drawer/backdrop/DrawerBackdropCssVars.mjs","../../../../../node_modules/%40base-ui/react/drawer/close/DrawerClose.mjs","../../../../../node_modules/%40base-ui/react/drawer/content/drawerContentAttribute.mjs","../../../../../node_modules/%40base-ui/react/drawer/content/DrawerContent.mjs","../../../../../node_modules/%40base-ui/react/drawer/popup/DrawerPopup.mjs","../../../../../node_modules/%40base-ui/react/drawer/popup/DrawerPopupDataAttributes.mjs","../../../../../node_modules/%40base-ui/react/drawer/root/DrawerRootContext.mjs","../../../../../node_modules/%40base-ui/react/drawer/root/useDrawerSnapPoints.mjs","../../../../../node_modules/%40base-ui/react/drawer/viewport/DrawerViewportContext.mjs","../../../../../node_modules/%40base-ui/react/drawer/portal/DrawerPortal.mjs","../../../../../node_modules/%40base-ui/react/drawer/root/DrawerRoot.mjs","../../../../../node_modules/%40base-ui/react/drawer/provider/DrawerProviderContext.mjs","../../../../../node_modules/%40base-ui/react/drawer/title/DrawerTitle.mjs","../../../../../node_modules/%40base-ui/react/drawer/trigger/DrawerTrigger.mjs","../../../../../node_modules/%40base-ui/react/drawer/viewport/DrawerViewport.mjs","../../../../../node_modules/%40base-ui/react/dialog/viewport/DialogViewport.mjs","../../../../../node_modules/%40base-ui/react/dialog/viewport/DialogViewportDataAttributes.mjs","../../../../../node_modules/%40base-ui/react/drawer/virtual-keyboard-provider/DrawerVirtualKeyboardContext.mjs","../../../../../web/features/outside-party/tools-table/ui/tools-table.tsx","../../../../../web/features/outside-party/data%3A499471%20%3Ctext/javascript%3E","../../../../../web/features/outside-party/switched-message.ts","../../../../../web/features/outside-party/tools-table/hint-suggestions.ts","../../../../../web/features/outside-party/tools-table/scope-change.ts","../../../../../web/features/outside-party/tools-table/table-tools.ts","../../../../../web/features/outside-party/ui/everyones-sign-ins-card.tsx","../../../../../web/features/outside-party/data%3Aa8c293%20%3Ctext/javascript%3E","../../../../../web/features/outside-party/data%3Ab6afd0%20%3Ctext/javascript%3E","../../../../../web/features/outside-party/everyones-sign-ins.ts","../../../../../web/features/outside-party/ui/everyones-sign-ins.tsx","../../../../../web/features/outside-party/own-sign-in.ts","../../../../../web/features/outside-party/ui/own-sign-in-forms.tsx","../../../../../web/features/outside-party/data%3A1ee746%20%3Ctext/javascript%3E","../../../../../web/features/outside-party/ui/repeatable-switch.tsx","../../../../../web/features/outside-party/data%3Acb1ab4%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useOnMount } from '@base-ui/utils/useOnMount';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { ToastContext } from \"./ToastProviderContext.mjs\";\nimport { ToastStore } from \"../store.mjs\";\n\n/**\n * Provides a context for creating and managing toasts.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const ToastProvider = function ToastProvider(props) {\n const {\n children,\n timeout = 5000,\n limit = 3,\n toastManager\n } = props;\n const store = useRefWithInit(() => new ToastStore({\n timeout,\n limit,\n viewport: null,\n toasts: [],\n hovering: false,\n focused: false,\n isWindowFocused: true,\n prevFocusElement: null\n })).current;\n useOnMount(store.disposeEffect);\n React.useEffect(function subscribeToToastManager() {\n if (!toastManager) {\n return undefined;\n }\n const unsubscribe = toastManager[' subscribe'](({\n action,\n options\n }) => {\n const id = options.id;\n if (action === 'promise' && options.promise) {\n store.promiseToast(options.promise, options);\n } else if (action === 'update' && id) {\n store.updateToast(id, options.updates);\n } else if (action === 'close') {\n store.closeToast(id);\n } else {\n store.addToast(options);\n }\n });\n return unsubscribe;\n }, [store, toastManager]);\n return /*#__PURE__*/_jsxs(ToastContext.Provider, {\n value: store,\n children: [/*#__PURE__*/_jsx(ToastProviderPropsSynchronizer, {\n store: store,\n timeout: timeout,\n limit: limit\n }), children]\n });\n};\nif (process.env.NODE_ENV !== \"production\") ToastProvider.displayName = \"ToastProvider\";\nfunction ToastProviderPropsSynchronizer(props) {\n const {\n store,\n timeout,\n limit\n } = props;\n\n // `limit` needs custom syncing because changing it must also recompute each\n // toast's `limited` flag; `useSyncedValues` would only update the raw value.\n useIsoLayoutEffect(() => {\n store.syncProviderProps(timeout, limit);\n }, [store, timeout, limit]);\n return null;\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const ToastContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") ToastContext.displayName = \"ToastContext\";\nexport function useToastProviderContext() {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: useToastManager must be used within <Toast.Provider>.' : _formatErrorMessage(73));\n }\n return context;\n}","import { ReactStore } from '@base-ui/utils/store';\nimport { generateId } from '@base-ui/utils/generateId';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { Timeout } from '@base-ui/utils/useTimeout';\nimport { resolvePromiseOptions } from \"./utils/resolvePromiseOptions.mjs\";\nimport { activeElement, contains, getTarget } from \"../floating-ui-react/utils.mjs\";\nimport { isFocusVisible } from \"./utils/focusVisible.mjs\";\n\n/**\n * A toast once it lives in the store. `addToast` is the only way in and it always\n * assigns `updateKey`, so unlike the public `ToastObject` it is never missing.\n */\n\nfunction createToastMetadata(toasts) {\n const metadata = new Map();\n let visibleIndex = 0;\n let offsetY = 0;\n toasts.forEach((toast, toastIndex) => {\n const isEnding = toast.transitionStatus === 'ending';\n metadata.set(toast.id, {\n value: toast,\n domIndex: toastIndex,\n visibleIndex: isEnding ? -1 : visibleIndex,\n offsetY\n });\n offsetY += toast.height || 0;\n if (!isEnding) {\n visibleIndex += 1;\n }\n });\n return metadata;\n}\n\n// Marks the active (non-ending) toasts beyond `limit` as limited. Callers pass\n// toasts in newest-first order, so the newest `limit` toasts stay visible and\n// the rest are flagged. Returns the same toast reference when its `limited`\n// flag is unchanged to avoid unnecessary re-renders.\nfunction applyLimited(toasts, limit) {\n let activeIndex = 0;\n return toasts.map(toast => {\n if (toast.transitionStatus === 'ending') {\n return toast;\n }\n const limited = activeIndex >= limit;\n activeIndex += 1;\n return toast.limited === limited ? toast : {\n ...toast,\n limited\n };\n });\n}\nexport const selectors = {\n toasts: state => state.toasts,\n isEmpty: state => state.toasts.length === 0,\n toast: (state, id) => state.toastMetadata.get(id)?.value,\n toastIndex: (state, id) => state.toastMetadata.get(id)?.domIndex ?? -1,\n toastOffsetY: (state, id) => state.toastMetadata.get(id)?.offsetY ?? 0,\n toastVisibleIndex: (state, id) => state.toastMetadata.get(id)?.visibleIndex ?? -1,\n focused: state => state.focused,\n expanded: state => state.hovering || state.focused,\n expandedOrOutOfFocus: state => state.hovering || state.focused || !state.isWindowFocused,\n prevFocusElement: state => state.prevFocusElement\n};\nexport class ToastStore extends ReactStore {\n timers = new Map();\n areTimersPaused = false;\n constructor(initialState) {\n super({\n ...initialState,\n toastMetadata: createToastMetadata(initialState.toasts)\n }, {}, selectors);\n }\n setViewport = viewport => {\n this.set('viewport', viewport);\n };\n syncProviderProps(timeout, limit) {\n const limitChanged = this.state.limit !== limit;\n if (this.state.timeout === timeout && !limitChanged) {\n return;\n }\n const updates = {\n timeout,\n limit\n };\n if (limitChanged) {\n const newToasts = applyLimited(this.state.toasts, limit);\n updates.toasts = newToasts;\n updates.toastMetadata = createToastMetadata(newToasts);\n }\n this.update(updates);\n }\n disposeEffect = () => {\n return () => {\n this.timers.forEach(timer => {\n timer.timeout?.clear();\n });\n this.timers.clear();\n };\n };\n removeToast(toastId, skipOnRemove = false) {\n const index = selectors.toastIndex(this.state, toastId);\n if (index === -1) {\n return;\n }\n const toast = this.state.toasts[index];\n if (!skipOnRemove) {\n toast?.onRemove?.();\n }\n const newToasts = [...this.state.toasts];\n newToasts.splice(index, 1);\n this.setToasts(newToasts);\n }\n addToast = toast => {\n const {\n timeout,\n limit\n } = this.state;\n const id = toast.id || generateId('toast');\n if (toast.id) {\n const existingToast = selectors.toast(this.state, toast.id);\n if (existingToast) {\n if (existingToast.transitionStatus === 'ending') {\n this.removeToast(toast.id, true);\n } else {\n const {\n id: ignoredId,\n transitionStatus: ignoredTransitionStatus,\n ...updates\n } = toast;\n this.updateToastInternal(toast.id, updates, true, true);\n return toast.id;\n }\n }\n }\n const toastToAdd = {\n ...toast,\n id,\n updateKey: 0,\n transitionStatus: 'starting'\n };\n const updatedToasts = [toastToAdd, ...this.state.toasts];\n this.setToasts(applyLimited(updatedToasts, limit));\n const duration = toastToAdd.timeout ?? timeout;\n if (toastToAdd.type !== 'loading' && duration > 0) {\n this.scheduleTimer(id, duration, () => this.closeToast(id));\n }\n if (selectors.expandedOrOutOfFocus(this.state)) {\n this.pauseTimers();\n }\n return id;\n };\n updateToast = (id, updates) => {\n const prevToast = selectors.toast(this.state, id);\n // Never run the updater for an update the store is going to ignore.\n if (!prevToast || prevToast.transitionStatus === 'ending') {\n return;\n }\n\n // The updater may have called back into the store, so the internal update\n // reads the current state again.\n this.updateToastInternal(id, typeof updates === 'function' ? updates(prevToast) : updates, false, true);\n };\n updateToastInternal = (id, updates, resetTimer = false, markUpdated = false) => {\n const {\n timeout,\n toasts\n } = this.state;\n const prevToast = selectors.toast(this.state, id);\n if (!prevToast) {\n return;\n }\n\n // Ignore updates for toasts that are already closing.\n // This prevents races where async updates (e.g. promise success/error)\n // can block a dismissal from completing.\n if (prevToast.transitionStatus === 'ending') {\n return;\n }\n const nextToast = {\n ...prevToast,\n ...updates,\n ...(markUpdated && {\n updateKey: prevToast.updateKey + 1\n })\n };\n this.setToasts(toasts.map(toast => toast.id === id ? nextToast : toast));\n const nextTimeout = nextToast.timeout ?? timeout;\n const prevTimeout = prevToast.timeout ?? timeout;\n const timeoutUpdated = Object.hasOwn(updates, 'timeout');\n const shouldHaveTimer = nextToast.transitionStatus !== 'ending' && nextToast.type !== 'loading' && nextTimeout > 0;\n const hasTimer = this.timers.has(id);\n const timeoutChanged = prevTimeout !== nextTimeout;\n const wasLoading = prevToast.type === 'loading';\n if (!shouldHaveTimer && hasTimer) {\n this.clearTimer(id);\n return;\n }\n\n // Schedule or reschedule timer if needed\n if (shouldHaveTimer && (!hasTimer || timeoutChanged || timeoutUpdated || wasLoading || resetTimer)) {\n this.clearTimer(id);\n this.scheduleTimer(id, nextTimeout, () => this.closeToast(id));\n if (selectors.expandedOrOutOfFocus(this.state)) {\n this.pauseTimers();\n }\n }\n };\n closeToast = toastId => {\n const closeAll = toastId === undefined;\n const {\n limit,\n toasts\n } = this.state;\n let toastsToClose;\n if (closeAll) {\n toastsToClose = toasts;\n this.clearTimers();\n } else {\n const toast = selectors.toast(this.state, toastId);\n if (!toast) {\n return;\n }\n toastsToClose = [toast];\n this.clearTimer(toastId);\n }\n const endingToasts = toasts.map(item => closeAll || item.id === toastId ? {\n ...item,\n transitionStatus: 'ending',\n height: 0\n } : item);\n const newToasts = applyLimited(endingToasts, limit);\n this.setToasts(newToasts, !newToasts.some(toast => toast.transitionStatus !== 'ending'));\n toastsToClose.forEach(toast => {\n if (toast.transitionStatus !== 'ending') {\n toast.onClose?.();\n }\n });\n this.handleFocusManagement(toastId);\n };\n promiseToast = (promiseValue, options) => {\n // Create a loading toast (which does not auto-dismiss).\n const loadingOptions = resolvePromiseOptions(options.loading);\n const id = this.addToast({\n ...loadingOptions,\n type: 'loading'\n });\n const handledPromise = promiseValue.then(result => {\n const successOptions = resolvePromiseOptions(options.success, result);\n this.updateToast(id, {\n ...successOptions,\n type: 'success',\n timeout: successOptions.timeout\n });\n return result;\n }).catch(error => {\n const errorOptions = resolvePromiseOptions(options.error, error);\n this.updateToast(id, {\n ...errorOptions,\n type: 'error',\n timeout: errorOptions.timeout\n });\n return Promise.reject(error);\n });\n\n // Private API used exclusively by `Manager` to handoff the promise\n // back to the manager after it's handled here.\n if ({}.hasOwnProperty.call(options, 'setPromise')) {\n options.setPromise(handledPromise);\n }\n return handledPromise;\n };\n pauseTimers() {\n if (this.areTimersPaused) {\n return;\n }\n this.areTimersPaused = true;\n this.timers.forEach(timer => {\n // Timers added while already paused have no running timeout, so their\n // `remaining` is still the full delay and must be left alone.\n if (timer.timeout) {\n timer.timeout.clear();\n // `start` is stamped on every resume, so subtracting from `remaining`\n // (rather than from the original delay) keeps repeated pause/resume\n // cycles from handing the toast extra time.\n timer.remaining = Math.max(timer.remaining - (Date.now() - timer.start), 0);\n }\n });\n }\n resumeTimers() {\n if (!this.areTimersPaused) {\n return;\n }\n this.areTimersPaused = false;\n this.timers.forEach((timer, id) => {\n timer.remaining = timer.remaining > 0 ? timer.remaining : timer.delay;\n timer.timeout ??= Timeout.create();\n timer.timeout.start(timer.remaining, () => {\n this.handleTimerFired(id);\n timer.callback();\n });\n timer.start = Date.now();\n });\n }\n restoreFocusToPrevElement() {\n this.state.prevFocusElement?.focus({\n preventScroll: true\n });\n }\n handleDocumentPointerDown = event => {\n if (event.pointerType !== 'touch') {\n return;\n }\n const target = getTarget(event);\n if (contains(this.state.viewport, target)) {\n return;\n }\n\n // This is explicit touch activity outside the viewport, so the paused\n // interaction state should end even if the window focus state is unchanged.\n this.resumeTimers();\n this.update({\n hovering: false,\n focused: false\n });\n };\n scheduleTimer(id, delay, callback) {\n const start = Date.now();\n const shouldStartActive = !selectors.expandedOrOutOfFocus(this.state);\n const currentTimeout = shouldStartActive ? Timeout.create() : undefined;\n currentTimeout?.start(delay, () => {\n this.handleTimerFired(id);\n callback();\n });\n this.timers.set(id, {\n timeout: currentTimeout,\n start,\n delay,\n remaining: delay,\n callback\n });\n }\n clearTimers() {\n this.timers.forEach(timer => {\n timer.timeout?.clear();\n });\n this.timers.clear();\n this.areTimersPaused = false;\n }\n clearTimer(id) {\n const timer = this.timers.get(id);\n timer?.timeout?.clear();\n this.timers.delete(id);\n this.resetPausedStateIfNoTimersRemain();\n }\n handleTimerFired(id) {\n this.timers.delete(id);\n this.resetPausedStateIfNoTimersRemain();\n }\n resetPausedStateIfNoTimersRemain() {\n if (this.timers.size === 0) {\n // No timers remain to keep paused; clear the flag so a fresh toast's\n // running timer can be paused again on hover/focus.\n this.areTimersPaused = false;\n }\n }\n setToasts(newToasts, clearInteraction = newToasts.length === 0) {\n const updates = {\n toasts: newToasts,\n toastMetadata: createToastMetadata(newToasts)\n };\n if (clearInteraction) {\n updates.hovering = false;\n updates.focused = false;\n }\n this.update(updates);\n }\n handleFocusManagement(toastId) {\n const activeEl = activeElement(ownerDocument(this.state.viewport));\n if (!this.state.viewport || !contains(this.state.viewport, activeEl) || !isFocusVisible(activeEl)) {\n return;\n }\n if (toastId === undefined) {\n this.restoreFocusToPrevElement();\n return;\n }\n const toasts = selectors.toasts(this.state);\n const currentIndex = selectors.toastIndex(this.state, toastId);\n const scan = (from, step) => {\n for (let index = from; index >= 0 && index < toasts.length; index += step) {\n if (toasts[index].transitionStatus !== 'ending') {\n return toasts[index];\n }\n }\n return null;\n };\n\n // Try to find the next toast that isn't animating out, then fall back to the previous one.\n const nextToast = scan(currentIndex + 1, 1) ?? scan(currentIndex - 1, -1);\n if (nextToast) {\n nextToast.ref?.current?.focus();\n } else {\n this.restoreFocusToPrevElement();\n }\n }\n}","let counter = 0;\nexport function generateId(prefix) {\n counter += 1;\n return `${prefix}-${Math.random().toString(36).slice(2, 6)}-${counter}`;\n}","export function resolvePromiseOptions(options, result) {\n if (typeof options === 'string') {\n return {\n description: options\n };\n }\n if (typeof options === 'function') {\n const resolvedOptions = options(result);\n return typeof resolvedOptions === 'string' ? {\n description: resolvedOptions\n } : resolvedOptions;\n }\n return options;\n}","'use client';\n\nimport * as React from 'react';\nimport { addEventListener } from '@base-ui/utils/addEventListener';\nimport { mergeCleanups } from '@base-ui/utils/mergeCleanups';\nimport { ownerDocument, ownerWindow } from '@base-ui/utils/owner';\nimport { visuallyHidden } from '@base-ui/utils/visuallyHidden';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { activeElement, contains, getTarget } from \"../../floating-ui-react/utils.mjs\";\nimport { FocusGuard } from \"../../utils/FocusGuard.mjs\";\nimport { useToastProviderContext } from \"../provider/ToastProviderContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { isFocusVisible } from \"../utils/focusVisible.mjs\";\nimport * as ToastViewportCssVars from \"./ToastViewportCssVars.mjs\";\n\n/**\n * A container viewport for toasts.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const ToastViewport = /*#__PURE__*/React.forwardRef(function ToastViewport(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n children,\n ...elementProps\n } = componentProps;\n const store = useToastProviderContext();\n const windowFocusTimeout = useTimeout();\n const handlingFocusGuardRef = React.useRef(false);\n const markedReadyForMouseLeaveRef = React.useRef(false);\n const touchActiveRef = React.useRef(false);\n const isEmpty = store.useState('isEmpty');\n const toasts = store.useState('toasts');\n const focused = store.useState('focused');\n const expanded = store.useState('expanded');\n const prevFocusElement = store.useState('prevFocusElement');\n const frontmostHeight = toasts[0]?.height;\n const hasTransitioningToasts = toasts.some(toast => toast.transitionStatus === 'ending');\n const highPriorityToasts = toasts.filter(toast => toast.priority === 'high');\n React.useEffect(() => {\n // `store.state.viewport` isn't available on the first render, since the portal node hasn't yet\n // been created. Depending on `isEmpty` ensures the listeners are attached once toasts exist and\n // the viewport ref is available.\n const viewport = store.state.viewport;\n if (!viewport || isEmpty) {\n return undefined;\n }\n const win = ownerWindow(viewport);\n const doc = ownerDocument(viewport);\n\n // Listen globally for F6 so we can force-focus the viewport.\n function handleGlobalKeyDown(event) {\n if (event.key === 'F6' && getTarget(event) !== viewport) {\n event.preventDefault();\n store.set('prevFocusElement', activeElement(doc));\n viewport?.focus({\n preventScroll: true\n });\n store.pauseTimers();\n store.set('focused', true);\n }\n }\n function handleWindowBlur(event) {\n if (getTarget(event) !== win) {\n return;\n }\n store.set('isWindowFocused', false);\n store.pauseTimers();\n }\n function handleWindowFocus(event) {\n if (event.relatedTarget) {\n return;\n }\n const target = getTarget(event);\n const activeEl = activeElement(ownerDocument(viewport));\n if (target === win || !contains(viewport, target) || !isFocusVisible(activeEl)) {\n store.resumeTimers();\n }\n\n // Wait for the `handleFocus` event to fire.\n windowFocusTimeout.start(0, () => store.set('isWindowFocused', true));\n }\n return mergeCleanups(addEventListener(win, 'keydown', handleGlobalKeyDown), addEventListener(win, 'blur', handleWindowBlur, true), addEventListener(win, 'focus', handleWindowFocus, true), addEventListener(doc, 'pointerdown', store.handleDocumentPointerDown, true));\n }, [store, windowFocusTimeout, isEmpty]);\n function handleFocusGuard(event) {\n handlingFocusGuardRef.current = true;\n\n // If we're coming off the container, move to the first toast that can hold\n // focus, skipping toasts that are animating out or inert because they're limited.\n const firstFocusableToast = event.relatedTarget === store.state.viewport ? toasts.find(toast => toast.transitionStatus !== 'ending' && !toast.limited) : undefined;\n if (firstFocusableToast) {\n firstFocusableToast.ref?.current?.focus();\n } else {\n store.restoreFocusToPrevElement();\n }\n }\n function handleKeyDown(event) {\n if (event.key === 'Tab' && event.shiftKey && getTarget(event.nativeEvent) === store.state.viewport) {\n event.preventDefault();\n // Restoring focus blurs the viewport, and `handleBlur` resumes the timers\n // from there. Resuming here as well would also fire when the previously\n // focused element lives inside the viewport, letting toasts dismiss out\n // from under the keyboard.\n store.restoreFocusToPrevElement();\n }\n }\n function flushMouseLeave() {\n const hasEndingToasts = store.state.toasts.some(toast => toast.transitionStatus === 'ending');\n if (hasEndingToasts || touchActiveRef.current || !markedReadyForMouseLeaveRef.current) {\n return;\n }\n\n // Apply any mouseleave that was deferred until transitions finished.\n store.set('hovering', false);\n if (!store.select('expandedOrOutOfFocus')) {\n store.resumeTimers();\n }\n markedReadyForMouseLeaveRef.current = false;\n }\n React.useEffect(flushMouseLeave, [hasTransitioningToasts, store]);\n function handleMouseEnter() {\n store.pauseTimers();\n store.set('hovering', true);\n markedReadyForMouseLeaveRef.current = false;\n }\n function handleMouseLeave() {\n // Defer to `flushMouseLeave`: while toasts are transitioning out or a touch gesture is active it\n // records the intent and collapses later; otherwise it collapses immediately.\n markedReadyForMouseLeaveRef.current = true;\n flushMouseLeave();\n }\n function handlePointerDown(event) {\n if (event.pointerType === 'touch') {\n touchActiveRef.current = true;\n }\n }\n function handlePointerEnd(event) {\n if (event.pointerType !== 'touch') {\n return;\n }\n touchActiveRef.current = false;\n flushMouseLeave();\n }\n function handleFocus() {\n if (handlingFocusGuardRef.current) {\n handlingFocusGuardRef.current = false;\n return;\n }\n if (focused) {\n return;\n }\n\n // Only set focused when the active element is focus-visible.\n // This prevents the viewport from staying expanded when clicking inside without\n // keyboard navigation.\n if (isFocusVisible(activeElement(ownerDocument(store.state.viewport)))) {\n store.set('focused', true);\n store.pauseTimers();\n }\n }\n function handleBlur(event) {\n if (!focused || contains(store.state.viewport, event.relatedTarget)) {\n return;\n }\n store.set('focused', false);\n if (!store.select('expandedOrOutOfFocus')) {\n store.resumeTimers();\n }\n }\n const defaultProps = {\n tabIndex: -1,\n role: 'region',\n 'aria-live': 'polite',\n 'aria-atomic': false,\n 'aria-relevant': 'additions text',\n 'aria-label': 'Notifications',\n onMouseEnter: handleMouseEnter,\n onMouseMove: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onClick: handleFocus,\n onPointerDown: handlePointerDown,\n onPointerUp: handlePointerEnd,\n onPointerCancel: handlePointerEnd,\n style: {\n [ToastViewportCssVars.frontmostHeight]: frontmostHeight ? `${frontmostHeight}px` : undefined\n }\n };\n const state = {\n expanded\n };\n const focusGuard = !isEmpty && prevFocusElement && /*#__PURE__*/_jsx(FocusGuard, {\n onFocus: handleFocusGuard\n });\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, store.setViewport],\n state,\n props: [defaultProps, elementProps, {\n children: /*#__PURE__*/_jsxs(React.Fragment, {\n children: [focusGuard, children, focusGuard]\n })\n }]\n });\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [focusGuard, element, !focused && highPriorityToasts.length > 0 && /*#__PURE__*/_jsx(\"div\", {\n style: visuallyHidden,\n children: highPriorityToasts.map(toast => /*#__PURE__*/_jsxs(\"div\", {\n role: \"alert\",\n \"aria-atomic\": true,\n children: [/*#__PURE__*/_jsx(\"div\", {\n children: toast.title\n }), /*#__PURE__*/_jsx(\"div\", {\n children: toast.description\n })]\n }, toast.id))\n })]\n });\n});\nif (process.env.NODE_ENV !== \"production\") ToastViewport.displayName = \"ToastViewport\";","/**\n * Indicates the height of the frontmost toast.\n * @type {number}\n */\nexport const frontmostHeight = '--toast-frontmost-height';","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { addEventListener } from '@base-ui/utils/addEventListener';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { inertValue } from '@base-ui/utils/inertValue';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { activeElement, closest, contains, getTarget } from \"../../floating-ui-react/utils.mjs\";\nimport { ToastRootContext } from \"./ToastRootContext.mjs\";\nimport { transitionStatusMapping } from \"../../internals/stateAttributesMapping.mjs\";\nimport { useToastProviderContext } from \"../provider/ToastProviderContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useOpenChangeComplete } from \"../../internals/useOpenChangeComplete.mjs\";\nimport { BASE_UI_SWIPE_IGNORE_SELECTOR, LEGACY_SWIPE_IGNORE_SELECTOR } from \"../../internals/constants.mjs\";\nimport { getDisplacement } from \"../../utils/useSwipeDismiss.mjs\";\nimport { getElementTransform } from \"../../utils/getElementTransform.mjs\";\nimport * as ToastRootCssVars from \"./ToastRootCssVars.mjs\";\nimport * as ToastRootDataAttributes from \"./ToastRootDataAttributes.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const toastRootStateAttributesMapping = {\n ...transitionStatusMapping,\n swipeDirection(value) {\n return value ? {\n [ToastRootDataAttributes.swipeDirection]: value\n } : null;\n }\n};\nconst SWIPE_THRESHOLD = 40;\nconst REVERSE_CANCEL_THRESHOLD = 10;\nconst OPPOSITE_DIRECTION_DAMPING_FACTOR = 0.5;\nconst MIN_DRAG_THRESHOLD = 1;\nconst TOAST_SWIPE_IGNORE_SELECTOR = `${BASE_UI_SWIPE_IGNORE_SELECTOR},${LEGACY_SWIPE_IGNORE_SELECTOR}`;\n\n/**\n * Groups all parts of an individual toast.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nexport const ToastRoot = /*#__PURE__*/React.forwardRef(function ToastRoot(componentProps, forwardedRef) {\n const {\n toast,\n render,\n className,\n swipeDirection = ['down', 'right'],\n style,\n ...elementProps\n } = componentProps;\n const isAnchored = toast.positionerProps?.anchor !== undefined;\n let swipeDirections = [];\n if (!isAnchored) {\n swipeDirections = Array.isArray(swipeDirection) ? swipeDirection : [swipeDirection];\n }\n const swipeEnabled = swipeDirections.length > 0;\n const store = useToastProviderContext();\n const [currentSwipeDirection, setCurrentSwipeDirection] = React.useState(undefined);\n const [isSwiping, setIsSwiping] = React.useState(false);\n const [isRealSwipe, setIsRealSwipe] = React.useState(false);\n const [dragOffset, setDragOffset] = React.useState({\n x: 0,\n y: 0\n });\n const [initialTransform, setInitialTransform] = React.useState({\n x: 0,\n y: 0,\n scale: 1\n });\n const [titleId, setTitleId] = React.useState();\n const [descriptionId, setDescriptionId] = React.useState();\n const [lockedDirection, setLockedDirection] = React.useState(null);\n const rootRef = React.useRef(null);\n const lastToastIdRef = React.useRef(undefined);\n const dragStartPosRef = React.useRef({\n x: 0,\n y: 0\n });\n const initialTransformRef = React.useRef({\n x: 0,\n y: 0,\n scale: 1\n });\n const intendedSwipeDirectionRef = React.useRef(undefined);\n const maxSwipeDisplacementRef = React.useRef(0);\n const cancelledSwipeRef = React.useRef(false);\n const swipeCancelBaselineRef = React.useRef({\n x: 0,\n y: 0\n });\n const isFirstPointerMoveRef = React.useRef(false);\n const dragOffsetRef = React.useRef({\n x: 0,\n y: 0\n });\n const activePointerIdRef = React.useRef(null);\n const dragAbortControllerRef = React.useRef(null);\n const domIndex = store.useState('toastIndex', toast.id);\n const visibleIndex = store.useState('toastVisibleIndex', toast.id);\n const offsetY = store.useState('toastOffsetY', toast.id);\n const focused = store.useState('focused');\n const expanded = store.useState('expanded');\n useOpenChangeComplete({\n open: toast.transitionStatus !== 'ending',\n ref: rootRef,\n onComplete() {\n if (toast.transitionStatus === 'ending') {\n store.removeToast(toast.id);\n }\n }\n });\n\n // Recalculates the natural height of the toast and updates it in the toast manager.\n // `flushSync` avoids visual flickers when called from observer callbacks.\n // The store ignores this write while the toast is transitioning out.\n const recalculateHeight = useStableCallback((flushSync = false) => {\n const element = rootRef.current;\n if (!element) {\n return;\n }\n const previousHeight = element.style.height;\n element.style.height = 'auto';\n const height = element.offsetHeight;\n element.style.height = previousHeight;\n function update() {\n store.updateToastInternal(toast.id, {\n ref: rootRef,\n height,\n transitionStatus: undefined\n });\n }\n if (flushSync) {\n ReactDOM.flushSync(update);\n } else {\n update();\n }\n });\n\n // Initialize the toast on mount, and reinitialize when it begins a new lifecycle:\n // re-adding an ending toast retains the same root instance (`key={toast.id}`), and\n // index-keyed lists can hand an existing instance a different toast.\n useIsoLayoutEffect(() => {\n const previousToastId = lastToastIdRef.current;\n // `recalculateHeight` clears the `starting` status itself, so bail out on the\n // resulting re-run and on the later `ending` one, which the store discards anyway.\n if (toast.transitionStatus !== 'starting' && previousToastId === toast.id) {\n return;\n }\n if (previousToastId !== undefined) {\n // A retained root keeps component-local swipe state from its previous lifecycle;\n // clear it so the toast doesn't stay offset or exit in the swiped direction.\n setCurrentSwipeDirection(undefined);\n setInitialTransform({\n x: 0,\n y: 0,\n scale: 1\n });\n setResolvedDragOffset({\n x: 0,\n y: 0\n });\n }\n lastToastIdRef.current = toast.id;\n recalculateHeight();\n }, [recalculateHeight, toast.id, toast.transitionStatus]);\n function setResolvedDragOffset(nextDragOffset) {\n dragOffsetRef.current = nextDragOffset;\n setDragOffset(nextDragOffset);\n }\n useIsoLayoutEffect(() => {\n return () => {\n dragAbortControllerRef.current?.abort();\n };\n }, []);\n function applyDirectionalDamping(deltaX, deltaY) {\n const damp = delta => delta > 0 ? delta ** OPPOSITE_DIRECTION_DAMPING_FACTOR : -(Math.abs(delta) ** OPPOSITE_DIRECTION_DAMPING_FACTOR);\n const dampX = deltaX > 0 && !swipeDirections.includes('right') || deltaX < 0 && !swipeDirections.includes('left');\n const dampY = deltaY > 0 && !swipeDirections.includes('down') || deltaY < 0 && !swipeDirections.includes('up');\n return {\n x: dampX ? damp(deltaX) : deltaX,\n y: dampY ? damp(deltaY) : deltaY\n };\n }\n const handleSwipeEnd = useStableCallback(event => {\n if (event.pointerId !== activePointerIdRef.current) {\n return;\n }\n activePointerIdRef.current = null;\n dragAbortControllerRef.current?.abort();\n dragAbortControllerRef.current = null;\n setIsSwiping(false);\n setIsRealSwipe(false);\n setLockedDirection(null);\n const resolvedInitialTransform = initialTransformRef.current;\n if (event.type === 'pointercancel' || cancelledSwipeRef.current) {\n setResolvedDragOffset({\n x: resolvedInitialTransform.x,\n y: resolvedInitialTransform.y\n });\n setCurrentSwipeDirection(undefined);\n return;\n }\n const resolvedDragOffset = dragOffsetRef.current;\n const deltaX = resolvedDragOffset.x - resolvedInitialTransform.x;\n const deltaY = resolvedDragOffset.y - resolvedInitialTransform.y;\n let dismissDirection;\n for (const direction of swipeDirections) {\n if (getDisplacement(direction, deltaX, deltaY) > SWIPE_THRESHOLD) {\n dismissDirection = direction;\n break;\n }\n }\n if (dismissDirection) {\n setCurrentSwipeDirection(dismissDirection);\n store.closeToast(toast.id);\n } else {\n setResolvedDragOffset({\n x: resolvedInitialTransform.x,\n y: resolvedInitialTransform.y\n });\n setCurrentSwipeDirection(undefined);\n }\n });\n function handlePointerDown(event) {\n if (event.button !== 0) {\n return;\n }\n if (event.pointerType === 'touch') {\n store.pauseTimers();\n }\n const target = getTarget(event.nativeEvent);\n const isInteractiveElement = closest(target, `button,a,input,textarea,[role=\"button\"],${TOAST_SWIPE_IGNORE_SELECTOR}`);\n if (isInteractiveElement) {\n return;\n }\n cancelledSwipeRef.current = false;\n intendedSwipeDirectionRef.current = undefined;\n maxSwipeDisplacementRef.current = 0;\n activePointerIdRef.current = event.pointerId;\n dragStartPosRef.current = {\n x: event.clientX,\n y: event.clientY\n };\n swipeCancelBaselineRef.current = dragStartPosRef.current;\n const element = event.currentTarget;\n const transform = getElementTransform(element);\n initialTransformRef.current = transform;\n setInitialTransform(transform);\n setResolvedDragOffset({\n x: transform.x,\n y: transform.y\n });\n store.set('hovering', true);\n setIsSwiping(true);\n setIsRealSwipe(false);\n setLockedDirection(null);\n isFirstPointerMoveRef.current = true;\n dragAbortControllerRef.current?.abort();\n const dragAbortController = new AbortController();\n dragAbortControllerRef.current = dragAbortController;\n const doc = ownerDocument(element);\n doc.addEventListener('pointerup', handleSwipeEnd, {\n signal: dragAbortController.signal\n });\n doc.addEventListener('pointercancel', handleSwipeEnd, {\n signal: dragAbortController.signal\n });\n element.setPointerCapture?.(event.pointerId);\n }\n function handlePointerMove(event) {\n if (event.pointerId !== activePointerIdRef.current) {\n return;\n }\n\n // Prevent text selection on Safari\n event.preventDefault();\n if (isFirstPointerMoveRef.current) {\n // Adjust the starting position to the current position on the first move\n // to account for the delay between pointerdown and the first pointermove on iOS.\n dragStartPosRef.current = {\n x: event.clientX,\n y: event.clientY\n };\n isFirstPointerMoveRef.current = false;\n }\n const {\n clientY,\n clientX,\n movementX,\n movementY\n } = event;\n if (movementY < 0 && clientY > swipeCancelBaselineRef.current.y || movementY > 0 && clientY < swipeCancelBaselineRef.current.y) {\n swipeCancelBaselineRef.current = {\n x: swipeCancelBaselineRef.current.x,\n y: clientY\n };\n }\n if (movementX < 0 && clientX > swipeCancelBaselineRef.current.x || movementX > 0 && clientX < swipeCancelBaselineRef.current.x) {\n swipeCancelBaselineRef.current = {\n x: clientX,\n y: swipeCancelBaselineRef.current.y\n };\n }\n const deltaX = clientX - dragStartPosRef.current.x;\n const deltaY = clientY - dragStartPosRef.current.y;\n const cancelDeltaY = clientY - swipeCancelBaselineRef.current.y;\n const cancelDeltaX = clientX - swipeCancelBaselineRef.current.x;\n let resolvedLockedDirection = lockedDirection;\n if (!isRealSwipe) {\n const movementDistance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n if (movementDistance >= MIN_DRAG_THRESHOLD) {\n setIsRealSwipe(true);\n // `lockedDirection` is always reset alongside `isRealSwipe`, so it is\n // still `null` here. Locking is only meaningful when both axes are\n // swipeable; otherwise the single axis already constrains the gesture.\n const hasHorizontal = swipeDirections.includes('left') || swipeDirections.includes('right');\n const hasVertical = swipeDirections.includes('up') || swipeDirections.includes('down');\n if (hasHorizontal && hasVertical) {\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\n resolvedLockedDirection = absX > absY ? 'horizontal' : 'vertical';\n setLockedDirection(resolvedLockedDirection);\n }\n }\n }\n let candidate;\n if (!intendedSwipeDirectionRef.current) {\n if (resolvedLockedDirection === 'vertical') {\n if (deltaY > 0) {\n candidate = 'down';\n } else if (deltaY < 0) {\n candidate = 'up';\n }\n } else if (resolvedLockedDirection === 'horizontal') {\n if (deltaX > 0) {\n candidate = 'right';\n } else if (deltaX < 0) {\n candidate = 'left';\n }\n } else if (Math.abs(deltaX) >= Math.abs(deltaY)) {\n candidate = deltaX > 0 ? 'right' : 'left';\n } else {\n candidate = deltaY > 0 ? 'down' : 'up';\n }\n if (candidate && swipeDirections.includes(candidate)) {\n intendedSwipeDirectionRef.current = candidate;\n maxSwipeDisplacementRef.current = getDisplacement(candidate, deltaX, deltaY);\n setCurrentSwipeDirection(candidate);\n }\n } else {\n const direction = intendedSwipeDirectionRef.current;\n const currentDisplacement = getDisplacement(direction, cancelDeltaX, cancelDeltaY);\n if (currentDisplacement > SWIPE_THRESHOLD) {\n cancelledSwipeRef.current = false;\n setCurrentSwipeDirection(direction);\n } else if (!(swipeDirections.includes('left') && swipeDirections.includes('right')) && !(swipeDirections.includes('up') && swipeDirections.includes('down')) && maxSwipeDisplacementRef.current - currentDisplacement >= REVERSE_CANCEL_THRESHOLD) {\n // Mark that a change-of-mind has occurred\n cancelledSwipeRef.current = true;\n }\n }\n const dampedDelta = applyDirectionalDamping(deltaX, deltaY);\n let newOffsetX = initialTransformRef.current.x;\n let newOffsetY = initialTransformRef.current.y;\n const hasHorizontalDir = swipeDirections.includes('left') || swipeDirections.includes('right');\n const hasVerticalDir = swipeDirections.includes('up') || swipeDirections.includes('down');\n if (resolvedLockedDirection !== 'vertical' && hasHorizontalDir) {\n newOffsetX += dampedDelta.x;\n }\n if (resolvedLockedDirection !== 'horizontal' && hasVerticalDir) {\n newOffsetY += dampedDelta.y;\n }\n setResolvedDragOffset({\n x: newOffsetX,\n y: newOffsetY\n });\n }\n function handleKeyDown(event) {\n if (event.key === 'Escape') {\n if (!rootRef.current || !contains(rootRef.current, activeElement(ownerDocument(rootRef.current)))) {\n return;\n }\n store.closeToast(toast.id);\n }\n }\n React.useEffect(() => {\n const element = rootRef.current;\n if (!swipeEnabled || !element) {\n return undefined;\n }\n function preventDefaultTouchStart(event) {\n if (activePointerIdRef.current === null || !contains(element, getTarget(event))) {\n return;\n }\n\n // React's pointermove preventDefault is not enough on iOS; this\n // non-passive touchmove listener blocks native scrolling while dragging.\n event.preventDefault();\n }\n return addEventListener(element, 'touchmove', preventDefaultTouchStart, {\n passive: false\n });\n }, [swipeEnabled]);\n function getDragStyles() {\n const deltaX = dragOffset.x - initialTransform.x;\n const deltaY = dragOffset.y - initialTransform.y;\n return {\n transition: isSwiping ? 'none' : undefined,\n // While swiping, freeze the element at its current visual transform so it doesn't snap to the\n // end position.\n transform: isSwiping ? `translateX(${dragOffset.x}px) translateY(${dragOffset.y}px) scale(${initialTransform.scale})` : undefined,\n [ToastRootCssVars.swipeMovementX]: `${deltaX}px`,\n [ToastRootCssVars.swipeMovementY]: `${deltaY}px`\n };\n }\n const isHighPriority = toast.priority === 'high';\n const defaultProps = {\n role: isHighPriority ? 'alertdialog' : 'dialog',\n tabIndex: 0,\n 'aria-modal': false,\n 'aria-labelledby': titleId,\n 'aria-describedby': descriptionId,\n 'aria-hidden': isHighPriority && !focused ? true : undefined,\n onPointerDown: swipeEnabled ? handlePointerDown : undefined,\n onPointerMove: swipeEnabled ? handlePointerMove : undefined,\n onPointerUp: swipeEnabled ? handleSwipeEnd : undefined,\n onPointerCancel: swipeEnabled ? handleSwipeEnd : undefined,\n onKeyDown: handleKeyDown,\n inert: inertValue(toast.limited),\n style: {\n ...getDragStyles(),\n [ToastRootCssVars.index]: toast.transitionStatus === 'ending' ? domIndex : visibleIndex,\n [ToastRootCssVars.offsetY]: `${offsetY}px`,\n [ToastRootCssVars.height]: toast.height ? `${toast.height}px` : undefined\n }\n };\n const toastRoot = React.useMemo(() => ({\n toast,\n setTitleId,\n setDescriptionId,\n recalculateHeight,\n visibleIndex,\n expanded\n }), [toast, setTitleId, setDescriptionId, recalculateHeight, visibleIndex, expanded]);\n const state = {\n transitionStatus: toast.transitionStatus,\n expanded,\n limited: toast.limited || false,\n type: toast.type,\n swiping: isSwiping,\n swipeDirection: currentSwipeDirection\n };\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, rootRef],\n state,\n stateAttributesMapping: toastRootStateAttributesMapping,\n props: [defaultProps, elementProps]\n });\n return /*#__PURE__*/_jsx(ToastRootContext.Provider, {\n value: toastRoot,\n children: element\n });\n});\nif (process.env.NODE_ENV !== \"production\") ToastRoot.displayName = \"ToastRoot\";","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const ToastRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") ToastRootContext.displayName = \"ToastRootContext\";\nexport function useToastRootContext() {\n const context = React.useContext(ToastRootContext);\n if (!context) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: ToastRootContext is missing. Toast parts must be used within <Toast.Root>.' : _formatErrorMessage(66));\n }\n return context;\n}","export function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}","'use client';\n\nimport * as React from 'react';\nimport { clamp } from '@base-ui/utils/clamp';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { closest, contains, getTarget } from \"../floating-ui-react/utils.mjs\";\nimport { findScrollableAncestor, findScrollableTouchTarget } from \"./scrollable.mjs\";\nimport { getElementAtPoint } from \"./getElementAtPoint.mjs\";\nimport { getElementTransform } from \"./getElementTransform.mjs\";\nconst DEFAULT_SWIPE_THRESHOLD = 40;\nconst REVERSE_CANCEL_THRESHOLD = 10;\nconst MIN_VELOCITY_DURATION_MS = 50;\n// Under one frame at 240 Hz, so it only damps near-simultaneous samples.\nconst MIN_RELEASE_VELOCITY_DURATION_MS = 4;\nconst MAX_RELEASE_VELOCITY_AGE_MS = 80;\nconst MIN_VELOCITY_SAMPLE_DISTANCE = 1;\nconst DEFAULT_IGNORE_SELECTOR = 'button,a,input,select,textarea,label,[role=\"button\"]';\nexport function getDisplacement(direction, deltaX, deltaY) {\n switch (direction) {\n case 'up':\n return -deltaY;\n case 'down':\n return deltaY;\n case 'left':\n return -deltaX;\n case 'right':\n return deltaX;\n default:\n return 0;\n }\n}\nfunction getValidTimeStamp(timeStamp) {\n return Number.isFinite(timeStamp) && timeStamp > 0 ? timeStamp : null;\n}\nfunction getDragTransform(dragOffset, scale) {\n return `translate3d(${dragOffset.x}px,${dragOffset.y}px,0) scale(${scale})`;\n}\nfunction hasPrimaryMouseButton(buttons) {\n return buttons % 2 === 1;\n}\nfunction safelyChangePointerCapture(element, pointerId, method) {\n const pointerCaptureMethod = element[method];\n if (typeof pointerCaptureMethod !== 'function') {\n return;\n }\n try {\n pointerCaptureMethod.call(element, pointerId);\n } catch (error) {\n if (error && typeof error === 'object' && 'name' in error && error.name === 'NotFoundError') {\n return;\n }\n throw error;\n }\n}\nexport function useSwipeDismiss(options) {\n const {\n enabled,\n directions,\n elementRef,\n movementCssVars,\n canStart,\n ignoreSelectorWhenTouch = true,\n ignoreScrollableAncestors = false,\n swipeThreshold: swipeThresholdProp,\n onDismiss,\n onProgress,\n onCancel,\n onSwipeStart,\n onRelease,\n onSwipingChange,\n trackDrag = true\n } = options;\n const ignoreSelector = DEFAULT_IGNORE_SELECTOR;\n const primaryDirection = directions.length === 1 ? directions[0] : undefined;\n const swipeThresholdDefault = Math.max(0, typeof swipeThresholdProp === 'number' ? swipeThresholdProp : DEFAULT_SWIPE_THRESHOLD);\n const allowLeft = directions.includes('left');\n const allowRight = directions.includes('right');\n const allowUp = directions.includes('up');\n const allowDown = directions.includes('down');\n const hasHorizontal = allowLeft || allowRight;\n const hasVertical = allowUp || allowDown;\n\n // Consumers only pass directions on a single axis.\n const scrollAxis = hasHorizontal ? 'horizontal' : 'vertical';\n const [currentSwipeDirection, setCurrentSwipeDirection] = React.useState(undefined);\n const [isSwiping, setIsSwiping] = React.useState(false);\n const [dragDismissed, setDragDismissed] = React.useState(false);\n const dragStartPosRef = React.useRef({\n x: 0,\n y: 0\n });\n const dragOffsetRef = React.useRef({\n x: 0,\n y: 0\n });\n const lastMovePosRef = React.useRef(null);\n const initialTransformRef = React.useRef({\n x: 0,\n y: 0,\n scale: 1\n });\n const intendedSwipeDirectionRef = React.useRef(undefined);\n const maxSwipeDisplacementRef = React.useRef(0);\n const cancelledSwipeRef = React.useRef(false);\n const swipeCancelBaselineRef = React.useRef({\n x: 0,\n y: 0\n });\n const isFirstPointerMoveRef = React.useRef(false);\n const pendingSwipeRef = React.useRef(false);\n const pendingSwipeStartPosRef = React.useRef(null);\n const swipeFromScrollableRef = React.useRef(false);\n const sawPrimaryButtonsOnMoveRef = React.useRef(false);\n const elementSizeRef = React.useRef({\n width: 0,\n height: 0\n });\n const swipeProgressRef = React.useRef(0);\n const swipeThresholdRef = React.useRef(swipeThresholdDefault);\n const swipeThresholdFunctionRef = React.useRef(null);\n const swipeStartTimeRef = React.useRef(null);\n const lastDragSampleRef = React.useRef(null);\n const hasStationarySampleRef = React.useRef(false);\n const lastDragVelocityRef = React.useRef({\n x: 0,\n y: 0\n });\n const lastProgressDetailsRef = React.useRef(null);\n const isSwipingRef = React.useRef(false);\n const dragStyleSnapshotRef = React.useRef(null);\n const setSwiping = useStableCallback(nextSwiping => {\n if (isSwipingRef.current === nextSwiping) {\n return;\n }\n isSwipingRef.current = nextSwiping;\n setIsSwiping(nextSwiping);\n onSwipingChange?.(nextSwiping);\n });\n function resolveSwipeThreshold(direction) {\n if (!direction) {\n return;\n }\n const element = elementRef.current;\n const thresholdFunction = swipeThresholdFunctionRef.current;\n if (!element || !thresholdFunction) {\n return;\n }\n const value = thresholdFunction({\n element,\n direction\n });\n swipeThresholdRef.current = Math.max(0, value);\n }\n const updateSwipeProgress = useStableCallback((progress, details) => {\n const nextProgress = Number.isFinite(progress) ? clamp(progress, 0, 1) : 0;\n const progressChanged = nextProgress !== swipeProgressRef.current;\n let detailsChanged = false;\n if (details) {\n const lastDetails = lastProgressDetailsRef.current;\n detailsChanged = !lastDetails || lastDetails.deltaX !== details.deltaX || lastDetails.deltaY !== details.deltaY || lastDetails.direction !== details.direction;\n }\n if (!progressChanged && !detailsChanged) {\n return;\n }\n swipeProgressRef.current = nextProgress;\n if (details) {\n lastProgressDetailsRef.current = details;\n } else if (progressChanged) {\n lastProgressDetailsRef.current = null;\n }\n onProgress?.(nextProgress, details);\n });\n const syncDragStyles = useStableCallback(swiping => {\n const element = elementRef.current;\n if (!trackDrag || !element) {\n if (!swiping) {\n dragStyleSnapshotRef.current = null;\n }\n return;\n }\n const style = element.style;\n const dragStyleSnapshot = dragStyleSnapshotRef.current;\n if (swiping) {\n if (!dragStyleSnapshot) {\n dragStyleSnapshotRef.current = [style.transition, style.transform];\n }\n style.transition = 'none';\n } else if (dragStyleSnapshot) {\n [style.transition, style.transform] = dragStyleSnapshot;\n dragStyleSnapshotRef.current = null;\n }\n const dragOffset = dragOffsetRef.current;\n const initialTransform = initialTransformRef.current;\n const deltaX = dragOffset.x - initialTransform.x;\n const deltaY = dragOffset.y - initialTransform.y;\n if (swiping) {\n style.transform = getDragTransform(dragOffset, initialTransform.scale);\n }\n style.setProperty(movementCssVars.x, `${deltaX}px`);\n style.setProperty(movementCssVars.y, `${deltaY}px`);\n });\n function recordDragSample(offset, timeStamp) {\n if (timeStamp === null) {\n return;\n }\n const lastSample = lastDragSampleRef.current;\n if (lastSample && timeStamp > lastSample.time) {\n // Some Android devices emit one effectively stationary move immediately before release.\n // Keep the last moving sample and its timestamp. Repeated stationary moves still clear\n // the velocity, and a release after a hold still expires the last moving sample.\n const stationary = Math.abs(offset.x - lastSample.x) < MIN_VELOCITY_SAMPLE_DISTANCE && Math.abs(offset.y - lastSample.y) < MIN_VELOCITY_SAMPLE_DISTANCE;\n const skipSample = stationary && !hasStationarySampleRef.current;\n hasStationarySampleRef.current = stationary;\n if (skipSample) {\n return;\n }\n const durationMs = Math.max(timeStamp - lastSample.time, MIN_RELEASE_VELOCITY_DURATION_MS);\n lastDragVelocityRef.current = {\n x: (offset.x - lastSample.x) / durationMs,\n y: (offset.y - lastSample.y) / durationMs\n };\n }\n lastDragSampleRef.current = {\n x: offset.x,\n y: offset.y,\n time: timeStamp\n };\n }\n const reset = React.useCallback(() => {\n setCurrentSwipeDirection(undefined);\n setSwiping(false);\n setDragDismissed(false);\n updateSwipeProgress(0);\n swipeThresholdRef.current = swipeThresholdDefault;\n swipeThresholdFunctionRef.current = null;\n dragStartPosRef.current = {\n x: 0,\n y: 0\n };\n dragOffsetRef.current = {\n x: 0,\n y: 0\n };\n initialTransformRef.current = {\n x: 0,\n y: 0,\n scale: 1\n };\n intendedSwipeDirectionRef.current = undefined;\n maxSwipeDisplacementRef.current = 0;\n cancelledSwipeRef.current = false;\n swipeCancelBaselineRef.current = {\n x: 0,\n y: 0\n };\n isFirstPointerMoveRef.current = false;\n lastMovePosRef.current = null;\n pendingSwipeRef.current = false;\n pendingSwipeStartPosRef.current = null;\n swipeFromScrollableRef.current = false;\n sawPrimaryButtonsOnMoveRef.current = false;\n elementSizeRef.current = {\n width: 0,\n height: 0\n };\n swipeStartTimeRef.current = null;\n lastDragSampleRef.current = null;\n hasStationarySampleRef.current = false;\n lastDragVelocityRef.current = {\n x: 0,\n y: 0\n };\n lastProgressDetailsRef.current = null;\n syncDragStyles(false);\n }, [setSwiping, swipeThresholdDefault, syncDragStyles, updateSwipeProgress]);\n function getPrimaryPointerPosition(event) {\n if ('touches' in event) {\n const touch = event.touches[0];\n return touch ? {\n x: touch.clientX,\n y: touch.clientY\n } : null;\n }\n return {\n x: event.clientX,\n y: event.clientY\n };\n }\n function isTouchLikeEvent(event) {\n if ('touches' in event) {\n return true;\n }\n return event.pointerType === 'touch';\n }\n function getTargetAtPoint(position, nativeEvent) {\n const root = elementRef.current?.getRootNode();\n const elementAtPoint = getElementAtPoint(root, position.x, position.y);\n const target = elementAtPoint ?? getTarget(nativeEvent);\n return target;\n }\n function findGestureScrollableTouchTarget(target, root) {\n // The swiped element is positioned relative to the viewport, so the page scroller must not\n // gate the gesture (a reset like `html, body { height: 100%; overflow: auto }` makes `body`\n // a real scroll container). The drawer viewport's native touchmove handler already ignores it.\n const find = axis => {\n const scrollTarget = findScrollableTouchTarget(target, root, axis);\n const doc = ownerDocument(scrollTarget);\n return scrollTarget === doc.body || scrollTarget === doc.documentElement ? null : scrollTarget;\n };\n return find(scrollAxis);\n }\n function startSwipeAtPosition(event, position, startOptions) {\n swipeFromScrollableRef.current = false;\n const touchLike = isTouchLikeEvent(event);\n const target = getTargetAtPoint(position, event.nativeEvent);\n const doc = ownerDocument(elementRef.current);\n const body = doc.body;\n const scrollableTarget = touchLike && body ? findGestureScrollableTouchTarget(target, body) : null;\n const ignoreScrollableTarget = startOptions?.ignoreScrollableTarget ?? false;\n if (scrollableTarget && !ignoreScrollableTarget) {\n return false;\n }\n swipeFromScrollableRef.current = Boolean(scrollableTarget && ignoreScrollableTarget);\n const isInteractiveElement = closest(target, ignoreSelector);\n if (isInteractiveElement && (!touchLike || ignoreSelectorWhenTouch)) {\n return false;\n }\n const element = elementRef.current;\n if (ignoreScrollableAncestors && element && target) {\n const ignoreAncestors = startOptions?.ignoreScrollableAncestors ?? false;\n if (!ignoreAncestors && findScrollableAncestor(target, element, scrollAxis) != null) {\n return false;\n }\n }\n cancelledSwipeRef.current = false;\n intendedSwipeDirectionRef.current = undefined;\n maxSwipeDisplacementRef.current = 0;\n dragStartPosRef.current = position;\n swipeStartTimeRef.current = getValidTimeStamp(event.timeStamp);\n lastDragSampleRef.current = null;\n hasStationarySampleRef.current = false;\n lastDragVelocityRef.current = {\n x: 0,\n y: 0\n };\n swipeCancelBaselineRef.current = position;\n lastMovePosRef.current = position;\n swipeThresholdRef.current = swipeThresholdDefault;\n swipeThresholdFunctionRef.current = typeof swipeThresholdProp === 'function' ? swipeThresholdProp : null;\n if (element) {\n elementSizeRef.current = {\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n resolveSwipeThreshold(primaryDirection);\n const transform = getElementTransform(element);\n initialTransformRef.current = transform;\n dragOffsetRef.current = {\n x: transform.x,\n y: transform.y\n };\n recordDragSample({\n x: transform.x,\n y: transform.y\n }, swipeStartTimeRef.current);\n if (!('touches' in event)) {\n safelyChangePointerCapture(element, event.pointerId, 'setPointerCapture');\n }\n }\n onSwipeStart?.(event.nativeEvent);\n setSwiping(true);\n isFirstPointerMoveRef.current = true;\n updateSwipeProgress(0);\n syncDragStyles(true);\n return true;\n }\n function resetPendingSwipeState() {\n clearPendingSwipeStartState();\n swipeFromScrollableRef.current = false;\n lastMovePosRef.current = null;\n }\n function clearPendingSwipeStartState() {\n pendingSwipeRef.current = false;\n pendingSwipeStartPosRef.current = null;\n }\n function cancelSwipeInteraction(event) {\n resetPendingSwipeState();\n if (!isSwipingRef.current) {\n return;\n }\n setSwiping(false);\n const resolvedInitialTransform = initialTransformRef.current;\n dragOffsetRef.current = {\n x: resolvedInitialTransform.x,\n y: resolvedInitialTransform.y\n };\n setCurrentSwipeDirection(undefined);\n sawPrimaryButtonsOnMoveRef.current = false;\n syncDragStyles(false);\n const element = elementRef.current;\n if (element) {\n safelyChangePointerCapture(element, event.pointerId, 'releasePointerCapture');\n }\n updateSwipeProgress(0, {\n deltaX: 0,\n deltaY: 0,\n direction: undefined\n });\n onCancel?.(event.nativeEvent);\n }\n function applyDirectionalDamping(deltaX, deltaY) {\n const exponent = value => Math.sign(value) * Math.abs(value) ** 0.5;\n const dampAxis = (delta, allowNegative, allowPositive) => {\n if (!allowNegative && delta < 0 || !allowPositive && delta > 0) {\n return exponent(delta);\n }\n return delta;\n };\n const newDeltaX = hasHorizontal ? dampAxis(deltaX, allowLeft, allowRight) : exponent(deltaX);\n const newDeltaY = hasVertical ? dampAxis(deltaY, allowUp, allowDown) : exponent(deltaY);\n return {\n x: newDeltaX,\n y: newDeltaY\n };\n }\n function canSwipeFromScrollEdgeOnPendingMove(scrollTarget, deltaX, deltaY) {\n // Swiping toward the axis start edge (down/right) is allowed when scrolled to the start;\n // toward the end edge (up/left) when scrolled to the end.\n const canSwipeOnAxis = (delta, scrollOffset, maxScrollOffset, allowTowardStart, allowTowardEnd) => delta > 0 && scrollOffset <= 0 && allowTowardStart || delta < 0 && scrollOffset >= Math.max(0, maxScrollOffset) && allowTowardEnd;\n if (hasVertical && deltaY !== 0) {\n return canSwipeOnAxis(deltaY, scrollTarget.scrollTop, scrollTarget.scrollHeight - scrollTarget.clientHeight, allowDown, allowUp);\n }\n if (hasHorizontal && deltaX !== 0) {\n return canSwipeOnAxis(deltaX, scrollTarget.scrollLeft, scrollTarget.scrollWidth - scrollTarget.clientWidth, allowRight, allowLeft);\n }\n return null;\n }\n const handleStart = useStableCallback(event => {\n if (!enabled) {\n return;\n }\n if (event.defaultPrevented || event.nativeEvent.defaultPrevented) {\n return;\n }\n if (!('touches' in event) && event.button !== 0) {\n return;\n }\n const startPos = getPrimaryPointerPosition(event);\n if (!startPos) {\n return;\n }\n pendingSwipeRef.current = true;\n pendingSwipeStartPosRef.current = startPos;\n swipeFromScrollableRef.current = false;\n sawPrimaryButtonsOnMoveRef.current = !('touches' in event);\n const allowedToStart = canStart ? canStart(startPos, {\n nativeEvent: event.nativeEvent,\n direction: primaryDirection\n }) : true;\n if (!allowedToStart) {\n return;\n }\n if (startSwipeAtPosition(event, startPos)) {\n clearPendingSwipeStartState();\n }\n });\n function handleMoveCore(event, position, movement) {\n if (!enabled || !isSwipingRef.current) {\n return;\n }\n const target = getTarget(event.nativeEvent);\n if (isTouchLikeEvent(event) && !swipeFromScrollableRef.current) {\n const boundaryElement = event.currentTarget;\n if (findGestureScrollableTouchTarget(target, boundaryElement)) {\n return;\n }\n }\n if (!('touches' in event)) {\n // Prevent text selection on Safari\n event.preventDefault();\n }\n if (isFirstPointerMoveRef.current) {\n isFirstPointerMoveRef.current = false;\n // Reset the drag origin to the first move's position to absorb the gap between the press and\n // the first move event — notably on iOS touch, where the first `touchmove` arrives already\n // offset from the `touchstart` — which would otherwise make the dragged element jump. This\n // only matters when an element follows the pointer; when `trackDrag` is false (e.g. the\n // swipe-area, which only opens the drawer) keep the original press position so a quick flick\n // still registers: on a low-refresh-rate display the whole travel can land in this single\n // first move, and discarding it would drop the gesture.\n if (trackDrag) {\n dragStartPosRef.current = position;\n const moveTime = getValidTimeStamp(event.timeStamp);\n if (moveTime !== null) {\n swipeStartTimeRef.current = moveTime;\n }\n lastDragSampleRef.current = null;\n hasStationarySampleRef.current = false;\n }\n }\n const clientX = position.x;\n const clientY = position.y;\n const movementX = movement.x;\n const movementY = movement.y;\n if (movementY < 0 && clientY > swipeCancelBaselineRef.current.y || movementY > 0 && clientY < swipeCancelBaselineRef.current.y) {\n swipeCancelBaselineRef.current = {\n x: swipeCancelBaselineRef.current.x,\n y: clientY\n };\n }\n if (movementX < 0 && clientX > swipeCancelBaselineRef.current.x || movementX > 0 && clientX < swipeCancelBaselineRef.current.x) {\n swipeCancelBaselineRef.current = {\n x: clientX,\n y: swipeCancelBaselineRef.current.y\n };\n }\n const deltaX = clientX - dragStartPosRef.current.x;\n const deltaY = clientY - dragStartPosRef.current.y;\n const cancelDeltaY = clientY - swipeCancelBaselineRef.current.y;\n const cancelDeltaX = clientX - swipeCancelBaselineRef.current.x;\n let candidate;\n if (!intendedSwipeDirectionRef.current) {\n if (Math.abs(deltaX) >= Math.abs(deltaY)) {\n candidate = deltaX > 0 ? 'right' : 'left';\n } else {\n candidate = deltaY > 0 ? 'down' : 'up';\n }\n if (candidate) {\n const isAllowed = candidate === 'left' && allowLeft || candidate === 'right' && allowRight || candidate === 'up' && allowUp || candidate === 'down' && allowDown;\n if (isAllowed) {\n intendedSwipeDirectionRef.current = candidate;\n maxSwipeDisplacementRef.current = getDisplacement(candidate, deltaX, deltaY);\n setCurrentSwipeDirection(candidate);\n resolveSwipeThreshold(candidate);\n }\n }\n } else {\n const direction = intendedSwipeDirectionRef.current;\n const currentDisplacement = getDisplacement(direction, cancelDeltaX, cancelDeltaY);\n if (currentDisplacement > swipeThresholdRef.current) {\n cancelledSwipeRef.current = false;\n setCurrentSwipeDirection(direction);\n } else if (!(allowLeft && allowRight) && !(allowUp && allowDown) && maxSwipeDisplacementRef.current - currentDisplacement >= REVERSE_CANCEL_THRESHOLD) {\n // Mark that a change-of-mind has occurred\n cancelledSwipeRef.current = true;\n }\n }\n const dampedDelta = applyDirectionalDamping(deltaX, deltaY);\n let newOffsetX = initialTransformRef.current.x;\n let newOffsetY = initialTransformRef.current.y;\n if (hasHorizontal) {\n newOffsetX += dampedDelta.x;\n }\n if (hasVertical) {\n newOffsetY += dampedDelta.y;\n }\n\n // Only rewrite drag styles when the drag offset actually changed. `syncDragStyles` writes the\n // raw (undamped) frozen transform and movement vars, relying on the consumer's `onProgress`\n // to overwrite them with damped styles — but `updateSwipeProgress` dedupes unchanged\n // deltas and skips `onProgress`. A move that doesn't change the offset (e.g. the cursor\n // pinned at a screen edge during an off-screen drag, jittering only on the ignored axis)\n // would otherwise reinstate the raw styles with no correction, jumping the element to the\n // undamped position.\n const previousOffset = dragOffsetRef.current;\n const offsetChanged = newOffsetX !== previousOffset.x || newOffsetY !== previousOffset.y;\n dragOffsetRef.current = {\n x: newOffsetX,\n y: newOffsetY\n };\n if (offsetChanged) {\n syncDragStyles(true);\n }\n recordDragSample({\n x: newOffsetX,\n y: newOffsetY\n }, getValidTimeStamp(event.timeStamp));\n const dragDeltaX = newOffsetX - initialTransformRef.current.x;\n const dragDeltaY = newOffsetY - initialTransformRef.current.y;\n const progressDetails = {\n deltaX: dragDeltaX,\n deltaY: dragDeltaY,\n direction: intendedSwipeDirectionRef.current\n };\n let progress = 0;\n const progressDirection = primaryDirection ?? intendedSwipeDirectionRef.current;\n if (progressDirection) {\n const size = progressDirection === 'left' || progressDirection === 'right' ? elementSizeRef.current.width : elementSizeRef.current.height;\n const scale = initialTransformRef.current.scale || 1;\n const progressDisplacement = getDisplacement(progressDirection, dragDeltaX, dragDeltaY);\n if (size > 0 && scale > 0 && progressDisplacement > 0) {\n progress = progressDisplacement / (size * scale);\n }\n }\n updateSwipeProgress(progress, progressDetails);\n }\n const handleEnd = useStableCallback(event => {\n if (!enabled) {\n return;\n }\n const resolvedDragOffset = dragOffsetRef.current;\n const resolvedInitialTransform = initialTransformRef.current;\n const releaseDeltaX = resolvedDragOffset.x - resolvedInitialTransform.x;\n const releaseDeltaY = resolvedDragOffset.y - resolvedInitialTransform.y;\n const progressDetails = {\n deltaX: releaseDeltaX,\n deltaY: releaseDeltaY,\n direction: intendedSwipeDirectionRef.current\n };\n if (!isSwipingRef.current) {\n resetPendingSwipeState();\n updateSwipeProgress(0, progressDetails);\n return;\n }\n setSwiping(false);\n resetPendingSwipeState();\n sawPrimaryButtonsOnMoveRef.current = false;\n const element = elementRef.current;\n if (element) {\n if (!('touches' in event)) {\n safelyChangePointerCapture(element, event.pointerId, 'releasePointerCapture');\n }\n }\n const deltaX = releaseDeltaX;\n const deltaY = releaseDeltaY;\n const startTime = swipeStartTimeRef.current;\n const endTime = getValidTimeStamp(event.timeStamp);\n const durationMs = startTime !== null && endTime !== null && endTime > startTime ? endTime - startTime : 0;\n const velocityDurationMs = durationMs > 0 ? Math.max(durationMs, MIN_VELOCITY_DURATION_MS) : 0;\n const velocityX = velocityDurationMs > 0 ? deltaX / velocityDurationMs : 0;\n const velocityY = velocityDurationMs > 0 ? deltaY / velocityDurationMs : 0;\n let releaseVelocityX = lastDragVelocityRef.current.x;\n let releaseVelocityY = lastDragVelocityRef.current.y;\n const lastSample = lastDragSampleRef.current;\n if (lastSample && endTime !== null && endTime >= lastSample.time) {\n const ageMs = endTime - lastSample.time;\n if (ageMs <= MAX_RELEASE_VELOCITY_AGE_MS) {\n const sampleDurationMs = Math.max(ageMs, MIN_RELEASE_VELOCITY_DURATION_MS);\n const deltaFromLastSampleX = resolvedDragOffset.x - lastSample.x;\n const deltaFromLastSampleY = resolvedDragOffset.y - lastSample.y;\n const sampleVelocityX = deltaFromLastSampleX / sampleDurationMs;\n const sampleVelocityY = deltaFromLastSampleY / sampleDurationMs;\n if (Math.abs(deltaFromLastSampleX) >= MIN_VELOCITY_SAMPLE_DISTANCE) {\n releaseVelocityX = sampleVelocityX;\n }\n if (Math.abs(deltaFromLastSampleY) >= MIN_VELOCITY_SAMPLE_DISTANCE) {\n releaseVelocityY = sampleVelocityY;\n }\n } else {\n releaseVelocityX = 0;\n releaseVelocityY = 0;\n }\n }\n const releaseDecision = onRelease?.({\n event: event.nativeEvent,\n direction: intendedSwipeDirectionRef.current,\n deltaX,\n deltaY,\n velocityX,\n velocityY,\n releaseVelocityX,\n releaseVelocityY\n });\n const hasReleaseDecision = typeof releaseDecision === 'boolean';\n if (cancelledSwipeRef.current && !hasReleaseDecision) {\n dragOffsetRef.current = {\n x: resolvedInitialTransform.x,\n y: resolvedInitialTransform.y\n };\n setCurrentSwipeDirection(undefined);\n syncDragStyles(false);\n updateSwipeProgress(0, progressDetails);\n return;\n }\n let shouldClose = false;\n let dismissDirection;\n if (hasReleaseDecision) {\n shouldClose = releaseDecision;\n dismissDirection = intendedSwipeDirectionRef.current ?? primaryDirection;\n } else {\n for (const direction of directions) {\n if (getDisplacement(direction, deltaX, deltaY) > swipeThresholdRef.current) {\n shouldClose = true;\n dismissDirection = direction;\n break;\n }\n }\n }\n if (shouldClose && dismissDirection) {\n setCurrentSwipeDirection(dismissDirection);\n setDragDismissed(true);\n syncDragStyles(false);\n onDismiss?.(event.nativeEvent, {\n direction: dismissDirection\n });\n } else {\n dragOffsetRef.current = {\n x: resolvedInitialTransform.x,\n y: resolvedInitialTransform.y\n };\n setCurrentSwipeDirection(undefined);\n syncDragStyles(false);\n updateSwipeProgress(0, progressDetails);\n }\n });\n const handleMove = useStableCallback(event => {\n const currentPos = getPrimaryPointerPosition(event);\n if (!currentPos) {\n return;\n }\n let endAfterMove = false;\n if (!('touches' in event)) {\n const hasPrimaryButton = hasPrimaryMouseButton(event.buttons);\n if (hasPrimaryButton) {\n sawPrimaryButtonsOnMoveRef.current = true;\n }\n\n // Cancel the swipe if a non-primary button takes over the interaction.\n // This handles cases where a right-click interrupts dragging.\n if (event.buttons !== 0 && !hasPrimaryButton) {\n cancelSwipeInteraction(event);\n return;\n }\n\n // A `buttons: 0` pointermove means the primary button was already released, so the gesture is\n // over even if no pointerup reached us. On fast trackpad flicks this trailing move is\n // dispatched just before pointerup; treat it as the release (mirroring touchend) instead of\n // cancelling and snapping the element back.\n if (event.buttons === 0 && sawPrimaryButtonsOnMoveRef.current) {\n if (!isSwipingRef.current) {\n // The gesture never activated — discard it.\n handleEnd(event);\n return;\n }\n // This release move can itself carry the threshold-crossing displacement (and the peak\n // release velocity), so let it flow through `handleMoveCore` below to update the drag\n // offset / velocity sample, then commit the release afterwards.\n endAfterMove = true;\n }\n }\n if (!isSwiping && pendingSwipeRef.current) {\n if (!isTouchLikeEvent(event) && (event.defaultPrevented || event.nativeEvent.defaultPrevented)) {\n resetPendingSwipeState();\n return;\n }\n const allowedToStart = canStart ? canStart(currentPos, {\n nativeEvent: event.nativeEvent,\n direction: primaryDirection\n }) : true;\n if (allowedToStart) {\n const pendingStartPos = pendingSwipeStartPosRef.current;\n let ignoreScrollableOnStart = false;\n if (isTouchLikeEvent(event)) {\n const element = elementRef.current;\n if (pendingStartPos && element) {\n const target = getTargetAtPoint(currentPos, event.nativeEvent);\n const doc = ownerDocument(element);\n const body = doc.body;\n const scrollTarget = body ? findGestureScrollableTouchTarget(target, body) : null;\n if (scrollTarget && (contains(element, scrollTarget) || contains(scrollTarget, element))) {\n const deltaX = currentPos.x - pendingStartPos.x;\n const deltaY = currentPos.y - pendingStartPos.y;\n const canSwipeFromEdge = canSwipeFromScrollEdgeOnPendingMove(scrollTarget, deltaX, deltaY);\n if (canSwipeFromEdge === false) {\n return;\n }\n if (canSwipeFromEdge === true) {\n ignoreScrollableOnStart = true;\n }\n }\n }\n }\n const started = startSwipeAtPosition(event, currentPos, {\n ignoreScrollableTarget: ignoreScrollableOnStart,\n ignoreScrollableAncestors: ignoreScrollableOnStart\n });\n if (started) {\n if (pendingStartPos && ignoreScrollableOnStart) {\n // Preserve displacement between touchstart and the move that activates swipe from\n // a scroll-edge so quick flicks can dismiss.\n clearPendingSwipeStartState();\n dragStartPosRef.current = pendingStartPos;\n swipeCancelBaselineRef.current = pendingStartPos;\n lastMovePosRef.current = pendingStartPos;\n isFirstPointerMoveRef.current = false;\n } else {\n // Start from the current in-bounds position without dropping follow-up move\n // displacement; this avoids jumps when entering from outside the element while\n // keeping swipe tracking responsive on the next move.\n clearPendingSwipeStartState();\n swipeFromScrollableRef.current = false;\n }\n }\n }\n }\n const previousPos = lastMovePosRef.current;\n const movement = previousPos === null ? {\n x: 0,\n y: 0\n } : {\n x: currentPos.x - previousPos.x,\n y: currentPos.y - previousPos.y\n };\n lastMovePosRef.current = currentPos;\n handleMoveCore(event, currentPos, movement);\n\n // `endAfterMove` is only set in the non-touch branch above; the `'touches'` guard re-narrows the\n // event type for `handleEnd` after the shared move handling has run.\n if (endAfterMove && !('touches' in event)) {\n handleEnd(event);\n }\n });\n\n // Feeds a native touchmove into the swipe pipeline. Used by consumers that claim the gesture\n // in a capture-phase listener and stop it from reaching React's delegated touch handlers.\n const moveNative = useStableCallback((nativeEvent, currentTarget) => {\n handleMove({\n touches: nativeEvent.touches,\n currentTarget,\n nativeEvent,\n defaultPrevented: nativeEvent.defaultPrevented,\n timeStamp: nativeEvent.timeStamp\n });\n });\n const getDragStyles = React.useCallback(() => {\n // Read `isSwipingRef`, not the lagging `isSwiping` state, to match the imperative writer\n // `syncDragStyles`. Otherwise a render that commits before `setSwiping(true)` flushes strips the\n // transform it just wrote, flashing the popup to its resting position for a frame.\n const swiping = isSwipingRef.current;\n const dragOffset = dragOffsetRef.current;\n const initialTransform = initialTransformRef.current;\n const deltaX = dragOffset.x - initialTransform.x;\n const deltaY = dragOffset.y - initialTransform.y;\n if (!swiping && deltaX === 0 && deltaY === 0 && !dragDismissed) {\n return {\n [movementCssVars.x]: '0px',\n [movementCssVars.y]: '0px'\n };\n }\n return {\n transition: swiping ? 'none' : undefined,\n // While swiping, freeze the element at its current visual transform so it doesn't snap to the\n // end position.\n transform: swiping ? getDragTransform(dragOffset, initialTransform.scale) : undefined,\n [movementCssVars.x]: `${deltaX}px`,\n [movementCssVars.y]: `${deltaY}px`\n };\n }, [dragDismissed, movementCssVars]);\n const getPointerProps = React.useCallback(() => {\n if (!enabled) {\n return {};\n }\n return {\n onPointerDown: handleStart,\n onPointerMove: handleMove,\n onPointerUp: handleEnd,\n onPointerCancel: handleEnd\n };\n }, [enabled, handleEnd, handleMove, handleStart]);\n const getTouchProps = React.useCallback(() => {\n if (!enabled) {\n return {};\n }\n return {\n onTouchStart: handleStart,\n onTouchMove: handleMove,\n onTouchEnd: handleEnd,\n onTouchCancel: handleEnd\n };\n }, [enabled, handleEnd, handleMove, handleStart]);\n return {\n swiping: isSwiping,\n swipeDirection: currentSwipeDirection,\n dragDismissed,\n getPointerProps,\n getTouchProps,\n moveNative,\n getDragStyles,\n reset\n };\n}","// `Document.elementFromPoint` retargets shadow content to the shadow host, which then fails\n// `contains()` checks against a popup inside that shadow root, so callers pass `getRootNode()`\n// (a document or a shadow root) rather than `ownerDocument()`.\nexport function getElementAtPoint(root, x, y) {\n return typeof root?.elementFromPoint === 'function' ? root.elementFromPoint(x, y) : null;\n}","import { ownerWindow } from '@base-ui/utils/owner';\n\n/**\n * Extracts the 2D translation and scale from the element's computed `transform` matrix.\n * Note that the `translate`, `rotate`, and `scale` longhands are separate properties and\n * are not reflected in the computed `transform` value.\n *\n * Pass `computedStyle` when the caller has already resolved it to avoid a second lookup.\n */\nexport function getElementTransform(element, computedStyle) {\n const transform = (computedStyle ?? ownerWindow(element).getComputedStyle(element)).transform;\n let translateX = 0;\n let translateY = 0;\n let scale = 1;\n if (transform && transform !== 'none') {\n const matrix = transform.match(/matrix(?:3d)?\\(([^)]+)\\)/);\n if (matrix) {\n const values = matrix[1].split(', ').map(parseFloat);\n if (values.length === 6) {\n translateX = values[4];\n translateY = values[5];\n scale = Math.sqrt(values[0] * values[0] + values[1] * values[1]);\n } else if (values.length === 16) {\n translateX = values[12];\n translateY = values[13];\n scale = values[0];\n }\n }\n }\n return {\n x: translateX,\n y: translateY,\n scale\n };\n}","/**\n * Indicates the index of the toast in the list.\n * @type {number}\n */\nexport const index = '--toast-index';\n/**\n * Indicates the vertical pixels offset of the toast in the list when expanded.\n * @type {number}\n */\nexport const offsetY = '--toast-offset-y';\n/**\n * Indicates the measured natural height of the toast in pixels.\n * @type {number}\n */\nexport const height = '--toast-height';\n/**\n * Indicates the horizontal swipe movement of the toast.\n * @type {number}\n */\nexport const swipeMovementX = '--toast-swipe-movement-x';\n/**\n * Indicates the vertical swipe movement of the toast.\n * @type {number}\n */\nexport const swipeMovementY = '--toast-swipe-movement-y';","import { TransitionStatusDataAttributes } from \"../../internals/stateAttributesMapping.mjs\";\n\n/**\n * Present when the toast is expanded in the viewport.\n * @type {boolean}\n */\nexport const expanded = 'data-expanded';\n/**\n * Present when the toast was limited because the toast limit was exceeded.\n * @type {boolean}\n */\nexport const limited = 'data-limited';\n/**\n * The type of the toast.\n * @type {string}\n */\nexport const type = 'data-type';\n/**\n * Present when the toast is being swiped.\n * @type {boolean}\n */\nexport const swiping = 'data-swiping';\n/**\n * The direction the toast was swiped.\n * @type {'up' | 'down' | 'left' | 'right'}\n */\nexport const swipeDirection = 'data-swipe-direction';\n/**\n * Present when the toast begins animating in.\n */\nexport const startingStyle = TransitionStatusDataAttributes.startingStyle;\n/**\n * Present when the toast is animating out.\n */\nexport const endingStyle = TransitionStatusDataAttributes.endingStyle;","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useToastRootContext } from \"../root/ToastRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * A container for the contents of a toast.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nexport const ToastContent = /*#__PURE__*/React.forwardRef(function ToastContent(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const {\n visibleIndex,\n expanded,\n recalculateHeight\n } = useToastRootContext();\n const contentRef = React.useRef(null);\n useIsoLayoutEffect(() => {\n recalculateHeight();\n const node = contentRef.current;\n if (!node || typeof ResizeObserver !== 'function' || typeof MutationObserver !== 'function') {\n return undefined;\n }\n const resizeObserver = new ResizeObserver(() => recalculateHeight(true));\n const mutationObserver = new MutationObserver(() => recalculateHeight(true));\n resizeObserver.observe(node);\n mutationObserver.observe(node, {\n childList: true,\n subtree: true,\n characterData: true\n });\n return () => {\n resizeObserver.disconnect();\n mutationObserver.disconnect();\n };\n }, [recalculateHeight]);\n const behind = visibleIndex > 0;\n const state = {\n expanded,\n behind\n };\n return useRenderElement('div', componentProps, {\n ref: [forwardedRef, contentRef],\n state,\n props: elementProps\n });\n});\nif (process.env.NODE_ENV !== \"production\") ToastContent.displayName = \"ToastContent\";","'use client';\n\nimport { useId } from '@base-ui/utils/useId';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useToastRootContext } from \"../root/ToastRootContext.mjs\";\nimport { hasRenderableChildren } from \"./isRenderableNode.mjs\";\n\n/**\n * Shared logic for `Toast.Title` and `Toast.Description`, which only differ by the rendered tag,\n * the fallback content, and which id setter they register with. Resolves the content and returns\n * the pieces each part passes to `useRenderElement` and `useToastLabelElement`.\n */\nexport function useToastLabelPart(idProp, childrenProp, part) {\n const {\n toast,\n setTitleId,\n setDescriptionId\n } = useToastRootContext();\n const setId = part === 'title' ? setTitleId : setDescriptionId;\n const children = childrenProp ?? (part === 'title' ? toast.title : toast.description);\n const id = useId(idProp);\n return {\n id,\n children,\n type: toast.type,\n setId\n };\n}\n\n/**\n * Mounts the evaluated label element only when it carries renderable content (so a `render` prop's\n * own children count, while a childless styling-only `render` stays conditional), registering the\n * generated id with the root while the part renders.\n */\nexport function useToastLabelElement(element, id, setId) {\n const shouldRender = hasRenderableChildren(element);\n useIsoLayoutEffect(() => {\n if (!shouldRender) {\n return undefined;\n }\n setId(id);\n return () => {\n setId(currentId => currentId === id ? undefined : currentId);\n };\n }, [shouldRender, id, setId]);\n return shouldRender ? element : null;\n}","import * as React from 'react';\nexport function isRenderableNode(node) {\n if (node == null || typeof node === 'boolean' || node === '') {\n return false;\n }\n if (Array.isArray(node)) {\n return node.some(isRenderableNode);\n }\n return true;\n}\nexport function hasRenderableChildren(element) {\n return /*#__PURE__*/React.isValidElement(element) && isRenderableNode(element.props.children);\n}","'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useToastLabelElement, useToastLabelPart } from \"../utils/useToastLabelPart.mjs\";\n\n/**\n * A title that labels the toast.\n * Renders an `<h2>` element.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nexport const ToastTitle = /*#__PURE__*/React.forwardRef(function ToastTitle(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n id: idProp,\n children: childrenProp,\n ...elementProps\n } = componentProps;\n const {\n id,\n children,\n type,\n setId\n } = useToastLabelPart(idProp, childrenProp, 'title');\n const state = {\n type\n };\n const element = useRenderElement('h2', componentProps, {\n ref: forwardedRef,\n state,\n props: {\n ...elementProps,\n id,\n children\n }\n });\n return useToastLabelElement(element, id, setId);\n});\nif (process.env.NODE_ENV !== \"production\") ToastTitle.displayName = \"ToastTitle\";","'use client';\n\nimport * as React from 'react';\nimport { useToastRootContext } from \"../root/ToastRootContext.mjs\";\nimport { useToastProviderContext } from \"../provider/ToastProviderContext.mjs\";\nimport { useButton } from \"../../internals/use-button/useButton.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * Closes the toast when clicked.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nexport const ToastClose = /*#__PURE__*/React.forwardRef(function ToastClose(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n disabled,\n nativeButton = true,\n ...elementProps\n } = componentProps;\n const store = useToastProviderContext();\n const {\n toast,\n expanded\n } = useToastRootContext();\n const [hasFocus, setHasFocus] = React.useState(false);\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton\n });\n const state = {\n type: toast.type\n };\n return useRenderElement('button', componentProps, {\n ref: [forwardedRef, buttonRef],\n state,\n props: [{\n 'aria-hidden': !expanded && !hasFocus,\n onClick() {\n store.closeToast(toast.id);\n },\n onFocus() {\n setHasFocus(true);\n },\n onBlur() {\n setHasFocus(false);\n }\n }, elementProps, getButtonProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") ToastClose.displayName = \"ToastClose\";","'use client';\n\nimport * as React from 'react';\nimport { FloatingPortalLite } from \"../../utils/FloatingPortalLite.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * A portal element that moves the viewport to a different part of the DOM.\n * By default, the portal element is appended to `<body>`.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Toast](https://base-ui.com/react/components/toast)\n */\nexport const ToastPortal = /*#__PURE__*/React.forwardRef(function ToastPortal(props, forwardedRef) {\n return /*#__PURE__*/_jsx(FloatingPortalLite, {\n ref: forwardedRef,\n ...props\n });\n});\nif (process.env.NODE_ENV !== \"production\") ToastPortal.displayName = \"ToastPortal\";","'use client';\n\nimport * as React from 'react';\nimport { useToastProviderContext } from \"./provider/ToastProviderContext.mjs\";\n/**\n * Returns the array of toasts and methods to manage them.\n */\nexport function useToastManager() {\n const store = useToastProviderContext();\n const toasts = store.useState('toasts');\n return React.useMemo(() => ({\n toasts,\n add: store.addToast,\n close: store.closeToast,\n update: store.updateToast,\n promise: store.promiseToast\n }), [toasts, store]);\n}","/* __next_internal_action_entry_do_not_use__ [{\"40116412e1ee14b4277bdce3fc91fbf9f3a827e6ee\":{\"name\":\"setPartyScopes\"}},\"web/features/outside-party/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_1=/*#__PURE__*/createServerReference(\"40116412e1ee14b4277bdce3fc91fbf9f3a827e6ee\",callServer,void 0,findSourceMapURL,\"setPartyScopes\");export{$$RSC_SERVER_ACTION_1 as setPartyScopes};","/** What the tools table says once a change is kept (gateway scopes 4.3), in a Toast. */\nimport type { ScopeChange } from './scope-change';\n\nfunction listOf(scopes: readonly string[]): string {\n return scopes.length <= 1 ? scopes.join('') : `${scopes.slice(0, -1).join(', ')} and ${scopes.at(-1) ?? ''}`;\n}\n\nfunction toolsOf(count: number): string {\n return `${String(count)} ${count === 1 ? 'tool' : 'tools'}`;\n}\n\n/** The change, and why the fleet sees it only at the proxy ship's next statement when it does. */\nexport function statedMessage(message: string, statementRefusal: string | null): string {\n return statementRefusal === null ? message : `${message}; the fleet sees it at the proxy ship's next statement: ${statementRefusal}`;\n}\n\nexport function scopesSetMessage({ scopes, how, count }: { scopes: readonly string[]; how: ScopeChange; count: number }): string {\n if (how === 'remove') {\n return `${listOf(scopes)} removed from ${toolsOf(count)}`;\n }\n if (scopes.length === 0) {\n return `${toolsOf(count)} need${count === 1 ? 's' : ''} nothing of ${count === 1 ? 'its' : 'their'} own`;\n }\n return `${listOf(scopes)} set on ${toolsOf(count)}`;\n}\n\nexport function partyScopesSetMessage({ party, scopes }: { party: string; scopes: readonly string[] }): string {\n return scopes.length === 0 ? `Every tool of ${party} needs nothing beyond reaching it` : `Every tool of ${party} needs ${listOf(scopes)}`;\n}\n\nexport function suggestionsSetMessage(groups: readonly { scopes: readonly string[]; count: number }[]): string {\n return groups.map(({ scopes, count }) => `${listOf(scopes)} set on ${toolsOf(count)}`).join('; ');\n}\n\nexport function toolsSwitchedMessage({ count, isOn, statementRefusal }: { count: number; isOn: boolean; statementRefusal: string | null }): string {\n return statedMessage(`${toolsOf(count)} switched ${isOn ? 'on' : 'off'}`, statementRefusal);\n}\n\nexport function agentScopesSetMessage({ party, scopes }: { party: string; scopes: readonly string[] }): string {\n return scopes.length === 0 ? `Every message to ${party} needs nothing beyond reaching it` : `Every message to ${party} needs ${listOf(scopes)}`;\n}\n","/** A scope the fleet lists, with its one-line description, as an approver picks it. */\nexport interface ListedScope {\n scope: string;\n description: string;\n}\n\nconst CHIP = 'inline-flex items-center rounded-md border px-2 font-mono text-caption';\n\n/**\n * What a call needs, as chips (gateway scopes 4.3): the party's set muted, a\n * tool's own plain. A scope the fleet no longer lists is marked so: no ship\n * holds it, so every call needing it is refused until it is changed.\n */\nexport function NeedsChips({ party = [], own, listed }: { party?: readonly string[]; own: readonly string[]; listed: ReadonlySet<string> | null }) {\n if (party.length === 0 && own.length === 0) {\n return <span className=\"text-muted-foreground\">Nothing</span>;\n }\n const chip = (scope: string, isParty: boolean) => {\n const isGone = listed !== null && !listed.has(scope);\n const look = isGone ? 'border-tone-attention-border bg-tone-attention-bg text-tone-attention-fg' : isParty ? 'border-transparent bg-muted text-muted-foreground' : 'border-border';\n return (\n <span key={`${isParty ? 'party' : 'own'}-${scope}`} className={`${CHIP} ${look}`} data-testid={isParty ? 'tools-table-party-scope' : 'tools-table-scope'} title={isGone ? 'No longer defined in the fleet' : isParty ? 'Every tool needs it' : undefined}>\n {scope}\n {isGone ? <span className=\"ml-1 font-sans\">(no longer defined)</span> : null}\n </span>\n );\n };\n return (\n <span className=\"flex flex-wrap gap-1\">\n {party.map((scope) => chip(scope, true))}\n {own.filter((scope) => !party.includes(scope)).map((scope) => chip(scope, false))}\n </span>\n );\n}\n","'use client';\n\nimport { Combobox } from '@base-ui/react/combobox';\n\nimport type { ListedScope } from './needs-chips';\n\ninterface ScopeItem {\n value: string;\n label: string;\n description: string;\n}\n\nconst itemOf = ({ scope, description }: ListedScope): ScopeItem => ({ value: scope, label: scope, description });\n\n/**\n * Picks several of the fleet's listed scopes (gateway scopes 4.3), searched\n * by name or description. A scope picked before that the fleet no longer\n * lists stays picked, so it can be seen and removed.\n */\nexport function ScopePicker({ label, listed, picked, onPick, isDisabled = false, testId }: { label: string; listed: readonly ListedScope[]; picked: readonly string[]; onPick: (scopes: string[]) => void; isDisabled?: boolean; testId?: string }) {\n const { contains } = Combobox.useFilter();\n const items = [...listed.map(itemOf), ...picked.filter((scope) => !listed.some((each) => each.scope === scope)).map((scope) => ({ value: scope, label: scope, description: 'No longer defined in the fleet' }))];\n const value = items.filter((item) => picked.includes(item.value));\n return (\n <Combobox.Root\n multiple\n items={items}\n value={value}\n disabled={isDisabled}\n isItemEqualToValue={(item, chosen) => item.value === chosen.value}\n onValueChange={(next: ScopeItem[], details) => {\n // Escape closes the list; it never takes back what was picked.\n if (details.reason === 'escape-key') {\n details.cancel();\n return;\n }\n onPick(next.map((item) => item.value));\n }}\n filter={(item: ScopeItem, query) => contains(item.label, query) || contains(item.description, query)}\n >\n <div className=\"grid gap-1\" data-testid={testId}>\n <Combobox.Label className=\"font-medium\">{label}</Combobox.Label>\n <Combobox.InputGroup className=\"flex min-h-9 flex-wrap items-center gap-1 rounded-md border border-input bg-background px-2 py-1\">\n <Combobox.Chips className=\"contents\">\n {value.map((item) => (\n <Combobox.Chip key={item.value} className=\"inline-flex items-center gap-1 rounded-md border border-border bg-muted px-2 font-mono text-caption\" aria-label={item.value}>\n {item.value}\n <Combobox.ChipRemove className=\"text-muted-foreground hover:text-foreground\" aria-label={`Remove ${item.value}`}>\n ×\n </Combobox.ChipRemove>\n </Combobox.Chip>\n ))}\n <Combobox.Input placeholder={value.length === 0 ? 'Search the fleet\\'s scopes' : ''} className=\"h-7 min-w-32 flex-1 bg-transparent outline-none\" />\n </Combobox.Chips>\n </Combobox.InputGroup>\n </div>\n <Combobox.Portal>\n <Combobox.Positioner sideOffset={4} className=\"z-50\">\n <Combobox.Popup className=\"max-h-72 w-(--anchor-width) overflow-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md\">\n <Combobox.Empty className=\"px-2 py-1 text-muted-foreground\">No scope listed matches.</Combobox.Empty>\n <Combobox.List>\n {(item: ScopeItem) => (\n <Combobox.Item key={item.value} value={item} className=\"grid cursor-default grid-cols-[1rem_1fr] gap-x-2 rounded px-2 py-1 data-highlighted:bg-accent\">\n <Combobox.ItemIndicator className=\"row-span-2\">✓</Combobox.ItemIndicator>\n <span className=\"col-start-2 font-mono text-code\">{item.value}</span>\n <span className=\"col-start-2 text-caption text-muted-foreground\">{item.description}</span>\n </Combobox.Item>\n )}\n </Combobox.List>\n </Combobox.Popup>\n </Combobox.Positioner>\n </Combobox.Portal>\n </Combobox.Root>\n );\n}\n","'use client';\n\nimport { Dialog } from '@base-ui/react/dialog';\nimport type { ReactNode } from 'react';\n\nimport { BUTTONS } from '../../../forms/ui/look';\nimport { ActionButton } from '../../../bridge/ui/action-button';\n\n/** Why the API refused a change in a dialog: said inline, CONFLICT with Reload, at the requirements' version the change was made on. */\nexport interface DialogRefusal {\n message: string;\n isConflict: boolean;\n version: number;\n}\n\n/** The refusal still to say: a CONFLICT is answered once the page read newer requirements. */\nexport function standingRefusal(refusal: DialogRefusal | null, version: number): DialogRefusal | null {\n return refusal?.isConflict === true && version > refusal.version ? null : refusal;\n}\n\n/**\n * A dialog of the tools table (gateway scopes 4.3): its fields, a footer\n * saying what it applies to, and its action. While the action is on its\n * way the action shows its spinner and the dialog takes no input and does\n * not close; a refusal stays inline, with Reload when the requirements\n * changed since the page was read, which shows its spinner until the page\n * read them again.\n */\nexport function TableDialog({\n isOpen,\n onClose,\n title,\n description,\n children,\n appliesTo,\n action,\n isSaving,\n refusal,\n onReload,\n isReloading,\n testId,\n}: {\n isOpen: boolean;\n onClose: () => void;\n title: string;\n description: string;\n children: ReactNode;\n appliesTo: string;\n action: { label: string; pending: string; isDisabled: boolean; onPress: () => void };\n isSaving: boolean;\n refusal: DialogRefusal | null;\n onReload: () => void;\n isReloading: boolean;\n testId: string;\n}) {\n return (\n <Dialog.Root\n open={isOpen}\n onOpenChange={(open) => {\n if (!open && !isSaving) {\n onClose();\n }\n }}\n >\n <Dialog.Portal>\n <Dialog.Backdrop className=\"fixed inset-0 z-40 bg-(--overlay)\" />\n <Dialog.Popup className=\"fixed top-1/2 left-1/2 z-50 grid max-h-[90vh] w-[min(36rem,calc(100vw-2rem))] -translate-1/2 gap-4 overflow-auto rounded-lg border border-border bg-popover p-6 text-popover-foreground shadow-lg\" data-testid={testId}>\n <div className=\"grid gap-1\">\n <Dialog.Title className=\"text-heading font-semibold\">{title}</Dialog.Title>\n <Dialog.Description className=\"text-muted-foreground\">{description}</Dialog.Description>\n </div>\n <fieldset disabled={isSaving} className=\"grid gap-4\">\n {children}\n </fieldset>\n {refusal === null ? null : (\n <div role=\"alert\" className=\"flex flex-wrap items-center justify-between gap-2 rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\" data-testid=\"tools-table-dialog-refusal\">\n <span>{refusal.message}</span>\n {refusal.isConflict ? (\n <ActionButton isPending={isReloading} pendingLabel=\"Reloading…\" onClick={onReload} data-testid=\"tools-table-reload\">\n Reload\n </ActionButton>\n ) : null}\n </div>\n )}\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <span className=\"text-muted-foreground\" data-testid=\"tools-table-applies-to\">\n {appliesTo}\n </span>\n <div className=\"flex gap-2\">\n <button type=\"button\" className={BUTTONS.secondary} disabled={isSaving} onClick={onClose}>\n Cancel\n </button>\n <ActionButton variant=\"primary\" isPending={isSaving} pendingLabel={action.pending} disabled={action.isDisabled || isReloading} onClick={action.onPress} data-testid=\"tools-table-dialog-action\">\n {action.label}\n </ActionButton>\n </div>\n </div>\n </Dialog.Popup>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","'use client';\n\nimport { Toast } from '@base-ui/react/toast';\n\n/** The toasts a party's page raised, each saying what was kept (gateway scopes 4.3). */\nexport function TableToasts() {\n const { toasts } = Toast.useToastManager();\n return (\n <Toast.Portal>\n <Toast.Viewport className=\"fixed right-4 bottom-4 z-50 grid w-[min(24rem,calc(100vw-2rem))] gap-2\">\n {toasts.map((toast) => (\n <Toast.Root key={toast.id} toast={toast} className=\"rounded-md border border-tone-ok-border bg-tone-ok-bg px-4 py-3 text-tone-ok-fg shadow-md\" data-testid=\"tools-table-toast\">\n <Toast.Content className=\"flex items-start justify-between gap-3\">\n <Toast.Title />\n <Toast.Close aria-label=\"Dismiss\">×</Toast.Close>\n </Toast.Content>\n </Toast.Root>\n ))}\n </Toast.Viewport>\n </Toast.Portal>\n );\n}\n","/** A switch: on or off, said by its look and to a screen reader, busy while its change is on its way. */\nexport function Switch({ isOn, label, isPending = false, type = 'button', onClick, testId }: { isOn: boolean; label: string; isPending?: boolean; type?: 'button' | 'submit'; onClick?: () => void; testId?: string }) {\n return (\n <button\n type={type}\n role=\"switch\"\n aria-checked={isOn}\n aria-label={label}\n aria-busy={isPending}\n disabled={isPending}\n onClick={onClick}\n data-testid={testId}\n className={`inline-flex h-5 w-9 shrink-0 items-center rounded-full border p-0.5 transition-colors disabled:opacity-60 ${isOn ? 'border-primary bg-primary' : 'border-input bg-muted'}`}\n >\n <span className={`size-3.5 rounded-full bg-background shadow-sm transition-transform ${isOn ? 'translate-x-4' : 'translate-x-0'} ${isPending ? 'animate-pulse' : ''}`} />\n </button>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"605fc52b665501784e45af8b5ef9fd6463505ed12f\":{\"name\":\"signInToParty\"}},\"web/features/outside-party/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_4=/*#__PURE__*/createServerReference(\"605fc52b665501784e45af8b5ef9fd6463505ed12f\",callServer,void 0,findSourceMapURL,\"signInToParty\");export{$$RSC_SERVER_ACTION_4 as signInToParty};","'use client';\n\nimport { Toast } from '@base-ui/react/toast';\nimport { useRouter } from 'next/navigation';\nimport { useState, useTransition } from 'react';\n\nimport { setPartyScopes } from '../../actions';\nimport { agentScopesSetMessage, statedMessage } from '../table-messages';\nimport { NeedsChips, type ListedScope } from './needs-chips';\nimport { ScopePicker } from './scope-picker';\nimport { standingRefusal, TableDialog, type DialogRefusal } from './table-dialog';\nimport { TableToasts } from './table-toasts';\n\n/**\n * An outside A2A agent's one Needs line (gateway scopes 4.3): its messages\n * name no skill, so one set of scopes guards the agent as a whole, changed\n * in a dialog on the version the page read.\n */\nexport function AgentNeeds(props: { fleetId: string; party: string; version: number; scopes: readonly string[]; listed: readonly ListedScope[] | null; canChange: boolean }) {\n return (\n <Toast.Provider>\n <AgentNeedsLine {...props} />\n <TableToasts />\n </Toast.Provider>\n );\n}\n\nfunction AgentNeedsLine({ fleetId, party, version, scopes, listed, canChange }: { fleetId: string; party: string; version: number; scopes: readonly string[]; listed: readonly ListedScope[] | null; canChange: boolean }) {\n const router = useRouter();\n const toasts = Toast.useToastManager();\n const [, startTransition] = useTransition();\n const [isReloading, startReload] = useTransition();\n const [isOpen, setIsOpen] = useState(false);\n const [picked, setPicked] = useState<string[]>([]);\n const [isSaving, setIsSaving] = useState(false);\n const [refusal, setRefusal] = useState<DialogRefusal | null>(null);\n const [keptVersion, setKeptVersion] = useState<number | null>(null);\n const [round, setRound] = useState(0);\n const [kept, setKept] = useState<{ basis: readonly string[]; scopes: readonly string[] } | null>(null);\n // What was kept shows at once; once the page read itself again, its scopes are the truth.\n const shown = kept?.basis === scopes ? kept.scopes : scopes;\n\n const save = () => {\n setIsSaving(true);\n setRefusal(null);\n const madeOn = Math.max(version, keptVersion ?? 0);\n startTransition(async () => {\n const outcome = await setPartyScopes({ fleetId, name: party, version: madeOn, party: picked, tools: [] });\n setIsSaving(false);\n if (!outcome.isOk) {\n setRefusal({ message: outcome.message, isConflict: outcome.isConflict, version: madeOn });\n return;\n }\n setKeptVersion(outcome.version);\n setKept({ basis: scopes, scopes: picked });\n setIsOpen(false);\n setRound((previous) => previous + 1);\n toasts.add({ title: statedMessage(agentScopesSetMessage({ party, scopes: picked }), outcome.statementRefusal) });\n router.refresh();\n });\n };\n\n return (\n <div key={round} className={`flex flex-wrap items-center gap-2 rounded-md ${round > 0 ? 'animate-highlight' : ''}`} data-testid=\"agent-needs\">\n <NeedsChips own={shown} listed={listed === null ? null : new Set(listed.map(({ scope }) => scope))} />\n {canChange && listed !== null ? (\n <>\n <button\n type=\"button\"\n className=\"text-primary hover:underline\"\n onClick={() => {\n setPicked([...shown]);\n setRefusal(null);\n setIsOpen(true);\n }}\n data-testid=\"agent-needs-change\"\n >\n Change…\n </button>\n <TableDialog\n isOpen={isOpen}\n onClose={() => { setIsOpen(false); }}\n title=\"Every message needs\"\n description={`The scopes a calling ship must hold to message ${party}.`}\n appliesTo={`Applies to every message to ${party}`}\n action={{ label: 'Save', pending: 'Saving…', isDisabled: false, onPress: save }}\n isSaving={isSaving}\n refusal={standingRefusal(refusal, Math.max(version, keptVersion ?? 0))}\n isReloading={isReloading}\n onReload={() => {\n startReload(() => {\n router.refresh();\n });\n }}\n testId=\"agent-needs-dialog\"\n >\n <ScopePicker label=\"Scopes\" listed={listed} picked={picked} onPick={setPicked} isDisabled={isSaving} testId=\"agent-needs-picker\" />\n </TableDialog>\n </>\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { useDialogRootContext } from \"../../dialog/root/DialogRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { popupTransitionStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport * as DrawerPopupCssVars from \"../popup/DrawerPopupCssVars.mjs\";\nimport * as DrawerBackdropCssVars from \"./DrawerBackdropCssVars.mjs\";\n\n/**\n * An overlay displayed beneath the popup.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Drawer](https://base-ui.com/react/components/drawer)\n */\nexport const DrawerBackdrop = /*#__PURE__*/React.forwardRef(function DrawerBackdrop(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n forceRender = false,\n ...elementProps\n } = componentProps;\n const store = useDialogRootContext();\n const open = store.useState('open');\n const nested = store.useState('nested');\n const mounted = store.useState('mounted');\n const transitionStatus = store.useState('transitionStatus');\n const state = {\n open,\n transitionStatus\n };\n return useRenderElement('div', componentProps, {\n state,\n ref: [store.context.backdropRef, forwardedRef],\n stateAttributesMapping: popupTransitionStateMapping,\n props: [{\n role: 'presentation',\n hidden: !mounted,\n style: {\n pointerEvents: !open ? 'none' : undefined,\n userSelect: 'none',\n WebkitUserSelect: 'none',\n [DrawerBackdropCssVars.swipeProgress]: '0',\n [DrawerPopupCssVars.swipeStrength]: '1'\n }\n }, elementProps],\n enabled: forceRender || !nested\n });\n});\nif (process.env.NODE_ENV !== \"production\") DrawerBackdrop.displayName = \"DrawerBackdrop\";","/**\n * The number of nested drawers that are currently open.\n * @type {number}\n */\nexport const nestedDrawers = '--nested-drawers';\n/**\n * The height of the drawer popup.\n * @type {CSS length}\n */\nexport const height = '--drawer-height';\n/**\n * The height of the frontmost open drawer in the current nested drawer stack.\n * @type {CSS length}\n */\nexport const frontmostHeight = '--drawer-frontmost-height';\n/**\n * The swipe movement on the X axis.\n * @type {CSS length}\n */\nexport const swipeMovementX = '--drawer-swipe-movement-x';\n/**\n * The swipe movement on the Y axis.\n * @type {CSS length}\n */\nexport const swipeMovementY = '--drawer-swipe-movement-y';\n/**\n * The snap point offset used for translating the drawer.\n * @type {CSS length}\n */\nexport const snapPointOffset = '--drawer-snap-point-offset';\n/**\n * A scalar (0.1-1) used to scale the swipe release transition duration in CSS.\n * @type {number}\n */\nexport const swipeStrength = '--drawer-swipe-strength';","/**\n * The swipe progress of the drawer gesture.\n * @type {number}\n */\nexport const swipeProgress = '--drawer-swipe-progress';","'use client';\n\nimport { DialogClose } from \"../../dialog/close/DialogClose.mjs\";\n/**\n * A button that closes the drawer.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Drawer](https://base-ui.com/react/components/drawer)\n */\nexport const DrawerClose = DialogClose;","export const DRAWER_CONTENT_ATTRIBUTE = 'data-drawer-content';","'use client';\n\nimport * as React from 'react';\nimport { useDialogRootContext } from \"../../dialog/root/DialogRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { DRAWER_CONTENT_ATTRIBUTE } from \"./drawerContentAttribute.mjs\";\n\n/**\n * A container for the drawer contents.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Drawer](https://base-ui.com/react/components/drawer)\n */\nexport const DrawerContent = /*#__PURE__*/React.forwardRef(function DrawerContent(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n useDialogRootContext();\n return useRenderElement('div', componentProps, {\n ref: forwardedRef,\n props: [{\n [DRAWER_CONTENT_ATTRIBUTE]: ''\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") DrawerContent.displayName = \"DrawerContent\";","'use client';\n\nimport * as React from 'react';\nimport { error } from '@base-ui/utils/error';\nimport { SafeReact } from '@base-ui/utils/safeReact';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { FloatingFocusManager } from \"../../floating-ui-react/index.mjs\";\nimport { useDialogRootContext } from \"../../dialog/root/DialogRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { popupTransitionStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport * as DrawerBackdropCssVars from \"../backdrop/DrawerBackdropCssVars.mjs\";\nimport * as DrawerPopupCssVars from \"./DrawerPopupCssVars.mjs\";\nimport * as DrawerPopupDataAttributes from \"./DrawerPopupDataAttributes.mjs\";\nimport { useDialogPortalContext } from \"../../dialog/portal/DialogPortalContext.mjs\";\nimport { useOpenChangeComplete } from \"../../internals/useOpenChangeComplete.mjs\";\nimport { COMPOSITE_KEYS } from \"../../internals/composite/composite.mjs\";\nimport { useDrawerRootContext } from \"../root/DrawerRootContext.mjs\";\nimport { getSnapPointSwipeMovement, useDrawerSnapPoints } from \"../root/useDrawerSnapPoints.mjs\";\nimport { useDrawerViewportContext } from \"../viewport/DrawerViewportContext.mjs\";\nimport { FOCUSABLE_POPUP_PROPS } from \"../../utils/popups/index.mjs\";\n\n// Module-level flag to ensure we only register the CSS properties once,\n// regardless of how many Drawer components are mounted.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nlet drawerSwipeVarsRegistered = false;\n\n/**\n * Removes inheritance of high-frequency drawer swipe CSS variables, which\n * reduces style recalculation cost in complex drawers with deep subtrees.\n * See https://motion.dev/blog/web-animation-performance-tier-list\n * under the \"Improving CSS variable performance\" section.\n */\nfunction removeCSSVariableInheritance() {\n if (drawerSwipeVarsRegistered) {\n return;\n }\n\n // Intentionally keep inheritance disabled on WebKit as well. Safari doesn't support\n // opting descendants back in via `--var: inherit` for custom properties registered\n // with `inherits: false`, but Drawer does not rely on descendant access to these vars\n // (unlike ScrollArea), so we keep the performance optimization enabled.\n if (typeof CSS !== 'undefined' && 'registerProperty' in CSS) {\n [DrawerPopupCssVars.swipeMovementX, DrawerPopupCssVars.swipeMovementY, DrawerPopupCssVars.snapPointOffset].forEach(name => {\n try {\n CSS.registerProperty({\n name,\n syntax: '<length>',\n inherits: false,\n initialValue: '0px'\n });\n } catch {\n /* ignore already-registered */\n }\n });\n [{\n name: DrawerBackdropCssVars.swipeProgress,\n initialValue: '0'\n }, {\n name: DrawerPopupCssVars.swipeStrength,\n initialValue: '1'\n }].forEach(({\n name,\n initialValue\n }) => {\n try {\n CSS.registerProperty({\n name,\n syntax: '<number>',\n inherits: false,\n initialValue\n });\n } catch {\n /* ignore already-registered */\n }\n });\n }\n drawerSwipeVarsRegistered = true;\n}\nconst stateAttributesMapping = {\n ...popupTransitionStateMapping,\n expanded(value) {\n return value ? {\n [DrawerPopupDataAttributes.expanded]: ''\n } : null;\n },\n nestedDrawerOpen(value) {\n return value ? {\n [DrawerPopupDataAttributes.nestedDrawerOpen]: ''\n } : null;\n },\n nestedDrawerSwiping(value) {\n return value ? {\n [DrawerPopupDataAttributes.nestedDrawerSwiping]: ''\n } : null;\n },\n swipeDirection(value) {\n return {\n [DrawerPopupDataAttributes.swipeDirection]: value\n };\n },\n swiping(value) {\n return value ? {\n [DrawerPopupDataAttributes.swiping]: ''\n } : null;\n }\n};\n\n/**\n * A container for the drawer contents.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Drawer](https://base-ui.com/react/components/drawer)\n */\nexport const DrawerPopup = /*#__PURE__*/React.forwardRef(function DrawerPopup(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n finalFocus,\n initialFocus,\n ...elementProps\n } = componentProps;\n const store = useDialogRootContext();\n const popupRef = store.context.popupRef;\n const {\n swipeDirection,\n frontmostHeight,\n hasNestedDrawer,\n nestedSwiping,\n nestedSwipeProgressStore,\n onPopupHeightChange,\n notifyParentFrontmostHeight,\n notifyParentHasNestedDrawer\n } = useDrawerRootContext();\n const descriptionElementId = store.useState('descriptionElementId');\n const disablePointerDismissal = store.useState('disablePointerDismissal');\n const floatingRootContext = store.useState('floatingRootContext');\n const rootPopupProps = store.useState('popupProps');\n const modal = store.useState('modal');\n const mounted = store.useState('mounted');\n const nested = store.useState('nested');\n const nestedOpenDrawerCount = store.useState('nestedOpenDrawerCount');\n const transitionStatus = store.useState('transitionStatus');\n const open = store.useState('open');\n const openMethod = store.useState('openMethod');\n const titleElementId = store.useState('titleElementId');\n const role = store.useState('role');\n const floatingId = floatingRootContext.useState('floatingId');\n const popupId = elementProps.id ?? floatingId;\n const swipe = useDrawerViewportContext();\n useDialogPortalContext();\n const {\n snapPoints,\n activeSnapPoint,\n activeSnapPointOffset\n } = useDrawerSnapPoints();\n const nestedDrawerOpen = nestedOpenDrawerCount > 0;\n const swiping = swipe?.swiping ?? false;\n const swipeStrength = swipe?.swipeStrength ?? null;\n const [popupHeight, setPopupHeight] = React.useState(0);\n const popupHeightRef = React.useRef(0);\n\n /* istanbul ignore else -- process.env.NODE_ENV is a build-time constant. */\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (swipe) {\n return;\n }\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n const message = '<Drawer.Popup> expected to be rendered within <Drawer.Viewport>. Omitting the ' + 'viewport disables drawer swipe handling and touch scroll locking. Wrap ' + '<Drawer.Popup> in <Drawer.Viewport>.';\n error(`${message}${ownerStackMessage}`);\n }, [swipe]);\n }\n const measureHeight = useStableCallback(() => {\n const popupElement = popupRef.current;\n if (!popupElement) {\n return;\n }\n const offsetHeight = popupElement.offsetHeight;\n\n // Only skip while the element is still actually stretched beyond its last measured height.\n if (popupHeightRef.current > 0 && frontmostHeight > popupHeightRef.current && offsetHeight > popupHeightRef.current) {\n return;\n }\n const keepHeightWhileNested = popupHeightRef.current > 0 && hasNestedDrawer;\n if (keepHeightWhileNested) {\n const oldHeight = popupHeightRef.current;\n setPopupHeight(oldHeight);\n onPopupHeightChange(oldHeight);\n return;\n }\n const nextHeight = offsetHeight;\n if (nextHeight === popupHeightRef.current) {\n return;\n }\n popupHeightRef.current = nextHeight;\n setPopupHeight(nextHeight);\n onPopupHeightChange(nextHeight);\n });\n useIsoLayoutEffect(() => {\n if (!mounted) {\n popupHeightRef.current = 0;\n setPopupHeight(0);\n onPopupHeightChange(0);\n return undefined;\n }\n const popupElement = popupRef.current;\n if (!popupElement) {\n return undefined;\n }\n removeCSSVariableInheritance();\n measureHeight();\n if (typeof ResizeObserver !== 'function') {\n return undefined;\n }\n const resizeObserver = new ResizeObserver(measureHeight);\n resizeObserver.observe(popupElement);\n return () => {\n resizeObserver.disconnect();\n };\n }, [measureHeight, mounted, nestedDrawerOpen, onPopupHeightChange, popupRef]);\n useIsoLayoutEffect(() => {\n const syncNestedSwipeProgress = () => {\n const popupElement = popupRef.current;\n if (!popupElement) {\n return;\n }\n const progress = nestedSwipeProgressStore.getSnapshot();\n if (progress > 0) {\n popupElement.style.setProperty(DrawerBackdropCssVars.swipeProgress, `${progress}`);\n } else {\n popupElement.style.setProperty(DrawerBackdropCssVars.swipeProgress, '0');\n }\n };\n syncNestedSwipeProgress();\n const unsubscribe = nestedSwipeProgressStore.subscribe(syncNestedSwipeProgress);\n const popupElement = popupRef.current;\n return () => {\n unsubscribe();\n if (popupElement) {\n popupElement.style.setProperty(DrawerBackdropCssVars.swipeProgress, '0');\n }\n };\n }, [nestedSwipeProgressStore, popupRef]);\n useIsoLayoutEffect(() => {\n if (!open) {\n return undefined;\n }\n notifyParentFrontmostHeight?.(frontmostHeight);\n return () => {\n notifyParentFrontmostHeight?.(0);\n };\n }, [frontmostHeight, open, notifyParentFrontmostHeight]);\n useIsoLayoutEffect(() => {\n if (!notifyParentHasNestedDrawer) {\n return undefined;\n }\n const present = open || transitionStatus === 'ending';\n notifyParentHasNestedDrawer(present);\n return () => {\n notifyParentHasNestedDrawer(false);\n };\n }, [notifyParentHasNestedDrawer, open, transitionStatus]);\n useOpenChangeComplete({\n open,\n ref: popupRef,\n onComplete() {\n if (open) {\n store.context.onOpenChangeComplete?.(true);\n }\n }\n });\n const resolvedInitialFocus = initialFocus === undefined ? popupRef : initialFocus;\n const setPopupElement = store.useStateSetter('popupElement');\n const state = {\n open,\n nested,\n transitionStatus,\n expanded: activeSnapPoint === 1,\n nestedDrawerOpen,\n nestedDrawerSwiping: nestedSwiping,\n swipeDirection,\n swiping\n };\n let popupHeightCssVarValue;\n const shouldUseAutoHeight = !hasNestedDrawer && transitionStatus !== 'ending';\n if (popupHeight && !shouldUseAutoHeight) {\n popupHeightCssVarValue = `${popupHeight}px`;\n }\n const shouldApplySnapPoints = snapPoints && snapPoints.length > 0 && (swipeDirection === 'down' || swipeDirection === 'up');\n let snapPointOffsetValue = null;\n if (shouldApplySnapPoints && activeSnapPointOffset !== null) {\n snapPointOffsetValue = swipeDirection === 'up' ? -activeSnapPointOffset : activeSnapPointOffset;\n }\n let dragStyles = swipe ? swipe.getDragStyles() : EMPTY_OBJECT;\n if (shouldApplySnapPoints && swipeDirection === 'down') {\n const baseOffset = activeSnapPointOffset ?? 0;\n const movementValue = Number.parseFloat(String(dragStyles[DrawerPopupCssVars.swipeMovementY]));\n if (swiping && Number.isFinite(movementValue)) {\n dragStyles = {\n ...dragStyles,\n transform: undefined,\n [DrawerPopupCssVars.swipeMovementY]: `${getSnapPointSwipeMovement(baseOffset, movementValue)}px`\n };\n } else {\n dragStyles = {\n ...dragStyles,\n transform: undefined\n };\n }\n }\n const element = useRenderElement('div', componentProps, {\n state,\n props: [rootPopupProps, {\n id: popupId,\n 'aria-labelledby': titleElementId,\n 'aria-describedby': descriptionElementId,\n role,\n ...FOCUSABLE_POPUP_PROPS,\n hidden: !mounted,\n onKeyDown(event) {\n if (COMPOSITE_KEYS.has(event.key)) {\n event.stopPropagation();\n }\n },\n style: {\n ...dragStyles,\n [DrawerBackdropCssVars.swipeProgress]: '0',\n [DrawerPopupCssVars.nestedDrawers]: nestedOpenDrawerCount,\n [DrawerPopupCssVars.height]: popupHeightCssVarValue,\n [DrawerPopupCssVars.snapPointOffset]: typeof snapPointOffsetValue === 'number' ? `${snapPointOffsetValue}px` : '0px',\n [DrawerPopupCssVars.frontmostHeight]: frontmostHeight ? `${frontmostHeight}px` : undefined,\n [DrawerPopupCssVars.swipeStrength]: typeof swipeStrength === 'number' && Number.isFinite(swipeStrength) && swipeStrength > 0 ? `${swipeStrength}` : '1'\n }\n }, elementProps],\n ref: [forwardedRef, popupRef, setPopupElement],\n stateAttributesMapping\n });\n return /*#__PURE__*/_jsx(FloatingFocusManager, {\n context: floatingRootContext,\n openInteractionType: openMethod,\n disabled: !mounted,\n closeOnFocusOut: !disablePointerDismissal,\n initialFocus: resolvedInitialFocus,\n returnFocus: finalFocus,\n modal: modal !== false,\n restoreFocus: \"popup\",\n children: element\n });\n});\nif (process.env.NODE_ENV !== \"production\") DrawerPopup.displayName = \"DrawerPopup\";","import { CommonPopupDataAttributes } from \"../../utils/popupStateMapping.mjs\";\n\n/**\n * Present when the drawer is open.\n */\nexport const open = CommonPopupDataAttributes.open;\n/**\n * Present when the drawer is closed.\n */\nexport const closed = CommonPopupDataAttributes.closed;\n/**\n * Present when the drawer begins animating in.\n */\nexport const startingStyle = CommonPopupDataAttributes.startingStyle;\n/**\n * Present when the drawer is animating out.\n */\nexport const endingStyle = CommonPopupDataAttributes.endingStyle;\n/**\n * Present when the drawer is at the expanded (full-height) snap point.\n */\nexport const expanded = 'data-expanded';\n/**\n * Present when a nested drawer is open.\n */\nexport const nestedDrawerOpen = 'data-nested-drawer-open';\n/**\n * Present when a nested drawer is being swiped.\n */\nexport const nestedDrawerSwiping = 'data-nested-drawer-swiping';\n/**\n * Present when the drawer is dismissed by swiping.\n */\nexport const swipeDismiss = 'data-swipe-dismiss';\n/**\n * Indicates the swipe direction.\n * @type {'up' | 'down' | 'left' | 'right'}\n */\nexport const swipeDirection = 'data-swipe-direction';\n/**\n * Present when the drawer is being swiped.\n */\nexport const swiping = 'data-swiping';","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const DrawerRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") DrawerRootContext.displayName = \"DrawerRootContext\";\nexport function useDrawerRootContext(optional) {\n const drawerRootContext = React.useContext(DrawerRootContext);\n if (optional !== true && drawerRootContext === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: DrawerRootContext is missing. Drawer parts must be placed within <Drawer.Root>.' : _formatErrorMessage(90));\n }\n return drawerRootContext;\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { clamp } from '@base-ui/utils/clamp';\nimport { useDialogRootContext } from \"../../dialog/root/DialogRootContext.mjs\";\nimport { useDrawerRootContext } from \"./DrawerRootContext.mjs\";\n/**\n * Resolves the vertical swipe movement for a snap point, applying square-root damping once the drag\n * overshoots the fully-open edge (`nextOffset < 0`) so the popup resists travelling past it.\n */\nexport function getSnapPointSwipeMovement(baseOffset, movementValue) {\n const nextOffset = baseOffset + movementValue;\n if (nextOffset >= 0) {\n return movementValue;\n }\n return -Math.sqrt(-nextOffset) - baseOffset;\n}\nfunction resolveSnapPointValue(snapPoint, viewportHeight, rootFontSize) {\n if (!Number.isFinite(viewportHeight) || viewportHeight <= 0) {\n return null;\n }\n if (typeof snapPoint === 'number') {\n if (!Number.isFinite(snapPoint)) {\n return null;\n }\n if (snapPoint <= 1) {\n return clamp(snapPoint, 0, 1) * viewportHeight;\n }\n return snapPoint;\n }\n const trimmed = snapPoint.trim();\n if (trimmed.endsWith('px')) {\n const value = Number.parseFloat(trimmed);\n return Number.isFinite(value) ? value : null;\n }\n if (trimmed.endsWith('rem')) {\n const value = Number.parseFloat(trimmed);\n return Number.isFinite(value) ? value * rootFontSize : null;\n }\n return null;\n}\n\n/**\n * Returns the index of the value closest to `target`, or `-1` if `values` is empty.\n */\nexport function closestSnapPointIndex(values, target) {\n let closestIndex = -1;\n let closestDistance = Infinity;\n for (let index = 0; index < values.length; index += 1) {\n const distance = Math.abs(values[index] - target);\n if (distance < closestDistance) {\n closestDistance = distance;\n closestIndex = index;\n }\n }\n return closestIndex;\n}\nexport function useDrawerSnapPoints() {\n const store = useDialogRootContext();\n const {\n snapPoints,\n activeSnapPoint,\n setActiveSnapPoint,\n popupHeight\n } = useDrawerRootContext();\n const viewportElement = store.useState('viewportElement');\n const [viewportHeight, setViewportHeight] = React.useState(0);\n const [rootFontSize, setRootFontSize] = React.useState(16);\n const measureViewportHeight = useStableCallback(() => {\n const doc = ownerDocument(viewportElement);\n const html = doc.documentElement;\n setViewportHeight(viewportElement ? viewportElement.offsetHeight : html.clientHeight);\n const fontSize = parseFloat(getComputedStyle(html).fontSize);\n if (Number.isFinite(fontSize)) {\n setRootFontSize(fontSize);\n }\n });\n useIsoLayoutEffect(() => {\n measureViewportHeight();\n if (!viewportElement || typeof ResizeObserver !== 'function') {\n return undefined;\n }\n const resizeObserver = new ResizeObserver(measureViewportHeight);\n resizeObserver.observe(viewportElement);\n return () => {\n resizeObserver.disconnect();\n };\n }, [measureViewportHeight, viewportElement]);\n const resolvedSnapPoints = React.useMemo(() => {\n if (!snapPoints || snapPoints.length === 0 || viewportHeight <= 0 || popupHeight <= 0) {\n return [];\n }\n const maxHeight = Math.min(popupHeight, viewportHeight);\n const resolved = snapPoints.map(value => {\n const resolvedHeight = resolveSnapPointValue(value, viewportHeight, rootFontSize);\n if (resolvedHeight === null) {\n return null;\n }\n const clampedHeight = clamp(resolvedHeight, 0, maxHeight);\n return {\n value,\n height: clampedHeight,\n offset: Math.max(0, popupHeight - clampedHeight)\n };\n }).filter(point => Boolean(point));\n if (resolved.length <= 1) {\n return resolved;\n }\n const deduped = [];\n const seenHeights = [];\n for (let index = resolved.length - 1; index >= 0; index -= 1) {\n const point = resolved[index];\n const isDuplicate = seenHeights.some(height => Math.abs(height - point.height) <= 1);\n if (isDuplicate) {\n continue;\n }\n seenHeights.push(point.height);\n deduped.push(point);\n }\n deduped.reverse();\n return deduped;\n }, [popupHeight, rootFontSize, snapPoints, viewportHeight]);\n const resolvedActiveSnapPoint = React.useMemo(() => {\n if (activeSnapPoint === null) {\n return undefined;\n }\n const exactMatch = resolvedSnapPoints.find(point => Object.is(point.value, activeSnapPoint));\n if (exactMatch) {\n return exactMatch;\n }\n const maxHeight = Math.min(popupHeight, viewportHeight);\n const resolvedHeight = resolveSnapPointValue(activeSnapPoint, viewportHeight, rootFontSize);\n if (resolvedHeight === null) {\n return undefined;\n }\n const clampedHeight = clamp(resolvedHeight, 0, maxHeight);\n return resolvedSnapPoints[closestSnapPointIndex(resolvedSnapPoints.map(point => point.height), clampedHeight)];\n }, [activeSnapPoint, popupHeight, resolvedSnapPoints, rootFontSize, viewportHeight]);\n return {\n snapPoints,\n activeSnapPoint,\n setActiveSnapPoint,\n popupHeight,\n viewportHeight,\n resolvedSnapPoints,\n activeSnapPointOffset: resolvedActiveSnapPoint?.offset ?? null\n };\n}","'use client';\n\nimport * as React from 'react';\nexport const DrawerViewportContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") DrawerViewportContext.displayName = \"DrawerViewportContext\";\nexport function useDrawerViewportContext() {\n return React.useContext(DrawerViewportContext);\n}","'use client';\n\nimport { DialogPortal } from \"../../dialog/portal/DialogPortal.mjs\";\n/**\n * A portal element that moves the popup to a different part of the DOM.\n * By default, the portal element is appended to `<body>`.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Drawer](https://base-ui.com/react/components/drawer)\n */\nexport const DrawerPortal = DialogPortal;","'use client';\n\nvar _DrawerProviderReport, _DrawerProviderReport2;\nimport * as React from 'react';\nimport { addEventListener } from '@base-ui/utils/addEventListener';\nimport { NOOP } from '@base-ui/utils/empty';\nimport { useControlled } from '@base-ui/utils/useControlled';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { ownerWindow } from '@base-ui/utils/owner';\nimport { platform } from '@base-ui/utils/platform';\nimport { DrawerRootContext, useDrawerRootContext } from \"./DrawerRootContext.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useDialogRootContext } from \"../../dialog/root/DialogRootContext.mjs\";\nimport { useRenderDialogRoot } from \"../../dialog/root/useRenderDialogRoot.mjs\";\nimport { useDrawerProviderContext } from \"../provider/DrawerProviderContext.mjs\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Groups all parts of the drawer.\n * Doesn't render its own HTML element.\n *\n * Documentation: [Base UI Drawer](https://base-ui.com/react/components/drawer)\n */\nexport function DrawerRoot(props) {\n const {\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n onOpenChangeComplete,\n disablePointerDismissal = false,\n modal = true,\n actionsRef,\n handle,\n triggerId: triggerIdProp,\n defaultTriggerId: defaultTriggerIdProp = null,\n swipeDirection = 'down',\n snapToSequentialPoints = false,\n snapPoints,\n snapPoint: snapPointProp,\n defaultSnapPoint,\n onSnapPointChange\n } = props;\n const parentDrawerRootContext = useDrawerRootContext(true);\n const notifyParentSwipeProgressChange = parentDrawerRootContext?.onNestedSwipeProgressChange;\n const notifyParentFrontmostHeight = parentDrawerRootContext?.onNestedFrontmostHeightChange;\n const notifyParentSwipingChange = parentDrawerRootContext?.onNestedSwipingChange;\n const notifyParentHasNestedDrawer = parentDrawerRootContext?.onNestedDrawerPresenceChange;\n const [popupHeight, setPopupHeight] = React.useState(0);\n const [frontmostHeight, setFrontmostHeight] = React.useState(0);\n const [hasNestedDrawer, setHasNestedDrawer] = React.useState(false);\n const [nestedSwiping, setNestedSwiping] = React.useState(false);\n const [nestedSwipeProgressStore] = React.useState(createNestedSwipeProgressStore);\n const resolvedDefaultSnapPoint = defaultSnapPoint !== undefined ? defaultSnapPoint : snapPoints?.[0] ?? null;\n const isSnapPointControlled = snapPointProp !== undefined;\n const [activeSnapPoint, setActiveSnapPointUnwrapped] = useControlled({\n controlled: snapPointProp,\n default: resolvedDefaultSnapPoint,\n name: 'Drawer',\n state: 'snapPoint'\n });\n const isNestedDrawerOpenRef = React.useRef(false);\n const swipeAreaActiveRef = React.useRef(false);\n const setActiveSnapPoint = useStableCallback((nextSnapPoint, eventDetails) => {\n const resolvedEventDetails = eventDetails ?? createChangeEventDetails(REASONS.none);\n onSnapPointChange?.(nextSnapPoint, resolvedEventDetails);\n if (resolvedEventDetails.isCanceled) {\n return;\n }\n setActiveSnapPointUnwrapped(nextSnapPoint);\n });\n const resolvedActiveSnapPoint = React.useMemo(() => {\n if (isSnapPointControlled) {\n return activeSnapPoint;\n }\n if (!snapPoints || snapPoints.length === 0) {\n return activeSnapPoint;\n }\n if (activeSnapPoint === null || !snapPoints.some(snapPoint => Object.is(snapPoint, activeSnapPoint))) {\n return resolvedDefaultSnapPoint;\n }\n return activeSnapPoint;\n }, [activeSnapPoint, isSnapPointControlled, resolvedDefaultSnapPoint, snapPoints]);\n const onPopupHeightChange = useStableCallback(height => {\n setPopupHeight(height);\n if (!isNestedDrawerOpenRef.current && height > 0) {\n setFrontmostHeight(height);\n }\n });\n const onNestedFrontmostHeightChange = useStableCallback(height => {\n if (height > 0) {\n isNestedDrawerOpenRef.current = true;\n setFrontmostHeight(height);\n return;\n }\n isNestedDrawerOpenRef.current = false;\n if (popupHeight > 0) {\n setFrontmostHeight(popupHeight);\n }\n });\n const onNestedDrawerPresenceChange = useStableCallback(present => {\n setHasNestedDrawer(present);\n });\n const onNestedSwipeProgressChange = useStableCallback(progress => {\n nestedSwipeProgressStore.set(progress);\n notifyParentSwipeProgressChange?.(progress);\n });\n const onNestedSwipingChange = useStableCallback(swiping => {\n setNestedSwiping(swiping);\n notifyParentSwipingChange?.(swiping);\n });\n const handleOpenChange = useStableCallback((nextOpen, eventDetails) => {\n onOpenChange?.(nextOpen, eventDetails);\n if (eventDetails.isCanceled) {\n return;\n }\n if (!nextOpen && snapPoints && snapPoints.length > 0) {\n setActiveSnapPoint(resolvedDefaultSnapPoint, createChangeEventDetails(eventDetails.reason, eventDetails.event, eventDetails.trigger));\n }\n });\n const contextValue = React.useMemo(() => ({\n swipeDirection,\n swipeAreaActiveRef,\n snapToSequentialPoints,\n snapPoints,\n activeSnapPoint: resolvedActiveSnapPoint,\n setActiveSnapPoint,\n frontmostHeight,\n popupHeight,\n hasNestedDrawer,\n nestedSwiping,\n nestedSwipeProgressStore,\n onNestedDrawerPresenceChange,\n onPopupHeightChange,\n onNestedFrontmostHeightChange,\n onNestedSwipingChange,\n onNestedSwipeProgressChange,\n notifyParentFrontmostHeight,\n notifyParentSwipingChange,\n notifyParentSwipeProgressChange,\n notifyParentHasNestedDrawer\n }), [resolvedActiveSnapPoint, frontmostHeight, hasNestedDrawer, nestedSwiping, nestedSwipeProgressStore, notifyParentHasNestedDrawer, notifyParentSwipeProgressChange, notifyParentSwipingChange, notifyParentFrontmostHeight, onNestedDrawerPresenceChange, onNestedFrontmostHeightChange, onNestedSwipeProgressChange, onNestedSwipingChange, onPopupHeightChange, popupHeight, setActiveSnapPoint, snapPoints, snapToSequentialPoints, swipeAreaActiveRef, swipeDirection]);\n const resolvedChildren = typeof children === 'function' ? payload => /*#__PURE__*/_jsxs(React.Fragment, {\n children: [_DrawerProviderReport || (_DrawerProviderReport = /*#__PURE__*/_jsx(DrawerProviderReporter, {})), children(payload)]\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [_DrawerProviderReport2 || (_DrawerProviderReport2 = /*#__PURE__*/_jsx(DrawerProviderReporter, {})), children]\n });\n const dialog = useRenderDialogRoot('drawer', {\n open: openProp,\n defaultOpen,\n onOpenChange: handleOpenChange,\n onOpenChangeComplete,\n disablePointerDismissal,\n modal,\n actionsRef,\n handle,\n triggerId: triggerIdProp,\n defaultTriggerId: defaultTriggerIdProp,\n children: resolvedChildren\n });\n return /*#__PURE__*/_jsx(DrawerRootContext.Provider, {\n value: contextValue,\n children: dialog\n });\n}\nfunction createNestedSwipeProgressStore() {\n let progress = 0;\n const listeners = new Set();\n return {\n getSnapshot: () => progress,\n set(nextProgress) {\n const resolved = Number.isFinite(nextProgress) ? nextProgress : 0;\n if (resolved === progress) {\n return;\n }\n progress = resolved;\n listeners.forEach(listener => {\n listener();\n });\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n }\n };\n}\nfunction DrawerProviderReporter() {\n const providerContext = useDrawerProviderContext();\n const store = useDialogRootContext(false);\n const setDrawerOpen = providerContext?.setDrawerOpen;\n const removeDrawer = providerContext?.removeDrawer;\n const open = store.useState('open');\n const nestedOpenDialogCount = store.useState('nestedOpenDialogCount');\n const popupElement = store.useState('popupElement');\n const isTopmost = nestedOpenDialogCount === 0;\n useIsoLayoutEffect(() => {\n if (!removeDrawer) {\n return undefined;\n }\n return () => {\n removeDrawer(store);\n };\n }, [removeDrawer, store]);\n useIsoLayoutEffect(() => {\n setDrawerOpen?.(store, open);\n }, [open, setDrawerOpen, store]);\n React.useEffect(() => {\n // CloseWatcher enables the Android back gesture (Chromium-only).\n // Keep this Android-only for now to avoid interfering with Escape/nesting semantics on desktop due to `useDismiss`.\n if (!open || !isTopmost || !platform.os.android) {\n return undefined;\n }\n const win = ownerWindow(popupElement);\n const CloseWatcherCtor = win.CloseWatcher;\n if (!CloseWatcherCtor) {\n return undefined;\n }\n function handleCancel(event) {\n if (!store.select('open')) {\n return;\n }\n const eventDetails = createChangeEventDetails(REASONS.closeWatcher, event);\n if (!event.cancelable) {\n // The browser lets only one close request per user activation be prevented; any further\n // request closes the drawer regardless, like a native `<dialog>`.\n eventDetails.cancel = NOOP;\n }\n store.setOpen(false, eventDetails);\n if (eventDetails.isCanceled) {\n // Keeps this watcher active for the next close request.\n event.preventDefault();\n }\n }\n const closeWatcher = new CloseWatcherCtor();\n // The browser destroys the watcher before `close` fires, so the request is handled from\n // `cancel`, where it can still be prevented.\n const unsubscribe = addEventListener(closeWatcher, 'cancel', handleCancel);\n return () => {\n unsubscribe();\n closeWatcher.destroy();\n };\n }, [store, isTopmost, open, popupElement]);\n return null;\n}","'use client';\n\nimport * as React from 'react';\nexport const DrawerProviderContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") DrawerProviderContext.displayName = \"DrawerProviderContext\";\nexport function useDrawerProviderContext() {\n return React.useContext(DrawerProviderContext);\n}","'use client';\n\nimport { DialogTitle } from \"../../dialog/title/DialogTitle.mjs\";\n/**\n * A heading that labels the drawer.\n * Renders an `<h2>` element.\n *\n * Documentation: [Base UI Drawer](https://base-ui.com/react/components/drawer)\n */\nexport const DrawerTitle = DialogTitle;","'use client';\n\nimport { DialogTrigger } from \"../../dialog/trigger/DialogTrigger.mjs\";\n/**\n * A button that opens the drawer.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Drawer](https://base-ui.com/react/components/drawer)\n */\nexport const DrawerTrigger = DialogTrigger;","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { isElement } from '@floating-ui/utils/dom';\nimport { addEventListener } from '@base-ui/utils/addEventListener';\nimport { ownerDocument, ownerWindow } from '@base-ui/utils/owner';\nimport { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { clamp } from '@base-ui/utils/clamp';\nimport { useDialogRootContext } from \"../../dialog/root/DialogRootContext.mjs\";\nimport { DialogViewport } from \"../../dialog/viewport/DialogViewport.mjs\";\nimport * as DialogViewportDataAttributes from \"../../dialog/viewport/DialogViewportDataAttributes.mjs\";\nimport { mergeProps } from \"../../merge-props/index.mjs\";\nimport { useDrawerRootContext } from \"../root/DrawerRootContext.mjs\";\nimport { closestSnapPointIndex, getSnapPointSwipeMovement, useDrawerSnapPoints } from \"../root/useDrawerSnapPoints.mjs\";\nimport { useDrawerProviderContext } from \"../provider/DrawerProviderContext.mjs\";\nimport { getDisplacement, useSwipeDismiss } from \"../../utils/useSwipeDismiss.mjs\";\nimport * as DrawerPopupCssVars from \"../popup/DrawerPopupCssVars.mjs\";\nimport * as DrawerPopupDataAttributes from \"../popup/DrawerPopupDataAttributes.mjs\";\nimport * as DrawerBackdropCssVars from \"../backdrop/DrawerBackdropCssVars.mjs\";\nimport { DRAWER_CONTENT_ATTRIBUTE } from \"../content/drawerContentAttribute.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { activeElement, closest, contains, getTarget } from \"../../floating-ui-react/utils.mjs\";\nimport { DrawerViewportContext } from \"./DrawerViewportContext.mjs\";\nimport { TransitionStatusDataAttributes } from \"../../internals/stateAttributesMapping.mjs\";\nimport { findScrollableTouchTarget } from \"../../utils/scrollable.mjs\";\nimport { BASE_UI_SWIPE_IGNORE_ATTRIBUTE, BASE_UI_SWIPE_IGNORE_SELECTOR } from \"../../internals/constants.mjs\";\nimport { getElementAtPoint } from \"../../utils/getElementAtPoint.mjs\";\nimport { useDrawerVirtualKeyboardContext } from \"../virtual-keyboard-provider/DrawerVirtualKeyboardContext.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst MIN_SWIPE_THRESHOLD = 10;\nconst FAST_SWIPE_VELOCITY = 0.5;\nconst SNAP_VELOCITY_THRESHOLD = 0.5;\nconst SNAP_VELOCITY_MULTIPLIER = 300;\nconst MAX_SNAP_VELOCITY = 4;\nconst MIN_SWIPE_RELEASE_VELOCITY = 0.2;\nconst MAX_SWIPE_RELEASE_VELOCITY = 4;\nconst MIN_SWIPE_RELEASE_DURATION_MS = 80;\nconst MAX_SWIPE_RELEASE_DURATION_MS = 360;\nconst MIN_SWIPE_RELEASE_SCALAR = 0.1;\nconst MAX_SWIPE_RELEASE_SCALAR = 1;\nconst AXIS_LOCK_SLOP = 6;\nconst AXIS_LOCK_BIAS = 2;\nconst DRAWER_CONTENT_SELECTOR = `[${DRAWER_CONTENT_ATTRIBUTE}]`;\nconst AXIS_SWIPE_IGNORE_SELECTORS = {\n horizontal: `[${BASE_UI_SWIPE_IGNORE_ATTRIBUTE}=\"x\"]`,\n vertical: `[${BASE_UI_SWIPE_IGNORE_ATTRIBUTE}=\"y\"]`\n};\n/**\n * A positioning container for the drawer popup that can be made scrollable.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Drawer](https://base-ui.com/react/components/drawer)\n */\nexport const DrawerViewport = /*#__PURE__*/React.forwardRef(function DrawerViewport(props, forwardedRef) {\n const {\n render,\n className,\n style,\n children,\n ...elementProps\n } = props;\n const store = useDialogRootContext();\n const popupRef = store.context.popupRef;\n const backdropRef = store.context.backdropRef;\n const {\n swipeDirection,\n notifyParentSwipingChange,\n notifyParentSwipeProgressChange,\n frontmostHeight,\n snapToSequentialPoints,\n swipeAreaActiveRef\n } = useDrawerRootContext();\n const providerContext = useDrawerProviderContext();\n const {\n snapPoints,\n resolvedSnapPoints,\n activeSnapPoint,\n activeSnapPointOffset,\n setActiveSnapPoint,\n popupHeight\n } = useDrawerSnapPoints();\n const open = store.useState('open');\n const mounted = store.useState('mounted');\n const nested = store.useState('nested');\n const nestedOpenDrawerCount = store.useState('nestedOpenDrawerCount');\n const viewportElement = store.useState('viewportElement');\n const popupElementState = store.useState('popupElement');\n const visualStateStore = providerContext?.visualStateStore;\n const nestedDrawerOpen = nestedOpenDrawerCount > 0;\n const scrollAxis = swipeDirection === 'left' || swipeDirection === 'right' ? 'horizontal' : 'vertical';\n const isVerticalScrollAxis = scrollAxis === 'vertical';\n const crossScrollAxis = isVerticalScrollAxis ? 'horizontal' : 'vertical';\n const [swipeRelease, setSwipeRelease] = React.useState(null);\n const pendingSwipeCloseSnapPointRef = React.useRef(undefined);\n const resetSwipeRef = React.useRef(null);\n const controlledDismissFrame = useAnimationFrame();\n const swipingRef = React.useRef(false);\n const nestedSwipeActiveRef = React.useRef(false);\n const lastPointerTypeRef = React.useRef('');\n const ignoreNextTouchStartFromPenRef = React.useRef(false);\n const ignoreTouchSwipeRef = React.useRef(false);\n const touchScrollStateRef = React.useRef(null);\n const virtualKeyboard = useDrawerVirtualKeyboardContext();\n const snapPointRange = React.useMemo(() => {\n if (!snapPoints || snapPoints.length < 2 || resolvedSnapPoints.length < 2 || swipeDirection !== 'down' && swipeDirection !== 'up') {\n return null;\n }\n const offsets = resolvedSnapPoints.map(point => point.offset).sort((a, b) => a - b);\n const minOffset = offsets[0];\n const nextOffset = offsets[1];\n const range = nextOffset - minOffset;\n return {\n minOffset,\n range\n };\n }, [resolvedSnapPoints, snapPoints, swipeDirection]);\n const snapPointProgress = React.useMemo(() => {\n if (!snapPointRange || activeSnapPointOffset === null) {\n return null;\n }\n return clamp((activeSnapPointOffset - snapPointRange.minOffset) / snapPointRange.range, 0, 1);\n }, [activeSnapPointOffset, snapPointRange]);\n const swipeDirections = React.useMemo(() => {\n if (snapPoints && snapPoints.length > 0 && (swipeDirection === 'down' || swipeDirection === 'up')) {\n return swipeDirection === 'down' ? ['down', 'up'] : ['up', 'down'];\n }\n return [swipeDirection];\n }, [snapPoints, swipeDirection]);\n const setSwipeDismissed = useStableCallback(dismissed => {\n popupRef.current?.toggleAttribute(DrawerPopupDataAttributes.swipeDismiss, dismissed);\n backdropRef.current?.toggleAttribute(DrawerPopupDataAttributes.swipeDismiss, dismissed);\n });\n const clearSwipeRelease = useStableCallback(() => {\n setSwipeDismissed(false);\n popupRef.current?.removeAttribute(TransitionStatusDataAttributes.endingStyle);\n setSwipeRelease(null);\n });\n const finishNestedSwipe = useStableCallback(() => {\n if (!nestedSwipeActiveRef.current) {\n return;\n }\n nestedSwipeActiveRef.current = false;\n notifyParentSwipingChange?.(false);\n });\n const applySwipeProgress = useStableCallback((resolvedProgress, shouldTrackProgress, notifyParent) => {\n const isActive = open && !nested && shouldTrackProgress;\n const swipeProgress = isActive ? resolvedProgress : 0;\n const nestedSwipeProgress = open && shouldTrackProgress ? resolvedProgress : 0;\n if (notifyParent && notifyParentSwipeProgressChange) {\n notifyParentSwipeProgressChange(nestedSwipeProgress);\n if (nestedSwipeProgress <= 0) {\n finishNestedSwipe();\n }\n }\n visualStateStore?.set({\n swipeProgress,\n frontmostHeight: swipeProgress > 0 ? frontmostHeight : 0\n });\n const backdropElement = backdropRef.current;\n if (!backdropElement) {\n return;\n }\n const showProgress = isActive && swipeProgress > 0;\n backdropElement.style.setProperty(DrawerBackdropCssVars.swipeProgress, showProgress ? `${swipeProgress}` : '0');\n if (showProgress && frontmostHeight > 0) {\n backdropElement.style.setProperty(DrawerPopupCssVars.height, `${frontmostHeight}px`);\n } else {\n backdropElement.style.removeProperty(DrawerPopupCssVars.height);\n }\n });\n function resolveSwipeRelease(popupElement, direction, deltaX, deltaY, velocityX, velocityY, releaseVelocityX, releaseVelocityY) {\n const size = getBaseSwipeSize(popupElement, direction);\n if (size <= 0) {\n return null;\n }\n\n // The snap point base offset shifts the popup along the dismiss direction for both\n // `down` (+offset) and `up` (-offset), so it always adds to the directional translation.\n const snapPointBaseOffset = (direction === 'down' || direction === 'up') && snapPoints && snapPoints.length > 0 ? activeSnapPointOffset ?? 0 : 0;\n const translationAlongDirection = snapPointBaseOffset + getDisplacement(direction, deltaX, deltaY);\n const remainingDistance = Math.max(0, size - translationAlongDirection);\n if (remainingDistance <= 0) {\n return null;\n }\n const releaseVelocity = getDisplacement(direction, releaseVelocityX, releaseVelocityY);\n const directionalVelocity = Math.abs(releaseVelocity) > 0 ? releaseVelocity : getDisplacement(direction, velocityX, velocityY);\n if (directionalVelocity <= MIN_SWIPE_RELEASE_VELOCITY) {\n return null;\n }\n const clampedVelocity = clamp(directionalVelocity, MIN_SWIPE_RELEASE_VELOCITY, MAX_SWIPE_RELEASE_VELOCITY);\n // The gesture hook supplies finite deltas and velocities. The guards above keep the remaining\n // distance and divisor positive, so the duration stays within [MIN, MAX] and the resulting\n // scalar within (0, 1].\n const durationMs = clamp(remainingDistance / clampedVelocity, MIN_SWIPE_RELEASE_DURATION_MS, MAX_SWIPE_RELEASE_DURATION_MS);\n const normalizedDuration = (durationMs - MIN_SWIPE_RELEASE_DURATION_MS) / (MAX_SWIPE_RELEASE_DURATION_MS - MIN_SWIPE_RELEASE_DURATION_MS);\n return MIN_SWIPE_RELEASE_SCALAR + normalizedDuration * (MAX_SWIPE_RELEASE_SCALAR - MIN_SWIPE_RELEASE_SCALAR);\n }\n function updateNestedSwipeActive(details) {\n if (nestedSwipeActiveRef.current || !details) {\n return;\n }\n const direction = details.direction ?? swipeDirection;\n const delta = getDisplacement(direction, details.deltaX, details.deltaY);\n if (Math.abs(delta) < MIN_SWIPE_THRESHOLD) {\n return;\n }\n nestedSwipeActiveRef.current = true;\n notifyParentSwipingChange?.(true);\n }\n const swipe = useSwipeDismiss({\n enabled: mounted && !nestedDrawerOpen,\n directions: swipeDirections,\n elementRef: store.context.popupRef,\n ignoreSelectorWhenTouch: false,\n ignoreScrollableAncestors: true,\n movementCssVars: {\n x: DrawerPopupCssVars.swipeMovementX,\n y: DrawerPopupCssVars.swipeMovementY\n },\n onSwipeStart(event) {\n if ('touches' in event || event.pointerType === 'touch') {\n return;\n }\n const popupElement = popupRef.current;\n const doc = ownerDocument(popupElement);\n const selection = doc.getSelection?.();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = isElement(selection.anchorNode) ? selection.anchorNode : selection.anchorNode?.parentElement;\n const focusElement = isElement(selection.focusNode) ? selection.focusNode : selection.focusNode?.parentElement;\n if (!contains(popupElement, anchorElement) && !contains(popupElement, focusElement)) {\n return;\n }\n selection.removeAllRanges();\n },\n onSwipingChange(swiping) {\n swipingRef.current = swiping;\n setBackdropSwipingAttribute(store.context.backdropRef.current, swiping);\n if (!swiping && !notifyParentSwipeProgressChange) {\n finishNestedSwipe();\n }\n },\n swipeThreshold({\n element,\n direction\n }) {\n return getBaseSwipeThreshold(element, direction);\n },\n canStart(position, details) {\n const popupElement = store.context.popupRef.current;\n if (!popupElement) {\n return false;\n }\n const nativeEvent = details.nativeEvent;\n const touchLike = 'touches' in nativeEvent || nativeEvent.pointerType === 'touch';\n const touchState = touchLike ? touchScrollStateRef.current : null;\n const doc = popupElement.ownerDocument;\n const elementAtPoint = getElementAtPoint(popupElement.getRootNode(), position.x, position.y);\n // Activation can be deferred until after a touch that started inside has left the popup.\n if (!touchState?.startedInPopup && !contains(popupElement, elementAtPoint)) {\n return false;\n }\n if (touchLike && shouldIgnoreSwipeForTextSelection(doc, popupElement)) {\n return false;\n }\n\n // Over a cross-axis gesture target, stay pending until the drawer axis wins the gesture.\n // Starting on touchstart would leave the drawer swiping (and settling on release) while the\n // cross-axis target handles the drag.\n if (touchState?.hasCrossAxisGestureTarget && !touchState.drawerAxisAttributed && touchState.allowSwipe !== true) {\n return false;\n }\n return true;\n },\n onProgress(progress, details) {\n const swiping = swipingRef.current;\n if (swiping) {\n updateNestedSwipeActive(details);\n }\n const hasSnapPoints = Boolean(snapPoints && snapPoints.length > 0);\n if (swiping && swipeDirection === 'down' && hasSnapPoints && details) {\n const popupElement = store.context.popupRef.current;\n if (popupElement) {\n popupElement.style.removeProperty('transform');\n popupElement.style.setProperty(DrawerPopupCssVars.swipeMovementY, `${getSnapPointSwipeMovement(activeSnapPointOffset ?? 0, details.deltaY)}px`);\n }\n }\n let resolvedProgress = progress;\n if (snapPointRange && popupHeight > 0) {\n const baseOffset = activeSnapPointOffset ?? snapPointRange.minOffset;\n const offsetToProgress = nextOffset => clamp((nextOffset - snapPointRange.minOffset) / snapPointRange.range, 0, 1);\n\n // Outside a drag the hook still reports the last drag deltas, both after a release and\n // on a gesture that never started (e.g. a press inside `Drawer.Content`). Recomputing\n // from them would re-apply drag progress to a drawer that rests on its snap point.\n if (swiping && details && Number.isFinite(details.deltaY)) {\n resolvedProgress = offsetToProgress(clamp(baseOffset + details.deltaY, 0, popupHeight));\n } else if (snapPointProgress !== null) {\n resolvedProgress = snapPointProgress;\n }\n }\n\n // A parent drawer follows an active drag only, so drop it back to zero once the drag ends.\n if (!swiping) {\n notifyParentSwipeProgressChange?.(0);\n finishNestedSwipe();\n }\n applySwipeProgress(resolvedProgress, true, swiping);\n },\n onRelease({\n event,\n deltaX,\n deltaY,\n direction,\n velocityX,\n velocityY,\n releaseVelocityX,\n releaseVelocityY\n }) {\n const popupElement = store.context.popupRef.current;\n if (!popupElement) {\n clearSwipeRelease();\n return undefined;\n }\n const releasePopupElement = popupElement;\n function startSwipeRelease(resolvedDirection) {\n // Start ending transition styles earlier and synchronously to prevent a period where\n // the popup appears stuck on release before the actual closing animation starts.\n finishNestedSwipe();\n setSwipeDismissed(true);\n releasePopupElement.style.removeProperty('transition');\n releasePopupElement.setAttribute(TransitionStatusDataAttributes.endingStyle, '');\n ReactDOM.flushSync(() => {\n setSwipeRelease(resolveSwipeRelease(releasePopupElement, resolvedDirection, deltaX, deltaY, velocityX, velocityY, releaseVelocityX, releaseVelocityY));\n });\n }\n if (!snapPoints || snapPoints.length === 0) {\n if (!direction) {\n clearSwipeRelease();\n return undefined;\n }\n const directionalDelta = getDisplacement(direction, deltaX, deltaY);\n if (directionalDelta <= 0) {\n clearSwipeRelease();\n return false;\n }\n if (getDisplacement(direction, velocityX, velocityY) >= FAST_SWIPE_VELOCITY) {\n startSwipeRelease(direction);\n return true;\n }\n const shouldClose = directionalDelta > getBaseSwipeThreshold(releasePopupElement, direction);\n if (shouldClose) {\n startSwipeRelease(direction);\n } else {\n clearSwipeRelease();\n }\n return shouldClose;\n }\n if (swipeDirection !== 'down' && swipeDirection !== 'up') {\n clearSwipeRelease();\n return undefined;\n }\n if (!popupHeight) {\n clearSwipeRelease();\n return false;\n }\n if (resolvedSnapPoints.length === 0) {\n clearSwipeRelease();\n return undefined;\n }\n const dragDelta = swipeDirection === 'down' ? deltaY : -deltaY;\n const dragDirection = Math.sign(dragDelta);\n const releaseDirectionalVelocity = swipeDirection === 'down' ? releaseVelocityY : -releaseVelocityY;\n const fallbackDirectionalVelocity = swipeDirection === 'down' ? velocityY : -velocityY;\n let resolvedDirectionalVelocity = releaseDirectionalVelocity;\n if (dragDirection !== 0 && Math.abs(dragDelta) >= MIN_SWIPE_THRESHOLD) {\n const velocityDirection = Math.sign(resolvedDirectionalVelocity);\n if (velocityDirection !== 0 && velocityDirection !== dragDirection) {\n // Ignore touch reversals that would otherwise flip the snap decision.\n resolvedDirectionalVelocity = fallbackDirectionalVelocity;\n }\n }\n const currentOffset = activeSnapPointOffset ?? 0;\n const dragTargetOffset = clamp(currentOffset + dragDelta, 0, popupHeight);\n const velocityOffset = Math.abs(resolvedDirectionalVelocity) >= SNAP_VELOCITY_THRESHOLD ? clamp(resolvedDirectionalVelocity, -MAX_SNAP_VELOCITY, MAX_SNAP_VELOCITY) * SNAP_VELOCITY_MULTIPLIER : 0;\n const targetOffset = snapToSequentialPoints ? dragTargetOffset : clamp(dragTargetOffset + velocityOffset, 0, popupHeight);\n const snapPointEventDetails = createChangeEventDetails(REASONS.swipe, event);\n const settleInPlace = () => {\n // Reset nested swipe state now: the hook's trailing progress update is deduped\n // when the drag never produced dismissal progress, so it may not fire.\n applySwipeProgress(0, true, true);\n clearSwipeRelease();\n return false;\n };\n const settleOnSnapPoint = snapPoint => {\n setActiveSnapPoint(snapPoint.value, snapPointEventDetails);\n return settleInPlace();\n };\n const closeFromSnapPoints = fallbackSnapPoint => {\n // An unattributed gesture (e.g. a mostly horizontal flick) may settle on a snap\n // point but must not dismiss: `useSwipeDismiss` drops a directionless dismissal,\n // stranding the popup visually closed while `open` stays `true`.\n if (!direction) {\n return settleOnSnapPoint(fallbackSnapPoint);\n }\n setActiveSnapPoint(null, snapPointEventDetails);\n if (snapPointEventDetails.isCanceled) {\n // A canceled null snap point rejects dismissal before exit styles start.\n return settleInPlace();\n }\n pendingSwipeCloseSnapPointRef.current = activeSnapPoint;\n startSwipeRelease(swipeDirection);\n return true;\n };\n if (snapToSequentialPoints) {\n const orderedSnapPoints = [...resolvedSnapPoints].sort((first, second) => first.offset - second.offset);\n const orderedOffsets = orderedSnapPoints.map(point => point.offset);\n const currentIndex = closestSnapPointIndex(orderedOffsets, currentOffset);\n let targetSnapPoint = orderedSnapPoints[closestSnapPointIndex(orderedOffsets, targetOffset)];\n const velocityDirection = Math.sign(resolvedDirectionalVelocity);\n const shouldAdvance = dragDirection !== 0 && velocityDirection !== 0 && velocityDirection === dragDirection && Math.abs(resolvedDirectionalVelocity) >= SNAP_VELOCITY_THRESHOLD;\n let effectiveTargetOffset = targetOffset;\n if (shouldAdvance) {\n const adjacentIndex = clamp(currentIndex + dragDirection, 0, orderedSnapPoints.length - 1);\n if (adjacentIndex !== currentIndex) {\n const adjacentPoint = orderedSnapPoints[adjacentIndex];\n const shouldForceAdjacent = dragDirection > 0 ? targetOffset < adjacentPoint.offset : targetOffset > adjacentPoint.offset;\n if (shouldForceAdjacent) {\n targetSnapPoint = adjacentPoint;\n effectiveTargetOffset = adjacentPoint.offset;\n }\n } else if (dragDirection > 0) {\n return closeFromSnapPoints(targetSnapPoint);\n }\n }\n const closeDistance = Math.abs(effectiveTargetOffset - popupHeight);\n const snapDistance = Math.abs(effectiveTargetOffset - targetSnapPoint.offset);\n if (closeDistance < snapDistance) {\n return closeFromSnapPoints(targetSnapPoint);\n }\n return settleOnSnapPoint(targetSnapPoint);\n }\n const closestSnapPoint = resolvedSnapPoints[closestSnapPointIndex(resolvedSnapPoints.map(point => point.offset), targetOffset)];\n if (resolvedDirectionalVelocity >= FAST_SWIPE_VELOCITY && dragDelta > 0) {\n return closeFromSnapPoints(closestSnapPoint);\n }\n const closeDistance = Math.abs(targetOffset - popupHeight);\n if (closeDistance < Math.abs(targetOffset - closestSnapPoint.offset)) {\n return closeFromSnapPoints(closestSnapPoint);\n }\n return settleOnSnapPoint(closestSnapPoint);\n },\n onDismiss(event) {\n visualStateStore?.set({\n swipeProgress: 0,\n frontmostHeight: 0\n });\n const backdropElement = store.context.backdropRef.current;\n if (backdropElement) {\n backdropElement.style.setProperty(DrawerBackdropCssVars.swipeProgress, '0');\n backdropElement.style.removeProperty(DrawerPopupCssVars.height);\n }\n const dismissEventDetails = createChangeEventDetails(REASONS.swipe, event);\n store.setOpen(false, dismissEventDetails);\n if (dismissEventDetails.isCanceled) {\n const pendingSnapPoint = pendingSwipeCloseSnapPointRef.current;\n if (pendingSnapPoint !== undefined) {\n setActiveSnapPoint(pendingSnapPoint, createChangeEventDetails(REASONS.swipe, event));\n }\n pendingSwipeCloseSnapPointRef.current = undefined;\n resetSwipeRef.current?.();\n clearSwipeRelease();\n return;\n }\n\n // In controlled mode, the effective open state may not have changed yet\n // (openProp takes precedence over state.open). Proceed optimistically with the\n // dismiss animation — React's Scheduler flushes before the next rAF, so we can\n // reliably check whether the parent accepted or rejected the close.\n // Note: if onOpenChange is asynchronous (e.g., closes the drawer after a network\n // call), the rAF check will see open === true, revert the animation, and the\n // drawer will close without animation when the parent eventually sets open={false}.\n if (store.select('open')) {\n const savedEvent = event;\n controlledDismissFrame.request(() => {\n if (store.select('open')) {\n // Parent rejected: revert animation and restore snap point.\n const pendingSnapPoint = pendingSwipeCloseSnapPointRef.current;\n if (pendingSnapPoint !== undefined) {\n setActiveSnapPoint(pendingSnapPoint, createChangeEventDetails(REASONS.swipe, savedEvent));\n }\n pendingSwipeCloseSnapPointRef.current = undefined;\n clearSwipeRelease();\n resetSwipeRef.current?.();\n } else {\n // Parent accepted: clean up the ref.\n pendingSwipeCloseSnapPointRef.current = undefined;\n }\n });\n return;\n }\n pendingSwipeCloseSnapPointRef.current = undefined;\n setSwipeDismissed(true);\n }\n });\n const swipePointerProps = swipe.getPointerProps();\n const swipeTouchProps = swipe.getTouchProps();\n const {\n moveNative: moveSwipeNative,\n reset: resetSwipe\n } = swipe;\n resetSwipeRef.current = resetSwipe;\n React.useEffect(() => {\n const rootElement = viewportElement ?? popupElementState;\n // A non-passive document listener makes all touch scrolling wait on the main thread.\n if (!rootElement || !open || !mounted) {\n return undefined;\n }\n const resolvedRootElement = rootElement;\n const doc = ownerDocument(resolvedRootElement);\n function processTouchMove(event, touchState, touch) {\n const drawerAxisDelta = isVerticalScrollAxis ? touch.clientY - touchState.lastY : touch.clientX - touchState.lastX;\n\n // Avoid blocking pinch zoom or text selection adjustments on iOS Safari.\n if (event.touches.length === 2) {\n return;\n }\n const allowTouchMove = shouldIgnoreSwipeForTextSelection(doc, resolvedRootElement);\n if (allowTouchMove || nestedDrawerOpen) {\n return;\n }\n if (shouldYieldTouchMove(touchState, event, touch, isVerticalScrollAxis)) {\n return;\n }\n const scrollTarget = touchState.scrollTarget;\n if (!scrollTarget || scrollTarget === doc.documentElement || scrollTarget === doc.body) {\n if (event.cancelable) {\n event.preventDefault();\n }\n // Claim the gesture before React's delegated touch handlers see it; dispatching the\n // move through React re-rasterizes the popup content on every frame.\n event.stopPropagation();\n moveSwipeNative(event, resolvedRootElement);\n return;\n }\n if (!hasScrollableContentOnAxis(scrollTarget, scrollAxis)) {\n // If the scroll container doesn't overflow on the drawer axis, prevent the window from\n // scrolling instead.\n if (event.cancelable) {\n event.preventDefault();\n }\n event.stopPropagation();\n return;\n }\n if (drawerAxisDelta !== 0) {\n const canSwipeFromScrollEdge = canSwipeFromScrollEdgeOnMove(scrollTarget, scrollAxis, swipeDirection, drawerAxisDelta);\n if (!touchState.allowSwipe) {\n if (event.cancelable && canSwipeFromScrollEdge) {\n touchState.allowSwipe = true;\n event.preventDefault();\n } else {\n touchState.allowSwipe = false;\n }\n } else if (event.cancelable) {\n event.preventDefault();\n }\n }\n if (touchState.allowSwipe === true) {\n event.stopPropagation();\n moveSwipeNative(event, resolvedRootElement);\n }\n }\n function handleNativeTouchMove(event) {\n // The virtual keyboard provider observes the move to tell a tap apart from a drag.\n // It must run even when the swipe gesture below claims the event with\n // `stopPropagation()`, which would otherwise prevent React's delegated handlers\n // (and the provider) from ever seeing the move.\n virtualKeyboard?.onTouchMove(event);\n if (ignoreTouchSwipeRef.current) {\n return;\n }\n const touchState = touchScrollStateRef.current;\n const touch = event.touches[0];\n if (!touch || !touchState) {\n return;\n }\n processTouchMove(event, touchState, touch);\n updateTouchScrollPosition(touchState, touch);\n }\n return addEventListener(doc, 'touchmove', handleNativeTouchMove, {\n passive: false,\n capture: true\n });\n }, [mounted, nestedDrawerOpen, open, popupElementState, isVerticalScrollAxis, scrollAxis, swipeDirection, moveSwipeNative, viewportElement, virtualKeyboard]);\n useIsoLayoutEffect(() => {\n if (!snapPointRange || swipe.swiping) {\n return;\n }\n applySwipeProgress(!open || nested ? 0 : snapPointProgress ?? 0, true, false);\n }, [applySwipeProgress, frontmostHeight, nested, notifyParentSwipeProgressChange, open, snapPointProgress, snapPointRange, swipe.swiping, store, visualStateStore]);\n useIsoLayoutEffect(() => {\n if (!notifyParentSwipeProgressChange) {\n return undefined;\n }\n if (!open) {\n notifyParentSwipeProgressChange(0);\n }\n return () => {\n notifyParentSwipeProgressChange(0);\n };\n }, [notifyParentSwipeProgressChange, open]);\n useIsoLayoutEffect(() => {\n if (open) {\n // Skip `resetSwipe` while `Drawer.SwipeArea` is driving the open: it zeroes the popup's\n // `--swipe-movement-*` (via `syncDragStyles(false)`), flashing it fully open for a frame.\n // `clearSwipeRelease` doesn't touch those vars, so always run it to clear any leftover\n // release state from a prior dismiss (e.g. when the popup is kept mounted).\n if (!swipeAreaActiveRef.current) {\n resetSwipe();\n }\n clearSwipeRelease();\n }\n }, [clearSwipeRelease, open, resetSwipe, swipeAreaActiveRef]);\n useIsoLayoutEffect(() => {\n const backdropElement = backdropRef.current;\n return () => {\n visualStateStore?.set({\n swipeProgress: 0,\n frontmostHeight: 0\n });\n setBackdropSwipingAttribute(backdropElement, false);\n // `data-swiping` is set on whichever backdrop is current when a swipe starts, which can\n // differ from the captured element if the backdrop mounted late or changed identity.\n // Reading the live ref here is intentional so the current backdrop is cleared too.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const currentBackdrop = backdropRef.current;\n if (currentBackdrop !== backdropElement) {\n setBackdropSwipingAttribute(currentBackdrop, false);\n }\n finishNestedSwipe();\n };\n }, [backdropRef, finishNestedSwipe, visualStateStore]);\n const swipeProviderValue = React.useMemo(() => ({\n swiping: swipe.swiping,\n getDragStyles: swipe.getDragStyles,\n swipeStrength: swipeRelease ?? null,\n setSwipeDismissed\n }), [setSwipeDismissed, swipe.getDragStyles, swipe.swiping, swipeRelease]);\n function resetTouchSwipeState(ignoreSwipe) {\n ignoreTouchSwipeRef.current = ignoreSwipe;\n touchScrollStateRef.current = null;\n }\n function resetTouchTrackingState() {\n resetTouchSwipeState(false);\n lastPointerTypeRef.current = '';\n ignoreNextTouchStartFromPenRef.current = false;\n }\n function handlePointerEnd(event) {\n lastPointerTypeRef.current = '';\n return event.pointerType !== 'touch';\n }\n return /*#__PURE__*/_jsx(DialogViewport, {\n ref: forwardedRef,\n className: className,\n style: style,\n render: render,\n ...mergeProps(elementProps, {\n onPointerDown(event) {\n lastPointerTypeRef.current = event.pointerType;\n ignoreNextTouchStartFromPenRef.current = event.pointerType === 'pen';\n if (!open || !mounted || nestedDrawerOpen) {\n return;\n }\n const elementAtPoint = getElementAtPoint(event.currentTarget.getRootNode(), event.clientX, event.clientY);\n // Pointer drags capture the pointer on press, so they can't wait to see which axis the\n // gesture takes; any `data-base-ui-swipe-ignore` value ignores them.\n if (isSwipeIgnoredTarget(elementAtPoint) || isDrawerContentTarget(elementAtPoint)) {\n return;\n }\n if (event.pointerType === 'touch') {\n return;\n }\n swipePointerProps.onPointerDown?.(event);\n },\n onPointerMove(event) {\n if (event.pointerType === 'touch') {\n return;\n }\n swipePointerProps.onPointerMove?.(event);\n },\n onPointerUp(event) {\n if (handlePointerEnd(event)) {\n swipePointerProps.onPointerUp?.(event);\n }\n },\n onPointerCancel(event) {\n if (handlePointerEnd(event)) {\n swipePointerProps.onPointerCancel?.(event);\n }\n },\n onTouchStart(event) {\n const startedFromPenPointerDown = lastPointerTypeRef.current === 'pen' && ignoreNextTouchStartFromPenRef.current;\n if (startedFromPenPointerDown) {\n ignoreNextTouchStartFromPenRef.current = false;\n resetTouchSwipeState(false);\n return;\n }\n if (!open || !mounted || nestedDrawerOpen) {\n resetTouchSwipeState(false);\n return;\n }\n const touch = event.touches[0];\n if (!touch) {\n return;\n }\n if (isReactTouchEventOnRangeInput(event)) {\n resetTouchSwipeState(false);\n return;\n }\n const rootElement = event.currentTarget;\n const elementAtPoint = getElementAtPoint(rootElement.getRootNode(), touch.clientX, touch.clientY);\n const eventTarget = getTarget(event.nativeEvent);\n const target = isElement(eventTarget) ? eventTarget : rootElement;\n if (!contains(rootElement, target)) {\n resetTouchSwipeState(true);\n return;\n }\n virtualKeyboard?.onTouchStart(event);\n\n // `x`/`y` hand touch drags along that axis to the element. Any value other than the\n // cross-axis one ignores the swipe outright; a cross-axis element is arbitrated like a\n // native cross-axis scroller below.\n if (closest(elementAtPoint, `${BASE_UI_SWIPE_IGNORE_SELECTOR}:not(${AXIS_SWIPE_IGNORE_SELECTORS[crossScrollAxis]})`)) {\n resetTouchSwipeState(true);\n return;\n }\n ignoreTouchSwipeRef.current = false;\n const scrollTarget = findScrollableTouchTarget(target, rootElement, scrollAxis);\n const hasCrossAxisGestureTarget = findScrollableTouchTarget(target, rootElement, crossScrollAxis) != null || closest(elementAtPoint, AXIS_SWIPE_IGNORE_SELECTORS[crossScrollAxis]) != null;\n let allowSwipe = null;\n if (scrollTarget) {\n const canSwipeFromEdge = isAtSwipeStartEdge(scrollTarget, scrollAxis, swipeDirection);\n allowSwipe = canSwipeFromEdge ? null : false;\n }\n touchScrollStateRef.current = {\n startX: touch.clientX,\n startY: touch.clientY,\n lastX: touch.clientX,\n lastY: touch.clientY,\n startedInPopup: contains(popupRef.current, elementAtPoint),\n scrollTarget,\n hasCrossAxisGestureTarget,\n allowSwipe,\n preserveNativeCrossAxisScroll: false,\n drawerAxisAttributed: false\n };\n swipeTouchProps.onTouchStart?.(event);\n },\n onTouchEnd(event) {\n virtualKeyboard?.onTouchEnd(event);\n resetTouchTrackingState();\n swipeTouchProps.onTouchEnd?.(event);\n },\n onTouchCancel(event) {\n virtualKeyboard?.onTouchCancel();\n resetTouchTrackingState();\n swipeTouchProps.onTouchCancel?.(event);\n },\n // Drawer popups use drawer-specific nested state attributes.\n // Suppress DialogViewport's generic nested dialog attribute.\n [DialogViewportDataAttributes.nestedDialogOpen]: undefined\n }),\n children: /*#__PURE__*/_jsx(DrawerViewportContext.Provider, {\n value: swipeProviderValue,\n children: children\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") DrawerViewport.displayName = \"DrawerViewport\";\nfunction setBackdropSwipingAttribute(backdropElement, swiping) {\n backdropElement?.toggleAttribute(DrawerPopupDataAttributes.swiping, swiping);\n}\nfunction isSwipeIgnoredTarget(target) {\n return Boolean(closest(target, BASE_UI_SWIPE_IGNORE_SELECTOR));\n}\nfunction isDrawerContentTarget(target) {\n return Boolean(closest(target, DRAWER_CONTENT_SELECTOR));\n}\nfunction getBaseSwipeSize(element, direction) {\n return direction === 'left' || direction === 'right' ? element.offsetWidth : element.offsetHeight;\n}\nfunction getBaseSwipeThreshold(element, direction) {\n return Math.max(getBaseSwipeSize(element, direction) * 0.5, MIN_SWIPE_THRESHOLD);\n}\nfunction isRangeInput(target, win) {\n return target instanceof win.HTMLInputElement && target.type === 'range';\n}\nfunction isTextSelectionControl(target) {\n return target.tagName === 'INPUT' || target.tagName === 'TEXTAREA';\n}\nfunction hasExpandedSelectionWithinTarget(selection, target) {\n const anchorElement = isElement(selection.anchorNode) ? selection.anchorNode : selection.anchorNode?.parentElement;\n const focusElement = isElement(selection.focusNode) ? selection.focusNode : selection.focusNode?.parentElement;\n return selection.containsNode(target, true) || contains(target, anchorElement) || contains(target, focusElement);\n}\nfunction shouldIgnoreSwipeForTextSelection(doc, rootElement) {\n const activeEl = activeElement(doc);\n if (activeEl && contains(rootElement, activeEl) && isTextSelectionControl(activeEl)) {\n const {\n selectionStart,\n selectionEnd\n } = activeEl;\n if (selectionStart != null && selectionEnd != null && selectionStart < selectionEnd) {\n return true;\n }\n }\n const selection = doc.getSelection?.();\n if (!selection || selection.isCollapsed) {\n return false;\n }\n return hasExpandedSelectionWithinTarget(selection, rootElement);\n}\nfunction isEventOnRangeInput(event, win) {\n return event.composedPath().some(pathTarget => isRangeInput(pathTarget, win));\n}\nfunction isReactTouchEventOnRangeInput(event) {\n return isEventOnRangeInput(event.nativeEvent, ownerWindow(event.currentTarget));\n}\nfunction updateTouchScrollPosition(touchState, touch) {\n touchState.lastX = touch.clientX;\n touchState.lastY = touch.clientY;\n}\n\n/**\n * Arbitrates a touchmove between the drawer swipe and a cross-axis gesture: a native scroll, or an\n * element marked with the cross-axis `data-base-ui-swipe-ignore` value.\n * Returns `true` when the move must be left alone — either because the cross axis already won the\n * gesture, or because neither axis has passed the slop yet and the gesture cannot be attributed.\n */\nfunction shouldYieldTouchMove(touchState, event, touch, isVerticalScrollAxis) {\n if (touchState.preserveNativeCrossAxisScroll) {\n return true;\n }\n\n // Attribution happens once per gesture. Re-arbitrating after the drawer axis has won would let\n // the pre-attribution branches below fire mid-drag (the slop is measured from the touch origin,\n // which is never re-baselined), freezing the popup and dropping `preventDefault()`.\n if (touchState.drawerAxisAttributed || touchState.allowSwipe === true || !touchState.hasCrossAxisGestureTarget) {\n return false;\n }\n\n // A non-cancelable touchmove means the browser has already committed the gesture to a native\n // scroll; claiming it for the swipe would drag the popup alongside the scrolling content.\n if (!event.cancelable) {\n touchState.preserveNativeCrossAxisScroll = true;\n return true;\n }\n const drawerAxisGestureDelta = isVerticalScrollAxis ? touch.clientY - touchState.startY : touch.clientX - touchState.startX;\n const crossAxisGestureDelta = isVerticalScrollAxis ? touch.clientX - touchState.startX : touch.clientY - touchState.startY;\n const absDrawerAxisGestureDelta = Math.abs(drawerAxisGestureDelta);\n const absCrossAxisGestureDelta = Math.abs(crossAxisGestureDelta);\n if (absCrossAxisGestureDelta >= AXIS_LOCK_SLOP && absCrossAxisGestureDelta > absDrawerAxisGestureDelta + AXIS_LOCK_BIAS) {\n touchState.preserveNativeCrossAxisScroll = true;\n return true;\n }\n if (absDrawerAxisGestureDelta >= AXIS_LOCK_SLOP) {\n touchState.drawerAxisAttributed = true;\n return false;\n }\n\n // Neither axis has traveled past the slop yet, so the gesture cannot be attributed. Leave the\n // event alone: on iOS, `preventDefault()` on the first cancelable touchmove cancels native\n // scrolling for the entire gesture, which would lock a cross-axis scroll that only passes the\n // slop on a later move.\n return true;\n}\nfunction hasScrollableContentOnAxis(scrollTarget, axis) {\n return getScrollMetrics(scrollTarget, axis).max > 0;\n}\nfunction getScrollMetrics(scrollTarget, axis) {\n if (axis === 'vertical') {\n const max = Math.max(0, scrollTarget.scrollHeight - scrollTarget.clientHeight);\n return {\n offset: scrollTarget.scrollTop,\n max\n };\n }\n const max = Math.max(0, scrollTarget.scrollWidth - scrollTarget.clientWidth);\n return {\n offset: scrollTarget.scrollLeft,\n max\n };\n}\nfunction isAtSwipeStartEdge(scrollTarget, axis, direction) {\n const dismissFromStartEdge = shouldDismissFromStartEdge(direction, axis);\n const {\n offset,\n max\n } = getScrollMetrics(scrollTarget, axis);\n return dismissFromStartEdge ? offset <= 0 : offset >= max;\n}\nfunction canSwipeFromScrollEdgeOnMove(scrollTarget, axis, direction, delta) {\n const dismissFromStartEdge = shouldDismissFromStartEdge(direction, axis);\n const movingTowardDismiss = dismissFromStartEdge ? delta > 0 : delta < 0;\n if (!movingTowardDismiss) {\n return false;\n }\n return isAtSwipeStartEdge(scrollTarget, axis, direction);\n}\nfunction shouldDismissFromStartEdge(direction, axis) {\n return axis === 'vertical' ? direction === 'down' : direction === 'right';\n}","'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useDialogRootContext } from \"../root/DialogRootContext.mjs\";\nimport { useDialogPortalContext } from \"../portal/DialogPortalContext.mjs\";\nimport { dialogStateAttributesMapping } from \"../utils/stateAttributesMapping.mjs\";\n\n/**\n * A positioning container for the dialog popup that can be made scrollable.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)\n */\nexport const DialogViewport = /*#__PURE__*/React.forwardRef(function DialogViewport(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n children,\n ...elementProps\n } = componentProps;\n const keepMounted = useDialogPortalContext();\n const store = useDialogRootContext();\n const open = store.useState('open');\n const nested = store.useState('nested');\n const transitionStatus = store.useState('transitionStatus');\n const nestedOpenDialogCount = store.useState('nestedOpenDialogCount');\n const mounted = store.useState('mounted');\n const setViewportElement = store.useStateSetter('viewportElement');\n const nestedDialogOpen = nestedOpenDialogCount > 0;\n const state = {\n open,\n nested,\n transitionStatus,\n nestedDialogOpen\n };\n const shouldRender = keepMounted || mounted;\n return useRenderElement('div', componentProps, {\n enabled: shouldRender,\n state,\n ref: [forwardedRef, setViewportElement],\n stateAttributesMapping: dialogStateAttributesMapping,\n props: [{\n role: 'presentation',\n hidden: !mounted,\n style: {\n pointerEvents: !open ? 'none' : undefined\n },\n children\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") DialogViewport.displayName = \"DialogViewport\";","import { CommonPopupDataAttributes } from \"../../utils/popupStateMapping.mjs\";\n\n/**\n * Present when the dialog is open.\n */\nexport const open = CommonPopupDataAttributes.open;\n/**\n * Present when the dialog is closed.\n */\nexport const closed = CommonPopupDataAttributes.closed;\n/**\n * Present when the dialog begins animating in.\n */\nexport const startingStyle = CommonPopupDataAttributes.startingStyle;\n/**\n * Present when the dialog is animating out.\n */\nexport const endingStyle = CommonPopupDataAttributes.endingStyle;\n/**\n * Present when the dialog is nested within another dialog.\n */\nexport const nested = 'data-nested';\n/**\n * Present when the dialog has other open dialogs nested within it.\n */\nexport const nestedDialogOpen = 'data-nested-dialog-open';","'use client';\n\nimport * as React from 'react';\nexport const DrawerVirtualKeyboardContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") DrawerVirtualKeyboardContext.displayName = \"DrawerVirtualKeyboardContext\";\nexport function useDrawerVirtualKeyboardContext() {\n return React.useContext(DrawerVirtualKeyboardContext);\n}","'use client';\n\nimport { Drawer } from '@base-ui/react/drawer';\nimport { Toast } from '@base-ui/react/toast';\nimport { useRouter } from 'next/navigation';\nimport { useState, useTransition } from 'react';\n\nimport { BUTTONS, INPUT } from '../../../forms/ui/look';\nimport { Switch } from '../../../forms/ui/switch';\nimport { ActionButton } from '../../../bridge/ui/action-button';\nimport { StatusBadge, Tag } from '../../../outside-parties/ui/status-badge';\nimport { setPartyScopes, switchPartyTools, type TableOutcome } from '../../actions';\nimport { switchedMessageOf } from '../../switched-message';\nimport { hintSuggestionsOf, suggestedScopesOf } from '../hint-suggestions';\nimport { changedScopesOf, SCOPE_CHANGES, type ScopeChange } from '../scope-change';\nimport { partyScopesSetMessage, scopesSetMessage, statedMessage, suggestionsSetMessage, toolsSwitchedMessage } from '../table-messages';\nimport { keptToolsOf, shownTools, STATE_FILTERS, type KeptChanges, type StateFilter, type TableTool } from '../table-tools';\nimport { NeedsChips, type ListedScope } from './needs-chips';\nimport { ScopePicker } from './scope-picker';\nimport { standingRefusal, TableDialog, type DialogRefusal } from './table-dialog';\nimport { TableToasts } from './table-toasts';\n\n/** What the table shows of one outside MCP server, as its page read it. */\nexport interface ToolsTableProps {\n fleetId: string;\n party: string;\n tools: readonly TableTool[];\n /** The requirements' version the page read, which every change is made on. */\n version: number;\n partyScopes: readonly string[];\n /** The scopes the fleet lists, for an approver; none for anyone else. */\n listed: readonly ListedScope[] | null;\n /** Whether the actor approves the party: gateway:approve within manage reach. Others see the table read-only. */\n canChange: boolean;\n /** Why the server's tools could not be read: the table then shows the requirements kept per tool name. */\n serverRefusal: string | null;\n}\n\ntype OpenDialog = 'scopes' | 'party' | 'suggest' | null;\n\nconst ALL_SELECTED = 'Select all shown';\n\nfunction firstLineOf(description: string | undefined): string {\n return description?.split('\\n').find((line) => line.trim() !== '')?.trim() ?? '';\n}\n\n/**\n * An outside MCP server's tools as a table (gateway scopes 4.3, A6): filter\n * by name and state, select many, and set the scopes they need or switch them\n * in one change; set what every tool needs; or suggest scopes from the\n * server's hints. Each change is one transaction on the requirements' version\n * the page read: on success the dialog closes, the changed rows highlight and\n * a Toast says what was kept; a refusal stays inline. Only an approver within\n * manage reach sees the controls; anyone else, the same table read-only.\n */\nexport function ToolsTable(props: ToolsTableProps) {\n return (\n <Toast.Provider>\n <TableBody {...props} />\n <TableToasts />\n </Toast.Provider>\n );\n}\n\n/** What was kept since the page read the rows it was kept on; a fresh read replaces it. */\ninterface Kept extends KeptChanges {\n basis: readonly TableTool[];\n party: readonly string[] | null;\n}\n\nfunction TableBody({ fleetId, party, tools: readTools, version, partyScopes: readPartyScopes, listed, canChange, serverRefusal }: ToolsTableProps) {\n const router = useRouter();\n const toasts = Toast.useToastManager();\n const [, startTransition] = useTransition();\n const [isReloading, startReload] = useTransition();\n const [nameFilter, setNameFilter] = useState('');\n const [stateFilter, setStateFilter] = useState<StateFilter>('all');\n const [selected, setSelected] = useState<ReadonlySet<string>>(new Set());\n const [dialog, setDialog] = useState<OpenDialog>(null);\n const [picked, setPicked] = useState<string[]>([]);\n const [how, setHow] = useState<ScopeChange>('add');\n const [suggestPicks, setSuggestPicks] = useState<{ readOnly: string[]; other: string[] }>({ readOnly: [], other: [] });\n const [isSaving, setIsSaving] = useState(false);\n const [refusal, setRefusal] = useState<DialogRefusal | null>(null);\n const [switching, setSwitching] = useState<string | null>(null);\n const [switchRefusal, setSwitchRefusal] = useState<string | null>(null);\n const [highlighted, setHighlighted] = useState<{ names: ReadonlySet<string>; round: number }>({ names: new Set(), round: 0 });\n const [keptVersion, setKeptVersion] = useState<number | null>(null);\n const [isSheetOpen, setIsSheetOpen] = useState(false);\n const [keptChanges, setKeptChanges] = useState<Kept | null>(null);\n\n // A change kept here shows at once; once the page read itself again, its rows are the truth.\n const live = keptChanges?.basis === readTools ? keptChanges : null;\n const tools = live === null ? readTools : keptToolsOf(readTools, live);\n const partyScopes = live?.party ?? readPartyScopes;\n\n // A change kept here moves the version on before the page reads itself again.\n const currentVersion = Math.max(version, keptVersion ?? 0);\n const listedNames = listed === null ? null : new Set(listed.map(({ scope }) => scope));\n const shown = shownTools(tools, { name: nameFilter, state: stateFilter, partyScopes });\n const selectedTools = tools.filter(({ name }) => selected.has(name));\n const isServerAnswering = serverRefusal === null;\n const isEveryShownSelected = shown.length > 0 && shown.every(({ name }) => selected.has(name));\n const suggestions = hintSuggestionsOf(tools);\n const suggested = suggestedScopesOf(suggestions, suggestPicks);\n\n const kept = ({ outcome, changed, message, change }: { outcome: Extract<TableOutcome, { isOk: true }>; changed: readonly string[]; message: string; change: { party?: readonly string[]; scopes?: readonly { tool: string; scopes: readonly string[] }[]; switches?: ReadonlyMap<string, boolean> } }) => {\n setKeptChanges({\n basis: readTools,\n party: change.party ?? live?.party ?? null,\n scopes: new Map([...(live?.scopes ?? []), ...(change.scopes ?? []).map(({ tool, scopes }) => [tool, scopes] as const)]),\n switches: new Map([...(live?.switches ?? []), ...(change.switches ?? [])]),\n });\n if (outcome.version !== null) {\n setKeptVersion(outcome.version);\n }\n setHighlighted((previous) => ({ names: new Set(changed), round: previous.round + 1 }));\n toasts.add({ title: statedMessage(message, outcome.statementRefusal) });\n router.refresh();\n };\n\n const openDialog = (opened: Exclude<OpenDialog, null>) => {\n setRefusal(null);\n setIsSheetOpen(false);\n setPicked(opened === 'party' ? [...partyScopes] : []);\n setHow('add');\n setSuggestPicks({ readOnly: [], other: [] });\n setDialog(opened);\n };\n\n const closeDialog = () => {\n setDialog(null);\n setRefusal(null);\n };\n\n const save = ({ change, changed, message }: { change: { party?: string[]; tools: { tool: string; scopes: string[] }[] }; changed: readonly string[]; message: string }) => {\n setIsSaving(true);\n setRefusal(null);\n const madeOn = currentVersion;\n startTransition(async () => {\n const outcome = await setPartyScopes({ fleetId, name: party, version: madeOn, ...change });\n setIsSaving(false);\n if (!outcome.isOk) {\n setRefusal({ message: outcome.message, isConflict: outcome.isConflict, version: madeOn });\n return;\n }\n setDialog(null);\n setSelected(new Set());\n kept({ outcome, changed, message, change: { ...(change.party === undefined ? {} : { party: change.party }), scopes: change.tools } });\n });\n };\n\n const switchTools = ({ names, isOn, working }: { names: readonly string[]; isOn: boolean; working: string }) => {\n setSwitching(working);\n setSwitchRefusal(null);\n setIsSheetOpen(false);\n startTransition(async () => {\n const outcome = await switchPartyTools({ fleetId, name: party, tools: [...names], isOn });\n setSwitching(null);\n if (!outcome.isOk) {\n setSwitchRefusal(outcome.message);\n return;\n }\n const [only] = names;\n kept({ outcome, changed: names, change: { switches: new Map(names.map((name) => [name, isOn])) }, message: names.length === 1 && only !== undefined ? switchedMessageOf({ tool: only, isOn, statementRefusal: null }) : toolsSwitchedMessage({ count: names.length, isOn, statementRefusal: null }) });\n });\n };\n\n const reload = () => {\n startReload(() => {\n router.refresh();\n });\n };\n\n const toggle = (name: string) => {\n setSelected((previous) => {\n const next = new Set(previous);\n if (next.has(name)) {\n next.delete(name);\n } else {\n next.add(name);\n }\n return next;\n });\n };\n\n const toggleShown = () => {\n setSelected((previous) => {\n const next = new Set(previous);\n for (const { name } of shown) {\n if (isEveryShownSelected) {\n next.delete(name);\n } else {\n next.add(name);\n }\n }\n return next;\n });\n };\n\n const isBusy = switching !== null || isSaving;\n const toolbar = (\n <div className=\"grid gap-3 sm:flex sm:flex-wrap sm:items-center\" data-testid=\"tools-table-toolbar\">\n <label className=\"grid gap-1 sm:w-56\">\n <span className=\"sr-only\">Filter by name</span>\n <input className={INPUT} type=\"search\" placeholder=\"Filter by name\" value={nameFilter} onChange={(event) => { setNameFilter(event.target.value); }} data-testid=\"tools-table-name-filter\" />\n </label>\n <div role=\"group\" aria-label=\"Filter by state\" className=\"flex flex-wrap gap-1\">\n {STATE_FILTERS.map(({ state, label }) => (\n <button\n key={state}\n type=\"button\"\n aria-pressed={stateFilter === state}\n onClick={() => { setStateFilter(state); }}\n className={`h-8 rounded-md border px-3 ${stateFilter === state ? 'border-primary bg-primary text-primary-foreground' : 'border-border bg-card hover:bg-accent'}`}\n data-testid={`tools-table-state-${state}`}\n >\n {label}\n </button>\n ))}\n </div>\n {canChange ? (\n <>\n <label className=\"flex items-center gap-2\">\n <input type=\"checkbox\" checked={isEveryShownSelected} onChange={toggleShown} disabled={shown.length === 0} data-testid=\"tools-table-select-shown\" />\n {ALL_SELECTED}\n </label>\n <span className=\"text-muted-foreground\" data-testid=\"tools-table-selected\">\n {selected.size} selected\n </span>\n <div className=\"flex flex-wrap gap-2 sm:ml-auto\">\n <button type=\"button\" className={BUTTONS.secondary} disabled={selected.size === 0 || isBusy || listed === null} onClick={() => { openDialog('scopes'); }} data-testid=\"tools-table-set-scopes\">\n Set scopes…\n </button>\n <ActionButton isPending={switching === 'on'} pendingLabel=\"Switching on…\" disabled={selected.size === 0 || isBusy || !isServerAnswering} onClick={() => { switchTools({ names: [...selected], isOn: true, working: 'on' }); }} data-testid=\"tools-table-switch-on\">\n Switch on\n </ActionButton>\n <ActionButton isPending={switching === 'off'} pendingLabel=\"Switching off…\" disabled={selected.size === 0 || isBusy || !isServerAnswering} onClick={() => { switchTools({ names: [...selected], isOn: false, working: 'off' }); }} data-testid=\"tools-table-switch-off\">\n Switch off\n </ActionButton>\n <button type=\"button\" className={BUTTONS.secondary} disabled={isBusy || !isServerAnswering || listed === null} onClick={() => { openDialog('suggest'); }} data-testid=\"tools-table-suggest\">\n Suggest from hints…\n </button>\n </div>\n </>\n ) : null}\n </div>\n );\n\n return (\n <div className=\"grid gap-3\">\n <div className=\"flex flex-wrap items-center gap-2\" data-testid=\"tools-table-party-needs\">\n <span className=\"font-medium\">Every tool needs</span>\n <NeedsChips party={partyScopes} own={[]} listed={listedNames} />\n {canChange ? (\n <button type=\"button\" className=\"text-primary hover:underline disabled:opacity-60\" disabled={isBusy || listed === null} onClick={() => { openDialog('party'); }} data-testid=\"tools-table-party-change\">\n Change…\n </button>\n ) : null}\n </div>\n {serverRefusal === null ? null : (\n <p role=\"status\" className=\"rounded-md border border-tone-waiting-border bg-tone-waiting-bg px-3 py-2 text-tone-waiting-fg\" data-testid=\"tools-table-server-down\">\n The server did not answer, so this shows the scopes kept per tool name; they can still be changed. {serverRefusal}\n </p>\n )}\n <div className=\"hidden sm:block\">{toolbar}</div>\n <div className=\"sm:hidden\">\n <Drawer.Root open={isSheetOpen} onOpenChange={setIsSheetOpen}>\n <Drawer.Trigger className={BUTTONS.secondary} data-testid=\"tools-table-sheet-open\">\n Filters and actions{canChange ? ` (${String(selected.size)} selected)` : ''}\n </Drawer.Trigger>\n <Drawer.Portal>\n <Drawer.Backdrop className=\"fixed inset-0 z-40 bg-(--overlay)\" />\n <Drawer.Viewport className=\"fixed inset-0 z-50 flex items-end\">\n <Drawer.Popup className=\"w-full rounded-t-lg border border-border bg-popover p-4 text-popover-foreground shadow-lg\">\n <Drawer.Content className=\"grid gap-3\">\n <Drawer.Title className=\"text-heading font-semibold\">Filters and actions</Drawer.Title>\n {toolbar}\n <Drawer.Close className={BUTTONS.secondary}>Done</Drawer.Close>\n </Drawer.Content>\n </Drawer.Popup>\n </Drawer.Viewport>\n </Drawer.Portal>\n </Drawer.Root>\n </div>\n {switchRefusal === null ? null : (\n <p role=\"alert\" className=\"rounded-md border border-tone-attention-border bg-tone-attention-bg px-3 py-2 text-tone-attention-fg\" data-testid=\"tools-table-switch-refusal\">\n {switchRefusal}\n </p>\n )}\n <table className=\"w-full border-collapse max-sm:block\" data-testid=\"tools-table\">\n <thead className=\"max-sm:hidden\">\n <tr className=\"border-b border-border text-left text-muted-foreground\">\n {canChange ? <th className=\"w-8 py-2\"><span className=\"sr-only\">Selected</span></th> : null}\n <th className=\"py-2 font-medium\">Tool</th>\n <th className=\"py-2 font-medium\">Hints</th>\n <th className=\"py-2 font-medium\">On</th>\n <th className=\"py-2 font-medium\">Needs</th>\n </tr>\n </thead>\n <tbody className=\"max-sm:grid max-sm:gap-2\">\n {shown.map((tool) => {\n const isHighlighted = highlighted.names.has(tool.name);\n return (\n <tr\n key={isHighlighted ? `${tool.name}-${String(highlighted.round)}` : tool.name}\n className={`border-b border-border align-top last:border-b-0 max-sm:grid max-sm:grid-cols-[auto_1fr] max-sm:gap-x-2 max-sm:rounded-md max-sm:border max-sm:p-2 ${isHighlighted ? 'animate-highlight' : ''}`}\n data-testid=\"tools-table-row\"\n data-tool={tool.name}\n >\n {canChange ? (\n <td className=\"py-2 pr-2 max-sm:row-span-4\">\n <input type=\"checkbox\" aria-label={`Select ${tool.name}`} checked={selected.has(tool.name)} onChange={() => { toggle(tool.name); }} data-testid=\"tools-table-select\" />\n </td>\n ) : null}\n <td className=\"py-2 pr-3 max-sm:col-start-2\">\n <span className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-mono\">{tool.name}</span>\n {tool.isNew ? <StatusBadge tone=\"attention\" label=\"New\" /> : null}\n </span>\n {firstLineOf(tool.description) === '' ? null : <span className=\"block text-muted-foreground\">{firstLineOf(tool.description)}</span>}\n </td>\n <td className=\"py-2 pr-3 max-sm:col-start-2\">\n <span className=\"flex flex-wrap gap-1\">\n {tool.isReadOnly === true ? <Tag>Read only</Tag> : null}\n {tool.isDestructive === true ? <Tag>Destructive</Tag> : null}\n </span>\n </td>\n <td className=\"py-2 pr-3 max-sm:col-start-2\">\n {tool.isOn === null ? (\n <span className=\"text-muted-foreground\">Not known</span>\n ) : canChange ? (\n <Switch isOn={tool.isOn} label={tool.name} isPending={switching === tool.name} onClick={() => { switchTools({ names: [tool.name], isOn: tool.isOn !== true, working: tool.name }); }} testId=\"tools-table-switch\" />\n ) : (\n <Tag>{tool.isOn ? 'On' : 'Off'}</Tag>\n )}\n </td>\n <td className=\"py-2 max-sm:col-start-2\">\n <NeedsChips party={partyScopes} own={tool.scopes} listed={listedNames} />\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n {shown.length === 0 ? (\n <p className=\"text-muted-foreground\" data-testid=\"tools-table-empty\">\n {tools.length === 0 ? (isServerAnswering ? `${party} lists no tools.` : 'No tool needs a scope of its own yet.') : 'No tool matches the filters.'}\n </p>\n ) : null}\n {listed === null ? null : (\n <>\n <TableDialog\n isOpen={dialog === 'scopes'}\n onClose={closeDialog}\n title=\"Set scopes\"\n description=\"The scopes a calling ship must hold for each selected tool, beside what every tool needs.\"\n appliesTo={`Applies to ${String(selectedTools.length)} ${selectedTools.length === 1 ? 'tool' : 'tools'}`}\n action={{\n label: 'Set scopes',\n pending: 'Setting…',\n isDisabled: picked.length === 0 && how !== 'replace',\n onPress: () => {\n save({ change: { tools: changedScopesOf(selectedTools, { scopes: picked, how }) }, changed: selectedTools.map(({ name }) => name), message: scopesSetMessage({ scopes: picked, how, count: selectedTools.length }) });\n },\n }}\n isSaving={isSaving}\n refusal={standingRefusal(refusal, currentVersion)}\n isReloading={isReloading}\n onReload={reload}\n testId=\"tools-table-scopes-dialog\"\n >\n <ScopePicker label=\"Scopes\" listed={listed} picked={picked} onPick={setPicked} isDisabled={isSaving} testId=\"tools-table-scopes-picker\" />\n <fieldset className=\"grid gap-1\">\n <legend className=\"font-medium\">On each selected tool</legend>\n {SCOPE_CHANGES.map((change) => (\n <label key={change.how} className=\"flex items-center gap-2\">\n <input type=\"radio\" name=\"how\" value={change.how} checked={how === change.how} onChange={() => { setHow(change.how); }} data-testid={`tools-table-how-${change.how}`} />\n {change.label}\n </label>\n ))}\n </fieldset>\n </TableDialog>\n <TableDialog\n isOpen={dialog === 'party'}\n onClose={closeDialog}\n title=\"Every tool needs\"\n description={`The scopes a calling ship must hold for every tool of ${party}, beside each tool's own.`}\n appliesTo={`Applies to every tool of ${party}`}\n action={{\n label: 'Save',\n pending: 'Saving…',\n isDisabled: false,\n onPress: () => {\n save({ change: { party: picked, tools: [] }, changed: tools.map(({ name }) => name), message: partyScopesSetMessage({ party, scopes: picked }) });\n },\n }}\n isSaving={isSaving}\n refusal={standingRefusal(refusal, currentVersion)}\n isReloading={isReloading}\n onReload={reload}\n testId=\"tools-table-party-dialog\"\n >\n <ScopePicker label=\"Scopes\" listed={listed} picked={picked} onPick={setPicked} isDisabled={isSaving} testId=\"tools-table-party-picker\" />\n </TableDialog>\n <TableDialog\n isOpen={dialog === 'suggest'}\n onClose={closeDialog}\n title=\"Suggest from hints\"\n description=\"Scopes for each tool with no scope of its own, by what the server says of it. Hints are the server's claim: nothing applies until you confirm.\"\n appliesTo={`Applies to ${String(suggested.length)} ${suggested.length === 1 ? 'tool' : 'tools'}`}\n action={{\n label: 'Apply',\n pending: 'Applying…',\n isDisabled: suggested.length === 0,\n onPress: () => {\n const groups = [\n { scopes: suggestPicks.readOnly, count: suggestPicks.readOnly.length === 0 ? 0 : suggestions.readOnly.length },\n { scopes: suggestPicks.other, count: suggestPicks.other.length === 0 ? 0 : suggestions.other.length },\n ].filter(({ count }) => count > 0);\n save({ change: { tools: suggested }, changed: suggested.map(({ tool }) => tool), message: suggestionsSetMessage(groups) });\n },\n }}\n isSaving={isSaving}\n refusal={standingRefusal(refusal, currentVersion)}\n isReloading={isReloading}\n onReload={reload}\n testId=\"tools-table-suggest-dialog\"\n >\n <ScopePicker label=\"Scopes for read-only tools\" listed={listed} picked={suggestPicks.readOnly} onPick={(readOnly) => { setSuggestPicks((previous) => ({ ...previous, readOnly })); }} isDisabled={isSaving} testId=\"tools-table-suggest-read-only\" />\n <ScopePicker label=\"Scopes for the other tools\" listed={listed} picked={suggestPicks.other} onPick={(other) => { setSuggestPicks((previous) => ({ ...previous, other })); }} isDisabled={isSaving} testId=\"tools-table-suggest-other\" />\n <SuggestedList title=\"Read-only tools\" names={suggestions.readOnly} testId=\"tools-table-suggest-read-only-tools\" />\n <SuggestedList title=\"Other tools\" names={suggestions.other} testId=\"tools-table-suggest-other-tools\" />\n <SuggestedList title=\"Without hints, left as they are\" names={suggestions.withoutHints} testId=\"tools-table-suggest-without-hints\" />\n </TableDialog>\n </>\n )}\n </div>\n );\n}\n\n/** One group of the tools a suggestion would change, by name. */\nfunction SuggestedList({ title, names, testId }: { title: string; names: readonly string[]; testId: string }) {\n return (\n <details className=\"rounded-md border border-border px-3 py-2\" data-testid={testId}>\n <summary className=\"cursor-pointer\">\n {title} ({names.length})\n </summary>\n {names.length === 0 ? <p className=\"text-muted-foreground\">None</p> : <p className=\"font-mono text-code break-words\">{names.join(', ')}</p>}\n </details>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"4022f71fc1b692c7a60917ba9daa1eea6ab8e71642\":{\"name\":\"switchPartyTools\"}},\"web/features/outside-party/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_2=/*#__PURE__*/createServerReference(\"4022f71fc1b692c7a60917ba9daa1eea6ab8e71642\",callServer,void 0,findSourceMapURL,\"switchPartyTools\");export{$$RSC_SERVER_ACTION_2 as switchPartyTools};","/** What a tool's switch says once the API kept it: what the fleet sees now, or that the proxy ship shows it at its next statement, and why. */\nexport function switchedMessageOf({ tool, isOn, statementRefusal }: { tool: string; isOn: boolean; statementRefusal: string | null }): string {\n const state = `${tool} is ${isOn ? 'on' : 'off'}`;\n if (statementRefusal !== null) {\n return `${state}; the fleet sees it at the proxy ship's next statement: ${statementRefusal}`;\n }\n return isOn ? `${state}: the fleet may call it.` : `${state}: the fleet sees it no more, and a call to it is refused.`;\n}\n","/**\n * Suggest from hints (gateway scopes 4.3): the tools with no scope of their\n * own, split by what the server says of them. Hints are the server's claim,\n * never trusted on their own, so nothing applies until the approver confirms.\n */\n\ninterface HintedTool {\n name: string;\n isReadOnly?: boolean | undefined;\n isDestructive?: boolean | undefined;\n scopes: readonly string[];\n}\n\n/** The tools each picker would change, by name, and the ones without hints, left untouched. */\nexport interface HintSuggestions {\n readOnly: string[];\n other: string[];\n withoutHints: string[];\n}\n\nexport function hintSuggestionsOf(tools: readonly HintedTool[]): HintSuggestions {\n const suggestions: HintSuggestions = { readOnly: [], other: [], withoutHints: [] };\n for (const tool of tools.filter(({ scopes }) => scopes.length === 0)) {\n if (tool.isDestructive === true || tool.isReadOnly === false) {\n suggestions.other.push(tool.name);\n } else if (tool.isReadOnly === true) {\n suggestions.readOnly.push(tool.name);\n } else {\n suggestions.withoutHints.push(tool.name);\n }\n }\n return suggestions;\n}\n\n/** The change the suggestions make with the scopes picked: a group whose picker is empty changes nothing. */\nexport function suggestedScopesOf(suggestions: HintSuggestions, picked: { readOnly: readonly string[]; other: readonly string[] }): { tool: string; scopes: string[] }[] {\n const group = (tools: readonly string[], scopes: readonly string[]) => (scopes.length === 0 ? [] : tools.map((tool) => ({ tool, scopes: [...scopes] })));\n return [...group(suggestions.readOnly, picked.readOnly), ...group(suggestions.other, picked.other)];\n}\n","/** How a bulk change treats the picked scopes on each selected tool (gateway scopes 4.3). */\nexport const SCOPE_CHANGES = [\n { how: 'add', label: 'Add to each' },\n { how: 'remove', label: 'Remove from each' },\n { how: 'replace', label: 'Replace with these' },\n] as const;\n\nexport type ScopeChange = (typeof SCOPE_CHANGES)[number]['how'];\n\n/** What each selected tool needs of its own after the change, each scope once; none needs nothing beyond the party's. */\nexport function changedScopesOf(selected: readonly { name: string; scopes: readonly string[] }[], change: { scopes: readonly string[]; how: ScopeChange }): { tool: string; scopes: string[] }[] {\n return selected.map(({ name, scopes }) => {\n switch (change.how) {\n case 'add':\n return { tool: name, scopes: [...new Set([...scopes, ...change.scopes])] };\n case 'remove':\n return { tool: name, scopes: scopes.filter((scope) => !change.scopes.includes(scope)) };\n case 'replace':\n return { tool: name, scopes: [...new Set(change.scopes)] };\n }\n });\n}\n","/**\n * The rows of an outside MCP server's tools table (gateway scopes 4.3):\n * each tool the server lists now, with its switch, the hints it gives and\n * the scopes it needs of its own; and the filters an approver narrows them by.\n */\nimport type { Read } from '../../../lib/gateway-api/page-api';\n\n/** A tool as the server lists it now, with its switch, as the API answers it. */\nexport interface ListedTool {\n name: string;\n description?: string | undefined;\n isReadOnly?: boolean | undefined;\n isDestructive?: boolean | undefined;\n isOn: boolean;\n isNew: boolean;\n}\n\n/** A party's required scopes as the API answers them. */\nexport interface PartyRequirements {\n version: number;\n party: string[];\n tools: { tool: string; scopes: string[] }[];\n}\n\n/** One row: the tool, its switch (unknown while the server does not answer), and the scopes it needs of its own. */\nexport interface TableTool {\n name: string;\n description?: string | undefined;\n isReadOnly?: boolean | undefined;\n isDestructive?: boolean | undefined;\n isOn: boolean | null;\n isNew: boolean;\n scopes: readonly string[];\n}\n\n/**\n * The rows: every tool the server lists with what it needs; while the server\n * does not answer, the requirements kept per tool name, so they can still be\n * read and changed.\n */\nexport function tableToolsOf({ read, requirements }: { read: Read<{ tools: ListedTool[] }>; requirements: PartyRequirements }): TableTool[] {\n const own = new Map(requirements.tools.map(({ tool, scopes }) => [tool, scopes]));\n if (!read.isOk) {\n return requirements.tools.map(({ tool, scopes }) => ({ name: tool, isOn: null, isNew: false, scopes }));\n }\n return read.value.tools.map((tool) => ({ ...tool, scopes: own.get(tool.name) ?? [] }));\n}\n\n/** The table's state filter. */\nexport const STATE_FILTERS = [\n { state: 'all', label: 'All' },\n { state: 'on', label: 'On' },\n { state: 'off', label: 'Off' },\n { state: 'new', label: 'New' },\n { state: 'needsNothing', label: 'Needs nothing' },\n] as const;\n\nexport type StateFilter = (typeof STATE_FILTERS)[number]['state'];\n\nfunction isInState(tool: TableTool, { state, partyScopes }: { state: StateFilter; partyScopes: readonly string[] }): boolean {\n switch (state) {\n case 'all':\n return true;\n case 'on':\n return tool.isOn === true;\n case 'off':\n return tool.isOn === false;\n case 'new':\n return tool.isNew;\n case 'needsNothing':\n return partyScopes.length === 0 && tool.scopes.length === 0;\n }\n}\n\n/** The tools whose name holds the text, in any case, and that are in the state picked. */\nexport function shownTools(tools: readonly TableTool[], filter: { name: string; state: StateFilter; partyScopes: readonly string[] }): TableTool[] {\n const name = filter.name.trim().toLowerCase();\n return tools.filter((tool) => tool.name.toLowerCase().includes(name) && isInState(tool, filter));\n}\n\n/** What the page kept since it read the rows: each changed tool's own scopes, and each switched tool's switch. */\nexport interface KeptChanges {\n scopes: ReadonlyMap<string, readonly string[]>;\n switches: ReadonlyMap<string, boolean>;\n}\n\n/** The rows with what was kept since they were read, so a change shows at once rather than when the page reads the server again. */\nexport function keptToolsOf(tools: readonly TableTool[], kept: KeptChanges): TableTool[] {\n return tools.map((tool) => ({ ...tool, scopes: kept.scopes.get(tool.name) ?? tool.scopes, isOn: tool.isOn === null ? null : (kept.switches.get(tool.name) ?? tool.isOn) }));\n}\n","'use client';\n\nimport { useState, useTransition } from 'react';\n\nimport { IDLE, type FormState } from '../../forms/form-state';\nimport { readMoreSignIns, removePersonSignIn } from '../actions';\nimport { removedMessageOf, withNextPage } from '../everyones-sign-ins';\nimport { personOf, SignInsCard, type PersonSignIn } from './everyones-sign-ins';\n\n/**\n * Everyone's sign-ins as an approver works on them (decision 0067, M3):\n * Remove asks to confirm in place, a removal is said above the list, and\n * Show more reads the next page only when pressed. The page refreshes from\n * the server after a removal, so your own sign-in above stays true too.\n */\nexport function EveryonesSignInsCard({ fleetId, party, now, first }: { fleetId: string; party: string; now: string; first: { grants: PersonSignIn[]; next: string | null } }) {\n const [more, setMore] = useState<PersonSignIn[]>([]);\n const [next, setNext] = useState(first.next);\n const [removed, setRemoved] = useState<ReadonlySet<string>>(new Set());\n const [confirming, setConfirming] = useState<string | null>(null);\n const [removing, setRemoving] = useState<string | null>(null);\n const [outcome, setOutcome] = useState<FormState>(IDLE);\n const [isLoadingMore, startLoadingMore] = useTransition();\n const [, startRemoving] = useTransition();\n const rows = withNextPage(first.grants, more).filter(({ personShipId }) => !removed.has(personShipId));\n\n const remove = (signIn: PersonSignIn) => {\n setRemoving(signIn.personShipId);\n startRemoving(async () => {\n const done = await removePersonSignIn({ fleetId, name: party, personShipId: signIn.personShipId });\n setRemoving(null);\n setConfirming(null);\n if (done.isOk) {\n setRemoved((held) => new Set([...held, signIn.personShipId]));\n setOutcome({ kind: 'done', message: removedMessageOf({ person: personOf(signIn), party, isRevoked: done.isRevoked }) });\n } else {\n setOutcome({ kind: 'refused', message: done.message });\n }\n });\n };\n\n const showMore = () => {\n const after = next ?? rows.at(-1)?.personShipId;\n if (after === undefined) {\n return;\n }\n startLoadingMore(async () => {\n const page = await readMoreSignIns({ fleetId, name: party, after });\n if (page.isOk) {\n setMore((shown) => withNextPage(shown, page.grants));\n setNext(page.next);\n } else {\n setOutcome({ kind: 'refused', message: page.message });\n }\n });\n };\n\n return (\n <SignInsCard\n party={party}\n now={now}\n rows={rows}\n refusal={null}\n hasMore={next !== null}\n isLoadingMore={isLoadingMore}\n confirming={confirming}\n removing={removing}\n outcome={outcome}\n onRemove={(personShipId) => { setConfirming(personShipId); setOutcome(IDLE); }}\n onConfirm={remove}\n onKeep={() => { setConfirming(null); }}\n onMore={showMore}\n />\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40781bbbdfcf571b59edd676b5f2d5fd317126a449\":{\"name\":\"readMoreSignIns\"}},\"web/features/outside-party/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_7=/*#__PURE__*/createServerReference(\"40781bbbdfcf571b59edd676b5f2d5fd317126a449\",callServer,void 0,findSourceMapURL,\"readMoreSignIns\");export{$$RSC_SERVER_ACTION_7 as readMoreSignIns};","/* __next_internal_action_entry_do_not_use__ [{\"4066730a504d80c9fc1a2cada4ae1f0f7440562d31\":{\"name\":\"removePersonSignIn\"}},\"web/features/outside-party/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_6=/*#__PURE__*/createServerReference(\"4066730a504d80c9fc1a2cada4ae1f0f7440562d31\",callServer,void 0,findSourceMapURL,\"removePersonSignIn\");export{$$RSC_SERVER_ACTION_6 as removePersonSignIn};","/**\n * Everyone's sign-ins on a server's page, for approvers (decision 0067, M3):\n * how a removal is said, and the rows Show more adds.\n */\n\n/** A removal said: revoked at the server where it revoked the tokens, removed alone where it offers no revocation or did not answer. */\nexport function removedMessageOf({ person, party, isRevoked }: { person: string; party: string; isRevoked: boolean }): string {\n return isRevoked ? `${person}'s sign-in is removed, and revoked at ${party}.` : `${person}'s sign-in is removed.`;\n}\n\n/** The rows shown with the next page after them, each person once: a removal moves the pages along, so the next page may start with a person already shown. */\nexport function withNextPage<Row extends { personShipId: string }>(shown: readonly Row[], page: readonly Row[]): Row[] {\n const isShown = new Set(shown.map(({ personShipId }) => personShipId));\n return [...shown, ...page.filter(({ personShipId }) => !isShown.has(personShipId))];\n}\n","import type { inferRouterOutputs } from '@trpc/server';\n\nimport type { GatewayRouter } from '../../../../src/adapters/trpc/router.js';\nimport type { FormState } from '../../forms/form-state';\nimport { BUTTONS, CARD } from '../../forms/ui/look';\nimport { Outcome } from '../../forms/ui/outcome';\nimport type { Tone } from '../../outside-parties/party-kinds';\nimport { StatusBadge } from '../../outside-parties/ui/status-badge';\nimport { whenWordsOf } from '../own-sign-in';\n\n/** A person's sign-in as the API answers it to an approver: never a token. */\nexport type PersonSignIn = inferRouterOutputs<GatewayRouter>['parties']['signIns']['grants'][number];\n\nconst BADGES: Record<PersonSignIn['state'], { tone: Tone; label: string }> = {\n signedIn: { tone: 'ok', label: 'Signed in' },\n lost: { tone: 'attention', label: 'Lost' },\n};\n\n/** How many rows the list shows while it is read. */\nconst SKELETON_ROWS = 3;\n\n/** The person a sign-in is of: their person ship's name, or its id where the fleet answered no name. */\nexport function personOf(signIn: PersonSignIn): string {\n return signIn.personName ?? signIn.personShipId;\n}\n\nfunction accountOf({ outsideAccount }: PersonSignIn) {\n return outsideAccount.name ?? outsideAccount.subject ?? <span className=\"text-muted-foreground\">Not known</span>;\n}\n\nfunction Heading({ count }: { count: number | null }) {\n return (\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <h2 className=\"text-section font-semibold\">Everyone&apos;s sign-ins</h2>\n {count === null ? null : <span className=\"text-muted-foreground\">{count}</span>}\n </div>\n );\n}\n\nfunction Head() {\n return (\n <thead className=\"max-sm:hidden\">\n <tr className=\"border-b border-border text-left text-muted-foreground\">\n <th className=\"h-10 px-2 font-medium\">Person</th>\n <th className=\"h-10 px-2 font-medium\">Account</th>\n <th className=\"h-10 px-2 font-medium\">State</th>\n <th className=\"h-10 px-2 font-medium\">Last used</th>\n <th className=\"h-10 px-2\">\n <span className=\"sr-only\">Remove</span>\n </th>\n </tr>\n </thead>\n );\n}\n\n/** Everyone's sign-ins while they are read: the heading and the table's shape. */\nexport function EveryonesSignInsSkeleton({ party }: { party: string }) {\n return (\n <section className={`${CARD} grid gap-3`} aria-busy=\"true\" aria-label={`Reading everyone's sign-ins to ${party}`} data-testid=\"outside-party-sign-ins-skeleton\">\n <Heading count={null} />\n <table className=\"w-full border-collapse max-sm:block\">\n <Head />\n <tbody className=\"max-sm:grid\">\n {Array.from({ length: SKELETON_ROWS }, (_, row) => (\n <tr key={row} className=\"border-b border-border last:border-b-0 max-sm:grid max-sm:gap-1 max-sm:py-3\">\n <td className=\"h-12 px-2 max-sm:h-auto max-sm:px-0\">\n <span className=\"block h-3.5 w-20 animate-pulse rounded-md bg-muted max-sm:w-2/5\" />\n </td>\n <td className=\"h-12 px-2 max-sm:h-auto max-sm:px-0\">\n <span className=\"block h-3.5 w-36 animate-pulse rounded-md bg-muted max-sm:w-3/4\" />\n </td>\n <td className=\"h-12 px-2 max-sm:hidden\">\n <span className=\"block h-3.5 w-16 animate-pulse rounded-md bg-muted\" />\n </td>\n <td className=\"h-12 px-2 max-sm:hidden\">\n <span className=\"block h-3.5 w-20 animate-pulse rounded-md bg-muted\" />\n </td>\n <td className=\"max-sm:hidden\" />\n </tr>\n ))}\n </tbody>\n </table>\n </section>\n );\n}\n\n/** What the card shows now, and what each press asks of the part that holds it. */\nexport interface SignInsCardProps {\n party: string;\n /** When the page was read, so every row says its times from the same moment. */\n now: string;\n rows: readonly PersonSignIn[];\n /** Why the API refused the list, said in place of it. */\n refusal: string | null;\n hasMore: boolean;\n isLoadingMore: boolean;\n /** The person ship whose removal waits for a confirm. */\n confirming: string | null;\n /** The person ship whose removal is on its way. */\n removing: string | null;\n outcome: FormState;\n onRemove: (personShipId: string) => void;\n onConfirm: (signIn: PersonSignIn) => void;\n onKeep: () => void;\n onMore: () => void;\n}\n\nfunction Confirm({ signIn, party, isRemoving, onConfirm, onKeep }: { signIn: PersonSignIn; party: string; isRemoving: boolean; onConfirm: () => void; onKeep: () => void }) {\n const person = personOf(signIn);\n return (\n <div className=\"grid gap-2 rounded-md bg-muted p-3\" data-testid=\"outside-party-sign-ins-confirm\">\n <p>\n Remove {person}&apos;s sign-in? Their ships&apos; calls to {party} are refused until they sign in again.\n </p>\n <div className=\"flex flex-wrap gap-2\">\n <button type=\"button\" className={BUTTONS.destructive} disabled={isRemoving} aria-busy={isRemoving} onClick={onConfirm} data-testid=\"outside-party-sign-ins-remove-confirmed\">\n {isRemoving ? 'Removing…' : `Remove ${person}'s sign-in`}\n </button>\n <button type=\"button\" className={BUTTONS.secondary} onClick={onKeep}>\n Keep\n </button>\n </div>\n </div>\n );\n}\n\n/**\n * Everyone's sign-ins to a server where each person signs in (decision 0067,\n * M3), for an account holding gateway:approve: each person, their outside\n * account, state and when last used, with Remove confirmed in place. A table\n * on a wide screen, a list on a phone, 20 a page with Show more.\n */\nexport function SignInsCard(props: SignInsCardProps) {\n const { party, now, rows, refusal, hasMore, isLoadingMore, confirming, removing, outcome } = props;\n const lastUsedOf = (signIn: PersonSignIn) => (signIn.lastUsedAt === null ? 'Not yet' : whenWordsOf(signIn.lastUsedAt, new Date(now)));\n return (\n <section className={`${CARD} grid gap-3`} data-testid=\"outside-party-sign-ins\">\n <Heading count={refusal === null ? rows.length : null} />\n <Outcome state={outcome} />\n {refusal !== null ? (\n <Outcome state={{ kind: 'refused', message: refusal }} />\n ) : rows.length === 0 ? (\n <p className=\"text-muted-foreground\">Nobody has signed in yet.</p>\n ) : (\n <table className=\"w-full border-collapse max-sm:block\">\n <Head />\n <tbody className=\"max-sm:grid\">\n {rows.map((signIn) => {\n const badge = BADGES[signIn.state];\n const isConfirming = confirming === signIn.personShipId;\n const lastUsed = lastUsedOf(signIn);\n return [\n <tr key={signIn.personShipId} className={`border-b border-border max-sm:grid max-sm:grid-cols-[1fr_auto] max-sm:gap-1 max-sm:py-3 ${isConfirming ? 'border-b-0' : 'last:border-b-0'}`} data-testid=\"outside-party-sign-ins-row\">\n <td className=\"h-12 px-2 max-sm:col-start-1 max-sm:row-start-1 max-sm:h-auto max-sm:px-0 max-sm:font-medium\">\n {personOf(signIn)}\n {signIn.isYours ? <span className=\"font-normal text-muted-foreground\"> (you)</span> : null}\n </td>\n <td className=\"h-12 px-2 max-sm:col-span-2 max-sm:row-start-2 max-sm:h-auto max-sm:px-0 max-sm:text-muted-foreground\">\n {accountOf(signIn)}\n <span className=\"sm:hidden\"> · last used {signIn.lastUsedAt === null ? 'not yet' : lastUsed}</span>\n </td>\n <td className=\"h-12 px-2 max-sm:col-start-2 max-sm:row-start-1 max-sm:h-auto max-sm:px-0\">\n <StatusBadge tone={badge.tone} label={badge.label} />\n </td>\n <td className=\"h-12 px-2 text-muted-foreground max-sm:hidden\">{lastUsed}</td>\n <td className=\"h-12 px-2 text-right max-sm:col-span-2 max-sm:row-start-3 max-sm:h-auto max-sm:px-0 max-sm:text-left\">\n <button type=\"button\" className={`${BUTTONS.secondary} ${isConfirming ? 'max-sm:hidden' : ''}`} onClick={() => { props.onRemove(signIn.personShipId); }} data-testid=\"outside-party-sign-ins-remove\">\n Remove\n </button>\n </td>\n </tr>,\n isConfirming ? (\n <tr key={`${signIn.personShipId}-confirm`} className=\"border-b border-border last:border-b-0 max-sm:block max-sm:pb-3\">\n <td colSpan={5} className=\"pb-2 max-sm:block max-sm:pb-0\">\n <Confirm signIn={signIn} party={party} isRemoving={removing === signIn.personShipId} onConfirm={() => { props.onConfirm(signIn); }} onKeep={props.onKeep} />\n </td>\n </tr>\n ) : null,\n ];\n })}\n </tbody>\n </table>\n )}\n {refusal === null && hasMore ? (\n <div>\n <button type=\"button\" className={BUTTONS.secondary} disabled={isLoadingMore} aria-busy={isLoadingMore} onClick={props.onMore} data-testid=\"outside-party-sign-ins-more\">\n {isLoadingMore ? 'Showing more…' : 'Show more'}\n </button>\n </div>\n ) : null}\n </section>\n );\n}\n","/**\n * Your own sign-in on a server's page (decision 0067, M2): how a sign-in\n * went, as the address the gateway sends the browser back to says it\n * (src/adapters/http/party-sign-in-routes.ts), or as Remove says it; and\n * when it was made or last used, in words.\n */\nimport type { SearchParams } from '../../lib/gateway-api/page-api';\n\n/** What the address says once you removed your sign-in: the page's own outcome, never the gateway's. */\nexport const REMOVED = 'removed';\n\n/** What the address back says of a sign-in, and what the page calls it. */\nconst OUTCOMES = {\n 'signed-in': 'signedIn',\n [REMOVED]: 'removed',\n failed: 'failed',\n 'turned-away': 'turnedAway',\n 'not-signed-in': 'cancelled',\n unavailable: 'unavailable',\n} as const;\n\nexport type SignInOutcomeKind = (typeof OUTCOMES)[keyof typeof OUTCOMES];\n\n/** How a sign-in went, with the authorization server's error code where it answered one. */\nexport interface SignInOutcome {\n kind: SignInOutcomeKind;\n serverError: string | null;\n}\n\n/** The parameter the address names the outcome by, and the one it names the server's error code by. */\nexport const SIGN_IN_PARAMETER = 'sign-in';\nconst ERROR_PARAMETER = 'error';\n\nfunction isSaid(said: string): said is keyof typeof OUTCOMES {\n return Object.hasOwn(OUTCOMES, said);\n}\n\n/** How the sign-in went, or nothing when the address says no outcome it knows. */\nexport function signInOutcomeOf(searchParams: SearchParams): SignInOutcome | null {\n const said = searchParams[SIGN_IN_PARAMETER];\n if (typeof said !== 'string' || !isSaid(said)) {\n return null;\n }\n const serverError = searchParams[ERROR_PARAMETER];\n return { kind: OUTCOMES[said], serverError: typeof serverError === 'string' ? serverError : null };\n}\n\nconst MINUTE_MS = 60_000;\nconst HOUR_MS = 60 * MINUTE_MS;\n\n/** The months as the day and time name them. */\nconst MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] as const;\n\nconst twoDigits = (value: number) => String(value).padStart(2, '0');\n\n/** The day and time, in UTC as the console's other times are: 28 Oct, 22:10. */\nexport function dayAndTimeOf(at: string): string {\n const time = new Date(at);\n return `${String(time.getUTCDate())} ${MONTHS[time.getUTCMonth()] ?? ''}, ${twoDigits(time.getUTCHours())}:${twoDigits(time.getUTCMinutes())}`;\n}\n\n/** When something happened, in words: Just now, minutes ago within the hour, else the day and time. */\nexport function whenWordsOf(at: string, now: Date): string {\n const ago = now.getTime() - new Date(at).getTime();\n if (ago < MINUTE_MS) {\n return 'Just now';\n }\n if (ago < HOUR_MS) {\n return `${String(Math.floor(ago / MINUTE_MS))} min ago`;\n }\n return dayAndTimeOf(at);\n}\n","'use client';\n\nimport { useActionState } from 'react';\n\nimport { FLEET_FIELD, IDLE } from '../../forms/form-state';\nimport type { ButtonKind } from '../../forms/ui/look';\nimport { Outcome } from '../../forms/ui/outcome';\nimport { SubmitButton } from '../../forms/ui/submit-button';\nimport { removeOwnSignIn, signInToParty } from '../actions';\n\nfunction PartyFields({ fleetId, party }: { fleetId: string; party: string }) {\n return (\n <>\n <input type=\"hidden\" name={FLEET_FIELD} value={fleetId} />\n <input type=\"hidden\" name=\"name\" value={party} />\n </>\n );\n}\n\n/** Sign in, or Sign in again: the browser goes to the server's authorization server. A refusal is said in place. */\nexport function SignInForm({ fleetId, party, label, kind }: { fleetId: string; party: string; label: string; kind: ButtonKind }) {\n const [refused, signIn] = useActionState(signInToParty, IDLE);\n return (\n <form action={signIn} className=\"grid gap-2\">\n <Outcome state={refused} />\n <PartyFields fleetId={fleetId} party={party} />\n <div>\n <SubmitButton kind={kind} pending={`Opening ${party}…`} testId=\"outside-party-sign-in-start\">\n {label}\n </SubmitButton>\n </div>\n </form>\n );\n}\n\n/** Remove: your sign-in is revoked where the server offers it, then dropped. A refusal is said in place. */\nexport function RemoveSignInForm({ fleetId, party }: { fleetId: string; party: string }) {\n const [refused, remove] = useActionState(removeOwnSignIn, IDLE);\n return (\n <form action={remove} className=\"grid gap-2\">\n <Outcome state={refused} />\n <PartyFields fleetId={fleetId} party={party} />\n <div>\n <SubmitButton kind=\"secondary\" pending=\"Removing…\" testId=\"outside-party-sign-in-remove\">\n Remove\n </SubmitButton>\n </div>\n </form>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"60aebc51419ce1755576b4ee4a1a76ff8cdb4eb6b3\":{\"name\":\"removeOwnSignIn\"}},\"web/features/outside-party/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_5=/*#__PURE__*/createServerReference(\"60aebc51419ce1755576b4ee4a1a76ff8cdb4eb6b3\",callServer,void 0,findSourceMapURL,\"removeOwnSignIn\");export{$$RSC_SERVER_ACTION_5 as removeOwnSignIn};","'use client';\n\nimport { useActionState } from 'react';\nimport { useFormStatus } from 'react-dom';\n\nimport { FLEET_FIELD } from '../../forms/form-state';\nimport { Switch } from '../../forms/ui/switch';\nimport { markA2aAgent, type MarkState } from '../actions';\n\nconst IDLE: MarkState = { kind: 'idle' };\n\nfunction SubmitSwitch({ isRepeatable }: { isRepeatable: boolean }) {\n const status = useFormStatus();\n return <Switch type=\"submit\" isOn={isRepeatable} label=\"Repeatable\" isPending={status.pending} testId=\"outside-party-repeatable-switch\" />;\n}\n\n/**\n * An A2A agent's repeatable mark on its page, for an approver (A9): a press\n * sends the change at once, the switch says it is on its way, then the row\n * says what it means now, or why the API refused it.\n */\nexport function RepeatableSwitch({ fleetId, party, isRepeatable }: { fleetId: string; party: string; isRepeatable: boolean }) {\n const [state, action] = useActionState(markA2aAgent, IDLE);\n const shown = state.kind === 'marked' ? state.isRepeatable : isRepeatable;\n return (\n <>\n <form action={action} className=\"contents\">\n <input type=\"hidden\" name={FLEET_FIELD} value={fleetId} />\n <input type=\"hidden\" name=\"name\" value={party} />\n <input type=\"hidden\" name=\"isRepeatable\" value={String(!shown)} />\n <SubmitSwitch isRepeatable={shown} />\n </form>\n {state.kind === 'idle' ? null : (\n <span role={state.kind === 'refused' ? 'alert' : 'status'} className={`basis-full text-caption ${state.kind === 'refused' ? 'text-tone-attention-fg' : 'text-tone-ok-fg'}`} data-testid=\"outside-party-repeatable-outcome\">\n {state.message}\n </span>\n )}\n </>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"60b0f4a8553de54d3d0005faaf9f0d245fd5469a69\":{\"name\":\"markA2aAgent\"}},\"web/features/outside-party/actions.ts\",\"\"] */\"use turbopack: no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_3=/*#__PURE__*/createServerReference(\"60b0f4a8553de54d3d0005faaf9f0d245fd5469a69\",callServer,void 0,findSourceMapURL,\"markA2aAgent\");export{$$RSC_SERVER_ACTION_3 as markA2aAgent};"],"names":["ToastContext","undefined","useToastProviderContext","context","Error","Switch","isOn","label","isPending","type","onClick","testId","role","disabled","className","$$RSC_SERVER_ACTION_4","AgentNeeds","props","Provider","AgentNeedsLine","fleetId","party","version","scopes","listed","canChange","router","toasts","useToastManager","startTransition","isReloading","startReload","isOpen","setIsOpen","picked","setPicked","isSaving","setIsSaving","refusal","setRefusal","keptVersion","setKeptVersion","round","setRound","kept","setKept","shown","basis","save","madeOn","Math","max","outcome","name","tools","isOk","message","isConflict","previous","add","title","statementRefusal","refresh","own","Set","map","scope","onClose","description","appliesTo","action","pending","isDisabled","onPress","onReload","onPick","nestedDrawers","height","frontmostHeight","swipeMovementX","swipeMovementY","snapPointOffset","swipeStrength","$$RSC_SERVER_ACTION_7","$$RSC_SERVER_ACTION_5","$$RSC_SERVER_ACTION_3"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50]}