react-aria-components 1.10.1 → 1.12.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 (320) hide show
  1. package/dist/Autocomplete.main.js +7 -20
  2. package/dist/Autocomplete.main.js.map +1 -1
  3. package/dist/Autocomplete.mjs +8 -20
  4. package/dist/Autocomplete.module.js +8 -20
  5. package/dist/Autocomplete.module.js.map +1 -1
  6. package/dist/Breadcrumbs.main.js +13 -3
  7. package/dist/Breadcrumbs.main.js.map +1 -1
  8. package/dist/Breadcrumbs.mjs +15 -5
  9. package/dist/Breadcrumbs.module.js +15 -5
  10. package/dist/Breadcrumbs.module.js.map +1 -1
  11. package/dist/Button.main.js +7 -17
  12. package/dist/Button.main.js.map +1 -1
  13. package/dist/Button.mjs +7 -17
  14. package/dist/Button.module.js +7 -17
  15. package/dist/Button.module.js.map +1 -1
  16. package/dist/Calendar.main.js +36 -14
  17. package/dist/Calendar.main.js.map +1 -1
  18. package/dist/Calendar.mjs +38 -16
  19. package/dist/Calendar.module.js +38 -16
  20. package/dist/Calendar.module.js.map +1 -1
  21. package/dist/Checkbox.main.js +8 -3
  22. package/dist/Checkbox.main.js.map +1 -1
  23. package/dist/Checkbox.mjs +10 -5
  24. package/dist/Checkbox.module.js +10 -5
  25. package/dist/Checkbox.module.js.map +1 -1
  26. package/dist/Collection.main.js.map +1 -1
  27. package/dist/Collection.module.js.map +1 -1
  28. package/dist/ColorArea.main.js +4 -4
  29. package/dist/ColorArea.main.js.map +1 -1
  30. package/dist/ColorArea.mjs +5 -5
  31. package/dist/ColorArea.module.js +5 -5
  32. package/dist/ColorArea.module.js.map +1 -1
  33. package/dist/ColorField.main.js +14 -1
  34. package/dist/ColorField.main.js.map +1 -1
  35. package/dist/ColorField.mjs +14 -1
  36. package/dist/ColorField.module.js +14 -1
  37. package/dist/ColorField.module.js.map +1 -1
  38. package/dist/ColorSlider.main.js +3 -1
  39. package/dist/ColorSlider.main.js.map +1 -1
  40. package/dist/ColorSlider.mjs +3 -1
  41. package/dist/ColorSlider.module.js +3 -1
  42. package/dist/ColorSlider.module.js.map +1 -1
  43. package/dist/ColorSwatch.main.js +6 -2
  44. package/dist/ColorSwatch.main.js.map +1 -1
  45. package/dist/ColorSwatch.mjs +6 -2
  46. package/dist/ColorSwatch.module.js +6 -2
  47. package/dist/ColorSwatch.module.js.map +1 -1
  48. package/dist/ColorSwatchPicker.main.js.map +1 -1
  49. package/dist/ColorSwatchPicker.module.js.map +1 -1
  50. package/dist/ColorThumb.main.js +3 -1
  51. package/dist/ColorThumb.main.js.map +1 -1
  52. package/dist/ColorThumb.mjs +3 -1
  53. package/dist/ColorThumb.module.js +3 -1
  54. package/dist/ColorThumb.module.js.map +1 -1
  55. package/dist/ColorWheel.main.js +3 -1
  56. package/dist/ColorWheel.main.js.map +1 -1
  57. package/dist/ColorWheel.mjs +3 -1
  58. package/dist/ColorWheel.module.js +3 -1
  59. package/dist/ColorWheel.module.js.map +1 -1
  60. package/dist/ComboBox.main.js +4 -1
  61. package/dist/ComboBox.main.js.map +1 -1
  62. package/dist/ComboBox.mjs +4 -1
  63. package/dist/ComboBox.module.js +4 -1
  64. package/dist/ComboBox.module.js.map +1 -1
  65. package/dist/DateField.main.js +16 -3
  66. package/dist/DateField.main.js.map +1 -1
  67. package/dist/DateField.mjs +16 -3
  68. package/dist/DateField.module.js +16 -3
  69. package/dist/DateField.module.js.map +1 -1
  70. package/dist/DatePicker.main.js +15 -8
  71. package/dist/DatePicker.main.js.map +1 -1
  72. package/dist/DatePicker.mjs +16 -9
  73. package/dist/DatePicker.module.js +16 -9
  74. package/dist/DatePicker.module.js.map +1 -1
  75. package/dist/Dialog.main.js +4 -3
  76. package/dist/Dialog.main.js.map +1 -1
  77. package/dist/Dialog.mjs +5 -4
  78. package/dist/Dialog.module.js +5 -4
  79. package/dist/Dialog.module.js.map +1 -1
  80. package/dist/Disclosure.main.js +12 -10
  81. package/dist/Disclosure.main.js.map +1 -1
  82. package/dist/Disclosure.mjs +13 -11
  83. package/dist/Disclosure.module.js +13 -11
  84. package/dist/Disclosure.module.js.map +1 -1
  85. package/dist/DragAndDrop.main.js +31 -3
  86. package/dist/DragAndDrop.main.js.map +1 -1
  87. package/dist/DragAndDrop.mjs +31 -3
  88. package/dist/DragAndDrop.module.js +31 -3
  89. package/dist/DragAndDrop.module.js.map +1 -1
  90. package/dist/DropZone.main.js +4 -3
  91. package/dist/DropZone.main.js.map +1 -1
  92. package/dist/DropZone.mjs +4 -3
  93. package/dist/DropZone.module.js +4 -3
  94. package/dist/DropZone.module.js.map +1 -1
  95. package/dist/FieldError.main.js +3 -1
  96. package/dist/FieldError.main.js.map +1 -1
  97. package/dist/FieldError.mjs +3 -1
  98. package/dist/FieldError.module.js +3 -1
  99. package/dist/FieldError.module.js.map +1 -1
  100. package/dist/FileTrigger.main.js +3 -1
  101. package/dist/FileTrigger.main.js.map +1 -1
  102. package/dist/FileTrigger.mjs +3 -1
  103. package/dist/FileTrigger.module.js +3 -1
  104. package/dist/FileTrigger.module.js.map +1 -1
  105. package/dist/Form.main.js.map +1 -1
  106. package/dist/Form.module.js.map +1 -1
  107. package/dist/GridList.main.js +114 -26
  108. package/dist/GridList.main.js.map +1 -1
  109. package/dist/GridList.mjs +116 -30
  110. package/dist/GridList.module.js +116 -30
  111. package/dist/GridList.module.js.map +1 -1
  112. package/dist/Header.main.js +1 -1
  113. package/dist/Header.main.js.map +1 -1
  114. package/dist/Header.mjs +2 -2
  115. package/dist/Header.module.js +2 -2
  116. package/dist/Header.module.js.map +1 -1
  117. package/dist/HiddenDateInput.main.js +118 -0
  118. package/dist/HiddenDateInput.main.js.map +1 -0
  119. package/dist/HiddenDateInput.mjs +109 -0
  120. package/dist/HiddenDateInput.module.js +109 -0
  121. package/dist/HiddenDateInput.module.js.map +1 -0
  122. package/dist/Link.main.js +7 -1
  123. package/dist/Link.main.js.map +1 -1
  124. package/dist/Link.mjs +7 -1
  125. package/dist/Link.module.js +7 -1
  126. package/dist/Link.module.js.map +1 -1
  127. package/dist/ListBox.main.js +27 -36
  128. package/dist/ListBox.main.js.map +1 -1
  129. package/dist/ListBox.mjs +29 -38
  130. package/dist/ListBox.module.js +29 -38
  131. package/dist/ListBox.module.js.map +1 -1
  132. package/dist/Menu.main.js +44 -23
  133. package/dist/Menu.main.js.map +1 -1
  134. package/dist/Menu.mjs +47 -26
  135. package/dist/Menu.module.js +47 -26
  136. package/dist/Menu.module.js.map +1 -1
  137. package/dist/Meter.main.js +6 -2
  138. package/dist/Meter.main.js.map +1 -1
  139. package/dist/Meter.mjs +6 -2
  140. package/dist/Meter.module.js +6 -2
  141. package/dist/Meter.module.js.map +1 -1
  142. package/dist/Modal.main.js +31 -6
  143. package/dist/Modal.main.js.map +1 -1
  144. package/dist/Modal.mjs +31 -6
  145. package/dist/Modal.module.js +31 -6
  146. package/dist/Modal.module.js.map +1 -1
  147. package/dist/NumberField.main.js +4 -1
  148. package/dist/NumberField.main.js.map +1 -1
  149. package/dist/NumberField.mjs +4 -1
  150. package/dist/NumberField.module.js +4 -1
  151. package/dist/NumberField.module.js.map +1 -1
  152. package/dist/Popover.main.js +10 -12
  153. package/dist/Popover.main.js.map +1 -1
  154. package/dist/Popover.mjs +11 -13
  155. package/dist/Popover.module.js +11 -13
  156. package/dist/Popover.module.js.map +1 -1
  157. package/dist/ProgressBar.main.js +6 -2
  158. package/dist/ProgressBar.main.js.map +1 -1
  159. package/dist/ProgressBar.mjs +6 -2
  160. package/dist/ProgressBar.module.js +6 -2
  161. package/dist/ProgressBar.module.js.map +1 -1
  162. package/dist/RadioGroup.main.js +8 -3
  163. package/dist/RadioGroup.main.js.map +1 -1
  164. package/dist/RadioGroup.mjs +9 -4
  165. package/dist/RadioGroup.module.js +9 -4
  166. package/dist/RadioGroup.module.js.map +1 -1
  167. package/dist/SearchField.main.js +9 -5
  168. package/dist/SearchField.main.js.map +1 -1
  169. package/dist/SearchField.mjs +10 -6
  170. package/dist/SearchField.module.js +10 -6
  171. package/dist/SearchField.module.js.map +1 -1
  172. package/dist/Select.main.js +12 -14
  173. package/dist/Select.main.js.map +1 -1
  174. package/dist/Select.mjs +13 -15
  175. package/dist/Select.module.js +13 -15
  176. package/dist/Select.module.js.map +1 -1
  177. package/dist/Separator.main.js +17 -3
  178. package/dist/Separator.main.js.map +1 -1
  179. package/dist/Separator.mjs +20 -6
  180. package/dist/Separator.module.js +20 -6
  181. package/dist/Separator.module.js.map +1 -1
  182. package/dist/Slider.main.js +7 -5
  183. package/dist/Slider.main.js.map +1 -1
  184. package/dist/Slider.mjs +8 -6
  185. package/dist/Slider.module.js +8 -6
  186. package/dist/Slider.module.js.map +1 -1
  187. package/dist/Switch.main.js +4 -1
  188. package/dist/Switch.main.js.map +1 -1
  189. package/dist/Switch.mjs +4 -1
  190. package/dist/Switch.module.js +4 -1
  191. package/dist/Switch.module.js.map +1 -1
  192. package/dist/Table.main.js +104 -42
  193. package/dist/Table.main.js.map +1 -1
  194. package/dist/Table.mjs +107 -45
  195. package/dist/Table.module.js +107 -45
  196. package/dist/Table.module.js.map +1 -1
  197. package/dist/Tabs.main.js +24 -11
  198. package/dist/Tabs.main.js.map +1 -1
  199. package/dist/Tabs.mjs +26 -13
  200. package/dist/Tabs.module.js +26 -13
  201. package/dist/Tabs.module.js.map +1 -1
  202. package/dist/TagGroup.main.js +27 -12
  203. package/dist/TagGroup.main.js.map +1 -1
  204. package/dist/TagGroup.mjs +29 -14
  205. package/dist/TagGroup.module.js +29 -14
  206. package/dist/TagGroup.module.js.map +1 -1
  207. package/dist/TextField.main.js +20 -6
  208. package/dist/TextField.main.js.map +1 -1
  209. package/dist/TextField.mjs +21 -7
  210. package/dist/TextField.module.js +21 -7
  211. package/dist/TextField.module.js.map +1 -1
  212. package/dist/Toast.main.js +9 -5
  213. package/dist/Toast.main.js.map +1 -1
  214. package/dist/Toast.mjs +9 -5
  215. package/dist/Toast.module.js +9 -5
  216. package/dist/Toast.module.js.map +1 -1
  217. package/dist/ToggleButton.main.js +8 -2
  218. package/dist/ToggleButton.main.js.map +1 -1
  219. package/dist/ToggleButton.mjs +8 -2
  220. package/dist/ToggleButton.module.js +8 -2
  221. package/dist/ToggleButton.module.js.map +1 -1
  222. package/dist/ToggleButtonGroup.main.js +6 -2
  223. package/dist/ToggleButtonGroup.main.js.map +1 -1
  224. package/dist/ToggleButtonGroup.mjs +6 -2
  225. package/dist/ToggleButtonGroup.module.js +6 -2
  226. package/dist/ToggleButtonGroup.module.js.map +1 -1
  227. package/dist/Toolbar.main.js +4 -3
  228. package/dist/Toolbar.main.js.map +1 -1
  229. package/dist/Toolbar.mjs +4 -3
  230. package/dist/Toolbar.module.js +4 -3
  231. package/dist/Toolbar.module.js.map +1 -1
  232. package/dist/Tooltip.main.js +9 -14
  233. package/dist/Tooltip.main.js.map +1 -1
  234. package/dist/Tooltip.mjs +10 -15
  235. package/dist/Tooltip.module.js +10 -15
  236. package/dist/Tooltip.module.js.map +1 -1
  237. package/dist/Tree.main.js +81 -28
  238. package/dist/Tree.main.js.map +1 -1
  239. package/dist/Tree.mjs +83 -30
  240. package/dist/Tree.module.js +83 -30
  241. package/dist/Tree.module.js.map +1 -1
  242. package/dist/TreeDropTargetDelegate.main.js +8 -5
  243. package/dist/TreeDropTargetDelegate.main.js.map +1 -1
  244. package/dist/TreeDropTargetDelegate.mjs +8 -5
  245. package/dist/TreeDropTargetDelegate.module.js +8 -5
  246. package/dist/TreeDropTargetDelegate.module.js.map +1 -1
  247. package/dist/context.main.js +25 -0
  248. package/dist/context.main.js.map +1 -0
  249. package/dist/context.mjs +19 -0
  250. package/dist/context.module.js +19 -0
  251. package/dist/context.module.js.map +1 -0
  252. package/dist/import.mjs +6 -6
  253. package/dist/main.js +7 -4
  254. package/dist/main.js.map +1 -1
  255. package/dist/module.js +6 -6
  256. package/dist/module.js.map +1 -1
  257. package/dist/types.d.ts +358 -342
  258. package/dist/types.d.ts.map +1 -1
  259. package/dist/useDragAndDrop.main.js.map +1 -1
  260. package/dist/useDragAndDrop.module.js.map +1 -1
  261. package/dist/utils.main.js.map +1 -1
  262. package/dist/utils.module.js.map +1 -1
  263. package/i18n/de-DE.js +1 -1
  264. package/i18n/de-DE.mjs +1 -1
  265. package/package.json +27 -26
  266. package/src/Autocomplete.tsx +14 -25
  267. package/src/Breadcrumbs.tsx +16 -8
  268. package/src/Button.tsx +8 -30
  269. package/src/Calendar.tsx +41 -24
  270. package/src/Checkbox.tsx +8 -6
  271. package/src/Collection.tsx +2 -2
  272. package/src/ColorArea.tsx +5 -6
  273. package/src/ColorField.tsx +6 -4
  274. package/src/ColorSlider.tsx +3 -2
  275. package/src/ColorSwatch.tsx +6 -3
  276. package/src/ColorSwatchPicker.tsx +3 -3
  277. package/src/ColorThumb.tsx +3 -3
  278. package/src/ColorWheel.tsx +6 -5
  279. package/src/ComboBox.tsx +4 -4
  280. package/src/DateField.tsx +15 -10
  281. package/src/DatePicker.tsx +14 -12
  282. package/src/Dialog.tsx +6 -6
  283. package/src/Disclosure.tsx +10 -14
  284. package/src/DragAndDrop.tsx +31 -1
  285. package/src/DropZone.tsx +4 -5
  286. package/src/FieldError.tsx +3 -3
  287. package/src/FileTrigger.tsx +4 -3
  288. package/src/Form.tsx +2 -1
  289. package/src/GridList.tsx +112 -37
  290. package/src/Header.tsx +2 -2
  291. package/src/HiddenDateInput.tsx +142 -0
  292. package/src/Link.tsx +7 -3
  293. package/src/ListBox.tsx +40 -39
  294. package/src/Menu.tsx +52 -29
  295. package/src/Meter.tsx +6 -3
  296. package/src/Modal.tsx +16 -5
  297. package/src/NumberField.tsx +4 -4
  298. package/src/Popover.tsx +14 -14
  299. package/src/ProgressBar.tsx +6 -2
  300. package/src/RadioGroup.tsx +8 -6
  301. package/src/SearchField.tsx +8 -6
  302. package/src/Select.tsx +13 -16
  303. package/src/Separator.tsx +23 -6
  304. package/src/Slider.tsx +9 -11
  305. package/src/Switch.tsx +4 -3
  306. package/src/Table.tsx +119 -74
  307. package/src/Tabs.tsx +24 -17
  308. package/src/TagGroup.tsx +28 -18
  309. package/src/TextField.tsx +13 -9
  310. package/src/Toast.tsx +10 -8
  311. package/src/ToggleButton.tsx +8 -4
  312. package/src/ToggleButtonGroup.tsx +6 -4
  313. package/src/Toolbar.tsx +4 -5
  314. package/src/Tooltip.tsx +15 -18
  315. package/src/Tree.tsx +102 -46
  316. package/src/TreeDropTargetDelegate.ts +5 -1
  317. package/src/context.tsx +34 -0
  318. package/src/index.ts +9 -9
  319. package/src/useDragAndDrop.tsx +11 -11
  320. package/src/utils.tsx +9 -9
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/react-aria-components/src/Tooltip.tsx"],"sourcesContent":["/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaLabelingProps, FocusableElement, forwardRefType, RefObject} from '@react-types/shared';\nimport {AriaPositionProps, mergeProps, OverlayContainer, Placement, PlacementAxis, PositionProps, useOverlayPosition, useTooltip, useTooltipTrigger} from 'react-aria';\nimport {ContextValue, Provider, RenderProps, useContextProps, useRenderProps} from './utils';\nimport {FocusableProvider} from '@react-aria/focus';\nimport {OverlayArrowContext} from './OverlayArrow';\nimport {OverlayTriggerProps, TooltipTriggerProps, TooltipTriggerState, useTooltipTriggerState} from 'react-stately';\nimport React, {createContext, ForwardedRef, forwardRef, JSX, ReactNode, useContext, useRef, useState} from 'react';\nimport {useEnterAnimation, useExitAnimation, useLayoutEffect} from '@react-aria/utils';\n\nexport interface TooltipTriggerComponentProps extends TooltipTriggerProps {\n children: ReactNode\n}\n\nexport interface TooltipProps extends PositionProps, Pick<AriaPositionProps, 'arrowBoundaryOffset'>, OverlayTriggerProps, AriaLabelingProps, RenderProps<TooltipRenderProps> {\n /**\n * The ref for the element which the tooltip positions itself with respect to.\n *\n * When used within a TooltipTrigger this is set automatically. It is only required when used standalone.\n */\n triggerRef?: RefObject<Element | null>,\n /**\n * Whether the tooltip is currently performing an entry animation.\n */\n isEntering?: boolean,\n /**\n * Whether the tooltip is currently performing an exit animation.\n */\n isExiting?: boolean,\n /**\n * The container element in which the overlay portal will be placed. This may have unknown behavior depending on where it is portalled to.\n * @default document.body\n * @deprecated - Use a parent UNSAFE_PortalProvider to set your portal container instead.\n */\n UNSTABLE_portalContainer?: Element,\n /**\n * The placement of the tooltip with respect to the trigger.\n * @default 'top'\n */\n placement?: Placement\n}\n\nexport interface TooltipRenderProps {\n /**\n * The placement of the tooltip relative to the trigger.\n * @selector [data-placement=\"left | right | top | bottom\"]\n */\n placement: PlacementAxis | null,\n /**\n * Whether the tooltip is currently entering. Use this to apply animations.\n * @selector [data-entering]\n */\n isEntering: boolean,\n /**\n * Whether the tooltip is currently exiting. Use this to apply animations.\n * @selector [data-exiting]\n */\n isExiting: boolean,\n /**\n * State of the tooltip.\n */\n state: TooltipTriggerState\n}\n\nexport const TooltipTriggerStateContext = createContext<TooltipTriggerState | null>(null);\nexport const TooltipContext = createContext<ContextValue<TooltipProps, HTMLDivElement>>(null);\n\n/**\n * TooltipTrigger wraps around a trigger element and a Tooltip. It handles opening and closing\n * the Tooltip when the user hovers over or focuses the trigger, and positioning the Tooltip\n * relative to the trigger.\n */\nexport function TooltipTrigger(props: TooltipTriggerComponentProps): JSX.Element {\n let state = useTooltipTriggerState(props);\n let ref = useRef<FocusableElement>(null);\n let {triggerProps, tooltipProps} = useTooltipTrigger(props, state, ref);\n\n return (\n <Provider\n values={[\n [TooltipTriggerStateContext, state],\n [TooltipContext, {...tooltipProps, triggerRef: ref}]\n ]}>\n <FocusableProvider {...triggerProps} ref={ref}>\n {props.children}\n </FocusableProvider>\n </Provider>\n );\n}\n\n/**\n * A tooltip displays a description of an element on hover or focus.\n */\nexport const Tooltip = /*#__PURE__*/ (forwardRef as forwardRefType)(function Tooltip({UNSTABLE_portalContainer, ...props}: TooltipProps, ref: ForwardedRef<HTMLDivElement>) {\n [props, ref] = useContextProps(props, ref, TooltipContext);\n let contextState = useContext(TooltipTriggerStateContext);\n let localState = useTooltipTriggerState(props);\n let state = props.isOpen != null || props.defaultOpen != null || !contextState ? localState : contextState;\n let isExiting = useExitAnimation(ref, state.isOpen) || props.isExiting || false;\n if (!state.isOpen && !isExiting) {\n return null;\n }\n\n return (\n <OverlayContainer portalContainer={UNSTABLE_portalContainer}>\n <TooltipInner {...props} tooltipRef={ref} isExiting={isExiting} />\n </OverlayContainer>\n );\n});\n\nfunction TooltipInner(props: TooltipProps & {isExiting: boolean, tooltipRef: RefObject<HTMLDivElement | null>}) {\n let state = useContext(TooltipTriggerStateContext)!;\n\n // Calculate the arrow size internally\n // Referenced from: packages/@react-spectrum/tooltip/src/TooltipTrigger.tsx\n let arrowRef = useRef<HTMLDivElement>(null);\n let [arrowWidth, setArrowWidth] = useState(0);\n useLayoutEffect(() => {\n if (arrowRef.current && state.isOpen) {\n setArrowWidth(arrowRef.current.getBoundingClientRect().width);\n }\n }, [state.isOpen, arrowRef]);\n\n let {overlayProps, arrowProps, placement} = useOverlayPosition({\n placement: props.placement || 'top',\n targetRef: props.triggerRef!,\n overlayRef: props.tooltipRef,\n offset: props.offset,\n crossOffset: props.crossOffset,\n isOpen: state.isOpen,\n arrowSize: arrowWidth,\n arrowBoundaryOffset: props.arrowBoundaryOffset,\n shouldFlip: props.shouldFlip,\n onClose: () => state.close(true)\n });\n\n let isEntering = useEnterAnimation(props.tooltipRef, !!placement) || props.isEntering || false;\n let renderProps = useRenderProps({\n ...props,\n defaultClassName: 'react-aria-Tooltip',\n values: {\n placement,\n isEntering,\n isExiting: props.isExiting,\n state\n }\n });\n\n props = mergeProps(props, overlayProps);\n let {tooltipProps} = useTooltip(props, state);\n\n return (\n <div\n {...tooltipProps}\n ref={props.tooltipRef}\n {...renderProps}\n style={{...overlayProps.style, ...renderProps.style}}\n data-placement={placement ?? undefined}\n data-entering={isEntering || undefined}\n data-exiting={props.isExiting || undefined}>\n <OverlayArrowContext.Provider value={{...arrowProps, placement, ref: arrowRef}}>\n {renderProps.children}\n </OverlayArrowContext.Provider>\n </div>\n );\n}\n"],"names":[],"version":3,"file":"Tooltip.main.js.map"}
1
+ {"mappings":"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","sources":["packages/react-aria-components/src/Tooltip.tsx"],"sourcesContent":["/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaLabelingProps, FocusableElement, forwardRefType, GlobalDOMAttributes, RefObject} from '@react-types/shared';\nimport {AriaPositionProps, mergeProps, OverlayContainer, Placement, PlacementAxis, PositionProps, useOverlayPosition, useTooltip, useTooltipTrigger} from 'react-aria';\nimport {ContextValue, Provider, RenderProps, useContextProps, useRenderProps} from './utils';\nimport {filterDOMProps, useEnterAnimation, useExitAnimation} from '@react-aria/utils';\nimport {FocusableProvider} from '@react-aria/focus';\nimport {OverlayArrowContext} from './OverlayArrow';\nimport {OverlayTriggerProps, TooltipTriggerProps, TooltipTriggerState, useTooltipTriggerState} from 'react-stately';\nimport React, {createContext, CSSProperties, ForwardedRef, forwardRef, JSX, ReactNode, useContext, useRef} from 'react';\n\nexport interface TooltipTriggerComponentProps extends TooltipTriggerProps {\n children: ReactNode\n}\n\nexport interface TooltipProps extends PositionProps, Pick<AriaPositionProps, 'arrowBoundaryOffset'>, OverlayTriggerProps, AriaLabelingProps, RenderProps<TooltipRenderProps>, GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The ref for the element which the tooltip positions itself with respect to.\n *\n * When used within a TooltipTrigger this is set automatically. It is only required when used standalone.\n */\n triggerRef?: RefObject<Element | null>,\n /**\n * Whether the tooltip is currently performing an entry animation.\n */\n isEntering?: boolean,\n /**\n * Whether the tooltip is currently performing an exit animation.\n */\n isExiting?: boolean,\n /**\n * The container element in which the overlay portal will be placed. This may have unknown behavior depending on where it is portalled to.\n * @default document.body\n * @deprecated - Use a parent UNSAFE_PortalProvider to set your portal container instead.\n */\n UNSTABLE_portalContainer?: Element,\n /**\n * The placement of the tooltip with respect to the trigger.\n * @default 'top'\n */\n placement?: Placement\n}\n\nexport interface TooltipRenderProps {\n /**\n * The placement of the tooltip relative to the trigger.\n * @selector [data-placement=\"left | right | top | bottom\"]\n */\n placement: PlacementAxis | null,\n /**\n * Whether the tooltip is currently entering. Use this to apply animations.\n * @selector [data-entering]\n */\n isEntering: boolean,\n /**\n * Whether the tooltip is currently exiting. Use this to apply animations.\n * @selector [data-exiting]\n */\n isExiting: boolean,\n /**\n * State of the tooltip.\n */\n state: TooltipTriggerState\n}\n\nexport const TooltipTriggerStateContext = createContext<TooltipTriggerState | null>(null);\nexport const TooltipContext = createContext<ContextValue<TooltipProps, HTMLDivElement>>(null);\n\n/**\n * TooltipTrigger wraps around a trigger element and a Tooltip. It handles opening and closing\n * the Tooltip when the user hovers over or focuses the trigger, and positioning the Tooltip\n * relative to the trigger.\n */\nexport function TooltipTrigger(props: TooltipTriggerComponentProps): JSX.Element {\n let state = useTooltipTriggerState(props);\n let ref = useRef<FocusableElement>(null);\n let {triggerProps, tooltipProps} = useTooltipTrigger(props, state, ref);\n\n return (\n <Provider\n values={[\n [TooltipTriggerStateContext, state],\n [TooltipContext, {...tooltipProps, triggerRef: ref}]\n ]}>\n <FocusableProvider {...triggerProps} ref={ref}>\n {props.children}\n </FocusableProvider>\n </Provider>\n );\n}\n\n/**\n * A tooltip displays a description of an element on hover or focus.\n */\nexport const Tooltip = /*#__PURE__*/ (forwardRef as forwardRefType)(function Tooltip({UNSTABLE_portalContainer, ...props}: TooltipProps, ref: ForwardedRef<HTMLDivElement>) {\n [props, ref] = useContextProps(props, ref, TooltipContext);\n let contextState = useContext(TooltipTriggerStateContext);\n let localState = useTooltipTriggerState(props);\n let state = props.isOpen != null || props.defaultOpen != null || !contextState ? localState : contextState;\n let isExiting = useExitAnimation(ref, state.isOpen) || props.isExiting || false;\n if (!state.isOpen && !isExiting) {\n return null;\n }\n\n return (\n <OverlayContainer portalContainer={UNSTABLE_portalContainer}>\n <TooltipInner {...props} tooltipRef={ref} isExiting={isExiting} />\n </OverlayContainer>\n );\n});\n\nfunction TooltipInner(props: TooltipProps & {isExiting: boolean, tooltipRef: RefObject<HTMLDivElement | null>}) {\n let state = useContext(TooltipTriggerStateContext)!;\n let arrowRef = useRef<HTMLDivElement>(null);\n\n let {overlayProps, arrowProps, placement, triggerAnchorPoint} = useOverlayPosition({\n placement: props.placement || 'top',\n targetRef: props.triggerRef!,\n overlayRef: props.tooltipRef,\n arrowRef,\n offset: props.offset,\n crossOffset: props.crossOffset,\n isOpen: state.isOpen,\n arrowBoundaryOffset: props.arrowBoundaryOffset,\n shouldFlip: props.shouldFlip,\n containerPadding: props.containerPadding,\n onClose: () => state.close(true)\n });\n\n let isEntering = useEnterAnimation(props.tooltipRef, !!placement) || props.isEntering || false;\n let renderProps = useRenderProps({\n ...props,\n defaultClassName: 'react-aria-Tooltip',\n values: {\n placement,\n isEntering,\n isExiting: props.isExiting,\n state\n }\n });\n\n props = mergeProps(props, overlayProps);\n let {tooltipProps} = useTooltip(props, state);\n\n let DOMProps = filterDOMProps(props, {global: true});\n\n return (\n <div\n {...mergeProps(DOMProps, renderProps, tooltipProps)}\n ref={props.tooltipRef}\n style={{\n ...overlayProps.style,\n '--trigger-anchor-point': triggerAnchorPoint ? `${triggerAnchorPoint.x}px ${triggerAnchorPoint.y}px` : undefined,\n ...renderProps.style\n } as CSSProperties}\n data-placement={placement ?? undefined}\n data-entering={isEntering || undefined}\n data-exiting={props.isExiting || undefined}>\n <OverlayArrowContext.Provider value={{...arrowProps, placement, ref: arrowRef}}>\n {renderProps.children}\n </OverlayArrowContext.Provider>\n </div>\n );\n}\n"],"names":[],"version":3,"file":"Tooltip.main.js.map"}
package/dist/Tooltip.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  import {Provider as $64fa3d84918910a7$export$2881499e37b75b9a, useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3} from "./utils.mjs";
2
2
  import {OverlayArrowContext as $44f671af83e7d9e0$export$2de4954e8ae13b9f} from "./OverlayArrow.mjs";
3
3
  import {useTooltipTrigger as $cCslV$useTooltipTrigger, OverlayContainer as $cCslV$OverlayContainer, useOverlayPosition as $cCslV$useOverlayPosition, mergeProps as $cCslV$mergeProps, useTooltip as $cCslV$useTooltip} from "react-aria";
4
+ import {useExitAnimation as $cCslV$useExitAnimation, useEnterAnimation as $cCslV$useEnterAnimation, filterDOMProps as $cCslV$filterDOMProps} from "@react-aria/utils";
4
5
  import {FocusableProvider as $cCslV$FocusableProvider} from "@react-aria/focus";
5
6
  import {useTooltipTriggerState as $cCslV$useTooltipTriggerState} from "react-stately";
6
- import $cCslV$react, {createContext as $cCslV$createContext, useRef as $cCslV$useRef, forwardRef as $cCslV$forwardRef, useContext as $cCslV$useContext, useState as $cCslV$useState} from "react";
7
- import {useExitAnimation as $cCslV$useExitAnimation, useLayoutEffect as $cCslV$useLayoutEffect, useEnterAnimation as $cCslV$useEnterAnimation} from "@react-aria/utils";
7
+ import $cCslV$react, {createContext as $cCslV$createContext, useRef as $cCslV$useRef, forwardRef as $cCslV$forwardRef, useContext as $cCslV$useContext} from "react";
8
8
 
9
9
  /*
10
10
  * Copyright 2022 Adobe. All rights reserved.
@@ -65,26 +65,18 @@ const $4e3b923658d69c60$export$28c660c63b792dea = /*#__PURE__*/ (0, $cCslV$forwa
65
65
  });
