@depup/react-aria-components 1.19.0-depup.27 → 1.21.0-depup.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.
- package/NavigationTree/package.json +5 -0
- package/PreviewTrigger/package.json +5 -0
- package/README.md +2 -2
- package/TokenField/package.json +5 -0
- package/changes.json +1 -1
- package/dist/exports/GridList.cjs.map +1 -1
- package/dist/exports/GridList.js.map +1 -1
- package/dist/exports/GridList.mjs.map +1 -1
- package/dist/exports/Menu.cjs +1 -0
- package/dist/exports/Menu.cjs.map +1 -1
- package/dist/exports/Menu.js +2 -2
- package/dist/exports/Menu.js.map +1 -1
- package/dist/exports/Menu.mjs +2 -2
- package/dist/exports/Menu.mjs.map +1 -1
- package/dist/exports/NavigationTree.cjs +37 -0
- package/dist/exports/NavigationTree.cjs.map +1 -0
- package/dist/exports/NavigationTree.js +25 -0
- package/dist/exports/NavigationTree.js.map +1 -0
- package/dist/exports/NavigationTree.mjs +25 -0
- package/dist/exports/NavigationTree.mjs.map +1 -0
- package/dist/exports/PreviewTrigger.cjs +26 -0
- package/dist/exports/PreviewTrigger.cjs.map +1 -0
- package/dist/exports/PreviewTrigger.js +21 -0
- package/dist/exports/PreviewTrigger.js.map +1 -0
- package/dist/exports/PreviewTrigger.mjs +21 -0
- package/dist/exports/PreviewTrigger.mjs.map +1 -0
- package/dist/exports/TokenField.cjs +31 -0
- package/dist/exports/TokenField.cjs.map +1 -0
- package/dist/exports/TokenField.js +21 -0
- package/dist/exports/TokenField.js.map +1 -0
- package/dist/exports/TokenField.mjs +21 -0
- package/dist/exports/TokenField.mjs.map +1 -0
- package/dist/exports/Tree.cjs.map +1 -1
- package/dist/exports/Tree.js.map +1 -1
- package/dist/exports/Tree.mjs.map +1 -1
- package/dist/exports/index.cjs +25 -0
- package/dist/exports/index.cjs.map +1 -1
- package/dist/exports/index.js +12 -2
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/index.mjs +12 -2
- package/dist/exports/index.mjs.map +1 -1
- package/dist/private/Checkbox.cjs.map +1 -1
- package/dist/private/Checkbox.js.map +1 -1
- package/dist/private/Checkbox.mjs.map +1 -1
- package/dist/private/ComboBox.cjs +21 -2
- package/dist/private/ComboBox.cjs.map +1 -1
- package/dist/private/ComboBox.js +21 -2
- package/dist/private/ComboBox.js.map +1 -1
- package/dist/private/ComboBox.mjs +21 -2
- package/dist/private/ComboBox.mjs.map +1 -1
- package/dist/private/Dialog.cjs +21 -1
- package/dist/private/Dialog.cjs.map +1 -1
- package/dist/private/Dialog.js +21 -1
- package/dist/private/Dialog.js.map +1 -1
- package/dist/private/Dialog.mjs +21 -1
- package/dist/private/Dialog.mjs.map +1 -1
- package/dist/private/DragAndDrop.cjs +1 -0
- package/dist/private/DragAndDrop.cjs.map +1 -1
- package/dist/private/DragAndDrop.js +1 -0
- package/dist/private/DragAndDrop.js.map +1 -1
- package/dist/private/DragAndDrop.mjs +1 -0
- package/dist/private/DragAndDrop.mjs.map +1 -1
- package/dist/private/DropZone.cjs +5 -2
- package/dist/private/DropZone.cjs.map +1 -1
- package/dist/private/DropZone.js +5 -3
- package/dist/private/DropZone.js.map +1 -1
- package/dist/private/DropZone.mjs +5 -2
- package/dist/private/DropZone.mjs.map +1 -1
- package/dist/private/FileTrigger.cjs +1 -0
- package/dist/private/FileTrigger.cjs.map +1 -1
- package/dist/private/FileTrigger.js +1 -0
- package/dist/private/FileTrigger.js.map +1 -1
- package/dist/private/FileTrigger.mjs +1 -0
- package/dist/private/FileTrigger.mjs.map +1 -1
- package/dist/private/GridLayout.cjs +3 -1
- package/dist/private/GridLayout.cjs.map +1 -1
- package/dist/private/GridLayout.js +3 -1
- package/dist/private/GridLayout.js.map +1 -1
- package/dist/private/GridLayout.mjs +3 -1
- package/dist/private/GridLayout.mjs.map +1 -1
- package/dist/private/GridList.cjs +12 -1
- package/dist/private/GridList.cjs.map +1 -1
- package/dist/private/GridList.js +12 -1
- package/dist/private/GridList.js.map +1 -1
- package/dist/private/GridList.mjs +12 -1
- package/dist/private/GridList.mjs.map +1 -1
- package/dist/private/ListBox.cjs +9 -1
- package/dist/private/ListBox.cjs.map +1 -1
- package/dist/private/ListBox.js +9 -1
- package/dist/private/ListBox.js.map +1 -1
- package/dist/private/ListBox.mjs +9 -1
- package/dist/private/ListBox.mjs.map +1 -1
- package/dist/private/Menu.cjs +59 -2
- package/dist/private/Menu.cjs.map +1 -1
- package/dist/private/Menu.js +60 -4
- package/dist/private/Menu.js.map +1 -1
- package/dist/private/Menu.mjs +60 -4
- package/dist/private/Menu.mjs.map +1 -1
- package/dist/private/Meter.cjs +2 -1
- package/dist/private/Meter.cjs.map +1 -1
- package/dist/private/Meter.js +2 -1
- package/dist/private/Meter.js.map +1 -1
- package/dist/private/Meter.mjs +2 -1
- package/dist/private/Meter.mjs.map +1 -1
- package/dist/private/Modal.cjs +2 -0
- package/dist/private/Modal.cjs.map +1 -1
- package/dist/private/Modal.js +2 -0
- package/dist/private/Modal.js.map +1 -1
- package/dist/private/Modal.mjs +2 -0
- package/dist/private/Modal.mjs.map +1 -1
- package/dist/private/NavigationTree.cjs +272 -0
- package/dist/private/NavigationTree.cjs.map +1 -0
- package/dist/private/NavigationTree.js +258 -0
- package/dist/private/NavigationTree.js.map +1 -0
- package/dist/private/NavigationTree.mjs +257 -0
- package/dist/private/NavigationTree.mjs.map +1 -0
- package/dist/private/Popover.cjs +34 -9
- package/dist/private/Popover.cjs.map +1 -1
- package/dist/private/Popover.js +34 -9
- package/dist/private/Popover.js.map +1 -1
- package/dist/private/Popover.mjs +34 -9
- package/dist/private/Popover.mjs.map +1 -1
- package/dist/private/PreviewTrigger.cjs +88 -0
- package/dist/private/PreviewTrigger.cjs.map +1 -0
- package/dist/private/PreviewTrigger.js +80 -0
- package/dist/private/PreviewTrigger.js.map +1 -0
- package/dist/private/PreviewTrigger.mjs +79 -0
- package/dist/private/PreviewTrigger.mjs.map +1 -0
- package/dist/private/ProgressBar.cjs +6 -1
- package/dist/private/ProgressBar.cjs.map +1 -1
- package/dist/private/ProgressBar.js +6 -1
- package/dist/private/ProgressBar.js.map +1 -1
- package/dist/private/ProgressBar.mjs +6 -1
- package/dist/private/ProgressBar.mjs.map +1 -1
- package/dist/private/RadioGroup.cjs.map +1 -1
- package/dist/private/RadioGroup.js.map +1 -1
- package/dist/private/RadioGroup.mjs.map +1 -1
- package/dist/private/Select.cjs.map +1 -1
- package/dist/private/Select.js.map +1 -1
- package/dist/private/Select.mjs.map +1 -1
- package/dist/private/Switch.cjs +8 -2
- package/dist/private/Switch.cjs.map +1 -1
- package/dist/private/Switch.js +9 -3
- package/dist/private/Switch.js.map +1 -1
- package/dist/private/Switch.mjs +9 -3
- package/dist/private/Switch.mjs.map +1 -1
- package/dist/private/Table.cjs +26 -14
- package/dist/private/Table.cjs.map +1 -1
- package/dist/private/Table.js +26 -14
- package/dist/private/Table.js.map +1 -1
- package/dist/private/Table.mjs +26 -14
- package/dist/private/Table.mjs.map +1 -1
- package/dist/private/TableLayout.cjs +3 -1
- package/dist/private/TableLayout.cjs.map +1 -1
- package/dist/private/TableLayout.js +3 -1
- package/dist/private/TableLayout.js.map +1 -1
- package/dist/private/TableLayout.mjs +3 -1
- package/dist/private/TableLayout.mjs.map +1 -1
- package/dist/private/TagGroup.cjs +1 -0
- package/dist/private/TagGroup.cjs.map +1 -1
- package/dist/private/TagGroup.js +1 -0
- package/dist/private/TagGroup.js.map +1 -1
- package/dist/private/TagGroup.mjs +1 -0
- package/dist/private/TagGroup.mjs.map +1 -1
- package/dist/private/Text.cjs +3 -1
- package/dist/private/Text.cjs.map +1 -1
- package/dist/private/Text.js +4 -2
- package/dist/private/Text.js.map +1 -1
- package/dist/private/Text.mjs +4 -2
- package/dist/private/Text.mjs.map +1 -1
- package/dist/private/ToggleButton.cjs.map +1 -1
- package/dist/private/ToggleButton.js.map +1 -1
- package/dist/private/ToggleButton.mjs.map +1 -1
- package/dist/private/TokenField.cjs +235 -0
- package/dist/private/TokenField.cjs.map +1 -0
- package/dist/private/TokenField.js +225 -0
- package/dist/private/TokenField.js.map +1 -0
- package/dist/private/TokenField.mjs +223 -0
- package/dist/private/TokenField.mjs.map +1 -0
- package/dist/private/Tooltip.cjs +10 -2
- package/dist/private/Tooltip.cjs.map +1 -1
- package/dist/private/Tooltip.js +10 -2
- package/dist/private/Tooltip.js.map +1 -1
- package/dist/private/Tooltip.mjs +10 -2
- package/dist/private/Tooltip.mjs.map +1 -1
- package/dist/private/Tree.cjs +11 -1
- package/dist/private/Tree.cjs.map +1 -1
- package/dist/private/Tree.js +11 -1
- package/dist/private/Tree.js.map +1 -1
- package/dist/private/Tree.mjs +11 -1
- package/dist/private/Tree.mjs.map +1 -1
- package/dist/private/TreeDropTargetDelegate.cjs +11 -6
- package/dist/private/TreeDropTargetDelegate.cjs.map +1 -1
- package/dist/private/TreeDropTargetDelegate.js +11 -6
- package/dist/private/TreeDropTargetDelegate.js.map +1 -1
- package/dist/private/TreeDropTargetDelegate.mjs +11 -6
- package/dist/private/TreeDropTargetDelegate.mjs.map +1 -1
- package/dist/private/Virtualizer.cjs +18 -16
- package/dist/private/Virtualizer.cjs.map +1 -1
- package/dist/private/Virtualizer.js +18 -16
- package/dist/private/Virtualizer.js.map +1 -1
- package/dist/private/Virtualizer.mjs +18 -16
- package/dist/private/Virtualizer.mjs.map +1 -1
- package/dist/private/useDragAndDrop.cjs +7 -0
- package/dist/private/useDragAndDrop.cjs.map +1 -1
- package/dist/private/useDragAndDrop.js +7 -0
- package/dist/private/useDragAndDrop.js.map +1 -1
- package/dist/private/useDragAndDrop.mjs +7 -0
- package/dist/private/useDragAndDrop.mjs.map +1 -1
- package/dist/private/utils.cjs.map +1 -1
- package/dist/private/utils.js.map +1 -1
- package/dist/private/utils.mjs.map +1 -1
- package/dist/types/exports/GridList.d.ts +1 -1
- package/dist/types/exports/Menu.d.ts +2 -2
- package/dist/types/exports/NavigationTree.d.ts +8 -0
- package/dist/types/exports/PreviewTrigger.d.ts +3 -0
- package/dist/types/exports/TokenField.d.ts +5 -0
- package/dist/types/exports/Tree.d.ts +1 -1
- package/dist/types/exports/index.d.ts +14 -5
- package/dist/types/src/Breadcrumbs.d.ts +2 -2
- package/dist/types/src/Button.d.ts +1 -1
- package/dist/types/src/Calendar.d.ts +6 -6
- package/dist/types/src/Checkbox.d.ts +8 -8
- package/dist/types/src/Collection.d.ts +1 -1
- package/dist/types/src/ComboBox.d.ts +6 -3
- package/dist/types/src/DateField.d.ts +4 -4
- package/dist/types/src/DatePicker.d.ts +2 -2
- package/dist/types/src/Dialog.d.ts +2 -2
- package/dist/types/src/Disclosure.d.ts +2 -2
- package/dist/types/src/GridList.d.ts +18 -7
- package/dist/types/src/Group.d.ts +1 -1
- package/dist/types/src/Header.d.ts +1 -1
- package/dist/types/src/Input.d.ts +1 -1
- package/dist/types/src/Label.d.ts +1 -1
- package/dist/types/src/Link.d.ts +1 -1
- package/dist/types/src/ListBox.d.ts +6 -6
- package/dist/types/src/Menu.d.ts +25 -6
- package/dist/types/src/Meter.d.ts +1 -1
- package/dist/types/src/Modal.d.ts +2 -2
- package/dist/types/src/NavigationTree.d.ts +80 -0
- package/dist/types/src/NumberField.d.ts +1 -1
- package/dist/types/src/OverlayArrow.d.ts +1 -1
- package/dist/types/src/Popover.d.ts +8 -1
- package/dist/types/src/PreviewTrigger.d.ts +23 -0
- package/dist/types/src/RadioGroup.d.ts +8 -8
- package/dist/types/src/SearchField.d.ts +1 -1
- package/dist/types/src/Select.d.ts +3 -3
- package/dist/types/src/Separator.d.ts +1 -1
- package/dist/types/src/Slider.d.ts +5 -5
- package/dist/types/src/Switch.d.ts +7 -7
- package/dist/types/src/Table.d.ts +32 -8
- package/dist/types/src/Tabs.d.ts +5 -5
- package/dist/types/src/TagGroup.d.ts +3 -3
- package/dist/types/src/Text.d.ts +1 -1
- package/dist/types/src/TextField.d.ts +1 -1
- package/dist/types/src/Toast.d.ts +3 -3
- package/dist/types/src/ToggleButton.d.ts +1 -1
- package/dist/types/src/ToggleButtonGroup.d.ts +1 -1
- package/dist/types/src/TokenField.d.ts +111 -0
- package/dist/types/src/Toolbar.d.ts +1 -1
- package/dist/types/src/Tooltip.d.ts +1 -1
- package/dist/types/src/Tree.d.ts +12 -10
- package/dist/types/src/Virtualizer.d.ts +4 -0
- package/dist/types/src/utils.d.ts +19 -5
- package/i18n/ar-AE.js +1 -1
- package/i18n/ar-AE.mjs +1 -1
- package/i18n/bg-BG.js +1 -1
- package/i18n/bg-BG.mjs +1 -1
- package/i18n/cs-CZ.js +1 -1
- package/i18n/cs-CZ.mjs +1 -1
- package/i18n/da-DK.js +1 -1
- package/i18n/da-DK.mjs +1 -1
- package/i18n/de-DE.js +1 -1
- package/i18n/de-DE.mjs +1 -1
- package/i18n/el-GR.js +1 -1
- package/i18n/el-GR.mjs +1 -1
- package/i18n/en-US.js +1 -1
- package/i18n/en-US.mjs +1 -1
- package/i18n/es-ES.js +1 -1
- package/i18n/es-ES.mjs +1 -1
- package/i18n/et-EE.js +1 -1
- package/i18n/et-EE.mjs +1 -1
- package/i18n/fi-FI.js +1 -1
- package/i18n/fi-FI.mjs +1 -1
- package/i18n/fr-FR.js +1 -1
- package/i18n/fr-FR.mjs +1 -1
- package/i18n/he-IL.js +1 -1
- package/i18n/he-IL.mjs +1 -1
- package/i18n/hr-HR.js +1 -1
- package/i18n/hr-HR.mjs +1 -1
- package/i18n/hu-HU.js +1 -1
- package/i18n/hu-HU.mjs +1 -1
- package/i18n/it-IT.js +1 -1
- package/i18n/it-IT.mjs +1 -1
- package/i18n/ja-JP.js +1 -1
- package/i18n/ja-JP.mjs +1 -1
- package/i18n/ko-KR.js +1 -1
- package/i18n/ko-KR.mjs +1 -1
- package/i18n/lt-LT.js +1 -1
- package/i18n/lt-LT.mjs +1 -1
- package/i18n/lv-LV.js +1 -1
- package/i18n/lv-LV.mjs +1 -1
- package/i18n/nb-NO.js +1 -1
- package/i18n/nb-NO.mjs +1 -1
- package/i18n/nl-NL.js +1 -1
- package/i18n/nl-NL.mjs +1 -1
- package/i18n/pl-PL.js +1 -1
- package/i18n/pl-PL.mjs +1 -1
- package/i18n/pt-BR.js +1 -1
- package/i18n/pt-BR.mjs +1 -1
- package/i18n/pt-PT.js +1 -1
- package/i18n/pt-PT.mjs +1 -1
- package/i18n/ro-RO.js +1 -1
- package/i18n/ro-RO.mjs +1 -1
- package/i18n/ru-RU.js +1 -1
- package/i18n/ru-RU.mjs +1 -1
- package/i18n/sk-SK.js +1 -1
- package/i18n/sk-SK.mjs +1 -1
- package/i18n/sl-SI.js +1 -1
- package/i18n/sl-SI.mjs +1 -1
- package/i18n/sr-SP.js +1 -1
- package/i18n/sr-SP.mjs +1 -1
- package/i18n/sv-SE.js +1 -1
- package/i18n/sv-SE.mjs +1 -1
- package/i18n/tr-TR.js +1 -1
- package/i18n/tr-TR.mjs +1 -1
- package/i18n/uk-UA.js +1 -1
- package/i18n/uk-UA.mjs +1 -1
- package/i18n/zh-CN.js +1 -1
- package/i18n/zh-CN.mjs +1 -1
- package/i18n/zh-TW.js +1 -1
- package/i18n/zh-TW.mjs +1 -1
- package/package.json +33 -31
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import {dom as $7230ffa83bc0c2cf$export$df3a06d6289f983e, Provider as $7230ffa83bc0c2cf$export$2881499e37b75b9a, useContextProps as $7230ffa83bc0c2cf$export$29f1550f4b0d4415, useRenderProps as $7230ffa83bc0c2cf$export$4d86445c2cf5e3, useSlot as $7230ffa83bc0c2cf$export$9d4c57ee4c6ffdd8, useSlottedContext as $7230ffa83bc0c2cf$export$fabf2dc03a41866e} from "./utils.mjs";
|
|
2
|
+
import {FieldInputContext as $4b38b5b75ecc6208$export$698f465ec27e93df} from "./Autocomplete.mjs";
|
|
3
|
+
import {LabelContext as $43a3b93638fe5db9$export$75b6ee27786ba447} from "./Label.mjs";
|
|
4
|
+
import {TextContext as $efe09c6d1c304b50$export$9afb8bc826b033ea} from "./Text.mjs";
|
|
5
|
+
import {createHideableComponent as $iRP3W$createHideableComponent} from "react-aria/private/collections/Hidden";
|
|
6
|
+
import {filterDOMProps as $iRP3W$filterDOMProps} from "react-aria/filterDOMProps";
|
|
7
|
+
import {useHover as $iRP3W$useHover} from "react-aria/useHover";
|
|
8
|
+
import {isDocument as $iRP3W$isDocument, isShadowRoot as $iRP3W$isShadowRoot} from "react-aria/private/utils/domHelpers";
|
|
9
|
+
import {mergeProps as $iRP3W$mergeProps} from "react-aria/mergeProps";
|
|
10
|
+
import {mergeRefs as $iRP3W$mergeRefs} from "react-aria/mergeRefs";
|
|
11
|
+
import $iRP3W$react, {createContext as $iRP3W$createContext, forwardRef as $iRP3W$forwardRef, useContext as $iRP3W$useContext, useMemo as $iRP3W$useMemo, memo as $iRP3W$memo} from "react";
|
|
12
|
+
import {useTokenFieldState as $iRP3W$useTokenFieldState} from "react-stately/useTokenFieldState";
|
|
13
|
+
import {useFocusRing as $iRP3W$useFocusRing} from "react-aria/useFocusRing";
|
|
14
|
+
import {useLayoutEffect as $iRP3W$useLayoutEffect} from "react-aria/private/utils/useLayoutEffect";
|
|
15
|
+
import {useObjectRef as $iRP3W$useObjectRef} from "react-aria/useObjectRef";
|
|
16
|
+
import {useTokenField as $iRP3W$useTokenField, useToken as $iRP3W$useToken} from "react-aria/useTokenField";
|
|
17
|
+
|
|
18
|
+
/*
|
|
19
|
+
* Copyright 2026 Adobe. All rights reserved.
|
|
20
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
21
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
22
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
23
|
+
*
|
|
24
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
25
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
26
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
27
|
+
* governing permissions and limitations under the License.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
const $45dd9fe7ca53fba4$export$24532e5e37c56ff2 = /*#__PURE__*/ (0, $iRP3W$createContext)(null);
|
|
45
|
+
const $45dd9fe7ca53fba4$var$TokenInputContext = /*#__PURE__*/ (0, $iRP3W$createContext)(null);
|
|
46
|
+
const $45dd9fe7ca53fba4$export$e4550c392cbe69d7 = /*#__PURE__*/ (0, $iRP3W$createHideableComponent)(function TokenField(props, ref) {
|
|
47
|
+
[props, ref] = (0, $7230ffa83bc0c2cf$export$29f1550f4b0d4415)(props, ref, $45dd9fe7ca53fba4$export$24532e5e37c56ff2);
|
|
48
|
+
let [labelRef, label] = (0, $7230ffa83bc0c2cf$export$9d4c57ee4c6ffdd8)(!props['aria-label'] && !props['aria-labelledby']);
|
|
49
|
+
let fieldCtx = (0, $7230ffa83bc0c2cf$export$fabf2dc03a41866e)((0, $4b38b5b75ecc6208$export$698f465ec27e93df), props.slot);
|
|
50
|
+
let { value: _autocompleteValue, onChange: onAutocompleteChange, ref: autocompleteRef, ...autocompleteProps } = fieldCtx ?? {};
|
|
51
|
+
let inputRef = (0, $iRP3W$useObjectRef)(autocompleteRef);
|
|
52
|
+
let isDisabled = props.isDisabled || false;
|
|
53
|
+
let isReadOnly = props.isReadOnly || false;
|
|
54
|
+
let state = (0, $iRP3W$useTokenFieldState)({
|
|
55
|
+
...props,
|
|
56
|
+
onChange: (value)=>{
|
|
57
|
+
props.onChange?.(value);
|
|
58
|
+
onAutocompleteChange?.(value.toString());
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
let { tokenFieldProps: tokenFieldProps, labelProps: labelProps, descriptionProps: descriptionProps } = (0, $iRP3W$useTokenField)({
|
|
62
|
+
...props,
|
|
63
|
+
label: // @ts-ignore - not a public prop, used to determine if slot is present
|
|
64
|
+
label,
|
|
65
|
+
role: props.role || autocompleteProps['role'] || 'textbox'
|
|
66
|
+
}, state, inputRef);
|
|
67
|
+
let renderProps = (0, $7230ffa83bc0c2cf$export$4d86445c2cf5e3)({
|
|
68
|
+
...props,
|
|
69
|
+
values: {
|
|
70
|
+
isDisabled: isDisabled,
|
|
71
|
+
isReadOnly: isReadOnly
|
|
72
|
+
},
|
|
73
|
+
defaultClassName: 'react-aria-TokenField'
|
|
74
|
+
});
|
|
75
|
+
let DOMProps = (0, $iRP3W$filterDOMProps)(props, {
|
|
76
|
+
global: true
|
|
77
|
+
});
|
|
78
|
+
return /*#__PURE__*/ (0, $iRP3W$react).createElement((0, $7230ffa83bc0c2cf$export$df3a06d6289f983e).div, {
|
|
79
|
+
...DOMProps,
|
|
80
|
+
...renderProps,
|
|
81
|
+
ref: ref,
|
|
82
|
+
slot: props.slot || undefined,
|
|
83
|
+
"data-disabled": isDisabled || undefined,
|
|
84
|
+
"data-readonly": isReadOnly || undefined
|
|
85
|
+
}, /*#__PURE__*/ (0, $iRP3W$react).createElement((0, $7230ffa83bc0c2cf$export$2881499e37b75b9a), {
|
|
86
|
+
values: [
|
|
87
|
+
[
|
|
88
|
+
(0, $43a3b93638fe5db9$export$75b6ee27786ba447),
|
|
89
|
+
{
|
|
90
|
+
...labelProps,
|
|
91
|
+
elementType: 'span',
|
|
92
|
+
ref: labelRef
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
[
|
|
96
|
+
(0, $efe09c6d1c304b50$export$9afb8bc826b033ea),
|
|
97
|
+
{
|
|
98
|
+
slots: {
|
|
99
|
+
description: descriptionProps
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
[
|
|
104
|
+
$45dd9fe7ca53fba4$var$TokenInputContext,
|
|
105
|
+
{
|
|
106
|
+
tokenFieldProps: tokenFieldProps,
|
|
107
|
+
state: state,
|
|
108
|
+
isDisabled: isDisabled,
|
|
109
|
+
isReadOnly: isReadOnly,
|
|
110
|
+
autocompleteProps: autocompleteProps,
|
|
111
|
+
ref: inputRef
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
]
|
|
115
|
+
}, renderProps.children));
|
|
116
|
+
});
|
|
117
|
+
const $45dd9fe7ca53fba4$export$4ddf413e820cfcc4 = /*#__PURE__*/ (0, $iRP3W$forwardRef)(function TokenInput(props, forwardedRef) {
|
|
118
|
+
let { tokenFieldProps: tokenFieldProps, state: state, isDisabled: isDisabled = false, isReadOnly: isReadOnly = false, autocompleteProps: autocompleteProps, ref: contextRef } = (0, $iRP3W$useContext)($45dd9fe7ca53fba4$var$TokenInputContext);
|
|
119
|
+
let ref = (0, $iRP3W$useMemo)(()=>(0, $iRP3W$mergeRefs)(contextRef, forwardedRef), [
|
|
120
|
+
contextRef,
|
|
121
|
+
forwardedRef
|
|
122
|
+
]);
|
|
123
|
+
let { children: children, ...domProps } = props;
|
|
124
|
+
let { isHovered: isHovered, hoverProps: hoverProps } = (0, $iRP3W$useHover)(domProps);
|
|
125
|
+
let { isFocused: isFocused, isFocusVisible: isFocusVisible, focusProps: focusProps } = (0, $iRP3W$useFocusRing)();
|
|
126
|
+
let renderProps = (0, $7230ffa83bc0c2cf$export$4d86445c2cf5e3)({
|
|
127
|
+
...domProps,
|
|
128
|
+
defaultClassName: 'react-aria-TokenInput',
|
|
129
|
+
values: {
|
|
130
|
+
isHovered: isHovered,
|
|
131
|
+
isFocused: isFocused,
|
|
132
|
+
isFocusVisible: isFocusVisible,
|
|
133
|
+
isDisabled: isDisabled,
|
|
134
|
+
isReadOnly: isReadOnly
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
let DOMProps = (0, $iRP3W$filterDOMProps)(domProps, {
|
|
138
|
+
global: true
|
|
139
|
+
});
|
|
140
|
+
let objectRef = (0, $iRP3W$useObjectRef)(ref);
|
|
141
|
+
(0, $iRP3W$useLayoutEffect)(()=>$45dd9fe7ca53fba4$var$insertSelectionStyle(objectRef), [
|
|
142
|
+
objectRef
|
|
143
|
+
]);
|
|
144
|
+
return /*#__PURE__*/ (0, $iRP3W$react).createElement((0, $7230ffa83bc0c2cf$export$df3a06d6289f983e).div, {
|
|
145
|
+
...(0, $iRP3W$mergeProps)(DOMProps, renderProps, focusProps, hoverProps, tokenFieldProps, autocompleteProps),
|
|
146
|
+
ref: objectRef,
|
|
147
|
+
"data-focused": isFocused || undefined,
|
|
148
|
+
"data-focus-visible": isFocusVisible || undefined,
|
|
149
|
+
"data-disabled": isDisabled || undefined,
|
|
150
|
+
"data-readonly": isReadOnly || undefined,
|
|
151
|
+
style: {
|
|
152
|
+
...renderProps.style,
|
|
153
|
+
...tokenFieldProps?.style
|
|
154
|
+
}
|
|
155
|
+
}, /*#__PURE__*/ (0, $iRP3W$react).createElement($45dd9fe7ca53fba4$var$CompositionRenderBlocker, {
|
|
156
|
+
isComposing: state.isComposing
|
|
157
|
+
}, state.value.segments.map((v, i)=>{
|
|
158
|
+
switch(v.type){
|
|
159
|
+
case 'token':
|
|
160
|
+
{
|
|
161
|
+
let token = children(v);
|
|
162
|
+
return(// Wrap tokens in zero-width spaces so the cursor is placed correctly.
|
|
163
|
+
/*#__PURE__*/ (0, $iRP3W$react).createElement("span", {
|
|
164
|
+
key: i,
|
|
165
|
+
"data-react-aria-token": true
|
|
166
|
+
}, '\u200b', token, '\u200b'));
|
|
167
|
+
}
|
|
168
|
+
case 'text':
|
|
169
|
+
return v.text;
|
|
170
|
+
}
|
|
171
|
+
}), state.value.segments.at(-1)?.text.endsWith('\n') && /*#__PURE__*/ (0, $iRP3W$react).createElement("br", null)));
|
|
172
|
+
});
|
|
173
|
+
const $45dd9fe7ca53fba4$export$50792b0e93539fde = /*#__PURE__*/ (0, $iRP3W$forwardRef)(function Token(props, ref) {
|
|
174
|
+
let { isDisabled: isDisabled } = (0, $iRP3W$useContext)($45dd9fe7ca53fba4$var$TokenInputContext);
|
|
175
|
+
let objectRef = (0, $iRP3W$useObjectRef)(ref);
|
|
176
|
+
let { tokenProps: tokenProps, isSelected: isSelected } = (0, $iRP3W$useToken)(props, {}, objectRef);
|
|
177
|
+
let renderProps = (0, $7230ffa83bc0c2cf$export$4d86445c2cf5e3)({
|
|
178
|
+
...props,
|
|
179
|
+
defaultClassName: 'react-aria-Token',
|
|
180
|
+
values: {
|
|
181
|
+
isSelected: isSelected,
|
|
182
|
+
isDisabled: isDisabled
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
let DOMProps = (0, $iRP3W$filterDOMProps)(props, {
|
|
186
|
+
global: true
|
|
187
|
+
});
|
|
188
|
+
return /*#__PURE__*/ (0, $iRP3W$react).createElement((0, $7230ffa83bc0c2cf$export$df3a06d6289f983e).span, {
|
|
189
|
+
ref: objectRef,
|
|
190
|
+
...(0, $iRP3W$mergeProps)(DOMProps, renderProps, tokenProps),
|
|
191
|
+
"data-selected": isSelected || undefined,
|
|
192
|
+
"data-disabled": isDisabled || undefined,
|
|
193
|
+
style: {
|
|
194
|
+
...renderProps.style,
|
|
195
|
+
...tokenProps.style
|
|
196
|
+
}
|
|
197
|
+
}, renderProps.children);
|
|
198
|
+
});
|
|
199
|
+
// Prevents React from re-rendering during composition events.
|
|
200
|
+
const $45dd9fe7ca53fba4$var$CompositionRenderBlocker = /*#__PURE__*/ (0, $iRP3W$memo)(({ children: children })=>children, (prevProps, nextProps)=>nextProps.isComposing ? true : prevProps.children === nextProps.children);
|
|
201
|
+
// Inserts a stylesheet into the document / shadow root that hides the native text selection on tokens.
|
|
202
|
+
function $45dd9fe7ca53fba4$var$insertSelectionStyle(ref) {
|
|
203
|
+
if (typeof CSSStyleSheet !== 'function' || !ref || !ref.current) return;
|
|
204
|
+
let root = ref.current.getRootNode();
|
|
205
|
+
if (!(0, $iRP3W$isDocument)(root) && !(0, $iRP3W$isShadowRoot)(root)) return;
|
|
206
|
+
if (!root.adoptedStyleSheets) return;
|
|
207
|
+
// Skip if we already inserted it.
|
|
208
|
+
let sym = Symbol.for('react-aria-token-style');
|
|
209
|
+
if (root.adoptedStyleSheets.some((s)=>s[sym])) return;
|
|
210
|
+
let style = new CSSStyleSheet();
|
|
211
|
+
style[sym] = true;
|
|
212
|
+
// Firefox ignores completely transparent selection colors, so use a nearly transparent color instead.
|
|
213
|
+
style.replaceSync('[data-react-aria-token]::selection,[data-react-aria-token]>*::selection{background:#ffffff01}');
|
|
214
|
+
root.adoptedStyleSheets.push(style);
|
|
215
|
+
return ()=>{
|
|
216
|
+
let index = root.adoptedStyleSheets.indexOf(style);
|
|
217
|
+
if (index >= 0) root.adoptedStyleSheets.splice(index, 1);
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
export {$45dd9fe7ca53fba4$export$24532e5e37c56ff2 as TokenFieldContext, $45dd9fe7ca53fba4$export$e4550c392cbe69d7 as TokenField, $45dd9fe7ca53fba4$export$4ddf413e820cfcc4 as TokenInput, $45dd9fe7ca53fba4$export$50792b0e93539fde as Token};
|
|
223
|
+
//# sourceMappingURL=TokenField.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"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","sources":["packages/react-aria-components/src/TokenField.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 {AriaTokenFieldProps} from 'react-aria/useTokenField';\nimport {\n ClassNameOrFunction,\n ContextValue,\n dom,\n Provider,\n RenderProps,\n SlotProps,\n StyleRenderProps,\n useContextProps,\n useRenderProps,\n useSlot,\n useSlottedContext\n} from './utils';\nimport {createHideableComponent} from 'react-aria/private/collections/Hidden';\nimport {FieldInputContext} from './Autocomplete';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {forwardRefType, GlobalDOMAttributes} from '@react-types/shared';\nimport {HoverProps, useHover} from 'react-aria/useHover';\nimport {isDocument, isShadowRoot} from 'react-aria/private/utils/domHelpers';\nimport {LabelContext} from './Label';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {mergeRefs} from 'react-aria/mergeRefs';\nimport React, {\n createContext,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n memo,\n RefObject,\n useContext,\n useMemo\n} from 'react';\nimport {TextContext} from './Text';\nimport {\n TokenFieldState,\n TokenFieldValue,\n TokenSegment,\n useTokenFieldState\n} from 'react-stately/useTokenFieldState';\nimport {useFocusRing} from 'react-aria/useFocusRing';\nimport {useLayoutEffect} from 'react-aria/private/utils/useLayoutEffect';\nimport {useObjectRef} from 'react-aria/useObjectRef';\nimport {useToken, useTokenField} from 'react-aria/useTokenField';\n\nexport interface TokenFieldRenderProps {\n /**\n * Whether the token field is disabled.\n *\n * @selector [data-disabled]\n */\n isDisabled: boolean;\n /**\n * Whether the token field is read only.\n *\n * @selector [data-readonly]\n */\n isReadOnly: boolean;\n}\n\nexport interface TokenFieldProps<T extends TokenFieldValue = TokenFieldValue>\n extends\n AriaTokenFieldProps<T>,\n RenderProps<TokenFieldRenderProps>,\n SlotProps,\n GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-TokenField'\n */\n className?: ClassNameOrFunction<TokenFieldRenderProps>;\n}\n\nexport interface TokenInputRenderProps {\n /**\n * Whether the token input is currently hovered with a mouse.\n *\n * @selector [data-hovered]\n */\n isHovered: boolean;\n /**\n * Whether the token input is focused, either via a mouse or keyboard.\n *\n * @selector [data-focused]\n */\n isFocused: boolean;\n /**\n * Whether the token input is keyboard focused.\n *\n * @selector [data-focus-visible]\n */\n isFocusVisible: boolean;\n /**\n * Whether the token input is disabled.\n *\n * @selector [data-disabled]\n */\n isDisabled: boolean;\n /**\n * Whether the token input is read only.\n *\n * @selector [data-readonly]\n */\n isReadOnly: boolean;\n}\n\nexport interface TokenInputProps<T extends TokenFieldValue = TokenFieldValue>\n extends\n HoverProps,\n StyleRenderProps<TokenInputRenderProps>,\n SlotProps,\n GlobalDOMAttributes<HTMLDivElement> {\n /**\n * A function that renders a token for each segment in the token field.\n */\n children: (\n segment: TokenSegment<T extends TokenFieldValue<infer V> ? V : never>\n ) => React.ReactElement;\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-TokenInput'\n */\n className?: ClassNameOrFunction<TokenInputRenderProps>;\n}\n\ninterface TokenInputContextValue<T extends TokenFieldValue = TokenFieldValue> {\n tokenFieldProps: HTMLAttributes<HTMLDivElement>;\n state: TokenFieldState<T>;\n isDisabled: boolean;\n isReadOnly: boolean;\n autocompleteProps?: HTMLAttributes<HTMLDivElement>;\n ref: RefObject<HTMLDivElement | null>;\n}\n\nexport const TokenFieldContext = createContext<ContextValue<TokenFieldProps, HTMLDivElement>>(null);\nconst TokenInputContext = createContext<TokenInputContextValue | null>(null);\n\n/**\n * A token field allows users to enter text with inline tokens. Use it to build AI prompt fields,\n * tag inputs, structured search fields, mention inputs, and multi-select comboboxes.\n */\nexport const TokenField = /*#__PURE__*/ createHideableComponent(function TokenField<\n T extends TokenFieldValue = TokenFieldValue\n>(props: TokenFieldProps<T>, ref: ForwardedRef<HTMLDivElement>) {\n [props, ref] = useContextProps(props, ref, TokenFieldContext);\n let [labelRef, label] = useSlot(!props['aria-label'] && !props['aria-labelledby']);\n\n let fieldCtx = useSlottedContext(FieldInputContext, props.slot);\n let {\n value: _autocompleteValue,\n onChange: onAutocompleteChange,\n ref: autocompleteRef,\n ...autocompleteProps\n } = fieldCtx ?? {};\n let inputRef = useObjectRef(autocompleteRef);\n\n let isDisabled = props.isDisabled || false;\n let isReadOnly = props.isReadOnly || false;\n\n let state = useTokenFieldState<T>({\n ...props,\n onChange: (value: T) => {\n props.onChange?.(value);\n onAutocompleteChange?.(value.toString());\n }\n });\n\n let {tokenFieldProps, labelProps, descriptionProps} = useTokenField(\n {\n ...props,\n // @ts-ignore - not a public prop, used to determine if slot is present\n label,\n role: props.role || autocompleteProps['role'] || 'textbox'\n },\n state,\n inputRef\n );\n\n let renderProps = useRenderProps({\n ...props,\n values: {\n isDisabled,\n isReadOnly\n },\n defaultClassName: 'react-aria-TokenField'\n });\n\n let DOMProps = filterDOMProps(props, {global: true});\n\n return (\n <dom.div\n {...DOMProps}\n {...renderProps}\n ref={ref}\n slot={props.slot || undefined}\n data-disabled={isDisabled || undefined}\n data-readonly={isReadOnly || undefined}>\n <Provider\n values={[\n [LabelContext, {...labelProps, elementType: 'span', ref: labelRef}],\n [\n TextContext,\n {\n slots: {\n description: descriptionProps\n }\n }\n ],\n [\n TokenInputContext,\n {\n tokenFieldProps,\n state: state as any,\n isDisabled,\n isReadOnly,\n autocompleteProps: autocompleteProps as HTMLAttributes<HTMLDivElement>,\n ref: inputRef as RefObject<HTMLDivElement | null>\n }\n ]\n ]}>\n {renderProps.children}\n </Provider>\n </dom.div>\n );\n});\n\n/**\n * A token input represents the editable area within a token field.\n */\nexport const TokenInput = /*#__PURE__*/ (forwardRef as forwardRefType)(function TokenInput<\n T extends TokenFieldValue = TokenFieldValue\n>(props: TokenInputProps<T>, forwardedRef: ForwardedRef<HTMLDivElement | null>) {\n let {\n tokenFieldProps,\n state,\n isDisabled = false,\n isReadOnly = false,\n autocompleteProps,\n ref: contextRef\n } = useContext(TokenInputContext)!;\n let ref = useMemo(() => mergeRefs(contextRef, forwardedRef), [contextRef, forwardedRef]);\n let {children, ...domProps} = props;\n\n let {isHovered, hoverProps} = useHover(domProps);\n let {isFocused, isFocusVisible, focusProps} = useFocusRing();\n\n let renderProps = useRenderProps({\n ...domProps,\n defaultClassName: 'react-aria-TokenInput',\n values: {\n isHovered,\n isFocused,\n isFocusVisible,\n isDisabled,\n isReadOnly\n }\n });\n\n let DOMProps = filterDOMProps(domProps, {global: true});\n let objectRef = useObjectRef(ref);\n useLayoutEffect(() => insertSelectionStyle(objectRef), [objectRef]);\n\n return (\n <dom.div\n {...mergeProps(\n DOMProps,\n renderProps,\n focusProps,\n hoverProps,\n tokenFieldProps,\n autocompleteProps\n )}\n ref={objectRef}\n data-focused={isFocused || undefined}\n data-focus-visible={isFocusVisible || undefined}\n data-disabled={isDisabled || undefined}\n data-readonly={isReadOnly || undefined}\n style={{...renderProps.style, ...tokenFieldProps?.style}}>\n <CompositionRenderBlocker isComposing={state.isComposing}>\n {state.value.segments.map((v, i) => {\n switch (v.type) {\n case 'token': {\n let token = children(v);\n return (\n // Wrap tokens in zero-width spaces so the cursor is placed correctly.\n <span key={i} data-react-aria-token>\n {'\\u200b'}\n {token}\n {'\\u200b'}\n </span>\n );\n }\n case 'text':\n return v.text;\n }\n })}\n {/* Force cursor to the next line if the last segment ends with a newline. */}\n {state.value.segments.at(-1)?.text.endsWith('\\n') && <br />}\n </CompositionRenderBlocker>\n </dom.div>\n );\n});\n\nexport interface TokenRenderProps {\n /**\n * Whether the token is selected.\n *\n * @selector [data-selected]\n */\n isSelected: boolean;\n /**\n * Whether the token is disabled.\n *\n * @selector [data-disabled]\n */\n isDisabled: boolean;\n}\n\nexport interface TokenProps\n extends RenderProps<TokenRenderProps, 'span'>, GlobalDOMAttributes<HTMLSpanElement> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-Token'\n */\n className?: ClassNameOrFunction<TokenRenderProps>;\n}\n\n/**\n * A token represents an inline segment within a token field.\n */\nexport const Token = forwardRef(function Token(\n props: TokenProps,\n ref: ForwardedRef<HTMLSpanElement>\n) {\n let {isDisabled} = useContext(TokenInputContext)!;\n let objectRef = useObjectRef(ref);\n let {tokenProps, isSelected} = useToken(props, {}, objectRef);\n\n let renderProps = useRenderProps({\n ...props,\n defaultClassName: 'react-aria-Token',\n values: {\n isSelected,\n isDisabled\n }\n });\n\n let DOMProps = filterDOMProps(props, {global: true});\n\n return (\n <dom.span\n ref={objectRef}\n {...mergeProps(DOMProps, renderProps, tokenProps)}\n data-selected={isSelected || undefined}\n data-disabled={isDisabled || undefined}\n style={{\n ...renderProps.style,\n ...tokenProps.style\n }}>\n {renderProps.children}\n </dom.span>\n );\n});\n\n// Prevents React from re-rendering during composition events.\nconst CompositionRenderBlocker = memo(\n ({children}: {children: React.ReactNode; isComposing: boolean}) => children,\n (prevProps, nextProps) =>\n nextProps.isComposing ? true : prevProps.children === nextProps.children\n);\n\n// Inserts a stylesheet into the document / shadow root that hides the native text selection on tokens.\nfunction insertSelectionStyle(ref: RefObject<HTMLDivElement | null> | null) {\n if (typeof CSSStyleSheet !== 'function' || !ref || !ref.current) {\n return;\n }\n\n let root = ref.current.getRootNode();\n if (!isDocument(root) && !isShadowRoot(root)) {\n return;\n }\n\n if (!root.adoptedStyleSheets) {\n return;\n }\n\n // Skip if we already inserted it.\n let sym = Symbol.for('react-aria-token-style');\n if (root.adoptedStyleSheets.some(s => s[sym])) {\n return;\n }\n\n let style = new CSSStyleSheet();\n style[sym] = true;\n // Firefox ignores completely transparent selection colors, so use a nearly transparent color instead.\n style.replaceSync(\n '[data-react-aria-token]::selection,[data-react-aria-token]>*::selection{background:#ffffff01}'\n );\n root.adoptedStyleSheets.push(style);\n\n return () => {\n let index = root.adoptedStyleSheets.indexOf(style);\n if (index >= 0) {\n root.adoptedStyleSheets.splice(index, 1);\n }\n };\n}\n"],"names":[],"version":3,"file":"TokenField.mjs.map"}
|
package/dist/private/Tooltip.cjs
CHANGED
|
@@ -74,7 +74,10 @@ const $1f7d7e07fe5bbfc5$export$28c660c63b792dea = /*#__PURE__*/ (0, $cQApC$react
|
|
|
74
74
|
let contextState = (0, $cQApC$react.useContext)($1f7d7e07fe5bbfc5$export$7a7623236eec67fa);
|
|
75
75
|
let localState = (0, $cQApC$reactstatelyuseTooltipTriggerState.useTooltipTriggerState)(props);
|
|
76
76
|
let state = props.isOpen != null || props.defaultOpen != null || !contextState ? localState : contextState;
|
|
77
|
-
|
|
77
|
+
// Skip the automatic exit animation when closing instantly (e.g. swapping between tooltips
|
|
78
|
+
// during warmup). An explicitly provided isExiting prop still takes precedence.
|
|
79
|
+
let exitAnimation = (0, $cQApC$reactariaprivateutilsanimation.useExitAnimation)(ref, state.isOpen);
|
|
80
|
+
let isExiting = props.isExiting || !state.shouldSkipAnimation && exitAnimation || false;
|
|
78
81
|
if (!state.isOpen && !isExiting) return null;
|
|
79
82
|
return /*#__PURE__*/ (0, ($parcel$interopDefault($cQApC$react))).createElement((0, $cQApC$reactariaprivateoverlaysuseModal.OverlayContainer), {
|
|
80
83
|
portalContainer: UNSTABLE_portalContainer
|
|
@@ -100,7 +103,10 @@ function $1f7d7e07fe5bbfc5$var$TooltipInner(props) {
|
|
|
100
103
|
containerPadding: props.containerPadding,
|
|
101
104
|
onClose: ()=>state.close(true)
|
|
102
105
|
});
|
|
103
|
-
|
|
106
|
+
// Skip the automatic entry animation when opening instantly (e.g. swapping between tooltips
|
|
107
|
+
// during warmup). An explicitly provided isEntering prop still takes precedence.
|
|
108
|
+
let enterAnimation = (0, $cQApC$reactariaprivateutilsanimation.useEnterAnimation)(props.tooltipRef, !!placement);
|
|
109
|
+
let isEntering = props.isEntering || !state.shouldSkipAnimation && enterAnimation || false;
|
|
104
110
|
let renderProps = (0, $048d76b84370f141$exports.useRenderProps)({
|
|
105
111
|
...props,
|
|
106
112
|
defaultClassName: 'react-aria-Tooltip',
|
|
@@ -116,6 +122,7 @@ function $1f7d7e07fe5bbfc5$var$TooltipInner(props) {
|
|
|
116
122
|
let DOMProps = (0, $cQApC$reactariafilterDOMProps.filterDOMProps)(props, {
|
|
117
123
|
global: true
|
|
118
124
|
});
|
|
125
|
+
// oxlint-disable react/react-compiler
|
|
119
126
|
return /*#__PURE__*/ (0, ($parcel$interopDefault($cQApC$react))).createElement((0, $048d76b84370f141$exports.dom).div, {
|
|
120
127
|
...(0, $cQApC$reactariamergeProps.mergeProps)(DOMProps, renderProps, tooltipProps),
|
|
121
128
|
ref: props.tooltipRef,
|
|
@@ -134,6 +141,7 @@ function $1f7d7e07fe5bbfc5$var$TooltipInner(props) {
|
|
|
134
141
|
ref: arrowRef
|
|
135
142
|
}
|
|
136
143
|
}, renderProps.children));
|
|
144
|
+
// oxlint-enable react/react-compiler
|
|
137
145
|
}
|
|
138
146
|
|
|
139
147
|
|
|
@@ -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 {\n AriaLabelingProps,\n FocusableElement,\n forwardRefType,\n GlobalDOMAttributes,\n RefObject\n} from '@react-types/shared';\nimport {\n AriaPositionProps,\n Placement,\n PlacementAxis,\n PositionProps,\n useOverlayPosition\n} from 'react-aria/useOverlayPosition';\nimport {\n ClassNameOrFunction,\n ContextValue,\n dom,\n Provider,\n RenderProps,\n useContextProps,\n useRenderProps\n} from './utils';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusableProvider} from 'react-aria/private/interactions/useFocusable';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {OverlayArrowContext} from './OverlayArrow';\nimport {OverlayContainer} from 'react-aria/private/overlays/useModal';\nimport {OverlayTriggerProps} from 'react-stately/useOverlayTriggerState';\nimport React, {\n createContext,\n CSSProperties,\n ForwardedRef,\n forwardRef,\n JSX,\n ReactNode,\n useContext,\n useRef\n} from 'react';\nimport {\n TooltipTriggerProps,\n TooltipTriggerState,\n useTooltipTriggerState\n} from 'react-stately/useTooltipTriggerState';\nimport {useEnterAnimation, useExitAnimation} from 'react-aria/private/utils/animation';\nimport {useTooltip, useTooltipTrigger} from 'react-aria/useTooltipTrigger';\n\nexport interface TooltipTriggerComponentProps extends TooltipTriggerProps {\n children: ReactNode;\n}\n\nexport interface TooltipProps\n extends\n PositionProps,\n Pick<AriaPositionProps, 'arrowBoundaryOffset'>,\n OverlayTriggerProps,\n AriaLabelingProps,\n RenderProps<TooltipRenderProps>,\n GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-Tooltip'\n */\n className?: ClassNameOrFunction<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\n * 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\n * behavior depending on where it is portalled to.\n *\n * @deprecated - Use a parent UNSAFE_PortalProvider to set your portal container instead.\n * @default document.body\n */\n UNSTABLE_portalContainer?: Element;\n /**\n * The placement of the tooltip with respect to the trigger.\n *\n * @default 'top'\n */\n placement?: Placement;\n}\n\nexport interface TooltipRenderProps {\n /**\n * The placement of the tooltip relative to the trigger.\n *\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 *\n * @selector [data-entering]\n */\n isEntering: boolean;\n /**\n * Whether the tooltip is currently exiting. Use this to apply animations.\n *\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(\n {UNSTABLE_portalContainer, ...props}: TooltipProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n [props, ref] = useContextProps(props, ref, TooltipContext);\n let contextState = useContext(TooltipTriggerStateContext);\n let localState = useTooltipTriggerState(props);\n let state =\n 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(\n props: TooltipProps & {isExiting: boolean; tooltipRef: RefObject<HTMLDivElement | null>}\n) {\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 <dom.div\n {...mergeProps(DOMProps, renderProps, tooltipProps)}\n ref={props.tooltipRef}\n style={\n {\n ...overlayProps.style,\n '--trigger-anchor-point': triggerAnchorPoint\n ? `${triggerAnchorPoint.x}px ${triggerAnchorPoint.y}px`\n : undefined,\n ...renderProps.style\n } as CSSProperties\n }\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 </dom.div>\n );\n}\n"],"names":[],"version":3,"file":"Tooltip.cjs.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 {\n AriaLabelingProps,\n FocusableElement,\n forwardRefType,\n GlobalDOMAttributes,\n RefObject\n} from '@react-types/shared';\nimport {\n AriaPositionProps,\n Placement,\n PlacementAxis,\n PositionProps,\n useOverlayPosition\n} from 'react-aria/useOverlayPosition';\nimport {\n ClassNameOrFunction,\n ContextValue,\n dom,\n Provider,\n RenderProps,\n useContextProps,\n useRenderProps\n} from './utils';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusableProvider} from 'react-aria/private/interactions/useFocusable';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {OverlayArrowContext} from './OverlayArrow';\nimport {OverlayContainer} from 'react-aria/private/overlays/useModal';\nimport {OverlayTriggerProps} from 'react-stately/useOverlayTriggerState';\nimport React, {\n createContext,\n CSSProperties,\n ForwardedRef,\n forwardRef,\n JSX,\n ReactNode,\n useContext,\n useRef\n} from 'react';\nimport {\n TooltipTriggerProps,\n TooltipTriggerState,\n useTooltipTriggerState\n} from 'react-stately/useTooltipTriggerState';\nimport {useEnterAnimation, useExitAnimation} from 'react-aria/private/utils/animation';\nimport {useTooltip, useTooltipTrigger} from 'react-aria/useTooltipTrigger';\n\nexport interface TooltipTriggerComponentProps extends TooltipTriggerProps {\n children: ReactNode;\n}\n\nexport interface TooltipProps\n extends\n PositionProps,\n Pick<AriaPositionProps, 'arrowBoundaryOffset'>,\n OverlayTriggerProps,\n AriaLabelingProps,\n RenderProps<TooltipRenderProps>,\n GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-Tooltip'\n */\n className?: ClassNameOrFunction<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\n * 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\n * behavior depending on where it is portalled to.\n *\n * @deprecated - Use a parent UNSAFE_PortalProvider to set your portal container instead.\n * @default document.body\n */\n UNSTABLE_portalContainer?: Element;\n /**\n * The placement of the tooltip with respect to the trigger.\n *\n * @default 'top'\n */\n placement?: Placement;\n}\n\nexport interface TooltipRenderProps {\n /**\n * The placement of the tooltip relative to the trigger.\n *\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 *\n * @selector [data-entering]\n */\n isEntering: boolean;\n /**\n * Whether the tooltip is currently exiting. Use this to apply animations.\n *\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(\n {UNSTABLE_portalContainer, ...props}: TooltipProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n [props, ref] = useContextProps(props, ref, TooltipContext);\n let contextState = useContext(TooltipTriggerStateContext);\n let localState = useTooltipTriggerState(props);\n let state =\n props.isOpen != null || props.defaultOpen != null || !contextState ? localState : contextState;\n // Skip the automatic exit animation when closing instantly (e.g. swapping between tooltips\n // during warmup). An explicitly provided isExiting prop still takes precedence.\n let exitAnimation = useExitAnimation(ref, state.isOpen);\n let isExiting = props.isExiting || (!state.shouldSkipAnimation && exitAnimation) || 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(\n props: TooltipProps & {isExiting: boolean; tooltipRef: RefObject<HTMLDivElement | null>}\n) {\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 // Skip the automatic entry animation when opening instantly (e.g. swapping between tooltips\n // during warmup). An explicitly provided isEntering prop still takes precedence.\n let enterAnimation = useEnterAnimation(props.tooltipRef, !!placement);\n let isEntering = props.isEntering || (!state.shouldSkipAnimation && enterAnimation) || 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 // oxlint-disable react/react-compiler\n return (\n <dom.div\n {...mergeProps(DOMProps, renderProps, tooltipProps)}\n ref={props.tooltipRef}\n style={\n {\n ...overlayProps.style,\n '--trigger-anchor-point': triggerAnchorPoint\n ? `${triggerAnchorPoint.x}px ${triggerAnchorPoint.y}px`\n : undefined,\n ...renderProps.style\n } as CSSProperties\n }\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 </dom.div>\n );\n // oxlint-enable react/react-compiler\n}\n"],"names":[],"version":3,"file":"Tooltip.cjs.map"}
|
package/dist/private/Tooltip.js
CHANGED
|
@@ -61,7 +61,10 @@ const $86371daa326220e5$export$28c660c63b792dea = /*#__PURE__*/ (0, $kbHsW$forwa
|
|
|
61
61
|
let contextState = (0, $kbHsW$useContext)($86371daa326220e5$export$7a7623236eec67fa);
|
|
62
62
|
let localState = (0, $kbHsW$useTooltipTriggerState)(props);
|
|
63
63
|
let state = props.isOpen != null || props.defaultOpen != null || !contextState ? localState : contextState;
|
|
64
|
-
|
|
64
|
+
// Skip the automatic exit animation when closing instantly (e.g. swapping between tooltips
|
|
65
|
+
// during warmup). An explicitly provided isExiting prop still takes precedence.
|
|
66
|
+
let exitAnimation = (0, $kbHsW$useExitAnimation)(ref, state.isOpen);
|
|
67
|
+
let isExiting = props.isExiting || !state.shouldSkipAnimation && exitAnimation || false;
|
|
65
68
|
if (!state.isOpen && !isExiting) return null;
|
|
66
69
|
return /*#__PURE__*/ (0, $kbHsW$react).createElement((0, $kbHsW$OverlayContainer), {
|
|
67
70
|
portalContainer: UNSTABLE_portalContainer
|
|
@@ -87,7 +90,10 @@ function $86371daa326220e5$var$TooltipInner(props) {
|
|
|
87
90
|
containerPadding: props.containerPadding,
|
|
88
91
|
onClose: ()=>state.close(true)
|
|
89
92
|
});
|
|
90
|
-
|
|
93
|
+
// Skip the automatic entry animation when opening instantly (e.g. swapping between tooltips
|
|
94
|
+
// during warmup). An explicitly provided isEntering prop still takes precedence.
|
|
95
|
+
let enterAnimation = (0, $kbHsW$useEnterAnimation)(props.tooltipRef, !!placement);
|
|
96
|
+
let isEntering = props.isEntering || !state.shouldSkipAnimation && enterAnimation || false;
|
|
91
97
|
let renderProps = (0, $b7b7a92703138c9b$export$4d86445c2cf5e3)({
|
|
92
98
|
...props,
|
|
93
99
|
defaultClassName: 'react-aria-Tooltip',
|
|
@@ -103,6 +109,7 @@ function $86371daa326220e5$var$TooltipInner(props) {
|
|
|
103
109
|
let DOMProps = (0, $kbHsW$filterDOMProps)(props, {
|
|
104
110
|
global: true
|
|
105
111
|
});
|
|
112
|
+
// oxlint-disable react/react-compiler
|
|
106
113
|
return /*#__PURE__*/ (0, $kbHsW$react).createElement((0, $b7b7a92703138c9b$export$df3a06d6289f983e).div, {
|
|
107
114
|
...(0, $kbHsW$mergeProps)(DOMProps, renderProps, tooltipProps),
|
|
108
115
|
ref: props.tooltipRef,
|
|
@@ -121,6 +128,7 @@ function $86371daa326220e5$var$TooltipInner(props) {
|
|
|
121
128
|
ref: arrowRef
|
|
122
129
|
}
|
|
123
130
|
}, renderProps.children));
|
|
131
|
+
// oxlint-enable react/react-compiler
|
|
124
132
|
}
|
|
125
133
|
|
|
126
134
|
|
|
@@ -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 {\n AriaLabelingProps,\n FocusableElement,\n forwardRefType,\n GlobalDOMAttributes,\n RefObject\n} from '@react-types/shared';\nimport {\n AriaPositionProps,\n Placement,\n PlacementAxis,\n PositionProps,\n useOverlayPosition\n} from 'react-aria/useOverlayPosition';\nimport {\n ClassNameOrFunction,\n ContextValue,\n dom,\n Provider,\n RenderProps,\n useContextProps,\n useRenderProps\n} from './utils';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusableProvider} from 'react-aria/private/interactions/useFocusable';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {OverlayArrowContext} from './OverlayArrow';\nimport {OverlayContainer} from 'react-aria/private/overlays/useModal';\nimport {OverlayTriggerProps} from 'react-stately/useOverlayTriggerState';\nimport React, {\n createContext,\n CSSProperties,\n ForwardedRef,\n forwardRef,\n JSX,\n ReactNode,\n useContext,\n useRef\n} from 'react';\nimport {\n TooltipTriggerProps,\n TooltipTriggerState,\n useTooltipTriggerState\n} from 'react-stately/useTooltipTriggerState';\nimport {useEnterAnimation, useExitAnimation} from 'react-aria/private/utils/animation';\nimport {useTooltip, useTooltipTrigger} from 'react-aria/useTooltipTrigger';\n\nexport interface TooltipTriggerComponentProps extends TooltipTriggerProps {\n children: ReactNode;\n}\n\nexport interface TooltipProps\n extends\n PositionProps,\n Pick<AriaPositionProps, 'arrowBoundaryOffset'>,\n OverlayTriggerProps,\n AriaLabelingProps,\n RenderProps<TooltipRenderProps>,\n GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-Tooltip'\n */\n className?: ClassNameOrFunction<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\n * 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\n * behavior depending on where it is portalled to.\n *\n * @deprecated - Use a parent UNSAFE_PortalProvider to set your portal container instead.\n * @default document.body\n */\n UNSTABLE_portalContainer?: Element;\n /**\n * The placement of the tooltip with respect to the trigger.\n *\n * @default 'top'\n */\n placement?: Placement;\n}\n\nexport interface TooltipRenderProps {\n /**\n * The placement of the tooltip relative to the trigger.\n *\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 *\n * @selector [data-entering]\n */\n isEntering: boolean;\n /**\n * Whether the tooltip is currently exiting. Use this to apply animations.\n *\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(\n {UNSTABLE_portalContainer, ...props}: TooltipProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n [props, ref] = useContextProps(props, ref, TooltipContext);\n let contextState = useContext(TooltipTriggerStateContext);\n let localState = useTooltipTriggerState(props);\n let state =\n 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(\n props: TooltipProps & {isExiting: boolean; tooltipRef: RefObject<HTMLDivElement | null>}\n) {\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 <dom.div\n {...mergeProps(DOMProps, renderProps, tooltipProps)}\n ref={props.tooltipRef}\n style={\n {\n ...overlayProps.style,\n '--trigger-anchor-point': triggerAnchorPoint\n ? `${triggerAnchorPoint.x}px ${triggerAnchorPoint.y}px`\n : undefined,\n ...renderProps.style\n } as CSSProperties\n }\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 </dom.div>\n );\n}\n"],"names":[],"version":3,"file":"Tooltip.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 {\n AriaLabelingProps,\n FocusableElement,\n forwardRefType,\n GlobalDOMAttributes,\n RefObject\n} from '@react-types/shared';\nimport {\n AriaPositionProps,\n Placement,\n PlacementAxis,\n PositionProps,\n useOverlayPosition\n} from 'react-aria/useOverlayPosition';\nimport {\n ClassNameOrFunction,\n ContextValue,\n dom,\n Provider,\n RenderProps,\n useContextProps,\n useRenderProps\n} from './utils';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusableProvider} from 'react-aria/private/interactions/useFocusable';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {OverlayArrowContext} from './OverlayArrow';\nimport {OverlayContainer} from 'react-aria/private/overlays/useModal';\nimport {OverlayTriggerProps} from 'react-stately/useOverlayTriggerState';\nimport React, {\n createContext,\n CSSProperties,\n ForwardedRef,\n forwardRef,\n JSX,\n ReactNode,\n useContext,\n useRef\n} from 'react';\nimport {\n TooltipTriggerProps,\n TooltipTriggerState,\n useTooltipTriggerState\n} from 'react-stately/useTooltipTriggerState';\nimport {useEnterAnimation, useExitAnimation} from 'react-aria/private/utils/animation';\nimport {useTooltip, useTooltipTrigger} from 'react-aria/useTooltipTrigger';\n\nexport interface TooltipTriggerComponentProps extends TooltipTriggerProps {\n children: ReactNode;\n}\n\nexport interface TooltipProps\n extends\n PositionProps,\n Pick<AriaPositionProps, 'arrowBoundaryOffset'>,\n OverlayTriggerProps,\n AriaLabelingProps,\n RenderProps<TooltipRenderProps>,\n GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-Tooltip'\n */\n className?: ClassNameOrFunction<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\n * 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\n * behavior depending on where it is portalled to.\n *\n * @deprecated - Use a parent UNSAFE_PortalProvider to set your portal container instead.\n * @default document.body\n */\n UNSTABLE_portalContainer?: Element;\n /**\n * The placement of the tooltip with respect to the trigger.\n *\n * @default 'top'\n */\n placement?: Placement;\n}\n\nexport interface TooltipRenderProps {\n /**\n * The placement of the tooltip relative to the trigger.\n *\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 *\n * @selector [data-entering]\n */\n isEntering: boolean;\n /**\n * Whether the tooltip is currently exiting. Use this to apply animations.\n *\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(\n {UNSTABLE_portalContainer, ...props}: TooltipProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n [props, ref] = useContextProps(props, ref, TooltipContext);\n let contextState = useContext(TooltipTriggerStateContext);\n let localState = useTooltipTriggerState(props);\n let state =\n props.isOpen != null || props.defaultOpen != null || !contextState ? localState : contextState;\n // Skip the automatic exit animation when closing instantly (e.g. swapping between tooltips\n // during warmup). An explicitly provided isExiting prop still takes precedence.\n let exitAnimation = useExitAnimation(ref, state.isOpen);\n let isExiting = props.isExiting || (!state.shouldSkipAnimation && exitAnimation) || 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(\n props: TooltipProps & {isExiting: boolean; tooltipRef: RefObject<HTMLDivElement | null>}\n) {\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 // Skip the automatic entry animation when opening instantly (e.g. swapping between tooltips\n // during warmup). An explicitly provided isEntering prop still takes precedence.\n let enterAnimation = useEnterAnimation(props.tooltipRef, !!placement);\n let isEntering = props.isEntering || (!state.shouldSkipAnimation && enterAnimation) || 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 // oxlint-disable react/react-compiler\n return (\n <dom.div\n {...mergeProps(DOMProps, renderProps, tooltipProps)}\n ref={props.tooltipRef}\n style={\n {\n ...overlayProps.style,\n '--trigger-anchor-point': triggerAnchorPoint\n ? `${triggerAnchorPoint.x}px ${triggerAnchorPoint.y}px`\n : undefined,\n ...renderProps.style\n } as CSSProperties\n }\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 </dom.div>\n );\n // oxlint-enable react/react-compiler\n}\n"],"names":[],"version":3,"file":"Tooltip.js.map"}
|
package/dist/private/Tooltip.mjs
CHANGED
|
@@ -61,7 +61,10 @@ const $05a50f7d78b03ad9$export$28c660c63b792dea = /*#__PURE__*/ (0, $4nVq8$forwa
|
|
|
61
61
|
let contextState = (0, $4nVq8$useContext)($05a50f7d78b03ad9$export$7a7623236eec67fa);
|
|
62
62
|
let localState = (0, $4nVq8$useTooltipTriggerState)(props);
|
|
63
63
|
let state = props.isOpen != null || props.defaultOpen != null || !contextState ? localState : contextState;
|
|
64
|
-
|
|
64
|
+
// Skip the automatic exit animation when closing instantly (e.g. swapping between tooltips
|
|
65
|
+
// during warmup). An explicitly provided isExiting prop still takes precedence.
|
|
66
|
+
let exitAnimation = (0, $4nVq8$useExitAnimation)(ref, state.isOpen);
|
|
67
|
+
let isExiting = props.isExiting || !state.shouldSkipAnimation && exitAnimation || false;
|
|
65
68
|
if (!state.isOpen && !isExiting) return null;
|
|
66
69
|
return /*#__PURE__*/ (0, $4nVq8$react).createElement((0, $4nVq8$OverlayContainer), {
|
|
67
70
|
portalContainer: UNSTABLE_portalContainer
|
|
@@ -87,7 +90,10 @@ function $05a50f7d78b03ad9$var$TooltipInner(props) {
|
|
|
87
90
|
containerPadding: props.containerPadding,
|
|
88
91
|
onClose: ()=>state.close(true)
|
|
89
92
|
});
|
|
90
|
-
|
|
93
|
+
// Skip the automatic entry animation when opening instantly (e.g. swapping between tooltips
|
|
94
|
+
// during warmup). An explicitly provided isEntering prop still takes precedence.
|
|
95
|
+
let enterAnimation = (0, $4nVq8$useEnterAnimation)(props.tooltipRef, !!placement);
|
|
96
|
+
let isEntering = props.isEntering || !state.shouldSkipAnimation && enterAnimation || false;
|
|
91
97
|
let renderProps = (0, $7230ffa83bc0c2cf$export$4d86445c2cf5e3)({
|
|
92
98
|
...props,
|
|
93
99
|
defaultClassName: 'react-aria-Tooltip',
|
|
@@ -103,6 +109,7 @@ function $05a50f7d78b03ad9$var$TooltipInner(props) {
|
|
|
103
109
|
let DOMProps = (0, $4nVq8$filterDOMProps)(props, {
|
|
104
110
|
global: true
|
|
105
111
|
});
|
|
112
|
+
// oxlint-disable react/react-compiler
|
|
106
113
|
return /*#__PURE__*/ (0, $4nVq8$react).createElement((0, $7230ffa83bc0c2cf$export$df3a06d6289f983e).div, {
|
|
107
114
|
...(0, $4nVq8$mergeProps)(DOMProps, renderProps, tooltipProps),
|
|
108
115
|
ref: props.tooltipRef,
|
|
@@ -121,6 +128,7 @@ function $05a50f7d78b03ad9$var$TooltipInner(props) {
|
|
|
121
128
|
ref: arrowRef
|
|
122
129
|
}
|
|
123
130
|
}, renderProps.children));
|
|
131
|
+
// oxlint-enable react/react-compiler
|
|
124
132
|
}
|
|
125
133
|
|
|
126
134
|
|
|
@@ -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 {\n AriaLabelingProps,\n FocusableElement,\n forwardRefType,\n GlobalDOMAttributes,\n RefObject\n} from '@react-types/shared';\nimport {\n AriaPositionProps,\n Placement,\n PlacementAxis,\n PositionProps,\n useOverlayPosition\n} from 'react-aria/useOverlayPosition';\nimport {\n ClassNameOrFunction,\n ContextValue,\n dom,\n Provider,\n RenderProps,\n useContextProps,\n useRenderProps\n} from './utils';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusableProvider} from 'react-aria/private/interactions/useFocusable';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {OverlayArrowContext} from './OverlayArrow';\nimport {OverlayContainer} from 'react-aria/private/overlays/useModal';\nimport {OverlayTriggerProps} from 'react-stately/useOverlayTriggerState';\nimport React, {\n createContext,\n CSSProperties,\n ForwardedRef,\n forwardRef,\n JSX,\n ReactNode,\n useContext,\n useRef\n} from 'react';\nimport {\n TooltipTriggerProps,\n TooltipTriggerState,\n useTooltipTriggerState\n} from 'react-stately/useTooltipTriggerState';\nimport {useEnterAnimation, useExitAnimation} from 'react-aria/private/utils/animation';\nimport {useTooltip, useTooltipTrigger} from 'react-aria/useTooltipTrigger';\n\nexport interface TooltipTriggerComponentProps extends TooltipTriggerProps {\n children: ReactNode;\n}\n\nexport interface TooltipProps\n extends\n PositionProps,\n Pick<AriaPositionProps, 'arrowBoundaryOffset'>,\n OverlayTriggerProps,\n AriaLabelingProps,\n RenderProps<TooltipRenderProps>,\n GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-Tooltip'\n */\n className?: ClassNameOrFunction<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\n * 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\n * behavior depending on where it is portalled to.\n *\n * @deprecated - Use a parent UNSAFE_PortalProvider to set your portal container instead.\n * @default document.body\n */\n UNSTABLE_portalContainer?: Element;\n /**\n * The placement of the tooltip with respect to the trigger.\n *\n * @default 'top'\n */\n placement?: Placement;\n}\n\nexport interface TooltipRenderProps {\n /**\n * The placement of the tooltip relative to the trigger.\n *\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 *\n * @selector [data-entering]\n */\n isEntering: boolean;\n /**\n * Whether the tooltip is currently exiting. Use this to apply animations.\n *\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(\n {UNSTABLE_portalContainer, ...props}: TooltipProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n [props, ref] = useContextProps(props, ref, TooltipContext);\n let contextState = useContext(TooltipTriggerStateContext);\n let localState = useTooltipTriggerState(props);\n let state =\n 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(\n props: TooltipProps & {isExiting: boolean; tooltipRef: RefObject<HTMLDivElement | null>}\n) {\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 <dom.div\n {...mergeProps(DOMProps, renderProps, tooltipProps)}\n ref={props.tooltipRef}\n style={\n {\n ...overlayProps.style,\n '--trigger-anchor-point': triggerAnchorPoint\n ? `${triggerAnchorPoint.x}px ${triggerAnchorPoint.y}px`\n : undefined,\n ...renderProps.style\n } as CSSProperties\n }\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 </dom.div>\n );\n}\n"],"names":[],"version":3,"file":"Tooltip.mjs.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 {\n AriaLabelingProps,\n FocusableElement,\n forwardRefType,\n GlobalDOMAttributes,\n RefObject\n} from '@react-types/shared';\nimport {\n AriaPositionProps,\n Placement,\n PlacementAxis,\n PositionProps,\n useOverlayPosition\n} from 'react-aria/useOverlayPosition';\nimport {\n ClassNameOrFunction,\n ContextValue,\n dom,\n Provider,\n RenderProps,\n useContextProps,\n useRenderProps\n} from './utils';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusableProvider} from 'react-aria/private/interactions/useFocusable';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {OverlayArrowContext} from './OverlayArrow';\nimport {OverlayContainer} from 'react-aria/private/overlays/useModal';\nimport {OverlayTriggerProps} from 'react-stately/useOverlayTriggerState';\nimport React, {\n createContext,\n CSSProperties,\n ForwardedRef,\n forwardRef,\n JSX,\n ReactNode,\n useContext,\n useRef\n} from 'react';\nimport {\n TooltipTriggerProps,\n TooltipTriggerState,\n useTooltipTriggerState\n} from 'react-stately/useTooltipTriggerState';\nimport {useEnterAnimation, useExitAnimation} from 'react-aria/private/utils/animation';\nimport {useTooltip, useTooltipTrigger} from 'react-aria/useTooltipTrigger';\n\nexport interface TooltipTriggerComponentProps extends TooltipTriggerProps {\n children: ReactNode;\n}\n\nexport interface TooltipProps\n extends\n PositionProps,\n Pick<AriaPositionProps, 'arrowBoundaryOffset'>,\n OverlayTriggerProps,\n AriaLabelingProps,\n RenderProps<TooltipRenderProps>,\n GlobalDOMAttributes<HTMLDivElement> {\n /**\n * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the\n * element. A function may be provided to compute the class based on component state.\n *\n * @default 'react-aria-Tooltip'\n */\n className?: ClassNameOrFunction<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\n * 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\n * behavior depending on where it is portalled to.\n *\n * @deprecated - Use a parent UNSAFE_PortalProvider to set your portal container instead.\n * @default document.body\n */\n UNSTABLE_portalContainer?: Element;\n /**\n * The placement of the tooltip with respect to the trigger.\n *\n * @default 'top'\n */\n placement?: Placement;\n}\n\nexport interface TooltipRenderProps {\n /**\n * The placement of the tooltip relative to the trigger.\n *\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 *\n * @selector [data-entering]\n */\n isEntering: boolean;\n /**\n * Whether the tooltip is currently exiting. Use this to apply animations.\n *\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(\n {UNSTABLE_portalContainer, ...props}: TooltipProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n [props, ref] = useContextProps(props, ref, TooltipContext);\n let contextState = useContext(TooltipTriggerStateContext);\n let localState = useTooltipTriggerState(props);\n let state =\n props.isOpen != null || props.defaultOpen != null || !contextState ? localState : contextState;\n // Skip the automatic exit animation when closing instantly (e.g. swapping between tooltips\n // during warmup). An explicitly provided isExiting prop still takes precedence.\n let exitAnimation = useExitAnimation(ref, state.isOpen);\n let isExiting = props.isExiting || (!state.shouldSkipAnimation && exitAnimation) || 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(\n props: TooltipProps & {isExiting: boolean; tooltipRef: RefObject<HTMLDivElement | null>}\n) {\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 // Skip the automatic entry animation when opening instantly (e.g. swapping between tooltips\n // during warmup). An explicitly provided isEntering prop still takes precedence.\n let enterAnimation = useEnterAnimation(props.tooltipRef, !!placement);\n let isEntering = props.isEntering || (!state.shouldSkipAnimation && enterAnimation) || 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 // oxlint-disable react/react-compiler\n return (\n <dom.div\n {...mergeProps(DOMProps, renderProps, tooltipProps)}\n ref={props.tooltipRef}\n style={\n {\n ...overlayProps.style,\n '--trigger-anchor-point': triggerAnchorPoint\n ? `${triggerAnchorPoint.x}px ${triggerAnchorPoint.y}px`\n : undefined,\n ...renderProps.style\n } as CSSProperties\n }\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 </dom.div>\n );\n // oxlint-enable react/react-compiler\n}\n"],"names":[],"version":3,"file":"Tooltip.mjs.map"}
|
package/dist/private/Tree.cjs
CHANGED
|
@@ -263,11 +263,13 @@ function $8b1888e80597ea2d$var$TreeInner({ props: props, collection: collection,
|
|
|
263
263
|
let dragPreview = null;
|
|
264
264
|
let preview = (0, $av2Q0$react.useRef)(null);
|
|
265
265
|
if (hasDragHooks && dragAndDropHooks) {
|
|
266
|
+
// oxlint-disable-next-line react/react-compiler
|
|
266
267
|
dragState = dragAndDropHooks.useDraggableCollectionState({
|
|
267
268
|
collection: state.collection,
|
|
268
269
|
selectionManager: state.selectionManager,
|
|
269
270
|
preview: dragAndDropHooks.renderDragPreview ? preview : undefined
|
|
270
271
|
});
|
|
272
|
+
// oxlint-disable-next-line react/react-compiler
|
|
271
273
|
dragAndDropHooks.useDraggableCollection({}, dragState, ref);
|
|
272
274
|
let DragPreview = dragAndDropHooks.DragPreview;
|
|
273
275
|
dragPreview = dragAndDropHooks.renderDragPreview ? /*#__PURE__*/ (0, ($parcel$interopDefault($av2Q0$react))).createElement(DragPreview, {
|
|
@@ -276,6 +278,7 @@ function $8b1888e80597ea2d$var$TreeInner({ props: props, collection: collection,
|
|
|
276
278
|
}
|
|
277
279
|
let [treeDropTargetDelegate] = (0, $av2Q0$react.useState)(()=>new (0, $56f56e0916461149$exports.TreeDropTargetDelegate)());
|
|
278
280
|
if (hasDropHooks && dragAndDropHooks) {
|
|
281
|
+
// oxlint-disable-next-line react/react-compiler
|
|
279
282
|
dropState = dragAndDropHooks.useDroppableCollectionState({
|
|
280
283
|
collection: state.collection,
|
|
281
284
|
selectionManager: state.selectionManager
|
|
@@ -293,6 +296,7 @@ function $8b1888e80597ea2d$var$TreeInner({ props: props, collection: collection,
|
|
|
293
296
|
direction: direction,
|
|
294
297
|
layoutDelegate: layoutDelegate
|
|
295
298
|
});
|
|
299
|
+
// oxlint-disable-next-line react/react-compiler
|
|
296
300
|
droppableCollection = dragAndDropHooks.useDroppableCollection({
|
|
297
301
|
keyboardDelegate: keyboardDelegate,
|
|
298
302
|
dropTargetDelegate: treeDropTargetDelegate,
|
|
@@ -429,7 +433,9 @@ const $8b1888e80597ea2d$export$53d36ab85dc89436 = /*#__PURE__*/ (0, $av2Q0$react
|
|
|
429
433
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
430
434
|
let { rowProps: rowProps, gridCellProps: gridCellProps, expandButtonProps: expandButtonProps, descriptionProps: descriptionProps, ...states } = (0, $av2Q0$reactariauseTree.useTreeItem)({
|
|
431
435
|
node: item,
|
|
432
|
-
shouldSelectOnPressUp: !!dragState
|
|
436
|
+
shouldSelectOnPressUp: !!dragState,
|
|
437
|
+
focusMode: props.focusMode,
|
|
438
|
+
allowsArrowNavigation: props.allowsArrowNavigation
|
|
433
439
|
}, state, ref);
|
|
434
440
|
let isExpanded = rowProps['aria-expanded'] === true;
|
|
435
441
|
let hasChildItems = props.hasChildItems || [
|
|
@@ -605,6 +611,7 @@ const $8b1888e80597ea2d$export$53d36ab85dc89436 = /*#__PURE__*/ (0, $av2Q0$react
|
|
|
605
611
|
(0, $365d89633c2041bc$exports.CheckboxContext),
|
|
606
612
|
{
|
|
607
613
|
slots: {
|
|
614
|
+
[(0, $048d76b84370f141$exports.DEFAULT_SLOT)]: {},
|
|
608
615
|
selection: checkboxProps
|
|
609
616
|
}
|
|
610
617
|
}
|
|
@@ -613,6 +620,7 @@ const $8b1888e80597ea2d$export$53d36ab85dc89436 = /*#__PURE__*/ (0, $av2Q0$react
|
|
|
613
620
|
(0, $365d89633c2041bc$exports.CheckboxFieldContext),
|
|
614
621
|
{
|
|
615
622
|
slots: {
|
|
623
|
+
[(0, $048d76b84370f141$exports.DEFAULT_SLOT)]: {},
|
|
616
624
|
selection: checkboxProps
|
|
617
625
|
}
|
|
618
626
|
}
|
|
@@ -725,6 +733,7 @@ function $8b1888e80597ea2d$var$TreeDropIndicatorWrapper(props, ref) {
|
|
|
725
733
|
ref = (0, $av2Q0$reactariauseObjectRef.useObjectRef)(ref);
|
|
726
734
|
let { dragAndDropHooks: dragAndDropHooks, dropState: dropState } = (0, $av2Q0$react.useContext)((0, $d3d8871226fc64f2$exports.DragAndDropContext));
|
|
727
735
|
let buttonRef = (0, $av2Q0$react.useRef)(null);
|
|
736
|
+
// oxlint-disable-next-line react/react-compiler
|
|
728
737
|
let { dropIndicatorProps: dropIndicatorProps, isHidden: isHidden, isDropTarget: isDropTarget } = dragAndDropHooks.useDropIndicator(props, dropState, buttonRef);
|
|
729
738
|
if (isHidden) return null;
|
|
730
739
|
let level = dropState && props.target.type === 'item' ? (dropState.collection.getItem(props.target.key)?.level || 0) + 1 : 1;
|
|
@@ -771,6 +780,7 @@ const $8b1888e80597ea2d$var$TreeDropIndicatorForwardRef = /*#__PURE__*/ (0, $av2
|
|
|
771
780
|
function $8b1888e80597ea2d$var$RootDropIndicator() {
|
|
772
781
|
let { dragAndDropHooks: dragAndDropHooks, dropState: dropState } = (0, $av2Q0$react.useContext)((0, $d3d8871226fc64f2$exports.DragAndDropContext));
|
|
773
782
|
let ref = (0, $av2Q0$react.useRef)(null);
|
|
783
|
+
// oxlint-disable-next-line react/react-compiler
|
|
774
784
|
let { dropIndicatorProps: dropIndicatorProps } = dragAndDropHooks.useDropIndicator({
|
|
775
785
|
target: {
|
|
776
786
|
type: 'root'
|