@frontify/fondue 12.0.0-beta.329 → 12.0.0-beta.330

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.
@@ -1,12 +1,12 @@
1
1
  import { jsx as N, jsxs as re } from "react/jsx-runtime";
2
- import { memo as oe, useRef as ne, useEffect as de, useCallback as M, Children as gt, useMemo as z, createElement as le } from "react";
2
+ import { memo as oe, useRef as ne, useEffect as de, useCallback as C, Children as gt, useMemo as z, createElement as le } from "react";
3
3
  import { useSortable as pe } from "@dnd-kit/sortable";
4
4
  import { useDndContext as ue, useDndMonitor as me } from "@dnd-kit/core";
5
5
  import { CSS as ce } from "@dnd-kit/utilities";
6
6
  import ie from "../../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/noop.es.js";
7
7
  import { merge as b } from "../../../utilities/merge.es.js";
8
8
  import { FOCUS_VISIBLE_STYLE as fe } from "../../../utilities/focusStyle.es.js";
9
- import { TreeItemColorsClassMap as we, TreeItemSpacingClassMap as be, TreeItemBorderRadiusClassMap as v, TreeItemBorderClassMap as yt, TreeItemBorderStyleClassMap as he, TreeItemShadowClassMap as Ie } from "../types.es.js";
9
+ import { TreeItemColorsClassMap as we, TreeItemSpacingClassMap as be, TreeItemBorderRadiusClassMap as M, TreeItemBorderClassMap as yt, TreeItemBorderStyleClassMap as he, TreeItemShadowClassMap as Ie } from "../types.es.js";
10
10
  import { DragHandle as ge } from "./DragHandle.es.js";
11
11
  import { ExpandButton as ye } from "./ExpandButton.es.js";
12
12
  import { useDebounce as Dt } from "../../../hooks/useDebounce.es.js";
