@frontify/fondue 12.0.0-beta.270 → 12.0.0-beta.271

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.
@@ -31,18 +31,18 @@ const Ut = ({ isSorting: t, wasDragging: y }) => !(t || y), Vt = At(
31
31
  onShrink: h,
32
32
  registerOverlay: x,
33
33
  registerNodeChildren: L,
34
- unregisterNodeChildren: c,
34
+ unregisterNodeChildren: i,
35
35
  draggable: et = !0,
36
36
  ignoreItemDoubleClick: _ = !1,
37
- expandOnSelect: at = !1,
38
- "data-test-id": st = "fondue-tree-item"
37
+ expandOnSelect: st = !1,
38
+ "data-test-id": at = "fondue-tree-item"
39
39
  }) => {
40
40
  var q, z, G, J, P, Q;
41
- const { active: s, over: i } = Mt(), { isSelected: l, isExpanded: d, projection: M } = St(t), $ = tt && et, a = (s == null ? void 0 : s.id) === t, e = a && M !== null && M !== void 0 ? M : null, S = typeof ((z = (q = i == null ? void 0 : i.data) == null ? void 0 : q.current) == null ? void 0 : z.accepts) == "string" ? (G = i.data.current.accepts) == null ? void 0 : G.split(", ") : [], nt = typeof (e == null ? void 0 : e.accepts) == "string" ? (J = e.accepts) == null ? void 0 : J.split(", ") : [], D = ((P = s == null ? void 0 : s.data.current) == null ? void 0 : P.type) || "", K = (D == null ? void 0 : D.replace(/-\d+$/, "")) || "", N = i !== null && e !== null && e.depth > ((Q = i.data.current) == null ? void 0 : Q.level), ot = N && (s == null ? void 0 : s.data.current) && S.includes(`${K}-within`) || (e == null ? void 0 : e.isWithinParent) && nt.includes(`${K}-within`), f = a && (s == null ? void 0 : s.data.current) && (S.includes(D) && !N || ot), rt = I(
41
+ const { active: a, over: c } = Mt(), { isSelected: l, isExpanded: d, projection: M } = St(t), $ = tt && et, s = (a == null ? void 0 : a.id) === t, e = s && M !== null && M !== void 0 ? M : null, S = typeof ((z = (q = c == null ? void 0 : c.data) == null ? void 0 : q.current) == null ? void 0 : z.accepts) == "string" ? (G = c.data.current.accepts) == null ? void 0 : G.split(", ") : [], nt = typeof (e == null ? void 0 : e.accepts) == "string" ? (J = e.accepts) == null ? void 0 : J.split(", ") : [], D = ((P = a == null ? void 0 : a.data.current) == null ? void 0 : P.type) || "", K = (D == null ? void 0 : D.replace(/-\d+$/, "")) || "", N = c !== null && e !== null && e.depth > ((Q = c.data.current) == null ? void 0 : Q.level), ot = N && (a == null ? void 0 : a.data.current) && S.includes(`${K}-within`) || (e == null ? void 0 : e.isWithinParent) && nt.includes(`${K}-within`), f = s && (a == null ? void 0 : a.data.current) && (S.includes(D) && !N || ot), rt = I(
42
42
  (n) => {
43
43
  var X;
44
44
  const { over: p, active: F } = n;
45
- !a || !e || F.id === (p == null ? void 0 : p.id) && (e == null ? void 0 : e.depth) === ((X = F.data.current) == null ? void 0 : X.level) || a && p && f && E && E({
45
+ !s || !e || F.id === (p == null ? void 0 : p.id) && (e == null ? void 0 : e.depth) === ((X = F.data.current) == null ? void 0 : X.level) || s && p && f && E && E({
46
46
  id: F.id,
47
47
  parentId: e.parentId,
48
48
  sort: e.position,
@@ -50,13 +50,13 @@ const Ut = ({ isSorting: t, wasDragging: y }) => !(t || y), Vt = At(
50
50
  parentType: e.type
51
51
  });
52
52
  },
53
- [a, e, f, E, u]
54
- ), ct = I(
53
+ [s, e, f, E, u]
54
+ ), it = I(
55
55
  (n) => {
56
56
  n.active.id === t && (x == null || x({ contentComponent: u, children: w, id: t, label: m, level: r }));
57
57
  },
58
58
  [w, u, t, m, r, x]
59
- ), it = I(
59
+ ), ct = I(
60
60
  (n) => {
61
61
  n.active.id === t && document.body.style.setProperty("cursor", f ? "grabbing" : "no-drop");
62
62
  },
@@ -64,8 +64,8 @@ const Ut = ({ isSorting: t, wasDragging: y }) => !(t || y), Vt = At(
64
64
  );
65
65
  Rt({
66
66
  onDragEnd: rt,
67
- onDragStart: ct,
68
- onDragMove: it
67
+ onDragStart: it,
68
+ onDragMove: ct
69
69
  });
70
70
  const U = I(
71
71
  (n) => {
@@ -74,10 +74,10 @@ const Ut = ({ isSorting: t, wasDragging: y }) => !(t || y), Vt = At(
74
74
  [t, d, g, h]
75
75
  ), lt = $t(
76
76
  (n) => {
77
- n.stopPropagation(), !(_ && n.detail >= 2) && (at && U(), A == null || A(t), v == null || v(t));
77
+ n.stopPropagation(), !(_ && n.detail >= 2) && (st && U(), A == null || A(t), v == null || v(t));
78
78
  },
79
79
  _ ? 300 : 0
80
- ), V = T && (s == null ? void 0 : s.id) === T, Y = Z.count(w) > 0, { enrichedChildren: R, childrenIds: dt } = C(() => {
80
+ ), V = T && (a == null ? void 0 : a.id) === T, Y = Z.count(w) > 0, { enrichedChildren: R, childrenIds: dt } = C(() => {
81
81
  const n = Kt(w, { parentId: t, level: r + 1 });
82
82
  return {
83
83
  enrichedChildren: n,
@@ -100,29 +100,29 @@ const Ut = ({ isSorting: t, wasDragging: y }) => !(t || y), Vt = At(
100
100
  });
101
101
  Nt(() => {
102
102
  if (Z.count(R) !== 0) {
103
- if (a || V) {
104
- c == null || c(t);
103
+ if (s || V) {
104
+ i == null || i(t);
105
105
  return;
106
106
  }
107
- d ? L == null || L({ id: t, children: R }) : c == null || c(t);
107
+ d ? L == null || L({ id: t, children: R }) : i == null || i(t);
108
108
  }
109
- }, [a, d, V, R, t]);
109
+ }, [s, d, V, R, t]);
110
110
  const gt = C(
111
111
  () => O([
112
112
  Ft,
113
- !a && !l && "active:tw-bg-box-neutral-pressed",
114
- "tw-outline-none tw-ring-inset tw-group tw-px-2.5 tw-no-underline tw-leading-5 tw-h-10",
113
+ "tw-transition-colors tw-outline-none tw-ring-inset tw-group tw-px-2.5 tw-no-underline tw-leading-5 tw-h-10",
114
+ !s && !l && "active:tw-bg-box-neutral-pressed",
115
115
  l && !(o != null && o.y) ? "tw-font-medium tw-bg-box-neutral-strong tw-text-box-neutral-strong-inverse hover:tw-bg-box-neutral-strong-hover" : "hover:tw-bg-box-neutral tw-text-text",
116
116
  o != null && o.y ? "tw-bg-box-neutral-strong-inverse tw-text-text tw-font-normal" : ""
117
117
  ]),
118
- [a, l, o == null ? void 0 : o.y]
118
+ [s, l, o == null ? void 0 : o.y]
119
119
  ), ht = O([
120
- "tw-flex tw-items-center tw-leading-5 tw-width-full",
121
- a ? "tw-border-dashed tw-rounded-sm tw-border-2 tw-pr-0 tw-h-12" : "tw-h-10",
122
- a && (f ? "tw-border-box-selected-strong tw-bg-box-selected-hover" : "tw-bg-box-negative-hover tw-border-box-negative-strong-hover")
123
- ]), xt = e != null && e.depth ? e.depth * j : void 0, Dt = a ? 0 : r * j, It = {
120
+ "tw-transition-colors tw-flex tw-items-center tw-leading-5 tw-width-full",
121
+ s ? "tw-border-dashed tw-rounded-sm tw-border-2 tw-pr-0 tw-h-12" : "tw-h-10",
122
+ s && (f ? "tw-border-box-selected-strong tw-bg-box-selected-hover" : "tw-bg-box-negative-hover tw-border-box-negative-strong-hover")
123
+ ]), xt = e != null && e.depth ? e.depth * j : void 0, Dt = s ? 0 : r * j, It = {
124
124
  paddingLeft: xt ?? Dt
125
- }, yt = !a, Et = d && !a, W = $ && !a, Tt = m !== void 0 && !a, B = !a && (H === void 0 ? Y : H), vt = {
125
+ }, yt = !s, Et = d && !s, W = $ && !s, Tt = m !== void 0 && !s, B = !s && (H === void 0 ? Y : H), vt = {
126
126
  transform: Wt.Transform.toString(o),
127
127
  transition: wt
128
128
  };
@@ -140,7 +140,7 @@ const Ut = ({ isSorting: t, wasDragging: y }) => !(t || y), Vt = At(
140
140
  onClick: lt,
141
141
  className: gt,
142
142
  ref: ft,
143
- "data-test-id": st,
143
+ "data-test-id": at,
144
144
  "aria-selected": l,
145
145
  "aria-expanded": d,
146
146
  "data-has-children": Y,
@@ -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 React, { Children, MouseEvent, memo, useCallback, useMemo } 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 type {\n RegisterNodeChildrenPayload,\n TreeDragEndEvent,\n TreeDragMoveEvent,\n TreeDragStartEvent,\n TreeItemProps,\n} from '@components/Tree/types';\n\nimport { 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 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 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\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 const cleanCurrentType = currentType?.replace(/-\\d+$/, '') || '';\n\n const isWithin =\n over !== null && activeProjection !== null && activeProjection.depth > over.data.current?.level;\n\n const canDropWithin =\n (isWithin && active?.data.current && overAccepts.includes(`${cleanCurrentType}-within`)) ||\n (activeProjection?.isWithinParent && parentAccepts.includes(`${cleanCurrentType}-within`));\n\n const canDrop =\n isActive && active?.data.current && ((overAccepts.includes(currentType) && !isWithin) || canDropWithin);\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?.({ contentComponent, children, id, label, level });\n },\n [children, contentComponent, id, label, level, registerOverlay],\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 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 liClassName = useMemo(\n () =>\n merge([\n FOCUS_VISIBLE_STYLE,\n !isActive && !isSelected && 'active:tw-bg-box-neutral-pressed',\n 'tw-outline-none tw-ring-inset tw-group tw-px-2.5 tw-no-underline tw-leading-5 tw-h-10',\n isSelected && !transform?.y\n ? 'tw-font-medium tw-bg-box-neutral-strong tw-text-box-neutral-strong-inverse hover:tw-bg-box-neutral-strong-hover'\n : 'hover:tw-bg-box-neutral tw-text-text',\n transform?.y ? 'tw-bg-box-neutral-strong-inverse tw-text-text tw-font-normal' : '',\n ]),\n [isActive, isSelected, transform?.y],\n );\n\n const containerClassName = merge([\n 'tw-flex tw-items-center tw-leading-5 tw-width-full',\n isActive ? 'tw-border-dashed tw-rounded-sm tw-border-2 tw-pr-0 tw-h-12' : 'tw-h-10',\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 ]);\n\n const depthPadding = activeProjection?.depth ? activeProjection.depth * INDENTATION_WIDTH : undefined;\n const levelPadding = isActive ? 0 : level * INDENTATION_WIDTH;\n\n const liStyle = {\n paddingLeft: depthPadding ?? levelPadding,\n };\n\n const showContent = !isActive;\n const showChildren = isExpanded && !isActive;\n const showDragHandle = draggable && !isActive;\n const showLabel = label !== undefined && !isActive;\n const showExpandButton = !isActive && (showCaret === undefined ? hasChildren : showCaret);\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n return (\n <li\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 <DragHandle\n {...listeners}\n {...attributes}\n active={isSelected}\n ref={setActivatorNodeRef}\n disabled={!showDragHandle}\n aria-hidden={!showDragHandle}\n className={showDragHandle ? 'tw-visible' : 'tw-invisible tw-pointer-events-none'}\n />\n\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 {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 && contentComponent}\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","ignoreItemDoubleClick","expandOnSelect","dataTestId","active","over","useDndContext","isSelected","isExpanded","projection","useTreeItem","draggable","isActive","activeProjection","overAccepts","_b","_a","_c","parentAccepts","_d","currentType","_e","cleanCurrentType","isWithin","_f","canDropWithin","canDrop","handleItemDragEnd","useCallback","event","handleItemDragStart","handleItemDragMove","useDndMonitor","toggleExpand","handleItemClick","useDebounce","isParentActive","hasChildren","Children","enrichedChildren","childrenIds","useMemo","removeFragmentsAndEnrichChildren","child","attributes","listeners","transform","transition","setDraggableNodeRef","setDroppableNodeRef","setActivatorNodeRef","useSortable","useDeepCompareEffect","liClassName","merge","FOCUS_VISIBLE_STYLE","containerClassName","depthPadding","INDENTATION_WIDTH","levelPadding","liStyle","showContent","showChildren","showDragHandle","showLabel","showExpandButton","style","CSS","React","noop","DragHandle","ExpandButton"],"mappings":"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"}
1
+ {"version":3,"file":"TreeItem.es.js","sources":["../../../../src/components/Tree/TreeItem/TreeItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport React, { Children, MouseEvent, memo, useCallback, useMemo } 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 type {\n RegisterNodeChildrenPayload,\n TreeDragEndEvent,\n TreeDragMoveEvent,\n TreeDragStartEvent,\n TreeItemProps,\n} from '@components/Tree/types';\n\nimport { 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 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 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\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 const cleanCurrentType = currentType?.replace(/-\\d+$/, '') || '';\n\n const isWithin =\n over !== null && activeProjection !== null && activeProjection.depth > over.data.current?.level;\n\n const canDropWithin =\n (isWithin && active?.data.current && overAccepts.includes(`${cleanCurrentType}-within`)) ||\n (activeProjection?.isWithinParent && parentAccepts.includes(`${cleanCurrentType}-within`));\n\n const canDrop =\n isActive && active?.data.current && ((overAccepts.includes(currentType) && !isWithin) || canDropWithin);\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?.({ contentComponent, children, id, label, level });\n },\n [children, contentComponent, id, label, level, registerOverlay],\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 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 liClassName = useMemo(\n () =>\n merge([\n FOCUS_VISIBLE_STYLE,\n 'tw-transition-colors tw-outline-none tw-ring-inset tw-group tw-px-2.5 tw-no-underline tw-leading-5 tw-h-10',\n !isActive && !isSelected && 'active:tw-bg-box-neutral-pressed',\n isSelected && !transform?.y\n ? 'tw-font-medium tw-bg-box-neutral-strong tw-text-box-neutral-strong-inverse hover:tw-bg-box-neutral-strong-hover'\n : 'hover:tw-bg-box-neutral tw-text-text',\n transform?.y ? 'tw-bg-box-neutral-strong-inverse tw-text-text tw-font-normal' : '',\n ]),\n [isActive, isSelected, transform?.y],\n );\n\n const containerClassName = merge([\n 'tw-transition-colors tw-flex tw-items-center tw-leading-5 tw-width-full',\n isActive ? 'tw-border-dashed tw-rounded-sm tw-border-2 tw-pr-0 tw-h-12' : 'tw-h-10',\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 ]);\n\n const depthPadding = activeProjection?.depth ? activeProjection.depth * INDENTATION_WIDTH : undefined;\n const levelPadding = isActive ? 0 : level * INDENTATION_WIDTH;\n\n const liStyle = {\n paddingLeft: depthPadding ?? levelPadding,\n };\n\n const showContent = !isActive;\n const showChildren = isExpanded && !isActive;\n const showDragHandle = draggable && !isActive;\n const showLabel = label !== undefined && !isActive;\n const showExpandButton = !isActive && (showCaret === undefined ? hasChildren : showCaret);\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n return (\n <li\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 <DragHandle\n {...listeners}\n {...attributes}\n active={isSelected}\n ref={setActivatorNodeRef}\n disabled={!showDragHandle}\n aria-hidden={!showDragHandle}\n className={showDragHandle ? 'tw-visible' : 'tw-invisible tw-pointer-events-none'}\n />\n\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 {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 && contentComponent}\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","ignoreItemDoubleClick","expandOnSelect","dataTestId","active","over","useDndContext","isSelected","isExpanded","projection","useTreeItem","draggable","isActive","activeProjection","overAccepts","_b","_a","_c","parentAccepts","_d","currentType","_e","cleanCurrentType","isWithin","_f","canDropWithin","canDrop","handleItemDragEnd","useCallback","event","handleItemDragStart","handleItemDragMove","useDndMonitor","toggleExpand","handleItemClick","useDebounce","isParentActive","hasChildren","Children","enrichedChildren","childrenIds","useMemo","removeFragmentsAndEnrichChildren","child","attributes","listeners","transform","transition","setDraggableNodeRef","setDroppableNodeRef","setActivatorNodeRef","useSortable","useDeepCompareEffect","liClassName","merge","FOCUS_VISIBLE_STYLE","containerClassName","depthPadding","INDENTATION_WIDTH","levelPadding","liStyle","showContent","showChildren","showDragHandle","showLabel","showExpandButton","style","CSS","React","noop","DragHandle","ExpandButton"],"mappings":"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"}