convex-cms 0.0.2 → 0.0.5-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/README.md +109 -13
  2. package/admin-dist/nitro.json +15 -0
  3. package/admin-dist/public/assets/CmsEmptyState-CiMQwSQV.js +5 -0
  4. package/admin-dist/public/assets/CmsPageHeader-ohOq0luT.js +1 -0
  5. package/admin-dist/public/assets/CmsStatusBadge-BdNf0V9v.js +1 -0
  6. package/admin-dist/public/assets/CmsSurface-CWup6Jh7.js +1 -0
  7. package/admin-dist/public/assets/CmsToolbar-cEBlCHa3.js +1 -0
  8. package/admin-dist/public/assets/ContentEntryEditor-BY5ypfUs.js +4 -0
  9. package/admin-dist/public/assets/ErrorState-C4nJ-ml4.js +1 -0
  10. package/admin-dist/public/assets/TaxonomyFilter-BgE_SR_O.js +1 -0
  11. package/admin-dist/public/assets/_contentTypeId-DtZectcC.js +1 -0
  12. package/admin-dist/public/assets/_entryId-BpSmrfAm.js +1 -0
  13. package/admin-dist/public/assets/alert-Bf2l8kxw.js +1 -0
  14. package/admin-dist/public/assets/badge-qPrc4AUM.js +1 -0
  15. package/admin-dist/public/assets/circle-check-big-Dgozy3vV.js +1 -0
  16. package/admin-dist/public/assets/command-QOmNhlb0.js +1 -0
  17. package/admin-dist/public/assets/content-OEBGlxg1.js +1 -0
  18. package/admin-dist/public/assets/content-types-CjQliqVV.js +2 -0
  19. package/admin-dist/public/assets/globals-hAmgC66w.css +1 -0
  20. package/admin-dist/public/assets/index-BH_ECMhv.js +1 -0
  21. package/admin-dist/public/assets/label-DCsUdvFh.js +1 -0
  22. package/admin-dist/public/assets/link-2-Czw1N61H.js +1 -0
  23. package/admin-dist/public/assets/list-DtCsXj8-.js +1 -0
  24. package/admin-dist/public/assets/main-CXgkZMhe.js +97 -0
  25. package/admin-dist/public/assets/media-DTJ3-ViE.js +1 -0
  26. package/admin-dist/public/assets/new._contentTypeId-CoTDxKzf.js +1 -0
  27. package/admin-dist/public/assets/plus-xCFJK0RC.js +1 -0
  28. package/admin-dist/public/assets/rotate-ccw-DIqK63wY.js +1 -0
  29. package/admin-dist/public/assets/scroll-area-B-yrE66a.js +1 -0
  30. package/admin-dist/public/assets/search-CbCbboeU.js +1 -0
  31. package/admin-dist/public/assets/select-Co3TZFJb.js +1 -0
  32. package/admin-dist/public/assets/settings-BspTTv_o.js +1 -0
  33. package/admin-dist/public/assets/switch-CfavASmR.js +1 -0
  34. package/admin-dist/public/assets/tabs-CN5s5u2W.js +1 -0
  35. package/admin-dist/public/assets/tanstack-adapter-npeE3RdY.js +1 -0
  36. package/admin-dist/public/assets/taxonomies-CgG46fIF.js +1 -0
  37. package/admin-dist/public/assets/textarea-BJ0XFZpT.js +1 -0
  38. package/admin-dist/public/assets/trash-B3daldm5.js +1 -0
  39. package/admin-dist/public/assets/triangle-alert-BZRcqsUg.js +1 -0
  40. package/admin-dist/public/assets/useBreadcrumbLabel-DwZlwvFF.js +1 -0
  41. package/admin-dist/public/assets/usePermissions-C1JQhfqb.js +1 -0
  42. package/admin-dist/public/favicon.ico +0 -0
  43. package/admin-dist/server/_chunks/_libs/@date-fns/tz.mjs +217 -0
  44. package/admin-dist/server/_chunks/_libs/@floating-ui/core.mjs +719 -0
  45. package/admin-dist/server/_chunks/_libs/@floating-ui/dom.mjs +622 -0
  46. package/admin-dist/server/_chunks/_libs/@floating-ui/react-dom.mjs +292 -0
  47. package/admin-dist/server/_chunks/_libs/@floating-ui/utils.mjs +320 -0
  48. package/admin-dist/server/_chunks/_libs/@radix-ui/number.mjs +6 -0
  49. package/admin-dist/server/_chunks/_libs/@radix-ui/primitive.mjs +11 -0
  50. package/admin-dist/server/_chunks/_libs/@radix-ui/react-arrow.mjs +23 -0
  51. package/admin-dist/server/_chunks/_libs/@radix-ui/react-avatar.mjs +119 -0
  52. package/admin-dist/server/_chunks/_libs/@radix-ui/react-checkbox.mjs +270 -0
  53. package/admin-dist/server/_chunks/_libs/@radix-ui/react-collection.mjs +69 -0
  54. package/admin-dist/server/_chunks/_libs/@radix-ui/react-compose-refs.mjs +39 -0
  55. package/admin-dist/server/_chunks/_libs/@radix-ui/react-context.mjs +137 -0
  56. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dialog.mjs +325 -0
  57. package/admin-dist/server/_chunks/_libs/@radix-ui/react-direction.mjs +9 -0
  58. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dismissable-layer.mjs +210 -0
  59. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dropdown-menu.mjs +253 -0
  60. package/admin-dist/server/_chunks/_libs/@radix-ui/react-focus-guards.mjs +29 -0
  61. package/admin-dist/server/_chunks/_libs/@radix-ui/react-focus-scope.mjs +206 -0
  62. package/admin-dist/server/_chunks/_libs/@radix-ui/react-id.mjs +14 -0
  63. package/admin-dist/server/_chunks/_libs/@radix-ui/react-label.mjs +23 -0
  64. package/admin-dist/server/_chunks/_libs/@radix-ui/react-menu.mjs +812 -0
  65. package/admin-dist/server/_chunks/_libs/@radix-ui/react-popover.mjs +300 -0
  66. package/admin-dist/server/_chunks/_libs/@radix-ui/react-popper.mjs +286 -0
  67. package/admin-dist/server/_chunks/_libs/@radix-ui/react-portal.mjs +16 -0
  68. package/admin-dist/server/_chunks/_libs/@radix-ui/react-presence.mjs +128 -0
  69. package/admin-dist/server/_chunks/_libs/@radix-ui/react-primitive.mjs +141 -0
  70. package/admin-dist/server/_chunks/_libs/@radix-ui/react-roving-focus.mjs +224 -0
  71. package/admin-dist/server/_chunks/_libs/@radix-ui/react-scroll-area.mjs +721 -0
  72. package/admin-dist/server/_chunks/_libs/@radix-ui/react-select.mjs +1163 -0
  73. package/admin-dist/server/_chunks/_libs/@radix-ui/react-separator.mjs +28 -0
  74. package/admin-dist/server/_chunks/_libs/@radix-ui/react-slot.mjs +601 -0
  75. package/admin-dist/server/_chunks/_libs/@radix-ui/react-switch.mjs +152 -0
  76. package/admin-dist/server/_chunks/_libs/@radix-ui/react-tabs.mjs +189 -0
  77. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-callback-ref.mjs +11 -0
  78. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-controllable-state.mjs +69 -0
  79. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-effect-event.mjs +1 -0
  80. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-escape-keydown.mjs +17 -0
  81. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-is-hydrated.mjs +15 -0
  82. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-layout-effect.mjs +6 -0
  83. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-previous.mjs +14 -0
  84. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-size.mjs +39 -0
  85. package/admin-dist/server/_chunks/_libs/@radix-ui/react-visually-hidden.mjs +33 -0
  86. package/admin-dist/server/_chunks/_libs/@tanstack/history.mjs +409 -0
  87. package/admin-dist/server/_chunks/_libs/@tanstack/react-router.mjs +1718 -0
  88. package/admin-dist/server/_chunks/_libs/@tanstack/react-store.mjs +56 -0
  89. package/admin-dist/server/_chunks/_libs/@tanstack/router-core.mjs +4829 -0
  90. package/admin-dist/server/_chunks/_libs/@tanstack/store.mjs +134 -0
  91. package/admin-dist/server/_chunks/_libs/react-dom.mjs +10781 -0
  92. package/admin-dist/server/_chunks/_libs/react.mjs +513 -0
  93. package/admin-dist/server/_libs/aria-hidden.mjs +122 -0
  94. package/admin-dist/server/_libs/class-variance-authority.mjs +44 -0
  95. package/admin-dist/server/_libs/clsx.mjs +16 -0
  96. package/admin-dist/server/_libs/cmdk.mjs +315 -0
  97. package/admin-dist/server/_libs/convex.mjs +4841 -0
  98. package/admin-dist/server/_libs/cookie-es.mjs +58 -0
  99. package/admin-dist/server/_libs/croner.mjs +1 -0
  100. package/admin-dist/server/_libs/crossws.mjs +1 -0
  101. package/admin-dist/server/_libs/date-fns.mjs +1716 -0
  102. package/admin-dist/server/_libs/detect-node-es.mjs +1 -0
  103. package/admin-dist/server/_libs/get-nonce.mjs +9 -0
  104. package/admin-dist/server/_libs/h3-v2.mjs +277 -0
  105. package/admin-dist/server/_libs/h3.mjs +401 -0
  106. package/admin-dist/server/_libs/hookable.mjs +1 -0
  107. package/admin-dist/server/_libs/isbot.mjs +20 -0
  108. package/admin-dist/server/_libs/lucide-react.mjs +850 -0
  109. package/admin-dist/server/_libs/ohash.mjs +1 -0
  110. package/admin-dist/server/_libs/react-day-picker.mjs +2201 -0
  111. package/admin-dist/server/_libs/react-remove-scroll-bar.mjs +82 -0
  112. package/admin-dist/server/_libs/react-remove-scroll.mjs +328 -0
  113. package/admin-dist/server/_libs/react-style-singleton.mjs +69 -0
  114. package/admin-dist/server/_libs/rou3.mjs +8 -0
  115. package/admin-dist/server/_libs/seroval-plugins.mjs +58 -0
  116. package/admin-dist/server/_libs/seroval.mjs +1765 -0
  117. package/admin-dist/server/_libs/srvx.mjs +719 -0
  118. package/admin-dist/server/_libs/tailwind-merge.mjs +3010 -0
  119. package/admin-dist/server/_libs/tiny-invariant.mjs +12 -0
  120. package/admin-dist/server/_libs/tiny-warning.mjs +5 -0
  121. package/admin-dist/server/_libs/tslib.mjs +39 -0
  122. package/admin-dist/server/_libs/ufo.mjs +54 -0
  123. package/admin-dist/server/_libs/unctx.mjs +1 -0
  124. package/admin-dist/server/_libs/unstorage.mjs +1 -0
  125. package/admin-dist/server/_libs/use-callback-ref.mjs +66 -0
  126. package/admin-dist/server/_libs/use-sidecar.mjs +106 -0
  127. package/admin-dist/server/_libs/use-sync-external-store.mjs +139 -0
  128. package/admin-dist/server/_libs/zod.mjs +4223 -0
  129. package/admin-dist/server/_ssr/CmsButton-B45JAKR1.mjs +125 -0
  130. package/admin-dist/server/_ssr/CmsEmptyState-D_BQFAVR.mjs +290 -0
  131. package/admin-dist/server/_ssr/CmsPageHeader-CrUZA59A.mjs +24 -0
  132. package/admin-dist/server/_ssr/CmsStatusBadge-B-sj6yaj.mjs +127 -0
  133. package/admin-dist/server/_ssr/CmsSurface-DKJZhpjk.mjs +44 -0
  134. package/admin-dist/server/_ssr/CmsToolbar-ByaW5iXf.mjs +49 -0
  135. package/admin-dist/server/_ssr/ContentEntryEditor-D3_Jb1dq.mjs +3720 -0
  136. package/admin-dist/server/_ssr/ErrorState-cI-bKLez.mjs +89 -0
  137. package/admin-dist/server/_ssr/TaxonomyFilter-BRJkuCtA.mjs +188 -0
  138. package/admin-dist/server/_ssr/_contentTypeId-B9kA6CaM.mjs +379 -0
  139. package/admin-dist/server/_ssr/_entryId-BddcMkZN.mjs +161 -0
  140. package/admin-dist/server/_ssr/_tanstack-start-manifest_v-Dd7AmelK.mjs +4 -0
  141. package/admin-dist/server/_ssr/command-CGtVr8Gb.mjs +128 -0
  142. package/admin-dist/server/_ssr/config.server-D7JHDcDv.mjs +117 -0
  143. package/admin-dist/server/_ssr/content-D1tbeOd0.mjs +647 -0
  144. package/admin-dist/server/_ssr/content-types-BZqY_BER.mjs +1342 -0
  145. package/admin-dist/server/_ssr/index-BIdq4xaC.mjs +264 -0
  146. package/admin-dist/server/_ssr/index.mjs +1275 -0
  147. package/admin-dist/server/_ssr/label-T-QNKAr6.mjs +22 -0
  148. package/admin-dist/server/_ssr/media-C-xqjBrl.mjs +1832 -0
  149. package/admin-dist/server/_ssr/new._contentTypeId-DWic9cRq.mjs +144 -0
  150. package/admin-dist/server/_ssr/router-D1BMAMJT.mjs +1556 -0
  151. package/admin-dist/server/_ssr/scroll-area-C0pic_WA.mjs +59 -0
  152. package/admin-dist/server/_ssr/select-CqmuN2F6.mjs +142 -0
  153. package/admin-dist/server/_ssr/settings-CAkncGGV.mjs +430 -0
  154. package/admin-dist/server/_ssr/start-HYkvq4Ni.mjs +4 -0
  155. package/admin-dist/server/_ssr/switch-CgmuJkT9.mjs +31 -0
  156. package/admin-dist/server/_ssr/tabs-CnMj0aRy.mjs +630 -0
  157. package/admin-dist/server/_ssr/tanstack-adapter-BXZrMauE.mjs +119 -0
  158. package/admin-dist/server/_ssr/taxonomies-thl3BfVm.mjs +1015 -0
  159. package/admin-dist/server/_ssr/textarea-4K5OJgeh.mjs +18 -0
  160. package/admin-dist/server/_ssr/trash-B40Gx5zP.mjs +411 -0
  161. package/admin-dist/server/_ssr/useBreadcrumbLabel-rn-fL4zV.mjs +16 -0
  162. package/admin-dist/server/_ssr/usePermissions-CKeM6_Vw.mjs +68 -0
  163. package/admin-dist/server/favicon.ico +0 -0
  164. package/admin-dist/server/index.mjs +641 -0
  165. package/dist/cli/commands/init.d.ts +6 -0
  166. package/dist/cli/commands/init.d.ts.map +1 -0
  167. package/dist/cli/commands/init.js +156 -0
  168. package/dist/cli/commands/init.js.map +1 -0
  169. package/dist/cli/index.js +6 -0
  170. package/dist/cli/index.js.map +1 -1
  171. package/dist/client/admin-config.d.ts +2 -3
  172. package/dist/client/admin-config.d.ts.map +1 -1
  173. package/dist/client/admin-config.js +2 -3
  174. package/dist/client/admin-config.js.map +1 -1
  175. package/dist/client/adminApi.d.ts +1877 -1851
  176. package/dist/client/adminApi.d.ts.map +1 -1
  177. package/dist/client/adminApi.js +649 -629
  178. package/dist/client/adminApi.js.map +1 -1
  179. package/dist/client/agentTools.d.ts +1231 -139
  180. package/dist/client/agentTools.d.ts.map +1 -1
  181. package/dist/client/agentTools.js +37 -13
  182. package/dist/client/agentTools.js.map +1 -1
  183. package/dist/client/index.d.ts +5 -5
  184. package/dist/client/index.d.ts.map +1 -1
  185. package/dist/client/index.js +4 -4
  186. package/dist/client/index.js.map +1 -1
  187. package/dist/client/schema/codegen.d.ts +2 -2
  188. package/dist/client/schema/codegen.d.ts.map +1 -1
  189. package/dist/client/schema/codegen.js +3 -3
  190. package/dist/client/schema/codegen.js.map +1 -1
  191. package/dist/client/schema/defineContentType.d.ts +3 -3
  192. package/dist/client/schema/defineContentType.js +3 -3
  193. package/dist/client/schema/index.d.ts +7 -7
  194. package/dist/client/schema/index.d.ts.map +1 -1
  195. package/dist/client/schema/index.js +5 -5
  196. package/dist/client/schema/index.js.map +1 -1
  197. package/dist/client/schema/schemaDrift.d.ts +1 -1
  198. package/dist/client/schema/schemaDrift.js +1 -1
  199. package/dist/client/schema/typedClient.d.ts +2 -2
  200. package/dist/client/schema/typedClient.js +2 -2
  201. package/dist/client/schema/types.d.ts +1 -1
  202. package/dist/client/schema/types.js +1 -1
  203. package/dist/client/wrapper.d.ts +108 -65
  204. package/dist/client/wrapper.d.ts.map +1 -1
  205. package/dist/client/wrapper.js +22 -22
  206. package/dist/client/wrapper.js.map +1 -1
  207. package/dist/component/_generated/component.d.ts +9 -0
  208. package/dist/component/_generated/component.d.ts.map +1 -1
  209. package/dist/component/convex.config.d.ts +2 -2
  210. package/dist/component/convex.config.js +2 -2
  211. package/dist/component/index.d.ts +1 -1
  212. package/dist/component/index.js +1 -1
  213. package/dist/component/lib/ragContentChunker.d.ts +1 -1
  214. package/dist/component/lib/ragContentChunker.js +1 -1
  215. package/dist/component/mediaAssets.d.ts +35 -0
  216. package/dist/component/mediaAssets.d.ts.map +1 -1
  217. package/dist/component/mediaAssets.js +81 -0
  218. package/dist/component/mediaAssets.js.map +1 -1
  219. package/dist/component/roles.d.ts +1 -1
  220. package/dist/component/roles.js +1 -1
  221. package/dist/react/index.d.ts +2 -2
  222. package/dist/react/index.d.ts.map +1 -1
  223. package/dist/react/index.js +13 -7
  224. package/dist/react/index.js.map +1 -1
  225. package/dist/test.d.ts +2 -2
  226. package/dist/test.d.ts.map +1 -1
  227. package/dist/test.js +4 -3
  228. package/dist/test.js.map +1 -1
  229. package/package.json +37 -13
  230. package/dist/component/auditLog.d.ts +0 -410
  231. package/dist/component/auditLog.d.ts.map +0 -1
  232. package/dist/component/auditLog.js +0 -607
  233. package/dist/component/auditLog.js.map +0 -1
  234. package/dist/component/types.d.ts +0 -4
  235. package/dist/component/types.d.ts.map +0 -1
  236. package/dist/component/types.js +0 -2
  237. package/dist/component/types.js.map +0 -1
  238. package/src/cli/commands/admin.ts +0 -104
  239. package/src/cli/index.ts +0 -21
  240. package/src/cli/utils/detectConvexUrl.ts +0 -54
  241. package/src/cli/utils/openBrowser.ts +0 -16
  242. package/src/client/admin-config.ts +0 -138
  243. package/src/client/adminApi.ts +0 -942
  244. package/src/client/agentTools.ts +0 -1311
  245. package/src/client/argTypes.ts +0 -316
  246. package/src/client/field-types.ts +0 -187
  247. package/src/client/index.ts +0 -1301
  248. package/src/client/queryBuilder.ts +0 -1100
  249. package/src/client/schema/codegen.ts +0 -500
  250. package/src/client/schema/defineContentType.ts +0 -501
  251. package/src/client/schema/index.ts +0 -169
  252. package/src/client/schema/schemaDrift.ts +0 -574
  253. package/src/client/schema/typedClient.ts +0 -688
  254. package/src/client/schema/types.ts +0 -666
  255. package/src/client/types.ts +0 -723
  256. package/src/client/workflows.ts +0 -141
  257. package/src/client/wrapper.ts +0 -4304
  258. package/src/component/_generated/api.ts +0 -140
  259. package/src/component/_generated/component.ts +0 -5029
  260. package/src/component/_generated/dataModel.ts +0 -60
  261. package/src/component/_generated/server.ts +0 -156
  262. package/src/component/authorization.ts +0 -647
  263. package/src/component/authorizationHooks.ts +0 -668
  264. package/src/component/bulkOperations.ts +0 -687
  265. package/src/component/contentEntries.ts +0 -1976
  266. package/src/component/contentEntryMutations.ts +0 -1223
  267. package/src/component/contentEntryValidation.ts +0 -707
  268. package/src/component/contentLock.ts +0 -550
  269. package/src/component/contentTypeMigration.ts +0 -1064
  270. package/src/component/contentTypeMutations.ts +0 -969
  271. package/src/component/contentTypes.ts +0 -346
  272. package/src/component/convex.config.ts +0 -44
  273. package/src/component/documentTypes.ts +0 -240
  274. package/src/component/eventEmitter.ts +0 -485
  275. package/src/component/exportImport.ts +0 -1169
  276. package/src/component/index.ts +0 -491
  277. package/src/component/lib/deepReferenceResolver.ts +0 -999
  278. package/src/component/lib/errors.ts +0 -816
  279. package/src/component/lib/index.ts +0 -145
  280. package/src/component/lib/mediaReferenceResolver.ts +0 -495
  281. package/src/component/lib/metadataExtractor.ts +0 -792
  282. package/src/component/lib/mutationAuth.ts +0 -199
  283. package/src/component/lib/queries.ts +0 -79
  284. package/src/component/lib/ragContentChunker.ts +0 -1371
  285. package/src/component/lib/referenceResolver.ts +0 -430
  286. package/src/component/lib/slugGenerator.ts +0 -262
  287. package/src/component/lib/slugUniqueness.ts +0 -333
  288. package/src/component/lib/softDelete.ts +0 -44
  289. package/src/component/localeFallbackChain.ts +0 -673
  290. package/src/component/localeFields.ts +0 -896
  291. package/src/component/mediaAssetMutations.ts +0 -725
  292. package/src/component/mediaAssets.ts +0 -932
  293. package/src/component/mediaFolderMutations.ts +0 -1046
  294. package/src/component/mediaUploadMutations.ts +0 -224
  295. package/src/component/mediaVariantMutations.ts +0 -900
  296. package/src/component/mediaVariants.ts +0 -793
  297. package/src/component/ragContentIndexer.ts +0 -1067
  298. package/src/component/rateLimitHooks.ts +0 -572
  299. package/src/component/roles.ts +0 -1360
  300. package/src/component/scheduledPublish.ts +0 -358
  301. package/src/component/schema.ts +0 -617
  302. package/src/component/taxonomies.ts +0 -949
  303. package/src/component/taxonomyMutations.ts +0 -1210
  304. package/src/component/trash.ts +0 -724
  305. package/src/component/userContext.ts +0 -898
  306. package/src/component/validation.ts +0 -1388
  307. package/src/component/validators.ts +0 -949
  308. package/src/component/versionMutations.ts +0 -392
  309. package/src/component/webhookTrigger.ts +0 -1922
  310. package/src/react/index.ts +0 -898
  311. package/src/test.ts +0 -1580