66
66
  function $4e3b923658d69c60$var$TooltipInner(props) {
67
67
  let state = (0, $cCslV$useContext)($4e3b923658d69c60$export$7a7623236eec67fa);
68
- // Calculate the arrow size internally
69
- // Referenced from: packages/@react-spectrum/tooltip/src/TooltipTrigger.tsx
70
68
  let arrowRef = (0, $cCslV$useRef)(null);
71
- let [arrowWidth, setArrowWidth] = (0, $cCslV$useState)(0);
72
- (0, $cCslV$useLayoutEffect)(()=>{
73
- if (arrowRef.current && state.isOpen) setArrowWidth(arrowRef.current.getBoundingClientRect().width);
74
- }, [
75
- state.isOpen,
76
- arrowRef
77
- ]);
78
- let { overlayProps: overlayProps, arrowProps: arrowProps, placement: placement } = (0, $cCslV$useOverlayPosition)({
69
+ let { overlayProps: overlayProps, arrowProps: arrowProps, placement: placement, triggerAnchorPoint: triggerAnchorPoint } = (0, $cCslV$useOverlayPosition)({
79
70
  placement: props.placement || 'top',
80
71
  targetRef: props.triggerRef,
81
72
  overlayRef: props.tooltipRef,
73
+ arrowRef: arrowRef,
82
74
  offset: props.offset,
83
75
  crossOffset: props.crossOffset,
84
76
  isOpen: state.isOpen,
85
- arrowSize: arrowWidth,
86
77
  arrowBoundaryOffset: props.arrowBoundaryOffset,
87
78
  shouldFlip: props.shouldFlip,
79
+ containerPadding: props.containerPadding,
88
80
  onClose: ()=>state.close(true)
89
81
  });
90
82
  let isEntering = (0, $cCslV$useEnterAnimation)(props.tooltipRef, !!placement) || props.isEntering || false;
@@ -100,12 +92,15 @@ function $4e3b923658d69c60$var$TooltipInner(props) {
100
92
  });
101
93
  props = (0, $cCslV$mergeProps)(props, overlayProps);
102
94
  let { tooltipProps: tooltipProps } = (0, $cCslV$useTooltip)(props, state);
95
+ let DOMProps = (0, $cCslV$filterDOMProps)(props, {
96
+ global: true
97
+ });
103
98
  return /*#__PURE__*/ (0, $cCslV$react).createElement("div", {
104
- ...tooltipProps,
99
+ ...(0, $cCslV$mergeProps)(DOMProps, renderProps, tooltipProps),
105
100
  ref: props.tooltipRef,
106
- ...renderProps,
107
101
  style: {
108
102
  ...overlayProps.style,
103
+ '--trigger-anchor-point': triggerAnchorPoint ? `${triggerAnchorPoint.x}px ${triggerAnchorPoint.y}px` : undefined,
109
104
  ...renderProps.style
110
105
  },
111
106
  "data-placement": placement !== null && placement !== void 0 ? placement : undefined,
@@ -1,10 +1,10 @@
1
1
  import {Provider as $64fa3d84918910a7$export$2881499e37b75b9a, useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3} from "./utils.module.js";
2
2
  import {OverlayArrowContext as $44f671af83e7d9e0$export$2de4954e8ae13b9f} from "./OverlayArrow.module.js";
3
3
  import {useTooltipTrigger as $cCslV$useTooltipTrigger, OverlayContainer as $cCslV$OverlayContainer, useOverlayPosition as $cCslV$useOverlayPosition, mergeProps as $cCslV$mergeProps, useTooltip as $cCslV$useTooltip} from "react-aria";
4
+ import {useExitAnimation as $cCslV$useExitAnimation, useEnterAnimation as $cCslV$useEnterAnimation, filterDOMProps as $cCslV$filterDOMProps} from "@react-aria/utils";
4
5
  import {FocusableProvider as $cCslV$FocusableProvider} from "@react-aria/focus";
5
6
  import {useTooltipTriggerState as $cCslV$useTooltipTriggerState} from "react-stately";
6
- import $cCslV$react, {createContext as $cCslV$createContext, useRef as $cCslV$useRef, forwardRef as $cCslV$forwardRef, useContext as $cCslV$useContext, useState as $cCslV$useState} from "react";
7
- import {useExitAnimation as $cCslV$useExitAnimation, useLayoutEffect as $cCslV$useLayoutEffect, useEnterAnimation as $cCslV$useEnterAnimation} from "@react-aria/utils";
7
+ import $cCslV$react, {createContext as $cCslV$createContext, useRef as $cCslV$useRef, forwardRef as $cCslV$forwardRef, useContext as $cCslV$useContext} from "react";
8
8
 
9
9
  /*
10
10
  * Copyright 2022 Adobe. All rights reserved.
@@ -65,26 +65,18 @@ const $4e3b923658d69c60$export$28c660c63b792dea = /*#__PURE__*/ (0, $cCslV$forwa
65
65
  });
66
66
  function $4e3b923658d69c60$var$TooltipInner(props) {
67
67
  let state = (0, $cCslV$useContext)($4e3b923658d69c60$export$7a7623236eec67fa);
68
- // Calculate the arrow size internally
69
- // Referenced from: packages/@react-spectrum/tooltip/src/TooltipTrigger.tsx
70
68
  let arrowRef = (0, $cCslV$useRef)(null);
71
- let [arrowWidth, setArrowWidth] = (0, $cCslV$useState)(0);
72
- (0, $cCslV$useLayoutEffect)(()=>{
73
- if (arrowRef.current && state.isOpen) setArrowWidth(arrowRef.current.getBoundingClientRect().width);
74
- }, [
75
- state.isOpen,
76
- arrowRef
77
- ]);
78
- let { overlayProps: overlayProps, arrowProps: arrowProps, placement: placement } = (0, $cCslV$useOverlayPosition)({
69
+ let { overlayProps: overlayProps, arrowProps: arrowProps, placement: placement, triggerAnchorPoint: triggerAnchorPoint } = (0, $cCslV$useOverlayPosition)({
79
70
  placement: props.placement || 'top',
80
71
  targetRef: props.triggerRef,
81
72
  overlayRef: props.tooltipRef,
73
+ arrowRef: arrowRef,
82
74
  offset: props.offset,
83
75
  crossOffset: props.crossOffset,
84
76
  isOpen: state.isOpen,
85
- arrowSize: arrowWidth,
86
77
  arrowBoundaryOffset: props.arrowBoundaryOffset,
87
78
  shouldFlip: props.shouldFlip,
79
+ containerPadding: props.containerPadding,
88
80
  onClose: ()=>state.close(true)
89
81
  });
90
82
  let isEntering = (0, $cCslV$useEnterAnimation)(props.tooltipRef, !!placement) || props.isEntering || false;
@@ -100,12 +92,15 @@ function $4e3b923658d69c60$var$TooltipInner(props) {
100
92
  });
101
93
  props = (0, $cCslV$mergeProps)(props, overlayProps);
102
94
  let { tooltipProps: tooltipProps } = (0, $cCslV$useTooltip)(props, state);
95
+ let DOMProps = (0, $cCslV$filterDOMProps)(props, {
96
+ global: true
97
+ });
103
98
  return /*#__PURE__*/ (0, $cCslV$react).createElement("div", {
104
- ...tooltipProps,
99
+ ...(0, $cCslV$mergeProps)(DOMProps, renderProps, tooltipProps),
105
100
  ref: props.tooltipRef,
106
- ...renderProps,
107
101
  style: {
108
102
  ...overlayProps.style,
103
+ '--trigger-anchor-point': triggerAnchorPoint ? `${triggerAnchorPoint.x}px ${triggerAnchorPoint.y}px` : undefined,
109
104
  ...renderProps.style
110
105
  },
111
106
  "data-placement": placement !== null && placement !== void 0 ? placement : undefined,
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/react-aria-components/src/Tooltip.tsx"],"sourcesContent":["/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaLabelingProps, FocusableElement, forwardRefType, RefObject} from '@react-types/shared';\nimport {AriaPositionProps, mergeProps, OverlayContainer, Placement, PlacementAxis, PositionProps, useOverlayPosition, useTooltip, useTooltipTrigger} from 'react-aria';\nimport {ContextValue, Provider, RenderProps, useContextProps, useRenderProps} from './utils';\nimport {FocusableProvider} from '@react-aria/focus';\nimport {OverlayArrowContext} from './OverlayArrow';\nimport {OverlayTriggerProps, TooltipTriggerProps, TooltipTriggerState, useTooltipTriggerState} from 'react-stately';\nimport React, {createContext, ForwardedRef, forwardRef, JSX, ReactNode, useContext, useRef, useState} from 'react';\nimport {useEnterAnimation, useExitAnimation, useLayoutEffect} from '@react-aria/utils';\n\nexport interface TooltipTriggerComponentProps extends TooltipTriggerProps {\n children: ReactNode\n}\n\nexport interface TooltipProps extends PositionProps, Pick<AriaPositionProps, 'arrowBoundaryOffset'>, OverlayTriggerProps, AriaLabelingProps, RenderProps<TooltipRenderProps> {\n /**\n * The ref for the element which the tooltip positions itself with respect to.\n *\n * When used within a TooltipTrigger this is set automatically. It is only required when used standalone.\n */\n triggerRef?: RefObject<Element | null>,\n /**\n * Whether the tooltip is currently performing an entry animation.\n */\n isEntering?: boolean,\n /**\n * Whether the tooltip is currently performing an exit animation.\n */\n isExiting?: boolean,\n /**\n * The container element in which the overlay portal will be placed. This may have unknown behavior depending on where it is portalled to.\n * @default document.body\n * @deprecated - Use a parent UNSAFE_PortalProvider to set your portal container instead.\n */\n UNSTABLE_portalContainer?: Element,\n /**\n * The placement of the tooltip with respect to the trigger.\n * @default 'top'\n */\n placement?: Placement\n}\n\nexport interface TooltipRenderProps {\n /**\n * The placement of the tooltip relative to the trigger.\n * @selector [data-placement=\"left | right | top | bottom\"]\n */\n placement: PlacementAxis | null,\n /**\n * Whether the tooltip is currently entering. Use this to apply animations.\n * @selector [data-entering]\n */\n isEntering: boolean,\n /**\n * Whether the tooltip is currently exiting. Use this to apply animations.\n * @selector [data-exiting]\n */\n isExiting: boolean,\n /**\n * State of the tooltip.\n */\n state: TooltipTriggerState\n}\n\nexport const TooltipTriggerStateContext = createContext<TooltipTriggerState | null>(null);\nexport const TooltipContext = createContext<ContextValue<TooltipProps, HTMLDivElement>>(null);\n\n/**\n * TooltipTrigger wraps around a trigger element and a Tooltip. It handles opening and closing\n * the Tooltip when the user hovers over or focuses the trigger, and positioning the Tooltip\n * relative to the trigger.\n */\nexport function TooltipTrigger(props: TooltipTriggerComponentProps): JSX.Element {\n let state = useTooltipTriggerState(props);\n let ref = useRef<FocusableElement>(null);\n let {triggerProps, tooltipProps} = useTooltipTrigger(props, state, ref);\n\n return (\n <Provider\n values={[\n [TooltipTriggerStateContext, state],\n [TooltipContext, {...tooltipProps, triggerRef: ref}]\n ]}>\n <FocusableProvider {...triggerProps} ref={ref}>\n {props.children}\n </FocusableProvider>\n </Provider>\n );\n}\n\n/**\n * A tooltip displays a description of an element on hover or focus.\n */\nexport const Tooltip = /*#__PURE__*/ (forwardRef as forwardRefType)(function Tooltip({UNSTABLE_portalContainer, ...props}: TooltipProps, ref: ForwardedRef<HTMLDivElement>) {\n [props, ref] = useContextProps(props, ref, TooltipContext);\n let contextState = useContext(TooltipTriggerStateContext);\n let localState = useTooltipTriggerState(props);\n let state = props.isOpen != null || props.defaultOpen != null || !contextState ? localState : contextState;\n let isExiting = useExitAnimation(ref, state.isOpen) || props.isExiting || false;\n if (!state.isOpen && !isExiting) {\n return null;\n }\n\n return (\n <OverlayContainer portalContainer={UNSTABLE_portalContainer}>\n <TooltipInner {...props} tooltipRef={ref} isExiting={isExiting} />\n </OverlayContainer>\n );\n});\n\nfunction TooltipInner(props: TooltipProps & {isExiting: boolean, tooltipRef: RefObject<HTMLDivElement | null>}) {\n let state = useContext(TooltipTriggerStateContext)!;\n\n // Calculate the arrow size internally\n // Referenced from: packages/@react-spectrum/tooltip/src/TooltipTrigger.tsx\n let arrowRef = useRef<HTMLDivElement>(null);\n let [arrowWidth, setArrowWidth] = useState(0);\n useLayoutEffect(() => {\n if (arrowRef.current && state.isOpen) {\n setArrowWidth(arrowRef.current.getBoundingClientRect().width);\n }\n }, [state.isOpen, arrowRef]);\n\n let {overlayProps, arrowProps, placement} = useOverlayPosition({\n placement: props.placement || 'top',\n targetRef: props.triggerRef!,\n overlayRef: props.tooltipRef,\n offset: props.offset,\n crossOffset: props.crossOffset,\n isOpen: state.isOpen,\n arrowSize: arrowWidth,\n arrowBoundaryOffset: props.arrowBoundaryOffset,\n shouldFlip: props.shouldFlip,\n onClose: () => state.close(true)\n });\n\n let isEntering = useEnterAnimation(props.tooltipRef, !!placement) || props.isEntering || false;\n let renderProps = useRenderProps({\n ...props,\n defaultClassName: 'react-aria-Tooltip',\n values: {\n placement,\n isEntering,\n isExiting: props.isExiting,\n state\n }\n });\n\n props = mergeProps(props, overlayProps);\n let {tooltipProps} = useTooltip(props, state);\n\n return (\n <div\n {...tooltipProps}\n ref={props.tooltipRef}\n {...renderProps}\n style={{...overlayProps.style, ...renderProps.style}}\n data-placement={placement ?? undefined}\n data-entering={isEntering || undefined}\n data-exiting={props.isExiting || undefined}>\n <OverlayArrowContext.Provider value={{...arrowProps, placement, ref: arrowRef}}>\n {renderProps.children}\n </OverlayArrowContext.Provider>\n </div>\n );\n}\n"],"names":[],"version":3,"file":"Tooltip.module.js.map"}
1
+ {"mappings":"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","sources":["packages/react-aria-components/src/Tooltip.tsx"],"sourcesContent":["/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaLabelingProps, FocusableElement, forwardRefType, GlobalDOMAttributes, RefObject} from '@react-types/shared';\nimport {AriaPositionProps, mergeProps, OverlayContainer, Placement, PlacementAxis, PositionProps, useOverlayPosition, useTooltip, useTooltipTrigger} from 'react-aria';\nimport {ContextValue, Provider, RenderProps, useContextProps, useRenderProps} from './utils';\nimport {filterDOMProps, useEnterAnimation, useExitAnimation} from '@react-aria/utils';\nimport {FocusableProvider} from '@react-aria/focus';\nimport {OverlayArrowContext} from './OverlayArrow';\nimport {OverlayTriggerProps, TooltipTriggerProps, TooltipTriggerState, useTooltipTriggerState} from 'react-stately';\nimport React, {createContext, CSSProperties, ForwardedRef, forwardRef, JSX, ReactNode, useContext, useRef} from 'react';\n\nexport interface TooltipTriggerComponentProps extends TooltipTriggerProps {\n children: ReactNode\n}\n\nexport interface TooltipProps extends PositionProps, Pick<AriaPositionProps, 'arrowBoundaryOffset'>, OverlayTriggerProps, AriaLabelingProps, RenderProps<TooltipRenderProps>, GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The ref for the element which the tooltip positions itself with respect to.\n *\n * When used within a TooltipTrigger this is set automatically. It is only required when used standalone.\n */\n triggerRef?: RefObject<Element | null>,\n /**\n * Whether the tooltip is currently performing an entry animation.\n */\n isEntering?: boolean,\n /**\n * Whether the tooltip is currently performing an exit animation.\n */\n isExiting?: boolean,\n /**\n * The container element in which the overlay portal will be placed. This may have unknown behavior depending on where it is portalled to.\n * @default document.body\n * @deprecated - Use a parent UNSAFE_PortalProvider to set your portal container instead.\n */\n UNSTABLE_portalContainer?: Element,\n /**\n * The placement of the tooltip with respect to the trigger.\n * @default 'top'\n */\n placement?: Placement\n}\n\nexport interface TooltipRenderProps {\n /**\n * The placement of the tooltip relative to the trigger.\n * @selector [data-placement=\"left | right | top | bottom\"]\n */\n placement: PlacementAxis | null,\n /**\n * Whether the tooltip is currently entering. Use this to apply animations.\n * @selector [data-entering]\n */\n isEntering: boolean,\n /**\n * Whether the tooltip is currently exiting. Use this to apply animations.\n * @selector [data-exiting]\n */\n isExiting: boolean,\n /**\n * State of the tooltip.\n */\n state: TooltipTriggerState\n}\n\nexport const TooltipTriggerStateContext = createContext<TooltipTriggerState | null>(null);\nexport const TooltipContext = createContext<ContextValue<TooltipProps, HTMLDivElement>>(null);\n\n/**\n * TooltipTrigger wraps around a trigger element and a Tooltip. It handles opening and closing\n * the Tooltip when the user hovers over or focuses the trigger, and positioning the Tooltip\n * relative to the trigger.\n */\nexport function TooltipTrigger(props: TooltipTriggerComponentProps): JSX.Element {\n let state = useTooltipTriggerState(props);\n let ref = useRef<FocusableElement>(null);\n let {triggerProps, tooltipProps} = useTooltipTrigger(props, state, ref);\n\n return (\n <Provider\n values={[\n [TooltipTriggerStateContext, state],\n [TooltipContext, {...tooltipProps, triggerRef: ref}]\n ]}>\n <FocusableProvider {...triggerProps} ref={ref}>\n {props.children}\n </FocusableProvider>\n </Provider>\n );\n}\n\n/**\n * A tooltip displays a description of an element on hover or focus.\n */\nexport const Tooltip = /*#__PURE__*/ (forwardRef as forwardRefType)(function Tooltip({UNSTABLE_portalContainer, ...props}: TooltipProps, ref: ForwardedRef<HTMLDivElement>) {\n [props, ref] = useContextProps(props, ref, TooltipContext);\n let contextState = useContext(TooltipTriggerStateContext);\n let localState = useTooltipTriggerState(props);\n let state = props.isOpen != null || props.defaultOpen != null || !contextState ? localState : contextState;\n let isExiting = useExitAnimation(ref, state.isOpen) || props.isExiting || false;\n if (!state.isOpen && !isExiting) {\n return null;\n }\n\n return (\n <OverlayContainer portalContainer={UNSTABLE_portalContainer}>\n <TooltipInner {...props} tooltipRef={ref} isExiting={isExiting} />\n </OverlayContainer>\n );\n});\n\nfunction TooltipInner(props: TooltipProps & {isExiting: boolean, tooltipRef: RefObject<HTMLDivElement | null>}) {\n let state = useContext(TooltipTriggerStateContext)!;\n let arrowRef = useRef<HTMLDivElement>(null);\n\n let {overlayProps, arrowProps, placement, triggerAnchorPoint} = useOverlayPosition({\n placement: props.placement || 'top',\n targetRef: props.triggerRef!,\n overlayRef: props.tooltipRef,\n arrowRef,\n offset: props.offset,\n crossOffset: props.crossOffset,\n isOpen: state.isOpen,\n arrowBoundaryOffset: props.arrowBoundaryOffset,\n shouldFlip: props.shouldFlip,\n containerPadding: props.containerPadding,\n onClose: () => state.close(true)\n });\n\n let isEntering = useEnterAnimation(props.tooltipRef, !!placement) || props.isEntering || false;\n let renderProps = useRenderProps({\n ...props,\n defaultClassName: 'react-aria-Tooltip',\n values: {\n placement,\n isEntering,\n isExiting: props.isExiting,\n state\n }\n });\n\n props = mergeProps(props, overlayProps);\n let {tooltipProps} = useTooltip(props, state);\n\n let DOMProps = filterDOMProps(props, {global: true});\n\n return (\n <div\n {...mergeProps(DOMProps, renderProps, tooltipProps)}\n ref={props.tooltipRef}\n style={{\n ...overlayProps.style,\n '--trigger-anchor-point': triggerAnchorPoint ? `${triggerAnchorPoint.x}px ${triggerAnchorPoint.y}px` : undefined,\n ...renderProps.style\n } as CSSProperties}\n data-placement={placement ?? undefined}\n data-entering={isEntering || undefined}\n data-exiting={props.isExiting || undefined}>\n <OverlayArrowContext.Provider value={{...arrowProps, placement, ref: arrowRef}}>\n {renderProps.children}\n </OverlayArrowContext.Provider>\n </div>\n );\n}\n"],"names":[],"version":3,"file":"Tooltip.module.js.map"}
package/dist/Tree.main.js CHANGED
@@ -25,7 +25,7 @@ $parcel$export(module.exports, "TreeStateContext", () => $c6576bb58bfa084b$expor
25
25
  $parcel$export(module.exports, "Tree", () => $c6576bb58bfa084b$export$7fbedc92909ed28e);
26
26
  $parcel$export(module.exports, "TreeItemContent", () => $c6576bb58bfa084b$export$4b687e3f663d618c);
27
27
  $parcel$export(module.exports, "TreeItem", () => $c6576bb58bfa084b$export$53d36ab85dc89436);
28
- $parcel$export(module.exports, "UNSTABLE_TreeLoadingIndicator", () => $c6576bb58bfa084b$export$9d1a587784d97b41);
28
+ $parcel$export(module.exports, "TreeLoadMoreItem", () => $c6576bb58bfa084b$export$533df5f8efd48cc9);
29
29
  /*
30
30
  * Copyright 2024 Adobe. All rights reserved.
31
31
  * This file is licensed to you under the Apache License, Version 2.0 (the "License");
@@ -55,7 +55,7 @@ class $c6576bb58bfa084b$var$TreeCollection {
55
55
  yield* this.flattenedRows;
56
56
  }
57
57
  get size() {
58
- return this.flattenedRows.length;
58
+ return this.itemCount;
59
59
  }
60
60
  getKeys() {
61
61
  return this.keyMap.keys();
@@ -72,7 +72,7 @@ class $c6576bb58bfa084b$var$TreeCollection {
72
72
  }
73
73
  getLastKey() {
74
74
  var _this_flattenedRows_;
75
- return (_this_flattenedRows_ = this.flattenedRows[this.size - 1]) === null || _this_flattenedRows_ === void 0 ? void 0 : _this_flattenedRows_.key;
75
+ return (_this_flattenedRows_ = this.flattenedRows[this.flattenedRows.length - 1]) === null || _this_flattenedRows_ === void 0 ? void 0 : _this_flattenedRows_.key;
76
76
  }
77
77
  getKeyAfter(key) {
78
78
  var _this_flattenedRows_;
@@ -104,13 +104,15 @@ class $c6576bb58bfa084b$var$TreeCollection {
104
104
  }
105
105
  constructor(opts){
106
106
  this.keyMap = new Map();
107
+ this.itemCount = 0;
107
108
  let { collection: collection, expandedKeys: expandedKeys } = opts;
108
- let { flattenedRows: flattenedRows, keyMap: keyMap } = $c6576bb58bfa084b$var$flattenTree(collection, {
109
+ let { flattenedRows: flattenedRows, keyMap: keyMap, itemCount: itemCount } = $c6576bb58bfa084b$var$flattenTree(collection, {
109
110
  expandedKeys: expandedKeys
110
111
  });
111
112
  this.flattenedRows = flattenedRows;
112
113
  // Use generated keyMap because it contains the modified collection nodes (aka it adjusts the indexes so that they ignore the existence of the Content items)
113
114
  this.keyMap = keyMap;
115
+ this.itemCount = itemCount;
114
116
  }
115
117
  }
116
118
  const $c6576bb58bfa084b$export$dfae7d399eea2568 = /*#__PURE__*/ (0, $5SMu3$react.createContext)(null);
@@ -288,9 +290,7 @@ function $c6576bb58bfa084b$var$TreeInner({ props: props, collection: collection,
288
290
  ...values
289
291
  });
290
292
  let treeGridRowProps = {
291
- 'aria-level': 1,
292
- 'aria-posinset': 1,
293
- 'aria-setsize': 1
293
+ 'aria-level': 1
294
294
  };
295
295
  emptyState = /*#__PURE__*/ (0, ($parcel$interopDefault($5SMu3$react))).createElement("div", {
296
296
  role: "row",
@@ -305,13 +305,13 @@ function $c6576bb58bfa084b$var$TreeInner({ props: props, collection: collection,
305
305
  }
306
306
  }, content));
307
307
  }
308
+ let DOMProps = (0, $5SMu3$reactariautils.filterDOMProps)(props, {
309
+ global: true
310
+ });
308
311
  return /*#__PURE__*/ (0, ($parcel$interopDefault($5SMu3$react))).createElement((0, ($parcel$interopDefault($5SMu3$react))).Fragment, null, /*#__PURE__*/ (0, ($parcel$interopDefault($5SMu3$react))).createElement((0, $5SMu3$reactaria.FocusScope), null, /*#__PURE__*/ (0, ($parcel$interopDefault($5SMu3$react))).createElement("div", {
309
- ...(0, $5SMu3$reactariautils.filterDOMProps)(props),
310
- ...renderProps,
311
- ...(0, $5SMu3$reactaria.mergeProps)(gridProps, focusProps, droppableCollection === null || droppableCollection === void 0 ? void 0 : droppableCollection.collectionProps),
312
+ ...(0, $5SMu3$reactaria.mergeProps)(DOMProps, renderProps, gridProps, focusProps, droppableCollection === null || droppableCollection === void 0 ? void 0 : droppableCollection.collectionProps),
312
313
  ref: ref,
313
314
  slot: props.slot || undefined,
314
- onScroll: props.onScroll,
315
315
  "data-empty": state.collection.size === 0 || undefined,
316
316
  "data-focused": isFocused || undefined,
317
317
  "data-drop-target": isRootDropTarget || undefined,
@@ -346,7 +346,10 @@ function $c6576bb58bfa084b$var$TreeInner({ props: props, collection: collection,
346
346
  renderDropIndicator: (0, $0c2289d253cb4544$exports.useRenderDropIndicator)(dragAndDropHooks, dropState)
347
347
  })), emptyState)), dragPreview);
348
348
  }
349
- const $c6576bb58bfa084b$export$4b687e3f663d618c = /*#__PURE__*/ (0, $5SMu3$reactariacollections.createLeafComponent)('content', function TreeItemContent(props) {
349
+ class $c6576bb58bfa084b$var$TreeContentNode extends (0, $5SMu3$reactariacollections.CollectionNode) {
350
+ }
351
+ $c6576bb58bfa084b$var$TreeContentNode.type = 'content';
352
+ const $c6576bb58bfa084b$export$4b687e3f663d618c = /*#__PURE__*/ (0, $5SMu3$reactariacollections.createLeafComponent)($c6576bb58bfa084b$var$TreeContentNode, function TreeItemContent(props) {
350
353
  let values = (0, $5SMu3$react.useContext)($c6576bb58bfa084b$export$36b5dda0d9bc8f78);
351
354
  let renderProps = (0, $c5ccf687772c0422$exports.useRenderProps)({
352
355
  children: props.children,
@@ -357,7 +360,10 @@ const $c6576bb58bfa084b$export$4b687e3f663d618c = /*#__PURE__*/ (0, $5SMu3$react
357
360
  }, renderProps.children);
358
361
  });
359
362
  const $c6576bb58bfa084b$export$36b5dda0d9bc8f78 = /*#__PURE__*/ (0, $5SMu3$react.createContext)(null);
360
- const $c6576bb58bfa084b$export$53d36ab85dc89436 = /*#__PURE__*/ (0, $5SMu3$reactariacollections.createBranchComponent)('item', (props, ref, item)=>{
363
+ class $c6576bb58bfa084b$var$TreeItemNode extends (0, $5SMu3$reactariacollections.CollectionNode) {
364
+ }
365
+ $c6576bb58bfa084b$var$TreeItemNode.type = 'item';
366
+ const $c6576bb58bfa084b$export$53d36ab85dc89436 = /*#__PURE__*/ (0, $5SMu3$reactariacollections.createBranchComponent)($c6576bb58bfa084b$var$TreeItemNode, (props, ref, item)=>{
361
367
  var _this;
362
368
  let state = (0, $5SMu3$react.useContext)($c6576bb58bfa084b$export$8953bccafd7bce87);
363
369
  ref = (0, $5SMu3$reactariautils.useObjectRef)(ref);
@@ -481,6 +487,11 @@ const $c6576bb58bfa084b$export$53d36ab85dc89436 = /*#__PURE__*/ (0, $5SMu3$react
481
487
  }
482
488
  });
483
489
  let activateButtonId = (0, $5SMu3$reactaria.useId)();
490
+ let DOMProps = (0, $5SMu3$reactariautils.filterDOMProps)(props, {
491
+ global: true
492
+ });
493
+ delete DOMProps.id;
494
+ delete DOMProps.onClick;
484
495
  return /*#__PURE__*/ (0, ($parcel$interopDefault($5SMu3$react))).createElement((0, ($parcel$interopDefault($5SMu3$react))).Fragment, null, dropIndicator && !dropIndicator.isHidden && /*#__PURE__*/ (0, ($parcel$interopDefault($5SMu3$react))).createElement("div", {
485
496
  role: "row",
486
497
  "aria-level": rowProps['aria-level'],
@@ -507,7 +518,7 @@ const $c6576bb58bfa084b$export$53d36ab85dc89436 = /*#__PURE__*/ (0, $5SMu3$react
507
518
  tabIndex: -1,
508
519
  ref: activateButtonRef
509
520
  }) : null)), /*#__PURE__*/ (0, ($parcel$interopDefault($5SMu3$react))).createElement("div", {
510
- ...(0, $5SMu3$reactaria.mergeProps)((0, $5SMu3$reactariautils.filterDOMProps)(props), rowProps, focusProps, hoverProps, focusWithinProps, draggableItem === null || draggableItem === void 0 ? void 0 : draggableItem.dragProps),
521
+ ...(0, $5SMu3$reactaria.mergeProps)(DOMProps, rowProps, focusProps, hoverProps, focusWithinProps, draggableItem === null || draggableItem === void 0 ? void 0 : draggableItem.dragProps),
511
522
  ...renderProps,
512
523
  ref: ref,
513
524
  // TODO: missing selectionBehavior, hasAction and allowsSelection data attribute equivalents (available in renderProps). Do we want those?
@@ -569,21 +580,38 @@ const $c6576bb58bfa084b$export$53d36ab85dc89436 = /*#__PURE__*/ (0, $5SMu3$react
569
580
  ]
570
581
  }, children))));
571
582
  });
572
- const $c6576bb58bfa084b$export$9d1a587784d97b41 = (0, $5SMu3$reactariacollections.createLeafComponent)('loader', function TreeLoader(props, ref, item) {
583
+ const $c6576bb58bfa084b$export$533df5f8efd48cc9 = (0, $5SMu3$reactariacollections.createLeafComponent)((0, $5SMu3$reactariacollections.LoaderNode), function TreeLoadingSentinel(props, ref, item) {
584
+ let { isVirtualized: isVirtualized } = (0, $5SMu3$react.useContext)((0, $3114c2382242bdc0$exports.CollectionRendererContext));
573
585
  let state = (0, $5SMu3$react.useContext)($c6576bb58bfa084b$export$8953bccafd7bce87);
574
- // This loader row is is non-interactable, but we want the same aria props calculated as a typical row
575
- // @ts-ignore
576
- let { rowProps: rowProps } = (0, $5SMu3$reactaria.useTreeItem)({
586
+ let { isLoading: isLoading, onLoadMore: onLoadMore, scrollOffset: scrollOffset, ...otherProps } = props;
587
+ let sentinelRef = (0, $5SMu3$react.useRef)(null);
588
+ let memoedLoadMoreProps = (0, $5SMu3$react.useMemo)(()=>({
589
+ onLoadMore: onLoadMore,
590
+ // this collection will update anytime a row is expanded/collapsed becaused the flattenedRows will change.
591
+ // This means onLoadMore will trigger but that might be ok cause the user should have logic to handle multiple loadMore calls
592
+ collection: state === null || state === void 0 ? void 0 : state.collection,
593
+ sentinelRef: sentinelRef,
594
+ scrollOffset: scrollOffset
595
+ }), [
596
+ onLoadMore,
597
+ scrollOffset,
598
+ state === null || state === void 0 ? void 0 : state.collection
599
+ ]);
600
+ (0, $5SMu3$reactariautils.useLoadMoreSentinel)(memoedLoadMoreProps, sentinelRef);
601
+ ref = (0, $5SMu3$reactariautils.useObjectRef)(ref);
602
+ let { rowProps: rowProps, gridCellProps: gridCellProps } = (0, $5SMu3$reactaria.useTreeItem)({
577
603
  node: item
578
604
  }, state, ref);
579
605
  let level = rowProps['aria-level'] || 1;
606
+ // For now don't include aria-posinset and aria-setsize on loader since they aren't keyboard focusable
607
+ // Arguably shouldn't include them ever since it might be confusing to the user to include the loaders as part of the
608
+ // item count
580
609
  let ariaProps = {
581
- 'aria-level': rowProps['aria-level'],
582
- 'aria-posinset': rowProps['aria-posinset'],
583
- 'aria-setsize': rowProps['aria-setsize']
610
+ role: 'row',
611
+ 'aria-level': rowProps['aria-level']
584
612
  };
585
613
  let renderProps = (0, $c5ccf687772c0422$exports.useRenderProps)({
586
- ...props,
614
+ ...otherProps,
587
615
  id: undefined,
588
616
  children: item.rendered,
589
617
  defaultClassName: 'react-aria-TreeLoader',
@@ -591,15 +619,33 @@ const $c6576bb58bfa084b$export$9d1a587784d97b41 = (0, $5SMu3$reactariacollection
591
619
  level: level
592
620
  }
593
621
  });
622
+ let style = {};
623
+ if (isVirtualized) style = {
624
+ display: 'contents'
625
+ };
594
626
  return /*#__PURE__*/ (0, ($parcel$interopDefault($5SMu3$react))).createElement((0, ($parcel$interopDefault($5SMu3$react))).Fragment, null, /*#__PURE__*/ (0, ($parcel$interopDefault($5SMu3$react))).createElement("div", {
595
- role: "row",
627
+ style: {
628
+ position: 'relative',
629
+ width: 0,
630
+ height: 0
631
+ },
632
+ inert: (0, $5SMu3$reactariautils.inertValue)(true)
633
+ }, /*#__PURE__*/ (0, ($parcel$interopDefault($5SMu3$react))).createElement("div", {
634
+ "data-testid": "loadMoreSentinel",
635
+ ref: sentinelRef,
636
+ style: {
637
+ position: 'absolute',
638
+ height: 1,
639
+ width: 1
640
+ }
641
+ })), isLoading && renderProps.children && /*#__PURE__*/ (0, ($parcel$interopDefault($5SMu3$react))).createElement("div", {
596
642
  ref: ref,
597
643
  ...(0, $5SMu3$reactaria.mergeProps)((0, $5SMu3$reactariautils.filterDOMProps)(props), ariaProps),
598
644
  ...renderProps,
599
645
  "data-level": level
600
646
  }, /*#__PURE__*/ (0, ($parcel$interopDefault($5SMu3$react))).createElement("div", {
601
- role: "gridcell",
602
- "aria-colindex": 1
647
+ ...gridCellProps,
648
+ style: style
603
649
  }, renderProps.children)));
604
650
  });
605
651
  function $c6576bb58bfa084b$var$convertExpanded(expanded) {
@@ -610,6 +656,8 @@ function $c6576bb58bfa084b$var$flattenTree(collection, opts) {
610
656
  let { expandedKeys: expandedKeys = new Set() } = opts;
611
657
  let keyMap = new Map();
612
658
  let flattenedRows = [];
659
+ // Need to count the items here because BaseCollection will return the full item count regardless if items are hidden via collapsed rows
660
+ let itemCount = 0;
613
661
  let visitNode = (node)=>{
614
662
  if (node.type === 'item' || node.type === 'loader') {
615
663
  let parentKey = node === null || node === void 0 ? void 0 : node.parentKey;
@@ -628,15 +676,20 @@ function $c6576bb58bfa084b$var$flattenTree(collection, opts) {
628
676
  if (node.type === 'loader') clone.level = node.level + 1;
629
677
  keyMap.set(clone.key, clone);
630
678
  } else keyMap.set(node.key, node);
631
- if (node.level === 0 || parentKey != null && expandedKeys.has(parentKey) && flattenedRows.find((row)=>row.key === parentKey)) // Grab the modified node from the key map so our flattened list and modified key map point to the same nodes
632
- flattenedRows.push(keyMap.get(node.key) || node);
679
+ // Grab the modified node from the key map so our flattened list and modified key map point to the same nodes
680
+ let modifiedNode = keyMap.get(node.key) || node;
681
+ if (modifiedNode.level === 0 || modifiedNode.parentKey != null && expandedKeys.has(modifiedNode.parentKey) && flattenedRows.find((row)=>row.key === modifiedNode.parentKey)) {
682
+ if (modifiedNode.type === 'item') itemCount++;
683
+ flattenedRows.push(modifiedNode);
684
+ }
633
685
  } else if (node.type !== null) keyMap.set(node.key, node);
634
686
  for (let child of collection.getChildren(node.key))visitNode(child);
635
687
  };
636
688
  for (let node of collection)visitNode(node);
637
689
  return {
638
690
  flattenedRows: flattenedRows,
639
- keyMap: keyMap
691
+ keyMap: keyMap,
692
+ itemCount: itemCount
640
693
  };
641
694
  }
642
695
  function $c6576bb58bfa084b$var$TreeDropIndicatorWrapper(props, ref) {