convex-cms 0.0.2 → 0.0.3

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 (265) hide show
  1. package/admin-dist/nitro.json +15 -0
  2. package/admin-dist/public/assets/CmsEmptyState-CRswfTzk.js +5 -0
  3. package/admin-dist/public/assets/CmsPageHeader-CirpXndm.js +1 -0
  4. package/admin-dist/public/assets/CmsStatusBadge-CbEUpQu-.js +1 -0
  5. package/admin-dist/public/assets/CmsToolbar-BI2nZOXp.js +1 -0
  6. package/admin-dist/public/assets/ContentEntryEditor-CBeCyK_m.js +4 -0
  7. package/admin-dist/public/assets/ErrorState-BIVaWmom.js +1 -0
  8. package/admin-dist/public/assets/TaxonomyFilter-ChaY6Y_x.js +1 -0
  9. package/admin-dist/public/assets/_contentTypeId-DQ8k_Rvw.js +1 -0
  10. package/admin-dist/public/assets/_entryId-CKU_glsK.js +1 -0
  11. package/admin-dist/public/assets/alert-BXjTqrwQ.js +1 -0
  12. package/admin-dist/public/assets/badge-hvUOzpVZ.js +1 -0
  13. package/admin-dist/public/assets/circle-check-big-CF_pR17r.js +1 -0
  14. package/admin-dist/public/assets/command-DU82cJlt.js +1 -0
  15. package/admin-dist/public/assets/content-_LXl3pp7.js +1 -0
  16. package/admin-dist/public/assets/content-types-KjxaXGxY.js +2 -0
  17. package/admin-dist/public/assets/globals-CS6BZ0zp.css +1 -0
  18. package/admin-dist/public/assets/index-DNGIZHL-.js +1 -0
  19. package/admin-dist/public/assets/label-KNtpL71g.js +1 -0
  20. package/admin-dist/public/assets/link-2-Bw2aI4V4.js +1 -0
  21. package/admin-dist/public/assets/list-sYepHjt_.js +1 -0
  22. package/admin-dist/public/assets/main-CKj5yfEi.js +97 -0
  23. package/admin-dist/public/assets/media-Bkrkffm7.js +1 -0
  24. package/admin-dist/public/assets/new._contentTypeId-C3LstjNs.js +1 -0
  25. package/admin-dist/public/assets/plus-DUn8v_Xf.js +1 -0
  26. package/admin-dist/public/assets/rotate-ccw-DJEoHcRI.js +1 -0
  27. package/admin-dist/public/assets/scroll-area-DfIlT0in.js +1 -0
  28. package/admin-dist/public/assets/search-MuAUDJKR.js +1 -0
  29. package/admin-dist/public/assets/select-BD29IXCI.js +1 -0
  30. package/admin-dist/public/assets/settings-DmMyn_6A.js +1 -0
  31. package/admin-dist/public/assets/switch-h3Rrnl5i.js +1 -0
  32. package/admin-dist/public/assets/tabs-imc8h-Dp.js +1 -0
  33. package/admin-dist/public/assets/taxonomies-dAsrT65H.js +1 -0
  34. package/admin-dist/public/assets/textarea-BTy7nwzR.js +1 -0
  35. package/admin-dist/public/assets/trash-SAWKZZHv.js +1 -0
  36. package/admin-dist/public/assets/triangle-alert-E52Vfeuh.js +1 -0
  37. package/admin-dist/public/assets/useBreadcrumbLabel-BECBMCzM.js +1 -0
  38. package/admin-dist/public/assets/usePermissions-Basjs9BT.js +1 -0
  39. package/admin-dist/public/favicon.ico +0 -0
  40. package/admin-dist/server/_chunks/_libs/@date-fns/tz.mjs +217 -0
  41. package/admin-dist/server/_chunks/_libs/@floating-ui/core.mjs +719 -0
  42. package/admin-dist/server/_chunks/_libs/@floating-ui/dom.mjs +622 -0
  43. package/admin-dist/server/_chunks/_libs/@floating-ui/react-dom.mjs +292 -0
  44. package/admin-dist/server/_chunks/_libs/@floating-ui/utils.mjs +320 -0
  45. package/admin-dist/server/_chunks/_libs/@radix-ui/number.mjs +6 -0
  46. package/admin-dist/server/_chunks/_libs/@radix-ui/primitive.mjs +11 -0
  47. package/admin-dist/server/_chunks/_libs/@radix-ui/react-arrow.mjs +23 -0
  48. package/admin-dist/server/_chunks/_libs/@radix-ui/react-avatar.mjs +119 -0
  49. package/admin-dist/server/_chunks/_libs/@radix-ui/react-checkbox.mjs +270 -0
  50. package/admin-dist/server/_chunks/_libs/@radix-ui/react-collection.mjs +69 -0
  51. package/admin-dist/server/_chunks/_libs/@radix-ui/react-compose-refs.mjs +39 -0
  52. package/admin-dist/server/_chunks/_libs/@radix-ui/react-context.mjs +137 -0
  53. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dialog.mjs +325 -0
  54. package/admin-dist/server/_chunks/_libs/@radix-ui/react-direction.mjs +9 -0
  55. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dismissable-layer.mjs +210 -0
  56. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dropdown-menu.mjs +253 -0
  57. package/admin-dist/server/_chunks/_libs/@radix-ui/react-focus-guards.mjs +29 -0
  58. package/admin-dist/server/_chunks/_libs/@radix-ui/react-focus-scope.mjs +206 -0
  59. package/admin-dist/server/_chunks/_libs/@radix-ui/react-id.mjs +14 -0
  60. package/admin-dist/server/_chunks/_libs/@radix-ui/react-label.mjs +23 -0
  61. package/admin-dist/server/_chunks/_libs/@radix-ui/react-menu.mjs +812 -0
  62. package/admin-dist/server/_chunks/_libs/@radix-ui/react-popover.mjs +300 -0
  63. package/admin-dist/server/_chunks/_libs/@radix-ui/react-popper.mjs +286 -0
  64. package/admin-dist/server/_chunks/_libs/@radix-ui/react-portal.mjs +16 -0
  65. package/admin-dist/server/_chunks/_libs/@radix-ui/react-presence.mjs +128 -0
  66. package/admin-dist/server/_chunks/_libs/@radix-ui/react-primitive.mjs +141 -0
  67. package/admin-dist/server/_chunks/_libs/@radix-ui/react-roving-focus.mjs +224 -0
  68. package/admin-dist/server/_chunks/_libs/@radix-ui/react-scroll-area.mjs +721 -0
  69. package/admin-dist/server/_chunks/_libs/@radix-ui/react-select.mjs +1163 -0
  70. package/admin-dist/server/_chunks/_libs/@radix-ui/react-separator.mjs +28 -0
  71. package/admin-dist/server/_chunks/_libs/@radix-ui/react-slot.mjs +601 -0
  72. package/admin-dist/server/_chunks/_libs/@radix-ui/react-switch.mjs +152 -0
  73. package/admin-dist/server/_chunks/_libs/@radix-ui/react-tabs.mjs +189 -0
  74. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-callback-ref.mjs +11 -0
  75. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-controllable-state.mjs +69 -0
  76. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-effect-event.mjs +1 -0
  77. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-escape-keydown.mjs +17 -0
  78. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-is-hydrated.mjs +15 -0
  79. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-layout-effect.mjs +6 -0
  80. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-previous.mjs +14 -0
  81. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-size.mjs +39 -0
  82. package/admin-dist/server/_chunks/_libs/@radix-ui/react-visually-hidden.mjs +33 -0
  83. package/admin-dist/server/_chunks/_libs/@tanstack/history.mjs +409 -0
  84. package/admin-dist/server/_chunks/_libs/@tanstack/react-router.mjs +1711 -0
  85. package/admin-dist/server/_chunks/_libs/@tanstack/react-store.mjs +56 -0
  86. package/admin-dist/server/_chunks/_libs/@tanstack/router-core.mjs +4829 -0
  87. package/admin-dist/server/_chunks/_libs/@tanstack/store.mjs +134 -0
  88. package/admin-dist/server/_chunks/_libs/react-dom.mjs +10781 -0
  89. package/admin-dist/server/_chunks/_libs/react.mjs +513 -0
  90. package/admin-dist/server/_libs/aria-hidden.mjs +122 -0
  91. package/admin-dist/server/_libs/class-variance-authority.mjs +44 -0
  92. package/admin-dist/server/_libs/clsx.mjs +16 -0
  93. package/admin-dist/server/_libs/cmdk.mjs +315 -0
  94. package/admin-dist/server/_libs/convex.mjs +4841 -0
  95. package/admin-dist/server/_libs/cookie-es.mjs +58 -0
  96. package/admin-dist/server/_libs/croner.mjs +1 -0
  97. package/admin-dist/server/_libs/crossws.mjs +1 -0
  98. package/admin-dist/server/_libs/date-fns.mjs +1716 -0
  99. package/admin-dist/server/_libs/detect-node-es.mjs +1 -0
  100. package/admin-dist/server/_libs/get-nonce.mjs +9 -0
  101. package/admin-dist/server/_libs/h3-v2.mjs +277 -0
  102. package/admin-dist/server/_libs/h3.mjs +401 -0
  103. package/admin-dist/server/_libs/hookable.mjs +1 -0
  104. package/admin-dist/server/_libs/isbot.mjs +20 -0
  105. package/admin-dist/server/_libs/lucide-react.mjs +850 -0
  106. package/admin-dist/server/_libs/ohash.mjs +1 -0
  107. package/admin-dist/server/_libs/react-day-picker.mjs +2201 -0
  108. package/admin-dist/server/_libs/react-remove-scroll-bar.mjs +82 -0
  109. package/admin-dist/server/_libs/react-remove-scroll.mjs +328 -0
  110. package/admin-dist/server/_libs/react-style-singleton.mjs +69 -0
  111. package/admin-dist/server/_libs/rou3.mjs +8 -0
  112. package/admin-dist/server/_libs/seroval-plugins.mjs +58 -0
  113. package/admin-dist/server/_libs/seroval.mjs +1765 -0
  114. package/admin-dist/server/_libs/srvx.mjs +719 -0
  115. package/admin-dist/server/_libs/tailwind-merge.mjs +3010 -0
  116. package/admin-dist/server/_libs/tiny-invariant.mjs +12 -0
  117. package/admin-dist/server/_libs/tiny-warning.mjs +5 -0
  118. package/admin-dist/server/_libs/tslib.mjs +39 -0
  119. package/admin-dist/server/_libs/ufo.mjs +54 -0
  120. package/admin-dist/server/_libs/unctx.mjs +1 -0
  121. package/admin-dist/server/_libs/unstorage.mjs +1 -0
  122. package/admin-dist/server/_libs/use-callback-ref.mjs +66 -0
  123. package/admin-dist/server/_libs/use-sidecar.mjs +106 -0
  124. package/admin-dist/server/_libs/use-sync-external-store.mjs +139 -0
  125. package/admin-dist/server/_libs/zod.mjs +4223 -0
  126. package/admin-dist/server/_ssr/CmsEmptyState-DU7-7-mV.mjs +290 -0
  127. package/admin-dist/server/_ssr/CmsPageHeader-CseW0AHm.mjs +24 -0
  128. package/admin-dist/server/_ssr/CmsStatusBadge-B_pi4KCp.mjs +127 -0
  129. package/admin-dist/server/_ssr/CmsToolbar-X75ex6ek.mjs +49 -0
  130. package/admin-dist/server/_ssr/ContentEntryEditor-CepusRsA.mjs +3720 -0
  131. package/admin-dist/server/_ssr/ErrorState-cI-bKLez.mjs +89 -0
  132. package/admin-dist/server/_ssr/TaxonomyFilter-Bwrq0-cz.mjs +188 -0
  133. package/admin-dist/server/_ssr/_contentTypeId-BqYKEcLr.mjs +379 -0
  134. package/admin-dist/server/_ssr/_entryId-CRfnqeDf.mjs +161 -0
  135. package/admin-dist/server/_ssr/_tanstack-start-manifest_v-BwDlABVk.mjs +4 -0
  136. package/admin-dist/server/_ssr/alert-CVt45UUP.mjs +92 -0
  137. package/admin-dist/server/_ssr/badge-6BsP37vG.mjs +125 -0
  138. package/admin-dist/server/_ssr/command-fy8epIKf.mjs +128 -0
  139. package/admin-dist/server/_ssr/config.server-D7JHDcDv.mjs +117 -0
  140. package/admin-dist/server/_ssr/content-B5RhL7uW.mjs +532 -0
  141. package/admin-dist/server/_ssr/content-types-BIOqCQYN.mjs +1166 -0
  142. package/admin-dist/server/_ssr/index-DHSHDPt1.mjs +193 -0
  143. package/admin-dist/server/_ssr/index.mjs +1275 -0
  144. package/admin-dist/server/_ssr/label-C8Dko1j7.mjs +22 -0
  145. package/admin-dist/server/_ssr/media-CSx3XttC.mjs +1832 -0
  146. package/admin-dist/server/_ssr/new._contentTypeId-DzanEZQM.mjs +144 -0
  147. package/admin-dist/server/_ssr/router-DDWcF-kt.mjs +1556 -0
  148. package/admin-dist/server/_ssr/scroll-area-bjPYwhXN.mjs +59 -0
  149. package/admin-dist/server/_ssr/select-BUhDDf4T.mjs +142 -0
  150. package/admin-dist/server/_ssr/settings-DAsxnw2q.mjs +348 -0
  151. package/admin-dist/server/_ssr/start-HYkvq4Ni.mjs +4 -0
  152. package/admin-dist/server/_ssr/switch-BgyRtQ1Z.mjs +31 -0
  153. package/admin-dist/server/_ssr/tabs-DzMdRB1A.mjs +628 -0
  154. package/admin-dist/server/_ssr/taxonomies-C8j8g5Q5.mjs +915 -0
  155. package/admin-dist/server/_ssr/textarea-9jNeYJSc.mjs +18 -0
  156. package/admin-dist/server/_ssr/trash-DYMxwhZB.mjs +291 -0
  157. package/admin-dist/server/_ssr/useBreadcrumbLabel-FNSAr2Ha.mjs +16 -0
  158. package/admin-dist/server/_ssr/usePermissions-BJGGahrJ.mjs +68 -0
  159. package/admin-dist/server/favicon.ico +0 -0
  160. package/admin-dist/server/index.mjs +627 -0
  161. package/dist/cli/index.js +0 -0
  162. package/dist/client/admin-config.d.ts +0 -1
  163. package/dist/client/admin-config.d.ts.map +1 -1
  164. package/dist/client/admin-config.js +0 -1
  165. package/dist/client/admin-config.js.map +1 -1
  166. package/dist/client/adminApi.d.ts.map +1 -1
  167. package/dist/client/agentTools.d.ts +1237 -135
  168. package/dist/client/agentTools.d.ts.map +1 -1
  169. package/dist/client/agentTools.js +33 -9
  170. package/dist/client/agentTools.js.map +1 -1
  171. package/dist/client/index.d.ts +1 -1
  172. package/dist/client/index.d.ts.map +1 -1
  173. package/dist/client/index.js.map +1 -1
  174. package/dist/component/_generated/component.d.ts +9 -0
  175. package/dist/component/_generated/component.d.ts.map +1 -1
  176. package/dist/component/mediaAssets.d.ts +35 -0
  177. package/dist/component/mediaAssets.d.ts.map +1 -1
  178. package/dist/component/mediaAssets.js +81 -0
  179. package/dist/component/mediaAssets.js.map +1 -1
  180. package/dist/test.d.ts.map +1 -1
  181. package/dist/test.js +2 -1
  182. package/dist/test.js.map +1 -1
  183. package/package.json +9 -5
  184. package/dist/component/auditLog.d.ts +0 -410
  185. package/dist/component/auditLog.d.ts.map +0 -1
  186. package/dist/component/auditLog.js +0 -607
  187. package/dist/component/auditLog.js.map +0 -1
  188. package/dist/component/types.d.ts +0 -4
  189. package/dist/component/types.d.ts.map +0 -1
  190. package/dist/component/types.js +0 -2
  191. package/dist/component/types.js.map +0 -1
  192. package/src/cli/commands/admin.ts +0 -104
  193. package/src/cli/index.ts +0 -21
  194. package/src/cli/utils/detectConvexUrl.ts +0 -54
  195. package/src/cli/utils/openBrowser.ts +0 -16
  196. package/src/client/admin-config.ts +0 -138
  197. package/src/client/adminApi.ts +0 -942
  198. package/src/client/agentTools.ts +0 -1311
  199. package/src/client/argTypes.ts +0 -316
  200. package/src/client/field-types.ts +0 -187
  201. package/src/client/index.ts +0 -1301
  202. package/src/client/queryBuilder.ts +0 -1100
  203. package/src/client/schema/codegen.ts +0 -500
  204. package/src/client/schema/defineContentType.ts +0 -501
  205. package/src/client/schema/index.ts +0 -169
  206. package/src/client/schema/schemaDrift.ts +0 -574
  207. package/src/client/schema/typedClient.ts +0 -688
  208. package/src/client/schema/types.ts +0 -666
  209. package/src/client/types.ts +0 -723
  210. package/src/client/workflows.ts +0 -141
  211. package/src/client/wrapper.ts +0 -4304
  212. package/src/component/_generated/api.ts +0 -140
  213. package/src/component/_generated/component.ts +0 -5029
  214. package/src/component/_generated/dataModel.ts +0 -60
  215. package/src/component/_generated/server.ts +0 -156
  216. package/src/component/authorization.ts +0 -647
  217. package/src/component/authorizationHooks.ts +0 -668
  218. package/src/component/bulkOperations.ts +0 -687
  219. package/src/component/contentEntries.ts +0 -1976
  220. package/src/component/contentEntryMutations.ts +0 -1223
  221. package/src/component/contentEntryValidation.ts +0 -707
  222. package/src/component/contentLock.ts +0 -550
  223. package/src/component/contentTypeMigration.ts +0 -1064
  224. package/src/component/contentTypeMutations.ts +0 -969
  225. package/src/component/contentTypes.ts +0 -346
  226. package/src/component/convex.config.ts +0 -44
  227. package/src/component/documentTypes.ts +0 -240
  228. package/src/component/eventEmitter.ts +0 -485
  229. package/src/component/exportImport.ts +0 -1169
  230. package/src/component/index.ts +0 -491
  231. package/src/component/lib/deepReferenceResolver.ts +0 -999
  232. package/src/component/lib/errors.ts +0 -816
  233. package/src/component/lib/index.ts +0 -145
  234. package/src/component/lib/mediaReferenceResolver.ts +0 -495
  235. package/src/component/lib/metadataExtractor.ts +0 -792
  236. package/src/component/lib/mutationAuth.ts +0 -199
  237. package/src/component/lib/queries.ts +0 -79
  238. package/src/component/lib/ragContentChunker.ts +0 -1371
  239. package/src/component/lib/referenceResolver.ts +0 -430
  240. package/src/component/lib/slugGenerator.ts +0 -262
  241. package/src/component/lib/slugUniqueness.ts +0 -333
  242. package/src/component/lib/softDelete.ts +0 -44
  243. package/src/component/localeFallbackChain.ts +0 -673
  244. package/src/component/localeFields.ts +0 -896
  245. package/src/component/mediaAssetMutations.ts +0 -725
  246. package/src/component/mediaAssets.ts +0 -932
  247. package/src/component/mediaFolderMutations.ts +0 -1046
  248. package/src/component/mediaUploadMutations.ts +0 -224
  249. package/src/component/mediaVariantMutations.ts +0 -900
  250. package/src/component/mediaVariants.ts +0 -793
  251. package/src/component/ragContentIndexer.ts +0 -1067
  252. package/src/component/rateLimitHooks.ts +0 -572
  253. package/src/component/roles.ts +0 -1360
  254. package/src/component/scheduledPublish.ts +0 -358
  255. package/src/component/schema.ts +0 -617
  256. package/src/component/taxonomies.ts +0 -949
  257. package/src/component/taxonomyMutations.ts +0 -1210
  258. package/src/component/trash.ts +0 -724
  259. package/src/component/userContext.ts +0 -898
  260. package/src/component/validation.ts +0 -1388
  261. package/src/component/validators.ts +0 -949
  262. package/src/component/versionMutations.ts +0 -392
  263. package/src/component/webhookTrigger.ts +0 -1922
  264. package/src/react/index.ts +0 -898
  265. package/src/test.ts +0 -1580
