@procore/core-react 12.51.0 → 12.52.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/CHANGELOG.md +16 -0
- package/dist/AnchorNavigation/AnchorNavigation.styles.js +4 -4
- package/dist/Avatar/Avatar.styles.js +5 -5
- package/dist/AvatarStack/AvatarStack.styles.js +8 -8
- package/dist/Badge/Badge.styles.js +2 -2
- package/dist/BadgePill/BadgePill.styles.js +4 -4
- package/dist/Banner/Banner.d.ts +7 -5
- package/dist/Banner/Banner.js +146 -71
- package/dist/Banner/Banner.js.map +1 -1
- package/dist/Banner/Banner.styles.js +10 -10
- package/dist/Banner/Banner.types.d.ts +16 -0
- package/dist/Banner/Banner.types.js.map +1 -1
- package/dist/Box/Box.styles.js +1 -1
- package/dist/Breadcrumbs/Breadcrumbs.styles.js +4 -4
- package/dist/Button/Button.styles.js +5 -5
- package/dist/Calendar/Calendar.styles.js +9 -9
- package/dist/Card/Card.styles.js +1 -1
- package/dist/Checkbox/Checkbox.styles.js +6 -6
- package/dist/ContactItem/ContactItem.styles.js +5 -5
- package/dist/Content/Content.styles.js +2 -2
- package/dist/DateInput/DateInput.styles.js +6 -6
- package/dist/DetailPage/DetailPage.styles.js +7 -7
- package/dist/Dropdown/Dropdown.styles.js +3 -3
- package/dist/DropdownFlyout/DropdownFlyout.styles.js +6 -7
- package/dist/DropdownFlyout/DropdownFlyout.styles.js.map +1 -1
- package/dist/DropdownFlyout/useDropdownFlyoutOverlay.js +13 -1
- package/dist/DropdownFlyout/useDropdownFlyoutOverlay.js.map +1 -1
- package/dist/Dropzone/Dropzone.js +1 -1
- package/dist/Dropzone/Dropzone.styles.d.ts +2 -2
- package/dist/Dropzone/Dropzone.styles.js +9 -9
- package/dist/EmptyState/EmptyState.styles.js +6 -6
- package/dist/Field/Field.styles.js +3 -3
- package/dist/FileList/FileList.styles.js +3 -3
- package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +9 -9
- package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +3 -3
- package/dist/FileSelect/FileSelect.styles.js +2 -2
- package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
- package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
- package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
- package/dist/FileSelect/LocalSource/LocalSource.styles.js +4 -4
- package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
- package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +6 -6
- package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
- package/dist/FileToken/FileToken.styles.js +6 -6
- package/dist/FilterToken/FilterToken.styles.js +5 -5
- package/dist/FlexList/FlexList.styles.js +1 -1
- package/dist/Form/Form.styles.js +13 -13
- package/dist/Form/StyledFormikForm.styles.js +2 -2
- package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +2 -2
- package/dist/Grid/Grid.styles.js +2 -2
- package/dist/GroupSelect/GroupSelect.styles.js +1 -1
- package/dist/Input/Input.styles.js +1 -1
- package/dist/Link/Link.styles.js +1 -1
- package/dist/ListPage/ListPage.styles.js +8 -8
- package/dist/Loader/Loader.styles.js +2 -2
- package/dist/MenuImperative/MenuImperative.styles.js +11 -11
- package/dist/Modal/Modal.styles.js +13 -13
- package/dist/MultiSelect/MultiSelect.styles.js +8 -8
- package/dist/NextMenu/NextMenu.styles.js +3 -3
- package/dist/NextTile/NextTile.styles.js +5 -5
- package/dist/Notation/Notation.js +1 -1
- package/dist/NumberInput/NumberInput.styles.js +7 -7
- package/dist/Overlay/OverlayArrow.styles.js +1 -1
- package/dist/Overlay/useOverlay.d.ts +2 -1
- package/dist/Overlay/useOverlay.js +4 -2
- package/dist/Overlay/useOverlay.js.map +1 -1
- package/dist/PageLayout/PageLayout.js +4 -2
- package/dist/PageLayout/PageLayout.js.map +1 -1
- package/dist/PageLayout/PageLayout.styles.d.ts +0 -1
- package/dist/PageLayout/PageLayout.styles.js +18 -19
- package/dist/PageLayout/PageLayout.styles.js.map +1 -1
- package/dist/PageLayout/PageLayout.types.d.ts +11 -3
- package/dist/PageLayout/PageLayout.types.js.map +1 -1
- package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js +1 -1
- package/dist/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.styles.js +3 -3
- package/dist/PageTemplate/PagePaneTemplate/PagePaneTemplate.styles.js +2 -2
- package/dist/PageTemplate/PageTemplate/PageTemplate.styles.js +3 -3
- package/dist/Pagination/Pagination.styles.js +5 -5
- package/dist/Panel/Panel.styles.js +11 -11
- package/dist/Pill/Pill.styles.js +3 -3
- package/dist/PillSelect/PillSelect.styles.js +4 -4
- package/dist/Popover/Popover.styles.js +2 -2
- package/dist/Portal/Portal.styles.js +1 -1
- package/dist/ProgressBar/ProgressBar.styles.js +2 -2
- package/dist/RadioButton/RadioButton.styles.js +3 -3
- package/dist/Required/Required.styles.js +3 -3
- package/dist/Search/Search.styles.js +5 -5
- package/dist/Section/Section.styles.js +7 -7
- package/dist/SegmentedController/SegmentedController.styles.js +4 -4
- package/dist/Select/Select.styles.js +8 -8
- package/dist/Semantic/Semantic.styles.js +9 -9
- package/dist/Slider/Slider.styles.js +5 -5
- package/dist/Spinner/Spinner.styles.js +7 -7
- package/dist/SplitViewCard/SplitViewCard.styles.js +8 -8
- package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
- package/dist/SuperSelect/SuperSelect.styles.js +40 -40
- package/dist/Switch/Switch.styles.js +4 -4
- package/dist/Table/Table.styles.js +29 -29
- package/dist/TableShelf/TableShelf.styles.js +5 -5
- package/dist/Tabs/Tabs.js +2 -1
- package/dist/Tabs/Tabs.js.map +1 -1
- package/dist/Tabs/Tabs.styles.d.ts +1 -0
- package/dist/Tabs/Tabs.styles.js +29 -26
- package/dist/Tabs/Tabs.styles.js.map +1 -1
- package/dist/Tearsheet/Tearsheet.styles.js +5 -5
- package/dist/TextArea/TextArea.styles.js +1 -1
- package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
- package/dist/Thumbnail/Thumbnail.js +99 -37
- package/dist/Thumbnail/Thumbnail.js.map +1 -1
- package/dist/Thumbnail/Thumbnail.styles.js +23 -23
- package/dist/Thumbnail/Thumbnail.styles.js.map +1 -1
- package/dist/Thumbnail/Thumbnail.types.d.ts +1 -0
- package/dist/Thumbnail/Thumbnail.types.js.map +1 -1
- package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
- package/dist/TieredSelect/TieredSelect.styles.js +9 -9
- package/dist/Tile/Tile.styles.js +8 -8
- package/dist/Title/Title.styles.js +7 -7
- package/dist/Toast/Toast.styles.js +3 -3
- package/dist/ToggleButton/ToggleButton.styles.js +1 -1
- package/dist/Token/Token.styles.js +5 -5
- package/dist/ToolHeader/ToolHeader.styles.js +6 -6
- package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
- package/dist/Tooltip/Tooltip.styles.js +3 -3
- package/dist/Tree/Tree.js +46 -21
- package/dist/Tree/Tree.js.map +1 -1
- package/dist/Tree/Tree.styles.d.ts +1 -0
- package/dist/Tree/Tree.styles.js +17 -14
- package/dist/Tree/Tree.styles.js.map +1 -1
- package/dist/Tree/Tree.types.d.ts +10 -0
- package/dist/Tree/Tree.types.js.map +1 -1
- package/dist/Typeahead/Typeahead.styles.js +4 -4
- package/dist/Typography/Typography.styles.js +1 -1
- package/dist/Typography/Typography.table.story.js +2 -2
- package/dist/_hooks/I18n.d.ts +12 -0
- package/dist/_locales/en.json +7 -1
- package/dist/_locales/pseudo.json +8 -2
- package/dist/_storyHelpers_/components/Deprecation.styles.js +1 -1
- package/dist/_storyHelpers_/components/StoryGrid.js +3 -3
- package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +4 -4
- package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
- package/dist/_typedoc/AvatarStack/AvatarStack.types.json +25 -25
- package/dist/_typedoc/Badge/Badge.types.json +6 -6
- package/dist/_typedoc/Banner/Banner.types.json +37 -15
- package/dist/_typedoc/Box/Box.types.json +68 -68
- package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +12 -12
- package/dist/_typedoc/Button/Button.types.json +14 -14
- package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
- package/dist/_typedoc/Card/Card.types.json +6 -6
- package/dist/_typedoc/Checkbox/Checkbox.types.json +8 -8
- package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
- package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
- package/dist/_typedoc/DateSelect/DateSelect.types.json +14 -14
- package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
- package/dist/_typedoc/Dropdown/Dropdown.types.json +38 -38
- package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +32 -32
- package/dist/_typedoc/Dropzone/Dropzone.types.json +44 -44
- package/dist/_typedoc/EmptyState/EmptyState.types.json +18 -18
- package/dist/_typedoc/FileList/FileList.types.json +9 -9
- package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
- package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
- package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
- package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +9 -9
- package/dist/_typedoc/Flex/Flex.types.json +27 -27
- package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
- package/dist/_typedoc/Form/Form.types.json +770 -770
- package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +12 -12
- package/dist/_typedoc/Grid/Grid.types.json +8 -8
- package/dist/_typedoc/GroupSelect/GroupSelect.types.json +54 -54
- package/dist/_typedoc/Input/Input.types.json +2 -2
- package/dist/_typedoc/Link/Link.types.json +1 -1
- package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
- package/dist/_typedoc/Menu/Menu.types.json +62 -62
- package/dist/_typedoc/MenuImperative/MenuImperative.types.json +84 -84
- package/dist/_typedoc/Modal/Modal.types.json +48 -48
- package/dist/_typedoc/MultiSelect/MultiSelect.types.json +33 -33
- package/dist/_typedoc/NextTile/NextTile.types.json +33 -33
- package/dist/_typedoc/Notation/Notation.types.json +4 -4
- package/dist/_typedoc/NumberInput/NumberInput.types.json +52 -52
- package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +33 -33
- package/dist/_typedoc/PageLayout/PageLayout.types.json +58 -45
- package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
- package/dist/_typedoc/Panel/Panel.types.json +28 -28
- package/dist/_typedoc/Pill/Pill.types.json +2 -2
- package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
- package/dist/_typedoc/Popover/Popover.types.json +15 -15
- package/dist/_typedoc/ProgressBar/ProgressBar.types.json +7 -7
- package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
- package/dist/_typedoc/Required/Required.types.json +5 -5
- package/dist/_typedoc/Search/Search.types.json +18 -18
- package/dist/_typedoc/Section/Section.types.json +15 -15
- package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
- package/dist/_typedoc/Select/Select.types.json +67 -67
- package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
- package/dist/_typedoc/Slider/Slider.types.json +6 -6
- package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
- package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +14 -14
- package/dist/_typedoc/Table/Table.types.json +105 -105
- package/dist/_typedoc/Tabs/Tabs.types.json +23 -23
- package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
- package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
- package/dist/_typedoc/TextEditor/TextEditor.types.json +11 -11
- package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
- package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
- package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +43 -43
- package/dist/_typedoc/TieredSelect/TieredSelect.types.json +29 -29
- package/dist/_typedoc/Tile/Tile.types.json +8 -8
- package/dist/_typedoc/Title/Title.types.json +1 -1
- package/dist/_typedoc/Toast/Toast.types.json +4 -4
- package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
- package/dist/_typedoc/Token/Token.types.json +7 -7
- package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
- package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +8 -8
- package/dist/_typedoc/Tooltip/Tooltip.types.json +15 -15
- package/dist/_typedoc/Tree/Tree.types.json +118 -88
- package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
- package/dist/_typedoc/Typography/Typography.types.json +9 -9
- package/dist/_typedoc/_utils/types.json +3 -3
- package/dist/_typedoc/a11y-tips.json +1 -1
- package/package.json +1 -1
|
@@ -8,16 +8,16 @@ import { getShadow } from '../_styles/shadows';
|
|
|
8
8
|
import { spacing } from '../_styles/spacing';
|
|
9
9
|
export var StyledTooltip = /*#__PURE__*/styled.span.withConfig({
|
|
10
10
|
displayName: "StyledTooltip",
|
|
11
|
-
componentId: "core-
|
|
11
|
+
componentId: "core-12_52_0__sc-1fawsi4-0"
|
|
12
12
|
})(["", " color:", ";max-width:200px;padding:", "px ", "px;position:relative;word-wrap:break-word;overflow-wrap:break-word;white-space:normal;&:empty{display:none;}"], getTypographyIntent('small'), colors.white, spacing.sm, spacing.md);
|
|
13
13
|
export var StyledContainer = /*#__PURE__*/styled.span.withConfig({
|
|
14
14
|
displayName: "StyledContainer",
|
|
15
|
-
componentId: "core-
|
|
15
|
+
componentId: "core-12_52_0__sc-1fawsi4-1"
|
|
16
16
|
})(["display:inline-flex;background-color:", ";border-radius:", "px;", " & + [data-overlay-arrow]{background:", ";}&:has(> span:empty) + [data-overlay-arrow]{display:none;}"], colors.gray15, borderRadius.md, getShadow(3, 'bottom'), colors.gray15);
|
|
17
17
|
|
|
18
18
|
// This is for the inline typography icon button. Note: not `Button` styles
|
|
19
19
|
export var StyledTooltipButton = /*#__PURE__*/styled.button.withConfig({
|
|
20
20
|
displayName: "StyledTooltipButton",
|
|
21
|
-
componentId: "core-
|
|
21
|
+
componentId: "core-12_52_0__sc-1fawsi4-2"
|
|
22
22
|
})(["", " border-radius:50%;color:", ";display:inline-flex;vertical-align:middle;&:focus-visible{", "}* + &{margin-left:", "px;}"], getUnstyledButton, colors.gray45, getGapOutlineFocus('ontop'), spacing.sm);
|
|
23
23
|
//# sourceMappingURL=Tooltip.styles.js.map
|
package/dist/Tree/Tree.js
CHANGED
|
@@ -3,7 +3,7 @@ var _excluded = ["options", "expanded", "selected", "selectionLimit", "getRoot",
|
|
|
3
3
|
_excluded2 = ["nodes", "rowRenderer", "highlight", "isTreeFocused"],
|
|
4
4
|
_excluded3 = ["node", "getIcon", "getLabel", "handleExpansion", "handleSelection", "selectionLimit", "isFileLimitReached", "shouldShowTooltip", "isMouseOver", "treeContainer"],
|
|
5
5
|
_excluded4 = ["children", "isSelected"],
|
|
6
|
-
_excluded5 = ["children", "isHighlighted", "isSelected", "isSelectable", "isExpandable", "isFileLimitReached", "level"];
|
|
6
|
+
_excluded5 = ["children", "isHighlighted", "isSelected", "isSelectable", "isExpandable", "isFileLimitReached", "isKeyboardMode", "level"];
|
|
7
7
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8
8
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
9
9
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
@@ -180,13 +180,17 @@ export var Tree = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
180
180
|
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
181
181
|
isTreeFocused = _React$useState4[0],
|
|
182
182
|
setIsTreeFocused = _React$useState4[1];
|
|
183
|
-
var _React$useState5 = React.useState(
|
|
183
|
+
var _React$useState5 = React.useState(false),
|
|
184
|
+
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
185
|
+
isKeyboardMode = _React$useState6[0],
|
|
186
|
+
setIsKeyboardMode = _React$useState6[1];
|
|
187
|
+
var _React$useState7 = React.useState({
|
|
184
188
|
width: 0,
|
|
185
189
|
height: 0
|
|
186
190
|
}),
|
|
187
|
-
_React$
|
|
188
|
-
containerSize = _React$
|
|
189
|
-
setContainerSize = _React$
|
|
191
|
+
_React$useState8 = _slicedToArray(_React$useState7, 2),
|
|
192
|
+
containerSize = _React$useState8[0],
|
|
193
|
+
setContainerSize = _React$useState8[1];
|
|
190
194
|
var handleContainerResize = React.useCallback(function (entries) {
|
|
191
195
|
if (entries[0]) {
|
|
192
196
|
var _ref2 = entries[0].target,
|
|
@@ -272,7 +276,22 @@ export var Tree = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
272
276
|
var isHighlighted = React.useCallback(function (node) {
|
|
273
277
|
return isTreeFocused && isNodeHighlighted(node);
|
|
274
278
|
}, [isNodeHighlighted, isTreeFocused]);
|
|
279
|
+
var handleFocus = function handleFocus(e) {
|
|
280
|
+
setIsTreeFocused(true);
|
|
281
|
+
try {
|
|
282
|
+
if (typeof e.target.matches === 'function' && e.target.matches(':focus-visible')) {
|
|
283
|
+
setIsKeyboardMode(true);
|
|
284
|
+
}
|
|
285
|
+
} catch (_unused) {
|
|
286
|
+
// :focus-visible unsupported in this environment; ignore.
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
var handleBlur = function handleBlur() {
|
|
290
|
+
setIsTreeFocused(false);
|
|
291
|
+
setIsKeyboardMode(false);
|
|
292
|
+
};
|
|
275
293
|
var handleAccessibility = function handleAccessibility(e) {
|
|
294
|
+
setIsKeyboardMode(true);
|
|
276
295
|
onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);
|
|
277
296
|
var key = e.key;
|
|
278
297
|
switch (key) {
|
|
@@ -380,9 +399,10 @@ export var Tree = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
380
399
|
isFileLimitReached: isFileLimitReached,
|
|
381
400
|
selectionLimit: selectionLimit,
|
|
382
401
|
isTreeFocused: isTreeFocused,
|
|
402
|
+
isKeyboardMode: isKeyboardMode,
|
|
383
403
|
treeContainer: wrapperRef.current
|
|
384
404
|
};
|
|
385
|
-
}, [getIcon, getLabel, getType, handleExpansion, handleSelection, highlight, isExpandable, isExpanded, isFileLimitReached, isHighlighted, isLoading, isSelectable, isSelected, isTreeFocused, nodes, rowRenderer, selectionLimit]);
|
|
405
|
+
}, [getIcon, getLabel, getType, handleExpansion, handleSelection, highlight, isExpandable, isExpanded, isFileLimitReached, isHighlighted, isKeyboardMode, isLoading, isSelectable, isSelected, isTreeFocused, nodes, rowRenderer, selectionLimit]);
|
|
386
406
|
if (!rootNodes) {
|
|
387
407
|
console.error('Tree must have a valid root node');
|
|
388
408
|
return null;
|
|
@@ -393,13 +413,15 @@ export var Tree = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
393
413
|
"aria-multiselectable": multiple,
|
|
394
414
|
"aria-activedescendant": highlightedNode ? getTreeItemId(highlightedNode.id) : undefined,
|
|
395
415
|
tabIndex: 0,
|
|
396
|
-
onFocus:
|
|
397
|
-
|
|
416
|
+
onFocus: handleFocus,
|
|
417
|
+
onBlur: handleBlur,
|
|
418
|
+
onKeyDown: handleAccessibility,
|
|
419
|
+
onMouseDown: function onMouseDown() {
|
|
420
|
+
return setIsKeyboardMode(false);
|
|
398
421
|
},
|
|
399
|
-
|
|
400
|
-
return
|
|
401
|
-
}
|
|
402
|
-
onKeyDown: handleAccessibility
|
|
422
|
+
onMouseMove: function onMouseMove() {
|
|
423
|
+
return setIsKeyboardMode(false);
|
|
424
|
+
}
|
|
403
425
|
}), /*#__PURE__*/React.createElement(FixedSizeList, {
|
|
404
426
|
className: "size-list",
|
|
405
427
|
ref: listRef,
|
|
@@ -425,10 +447,10 @@ var TreeNode = /*#__PURE__*/React.memo(function (_ref3) {
|
|
|
425
447
|
style = _ref3.style;
|
|
426
448
|
var node = nodes[index];
|
|
427
449
|
var isHighlighted = props.isHighlighted(node);
|
|
428
|
-
var _React$
|
|
429
|
-
_React$
|
|
430
|
-
isMouseOver = _React$
|
|
431
|
-
setMouseOver = _React$
|
|
450
|
+
var _React$useState9 = React.useState(false),
|
|
451
|
+
_React$useState0 = _slicedToArray(_React$useState9, 2),
|
|
452
|
+
isMouseOver = _React$useState0[0],
|
|
453
|
+
setMouseOver = _React$useState0[1];
|
|
432
454
|
var timer = useTimer({});
|
|
433
455
|
var _useVisibility = useVisibility({}),
|
|
434
456
|
shouldShowTooltip = _useVisibility.isVisible,
|
|
@@ -527,6 +549,7 @@ var TreeRow = function TreeRow(_ref4) {
|
|
|
527
549
|
isSelectable: isSelectable,
|
|
528
550
|
isExpandable: isExpandable,
|
|
529
551
|
isHighlighted: isHighlighted,
|
|
552
|
+
isKeyboardMode: props.isKeyboardMode,
|
|
530
553
|
isFileLimitReached: isFileLimitReached,
|
|
531
554
|
"data-qa": "core-tree-row-container"
|
|
532
555
|
}, /*#__PURE__*/React.createElement(StyledTreeRowContent, {
|
|
@@ -565,7 +588,7 @@ var IconContainer = function IconContainer(_ref5) {
|
|
|
565
588
|
};
|
|
566
589
|
var StyledChevronIcon = /*#__PURE__*/styled(ChevronRight).withConfig({
|
|
567
590
|
displayName: "StyledChevronIcon",
|
|
568
|
-
componentId: "core-
|
|
591
|
+
componentId: "core-12_52_0__sc-f25ekl-0"
|
|
569
592
|
})(["transform:rotate(", "deg);transition:transform 150ms ease-out;"], function (_ref6) {
|
|
570
593
|
var $isExpanded = _ref6.$isExpanded;
|
|
571
594
|
return $isExpanded ? 90 : 0;
|
|
@@ -643,10 +666,10 @@ var TreeRowTooltip = function TreeRowTooltip(_ref0) {
|
|
|
643
666
|
var isUserInteracting = isFocused || isMouseOver;
|
|
644
667
|
var isTooltipVisible = isUserInteracting && shouldShowTooltip && !isSelected;
|
|
645
668
|
var isFile = nodeType === 'leaf';
|
|
646
|
-
var _React$
|
|
647
|
-
_React$
|
|
648
|
-
isCropped = _React$
|
|
649
|
-
setCropped = _React$
|
|
669
|
+
var _React$useState1 = React.useState(false),
|
|
670
|
+
_React$useState10 = _slicedToArray(_React$useState1, 2),
|
|
671
|
+
isCropped = _React$useState10[0],
|
|
672
|
+
setCropped = _React$useState10[1];
|
|
650
673
|
var registerRowEl = useIntersectionObserver(function (entries) {
|
|
651
674
|
entries.forEach(function (entry) {
|
|
652
675
|
if (entry.rootBounds && entry.rootBounds.left - entry.boundingClientRect.left >= 0) {
|
|
@@ -679,12 +702,14 @@ var TreeRowContainer = function TreeRowContainer(_ref1) {
|
|
|
679
702
|
isSelectable = _ref1.isSelectable,
|
|
680
703
|
isExpandable = _ref1.isExpandable,
|
|
681
704
|
isFileLimitReached = _ref1.isFileLimitReached,
|
|
705
|
+
isKeyboardMode = _ref1.isKeyboardMode,
|
|
682
706
|
level = _ref1.level,
|
|
683
707
|
props = _objectWithoutProperties(_ref1, _excluded5);
|
|
684
708
|
return /*#__PURE__*/React.createElement(StyledTreeRowContainer, _extends({
|
|
685
709
|
$isSelectable: isSelectable && (isFileLimitReached && isSelected || !isFileLimitReached) || isExpandable,
|
|
686
710
|
$isHighlighted: isHighlighted,
|
|
687
711
|
$isSelected: isSelected,
|
|
712
|
+
$isKeyboardMode: isKeyboardMode,
|
|
688
713
|
style: {
|
|
689
714
|
paddingLeft: getPadding(level)
|
|
690
715
|
}
|
package/dist/Tree/Tree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tree.js","names":["ChevronRight","File","Folder","React","areEqual","FixedSizeList","styled","Button","Spinner","Tooltip","useI18nContext","useIntersectionObserver","useResizeObserver","useTimer","useVisibility","parseFilename","mergeRefs","useTree","StyledChevronPlaceholder","StyledFilenameCaption","StyledIconContainer","StyledTree","StyledTreeRowContainer","StyledTreeRowContent","StyledTreeRowWrapper","spacing","rootSpacing","defaultRowHeight","rowRightPadding","scrollbarWidth","getPadding","level","intersectionThresholds","Array","from","length","map","_","index","TreeInnerElement","forwardRef","props","ref","createElement","_extends","role","TreeOuterElement","tooltipDelay","getTreeItemId","nodeId","concat","UNSAFE_treeRootNodeId","defaultIsExpandable","node","defaultGetType","defaultIsSelectable","type","defaultGetParentId","parentId","defaultGetLabel","name","noop","isRootNode","rootValues","undefined","includes","Tree","_ref","options","_ref$expanded","expanded","_ref$selected","selected","_ref$selectionLimit","selectionLimit","Infinity","getRoot_","getRoot","getChildren_","getChildren","getIconBase","getIcon","_ref$getLabel","getLabel","_ref$getParentId","getParentId","getParentId_","_ref$getType","getType","_ref$isExpandable","isExpandable","_ref$isSelectable","isSelectable","_ref$multiple","multiple","_ref$onSelect","onSelect","_ref$onCollapse","onCollapse","_ref$onExpand","onExpand","Promise","resolve","rowRendererBase","rowRenderer","_ref$maxVisibleNodes","maxVisibleNodes","visibleHeight","_ref$autoExpandParent","autoExpandParent","innerElementType","outerElementType","onKeyDown","children","_objectWithoutProperties","_excluded","rowHeight","wrapperRef","useRef","listRef","listInnerRef","listOuterRefRef","_React$useState","useState","_React$useState2","_slicedToArray","contentMaxWidth","setContentMaxWidth","useMemo","defaultGetRoot","useCallback","nodes","filter","rootNodes","roots","isArray","useEffect","console","warn","_React$useState3","_React$useState4","isTreeFocused","setIsTreeFocused","_React$useState5","width","height","_React$useState6","containerSize","setContainerSize","handleContainerResize","entries","_ref2","target","clientHeight","clientWidth","setResizeObserverTarget","defaultGetChildren","childNode","id","_useTree","isExpanded","isSelected","isLoading","highlightedNode","isNodeHighlighted","isHighlighted","highlight","handleSelection","handleExpansion","_setExpanded","setExpanded","_setSelected","setSelected","isFileLimitReached","listNavigation","Set","useImperativeHandle","rootEl","current","toggleSelected","toggleExpanded","defaultGetIcon","isFolder","handleAccessibility","e","key","preventDefault","shiftKey","decrement","increment","parentNode","find","_listRef$current","scrollToItem","defaultRowRenderer","TreeRow","_listInnerRef$current","rowContentSizes","childNodes","forEach","child","rowContent","querySelector","_dataset$padding","leftPadding","dataset","padding","push","scrollWidth","parseInt","maxSizeRowContent","Math","max","apply","itemData","treeContainer","error","tabIndex","onFocus","onBlur","className","min","innerRef","outerRef","itemCount","itemSize","TreeNode","memo","_ref3","_ref3$data","data","_excluded2","style","_React$useState7","_React$useState8","isMouseOver","setMouseOver","timer","_useVisibility","shouldShowTooltip","isVisible","showTooltip","show","hideTooltip","hide","setTimer","onMouseEnter","onMouseLeave","cancel","nodeIsExpandable","nodeIsSelectable","nodeIsExpanded","nodeIsSelected","setSize","posInSet","_objectSpread","_ref4","_excluded3","chevronButtonRef","nodeType","rowLabel","onChevronClick","event","stopPropagation","onClick","_chevronButtonRef$cur","contains","onMouseDown","focus","TreeRowContainer","TreeRowChevron","TreeRowIcon","icon","TreeRowTooltip","fileName","TreeRowName","value","IconContainer","_ref5","_excluded4","$isSelected","StyledChevronIcon","withConfig","displayName","componentId","_ref6","$isExpanded","_ref7","I18n","variant","size","t","_ref8","marginLeft","marginRight","_ref9","getSelectionLimitMessage","count","getUnsupportedFileTypeMessage","_parseFilename","extension","isFilename","fileType","toUpperCase","_ref0","isFocused","rowRef","isUserInteracting","isTooltipVisible","isFile","_React$useState9","_React$useState0","isCropped","setCropped","registerRowEl","entry","rootBounds","left","boundingClientRect","root","rootMargin","threshold","selectionLimitMessage","unsupportedFileTypeMessage","message","trigger","overlay","placement","_ref1","_excluded5","$isSelectable","$isHighlighted","paddingLeft"],"sources":["../../src/Tree/Tree.tsx"],"sourcesContent":["import { ChevronRight, File, Folder } from '@procore/core-icons/dist'\nimport type { FunctionComponent, PropsWithChildren } from 'react'\nimport React from 'react'\nimport { areEqual, FixedSizeList } from 'react-window'\nimport styled from 'styled-components'\nimport { Button } from '../Button/Button'\nimport { Spinner } from '../Spinner/Spinner'\nimport { Tooltip } from '../Tooltip'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { useIntersectionObserver } from '../_hooks/IntersectionObserver'\nimport { useResizeObserver } from '../_hooks/ResizeObserver'\nimport { useTimer } from '../_hooks/Timer'\nimport { useVisibility } from '../_hooks/Visibility'\nimport { parseFilename } from '../_utils/filename'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport { useTree } from './Tree.hooks'\nimport {\n StyledChevronPlaceholder,\n StyledFilenameCaption,\n StyledIconContainer,\n StyledTree,\n StyledTreeRowContainer,\n StyledTreeRowContent,\n StyledTreeRowWrapper,\n} from './Tree.styles'\nimport type {\n CustomDataType,\n IconContainerProps,\n Node,\n TreeDefaultNode,\n TreeNodeId,\n TreeNodeProps,\n TreeProps,\n TreeRef,\n TreeRowContainerProps,\n TreeRowProps,\n TreeRowTooltipProps,\n} from './Tree.types'\n\nconst spacing = 32\nconst rootSpacing = 24\nconst defaultRowHeight = 36\n\n// Selected nodes have a bold text, and browsers occasionally miscalculate scrollWidth by one pixel down.\n// That situations might cause an issue when we get a second horizontal scrollbar.\n// This padding serves as compensation to prevent the described issue.\nconst rowRightPadding = 12\n// For most of browsers it usually varies between 12px and 20px.\n// To avoid tricky cross-browser calculations of scrollbar width. The maximum width is used.\nconst scrollbarWidth = 20\n\nfunction getPadding(level: number) {\n return rootSpacing + level * spacing\n}\n\nconst intersectionThresholds = Array.from({ length: 101 }).map(\n (_, index) => index / 100\n)\n\nconst TreeInnerElement = React.forwardRef<\n HTMLDivElement,\n React.HTMLProps<HTMLDivElement>\n>((props, ref) => <div role=\"presentation\" ref={ref} {...props} />)\n\nconst TreeOuterElement = React.forwardRef<\n HTMLDivElement,\n React.HTMLProps<HTMLDivElement>\n>((props, ref) => <div role=\"presentation\" ref={ref} {...props} />)\n\nconst tooltipDelay = 300\n\nfunction getTreeItemId(nodeId: TreeNodeId): string {\n return `treeitem-${nodeId}`\n}\n\n// TODO refactor this to not be upper snake case\nexport const UNSAFE_treeRootNodeId = 'ROOT_ID'\n\nconst defaultIsExpandable: NonNullable<TreeProps['isExpandable']> = (\n node: TreeDefaultNode\n) => defaultGetType(node) === 'branch'\nconst defaultIsSelectable: NonNullable<TreeProps['isSelectable']> = (\n node: TreeDefaultNode\n) => node.type === 'leaf'\nconst defaultGetType: NonNullable<TreeProps['getType']> = (\n node: TreeDefaultNode\n) => node.type\nconst defaultGetParentId: NonNullable<TreeProps['getParentId']> = (\n node: TreeDefaultNode\n) => node.parentId\nconst defaultGetLabel: NonNullable<TreeProps['getLabel']> = (\n node: TreeDefaultNode\n) => node.name\nfunction noop() {}\n\nexport function isRootNode(parentId: TreeNodeId): boolean {\n const rootValues = [UNSAFE_treeRootNodeId, null, undefined] as TreeNodeId[]\n return rootValues.includes(parentId)\n}\n\n/**\n\n The tree allows users to navigate between folder / file directories,\n and optionally select those files.\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-tree--demo)\n\n @see [Design Guidelines](https://design.procore.com/tree)\n\n */\nexport const Tree = React.forwardRef(\n <T extends Node = Node, P extends CustomDataType<T> = Array<T>>(\n {\n options,\n expanded = [],\n selected = [],\n selectionLimit = Infinity,\n getRoot: getRoot_,\n getChildren: getChildren_,\n getIcon: getIconBase,\n getLabel = defaultGetLabel,\n getParentId: getParentId_ = defaultGetParentId,\n getType = defaultGetType,\n isExpandable = defaultIsExpandable,\n isSelectable = defaultIsSelectable,\n multiple = true,\n onSelect = noop,\n onCollapse = noop,\n onExpand = () => Promise.resolve(),\n rowRenderer: rowRendererBase,\n maxVisibleNodes = Infinity,\n visibleHeight,\n autoExpandParent = true,\n innerElementType,\n outerElementType,\n onKeyDown,\n children,\n ...props\n }: TreeProps<T, P>,\n ref: React.Ref<TreeRef<T>>\n ) => {\n const rowHeight = defaultRowHeight\n const wrapperRef = React.useRef<HTMLDivElement | null>(null)\n const listRef = React.useRef<FixedSizeList>(null)\n const listInnerRef = React.useRef<HTMLDivElement>(null)\n const listOuterRefRef = React.useRef<HTMLDivElement>(null)\n const [contentMaxWidth, setContentMaxWidth] = React.useState(0)\n\n const getParentId = React.useMemo(() => getParentId_, [])\n\n const defaultGetRoot = React.useCallback(\n (nodes: P): T | T[] =>\n nodes.filter((node: T) => {\n return isRootNode(getParentId(node))\n }),\n [getParentId]\n )\n\n const getRoot = React.useMemo(\n () => getRoot_ || defaultGetRoot,\n [defaultGetRoot]\n )\n\n const rootNodes = React.useMemo(() => {\n const roots = getRoot(options)\n return Array.isArray(roots) ? roots : [roots]\n }, [getRoot, options])\n\n React.useEffect(() => {\n if (!rootNodes.length) {\n console.warn(\n 'Tree must have at least one root node. Look up `Tree#getParentId` for details.'\n )\n }\n }, [rootNodes])\n\n const [isTreeFocused, setIsTreeFocused] = React.useState(false)\n const [containerSize, setContainerSize] = React.useState({\n width: 0,\n height: 0,\n })\n\n const handleContainerResize = React.useCallback(\n (entries: ResizeObserverEntry[]) => {\n if (entries[0]) {\n const { clientHeight: height, clientWidth: width } = entries[0]\n .target as HTMLElement\n setContainerSize({ width, height })\n }\n },\n [setContainerSize]\n )\n\n const setResizeObserverTarget = useResizeObserver(handleContainerResize)\n\n const defaultGetChildren = React.useCallback(\n (node: T) =>\n Array.isArray(options)\n ? options.filter((childNode: T) => getParentId(childNode) === node.id)\n : ([] as T[]),\n [getParentId, options]\n )\n\n const getChildren = getChildren_ || defaultGetChildren\n\n const {\n nodes,\n isExpanded,\n isSelected,\n isLoading,\n highlightedNode,\n isHighlighted: isNodeHighlighted,\n highlight,\n handleSelection,\n handleExpansion,\n setExpanded: _setExpanded,\n setSelected: _setSelected,\n isFileLimitReached,\n listNavigation,\n } = useTree<T>({\n rootNodes,\n expanded,\n selected,\n selectionLimit,\n multiple,\n autoExpandParent,\n onSelect,\n onCollapse,\n onExpand,\n getChildren,\n getParentId,\n })\n\n const setSelected = React.useCallback(\n (selected: T | T[]) => {\n const nodes = Array.isArray(selected) ? selected : [selected]\n\n _setSelected(new Set(nodes.map((node) => node.id)))\n },\n [_setSelected]\n )\n\n const setExpanded = React.useCallback(\n (expanded: T | T[]) => {\n const nodes = Array.isArray(expanded) ? expanded : [expanded]\n\n _setExpanded(new Set(nodes.map((node) => node.id)))\n },\n [_setExpanded]\n )\n\n React.useImperativeHandle(ref, () => ({\n rootEl: wrapperRef.current,\n setSelected,\n setExpanded,\n toggleSelected: (node: T) => handleSelection(node),\n toggleExpanded: (node: T) => handleExpansion(node),\n }))\n\n const defaultGetIcon = React.useCallback(\n (node: T): React.ReactNode => {\n const isFolder = getType(node) === 'branch'\n return isFolder ? (\n <Folder role=\"img\" aria-label=\"Folder\" aria-hidden={false} />\n ) : (\n <File role=\"img\" aria-label=\"File\" aria-hidden={false} />\n )\n },\n [getType]\n )\n\n const getIcon = getIconBase || defaultGetIcon\n\n const isHighlighted = React.useCallback(\n (node: T) => isTreeFocused && isNodeHighlighted(node),\n [isNodeHighlighted, isTreeFocused]\n )\n\n const handleAccessibility = (e: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e)\n const { key } = e\n\n switch (key) {\n case 'Enter':\n e.preventDefault()\n isSelectable(highlightedNode) && handleSelection(highlightedNode)\n break\n case 'Space Bar':\n case ' ':\n e.preventDefault()\n isExpandable(highlightedNode) && handleExpansion(highlightedNode)\n break\n case 'Tab':\n if (e.shiftKey) {\n if (listNavigation.index > 0) {\n e.preventDefault()\n listNavigation.decrement()\n }\n } else {\n if (listNavigation.index < nodes.length - 1) {\n e.preventDefault()\n listNavigation.increment()\n }\n }\n break\n case 'ArrowLeft':\n case 'Left':\n e.preventDefault()\n if (isExpandable(highlightedNode) && isExpanded(highlightedNode)) {\n handleExpansion(highlightedNode)\n } else {\n const parentId = getParentId(highlightedNode)\n if (!isRootNode(parentId)) {\n const parentNode = nodes.find((node) => node.id === parentId)\n if (parentNode) {\n highlight(parentNode)\n }\n }\n }\n break\n case 'ArrowRight':\n case 'Right':\n e.preventDefault()\n if (isExpandable(highlightedNode) && !isExpanded(highlightedNode)) {\n handleExpansion(highlightedNode)\n } else if (\n isExpandable(highlightedNode) &&\n isExpanded(highlightedNode)\n ) {\n listNavigation.increment()\n }\n break\n case 'ArrowDown':\n case 'Down':\n e.preventDefault()\n listNavigation.increment()\n break\n case 'ArrowUp':\n case 'Up':\n e.preventDefault()\n listNavigation.decrement()\n break\n }\n }\n\n React.useEffect(() => {\n if (isTreeFocused) {\n listRef.current?.scrollToItem(listNavigation.index)\n }\n }, [isTreeFocused, listNavigation.index])\n\n const defaultRowRenderer = React.useCallback(\n (props: TreeRowProps) => <TreeRow {...props} />,\n []\n )\n\n React.useEffect(() => {\n const rowContentSizes: number[] = []\n\n const childNodes = Array.from(listInnerRef.current?.childNodes || [])\n childNodes.forEach((child) => {\n const rowContent = (child as HTMLElement).querySelector(\n '[data-row-content]'\n )\n\n if (rowContent) {\n const leftPadding = (child as HTMLElement).dataset.padding ?? '0'\n rowContentSizes.push(\n rowContent.scrollWidth + parseInt(leftPadding, 10) + rowRightPadding\n )\n }\n })\n\n const maxSizeRowContent = Math.max(...rowContentSizes) + scrollbarWidth\n setContentMaxWidth(maxSizeRowContent)\n })\n\n const rowRenderer = rowRendererBase || defaultRowRenderer\n\n const itemData = React.useMemo(\n () => ({\n nodes,\n getIcon,\n getLabel,\n getType,\n isExpandable,\n isSelectable,\n isExpanded,\n isSelected,\n isLoading,\n highlight,\n isHighlighted,\n handleSelection,\n handleExpansion,\n rowRenderer,\n isFileLimitReached,\n selectionLimit,\n isTreeFocused,\n treeContainer: wrapperRef.current as HTMLDivElement,\n }),\n [\n getIcon,\n getLabel,\n getType,\n handleExpansion,\n handleSelection,\n highlight,\n isExpandable,\n isExpanded,\n isFileLimitReached,\n isHighlighted,\n isLoading,\n isSelectable,\n isSelected,\n isTreeFocused,\n nodes,\n rowRenderer,\n selectionLimit,\n ]\n )\n\n if (!rootNodes) {\n console.error('Tree must have a valid root node')\n return null\n }\n\n return (\n <StyledTree\n {...props}\n ref={mergeRefs(wrapperRef, setResizeObserverTarget)}\n role=\"tree\"\n aria-multiselectable={multiple}\n aria-activedescendant={\n highlightedNode ? getTreeItemId(highlightedNode.id) : undefined\n }\n tabIndex={0}\n onFocus={() => setIsTreeFocused(true)}\n onBlur={() => setIsTreeFocused(false)}\n onKeyDown={handleAccessibility}\n >\n <FixedSizeList\n className=\"size-list\"\n ref={listRef}\n height={\n visibleHeight ||\n Math.min(nodes.length * rowHeight, rowHeight * maxVisibleNodes)\n }\n innerRef={listInnerRef}\n outerRef={listOuterRefRef}\n itemCount={nodes.length}\n itemSize={rowHeight}\n innerElementType={innerElementType ?? TreeInnerElement}\n outerElementType={outerElementType ?? TreeOuterElement}\n itemData={itemData}\n width={Math.max(contentMaxWidth, containerSize.width)}\n >\n {TreeNode}\n </FixedSizeList>\n </StyledTree>\n )\n }\n)\n\nconst TreeNode: React.FC<TreeNodeProps> = React.memo(\n ({\n data: { nodes, rowRenderer, highlight, isTreeFocused, ...props },\n index,\n style,\n }) => {\n const node = nodes[index]\n\n const isHighlighted = props.isHighlighted(node)\n const [isMouseOver, setMouseOver] = React.useState(false)\n\n const timer = useTimer({})\n const {\n isVisible: shouldShowTooltip,\n show: showTooltip,\n hide: hideTooltip,\n } = useVisibility({})\n\n React.useEffect(() => {\n if (isHighlighted && !shouldShowTooltip) {\n timer.setTimer(showTooltip, tooltipDelay)\n }\n\n return () => {\n if (isTreeFocused && !isHighlighted && shouldShowTooltip) {\n hideTooltip()\n }\n }\n })\n\n const onMouseEnter = () => {\n setMouseOver(true)\n if (!shouldShowTooltip) {\n timer.setTimer(showTooltip, tooltipDelay)\n }\n highlight(node)\n }\n\n const onMouseLeave = () => {\n setMouseOver(false)\n timer.cancel()\n hideTooltip()\n }\n\n const nodeIsExpandable = props.isExpandable(node)\n const nodeIsSelectable = props.isSelectable(node)\n const nodeIsExpanded = props.isExpanded(node)\n const nodeIsSelected = props.isSelected(node)\n\n return (\n <StyledTreeRowWrapper\n id={getTreeItemId(node.id)}\n role=\"treeitem\"\n aria-level={node.level + 1}\n aria-setsize={node.setSize}\n aria-posinset={node.posInSet}\n aria-expanded={nodeIsExpandable ? nodeIsExpanded : undefined}\n aria-selected={nodeIsSelectable ? nodeIsSelected : undefined}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n style={style}\n data-padding={getPadding(node.level)}\n >\n {rowRenderer({\n node,\n shouldShowTooltip,\n isMouseOver,\n ...props,\n })}\n </StyledTreeRowWrapper>\n )\n },\n areEqual\n)\n\nconst TreeRow: React.FC<TreeRowProps> = ({\n node,\n getIcon,\n getLabel,\n handleExpansion,\n handleSelection,\n selectionLimit,\n isFileLimitReached,\n shouldShowTooltip,\n isMouseOver,\n treeContainer,\n ...props\n}) => {\n const chevronButtonRef = React.useRef<HTMLButtonElement>(null)\n const isSelected = props.isSelected(node)\n const isSelectable = props.isSelectable(node)\n const isExpandable = props.isExpandable(node)\n const isExpanded = props.isExpanded(node)\n const isLoading = props.isLoading(node)\n const isHighlighted = props.isHighlighted(node)\n const nodeType = props.getType(node)\n const rowLabel = getLabel(node)\n\n const onChevronClick = React.useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation()\n handleExpansion(node)\n },\n [handleExpansion, node]\n )\n\n const onClick = React.useCallback(\n (event: React.MouseEvent) => {\n // Chevron button handles its own event\n if (chevronButtonRef.current?.contains(event.target as globalThis.Node)) {\n return\n }\n\n if (isSelectable) {\n handleSelection(node)\n } else if (isExpandable) {\n handleExpansion(node)\n }\n },\n [handleExpansion, handleSelection, isExpandable, isSelectable, node]\n )\n\n const onMouseDown = React.useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault()\n treeContainer.focus()\n },\n [treeContainer]\n )\n\n return (\n <TreeRowContainer\n level={node.level}\n onClick={onClick}\n onMouseDown={onMouseDown}\n isSelected={isSelected}\n isSelectable={isSelectable}\n isExpandable={isExpandable}\n isHighlighted={isHighlighted}\n isFileLimitReached={isFileLimitReached}\n data-qa=\"core-tree-row-container\"\n >\n {\n // WARNING!\n // Be aware that this data attribute is used for calculations, changing this data attribute will break its operability.\n }\n <StyledTreeRowContent data-row-content>\n <TreeRowChevron\n ref={chevronButtonRef}\n isExpandable={isExpandable}\n isExpanded={isExpanded}\n onClick={onChevronClick}\n />\n <TreeRowIcon\n isLoading={isLoading}\n isSelected={isSelected}\n icon={getIcon(node)}\n />\n <TreeRowTooltip\n isSelected={isSelected}\n isSelectable={isSelectable}\n isHighlighted={isHighlighted}\n selectionLimit={selectionLimit}\n isFileLimitReached={isFileLimitReached}\n shouldShowTooltip={shouldShowTooltip}\n isMouseOver={isMouseOver}\n fileName={rowLabel}\n nodeType={nodeType}\n treeContainer={treeContainer}\n >\n <TreeRowName value={rowLabel} />\n </TreeRowTooltip>\n </StyledTreeRowContent>\n </TreeRowContainer>\n )\n}\n\nconst IconContainer: React.FC<IconContainerProps> = ({\n children,\n isSelected,\n ...props\n}) => (\n <StyledIconContainer $isSelected={isSelected} {...props}>\n {children}\n </StyledIconContainer>\n)\n\nconst StyledChevronIcon = styled(ChevronRight)<{ $isExpanded: boolean }>`\n transform: rotate(${({ $isExpanded }) => ($isExpanded ? 90 : 0)}deg);\n transition: transform 150ms ease-out;\n`\n\nconst TreeRowChevron = React.forwardRef<\n HTMLButtonElement,\n {\n isExpanded: boolean\n isExpandable: boolean\n onClick: (event: React.MouseEvent) => void\n }\n>(({ isExpanded, isExpandable, onClick }, ref) => {\n const I18n = useI18nContext()\n\n if (!isExpandable) {\n return <StyledChevronPlaceholder />\n }\n\n return (\n <Button\n ref={ref}\n variant=\"tertiary\"\n size=\"sm\"\n icon={<StyledChevronIcon $isExpanded={isExpanded} />}\n onClick={onClick}\n tabIndex={-1}\n aria-label={I18n.t(\n isExpanded ? 'core.tree.collapse' : 'core.tree.expand'\n )}\n />\n )\n})\n\nconst TreeRowIcon: React.FC<{\n isSelected: boolean\n isLoading: boolean\n icon: React.ReactNode\n}> = ({ isSelected, isLoading, icon }) => (\n <IconContainer isSelected={isSelected} marginLeft=\"sm\" marginRight=\"sm\">\n {isLoading ? <Spinner size=\"sm\" /> : icon}\n </IconContainer>\n)\n\nconst TreeRowName: React.FC<{ value: string }> = ({ value }) => (\n <StyledFilenameCaption>{value}</StyledFilenameCaption>\n)\n\nconst getSelectionLimitMessage = (selectionLimit: number) => ({\n key: 'selectionLimit',\n options: {\n count: selectionLimit,\n },\n})\n\nconst getUnsupportedFileTypeMessage = (fileName: string) => {\n const { extension, isFilename } = parseFilename(fileName)\n const key = isFilename ? 'specific' : 'unspecific'\n\n return {\n key: `unsupportedFileType.${key}`,\n options: {\n fileType: `.${extension.toUpperCase()}`,\n },\n }\n}\n\nconst TreeRowTooltip: FunctionComponent<\n PropsWithChildren<TreeRowTooltipProps>\n> = ({\n children,\n isHighlighted: isFocused,\n isFileLimitReached,\n isSelectable,\n isSelected,\n nodeType,\n selectionLimit,\n shouldShowTooltip,\n isMouseOver,\n fileName,\n treeContainer,\n}) => {\n const I18n = useI18nContext()\n const rowRef = React.useRef<HTMLDivElement>(null)\n const isUserInteracting = isFocused || isMouseOver\n const isTooltipVisible = isUserInteracting && shouldShowTooltip && !isSelected\n const isFile = nodeType === 'leaf'\n const [isCropped, setCropped] = React.useState(false)\n\n const registerRowEl = useIntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (\n entry.rootBounds &&\n entry.rootBounds.left - entry.boundingClientRect.left >= 0\n ) {\n setCropped(true)\n return\n }\n setCropped(false)\n })\n },\n {\n root: treeContainer,\n rootMargin: '0px',\n threshold: intersectionThresholds,\n }\n )\n\n const selectionLimitMessage = getSelectionLimitMessage(selectionLimit)\n const unsupportedFileTypeMessage = getUnsupportedFileTypeMessage(fileName)\n\n const message = isSelectable\n ? isFileLimitReached && selectionLimitMessage\n : isFile && unsupportedFileTypeMessage\n\n const trigger = isTooltipVisible && !isCropped && message ? 'always' : 'none'\n\n return (\n <Tooltip\n trigger={trigger}\n overlay={\n message ? I18n.t(`core.tree.${message.key}`, message.options) : null\n }\n placement=\"top-left\"\n >\n <div ref={mergeRefs(rowRef, registerRowEl)}>{children}</div>\n </Tooltip>\n )\n}\n\nconst TreeRowContainer: React.FC<TreeRowContainerProps> = ({\n children,\n isHighlighted,\n isSelected,\n isSelectable,\n isExpandable,\n isFileLimitReached,\n level,\n ...props\n}) => {\n return (\n <StyledTreeRowContainer\n $isSelectable={\n (isSelectable &&\n ((isFileLimitReached && isSelected) || !isFileLimitReached)) ||\n isExpandable\n }\n $isHighlighted={isHighlighted}\n $isSelected={isSelected}\n style={{ paddingLeft: getPadding(level) }}\n {...props}\n >\n {children}\n </StyledTreeRowContainer>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tree.js","names":["ChevronRight","File","Folder","React","areEqual","FixedSizeList","styled","Button","Spinner","Tooltip","useI18nContext","useIntersectionObserver","useResizeObserver","useTimer","useVisibility","parseFilename","mergeRefs","useTree","StyledChevronPlaceholder","StyledFilenameCaption","StyledIconContainer","StyledTree","StyledTreeRowContainer","StyledTreeRowContent","StyledTreeRowWrapper","spacing","rootSpacing","defaultRowHeight","rowRightPadding","scrollbarWidth","getPadding","level","intersectionThresholds","Array","from","length","map","_","index","TreeInnerElement","forwardRef","props","ref","createElement","_extends","role","TreeOuterElement","tooltipDelay","getTreeItemId","nodeId","concat","UNSAFE_treeRootNodeId","defaultIsExpandable","node","defaultGetType","defaultIsSelectable","type","defaultGetParentId","parentId","defaultGetLabel","name","noop","isRootNode","rootValues","undefined","includes","Tree","_ref","options","_ref$expanded","expanded","_ref$selected","selected","_ref$selectionLimit","selectionLimit","Infinity","getRoot_","getRoot","getChildren_","getChildren","getIconBase","getIcon","_ref$getLabel","getLabel","_ref$getParentId","getParentId","getParentId_","_ref$getType","getType","_ref$isExpandable","isExpandable","_ref$isSelectable","isSelectable","_ref$multiple","multiple","_ref$onSelect","onSelect","_ref$onCollapse","onCollapse","_ref$onExpand","onExpand","Promise","resolve","rowRendererBase","rowRenderer","_ref$maxVisibleNodes","maxVisibleNodes","visibleHeight","_ref$autoExpandParent","autoExpandParent","innerElementType","outerElementType","onKeyDown","children","_objectWithoutProperties","_excluded","rowHeight","wrapperRef","useRef","listRef","listInnerRef","listOuterRefRef","_React$useState","useState","_React$useState2","_slicedToArray","contentMaxWidth","setContentMaxWidth","useMemo","defaultGetRoot","useCallback","nodes","filter","rootNodes","roots","isArray","useEffect","console","warn","_React$useState3","_React$useState4","isTreeFocused","setIsTreeFocused","_React$useState5","_React$useState6","isKeyboardMode","setIsKeyboardMode","_React$useState7","width","height","_React$useState8","containerSize","setContainerSize","handleContainerResize","entries","_ref2","target","clientHeight","clientWidth","setResizeObserverTarget","defaultGetChildren","childNode","id","_useTree","isExpanded","isSelected","isLoading","highlightedNode","isNodeHighlighted","isHighlighted","highlight","handleSelection","handleExpansion","_setExpanded","setExpanded","_setSelected","setSelected","isFileLimitReached","listNavigation","Set","useImperativeHandle","rootEl","current","toggleSelected","toggleExpanded","defaultGetIcon","isFolder","handleFocus","e","matches","_unused","handleBlur","handleAccessibility","key","preventDefault","shiftKey","decrement","increment","parentNode","find","_listRef$current","scrollToItem","defaultRowRenderer","TreeRow","_listInnerRef$current","rowContentSizes","childNodes","forEach","child","rowContent","querySelector","_dataset$padding","leftPadding","dataset","padding","push","scrollWidth","parseInt","maxSizeRowContent","Math","max","apply","itemData","treeContainer","error","tabIndex","onFocus","onBlur","onMouseDown","onMouseMove","className","min","innerRef","outerRef","itemCount","itemSize","TreeNode","memo","_ref3","_ref3$data","data","_excluded2","style","_React$useState9","_React$useState0","isMouseOver","setMouseOver","timer","_useVisibility","shouldShowTooltip","isVisible","showTooltip","show","hideTooltip","hide","setTimer","onMouseEnter","onMouseLeave","cancel","nodeIsExpandable","nodeIsSelectable","nodeIsExpanded","nodeIsSelected","setSize","posInSet","_objectSpread","_ref4","_excluded3","chevronButtonRef","nodeType","rowLabel","onChevronClick","event","stopPropagation","onClick","_chevronButtonRef$cur","contains","focus","TreeRowContainer","TreeRowChevron","TreeRowIcon","icon","TreeRowTooltip","fileName","TreeRowName","value","IconContainer","_ref5","_excluded4","$isSelected","StyledChevronIcon","withConfig","displayName","componentId","_ref6","$isExpanded","_ref7","I18n","variant","size","t","_ref8","marginLeft","marginRight","_ref9","getSelectionLimitMessage","count","getUnsupportedFileTypeMessage","_parseFilename","extension","isFilename","fileType","toUpperCase","_ref0","isFocused","rowRef","isUserInteracting","isTooltipVisible","isFile","_React$useState1","_React$useState10","isCropped","setCropped","registerRowEl","entry","rootBounds","left","boundingClientRect","root","rootMargin","threshold","selectionLimitMessage","unsupportedFileTypeMessage","message","trigger","overlay","placement","_ref1","_excluded5","$isSelectable","$isHighlighted","$isKeyboardMode","paddingLeft"],"sources":["../../src/Tree/Tree.tsx"],"sourcesContent":["import { ChevronRight, File, Folder } from '@procore/core-icons/dist'\nimport type { FunctionComponent, PropsWithChildren } from 'react'\nimport React from 'react'\nimport { areEqual, FixedSizeList } from 'react-window'\nimport styled from 'styled-components'\nimport { Button } from '../Button/Button'\nimport { Spinner } from '../Spinner/Spinner'\nimport { Tooltip } from '../Tooltip'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { useIntersectionObserver } from '../_hooks/IntersectionObserver'\nimport { useResizeObserver } from '../_hooks/ResizeObserver'\nimport { useTimer } from '../_hooks/Timer'\nimport { useVisibility } from '../_hooks/Visibility'\nimport { parseFilename } from '../_utils/filename'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport { useTree } from './Tree.hooks'\nimport {\n StyledChevronPlaceholder,\n StyledFilenameCaption,\n StyledIconContainer,\n StyledTree,\n StyledTreeRowContainer,\n StyledTreeRowContent,\n StyledTreeRowWrapper,\n} from './Tree.styles'\nimport type {\n CustomDataType,\n IconContainerProps,\n Node,\n TreeDefaultNode,\n TreeNodeId,\n TreeNodeProps,\n TreeProps,\n TreeRef,\n TreeRowContainerProps,\n TreeRowProps,\n TreeRowTooltipProps,\n} from './Tree.types'\n\nconst spacing = 32\nconst rootSpacing = 24\nconst defaultRowHeight = 36\n\n// Selected nodes have a bold text, and browsers occasionally miscalculate scrollWidth by one pixel down.\n// That situations might cause an issue when we get a second horizontal scrollbar.\n// This padding serves as compensation to prevent the described issue.\nconst rowRightPadding = 12\n// For most of browsers it usually varies between 12px and 20px.\n// To avoid tricky cross-browser calculations of scrollbar width. The maximum width is used.\nconst scrollbarWidth = 20\n\nfunction getPadding(level: number) {\n return rootSpacing + level * spacing\n}\n\nconst intersectionThresholds = Array.from({ length: 101 }).map(\n (_, index) => index / 100\n)\n\nconst TreeInnerElement = React.forwardRef<\n HTMLDivElement,\n React.HTMLProps<HTMLDivElement>\n>((props, ref) => <div role=\"presentation\" ref={ref} {...props} />)\n\nconst TreeOuterElement = React.forwardRef<\n HTMLDivElement,\n React.HTMLProps<HTMLDivElement>\n>((props, ref) => <div role=\"presentation\" ref={ref} {...props} />)\n\nconst tooltipDelay = 300\n\nfunction getTreeItemId(nodeId: TreeNodeId): string {\n return `treeitem-${nodeId}`\n}\n\n// TODO refactor this to not be upper snake case\nexport const UNSAFE_treeRootNodeId = 'ROOT_ID'\n\nconst defaultIsExpandable: NonNullable<TreeProps['isExpandable']> = (\n node: TreeDefaultNode\n) => defaultGetType(node) === 'branch'\nconst defaultIsSelectable: NonNullable<TreeProps['isSelectable']> = (\n node: TreeDefaultNode\n) => node.type === 'leaf'\nconst defaultGetType: NonNullable<TreeProps['getType']> = (\n node: TreeDefaultNode\n) => node.type\nconst defaultGetParentId: NonNullable<TreeProps['getParentId']> = (\n node: TreeDefaultNode\n) => node.parentId\nconst defaultGetLabel: NonNullable<TreeProps['getLabel']> = (\n node: TreeDefaultNode\n) => node.name\nfunction noop() {}\n\nexport function isRootNode(parentId: TreeNodeId): boolean {\n const rootValues = [UNSAFE_treeRootNodeId, null, undefined] as TreeNodeId[]\n return rootValues.includes(parentId)\n}\n\n/**\n\n The tree allows users to navigate between folder / file directories,\n and optionally select those files.\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-tree--demo)\n\n @see [Design Guidelines](https://design.procore.com/tree)\n\n */\nexport const Tree = React.forwardRef(\n <T extends Node = Node, P extends CustomDataType<T> = Array<T>>(\n {\n options,\n expanded = [],\n selected = [],\n selectionLimit = Infinity,\n getRoot: getRoot_,\n getChildren: getChildren_,\n getIcon: getIconBase,\n getLabel = defaultGetLabel,\n getParentId: getParentId_ = defaultGetParentId,\n getType = defaultGetType,\n isExpandable = defaultIsExpandable,\n isSelectable = defaultIsSelectable,\n multiple = true,\n onSelect = noop,\n onCollapse = noop,\n onExpand = () => Promise.resolve(),\n rowRenderer: rowRendererBase,\n maxVisibleNodes = Infinity,\n visibleHeight,\n autoExpandParent = true,\n innerElementType,\n outerElementType,\n onKeyDown,\n children,\n ...props\n }: TreeProps<T, P>,\n ref: React.Ref<TreeRef<T>>\n ) => {\n const rowHeight = defaultRowHeight\n const wrapperRef = React.useRef<HTMLDivElement | null>(null)\n const listRef = React.useRef<FixedSizeList>(null)\n const listInnerRef = React.useRef<HTMLDivElement>(null)\n const listOuterRefRef = React.useRef<HTMLDivElement>(null)\n const [contentMaxWidth, setContentMaxWidth] = React.useState(0)\n\n const getParentId = React.useMemo(() => getParentId_, [])\n\n const defaultGetRoot = React.useCallback(\n (nodes: P): T | T[] =>\n nodes.filter((node: T) => {\n return isRootNode(getParentId(node))\n }),\n [getParentId]\n )\n\n const getRoot = React.useMemo(\n () => getRoot_ || defaultGetRoot,\n [defaultGetRoot]\n )\n\n const rootNodes = React.useMemo(() => {\n const roots = getRoot(options)\n return Array.isArray(roots) ? roots : [roots]\n }, [getRoot, options])\n\n React.useEffect(() => {\n if (!rootNodes.length) {\n console.warn(\n 'Tree must have at least one root node. Look up `Tree#getParentId` for details.'\n )\n }\n }, [rootNodes])\n\n const [isTreeFocused, setIsTreeFocused] = React.useState(false)\n const [isKeyboardMode, setIsKeyboardMode] = React.useState(false)\n const [containerSize, setContainerSize] = React.useState({\n width: 0,\n height: 0,\n })\n\n const handleContainerResize = React.useCallback(\n (entries: ResizeObserverEntry[]) => {\n if (entries[0]) {\n const { clientHeight: height, clientWidth: width } = entries[0]\n .target as HTMLElement\n setContainerSize({ width, height })\n }\n },\n [setContainerSize]\n )\n\n const setResizeObserverTarget = useResizeObserver(handleContainerResize)\n\n const defaultGetChildren = React.useCallback(\n (node: T) =>\n Array.isArray(options)\n ? options.filter((childNode: T) => getParentId(childNode) === node.id)\n : ([] as T[]),\n [getParentId, options]\n )\n\n const getChildren = getChildren_ || defaultGetChildren\n\n const {\n nodes,\n isExpanded,\n isSelected,\n isLoading,\n highlightedNode,\n isHighlighted: isNodeHighlighted,\n highlight,\n handleSelection,\n handleExpansion,\n setExpanded: _setExpanded,\n setSelected: _setSelected,\n isFileLimitReached,\n listNavigation,\n } = useTree<T>({\n rootNodes,\n expanded,\n selected,\n selectionLimit,\n multiple,\n autoExpandParent,\n onSelect,\n onCollapse,\n onExpand,\n getChildren,\n getParentId,\n })\n\n const setSelected = React.useCallback(\n (selected: T | T[]) => {\n const nodes = Array.isArray(selected) ? selected : [selected]\n\n _setSelected(new Set(nodes.map((node) => node.id)))\n },\n [_setSelected]\n )\n\n const setExpanded = React.useCallback(\n (expanded: T | T[]) => {\n const nodes = Array.isArray(expanded) ? expanded : [expanded]\n\n _setExpanded(new Set(nodes.map((node) => node.id)))\n },\n [_setExpanded]\n )\n\n React.useImperativeHandle(ref, () => ({\n rootEl: wrapperRef.current,\n setSelected,\n setExpanded,\n toggleSelected: (node: T) => handleSelection(node),\n toggleExpanded: (node: T) => handleExpansion(node),\n }))\n\n const defaultGetIcon = React.useCallback(\n (node: T): React.ReactNode => {\n const isFolder = getType(node) === 'branch'\n return isFolder ? (\n <Folder role=\"img\" aria-label=\"Folder\" aria-hidden={false} />\n ) : (\n <File role=\"img\" aria-label=\"File\" aria-hidden={false} />\n )\n },\n [getType]\n )\n\n const getIcon = getIconBase || defaultGetIcon\n\n const isHighlighted = React.useCallback(\n (node: T) => isTreeFocused && isNodeHighlighted(node),\n [isNodeHighlighted, isTreeFocused]\n )\n\n const handleFocus = (e: React.FocusEvent<HTMLDivElement>) => {\n setIsTreeFocused(true)\n try {\n if (\n typeof e.target.matches === 'function' &&\n e.target.matches(':focus-visible')\n ) {\n setIsKeyboardMode(true)\n }\n } catch {\n // :focus-visible unsupported in this environment; ignore.\n }\n }\n\n const handleBlur = () => {\n setIsTreeFocused(false)\n setIsKeyboardMode(false)\n }\n\n const handleAccessibility = (e: React.KeyboardEvent<HTMLDivElement>) => {\n setIsKeyboardMode(true)\n onKeyDown?.(e)\n const { key } = e\n\n switch (key) {\n case 'Enter':\n e.preventDefault()\n isSelectable(highlightedNode) && handleSelection(highlightedNode)\n break\n case 'Space Bar':\n case ' ':\n e.preventDefault()\n isExpandable(highlightedNode) && handleExpansion(highlightedNode)\n break\n case 'Tab':\n if (e.shiftKey) {\n if (listNavigation.index > 0) {\n e.preventDefault()\n listNavigation.decrement()\n }\n } else {\n if (listNavigation.index < nodes.length - 1) {\n e.preventDefault()\n listNavigation.increment()\n }\n }\n break\n case 'ArrowLeft':\n case 'Left':\n e.preventDefault()\n if (isExpandable(highlightedNode) && isExpanded(highlightedNode)) {\n handleExpansion(highlightedNode)\n } else {\n const parentId = getParentId(highlightedNode)\n if (!isRootNode(parentId)) {\n const parentNode = nodes.find((node) => node.id === parentId)\n if (parentNode) {\n highlight(parentNode)\n }\n }\n }\n break\n case 'ArrowRight':\n case 'Right':\n e.preventDefault()\n if (isExpandable(highlightedNode) && !isExpanded(highlightedNode)) {\n handleExpansion(highlightedNode)\n } else if (\n isExpandable(highlightedNode) &&\n isExpanded(highlightedNode)\n ) {\n listNavigation.increment()\n }\n break\n case 'ArrowDown':\n case 'Down':\n e.preventDefault()\n listNavigation.increment()\n break\n case 'ArrowUp':\n case 'Up':\n e.preventDefault()\n listNavigation.decrement()\n break\n }\n }\n\n React.useEffect(() => {\n if (isTreeFocused) {\n listRef.current?.scrollToItem(listNavigation.index)\n }\n }, [isTreeFocused, listNavigation.index])\n\n const defaultRowRenderer = React.useCallback(\n (props: TreeRowProps) => <TreeRow {...props} />,\n []\n )\n\n React.useEffect(() => {\n const rowContentSizes: number[] = []\n\n const childNodes = Array.from(listInnerRef.current?.childNodes || [])\n childNodes.forEach((child) => {\n const rowContent = (child as HTMLElement).querySelector(\n '[data-row-content]'\n )\n\n if (rowContent) {\n const leftPadding = (child as HTMLElement).dataset.padding ?? '0'\n rowContentSizes.push(\n rowContent.scrollWidth + parseInt(leftPadding, 10) + rowRightPadding\n )\n }\n })\n\n const maxSizeRowContent = Math.max(...rowContentSizes) + scrollbarWidth\n setContentMaxWidth(maxSizeRowContent)\n })\n\n const rowRenderer = rowRendererBase || defaultRowRenderer\n\n const itemData = React.useMemo(\n () => ({\n nodes,\n getIcon,\n getLabel,\n getType,\n isExpandable,\n isSelectable,\n isExpanded,\n isSelected,\n isLoading,\n highlight,\n isHighlighted,\n handleSelection,\n handleExpansion,\n rowRenderer,\n isFileLimitReached,\n selectionLimit,\n isTreeFocused,\n isKeyboardMode,\n treeContainer: wrapperRef.current as HTMLDivElement,\n }),\n [\n getIcon,\n getLabel,\n getType,\n handleExpansion,\n handleSelection,\n highlight,\n isExpandable,\n isExpanded,\n isFileLimitReached,\n isHighlighted,\n isKeyboardMode,\n isLoading,\n isSelectable,\n isSelected,\n isTreeFocused,\n nodes,\n rowRenderer,\n selectionLimit,\n ]\n )\n\n if (!rootNodes) {\n console.error('Tree must have a valid root node')\n return null\n }\n\n return (\n <StyledTree\n {...props}\n ref={mergeRefs(wrapperRef, setResizeObserverTarget)}\n role=\"tree\"\n aria-multiselectable={multiple}\n aria-activedescendant={\n highlightedNode ? getTreeItemId(highlightedNode.id) : undefined\n }\n tabIndex={0}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleAccessibility}\n onMouseDown={() => setIsKeyboardMode(false)}\n onMouseMove={() => setIsKeyboardMode(false)}\n >\n <FixedSizeList\n className=\"size-list\"\n ref={listRef}\n height={\n visibleHeight ||\n Math.min(nodes.length * rowHeight, rowHeight * maxVisibleNodes)\n }\n innerRef={listInnerRef}\n outerRef={listOuterRefRef}\n itemCount={nodes.length}\n itemSize={rowHeight}\n innerElementType={innerElementType ?? TreeInnerElement}\n outerElementType={outerElementType ?? TreeOuterElement}\n itemData={itemData}\n width={Math.max(contentMaxWidth, containerSize.width)}\n >\n {TreeNode}\n </FixedSizeList>\n </StyledTree>\n )\n }\n)\n\nconst TreeNode: React.FC<TreeNodeProps> = React.memo(\n ({\n data: { nodes, rowRenderer, highlight, isTreeFocused, ...props },\n index,\n style,\n }) => {\n const node = nodes[index]\n\n const isHighlighted = props.isHighlighted(node)\n const [isMouseOver, setMouseOver] = React.useState(false)\n\n const timer = useTimer({})\n const {\n isVisible: shouldShowTooltip,\n show: showTooltip,\n hide: hideTooltip,\n } = useVisibility({})\n\n React.useEffect(() => {\n if (isHighlighted && !shouldShowTooltip) {\n timer.setTimer(showTooltip, tooltipDelay)\n }\n\n return () => {\n if (isTreeFocused && !isHighlighted && shouldShowTooltip) {\n hideTooltip()\n }\n }\n })\n\n const onMouseEnter = () => {\n setMouseOver(true)\n if (!shouldShowTooltip) {\n timer.setTimer(showTooltip, tooltipDelay)\n }\n highlight(node)\n }\n\n const onMouseLeave = () => {\n setMouseOver(false)\n timer.cancel()\n hideTooltip()\n }\n\n const nodeIsExpandable = props.isExpandable(node)\n const nodeIsSelectable = props.isSelectable(node)\n const nodeIsExpanded = props.isExpanded(node)\n const nodeIsSelected = props.isSelected(node)\n\n return (\n <StyledTreeRowWrapper\n id={getTreeItemId(node.id)}\n role=\"treeitem\"\n aria-level={node.level + 1}\n aria-setsize={node.setSize}\n aria-posinset={node.posInSet}\n aria-expanded={nodeIsExpandable ? nodeIsExpanded : undefined}\n aria-selected={nodeIsSelectable ? nodeIsSelected : undefined}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n style={style}\n data-padding={getPadding(node.level)}\n >\n {rowRenderer({\n node,\n shouldShowTooltip,\n isMouseOver,\n ...props,\n })}\n </StyledTreeRowWrapper>\n )\n },\n areEqual\n)\n\nconst TreeRow: React.FC<TreeRowProps> = ({\n node,\n getIcon,\n getLabel,\n handleExpansion,\n handleSelection,\n selectionLimit,\n isFileLimitReached,\n shouldShowTooltip,\n isMouseOver,\n treeContainer,\n ...props\n}) => {\n const chevronButtonRef = React.useRef<HTMLButtonElement>(null)\n const isSelected = props.isSelected(node)\n const isSelectable = props.isSelectable(node)\n const isExpandable = props.isExpandable(node)\n const isExpanded = props.isExpanded(node)\n const isLoading = props.isLoading(node)\n const isHighlighted = props.isHighlighted(node)\n const nodeType = props.getType(node)\n const rowLabel = getLabel(node)\n\n const onChevronClick = React.useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation()\n handleExpansion(node)\n },\n [handleExpansion, node]\n )\n\n const onClick = React.useCallback(\n (event: React.MouseEvent) => {\n // Chevron button handles its own event\n if (chevronButtonRef.current?.contains(event.target as globalThis.Node)) {\n return\n }\n\n if (isSelectable) {\n handleSelection(node)\n } else if (isExpandable) {\n handleExpansion(node)\n }\n },\n [handleExpansion, handleSelection, isExpandable, isSelectable, node]\n )\n\n const onMouseDown = React.useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault()\n treeContainer.focus()\n },\n [treeContainer]\n )\n\n return (\n <TreeRowContainer\n level={node.level}\n onClick={onClick}\n onMouseDown={onMouseDown}\n isSelected={isSelected}\n isSelectable={isSelectable}\n isExpandable={isExpandable}\n isHighlighted={isHighlighted}\n isKeyboardMode={props.isKeyboardMode}\n isFileLimitReached={isFileLimitReached}\n data-qa=\"core-tree-row-container\"\n >\n {\n // WARNING!\n // Be aware that this data attribute is used for calculations, changing this data attribute will break its operability.\n }\n <StyledTreeRowContent data-row-content>\n <TreeRowChevron\n ref={chevronButtonRef}\n isExpandable={isExpandable}\n isExpanded={isExpanded}\n onClick={onChevronClick}\n />\n <TreeRowIcon\n isLoading={isLoading}\n isSelected={isSelected}\n icon={getIcon(node)}\n />\n <TreeRowTooltip\n isSelected={isSelected}\n isSelectable={isSelectable}\n isHighlighted={isHighlighted}\n selectionLimit={selectionLimit}\n isFileLimitReached={isFileLimitReached}\n shouldShowTooltip={shouldShowTooltip}\n isMouseOver={isMouseOver}\n fileName={rowLabel}\n nodeType={nodeType}\n treeContainer={treeContainer}\n >\n <TreeRowName value={rowLabel} />\n </TreeRowTooltip>\n </StyledTreeRowContent>\n </TreeRowContainer>\n )\n}\n\nconst IconContainer: React.FC<IconContainerProps> = ({\n children,\n isSelected,\n ...props\n}) => (\n <StyledIconContainer $isSelected={isSelected} {...props}>\n {children}\n </StyledIconContainer>\n)\n\nconst StyledChevronIcon = styled(ChevronRight)<{ $isExpanded: boolean }>`\n transform: rotate(${({ $isExpanded }) => ($isExpanded ? 90 : 0)}deg);\n transition: transform 150ms ease-out;\n`\n\nconst TreeRowChevron = React.forwardRef<\n HTMLButtonElement,\n {\n isExpanded: boolean\n isExpandable: boolean\n onClick: (event: React.MouseEvent) => void\n }\n>(({ isExpanded, isExpandable, onClick }, ref) => {\n const I18n = useI18nContext()\n\n if (!isExpandable) {\n return <StyledChevronPlaceholder />\n }\n\n return (\n <Button\n ref={ref}\n variant=\"tertiary\"\n size=\"sm\"\n icon={<StyledChevronIcon $isExpanded={isExpanded} />}\n onClick={onClick}\n tabIndex={-1}\n aria-label={I18n.t(\n isExpanded ? 'core.tree.collapse' : 'core.tree.expand'\n )}\n />\n )\n})\n\nconst TreeRowIcon: React.FC<{\n isSelected: boolean\n isLoading: boolean\n icon: React.ReactNode\n}> = ({ isSelected, isLoading, icon }) => (\n <IconContainer isSelected={isSelected} marginLeft=\"sm\" marginRight=\"sm\">\n {isLoading ? <Spinner size=\"sm\" /> : icon}\n </IconContainer>\n)\n\nconst TreeRowName: React.FC<{ value: string }> = ({ value }) => (\n <StyledFilenameCaption>{value}</StyledFilenameCaption>\n)\n\nconst getSelectionLimitMessage = (selectionLimit: number) => ({\n key: 'selectionLimit',\n options: {\n count: selectionLimit,\n },\n})\n\nconst getUnsupportedFileTypeMessage = (fileName: string) => {\n const { extension, isFilename } = parseFilename(fileName)\n const key = isFilename ? 'specific' : 'unspecific'\n\n return {\n key: `unsupportedFileType.${key}`,\n options: {\n fileType: `.${extension.toUpperCase()}`,\n },\n }\n}\n\nconst TreeRowTooltip: FunctionComponent<\n PropsWithChildren<TreeRowTooltipProps>\n> = ({\n children,\n isHighlighted: isFocused,\n isFileLimitReached,\n isSelectable,\n isSelected,\n nodeType,\n selectionLimit,\n shouldShowTooltip,\n isMouseOver,\n fileName,\n treeContainer,\n}) => {\n const I18n = useI18nContext()\n const rowRef = React.useRef<HTMLDivElement>(null)\n const isUserInteracting = isFocused || isMouseOver\n const isTooltipVisible = isUserInteracting && shouldShowTooltip && !isSelected\n const isFile = nodeType === 'leaf'\n const [isCropped, setCropped] = React.useState(false)\n\n const registerRowEl = useIntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (\n entry.rootBounds &&\n entry.rootBounds.left - entry.boundingClientRect.left >= 0\n ) {\n setCropped(true)\n return\n }\n setCropped(false)\n })\n },\n {\n root: treeContainer,\n rootMargin: '0px',\n threshold: intersectionThresholds,\n }\n )\n\n const selectionLimitMessage = getSelectionLimitMessage(selectionLimit)\n const unsupportedFileTypeMessage = getUnsupportedFileTypeMessage(fileName)\n\n const message = isSelectable\n ? isFileLimitReached && selectionLimitMessage\n : isFile && unsupportedFileTypeMessage\n\n const trigger = isTooltipVisible && !isCropped && message ? 'always' : 'none'\n\n return (\n <Tooltip\n trigger={trigger}\n overlay={\n message ? I18n.t(`core.tree.${message.key}`, message.options) : null\n }\n placement=\"top-left\"\n >\n <div ref={mergeRefs(rowRef, registerRowEl)}>{children}</div>\n </Tooltip>\n )\n}\n\nconst TreeRowContainer: React.FC<TreeRowContainerProps> = ({\n children,\n isHighlighted,\n isSelected,\n isSelectable,\n isExpandable,\n isFileLimitReached,\n isKeyboardMode,\n level,\n ...props\n}) => {\n return (\n <StyledTreeRowContainer\n $isSelectable={\n (isSelectable &&\n ((isFileLimitReached && isSelected) || !isFileLimitReached)) ||\n isExpandable\n }\n $isHighlighted={isHighlighted}\n $isSelected={isSelected}\n $isKeyboardMode={isKeyboardMode}\n style={{ paddingLeft: getPadding(level) }}\n {...props}\n >\n {children}\n </StyledTreeRowContainer>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAASA,YAAY,EAAEC,IAAI,EAAEC,MAAM,QAAQ,0BAA0B;AAErE,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,EAAEC,aAAa,QAAQ,cAAc;AACtD,OAAOC,MAAM,MAAM,mBAAmB;AACtC,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,cAAc,QAAQ,gBAAgB;AAC/C,SAASC,uBAAuB,QAAQ,gCAAgC;AACxE,SAASC,iBAAiB,QAAQ,0BAA0B;AAC5D,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,aAAa,QAAQ,sBAAsB;AACpD,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,SAAS,QAAQ,qBAAqB;AAC/C,SAASC,OAAO,QAAQ,cAAc;AACtC,SACEC,wBAAwB,EACxBC,qBAAqB,EACrBC,mBAAmB,EACnBC,UAAU,EACVC,sBAAsB,EACtBC,oBAAoB,EACpBC,oBAAoB,QACf,eAAe;AAetB,IAAMC,OAAO,GAAG,EAAE;AAClB,IAAMC,WAAW,GAAG,EAAE;AACtB,IAAMC,gBAAgB,GAAG,EAAE;;AAE3B;AACA;AACA;AACA,IAAMC,eAAe,GAAG,EAAE;AAC1B;AACA;AACA,IAAMC,cAAc,GAAG,EAAE;AAEzB,SAASC,UAAUA,CAACC,KAAa,EAAE;EACjC,OAAOL,WAAW,GAAGK,KAAK,GAAGN,OAAO;AACtC;AAEA,IAAMO,sBAAsB,GAAGC,KAAK,CAACC,IAAI,CAAC;EAAEC,MAAM,EAAE;AAAI,CAAC,CAAC,CAACC,GAAG,CAC5D,UAACC,CAAC,EAAEC,KAAK;EAAA,OAAKA,KAAK,GAAG,GAAG;AAAA,CAC3B,CAAC;AAED,IAAMC,gBAAgB,gBAAGpC,KAAK,CAACqC,UAAU,CAGvC,UAACC,KAAK,EAAEC,GAAG;EAAA,oBAAKvC,KAAA,CAAAwC,aAAA,QAAAC,QAAA;IAAKC,IAAI,EAAC,cAAc;IAACH,GAAG,EAAEA;EAAI,GAAKD,KAAK,CAAG,CAAC;AAAA,EAAC;AAEnE,IAAMK,gBAAgB,gBAAG3C,KAAK,CAACqC,UAAU,CAGvC,UAACC,KAAK,EAAEC,GAAG;EAAA,oBAAKvC,KAAA,CAAAwC,aAAA,QAAAC,QAAA;IAAKC,IAAI,EAAC,cAAc;IAACH,GAAG,EAAEA;EAAI,GAAKD,KAAK,CAAG,CAAC;AAAA,EAAC;AAEnE,IAAMM,YAAY,GAAG,GAAG;AAExB,SAASC,aAAaA,CAACC,MAAkB,EAAU;EACjD,mBAAAC,MAAA,CAAmBD,MAAM;AAC3B;;AAEA;AACA,OAAO,IAAME,qBAAqB,GAAG,SAAS;AAE9C,IAAMC,mBAA2D,GAAG,SAA9DA,mBAA2DA,CAC/DC,IAAqB;EAAA,OAClBC,cAAc,CAACD,IAAI,CAAC,KAAK,QAAQ;AAAA;AACtC,IAAME,mBAA2D,GAAG,SAA9DA,mBAA2DA,CAC/DF,IAAqB;EAAA,OAClBA,IAAI,CAACG,IAAI,KAAK,MAAM;AAAA;AACzB,IAAMF,cAAiD,GAAG,SAApDA,cAAiDA,CACrDD,IAAqB;EAAA,OAClBA,IAAI,CAACG,IAAI;AAAA;AACd,IAAMC,kBAAyD,GAAG,SAA5DA,kBAAyDA,CAC7DJ,IAAqB;EAAA,OAClBA,IAAI,CAACK,QAAQ;AAAA;AAClB,IAAMC,eAAmD,GAAG,SAAtDA,eAAmDA,CACvDN,IAAqB;EAAA,OAClBA,IAAI,CAACO,IAAI;AAAA;AACd,SAASC,IAAIA,CAAA,EAAG,CAAC;AAEjB,OAAO,SAASC,UAAUA,CAACJ,QAAoB,EAAW;EACxD,IAAMK,UAAU,GAAG,CAACZ,qBAAqB,EAAE,IAAI,EAAEa,SAAS,CAAiB;EAC3E,OAAOD,UAAU,CAACE,QAAQ,CAACP,QAAQ,CAAC;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMQ,IAAI,gBAAG/D,KAAK,CAACqC,UAAU,CAClC,UAAA2B,IAAA,EA4BEzB,GAA0B,EACvB;EAAA,IA3BD0B,OAAO,GAAAD,IAAA,CAAPC,OAAO;IAAAC,aAAA,GAAAF,IAAA,CACPG,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,EAAE,GAAAA,aAAA;IAAAE,aAAA,GAAAJ,IAAA,CACbK,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,EAAE,GAAAA,aAAA;IAAAE,mBAAA,GAAAN,IAAA,CACbO,cAAc;IAAdA,cAAc,GAAAD,mBAAA,cAAGE,QAAQ,GAAAF,mBAAA;IAChBG,QAAQ,GAAAT,IAAA,CAAjBU,OAAO;IACMC,YAAY,GAAAX,IAAA,CAAzBY,WAAW;IACFC,WAAW,GAAAb,IAAA,CAApBc,OAAO;IAAAC,aAAA,GAAAf,IAAA,CACPgB,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAGvB,eAAe,GAAAuB,aAAA;IAAAE,gBAAA,GAAAjB,IAAA,CAC1BkB,WAAW;IAAEC,YAAY,GAAAF,gBAAA,cAAG3B,kBAAkB,GAAA2B,gBAAA;IAAAG,YAAA,GAAApB,IAAA,CAC9CqB,OAAO;IAAPA,OAAO,GAAAD,YAAA,cAAGjC,cAAc,GAAAiC,YAAA;IAAAE,iBAAA,GAAAtB,IAAA,CACxBuB,YAAY;IAAZA,YAAY,GAAAD,iBAAA,cAAGrC,mBAAmB,GAAAqC,iBAAA;IAAAE,iBAAA,GAAAxB,IAAA,CAClCyB,YAAY;IAAZA,YAAY,GAAAD,iBAAA,cAAGpC,mBAAmB,GAAAoC,iBAAA;IAAAE,aAAA,GAAA1B,IAAA,CAClC2B,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,IAAI,GAAAA,aAAA;IAAAE,aAAA,GAAA5B,IAAA,CACf6B,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAGlC,IAAI,GAAAkC,aAAA;IAAAE,eAAA,GAAA9B,IAAA,CACf+B,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAGpC,IAAI,GAAAoC,eAAA;IAAAE,aAAA,GAAAhC,IAAA,CACjBiC,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG;MAAA,OAAME,OAAO,CAACC,OAAO,CAAC,CAAC;IAAA,IAAAH,aAAA;IACrBI,eAAe,GAAApC,IAAA,CAA5BqC,WAAW;IAAAC,oBAAA,GAAAtC,IAAA,CACXuC,eAAe;IAAfA,eAAe,GAAAD,oBAAA,cAAG9B,QAAQ,GAAA8B,oBAAA;IAC1BE,aAAa,GAAAxC,IAAA,CAAbwC,aAAa;IAAAC,qBAAA,GAAAzC,IAAA,CACb0C,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IACvBE,gBAAgB,GAAA3C,IAAA,CAAhB2C,gBAAgB;IAChBC,gBAAgB,GAAA5C,IAAA,CAAhB4C,gBAAgB;IAChBC,SAAS,GAAA7C,IAAA,CAAT6C,SAAS;IACTC,QAAQ,GAAA9C,IAAA,CAAR8C,QAAQ;IACLxE,KAAK,GAAAyE,wBAAA,CAAA/C,IAAA,EAAAgD,SAAA;EAIV,IAAMC,SAAS,GAAGzF,gBAAgB;EAClC,IAAM0F,UAAU,GAAGlH,KAAK,CAACmH,MAAM,CAAwB,IAAI,CAAC;EAC5D,IAAMC,OAAO,GAAGpH,KAAK,CAACmH,MAAM,CAAgB,IAAI,CAAC;EACjD,IAAME,YAAY,GAAGrH,KAAK,CAACmH,MAAM,CAAiB,IAAI,CAAC;EACvD,IAAMG,eAAe,GAAGtH,KAAK,CAACmH,MAAM,CAAiB,IAAI,CAAC;EAC1D,IAAAI,eAAA,GAA8CvH,KAAK,CAACwH,QAAQ,CAAC,CAAC,CAAC;IAAAC,gBAAA,GAAAC,cAAA,CAAAH,eAAA;IAAxDI,eAAe,GAAAF,gBAAA;IAAEG,kBAAkB,GAAAH,gBAAA;EAE1C,IAAMvC,WAAW,GAAGlF,KAAK,CAAC6H,OAAO,CAAC;IAAA,OAAM1C,YAAY;EAAA,GAAE,EAAE,CAAC;EAEzD,IAAM2C,cAAc,GAAG9H,KAAK,CAAC+H,WAAW,CACtC,UAACC,KAAQ;IAAA,OACPA,KAAK,CAACC,MAAM,CAAC,UAAC/E,IAAO,EAAK;MACxB,OAAOS,UAAU,CAACuB,WAAW,CAAChC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;EAAA,GACJ,CAACgC,WAAW,CACd,CAAC;EAED,IAAMR,OAAO,GAAG1E,KAAK,CAAC6H,OAAO,CAC3B;IAAA,OAAMpD,QAAQ,IAAIqD,cAAc;EAAA,GAChC,CAACA,cAAc,CACjB,CAAC;EAED,IAAMI,SAAS,GAAGlI,KAAK,CAAC6H,OAAO,CAAC,YAAM;IACpC,IAAMM,KAAK,GAAGzD,OAAO,CAACT,OAAO,CAAC;IAC9B,OAAOnC,KAAK,CAACsG,OAAO,CAACD,KAAK,CAAC,GAAGA,KAAK,GAAG,CAACA,KAAK,CAAC;EAC/C,CAAC,EAAE,CAACzD,OAAO,EAAET,OAAO,CAAC,CAAC;EAEtBjE,KAAK,CAACqI,SAAS,CAAC,YAAM;IACpB,IAAI,CAACH,SAAS,CAAClG,MAAM,EAAE;MACrBsG,OAAO,CAACC,IAAI,CACV,gFACF,CAAC;IACH;EACF,CAAC,EAAE,CAACL,SAAS,CAAC,CAAC;EAEf,IAAAM,gBAAA,GAA0CxI,KAAK,CAACwH,QAAQ,CAAC,KAAK,CAAC;IAAAiB,gBAAA,GAAAf,cAAA,CAAAc,gBAAA;IAAxDE,aAAa,GAAAD,gBAAA;IAAEE,gBAAgB,GAAAF,gBAAA;EACtC,IAAAG,gBAAA,GAA4C5I,KAAK,CAACwH,QAAQ,CAAC,KAAK,CAAC;IAAAqB,gBAAA,GAAAnB,cAAA,CAAAkB,gBAAA;IAA1DE,cAAc,GAAAD,gBAAA;IAAEE,iBAAiB,GAAAF,gBAAA;EACxC,IAAAG,gBAAA,GAA0ChJ,KAAK,CAACwH,QAAQ,CAAC;MACvDyB,KAAK,EAAE,CAAC;MACRC,MAAM,EAAE;IACV,CAAC,CAAC;IAAAC,gBAAA,GAAAzB,cAAA,CAAAsB,gBAAA;IAHKI,aAAa,GAAAD,gBAAA;IAAEE,gBAAgB,GAAAF,gBAAA;EAKtC,IAAMG,qBAAqB,GAAGtJ,KAAK,CAAC+H,WAAW,CAC7C,UAACwB,OAA8B,EAAK;IAClC,IAAIA,OAAO,CAAC,CAAC,CAAC,EAAE;MACd,IAAAC,KAAA,GAAqDD,OAAO,CAAC,CAAC,CAAC,CAC5DE,MAAM;QADaP,MAAM,GAAAM,KAAA,CAApBE,YAAY;QAAuBT,KAAK,GAAAO,KAAA,CAAlBG,WAAW;MAEzCN,gBAAgB,CAAC;QAAEJ,KAAK,EAALA,KAAK;QAAEC,MAAM,EAANA;MAAO,CAAC,CAAC;IACrC;EACF,CAAC,EACD,CAACG,gBAAgB,CACnB,CAAC;EAED,IAAMO,uBAAuB,GAAGnJ,iBAAiB,CAAC6I,qBAAqB,CAAC;EAExE,IAAMO,kBAAkB,GAAG7J,KAAK,CAAC+H,WAAW,CAC1C,UAAC7E,IAAO;IAAA,OACNpB,KAAK,CAACsG,OAAO,CAACnE,OAAO,CAAC,GAClBA,OAAO,CAACgE,MAAM,CAAC,UAAC6B,SAAY;MAAA,OAAK5E,WAAW,CAAC4E,SAAS,CAAC,KAAK5G,IAAI,CAAC6G,EAAE;IAAA,EAAC,GACnE,EAAU;EAAA,GACjB,CAAC7E,WAAW,EAAEjB,OAAO,CACvB,CAAC;EAED,IAAMW,WAAW,GAAGD,YAAY,IAAIkF,kBAAkB;EAEtD,IAAAG,QAAA,GAcIlJ,OAAO,CAAI;MACboH,SAAS,EAATA,SAAS;MACT/D,QAAQ,EAARA,QAAQ;MACRE,QAAQ,EAARA,QAAQ;MACRE,cAAc,EAAdA,cAAc;MACdoB,QAAQ,EAARA,QAAQ;MACRe,gBAAgB,EAAhBA,gBAAgB;MAChBb,QAAQ,EAARA,QAAQ;MACRE,UAAU,EAAVA,UAAU;MACVE,QAAQ,EAARA,QAAQ;MACRrB,WAAW,EAAXA,WAAW;MACXM,WAAW,EAAXA;IACF,CAAC,CAAC;IAzBA8C,KAAK,GAAAgC,QAAA,CAALhC,KAAK;IACLiC,UAAU,GAAAD,QAAA,CAAVC,UAAU;IACVC,UAAU,GAAAF,QAAA,CAAVE,UAAU;IACVC,SAAS,GAAAH,QAAA,CAATG,SAAS;IACTC,eAAe,GAAAJ,QAAA,CAAfI,eAAe;IACAC,iBAAiB,GAAAL,QAAA,CAAhCM,aAAa;IACbC,SAAS,GAAAP,QAAA,CAATO,SAAS;IACTC,eAAe,GAAAR,QAAA,CAAfQ,eAAe;IACfC,eAAe,GAAAT,QAAA,CAAfS,eAAe;IACFC,YAAY,GAAAV,QAAA,CAAzBW,WAAW;IACEC,YAAY,GAAAZ,QAAA,CAAzBa,WAAW;IACXC,kBAAkB,GAAAd,QAAA,CAAlBc,kBAAkB;IAClBC,cAAc,GAAAf,QAAA,CAAde,cAAc;EAehB,IAAMF,WAAW,GAAG7K,KAAK,CAAC+H,WAAW,CACnC,UAAC1D,QAAiB,EAAK;IACrB,IAAM2D,KAAK,GAAGlG,KAAK,CAACsG,OAAO,CAAC/D,QAAQ,CAAC,GAAGA,QAAQ,GAAG,CAACA,QAAQ,CAAC;IAE7DuG,YAAY,CAAC,IAAII,GAAG,CAAChD,KAAK,CAAC/F,GAAG,CAAC,UAACiB,IAAI;MAAA,OAAKA,IAAI,CAAC6G,EAAE;IAAA,EAAC,CAAC,CAAC;EACrD,CAAC,EACD,CAACa,YAAY,CACf,CAAC;EAED,IAAMD,WAAW,GAAG3K,KAAK,CAAC+H,WAAW,CACnC,UAAC5D,QAAiB,EAAK;IACrB,IAAM6D,KAAK,GAAGlG,KAAK,CAACsG,OAAO,CAACjE,QAAQ,CAAC,GAAGA,QAAQ,GAAG,CAACA,QAAQ,CAAC;IAE7DuG,YAAY,CAAC,IAAIM,GAAG,CAAChD,KAAK,CAAC/F,GAAG,CAAC,UAACiB,IAAI;MAAA,OAAKA,IAAI,CAAC6G,EAAE;IAAA,EAAC,CAAC,CAAC;EACrD,CAAC,EACD,CAACW,YAAY,CACf,CAAC;EAED1K,KAAK,CAACiL,mBAAmB,CAAC1I,GAAG,EAAE;IAAA,OAAO;MACpC2I,MAAM,EAAEhE,UAAU,CAACiE,OAAO;MAC1BN,WAAW,EAAXA,WAAW;MACXF,WAAW,EAAXA,WAAW;MACXS,cAAc,EAAE,SAAhBA,cAAcA,CAAGlI,IAAO;QAAA,OAAKsH,eAAe,CAACtH,IAAI,CAAC;MAAA;MAClDmI,cAAc,EAAE,SAAhBA,cAAcA,CAAGnI,IAAO;QAAA,OAAKuH,eAAe,CAACvH,IAAI,CAAC;MAAA;IACpD,CAAC;EAAA,CAAC,CAAC;EAEH,IAAMoI,cAAc,GAAGtL,KAAK,CAAC+H,WAAW,CACtC,UAAC7E,IAAO,EAAsB;IAC5B,IAAMqI,QAAQ,GAAGlG,OAAO,CAACnC,IAAI,CAAC,KAAK,QAAQ;IAC3C,OAAOqI,QAAQ,gBACbvL,KAAA,CAAAwC,aAAA,CAACzC,MAAM;MAAC2C,IAAI,EAAC,KAAK;MAAC,cAAW,QAAQ;MAAC,eAAa;IAAM,CAAE,CAAC,gBAE7D1C,KAAA,CAAAwC,aAAA,CAAC1C,IAAI;MAAC4C,IAAI,EAAC,KAAK;MAAC,cAAW,MAAM;MAAC,eAAa;IAAM,CAAE,CACzD;EACH,CAAC,EACD,CAAC2C,OAAO,CACV,CAAC;EAED,IAAMP,OAAO,GAAGD,WAAW,IAAIyG,cAAc;EAE7C,IAAMhB,aAAa,GAAGtK,KAAK,CAAC+H,WAAW,CACrC,UAAC7E,IAAO;IAAA,OAAKwF,aAAa,IAAI2B,iBAAiB,CAACnH,IAAI,CAAC;EAAA,GACrD,CAACmH,iBAAiB,EAAE3B,aAAa,CACnC,CAAC;EAED,IAAM8C,WAAW,GAAG,SAAdA,WAAWA,CAAIC,CAAmC,EAAK;IAC3D9C,gBAAgB,CAAC,IAAI,CAAC;IACtB,IAAI;MACF,IACE,OAAO8C,CAAC,CAAChC,MAAM,CAACiC,OAAO,KAAK,UAAU,IACtCD,CAAC,CAAChC,MAAM,CAACiC,OAAO,CAAC,gBAAgB,CAAC,EAClC;QACA3C,iBAAiB,CAAC,IAAI,CAAC;MACzB;IACF,CAAC,CAAC,OAAA4C,OAAA,EAAM;MACN;IAAA;EAEJ,CAAC;EAED,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAS;IACvBjD,gBAAgB,CAAC,KAAK,CAAC;IACvBI,iBAAiB,CAAC,KAAK,CAAC;EAC1B,CAAC;EAED,IAAM8C,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIJ,CAAsC,EAAK;IACtE1C,iBAAiB,CAAC,IAAI,CAAC;IACvBlC,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAG4E,CAAC,CAAC;IACd,IAAQK,GAAG,GAAKL,CAAC,CAATK,GAAG;IAEX,QAAQA,GAAG;MACT,KAAK,OAAO;QACVL,CAAC,CAACM,cAAc,CAAC,CAAC;QAClBtG,YAAY,CAAC2E,eAAe,CAAC,IAAII,eAAe,CAACJ,eAAe,CAAC;QACjE;MACF,KAAK,WAAW;MAChB,KAAK,GAAG;QACNqB,CAAC,CAACM,cAAc,CAAC,CAAC;QAClBxG,YAAY,CAAC6E,eAAe,CAAC,IAAIK,eAAe,CAACL,eAAe,CAAC;QACjE;MACF,KAAK,KAAK;QACR,IAAIqB,CAAC,CAACO,QAAQ,EAAE;UACd,IAAIjB,cAAc,CAAC5I,KAAK,GAAG,CAAC,EAAE;YAC5BsJ,CAAC,CAACM,cAAc,CAAC,CAAC;YAClBhB,cAAc,CAACkB,SAAS,CAAC,CAAC;UAC5B;QACF,CAAC,MAAM;UACL,IAAIlB,cAAc,CAAC5I,KAAK,GAAG6F,KAAK,CAAChG,MAAM,GAAG,CAAC,EAAE;YAC3CyJ,CAAC,CAACM,cAAc,CAAC,CAAC;YAClBhB,cAAc,CAACmB,SAAS,CAAC,CAAC;UAC5B;QACF;QACA;MACF,KAAK,WAAW;MAChB,KAAK,MAAM;QACTT,CAAC,CAACM,cAAc,CAAC,CAAC;QAClB,IAAIxG,YAAY,CAAC6E,eAAe,CAAC,IAAIH,UAAU,CAACG,eAAe,CAAC,EAAE;UAChEK,eAAe,CAACL,eAAe,CAAC;QAClC,CAAC,MAAM;UACL,IAAM7G,QAAQ,GAAG2B,WAAW,CAACkF,eAAe,CAAC;UAC7C,IAAI,CAACzG,UAAU,CAACJ,QAAQ,CAAC,EAAE;YACzB,IAAM4I,UAAU,GAAGnE,KAAK,CAACoE,IAAI,CAAC,UAAClJ,IAAI;cAAA,OAAKA,IAAI,CAAC6G,EAAE,KAAKxG,QAAQ;YAAA,EAAC;YAC7D,IAAI4I,UAAU,EAAE;cACd5B,SAAS,CAAC4B,UAAU,CAAC;YACvB;UACF;QACF;QACA;MACF,KAAK,YAAY;MACjB,KAAK,OAAO;QACVV,CAAC,CAACM,cAAc,CAAC,CAAC;QAClB,IAAIxG,YAAY,CAAC6E,eAAe,CAAC,IAAI,CAACH,UAAU,CAACG,eAAe,CAAC,EAAE;UACjEK,eAAe,CAACL,eAAe,CAAC;QAClC,CAAC,MAAM,IACL7E,YAAY,CAAC6E,eAAe,CAAC,IAC7BH,UAAU,CAACG,eAAe,CAAC,EAC3B;UACAW,cAAc,CAACmB,SAAS,CAAC,CAAC;QAC5B;QACA;MACF,KAAK,WAAW;MAChB,KAAK,MAAM;QACTT,CAAC,CAACM,cAAc,CAAC,CAAC;QAClBhB,cAAc,CAACmB,SAAS,CAAC,CAAC;QAC1B;MACF,KAAK,SAAS;MACd,KAAK,IAAI;QACPT,CAAC,CAACM,cAAc,CAAC,CAAC;QAClBhB,cAAc,CAACkB,SAAS,CAAC,CAAC;QAC1B;IACJ;EACF,CAAC;EAEDjM,KAAK,CAACqI,SAAS,CAAC,YAAM;IACpB,IAAIK,aAAa,EAAE;MAAA,IAAA2D,gBAAA;MACjB,CAAAA,gBAAA,GAAAjF,OAAO,CAAC+D,OAAO,cAAAkB,gBAAA,uBAAfA,gBAAA,CAAiBC,YAAY,CAACvB,cAAc,CAAC5I,KAAK,CAAC;IACrD;EACF,CAAC,EAAE,CAACuG,aAAa,EAAEqC,cAAc,CAAC5I,KAAK,CAAC,CAAC;EAEzC,IAAMoK,kBAAkB,GAAGvM,KAAK,CAAC+H,WAAW,CAC1C,UAACzF,KAAmB;IAAA,oBAAKtC,KAAA,CAAAwC,aAAA,CAACgK,OAAO,EAAKlK,KAAQ,CAAC;EAAA,GAC/C,EACF,CAAC;EAEDtC,KAAK,CAACqI,SAAS,CAAC,YAAM;IAAA,IAAAoE,qBAAA;IACpB,IAAMC,eAAyB,GAAG,EAAE;IAEpC,IAAMC,UAAU,GAAG7K,KAAK,CAACC,IAAI,CAAC,EAAA0K,qBAAA,GAAApF,YAAY,CAAC8D,OAAO,cAAAsB,qBAAA,uBAApBA,qBAAA,CAAsBE,UAAU,KAAI,EAAE,CAAC;IACrEA,UAAU,CAACC,OAAO,CAAC,UAACC,KAAK,EAAK;MAC5B,IAAMC,UAAU,GAAID,KAAK,CAAiBE,aAAa,CACrD,oBACF,CAAC;MAED,IAAID,UAAU,EAAE;QAAA,IAAAE,gBAAA;QACd,IAAMC,WAAW,IAAAD,gBAAA,GAAIH,KAAK,CAAiBK,OAAO,CAACC,OAAO,cAAAH,gBAAA,cAAAA,gBAAA,GAAI,GAAG;QACjEN,eAAe,CAACU,IAAI,CAClBN,UAAU,CAACO,WAAW,GAAGC,QAAQ,CAACL,WAAW,EAAE,EAAE,CAAC,GAAGxL,eACvD,CAAC;MACH;IACF,CAAC,CAAC;IAEF,IAAM8L,iBAAiB,GAAGC,IAAI,CAACC,GAAG,CAAAC,KAAA,CAARF,IAAI,EAAQd,eAAe,CAAC,GAAGhL,cAAc;IACvEkG,kBAAkB,CAAC2F,iBAAiB,CAAC;EACvC,CAAC,CAAC;EAEF,IAAMlH,WAAW,GAAGD,eAAe,IAAImG,kBAAkB;EAEzD,IAAMoB,QAAQ,GAAG3N,KAAK,CAAC6H,OAAO,CAC5B;IAAA,OAAO;MACLG,KAAK,EAALA,KAAK;MACLlD,OAAO,EAAPA,OAAO;MACPE,QAAQ,EAARA,QAAQ;MACRK,OAAO,EAAPA,OAAO;MACPE,YAAY,EAAZA,YAAY;MACZE,YAAY,EAAZA,YAAY;MACZwE,UAAU,EAAVA,UAAU;MACVC,UAAU,EAAVA,UAAU;MACVC,SAAS,EAATA,SAAS;MACTI,SAAS,EAATA,SAAS;MACTD,aAAa,EAAbA,aAAa;MACbE,eAAe,EAAfA,eAAe;MACfC,eAAe,EAAfA,eAAe;MACfpE,WAAW,EAAXA,WAAW;MACXyE,kBAAkB,EAAlBA,kBAAkB;MAClBvG,cAAc,EAAdA,cAAc;MACdmE,aAAa,EAAbA,aAAa;MACbI,cAAc,EAAdA,cAAc;MACd8E,aAAa,EAAE1G,UAAU,CAACiE;IAC5B,CAAC;EAAA,CAAC,EACF,CACErG,OAAO,EACPE,QAAQ,EACRK,OAAO,EACPoF,eAAe,EACfD,eAAe,EACfD,SAAS,EACThF,YAAY,EACZ0E,UAAU,EACVa,kBAAkB,EAClBR,aAAa,EACbxB,cAAc,EACdqB,SAAS,EACT1E,YAAY,EACZyE,UAAU,EACVxB,aAAa,EACbV,KAAK,EACL3B,WAAW,EACX9B,cAAc,CAElB,CAAC;EAED,IAAI,CAAC2D,SAAS,EAAE;IACdI,OAAO,CAACuF,KAAK,CAAC,kCAAkC,CAAC;IACjD,OAAO,IAAI;EACb;EAEA,oBACE7N,KAAA,CAAAwC,aAAA,CAACtB,UAAU,EAAAuB,QAAA,KACLH,KAAK;IACTC,GAAG,EAAE1B,SAAS,CAACqG,UAAU,EAAE0C,uBAAuB,CAAE;IACpDlH,IAAI,EAAC,MAAM;IACX,wBAAsBiD,QAAS;IAC/B,yBACEyE,eAAe,GAAGvH,aAAa,CAACuH,eAAe,CAACL,EAAE,CAAC,GAAGlG,SACvD;IACDiK,QAAQ,EAAE,CAAE;IACZC,OAAO,EAAEvC,WAAY;IACrBwC,MAAM,EAAEpC,UAAW;IACnB/E,SAAS,EAAEgF,mBAAoB;IAC/BoC,WAAW,EAAE,SAAbA,WAAWA,CAAA;MAAA,OAAQlF,iBAAiB,CAAC,KAAK,CAAC;IAAA,CAAC;IAC5CmF,WAAW,EAAE,SAAbA,WAAWA,CAAA;MAAA,OAAQnF,iBAAiB,CAAC,KAAK,CAAC;IAAA;EAAC,iBAE5C/I,KAAA,CAAAwC,aAAA,CAACtC,aAAa;IACZiO,SAAS,EAAC,WAAW;IACrB5L,GAAG,EAAE6E,OAAQ;IACb8B,MAAM,EACJ1C,aAAa,IACbgH,IAAI,CAACY,GAAG,CAACpG,KAAK,CAAChG,MAAM,GAAGiF,SAAS,EAAEA,SAAS,GAAGV,eAAe,CAC/D;IACD8H,QAAQ,EAAEhH,YAAa;IACvBiH,QAAQ,EAAEhH,eAAgB;IAC1BiH,SAAS,EAAEvG,KAAK,CAAChG,MAAO;IACxBwM,QAAQ,EAAEvH,SAAU;IACpBN,gBAAgB,EAAEA,gBAAgB,aAAhBA,gBAAgB,cAAhBA,gBAAgB,GAAIvE,gBAAiB;IACvDwE,gBAAgB,EAAEA,gBAAgB,aAAhBA,gBAAgB,cAAhBA,gBAAgB,GAAIjE,gBAAiB;IACvDgL,QAAQ,EAAEA,QAAS;IACnB1E,KAAK,EAAEuE,IAAI,CAACC,GAAG,CAAC9F,eAAe,EAAEyB,aAAa,CAACH,KAAK;EAAE,GAErDwF,QACY,CACL,CAAC;AAEjB,CACF,CAAC;AAED,IAAMA,QAAiC,gBAAGzO,KAAK,CAAC0O,IAAI,CAClD,UAAAC,KAAA,EAIM;EAAA,IAAAC,UAAA,GAAAD,KAAA,CAHJE,IAAI;IAAI7G,KAAK,GAAA4G,UAAA,CAAL5G,KAAK;IAAE3B,WAAW,GAAAuI,UAAA,CAAXvI,WAAW;IAAEkE,SAAS,GAAAqE,UAAA,CAATrE,SAAS;IAAE7B,aAAa,GAAAkG,UAAA,CAAblG,aAAa;IAAKpG,KAAK,GAAAyE,wBAAA,CAAA6H,UAAA,EAAAE,UAAA;IAC9D3M,KAAK,GAAAwM,KAAA,CAALxM,KAAK;IACL4M,KAAK,GAAAJ,KAAA,CAALI,KAAK;EAEL,IAAM7L,IAAI,GAAG8E,KAAK,CAAC7F,KAAK,CAAC;EAEzB,IAAMmI,aAAa,GAAGhI,KAAK,CAACgI,aAAa,CAACpH,IAAI,CAAC;EAC/C,IAAA8L,gBAAA,GAAoChP,KAAK,CAACwH,QAAQ,CAAC,KAAK,CAAC;IAAAyH,gBAAA,GAAAvH,cAAA,CAAAsH,gBAAA;IAAlDE,WAAW,GAAAD,gBAAA;IAAEE,YAAY,GAAAF,gBAAA;EAEhC,IAAMG,KAAK,GAAG1O,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC1B,IAAA2O,cAAA,GAII1O,aAAa,CAAC,CAAC,CAAC,CAAC;IAHR2O,iBAAiB,GAAAD,cAAA,CAA5BE,SAAS;IACHC,WAAW,GAAAH,cAAA,CAAjBI,IAAI;IACEC,WAAW,GAAAL,cAAA,CAAjBM,IAAI;EAGN3P,KAAK,CAACqI,SAAS,CAAC,YAAM;IACpB,IAAIiC,aAAa,IAAI,CAACgF,iBAAiB,EAAE;MACvCF,KAAK,CAACQ,QAAQ,CAACJ,WAAW,EAAE5M,YAAY,CAAC;IAC3C;IAEA,OAAO,YAAM;MACX,IAAI8F,aAAa,IAAI,CAAC4B,aAAa,IAAIgF,iBAAiB,EAAE;QACxDI,WAAW,CAAC,CAAC;MACf;IACF,CAAC;EACH,CAAC,CAAC;EAEF,IAAMG,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;IACzBV,YAAY,CAAC,IAAI,CAAC;IAClB,IAAI,CAACG,iBAAiB,EAAE;MACtBF,KAAK,CAACQ,QAAQ,CAACJ,WAAW,EAAE5M,YAAY,CAAC;IAC3C;IACA2H,SAAS,CAACrH,IAAI,CAAC;EACjB,CAAC;EAED,IAAM4M,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;IACzBX,YAAY,CAAC,KAAK,CAAC;IACnBC,KAAK,CAACW,MAAM,CAAC,CAAC;IACdL,WAAW,CAAC,CAAC;EACf,CAAC;EAED,IAAMM,gBAAgB,GAAG1N,KAAK,CAACiD,YAAY,CAACrC,IAAI,CAAC;EACjD,IAAM+M,gBAAgB,GAAG3N,KAAK,CAACmD,YAAY,CAACvC,IAAI,CAAC;EACjD,IAAMgN,cAAc,GAAG5N,KAAK,CAAC2H,UAAU,CAAC/G,IAAI,CAAC;EAC7C,IAAMiN,cAAc,GAAG7N,KAAK,CAAC4H,UAAU,CAAChH,IAAI,CAAC;EAE7C,oBACElD,KAAA,CAAAwC,aAAA,CAACnB,oBAAoB;IACnB0I,EAAE,EAAElH,aAAa,CAACK,IAAI,CAAC6G,EAAE,CAAE;IAC3BrH,IAAI,EAAC,UAAU;IACf,cAAYQ,IAAI,CAACtB,KAAK,GAAG,CAAE;IAC3B,gBAAcsB,IAAI,CAACkN,OAAQ;IAC3B,iBAAelN,IAAI,CAACmN,QAAS;IAC7B,iBAAeL,gBAAgB,GAAGE,cAAc,GAAGrM,SAAU;IAC7D,iBAAeoM,gBAAgB,GAAGE,cAAc,GAAGtM,SAAU;IAC7DgM,YAAY,EAAEA,YAAa;IAC3BC,YAAY,EAAEA,YAAa;IAC3Bf,KAAK,EAAEA,KAAM;IACb,gBAAcpN,UAAU,CAACuB,IAAI,CAACtB,KAAK;EAAE,GAEpCyE,WAAW,CAAAiK,aAAA;IACVpN,IAAI,EAAJA,IAAI;IACJoM,iBAAiB,EAAjBA,iBAAiB;IACjBJ,WAAW,EAAXA;EAAW,GACR5M,KAAK,CACT,CACmB,CAAC;AAE3B,CAAC,EACDrC,QACF,CAAC;AAED,IAAMuM,OAA+B,GAAG,SAAlCA,OAA+BA,CAAA+D,KAAA,EAY/B;EAAA,IAXJrN,IAAI,GAAAqN,KAAA,CAAJrN,IAAI;IACJ4B,OAAO,GAAAyL,KAAA,CAAPzL,OAAO;IACPE,QAAQ,GAAAuL,KAAA,CAARvL,QAAQ;IACRyF,eAAe,GAAA8F,KAAA,CAAf9F,eAAe;IACfD,eAAe,GAAA+F,KAAA,CAAf/F,eAAe;IACfjG,cAAc,GAAAgM,KAAA,CAAdhM,cAAc;IACduG,kBAAkB,GAAAyF,KAAA,CAAlBzF,kBAAkB;IAClBwE,iBAAiB,GAAAiB,KAAA,CAAjBjB,iBAAiB;IACjBJ,WAAW,GAAAqB,KAAA,CAAXrB,WAAW;IACXtB,aAAa,GAAA2C,KAAA,CAAb3C,aAAa;IACVtL,KAAK,GAAAyE,wBAAA,CAAAwJ,KAAA,EAAAC,UAAA;EAER,IAAMC,gBAAgB,GAAGzQ,KAAK,CAACmH,MAAM,CAAoB,IAAI,CAAC;EAC9D,IAAM+C,UAAU,GAAG5H,KAAK,CAAC4H,UAAU,CAAChH,IAAI,CAAC;EACzC,IAAMuC,YAAY,GAAGnD,KAAK,CAACmD,YAAY,CAACvC,IAAI,CAAC;EAC7C,IAAMqC,YAAY,GAAGjD,KAAK,CAACiD,YAAY,CAACrC,IAAI,CAAC;EAC7C,IAAM+G,UAAU,GAAG3H,KAAK,CAAC2H,UAAU,CAAC/G,IAAI,CAAC;EACzC,IAAMiH,SAAS,GAAG7H,KAAK,CAAC6H,SAAS,CAACjH,IAAI,CAAC;EACvC,IAAMoH,aAAa,GAAGhI,KAAK,CAACgI,aAAa,CAACpH,IAAI,CAAC;EAC/C,IAAMwN,QAAQ,GAAGpO,KAAK,CAAC+C,OAAO,CAACnC,IAAI,CAAC;EACpC,IAAMyN,QAAQ,GAAG3L,QAAQ,CAAC9B,IAAI,CAAC;EAE/B,IAAM0N,cAAc,GAAG5Q,KAAK,CAAC+H,WAAW,CACtC,UAAC8I,KAAuB,EAAK;IAC3BA,KAAK,CAACC,eAAe,CAAC,CAAC;IACvBrG,eAAe,CAACvH,IAAI,CAAC;EACvB,CAAC,EACD,CAACuH,eAAe,EAAEvH,IAAI,CACxB,CAAC;EAED,IAAM6N,OAAO,GAAG/Q,KAAK,CAAC+H,WAAW,CAC/B,UAAC8I,KAAuB,EAAK;IAAA,IAAAG,qBAAA;IAC3B;IACA,KAAAA,qBAAA,GAAIP,gBAAgB,CAACtF,OAAO,cAAA6F,qBAAA,eAAxBA,qBAAA,CAA0BC,QAAQ,CAACJ,KAAK,CAACpH,MAAyB,CAAC,EAAE;MACvE;IACF;IAEA,IAAIhE,YAAY,EAAE;MAChB+E,eAAe,CAACtH,IAAI,CAAC;IACvB,CAAC,MAAM,IAAIqC,YAAY,EAAE;MACvBkF,eAAe,CAACvH,IAAI,CAAC;IACvB;EACF,CAAC,EACD,CAACuH,eAAe,EAAED,eAAe,EAAEjF,YAAY,EAAEE,YAAY,EAAEvC,IAAI,CACrE,CAAC;EAED,IAAM+K,WAAW,GAAGjO,KAAK,CAAC+H,WAAW,CACnC,UAAC0D,CAAmB,EAAK;IACvBA,CAAC,CAACM,cAAc,CAAC,CAAC;IAClB6B,aAAa,CAACsD,KAAK,CAAC,CAAC;EACvB,CAAC,EACD,CAACtD,aAAa,CAChB,CAAC;EAED,oBACE5N,KAAA,CAAAwC,aAAA,CAAC2O,gBAAgB;IACfvP,KAAK,EAAEsB,IAAI,CAACtB,KAAM;IAClBmP,OAAO,EAAEA,OAAQ;IACjB9C,WAAW,EAAEA,WAAY;IACzB/D,UAAU,EAAEA,UAAW;IACvBzE,YAAY,EAAEA,YAAa;IAC3BF,YAAY,EAAEA,YAAa;IAC3B+E,aAAa,EAAEA,aAAc;IAC7BxB,cAAc,EAAExG,KAAK,CAACwG,cAAe;IACrCgC,kBAAkB,EAAEA,kBAAmB;IACvC,WAAQ;EAAyB,gBAMjC9K,KAAA,CAAAwC,aAAA,CAACpB,oBAAoB;IAAC;EAAgB,gBACpCpB,KAAA,CAAAwC,aAAA,CAAC4O,cAAc;IACb7O,GAAG,EAAEkO,gBAAiB;IACtBlL,YAAY,EAAEA,YAAa;IAC3B0E,UAAU,EAAEA,UAAW;IACvB8G,OAAO,EAAEH;EAAe,CACzB,CAAC,eACF5Q,KAAA,CAAAwC,aAAA,CAAC6O,WAAW;IACVlH,SAAS,EAAEA,SAAU;IACrBD,UAAU,EAAEA,UAAW;IACvBoH,IAAI,EAAExM,OAAO,CAAC5B,IAAI;EAAE,CACrB,CAAC,eACFlD,KAAA,CAAAwC,aAAA,CAAC+O,cAAc;IACbrH,UAAU,EAAEA,UAAW;IACvBzE,YAAY,EAAEA,YAAa;IAC3B6E,aAAa,EAAEA,aAAc;IAC7B/F,cAAc,EAAEA,cAAe;IAC/BuG,kBAAkB,EAAEA,kBAAmB;IACvCwE,iBAAiB,EAAEA,iBAAkB;IACrCJ,WAAW,EAAEA,WAAY;IACzBsC,QAAQ,EAAEb,QAAS;IACnBD,QAAQ,EAAEA,QAAS;IACnB9C,aAAa,EAAEA;EAAc,gBAE7B5N,KAAA,CAAAwC,aAAA,CAACiP,WAAW;IAACC,KAAK,EAAEf;EAAS,CAAE,CACjB,CACI,CACN,CAAC;AAEvB,CAAC;AAED,IAAMgB,aAA2C,GAAG,SAA9CA,aAA2CA,CAAAC,KAAA;EAAA,IAC/C9K,QAAQ,GAAA8K,KAAA,CAAR9K,QAAQ;IACRoD,UAAU,GAAA0H,KAAA,CAAV1H,UAAU;IACP5H,KAAK,GAAAyE,wBAAA,CAAA6K,KAAA,EAAAC,UAAA;EAAA,oBAER7R,KAAA,CAAAwC,aAAA,CAACvB,mBAAmB,EAAAwB,QAAA;IAACqP,WAAW,EAAE5H;EAAW,GAAK5H,KAAK,GACpDwE,QACkB,CAAC;AAAA,CACvB;AAED,IAAMiL,iBAAiB,gBAAG5R,MAAM,CAACN,YAAY,CAAC,CAAAmS,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,uEACxB,UAAAC,KAAA;EAAA,IAAGC,WAAW,GAAAD,KAAA,CAAXC,WAAW;EAAA,OAAQA,WAAW,GAAG,EAAE,GAAG,CAAC;AAAA,CAAC,CAEhE;AAED,IAAMhB,cAAc,gBAAGpR,KAAK,CAACqC,UAAU,CAOrC,UAAAgQ,KAAA,EAAwC9P,GAAG,EAAK;EAAA,IAA7C0H,UAAU,GAAAoI,KAAA,CAAVpI,UAAU;IAAE1E,YAAY,GAAA8M,KAAA,CAAZ9M,YAAY;IAAEwL,OAAO,GAAAsB,KAAA,CAAPtB,OAAO;EACpC,IAAMuB,IAAI,GAAG/R,cAAc,CAAC,CAAC;EAE7B,IAAI,CAACgF,YAAY,EAAE;IACjB,oBAAOvF,KAAA,CAAAwC,aAAA,CAACzB,wBAAwB,MAAE,CAAC;EACrC;EAEA,oBACEf,KAAA,CAAAwC,aAAA,CAACpC,MAAM;IACLmC,GAAG,EAAEA,GAAI;IACTgQ,OAAO,EAAC,UAAU;IAClBC,IAAI,EAAC,IAAI;IACTlB,IAAI,eAAEtR,KAAA,CAAAwC,aAAA,CAACuP,iBAAiB;MAACK,WAAW,EAAEnI;IAAW,CAAE,CAAE;IACrD8G,OAAO,EAAEA,OAAQ;IACjBjD,QAAQ,EAAE,CAAC,CAAE;IACb,cAAYwE,IAAI,CAACG,CAAC,CAChBxI,UAAU,GAAG,oBAAoB,GAAG,kBACtC;EAAE,CACH,CAAC;AAEN,CAAC,CAAC;AAEF,IAAMoH,WAIJ,GAAG,SAJCA,WAIJA,CAAAqB,KAAA;EAAA,IAAMxI,UAAU,GAAAwI,KAAA,CAAVxI,UAAU;IAAEC,SAAS,GAAAuI,KAAA,CAATvI,SAAS;IAAEmH,IAAI,GAAAoB,KAAA,CAAJpB,IAAI;EAAA,oBACjCtR,KAAA,CAAAwC,aAAA,CAACmP,aAAa;IAACzH,UAAU,EAAEA,UAAW;IAACyI,UAAU,EAAC,IAAI;IAACC,WAAW,EAAC;EAAI,GACpEzI,SAAS,gBAAGnK,KAAA,CAAAwC,aAAA,CAACnC,OAAO;IAACmS,IAAI,EAAC;EAAI,CAAE,CAAC,GAAGlB,IACxB,CAAC;AAAA,CACjB;AAED,IAAMG,WAAwC,GAAG,SAA3CA,WAAwCA,CAAAoB,KAAA;EAAA,IAAMnB,KAAK,GAAAmB,KAAA,CAALnB,KAAK;EAAA,oBACvD1R,KAAA,CAAAwC,aAAA,CAACxB,qBAAqB,QAAE0Q,KAA6B,CAAC;AAAA,CACvD;AAED,IAAMoB,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAIvO,cAAsB;EAAA,OAAM;IAC5DuH,GAAG,EAAE,gBAAgB;IACrB7H,OAAO,EAAE;MACP8O,KAAK,EAAExO;IACT;EACF,CAAC;AAAA,CAAC;AAEF,IAAMyO,6BAA6B,GAAG,SAAhCA,6BAA6BA,CAAIxB,QAAgB,EAAK;EAC1D,IAAAyB,cAAA,GAAkCrS,aAAa,CAAC4Q,QAAQ,CAAC;IAAjD0B,SAAS,GAAAD,cAAA,CAATC,SAAS;IAAEC,UAAU,GAAAF,cAAA,CAAVE,UAAU;EAC7B,IAAMrH,GAAG,GAAGqH,UAAU,GAAG,UAAU,GAAG,YAAY;EAElD,OAAO;IACLrH,GAAG,yBAAA/I,MAAA,CAAyB+I,GAAG,CAAE;IACjC7H,OAAO,EAAE;MACPmP,QAAQ,MAAArQ,MAAA,CAAMmQ,SAAS,CAACG,WAAW,CAAC,CAAC;IACvC;EACF,CAAC;AACH,CAAC;AAED,IAAM9B,cAEL,GAAG,SAFEA,cAELA,CAAA+B,KAAA,EAYK;EAAA,IAXJxM,QAAQ,GAAAwM,KAAA,CAARxM,QAAQ;IACOyM,SAAS,GAAAD,KAAA,CAAxBhJ,aAAa;IACbQ,kBAAkB,GAAAwI,KAAA,CAAlBxI,kBAAkB;IAClBrF,YAAY,GAAA6N,KAAA,CAAZ7N,YAAY;IACZyE,UAAU,GAAAoJ,KAAA,CAAVpJ,UAAU;IACVwG,QAAQ,GAAA4C,KAAA,CAAR5C,QAAQ;IACRnM,cAAc,GAAA+O,KAAA,CAAd/O,cAAc;IACd+K,iBAAiB,GAAAgE,KAAA,CAAjBhE,iBAAiB;IACjBJ,WAAW,GAAAoE,KAAA,CAAXpE,WAAW;IACXsC,QAAQ,GAAA8B,KAAA,CAAR9B,QAAQ;IACR5D,aAAa,GAAA0F,KAAA,CAAb1F,aAAa;EAEb,IAAM0E,IAAI,GAAG/R,cAAc,CAAC,CAAC;EAC7B,IAAMiT,MAAM,GAAGxT,KAAK,CAACmH,MAAM,CAAiB,IAAI,CAAC;EACjD,IAAMsM,iBAAiB,GAAGF,SAAS,IAAIrE,WAAW;EAClD,IAAMwE,gBAAgB,GAAGD,iBAAiB,IAAInE,iBAAiB,IAAI,CAACpF,UAAU;EAC9E,IAAMyJ,MAAM,GAAGjD,QAAQ,KAAK,MAAM;EAClC,IAAAkD,gBAAA,GAAgC5T,KAAK,CAACwH,QAAQ,CAAC,KAAK,CAAC;IAAAqM,iBAAA,GAAAnM,cAAA,CAAAkM,gBAAA;IAA9CE,SAAS,GAAAD,iBAAA;IAAEE,UAAU,GAAAF,iBAAA;EAE5B,IAAMG,aAAa,GAAGxT,uBAAuB,CAC3C,UAAC+I,OAAO,EAAK;IACXA,OAAO,CAACqD,OAAO,CAAC,UAACqH,KAAK,EAAK;MACzB,IACEA,KAAK,CAACC,UAAU,IAChBD,KAAK,CAACC,UAAU,CAACC,IAAI,GAAGF,KAAK,CAACG,kBAAkB,CAACD,IAAI,IAAI,CAAC,EAC1D;QACAJ,UAAU,CAAC,IAAI,CAAC;QAChB;MACF;MACAA,UAAU,CAAC,KAAK,CAAC;IACnB,CAAC,CAAC;EACJ,CAAC,EACD;IACEM,IAAI,EAAEzG,aAAa;IACnB0G,UAAU,EAAE,KAAK;IACjBC,SAAS,EAAE1S;EACb,CACF,CAAC;EAED,IAAM2S,qBAAqB,GAAG1B,wBAAwB,CAACvO,cAAc,CAAC;EACtE,IAAMkQ,0BAA0B,GAAGzB,6BAA6B,CAACxB,QAAQ,CAAC;EAE1E,IAAMkD,OAAO,GAAGjP,YAAY,GACxBqF,kBAAkB,IAAI0J,qBAAqB,GAC3Cb,MAAM,IAAIc,0BAA0B;EAExC,IAAME,OAAO,GAAGjB,gBAAgB,IAAI,CAACI,SAAS,IAAIY,OAAO,GAAG,QAAQ,GAAG,MAAM;EAE7E,oBACE1U,KAAA,CAAAwC,aAAA,CAAClC,OAAO;IACNqU,OAAO,EAAEA,OAAQ;IACjBC,OAAO,EACLF,OAAO,GAAGpC,IAAI,CAACG,CAAC,cAAA1P,MAAA,CAAc2R,OAAO,CAAC5I,GAAG,GAAI4I,OAAO,CAACzQ,OAAO,CAAC,GAAG,IACjE;IACD4Q,SAAS,EAAC;EAAU,gBAEpB7U,KAAA,CAAAwC,aAAA;IAAKD,GAAG,EAAE1B,SAAS,CAAC2S,MAAM,EAAEQ,aAAa;EAAE,GAAElN,QAAc,CACpD,CAAC;AAEd,CAAC;AAED,IAAMqK,gBAAiD,GAAG,SAApDA,gBAAiDA,CAAA2D,KAAA,EAUjD;EAAA,IATJhO,QAAQ,GAAAgO,KAAA,CAARhO,QAAQ;IACRwD,aAAa,GAAAwK,KAAA,CAAbxK,aAAa;IACbJ,UAAU,GAAA4K,KAAA,CAAV5K,UAAU;IACVzE,YAAY,GAAAqP,KAAA,CAAZrP,YAAY;IACZF,YAAY,GAAAuP,KAAA,CAAZvP,YAAY;IACZuF,kBAAkB,GAAAgK,KAAA,CAAlBhK,kBAAkB;IAClBhC,cAAc,GAAAgM,KAAA,CAAdhM,cAAc;IACdlH,KAAK,GAAAkT,KAAA,CAALlT,KAAK;IACFU,KAAK,GAAAyE,wBAAA,CAAA+N,KAAA,EAAAC,UAAA;EAER,oBACE/U,KAAA,CAAAwC,aAAA,CAACrB,sBAAsB,EAAAsB,QAAA;IACrBuS,aAAa,EACVvP,YAAY,KACTqF,kBAAkB,IAAIZ,UAAU,IAAK,CAACY,kBAAkB,CAAC,IAC7DvF,YACD;IACD0P,cAAc,EAAE3K,aAAc;IAC9BwH,WAAW,EAAE5H,UAAW;IACxBgL,eAAe,EAAEpM,cAAe;IAChCiG,KAAK,EAAE;MAAEoG,WAAW,EAAExT,UAAU,CAACC,KAAK;IAAE;EAAE,GACtCU,KAAK,GAERwE,QACqB,CAAC;AAE7B,CAAC"}
|
|
@@ -15,6 +15,7 @@ export declare const StyledTreeRowContainer: import("styled-components/dist/type
|
|
|
15
15
|
/** @deprecated Use $isSelected instead */
|
|
16
16
|
isSelected?: boolean | undefined;
|
|
17
17
|
$isSelected?: boolean | undefined;
|
|
18
|
+
$isKeyboardMode?: boolean | undefined;
|
|
18
19
|
}>> & string & Omit<import("react").ForwardRefExoticComponent<import("react").HTMLAttributes<HTMLSpanElement> & import("..").TypographyProps & import("react").RefAttributes<HTMLSpanElement>>, keyof import("react").Component<any, {}, any>>;
|
|
19
20
|
export declare const StyledTreeRowContent: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
20
21
|
export declare const StyledTreeRowWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
package/dist/Tree/Tree.styles.js
CHANGED
|
@@ -3,13 +3,14 @@ import styled from 'styled-components';
|
|
|
3
3
|
import { Box } from '../Box/Box';
|
|
4
4
|
import { Typography } from '../Typography/Typography';
|
|
5
5
|
import { colors } from '../_styles/colors';
|
|
6
|
+
import { focusBlue } from '../_styles/mixins';
|
|
6
7
|
export var StyledFilenameCaption = /*#__PURE__*/styled(Typography).withConfig({
|
|
7
8
|
displayName: "StyledFilenameCaption",
|
|
8
|
-
componentId: "core-
|
|
9
|
+
componentId: "core-12_52_0__sc-2d45b5-0"
|
|
9
10
|
})(["display:flex;width:100%;"]);
|
|
10
11
|
export var StyledTree = /*#__PURE__*/styled.div.withConfig({
|
|
11
12
|
displayName: "StyledTree",
|
|
12
|
-
componentId: "core-
|
|
13
|
+
componentId: "core-12_52_0__sc-2d45b5-1"
|
|
13
14
|
})(["width:100%;height:100%;min-height:36px;outline:none;overflow:auto;"]);
|
|
14
15
|
export var StyledTreeRowContainer = /*#__PURE__*/styled(Typography).withConfig({
|
|
15
16
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
@@ -17,47 +18,49 @@ export var StyledTreeRowContainer = /*#__PURE__*/styled(Typography).withConfig({
|
|
|
17
18
|
}
|
|
18
19
|
}).withConfig({
|
|
19
20
|
displayName: "StyledTreeRowContainer",
|
|
20
|
-
componentId: "core-
|
|
21
|
+
componentId: "core-12_52_0__sc-2d45b5-2"
|
|
21
22
|
})(["display:flex;align-items:center;height:36px;background:transparent;box-shadow:inset 4px 0px 0px transparent;cursor:default;outline:none;", " &:hover{background:", ";}", " ", ""], function (_ref) {
|
|
22
23
|
var isSelectable = _ref.isSelectable,
|
|
23
24
|
$isSelectable = _ref.$isSelectable;
|
|
24
25
|
return isSelectable || $isSelectable ? 'cursor: pointer;' : "\n ".concat(StyledFilenameCaption, ",\n ").concat(StyledChevron, ",\n ").concat(StyledIconContainer, " {\n color: ").concat(colors.gray70, ";\n }\n ");
|
|
25
26
|
}, colors.gray98, function (_ref2) {
|
|
26
27
|
var isHighlighted = _ref2.isHighlighted,
|
|
27
|
-
$isHighlighted = _ref2.$isHighlighted
|
|
28
|
-
|
|
28
|
+
$isHighlighted = _ref2.$isHighlighted,
|
|
29
|
+
$isKeyboardMode = _ref2.$isKeyboardMode;
|
|
30
|
+
return isHighlighted || $isHighlighted ? "\n background: ".concat(colors.gray98, ";\n ").concat($isKeyboardMode ? "outline: ".concat(focusBlue, " solid 2px; outline-offset: -2px;") : '', "\n ") : '';
|
|
29
31
|
}, function (_ref3) {
|
|
30
32
|
var isSelected = _ref3.isSelected,
|
|
31
33
|
$isSelected = _ref3.$isSelected,
|
|
32
34
|
isHighlighted = _ref3.isHighlighted,
|
|
33
|
-
$isHighlighted = _ref3.$isHighlighted
|
|
34
|
-
|
|
35
|
+
$isHighlighted = _ref3.$isHighlighted,
|
|
36
|
+
$isKeyboardMode = _ref3.$isKeyboardMode;
|
|
37
|
+
return (isSelected || $isSelected) && "\n background: ".concat(colors.blue96, ";\n box-shadow: inset 4px 0px 0px ").concat(colors.blue50, ";\n\n ").concat(StyledFilenameCaption, " {\n color: ").concat(colors.blue40, ";\n font-weight: 600;\n }\n\n &:hover {\n background-color: ").concat(colors.blue94, ";\n ").concat(StyledFilenameCaption, " {\n color: ").concat(colors.blue45, ";\n }\n }\n\n ").concat((isHighlighted || $isHighlighted) && "\n background-color: ".concat(colors.blue94, ";\n ").concat($isKeyboardMode ? "box-shadow: inset 4px 0px 0px ".concat(focusBlue, "; outline: ").concat(focusBlue, " solid 2px; outline-offset: -2px;") : '', "\n ").concat(StyledFilenameCaption, " {\n color: ").concat(colors.blue45, ";\n }\n "), "\n ");
|
|
35
38
|
});
|
|
36
39
|
export var StyledTreeRowContent = /*#__PURE__*/styled.div.withConfig({
|
|
37
40
|
displayName: "StyledTreeRowContent",
|
|
38
|
-
componentId: "core-
|
|
41
|
+
componentId: "core-12_52_0__sc-2d45b5-3"
|
|
39
42
|
})(["display:flex;align-items:center;"]);
|
|
40
43
|
export var StyledTreeRowWrapper = /*#__PURE__*/styled.div.withConfig({
|
|
41
44
|
displayName: "StyledTreeRowWrapper",
|
|
42
|
-
componentId: "core-
|
|
45
|
+
componentId: "core-12_52_0__sc-2d45b5-4"
|
|
43
46
|
})(["outline:none;"]);
|
|
44
47
|
var StyledIconBase = /*#__PURE__*/styled(Box).withConfig({
|
|
45
48
|
displayName: "StyledIconBase",
|
|
46
|
-
componentId: "core-
|
|
49
|
+
componentId: "core-12_52_0__sc-2d45b5-5"
|
|
47
50
|
})(["display:flex;justify-content:center;align-items:center;width:24px;height:24px;min-width:24px;min-height:24px;"]);
|
|
48
51
|
|
|
49
52
|
/** @deprecated Use StyledChevronPlaceholder instead */
|
|
50
53
|
export var StyledChevronContainer = /*#__PURE__*/styled(StyledIconBase).withConfig({
|
|
51
54
|
displayName: "StyledChevronContainer",
|
|
52
|
-
componentId: "core-
|
|
55
|
+
componentId: "core-12_52_0__sc-2d45b5-6"
|
|
53
56
|
})([""]);
|
|
54
57
|
export var StyledChevronPlaceholder = /*#__PURE__*/styled(StyledIconBase).withConfig({
|
|
55
58
|
displayName: "StyledChevronPlaceholder",
|
|
56
|
-
componentId: "core-
|
|
59
|
+
componentId: "core-12_52_0__sc-2d45b5-7"
|
|
57
60
|
})([""]);
|
|
58
61
|
export var StyledIconContainer = /*#__PURE__*/styled(StyledIconBase).withConfig({
|
|
59
62
|
displayName: "StyledIconContainer",
|
|
60
|
-
componentId: "core-
|
|
63
|
+
componentId: "core-12_52_0__sc-2d45b5-8"
|
|
61
64
|
})(["color:", ";"], function (_ref4) {
|
|
62
65
|
var $isSelected = _ref4.$isSelected;
|
|
63
66
|
return $isSelected ? colors.blue45 : colors.gray40;
|
|
@@ -66,7 +69,7 @@ export var StyledIconContainer = /*#__PURE__*/styled(StyledIconBase).withConfig(
|
|
|
66
69
|
/** @deprecated TreeRowChevron now uses Button with inline styled icon */
|
|
67
70
|
export var StyledChevron = /*#__PURE__*/styled(ChevronRight).withConfig({
|
|
68
71
|
displayName: "StyledChevron",
|
|
69
|
-
componentId: "core-
|
|
72
|
+
componentId: "core-12_52_0__sc-2d45b5-9"
|
|
70
73
|
})(["transform:rotate(", "deg);transition:transform 150ms ease-out;"], function (_ref5) {
|
|
71
74
|
var $isExpanded = _ref5.$isExpanded;
|
|
72
75
|
return $isExpanded ? 90 : 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tree.styles.js","names":["ChevronRight","styled","Box","Typography","colors","StyledFilenameCaption","withConfig","displayName","componentId","StyledTree","div","StyledTreeRowContainer","shouldForwardProp","prop","includes","_ref","isSelectable","$isSelectable","concat","StyledChevron","StyledIconContainer","gray70","gray98","_ref2","isHighlighted","$isHighlighted","_ref3","isSelected","$isSelected","blue96","blue50","blue40","blue94","blue45","StyledTreeRowContent","StyledTreeRowWrapper","StyledIconBase","StyledChevronContainer","StyledChevronPlaceholder","_ref4","gray40","_ref5","$isExpanded"],"sources":["../../src/Tree/Tree.styles.ts"],"sourcesContent":["import { ChevronRight } from '@procore/core-icons'\nimport styled from 'styled-components'\nimport { Box } from '../Box/Box'\nimport { Typography } from '../Typography/Typography'\nimport { colors } from '../_styles/colors'\n\nexport const StyledFilenameCaption = styled(Typography)`\n display: flex;\n width: 100%;\n`\n\nexport const StyledTree = styled.div`\n width: 100%;\n height: 100%;\n min-height: 36px;\n outline: none;\n overflow: auto;\n`\n\nexport const StyledTreeRowContainer = styled(Typography).withConfig({\n shouldForwardProp: (prop) =>\n !['isHighlighted', 'isSelectable', 'isSelected'].includes(prop),\n})<{\n /** @deprecated Use $isHighlighted instead */\n isHighlighted?: boolean\n $isHighlighted?: boolean\n /** @deprecated Use $isSelectable instead */\n isSelectable?: boolean\n $isSelectable?: boolean\n /** @deprecated Use $isSelected instead */\n isSelected?: boolean\n $isSelected?: boolean\n}>`\n display: flex;\n align-items: center;\n height: 36px;\n background: transparent;\n box-shadow: inset 4px 0px 0px transparent;\n cursor: default;\n outline: none;\n\n ${({ isSelectable, $isSelectable }) =>\n isSelectable || $isSelectable\n ? 'cursor: pointer;'\n : `\n ${StyledFilenameCaption},\n ${StyledChevron},\n ${StyledIconContainer} {\n color: ${colors.gray70};\n }\n `}\n\n &:hover {\n background: ${colors.gray98};\n }\n\n ${({ isHighlighted, $isHighlighted }) =>\n isHighlighted || $isHighlighted
|
|
1
|
+
{"version":3,"file":"Tree.styles.js","names":["ChevronRight","styled","Box","Typography","colors","focusBlue","StyledFilenameCaption","withConfig","displayName","componentId","StyledTree","div","StyledTreeRowContainer","shouldForwardProp","prop","includes","_ref","isSelectable","$isSelectable","concat","StyledChevron","StyledIconContainer","gray70","gray98","_ref2","isHighlighted","$isHighlighted","$isKeyboardMode","_ref3","isSelected","$isSelected","blue96","blue50","blue40","blue94","blue45","StyledTreeRowContent","StyledTreeRowWrapper","StyledIconBase","StyledChevronContainer","StyledChevronPlaceholder","_ref4","gray40","_ref5","$isExpanded"],"sources":["../../src/Tree/Tree.styles.ts"],"sourcesContent":["import { ChevronRight } from '@procore/core-icons'\nimport styled from 'styled-components'\nimport { Box } from '../Box/Box'\nimport { Typography } from '../Typography/Typography'\nimport { colors } from '../_styles/colors'\nimport { focusBlue } from '../_styles/mixins'\n\nexport const StyledFilenameCaption = styled(Typography)`\n display: flex;\n width: 100%;\n`\n\nexport const StyledTree = styled.div`\n width: 100%;\n height: 100%;\n min-height: 36px;\n outline: none;\n overflow: auto;\n`\n\nexport const StyledTreeRowContainer = styled(Typography).withConfig({\n shouldForwardProp: (prop) =>\n !['isHighlighted', 'isSelectable', 'isSelected'].includes(prop),\n})<{\n /** @deprecated Use $isHighlighted instead */\n isHighlighted?: boolean\n $isHighlighted?: boolean\n /** @deprecated Use $isSelectable instead */\n isSelectable?: boolean\n $isSelectable?: boolean\n /** @deprecated Use $isSelected instead */\n isSelected?: boolean\n $isSelected?: boolean\n $isKeyboardMode?: boolean\n}>`\n display: flex;\n align-items: center;\n height: 36px;\n background: transparent;\n box-shadow: inset 4px 0px 0px transparent;\n cursor: default;\n outline: none;\n\n ${({ isSelectable, $isSelectable }) =>\n isSelectable || $isSelectable\n ? 'cursor: pointer;'\n : `\n ${StyledFilenameCaption},\n ${StyledChevron},\n ${StyledIconContainer} {\n color: ${colors.gray70};\n }\n `}\n\n &:hover {\n background: ${colors.gray98};\n }\n\n ${({ isHighlighted, $isHighlighted, $isKeyboardMode }) =>\n isHighlighted || $isHighlighted\n ? `\n background: ${colors.gray98};\n ${\n $isKeyboardMode\n ? `outline: ${focusBlue} solid 2px; outline-offset: -2px;`\n : ''\n }\n `\n : ''}\n\n ${({\n isSelected,\n $isSelected,\n isHighlighted,\n $isHighlighted,\n $isKeyboardMode,\n }) =>\n (isSelected || $isSelected) &&\n `\n background: ${colors.blue96};\n box-shadow: inset 4px 0px 0px ${colors.blue50};\n\n ${StyledFilenameCaption} {\n color: ${colors.blue40};\n font-weight: 600;\n }\n\n &:hover {\n background-color: ${colors.blue94};\n ${StyledFilenameCaption} {\n color: ${colors.blue45};\n }\n }\n\n ${\n (isHighlighted || $isHighlighted) &&\n `\n background-color: ${colors.blue94};\n ${\n $isKeyboardMode\n ? `box-shadow: inset 4px 0px 0px ${focusBlue}; outline: ${focusBlue} solid 2px; outline-offset: -2px;`\n : ''\n }\n ${StyledFilenameCaption} {\n color: ${colors.blue45};\n }\n `\n }\n `}\n`\n\nexport const StyledTreeRowContent = styled.div`\n display: flex;\n align-items: center;\n`\n\nexport const StyledTreeRowWrapper = styled.div`\n outline: none;\n`\n\nconst StyledIconBase = styled(Box)`\n display: flex;\n justify-content: center;\n align-items: center;\n\n width: 24px;\n height: 24px;\n min-width: 24px;\n min-height: 24px;\n`\n\n/** @deprecated Use StyledChevronPlaceholder instead */\nexport const StyledChevronContainer = styled(StyledIconBase)``\n\nexport const StyledChevronPlaceholder = styled(StyledIconBase)``\n\nexport const StyledIconContainer = styled(StyledIconBase)<{\n $isSelected?: boolean\n}>`\n color: ${({ $isSelected }) => ($isSelected ? colors.blue45 : colors.gray40)};\n`\n\n/** @deprecated TreeRowChevron now uses Button with inline styled icon */\nexport const StyledChevron = styled(ChevronRight)<{\n $isExpanded?: boolean\n}>`\n transform: rotate(${({ $isExpanded }) => ($isExpanded ? 90 : 0)}deg);\n transition: transform 150ms ease-out;\n`\n"],"mappings":"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"}
|
|
@@ -163,6 +163,11 @@ export interface TreeNodeAPI<T extends Node = Node> {
|
|
|
163
163
|
* @since 10.19.0
|
|
164
164
|
*/
|
|
165
165
|
isTreeFocused: boolean;
|
|
166
|
+
/**
|
|
167
|
+
* Whether the tree is currently being interacted with via the keyboard.
|
|
168
|
+
* True after a keydown while focused; false after any mouse interaction or blur.
|
|
169
|
+
*/
|
|
170
|
+
isKeyboardMode: boolean;
|
|
166
171
|
/**
|
|
167
172
|
* @since 10.19.0
|
|
168
173
|
*/
|
|
@@ -453,6 +458,11 @@ export interface TreeRowContainerProps extends Omit<React.HTMLAttributes<HTMLDiv
|
|
|
453
458
|
* @since 10.19.0
|
|
454
459
|
*/
|
|
455
460
|
isFileLimitReached: boolean;
|
|
461
|
+
/**
|
|
462
|
+
* Whether the tree is currently being interacted with via the keyboard.
|
|
463
|
+
* Used to gate the keyboard-focus indicator.
|
|
464
|
+
*/
|
|
465
|
+
isKeyboardMode: boolean;
|
|
456
466
|
/**
|
|
457
467
|
* @since 10.19.0
|
|
458
468
|
*/
|