@@ -42,10 +42,10 @@ const Se = ({ isSorting: a, wasDragging: L }) => !(a || L), Ae = oe(
42
42
  itemStyle: U,
43
43
  ignoreItemDoubleClick: X = !1,
44
44
  expandOnSelect: Rt = !1,
45
- "data-test-id": Bt = "fondue-tree-item"
45
+ "data-test-id": vt = "fondue-tree-item"
46
46
  }) => {
47
47
  var at, rt, ot, nt, dt, lt, pt, ut, mt, ct, it, ft, wt, bt, ht;
48
- const { active: o, over: R } = ue(), { isSelected: c, isExpanded: i, projection: e } = De(a), q = ne(), G = xt && St, s = (o == null ? void 0 : o.id) === a, t = s && e !== null && e !== void 0 ? e : null, Ct = typeof ((rt = (at = R == null ? void 0 : R.data) == null ? void 0 : at.current) == null ? void 0 : rt.accepts) == "string" ? (ot = R.data.current.accepts) == null ? void 0 : ot.split(", ") : [], Mt = typeof (t == null ? void 0 : t.accepts) == "string" ? (nt = t.accepts) == null ? void 0 : nt.split(", ") : [], y = ((dt = o == null ? void 0 : o.data.current) == null ? void 0 : dt.type) || "", D = ((lt = e == null ? void 0 : e.previousNode) == null ? void 0 : lt.depth) !== void 0 && (e == null ? void 0 : e.depth) > ((pt = e == null ? void 0 : e.previousNode) == null ? void 0 : pt.depth), vt = D && e.depth - 1 === ((ut = e == null ? void 0 : e.previousNode) == null ? void 0 : ut.depth), Y = D && ((mt = e == null ? void 0 : e.previousNode) == null ? void 0 : mt.accepts) !== void 0 && (((ct = e == null ? void 0 : e.previousNode) == null ? void 0 : ct.accepts.includes(`${y}-deeper`)) || ((it = e == null ? void 0 : e.previousNode) == null ? void 0 : it.accepts.includes(`${y}-within`))), Lt = s && vt && ((ft = t == null ? void 0 : t.previousNode) == null ? void 0 : ft.accepts) !== void 0 && ((wt = t == null ? void 0 : t.previousNode) == null ? void 0 : wt.accepts.includes(`${y}-within`)) || (t == null ? void 0 : t.isWithinParent) && Mt.includes(`${y}-within`), T = s && (o == null ? void 0 : o.data.current) && (Ct.includes(y) && !D || Lt), J = Dt((r) => {
48
+ const { active: o, over: R } = ue(), { isSelected: c, isExpanded: i, projection: e } = De(a), q = ne(), G = xt && St, s = (o == null ? void 0 : o.id) === a, t = s && e !== null && e !== void 0 ? e : null, Bt = typeof ((rt = (at = R == null ? void 0 : R.data) == null ? void 0 : at.current) == null ? void 0 : rt.accepts) == "string" ? (ot = R.data.current.accepts) == null ? void 0 : ot.split(", ") : [], Ct = typeof (t == null ? void 0 : t.accepts) == "string" ? (nt = t.accepts) == null ? void 0 : nt.split(", ") : [], y = ((dt = o == null ? void 0 : o.data.current) == null ? void 0 : dt.type) || "", D = ((lt = e == null ? void 0 : e.previousNode) == null ? void 0 : lt.depth) !== void 0 && (e == null ? void 0 : e.depth) > ((pt = e == null ? void 0 : e.previousNode) == null ? void 0 : pt.depth), Mt = D && e.depth - 1 === ((ut = e == null ? void 0 : e.previousNode) == null ? void 0 : ut.depth), Y = D && ((mt = e == null ? void 0 : e.previousNode) == null ? void 0 : mt.accepts) !== void 0 && (((ct = e == null ? void 0 : e.previousNode) == null ? void 0 : ct.accepts.includes(`${y}-deeper`)) || ((it = e == null ? void 0 : e.previousNode) == null ? void 0 : it.accepts.includes(`${y}-within`))), Lt = s && Mt && ((ft = t == null ? void 0 : t.previousNode) == null ? void 0 : ft.accepts) !== void 0 && ((wt = t == null ? void 0 : t.previousNode) == null ? void 0 : wt.accepts.includes(`${y}-within`)) || (t == null ? void 0 : t.isWithinParent) && Ct.includes(`${y}-within`), T = s && (o == null ? void 0 : o.data.current) && (Bt.includes(y) && !D || Lt), J = Dt((r) => {
49
49
  q.current === r && (u == null || u(r));
50
50
  }, Te);
51
51
  de(() => {
@@ -60,7 +60,7 @@ const Se = ({ isSorting: a, wasDragging: L }) => !(a || L), Ae = oe(
60
60
  Y,
61
61
  D
62
62
  ]);
63
- const Wt = M(
63
+ const Wt = C(
64
64
  (r) => {
65
65
  var It;
66
66
  const { over: l, active: w } = r;
@@ -73,7 +73,7 @@ const Se = ({ isSorting: a, wasDragging: L }) => !(a || L), Ae = oe(
73
73
  });
74
74
  },
75
75
  [s, t, T, W, g]
76
- ), Ht = M(
76
+ ), Ht = C(
77
77
  (r) => {
78
78
  r.active.id === a && (S == null || S({
79
79
  contentComponent: g,
@@ -95,7 +95,7 @@ const Se = ({ isSorting: a, wasDragging: L }) => !(a || L), Ae = oe(
95
95
  S,
96
96
  A
97
97
  ]
98
- ), Et = M(
98
+ ), Et = C(
99
99
  (r) => {
100
100
  r.active.id === a && document.body.style.setProperty("cursor", T ? "grabbing" : "no-drop");
101
101
  },
@@ -106,7 +106,7 @@ const Se = ({ isSorting: a, wasDragging: L }) => !(a || L), Ae = oe(
106
106
  onDragStart: Ht,
107
107
  onDragMove: Et
108
108
  });
109
- const O = M(
109
+ const O = C(
110
110
  (r) => {
111
111
  r == null || r.stopPropagation(), i ? x == null || x(a) : u == null || u(a);
112
112
  },
@@ -125,7 +125,7 @@ const Se = ({ isSorting: a, wasDragging: L }) => !(a || L), Ae = oe(
125
125
  }, [I, a, p]), {
126
126
  attributes: Yt,
127
127
  listeners: $t,
128
- transform: B,
128
+ transform: v,
129
129
  transition: kt,
130
130
  setDraggableNodeRef: zt,
131
131
  setDroppableNodeRef: Vt,
@@ -166,34 +166,34 @@ const Se = ({ isSorting: a, wasDragging: L }) => !(a || L), Ae = oe(
166
166
  ]),
167
167
  backgroundClassName: b([
168
168
  "tw-block tw-absolute tw-inset-0 tw-transition-colors -tw-z-10",
169
- n.borderWidth !== "none" ? v[n.borderRadius ?? "small"] : "",
169
+ n.borderWidth !== "none" ? M[n.borderRadius ?? "small"] : "",
170
170
  !s && (!c || n.activeColorStyle !== "neutral") && f.pressedBackgroundColor,
171
171
  !s && c ? f.selectedBackgroundColor : f.backgroundColor
172
172
  ])
173
173
  }), [s, c, n, f]), qt = A ? !0 : !s, Gt = b([
174
- "tw-max-w-full tw-grow",
174
+ "tw-max-w-full tw-grow tw-overflow-hidden",
175
175
  s && A ? "tw-opacity-75 tw-blur-sm tw-grayscale" : ""
176
- ]), Jt = i && !s, P = G && !s, Ot = h !== void 0 && !s, C = !s && K && (V === void 0 ? Z : V);
176
+ ]), Jt = i && !s, P = G && !s, Ot = h !== void 0 && !s, B = !s && K && (V === void 0 ? Z : V);
177
177
  let k = "";
178
- !s && !i && C && Y && ((bt = e == null ? void 0 : e.previousNode) == null ? void 0 : bt.id) === a && (e == null ? void 0 : e.depth) > ((ht = e == null ? void 0 : e.previousNode) == null ? void 0 : ht.depth) && (k = b([
178
+ !s && !i && B && Y && ((bt = e == null ? void 0 : e.previousNode) == null ? void 0 : bt.id) === a && (e == null ? void 0 : e.depth) > ((ht = e == null ? void 0 : e.previousNode) == null ? void 0 : ht.depth) && (k = b([
179
179
  "tw-border-solid tw-border-box-selected-strong",
180
- v[n.borderRadius ?? "small"],
180
+ M[n.borderRadius ?? "small"],
181
181
  yt.small
182
182
  ]));
183
183
  const Qt = n.borderWidth !== "none" && k === "" ? b([
184
184
  yt[n.borderWidth ?? "none"],
185
- v[n.borderRadius ?? "small"],
185
+ M[n.borderRadius ?? "small"],
186
186
  he[n.borderStyle ?? "none"]
187
187
  ]) : "", Zt = n.contentHight === "single-line" ? "tw-h-10" : "tw-h-fit", Pt = n.contentHight === "single-line" ? "tw-h-12" : "tw-h-fit", jt = b([
188
188
  "tw-relative tw-z-0 tw-transition-colors tw-flex tw-items-center tw-leading-5 tw-width-fit tw-justify-between",
189
189
  Ie[n.shadow ?? "none"],
190
190
  s ? "tw-border-dashed tw-border-2 tw-pr-0" : Qt,
191
- s && v[n.borderRadius ?? "small"],
191
+ s && M[n.borderRadius ?? "small"],
192
192
  s ? Pt : Zt,
193
193
  s && (T ? "tw-border-box-selected-strong tw-bg-box-selected-hover" : "tw-bg-box-negative-hover tw-border-box-negative-strong-hover"),
194
194
  k
195
195
  ]), j = t != null && t.depth ? t.depth * Tt : void 0, tt = s ? 0 : p * Tt, te = { paddingLeft: j ?? tt }, ee = n.borderWidth !== "none" ? {} : { marginLeft: -1 * (j ?? tt) }, se = {
196
- transform: ce.Transform.toString(B),
196
+ transform: ce.Transform.toString(v),
197
197
  transition: kt
198
198
  }, et = { ...$t, ...Yt }, st = m !== "none" ? /* @__PURE__ */ N(
199
199
  ge,
@@ -222,7 +222,7 @@ const Se = ({ isSorting: a, wasDragging: L }) => !(a || L), Ae = oe(
222
222
  onClick: _t,
223
223
  className: Ut,
224
224
  ref: Vt,
225
- "data-test-id": Bt,
225
+ "data-test-id": vt,
226
226
  "aria-selected": c,
227
227
  "aria-expanded": i,
228
228
  "data-has-children": Z,
@@ -234,12 +234,12 @@ const Se = ({ isSorting: a, wasDragging: L }) => !(a || L), Ae = oe(
234
234
  K && /* @__PURE__ */ N(
235
235
  ye,
236
236
  {
237
- active: B != null && B.y ? !1 : c,
237
+ active: v != null && v.y ? !1 : c,
238
238
  onClick: O,
239
239
  expanded: Jt,
240
- disabled: !C,
241
- "aria-hidden": !C,
242
- className: C ? "tw-visible" : "tw-invisible tw-pointer-events-none"
240
+ disabled: !B,
241
+ "aria-hidden": !B,
242
+ className: B ? "tw-visible" : "tw-invisible tw-pointer-events-none"
243
243
  }
244
244
  ),
245
245
  Ot && /* @__PURE__ */ N("span", { className: "first:tw-ml-3.5 tw-w-full tw-h-full tw-flex tw-items-center", children: h }),
@@ -1 +1 @@
1
- {"version":3,"file":"TreeItem.es.js","sources":["../../../../src/components/Tree/TreeItem/TreeItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { Children, MouseEvent, memo, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { AnimateLayoutChanges, useSortable } from '@dnd-kit/sortable';\nimport { useDndContext, useDndMonitor } from '@dnd-kit/core';\nimport { CSS } from '@dnd-kit/utilities';\nimport noop from 'lodash-es/noop';\n\nimport { merge } from '@utilities/merge';\nimport { FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\n\nimport {\n type RegisterNodeChildrenPayload,\n type TreeDragEndEvent,\n type TreeDragMoveEvent,\n type TreeDragStartEvent,\n TreeItemBorderClassMap,\n TreeItemBorderRadiusClassMap,\n TreeItemBorderStyleClassMap,\n TreeItemColorsClassMap,\n type TreeItemProps,\n TreeItemShadowClassMap,\n TreeItemSpacingClassMap,\n TreeItemStyling,\n} from '@components/Tree/types';\n\nimport { EXPAND_ONHOVER_DELAY, INDENTATION_WIDTH, Projection } from '../helpers';\nimport { removeFragmentsAndEnrichChildren, useDeepCompareEffect } from '../utils';\n\nimport { DragHandle } from './DragHandle';\nimport { Overlay } from './TreeItemOverlay';\nimport { ExpandButton } from './ExpandButton';\nimport { useDebounce } from '@hooks/useDebounce';\nimport { useTreeItem } from './useTreeItem';\n\nconst animateLayoutChanges: AnimateLayoutChanges = ({ isSorting, wasDragging }) =>\n isSorting || wasDragging ? false : true;\n\n/** @private */\ntype TreeItemPrivateProps = {\n level?: number;\n levelConstraint?: Nullable<number>;\n parentId?: string;\n isSelected?: boolean;\n isExpanded?: boolean;\n treeDraggable?: boolean;\n /** onSelect is passed by the Tree component when cloning the TreeItem */\n onSelect?: (id: string) => void;\n /** onClick is the user defined callback to run after the onSelect */\n onClick?: (id: string) => void;\n onExpand?: (id: string) => void;\n onShrink?: (id: string) => void;\n projection?: Nullable<Projection>;\n registerOverlay?: (overlay: Overlay) => void;\n unregisterNodeChildren?: (payload: string) => void;\n registerNodeChildren?: (payload: RegisterNodeChildrenPayload) => void;\n};\n\n/** @private */\nexport type InternalTreeItemProps = TreeItemProps & TreeItemPrivateProps;\n\nexport const TreeItem = memo(\n ({\n id,\n type,\n label,\n onDrop,\n accepts,\n showCaret,\n children,\n parentId,\n level = 0,\n contentComponent,\n treeDraggable = false,\n onClick,\n onSelect,\n onExpand,\n onShrink,\n registerOverlay,\n registerNodeChildren,\n unregisterNodeChildren,\n draggable: itemDraggable = true,\n expandable = true,\n showDragHandlerOnHoverOnly = true,\n dragHandlerPosition = 'left',\n showContentWhileDragging = true,\n itemStyle,\n ignoreItemDoubleClick = false,\n expandOnSelect = false,\n 'data-test-id': dataTestId = 'fondue-tree-item',\n }: InternalTreeItemProps) => {\n const { active, over } = useDndContext();\n const { isSelected, isExpanded, projection } = useTreeItem(id);\n const expandDebounced = useRef<Nullable<string> | undefined>();\n\n const draggable = treeDraggable && itemDraggable;\n\n const isActive = active?.id === id;\n const activeProjection = isActive && projection !== null && projection !== undefined ? projection : null;\n\n const overAccepts =\n typeof over?.data?.current?.accepts === 'string' ? over.data.current.accepts?.split(', ') : [];\n\n const parentAccepts =\n typeof activeProjection?.accepts === 'string' ? activeProjection.accepts?.split(', ') : [];\n\n const currentType = active?.data.current?.type || '';\n\n const isWithin =\n projection?.previousNode?.depth !== undefined && projection?.depth > projection?.previousNode?.depth;\n const isWithinOneLevel = isWithin && projection.depth - 1 === projection?.previousNode?.depth;\n\n const canDropWithinAndDeeper =\n isWithin &&\n projection?.previousNode?.accepts !== undefined &&\n (projection?.previousNode?.accepts.includes(`${currentType}-deeper`) ||\n projection?.previousNode?.accepts.includes(`${currentType}-within`));\n\n const canDropWithin =\n (isActive &&\n isWithinOneLevel &&\n activeProjection?.previousNode?.accepts !== undefined &&\n activeProjection?.previousNode?.accepts.includes(`${currentType}-within`)) ||\n (activeProjection?.isWithinParent && parentAccepts.includes(`${currentType}-within`));\n\n const canDrop =\n isActive && active?.data.current && ((overAccepts.includes(currentType) && !isWithin) || canDropWithin);\n\n const expandProjectionParent = useDebounce((toExpandId: string) => {\n if (expandDebounced.current === toExpandId) {\n onExpand?.(toExpandId);\n }\n }, EXPAND_ONHOVER_DELAY);\n\n useEffect(() => {\n if (isActive) {\n expandDebounced.current = isWithin ? activeProjection?.previousNode?.id : null;\n }\n\n if (\n isActive &&\n canDropWithinAndDeeper &&\n activeProjection?.parentId &&\n activeProjection.previousNode &&\n activeProjection.parentId === activeProjection.previousNode.id &&\n activeProjection.parentId !== active?.data?.current?.parentId\n ) {\n expandProjectionParent(activeProjection?.parentId);\n }\n }, [\n active?.data,\n activeProjection?.parentId,\n activeProjection?.previousNode,\n expandProjectionParent,\n isActive,\n canDropWithinAndDeeper,\n isWithin,\n ]);\n\n const handleItemDragEnd = useCallback(\n (event: TreeDragEndEvent) => {\n const { over, active } = event;\n\n if (\n !isActive ||\n !activeProjection ||\n (active.id === over?.id && activeProjection?.depth === active.data.current?.level)\n ) {\n return;\n }\n\n if (isActive && over && canDrop && onDrop) {\n onDrop({\n id: active.id,\n parentId: activeProjection.parentId,\n sort: activeProjection.position,\n contentComponent,\n parentType: activeProjection.type,\n });\n }\n },\n [isActive, activeProjection, canDrop, onDrop, contentComponent],\n );\n\n const handleItemDragStart = useCallback(\n (event: TreeDragStartEvent) => {\n if (event.active.id !== id) {\n return;\n }\n\n registerOverlay?.({\n contentComponent,\n children,\n id,\n label,\n level,\n dragHandlerPosition,\n showContentWhileDragging,\n });\n },\n [\n children,\n contentComponent,\n dragHandlerPosition,\n id,\n label,\n level,\n registerOverlay,\n showContentWhileDragging,\n ],\n );\n\n const handleItemDragMove = useCallback(\n (event: TreeDragMoveEvent) => {\n if (event.active.id === id) {\n document.body.style.setProperty('cursor', canDrop ? 'grabbing' : 'no-drop');\n }\n },\n [canDrop, id],\n );\n\n useDndMonitor({\n onDragEnd: handleItemDragEnd,\n onDragStart: handleItemDragStart,\n onDragMove: handleItemDragMove,\n });\n\n const toggleExpand = useCallback(\n (event?: MouseEvent<HTMLButtonElement>) => {\n event?.stopPropagation();\n isExpanded ? onShrink?.(id) : onExpand?.(id);\n },\n [id, isExpanded, onExpand, onShrink],\n );\n\n const handleItemClick = useDebounce(\n (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n if (ignoreItemDoubleClick && event.detail >= 2) {\n return;\n }\n\n if (expandOnSelect) {\n toggleExpand();\n }\n\n onSelect?.(id);\n onClick?.(id);\n },\n ignoreItemDoubleClick ? 300 : 0,\n );\n\n const isParentActive = parentId && active?.id === parentId;\n\n const hasChildren = Children.count(children) > 0;\n\n const { enrichedChildren, childrenIds } = useMemo(() => {\n const enrichedChildren = removeFragmentsAndEnrichChildren(children, { parentId: id, level: level + 1 });\n return {\n enrichedChildren,\n childrenIds: enrichedChildren.map((child) => child.props.id),\n };\n }, [children, id, level]);\n\n const {\n attributes,\n listeners,\n transform,\n transition,\n setDraggableNodeRef,\n setDroppableNodeRef,\n setActivatorNodeRef,\n } = useSortable({\n id,\n disabled: !draggable,\n data: { type, accepts, parentId, level },\n animateLayoutChanges,\n transition: null,\n });\n\n useDeepCompareEffect(() => {\n if (Children.count(enrichedChildren) === 0) {\n unregisterNodeChildren?.(id);\n return;\n }\n\n if (isActive || isParentActive) {\n unregisterNodeChildren?.(id);\n return;\n }\n\n if (isExpanded) {\n registerNodeChildren?.({ id, children: enrichedChildren });\n } else {\n unregisterNodeChildren?.(id);\n }\n }, [isActive, isExpanded, isParentActive, enrichedChildren, id]);\n\n const itemStyleProps = useMemo(() => {\n return {\n spacingY: 'none',\n contentHight: 'single-line',\n shadow: 'none',\n borderRadius: 'small',\n borderWidth: 'none',\n borderStyle: 'none',\n activeColorStyle: 'neutral',\n ...itemStyle,\n } as TreeItemStyling;\n }, [itemStyle]);\n\n const styling = TreeItemColorsClassMap[itemStyleProps.activeColorStyle ?? 'neutral'];\n\n const { liClassName, backgroundClassName } = useMemo(() => {\n return {\n liClassName: merge([\n FOCUS_VISIBLE_STYLE,\n 'tw-box-content tw-relative tw-cursor-default tw-transition-colors tw-outline-none tw-ring-inset tw-group tw-no-underline tw-leading-5',\n !isActive && isSelected ? styling.selectedTextColor : styling.textColor,\n TreeItemSpacingClassMap[itemStyleProps.spacingY ?? 'none'],\n ]),\n backgroundClassName: merge([\n 'tw-block tw-absolute tw-inset-0 tw-transition-colors -tw-z-10',\n itemStyleProps.borderWidth !== 'none'\n ? TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small']\n : '',\n !isActive &&\n (!isSelected || itemStyleProps.activeColorStyle !== 'neutral') &&\n styling.pressedBackgroundColor,\n !isActive && isSelected ? styling.selectedBackgroundColor : styling.backgroundColor,\n ]),\n };\n }, [isActive, isSelected, itemStyleProps, styling]);\n\n const showContent = showContentWhileDragging ? true : !isActive;\n const wrapperContentClassName = merge([\n 'tw-max-w-full\ttw-grow',\n isActive && showContentWhileDragging ? 'tw-opacity-75 tw-blur-sm tw-grayscale' : '',\n ]);\n const showChildren = isExpanded && !isActive;\n const showDragHandle = draggable && !isActive;\n const showLabel = label !== undefined && !isActive;\n const showExpandButton = !isActive && expandable && (showCaret === undefined ? hasChildren : showCaret);\n\n let previousItemToBeExpandedFeedback = '';\n if (\n !isActive &&\n !isExpanded &&\n showExpandButton &&\n canDropWithinAndDeeper &&\n projection?.previousNode?.id === id &&\n projection?.depth > projection?.previousNode?.depth\n ) {\n previousItemToBeExpandedFeedback = merge([\n 'tw-border-solid tw-border-box-selected-strong',\n TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small'],\n TreeItemBorderClassMap['small'],\n ]);\n }\n\n const containerBorder =\n itemStyleProps.borderWidth !== 'none' && previousItemToBeExpandedFeedback === ''\n ? merge([\n TreeItemBorderClassMap[itemStyleProps.borderWidth ?? 'none'],\n TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small'],\n TreeItemBorderStyleClassMap[itemStyleProps.borderStyle ?? 'none'],\n ])\n : '';\n const containerHeight = itemStyleProps.contentHight === 'single-line' ? 'tw-h-10' : 'tw-h-fit';\n const containerActiveHeight = itemStyleProps.contentHight === 'single-line' ? 'tw-h-12' : 'tw-h-fit';\n\n const containerClassName = merge([\n 'tw-relative tw-z-0 tw-transition-colors tw-flex tw-items-center tw-leading-5 tw-width-fit tw-justify-between',\n TreeItemShadowClassMap[itemStyleProps.shadow ?? 'none'],\n isActive ? 'tw-border-dashed tw-border-2 tw-pr-0' : containerBorder,\n isActive && TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small'],\n isActive ? containerActiveHeight : containerHeight,\n isActive &&\n (canDrop\n ? 'tw-border-box-selected-strong tw-bg-box-selected-hover'\n : 'tw-bg-box-negative-hover tw-border-box-negative-strong-hover'),\n previousItemToBeExpandedFeedback,\n ]);\n\n const depthPadding = activeProjection?.depth ? activeProjection.depth * INDENTATION_WIDTH : undefined;\n const levelPadding = isActive ? 0 : level * INDENTATION_WIDTH;\n\n const liStyle = { paddingLeft: depthPadding ?? levelPadding };\n const backgroundStyle =\n itemStyleProps.borderWidth !== 'none' ? {} : { marginLeft: -1 * (depthPadding ?? levelPadding) };\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n const handlerProps = { ...listeners, ...attributes };\n const dragHandlerProps = dragHandlerPosition !== 'none' ? handlerProps : {};\n const dragHandler =\n dragHandlerPosition !== 'none' ? (\n <DragHandle\n {...dragHandlerProps}\n active={isSelected}\n ref={setActivatorNodeRef}\n disabled={!showDragHandle}\n aria-hidden={!showDragHandle}\n showDragHandlerOnHoverOnly={showDragHandlerOnHoverOnly}\n activeColorStyle={itemStyleProps.activeColorStyle ?? 'neutral'}\n />\n ) : null;\n\n const itemHandlerProps = dragHandlerPosition === 'none' ? { ...handlerProps } : {};\n\n return (\n <li\n {...itemHandlerProps}\n id={id}\n key={id}\n tabIndex={0}\n role=\"treeitem\"\n style={liStyle}\n onKeyDown={noop}\n aria-label={label}\n aria-level={level + 1}\n onClick={handleItemClick}\n className={liClassName}\n ref={setDroppableNodeRef}\n data-test-id={dataTestId}\n aria-selected={isSelected}\n aria-expanded={isExpanded}\n data-has-children={hasChildren}\n aria-owns={childrenIds.join(' ')}\n >\n <div ref={setDraggableNodeRef} className={containerClassName} style={style}>\n <span className={backgroundClassName} style={backgroundStyle} aria-hidden={true} />\n {dragHandlerPosition === 'left' && dragHandler}\n\n {expandable && (\n <ExpandButton\n active={transform?.y ? false : isSelected}\n onClick={toggleExpand}\n expanded={showChildren}\n disabled={!showExpandButton}\n aria-hidden={!showExpandButton}\n className={showExpandButton ? 'tw-visible' : 'tw-invisible tw-pointer-events-none'}\n />\n )}\n\n {showLabel && (\n <span className=\"first:tw-ml-3.5 tw-w-full tw-h-full tw-flex tw-items-center\">{label}</span>\n )}\n\n {showContent && <div className={wrapperContentClassName}>{contentComponent}</div>}\n\n {dragHandlerPosition === 'right' && dragHandler}\n </div>\n </li>\n );\n },\n);\n\nTreeItem.displayName = 'FondueTreeItem';\n"],"names":["animateLayoutChanges","isSorting","wasDragging","TreeItem","memo","id","type","label","onDrop","accepts","showCaret","children","parentId","level","contentComponent","treeDraggable","onClick","onSelect","onExpand","onShrink","registerOverlay","registerNodeChildren","unregisterNodeChildren","itemDraggable","expandable","showDragHandlerOnHoverOnly","dragHandlerPosition","showContentWhileDragging","itemStyle","ignoreItemDoubleClick","expandOnSelect","dataTestId","active","over","useDndContext","isSelected","isExpanded","projection","useTreeItem","expandDebounced","useRef","draggable","isActive","activeProjection","overAccepts","_b","_a","_c","parentAccepts","_d","currentType","_e","isWithin","_f","_g","isWithinOneLevel","_h","canDropWithinAndDeeper","_i","_j","_k","canDropWithin","_l","_m","canDrop","expandProjectionParent","useDebounce","toExpandId","EXPAND_ONHOVER_DELAY","useEffect","handleItemDragEnd","useCallback","event","handleItemDragStart","handleItemDragMove","useDndMonitor","toggleExpand","handleItemClick","isParentActive","hasChildren","Children","enrichedChildren","childrenIds","useMemo","removeFragmentsAndEnrichChildren","child","attributes","listeners","transform","transition","setDraggableNodeRef","setDroppableNodeRef","setActivatorNodeRef","useSortable","useDeepCompareEffect","itemStyleProps","styling","TreeItemColorsClassMap","liClassName","backgroundClassName","merge","FOCUS_VISIBLE_STYLE","TreeItemSpacingClassMap","TreeItemBorderRadiusClassMap","showContent","wrapperContentClassName","showChildren","showDragHandle","showLabel","showExpandButton","previousItemToBeExpandedFeedback","_n","_o","TreeItemBorderClassMap","containerBorder","TreeItemBorderStyleClassMap","containerHeight","containerActiveHeight","containerClassName","TreeItemShadowClassMap","depthPadding","INDENTATION_WIDTH","levelPadding","liStyle","backgroundStyle","style","CSS","handlerProps","dragHandler","jsx","DragHandle","itemHandlerProps","createElement","noop","ExpandButton"],"mappings":";;;;;;;;;;;;;;;;AAmCA,MAAMA,KAA6C,CAAC,EAAE,WAAAC,GAAW,aAAAC,QAC7D,EAAAD,KAAaC,IAyBJC,KAAWC;AAAA,EACpB,CAAC;AAAA,IACG,IAAAC;AAAA,IACA,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,SAAAC;AAAA,IACA,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,kBAAAC;AAAA,IACA,eAAAC,KAAgB;AAAA,IAChB,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,WAAWC,KAAgB;AAAA,IAC3B,YAAAC,IAAa;AAAA,IACb,4BAAAC,KAA6B;AAAA,IAC7B,qBAAAC,IAAsB;AAAA,IACtB,0BAAAC,IAA2B;AAAA,IAC3B,WAAAC;AAAA,IACA,uBAAAC,IAAwB;AAAA,IACxB,gBAAAC,KAAiB;AAAA,IACjB,gBAAgBC,KAAa;AAAA,EAAA,MACJ;;AACzB,UAAM,EAAE,QAAAC,GAAQ,MAAAC,EAAK,IAAIC,GAAc,GACjC,EAAE,YAAAC,GAAY,YAAAC,GAAY,YAAAC,EAAW,IAAIC,GAAYjC,CAAE,GACvDkC,IAAkBC,MAElBC,IAAY1B,MAAiBQ,IAE7BmB,KAAWV,KAAA,gBAAAA,EAAQ,QAAO3B,GAC1BsC,IAAmBD,KAAYL,MAAe,QAAQA,MAAe,SAAYA,IAAa,MAE9FO,KACF,SAAOC,MAAAC,KAAAb,KAAA,gBAAAA,EAAM,SAAN,gBAAAa,GAAY,YAAZ,gBAAAD,GAAqB,YAAY,YAAWE,KAAAd,EAAK,KAAK,QAAQ,YAAlB,gBAAAc,GAA2B,MAAM,QAAQ,CAAA,GAE1FC,KACF,QAAOL,KAAA,gBAAAA,EAAkB,YAAY,YAAWM,KAAAN,EAAiB,YAAjB,gBAAAM,GAA0B,MAAM,QAAQ,IAEtFC,MAAcC,KAAAnB,KAAA,gBAAAA,EAAQ,KAAK,YAAb,gBAAAmB,GAAsB,SAAQ,IAE5CC,MACFC,KAAAhB,KAAA,gBAAAA,EAAY,iBAAZ,gBAAAgB,GAA0B,WAAU,WAAahB,KAAA,gBAAAA,EAAY,WAAQiB,KAAAjB,KAAA,gBAAAA,EAAY,iBAAZ,gBAAAiB,GAA0B,QAC7FC,KAAmBH,KAAYf,EAAW,QAAQ,QAAMmB,KAAAnB,KAAA,gBAAAA,EAAY,iBAAZ,gBAAAmB,GAA0B,QAElFC,IACFL,OACAM,KAAArB,KAAA,gBAAAA,EAAY,iBAAZ,gBAAAqB,GAA0B,aAAY,aACrCC,KAAAtB,KAAA,gBAAAA,EAAY,iBAAZ,gBAAAsB,GAA0B,QAAQ,SAAS,GAAGT,CAAW,iBACtDU,KAAAvB,KAAA,gBAAAA,EAAY,iBAAZ,gBAAAuB,GAA0B,QAAQ,SAAS,GAAGV,CAAW,cAE3DW,KACDnB,KACGa,QACAO,KAAAnB,KAAA,gBAAAA,EAAkB,iBAAlB,gBAAAmB,GAAgC,aAAY,YAC5CC,KAAApB,KAAA,gBAAAA,EAAkB,iBAAlB,gBAAAoB,GAAgC,QAAQ,SAAS,GAAGb,CAAW,gBAClEP,KAAA,gBAAAA,EAAkB,mBAAkBK,GAAc,SAAS,GAAGE,CAAW,SAAS,GAEjFc,IACFtB,MAAYV,KAAA,gBAAAA,EAAQ,KAAK,aAAaY,GAAY,SAASM,CAAW,KAAK,CAACE,KAAaS,KAEvFI,IAAyBC,GAAY,CAACC,MAAuB;AAC3D,MAAA5B,EAAgB,YAAY4B,MAC5BjD,KAAA,QAAAA,EAAWiD;AAAA,OAEhBC,EAAoB;AAEvB,IAAAC,GAAU,MAAM;;AACZ,MAAI3B,MACAH,EAAgB,UAAUa,KAAWN,IAAAH,KAAA,gBAAAA,EAAkB,iBAAlB,gBAAAG,EAAgC,KAAK,OAI1EJ,KACAe,MACAd,KAAA,QAAAA,EAAkB,aAClBA,EAAiB,gBACjBA,EAAiB,aAAaA,EAAiB,aAAa,MAC5DA,EAAiB,eAAaI,KAAAF,IAAAb,KAAA,gBAAAA,EAAQ,SAAR,gBAAAa,EAAc,YAAd,gBAAAE,EAAuB,aAErDkB,EAAuBtB,KAAA,gBAAAA,EAAkB,QAAQ;AAAA,IACrD,GACD;AAAA,MACCX,KAAA,gBAAAA,EAAQ;AAAA,MACRW,KAAA,gBAAAA,EAAkB;AAAA,MAClBA,KAAA,gBAAAA,EAAkB;AAAA,MAClBsB;AAAA,MACAvB;AAAA,MACAe;AAAA,MACAL;AAAA,IAAA,CACH;AAED,UAAMkB,KAAoBC;AAAA,MACtB,CAACC,MAA4B;;AACzB,cAAM,EAAE,MAAAvC,GAAM,QAAAD,MAAWwC;AAEzB,QACI,CAAC9B,KACD,CAACC,KACAX,EAAO,QAAOC,KAAAA,gBAAAA,EAAM,QAAMU,KAAA,gBAAAA,EAAkB,aAAUX,KAAAA,EAAO,KAAK,YAAZA,gBAAAA,GAAqB,UAK5EU,KAAYT,KAAQ+B,KAAWxD,KACxBA,EAAA;AAAA,UACH,IAAIwB,EAAO;AAAA,UACX,UAAUW,EAAiB;AAAA,UAC3B,MAAMA,EAAiB;AAAA,UACvB,kBAAA7B;AAAA,UACA,YAAY6B,EAAiB;AAAA,QAAA,CAChC;AAAA,MAET;AAAA,MACA,CAACD,GAAUC,GAAkBqB,GAASxD,GAAQM,CAAgB;AAAA,IAAA,GAG5D2D,KAAsBF;AAAA,MACxB,CAACC,MAA8B;AACvB,QAAAA,EAAM,OAAO,OAAOnE,MAINe,KAAA,QAAAA,EAAA;AAAA,UACd,kBAAAN;AAAA,UACA,UAAAH;AAAA,UACA,IAAAN;AAAA,UACA,OAAAE;AAAA,UACA,OAAAM;AAAA,UACA,qBAAAa;AAAA,UACA,0BAAAC;AAAA,QAAA;AAAA,MAER;AAAA,MACA;AAAA,QACIhB;AAAA,QACAG;AAAA,QACAY;AAAA,QACArB;AAAA,QACAE;AAAA,QACAM;AAAA,QACAO;AAAA,QACAO;AAAA,MACJ;AAAA,IAAA,GAGE+C,KAAqBH;AAAA,MACvB,CAACC,MAA6B;AACtB,QAAAA,EAAM,OAAO,OAAOnE,KACpB,SAAS,KAAK,MAAM,YAAY,UAAU2D,IAAU,aAAa,SAAS;AAAA,MAElF;AAAA,MACA,CAACA,GAAS3D,CAAE;AAAA,IAAA;AAGF,IAAAsE,GAAA;AAAA,MACV,WAAWL;AAAA,MACX,aAAaG;AAAA,MACb,YAAYC;AAAA,IAAA,CACf;AAED,UAAME,IAAeL;AAAA,MACjB,CAACC,MAA0C;AACvC,QAAAA,KAAA,QAAAA,EAAO,mBACPpC,IAAajB,KAAA,QAAAA,EAAWd,KAAMa,KAAA,QAAAA,EAAWb;AAAA,MAC7C;AAAA,MACA,CAACA,GAAI+B,GAAYlB,GAAUC,CAAQ;AAAA,IAAA,GAGjC0D,KAAkBX;AAAA,MACpB,CAACM,MAAmC;AAE5B,QADJA,EAAM,gBAAgB,GAClB,EAAA3C,KAAyB2C,EAAM,UAAU,OAIzC1C,MACa8C,KAGjB3D,KAAA,QAAAA,EAAWZ,IACXW,KAAA,QAAAA,EAAUX;AAAA,MACd;AAAA,MACAwB,IAAwB,MAAM;AAAA,IAAA,GAG5BiD,IAAiBlE,MAAYoB,KAAA,gBAAAA,EAAQ,QAAOpB,GAE5CmE,IAAcC,GAAS,MAAMrE,CAAQ,IAAI,GAEzC,EAAE,kBAAAsE,GAAkB,aAAAC,GAAY,IAAIC,EAAQ,MAAM;AAC9CF,YAAAA,IAAmBG,GAAiCzE,GAAU,EAAE,UAAUN,GAAI,OAAOQ,IAAQ,EAAA,CAAG;AAC/F,aAAA;AAAA,QACH,kBAAAoE;AAAAA,QACA,aAAaA,EAAiB,IAAI,CAACI,MAAUA,EAAM,MAAM,EAAE;AAAA,MAAA;AAAA,IAEhE,GAAA,CAAC1E,GAAUN,GAAIQ,CAAK,CAAC,GAElB;AAAA,MACF,YAAAyE;AAAA,MACA,WAAAC;AAAA,MACA,WAAAC;AAAA,MACA,YAAAC;AAAA,MACA,qBAAAC;AAAA,MACA,qBAAAC;AAAA,MACA,qBAAAC;AAAA,QACAC,GAAY;AAAA,MACZ,IAAAxF;AAAA,MACA,UAAU,CAACoC;AAAA,MACX,MAAM,EAAE,MAAAnC,GAAM,SAAAG,IAAS,UAAAG,GAAU,OAAAC,EAAM;AAAA,MACvC,sBAAAb;AAAA,MACA,YAAY;AAAA,IAAA,CACf;AAED,IAAA8F,GAAqB,MAAM;AACvB,UAAId,GAAS,MAAMC,CAAgB,MAAM,GAAG;AACxC,QAAA3D,KAAA,QAAAA,EAAyBjB;AACzB;AAAA,MACJ;AAEA,UAAIqC,KAAYoC,GAAgB;AAC5B,QAAAxD,KAAA,QAAAA,EAAyBjB;AACzB;AAAA,MACJ;AAEA,MAAI+B,IACAf,KAAA,QAAAA,EAAuB,EAAE,IAAAhB,GAAI,UAAU4E,EAAkB,KAEzD3D,KAAA,QAAAA,EAAyBjB;AAAA,IAC7B,GACD,CAACqC,GAAUN,GAAY0C,GAAgBG,GAAkB5E,CAAE,CAAC;AAEzD,UAAA0F,IAAiBZ,EAAQ,OACpB;AAAA,MACH,UAAU;AAAA,MACV,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,aAAa;AAAA,MACb,aAAa;AAAA,MACb,kBAAkB;AAAA,MAClB,GAAGvD;AAAA,IAAA,IAER,CAACA,CAAS,CAAC,GAERoE,IAAUC,GAAuBF,EAAe,oBAAoB,SAAS,GAE7E,EAAE,aAAAG,IAAa,qBAAAC,GAAoB,IAAIhB,EAAQ,OAC1C;AAAA,MACH,aAAaiB,EAAM;AAAA,QACfC;AAAA,QACA;AAAA,QACA,CAAC3D,KAAYP,IAAa6D,EAAQ,oBAAoBA,EAAQ;AAAA,QAC9DM,GAAwBP,EAAe,YAAY,MAAM;AAAA,MAAA,CAC5D;AAAA,MACD,qBAAqBK,EAAM;AAAA,QACvB;AAAA,QACAL,EAAe,gBAAgB,SACzBQ,EAA6BR,EAAe,gBAAgB,OAAO,IACnE;AAAA,QACN,CAACrD,MACI,CAACP,KAAc4D,EAAe,qBAAqB,cACpDC,EAAQ;AAAA,QACZ,CAACtD,KAAYP,IAAa6D,EAAQ,0BAA0BA,EAAQ;AAAA,MAAA,CACvE;AAAA,IAAA,IAEN,CAACtD,GAAUP,GAAY4D,GAAgBC,CAAO,CAAC,GAE5CQ,KAAc7E,IAA2B,KAAO,CAACe,GACjD+D,KAA0BL,EAAM;AAAA,MAClC;AAAA,MACA1D,KAAYf,IAA2B,0CAA0C;AAAA,IAAA,CACpF,GACK+E,KAAetE,KAAc,CAACM,GAC9BiE,IAAiBlE,KAAa,CAACC,GAC/BkE,KAAYrG,MAAU,UAAa,CAACmC,GACpCmE,IAAmB,CAACnE,KAAYlB,MAAed,MAAc,SAAYqE,IAAcrE;AAE7F,QAAIoG,IAAmC;AACvC,IACI,CAACpE,KACD,CAACN,KACDyE,KACApD,OACAsD,KAAA1E,KAAA,gBAAAA,EAAY,iBAAZ,gBAAA0E,GAA0B,QAAO1G,MACjCgC,KAAA,gBAAAA,EAAY,WAAQ2E,KAAA3E,KAAA,gBAAAA,EAAY,iBAAZ,gBAAA2E,GAA0B,WAE9CF,IAAmCV,EAAM;AAAA,MACrC;AAAA,MACAG,EAA6BR,EAAe,gBAAgB,OAAO;AAAA,MACnEkB,GAAuB;AAAA,IAAO,CACjC;AAGL,UAAMC,KACFnB,EAAe,gBAAgB,UAAUe,MAAqC,KACxEV,EAAM;AAAA,MACFa,GAAuBlB,EAAe,eAAe,MAAM;AAAA,MAC3DQ,EAA6BR,EAAe,gBAAgB,OAAO;AAAA,MACnEoB,GAA4BpB,EAAe,eAAe,MAAM;AAAA,IACnE,CAAA,IACD,IACJqB,KAAkBrB,EAAe,iBAAiB,gBAAgB,YAAY,YAC9EsB,KAAwBtB,EAAe,iBAAiB,gBAAgB,YAAY,YAEpFuB,KAAqBlB,EAAM;AAAA,MAC7B;AAAA,MACAmB,GAAuBxB,EAAe,UAAU,MAAM;AAAA,MACtDrD,IAAW,yCAAyCwE;AAAA,MACpDxE,KAAY6D,EAA6BR,EAAe,gBAAgB,OAAO;AAAA,MAC/ErD,IAAW2E,KAAwBD;AAAA,MACnC1E,MACKsB,IACK,2DACA;AAAA,MACV8C;AAAA,IAAA,CACH,GAEKU,IAAe7E,KAAA,QAAAA,EAAkB,QAAQA,EAAiB,QAAQ8E,KAAoB,QACtFC,KAAehF,IAAW,IAAI7B,IAAQ4G,IAEtCE,KAAU,EAAE,aAAaH,KAAgBE,GAAa,GACtDE,KACF7B,EAAe,gBAAgB,SAAS,KAAK,EAAE,YAAY,MAAMyB,KAAgBE,IAAc,GAE7FG,KAAQ;AAAA,MACV,WAAWC,GAAI,UAAU,SAAStC,CAAS;AAAA,MAC3C,YAAAC;AAAA,IAAA,GAGEsC,KAAe,EAAE,GAAGxC,IAAW,GAAGD,GAAW,GAE7C0C,KACFtG,MAAwB,SACpB,gBAAAuG;AAAA,MAACC;AAAA,MAAA;AAAA,QACI,GAJYxG,MAAwB,SAASqG,KAAe,CAAA;AAAA,QAK7D,QAAQ5F;AAAA,QACR,KAAKyD;AAAA,QACL,UAAU,CAACe;AAAA,QACX,eAAa,CAACA;AAAA,QACd,4BAAAlF;AAAA,QACA,kBAAkBsE,EAAe,oBAAoB;AAAA,MAAA;AAAA,IAEzD,IAAA,MAEFoC,KAAmBzG,MAAwB,SAAS,EAAE,GAAGqG,OAAiB;AAG5E,WAAA,gBAAAK;AAAA,MAAC;AAAA,MAAA;AAAA,QACI,GAAGD;AAAA,QACJ,IAAA9H;AAAA,QACA,KAAKA;AAAA,QACL,UAAU;AAAA,QACV,MAAK;AAAA,QACL,OAAOsH;AAAA,QACP,WAAWU;AAAA,QACX,cAAY9H;AAAA,QACZ,cAAYM,IAAQ;AAAA,QACpB,SAASgE;AAAA,QACT,WAAWqB;AAAA,QACX,KAAKP;AAAA,QACL,gBAAc5D;AAAA,QACd,iBAAeI;AAAA,QACf,iBAAeC;AAAA,QACf,qBAAmB2C;AAAA,QACnB,aAAWG,GAAY,KAAK,GAAG;AAAA,MAAA;AAAA,yBAE9B,OAAI,EAAA,KAAKQ,IAAqB,WAAW4B,IAAoB,OAAAO,IAC1D,UAAA;AAAA,QAAA,gBAAAI,EAAC,UAAK,WAAW9B,IAAqB,OAAOyB,IAAiB,eAAa,IAAM;AAAA,QAChFlG,MAAwB,UAAUsG;AAAA,QAElCxG,KACG,gBAAAyG;AAAA,UAACK;AAAA,UAAA;AAAA,YACG,QAAQ9C,KAAA,QAAAA,EAAW,IAAI,KAAQrD;AAAA,YAC/B,SAASyC;AAAA,YACT,UAAU8B;AAAA,YACV,UAAU,CAACG;AAAA,YACX,eAAa,CAACA;AAAA,YACd,WAAWA,IAAmB,eAAe;AAAA,UAAA;AAAA,QACjD;AAAA,QAGHD,MACG,gBAAAqB,EAAC,QAAK,EAAA,WAAU,+DAA+D,UAAM1H,GAAA;AAAA,QAGxFiG,MAAe,gBAAAyB,EAAC,OAAI,EAAA,WAAWxB,IAA0B,UAAiB3F,GAAA;AAAA,QAE1EY,MAAwB,WAAWsG;AAAA,MAAA,GACxC;AAAA,IAAA;AAAA,EAGZ;AACJ;AAEA7H,GAAS,cAAc;"}
1
+ {"version":3,"file":"TreeItem.es.js","sources":["../../../../src/components/Tree/TreeItem/TreeItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { Children, MouseEvent, memo, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { AnimateLayoutChanges, useSortable } from '@dnd-kit/sortable';\nimport { useDndContext, useDndMonitor } from '@dnd-kit/core';\nimport { CSS } from '@dnd-kit/utilities';\nimport noop from 'lodash-es/noop';\n\nimport { merge } from '@utilities/merge';\nimport { FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\n\nimport {\n type RegisterNodeChildrenPayload,\n type TreeDragEndEvent,\n type TreeDragMoveEvent,\n type TreeDragStartEvent,\n TreeItemBorderClassMap,\n TreeItemBorderRadiusClassMap,\n TreeItemBorderStyleClassMap,\n TreeItemColorsClassMap,\n type TreeItemProps,\n TreeItemShadowClassMap,\n TreeItemSpacingClassMap,\n TreeItemStyling,\n} from '@components/Tree/types';\n\nimport { EXPAND_ONHOVER_DELAY, INDENTATION_WIDTH, Projection } from '../helpers';\nimport { removeFragmentsAndEnrichChildren, useDeepCompareEffect } from '../utils';\n\nimport { DragHandle } from './DragHandle';\nimport { Overlay } from './TreeItemOverlay';\nimport { ExpandButton } from './ExpandButton';\nimport { useDebounce } from '@hooks/useDebounce';\nimport { useTreeItem } from './useTreeItem';\n\nconst animateLayoutChanges: AnimateLayoutChanges = ({ isSorting, wasDragging }) =>\n isSorting || wasDragging ? false : true;\n\n/** @private */\ntype TreeItemPrivateProps = {\n level?: number;\n levelConstraint?: Nullable<number>;\n parentId?: string;\n isSelected?: boolean;\n isExpanded?: boolean;\n treeDraggable?: boolean;\n /** onSelect is passed by the Tree component when cloning the TreeItem */\n onSelect?: (id: string) => void;\n /** onClick is the user defined callback to run after the onSelect */\n onClick?: (id: string) => void;\n onExpand?: (id: string) => void;\n onShrink?: (id: string) => void;\n projection?: Nullable<Projection>;\n registerOverlay?: (overlay: Overlay) => void;\n unregisterNodeChildren?: (payload: string) => void;\n registerNodeChildren?: (payload: RegisterNodeChildrenPayload) => void;\n};\n\n/** @private */\nexport type InternalTreeItemProps = TreeItemProps & TreeItemPrivateProps;\n\nexport const TreeItem = memo(\n ({\n id,\n type,\n label,\n onDrop,\n accepts,\n showCaret,\n children,\n parentId,\n level = 0,\n contentComponent,\n treeDraggable = false,\n onClick,\n onSelect,\n onExpand,\n onShrink,\n registerOverlay,\n registerNodeChildren,\n unregisterNodeChildren,\n draggable: itemDraggable = true,\n expandable = true,\n showDragHandlerOnHoverOnly = true,\n dragHandlerPosition = 'left',\n showContentWhileDragging = true,\n itemStyle,\n ignoreItemDoubleClick = false,\n expandOnSelect = false,\n 'data-test-id': dataTestId = 'fondue-tree-item',\n }: InternalTreeItemProps) => {\n const { active, over } = useDndContext();\n const { isSelected, isExpanded, projection } = useTreeItem(id);\n const expandDebounced = useRef<Nullable<string> | undefined>();\n\n const draggable = treeDraggable && itemDraggable;\n\n const isActive = active?.id === id;\n const activeProjection = isActive && projection !== null && projection !== undefined ? projection : null;\n\n const overAccepts =\n typeof over?.data?.current?.accepts === 'string' ? over.data.current.accepts?.split(', ') : [];\n\n const parentAccepts =\n typeof activeProjection?.accepts === 'string' ? activeProjection.accepts?.split(', ') : [];\n\n const currentType = active?.data.current?.type || '';\n\n const isWithin =\n projection?.previousNode?.depth !== undefined && projection?.depth > projection?.previousNode?.depth;\n const isWithinOneLevel = isWithin && projection.depth - 1 === projection?.previousNode?.depth;\n\n const canDropWithinAndDeeper =\n isWithin &&\n projection?.previousNode?.accepts !== undefined &&\n (projection?.previousNode?.accepts.includes(`${currentType}-deeper`) ||\n projection?.previousNode?.accepts.includes(`${currentType}-within`));\n\n const canDropWithin =\n (isActive &&\n isWithinOneLevel &&\n activeProjection?.previousNode?.accepts !== undefined &&\n activeProjection?.previousNode?.accepts.includes(`${currentType}-within`)) ||\n (activeProjection?.isWithinParent && parentAccepts.includes(`${currentType}-within`));\n\n const canDrop =\n isActive && active?.data.current && ((overAccepts.includes(currentType) && !isWithin) || canDropWithin);\n\n const expandProjectionParent = useDebounce((toExpandId: string) => {\n if (expandDebounced.current === toExpandId) {\n onExpand?.(toExpandId);\n }\n }, EXPAND_ONHOVER_DELAY);\n\n useEffect(() => {\n if (isActive) {\n expandDebounced.current = isWithin ? activeProjection?.previousNode?.id : null;\n }\n\n if (\n isActive &&\n canDropWithinAndDeeper &&\n activeProjection?.parentId &&\n activeProjection.previousNode &&\n activeProjection.parentId === activeProjection.previousNode.id &&\n activeProjection.parentId !== active?.data?.current?.parentId\n ) {\n expandProjectionParent(activeProjection?.parentId);\n }\n }, [\n active?.data,\n activeProjection?.parentId,\n activeProjection?.previousNode,\n expandProjectionParent,\n isActive,\n canDropWithinAndDeeper,\n isWithin,\n ]);\n\n const handleItemDragEnd = useCallback(\n (event: TreeDragEndEvent) => {\n const { over, active } = event;\n\n if (\n !isActive ||\n !activeProjection ||\n (active.id === over?.id && activeProjection?.depth === active.data.current?.level)\n ) {\n return;\n }\n\n if (isActive && over && canDrop && onDrop) {\n onDrop({\n id: active.id,\n parentId: activeProjection.parentId,\n sort: activeProjection.position,\n contentComponent,\n parentType: activeProjection.type,\n });\n }\n },\n [isActive, activeProjection, canDrop, onDrop, contentComponent],\n );\n\n const handleItemDragStart = useCallback(\n (event: TreeDragStartEvent) => {\n if (event.active.id !== id) {\n return;\n }\n\n registerOverlay?.({\n contentComponent,\n children,\n id,\n label,\n level,\n dragHandlerPosition,\n showContentWhileDragging,\n });\n },\n [\n children,\n contentComponent,\n dragHandlerPosition,\n id,\n label,\n level,\n registerOverlay,\n showContentWhileDragging,\n ],\n );\n\n const handleItemDragMove = useCallback(\n (event: TreeDragMoveEvent) => {\n if (event.active.id === id) {\n document.body.style.setProperty('cursor', canDrop ? 'grabbing' : 'no-drop');\n }\n },\n [canDrop, id],\n );\n\n useDndMonitor({\n onDragEnd: handleItemDragEnd,\n onDragStart: handleItemDragStart,\n onDragMove: handleItemDragMove,\n });\n\n const toggleExpand = useCallback(\n (event?: MouseEvent<HTMLButtonElement>) => {\n event?.stopPropagation();\n isExpanded ? onShrink?.(id) : onExpand?.(id);\n },\n [id, isExpanded, onExpand, onShrink],\n );\n\n const handleItemClick = useDebounce(\n (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n if (ignoreItemDoubleClick && event.detail >= 2) {\n return;\n }\n\n if (expandOnSelect) {\n toggleExpand();\n }\n\n onSelect?.(id);\n onClick?.(id);\n },\n ignoreItemDoubleClick ? 300 : 0,\n );\n\n const isParentActive = parentId && active?.id === parentId;\n\n const hasChildren = Children.count(children) > 0;\n\n const { enrichedChildren, childrenIds } = useMemo(() => {\n const enrichedChildren = removeFragmentsAndEnrichChildren(children, { parentId: id, level: level + 1 });\n return {\n enrichedChildren,\n childrenIds: enrichedChildren.map((child) => child.props.id),\n };\n }, [children, id, level]);\n\n const {\n attributes,\n listeners,\n transform,\n transition,\n setDraggableNodeRef,\n setDroppableNodeRef,\n setActivatorNodeRef,\n } = useSortable({\n id,\n disabled: !draggable,\n data: { type, accepts, parentId, level },\n animateLayoutChanges,\n transition: null,\n });\n\n useDeepCompareEffect(() => {\n if (Children.count(enrichedChildren) === 0) {\n unregisterNodeChildren?.(id);\n return;\n }\n\n if (isActive || isParentActive) {\n unregisterNodeChildren?.(id);\n return;\n }\n\n if (isExpanded) {\n registerNodeChildren?.({ id, children: enrichedChildren });\n } else {\n unregisterNodeChildren?.(id);\n }\n }, [isActive, isExpanded, isParentActive, enrichedChildren, id]);\n\n const itemStyleProps = useMemo(() => {\n return {\n spacingY: 'none',\n contentHight: 'single-line',\n shadow: 'none',\n borderRadius: 'small',\n borderWidth: 'none',\n borderStyle: 'none',\n activeColorStyle: 'neutral',\n ...itemStyle,\n } as TreeItemStyling;\n }, [itemStyle]);\n\n const styling = TreeItemColorsClassMap[itemStyleProps.activeColorStyle ?? 'neutral'];\n\n const { liClassName, backgroundClassName } = useMemo(() => {\n return {\n liClassName: merge([\n FOCUS_VISIBLE_STYLE,\n 'tw-box-content tw-relative tw-cursor-default tw-transition-colors tw-outline-none tw-ring-inset tw-group tw-no-underline tw-leading-5',\n !isActive && isSelected ? styling.selectedTextColor : styling.textColor,\n TreeItemSpacingClassMap[itemStyleProps.spacingY ?? 'none'],\n ]),\n backgroundClassName: merge([\n 'tw-block tw-absolute tw-inset-0 tw-transition-colors -tw-z-10',\n itemStyleProps.borderWidth !== 'none'\n ? TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small']\n : '',\n !isActive &&\n (!isSelected || itemStyleProps.activeColorStyle !== 'neutral') &&\n styling.pressedBackgroundColor,\n !isActive && isSelected ? styling.selectedBackgroundColor : styling.backgroundColor,\n ]),\n };\n }, [isActive, isSelected, itemStyleProps, styling]);\n\n const showContent = showContentWhileDragging ? true : !isActive;\n const wrapperContentClassName = merge([\n 'tw-max-w-full tw-grow tw-overflow-hidden',\n isActive && showContentWhileDragging ? 'tw-opacity-75 tw-blur-sm tw-grayscale' : '',\n ]);\n const showChildren = isExpanded && !isActive;\n const showDragHandle = draggable && !isActive;\n const showLabel = label !== undefined && !isActive;\n const showExpandButton = !isActive && expandable && (showCaret === undefined ? hasChildren : showCaret);\n\n let previousItemToBeExpandedFeedback = '';\n if (\n !isActive &&\n !isExpanded &&\n showExpandButton &&\n canDropWithinAndDeeper &&\n projection?.previousNode?.id === id &&\n projection?.depth > projection?.previousNode?.depth\n ) {\n previousItemToBeExpandedFeedback = merge([\n 'tw-border-solid tw-border-box-selected-strong',\n TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small'],\n TreeItemBorderClassMap['small'],\n ]);\n }\n\n const containerBorder =\n itemStyleProps.borderWidth !== 'none' && previousItemToBeExpandedFeedback === ''\n ? merge([\n TreeItemBorderClassMap[itemStyleProps.borderWidth ?? 'none'],\n TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small'],\n TreeItemBorderStyleClassMap[itemStyleProps.borderStyle ?? 'none'],\n ])\n : '';\n const containerHeight = itemStyleProps.contentHight === 'single-line' ? 'tw-h-10' : 'tw-h-fit';\n const containerActiveHeight = itemStyleProps.contentHight === 'single-line' ? 'tw-h-12' : 'tw-h-fit';\n\n const containerClassName = merge([\n 'tw-relative tw-z-0 tw-transition-colors tw-flex tw-items-center tw-leading-5 tw-width-fit tw-justify-between',\n TreeItemShadowClassMap[itemStyleProps.shadow ?? 'none'],\n isActive ? 'tw-border-dashed tw-border-2 tw-pr-0' : containerBorder,\n isActive && TreeItemBorderRadiusClassMap[itemStyleProps.borderRadius ?? 'small'],\n isActive ? containerActiveHeight : containerHeight,\n isActive &&\n (canDrop\n ? 'tw-border-box-selected-strong tw-bg-box-selected-hover'\n : 'tw-bg-box-negative-hover tw-border-box-negative-strong-hover'),\n previousItemToBeExpandedFeedback,\n ]);\n\n const depthPadding = activeProjection?.depth ? activeProjection.depth * INDENTATION_WIDTH : undefined;\n const levelPadding = isActive ? 0 : level * INDENTATION_WIDTH;\n\n const liStyle = { paddingLeft: depthPadding ?? levelPadding };\n const backgroundStyle =\n itemStyleProps.borderWidth !== 'none' ? {} : { marginLeft: -1 * (depthPadding ?? levelPadding) };\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n const handlerProps = { ...listeners, ...attributes };\n const dragHandlerProps = dragHandlerPosition !== 'none' ? handlerProps : {};\n const dragHandler =\n dragHandlerPosition !== 'none' ? (\n <DragHandle\n {...dragHandlerProps}\n active={isSelected}\n ref={setActivatorNodeRef}\n disabled={!showDragHandle}\n aria-hidden={!showDragHandle}\n showDragHandlerOnHoverOnly={showDragHandlerOnHoverOnly}\n activeColorStyle={itemStyleProps.activeColorStyle ?? 'neutral'}\n />\n ) : null;\n\n const itemHandlerProps = dragHandlerPosition === 'none' ? { ...handlerProps } : {};\n\n return (\n <li\n {...itemHandlerProps}\n id={id}\n key={id}\n tabIndex={0}\n role=\"treeitem\"\n style={liStyle}\n onKeyDown={noop}\n aria-label={label}\n aria-level={level + 1}\n onClick={handleItemClick}\n className={liClassName}\n ref={setDroppableNodeRef}\n data-test-id={dataTestId}\n aria-selected={isSelected}\n aria-expanded={isExpanded}\n data-has-children={hasChildren}\n aria-owns={childrenIds.join(' ')}\n >\n <div ref={setDraggableNodeRef} className={containerClassName} style={style}>\n <span className={backgroundClassName} style={backgroundStyle} aria-hidden={true} />\n {dragHandlerPosition === 'left' && dragHandler}\n\n {expandable && (\n <ExpandButton\n active={transform?.y ? false : isSelected}\n onClick={toggleExpand}\n expanded={showChildren}\n disabled={!showExpandButton}\n aria-hidden={!showExpandButton}\n className={showExpandButton ? 'tw-visible' : 'tw-invisible tw-pointer-events-none'}\n />\n )}\n\n {showLabel && (\n <span className=\"first:tw-ml-3.5 tw-w-full tw-h-full tw-flex tw-items-center\">{label}</span>\n )}\n\n {showContent && <div className={wrapperContentClassName}>{contentComponent}</div>}\n\n {dragHandlerPosition === 'right' && dragHandler}\n </div>\n </li>\n );\n },\n);\n\nTreeItem.displayName = 'FondueTreeItem';\n"],"names":["animateLayoutChanges","isSorting","wasDragging","TreeItem","memo","id","type","label","onDrop","accepts","showCaret","children","parentId","level","contentComponent","treeDraggable","onClick","onSelect","onExpand","onShrink","registerOverlay","registerNodeChildren","unregisterNodeChildren","itemDraggable","expandable","showDragHandlerOnHoverOnly","dragHandlerPosition","showContentWhileDragging","itemStyle","ignoreItemDoubleClick","expandOnSelect","dataTestId","active","over","useDndContext","isSelected","isExpanded","projection","useTreeItem","expandDebounced","useRef","draggable","isActive","activeProjection","overAccepts","_b","_a","_c","parentAccepts","_d","currentType","_e","isWithin","_f","_g","isWithinOneLevel","_h","canDropWithinAndDeeper","_i","_j","_k","canDropWithin","_l","_m","canDrop","expandProjectionParent","useDebounce","toExpandId","EXPAND_ONHOVER_DELAY","useEffect","handleItemDragEnd","useCallback","event","handleItemDragStart","handleItemDragMove","useDndMonitor","toggleExpand","handleItemClick","isParentActive","hasChildren","Children","enrichedChildren","childrenIds","useMemo","removeFragmentsAndEnrichChildren","child","attributes","listeners","transform","transition","setDraggableNodeRef","setDroppableNodeRef","setActivatorNodeRef","useSortable","useDeepCompareEffect","itemStyleProps","styling","TreeItemColorsClassMap","liClassName","backgroundClassName","merge","FOCUS_VISIBLE_STYLE","TreeItemSpacingClassMap","TreeItemBorderRadiusClassMap","showContent","wrapperContentClassName","showChildren","showDragHandle","showLabel","showExpandButton","previousItemToBeExpandedFeedback","_n","_o","TreeItemBorderClassMap","containerBorder","TreeItemBorderStyleClassMap","containerHeight","containerActiveHeight","containerClassName","TreeItemShadowClassMap","depthPadding","INDENTATION_WIDTH","levelPadding","liStyle","backgroundStyle","style","CSS","handlerProps","dragHandler","jsx","DragHandle","itemHandlerProps","createElement","noop","ExpandButton"],"mappings":"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"}