@aiquants/directory-tree 2.0.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,73 +1,73 @@
1
- import Ye, { memo as je, useRef as ae, useCallback as M, useEffect as J, useState as Z, useMemo as oe, Fragment as Be, useTransition as He } from "react";
2
- import { VirtualScroll as We } from "@aiquants/virtualscroll";
3
- import { FolderIcon as Xe, DocumentTextIcon as Ve, ChevronDownIcon as Je, ChevronRightIcon as Ge } from "@heroicons/react/24/solid";
4
- import { FileIcon as ze } from "@phosphor-icons/react";
5
- import { twMerge as A } from "tailwind-merge";
6
- var ye = { exports: {} }, ue = {};
7
- var Te;
8
- function Ue() {
9
- if (Te) return ue;
10
- Te = 1;
1
+ import et, { memo as Ye, useRef as fe, useCallback as C, useEffect as oe, useState as ie, useMemo as ee, Fragment as tt, useTransition as rt } from "react";
2
+ import { VirtualScroll as nt } from "@aiquants/virtualscroll";
3
+ import { FolderIcon as ot, DocumentTextIcon as st, ChevronDownIcon as at, ChevronRightIcon as lt } from "@heroicons/react/24/solid";
4
+ import { FileIcon as it } from "@phosphor-icons/react";
5
+ import { twMerge as Y } from "tailwind-merge";
6
+ var xe = { exports: {} }, me = {};
7
+ var $e;
8
+ function ct() {
9
+ if ($e) return me;
10
+ $e = 1;
11
11
  var e = /* @__PURE__ */ Symbol.for("react.transitional.element"), r = /* @__PURE__ */ Symbol.for("react.fragment");
12
- function o(l, n, a) {
13
- var i = null;
14
- if (a !== void 0 && (i = "" + a), n.key !== void 0 && (i = "" + n.key), "key" in n) {
15
- a = {};
16
- for (var m in n)
17
- m !== "key" && (a[m] = n[m]);
18
- } else a = n;
19
- return n = a.ref, {
12
+ function a(n, o, l) {
13
+ var s = null;
14
+ if (l !== void 0 && (s = "" + l), o.key !== void 0 && (s = "" + o.key), "key" in o) {
15
+ l = {};
16
+ for (var m in o)
17
+ m !== "key" && (l[m] = o[m]);
18
+ } else l = o;
19
+ return o = l.ref, {
20
20
  $$typeof: e,
21
- type: l,
22
- key: i,
23
- ref: n !== void 0 ? n : null,
24
- props: a
21
+ type: n,
22
+ key: s,
23
+ ref: o !== void 0 ? o : null,
24
+ props: l
25
25
  };
26
26
  }
27
- return ue.Fragment = r, ue.jsx = o, ue.jsxs = o, ue;
27
+ return me.Fragment = r, me.jsx = a, me.jsxs = a, me;
28
28
  }
29
- var de = {};
30
- var Pe;
31
- function qe() {
32
- return Pe || (Pe = 1, process.env.NODE_ENV !== "production" && (function() {
29
+ var he = {};
30
+ var De;
31
+ function ut() {
32
+ return De || (De = 1, process.env.NODE_ENV !== "production" && (function() {
33
33
  function e(t) {
34
34
  if (t == null) return null;
35
35
  if (typeof t == "function")
36
- return t.$$typeof === C ? null : t.displayName || t.name || null;
36
+ return t.$$typeof === q ? null : t.displayName || t.name || null;
37
37
  if (typeof t == "string") return t;
38
38
  switch (t) {
39
- case s:
39
+ case u:
40
40
  return "Fragment";
41
- case w:
41
+ case j:
42
42
  return "Profiler";
43
- case f:
43
+ case p:
44
44
  return "StrictMode";
45
- case L:
45
+ case P:
46
46
  return "Suspense";
47
- case Y:
47
+ case T:
48
48
  return "SuspenseList";
49
- case j:
49
+ case U:
50
50
  return "Activity";
51
51
  }
52
52
  if (typeof t == "object")
53
53
  switch (typeof t.tag == "number" && console.error(
54
54
  "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
55
55
  ), t.$$typeof) {
56
- case u:
56
+ case i:
57
57
  return "Portal";
58
- case S:
58
+ case g:
59
59
  return t.displayName || "Context";
60
- case R:
60
+ case v:
61
61
  return (t._context.displayName || "Context") + ".Consumer";
62
62
  case d:
63
- var h = t.render;
64
- return t = t.displayName, t || (t = h.displayName || h.name || "", t = t !== "" ? "ForwardRef(" + t + ")" : "ForwardRef"), t;
65
- case E:
66
- return h = t.displayName || null, h !== null ? h : e(t.type) || "Memo";
67
- case N:
68
- h = t._payload, t = t._init;
63
+ var f = t.render;
64
+ return t = t.displayName, t || (t = f.displayName || f.name || "", t = t !== "" ? "ForwardRef(" + t + ")" : "ForwardRef"), t;
65
+ case A:
66
+ return f = t.displayName || null, f !== null ? f : e(t.type) || "Memo";
67
+ case X:
68
+ f = t._payload, t = t._init;
69
69
  try {
70
- return e(t(h));
70
+ return e(t(f));
71
71
  } catch {
72
72
  }
73
73
  }
@@ -76,77 +76,77 @@ function qe() {
76
76
  function r(t) {
77
77
  return "" + t;
78
78
  }
79
- function o(t) {
79
+ function a(t) {
80
80
  try {
81
81
  r(t);
82
- var h = !1;
82
+ var f = !1;
83
83
  } catch {
84
- h = !0;
84
+ f = !0;
85
85
  }
86
- if (h) {
87
- h = console;
88
- var p = h.error, k = typeof Symbol == "function" && Symbol.toStringTag && t[Symbol.toStringTag] || t.constructor.name || "Object";
89
- return p.call(
90
- h,
86
+ if (f) {
87
+ f = console;
88
+ var x = f.error, k = typeof Symbol == "function" && Symbol.toStringTag && t[Symbol.toStringTag] || t.constructor.name || "Object";
89
+ return x.call(
90
+ f,
91
91
  "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
92
92
  k
93
93
  ), r(t);
94
94
  }
95
95
  }
96
- function l(t) {
97
- if (t === s) return "<>";
98
- if (typeof t == "object" && t !== null && t.$$typeof === N)
96
+ function n(t) {
97
+ if (t === u) return "<>";
98
+ if (typeof t == "object" && t !== null && t.$$typeof === X)
99
99
  return "<...>";
100
100
  try {
101
- var h = e(t);
102
- return h ? "<" + h + ">" : "<...>";
101
+ var f = e(t);
102
+ return f ? "<" + f + ">" : "<...>";
103
103
  } catch {
104
104
  return "<...>";
105
105
  }
106
106
  }
107
- function n() {
108
- var t = H.A;
107
+ function o() {
108
+ var t = $.A;
109
109
  return t === null ? null : t.getOwner();
110
110
  }
111
- function a() {
111
+ function l() {
112
112
  return Error("react-stack-top-frame");
113
113
  }
114
- function i(t) {
115
- if (W.call(t, "key")) {
116
- var h = Object.getOwnPropertyDescriptor(t, "key").get;
117
- if (h && h.isReactWarning) return !1;
114
+ function s(t) {
115
+ if (V.call(t, "key")) {
116
+ var f = Object.getOwnPropertyDescriptor(t, "key").get;
117
+ if (f && f.isReactWarning) return !1;
118
118
  }
119
119
  return t.key !== void 0;
120
120
  }
121
- function m(t, h) {
122
- function p() {
123
- Q || (Q = !0, console.error(
121
+ function m(t, f) {
122
+ function x() {
123
+ se || (se = !0, console.error(
124
124
  "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
125
- h
125
+ f
126
126
  ));
127
127
  }
128
- p.isReactWarning = !0, Object.defineProperty(t, "key", {
129
- get: p,
128
+ x.isReactWarning = !0, Object.defineProperty(t, "key", {
129
+ get: x,
130
130
  configurable: !0
131
131
  });
132
132
  }
133
- function I() {
133
+ function R() {
134
134
  var t = e(this.type);
135
- return X[t] || (X[t] = !0, console.error(
135
+ return S[t] || (S[t] = !0, console.error(
136
136
  "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
137
137
  )), t = this.props.ref, t !== void 0 ? t : null;
138
138
  }
139
- function y(t, h, p, k, te, le) {
140
- var x = p.ref;
139
+ function w(t, f, x, k, te, Q) {
140
+ var _ = x.ref;
141
141
  return t = {
142
- $$typeof: _,
142
+ $$typeof: I,
143
143
  type: t,
144
- key: h,
145
- props: p,
144
+ key: f,
145
+ props: x,
146
146
  _owner: k
147
- }, (x !== void 0 ? x : null) !== null ? Object.defineProperty(t, "ref", {
147
+ }, (_ !== void 0 ? _ : null) !== null ? Object.defineProperty(t, "ref", {
148
148
  enumerable: !1,
149
- get: I
149
+ get: R
150
150
  }) : Object.defineProperty(t, "ref", { enumerable: !1, value: null }), t._store = {}, Object.defineProperty(t._store, "validated", {
151
151
  configurable: !1,
152
152
  enumerable: !1,
@@ -166,28 +166,28 @@ function qe() {
166
166
  configurable: !1,
167
167
  enumerable: !1,
168
168
  writable: !0,
169
- value: le
169
+ value: Q
170
170
  }), Object.freeze && (Object.freeze(t.props), Object.freeze(t)), t;
171
171
  }
172
- function c(t, h, p, k, te, le) {
173
- var x = h.children;
174
- if (x !== void 0)
172
+ function c(t, f, x, k, te, Q) {
173
+ var _ = f.children;
174
+ if (_ !== void 0)
175
175
  if (k)
176
- if (D(x)) {
177
- for (k = 0; k < x.length; k++)
178
- v(x[k]);
179
- Object.freeze && Object.freeze(x);
176
+ if (Z(_)) {
177
+ for (k = 0; k < _.length; k++)
178
+ h(_[k]);
179
+ Object.freeze && Object.freeze(_);
180
180
  } else
181
181
  console.error(
182
182
  "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
183
183
  );
184
- else v(x);
185
- if (W.call(h, "key")) {
186
- x = e(t);
187
- var V = Object.keys(h).filter(function(re) {
188
- return re !== "key";
184
+ else h(_);
185
+ if (V.call(f, "key")) {
186
+ _ = e(t);
187
+ var J = Object.keys(f).filter(function(ce) {
188
+ return ce !== "key";
189
189
  });
190
- k = 0 < V.length ? "{key: someKey, " + V.join(": ..., ") + ": ...}" : "{key: someKey}", G[x + k] || (V = 0 < V.length ? "{" + V.join(": ..., ") + ": ...}" : "{}", console.error(
190
+ k = 0 < J.length ? "{key: someKey, " + J.join(": ..., ") + ": ...}" : "{key: someKey}", O[_ + k] || (J = 0 < J.length ? "{" + J.join(": ..., ") + ": ...}" : "{}", console.error(
191
191
  `A props object containing a "key" prop is being spread into JSX:
192
192
  let props = %s;
193
193
  <%s {...props} />
@@ -195,328 +195,337 @@ React keys must be passed directly to JSX without using spread:
195
195
  let props = %s;
196
196
  <%s key={someKey} {...props} />`,
197
197
  k,
198
- x,
199
- V,
200
- x
201
- ), G[x + k] = !0);
198
+ _,
199
+ J,
200
+ _
201
+ ), O[_ + k] = !0);
202
202
  }
203
- if (x = null, p !== void 0 && (o(p), x = "" + p), i(h) && (o(h.key), x = "" + h.key), "key" in h) {
204
- p = {};
205
- for (var ie in h)
206
- ie !== "key" && (p[ie] = h[ie]);
207
- } else p = h;
208
- return x && m(
209
- p,
203
+ if (_ = null, x !== void 0 && (a(x), _ = "" + x), s(f) && (a(f.key), _ = "" + f.key), "key" in f) {
204
+ x = {};
205
+ for (var re in f)
206
+ re !== "key" && (x[re] = f[re]);
207
+ } else x = f;
208
+ return _ && m(
209
+ x,
210
210
  typeof t == "function" ? t.displayName || t.name || "Unknown" : t
211
- ), y(
211
+ ), w(
212
212
  t,
213
+ _,
213
214
  x,
214
- p,
215
- n(),
215
+ o(),
216
216
  te,
217
- le
217
+ Q
218
218
  );
219
219
  }
220
- function v(t) {
221
- b(t) ? t._store && (t._store.validated = 1) : typeof t == "object" && t !== null && t.$$typeof === N && (t._payload.status === "fulfilled" ? b(t._payload.value) && t._payload.value._store && (t._payload.value._store.validated = 1) : t._store && (t._store.validated = 1));
220
+ function h(t) {
221
+ y(t) ? t._store && (t._store.validated = 1) : typeof t == "object" && t !== null && t.$$typeof === X && (t._payload.status === "fulfilled" ? y(t._payload.value) && t._payload.value._store && (t._payload.value._store.validated = 1) : t._store && (t._store.validated = 1));
222
222
  }
223
- function b(t) {
224
- return typeof t == "object" && t !== null && t.$$typeof === _;
223
+ function y(t) {
224
+ return typeof t == "object" && t !== null && t.$$typeof === I;
225
225
  }
226
- var g = Ye, _ = /* @__PURE__ */ Symbol.for("react.transitional.element"), u = /* @__PURE__ */ Symbol.for("react.portal"), s = /* @__PURE__ */ Symbol.for("react.fragment"), f = /* @__PURE__ */ Symbol.for("react.strict_mode"), w = /* @__PURE__ */ Symbol.for("react.profiler"), R = /* @__PURE__ */ Symbol.for("react.consumer"), S = /* @__PURE__ */ Symbol.for("react.context"), d = /* @__PURE__ */ Symbol.for("react.forward_ref"), L = /* @__PURE__ */ Symbol.for("react.suspense"), Y = /* @__PURE__ */ Symbol.for("react.suspense_list"), E = /* @__PURE__ */ Symbol.for("react.memo"), N = /* @__PURE__ */ Symbol.for("react.lazy"), j = /* @__PURE__ */ Symbol.for("react.activity"), C = /* @__PURE__ */ Symbol.for("react.client.reference"), H = g.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, W = Object.prototype.hasOwnProperty, D = Array.isArray, B = console.createTask ? console.createTask : function() {
226
+ var E = et, I = /* @__PURE__ */ Symbol.for("react.transitional.element"), i = /* @__PURE__ */ Symbol.for("react.portal"), u = /* @__PURE__ */ Symbol.for("react.fragment"), p = /* @__PURE__ */ Symbol.for("react.strict_mode"), j = /* @__PURE__ */ Symbol.for("react.profiler"), v = /* @__PURE__ */ Symbol.for("react.consumer"), g = /* @__PURE__ */ Symbol.for("react.context"), d = /* @__PURE__ */ Symbol.for("react.forward_ref"), P = /* @__PURE__ */ Symbol.for("react.suspense"), T = /* @__PURE__ */ Symbol.for("react.suspense_list"), A = /* @__PURE__ */ Symbol.for("react.memo"), X = /* @__PURE__ */ Symbol.for("react.lazy"), U = /* @__PURE__ */ Symbol.for("react.activity"), q = /* @__PURE__ */ Symbol.for("react.client.reference"), $ = E.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, V = Object.prototype.hasOwnProperty, Z = Array.isArray, G = console.createTask ? console.createTask : function() {
227
227
  return null;
228
228
  };
229
- g = {
229
+ E = {
230
230
  react_stack_bottom_frame: function(t) {
231
231
  return t();
232
232
  }
233
233
  };
234
- var Q, X = {}, K = g.react_stack_bottom_frame.bind(
235
- g,
236
- a
237
- )(), ee = B(l(a)), G = {};
238
- de.Fragment = s, de.jsx = function(t, h, p) {
239
- var k = 1e4 > H.recentlyCreatedOwnerStacks++;
234
+ var se, S = {}, D = E.react_stack_bottom_frame.bind(
235
+ E,
236
+ l
237
+ )(), L = G(n(l)), O = {};
238
+ he.Fragment = u, he.jsx = function(t, f, x) {
239
+ var k = 1e4 > $.recentlyCreatedOwnerStacks++;
240
240
  return c(
241
241
  t,
242
- h,
243
- p,
242
+ f,
243
+ x,
244
244
  !1,
245
- k ? Error("react-stack-top-frame") : K,
246
- k ? B(l(t)) : ee
245
+ k ? Error("react-stack-top-frame") : D,
246
+ k ? G(n(t)) : L
247
247
  );
248
- }, de.jsxs = function(t, h, p) {
249
- var k = 1e4 > H.recentlyCreatedOwnerStacks++;
248
+ }, he.jsxs = function(t, f, x) {
249
+ var k = 1e4 > $.recentlyCreatedOwnerStacks++;
250
250
  return c(
251
251
  t,
252
- h,
253
- p,
252
+ f,
253
+ x,
254
254
  !0,
255
- k ? Error("react-stack-top-frame") : K,
256
- k ? B(l(t)) : ee
255
+ k ? Error("react-stack-top-frame") : D,
256
+ k ? G(n(t)) : L
257
257
  );
258
258
  };
259
- })()), de;
259
+ })()), he;
260
260
  }
261
- var Ne;
262
- function Ze() {
263
- return Ne || (Ne = 1, process.env.NODE_ENV === "production" ? ye.exports = Ue() : ye.exports = qe()), ye.exports;
261
+ var Le;
262
+ function dt() {
263
+ return Le || (Le = 1, process.env.NODE_ENV === "production" ? xe.exports = ct() : xe.exports = ut()), xe.exports;
264
264
  }
265
- var P = Ze();
266
- const Qe = (e, r, o) => {
267
- const l = [];
268
- for (let n = r; n < o; n++) {
269
- const a = e[n];
270
- if (!(!a || a.length === 0))
271
- for (const i of a)
272
- l.push(i);
265
+ var N = dt();
266
+ const ft = (e, r, a) => {
267
+ const n = [];
268
+ for (let o = r; o < a; o++) {
269
+ const l = e[o];
270
+ if (!(!l || l.length === 0))
271
+ for (const s of l)
272
+ n.push(s);
273
273
  }
274
- return l;
275
- }, Ke = (e, r, o) => {
276
- const l = [];
277
- for (let n = r; n < o; n++) {
278
- const a = e[n];
279
- if (!(!a || a.length === 0))
280
- for (const i of a)
281
- l.push(i);
274
+ return n;
275
+ }, mt = (e, r, a) => {
276
+ const n = [];
277
+ for (let o = r; o < a; o++) {
278
+ const l = e[o];
279
+ if (!(!l || l.length === 0))
280
+ for (const s of l)
281
+ n.push(s);
282
282
  }
283
- return l;
284
- }, et = (e, r, o, l) => {
285
- const n = Math.max(1, Math.floor(r * l)), a = Math.max(1, Math.floor(o * l));
286
- (e.width !== n || e.height !== a) && (e.width = n, e.height = a);
287
- const i = e.style;
288
- i.width !== `${r}px` && (i.width = `${r}px`), i.height !== `${o}px` && (i.height = `${o}px`);
289
- }, tt = (e, r, o) => {
290
- e.lineWidth = o, e.beginPath();
291
- for (const l of r)
292
- e.moveTo(l.x1, l.y1), e.lineTo(l.x2, l.y2);
283
+ return n;
284
+ }, ht = (e, r, a, n) => {
285
+ const o = Math.max(1, Math.floor(r * n)), l = Math.max(1, Math.floor(a * n));
286
+ (e.width !== o || e.height !== l) && (e.width = o, e.height = l);
287
+ const s = e.style;
288
+ s.width !== `${r}px` && (s.width = `${r}px`), s.height !== `${a}px` && (s.height = `${a}px`);
289
+ }, yt = (e, r, a) => {
290
+ e.lineWidth = a, e.beginPath();
291
+ for (const n of r)
292
+ e.moveTo(n.x1, n.y1), e.lineTo(n.x2, n.y2);
293
293
  e.stroke();
294
- }, rt = (e, r) => {
295
- const o = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(e.trim());
296
- if (!o)
294
+ }, pt = (e, r) => {
295
+ const a = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(e.trim());
296
+ if (!a)
297
297
  return null;
298
- let l = o[1];
299
- l.length === 3 && (l = l.split("").map((m) => m + m).join(""));
300
- const n = Number.parseInt(l.slice(0, 2), 16), a = Number.parseInt(l.slice(2, 4), 16), i = Number.parseInt(l.slice(4, 6), 16);
301
- return `rgba(${n}, ${a}, ${i}, ${r})`;
302
- }, nt = (e, r, o, l) => {
298
+ let n = a[1];
299
+ n.length === 3 && (n = n.split("").map((m) => m + m).join(""));
300
+ const o = Number.parseInt(n.slice(0, 2), 16), l = Number.parseInt(n.slice(2, 4), 16), s = Number.parseInt(n.slice(4, 6), 16);
301
+ return `rgba(${o}, ${l}, ${s}, ${r})`;
302
+ }, bt = (e, r, a, n) => {
303
303
  if (r.length === 0)
304
304
  return;
305
- const n = rt(o, 0.14), a = e.strokeStyle, i = e.fillStyle, m = e.lineWidth, I = e.lineCap, y = e.lineJoin;
306
- e.strokeStyle = o, e.lineCap = "round", e.lineJoin = "round";
305
+ const o = pt(a, 0.14), l = e.strokeStyle, s = e.fillStyle, m = e.lineWidth, R = e.lineCap, w = e.lineJoin;
306
+ e.strokeStyle = a, e.lineCap = "round", e.lineJoin = "round";
307
307
  for (const c of r) {
308
- const v = l ?? c.size, b = Math.max(0, v / 2), g = Math.max(1, Math.round(v * 0.08)), _ = Math.max(1, Math.round(v * 0.14)), u = Math.max(0, b - g * 0.8), s = Math.max(0, u * 0.55);
309
- n && (e.fillStyle = n, e.beginPath(), e.arc(c.centerX, c.centerY, u, 0, Math.PI * 2), e.fill()), e.lineWidth = g, e.beginPath(), e.arc(c.centerX, c.centerY, Math.max(0, b - g * 0.3), 0, Math.PI * 2), e.stroke(), e.lineWidth = _, e.beginPath(), e.moveTo(c.centerX - s, c.centerY), e.lineTo(c.centerX + s, c.centerY), e.stroke(), c.isExpanded || (e.beginPath(), e.moveTo(c.centerX, c.centerY - s), e.lineTo(c.centerX, c.centerY + s), e.stroke());
308
+ const h = n ?? c.size, y = Math.max(0, h / 2), E = Math.max(1, Math.round(h * 0.08)), I = Math.max(1, Math.round(h * 0.14)), i = Math.max(0, y - E * 0.8), u = Math.max(0, i * 0.55);
309
+ o && (e.fillStyle = o, e.beginPath(), e.arc(c.centerX, c.centerY, i, 0, Math.PI * 2), e.fill()), e.lineWidth = E, e.beginPath(), e.arc(c.centerX, c.centerY, Math.max(0, y - E * 0.3), 0, Math.PI * 2), e.stroke(), e.lineWidth = I, e.beginPath(), e.moveTo(c.centerX - u, c.centerY), e.lineTo(c.centerX + u, c.centerY), e.stroke(), c.isExpanded || (e.beginPath(), e.moveTo(c.centerX, c.centerY - u), e.lineTo(c.centerX, c.centerY + u), e.stroke());
310
310
  }
311
- e.strokeStyle = a, e.fillStyle = i, e.lineWidth = m, e.lineCap = I, e.lineJoin = y;
312
- }, Me = je(({ segmentsByItem: e, glyphsByItem: r, itemHeight: o, width: l, viewportHeight: n, scrollPosition: a, color: i = "#a0aec0", strokeWidth: m = 1, renderStartIndex: I, renderEndIndex: y, lookaheadEndIndex: c, devicePixelRatio: v, expandGlyphColor: b, expandGlyphSize: g }) => {
313
- const _ = ae(null), u = ae(null), s = ae({
311
+ e.strokeStyle = l, e.fillStyle = s, e.lineWidth = m, e.lineCap = R, e.lineJoin = w;
312
+ }, Be = Ye(({ segmentsByItem: e, glyphsByItem: r, itemHeight: a, width: n, viewportHeight: o, scrollPosition: l, color: s = "#a0aec0", strokeWidth: m = 1, renderStartIndex: R, renderEndIndex: w, lookaheadEndIndex: c, devicePixelRatio: h, expandGlyphColor: y, expandGlyphSize: E }) => {
313
+ const I = fe(null), i = fe(null), u = fe({
314
314
  segmentsByItem: e,
315
315
  glyphsByItem: r,
316
- itemHeight: o,
317
- width: l,
318
- viewportHeight: n,
319
- scrollPosition: a,
320
- color: i,
316
+ itemHeight: a,
317
+ width: n,
318
+ viewportHeight: o,
319
+ scrollPosition: l,
320
+ color: s,
321
321
  strokeWidth: m,
322
- renderStartIndex: I,
323
- renderEndIndex: y,
322
+ renderStartIndex: R,
323
+ renderEndIndex: w,
324
324
  lookaheadEndIndex: c,
325
- devicePixelRatio: v,
326
- expandGlyphColor: b,
327
- expandGlyphSize: g
328
- }), f = M(() => {
329
- u.current = null;
330
- const R = _.current;
331
- if (!R)
325
+ devicePixelRatio: h,
326
+ expandGlyphColor: y,
327
+ expandGlyphSize: E
328
+ }), p = C(() => {
329
+ i.current = null;
330
+ const v = I.current;
331
+ if (!v)
332
332
  return;
333
- const S = R.getContext("2d");
334
- if (!S)
333
+ const g = v.getContext("2d");
334
+ if (!g)
335
335
  return;
336
- const d = s.current;
336
+ const d = u.current;
337
337
  if (d.width <= 0 || d.viewportHeight <= 0) {
338
- S.clearRect(0, 0, R.width, R.height);
338
+ g.clearRect(0, 0, v.width, v.height);
339
339
  return;
340
340
  }
341
- const L = Number.isFinite(d.devicePixelRatio ?? NaN) ? d.devicePixelRatio : typeof window < "u" && window.devicePixelRatio || 1;
342
- et(R, d.width, d.viewportHeight, L);
343
- const Y = d.segmentsByItem.length, E = typeof d.renderStartIndex == "number" && Number.isFinite(d.renderStartIndex) ? Math.max(0, Math.floor(d.renderStartIndex)) : Math.max(0, Math.floor(d.scrollPosition / d.itemHeight)), N = Math.min(Y, Math.ceil((d.scrollPosition + d.viewportHeight) / d.itemHeight)), j = (() => {
341
+ const P = Number.isFinite(d.devicePixelRatio ?? NaN) ? d.devicePixelRatio : typeof window < "u" && window.devicePixelRatio || 1;
342
+ ht(v, d.width, d.viewportHeight, P);
343
+ const T = d.segmentsByItem.length, A = typeof d.renderStartIndex == "number" && Number.isFinite(d.renderStartIndex) ? Math.max(0, Math.floor(d.renderStartIndex)) : Math.max(0, Math.floor(d.scrollPosition / d.itemHeight)), X = Math.min(T, Math.ceil((d.scrollPosition + d.viewportHeight) / d.itemHeight)), U = (() => {
344
344
  if (typeof d.renderEndIndex == "number" && Number.isFinite(d.renderEndIndex)) {
345
- const D = Math.floor(d.renderEndIndex);
346
- return Math.max(Math.min(Y, D + 1), E);
345
+ const Z = Math.floor(d.renderEndIndex);
346
+ return Math.max(Math.min(T, Z + 1), A);
347
347
  }
348
- return Math.max(N, E);
349
- })(), C = (() => {
348
+ return Math.max(X, A);
349
+ })(), q = (() => {
350
350
  if (typeof d.lookaheadEndIndex == "number" && Number.isFinite(d.lookaheadEndIndex)) {
351
- const D = Math.floor(d.lookaheadEndIndex), B = Math.min(Y, D + 1);
352
- return Math.max(B, j);
351
+ const Z = Math.floor(d.lookaheadEndIndex), G = Math.min(T, Z + 1);
352
+ return Math.max(G, U);
353
353
  }
354
- return Math.max(N, j);
355
- })(), H = Qe(d.segmentsByItem, E, C), W = Ke(d.glyphsByItem, E, C);
356
- S.save(), S.scale(L, L), S.clearRect(0, 0, d.width, d.viewportHeight), S.translate(0, -d.scrollPosition), S.strokeStyle = d.color, tt(S, H, d.strokeWidth), nt(S, W, d.expandGlyphColor ?? d.color, d.expandGlyphSize), S.restore();
357
- }, []), w = M(() => {
358
- u.current === null && (u.current = window.requestAnimationFrame(f));
359
- }, [f]);
360
- return J(() => {
361
- s.current = {
354
+ return Math.max(X, U);
355
+ })(), $ = ft(d.segmentsByItem, A, q), V = mt(d.glyphsByItem, A, q);
356
+ g.save(), g.scale(P, P), g.clearRect(0, 0, d.width, d.viewportHeight), g.translate(0, -d.scrollPosition), g.strokeStyle = d.color, yt(g, $, d.strokeWidth), bt(g, V, d.expandGlyphColor ?? d.color, d.expandGlyphSize), g.restore();
357
+ }, []), j = C(() => {
358
+ i.current === null && (i.current = window.requestAnimationFrame(p));
359
+ }, [p]);
360
+ return oe(() => {
361
+ u.current = {
362
362
  segmentsByItem: e,
363
363
  glyphsByItem: r,
364
- itemHeight: o,
365
- width: l,
366
- viewportHeight: n,
367
- scrollPosition: a,
368
- color: i,
364
+ itemHeight: a,
365
+ width: n,
366
+ viewportHeight: o,
367
+ scrollPosition: l,
368
+ color: s,
369
369
  strokeWidth: m,
370
- renderStartIndex: I,
371
- renderEndIndex: y,
370
+ renderStartIndex: R,
371
+ renderEndIndex: w,
372
372
  lookaheadEndIndex: c,
373
- devicePixelRatio: v,
374
- expandGlyphColor: b,
375
- expandGlyphSize: g
376
- }, w();
377
- }, [e, r, o, l, n, a, i, m, I, y, c, v, b, g, w]), J(() => () => {
378
- u.current !== null && (window.cancelAnimationFrame(u.current), u.current = null);
379
- }, []), /* @__PURE__ */ P.jsx("canvas", { ref: _, className: "pointer-events-none absolute top-0 left-0 z-0" });
373
+ devicePixelRatio: h,
374
+ expandGlyphColor: y,
375
+ expandGlyphSize: E
376
+ }, j();
377
+ }, [e, r, a, n, o, l, s, m, R, w, c, h, y, E, j]), oe(() => () => {
378
+ i.current !== null && (window.cancelAnimationFrame(i.current), i.current = null);
379
+ }, []), /* @__PURE__ */ N.jsx("canvas", { ref: I, className: "pointer-events-none absolute top-0 left-0 z-0" });
380
380
  });
381
- Me.displayName = "TreeLineCanvas";
382
- const $ = {
381
+ Be.displayName = "TreeLineCanvas";
382
+ const W = {
383
383
  container: "directory-tree-container relative h-full transition-opacity duration-300 overflow-y-hidden pb-[5px] pr-[3px]",
384
384
  containerPending: "opacity-70",
385
385
  entry: "directory-tree-entry flex items-center cursor-pointer relative select-none",
386
386
  // ホバー時のスタイル(ライト/ダークモード対応)
387
- entryHover: A("directory-tree-entry--hover hover:bg-gray-400/15", "dark:hover:bg-gray-200/10"),
387
+ entryHover: Y("directory-tree-entry--hover hover:bg-gray-400/15", "dark:hover:bg-gray-200/10"),
388
388
  // 選択時のスタイル(ライト/ダークモード対応)
389
- entrySelected: A("directory-tree-entry--selected bg-blue-400/10", "dark:bg-blue-400/15"),
389
+ entrySelected: Y("directory-tree-entry--selected bg-blue-400/10", "dark:bg-blue-400/15"),
390
390
  // アイテム選択時のスタイル(ライト/ダークモード対応)
391
- entryItemSelected: A("directory-tree-entry--item-selected bg-blue-400/20 shadow-[0_0_0_1px_rgba(59,130,246,0.3)]", "dark:bg-blue-400/25 dark:shadow-[0_0_0_1px_rgba(96,165,250,0.4)]"),
391
+ entryItemSelected: Y("directory-tree-entry--item-selected bg-blue-400/20 shadow-[0_0_0_1px_rgba(59,130,246,0.3)]", "dark:bg-blue-400/25 dark:shadow-[0_0_0_1px_rgba(96,165,250,0.4)]"),
392
392
  // アイコンのスタイル
393
- expandIcon: A("directory-tree-expand-icon w-5 h-5 flex-shrink-0 flex items-center justify-center", "text-gray-500", "dark:text-gray-400"),
394
- expandIconSelected: A("directory-tree-expand-icon--selected text-blue-700", "dark:text-blue-400"),
395
- typeIcon: A("directory-tree-type-icon w-5 h-5 flex-shrink-0 flex items-center justify-center", "text-gray-500", "dark:text-gray-400"),
396
- typeIconSelected: A("directory-tree-type-icon--selected text-blue-700", "dark:text-blue-400"),
393
+ expandIcon: Y("directory-tree-expand-icon w-5 h-5 flex-shrink-0 flex items-center justify-center", "text-gray-500", "dark:text-gray-400"),
394
+ expandIconSelected: Y("directory-tree-expand-icon--selected text-blue-700", "dark:text-blue-400"),
395
+ typeIcon: Y("directory-tree-type-icon w-5 h-5 flex-shrink-0 flex items-center justify-center", "text-gray-500", "dark:text-gray-400"),
396
+ typeIconSelected: Y("directory-tree-type-icon--selected text-blue-700", "dark:text-blue-400"),
397
397
  // テキストのスタイル
398
- name: A("directory-tree-name overflow-hidden text-ellipsis whitespace-nowrap ml-1", "text-gray-700", "dark:text-gray-200"),
398
+ name: Y("directory-tree-name overflow-hidden text-ellipsis whitespace-nowrap ml-1", "text-gray-700", "dark:text-gray-200"),
399
399
  nameDirectory: "directory-tree-name--directory",
400
- nameSelected: A("directory-tree-name--selected text-blue-800 font-medium", "dark:text-blue-300")
401
- }, ot = {
400
+ nameSelected: Y("directory-tree-name--selected text-blue-800 font-medium", "dark:text-blue-300")
401
+ }, vt = {
402
402
  msOverflowStyle: "none",
403
403
  scrollbarWidth: "none"
404
- }, at = () => {
404
+ }, gt = () => {
405
405
  let e = document.getElementById("directory-tree-webkit-scrollbar-hide");
406
406
  e || (e = document.createElement("style"), e.id = "directory-tree-webkit-scrollbar-hide", e.textContent = ".directory-tree-container::-webkit-scrollbar { display: none; }", document.head.appendChild(e));
407
- }, st = (e, r, o, l) => {
408
- const n = [], a = [];
409
- let i = 0;
410
- const m = (I, y, c) => {
411
- for (let v = 0; v < I.length; v++) {
412
- const b = I[v], g = v === I.length - 1, _ = [...c, g], u = b.children !== void 0, s = u && r(b.absolutePath, b.relativePath);
413
- let f = y, w = _, R = c;
414
- l && (f = y - 1, w = _.slice(1), R = c.slice(1)), n.push({ entry: b, indentLevel: f, parentIsLast: w }), o && (f > i && (i = f), a.push({
415
- id: b.absolutePath,
416
- name: b.name,
417
- absolutePath: b.absolutePath,
418
- indentLevel: f,
419
- isLastChild: g,
420
- isDirectory: u,
421
- isExpanded: s,
422
- ancestorIsLast: [...R],
423
- hideLines: l && y === 0
424
- })), u && s && b.children && m(b.children, y + 1, _);
407
+ }, xt = (e, r, a, n) => {
408
+ const o = [], l = [];
409
+ let s = 0;
410
+ const m = (R, w, c) => {
411
+ for (let h = 0; h < R.length; h++) {
412
+ const y = R[h], E = h === R.length - 1, I = [...c, E], i = y.children !== void 0, u = i && r(y.absolutePath, y.relativePath);
413
+ let p = w, j = I, v = c;
414
+ n && (p = w - 1, j = I.slice(1), v = c.slice(1)), o.push({ entry: y, indentLevel: p, parentIsLast: j }), a && (p > s && (s = p), l.push({
415
+ id: y.absolutePath,
416
+ name: y.name,
417
+ absolutePath: y.absolutePath,
418
+ indentLevel: p,
419
+ isLastChild: E,
420
+ isDirectory: i,
421
+ isExpanded: u,
422
+ ancestorIsLast: [...v],
423
+ hideLines: n && w === 0
424
+ })), i && u && y.children && m(y.children, w + 1, I);
425
425
  }
426
426
  };
427
- return m(e, 0, []), { flatItems: n, lineItems: a, maxIndent: i };
428
- }, lt = (e, r, o, l, n) => {
429
- const a = l?.renderStart ?? Math.max(0, Math.floor(n / se)), i = r > 0 ? Math.ceil(r / se) + o : o, m = e > 0 ? Math.min(e - 1, a + i) : a, I = l?.renderEnd ?? m, y = e > 0 ? Math.min(e - 1, I + o) : I;
430
- return { renderStart: a, renderEnd: I, lookaheadEnd: y };
431
- }, it = ({ isDirectory: e, isExpanded: r, showExpandIcons: o, useCanvasExpandIcons: l, expandIconSize: n }) => {
432
- const a = n ? { width: n, height: n } : void 0, i = n ? "" : "h-4 w-4";
433
- return !(o && e) || l ? /* @__PURE__ */ P.jsx("span", { className: i, style: a, "aria-hidden": "true" }) : r ? /* @__PURE__ */ P.jsx(Je, { className: i, style: a }) : /* @__PURE__ */ P.jsx(Ge, { className: i, style: a });
434
- }, ct = (e) => e.slice((e.lastIndexOf(".") - 1 >>> 0) + 2).toLowerCase(), ut = (e, r, o, l, n) => {
427
+ return m(e, 0, []), { flatItems: o, lineItems: l, maxIndent: s };
428
+ }, Fe = (e, r) => {
429
+ const a = e.length - 1;
430
+ if (a <= 0) return 0;
431
+ let n = 0, o = a - 1, l = 0;
432
+ for (; n <= o; ) {
433
+ const s = n + o >>> 1;
434
+ e[s] <= r ? (l = s, n = s + 1) : o = s - 1;
435
+ }
436
+ return l;
437
+ }, Et = (e, r, a, n, o, l) => {
438
+ const s = n?.renderStart ?? Math.max(0, Fe(l, o)), m = r > 0 ? Fe(l, o + r) + a : s + a, R = e > 0 ? Math.min(e - 1, Math.max(s, m)) : s, w = n?.renderEnd ?? R, c = e > 0 ? Math.min(e - 1, w + a) : w;
439
+ return { renderStart: s, renderEnd: w, lookaheadEnd: c };
440
+ }, It = ({ isDirectory: e, isExpanded: r, showExpandIcons: a, useCanvasExpandIcons: n, expandIconSize: o }) => {
441
+ const l = o ? { width: o, height: o } : void 0, s = o ? "" : "h-4 w-4";
442
+ return !(a && e) || n ? /* @__PURE__ */ N.jsx("span", { className: s, style: l, "aria-hidden": "true" }) : r ? /* @__PURE__ */ N.jsx(at, { className: s, style: l }) : /* @__PURE__ */ N.jsx(lt, { className: s, style: l });
443
+ }, St = (e) => e.slice((e.lastIndexOf(".") - 1 >>> 0) + 2).toLowerCase(), wt = (e, r, a, n, o, l) => {
435
444
  if (e.length === 0)
436
445
  return { segmentsByItem: [], glyphsByItem: [] };
437
- const a = Array.from({ length: e.length }, () => []), i = Array.from({ length: e.length }, () => []), m = l ? typeof n == "number" && Number.isFinite(n) && n > 0 ? n : Math.max(8, Math.min(o * 0.9, r * 0.7)) : 0, I = 3;
438
- for (let y = 0; y < e.length; y++) {
439
- const c = e[y];
440
- if (c.hideLines)
446
+ const s = Array.from({ length: e.length }, () => []), m = Array.from({ length: e.length }, () => []), R = (c) => o ? typeof l == "number" && Number.isFinite(l) && l > 0 ? l : Math.max(8, Math.min(n * 0.9, c * 0.7)) : 0, w = 3;
447
+ for (let c = 0; c < e.length; c++) {
448
+ const h = e[c];
449
+ if (h.hideLines)
441
450
  continue;
442
- const v = [], b = y * r, g = b + r / 2, _ = m > 0 ? m / 2 + 2 : o / 1.5;
443
- for (let f = 0; f < c.indentLevel; f++) {
444
- if (c.ancestorIsLast[f] ?? !1)
451
+ const y = [], E = r[c] ?? 0, I = a[c] ?? 0, i = I + E / 2, u = R(E), p = u > 0 ? u / 2 + 2 : n / 1.5;
452
+ for (let g = 0; g < h.indentLevel; g++) {
453
+ if (h.ancestorIsLast[g] ?? !1)
445
454
  continue;
446
- let R = !1;
447
- for (let S = y; S < e.length; S++) {
448
- const d = e[S];
449
- if (d.indentLevel > f && d.ancestorIsLast.length > f && !d.ancestorIsLast[f]) {
450
- R = !0;
455
+ let P = !1;
456
+ for (let T = c; T < e.length; T++) {
457
+ const A = e[T];
458
+ if (A.indentLevel > g && A.ancestorIsLast.length > g && !A.ancestorIsLast[g]) {
459
+ P = !0;
451
460
  break;
452
461
  }
453
- if (S > y && d.indentLevel === f)
462
+ if (T > c && A.indentLevel === g)
454
463
  break;
455
464
  }
456
- if (R) {
457
- const S = f * o + o / 2 + I;
458
- v.push({
459
- key: `${c.id}-ancestor-${f}`,
460
- x1: S,
461
- y1: b,
462
- x2: S,
463
- y2: b + r,
464
- itemIndex: y
465
+ if (P) {
466
+ const T = g * n + n / 2 + w;
467
+ y.push({
468
+ key: `${h.id}-ancestor-${g}`,
469
+ x1: T,
470
+ y1: I,
471
+ x2: T,
472
+ y2: I + E,
473
+ itemIndex: c
465
474
  });
466
475
  }
467
476
  }
468
- const u = c.indentLevel * o, s = u + o / 2 + I;
469
- if (c.isDirectory ? v.push({
470
- key: `${c.id}-connector-top`,
471
- x1: s,
472
- y1: b,
473
- x2: s,
474
- y2: g - _,
475
- itemIndex: y
476
- }) : v.push({
477
- key: `${c.id}-connector-top`,
478
- x1: s,
479
- y1: b,
480
- x2: s,
481
- y2: g,
482
- itemIndex: y
483
- }), !c.isDirectory && c.isLastChild && v.push({
484
- key: `${c.id}-connector-horizontal`,
485
- x1: s,
486
- y1: g,
487
- x2: u + o + I,
488
- y2: g,
489
- itemIndex: y
490
- }), c.isLastChild || (c.isDirectory ? v.push({
491
- key: `${c.id}-connector-bottom`,
492
- x1: s,
493
- y1: g + _,
494
- x2: s,
495
- y2: b + r,
496
- itemIndex: y
497
- }) : v.push({
498
- key: `${c.id}-connector-bottom`,
499
- x1: s,
500
- y1: g,
501
- x2: s,
502
- y2: b + r,
503
- itemIndex: y
504
- })), a[y] = v, l && c.isDirectory) {
505
- const f = m, w = s, R = g;
506
- i[y] = [
477
+ const j = h.indentLevel * n, v = j + n / 2 + w;
478
+ if (h.isDirectory ? y.push({
479
+ key: `${h.id}-connector-top`,
480
+ x1: v,
481
+ y1: I,
482
+ x2: v,
483
+ y2: i - p,
484
+ itemIndex: c
485
+ }) : y.push({
486
+ key: `${h.id}-connector-top`,
487
+ x1: v,
488
+ y1: I,
489
+ x2: v,
490
+ y2: i,
491
+ itemIndex: c
492
+ }), !h.isDirectory && h.isLastChild && y.push({
493
+ key: `${h.id}-connector-horizontal`,
494
+ x1: v,
495
+ y1: i,
496
+ x2: j + n + w,
497
+ y2: i,
498
+ itemIndex: c
499
+ }), h.isLastChild || (h.isDirectory ? y.push({
500
+ key: `${h.id}-connector-bottom`,
501
+ x1: v,
502
+ y1: i + p,
503
+ x2: v,
504
+ y2: I + E,
505
+ itemIndex: c
506
+ }) : y.push({
507
+ key: `${h.id}-connector-bottom`,
508
+ x1: v,
509
+ y1: i,
510
+ x2: v,
511
+ y2: I + E,
512
+ itemIndex: c
513
+ })), s[c] = y, o && h.isDirectory) {
514
+ const g = u, d = v, P = i;
515
+ m[c] = [
507
516
  {
508
- key: `${c.id}-glyph`,
509
- itemIndex: y,
510
- centerX: w,
511
- centerY: R,
512
- size: f,
513
- isExpanded: c.isExpanded
517
+ key: `${h.id}-glyph`,
518
+ itemIndex: c,
519
+ centerX: d,
520
+ centerY: P,
521
+ size: g,
522
+ isExpanded: h.isExpanded
514
523
  }
515
524
  ];
516
525
  }
517
526
  }
518
- return { segmentsByItem: a, glyphsByItem: i };
519
- }, ge = (e, r) => {
527
+ return { segmentsByItem: s, glyphsByItem: m };
528
+ }, Re = (e, r) => {
520
529
  if (e == null || typeof e == "boolean") return null;
521
530
  if (typeof e == "function")
522
531
  return console.warn(`[DirectoryTree] Function returned by renderer for "${r}". Return a node.`), null;
@@ -524,367 +533,448 @@ const $ = {
524
533
  if ("then" in e)
525
534
  return console.warn(`[DirectoryTree] Promise returned for "${r}". Not supported.`), null;
526
535
  if (Array.isArray(e)) {
527
- const l = e.map((n) => ge(n, r)).filter(Boolean);
528
- return l.length ? l : null;
536
+ const n = e.map((o) => Re(o, r)).filter(Boolean);
537
+ return n.length ? n : null;
529
538
  }
530
- const o = e.type;
531
- if (o && o.$$typeof === /* @__PURE__ */ Symbol.for("react.lazy"))
539
+ const a = e.type;
540
+ if (a && a.$$typeof === /* @__PURE__ */ Symbol.for("react.lazy"))
532
541
  return console.warn(`[DirectoryTree] Lazy component for "${r}". Not supported.`), null;
533
542
  }
534
543
  return e;
535
- }, dt = (e, r) => {
536
- const { entry: o, isDirectory: l, isExpanded: n, extension: a } = e;
537
- let i;
538
- return o.icon !== void 0 ? i = o.icon : l ? i = n && r?.directoryExpanded || r?.directory || /* @__PURE__ */ P.jsx(Xe, { className: "h-4 w-4" }) : a && r?.fileByExtension?.[a] ? i = r.fileByExtension[a] : i = r?.file || (a === "md" ? /* @__PURE__ */ P.jsx(Ve, { className: "h-4 w-4" }) : /* @__PURE__ */ P.jsx(ze, { className: "h-4 w-4" })), ge(typeof i == "function" ? i(e) : i, o.absolutePath);
539
- }, xe = je(
544
+ }, kt = (e, r) => {
545
+ const { entry: a, isDirectory: n, isExpanded: o, extension: l } = e;
546
+ let s;
547
+ return a.icon !== void 0 ? s = a.icon : n ? s = o && r?.directoryExpanded || r?.directory || /* @__PURE__ */ N.jsx(ot, { className: "h-4 w-4" }) : l && r?.fileByExtension?.[l] ? s = r.fileByExtension[l] : s = r?.file || (l === "md" ? /* @__PURE__ */ N.jsx(st, { className: "h-4 w-4" }) : /* @__PURE__ */ N.jsx(it, { className: "h-4 w-4" })), Re(typeof s == "function" ? s(e) : s, a.absolutePath);
548
+ }, _e = Ye(
540
549
  ({
541
550
  entry: e,
542
551
  indentLevel: r,
543
- isDirOpen: o,
544
- parentIsLast: l,
545
- renderChildren: n = !0,
546
- expansion: { toggleDirectory: a, onToggleDirectoryRecursive: i },
547
- selection: { onEntryClick: m, selectedPath: I, mode: y = "none", selectedItems: c, onSelectionChange: v },
548
- visual: { iconOverrides: b, showExpandIcons: g = !0, showDirectoryIcons: _ = !0, showFileIcons: u = !0, useCanvasExpandIcons: s = !1, expandIconSize: f, highlightStyles: w }
552
+ rowHeight: a,
553
+ isDirOpen: n,
554
+ parentIsLast: o,
555
+ renderChildren: l = !0,
556
+ expansion: { toggleDirectory: s, onToggleDirectoryRecursive: m },
557
+ selection: { onEntryClick: R, selectedPath: w, mode: c = "none", selectedItems: h, onSelectionChange: y },
558
+ visual: {
559
+ iconOverrides: E,
560
+ showExpandIcons: I = !0,
561
+ showDirectoryIcons: i = !0,
562
+ showFileIcons: u = !0,
563
+ useCanvasExpandIcons: p = !1,
564
+ expandIconSize: j,
565
+ highlightStyles: v,
566
+ entryClassName: g,
567
+ entryStyle: d,
568
+ nameClassName: P,
569
+ nameStyle: T,
570
+ directoryNameClassName: A,
571
+ directoryNameStyle: X,
572
+ fileNameClassName: U,
573
+ fileNameStyle: q
574
+ }
549
575
  }) => {
550
- const R = ae(null), [S, d] = Z(null), [L, Y] = Z(!1);
551
- J(
576
+ const $ = fe(null), [V, Z] = ie(null), [G, se] = ie(!1);
577
+ oe(
552
578
  () => () => {
553
- R.current && window.clearTimeout(R.current);
579
+ $.current && window.clearTimeout($.current);
554
580
  },
555
581
  []
556
582
  );
557
- const E = e.children !== void 0, N = E && o(e.absolutePath), j = e.absolutePath === I, C = !E && c?.has(e.absolutePath), H = E ? void 0 : ct(e.name);
558
- J(() => {
559
- d(N && e.children ? e.children : null);
560
- }, [N, e.children]);
561
- const W = M(
562
- (p) => {
563
- p.stopPropagation(), y !== "none" && !E && v && v(e, !C);
564
- let k = !1;
565
- m({
583
+ const S = e.children !== void 0, D = S && n(e.absolutePath), L = e.absolutePath === w, O = !S && h?.has(e.absolutePath), t = S ? void 0 : St(e.name);
584
+ oe(() => {
585
+ Z(D && e.children ? e.children : null);
586
+ }, [D, e.children]);
587
+ const f = C(
588
+ (B) => {
589
+ B.stopPropagation(), c !== "none" && !S && y && y(e, !O);
590
+ let ue = !1;
591
+ R({
566
592
  entry: e,
567
- isDirectory: E,
568
- isExpanded: N,
593
+ isDirectory: S,
594
+ isExpanded: D,
569
595
  preventDefault: () => {
570
- k = !0;
596
+ ue = !0;
571
597
  }
572
- }), !(!E || k) && (R.current ? (window.clearTimeout(R.current), R.current = null, i(e)) : R.current = window.setTimeout(() => {
573
- a(e.absolutePath), R.current = null;
598
+ }), !(!S || ue) && ($.current ? (window.clearTimeout($.current), $.current = null, m(e)) : $.current = window.setTimeout(() => {
599
+ s(e.absolutePath), $.current = null;
574
600
  }, 500));
575
601
  },
576
- [E, e, N, i, a, m, y, v, C]
577
- ), D = L ? w?.hoverClassName !== void 0 ? w.hoverClassName : $.entryHover : "", B = (() => {
578
- if (E) {
579
- if (j)
580
- return w?.directorySelectedClassName !== void 0 ? w.directorySelectedClassName : $.entrySelected;
581
- } else if (j || C)
582
- return w?.itemSelectedClassName !== void 0 ? w.itemSelectedClassName : A(
583
- j && $.entrySelected,
584
- C && $.entryItemSelected
585
- );
602
+ [S, e, D, m, s, R, c, y, O]
603
+ ), x = G ? v?.hoverClassName !== void 0 ? v.hoverClassName : W.entryHover : "", k = (() => {
604
+ if (S) {
605
+ if (L)
606
+ return v?.directorySelectedClassName !== void 0 ? v.directorySelectedClassName : W.entrySelected;
607
+ } else if (L || O)
608
+ return v?.itemSelectedClassName !== void 0 ? v.itemSelectedClassName : Y(L && W.entrySelected, O && W.entryItemSelected);
586
609
  return "";
587
- })(), Q = A($.entry, D, B, e.className), X = A($.expandIcon, (j || C) && $.expandIconSelected), K = A($.typeIcon, (j || C) && $.typeIconSelected), ee = A($.name, E && $.nameDirectory, (j || C) && $.nameSelected), G = it({ isDirectory: E, isExpanded: N, showExpandIcons: g, useCanvasExpandIcons: s, expandIconSize: f }), t = (E ? _ : u) ? dt({ entry: e, isDirectory: E, isExpanded: N, isSelected: j, isItemSelected: !!C, extension: H }, b) : null, h = {
588
- ...L ? w?.hoverStyle : {},
589
- ...E && j ? w?.directorySelectedStyle : {},
590
- ...!E && (j || C) ? w?.itemSelectedStyle : {}
610
+ })(), te = Y(W.entry, x, k, g, e.className), Q = Y(W.expandIcon, (L || O) && W.expandIconSelected), _ = Y(W.typeIcon, (L || O) && W.typeIconSelected), J = Y(W.name, P, S && W.nameDirectory, S && A, !S && U, (L || O) && W.nameSelected), re = It({ isDirectory: S, isExpanded: D, showExpandIcons: I, useCanvasExpandIcons: p, expandIconSize: j }), ce = (S ? i : u) ? kt({ entry: e, isDirectory: S, isExpanded: D, isSelected: L, isItemSelected: !!O, extension: t }, E) : null, Ie = {
611
+ ...G ? v?.hoverStyle : {},
612
+ ...S && L ? v?.directorySelectedStyle : {},
613
+ ...!S && (L || O) ? v?.itemSelectedStyle : {}
591
614
  };
592
- return /* @__PURE__ */ P.jsxs(Be, { children: [
593
- /* @__PURE__ */ P.jsxs(
615
+ return /* @__PURE__ */ N.jsxs(tt, { children: [
616
+ /* @__PURE__ */ N.jsxs(
594
617
  "div",
595
618
  {
596
- className: Q,
619
+ className: te,
597
620
  style: {
598
- paddingLeft: `${Math.max(0, r * fe)}px`,
599
- transform: r < 0 ? `translateX(${r * fe}px)` : void 0,
600
- width: r < 0 ? `calc(100% + ${Math.abs(r * fe)}px)` : void 0,
601
- height: `${se}px`,
602
- ...h,
621
+ paddingLeft: `${Math.max(0, r * ye)}px`,
622
+ transform: r < 0 ? `translateX(${r * ye}px)` : void 0,
623
+ width: r < 0 ? `calc(100% + ${Math.abs(r * ye)}px)` : void 0,
624
+ height: `${a}px`,
625
+ ...Ie,
626
+ ...d,
603
627
  ...e.style
604
628
  },
605
- "data-entry-type": E ? "directory" : "file",
606
- "data-entry-expanded": E ? String(N) : void 0,
607
- "data-entry-selected": j ? "true" : void 0,
608
- "data-entry-item-selected": C ? "true" : void 0,
609
- onClick: W,
610
- onMouseEnter: () => Y(!0),
611
- onMouseLeave: () => Y(!1),
612
- onKeyDown: (p) => p.key === "Enter" && W(p),
629
+ "data-entry-type": S ? "directory" : "file",
630
+ "data-entry-expanded": S ? String(D) : void 0,
631
+ "data-entry-selected": L ? "true" : void 0,
632
+ "data-entry-item-selected": O ? "true" : void 0,
633
+ onClick: f,
634
+ onMouseEnter: () => se(!0),
635
+ onMouseLeave: () => se(!1),
636
+ onKeyDown: (B) => B.key === "Enter" && f(B),
613
637
  tabIndex: 0,
614
638
  role: "treeitem",
615
- "aria-expanded": E ? N : void 0,
616
- "aria-label": `${e.name} (${E ? "directory" : "file"})`,
639
+ "aria-expanded": S ? D : void 0,
640
+ "aria-label": `${e.name} (${S ? "directory" : "file"})`,
617
641
  children: [
618
- (g || s) && /* @__PURE__ */ P.jsx("span", { className: X, children: G }),
619
- (E ? _ : u) && /* @__PURE__ */ P.jsx("span", { className: K, children: t }),
620
- /* @__PURE__ */ P.jsx("span", { className: ee, "data-entry-type": E ? "directory" : "file", "data-entry-role": "name", children: e.label ?? e.name })
642
+ (I || p) && /* @__PURE__ */ N.jsx("span", { className: Q, children: re }),
643
+ (S ? i : u) && /* @__PURE__ */ N.jsx("span", { className: _, children: ce }),
644
+ /* @__PURE__ */ N.jsx(
645
+ "span",
646
+ {
647
+ className: J,
648
+ style: {
649
+ ...T,
650
+ ...S ? X : q
651
+ },
652
+ "data-entry-type": S ? "directory" : "file",
653
+ "data-entry-role": "name",
654
+ children: e.label ?? e.name
655
+ }
656
+ )
621
657
  ]
622
658
  }
623
659
  ),
624
- N && S && n && /* @__PURE__ */ P.jsx("fieldset", { children: S.map((p, k) => /* @__PURE__ */ P.jsx(
625
- xe,
660
+ D && V && l && /* @__PURE__ */ N.jsx("fieldset", { children: V.map((B, ue) => /* @__PURE__ */ N.jsx(
661
+ _e,
626
662
  {
627
- entry: p,
663
+ entry: B,
628
664
  indentLevel: r + 1,
629
- isDirOpen: o,
630
- parentIsLast: [...l, k === S.length - 1],
631
- expansion: { toggleDirectory: a, onToggleDirectoryRecursive: i },
632
- selection: { onEntryClick: m, selectedPath: I, mode: y, selectedItems: c, onSelectionChange: v },
665
+ rowHeight: a,
666
+ isDirOpen: n,
667
+ parentIsLast: [...o, ue === V.length - 1],
668
+ expansion: { toggleDirectory: s, onToggleDirectoryRecursive: m },
669
+ selection: { onEntryClick: R, selectedPath: w, mode: c, selectedItems: h, onSelectionChange: y },
633
670
  visual: {
634
- iconOverrides: b,
635
- showExpandIcons: g,
636
- showDirectoryIcons: _,
671
+ iconOverrides: E,
672
+ showExpandIcons: I,
673
+ showDirectoryIcons: i,
637
674
  showFileIcons: u,
638
- useCanvasExpandIcons: s,
639
- expandIconSize: f,
640
- highlightStyles: w
675
+ useCanvasExpandIcons: p,
676
+ expandIconSize: j,
677
+ highlightStyles: v,
678
+ entryClassName: g,
679
+ entryStyle: d,
680
+ nameClassName: P,
681
+ nameStyle: T,
682
+ directoryNameClassName: A,
683
+ directoryNameStyle: X,
684
+ fileNameClassName: U,
685
+ fileNameStyle: q
641
686
  }
642
687
  },
643
- p.absolutePath
688
+ B.absolutePath
644
689
  )) })
645
690
  ] }, e.absolutePath);
646
691
  },
647
692
  (e, r) => {
648
693
  if (e.entry !== r.entry) return !1;
649
- const o = e.entry.children !== void 0, l = r.entry.children !== void 0, n = o && e.isDirOpen(e.entry.absolutePath), a = l && r.isDirOpen(r.entry.absolutePath);
650
- return e.indentLevel === r.indentLevel && n === a && e.selection.selectedPath === r.selection.selectedPath && e.selection.mode === r.selection.mode && e.selection.selectedItems === r.selection.selectedItems && e.visual.iconOverrides === r.visual.iconOverrides && e.visual.showExpandIcons === r.visual.showExpandIcons && e.visual.showDirectoryIcons === r.visual.showDirectoryIcons && e.visual.showFileIcons === r.visual.showFileIcons && e.visual.useCanvasExpandIcons === r.visual.useCanvasExpandIcons && e.visual.expandIconSize === r.visual.expandIconSize && e.visual.highlightStyles === r.visual.highlightStyles && e.parentIsLast.length === r.parentIsLast.length && e.parentIsLast.every((i, m) => i === r.parentIsLast[m]);
694
+ const a = e.entry.children !== void 0, n = r.entry.children !== void 0, o = a && e.isDirOpen(e.entry.absolutePath), l = n && r.isDirOpen(r.entry.absolutePath);
695
+ return e.indentLevel === r.indentLevel && e.rowHeight === r.rowHeight && o === l && e.selection.selectedPath === r.selection.selectedPath && e.selection.mode === r.selection.mode && e.selection.selectedItems === r.selection.selectedItems && e.visual.iconOverrides === r.visual.iconOverrides && e.visual.showExpandIcons === r.visual.showExpandIcons && e.visual.showDirectoryIcons === r.visual.showDirectoryIcons && e.visual.showFileIcons === r.visual.showFileIcons && e.visual.useCanvasExpandIcons === r.visual.useCanvasExpandIcons && e.visual.expandIconSize === r.visual.expandIconSize && e.visual.highlightStyles === r.visual.highlightStyles && e.visual.entryClassName === r.visual.entryClassName && e.visual.entryStyle === r.visual.entryStyle && e.visual.nameClassName === r.visual.nameClassName && e.visual.nameStyle === r.visual.nameStyle && e.visual.directoryNameClassName === r.visual.directoryNameClassName && e.visual.directoryNameStyle === r.visual.directoryNameStyle && e.visual.fileNameClassName === r.visual.fileNameClassName && e.visual.fileNameStyle === r.visual.fileNameStyle && e.parentIsLast.length === r.parentIsLast.length && e.parentIsLast.every((s, m) => s === r.parentIsLast[m]);
651
696
  }
652
697
  );
653
- xe.displayName = "DirectoryEntryItem";
654
- const se = 20, ft = () => se, fe = 16, Ce = 12, Oe = (e) => {
698
+ _e.displayName = "DirectoryEntryItem";
699
+ const Ee = 20, ye = 16, He = 12, We = (e) => {
655
700
  const r = [];
656
701
  if (e.children)
657
- for (const o of e.children)
658
- o.type === "directory" && (r.push(o.absolutePath), r.push(...Oe(o)));
702
+ for (const a of e.children)
703
+ a.type === "directory" && (r.push(a.absolutePath), r.push(...We(a)));
659
704
  return r;
660
- }, vt = ({
705
+ }, Ct = ({
661
706
  entries: e,
662
- expansion: { toggle: r, isExpanded: o, expandMultiple: l, collapseMultiple: n, isPending: a, alwaysExpanded: i = !1, doubleClickAction: m = "recursive" },
663
- selection: { onEntryClick: I, selectedPath: y, mode: c = "none", selectedItems: v, onSelectionChange: b },
664
- visual: { className: g, style: _, lineColor: u = "#A0AEC0", showTreeLines: s = !0, showExpandIcons: f = !0, showDirectoryIcons: w = !0, showFileIcons: R = !0, iconOverrides: S, expandIconSize: d, removeRootIndent: L = !1, highlightStyles: Y } = {},
665
- virtualScroll: E
707
+ expansion: { toggle: r, isExpanded: a, expandMultiple: n, collapseMultiple: o, isPending: l, alwaysExpanded: s = !1, doubleClickAction: m = "recursive" },
708
+ selection: { onEntryClick: R, selectedPath: w, mode: c = "none", selectedItems: h, onSelectionChange: y },
709
+ visual: {
710
+ className: E,
711
+ style: I,
712
+ lineColor: i = "#A0AEC0",
713
+ showTreeLines: u = !0,
714
+ showExpandIcons: p = !0,
715
+ showDirectoryIcons: j = !0,
716
+ showFileIcons: v = !0,
717
+ iconOverrides: g,
718
+ expandIconSize: d,
719
+ itemHeight: P = Ee,
720
+ removeRootIndent: T = !1,
721
+ highlightStyles: A,
722
+ entryClassName: X,
723
+ entryStyle: U,
724
+ nameClassName: q,
725
+ nameStyle: $,
726
+ directoryNameClassName: V,
727
+ directoryNameStyle: Z,
728
+ fileNameClassName: G,
729
+ fileNameStyle: se
730
+ } = {},
731
+ virtualScroll: S
666
732
  }) => {
667
- const [N, j] = Z(!1), C = ae(null), H = ae(null), [W, D] = Z(0), [B, Q] = Z(null), {
668
- overscanCount: X = 15,
669
- className: K,
670
- background: ee,
671
- onScroll: G,
672
- onRangeChange: t,
673
- initialScrollIndex: h,
674
- initialScrollOffset: p,
675
- callbackThrottleMs: k = 5,
676
- contentInsets: te,
677
- onItemFocus: le,
678
- viewportHeightOverride: x,
679
- scrollBarOptions: V,
680
- behaviorOptions: ie
681
- } = E ?? {}, [re, Ee] = Z(typeof p == "number" ? p : 0), Ae = M(
682
- (T, U) => {
683
- Ee(T), G?.(T, U);
733
+ const [D, L] = ie(!1), O = fe(null), t = fe(null), [f, x] = ie(0), [k, te] = ie(null), {
734
+ overscanCount: Q = 15,
735
+ className: _,
736
+ background: J,
737
+ onScroll: re,
738
+ onRangeChange: ce,
739
+ initialScrollIndex: Ie,
740
+ initialScrollOffset: B,
741
+ callbackThrottleMs: ue = 5,
742
+ contentInsets: Xe,
743
+ onItemFocus: Ve,
744
+ viewportHeightOverride: z,
745
+ scrollBarOptions: Ge,
746
+ behaviorOptions: Je
747
+ } = S ?? {}, [pe, Ne] = ie(typeof B == "number" ? B : 0), ze = C(
748
+ (b, F) => {
749
+ Ne(b), re?.(b, F);
684
750
  },
685
- [G]
686
- ), $e = M(
687
- (T) => {
688
- const { renderingStartIndex: U, renderingEndIndex: F } = T;
689
- Q((O) => O && O.renderStart === U && O.renderEnd === F ? O : { renderStart: U, renderEnd: F }), t?.(T);
751
+ [re]
752
+ ), Ue = C(
753
+ (b) => {
754
+ const { renderingStartIndex: F, renderingEndIndex: H } = b;
755
+ te((M) => M && M.renderStart === F && M.renderEnd === H ? M : { renderStart: F, renderEnd: H }), ce?.(b);
690
756
  },
691
- [t]
757
+ [ce]
692
758
  );
693
- J(() => {
694
- typeof p == "number" && Ee(p);
695
- }, [p]), J(() => {
696
- j(!0), at();
697
- }, []), J(() => {
698
- if (typeof x == "number") {
699
- D((O) => Math.abs(O - x) > 1 ? x : O);
759
+ oe(() => {
760
+ typeof B == "number" && Ne(B);
761
+ }, [B]), oe(() => {
762
+ L(!0), gt();
763
+ }, []), oe(() => {
764
+ if (typeof z == "number") {
765
+ x((M) => Math.abs(M - z) > 1 ? z : M);
700
766
  return;
701
767
  }
702
- const T = C.current;
703
- if (!T) return D(0);
768
+ const b = O.current;
769
+ if (!b) return x(0);
704
770
  (() => {
705
- const O = T.clientHeight;
706
- D((q) => Math.abs(q - O) > 1 ? O : q);
771
+ const M = b.clientHeight;
772
+ x((le) => Math.abs(le - M) > 1 ? M : le);
707
773
  })();
708
- const F = new ResizeObserver((O) => {
709
- for (const q of O)
710
- q.target === T && D((be) => Math.abs(be - q.contentRect.height) > 1 ? q.contentRect.height : be);
774
+ const H = new ResizeObserver((M) => {
775
+ for (const le of M)
776
+ le.target === b && x((we) => Math.abs(we - le.contentRect.height) > 1 ? le.contentRect.height : we);
711
777
  });
712
- return F.observe(T), () => F.disconnect();
713
- }, [x]);
714
- const z = typeof x == "number" ? x : W, ne = M((T) => i || (N ? o(T) : !1), [N, o, i]), Ie = A($.container, a && $.containerPending, g), Se = oe(
778
+ return H.observe(b), () => H.disconnect();
779
+ }, [z]);
780
+ const ae = typeof z == "number" ? z : f, de = C((b) => s || (D ? a(b) : !1), [D, a, s]), Te = Y(W.container, l && W.containerPending, E), Pe = ee(
715
781
  () => ({
716
- ...ot,
717
- ..._ ?? {},
718
- ...typeof x == "number" ? { height: x, minHeight: x } : {}
782
+ ...vt,
783
+ ...I ?? {},
784
+ ...typeof z == "number" ? { height: z, minHeight: z } : {}
719
785
  }),
720
- [_, x]
721
- ), De = M(
722
- (T, U) => {
723
- const F = [T.absolutePath, ...Oe(T)], O = U || m;
724
- if (F.every((ve) => ne(ve))) return n(F);
725
- if (F.every((ve) => !ne(ve)) || O === "recursive") return l(F);
726
- if (O === "toggle") return n(F);
727
- console.warn(`[DirectoryTree] Unknown double click action: ${O}. No action taken.`);
786
+ [I, z]
787
+ ), qe = C(
788
+ (b, F) => {
789
+ const H = [b.absolutePath, ...We(b)], M = F || m;
790
+ if (H.every((ke) => de(ke))) return o(H);
791
+ if (H.every((ke) => !de(ke)) || M === "recursive") return n(H);
792
+ if (M === "toggle") return o(H);
793
+ console.warn(`[DirectoryTree] Unknown double click action: ${M}. No action taken.`);
728
794
  },
729
- [ne, l, n, m]
730
- ), { flatItems: ce, lineItems: pe, maxIndent: ke } = oe(() => st(e, ne, s, L), [e, ne, s, L]), me = oe(
731
- () => !s || pe.length === 0 ? { segmentsByItem: [], glyphsByItem: [] } : ut(pe, se, fe, s, d ?? Ce),
732
- [pe, s, d]
733
- ), he = oe(() => !s || e.length === 0 ? 0 : (ke + 2) * fe, [e.length, ke, s]), { renderStart: we, renderEnd: Re, lookaheadEnd: _e } = oe(() => lt(ce.length, z, X, B, re), [ce.length, z, X, B, re]), Le = oe(() => !s || he <= 0 || z <= 0 || me.segmentsByItem.length === 0 ? null : /* @__PURE__ */ P.jsx("div", { className: "pointer-events-none absolute inset-0 z-0", "aria-hidden": "true", children: /* @__PURE__ */ P.jsx("div", { className: "absolute top-0 left-0", style: { width: he, height: z }, children: /* @__PURE__ */ P.jsx(
734
- Me,
795
+ [de, n, o, m]
796
+ ), { flatItems: Ce, lineItems: Se, maxIndent: je } = ee(() => xt(e, de, u, T), [e, de, u, T]), K = ee(
797
+ () => Ce.map((b, F) => {
798
+ const H = typeof P == "function" ? P(b.entry, F) : P;
799
+ return { ...b, rowHeight: Number.isFinite(H) && H > 0 ? H : Ee };
800
+ }),
801
+ [Ce, P]
802
+ ), ne = ee(() => K.map((b) => b.rowHeight), [K]), be = ee(() => {
803
+ const b = new Array(ne.length + 1);
804
+ b[0] = 0;
805
+ for (let F = 0; F < ne.length; F++)
806
+ b[F + 1] = b[F] + ne[F];
807
+ return b;
808
+ }, [ne]), Ze = C((b) => K[b]?.rowHeight ?? Ee, [K]), ve = ee(
809
+ () => !u || Se.length === 0 ? { segmentsByItem: [], glyphsByItem: [] } : wt(Se, ne, be, ye, u, d ?? He),
810
+ [Se, ne, be, u, d]
811
+ ), ge = ee(() => !u || e.length === 0 ? 0 : (je + 2) * ye, [e.length, je, u]), { renderStart: Ae, renderEnd: Oe, lookaheadEnd: Me } = ee(
812
+ () => Et(K.length, ae, Q, k, pe, be),
813
+ [K.length, ae, Q, k, pe, be]
814
+ ), Qe = ee(() => !u || ge <= 0 || ae <= 0 || ve.segmentsByItem.length === 0 ? null : /* @__PURE__ */ N.jsx("div", { className: "pointer-events-none absolute inset-0 z-0", "aria-hidden": "true", children: /* @__PURE__ */ N.jsx("div", { className: "absolute top-0 left-0", style: { width: ge, height: ae }, children: /* @__PURE__ */ N.jsx(
815
+ Be,
735
816
  {
736
- segmentsByItem: me.segmentsByItem,
737
- glyphsByItem: me.glyphsByItem,
738
- itemHeight: se,
739
- width: he,
740
- viewportHeight: z,
741
- scrollPosition: re,
742
- color: u,
743
- expandGlyphColor: u,
744
- expandGlyphSize: d ?? Ce,
745
- renderStartIndex: we,
746
- renderEndIndex: Re,
747
- lookaheadEndIndex: _e
817
+ segmentsByItem: ve.segmentsByItem,
818
+ glyphsByItem: ve.glyphsByItem,
819
+ itemHeight: ne[0] ?? Ee,
820
+ width: ge,
821
+ viewportHeight: ae,
822
+ scrollPosition: pe,
823
+ color: i,
824
+ expandGlyphColor: i,
825
+ expandGlyphSize: d ?? He,
826
+ renderStartIndex: Ae,
827
+ renderEndIndex: Oe,
828
+ lookaheadEndIndex: Me
748
829
  }
749
- ) }) }), [he, z, we, Re, _e, re, me, u, s, d]), Fe = M((T) => ce[T], [ce]);
750
- return e.length === 0 ? /* @__PURE__ */ P.jsx("div", { className: Ie, style: Se }) : /* @__PURE__ */ P.jsx("div", { ref: C, className: Ie, style: Se, role: "tree", children: /* @__PURE__ */ P.jsx(
751
- We,
830
+ ) }) }), [ge, ae, Ae, Oe, Me, pe, ve, i, u, d, ne]), Ke = C((b) => K[b], [K]);
831
+ return e.length === 0 ? /* @__PURE__ */ N.jsx("div", { className: Te, style: Pe }) : /* @__PURE__ */ N.jsx("div", { ref: O, className: Te, style: Pe, role: "tree", children: /* @__PURE__ */ N.jsx(
832
+ nt,
752
833
  {
753
- ref: H,
754
- itemCount: ce.length,
755
- getItem: Fe,
756
- getItemHeight: ft,
757
- viewportSize: z,
758
- overscanCount: X,
759
- onScroll: Ae,
760
- onRangeChange: $e,
761
- className: K,
762
- background: /* @__PURE__ */ P.jsxs(P.Fragment, { children: [
763
- Le,
764
- ee
834
+ ref: t,
835
+ itemCount: K.length,
836
+ getItem: Ke,
837
+ getItemHeight: Ze,
838
+ viewportSize: ae,
839
+ overscanCount: Q,
840
+ onScroll: ze,
841
+ onRangeChange: Ue,
842
+ className: _,
843
+ background: /* @__PURE__ */ N.jsxs(N.Fragment, { children: [
844
+ Qe,
845
+ J
765
846
  ] }),
766
- initialScrollIndex: h,
767
- initialScrollOffset: p,
768
- onItemFocus: le,
769
- callbackThrottleMs: k,
770
- contentInsets: te,
771
- scrollBarOptions: V,
772
- behaviorOptions: ie,
773
- children: (T) => T && /* @__PURE__ */ P.jsx(
774
- xe,
847
+ initialScrollIndex: Ie,
848
+ initialScrollOffset: B,
849
+ onItemFocus: Ve,
850
+ callbackThrottleMs: ue,
851
+ contentInsets: Xe,
852
+ scrollBarOptions: Ge,
853
+ behaviorOptions: Je,
854
+ children: (b) => b && /* @__PURE__ */ N.jsx(
855
+ _e,
775
856
  {
776
- entry: T.entry,
777
- indentLevel: T.indentLevel,
778
- isDirOpen: ne,
779
- parentIsLast: T.parentIsLast,
857
+ entry: b.entry,
858
+ indentLevel: b.indentLevel,
859
+ rowHeight: b.rowHeight,
860
+ isDirOpen: de,
861
+ parentIsLast: b.parentIsLast,
780
862
  renderChildren: !1,
781
- expansion: { toggleDirectory: r, onToggleDirectoryRecursive: De },
782
- selection: { onEntryClick: I, selectedPath: y ?? null, mode: c, selectedItems: v, onSelectionChange: b },
863
+ expansion: { toggleDirectory: r, onToggleDirectoryRecursive: qe },
864
+ selection: { onEntryClick: R, selectedPath: w ?? null, mode: c, selectedItems: h, onSelectionChange: y },
783
865
  visual: {
784
- iconOverrides: S,
785
- showExpandIcons: f,
786
- showDirectoryIcons: w,
787
- showFileIcons: R,
788
- useCanvasExpandIcons: s,
866
+ iconOverrides: g,
867
+ showExpandIcons: p,
868
+ showDirectoryIcons: j,
869
+ showFileIcons: v,
870
+ useCanvasExpandIcons: u,
789
871
  expandIconSize: d,
790
- highlightStyles: Y
872
+ highlightStyles: A,
873
+ entryClassName: X,
874
+ entryStyle: U,
875
+ nameClassName: q,
876
+ nameStyle: $,
877
+ directoryNameClassName: V,
878
+ directoryNameStyle: Z,
879
+ fileNameClassName: G,
880
+ fileNameStyle: se
791
881
  }
792
882
  },
793
- T.entry.absolutePath
883
+ b.entry.absolutePath
794
884
  )
795
885
  }
796
886
  ) });
797
- }, gt = ({ initialExpanded: e = /* @__PURE__ */ new Set(), storageKey: r } = {}) => {
798
- const [o, l] = He(), [n, a] = Z(() => {
887
+ }, jt = ({ initialExpanded: e = /* @__PURE__ */ new Set(), storageKey: r } = {}) => {
888
+ const [a, n] = rt(), [o, l] = ie(() => {
799
889
  if (typeof window < "u" && r)
800
890
  try {
801
- const u = window.localStorage.getItem(r);
802
- if (u) {
803
- const s = JSON.parse(u);
804
- return new Set(s);
891
+ const i = window.localStorage.getItem(r);
892
+ if (i) {
893
+ const u = JSON.parse(i);
894
+ return new Set(u);
805
895
  }
806
- } catch (u) {
807
- console.error("[useDirectoryTreeState] Error reading from localStorage", u);
896
+ } catch (i) {
897
+ console.error("[useDirectoryTreeState] Error reading from localStorage", i);
808
898
  }
809
899
  return e;
810
- }), i = M((u) => {
811
- l(() => {
812
- a((s) => {
813
- const f = new Set(s);
814
- return u(f), f;
900
+ }), s = C((i) => {
901
+ n(() => {
902
+ l((u) => {
903
+ const p = new Set(u);
904
+ return i(p), p;
815
905
  });
816
906
  });
817
- }, []), m = M(
818
- (u, s) => {
819
- i((f) => {
820
- for (const w of u)
821
- s(f, w);
907
+ }, []), m = C(
908
+ (i, u) => {
909
+ s((p) => {
910
+ for (const j of i)
911
+ u(p, j);
822
912
  });
823
913
  },
824
- [i]
914
+ [s]
825
915
  );
826
- J(() => {
916
+ oe(() => {
827
917
  if (r && typeof window < "u")
828
918
  try {
829
- window.localStorage.setItem(r, JSON.stringify(Array.from(n)));
830
- } catch (u) {
831
- console.warn(`Error setting localStorage key "${r}":`, u);
919
+ window.localStorage.setItem(r, JSON.stringify(Array.from(o)));
920
+ } catch (i) {
921
+ console.warn(`Error setting localStorage key "${r}":`, i);
832
922
  }
833
- }, [n, r]);
834
- const I = M(
835
- (u) => {
836
- m([u], (s, f) => {
837
- s.has(f) ? s.delete(f) : s.add(f);
923
+ }, [o, r]);
924
+ const R = C(
925
+ (i) => {
926
+ m([i], (u, p) => {
927
+ u.has(p) ? u.delete(p) : u.add(p);
838
928
  });
839
929
  },
840
930
  [m]
841
- ), y = M(
842
- (u) => {
843
- m([u], (s, f) => {
844
- s.add(f);
931
+ ), w = C(
932
+ (i) => {
933
+ m([i], (u, p) => {
934
+ u.add(p);
845
935
  });
846
936
  },
847
937
  [m]
848
- ), c = M(
849
- (u) => {
850
- m([u], (s, f) => {
851
- s.delete(f);
938
+ ), c = C(
939
+ (i) => {
940
+ m([i], (u, p) => {
941
+ u.delete(p);
852
942
  });
853
943
  },
854
944
  [m]
855
- ), v = M(
856
- (u) => {
857
- m(u, (s, f) => {
858
- s.delete(f);
945
+ ), h = C(
946
+ (i) => {
947
+ m(i, (u, p) => {
948
+ u.delete(p);
859
949
  });
860
950
  },
861
951
  [m]
862
- ), b = M(
863
- (u) => {
864
- m(u, (s, f) => {
865
- s.add(f);
952
+ ), y = C(
953
+ (i) => {
954
+ m(i, (u, p) => {
955
+ u.add(p);
866
956
  });
867
957
  },
868
958
  [m]
869
- ), g = M(() => {
870
- i((u) => {
871
- u.clear();
959
+ ), E = C(() => {
960
+ s((i) => {
961
+ i.clear();
872
962
  });
873
- }, [i]), _ = M((u) => n.has(u), [n]);
963
+ }, [s]), I = C((i) => o.has(i), [o]);
874
964
  return {
875
- expanded: n,
876
- toggle: I,
877
- expand: y,
965
+ expanded: o,
966
+ toggle: R,
967
+ expand: w,
878
968
  collapse: c,
879
- collapseMultiple: v,
880
- expandMultiple: b,
881
- collapseAll: g,
882
- isExpanded: _,
883
- isPending: o
969
+ collapseMultiple: h,
970
+ expandMultiple: y,
971
+ collapseAll: E,
972
+ isExpanded: I,
973
+ isPending: a
884
974
  };
885
975
  };
886
976
  export {
887
- vt as DirectoryTree,
888
- $ as directoryTreeClasses,
889
- gt as useDirectoryTreeState
977
+ Ct as DirectoryTree,
978
+ W as directoryTreeClasses,
979
+ jt as useDirectoryTreeState
890
980
  };