@@ -0,0 +1,128 @@
1
+ import { r as reactExports } from "../react.mjs";
2
+ import { u as useComposedRefs } from "./react-compose-refs.mjs";
3
+ import { u as useLayoutEffect2 } from "./react-use-layout-effect.mjs";
4
+ function useStateMachine(initialState, machine) {
5
+ return reactExports.useReducer((state, event) => {
6
+ const nextState = machine[state][event];
7
+ return nextState ?? state;
8
+ }, initialState);
9
+ }
10
+ var Presence = (props) => {
11
+ const { present, children } = props;
12
+ const presence = usePresence(present);
13
+ const child = typeof children === "function" ? children({ present: presence.isPresent }) : reactExports.Children.only(children);
14
+ const ref = useComposedRefs(presence.ref, getElementRef(child));
15
+ const forceMount = typeof children === "function";
16
+ return forceMount || presence.isPresent ? reactExports.cloneElement(child, { ref }) : null;
17
+ };
18
+ Presence.displayName = "Presence";
19
+ function usePresence(present) {
20
+ const [node, setNode] = reactExports.useState();
21
+ const stylesRef = reactExports.useRef(null);
22
+ const prevPresentRef = reactExports.useRef(present);
23
+ const prevAnimationNameRef = reactExports.useRef("none");
24
+ const initialState = present ? "mounted" : "unmounted";
25
+ const [state, send] = useStateMachine(initialState, {
26
+ mounted: {
27
+ UNMOUNT: "unmounted",
28
+ ANIMATION_OUT: "unmountSuspended"
29
+ },
30
+ unmountSuspended: {
31
+ MOUNT: "mounted",
32
+ ANIMATION_END: "unmounted"
33
+ },
34
+ unmounted: {
35
+ MOUNT: "mounted"
36
+ }
37
+ });
38
+ reactExports.useEffect(() => {
39
+ const currentAnimationName = getAnimationName(stylesRef.current);
40
+ prevAnimationNameRef.current = state === "mounted" ? currentAnimationName : "none";
41
+ }, [state]);
42
+ useLayoutEffect2(() => {
43
+ const styles = stylesRef.current;
44
+ const wasPresent = prevPresentRef.current;
45
+ const hasPresentChanged = wasPresent !== present;
46
+ if (hasPresentChanged) {
47
+ const prevAnimationName = prevAnimationNameRef.current;
48
+ const currentAnimationName = getAnimationName(styles);
49
+ if (present) {
50
+ send("MOUNT");
51
+ } else if (currentAnimationName === "none" || styles?.display === "none") {
52
+ send("UNMOUNT");
53
+ } else {
54
+ const isAnimating = prevAnimationName !== currentAnimationName;
55
+ if (wasPresent && isAnimating) {
56
+ send("ANIMATION_OUT");
57
+ } else {
58
+ send("UNMOUNT");
59
+ }
60
+ }
61
+ prevPresentRef.current = present;
62
+ }
63
+ }, [present, send]);
64
+ useLayoutEffect2(() => {
65
+ if (node) {
66
+ let timeoutId;
67
+ const ownerWindow = node.ownerDocument.defaultView ?? window;
68
+ const handleAnimationEnd = (event) => {
69
+ const currentAnimationName = getAnimationName(stylesRef.current);
70
+ const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));
71
+ if (event.target === node && isCurrentAnimation) {
72
+ send("ANIMATION_END");
73
+ if (!prevPresentRef.current) {
74
+ const currentFillMode = node.style.animationFillMode;
75
+ node.style.animationFillMode = "forwards";
76
+ timeoutId = ownerWindow.setTimeout(() => {
77
+ if (node.style.animationFillMode === "forwards") {
78
+ node.style.animationFillMode = currentFillMode;
79
+ }
80
+ });
81
+ }
82
+ }
83
+ };
84
+ const handleAnimationStart = (event) => {
85
+ if (event.target === node) {
86
+ prevAnimationNameRef.current = getAnimationName(stylesRef.current);
87
+ }
88
+ };
89
+ node.addEventListener("animationstart", handleAnimationStart);
90
+ node.addEventListener("animationcancel", handleAnimationEnd);
91
+ node.addEventListener("animationend", handleAnimationEnd);
92
+ return () => {
93
+ ownerWindow.clearTimeout(timeoutId);
94
+ node.removeEventListener("animationstart", handleAnimationStart);
95
+ node.removeEventListener("animationcancel", handleAnimationEnd);
96
+ node.removeEventListener("animationend", handleAnimationEnd);
97
+ };
98
+ } else {
99
+ send("ANIMATION_END");
100
+ }
101
+ }, [node, send]);
102
+ return {
103
+ isPresent: ["mounted", "unmountSuspended"].includes(state),
104
+ ref: reactExports.useCallback((node2) => {
105
+ stylesRef.current = node2 ? getComputedStyle(node2) : null;
106
+ setNode(node2);
107
+ }, [])
108
+ };
109
+ }
110
+ function getAnimationName(styles) {
111
+ return styles?.animationName || "none";
112
+ }
113
+ function getElementRef(element) {
114
+ let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
115
+ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
116
+ if (mayWarn) {
117
+ return element.ref;
118
+ }
119
+ getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
120
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
121
+ if (mayWarn) {
122
+ return element.props.ref;
123
+ }
124
+ return element.props.ref || element.ref;
125
+ }
126
+ export {
127
+ Presence as P
128
+ };
@@ -0,0 +1,141 @@
1
+ import { r as reactExports, j as jsxRuntimeExports } from "../react.mjs";
2
+ import { r as reactDomExports } from "../react-dom.mjs";
3
+ import { c as createSlot, a as createSlot$1 } from "./react-slot.mjs";
4
+ var NODES$3 = [
5
+ "a",
6
+ "button",
7
+ "div",
8
+ "form",
9
+ "h2",
10
+ "h3",
11
+ "img",
12
+ "input",
13
+ "label",
14
+ "li",
15
+ "nav",
16
+ "ol",
17
+ "p",
18
+ "select",
19
+ "span",
20
+ "svg",
21
+ "ul"
22
+ ];
23
+ var Primitive$3 = NODES$3.reduce((primitive, node) => {
24
+ const Slot = createSlot(`Primitive.${node}`);
25
+ const Node = reactExports.forwardRef((props, forwardedRef) => {
26
+ const { asChild, ...primitiveProps } = props;
27
+ const Comp = asChild ? Slot : node;
28
+ if (typeof window !== "undefined") {
29
+ window[Symbol.for("radix-ui")] = true;
30
+ }
31
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Comp, { ...primitiveProps, ref: forwardedRef });
32
+ });
33
+ Node.displayName = `Primitive.${node}`;
34
+ return { ...primitive, [node]: Node };
35
+ }, {});
36
+ function dispatchDiscreteCustomEvent(target, event) {
37
+ if (target) reactDomExports.flushSync(() => target.dispatchEvent(event));
38
+ }
39
+ var NODES$2 = [
40
+ "a",
41
+ "button",
42
+ "div",
43
+ "form",
44
+ "h2",
45
+ "h3",
46
+ "img",
47
+ "input",
48
+ "label",
49
+ "li",
50
+ "nav",
51
+ "ol",
52
+ "p",
53
+ "select",
54
+ "span",
55
+ "svg",
56
+ "ul"
57
+ ];
58
+ var Primitive$2 = NODES$2.reduce((primitive, node) => {
59
+ const Slot = createSlot$1(`Primitive.${node}`);
60
+ const Node = reactExports.forwardRef((props, forwardedRef) => {
61
+ const { asChild, ...primitiveProps } = props;
62
+ const Comp = asChild ? Slot : node;
63
+ if (typeof window !== "undefined") {
64
+ window[Symbol.for("radix-ui")] = true;
65
+ }
66
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Comp, { ...primitiveProps, ref: forwardedRef });
67
+ });
68
+ Node.displayName = `Primitive.${node}`;
69
+ return { ...primitive, [node]: Node };
70
+ }, {});
71
+ var NODES$1 = [
72
+ "a",
73
+ "button",
74
+ "div",
75
+ "form",
76
+ "h2",
77
+ "h3",
78
+ "img",
79
+ "input",
80
+ "label",
81
+ "li",
82
+ "nav",
83
+ "ol",
84
+ "p",
85
+ "select",
86
+ "span",
87
+ "svg",
88
+ "ul"
89
+ ];
90
+ var Primitive$1 = NODES$1.reduce((primitive, node) => {
91
+ const Slot = createSlot$1(`Primitive.${node}`);
92
+ const Node = reactExports.forwardRef((props, forwardedRef) => {
93
+ const { asChild, ...primitiveProps } = props;
94
+ const Comp = asChild ? Slot : node;
95
+ if (typeof window !== "undefined") {
96
+ window[Symbol.for("radix-ui")] = true;
97
+ }
98
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Comp, { ...primitiveProps, ref: forwardedRef });
99
+ });
100
+ Node.displayName = `Primitive.${node}`;
101
+ return { ...primitive, [node]: Node };
102
+ }, {});
103
+ var NODES = [
104
+ "a",
105
+ "button",
106
+ "div",
107
+ "form",
108
+ "h2",
109
+ "h3",
110
+ "img",
111
+ "input",
112
+ "label",
113
+ "li",
114
+ "nav",
115
+ "ol",
116
+ "p",
117
+ "select",
118
+ "span",
119
+ "svg",
120
+ "ul"
121
+ ];
122
+ var Primitive = NODES.reduce((primitive, node) => {
123
+ const Slot = createSlot$1(`Primitive.${node}`);
124
+ const Node = reactExports.forwardRef((props, forwardedRef) => {
125
+ const { asChild, ...primitiveProps } = props;
126
+ const Comp = asChild ? Slot : node;
127
+ if (typeof window !== "undefined") {
128
+ window[Symbol.for("radix-ui")] = true;
129
+ }
130
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Comp, { ...primitiveProps, ref: forwardedRef });
131
+ });
132
+ Node.displayName = `Primitive.${node}`;
133
+ return { ...primitive, [node]: Node };
134
+ }, {});
135
+ export {
136
+ Primitive$3 as P,
137
+ Primitive$2 as a,
138
+ Primitive$1 as b,
139
+ Primitive as c,
140
+ dispatchDiscreteCustomEvent as d
141
+ };
@@ -0,0 +1,224 @@
1
+ import { r as reactExports, j as jsxRuntimeExports } from "../react.mjs";
2
+ import { c as composeEventHandlers } from "./primitive.mjs";
3
+ import { c as createCollection } from "./react-collection.mjs";
4
+ import { u as useComposedRefs } from "./react-compose-refs.mjs";
5
+ import { c as createContextScope } from "./react-context.mjs";
6
+ import { u as useId } from "./react-id.mjs";
7
+ import { P as Primitive } from "./react-primitive.mjs";
8
+ import { u as useCallbackRef } from "./react-use-callback-ref.mjs";
9
+ import { u as useControllableState } from "./react-use-controllable-state.mjs";
10
+ import { u as useDirection } from "./react-direction.mjs";
11
+ var ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus";
12
+ var EVENT_OPTIONS = { bubbles: false, cancelable: true };
13
+ var GROUP_NAME = "RovingFocusGroup";
14
+ var [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);
15
+ var [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(
16
+ GROUP_NAME,
17
+ [createCollectionScope]
18
+ );
19
+ var [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);
20
+ var RovingFocusGroup = reactExports.forwardRef(
21
+ (props, forwardedRef) => {
22
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsxRuntimeExports.jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });
23
+ }
24
+ );
25
+ RovingFocusGroup.displayName = GROUP_NAME;
26
+ var RovingFocusGroupImpl = reactExports.forwardRef((props, forwardedRef) => {
27
+ const {
28
+ __scopeRovingFocusGroup,
29
+ orientation,
30
+ loop = false,
31
+ dir,
32
+ currentTabStopId: currentTabStopIdProp,
33
+ defaultCurrentTabStopId,
34
+ onCurrentTabStopIdChange,
35
+ onEntryFocus,
36
+ preventScrollOnEntryFocus = false,
37
+ ...groupProps
38
+ } = props;
39
+ const ref = reactExports.useRef(null);
40
+ const composedRefs = useComposedRefs(forwardedRef, ref);
41
+ const direction = useDirection(dir);
42
+ const [currentTabStopId, setCurrentTabStopId] = useControllableState({
43
+ prop: currentTabStopIdProp,
44
+ defaultProp: defaultCurrentTabStopId ?? null,
45
+ onChange: onCurrentTabStopIdChange,
46
+ caller: GROUP_NAME
47
+ });
48
+ const [isTabbingBackOut, setIsTabbingBackOut] = reactExports.useState(false);
49
+ const handleEntryFocus = useCallbackRef(onEntryFocus);
50
+ const getItems = useCollection(__scopeRovingFocusGroup);
51
+ const isClickFocusRef = reactExports.useRef(false);
52
+ const [focusableItemsCount, setFocusableItemsCount] = reactExports.useState(0);
53
+ reactExports.useEffect(() => {
54
+ const node = ref.current;
55
+ if (node) {
56
+ node.addEventListener(ENTRY_FOCUS, handleEntryFocus);
57
+ return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);
58
+ }
59
+ }, [handleEntryFocus]);
60
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
61
+ RovingFocusProvider,
62
+ {
63
+ scope: __scopeRovingFocusGroup,
64
+ orientation,
65
+ dir: direction,
66
+ loop,
67
+ currentTabStopId,
68
+ onItemFocus: reactExports.useCallback(
69
+ (tabStopId) => setCurrentTabStopId(tabStopId),
70
+ [setCurrentTabStopId]
71
+ ),
72
+ onItemShiftTab: reactExports.useCallback(() => setIsTabbingBackOut(true), []),
73
+ onFocusableItemAdd: reactExports.useCallback(
74
+ () => setFocusableItemsCount((prevCount) => prevCount + 1),
75
+ []
76
+ ),
77
+ onFocusableItemRemove: reactExports.useCallback(
78
+ () => setFocusableItemsCount((prevCount) => prevCount - 1),
79
+ []
80
+ ),
81
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
82
+ Primitive.div,
83
+ {
84
+ tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,
85
+ "data-orientation": orientation,
86
+ ...groupProps,
87
+ ref: composedRefs,
88
+ style: { outline: "none", ...props.style },
89
+ onMouseDown: composeEventHandlers(props.onMouseDown, () => {
90
+ isClickFocusRef.current = true;
91
+ }),
92
+ onFocus: composeEventHandlers(props.onFocus, (event) => {
93
+ const isKeyboardFocus = !isClickFocusRef.current;
94
+ if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {
95
+ const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);
96
+ event.currentTarget.dispatchEvent(entryFocusEvent);
97
+ if (!entryFocusEvent.defaultPrevented) {
98
+ const items = getItems().filter((item) => item.focusable);
99
+ const activeItem = items.find((item) => item.active);
100
+ const currentItem = items.find((item) => item.id === currentTabStopId);
101
+ const candidateItems = [activeItem, currentItem, ...items].filter(
102
+ Boolean
103
+ );
104
+ const candidateNodes = candidateItems.map((item) => item.ref.current);
105
+ focusFirst(candidateNodes, preventScrollOnEntryFocus);
106
+ }
107
+ }
108
+ isClickFocusRef.current = false;
109
+ }),
110
+ onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))
111
+ }
112
+ )
113
+ }
114
+ );
115
+ });
116
+ var ITEM_NAME = "RovingFocusGroupItem";
117
+ var RovingFocusGroupItem = reactExports.forwardRef(
118
+ (props, forwardedRef) => {
119
+ const {
120
+ __scopeRovingFocusGroup,
121
+ focusable = true,
122
+ active = false,
123
+ tabStopId,
124
+ children,
125
+ ...itemProps
126
+ } = props;
127
+ const autoId = useId();
128
+ const id = tabStopId || autoId;
129
+ const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);
130
+ const isCurrentTabStop = context.currentTabStopId === id;
131
+ const getItems = useCollection(__scopeRovingFocusGroup);
132
+ const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;
133
+ reactExports.useEffect(() => {
134
+ if (focusable) {
135
+ onFocusableItemAdd();
136
+ return () => onFocusableItemRemove();
137
+ }
138
+ }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);
139
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
140
+ Collection.ItemSlot,
141
+ {
142
+ scope: __scopeRovingFocusGroup,
143
+ id,
144
+ focusable,
145
+ active,
146
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
147
+ Primitive.span,
148
+ {
149
+ tabIndex: isCurrentTabStop ? 0 : -1,
150
+ "data-orientation": context.orientation,
151
+ ...itemProps,
152
+ ref: forwardedRef,
153
+ onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {
154
+ if (!focusable) event.preventDefault();
155
+ else context.onItemFocus(id);
156
+ }),
157
+ onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),
158
+ onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
159
+ if (event.key === "Tab" && event.shiftKey) {
160
+ context.onItemShiftTab();
161
+ return;
162
+ }
163
+ if (event.target !== event.currentTarget) return;
164
+ const focusIntent = getFocusIntent(event, context.orientation, context.dir);
165
+ if (focusIntent !== void 0) {
166
+ if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;
167
+ event.preventDefault();
168
+ const items = getItems().filter((item) => item.focusable);
169
+ let candidateNodes = items.map((item) => item.ref.current);
170
+ if (focusIntent === "last") candidateNodes.reverse();
171
+ else if (focusIntent === "prev" || focusIntent === "next") {
172
+ if (focusIntent === "prev") candidateNodes.reverse();
173
+ const currentIndex = candidateNodes.indexOf(event.currentTarget);
174
+ candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);
175
+ }
176
+ setTimeout(() => focusFirst(candidateNodes));
177
+ }
178
+ }),
179
+ children: typeof children === "function" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children
180
+ }
181
+ )
182
+ }
183
+ );
184
+ }
185
+ );
186
+ RovingFocusGroupItem.displayName = ITEM_NAME;
187
+ var MAP_KEY_TO_FOCUS_INTENT = {
188
+ ArrowLeft: "prev",
189
+ ArrowUp: "prev",
190
+ ArrowRight: "next",
191
+ ArrowDown: "next",
192
+ PageUp: "first",
193
+ Home: "first",
194
+ PageDown: "last",
195
+ End: "last"
196
+ };
197
+ function getDirectionAwareKey(key, dir) {
198
+ if (dir !== "rtl") return key;
199
+ return key === "ArrowLeft" ? "ArrowRight" : key === "ArrowRight" ? "ArrowLeft" : key;
200
+ }
201
+ function getFocusIntent(event, orientation, dir) {
202
+ const key = getDirectionAwareKey(event.key, dir);
203
+ if (orientation === "vertical" && ["ArrowLeft", "ArrowRight"].includes(key)) return void 0;
204
+ if (orientation === "horizontal" && ["ArrowUp", "ArrowDown"].includes(key)) return void 0;
205
+ return MAP_KEY_TO_FOCUS_INTENT[key];
206
+ }
207
+ function focusFirst(candidates, preventScroll = false) {
208
+ const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;
209
+ for (const candidate of candidates) {
210
+ if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;
211
+ candidate.focus({ preventScroll });
212
+ if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;
213
+ }
214
+ }
215
+ function wrapArray(array, startIndex) {
216
+ return array.map((_, index) => array[(startIndex + index) % array.length]);
217
+ }
218
+ var Root = RovingFocusGroup;
219
+ var Item = RovingFocusGroupItem;
220
+ export {
221
+ Item as I,
222
+ Root as R,
223
+ createRovingFocusGroupScope as c
224
+ };