@frontify/fondue 13.4.3 → 13.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/components/ActionMenu/Aria/AriaMenuItem.es.js.map +1 -1
  2. package/dist/components/Breadcrumbs/BreadcrumbItem.es.js +1 -2
  3. package/dist/components/Breadcrumbs/BreadcrumbItem.es.js.map +1 -1
  4. package/dist/components/Breadcrumbs/CurrentBreadcrumbItem.es.js +9 -9
  5. package/dist/components/Breadcrumbs/CurrentBreadcrumbItem.es.js.map +1 -1
  6. package/dist/components/Checkbox/Checkbox.es.js +81 -82
  7. package/dist/components/Checkbox/Checkbox.es.js.map +1 -1
  8. package/dist/components/Checklist/Checklist.es.js.map +1 -1
  9. package/dist/components/EditableText/EditableText.es.js +1 -1
  10. package/dist/components/EditableText/EditableText.es.js.map +1 -1
  11. package/dist/components/FilterableMultiSelect/FilterableMultiSelect.es.js.map +1 -1
  12. package/dist/components/LegacyTooltip/LegacyTooltip.es.js.map +1 -1
  13. package/dist/components/Menu/Menu.es.js.map +1 -1
  14. package/dist/components/Menu/useMenuKeyboardNavigation.es.js.map +1 -1
  15. package/dist/components/MultiSelect/MultiSelect.es.js.map +1 -1
  16. package/dist/components/OrderableList/OrderableList.es.js.map +1 -1
  17. package/dist/components/TextInput/TextInput.es.js.map +1 -1
  18. package/dist/components/Tree/Tree.es.js.map +1 -1
  19. package/dist/components/Tree/TreeItem/TreeItem.es.js +93 -93
  20. package/dist/components/Tree/TreeItem/TreeItem.es.js.map +1 -1
  21. package/dist/components/Tree/TreeItem/TreeItemMultiselect.es.js.map +1 -1
  22. package/dist/components/Tree/utils/useDeepCompareEffect.es.js.map +1 -1
  23. package/dist/hooks/useDropdownAutoHeight.es.js.map +1 -1
  24. package/dist/index.cjs.js +2 -2
  25. package/dist/index.cjs.js.map +1 -1
  26. package/dist/index.umd.js +2 -2
  27. package/dist/index.umd.js.map +1 -1
  28. package/dist/packages/components/style.css +1 -1
  29. package/dist/packages/locales/de-CH.d.ts +2 -0
  30. package/dist/packages/locales/de-CH.js +36 -0
  31. package/dist/packages/locales/de-CH.js.map +1 -0
  32. package/dist/packages/locales/de-DE.d.ts +2 -0
  33. package/dist/packages/locales/de-DE.js +36 -0
  34. package/dist/packages/locales/de-DE.js.map +1 -0
  35. package/dist/packages/locales/en-US.d.ts +31 -0
  36. package/dist/packages/locales/en-US.js +36 -0
  37. package/dist/packages/locales/en-US.js.map +1 -0
  38. package/dist/packages/locales/es-ES.d.ts +2 -0
  39. package/dist/packages/locales/es-ES.js +36 -0
  40. package/dist/packages/locales/es-ES.js.map +1 -0
  41. package/dist/packages/locales/fr-CH.d.ts +2 -0
  42. package/dist/packages/locales/fr-CH.js +36 -0
  43. package/dist/packages/locales/fr-CH.js.map +1 -0
  44. package/dist/packages/locales/fr-FR.d.ts +2 -0
  45. package/dist/packages/locales/fr-FR.js +36 -0
  46. package/dist/packages/locales/fr-FR.js.map +1 -0
  47. package/dist/packages/locales/index.d.ts +12 -0
  48. package/dist/packages/locales/index.js +25 -0
  49. package/dist/packages/locales/index.js.map +1 -0
  50. package/dist/packages/locales/it-CH.d.ts +2 -0
  51. package/dist/packages/locales/it-CH.js +36 -0
  52. package/dist/packages/locales/it-CH.js.map +1 -0
  53. package/dist/packages/locales/it-IT.d.ts +2 -0
  54. package/dist/packages/locales/it-IT.js +36 -0
  55. package/dist/packages/locales/it-IT.js.map +1 -0
  56. package/dist/packages/locales/nl-NL.d.ts +2 -0
  57. package/dist/packages/locales/nl-NL.js +36 -0
  58. package/dist/packages/locales/nl-NL.js.map +1 -0
  59. package/dist/packages/locales/pl-PL.d.ts +2 -0
  60. package/dist/packages/locales/pl-PL.js +36 -0
  61. package/dist/packages/locales/pl-PL.js.map +1 -0
  62. package/dist/packages/locales/pt-PT.d.ts +2 -0
  63. package/dist/packages/locales/pt-PT.js +36 -0
  64. package/dist/packages/locales/pt-PT.js.map +1 -0
  65. package/dist/packages/locales/types.d.ts +9 -0
  66. package/dist/packages/rte/style.css +1 -1
  67. package/dist/utilities/useForwardedRef.es.js.map +1 -1
  68. package/package.json +15 -6
@@ -1,36 +1,36 @@
1
- import { jsx as N, jsxs as as } from "react/jsx-runtime";
2
- import { memo as rs, forwardRef as os, useRef as ns, useEffect as ds, useCallback as v, Children as gt, useMemo as z, createElement as ls } from "react";
3
- import { useDndContext as ps, useDndMonitor as us } from "@dnd-kit/core";
4
- import { useSortable as is } from "@dnd-kit/sortable";
5
- import { CSS as cs } from "@dnd-kit/utilities";
6
- import { noop as ms } from "lodash-es";
7
- import { TreeItemColorsClassMap as fs, TreeItemBorderRadiusClassMap as L, TreeItemSpacingClassMap as ws, TreeItemBorderClassMap as Tt, TreeItemBorderStyleClassMap as hs, TreeItemShadowClassMap as bs } from "../types.es.js";
1
+ import { jsx as b, jsxs as as } from "react/jsx-runtime";
2
+ import { useDndContext as rs, useDndMonitor as os } from "@dnd-kit/core";
3
+ import { useSortable as ns } from "@dnd-kit/sortable";
4
+ import { CSS as ds } from "@dnd-kit/utilities";
5
+ import { noop as ls } from "lodash-es";
6
+ import { memo as ps, forwardRef as us, useRef as is, useEffect as cs, useCallback as v, Children as gt, useMemo as z } from "react";
7
+ import { TreeItemColorsClassMap as ms, TreeItemBorderRadiusClassMap as L, TreeItemSpacingClassMap as fs, TreeItemBorderClassMap as Tt, TreeItemBorderStyleClassMap as ws, TreeItemShadowClassMap as hs } from "../types.es.js";
8
8
  import { useDebounce as St } from "../../../hooks/useDebounce.es.js";