@@ -0,0 +1,325 @@
1
+ import { r as reactExports, j as jsxRuntimeExports } from "../react.mjs";
2
+ import { c as composeEventHandlers } from "./primitive.mjs";
3
+ import { u as useComposedRefs } from "./react-compose-refs.mjs";
4
+ import { c as createContextScope, b as createContext2 } from "./react-context.mjs";
5
+ import { u as useId } from "./react-id.mjs";
6
+ import { u as useControllableState } from "./react-use-controllable-state.mjs";
7
+ import { D as DismissableLayer } from "./react-dismissable-layer.mjs";
8
+ import { F as FocusScope } from "./react-focus-scope.mjs";
9
+ import { P as Portal$1 } from "./react-portal.mjs";
10
+ import { P as Presence } from "./react-presence.mjs";
11
+ import { P as Primitive } from "./react-primitive.mjs";
12
+ import { u as useFocusGuards } from "./react-focus-guards.mjs";
13
+ import { R as ReactRemoveScroll } from "../../../_libs/react-remove-scroll.mjs";
14
+ import { h as hideOthers } from "../../../_libs/aria-hidden.mjs";
15
+ import { f as createSlot } from "./react-slot.mjs";
16
+ var DIALOG_NAME = "Dialog";
17
+ var [createDialogContext] = createContextScope(DIALOG_NAME);
18
+ var [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);
19
+ var Dialog = (props) => {
20
+ const {
21
+ __scopeDialog,
22
+ children,
23
+ open: openProp,
24
+ defaultOpen,
25
+ onOpenChange,
26
+ modal = true
27
+ } = props;
28
+ const triggerRef = reactExports.useRef(null);
29
+ const contentRef = reactExports.useRef(null);
30
+ const [open, setOpen] = useControllableState({
31
+ prop: openProp,
32
+ defaultProp: defaultOpen ?? false,
33
+ onChange: onOpenChange,
34
+ caller: DIALOG_NAME
35
+ });
36
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
37
+ DialogProvider,
38
+ {
39
+ scope: __scopeDialog,
40
+ triggerRef,
41
+ contentRef,
42
+ contentId: useId(),
43
+ titleId: useId(),
44
+ descriptionId: useId(),
45
+ open,
46
+ onOpenChange: setOpen,
47
+ onOpenToggle: reactExports.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),
48
+ modal,
49
+ children
50
+ }
51
+ );
52
+ };
53
+ Dialog.displayName = DIALOG_NAME;
54
+ var TRIGGER_NAME = "DialogTrigger";
55
+ var DialogTrigger = reactExports.forwardRef(
56
+ (props, forwardedRef) => {
57
+ const { __scopeDialog, ...triggerProps } = props;
58
+ const context = useDialogContext(TRIGGER_NAME, __scopeDialog);
59
+ const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);
60
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
61
+ Primitive.button,
62
+ {
63
+ type: "button",
64
+ "aria-haspopup": "dialog",
65
+ "aria-expanded": context.open,
66
+ "aria-controls": context.contentId,
67
+ "data-state": getState(context.open),
68
+ ...triggerProps,
69
+ ref: composedTriggerRef,
70
+ onClick: composeEventHandlers(props.onClick, context.onOpenToggle)
71
+ }
72
+ );
73
+ }
74
+ );
75
+ DialogTrigger.displayName = TRIGGER_NAME;
76
+ var PORTAL_NAME = "DialogPortal";
77
+ var [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {
78
+ forceMount: void 0
79
+ });
80
+ var DialogPortal = (props) => {
81
+ const { __scopeDialog, forceMount, children, container } = props;
82
+ const context = useDialogContext(PORTAL_NAME, __scopeDialog);
83
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: reactExports.Children.map(children, (child) => /* @__PURE__ */ jsxRuntimeExports.jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$1, { asChild: true, container, children: child }) })) });
84
+ };
85
+ DialogPortal.displayName = PORTAL_NAME;
86
+ var OVERLAY_NAME = "DialogOverlay";
87
+ var DialogOverlay = reactExports.forwardRef(
88
+ (props, forwardedRef) => {
89
+ const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);
90
+ const { forceMount = portalContext.forceMount, ...overlayProps } = props;
91
+ const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);
92
+ return context.modal ? /* @__PURE__ */ jsxRuntimeExports.jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsxRuntimeExports.jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;
93
+ }
94
+ );
95
+ DialogOverlay.displayName = OVERLAY_NAME;
96
+ var Slot = createSlot("DialogOverlay.RemoveScroll");
97
+ var DialogOverlayImpl = reactExports.forwardRef(
98
+ (props, forwardedRef) => {
99
+ const { __scopeDialog, ...overlayProps } = props;
100
+ const context = useDialogContext(OVERLAY_NAME, __scopeDialog);
101
+ return (
102
+ // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`
103
+ // ie. when `Overlay` and `Content` are siblings
104
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ReactRemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsxRuntimeExports.jsx(
105
+ Primitive.div,
106
+ {
107
+ "data-state": getState(context.open),
108
+ ...overlayProps,
109
+ ref: forwardedRef,
110
+ style: { pointerEvents: "auto", ...overlayProps.style }
111
+ }
112
+ ) })
113
+ );
114
+ }
115
+ );
116
+ var CONTENT_NAME = "DialogContent";
117
+ var DialogContent = reactExports.forwardRef(
118
+ (props, forwardedRef) => {
119
+ const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);
120
+ const { forceMount = portalContext.forceMount, ...contentProps } = props;
121
+ const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);
122
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsxRuntimeExports.jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsxRuntimeExports.jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });
123
+ }
124
+ );
125
+ DialogContent.displayName = CONTENT_NAME;
126
+ var DialogContentModal = reactExports.forwardRef(
127
+ (props, forwardedRef) => {
128
+ const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);
129
+ const contentRef = reactExports.useRef(null);
130
+ const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);
131
+ reactExports.useEffect(() => {
132
+ const content = contentRef.current;
133
+ if (content) return hideOthers(content);
134
+ }, []);
135
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
136
+ DialogContentImpl,
137
+ {
138
+ ...props,
139
+ ref: composedRefs,
140
+ trapFocus: context.open,
141
+ disableOutsidePointerEvents: true,
142
+ onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {
143
+ event.preventDefault();
144
+ context.triggerRef.current?.focus();
145
+ }),
146
+ onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {
147
+ const originalEvent = event.detail.originalEvent;
148
+ const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
149
+ const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
150
+ if (isRightClick) event.preventDefault();
151
+ }),
152
+ onFocusOutside: composeEventHandlers(
153
+ props.onFocusOutside,
154
+ (event) => event.preventDefault()
155
+ )
156
+ }
157
+ );
158
+ }
159
+ );
160
+ var DialogContentNonModal = reactExports.forwardRef(
161
+ (props, forwardedRef) => {
162
+ const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);
163
+ const hasInteractedOutsideRef = reactExports.useRef(false);
164
+ const hasPointerDownOutsideRef = reactExports.useRef(false);
165
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
166
+ DialogContentImpl,
167
+ {
168
+ ...props,
169
+ ref: forwardedRef,
170
+ trapFocus: false,
171
+ disableOutsidePointerEvents: false,
172
+ onCloseAutoFocus: (event) => {
173
+ props.onCloseAutoFocus?.(event);
174
+ if (!event.defaultPrevented) {
175
+ if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();
176
+ event.preventDefault();
177
+ }
178
+ hasInteractedOutsideRef.current = false;
179
+ hasPointerDownOutsideRef.current = false;
180
+ },
181
+ onInteractOutside: (event) => {
182
+ props.onInteractOutside?.(event);
183
+ if (!event.defaultPrevented) {
184
+ hasInteractedOutsideRef.current = true;
185
+ if (event.detail.originalEvent.type === "pointerdown") {
186
+ hasPointerDownOutsideRef.current = true;
187
+ }
188
+ }
189
+ const target = event.target;
190
+ const targetIsTrigger = context.triggerRef.current?.contains(target);
191
+ if (targetIsTrigger) event.preventDefault();
192
+ if (event.detail.originalEvent.type === "focusin" && hasPointerDownOutsideRef.current) {
193
+ event.preventDefault();
194
+ }
195
+ }
196
+ }
197
+ );
198
+ }
199
+ );
200
+ var DialogContentImpl = reactExports.forwardRef(
201
+ (props, forwardedRef) => {
202
+ const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;
203
+ const context = useDialogContext(CONTENT_NAME, __scopeDialog);
204
+ const contentRef = reactExports.useRef(null);
205
+ const composedRefs = useComposedRefs(forwardedRef, contentRef);
206
+ useFocusGuards();
207
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
208
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
209
+ FocusScope,
210
+ {
211
+ asChild: true,
212
+ loop: true,
213
+ trapped: trapFocus,
214
+ onMountAutoFocus: onOpenAutoFocus,
215
+ onUnmountAutoFocus: onCloseAutoFocus,
216
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
217
+ DismissableLayer,
218
+ {
219
+ role: "dialog",
220
+ id: context.contentId,
221
+ "aria-describedby": context.descriptionId,
222
+ "aria-labelledby": context.titleId,
223
+ "data-state": getState(context.open),
224
+ ...contentProps,
225
+ ref: composedRefs,
226
+ onDismiss: () => context.onOpenChange(false)
227
+ }
228
+ )
229
+ }
230
+ ),
231
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
232
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TitleWarning, { titleId: context.titleId }),
233
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })
234
+ ] })
235
+ ] });
236
+ }
237
+ );
238
+ var TITLE_NAME = "DialogTitle";
239
+ var DialogTitle = reactExports.forwardRef(
240
+ (props, forwardedRef) => {
241
+ const { __scopeDialog, ...titleProps } = props;
242
+ const context = useDialogContext(TITLE_NAME, __scopeDialog);
243
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });
244
+ }
245
+ );
246
+ DialogTitle.displayName = TITLE_NAME;
247
+ var DESCRIPTION_NAME = "DialogDescription";
248
+ var DialogDescription = reactExports.forwardRef(
249
+ (props, forwardedRef) => {
250
+ const { __scopeDialog, ...descriptionProps } = props;
251
+ const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);
252
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });
253
+ }
254
+ );
255
+ DialogDescription.displayName = DESCRIPTION_NAME;
256
+ var CLOSE_NAME = "DialogClose";
257
+ var DialogClose = reactExports.forwardRef(
258
+ (props, forwardedRef) => {
259
+ const { __scopeDialog, ...closeProps } = props;
260
+ const context = useDialogContext(CLOSE_NAME, __scopeDialog);
261
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
262
+ Primitive.button,
263
+ {
264
+ type: "button",
265
+ ...closeProps,
266
+ ref: forwardedRef,
267
+ onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))
268
+ }
269
+ );
270
+ }
271
+ );
272
+ DialogClose.displayName = CLOSE_NAME;
273
+ function getState(open) {
274
+ return open ? "open" : "closed";
275
+ }
276
+ var TITLE_WARNING_NAME = "DialogTitleWarning";
277
+ var [WarningProvider, useWarningContext] = createContext2(TITLE_WARNING_NAME, {
278
+ contentName: CONTENT_NAME,
279
+ titleName: TITLE_NAME,
280
+ docsSlug: "dialog"
281
+ });
282
+ var TitleWarning = ({ titleId }) => {
283
+ const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);
284
+ const MESSAGE = `\`${titleWarningContext.contentName}\` requires a \`${titleWarningContext.titleName}\` for the component to be accessible for screen reader users.
285
+
286
+ If you want to hide the \`${titleWarningContext.titleName}\`, you can wrap it with our VisuallyHidden component.
287
+
288
+ For more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;
289
+ reactExports.useEffect(() => {
290
+ if (titleId) {
291
+ const hasTitle = document.getElementById(titleId);
292
+ if (!hasTitle) console.error(MESSAGE);
293
+ }
294
+ }, [MESSAGE, titleId]);
295
+ return null;
296
+ };
297
+ var DESCRIPTION_WARNING_NAME = "DialogDescriptionWarning";
298
+ var DescriptionWarning = ({ contentRef, descriptionId }) => {
299
+ const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);
300
+ const MESSAGE = `Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${descriptionWarningContext.contentName}}.`;
301
+ reactExports.useEffect(() => {
302
+ const describedById = contentRef.current?.getAttribute("aria-describedby");
303
+ if (descriptionId && describedById) {
304
+ const hasDescription = document.getElementById(descriptionId);
305
+ if (!hasDescription) console.warn(MESSAGE);
306
+ }
307
+ }, [MESSAGE, contentRef, descriptionId]);
308
+ return null;
309
+ };
310
+ var Root = Dialog;
311
+ var Portal = DialogPortal;
312
+ var Overlay = DialogOverlay;
313
+ var Content = DialogContent;
314
+ var Title = DialogTitle;
315
+ var Description = DialogDescription;
316
+ var Close = DialogClose;
317
+ export {
318
+ Content as C,
319
+ Description as D,
320
+ Overlay as O,
321
+ Portal as P,
322
+ Root as R,
323
+ Title as T,
324
+ Close as a
325
+ };
@@ -0,0 +1,9 @@
1
+ import { r as reactExports } from "../react.mjs";
2
+ var DirectionContext = reactExports.createContext(void 0);
3
+ function useDirection(localDir) {
4
+ const globalDir = reactExports.useContext(DirectionContext);
5
+ return localDir || globalDir || "ltr";
6
+ }
7
+ export {
8
+ useDirection as u
9
+ };
@@ -0,0 +1,210 @@
1
+ import { r as reactExports, j as jsxRuntimeExports } from "../react.mjs";
2
+ import { c as composeEventHandlers } from "./primitive.mjs";
3
+ import { P as Primitive, d as dispatchDiscreteCustomEvent } from "./react-primitive.mjs";
4
+ import { u as useComposedRefs } from "./react-compose-refs.mjs";
5
+ import { u as useCallbackRef } from "./react-use-callback-ref.mjs";
6
+ import { u as useEscapeKeydown } from "./react-use-escape-keydown.mjs";
7
+ var DISMISSABLE_LAYER_NAME = "DismissableLayer";
8
+ var CONTEXT_UPDATE = "dismissableLayer.update";
9
+ var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
10
+ var FOCUS_OUTSIDE = "dismissableLayer.focusOutside";
11
+ var originalBodyPointerEvents;
12
+ var DismissableLayerContext = reactExports.createContext({
13
+ layers: /* @__PURE__ */ new Set(),
14
+ layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
15
+ branches: /* @__PURE__ */ new Set()
16
+ });
17
+ var DismissableLayer = reactExports.forwardRef(
18
+ (props, forwardedRef) => {
19
+ const {
20
+ disableOutsidePointerEvents = false,
21
+ onEscapeKeyDown,
22
+ onPointerDownOutside,
23
+ onFocusOutside,
24
+ onInteractOutside,
25
+ onDismiss,
26
+ ...layerProps
27
+ } = props;
28
+ const context = reactExports.useContext(DismissableLayerContext);
29
+ const [node, setNode] = reactExports.useState(null);
30
+ const ownerDocument = node?.ownerDocument ?? globalThis?.document;
31
+ const [, force] = reactExports.useState({});
32
+ const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));
33
+ const layers = Array.from(context.layers);
34
+ const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);
35
+ const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);
36
+ const index = node ? layers.indexOf(node) : -1;
37
+ const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;
38
+ const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;
39
+ const pointerDownOutside = usePointerDownOutside((event) => {
40
+ const target = event.target;
41
+ const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));
42
+ if (!isPointerEventsEnabled || isPointerDownOnBranch) return;
43
+ onPointerDownOutside?.(event);
44
+ onInteractOutside?.(event);
45
+ if (!event.defaultPrevented) onDismiss?.();
46
+ }, ownerDocument);
47
+ const focusOutside = useFocusOutside((event) => {
48
+ const target = event.target;
49
+ const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));
50
+ if (isFocusInBranch) return;
51
+ onFocusOutside?.(event);
52
+ onInteractOutside?.(event);
53
+ if (!event.defaultPrevented) onDismiss?.();
54
+ }, ownerDocument);
55
+ useEscapeKeydown((event) => {
56
+ const isHighestLayer = index === context.layers.size - 1;
57
+ if (!isHighestLayer) return;
58
+ onEscapeKeyDown?.(event);
59
+ if (!event.defaultPrevented && onDismiss) {
60
+ event.preventDefault();
61
+ onDismiss();
62
+ }
63
+ }, ownerDocument);
64
+ reactExports.useEffect(() => {
65
+ if (!node) return;
66
+ if (disableOutsidePointerEvents) {
67
+ if (context.layersWithOutsidePointerEventsDisabled.size === 0) {
68
+ originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;
69
+ ownerDocument.body.style.pointerEvents = "none";
70
+ }
71
+ context.layersWithOutsidePointerEventsDisabled.add(node);
72
+ }
73
+ context.layers.add(node);
74
+ dispatchUpdate();
75
+ return () => {
76
+ if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {
77
+ ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;
78
+ }
79
+ };
80
+ }, [node, ownerDocument, disableOutsidePointerEvents, context]);
81
+ reactExports.useEffect(() => {
82
+ return () => {
83
+ if (!node) return;
84
+ context.layers.delete(node);
85
+ context.layersWithOutsidePointerEventsDisabled.delete(node);
86
+ dispatchUpdate();
87
+ };
88
+ }, [node, context]);
89
+ reactExports.useEffect(() => {
90
+ const handleUpdate = () => force({});
91
+ document.addEventListener(CONTEXT_UPDATE, handleUpdate);
92
+ return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
93
+ }, []);
94
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
95
+ Primitive.div,
96
+ {
97
+ ...layerProps,
98
+ ref: composedRefs,
99
+ style: {
100
+ pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? "auto" : "none" : void 0,
101
+ ...props.style
102
+ },
103
+ onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),
104
+ onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),
105
+ onPointerDownCapture: composeEventHandlers(
106
+ props.onPointerDownCapture,
107
+ pointerDownOutside.onPointerDownCapture
108
+ )
109
+ }
110
+ );
111
+ }
112
+ );
113
+ DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
114
+ var BRANCH_NAME = "DismissableLayerBranch";
115
+ var DismissableLayerBranch = reactExports.forwardRef((props, forwardedRef) => {
116
+ const context = reactExports.useContext(DismissableLayerContext);
117
+ const ref = reactExports.useRef(null);
118
+ const composedRefs = useComposedRefs(forwardedRef, ref);
119
+ reactExports.useEffect(() => {
120
+ const node = ref.current;
121
+ if (node) {
122
+ context.branches.add(node);
123
+ return () => {
124
+ context.branches.delete(node);
125
+ };
126
+ }
127
+ }, [context.branches]);
128
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Primitive.div, { ...props, ref: composedRefs });
129
+ });
130
+ DismissableLayerBranch.displayName = BRANCH_NAME;
131
+ function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {
132
+ const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);
133
+ const isPointerInsideReactTreeRef = reactExports.useRef(false);
134
+ const handleClickRef = reactExports.useRef(() => {
135
+ });
136
+ reactExports.useEffect(() => {
137
+ const handlePointerDown = (event) => {
138
+ if (event.target && !isPointerInsideReactTreeRef.current) {
139
+ let handleAndDispatchPointerDownOutsideEvent2 = function() {
140
+ handleAndDispatchCustomEvent(
141
+ POINTER_DOWN_OUTSIDE,
142
+ handlePointerDownOutside,
143
+ eventDetail,
144
+ { discrete: true }
145
+ );
146
+ };
147
+ const eventDetail = { originalEvent: event };
148
+ if (event.pointerType === "touch") {
149
+ ownerDocument.removeEventListener("click", handleClickRef.current);
150
+ handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;
151
+ ownerDocument.addEventListener("click", handleClickRef.current, { once: true });
152
+ } else {
153
+ handleAndDispatchPointerDownOutsideEvent2();
154
+ }
155
+ } else {
156
+ ownerDocument.removeEventListener("click", handleClickRef.current);
157
+ }
158
+ isPointerInsideReactTreeRef.current = false;
159
+ };
160
+ const timerId = window.setTimeout(() => {
161
+ ownerDocument.addEventListener("pointerdown", handlePointerDown);
162
+ }, 0);
163
+ return () => {
164
+ window.clearTimeout(timerId);
165
+ ownerDocument.removeEventListener("pointerdown", handlePointerDown);
166
+ ownerDocument.removeEventListener("click", handleClickRef.current);
167
+ };
168
+ }, [ownerDocument, handlePointerDownOutside]);
169
+ return {
170
+ // ensures we check React component tree (not just DOM tree)
171
+ onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true
172
+ };
173
+ }
174
+ function useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {
175
+ const handleFocusOutside = useCallbackRef(onFocusOutside);
176
+ const isFocusInsideReactTreeRef = reactExports.useRef(false);
177
+ reactExports.useEffect(() => {
178
+ const handleFocus = (event) => {
179
+ if (event.target && !isFocusInsideReactTreeRef.current) {
180
+ const eventDetail = { originalEvent: event };
181
+ handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {
182
+ discrete: false
183
+ });
184
+ }
185
+ };
186
+ ownerDocument.addEventListener("focusin", handleFocus);
187
+ return () => ownerDocument.removeEventListener("focusin", handleFocus);
188
+ }, [ownerDocument, handleFocusOutside]);
189
+ return {
190
+ onFocusCapture: () => isFocusInsideReactTreeRef.current = true,
191
+ onBlurCapture: () => isFocusInsideReactTreeRef.current = false
192
+ };
193
+ }
194
+ function dispatchUpdate() {
195
+ const event = new CustomEvent(CONTEXT_UPDATE);
196
+ document.dispatchEvent(event);
197
+ }
198
+ function handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {
199
+ const target = detail.originalEvent.target;
200
+ const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });
201
+ if (handler) target.addEventListener(name, handler, { once: true });
202
+ if (discrete) {
203
+ dispatchDiscreteCustomEvent(target, event);
204
+ } else {
205
+ target.dispatchEvent(event);
206
+ }
207
+ }
208
+ export {
209
+ DismissableLayer as D
210
+ };