@epilot/volt-ui 1.1.6 → 1.1.7-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/dist/components/button/index.d.ts +1 -0
  2. package/dist/components/spinner/spinner.d.ts +2 -2
  3. package/dist/index.es.js +137 -11814
  4. package/dist/index.es.js.map +1 -0
  5. package/dist/index.es10.js +35 -0
  6. package/dist/index.es10.js.map +1 -0
  7. package/dist/index.es100.js +14 -0
  8. package/dist/index.es100.js.map +1 -0
  9. package/dist/index.es101.js +20 -0
  10. package/dist/index.es101.js.map +1 -0
  11. package/dist/index.es102.js +103 -0
  12. package/dist/index.es102.js.map +1 -0
  13. package/dist/index.es103.js +12 -0
  14. package/dist/index.es103.js.map +1 -0
  15. package/dist/index.es104.js +30 -0
  16. package/dist/index.es104.js.map +1 -0
  17. package/dist/index.es105.js +38 -0
  18. package/dist/index.es105.js.map +1 -0
  19. package/dist/index.es106.js +17 -0
  20. package/dist/index.es106.js.map +1 -0
  21. package/dist/index.es107.js +49 -0
  22. package/dist/index.es107.js.map +1 -0
  23. package/dist/index.es108.js +10 -0
  24. package/dist/index.es108.js.map +1 -0
  25. package/dist/index.es11.js +318 -0
  26. package/dist/index.es11.js.map +1 -0
  27. package/dist/index.es12.js +274 -0
  28. package/dist/index.es12.js.map +1 -0
  29. package/dist/index.es13.js +38 -0
  30. package/dist/index.es13.js.map +1 -0
  31. package/dist/index.es14.js +48 -0
  32. package/dist/index.es14.js.map +1 -0
  33. package/dist/index.es15.js +67 -0
  34. package/dist/index.es15.js.map +1 -0
  35. package/dist/index.es16.js +120 -0
  36. package/dist/index.es16.js.map +1 -0
  37. package/dist/index.es17.js +27 -0
  38. package/dist/index.es17.js.map +1 -0
  39. package/dist/index.es18.js +51 -0
  40. package/dist/index.es18.js.map +1 -0
  41. package/dist/index.es19.js +168 -0
  42. package/dist/index.es19.js.map +1 -0
  43. package/dist/index.es20.js +55 -0
  44. package/dist/index.es20.js.map +1 -0
  45. package/dist/index.es21.js +61 -0
  46. package/dist/index.es21.js.map +1 -0
  47. package/dist/index.es22.js +86 -0
  48. package/dist/index.es22.js.map +1 -0
  49. package/dist/index.es23.js +195 -0
  50. package/dist/index.es23.js.map +1 -0
  51. package/dist/index.es24.js +105 -0
  52. package/dist/index.es24.js.map +1 -0
  53. package/dist/index.es25.js +146 -0
  54. package/dist/index.es25.js.map +1 -0
  55. package/dist/index.es26.js +92 -0
  56. package/dist/index.es26.js.map +1 -0
  57. package/dist/index.es27.js +80 -0
  58. package/dist/index.es27.js.map +1 -0
  59. package/dist/index.es28.js +94 -0
  60. package/dist/index.es28.js.map +1 -0
  61. package/dist/index.es29.js +82 -0
  62. package/dist/index.es29.js.map +1 -0
  63. package/dist/index.es30.js +1087 -0
  64. package/dist/index.es30.js.map +1 -0
  65. package/dist/index.es31.js +18 -0
  66. package/dist/index.es31.js.map +1 -0
  67. package/dist/index.es32.js +3015 -0
  68. package/dist/index.es32.js.map +1 -0
  69. package/dist/index.es33.js +107 -0
  70. package/dist/index.es33.js.map +1 -0
  71. package/dist/index.es34.js +46 -0
  72. package/dist/index.es34.js.map +1 -0
  73. package/dist/index.es35.js +151 -0
  74. package/dist/index.es35.js.map +1 -0
  75. package/dist/index.es36.js +1200 -0
  76. package/dist/index.es36.js.map +1 -0
  77. package/dist/index.es37.js +27 -0
  78. package/dist/index.es37.js.map +1 -0
  79. package/dist/index.es38.js +493 -0
  80. package/dist/index.es38.js.map +1 -0
  81. package/dist/index.es39.js +156 -0
  82. package/dist/index.es39.js.map +1 -0
  83. package/dist/index.es4.js +9 -0
  84. package/dist/index.es4.js.map +1 -0
  85. package/dist/index.es40.js +31 -0
  86. package/dist/index.es40.js.map +1 -0
  87. package/dist/index.es41.js +314 -0
  88. package/dist/index.es41.js.map +1 -0
  89. package/dist/index.es42.js +343 -0
  90. package/dist/index.es42.js.map +1 -0
  91. package/dist/index.es43.js +280 -0
  92. package/dist/index.es43.js.map +1 -0
  93. package/dist/index.es44.js +289 -0
  94. package/dist/index.es44.js.map +1 -0
  95. package/dist/index.es45.js +319 -0
  96. package/dist/index.es45.js.map +1 -0
  97. package/dist/index.es46.js +167 -0
  98. package/dist/index.es46.js.map +1 -0
  99. package/dist/index.es47.js +195 -0
  100. package/dist/index.es47.js.map +1 -0
  101. package/dist/index.es48.js +40 -0
  102. package/dist/index.es48.js.map +1 -0
  103. package/dist/index.es49.js +40 -0
  104. package/dist/index.es49.js.map +1 -0
  105. package/dist/index.es5.js +57 -0
  106. package/dist/index.es5.js.map +1 -0
  107. package/dist/index.es50.js +12 -0
  108. package/dist/index.es50.js.map +1 -0
  109. package/dist/index.es51.js +82 -0
  110. package/dist/index.es51.js.map +1 -0
  111. package/dist/index.es52.js +72 -0
  112. package/dist/index.es52.js.map +1 -0
  113. package/dist/index.es53.js +15 -0
  114. package/dist/index.es53.js.map +1 -0
  115. package/dist/index.es54.js +40 -0
  116. package/dist/index.es54.js.map +1 -0
  117. package/dist/index.es55.js +44 -0
  118. package/dist/index.es55.js.map +1 -0
  119. package/dist/index.es56.js +71 -0
  120. package/dist/index.es56.js.map +1 -0
  121. package/dist/index.es57.js +152 -0
  122. package/dist/index.es57.js.map +1 -0
  123. package/dist/index.es58.js +15 -0
  124. package/dist/index.es58.js.map +1 -0
  125. package/dist/index.es59.js +11 -0
  126. package/dist/index.es59.js.map +1 -0
  127. package/dist/index.es6.js +77 -0
  128. package/dist/index.es6.js.map +1 -0
  129. package/dist/index.es60.js +130 -0
  130. package/dist/index.es60.js.map +1 -0
  131. package/dist/index.es61.js +213 -0
  132. package/dist/index.es61.js.map +1 -0
  133. package/dist/index.es62.js +294 -0
  134. package/dist/index.es62.js.map +1 -0
  135. package/dist/index.es63.js +16 -0
  136. package/dist/index.es63.js.map +1 -0
  137. package/dist/index.es64.js +37 -0
  138. package/dist/index.es64.js.map +1 -0
  139. package/dist/index.es65.js +228 -0
  140. package/dist/index.es65.js.map +1 -0
  141. package/dist/index.es66.js +209 -0
  142. package/dist/index.es66.js.map +1 -0
  143. package/dist/index.es67.js +19 -0
  144. package/dist/index.es67.js.map +1 -0
  145. package/dist/index.es68.js +30 -0
  146. package/dist/index.es68.js.map +1 -0
  147. package/dist/index.es69.js +12 -0
  148. package/dist/index.es69.js.map +1 -0
  149. package/dist/index.es7.js +200 -0
  150. package/dist/index.es7.js.map +1 -0
  151. package/dist/index.es70.js +123 -0
  152. package/dist/index.es70.js.map +1 -0
  153. package/dist/index.es71.js +90 -0
  154. package/dist/index.es71.js.map +1 -0
  155. package/dist/index.es72.js +7 -0
  156. package/dist/index.es72.js.map +1 -0
  157. package/dist/index.es73.js +90 -0
  158. package/dist/index.es73.js.map +1 -0
  159. package/dist/index.es74.js +15 -0
  160. package/dist/index.es74.js.map +1 -0
  161. package/dist/index.es75.js +7 -0
  162. package/dist/index.es75.js.map +1 -0
  163. package/dist/index.es76.js +40 -0
  164. package/dist/index.es76.js.map +1 -0
  165. package/dist/index.es77.js +90 -0
  166. package/dist/index.es77.js.map +1 -0
  167. package/dist/index.es78.js +313 -0
  168. package/dist/index.es78.js.map +1 -0
  169. package/dist/index.es79.js +16 -0
  170. package/dist/index.es79.js.map +1 -0
  171. package/dist/index.es8.js +47 -0
  172. package/dist/index.es8.js.map +1 -0
  173. package/dist/index.es80.js +90 -0
  174. package/dist/index.es80.js.map +1 -0
  175. package/dist/index.es81.js +18 -0
  176. package/dist/index.es81.js.map +1 -0
  177. package/dist/index.es82.js +298 -0
  178. package/dist/index.es82.js.map +1 -0
  179. package/dist/index.es83.js +26 -0
  180. package/dist/index.es83.js.map +1 -0
  181. package/dist/index.es84.js +626 -0
  182. package/dist/index.es84.js.map +1 -0
  183. package/dist/index.es85.js +19 -0
  184. package/dist/index.es85.js.map +1 -0
  185. package/dist/index.es86.js +40 -0
  186. package/dist/index.es86.js.map +1 -0
  187. package/dist/index.es87.js +40 -0
  188. package/dist/index.es87.js.map +1 -0
  189. package/dist/index.es88.js +39 -0
  190. package/dist/index.es88.js.map +1 -0
  191. package/dist/index.es89.js +8 -0
  192. package/dist/index.es89.js.map +1 -0
  193. package/dist/index.es9.js +37 -0
  194. package/dist/index.es9.js.map +1 -0
  195. package/dist/index.es90.js +722 -0
  196. package/dist/index.es90.js.map +1 -0
  197. package/dist/index.es91.js +155 -0
  198. package/dist/index.es91.js.map +1 -0
  199. package/dist/index.es92.js +174 -0
  200. package/dist/index.es92.js.map +1 -0
  201. package/dist/index.es93.js +11 -0
  202. package/dist/index.es93.js.map +1 -0
  203. package/dist/index.es94.js +6 -0
  204. package/dist/index.es94.js.map +1 -0
  205. package/dist/index.es95.js +36 -0
  206. package/dist/index.es95.js.map +1 -0
  207. package/dist/index.es96.js +175 -0
  208. package/dist/index.es96.js.map +1 -0
  209. package/dist/index.es97.js +22 -0
  210. package/dist/index.es97.js.map +1 -0
  211. package/dist/index.es98.js +89 -0
  212. package/dist/index.es98.js.map +1 -0
  213. package/dist/index.es99.js +48 -0
  214. package/dist/index.es99.js.map +1 -0
  215. package/dist/preflight.css +241 -1
  216. package/dist/style.css +7393 -1
  217. package/package.json +1 -4
  218. package/dist/index.cjs.js +0 -51
