@rpcbase/ui 0.233.0 → 0.235.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 (267) hide show
  1. package/dist/components/FilesUploadField/index.d.ts.map +1 -1
  2. package/dist/index151.js +4 -4
  3. package/dist/index156.js +1 -1
  4. package/dist/index157.js +1 -1
  5. package/dist/index164.js +1 -1
  6. package/dist/index165.js +6 -6
  7. package/dist/index167.js +4 -4
  8. package/dist/index169.js +1 -1
  9. package/dist/index172.js +9 -9
  10. package/dist/index175.js +1 -1
  11. package/dist/index176.js +4 -4
  12. package/dist/index178.js +1 -1
  13. package/dist/index182.js +1 -1
  14. package/dist/index184.js +12 -12
  15. package/dist/index185.js +1 -1
  16. package/dist/index187.js +6 -6
  17. package/dist/index189.js +6 -6
  18. package/dist/index190.js +5 -5
  19. package/dist/index193.js +3 -3
  20. package/dist/index194.js +5 -5
  21. package/dist/index198.js +57 -36
  22. package/dist/index198.js.map +1 -1
  23. package/dist/index199.js.map +1 -1
  24. package/dist/index256.js +20 -14
  25. package/dist/index256.js.map +1 -1
  26. package/dist/index257.js +58 -146
  27. package/dist/index257.js.map +1 -1
  28. package/dist/index258.js +6 -30
  29. package/dist/index258.js.map +1 -1
  30. package/dist/index259.js +11 -9
  31. package/dist/index259.js.map +1 -1
  32. package/dist/index260.js +46 -44
  33. package/dist/index260.js.map +1 -1
  34. package/dist/index261.js +4 -12
  35. package/dist/index261.js.map +1 -1
  36. package/dist/index262.js +28 -43
  37. package/dist/index262.js.map +1 -1
  38. package/dist/index263.js +14 -93
  39. package/dist/index263.js.map +1 -1
  40. package/dist/index264.js +5 -86
  41. package/dist/index264.js.map +1 -1
  42. package/dist/index265.js +21 -105
  43. package/dist/index265.js.map +1 -1
  44. package/dist/index266.js +50 -51
  45. package/dist/index266.js.map +1 -1
  46. package/dist/index267.js +25 -11
  47. package/dist/index267.js.map +1 -1
  48. package/dist/index268.js +41 -37
  49. package/dist/index268.js.map +1 -1
  50. package/dist/index269.js +39 -8
  51. package/dist/index269.js.map +1 -1
  52. package/dist/index270.js +45 -117
  53. package/dist/index270.js.map +1 -1
  54. package/dist/index271.js +20 -17
  55. package/dist/index271.js.map +1 -1
  56. package/dist/index272.js +69 -14
  57. package/dist/index272.js.map +1 -1
  58. package/dist/index273.js +17 -3
  59. package/dist/index273.js.map +1 -1
  60. package/dist/index274.js +11 -36
  61. package/dist/index274.js.map +1 -1
  62. package/dist/index275.js +27 -20
  63. package/dist/index275.js.map +1 -1
  64. package/dist/index276.js +13 -9
  65. package/dist/index276.js.map +1 -1
  66. package/dist/index277.js +18 -8
  67. package/dist/index277.js.map +1 -1
  68. package/dist/index278.js +37 -20
  69. package/dist/index278.js.map +1 -1
  70. package/dist/index279.js +255 -59
  71. package/dist/index279.js.map +1 -1
  72. package/dist/index280.js +278 -6
  73. package/dist/index280.js.map +1 -1
  74. package/dist/index281.js +67 -10
  75. package/dist/index281.js.map +1 -1
  76. package/dist/index282.js +96 -47
  77. package/dist/index282.js.map +1 -1
  78. package/dist/index283.js +84 -4
  79. package/dist/index283.js.map +1 -1
  80. package/dist/index284.js +3 -29
  81. package/dist/index284.js.map +1 -1
  82. package/dist/index285.js +28 -15
  83. package/dist/index285.js.map +1 -1
  84. package/dist/index286.js +16 -5
  85. package/dist/index286.js.map +1 -1
  86. package/dist/index287.js +35 -22
  87. package/dist/index287.js.map +1 -1
  88. package/dist/index288.js +16 -51
  89. package/dist/index288.js.map +1 -1
  90. package/dist/index289.js +3 -25
  91. package/dist/index289.js.map +1 -1
  92. package/dist/index290.js +26 -41
  93. package/dist/index290.js.map +1 -1
  94. package/dist/index291.js +27 -38
  95. package/dist/index291.js.map +1 -1
  96. package/dist/index292.js +4 -45
  97. package/dist/index292.js.map +1 -1
  98. package/dist/index293.js +78 -20
  99. package/dist/index293.js.map +1 -1
  100. package/dist/index294.js +264 -65
  101. package/dist/index294.js.map +1 -1
  102. package/dist/index295.js +11 -17
  103. package/dist/index295.js.map +1 -1
  104. package/dist/index296.js +10 -11
  105. package/dist/index296.js.map +1 -1
  106. package/dist/index297.js +24 -26
  107. package/dist/index297.js.map +1 -1
  108. package/dist/index298.js +16 -13
  109. package/dist/index298.js.map +1 -1
  110. package/dist/index299.js +122 -15
  111. package/dist/index299.js.map +1 -1
  112. package/dist/index300.js +5 -36
  113. package/dist/index300.js.map +1 -1
  114. package/dist/index301.js +38 -260
  115. package/dist/index301.js.map +1 -1
  116. package/dist/index302.js +62 -275
  117. package/dist/index302.js.map +1 -1
  118. package/dist/index303.js +13 -68
  119. package/dist/index303.js.map +1 -1
  120. package/dist/index304.js +7 -99
  121. package/dist/index304.js.map +1 -1
  122. package/dist/index305.js +5 -83
  123. package/dist/index305.js.map +1 -1
  124. package/dist/index306.js +3 -3
  125. package/dist/index306.js.map +1 -1
  126. package/dist/index307.js +10 -29
  127. package/dist/index307.js.map +1 -1
  128. package/dist/index308.js +6 -15
  129. package/dist/index308.js.map +1 -1
  130. package/dist/index309.js +133 -34
  131. package/dist/index309.js.map +1 -1
  132. package/dist/index310.js +398 -15
  133. package/dist/index310.js.map +1 -1
  134. package/dist/index311.js +52 -3
  135. package/dist/index311.js.map +1 -1
  136. package/dist/index312.js +11 -26
  137. package/dist/index312.js.map +1 -1
  138. package/dist/index313.js +10 -27
  139. package/dist/index313.js.map +1 -1
  140. package/dist/index314.js +14 -4
  141. package/dist/index314.js.map +1 -1
  142. package/dist/index315.js +151 -75
  143. package/dist/index315.js.map +1 -1
  144. package/dist/index316.js +28 -267
  145. package/dist/index316.js.map +1 -1
  146. package/dist/index317.js +9 -11
  147. package/dist/index317.js.map +1 -1
  148. package/dist/index318.js +49 -11
  149. package/dist/index318.js.map +1 -1
  150. package/dist/index319.js +11 -25
  151. package/dist/index319.js.map +1 -1
  152. package/dist/index320.js +43 -15
  153. package/dist/index320.js.map +1 -1
  154. package/dist/index321.js +89 -119
  155. package/dist/index321.js.map +1 -1
  156. package/dist/index322.js +86 -5
  157. package/dist/index322.js.map +1 -1
  158. package/dist/index323.js +104 -39
  159. package/dist/index323.js.map +1 -1
  160. package/dist/index324.js +47 -60
  161. package/dist/index324.js.map +1 -1
  162. package/dist/index325.js +11 -13
  163. package/dist/index325.js.map +1 -1
  164. package/dist/index326.js +37 -7
  165. package/dist/index326.js.map +1 -1
  166. package/dist/index327.js +8 -5
  167. package/dist/index327.js.map +1 -1
  168. package/dist/index328.js +116 -3
  169. package/dist/index328.js.map +1 -1
  170. package/dist/index329.js +17 -10
  171. package/dist/index329.js.map +1 -1
  172. package/dist/index330.js +15 -7
  173. package/dist/index330.js.map +1 -1
  174. package/dist/index331.js +3 -133
  175. package/dist/index331.js.map +1 -1
  176. package/dist/index332.js +35 -398
  177. package/dist/index332.js.map +1 -1
  178. package/dist/index333.js +20 -52
  179. package/dist/index333.js.map +1 -1
  180. package/dist/index334.js +9 -11
  181. package/dist/index334.js.map +1 -1
  182. package/dist/index335.js +8 -11
  183. package/dist/index335.js.map +1 -1
  184. package/dist/index336.js +8 -19
  185. package/dist/index336.js.map +1 -1
  186. package/dist/index337.js +11 -28
  187. package/dist/index337.js.map +1 -1
  188. package/dist/index338.js +7 -15
  189. package/dist/index338.js.map +1 -1
  190. package/dist/index339.js +13 -8
  191. package/dist/index339.js.map +1 -1
  192. package/dist/index340.js +3 -11
  193. package/dist/index340.js.map +1 -1
  194. package/dist/index341.js +3 -8
  195. package/dist/index341.js.map +1 -1
  196. package/dist/index342.js +16 -12
  197. package/dist/index342.js.map +1 -1
  198. package/dist/index343.js +19 -3
  199. package/dist/index343.js.map +1 -1
  200. package/dist/index344.js +28 -3
  201. package/dist/index344.js.map +1 -1
  202. package/dist/index345.js +15 -16
  203. package/dist/index345.js.map +1 -1
  204. package/dist/index346.js +2 -2
  205. package/dist/index347.js +122 -5
  206. package/dist/index347.js.map +1 -1
  207. package/dist/index348.js +31 -121
  208. package/dist/index348.js.map +1 -1
  209. package/dist/index349.js +72 -31
  210. package/dist/index349.js.map +1 -1
  211. package/dist/index350.js +139 -70
  212. package/dist/index350.js.map +1 -1
  213. package/dist/index351.js +35 -116
  214. package/dist/index351.js.map +1 -1
  215. package/dist/index352.js +44 -56
  216. package/dist/index352.js.map +1 -1
  217. package/dist/index353.js +14 -49
  218. package/dist/index353.js.map +1 -1
  219. package/dist/index354.js +6 -15
  220. package/dist/index354.js.map +1 -1
  221. package/dist/index362.js +10 -19
  222. package/dist/index362.js.map +1 -1
  223. package/dist/index363.js +17 -4
  224. package/dist/index363.js.map +1 -1
  225. package/dist/index364.js +5 -11
  226. package/dist/index364.js.map +1 -1
  227. package/dist/index365.js +4 -17
  228. package/dist/index365.js.map +1 -1
  229. package/dist/index366.js +20 -5
  230. package/dist/index366.js.map +1 -1
  231. package/dist/index367.js +43 -19
  232. package/dist/index367.js.map +1 -1
  233. package/dist/index368.js +13 -40
  234. package/dist/index368.js.map +1 -1
  235. package/dist/index369.js +4 -17
  236. package/dist/index369.js.map +1 -1
  237. package/dist/index370.js +200 -4
  238. package/dist/index370.js.map +1 -1
  239. package/dist/index371.js +74 -197
  240. package/dist/index371.js.map +1 -1
  241. package/dist/index372.js +20 -77
  242. package/dist/index372.js.map +1 -1
  243. package/dist/index374.js +3 -3
  244. package/dist/index375.js +1 -1
  245. package/dist/index376.js +3 -3
  246. package/dist/index378.js +2 -2
  247. package/dist/index380.js +1 -1
  248. package/dist/index381.js +2 -2
  249. package/dist/index384.js +2 -2
  250. package/dist/index386.js +1 -1
  251. package/dist/index407.js +1 -1
  252. package/dist/index49.js +28 -28
  253. package/dist/index50.js +21 -21
  254. package/dist/index51.js +1 -1
  255. package/dist/index52.js +8 -8
  256. package/dist/index53.js +2 -2
  257. package/dist/index55.js +17 -17
  258. package/dist/index56.js +4 -4
  259. package/dist/index57.js +3 -3
  260. package/dist/index58.js +7 -7
  261. package/dist/index59.js +4 -4
  262. package/dist/index60.js +12 -12
  263. package/dist/index61.js +2 -2
  264. package/dist/index62.js +2 -2
  265. package/dist/index8.js +533 -698
  266. package/dist/index8.js.map +1 -1
  267. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index301.js","sources":["../../../node_modules/@base-ui/react/esm/floating-ui-react/hooks/useDismiss.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { getComputedStyle, getParentNode, isElement, isHTMLElement, isLastTraversableNode, isShadowRoot, isWebKit } from '@floating-ui/utils/dom';\nimport { addEventListener } from '@base-ui/utils/addEventListener';\nimport { mergeCleanups } from '@base-ui/utils/mergeCleanups';\nimport { Timeout, useTimeout } from '@base-ui/utils/useTimeout';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { contains, getTarget, isEventTargetWithin, isRootElement } from \"../utils/element.js\";\nimport { isReactEvent } from \"../utils/event.js\";\nimport { getNodeChildren } from \"../utils/nodes.js\";\n\n/* eslint-disable no-underscore-dangle */\n\nimport { useFloatingTree } from \"../components/FloatingTree.js\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../internals/reasons.js\";\nimport { createAttribute } from \"../utils/createAttribute.js\";\nconst bubbleHandlerKeys = {\n intentional: 'onClick',\n sloppy: 'onPointerDown'\n};\nfunction alwaysFalse() {\n return false;\n}\nexport function normalizeProp(normalizable) {\n return {\n escapeKey: typeof normalizable === 'boolean' ? normalizable : normalizable?.escapeKey ?? false,\n outsidePress: typeof normalizable === 'boolean' ? normalizable : normalizable?.outsidePress ?? true\n };\n}\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nexport function useDismiss(context, props = {}) {\n const store = 'rootStore' in context ? context.rootStore : context;\n const open = store.useState('open');\n const floatingElement = store.useState('floatingElement');\n const {\n dataRef\n } = store.context;\n const {\n enabled = true,\n escapeKey = true,\n outsidePress: outsidePressProp = true,\n outsidePressEvent = 'sloppy',\n referencePress = alwaysFalse,\n referencePressEvent = 'sloppy',\n bubbles,\n externalTree\n } = props;\n const tree = useFloatingTree(externalTree);\n const outsidePressFn = useStableCallback(typeof outsidePressProp === 'function' ? outsidePressProp : () => false);\n const outsidePress = typeof outsidePressProp === 'function' ? outsidePressFn : outsidePressProp;\n const outsidePressEnabled = outsidePress !== false;\n const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent);\n const pressStartedInsideRef = React.useRef(false);\n const pressStartPreventedRef = React.useRef(false);\n // Ignore only the very next outside click after dragging from inside to outside.\n const suppressNextOutsideClickRef = React.useRef(false);\n const {\n escapeKey: escapeKeyBubbles,\n outsidePress: outsidePressBubbles\n } = normalizeProp(bubbles);\n const touchStateRef = React.useRef(null);\n const cancelDismissOnEndTimeout = useTimeout();\n const clearInsideReactTreeTimeout = useTimeout();\n const clearInsideReactTree = useStableCallback(() => {\n clearInsideReactTreeTimeout.clear();\n dataRef.current.insideReactTree = false;\n });\n const isComposingRef = React.useRef(false);\n const currentPointerTypeRef = React.useRef('');\n const isReferencePressEnabled = useStableCallback(referencePress);\n const closeOnEscapeKeyDown = useStableCallback(event => {\n if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n return;\n }\n\n // Wait until IME is settled. Pressing `Escape` while composing should\n // close the compose menu, but not the floating element.\n if (isComposingRef.current) {\n return;\n }\n const nodeId = dataRef.current.floatingContext?.nodeId;\n const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : [];\n if (!escapeKeyBubbles) {\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n if (child.context?.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n shouldDismiss = false;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n }\n const native = isReactEvent(event) ? event.nativeEvent : event;\n const eventDetails = createChangeEventDetails(REASONS.escapeKey, native);\n store.setOpen(false, eventDetails);\n if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) {\n event.stopPropagation();\n }\n });\n const markInsideReactTree = useStableCallback(() => {\n dataRef.current.insideReactTree = true;\n clearInsideReactTreeTimeout.start(0, clearInsideReactTree);\n });\n React.useEffect(() => {\n if (!open || !enabled) {\n return undefined;\n }\n dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n const compositionTimeout = new Timeout();\n const preventedPressSuppressionTimeout = new Timeout();\n function handleCompositionStart() {\n compositionTimeout.clear();\n isComposingRef.current = true;\n }\n function handleCompositionEnd() {\n // Safari fires `compositionend` before `keydown`, so we need to wait\n // until the next tick to set `isComposing` to `false`.\n // https://bugs.webkit.org/show_bug.cgi?id=165004\n compositionTimeout.start(\n // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.\n // Only apply to WebKit for the test to remain 0ms.\n isWebKit() ? 5 : 0, () => {\n isComposingRef.current = false;\n });\n }\n function suppressImmediateOutsideClickAfterPreventedStart() {\n suppressNextOutsideClickRef.current = true;\n // Firefox can emit the synthetic outside click in a later task after\n // pointer lock exit, so microtask clearing is too early here.\n preventedPressSuppressionTimeout.start(0, () => {\n suppressNextOutsideClickRef.current = false;\n });\n }\n function resetPressStartState() {\n pressStartedInsideRef.current = false;\n pressStartPreventedRef.current = false;\n }\n function getOutsidePressEvent() {\n const type = currentPointerTypeRef.current;\n const computedType = type === 'pen' || !type ? 'mouse' : type;\n const outsidePressEventValue = getOutsidePressEventProp();\n const resolved = typeof outsidePressEventValue === 'function' ? outsidePressEventValue() : outsidePressEventValue;\n if (typeof resolved === 'string') {\n return resolved;\n }\n return resolved[computedType];\n }\n function shouldIgnoreEvent(event) {\n const computedOutsidePressEvent = getOutsidePressEvent();\n return computedOutsidePressEvent === 'intentional' && event.type !== 'click' || computedOutsidePressEvent === 'sloppy' && event.type === 'click';\n }\n function isEventWithinFloatingTree(event) {\n const nodeId = dataRef.current.floatingContext?.nodeId;\n const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some(node => isEventTargetWithin(event, node.context?.elements.floating));\n return isEventTargetWithin(event, store.select('floatingElement')) || isEventTargetWithin(event, store.select('domReferenceElement')) || targetIsInsideChildren;\n }\n function closeOnPressOutside(event) {\n if (shouldIgnoreEvent(event)) {\n clearInsideReactTree();\n return;\n }\n if (dataRef.current.insideReactTree) {\n clearInsideReactTree();\n return;\n }\n const target = getTarget(event);\n const inertSelector = `[${createAttribute('inert')}]`;\n const targetRoot = isElement(target) ? target.getRootNode() : null;\n const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store.select('floatingElement'))).querySelectorAll(inertSelector));\n const triggers = store.context.triggerElements;\n\n // If another trigger is clicked, don't close the floating element.\n if (target && (triggers.hasElement(target) || triggers.hasMatchingElement(trigger => contains(trigger, target)))) {\n return;\n }\n let targetRootAncestor = isElement(target) ? target : null;\n while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n const nextParent = getParentNode(targetRootAncestor);\n if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n break;\n }\n targetRootAncestor = nextParent;\n }\n\n // Check if the click occurred on a third-party element injected after the\n // floating element rendered.\n if (markers.length && isElement(target) && !isRootElement(target) &&\n // Clicked on a direct ancestor (e.g. FloatingOverlay).\n !contains(target, store.select('floatingElement')) &&\n // If the target root element contains none of the markers, then the\n // element was injected after the floating element rendered.\n markers.every(marker => !contains(targetRootAncestor, marker))) {\n return;\n }\n\n // Check if the click occurred on the scrollbar\n // Skip for touch events: scrollbars don't receive touch events on most platforms\n if (isHTMLElement(target) && !('touches' in event)) {\n const lastTraversableNode = isLastTraversableNode(target);\n const style = getComputedStyle(target);\n const scrollRe = /auto|scroll/;\n const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX);\n const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY);\n const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n const isRTL = style.direction === 'rtl';\n\n // Check click position relative to scrollbar.\n // In some browsers it is possible to change the <body> (or window)\n // scrollbar to the left side, but is very rare and is difficult to\n // check for. Plus, for modal dialogs with backdrops, it is more\n // important that the backdrop is checked but not so much the window.\n const pressedVerticalScrollbar = canScrollY && (isRTL ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth);\n const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight;\n if (pressedVerticalScrollbar || pressedHorizontalScrollbar) {\n return;\n }\n }\n if (isEventWithinFloatingTree(event)) {\n return;\n }\n\n // In intentional mode, a press that starts inside and ends outside gets\n // one suppressed outside click. Run this after inside-target checks so\n // inside clicks don't consume the one-shot suppression.\n if (getOutsidePressEvent() === 'intentional' && suppressNextOutsideClickRef.current) {\n preventedPressSuppressionTimeout.clear();\n suppressNextOutsideClickRef.current = false;\n return;\n }\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n const nodeId = dataRef.current.floatingContext?.nodeId;\n const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : [];\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n if (child.context?.open && !child.context.dataRef.current.__outsidePressBubbles) {\n shouldDismiss = false;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n store.setOpen(false, createChangeEventDetails(REASONS.outsidePress, event));\n clearInsideReactTree();\n }\n function handlePointerDown(event) {\n if (getOutsidePressEvent() !== 'sloppy' || event.pointerType === 'touch' || !store.select('open') || !enabled || isEventTargetWithin(event, store.select('floatingElement')) || isEventTargetWithin(event, store.select('domReferenceElement'))) {\n return;\n }\n closeOnPressOutside(event);\n }\n function handleTouchStart(event) {\n if (getOutsidePressEvent() !== 'sloppy' || !store.select('open') || !enabled || isEventTargetWithin(event, store.select('floatingElement')) || isEventTargetWithin(event, store.select('domReferenceElement'))) {\n return;\n }\n const touch = event.touches[0];\n if (touch) {\n touchStateRef.current = {\n startTime: Date.now(),\n startX: touch.clientX,\n startY: touch.clientY,\n dismissOnTouchEnd: false,\n dismissOnMouseDown: true\n };\n cancelDismissOnEndTimeout.start(1000, () => {\n if (touchStateRef.current) {\n touchStateRef.current.dismissOnTouchEnd = false;\n touchStateRef.current.dismissOnMouseDown = false;\n }\n });\n }\n }\n function addTargetEventListenerOnce(event, listener) {\n const target = getTarget(event);\n if (!target) {\n return;\n }\n const unsubscribe = addEventListener(target, event.type, () => {\n listener(event);\n unsubscribe();\n });\n }\n function handleTouchStartCapture(event) {\n currentPointerTypeRef.current = 'touch';\n addTargetEventListenerOnce(event, handleTouchStart);\n }\n function closeOnPressOutsideCapture(event) {\n cancelDismissOnEndTimeout.clear();\n if (event.type === 'pointerdown') {\n currentPointerTypeRef.current = event.pointerType;\n }\n if (event.type === 'mousedown' && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) {\n return;\n }\n addTargetEventListenerOnce(event, targetEvent => {\n if (targetEvent.type === 'pointerdown') {\n handlePointerDown(targetEvent);\n } else {\n closeOnPressOutside(targetEvent);\n }\n });\n }\n function handlePressEndCapture(event) {\n if (!pressStartedInsideRef.current) {\n return;\n }\n const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current;\n resetPressStartState();\n if (getOutsidePressEvent() !== 'intentional') {\n return;\n }\n if (event.type === 'pointercancel') {\n if (pressStartedInsideDefaultPrevented) {\n suppressImmediateOutsideClickAfterPreventedStart();\n }\n return;\n }\n if (isEventWithinFloatingTree(event)) {\n return;\n }\n\n // If pointerdown was prevented, no click may be generated for that\n // interaction. However, Firefox may still emit an immediate click after\n // pointerup (e.g. NumberField scrub with pointer lock), so suppress for\n // one tick to absorb that synthetic click only.\n if (pressStartedInsideDefaultPrevented) {\n suppressImmediateOutsideClickAfterPreventedStart();\n return;\n }\n\n // Avoid suppressing when outsidePress explicitly ignores this target.\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n preventedPressSuppressionTimeout.clear();\n suppressNextOutsideClickRef.current = true;\n clearInsideReactTree();\n }\n function handleTouchMove(event) {\n if (getOutsidePressEvent() !== 'sloppy' || !touchStateRef.current || isEventTargetWithin(event, store.select('floatingElement')) || isEventTargetWithin(event, store.select('domReferenceElement'))) {\n return;\n }\n const touch = event.touches[0];\n if (!touch) {\n return;\n }\n const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX);\n const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY);\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n if (distance > 5) {\n touchStateRef.current.dismissOnTouchEnd = true;\n }\n if (distance > 10) {\n closeOnPressOutside(event);\n cancelDismissOnEndTimeout.clear();\n touchStateRef.current = null;\n }\n }\n function handleTouchMoveCapture(event) {\n addTargetEventListenerOnce(event, handleTouchMove);\n }\n function handleTouchEnd(event) {\n if (getOutsidePressEvent() !== 'sloppy' || !touchStateRef.current || isEventTargetWithin(event, store.select('floatingElement')) || isEventTargetWithin(event, store.select('domReferenceElement'))) {\n return;\n }\n if (touchStateRef.current.dismissOnTouchEnd) {\n closeOnPressOutside(event);\n }\n cancelDismissOnEndTimeout.clear();\n touchStateRef.current = null;\n }\n function handleTouchEndCapture(event) {\n addTargetEventListenerOnce(event, handleTouchEnd);\n }\n const doc = ownerDocument(floatingElement);\n const unsubscribe = mergeCleanups(escapeKey && mergeCleanups(addEventListener(doc, 'keydown', closeOnEscapeKeyDown), addEventListener(doc, 'compositionstart', handleCompositionStart), addEventListener(doc, 'compositionend', handleCompositionEnd)), outsidePressEnabled && mergeCleanups(addEventListener(doc, 'click', closeOnPressOutsideCapture, true), addEventListener(doc, 'pointerdown', closeOnPressOutsideCapture, true), addEventListener(doc, 'pointerup', handlePressEndCapture, true), addEventListener(doc, 'pointercancel', handlePressEndCapture, true), addEventListener(doc, 'mousedown', closeOnPressOutsideCapture, true), addEventListener(doc, 'mouseup', handlePressEndCapture, true), addEventListener(doc, 'touchstart', handleTouchStartCapture, true), addEventListener(doc, 'touchmove', handleTouchMoveCapture, true), addEventListener(doc, 'touchend', handleTouchEndCapture, true)));\n return () => {\n unsubscribe();\n compositionTimeout.clear();\n preventedPressSuppressionTimeout.clear();\n resetPressStartState();\n suppressNextOutsideClickRef.current = false;\n };\n }, [dataRef, floatingElement, escapeKey, outsidePressEnabled, outsidePress, open, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, tree, store, cancelDismissOnEndTimeout]);\n React.useEffect(clearInsideReactTree, [outsidePress, clearInsideReactTree]);\n const reference = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n [bubbleHandlerKeys[referencePressEvent]]: event => {\n if (!isReferencePressEnabled()) {\n return;\n }\n store.setOpen(false, createChangeEventDetails(REASONS.triggerPress, event.nativeEvent));\n },\n ...(referencePressEvent !== 'intentional' && {\n onClick(event) {\n if (!isReferencePressEnabled()) {\n return;\n }\n store.setOpen(false, createChangeEventDetails(REASONS.triggerPress, event.nativeEvent));\n }\n })\n }), [closeOnEscapeKeyDown, store, referencePressEvent, isReferencePressEnabled]);\n const markPressStartedInsideReactTree = useStableCallback(event => {\n if (!open || !enabled || event.button !== 0) {\n return;\n }\n const target = getTarget(event.nativeEvent);\n // Only treat presses that start within the floating DOM subtree as inside.\n // This avoids suppressing parent dismissal when interacting with nested portals.\n if (!contains(store.select('floatingElement'), target)) {\n return;\n }\n if (!pressStartedInsideRef.current) {\n pressStartedInsideRef.current = true;\n pressStartPreventedRef.current = false;\n }\n });\n const markInsidePressStartPrevented = useStableCallback(event => {\n if (!open || !enabled) {\n return;\n }\n if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) {\n return;\n }\n if (pressStartedInsideRef.current) {\n pressStartPreventedRef.current = true;\n }\n });\n const floating = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n // `onMouseDown` may be blocked if `event.preventDefault()` is called in\n // `onPointerDown`, such as with <NumberField.ScrubArea>.\n // See https://github.com/mui/base-ui/pull/3379\n onPointerDown: markInsidePressStartPrevented,\n onMouseDown: markInsidePressStartPrevented,\n onClickCapture: markInsideReactTree,\n onMouseDownCapture(event) {\n markInsideReactTree();\n markPressStartedInsideReactTree(event);\n },\n onPointerDownCapture(event) {\n markInsideReactTree();\n markPressStartedInsideReactTree(event);\n },\n onMouseUpCapture: markInsideReactTree,\n onTouchEndCapture: markInsideReactTree,\n onTouchMoveCapture: markInsideReactTree\n }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n trigger: reference\n } : {}, [enabled, reference, floating]);\n}"],"names":["bubbleHandlerKeys","alwaysFalse","normalizeProp","normalizable","useDismiss","context","props","store","open","floatingElement","dataRef","enabled","escapeKey","outsidePressProp","outsidePressEvent","referencePress","referencePressEvent","bubbles","externalTree","tree","useFloatingTree","outsidePressFn","useStableCallback","outsidePress","outsidePressEnabled","getOutsidePressEventProp","pressStartedInsideRef","React","pressStartPreventedRef","suppressNextOutsideClickRef","escapeKeyBubbles","outsidePressBubbles","touchStateRef","cancelDismissOnEndTimeout","useTimeout","clearInsideReactTreeTimeout","clearInsideReactTree","isComposingRef","currentPointerTypeRef","isReferencePressEnabled","closeOnEscapeKeyDown","event","nodeId","children","getNodeChildren","shouldDismiss","child","native","isReactEvent","eventDetails","createChangeEventDetails","REASONS.escapeKey","markInsideReactTree","compositionTimeout","Timeout","preventedPressSuppressionTimeout","handleCompositionStart","handleCompositionEnd","isWebKit","suppressImmediateOutsideClickAfterPreventedStart","resetPressStartState","getOutsidePressEvent","type","computedType","outsidePressEventValue","resolved","shouldIgnoreEvent","computedOutsidePressEvent","isEventWithinFloatingTree","targetIsInsideChildren","node","isEventTargetWithin","closeOnPressOutside","target","getTarget","inertSelector","createAttribute","targetRoot","isElement","markers","isShadowRoot","ownerDocument","triggers","trigger","contains","targetRootAncestor","isLastTraversableNode","nextParent","getParentNode","isRootElement","marker","isHTMLElement","lastTraversableNode","style","getComputedStyle","scrollRe","isScrollableX","isScrollableY","canScrollX","canScrollY","isRTL","pressedVerticalScrollbar","pressedHorizontalScrollbar","REASONS.outsidePress","handlePointerDown","handleTouchStart","touch","addTargetEventListenerOnce","listener","unsubscribe","addEventListener","handleTouchStartCapture","closeOnPressOutsideCapture","targetEvent","handlePressEndCapture","pressStartedInsideDefaultPrevented","handleTouchMove","deltaX","deltaY","distance","handleTouchMoveCapture","handleTouchEnd","handleTouchEndCapture","doc","mergeCleanups","reference","REASONS.triggerPress","markPressStartedInsideReactTree","markInsidePressStartPrevented","floating"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index301.js","sources":["../../../node_modules/@base-ui/utils/esm/detectBrowser.js"],"sourcesContent":["const hasNavigator = typeof navigator !== 'undefined';\nconst nav = getNavigatorData();\nconst platform = getPlatform();\nconst userAgent = getUserAgent();\nexport const isWebKit = typeof CSS === 'undefined' || !CSS.supports ? false : CSS.supports('-webkit-backdrop-filter:none');\nexport const isIOS =\n// iPads can claim to be MacIntel\nnav.platform === 'MacIntel' && nav.maxTouchPoints > 1 ? true : /iP(hone|ad|od)|iOS/.test(nav.platform);\nexport const isFirefox = hasNavigator && /firefox/i.test(userAgent);\nexport const isSafari = hasNavigator && /apple/i.test(navigator.vendor);\nexport const isEdge = hasNavigator && /Edg/i.test(userAgent);\nexport const isAndroid = hasNavigator && /android/i.test(platform) || /android/i.test(userAgent);\nexport const isMac = hasNavigator && platform.toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\nexport const isJSDOM = userAgent.includes('jsdom/');\n\n// Avoid Chrome DevTools blue warning.\nfunction getNavigatorData() {\n if (!hasNavigator) {\n return {\n platform: '',\n maxTouchPoints: -1\n };\n }\n const uaData = navigator.userAgentData;\n if (uaData?.platform) {\n return {\n platform: uaData.platform,\n maxTouchPoints: navigator.maxTouchPoints\n };\n }\n return {\n platform: navigator.platform ?? '',\n maxTouchPoints: navigator.maxTouchPoints ?? -1\n };\n}\nfunction getUserAgent() {\n if (!hasNavigator) {\n return '';\n }\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(({\n brand,\n version\n }) => `${brand}/${version}`).join(' ');\n }\n return navigator.userAgent;\n}\nfunction getPlatform() {\n if (!hasNavigator) {\n return '';\n }\n const uaData = navigator.userAgentData;\n if (uaData?.platform) {\n return uaData.platform;\n }\n return navigator.platform ?? '';\n}"],"names":["hasNavigator","nav","getNavigatorData","platform","getPlatform","userAgent","getUserAgent","isWebKit","isIOS","isSafari","isAndroid","isJSDOM","uaData","brand","version"],"mappings":"AAAA,MAAMA,IAAe,OAAO,YAAc,KACpCC,IAAMC,EAAgB,GACtBC,IAAWC,EAAW,GACtBC,IAAYC,EAAY,GACjBC,IAAW,OAAO,MAAQ,OAAe,CAAC,IAAI,WAAW,KAAQ,IAAI,SAAS,8BAA8B,GAC5GC;AAAA;AAAA,EAEbP,EAAI,aAAa,cAAcA,EAAI,iBAAiB,IAAI,KAAO,qBAAqB,KAAKA,EAAI,QAAQ;AAAA,GAExFQ,IAAWT,KAAgB,SAAS,KAAK,UAAU,MAAM,GAEzDU,IAAYV,KAAgB,WAAW,KAAKG,CAAQ,KAAK,WAAW,KAAKE,CAAS;AAC1EL,KAAgBG,EAAS,YAAW,EAAG,WAAW,KAAK,KAAM,UAAU;AAChF,MAACQ,IAAUN,EAAU,SAAS,QAAQ;AAGlD,SAASH,IAAmB;AAC1B,MAAI,CAACF;AACH,WAAO;AAAA,MACL,UAAU;AAAA,MACV,gBAAgB;AAAA,IACtB;AAEE,QAAMY,IAAS,UAAU;AACzB,SAAIA,GAAQ,WACH;AAAA,IACL,UAAUA,EAAO;AAAA,IACjB,gBAAgB,UAAU;AAAA,EAChC,IAES;AAAA,IACL,UAAU,UAAU,YAAY;AAAA,IAChC,gBAAgB,UAAU,kBAAkB;AAAA,EAChD;AACA;AACA,SAASN,IAAe;AACtB,MAAI,CAACN;AACH,WAAO;AAET,QAAMY,IAAS,UAAU;AACzB,SAAIA,KAAU,MAAM,QAAQA,EAAO,MAAM,IAChCA,EAAO,OAAO,IAAI,CAAC;AAAA,IACxB,OAAAC;AAAA,IACA,SAAAC;AAAA,EACN,MAAU,GAAGD,CAAK,IAAIC,CAAO,EAAE,EAAE,KAAK,GAAG,IAEhC,UAAU;AACnB;AACA,SAASV,IAAc;AACrB,MAAI,CAACJ;AACH,WAAO;AAET,QAAMY,IAAS,UAAU;AACzB,SAAIA,GAAQ,WACHA,EAAO,WAET,UAAU,YAAY;AAC/B;","x_google_ignoreList":[0]}
package/dist/index302.js CHANGED
@@ -1,282 +1,69 @@
1
- import * as f from "react";
2
- import { isHTMLElement as Ce } from "./index331.js";
3
- import { useValueAsRef as z } from "./index285.js";
4
- import { useStableCallback as X } from "./index284.js";
5
- import { useIsoLayoutEffect as A } from "./index283.js";
6
- import { ownerDocument as Te } from "./index306.js";
7
- import { getFloatingFocusElement as Ve, isTypeableCombobox as ze } from "./index312.js";
8
- import { stopEvent as T, isVirtualClick as Ge, isVirtualPointerEvent as We } from "./index375.js";
9
- import { isIndexOutOfListBounds as Fe, getMinListIndex as me, getMaxListIndex as Se, createGridCellMap as _e, isListIndexDisabled as pe, getGridNavigatedIndex as qe, getGridCellIndexOfCorner as He, getGridCellIndices as $e, findNonDisabledListIndex as Y } from "./index378.js";
10
- import { useFloatingParentNodeId as Be, useFloatingTree as Qe } from "./index382.js";
11
- import { createChangeEventDetails as Z } from "./index175.js";
12
- import { enqueueFocus as Ue } from "./index380.js";
13
- import { ARROW_DOWN as re, ARROW_LEFT as G, ARROW_RIGHT as W, ARROW_UP as Ae } from "./index385.js";
14
- import { activeElement as ge, contains as Re, getTarget as je } from "./index313.js";
15
- import { listNavigation as he, focusOut as Je } from "./index177.js";
16
- const Xe = "Escape";
17
- function te(c, p, u) {
18
- switch (c) {
19
- case "vertical":
20
- return p;
21
- case "horizontal":
22
- return u;
23
- default:
24
- return p || u;
1
+ import { useRefWithInit as u } from "./index258.js";
2
+ import { useOnMount as h } from "./index364.js";
3
+ const s = null;
4
+ let l = globalThis.requestAnimationFrame;
5
+ class o {
6
+ /* This implementation uses an array as a backing data-structure for frame callbacks.
7
+ * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it
8
+ * never calls the native `cancelAnimationFrame` if there are no frames left. This can
9
+ * be much more efficient if there is a call pattern that alterns as
10
+ * "request-cancel-request-cancel-…".
11
+ * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation
12
+ * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */
13
+ callbacks = [];
14
+ callbacksCount = 0;
15
+ nextId = 1;
16
+ startId = 1;
17
+ isScheduled = !1;
18
+ tick = (t) => {
19
+ this.isScheduled = !1;
20
+ const e = this.callbacks, r = this.callbacksCount;
21
+ if (this.callbacks = [], this.callbacksCount = 0, this.startId = this.nextId, r > 0)
22
+ for (let i = 0; i < e.length; i += 1)
23
+ e[i]?.(t);
24
+ };
25
+ request(t) {
26
+ const e = this.nextId;
27
+ this.nextId += 1, this.callbacks.push(t), this.callbacksCount += 1;
28
+ const r = process.env.NODE_ENV !== "production" && l !== requestAnimationFrame && (l = requestAnimationFrame, !0);
29
+ return (!this.isScheduled || r) && (requestAnimationFrame(this.tick), this.isScheduled = !0), e;
30
+ }
31
+ cancel(t) {
32
+ const e = t - this.startId;
33
+ e < 0 || e >= this.callbacks.length || (this.callbacks[e] = null, this.callbacksCount -= 1);
25
34
  }
26
35
  }
27
- function ee(c, p) {
28
- return te(p, c === Ae || c === re, c === G || c === W);
29
- }
30
- function Ie(c, p, u) {
31
- return te(p, c === re, u ? c === G : c === W) || c === "Enter" || c === " " || c === "";
32
- }
33
- function Ye(c, p, u) {
34
- return te(p, u ? c === G : c === W, c === re);
35
- }
36
- function Ze(c, p, u, i) {
37
- const g = u ? c === W : c === G, E = c === Ae;
38
- return p === "both" || p === "horizontal" && i && i > 1 ? c === Xe : te(p, g, E);
39
- }
40
- function pr(c, p) {
41
- const u = "rootStore" in c ? c.rootStore : c, i = u.useState("open"), g = u.useState("floatingElement"), E = u.useState("domReferenceElement"), Ee = u.context.dataRef, {
42
- listRef: o,
43
- activeIndex: O,
44
- onNavigate: Le = () => {
45
- },
46
- enabled: y = !0,
47
- selectedIndex: L = null,
48
- allowEscape: ne = !1,
49
- loopFocus: _ = !1,
50
- nested: b = !1,
51
- rtl: x = !1,
52
- virtual: d = !1,
53
- focusItemOnOpen: M = "auto",
54
- focusItemOnHover: oe = !0,
55
- openOnArrowKeyDown: ce = !0,
56
- disabledIndices: R = void 0,
57
- orientation: m = "vertical",
58
- parentOrientation: xe,
59
- cols: F = 1,
60
- id: Oe,
61
- resetOnPointerLeave: Ne = !0,
62
- externalTree: ke
63
- } = p;
64
- process.env.NODE_ENV !== "production" && (ne && (_ || console.warn("`useListNavigation` looping must be enabled to allow escaping."), d || console.warn("`useListNavigation` must be virtual to allow escaping.")), m === "vertical" && F > 1 && console.warn("In grid list navigation mode (`cols` > 1), the `orientation` should", 'be either "horizontal" or "both".'));
65
- const De = Ve(g), N = z(De), q = Be(), v = Qe(ke);
66
- A(() => {
67
- Ee.current.orientation = m;
68
- }, [Ee, m]);
69
- const ue = ze(E), P = f.useRef(M), n = f.useRef(L ?? -1), C = f.useRef(null), S = f.useRef(!0), a = X((e) => {
70
- Le(n.current === -1 ? null : n.current, e);
71
- }), ye = f.useRef(a), k = f.useRef(!!g), we = f.useRef(i), h = f.useRef(!1), H = f.useRef(!1), ie = f.useRef(null), se = z(R), $ = z(i), D = z(L), be = z(Ne), le = X(() => {
72
- function e(l) {
73
- d ? v?.events.emit("virtualfocus", l) : ie.current = Ue(l, {
74
- sync: h.current,
75
- preventScroll: !0
76
- });
77
- }
78
- const r = o.current[n.current], t = H.current;
79
- r && e(r), (h.current ? (l) => l() : requestAnimationFrame)(() => {
80
- const l = o.current[n.current] || r;
81
- if (!l)
82
- return;
83
- r || e(l), // eslint-disable-next-line @typescript-eslint/no-use-before-define
84
- fe && (t || !S.current) && l.scrollIntoView?.({
85
- block: "nearest",
86
- inline: "nearest"
87
- });
88
- });
89
- });
90
- A(() => {
91
- y && (i && g ? (n.current = L ?? -1, P.current && L != null && (H.current = !0, a())) : k.current && (n.current = -1, ye.current()));
92
- }, [y, i, g, L, a]), A(() => {
93
- if (y) {
94
- if (!i) {
95
- h.current = !1;
96
- return;
97
- }
98
- if (g)
99
- if (O == null) {
100
- if (h.current = !1, D.current != null)
101
- return;
102
- if (k.current && (n.current = -1, le()), (!we.current || !k.current) && P.current && (C.current != null || P.current === !0 && C.current == null)) {
103
- let e = 0;
104
- const r = () => {
105
- o.current[0] == null ? (e < 2 && (e ? requestAnimationFrame : queueMicrotask)(r), e += 1) : (n.current = C.current == null || Ie(C.current, m, x) || b ? me(o) : Se(o), C.current = null, a());
106
- };
107
- r();
108
- }
109
- } else Fe(o.current, O) || (n.current = O, le(), H.current = !1);
110
- }
111
- }, [y, i, g, O, D, b, o, m, x, a, le, se]), A(() => {
112
- if (!y || g || !v || d || !k.current)
113
- return;
114
- const e = v.nodesRef.current, r = e.find((l) => l.id === q)?.context?.elements.floating, t = ge(Te(g)), s = e.some((l) => l.context && Re(l.context.elements.floating, t));
115
- r && !s && S.current && r.focus({
116
- preventScroll: !0
36
+ const c = new o();
37
+ class a {
38
+ static create() {
39
+ return new a();
40
+ }
41
+ static request(t) {
42
+ return c.request(t);
43
+ }
44
+ static cancel(t) {
45
+ return c.cancel(t);
46
+ }
47
+ currentId = s;
48
+ /**
49
+ * Executes `fn` after `delay`, clearing any previously scheduled call.
50
+ */
51
+ request(t) {
52
+ this.cancel(), this.currentId = c.request(() => {
53
+ this.currentId = s, t();
117
54
  });
118
- }, [y, g, v, q, d]), A(() => {
119
- ye.current = a, we.current = i, k.current = !!g;
120
- }), A(() => {
121
- i || (C.current = null, P.current = M);
122
- }, [i, M]);
123
- const Me = O != null, ae = X((e) => {
124
- if (!$.current)
125
- return;
126
- const r = o.current.indexOf(e.currentTarget);
127
- r !== -1 && (n.current !== r || O !== r) && (n.current = r, a(e));
128
- }), fe = f.useMemo(() => ({
129
- onFocus(r) {
130
- h.current = !0, ae(r);
131
- },
132
- onClick: ({
133
- currentTarget: r
134
- }) => r.focus({
135
- preventScroll: !0
136
- }),
137
- // Safari
138
- onMouseMove(r) {
139
- h.current = !0, H.current = !1, oe && ae(r);
140
- },
141
- onPointerLeave(r) {
142
- if (!$.current || !S.current || r.pointerType === "touch")
143
- return;
144
- h.current = !0;
145
- const t = r.relatedTarget;
146
- if (!(!oe || o.current.includes(t)) && be.current && (ie.current?.(), ie.current = null, n.current = -1, a(r), !d)) {
147
- const s = N.current, l = ge(Te(s));
148
- s && Re(s, l) && s.focus({
149
- preventScroll: !0
150
- });
151
- }
152
- }
153
- }), [ae, $, N, oe, o, a, be, d]), B = f.useCallback(() => xe ?? v?.nodesRef.current.find((e) => e.id === q)?.context?.dataRef?.current.orientation, [q, v, xe]), K = X((e) => {
154
- if (S.current = !1, h.current = !0, e.which === 229 || !$.current && e.currentTarget === N.current)
155
- return;
156
- if (b && Ze(e.key, m, x, F)) {
157
- ee(e.key, B()) || T(e), u.setOpen(!1, Z(he, e.nativeEvent)), Ce(E) && (d ? v?.events.emit("virtualfocus", E) : E.focus());
158
- return;
159
- }
160
- const r = n.current, t = me(o, R), s = Se(o, R);
161
- if (ue || (e.key === "Home" && (T(e), n.current = t, a(e)), e.key === "End" && (T(e), n.current = s, a(e))), F > 1) {
162
- const l = Array.from({
163
- length: o.current.length
164
- }, () => ({
165
- width: 1,
166
- height: 1
167
- })), I = _e(l, F), j = I.findIndex((w) => w != null && !pe(o.current, w, R)), de = I.reduce((w, V, Ke) => V != null && !pe(o.current, V, R) ? Ke : w, -1), J = I[qe(I.map((w) => w != null ? o.current[w] : null), {
168
- event: e,
169
- orientation: m,
170
- loopFocus: _,
171
- rtl: x,
172
- cols: F,
173
- // treat undefined (empty grid spaces) as disabled indices so we
174
- // don't end up in them
175
- disabledIndices: $e([...(typeof R != "function" ? R : null) || o.current.map((w, V) => pe(o.current, V, R) ? V : void 0), void 0], I),
176
- minIndex: j,
177
- maxIndex: de,
178
- prevIndex: He(
179
- n.current > s ? t : n.current,
180
- l,
181
- I,
182
- F,
183
- // use a corner matching the edge closest to the direction
184
- // we're moving in so we don't end up in the same item. Prefer
185
- // top/left over bottom/right.
186
- // eslint-disable-next-line no-nested-ternary
187
- e.key === re ? "bl" : e.key === (x ? G : W) ? "tr" : "tl"
188
- ),
189
- stopEvent: !0
190
- })];
191
- if (J != null && (n.current = J, a(e)), m === "both")
192
- return;
193
- }
194
- if (ee(e.key, m)) {
195
- if (T(e), i && !d && ge(e.currentTarget.ownerDocument) === e.currentTarget) {
196
- n.current = Ie(e.key, m, x) ? t : s, a(e);
197
- return;
198
- }
199
- Ie(e.key, m, x) ? _ ? r >= s ? ne && r !== o.current.length ? n.current = -1 : (h.current = !1, n.current = t) : n.current = Y(o.current, {
200
- startingIndex: r,
201
- disabledIndices: R
202
- }) : n.current = Math.min(s, Y(o.current, {
203
- startingIndex: r,
204
- disabledIndices: R
205
- })) : _ ? r <= t ? ne && r !== -1 ? n.current = o.current.length : (h.current = !1, n.current = s) : n.current = Y(o.current, {
206
- startingIndex: r,
207
- decrement: !0,
208
- disabledIndices: R
209
- }) : n.current = Math.max(t, Y(o.current, {
210
- startingIndex: r,
211
- decrement: !0,
212
- disabledIndices: R
213
- })), Fe(o.current, n.current) && (n.current = -1), a(e);
214
- }
215
- }), Q = f.useMemo(() => d && i && Me && {
216
- "aria-activedescendant": `${Oe}-${O}`
217
- }, [d, i, Me, Oe, O]), ve = f.useMemo(() => ({
218
- "aria-orientation": m === "both" ? void 0 : m,
219
- ...ue ? {} : Q,
220
- onKeyDown(e) {
221
- if (e.key === "Tab" && e.shiftKey && i && !d) {
222
- const r = je(e.nativeEvent);
223
- if (r && !Re(N.current, r))
224
- return;
225
- T(e), u.setOpen(!1, Z(Je, e.nativeEvent)), Ce(E) && E.focus();
226
- return;
227
- }
228
- K(e);
229
- },
230
- onPointerMove() {
231
- S.current = !0;
232
- }
233
- }), [Q, K, N, m, ue, u, i, d, E]), U = f.useMemo(() => {
234
- function e(t) {
235
- M === "auto" && Ge(t.nativeEvent) && (P.current = !d);
236
- }
237
- function r(t) {
238
- P.current = M, M === "auto" && We(t.nativeEvent) && (P.current = !0);
239
- }
240
- return {
241
- onKeyDown(t) {
242
- const s = u.select("open");
243
- S.current = !1;
244
- const l = t.key.startsWith("Arrow"), I = Ye(t.key, B(), x), j = ee(t.key, m), de = (b ? I : j) || t.key === "Enter" || t.key.trim() === "";
245
- if (d && s)
246
- return K(t);
247
- if (!(!s && !ce && l)) {
248
- if (de) {
249
- const J = ee(t.key, B());
250
- C.current = b && J ? null : t.key;
251
- }
252
- if (b) {
253
- I && (T(t), s ? (n.current = me(o, se.current), a(t)) : u.setOpen(!0, Z(he, t.nativeEvent, t.currentTarget)));
254
- return;
255
- }
256
- j && (D.current != null && (n.current = D.current), T(t), !s && ce ? u.setOpen(!0, Z(he, t.nativeEvent, t.currentTarget)) : K(t), s && a(t));
257
- }
258
- },
259
- onFocus(t) {
260
- u.select("open") && !d && (n.current = -1, a(t));
261
- },
262
- onPointerDown: r,
263
- onPointerEnter: r,
264
- onMouseDown: e,
265
- onClick: e
266
- };
267
- }, [K, se, M, o, b, a, u, ce, m, B, x, D, d]), Pe = f.useMemo(() => ({
268
- ...Q,
269
- ...U
270
- }), [Q, U]);
271
- return f.useMemo(() => y ? {
272
- reference: Pe,
273
- floating: ve,
274
- item: fe,
275
- trigger: U
276
- } : {}, [y, Pe, ve, U, fe]);
55
+ }
56
+ cancel = () => {
57
+ this.currentId !== s && (c.cancel(this.currentId), this.currentId = s);
58
+ };
59
+ disposeEffect = () => this.cancel;
60
+ }
61
+ function k() {
62
+ const n = u(a.create).current;
63
+ return h(n.disposeEffect), n;
277
64
  }
278
65
  export {
279
- Xe as ESCAPE,
280
- pr as useListNavigation
66
+ a as AnimationFrame,
67
+ k as useAnimationFrame
281
68
  };
282
69
  //# sourceMappingURL=index302.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index302.js","sources":["../../../node_modules/@base-ui/react/esm/floating-ui-react/hooks/useListNavigation.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { isHTMLElement } from '@floating-ui/utils/dom';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { activeElement, contains, getTarget, isTypeableCombobox, getFloatingFocusElement } from \"../utils/element.js\";\nimport { isVirtualClick, isVirtualPointerEvent, stopEvent } from \"../utils/event.js\";\nimport { isIndexOutOfListBounds, getMinListIndex, getMaxListIndex, getGridNavigatedIndex, isListIndexDisabled, createGridCellMap, getGridCellIndices, getGridCellIndexOfCorner, findNonDisabledListIndex } from \"../utils/composite.js\";\nimport { useFloatingParentNodeId, useFloatingTree } from \"../components/FloatingTree.js\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../internals/reasons.js\";\nimport { enqueueFocus } from \"../utils/enqueueFocus.js\";\nimport { ARROW_UP, ARROW_DOWN, ARROW_RIGHT, ARROW_LEFT } from \"../utils/constants.js\";\nexport const ESCAPE = 'Escape';\nfunction doSwitch(orientation, vertical, horizontal) {\n switch (orientation) {\n case 'vertical':\n return vertical;\n case 'horizontal':\n return horizontal;\n default:\n return vertical || horizontal;\n }\n}\nfunction isMainOrientationKey(key, orientation) {\n const vertical = key === ARROW_UP || key === ARROW_DOWN;\n const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n const vertical = key === ARROW_DOWN;\n const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key === ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n const horizontal = key === ARROW_DOWN;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl, cols) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\n if (orientation === 'both' || orientation === 'horizontal' && cols && cols > 1) {\n return key === ESCAPE;\n }\n return doSwitch(orientation, vertical, horizontal);\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nexport function useListNavigation(context, props) {\n const store = 'rootStore' in context ? context.rootStore : context;\n const open = store.useState('open');\n const floatingElement = store.useState('floatingElement');\n const domReferenceElement = store.useState('domReferenceElement');\n const dataRef = store.context.dataRef;\n const {\n listRef,\n activeIndex,\n onNavigate: onNavigateProp = () => {},\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loopFocus = false,\n nested = false,\n rtl = false,\n virtual = false,\n focusItemOnOpen = 'auto',\n focusItemOnHover = true,\n openOnArrowKeyDown = true,\n disabledIndices = undefined,\n orientation = 'vertical',\n parentOrientation,\n cols = 1,\n id,\n resetOnPointerLeave = true,\n externalTree\n } = props;\n if (process.env.NODE_ENV !== 'production') {\n if (allowEscape) {\n if (!loopFocus) {\n console.warn('`useListNavigation` looping must be enabled to allow escaping.');\n }\n if (!virtual) {\n console.warn('`useListNavigation` must be virtual to allow escaping.');\n }\n }\n if (orientation === 'vertical' && cols > 1) {\n console.warn('In grid list navigation mode (`cols` > 1), the `orientation` should', 'be either \"horizontal\" or \"both\".');\n }\n }\n const floatingFocusElement = getFloatingFocusElement(floatingElement);\n const floatingFocusElementRef = useValueAsRef(floatingFocusElement);\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree(externalTree);\n useIsoLayoutEffect(() => {\n dataRef.current.orientation = orientation;\n }, [dataRef, orientation]);\n const typeableComboboxReference = isTypeableCombobox(domReferenceElement);\n const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n const indexRef = React.useRef(selectedIndex ?? -1);\n const keyRef = React.useRef(null);\n const isPointerModalityRef = React.useRef(true);\n const onNavigate = useStableCallback(event => {\n onNavigateProp(indexRef.current === -1 ? null : indexRef.current, event);\n });\n const previousOnNavigateRef = React.useRef(onNavigate);\n const previousMountedRef = React.useRef(!!floatingElement);\n const previousOpenRef = React.useRef(open);\n const forceSyncFocusRef = React.useRef(false);\n const forceScrollIntoViewRef = React.useRef(false);\n const cancelQueuedFocusRef = React.useRef(null);\n const disabledIndicesRef = useValueAsRef(disabledIndices);\n const latestOpenRef = useValueAsRef(open);\n const selectedIndexRef = useValueAsRef(selectedIndex);\n const resetOnPointerLeaveRef = useValueAsRef(resetOnPointerLeave);\n const focusItem = useStableCallback(() => {\n function runFocus(item) {\n if (virtual) {\n tree?.events.emit('virtualfocus', item);\n } else {\n cancelQueuedFocusRef.current = enqueueFocus(item, {\n sync: forceSyncFocusRef.current,\n preventScroll: true\n });\n }\n }\n const initialItem = listRef.current[indexRef.current];\n const forceScrollIntoView = forceScrollIntoViewRef.current;\n if (initialItem) {\n runFocus(initialItem);\n }\n const scheduler = forceSyncFocusRef.current ? v => v() : requestAnimationFrame;\n scheduler(() => {\n const waitedItem = listRef.current[indexRef.current] || initialItem;\n if (!waitedItem) {\n return;\n }\n if (!initialItem) {\n runFocus(waitedItem);\n }\n const shouldScrollIntoView =\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n item && (forceScrollIntoView || !isPointerModalityRef.current);\n if (shouldScrollIntoView) {\n // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n // by all browsers.\n waitedItem.scrollIntoView?.({\n block: 'nearest',\n inline: 'nearest'\n });\n }\n });\n });\n\n // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n // element. Also, reset `activeIndex` upon closing the floating element.\n useIsoLayoutEffect(() => {\n if (!enabled) {\n return;\n }\n if (open && floatingElement) {\n indexRef.current = selectedIndex ?? -1;\n if (focusItemOnOpenRef.current && selectedIndex != null) {\n // Regardless of the pointer modality, we want to ensure the selected\n // item comes into view when the floating element is opened.\n forceScrollIntoViewRef.current = true;\n onNavigate();\n }\n } else if (previousMountedRef.current) {\n // Since the user can specify `onNavigate` conditionally\n // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n // we store and call the previous function.\n indexRef.current = -1;\n previousOnNavigateRef.current();\n }\n }, [enabled, open, floatingElement, selectedIndex, onNavigate]);\n\n // Sync `activeIndex` to be the focused item while the floating element is\n // open.\n useIsoLayoutEffect(() => {\n if (!enabled) {\n return;\n }\n if (!open) {\n forceSyncFocusRef.current = false;\n return;\n }\n if (!floatingElement) {\n return;\n }\n if (activeIndex == null) {\n forceSyncFocusRef.current = false;\n if (selectedIndexRef.current != null) {\n return;\n }\n\n // Reset while the floating element was open (e.g. the list changed).\n if (previousMountedRef.current) {\n indexRef.current = -1;\n focusItem();\n }\n\n // Initial sync.\n if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n let runs = 0;\n const waitForListPopulated = () => {\n if (listRef.current[0] == null) {\n // Avoid letting the browser paint if possible on the first try,\n // otherwise use rAF. Don't try more than twice, since something\n // is wrong otherwise.\n if (runs < 2) {\n const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n scheduler(waitForListPopulated);\n }\n runs += 1;\n } else {\n // initially focus the first non-disabled item\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinListIndex(listRef) : getMaxListIndex(listRef);\n keyRef.current = null;\n onNavigate();\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfListBounds(listRef.current, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem();\n forceScrollIntoViewRef.current = false;\n }\n }, [enabled, open, floatingElement, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n // Ensure the parent floating element has focus when a nested child closes\n // to allow arrow key navigation to work after the pointer leaves the child.\n useIsoLayoutEffect(() => {\n if (!enabled || floatingElement || !tree || virtual || !previousMountedRef.current) {\n return;\n }\n const nodes = tree.nodesRef.current;\n const parent = nodes.find(node => node.id === parentId)?.context?.elements.floating;\n const activeEl = activeElement(ownerDocument(floatingElement));\n const treeContainsActiveEl = nodes.some(node => node.context && contains(node.context.elements.floating, activeEl));\n if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n parent.focus({\n preventScroll: true\n });\n }\n }, [enabled, floatingElement, tree, parentId, virtual]);\n useIsoLayoutEffect(() => {\n previousOnNavigateRef.current = onNavigate;\n previousOpenRef.current = open;\n previousMountedRef.current = !!floatingElement;\n });\n useIsoLayoutEffect(() => {\n if (!open) {\n keyRef.current = null;\n focusItemOnOpenRef.current = focusItemOnOpen;\n }\n }, [open, focusItemOnOpen]);\n const hasActiveIndex = activeIndex != null;\n const syncCurrentTarget = useStableCallback(event => {\n if (!latestOpenRef.current) {\n return;\n }\n const index = listRef.current.indexOf(event.currentTarget);\n if (index !== -1 && (indexRef.current !== index || activeIndex !== index)) {\n indexRef.current = index;\n onNavigate(event);\n }\n });\n const item = React.useMemo(() => {\n const itemProps = {\n onFocus(event) {\n forceSyncFocusRef.current = true;\n syncCurrentTarget(event);\n },\n onClick: ({\n currentTarget\n }) => currentTarget.focus({\n preventScroll: true\n }),\n // Safari\n onMouseMove(event) {\n forceSyncFocusRef.current = true;\n forceScrollIntoViewRef.current = false;\n if (focusItemOnHover) {\n syncCurrentTarget(event);\n }\n },\n onPointerLeave(event) {\n if (!latestOpenRef.current || !isPointerModalityRef.current || event.pointerType === 'touch') {\n return;\n }\n forceSyncFocusRef.current = true;\n const relatedTarget = event.relatedTarget;\n if (!focusItemOnHover || listRef.current.includes(relatedTarget)) {\n return;\n }\n if (!resetOnPointerLeaveRef.current) {\n return;\n }\n cancelQueuedFocusRef.current?.();\n cancelQueuedFocusRef.current = null;\n indexRef.current = -1;\n onNavigate(event);\n if (!virtual) {\n const floatingFocusEl = floatingFocusElementRef.current;\n const activeEl = activeElement(ownerDocument(floatingFocusEl));\n if (floatingFocusEl && contains(floatingFocusEl, activeEl)) {\n floatingFocusEl.focus({\n preventScroll: true\n });\n }\n }\n }\n };\n return itemProps;\n }, [syncCurrentTarget, latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, resetOnPointerLeaveRef, virtual]);\n const getParentOrientation = React.useCallback(() => {\n return parentOrientation ?? tree?.nodesRef.current.find(node => node.id === parentId)?.context?.dataRef?.current.orientation;\n }, [parentId, tree, parentOrientation]);\n const commonOnKeyDown = useStableCallback(event => {\n isPointerModalityRef.current = false;\n forceSyncFocusRef.current = true;\n\n // When composing a character, Chrome fires ArrowDown twice. Firefox/Safari\n // don't appear to suffer from this. `event.isComposing` is avoided due to\n // Safari not supporting it properly (although it's not needed in the first\n // place for Safari, just avoiding any possible issues).\n if (event.which === 229) {\n return;\n }\n\n // If the floating element is animating out, ignore navigation. Otherwise,\n // the `activeIndex` gets set to 0 despite not being open so the next time\n // the user ArrowDowns, the first item won't be focused.\n if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {\n return;\n }\n if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, cols)) {\n // If the nested list's close key is also the parent navigation key,\n // let the parent navigate. Otherwise, stop propagating the event.\n if (!isMainOrientationKey(event.key, getParentOrientation())) {\n stopEvent(event);\n }\n store.setOpen(false, createChangeEventDetails(REASONS.listNavigation, event.nativeEvent));\n if (isHTMLElement(domReferenceElement)) {\n if (virtual) {\n tree?.events.emit('virtualfocus', domReferenceElement);\n } else {\n domReferenceElement.focus();\n }\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinListIndex(listRef, disabledIndices);\n const maxIndex = getMaxListIndex(listRef, disabledIndices);\n if (!typeableComboboxReference) {\n if (event.key === 'Home') {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate(event);\n }\n if (event.key === 'End') {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate(event);\n }\n }\n\n // Grid navigation.\n if (cols > 1) {\n const sizes = Array.from({\n length: listRef.current.length\n }, () => ({\n width: 1,\n height: 1\n }));\n // To calculate movements on the grid, we use hypothetical cell indices\n // as if every item was 1x1, then convert back to real indices.\n const cellMap = createGridCellMap(sizes, cols, false);\n const minGridIndex = cellMap.findIndex(index => index != null && !isListIndexDisabled(listRef.current, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isListIndexDisabled(listRef.current, index, disabledIndices) ? cellIndex : foundIndex, -1);\n const index = cellMap[getGridNavigatedIndex(cellMap.map(itemIndex => itemIndex != null ? listRef.current[itemIndex] : null), {\n event,\n orientation,\n loopFocus,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getGridCellIndices([...((typeof disabledIndices !== 'function' ? disabledIndices : null) || listRef.current.map((_, listIndex) => isListIndexDisabled(listRef.current, listIndex, disabledIndices) ? listIndex : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getGridCellIndexOfCorner(indexRef.current > maxIndex ? minIndex : indexRef.current, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction\n // we're moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n // eslint-disable-next-line no-nested-ternary\n event.key === ARROW_DOWN ? 'bl' : event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT) ? 'tr' : 'tl'),\n stopEvent: true\n })];\n if (index != null) {\n indexRef.current = index;\n onNavigate(event);\n }\n if (orientation === 'both') {\n return;\n }\n }\n if (isMainOrientationKey(event.key, orientation)) {\n stopEvent(event);\n\n // Reset the index if no item is focused.\n if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n onNavigate(event);\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loopFocus) {\n if (currentIndex >= maxIndex) {\n if (allowEscape && currentIndex !== listRef.current.length) {\n indexRef.current = -1;\n } else {\n // Give time for virtualizers to update the listRef.\n forceSyncFocusRef.current = false;\n indexRef.current = minIndex;\n }\n } else {\n indexRef.current = findNonDisabledListIndex(listRef.current, {\n startingIndex: currentIndex,\n disabledIndices\n });\n }\n } else {\n indexRef.current = Math.min(maxIndex, findNonDisabledListIndex(listRef.current, {\n startingIndex: currentIndex,\n disabledIndices\n }));\n }\n } else if (loopFocus) {\n if (currentIndex <= minIndex) {\n if (allowEscape && currentIndex !== -1) {\n indexRef.current = listRef.current.length;\n } else {\n // Give time for virtualizers to update the listRef.\n forceSyncFocusRef.current = false;\n indexRef.current = maxIndex;\n }\n } else {\n indexRef.current = findNonDisabledListIndex(listRef.current, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n }\n } else {\n indexRef.current = Math.max(minIndex, findNonDisabledListIndex(listRef.current, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n }));\n }\n if (isIndexOutOfListBounds(listRef.current, indexRef.current)) {\n indexRef.current = -1;\n }\n onNavigate(event);\n }\n });\n const ariaActiveDescendantProp = React.useMemo(() => {\n return virtual && open && hasActiveIndex && {\n 'aria-activedescendant': `${id}-${activeIndex}`\n };\n }, [virtual, open, hasActiveIndex, id, activeIndex]);\n const floating = React.useMemo(() => {\n return {\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n ...(!typeableComboboxReference ? ariaActiveDescendantProp : {}),\n onKeyDown(event) {\n // Close submenu on Shift+Tab\n if (event.key === 'Tab' && event.shiftKey && open && !virtual) {\n // If the event originated from within a nested element (e.g., a Dialog opened from\n // within the menu), don't close the menu. The nested element has its own focus\n // management and should handle the Tab key.\n const target = getTarget(event.nativeEvent);\n if (target && !contains(floatingFocusElementRef.current, target)) {\n return;\n }\n stopEvent(event);\n store.setOpen(false, createChangeEventDetails(REASONS.focusOut, event.nativeEvent));\n if (isHTMLElement(domReferenceElement)) {\n domReferenceElement.focus();\n }\n return;\n }\n commonOnKeyDown(event);\n },\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n };\n }, [ariaActiveDescendantProp, commonOnKeyDown, floatingFocusElementRef, orientation, typeableComboboxReference, store, open, virtual, domReferenceElement]);\n const trigger = React.useMemo(() => {\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = !virtual;\n }\n }\n function checkVirtualPointer(event) {\n // `pointerdown` fires first, reset the state then perform the checks.\n focusItemOnOpenRef.current = focusItemOnOpen;\n if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n return {\n onKeyDown(event) {\n // non-reactive open state (to prevent re-creation of the handler)\n const currentOpen = store.select('open');\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.startsWith('Arrow');\n const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl);\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n if (virtual && currentOpen) {\n return commonOnKeyDown(event);\n }\n\n // If a floating element should not open on arrow key down, avoid\n // setting `activeIndex` while it's closed.\n if (!currentOpen && !openOnArrowKeyDown && isArrowKey) {\n return undefined;\n }\n if (isNavigationKey) {\n const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation());\n keyRef.current = nested && isParentMainKey ? null : event.key;\n }\n if (nested) {\n if (isParentCrossOpenKey) {\n stopEvent(event);\n if (currentOpen) {\n indexRef.current = getMinListIndex(listRef, disabledIndicesRef.current);\n onNavigate(event);\n } else {\n store.setOpen(true, createChangeEventDetails(REASONS.listNavigation, event.nativeEvent, event.currentTarget));\n }\n }\n return undefined;\n }\n if (isMainKey) {\n if (selectedIndexRef.current != null) {\n indexRef.current = selectedIndexRef.current;\n }\n stopEvent(event);\n if (!currentOpen && openOnArrowKeyDown) {\n store.setOpen(true, createChangeEventDetails(REASONS.listNavigation, event.nativeEvent, event.currentTarget));\n } else {\n commonOnKeyDown(event);\n }\n if (currentOpen) {\n onNavigate(event);\n }\n }\n return undefined;\n },\n onFocus(event) {\n if (store.select('open') && !virtual) {\n indexRef.current = -1;\n onNavigate(event);\n }\n },\n onPointerDown: checkVirtualPointer,\n onPointerEnter: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n };\n }, [commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, store, openOnArrowKeyDown, orientation, getParentOrientation, rtl, selectedIndexRef, virtual]);\n const reference = React.useMemo(() => {\n return {\n ...ariaActiveDescendantProp,\n ...trigger\n };\n }, [ariaActiveDescendantProp, trigger]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item,\n trigger\n } : {}, [enabled, reference, floating, trigger, item]);\n}"],"names":["ESCAPE","doSwitch","orientation","vertical","horizontal","isMainOrientationKey","key","ARROW_UP","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","isMainOrientationToEndKey","rtl","isCrossOrientationOpenKey","isCrossOrientationCloseKey","cols","useListNavigation","context","props","store","open","floatingElement","domReferenceElement","dataRef","listRef","activeIndex","onNavigateProp","enabled","selectedIndex","allowEscape","loopFocus","nested","virtual","focusItemOnOpen","focusItemOnHover","openOnArrowKeyDown","disabledIndices","parentOrientation","id","resetOnPointerLeave","externalTree","floatingFocusElement","getFloatingFocusElement","floatingFocusElementRef","useValueAsRef","parentId","useFloatingParentNodeId","tree","useFloatingTree","useIsoLayoutEffect","typeableComboboxReference","isTypeableCombobox","focusItemOnOpenRef","React","indexRef","keyRef","isPointerModalityRef","onNavigate","useStableCallback","event","previousOnNavigateRef","previousMountedRef","previousOpenRef","forceSyncFocusRef","forceScrollIntoViewRef","cancelQueuedFocusRef","disabledIndicesRef","latestOpenRef","selectedIndexRef","resetOnPointerLeaveRef","focusItem","runFocus","item","enqueueFocus","initialItem","forceScrollIntoView","v","waitedItem","runs","waitForListPopulated","getMinListIndex","getMaxListIndex","isIndexOutOfListBounds","nodes","parent","node","activeEl","activeElement","ownerDocument","treeContainsActiveEl","contains","hasActiveIndex","syncCurrentTarget","index","currentTarget","relatedTarget","floatingFocusEl","getParentOrientation","commonOnKeyDown","stopEvent","createChangeEventDetails","REASONS.listNavigation","isHTMLElement","currentIndex","minIndex","maxIndex","sizes","cellMap","createGridCellMap","minGridIndex","isListIndexDisabled","maxGridIndex","foundIndex","cellIndex","getGridNavigatedIndex","itemIndex","getGridCellIndices","_","listIndex","getGridCellIndexOfCorner","findNonDisabledListIndex","ariaActiveDescendantProp","floating","target","getTarget","REASONS.focusOut","trigger","checkVirtualMouse","isVirtualClick","checkVirtualPointer","isVirtualPointerEvent","currentOpen","isArrowKey","isParentCrossOpenKey","isMainKey","isNavigationKey","isParentMainKey","reference"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index302.js","sources":["../../../node_modules/@base-ui/utils/esm/useAnimationFrame.js"],"sourcesContent":["'use client';\n\nimport { useRefWithInit } from \"./useRefWithInit.js\";\nimport { useOnMount } from \"./useOnMount.js\";\n/** Unlike `setTimeout`, rAF doesn't guarantee a positive integer return value, so we can't have\n * a monomorphic `uint` type with `0` meaning empty.\n * See warning note at:\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame#return_value */\nconst EMPTY = null;\nlet LAST_RAF = globalThis.requestAnimationFrame;\nclass Scheduler {\n /* This implementation uses an array as a backing data-structure for frame callbacks.\n * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it\n * never calls the native `cancelAnimationFrame` if there are no frames left. This can\n * be much more efficient if there is a call pattern that alterns as\n * \"request-cancel-request-cancel-…\".\n * But in the case of \"request-request-…-cancel-cancel-…\", it leaves the final animation\n * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */\n\n callbacks = [];\n callbacksCount = 0;\n nextId = 1;\n startId = 1;\n isScheduled = false;\n tick = timestamp => {\n this.isScheduled = false;\n const currentCallbacks = this.callbacks;\n const currentCallbacksCount = this.callbacksCount;\n\n // Update these before iterating, callbacks could call `requestAnimationFrame` again.\n this.callbacks = [];\n this.callbacksCount = 0;\n this.startId = this.nextId;\n if (currentCallbacksCount > 0) {\n for (let i = 0; i < currentCallbacks.length; i += 1) {\n currentCallbacks[i]?.(timestamp);\n }\n }\n };\n request(fn) {\n const id = this.nextId;\n this.nextId += 1;\n this.callbacks.push(fn);\n this.callbacksCount += 1;\n\n /* In a test environment with fake timers, a fake `requestAnimationFrame` can be called\n * but there's no guarantee that the animation frame will actually run before the fake\n * timers are teared, which leaves `isScheduled` set, but won't run our `tick()`. */\n const didRAFChange = process.env.NODE_ENV !== 'production' && LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true);\n if (!this.isScheduled || didRAFChange) {\n requestAnimationFrame(this.tick);\n this.isScheduled = true;\n }\n return id;\n }\n cancel(id) {\n const index = id - this.startId;\n if (index < 0 || index >= this.callbacks.length) {\n return;\n }\n this.callbacks[index] = null;\n this.callbacksCount -= 1;\n }\n}\nconst scheduler = new Scheduler();\nexport class AnimationFrame {\n static create() {\n return new AnimationFrame();\n }\n static request(fn) {\n return scheduler.request(fn);\n }\n static cancel(id) {\n return scheduler.cancel(id);\n }\n currentId = EMPTY;\n\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n request(fn) {\n this.cancel();\n this.currentId = scheduler.request(() => {\n this.currentId = EMPTY;\n fn();\n });\n }\n cancel = () => {\n if (this.currentId !== EMPTY) {\n scheduler.cancel(this.currentId);\n this.currentId = EMPTY;\n }\n };\n disposeEffect = () => {\n return this.cancel;\n };\n}\n\n/**\n * A `requestAnimationFrame` with automatic cleanup and guard.\n */\nexport function useAnimationFrame() {\n const timeout = useRefWithInit(AnimationFrame.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}"],"names":["EMPTY","LAST_RAF","Scheduler","timestamp","currentCallbacks","currentCallbacksCount","fn","id","didRAFChange","index","scheduler","AnimationFrame","useAnimationFrame","timeout","useRefWithInit","useOnMount"],"mappings":";;AAQA,MAAMA,IAAQ;AACd,IAAIC,IAAW,WAAW;AAC1B,MAAMC,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASd,YAAY,CAAA;AAAA,EACZ,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,UAAU;AAAA,EACV,cAAc;AAAA,EACd,OAAO,CAAAC,MAAa;AAClB,SAAK,cAAc;AACnB,UAAMC,IAAmB,KAAK,WACxBC,IAAwB,KAAK;AAMnC,QAHA,KAAK,YAAY,CAAA,GACjB,KAAK,iBAAiB,GACtB,KAAK,UAAU,KAAK,QAChBA,IAAwB;AAC1B,eAAS,IAAI,GAAG,IAAID,EAAiB,QAAQ,KAAK;AAChD,QAAAA,EAAiB,CAAC,IAAID,CAAS;AAAA,EAGrC;AAAA,EACA,QAAQG,GAAI;AACV,UAAMC,IAAK,KAAK;AAChB,SAAK,UAAU,GACf,KAAK,UAAU,KAAKD,CAAE,GACtB,KAAK,kBAAkB;AAKvB,UAAME,IAAe,QAAQ,IAAI,aAAa,gBAAgBP,MAAa,0BAA0BA,IAAW,uBAAuB;AACvI,YAAI,CAAC,KAAK,eAAeO,OACvB,sBAAsB,KAAK,IAAI,GAC/B,KAAK,cAAc,KAEdD;AAAA,EACT;AAAA,EACA,OAAOA,GAAI;AACT,UAAME,IAAQF,IAAK,KAAK;AACxB,IAAIE,IAAQ,KAAKA,KAAS,KAAK,UAAU,WAGzC,KAAK,UAAUA,CAAK,IAAI,MACxB,KAAK,kBAAkB;AAAA,EACzB;AACF;AACA,MAAMC,IAAY,IAAIR,EAAS;AACxB,MAAMS,EAAe;AAAA,EAC1B,OAAO,SAAS;AACd,WAAO,IAAIA,EAAc;AAAA,EAC3B;AAAA,EACA,OAAO,QAAQL,GAAI;AACjB,WAAOI,EAAU,QAAQJ,CAAE;AAAA,EAC7B;AAAA,EACA,OAAO,OAAOC,GAAI;AAChB,WAAOG,EAAU,OAAOH,CAAE;AAAA,EAC5B;AAAA,EACA,YAAYP;AAAA;AAAA;AAAA;AAAA,EAKZ,QAAQM,GAAI;AACV,SAAK,OAAM,GACX,KAAK,YAAYI,EAAU,QAAQ,MAAM;AACvC,WAAK,YAAYV,GACjBM,EAAE;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EACA,SAAS,MAAM;AACb,IAAI,KAAK,cAAcN,MACrBU,EAAU,OAAO,KAAK,SAAS,GAC/B,KAAK,YAAYV;AAAA,EAErB;AAAA,EACA,gBAAgB,MACP,KAAK;AAEhB;AAKO,SAASY,IAAoB;AAClC,QAAMC,IAAUC,EAAeH,EAAe,MAAM,EAAE;AACtD,SAAAI,EAAWF,EAAQ,aAAa,GACzBA;AACT;","x_google_ignoreList":[0]}
package/dist/index303.js CHANGED
@@ -1,72 +1,17 @@
1
- import * as u from "react";
2
- import { useStableCallback as k } from "./index284.js";
3
- import { useIsoLayoutEffect as F } from "./index283.js";
4
- import { useTimeout as A } from "./index307.js";
5
- import { contains as K } from "./index313.js";
6
- import { stopEvent as D } from "./index375.js";
7
- import { isElementVisible as G } from "./index378.js";
8
- function $(w, O) {
9
- const a = "rootStore" in w ? w.rootStore : w, m = a.context.dataRef, i = a.useState("open"), {
10
- listRef: V,
11
- elementsRef: z,
12
- activeIndex: f,
13
- onMatch: B,
14
- onTypingChange: C,
15
- enabled: E = !0,
16
- resetMs: N = 750,
17
- selectedIndex: n = null
18
- } = O, g = A(), t = u.useRef(""), o = u.useRef(n ?? f ?? -1), l = u.useRef(null);
19
- F(() => {
20
- !i && n !== null || (g.clear(), l.current = null, t.current !== "" && (t.current = ""));
21
- }, [i, n, g]), F(() => {
22
- i && t.current === "" && (o.current = n ?? f ?? -1);
23
- }, [i, n, f]);
24
- const c = k((e) => {
25
- e ? m.current.typing || (m.current.typing = e, C?.(e)) : m.current.typing && (m.current.typing = e, C?.(e));
26
- }), p = k((e) => {
27
- function y(r) {
28
- const x = z?.current[r];
29
- return !x || G(x);
30
- }
31
- function h(r, x, W = 0) {
32
- if (r.length === 0)
33
- return -1;
34
- const j = (W % r.length + r.length) % r.length, q = x.toLocaleLowerCase();
35
- for (let I = 0; I < r.length; I += 1) {
36
- const S = (j + I) % r.length;
37
- if (!(!r[S]?.toLocaleLowerCase().startsWith(q) || !y(S)))
38
- return S;
39
- }
40
- return -1;
41
- }
42
- const s = V.current;
43
- if (t.current.length > 0 && e.key === " " && (D(e), c(!0)), t.current.length > 0 && t.current[0] !== " " && h(s, t.current) === -1 && e.key !== " " && c(!1), s == null || // Character key.
44
- e.key.length !== 1 || // Modifier key.
45
- e.ctrlKey || e.metaKey || e.altKey)
46
- return;
47
- i && e.key !== " " && (D(e), c(!0));
48
- const R = t.current === "";
49
- R && (o.current = n ?? f ?? -1), s.every((r) => r ? r[0]?.toLocaleLowerCase() !== r[1]?.toLocaleLowerCase() : !0) && t.current === e.key && (t.current = "", o.current = l.current), t.current += e.key, g.start(N, () => {
50
- t.current = "", o.current = l.current, c(!1);
1
+ import { j as s } from "./index30.js";
2
+ const e = "base-ui-disable-scrollbar", r = {
3
+ className: e,
4
+ getElement(l) {
5
+ return /* @__PURE__ */ s.jsx("style", {
6
+ nonce: l,
7
+ href: e,
8
+ precedence: "base-ui:low",
9
+ children: `.${e}{scrollbar-width:none}.${e}::-webkit-scrollbar{display:none}`
51
10
  });
52
- const P = ((R ? n ?? f ?? -1 : o.current) ?? 0) + 1, L = h(s, t.current, P);
53
- L !== -1 ? (B?.(L), l.current = L) : e.key !== " " && (t.current = "", c(!1));
54
- }), d = k((e) => {
55
- const y = e.relatedTarget, h = a.select("domReferenceElement"), s = a.select("floatingElement"), R = K(h, y), T = K(s, y);
56
- R || T || (g.clear(), t.current = "", o.current = l.current, c(!1));
57
- }), M = u.useMemo(() => ({
58
- onKeyDown: p,
59
- onBlur: d
60
- }), [p, d]), b = u.useMemo(() => ({
61
- onKeyDown: p,
62
- onBlur: d
63
- }), [p, d]);
64
- return u.useMemo(() => E ? {
65
- reference: M,
66
- floating: b
67
- } : {}, [E, M, b]);
68
- }
11
+ }
12
+ };
13
+ process.env.NODE_ENV !== "production" && (r.getElement.displayName = "styleDisableScrollbar.getElement");
69
14
  export {
70
- $ as useTypeahead
15
+ r as styleDisableScrollbar
71
16
  };
72
17
  //# sourceMappingURL=index303.js.map