9
- import { PARENT_FOCUS_VISIBLE_STYLE as ys, FOCUS_VISIBLE_STYLE as Is } from "../../../utilities/focusStyle.es.js";
10
- import { merge as b } from "../../../utilities/merge.es.js";
11
- import { DragHandle as gs } from "./DragHandle.es.js";
12
- import { ExpandButton as Ts } from "./ExpandButton.es.js";
13
- import { useTreeItem as Ss } from "./useTreeItem.es.js";
14
- import { removeFragmentsAndEnrichChildren as Ds } from "../utils/removeFragmentsAndEnrichChildren.es.js";
15
- import { useDeepCompareEffect as Ns } from "../utils/useDeepCompareEffect.es.js";
16
- import { INDENTATION_WIDTH as Dt, EXPAND_ONHOVER_DELAY as xs } from "../helpers/constants.es.js";
17
- const As = ({ isSorting: a, wasDragging: M }) => !(a || M), Es = rs(
18
- os(
9
+ import { PARENT_FOCUS_VISIBLE_STYLE as bs, FOCUS_VISIBLE_STYLE as ys } from "../../../utilities/focusStyle.es.js";
10
+ import { merge as y } from "../../../utilities/merge.es.js";
11
+ import { DragHandle as Is } from "./DragHandle.es.js";
12
+ import { ExpandButton as gs } from "./ExpandButton.es.js";
13
+ import { useTreeItem as Ts } from "./useTreeItem.es.js";
14
+ import { removeFragmentsAndEnrichChildren as Ss } from "../utils/removeFragmentsAndEnrichChildren.es.js";
15
+ import { useDeepCompareEffect as Ds } from "../utils/useDeepCompareEffect.es.js";
16
+ import { INDENTATION_WIDTH as Dt, EXPAND_ONHOVER_DELAY as Ns } from "../helpers/constants.es.js";
17
+ const xs = ({ isSorting: a, wasDragging: M }) => !(a || M), As = ps(
18
+ us(
19
19
  ({
20
20
  id: a,
21
21
  type: M,
22
- label: y,
22
+ label: I,
23
23
  onDrop: W,
24
24
  accepts: Nt,
25
25
  showCaret: U,
26
- children: I,
26
+ children: g,
27
27
  parentId: _,
28
28
  level: u = 0,
29
- contentComponent: g,
29
+ contentComponent: T,
30
30
  onClick: H,
31
- onSelect: k,
31
+ onSelect: R,
32
32
  onExpand: m,
33
- onShrink: R,
33
+ onShrink: k,
34
34
  registerOverlay: x,
35
35
  registerNodeChildren: F,
36
36
  unregisterNodeChildren: d,
@@ -42,15 +42,15 @@ const As = ({ isSorting: a, wasDragging: M }) => !(a || M), Es = rs(
42
42
  itemStyle: X,
43
43
  ignoreItemDoubleClick: q = !1,
44
44
  expandOnSelect: At = !1,
45
- "data-test-id": Et = "fondue-tree-item"
45
+ "data-test-id": Bt = "fondue-tree-item"
46
46
  }, f) => {
47
47
  var rt, ot, nt, dt, lt, pt, ut, it, ct, mt, ft, wt, ht, bt, yt;
48
- const { active: o, over: E } = ps(), { isSelected: p, isExpanded: c, projection: s } = Ss(a), G = ns(), e = (o == null ? void 0 : o.id) === a, t = e && s !== null && s !== void 0 ? s : null, Bt = typeof ((ot = (rt = E == null ? void 0 : E.data) == null ? void 0 : rt.current) == null ? void 0 : ot.accepts) == "string" ? (nt = E.data.current.accepts) == null ? void 0 : nt.split(", ") : [], Ct = typeof (t == null ? void 0 : t.accepts) == "string" ? (dt = t.accepts) == null ? void 0 : dt.split(", ") : [], T = ((lt = o == null ? void 0 : o.data.current) == null ? void 0 : lt.type) || "", S = ((pt = s == null ? void 0 : s.previousNode) == null ? void 0 : pt.depth) !== void 0 && (s == null ? void 0 : s.depth) > ((ut = s == null ? void 0 : s.previousNode) == null ? void 0 : ut.depth), vt = S && s && s.depth - 1 === ((it = s == null ? void 0 : s.previousNode) == null ? void 0 : it.depth), Y = S && ((ct = s == null ? void 0 : s.previousNode) == null ? void 0 : ct.accepts) !== void 0 && (((mt = s == null ? void 0 : s.previousNode) == null ? void 0 : mt.accepts.includes(`${T}-deeper`)) || ((ft = s == null ? void 0 : s.previousNode) == null ? void 0 : ft.accepts.includes(`${T}-within`))), Lt = e && vt && ((wt = t == null ? void 0 : t.previousNode) == null ? void 0 : wt.accepts) !== void 0 && ((ht = t == null ? void 0 : t.previousNode) == null ? void 0 : ht.accepts.includes(`${T}-within`)) || (t == null ? void 0 : t.isWithinParent) && Ct.includes(`${T}-within`), D = e && (o == null ? void 0 : o.data.current) && (Bt.includes(T) && !S || Lt), J = St((r) => {
48
+ const { active: o, over: B } = rs(), { isSelected: p, isExpanded: c, projection: s } = Ts(a), G = is(), e = (o == null ? void 0 : o.id) === a, t = e && s !== null && s !== void 0 ? s : null, Ct = typeof ((ot = (rt = B == null ? void 0 : B.data) == null ? void 0 : rt.current) == null ? void 0 : ot.accepts) == "string" ? (nt = B.data.current.accepts) == null ? void 0 : nt.split(", ") : [], Et = typeof (t == null ? void 0 : t.accepts) == "string" ? (dt = t.accepts) == null ? void 0 : dt.split(", ") : [], S = ((lt = o == null ? void 0 : o.data.current) == null ? void 0 : lt.type) || "", D = ((pt = s == null ? void 0 : s.previousNode) == null ? void 0 : pt.depth) !== void 0 && (s == null ? void 0 : s.depth) > ((ut = s == null ? void 0 : s.previousNode) == null ? void 0 : ut.depth), vt = D && s && s.depth - 1 === ((it = s == null ? void 0 : s.previousNode) == null ? void 0 : it.depth), Y = D && ((ct = s == null ? void 0 : s.previousNode) == null ? void 0 : ct.accepts) !== void 0 && (((mt = s == null ? void 0 : s.previousNode) == null ? void 0 : mt.accepts.includes(`${S}-deeper`)) || ((ft = s == null ? void 0 : s.previousNode) == null ? void 0 : ft.accepts.includes(`${S}-within`))), Lt = e && vt && ((wt = t == null ? void 0 : t.previousNode) == null ? void 0 : wt.accepts) !== void 0 && ((ht = t == null ? void 0 : t.previousNode) == null ? void 0 : ht.accepts.includes(`${S}-within`)) || (t == null ? void 0 : t.isWithinParent) && Et.includes(`${S}-within`), N = e && (o == null ? void 0 : o.data.current) && (Ct.includes(S) && !D || Lt), J = St((r) => {
49
49
  G.current === r && (m == null || m(r));
50
- }, xs);
51
- ds(() => {
50
+ }, Ns);
51
+ cs(() => {
52
52
  var r, l, h;
53
- e && (G.current = S ? (r = t == null ? void 0 : t.previousNode) == null ? void 0 : r.id : null), e && Y && (t != null && t.parentId) && t.previousNode && t.parentId === t.previousNode.id && t.parentId !== ((h = (l = o == null ? void 0 : o.data) == null ? void 0 : l.current) == null ? void 0 : h.parentId) && J(t == null ? void 0 : t.parentId);
53
+ e && (G.current = D ? (r = t == null ? void 0 : t.previousNode) == null ? void 0 : r.id : null), e && Y && (t != null && t.parentId) && t.previousNode && t.parentId === t.previousNode.id && t.parentId !== ((h = (l = o == null ? void 0 : o.data) == null ? void 0 : l.current) == null ? void 0 : h.parentId) && J(t == null ? void 0 : t.parentId);
54
54
  }, [
55
55
  o == null ? void 0 : o.data,
56
56
  t == null ? void 0 : t.parentId,
@@ -58,86 +58,86 @@ const As = ({ isSorting: a, wasDragging: M }) => !(a || M), Es = rs(
58
58
  J,
59
59
  e,
60
60
  Y,
61
- S
61
+ D
62
62
  ]);
63
63
  const Mt = v(
64
64
  (r) => {
65
65
  var It;
66
66
  const { over: l, active: h } = r;
67
- !e || !t || h.id === (l == null ? void 0 : l.id) && (t == null ? void 0 : t.depth) === ((It = h.data.current) == null ? void 0 : It.level) || e && l && D && W && W({
67
+ !e || !t || h.id === (l == null ? void 0 : l.id) && (t == null ? void 0 : t.depth) === ((It = h.data.current) == null ? void 0 : It.level) || e && l && N && W && W({
68
68
  id: h.id,
69
69
  parentId: t.parentId,
70
70
  sort: t.position,
71
- contentComponent: g,
71
+ contentComponent: T,
72
72
  parentType: t.type
73
73
  });
74
74
  },
75
- [e, t, D, W, g]
75
+ [e, t, N, W, T]
76
76
  ), Wt = v(
77
77
  (r) => {
78
78
  r.active.id === a && (x == null || x({
79
- contentComponent: g,
80
- children: I,
79
+ contentComponent: T,
80
+ children: g,
81
81
  id: a,
82
- label: y,
82
+ label: I,
83
83
  level: u,
84
84
  dragHandlerPosition: i,
85
85
  showContentWhileDragging: A
86
86
  }));
87
87
  },
88
88
  [
89
- I,
90
89
  g,
90
+ T,
91
91
  i,
92
92
  a,
93
- y,
93
+ I,
94
94
  u,
95
95
  x,
96
96
  A
97
97
  ]
98
98
  ), _t = v(
99
99
  (r) => {
100
- r.active.id === a && document.body.style.setProperty("cursor", D ? "grabbing" : "no-drop");
100
+ r.active.id === a && document.body.style.setProperty("cursor", N ? "grabbing" : "no-drop");
101
101
  },
102
- [D, a]
102
+ [N, a]
103
103
  );
104
- us({
104
+ os({
105
105
  onDragEnd: Mt,
106
106
  onDragStart: Wt,
107
107
  onDragMove: _t
108
108
  });
109
109
  const Q = v(
110
110
  (r) => {
111
- r == null || r.stopPropagation(), c ? R && R(a) : m && m(a);
111
+ r == null || r.stopPropagation(), c ? k && k(a) : m && m(a);
112
112
  },
113
- [a, c, m, R]
113
+ [a, c, m, k]
114
114
  ), Ht = St(
115
115
  (r) => {
116
- r.stopPropagation(), !(q && r.detail >= 2) && (At && Q(), k == null || k(a), H == null || H(a));
116
+ r.stopPropagation(), !(q && r.detail >= 2) && (At && Q(), R == null || R(a), H == null || H(a));
117
117
  },
118
118
  q ? 300 : 0
119
- ), Z = _ ? (o == null ? void 0 : o.id) === _ : !1, P = gt.count(I) > 0, { enrichedChildren: $, childrenIds: kt } = z(() => {
120
- const r = Ds(I, { parentId: a, level: u + 1 });
119
+ ), Z = _ ? (o == null ? void 0 : o.id) === _ : !1, P = gt.count(g) > 0, { enrichedChildren: $, childrenIds: Rt } = z(() => {
120
+ const r = Ss(g, { parentId: a, level: u + 1 });
121
121
  return {
122
122
  enrichedChildren: r,
123
123
  childrenIds: r.map((l) => l.props.id)
124
124
  };
125
- }, [I, a, u]), {
126
- attributes: Rt,
125
+ }, [g, a, u]), {
126
+ attributes: kt,
127
127
  listeners: Ft,
128
- transform: B,
128
+ transform: C,
129
129
  transition: Yt,
130
130
  setDraggableNodeRef: $t,
131
131
  setDroppableNodeRef: Vt,
132
132
  setActivatorNodeRef: zt
133
- } = is({
133
+ } = ns({
134
134
  id: a,
135
135
  disabled: !K,
136
136
  data: { type: M, accepts: Nt, parentId: _, level: u },
137
- animateLayoutChanges: As,
137
+ animateLayoutChanges: xs,
138
138
  transition: null
139
139
  });
140
- Ns(() => {
140
+ Ds(() => {
141
141
  if (gt.count($) === 0) {
142
142
  d == null || d(a);
143
143
  return;
@@ -157,47 +157,47 @@ const As = ({ isSorting: a, wasDragging: M }) => !(a || M), Es = rs(
157
157
  borderStyle: "none",
158
158
  activeColorStyle: "neutral",
159
159
  ...X
160
- }), [X]), w = fs[n.activeColorStyle ?? "neutral"], { liClassName: Ut, backgroundClassName: Kt } = z(() => ({
161
- liClassName: b([
162
- Is,
160
+ }), [X]), w = ms[n.activeColorStyle ?? "neutral"], { liClassName: Ut, backgroundClassName: Kt } = z(() => ({
161
+ liClassName: y([
162
+ ys,
163
163
  "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",
164
164
  !e && p ? w.selectedTextColor : w.textColor,
165
- ws[n.spacingY ?? "none"]
165
+ fs[n.spacingY ?? "none"]
166
166
  ]),
167
- backgroundClassName: b([
167
+ backgroundClassName: y([
168
168
  "tw-block tw-absolute tw-inset-0 tw-transition-colors -tw-z-10",
169
169
  n.borderWidth !== "none" ? L[n.borderRadius ?? "small"] : "",
170
170
  !e && (!p || n.activeColorStyle !== "neutral") && w.pressedBackgroundColor,
171
171
  !e && p ? w.selectedBackgroundColor : w.backgroundColor,
172
- p && ys
172
+ p && bs
173
173
  ])
174
- }), [e, p, n, w]), Ot = A ? !0 : !e, Xt = b([
174
+ }), [e, p, n, w]), Ot = A ? !0 : !e, Xt = y([
175
175
  "tw-max-w-full tw-grow tw-overflow-hidden",
176
176
  e && A ? "tw-opacity-75 tw-blur-sm tw-grayscale" : ""
177
- ]), qt = c && !e, j = K && !e, Gt = y !== void 0 && !e, C = !e && O && (U === void 0 ? P : U);
177
+ ]), qt = c && !e, j = K && !e, Gt = I !== void 0 && !e, E = !e && O && (U === void 0 ? P : U);
178
178
  let V = "";
179
- !e && !c && C && Y && ((bt = s == null ? void 0 : s.previousNode) == null ? void 0 : bt.id) === a && (s == null ? void 0 : s.depth) > ((yt = s == null ? void 0 : s.previousNode) == null ? void 0 : yt.depth) && (V = b([
179
+ !e && !c && E && Y && ((bt = s == null ? void 0 : s.previousNode) == null ? void 0 : bt.id) === a && (s == null ? void 0 : s.depth) > ((yt = s == null ? void 0 : s.previousNode) == null ? void 0 : yt.depth) && (V = y([
180
180
  "tw-border-solid tw-border-box-selected-strong",
181
181
  L[n.borderRadius ?? "small"],
182
182
  Tt.small
183
183
  ]));
184
- const Jt = n.borderWidth !== "none" && V === "" ? b([
184
+ const Jt = n.borderWidth !== "none" && V === "" ? y([
185
185
  Tt[n.borderWidth ?? "none"],
186
186
  L[n.borderRadius ?? "small"],
187
- hs[n.borderStyle ?? "none"]
188
- ]) : "", Qt = n.contentHight === "single-line" ? "tw-h-10" : "tw-h-fit", Zt = n.contentHight === "single-line" ? "tw-h-12" : "tw-h-fit", Pt = b([
187
+ ws[n.borderStyle ?? "none"]
188
+ ]) : "", Qt = n.contentHight === "single-line" ? "tw-h-10" : "tw-h-fit", Zt = n.contentHight === "single-line" ? "tw-h-12" : "tw-h-fit", Pt = y([
189
189
  "tw-relative tw-z-0 tw-transition-colors tw-flex tw-items-center tw-leading-5 tw-width-fit tw-justify-between tw-group",
190
- bs[n.shadow ?? "none"],
190
+ hs[n.shadow ?? "none"],
191
191
  e ? "tw-border-dashed tw-border-2 tw-pr-0" : Jt,
192
192
  e && L[n.borderRadius ?? "small"],
193
193
  e ? Zt : Qt,
194
- e && (D ? "tw-border-box-selected-strong tw-bg-box-selected-hover" : "tw-bg-box-negative-hover tw-border-box-negative-strong-hover"),
194
+ e && (N ? "tw-border-box-selected-strong tw-bg-box-selected-hover" : "tw-bg-box-negative-hover tw-border-box-negative-strong-hover"),
195
195
  V
196
196
  ]), tt = t != null && t.depth ? t.depth * Dt : void 0, st = e ? 0 : u * Dt, jt = { paddingLeft: tt ?? st }, ts = n.borderWidth !== "none" ? {} : { marginLeft: -1 * (tt ?? st) }, ss = {
197
- transform: cs.Transform.toString(B),
197
+ transform: ds.Transform.toString(C),
198
198
  transition: Yt
199
- }, et = { ...Ft, ...Rt }, at = i !== "none" ? /* @__PURE__ */ N(
200
- gs,
199
+ }, et = { ...Ft, ...kt }, at = i !== "none" ? /* @__PURE__ */ b(
200
+ Is,
201
201
  {
202
202
  ...i !== "none" ? et : {},
203
203
  active: p,
@@ -208,53 +208,53 @@ const As = ({ isSorting: a, wasDragging: M }) => !(a || M), Es = rs(
208
208
  activeColorStyle: n.activeColorStyle ?? "neutral"
209
209
  }
210
210
  ) : null, es = i === "none" ? { ...et } : {};
211
- return /* @__PURE__ */ ls(
211
+ return /* @__PURE__ */ b(
212
212
  "li",
213
213
  {
214
214
  ...es,
215
215
  id: a,
216
- key: a,
217
216
  tabIndex: 0,
218
217
  role: "treeitem",
219
218
  style: jt,
220
- onKeyDown: ms,
221
- "aria-label": y,
219
+ onKeyDown: ls,
220
+ "aria-label": I,
222
221
  "aria-level": u + 1,
223
222
  onClick: Ht,
224
223
  className: Ut,
225
224
  ref: (r) => {
226
225
  Vt(r), typeof f == "function" ? f(r) : f != null && f.current && (f.current = r);
227
226
  },
228
- "data-test-id": Et,
227
+ "data-test-id": Bt,
229
228
  "aria-selected": p,
230
229
  "aria-expanded": c,
231
230
  "data-has-children": P,
232
- "aria-owns": kt.join(" ")
231
+ "aria-owns": Rt.join(" "),
232
+ children: /* @__PURE__ */ as("div", { ref: $t, className: Pt, style: ss, children: [
233
+ /* @__PURE__ */ b("span", { className: Kt, style: ts, "aria-hidden": !0 }),
234
+ i === "left" && at,
235
+ O && /* @__PURE__ */ b(
236
+ gs,
237
+ {
238
+ active: C != null && C.y ? !1 : p,
239
+ onClick: Q,
240
+ expanded: qt,
241
+ disabled: !E,
242
+ "aria-hidden": !E,
243
+ className: E ? "tw-visible" : "tw-invisible tw-pointer-events-none"
244
+ }
245
+ ),
246
+ Gt && /* @__PURE__ */ b("span", { className: "first:tw-ml-3.5 tw-w-full tw-h-full tw-flex tw-items-center", children: I }),
247
+ Ot && /* @__PURE__ */ b("div", { className: Xt, children: T }),
248
+ i === "right" && at
249
+ ] })
233
250
  },
234
- /* @__PURE__ */ as("div", { ref: $t, className: Pt, style: ss, children: [
235
- /* @__PURE__ */ N("span", { className: Kt, style: ts, "aria-hidden": !0 }),
236
- i === "left" && at,
237
- O && /* @__PURE__ */ N(
238
- Ts,
239
- {
240
- active: B != null && B.y ? !1 : p,
241
- onClick: Q,
242
- expanded: qt,
243
- disabled: !C,
244
- "aria-hidden": !C,
245
- className: C ? "tw-visible" : "tw-invisible tw-pointer-events-none"
246
- }
247
- ),
248
- Gt && /* @__PURE__ */ N("span", { className: "first:tw-ml-3.5 tw-w-full tw-h-full tw-flex tw-items-center", children: y }),
249
- Ot && /* @__PURE__ */ N("div", { className: Xt, children: g }),
250
- i === "right" && at
251
- ] })
251
+ a
252
252
  );
253
253
  }
254
254
  )
255
255
  );
256
- Es.displayName = "FondueTreeItem";
256
+ As.displayName = "FondueTreeItem";
257
257
  export {
258
- Es as TreeItem
258
+ As as TreeItem
259
259
  };
260
260
  //# sourceMappingURL=TreeItem.es.js.map
@@ -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 { useDndContext, useDndMonitor } from '@dnd-kit/core';\nimport { type AnimateLayoutChanges, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { noop } from 'lodash-es';\nimport { Children, type MouseEvent, memo, useCallback, useEffect, useMemo, useRef, forwardRef } from 'react';\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 type TreeItemStyling,\n} from '@components/Tree/types';\nimport { useDebounce } from '@hooks/useDebounce';\nimport { FOCUS_VISIBLE_STYLE, PARENT_FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\nimport { EXPAND_ONHOVER_DELAY, INDENTATION_WIDTH } from '../helpers';\nimport { removeFragmentsAndEnrichChildren, useDeepCompareEffect } from '../utils';\n\nimport { DragHandle } from './DragHandle';\nimport { ExpandButton } from './ExpandButton';\nimport { type Overlay } from './TreeItemOverlay';\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 /** 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 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 forwardRef(\n (\n {\n id,\n type,\n label,\n onDrop,\n accepts,\n showCaret,\n children,\n parentId,\n level = 0,\n contentComponent,\n onClick,\n onSelect,\n onExpand,\n onShrink,\n registerOverlay,\n registerNodeChildren,\n unregisterNodeChildren,\n draggable = 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 treeItemRef,\n ) => {\n const { active, over } = useDndContext();\n const { isSelected, isExpanded, projection } = useTreeItem(id);\n const expandDebounced = useRef<Nullable<string> | undefined>();\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 && 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 if (isExpanded) {\n if (onShrink) {\n onShrink(id);\n }\n } else {\n if (onExpand) {\n onExpand(id);\n }\n }\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 : false;\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 isSelected && PARENT_FOCUS_VISIBLE_STYLE,\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 tw-group',\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={(node) => {\n setDroppableNodeRef(node);\n if (typeof treeItemRef === 'function') {\n treeItemRef(node);\n } else if (treeItemRef?.current) {\n treeItemRef.current = node;\n }\n }}\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 />\n {dragHandlerPosition === 'left' && dragHandler}\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 {showLabel && (\n <span className=\"first:tw-ml-3.5 tw-w-full tw-h-full tw-flex tw-items-center\">{label}</span>\n )}\n {showContent && <div className={wrapperContentClassName}>{contentComponent}</div>}\n {dragHandlerPosition === 'right' && dragHandler}\n </div>\n </li>\n );\n },\n ),\n);\n\nTreeItem.displayName = 'FondueTreeItem';\n"],"names":["animateLayoutChanges","isSorting","wasDragging","TreeItem","memo","forwardRef","id","type","label","onDrop","accepts","showCaret","children","parentId","level","contentComponent","onClick","onSelect","onExpand","onShrink","registerOverlay","registerNodeChildren","unregisterNodeChildren","draggable","expandable","showDragHandlerOnHoverOnly","dragHandlerPosition","showContentWhileDragging","itemStyle","ignoreItemDoubleClick","expandOnSelect","dataTestId","treeItemRef","active","over","useDndContext","isSelected","isExpanded","projection","useTreeItem","expandDebounced","useRef","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","PARENT_FOCUS_VISIBLE_STYLE","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","node","ExpandButton"],"mappings":";;;;;;;;;;;;;;;;AAkCA,MAAMA,KAA6C,CAAC,EAAE,WAAAC,GAAW,aAAAC,QAC7D,EAAAD,KAAaC,IAqBJC,KAAWC;AAAA,EACpBC;AAAA,IACI,CACI;AAAA,MACI,IAAAC;AAAA,MACA,MAAAC;AAAA,MACA,OAAAC;AAAA,MACA,QAAAC;AAAA,MACA,SAAAC;AAAA,MACA,WAAAC;AAAA,MACA,UAAAC;AAAA,MACA,UAAAC;AAAA,MACA,OAAAC,IAAQ;AAAA,MACR,kBAAAC;AAAA,MACA,SAAAC;AAAA,MACA,UAAAC;AAAA,MACA,UAAAC;AAAA,MACA,UAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,sBAAAC;AAAA,MACA,wBAAAC;AAAA,MACA,WAAAC,IAAY;AAAA,MACZ,YAAAC,IAAa;AAAA,MACb,4BAAAC,KAA6B;AAAA,MAC7B,qBAAAC,IAAsB;AAAA,MACtB,0BAAAC,IAA2B;AAAA,MAC3B,WAAAC;AAAA,MACA,uBAAAC,IAAwB;AAAA,MACxB,gBAAAC,KAAiB;AAAA,MACjB,gBAAgBC,KAAa;AAAA,IAAA,GAEjCC,MACC;;AACD,YAAM,EAAE,QAAAC,GAAQ,MAAAC,EAAA,IAASC,GAAA,GACnB,EAAE,YAAAC,GAAY,YAAAC,GAAY,YAAAC,EAAA,IAAeC,GAAYjC,CAAE,GACvDkC,IAAkBC,GAAA,GAElBC,KAAWT,KAAA,gBAAAA,EAAQ,QAAO3B,GAC1BqC,IAAmBD,KAAYJ,MAAe,QAAQA,MAAe,SAAYA,IAAa,MAE9FM,KACF,SAAOC,MAAAC,KAAAZ,KAAA,gBAAAA,EAAM,SAAN,gBAAAY,GAAY,YAAZ,gBAAAD,GAAqB,YAAY,YAAWE,KAAAb,EAAK,KAAK,QAAQ,YAAlB,gBAAAa,GAA2B,MAAM,QAAQ,CAAA,GAE1FC,KACF,QAAOL,KAAA,gBAAAA,EAAkB,YAAY,YAAWM,KAAAN,EAAiB,YAAjB,gBAAAM,GAA0B,MAAM,QAAQ,CAAA,GAEtFC,MAAcC,KAAAlB,KAAA,gBAAAA,EAAQ,KAAK,YAAb,gBAAAkB,GAAsB,SAAQ,IAE5CC,MACFC,KAAAf,KAAA,gBAAAA,EAAY,iBAAZ,gBAAAe,GAA0B,WAAU,WAAaf,KAAA,gBAAAA,EAAY,WAAQgB,KAAAhB,KAAA,gBAAAA,EAAY,iBAAZ,gBAAAgB,GAA0B,QAC7FC,KAAmBH,KAAYd,KAAcA,EAAW,QAAQ,QAAMkB,KAAAlB,KAAA,gBAAAA,EAAY,iBAAZ,gBAAAkB,GAA0B,QAEhGC,IACFL,OACAM,KAAApB,KAAA,gBAAAA,EAAY,iBAAZ,gBAAAoB,GAA0B,aAAY,aACrCC,KAAArB,KAAA,gBAAAA,EAAY,iBAAZ,gBAAAqB,GAA0B,QAAQ,SAAS,GAAGT,CAAW,iBACtDU,KAAAtB,KAAA,gBAAAA,EAAY,iBAAZ,gBAAAsB,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,MAAYT,KAAA,gBAAAA,EAAQ,KAAK,aAAaW,GAAY,SAASM,CAAW,KAAK,CAACE,KAAaS,KAEvFI,IAAyBC,GAAY,CAACC,MAAuB;AAC/D,QAAI3B,EAAgB,YAAY2B,MAC5BjD,KAAA,QAAAA,EAAWiD;AAAA,MAEnB,GAAGC,EAAoB;AAEvB,MAAAC,GAAU,MAAM;;AACZ,QAAI3B,MACAF,EAAgB,UAAUY,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,IAAAZ,KAAA,gBAAAA,EAAQ,SAAR,gBAAAY,EAAc,YAAd,gBAAAE,EAAuB,aAErDkB,EAAuBtB,KAAA,gBAAAA,EAAkB,QAAQ;AAAA,MAEzD,GAAG;AAAA,QACCV,KAAA,gBAAAA,EAAQ;AAAA,QACRU,KAAA,gBAAAA,EAAkB;AAAA,QAClBA,KAAA,gBAAAA,EAAkB;AAAA,QAClBsB;AAAA,QACAvB;AAAA,QACAe;AAAA,QACAL;AAAA,MAAA,CACH;AAED,YAAMkB,KAAoBC;AAAA,QACtB,CAACC,MAA4B;;AACzB,gBAAM,EAAE,MAAAtC,GAAM,QAAAD,MAAWuC;AAEzB,UACI,CAAC9B,KACD,CAACC,KACAV,EAAO,QAAOC,KAAAA,gBAAAA,EAAM,QAAMS,KAAA,gBAAAA,EAAkB,aAAUV,KAAAA,EAAO,KAAK,YAAZA,gBAAAA,GAAqB,UAK5ES,KAAYR,KAAQ8B,KAAWvD,KAC/BA,EAAO;AAAA,YACH,IAAIwB,EAAO;AAAA,YACX,UAAUU,EAAiB;AAAA,YAC3B,MAAMA,EAAiB;AAAA,YACvB,kBAAA5B;AAAA,YACA,YAAY4B,EAAiB;AAAA,UAAA,CAChC;AAAA,QAET;AAAA,QACA,CAACD,GAAUC,GAAkBqB,GAASvD,GAAQM,CAAgB;AAAA,MAAA,GAG5D0D,KAAsBF;AAAA,QACxB,CAACC,MAA8B;AAC3B,UAAIA,EAAM,OAAO,OAAOlE,MAIxBc,KAAA,QAAAA,EAAkB;AAAA,YACd,kBAAAL;AAAA,YACA,UAAAH;AAAA,YACA,IAAAN;AAAA,YACA,OAAAE;AAAA,YACA,OAAAM;AAAA,YACA,qBAAAY;AAAA,YACA,0BAAAC;AAAA,UAAA;AAAA,QAER;AAAA,QACA;AAAA,UACIf;AAAA,UACAG;AAAA,UACAW;AAAA,UACApB;AAAA,UACAE;AAAA,UACAM;AAAA,UACAM;AAAA,UACAO;AAAA,QAAA;AAAA,MACJ,GAGE+C,KAAqBH;AAAA,QACvB,CAACC,MAA6B;AAC1B,UAAIA,EAAM,OAAO,OAAOlE,KACpB,SAAS,KAAK,MAAM,YAAY,UAAU0D,IAAU,aAAa,SAAS;AAAA,QAElF;AAAA,QACA,CAACA,GAAS1D,CAAE;AAAA,MAAA;AAGhB,MAAAqE,GAAc;AAAA,QACV,WAAWL;AAAA,QACX,aAAaG;AAAA,QACb,YAAYC;AAAA,MAAA,CACf;AAED,YAAME,IAAeL;AAAA,QACjB,CAACC,MAA0C;AACvC,UAAAA,KAAA,QAAAA,EAAO,mBACHnC,IACIlB,KACAA,EAASb,CAAE,IAGXY,KACAA,EAASZ,CAAE;AAAA,QAGvB;AAAA,QACA,CAACA,GAAI+B,GAAYnB,GAAUC,CAAQ;AAAA,MAAA,GAGjC0D,KAAkBX;AAAA,QACpB,CAACM,MAAmC;AAEhC,UADAA,EAAM,gBAAA,GACF,EAAA3C,KAAyB2C,EAAM,UAAU,OAIzC1C,MACA8C,EAAA,GAGJ3D,KAAA,QAAAA,EAAWX,IACXU,KAAA,QAAAA,EAAUV;AAAA,QACd;AAAA,QACAuB,IAAwB,MAAM;AAAA,MAAA,GAG5BiD,IAAiBjE,KAAWoB,KAAA,gBAAAA,EAAQ,QAAOpB,IAAW,IAEtDkE,IAAcC,GAAS,MAAMpE,CAAQ,IAAI,GAEzC,EAAE,kBAAAqE,GAAkB,aAAAC,GAAA,IAAgBC,EAAQ,MAAM;AACpD,cAAMF,IAAmBG,GAAiCxE,GAAU,EAAE,UAAUN,GAAI,OAAOQ,IAAQ,GAAG;AACtG,eAAO;AAAA,UACH,kBAAAmE;AAAAA,UACA,aAAaA,EAAiB,IAAI,CAACI,MAAUA,EAAM,MAAM,EAAE;AAAA,QAAA;AAAA,MAEnE,GAAG,CAACzE,GAAUN,GAAIQ,CAAK,CAAC,GAElB;AAAA,QACF,YAAAwE;AAAA,QACA,WAAAC;AAAA,QACA,WAAAC;AAAA,QACA,YAAAC;AAAA,QACA,qBAAAC;AAAA,QACA,qBAAAC;AAAA,QACA,qBAAAC;AAAA,MAAA,IACAC,GAAY;AAAA,QACZ,IAAAvF;AAAA,QACA,UAAU,CAACiB;AAAA,QACX,MAAM,EAAE,MAAAhB,GAAM,SAAAG,IAAS,UAAAG,GAAU,OAAAC,EAAA;AAAA,QACjC,sBAAAd;AAAA,QACA,YAAY;AAAA,MAAA,CACf;AAED,MAAA8F,GAAqB,MAAM;AACvB,YAAId,GAAS,MAAMC,CAAgB,MAAM,GAAG;AACxC,UAAA3D,KAAA,QAAAA,EAAyBhB;AACzB;AAAA,QACJ;AAEA,YAAIoC,KAAYoC,GAAgB;AAC5B,UAAAxD,KAAA,QAAAA,EAAyBhB;AACzB;AAAA,QACJ;AAEA,QAAI+B,IACAhB,KAAA,QAAAA,EAAuB,EAAE,IAAAf,GAAI,UAAU2E,EAAA,KAEvC3D,KAAA,QAAAA,EAAyBhB;AAAA,MAEjC,GAAG,CAACoC,GAAUL,GAAYyC,GAAgBG,GAAkB3E,CAAE,CAAC;AAE/D,YAAMyF,IAAiBZ,EAAQ,OACpB;AAAA,QACH,UAAU;AAAA,QACV,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,aAAa;AAAA,QACb,aAAa;AAAA,QACb,kBAAkB;AAAA,QAClB,GAAGvD;AAAA,MAAA,IAER,CAACA,CAAS,CAAC,GAERoE,IAAUC,GAAuBF,EAAe,oBAAoB,SAAS,GAE7E,EAAE,aAAAG,IAAa,qBAAAC,GAAA,IAAwBhB,EAAQ,OAC1C;AAAA,QACH,aAAaiB,EAAM;AAAA,UACfC;AAAA,UACA;AAAA,UACA,CAAC3D,KAAYN,IAAa4D,EAAQ,oBAAoBA,EAAQ;AAAA,UAC9DM,GAAwBP,EAAe,YAAY,MAAM;AAAA,QAAA,CAC5D;AAAA,QACD,qBAAqBK,EAAM;AAAA,UACvB;AAAA,UACAL,EAAe,gBAAgB,SACzBQ,EAA6BR,EAAe,gBAAgB,OAAO,IACnE;AAAA,UACN,CAACrD,MACI,CAACN,KAAc2D,EAAe,qBAAqB,cACpDC,EAAQ;AAAA,UACZ,CAACtD,KAAYN,IAAa4D,EAAQ,0BAA0BA,EAAQ;AAAA,UACpE5D,KAAcoE;AAAA,QAAA,CACjB;AAAA,MAAA,IAEN,CAAC9D,GAAUN,GAAY2D,GAAgBC,CAAO,CAAC,GAE5CS,KAAc9E,IAA2B,KAAO,CAACe,GACjDgE,KAA0BN,EAAM;AAAA,QAClC;AAAA,QACA1D,KAAYf,IAA2B,0CAA0C;AAAA,MAAA,CACpF,GACKgF,KAAetE,KAAc,CAACK,GAC9BkE,IAAiBrF,KAAa,CAACmB,GAC/BmE,KAAYrG,MAAU,UAAa,CAACkC,GACpCoE,IAAmB,CAACpE,KAAYlB,MAAeb,MAAc,SAAYoE,IAAcpE;AAE7F,UAAIoG,IAAmC;AACvC,MACI,CAACrE,KACD,CAACL,KACDyE,KACArD,OACAuD,KAAA1E,KAAA,gBAAAA,EAAY,iBAAZ,gBAAA0E,GAA0B,QAAO1G,MACjCgC,KAAA,gBAAAA,EAAY,WAAQ2E,KAAA3E,KAAA,gBAAAA,EAAY,iBAAZ,gBAAA2E,GAA0B,WAE9CF,IAAmCX,EAAM;AAAA,QACrC;AAAA,QACAG,EAA6BR,EAAe,gBAAgB,OAAO;AAAA,QACnEmB,GAAuB;AAAA,MAAA,CAC1B;AAGL,YAAMC,KACFpB,EAAe,gBAAgB,UAAUgB,MAAqC,KACxEX,EAAM;AAAA,QACFc,GAAuBnB,EAAe,eAAe,MAAM;AAAA,QAC3DQ,EAA6BR,EAAe,gBAAgB,OAAO;AAAA,QACnEqB,GAA4BrB,EAAe,eAAe,MAAM;AAAA,MAAA,CACnE,IACD,IACJsB,KAAkBtB,EAAe,iBAAiB,gBAAgB,YAAY,YAC9EuB,KAAwBvB,EAAe,iBAAiB,gBAAgB,YAAY,YAEpFwB,KAAqBnB,EAAM;AAAA,QAC7B;AAAA,QACAoB,GAAuBzB,EAAe,UAAU,MAAM;AAAA,QACtDrD,IAAW,yCAAyCyE;AAAA,QACpDzE,KAAY6D,EAA6BR,EAAe,gBAAgB,OAAO;AAAA,QAC/ErD,IAAW4E,KAAwBD;AAAA,QACnC3E,MACKsB,IACK,2DACA;AAAA,QACV+C;AAAA,MAAA,CACH,GAEKU,KAAe9E,KAAA,QAAAA,EAAkB,QAAQA,EAAiB,QAAQ+E,KAAoB,QACtFC,KAAejF,IAAW,IAAI5B,IAAQ4G,IAEtCE,KAAU,EAAE,aAAaH,MAAgBE,GAAA,GACzCE,KACF9B,EAAe,gBAAgB,SAAS,CAAA,IAAK,EAAE,YAAY,MAAM0B,MAAgBE,IAAA,GAE/EG,KAAQ;AAAA,QACV,WAAWC,GAAI,UAAU,SAASvC,CAAS;AAAA,QAC3C,YAAAC;AAAA,MAAA,GAGEuC,KAAe,EAAE,GAAGzC,IAAW,GAAGD,GAAA,GAElC2C,KACFvG,MAAwB,SACpB,gBAAAwG;AAAA,QAACC;AAAA,QAAA;AAAA,UACI,GAJYzG,MAAwB,SAASsG,KAAe,CAAA;AAAA,UAK7D,QAAQ5F;AAAA,UACR,KAAKwD;AAAA,UACL,UAAU,CAACgB;AAAA,UACX,eAAa,CAACA;AAAA,UACd,4BAAAnF;AAAA,UACA,kBAAkBsE,EAAe,oBAAoB;AAAA,QAAA;AAAA,MAAA,IAEzD,MAEFqC,KAAmB1G,MAAwB,SAAS,EAAE,GAAGsG,GAAA,IAAiB,CAAA;AAEhF,aACI,gBAAAK;AAAA,QAAC;AAAA,QAAA;AAAA,UACI,GAAGD;AAAA,UACJ,IAAA9H;AAAA,UACA,KAAKA;AAAA,UACL,UAAU;AAAA,UACV,MAAK;AAAA,UACL,OAAOsH;AAAA,UACP,WAAWU;AAAA,UACX,cAAY9H;AAAA,UACZ,cAAYM,IAAQ;AAAA,UACpB,SAAS+D;AAAA,UACT,WAAWqB;AAAA,UACX,KAAK,CAACqC,MAAS;AACX,YAAA5C,GAAoB4C,CAAI,GACpB,OAAOvG,KAAgB,aACvBA,EAAYuG,CAAI,IACTvG,KAAA,QAAAA,EAAa,YACpBA,EAAY,UAAUuG;AAAA,UAE9B;AAAA,UACA,gBAAcxG;AAAA,UACd,iBAAeK;AAAA,UACf,iBAAeC;AAAA,UACf,qBAAmB0C;AAAA,UACnB,aAAWG,GAAY,KAAK,GAAG;AAAA,QAAA;AAAA,2BAE9B,OAAA,EAAI,KAAKQ,IAAqB,WAAW6B,IAAoB,OAAAO,IAC1D,UAAA;AAAA,UAAA,gBAAAI,EAAC,UAAK,WAAW/B,IAAqB,OAAO0B,IAAiB,eAAW,IAAC;AAAA,UACzEnG,MAAwB,UAAUuG;AAAA,UAClCzG,KACG,gBAAA0G;AAAA,YAACM;AAAA,YAAA;AAAA,cACG,QAAQhD,KAAA,QAAAA,EAAW,IAAI,KAAQpD;AAAA,cAC/B,SAASwC;AAAA,cACT,UAAU+B;AAAA,cACV,UAAU,CAACG;AAAA,cACX,eAAa,CAACA;AAAA,cACd,WAAWA,IAAmB,eAAe;AAAA,YAAA;AAAA,UAAA;AAAA,UAGpDD,MACG,gBAAAqB,EAAC,QAAA,EAAK,WAAU,+DAA+D,UAAA1H,GAAM;AAAA,UAExFiG,MAAe,gBAAAyB,EAAC,OAAA,EAAI,WAAWxB,IAA0B,UAAA3F,GAAiB;AAAA,UAC1EW,MAAwB,WAAWuG;AAAA,QAAA,EAAA,CACxC;AAAA,MAAA;AAAA,IAGZ;AAAA,EAAA;AAER;AAEA9H,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 { useDndContext, useDndMonitor } from '@dnd-kit/core';\nimport { type AnimateLayoutChanges, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { noop } from 'lodash-es';\nimport { Children, type MouseEvent, memo, useCallback, useEffect, useMemo, useRef, forwardRef } from 'react';\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 type TreeItemStyling,\n} from '@components/Tree/types';\nimport { useDebounce } from '@hooks/useDebounce';\nimport { FOCUS_VISIBLE_STYLE, PARENT_FOCUS_VISIBLE_STYLE } from '@utilities/focusStyle';\nimport { merge } from '@utilities/merge';\n\nimport { EXPAND_ONHOVER_DELAY, INDENTATION_WIDTH } from '../helpers';\nimport { removeFragmentsAndEnrichChildren, useDeepCompareEffect } from '../utils';\n\nimport { DragHandle } from './DragHandle';\nimport { ExpandButton } from './ExpandButton';\nimport { type Overlay } from './TreeItemOverlay';\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 /** 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 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 forwardRef(\n (\n {\n id,\n type,\n label,\n onDrop,\n accepts,\n showCaret,\n children,\n parentId,\n level = 0,\n contentComponent,\n onClick,\n onSelect,\n onExpand,\n onShrink,\n registerOverlay,\n registerNodeChildren,\n unregisterNodeChildren,\n draggable = 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 treeItemRef,\n ) => {\n const { active, over } = useDndContext();\n const { isSelected, isExpanded, projection } = useTreeItem(id);\n const expandDebounced = useRef<Nullable<string> | undefined>();\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 && 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 if (isExpanded) {\n if (onShrink) {\n onShrink(id);\n }\n } else {\n if (onExpand) {\n onExpand(id);\n }\n }\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 : false;\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<Required<TreeItemStyling>>(() => {\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 };\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 isSelected && PARENT_FOCUS_VISIBLE_STYLE,\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 tw-group',\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 key={id}\n {...itemHandlerProps}\n id={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={(node) => {\n setDroppableNodeRef(node);\n if (typeof treeItemRef === 'function') {\n treeItemRef(node);\n } else if (treeItemRef?.current) {\n treeItemRef.current = node;\n }\n }}\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 />\n {dragHandlerPosition === 'left' && dragHandler}\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 {showLabel && (\n <span className=\"first:tw-ml-3.5 tw-w-full tw-h-full tw-flex tw-items-center\">{label}</span>\n )}\n {showContent && <div className={wrapperContentClassName}>{contentComponent}</div>}\n {dragHandlerPosition === 'right' && dragHandler}\n </div>\n </li>\n );\n },\n ),\n);\n\nTreeItem.displayName = 'FondueTreeItem';\n"],"names":["animateLayoutChanges","isSorting","wasDragging","TreeItem","memo","forwardRef","id","type","label","onDrop","accepts","showCaret","children","parentId","level","contentComponent","onClick","onSelect","onExpand","onShrink","registerOverlay","registerNodeChildren","unregisterNodeChildren","draggable","expandable","showDragHandlerOnHoverOnly","dragHandlerPosition","showContentWhileDragging","itemStyle","ignoreItemDoubleClick","expandOnSelect","dataTestId","treeItemRef","active","over","useDndContext","isSelected","isExpanded","projection","useTreeItem","expandDebounced","useRef","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","PARENT_FOCUS_VISIBLE_STYLE","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","noop","node","ExpandButton"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeItemMultiselect.es.js","sources":["../../../../src/components/Tree/TreeItem/TreeItemMultiselect.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { noop } from 'lodash-es';\nimport { Children, type MouseEvent, memo, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { Checkbox, CheckboxEmphasis, CheckboxSize, CheckboxState } from '@components/Checkbox/Checkbox';\nimport { Container } from '@components/Container/Container';\nimport {\n type RegisterNodeChildrenPayload,\n type TreeItemMultiselectProps,\n type TreeItemStyling,\n} from '@components/Tree/types';\n\nimport { INDENTATION_WIDTH, getMultiselectCheckBoxState } from '../helpers';\nimport {\n getMultiselectBackgroundClassName,\n getMultiselectContainerClassName,\n getMultiselectLiClassName,\n} from '../helpers/multiselectTreeItemstyling';\nimport { removeFragmentsAndEnrichChildren, useDeepCompareEffect } from '../utils';\n\nimport { ExpandButton } from './ExpandButton';\nimport { useMultiselectTreeItem } from './useMultiselectTreeItem';\n\n/** @private */\ntype TreeItemPrivateProps = {\n parentId?: string;\n level?: number;\n /** onSelect is passed by the Tree component when cloning the TreeItem */\n onSelect?: (id: string, ignoreRemoveSelected: boolean) => void;\n onExpand?: (id: string) => void;\n onShrink?: (id: string) => void;\n unregisterNodeChildren?: (payload: string) => void;\n registerNodeChildren?: (payload: RegisterNodeChildrenPayload) => void;\n};\n\n/** @private */\nexport type InternalTreeItemMultiSelectProps = TreeItemMultiselectProps & TreeItemPrivateProps;\n\nexport const TreeItemMultiselect = memo(\n ({\n id,\n label,\n showCaret,\n children,\n level = 0,\n contentComponent,\n parentId: _parentId,\n onSelect,\n onExpand,\n onShrink,\n registerNodeChildren,\n unregisterNodeChildren,\n isDisabled = false,\n expandable = true,\n checkBoxPosition = 'left',\n itemStyle,\n 'data-test-id': dataTestId = 'fondue-tree-item',\n }: InternalTreeItemMultiSelectProps) => {\n const setActiveNodeRef = useRef<HTMLInputElement | null>(null);\n const { isSelected, isExpanded, isPartialSelected, isParentSelected } = useMultiselectTreeItem(id);\n\n const toggleExpand = useCallback(\n (event?: MouseEvent<HTMLButtonElement>) => {\n event?.stopPropagation();\n if (isExpanded) {\n if (onShrink) {\n onShrink(id);\n }\n } else {\n if (onExpand) {\n onExpand(id);\n }\n }\n },\n [id, isExpanded, onExpand, onShrink],\n );\n\n useEffect(() => {\n if (isParentSelected && !isSelected && onSelect) {\n onSelect(id, true);\n }\n }, [id, onSelect, isParentSelected, isSelected]);\n\n const hasChildren = Children.count(children) > 0;\n\n const { enrichedChildren, childrenIds } = useMemo(() => {\n const enrichedChildren = removeFragmentsAndEnrichChildren(children, {\n parentId: id,\n level: level + 1,\n });\n\n return {\n enrichedChildren,\n childrenIds: enrichedChildren.map((child) => child.props.id),\n };\n }, [children, id, level]);\n\n useDeepCompareEffect(() => {\n if (Children.count(enrichedChildren) === 0 || !isExpanded) {\n unregisterNodeChildren?.(id);\n return;\n }\n\n registerNodeChildren?.({ id, children: enrichedChildren });\n }, [isExpanded, 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 { liClassName, backgroundClassName } = useMemo(() => {\n return {\n liClassName: getMultiselectLiClassName(itemStyleProps, isDisabled),\n backgroundClassName: getMultiselectBackgroundClassName(itemStyleProps, isSelected, isDisabled),\n };\n }, [itemStyleProps, isDisabled, isSelected]);\n\n const wrapperContentClassName = 'tw-max-w-full\ttw-grow';\n const showChildren = isExpanded;\n const showLabel = label !== undefined;\n const showExpandButton = expandable && (showCaret ?? hasChildren);\n\n const containerClassName = getMultiselectContainerClassName(itemStyleProps);\n\n const levelPadding = level * INDENTATION_WIDTH;\n const liStyle = { paddingLeft: levelPadding };\n const backgroundStyle = itemStyleProps.borderWidth !== 'none' ? {} : { marginLeft: -1 * levelPadding };\n\n const checkBoxOnSelect = () => {\n if (!isDisabled && onSelect) {\n onSelect(id, false);\n }\n };\n const checkBox =\n checkBoxPosition !== 'none' ? (\n <Container maxWidth=\"16px\" maxHeight=\"16px\">\n <Checkbox\n id={`checkbox-${id}`}\n ref={setActiveNodeRef}\n disabled={isDisabled}\n aria-label={label ?? ''}\n emphasis={CheckboxEmphasis.Weak}\n helperText=\"\"\n hideLabel\n label=\"\"\n onChange={checkBoxOnSelect}\n size={CheckboxSize.Default}\n state={\n isDisabled\n ? CheckboxState.Unchecked\n : getMultiselectCheckBoxState(isSelected, isPartialSelected)\n }\n tooltip={[]}\n value={id}\n />\n </Container>\n ) : null;\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 className={liClassName}\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 className={containerClassName}>\n <span className={backgroundClassName} style={backgroundStyle} aria-hidden />\n {checkBoxPosition === 'left' && checkBox}\n\n {expandable && (\n <ExpandButton\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 && <span className=\"first:tw-ml-3.5 tw-h-full tw-flex tw-items-center\">{label}</span>}\n\n <div className={wrapperContentClassName}>{contentComponent}</div>\n\n {checkBoxPosition === 'right' && checkBox}\n </div>\n </li>\n );\n },\n);\n\nTreeItemMultiselect.displayName = 'FondueTreeItemMultiselect';\n"],"names":["TreeItemMultiselect","memo","id","label","showCaret","children","level","contentComponent","_parentId","onSelect","onExpand","onShrink","registerNodeChildren","unregisterNodeChildren","isDisabled","expandable","checkBoxPosition","itemStyle","dataTestId","setActiveNodeRef","useRef","isSelected","isExpanded","isPartialSelected","isParentSelected","useMultiselectTreeItem","toggleExpand","useCallback","event","useEffect","hasChildren","Children","enrichedChildren","childrenIds","useMemo","removeFragmentsAndEnrichChildren","child","useDeepCompareEffect","itemStyleProps","liClassName","backgroundClassName","getMultiselectLiClassName","getMultiselectBackgroundClassName","wrapperContentClassName","showChildren","showLabel","showExpandButton","containerClassName","getMultiselectContainerClassName","levelPadding","INDENTATION_WIDTH","liStyle","backgroundStyle","checkBoxOnSelect","checkBox","jsx","Container","Checkbox","CheckboxEmphasis","CheckboxSize","CheckboxState","getMultiselectCheckBoxState","noop","jsxs","ExpandButton"],"mappings":"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"}
1
+ {"version":3,"file":"TreeItemMultiselect.es.js","sources":["../../../../src/components/Tree/TreeItem/TreeItemMultiselect.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { noop } from 'lodash-es';\nimport { Children, type MouseEvent, memo, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { Checkbox, CheckboxEmphasis, CheckboxSize, CheckboxState } from '@components/Checkbox/Checkbox';\nimport { Container } from '@components/Container/Container';\nimport {\n type RegisterNodeChildrenPayload,\n type TreeItemMultiselectProps,\n type TreeItemStyling,\n} from '@components/Tree/types';\n\nimport { INDENTATION_WIDTH, getMultiselectCheckBoxState } from '../helpers';\nimport {\n getMultiselectBackgroundClassName,\n getMultiselectContainerClassName,\n getMultiselectLiClassName,\n} from '../helpers/multiselectTreeItemstyling';\nimport { removeFragmentsAndEnrichChildren, useDeepCompareEffect } from '../utils';\n\nimport { ExpandButton } from './ExpandButton';\nimport { useMultiselectTreeItem } from './useMultiselectTreeItem';\n\n/** @private */\ntype TreeItemPrivateProps = {\n parentId?: string;\n level?: number;\n /** onSelect is passed by the Tree component when cloning the TreeItem */\n onSelect?: (id: string, ignoreRemoveSelected: boolean) => void;\n onExpand?: (id: string) => void;\n onShrink?: (id: string) => void;\n unregisterNodeChildren?: (payload: string) => void;\n registerNodeChildren?: (payload: RegisterNodeChildrenPayload) => void;\n};\n\n/** @private */\nexport type InternalTreeItemMultiSelectProps = TreeItemMultiselectProps & TreeItemPrivateProps;\n\nexport const TreeItemMultiselect = memo(\n ({\n id,\n label,\n showCaret,\n children,\n level = 0,\n contentComponent,\n parentId: _parentId,\n onSelect,\n onExpand,\n onShrink,\n registerNodeChildren,\n unregisterNodeChildren,\n isDisabled = false,\n expandable = true,\n checkBoxPosition = 'left',\n itemStyle,\n 'data-test-id': dataTestId = 'fondue-tree-item',\n }: InternalTreeItemMultiSelectProps) => {\n const setActiveNodeRef = useRef<HTMLInputElement | null>(null);\n const { isSelected, isExpanded, isPartialSelected, isParentSelected } = useMultiselectTreeItem(id);\n\n const toggleExpand = useCallback(\n (event?: MouseEvent<HTMLButtonElement>) => {\n event?.stopPropagation();\n if (isExpanded) {\n if (onShrink) {\n onShrink(id);\n }\n } else {\n if (onExpand) {\n onExpand(id);\n }\n }\n },\n [id, isExpanded, onExpand, onShrink],\n );\n\n useEffect(() => {\n if (isParentSelected && !isSelected && onSelect) {\n onSelect(id, true);\n }\n }, [id, onSelect, isParentSelected, isSelected]);\n\n const hasChildren = Children.count(children) > 0;\n\n const { enrichedChildren, childrenIds } = useMemo(() => {\n const enrichedChildren = removeFragmentsAndEnrichChildren(children, {\n parentId: id,\n level: level + 1,\n });\n\n return {\n enrichedChildren,\n childrenIds: enrichedChildren.map((child) => child.props.id),\n };\n }, [children, id, level]);\n\n useDeepCompareEffect(() => {\n if (Children.count(enrichedChildren) === 0 || !isExpanded) {\n unregisterNodeChildren?.(id);\n return;\n }\n\n registerNodeChildren?.({ id, children: enrichedChildren });\n }, [isExpanded, enrichedChildren, id]);\n\n const itemStyleProps = useMemo<Required<TreeItemStyling>>(() => {\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 };\n }, [itemStyle]);\n\n const { liClassName, backgroundClassName } = useMemo(() => {\n return {\n liClassName: getMultiselectLiClassName(itemStyleProps, isDisabled),\n backgroundClassName: getMultiselectBackgroundClassName(itemStyleProps, isSelected, isDisabled),\n };\n }, [itemStyleProps, isDisabled, isSelected]);\n\n const wrapperContentClassName = 'tw-max-w-full\ttw-grow';\n const showChildren = isExpanded;\n const showLabel = label !== undefined;\n const showExpandButton = expandable && (showCaret ?? hasChildren);\n\n const containerClassName = getMultiselectContainerClassName(itemStyleProps);\n\n const levelPadding = level * INDENTATION_WIDTH;\n const liStyle = { paddingLeft: levelPadding };\n const backgroundStyle = itemStyleProps.borderWidth !== 'none' ? {} : { marginLeft: -1 * levelPadding };\n\n const checkBoxOnSelect = () => {\n if (!isDisabled && onSelect) {\n onSelect(id, false);\n }\n };\n const checkBox =\n checkBoxPosition !== 'none' ? (\n <Container maxWidth=\"16px\" maxHeight=\"16px\">\n <Checkbox\n id={`checkbox-${id}`}\n ref={setActiveNodeRef}\n disabled={isDisabled}\n aria-label={label ?? ''}\n emphasis={CheckboxEmphasis.Weak}\n helperText=\"\"\n hideLabel\n label=\"\"\n onChange={checkBoxOnSelect}\n size={CheckboxSize.Default}\n state={\n isDisabled\n ? CheckboxState.Unchecked\n : getMultiselectCheckBoxState(isSelected, isPartialSelected)\n }\n tooltip={[]}\n value={id}\n />\n </Container>\n ) : null;\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 className={liClassName}\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 className={containerClassName}>\n <span className={backgroundClassName} style={backgroundStyle} aria-hidden />\n {checkBoxPosition === 'left' && checkBox}\n\n {expandable && (\n <ExpandButton\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 && <span className=\"first:tw-ml-3.5 tw-h-full tw-flex tw-items-center\">{label}</span>}\n\n <div className={wrapperContentClassName}>{contentComponent}</div>\n\n {checkBoxPosition === 'right' && checkBox}\n </div>\n </li>\n );\n },\n);\n\nTreeItemMultiselect.displayName = 'FondueTreeItemMultiselect';\n"],"names":["TreeItemMultiselect","memo","id","label","showCaret","children","level","contentComponent","_parentId","onSelect","onExpand","onShrink","registerNodeChildren","unregisterNodeChildren","isDisabled","expandable","checkBoxPosition","itemStyle","dataTestId","setActiveNodeRef","useRef","isSelected","isExpanded","isPartialSelected","isParentSelected","useMultiselectTreeItem","toggleExpand","useCallback","event","useEffect","hasChildren","Children","enrichedChildren","childrenIds","useMemo","removeFragmentsAndEnrichChildren","child","useDeepCompareEffect","itemStyleProps","liClassName","backgroundClassName","getMultiselectLiClassName","getMultiselectBackgroundClassName","wrapperContentClassName","showChildren","showLabel","showExpandButton","containerClassName","getMultiselectContainerClassName","levelPadding","INDENTATION_WIDTH","liStyle","backgroundStyle","checkBoxOnSelect","checkBox","jsx","Container","Checkbox","CheckboxEmphasis","CheckboxSize","CheckboxState","getMultiselectCheckBoxState","noop","jsxs","ExpandButton"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDeepCompareEffect.es.js","sources":["../../../../src/components/Tree/utils/useDeepCompareEffect.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type DependencyList, type EffectCallback, useEffect, useRef } from 'react';\nimport isEqual from 'react-fast-compare';\n\nconst isPrimitive = (val: unknown): boolean => val !== Object(val);\n\nexport const useDeepCompareEffect = (effect: EffectCallback, deps: unknown[]): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (!deps || deps.length === 0) {\n console.warn('`useDeepCompareEffect` should not be used with no dependencies. Use `useEffect` instead.');\n }\n\n if (deps.every(isPrimitive)) {\n console.warn(\n '`useDeepCompareEffect` should not be used with dependencies that are all primitive values. Use `useEffect` instead.',\n );\n }\n }\n\n const ref = useRef<DependencyList | undefined>(undefined);\n\n if (!isEqual(deps, ref.current)) {\n ref.current = deps;\n }\n\n // Intended eslint disable, it doesn't pick ref.current as dependencies array\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(effect, ref.current);\n};\n"],"names":["isPrimitive","val","useDeepCompareEffect","effect","deps","ref","useRef","isEqual","useEffect"],"mappings":";;AAKA,MAAMA,IAAc,CAACC,MAA0BA,MAAQ,OAAOA,CAAG,GAEpDC,IAAuB,CAACC,GAAwBC,MAA0B;AACnF,EAAI,QAAQ,IAAI,aAAa,kBACrB,CAACA,KAAQA,EAAK,WAAW,MACzB,QAAQ,KAAK,0FAA0F,GAGvGA,EAAK,MAAMJ,CAAW,KACtB,QAAQ;AAAA,IACJ;AAAA,EAAA;AAKZ,QAAMK,IAAMC,EAAmC,MAAS;AAExD,EAAKC,EAAQH,GAAMC,EAAI,OAAO,MAC1BA,EAAI,UAAUD,IAKlBI,EAAUL,GAAQE,EAAI,OAAO;AACjC;"}
1
+ {"version":3,"file":"useDeepCompareEffect.es.js","sources":["../../../../src/components/Tree/utils/useDeepCompareEffect.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type DependencyList, type EffectCallback, useEffect, useRef } from 'react';\nimport isEqual from 'react-fast-compare';\n\nconst isPrimitive = (val: unknown): boolean => val !== Object(val);\n\nexport const useDeepCompareEffect = (effect: EffectCallback, deps: unknown[]): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (!deps || deps.length === 0) {\n console.warn('`useDeepCompareEffect` should not be used with no dependencies. Use `useEffect` instead.');\n }\n\n if (deps.every(isPrimitive)) {\n console.warn(\n '`useDeepCompareEffect` should not be used with dependencies that are all primitive values. Use `useEffect` instead.',\n );\n }\n }\n\n const ref = useRef<DependencyList | undefined>(undefined);\n\n if (!isEqual(deps, ref.current)) {\n ref.current = deps;\n }\n\n // Intended eslint disable, it doesn't pick ref.current as dependencies array\n // eslint-disable-next-line @eslint-react/exhaustive-deps\n useEffect(effect, ref.current);\n};\n"],"names":["isPrimitive","val","useDeepCompareEffect","effect","deps","ref","useRef","isEqual","useEffect"],"mappings":";;AAKA,MAAMA,IAAc,CAACC,MAA0BA,MAAQ,OAAOA,CAAG,GAEpDC,IAAuB,CAACC,GAAwBC,MAA0B;AACnF,EAAI,QAAQ,IAAI,aAAa,kBACrB,CAACA,KAAQA,EAAK,WAAW,MACzB,QAAQ,KAAK,0FAA0F,GAGvGA,EAAK,MAAMJ,CAAW,KACtB,QAAQ;AAAA,IACJ;AAAA,EAAA;AAKZ,QAAMK,IAAMC,EAAmC,MAAS;AAExD,EAAKC,EAAQH,GAAMC,EAAI,OAAO,MAC1BA,EAAI,UAAUD,IAKlBI,EAAUL,GAAQE,EAAI,OAAO;AACjC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDropdownAutoHeight.es.js","sources":["../../src/hooks/useDropdownAutoHeight.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type MutableRefObject, useLayoutEffect, useState } from 'react';\n\n/**\n * @deprecated This component is deprecated and will be removed in the next major version.\n */\nexport const DEFAULT_DROPDOWN_MAX_HEIGHT = 'auto';\n\ntype DropdownAutoHeightProps = {\n isOpen: boolean;\n autoResize?: boolean;\n isDialog?: boolean;\n};\n\nconst getInnerOverlayHeight = (triggerRef: MutableRefObject<HTMLElement | null>) => {\n let maxHeight = 'auto';\n if (triggerRef.current) {\n const { innerHeight } = window;\n const { bottom } = triggerRef.current.getBoundingClientRect();\n const viewportPadding = 33;\n const triggerMargin = 8;\n maxHeight = `${Math.max(innerHeight - (bottom + viewportPadding + triggerMargin), 130)}px`;\n }\n return maxHeight;\n};\n\n/**\n * @deprecated This function is deprecated and will be removed in the next major version.\n */\nexport const useDropdownAutoHeight = (\n triggerRef: MutableRefObject<HTMLElement | null>,\n { isOpen, autoResize }: DropdownAutoHeightProps,\n) => {\n const [maxHeight, setMaxHeight] = useState(DEFAULT_DROPDOWN_MAX_HEIGHT);\n useLayoutEffect(() => {\n const updateMaxHeight = () => setMaxHeight(getInnerOverlayHeight(triggerRef));\n if (autoResize && isOpen) {\n updateMaxHeight();\n window.addEventListener('resize', updateMaxHeight);\n } else if (autoResize && !isOpen) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setMaxHeight(DEFAULT_DROPDOWN_MAX_HEIGHT);\n }\n\n return () => {\n if (isOpen && autoResize) {\n window.removeEventListener('resize', updateMaxHeight);\n }\n };\n }, [isOpen, autoResize, triggerRef]);\n\n return { maxHeight };\n};\n"],"names":["DEFAULT_DROPDOWN_MAX_HEIGHT","getInnerOverlayHeight","triggerRef","maxHeight","innerHeight","bottom","useDropdownAutoHeight","isOpen","autoResize","setMaxHeight","useState","useLayoutEffect","updateMaxHeight"],"mappings":";AAOO,MAAMA,IAA8B,QAQrCC,IAAwB,CAACC,MAAqD;AAChF,MAAIC,IAAY;AAChB,MAAID,EAAW,SAAS;AACpB,UAAM,EAAE,aAAAE,MAAgB,QAClB,EAAE,QAAAC,EAAA,IAAWH,EAAW,QAAQ,sBAAA;AAGtC,IAAAC,IAAY,GAAG,KAAK,IAAIC,KAAeC,IAFf,KACF,IAC4D,GAAG,CAAC;AAAA,EAC1F;AACA,SAAOF;AACX,GAKaG,IAAwB,CACjCJ,GACA,EAAE,QAAAK,GAAQ,YAAAC,QACT;AACD,QAAM,CAACL,GAAWM,CAAY,IAAIC,EAASV,CAA2B;AACtE,SAAAW,EAAgB,MAAM;AAClB,UAAMC,IAAkB,MAAMH,EAAaR,EAAsBC,CAAU,CAAC;AAC5E,WAAkBK,KACdK,EAAA,GACA,OAAO,iBAAiB,UAAUA,CAAe,KAC3BL,KAEtBE,EAAaT,CAA2B,GAGrC,MAAM;AACT,MAAIO,KAAUC,KACV,OAAO,oBAAoB,UAAUI,CAAe;AAAA,IAE5D;AAAA,EACJ,GAAG,CAACL,GAAQC,GAAYN,CAAU,CAAC,GAE5B,EAAE,WAAAC,EAAA;AACb;"}
1
+ {"version":3,"file":"useDropdownAutoHeight.es.js","sources":["../../src/hooks/useDropdownAutoHeight.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type MutableRefObject, useLayoutEffect, useState } from 'react';\n\n/**\n * @deprecated This component is deprecated and will be removed in the next major version.\n */\nexport const DEFAULT_DROPDOWN_MAX_HEIGHT = 'auto';\n\ntype DropdownAutoHeightProps = {\n isOpen: boolean;\n autoResize?: boolean;\n isDialog?: boolean;\n};\n\nconst getInnerOverlayHeight = (triggerRef: MutableRefObject<HTMLElement | null>) => {\n let maxHeight = 'auto';\n if (triggerRef.current) {\n const { innerHeight } = window;\n const { bottom } = triggerRef.current.getBoundingClientRect();\n const viewportPadding = 33;\n const triggerMargin = 8;\n maxHeight = `${Math.max(innerHeight - (bottom + viewportPadding + triggerMargin), 130)}px`;\n }\n return maxHeight;\n};\n\n/**\n * @deprecated This function is deprecated and will be removed in the next major version.\n */\nexport const useDropdownAutoHeight = (\n triggerRef: MutableRefObject<HTMLElement | null>,\n { isOpen, autoResize }: DropdownAutoHeightProps,\n) => {\n const [maxHeight, setMaxHeight] = useState(DEFAULT_DROPDOWN_MAX_HEIGHT);\n useLayoutEffect(() => {\n const updateMaxHeight = () => setMaxHeight(getInnerOverlayHeight(triggerRef));\n if (autoResize && isOpen) {\n updateMaxHeight();\n window.addEventListener('resize', updateMaxHeight);\n } else if (autoResize && !isOpen) {\n // eslint-disable-next-line @eslint-react/set-state-in-effect\n setMaxHeight(DEFAULT_DROPDOWN_MAX_HEIGHT);\n }\n\n return () => {\n if (isOpen && autoResize) {\n window.removeEventListener('resize', updateMaxHeight);\n }\n };\n }, [isOpen, autoResize, triggerRef]);\n\n return { maxHeight };\n};\n"],"names":["DEFAULT_DROPDOWN_MAX_HEIGHT","getInnerOverlayHeight","triggerRef","maxHeight","innerHeight","bottom","useDropdownAutoHeight","isOpen","autoResize","setMaxHeight","useState","useLayoutEffect","updateMaxHeight"],"mappings":";AAOO,MAAMA,IAA8B,QAQrCC,IAAwB,CAACC,MAAqD;AAChF,MAAIC,IAAY;AAChB,MAAID,EAAW,SAAS;AACpB,UAAM,EAAE,aAAAE,MAAgB,QAClB,EAAE,QAAAC,EAAA,IAAWH,EAAW,QAAQ,sBAAA;AAGtC,IAAAC,IAAY,GAAG,KAAK,IAAIC,KAAeC,IAFf,KACF,IAC4D,GAAG,CAAC;AAAA,EAC1F;AACA,SAAOF;AACX,GAKaG,IAAwB,CACjCJ,GACA,EAAE,QAAAK,GAAQ,YAAAC,QACT;AACD,QAAM,CAACL,GAAWM,CAAY,IAAIC,EAASV,CAA2B;AACtE,SAAAW,EAAgB,MAAM;AAClB,UAAMC,IAAkB,MAAMH,EAAaR,EAAsBC,CAAU,CAAC;AAC5E,WAAkBK,KACdK,EAAA,GACA,OAAO,iBAAiB,UAAUA,CAAe,KAC3BL,KAEtBE,EAAaT,CAA2B,GAGrC,MAAM;AACT,MAAIO,KAAUC,KACV,OAAO,oBAAoB,UAAUI,CAAe;AAAA,IAE5D;AAAA,EACJ,GAAG,CAACL,GAAQC,GAAYN,CAAU,CAAC,GAE5B,EAAE,WAAAC,EAAA;AACb;"}