@@ -0,0 +1,77 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Root as Slot } from "./index.es33.js";
3
+ import { cva } from "./index.es34.js";
4
+ import { Separator } from "./index.es17.js";
5
+ import { cn } from "./index.es4.js";
6
+ const buttonGroupVariants = cva(
7
+ "volt-group/button-group volt-flex volt-w-fit volt-items-stretch [&>*:focus-visible]:z-10 [&>*:focus-visible]:relative has-[>[data-slot=button-group]]:gap-2",
8
+ {
9
+ variants: {
10
+ orientation: {
11
+ horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
12
+ vertical: "volt-flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"
13
+ }
14
+ },
15
+ defaultVariants: {
16
+ orientation: "horizontal"
17
+ }
18
+ }
19
+ );
20
+ const ButtonGroup = ({
21
+ className,
22
+ orientation,
23
+ ...props
24
+ }) => {
25
+ return /* @__PURE__ */ jsx(
26
+ "div",
27
+ {
28
+ role: "group",
29
+ "data-slot": "button-group",
30
+ "data-orientation": orientation,
31
+ className: cn(buttonGroupVariants({ orientation }), className),
32
+ ...props
33
+ }
34
+ );
35
+ };
36
+ const ButtonGroupText = ({
37
+ className,
38
+ asChild = false,
39
+ ...props
40
+ }) => {
41
+ const Comp = asChild ? Slot : "div";
42
+ return /* @__PURE__ */ jsx(
43
+ Comp,
44
+ {
45
+ className: cn(
46
+ "volt-bg-gray-a4 volt-flex volt-items-center volt-gap-2 volt-rounded-md volt-border volt-px-4 volt-py-3 volt-text-sm volt-font-medium volt-shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='volt-size-'])]:size-4",
47
+ className
48
+ ),
49
+ ...props
50
+ }
51
+ );
52
+ };
53
+ const ButtonGroupSeparator = ({
54
+ className,
55
+ orientation = "vertical",
56
+ ...props
57
+ }) => {
58
+ return /* @__PURE__ */ jsx(
59
+ Separator,
60
+ {
61
+ "data-slot": "volt-button-group-separator",
62
+ orientation,
63
+ className: cn(
64
+ "volt-m-0 volt-relative volt-self-stretch volt-data-[orientation=vertical]:h-px",
65
+ className
66
+ ),
67
+ ...props
68
+ }
69
+ );
70
+ };
71
+ export {
72
+ ButtonGroup,
73
+ ButtonGroupSeparator,
74
+ ButtonGroupText,
75
+ buttonGroupVariants
76
+ };
77
+ //# sourceMappingURL=index.es6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es6.js","sources":["../src/components/button/button-group.tsx"],"sourcesContent":["import { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Separator } from \"@/components/separator/seperator\"\nimport { cn } from \"@/lib/utils\"\n\nconst buttonGroupVariants = cva(\n \"group/button-group flex w-fit items-stretch [&>*:focus-visible]:z-10 [&>*:focus-visible]:relative has-[>[data-slot=button-group]]:gap-2\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nconst ButtonGroup = ({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) => {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nconst ButtonGroupText = ({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean\n}) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n className={cn(\n \"bg-gray-a4 flex items-center gap-2 rounded-md border px-4 py-3 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst ButtonGroupSeparator = ({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) => {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"m-0 relative self-stretch data-[orientation=vertical]:h-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n"],"names":[],"mappings":";;;;;AAKA,MAAM,sBAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,aAAa;AAAA,QACX,YACE;AAAA,QACF,UACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,iBAAiB;AAAA,MACf,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ;AAEA,MAAM,cAAc,CAAC;AAAA,EACnB;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA8E;AAC5E,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,oBAAkB;AAAA,MAClB,WAAW,GAAG,oBAAoB,EAAE,YAAA,CAAa,GAAG,SAAS;AAAA,MAC5D,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAM,kBAAkB,CAAC;AAAA,EACvB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,MAEM;AACJ,QAAM,OAAO,UAAU,OAAO;AAE9B,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,MAA8C;AAC5C,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -0,0 +1,130 @@
1
+ import * as React from "react";
2
+ import { useComposedRefs } from "./index.es48.js";
3
+ import { useLayoutEffect as useLayoutEffect2 } from "./index.es75.js";
4
+ function useStateMachine(initialState, machine) {
5
+ return React.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 }) : React.Children.only(children);
14
+ const ref = useComposedRefs(presence.ref, getElementRef(child));
15
+ const forceMount = typeof children === "function";
16
+ return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;
17
+ };
18
+ Presence.displayName = "Presence";
19
+ function usePresence(present) {
20
+ const [node, setNode] = React.useState();
21
+ const stylesRef = React.useRef(null);
22
+ const prevPresentRef = React.useRef(present);
23
+ const prevAnimationNameRef = React.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
+ React.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 == null ? void 0 : 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: React.useCallback((node2) => {
105
+ stylesRef.current = node2 ? getComputedStyle(node2) : null;
106
+ setNode(node2);
107
+ }, [])
108
+ };
109
+ }
110
+ function getAnimationName(styles) {
111
+ return (styles == null ? void 0 : styles.animationName) || "none";
112
+ }
113
+ function getElementRef(element) {
114
+ var _a, _b;
115
+ let getter = (_a = Object.getOwnPropertyDescriptor(element.props, "ref")) == null ? void 0 : _a.get;
116
+ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
117
+ if (mayWarn) {
118
+ return element.ref;
119
+ }
120
+ getter = (_b = Object.getOwnPropertyDescriptor(element, "ref")) == null ? void 0 : _b.get;
121
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
122
+ if (mayWarn) {
123
+ return element.props.ref;
124
+ }
125
+ return element.props.ref || element.ref;
126
+ }
127
+ export {
128
+ Presence
129
+ };
130
+ //# sourceMappingURL=index.es60.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es60.js","sources":["../docs/node_modules/.bun/@radix-ui+react-presence@1.1.5+98e41321d0e6b3fa/node_modules/@radix-ui/react-presence/dist/index.mjs"],"sourcesContent":["\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["React2","useLayoutEffect"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,213 @@
1
+ import * as React from "react";
2
+ import { composeEventHandlers } from "./index.es50.js";
3
+ import { Primitive, dispatchDiscreteCustomEvent } from "./index.es55.js";
4
+ import { useComposedRefs } from "./index.es48.js";
5
+ import { useCallbackRef } from "./index.es74.js";
6
+ import { useEscapeKeydown } from "./index.es81.js";
7
+ import { jsx } from "react/jsx-runtime";
8
+ var DISMISSABLE_LAYER_NAME = "DismissableLayer";
9
+ var CONTEXT_UPDATE = "dismissableLayer.update";
10
+ var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
11
+ var FOCUS_OUTSIDE = "dismissableLayer.focusOutside";
12
+ var originalBodyPointerEvents;
13
+ var DismissableLayerContext = React.createContext({
14
+ layers: /* @__PURE__ */ new Set(),
15
+ layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
16
+ branches: /* @__PURE__ */ new Set()
17
+ });
18
+ var DismissableLayer = React.forwardRef(
19
+ (props, forwardedRef) => {
20
+ const {
21
+ disableOutsidePointerEvents = false,
22
+ onEscapeKeyDown,
23
+ onPointerDownOutside,
24
+ onFocusOutside,
25
+ onInteractOutside,
26
+ onDismiss,
27
+ ...layerProps
28
+ } = props;
29
+ const context = React.useContext(DismissableLayerContext);
30
+ const [node, setNode] = React.useState(null);
31
+ const ownerDocument = (node == null ? void 0 : node.ownerDocument) ?? (globalThis == null ? void 0 : globalThis.document);
32
+ const [, force] = React.useState({});
33
+ const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));
34
+ const layers = Array.from(context.layers);
35
+ const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);
36
+ const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);
37
+ const index = node ? layers.indexOf(node) : -1;
38
+ const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;
39
+ const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;
40
+ const pointerDownOutside = usePointerDownOutside((event) => {
41
+ const target = event.target;
42
+ const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));
43
+ if (!isPointerEventsEnabled || isPointerDownOnBranch) return;
44
+ onPointerDownOutside == null ? void 0 : onPointerDownOutside(event);
45
+ onInteractOutside == null ? void 0 : onInteractOutside(event);
46
+ if (!event.defaultPrevented) onDismiss == null ? void 0 : onDismiss();
47
+ }, ownerDocument);
48
+ const focusOutside = useFocusOutside((event) => {
49
+ const target = event.target;
50
+ const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));
51
+ if (isFocusInBranch) return;
52
+ onFocusOutside == null ? void 0 : onFocusOutside(event);
53
+ onInteractOutside == null ? void 0 : onInteractOutside(event);
54
+ if (!event.defaultPrevented) onDismiss == null ? void 0 : onDismiss();
55
+ }, ownerDocument);
56
+ useEscapeKeydown((event) => {
57
+ const isHighestLayer = index === context.layers.size - 1;
58
+ if (!isHighestLayer) return;
59
+ onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(event);
60
+ if (!event.defaultPrevented && onDismiss) {
61
+ event.preventDefault();
62
+ onDismiss();
63
+ }
64
+ }, ownerDocument);
65
+ React.useEffect(() => {
66
+ if (!node) return;
67
+ if (disableOutsidePointerEvents) {
68
+ if (context.layersWithOutsidePointerEventsDisabled.size === 0) {
69
+ originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;
70
+ ownerDocument.body.style.pointerEvents = "none";
71
+ }
72
+ context.layersWithOutsidePointerEventsDisabled.add(node);
73
+ }
74
+ context.layers.add(node);
75
+ dispatchUpdate();
76
+ return () => {
77
+ if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {
78
+ ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;
79
+ }
80
+ };
81
+ }, [node, ownerDocument, disableOutsidePointerEvents, context]);
82
+ React.useEffect(() => {
83
+ return () => {
84
+ if (!node) return;
85
+ context.layers.delete(node);
86
+ context.layersWithOutsidePointerEventsDisabled.delete(node);
87
+ dispatchUpdate();
88
+ };
89
+ }, [node, context]);
90
+ React.useEffect(() => {
91
+ const handleUpdate = () => force({});
92
+ document.addEventListener(CONTEXT_UPDATE, handleUpdate);
93
+ return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
94
+ }, []);
95
+ return /* @__PURE__ */ jsx(
96
+ Primitive.div,
97
+ {
98
+ ...layerProps,
99
+ ref: composedRefs,
100
+ style: {
101
+ pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? "auto" : "none" : void 0,
102
+ ...props.style
103
+ },
104
+ onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),
105
+ onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),
106
+ onPointerDownCapture: composeEventHandlers(
107
+ props.onPointerDownCapture,
108
+ pointerDownOutside.onPointerDownCapture
109
+ )
110
+ }
111
+ );
112
+ }
113
+ );
114
+ DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
115
+ var BRANCH_NAME = "DismissableLayerBranch";
116
+ var DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {
117
+ const context = React.useContext(DismissableLayerContext);
118
+ const ref = React.useRef(null);
119
+ const composedRefs = useComposedRefs(forwardedRef, ref);
120
+ React.useEffect(() => {
121
+ const node = ref.current;
122
+ if (node) {
123
+ context.branches.add(node);
124
+ return () => {
125
+ context.branches.delete(node);
126
+ };
127
+ }
128
+ }, [context.branches]);
129
+ return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });
130
+ });
131
+ DismissableLayerBranch.displayName = BRANCH_NAME;
132
+ function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis == null ? void 0 : globalThis.document) {
133
+ const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);
134
+ const isPointerInsideReactTreeRef = React.useRef(false);
135
+ const handleClickRef = React.useRef(() => {
136
+ });
137
+ React.useEffect(() => {
138
+ const handlePointerDown = (event) => {
139
+ if (event.target && !isPointerInsideReactTreeRef.current) {
140
+ let handleAndDispatchPointerDownOutsideEvent2 = function() {
141
+ handleAndDispatchCustomEvent(
142
+ POINTER_DOWN_OUTSIDE,
143
+ handlePointerDownOutside,
144
+ eventDetail,
145
+ { discrete: true }
146
+ );
147
+ };
148
+ const eventDetail = { originalEvent: event };
149
+ if (event.pointerType === "touch") {
150
+ ownerDocument.removeEventListener("click", handleClickRef.current);
151
+ handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;
152
+ ownerDocument.addEventListener("click", handleClickRef.current, { once: true });
153
+ } else {
154
+ handleAndDispatchPointerDownOutsideEvent2();
155
+ }
156
+ } else {
157
+ ownerDocument.removeEventListener("click", handleClickRef.current);
158
+ }
159
+ isPointerInsideReactTreeRef.current = false;
160
+ };
161
+ const timerId = window.setTimeout(() => {
162
+ ownerDocument.addEventListener("pointerdown", handlePointerDown);
163
+ }, 0);
164
+ return () => {
165
+ window.clearTimeout(timerId);
166
+ ownerDocument.removeEventListener("pointerdown", handlePointerDown);
167
+ ownerDocument.removeEventListener("click", handleClickRef.current);
168
+ };
169
+ }, [ownerDocument, handlePointerDownOutside]);
170
+ return {
171
+ // ensures we check React component tree (not just DOM tree)
172
+ onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true
173
+ };
174
+ }
175
+ function useFocusOutside(onFocusOutside, ownerDocument = globalThis == null ? void 0 : globalThis.document) {
176
+ const handleFocusOutside = useCallbackRef(onFocusOutside);
177
+ const isFocusInsideReactTreeRef = React.useRef(false);
178
+ React.useEffect(() => {
179
+ const handleFocus = (event) => {
180
+ if (event.target && !isFocusInsideReactTreeRef.current) {
181
+ const eventDetail = { originalEvent: event };
182
+ handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {
183
+ discrete: false
184
+ });
185
+ }
186
+ };
187
+ ownerDocument.addEventListener("focusin", handleFocus);
188
+ return () => ownerDocument.removeEventListener("focusin", handleFocus);
189
+ }, [ownerDocument, handleFocusOutside]);
190
+ return {
191
+ onFocusCapture: () => isFocusInsideReactTreeRef.current = true,
192
+ onBlurCapture: () => isFocusInsideReactTreeRef.current = false
193
+ };
194
+ }
195
+ function dispatchUpdate() {
196
+ const event = new CustomEvent(CONTEXT_UPDATE);
197
+ document.dispatchEvent(event);
198
+ }
199
+ function handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {
200
+ const target = detail.originalEvent.target;
201
+ const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });
202
+ if (handler) target.addEventListener(name, handler, { once: true });
203
+ if (discrete) {
204
+ dispatchDiscreteCustomEvent(target, event);
205
+ } else {
206
+ target.dispatchEvent(event);
207
+ }
208
+ }
209
+ export {
210
+ DismissableLayer,
211
+ DismissableLayerBranch
212
+ };
213
+ //# sourceMappingURL=index.es61.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es61.js","sources":["../docs/node_modules/.bun/@radix-ui+react-dismissable-layer@1.1.11+98e41321d0e6b3fa/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs"],"sourcesContent":["\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}