@aiquants/directory-tree 1.2.1 → 1.5.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,9 +1,9 @@
1
- import Ie, { memo as Ce, useRef as ve, useState as H, useEffect as ne, useCallback as F, Fragment as je, useMemo as fe, useTransition as $e } from "react";
2
- import { VirtualScroll as Oe } from "@aiquants/virtualscroll";
3
- import { ChevronDownIcon as Ne, ChevronRightIcon as Le, FolderIcon as Ae, DocumentTextIcon as De } from "@heroicons/react/24/solid";
4
- import { FileIcon as Pe } from "@phosphor-icons/react";
1
+ import Le, { memo as Ae, useRef as pe, useState as K, useEffect as re, useCallback as L, Fragment as Oe, useMemo as oe, useTransition as Me } from "react";
2
+ import { VirtualScroll as De } from "@aiquants/virtualscroll";
3
+ import { ChevronDownIcon as Pe, ChevronRightIcon as Fe, FolderIcon as Ye, DocumentTextIcon as Ve } from "@heroicons/react/24/solid";
4
+ import { FileIcon as ze } from "@phosphor-icons/react";
5
5
  import { twMerge as P } from "tailwind-merge";
6
- var he = { exports: {} }, ee = {};
6
+ var be = { exports: {} }, se = {};
7
7
  /**
8
8
  * @license React
9
9
  * react-jsx-runtime.production.js
@@ -13,29 +13,29 @@ var he = { exports: {} }, ee = {};
13
13
  * This source code is licensed under the MIT license found in the
14
14
  * LICENSE file in the root directory of this source tree.
15
15
  */
16
- var Ee;
17
- function Me() {
18
- if (Ee) return ee;
19
- Ee = 1;
20
- var t = Symbol.for("react.transitional.element"), r = Symbol.for("react.fragment");
21
- function u(l, s, i) {
22
- var m = null;
23
- if (i !== void 0 && (m = "" + i), s.key !== void 0 && (m = "" + s.key), "key" in s) {
24
- i = {};
25
- for (var p in s)
26
- p !== "key" && (i[p] = s[p]);
27
- } else i = s;
28
- return s = i.ref, {
29
- $$typeof: t,
30
- type: l,
31
- key: m,
32
- ref: s !== void 0 ? s : null,
33
- props: i
16
+ var ke;
17
+ function Be() {
18
+ if (ke) return se;
19
+ ke = 1;
20
+ var e = Symbol.for("react.transitional.element"), r = Symbol.for("react.fragment");
21
+ function f(i, o, h) {
22
+ var d = null;
23
+ if (h !== void 0 && (d = "" + h), o.key !== void 0 && (d = "" + o.key), "key" in o) {
24
+ h = {};
25
+ for (var l in o)
26
+ l !== "key" && (h[l] = o[l]);
27
+ } else h = o;
28
+ return o = h.ref, {
29
+ $$typeof: e,
30
+ type: i,
31
+ key: d,
32
+ ref: o !== void 0 ? o : null,
33
+ props: h
34
34
  };
35
35
  }
36
- return ee.Fragment = r, ee.jsx = u, ee.jsxs = u, ee;
36
+ return se.Fragment = r, se.jsx = f, se.jsxs = f, se;
37
37
  }
38
- var te = {};
38
+ var le = {};
39
39
  /**
40
40
  * @license React
41
41
  * react-jsx-runtime.development.js
@@ -45,673 +45,720 @@ var te = {};
45
45
  * This source code is licensed under the MIT license found in the
46
46
  * LICENSE file in the root directory of this source tree.
47
47
  */
48
- var xe;
49
- function Fe() {
50
- return xe || (xe = 1, process.env.NODE_ENV !== "production" && (function() {
51
- function t(e) {
52
- if (e == null) return null;
53
- if (typeof e == "function")
54
- return e.$$typeof === N ? null : e.displayName || e.name || null;
55
- if (typeof e == "string") return e;
56
- switch (e) {
57
- case E:
48
+ var Ie;
49
+ function Ue() {
50
+ return Ie || (Ie = 1, process.env.NODE_ENV !== "production" && (function() {
51
+ function e(t) {
52
+ if (t == null) return null;
53
+ if (typeof t == "function")
54
+ return t.$$typeof === M ? null : t.displayName || t.name || null;
55
+ if (typeof t == "string") return t;
56
+ switch (t) {
57
+ case n:
58
58
  return "Fragment";
59
- case d:
59
+ case y:
60
60
  return "Profiler";
61
- case Y:
61
+ case u:
62
62
  return "StrictMode";
63
- case V:
63
+ case W:
64
64
  return "Suspense";
65
- case I:
65
+ case k:
66
66
  return "SuspenseList";
67
- case C:
67
+ case B:
68
68
  return "Activity";
69
69
  }
70
- if (typeof e == "object")
71
- switch (typeof e.tag == "number" && console.error(
70
+ if (typeof t == "object")
71
+ switch (typeof t.tag == "number" && console.error(
72
72
  "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
73
- ), e.$$typeof) {
74
- case o:
73
+ ), t.$$typeof) {
74
+ case s:
75
75
  return "Portal";
76
- case S:
77
- return e.displayName || "Context";
78
- case v:
79
- return (e._context.displayName || "Context") + ".Consumer";
76
+ case N:
77
+ return t.displayName || "Context";
78
+ case m:
79
+ return (t._context.displayName || "Context") + ".Consumer";
80
80
  case O:
81
- var n = e.render;
82
- return e = e.displayName, e || (e = n.displayName || n.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
83
- case x:
84
- return n = e.displayName || null, n !== null ? n : t(e.type) || "Memo";
81
+ var a = t.render;
82
+ return t = t.displayName, t || (t = a.displayName || a.name || "", t = t !== "" ? "ForwardRef(" + t + ")" : "ForwardRef"), t;
83
+ case S:
84
+ return a = t.displayName || null, a !== null ? a : e(t.type) || "Memo";
85
85
  case z:
86
- n = e._payload, e = e._init;
86
+ a = t._payload, t = t._init;
87
87
  try {
88
- return t(e(n));
88
+ return e(t(a));
89
89
  } catch {
90
90
  }
91
91
  }
92
92
  return null;
93
93
  }
94
- function r(e) {
95
- return "" + e;
94
+ function r(t) {
95
+ return "" + t;
96
96
  }
97
- function u(e) {
97
+ function f(t) {
98
98
  try {
99
- r(e);
100
- var n = !1;
99
+ r(t);
100
+ var a = !1;
101
101
  } catch {
102
- n = !0;
102
+ a = !0;
103
103
  }
104
- if (n) {
105
- n = console;
106
- var f = n.error, g = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
107
- return f.call(
108
- n,
104
+ if (a) {
105
+ a = console;
106
+ var p = a.error, _ = typeof Symbol == "function" && Symbol.toStringTag && t[Symbol.toStringTag] || t.constructor.name || "Object";
107
+ return p.call(
108
+ a,
109
109
  "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
110
- g
111
- ), r(e);
110
+ _
111
+ ), r(t);
112
112
  }
113
113
  }
114
- function l(e) {
115
- if (e === E) return "<>";
116
- if (typeof e == "object" && e !== null && e.$$typeof === z)
114
+ function i(t) {
115
+ if (t === n) return "<>";
116
+ if (typeof t == "object" && t !== null && t.$$typeof === z)
117
117
  return "<...>";
118
118
  try {
119
- var n = t(e);
120
- return n ? "<" + n + ">" : "<...>";
119
+ var a = e(t);
120
+ return a ? "<" + a + ">" : "<...>";
121
121
  } catch {
122
122
  return "<...>";
123
123
  }
124
124
  }
125
- function s() {
126
- var e = G.A;
127
- return e === null ? null : e.getOwner();
125
+ function o() {
126
+ var t = ee.A;
127
+ return t === null ? null : t.getOwner();
128
128
  }
129
- function i() {
129
+ function h() {
130
130
  return Error("react-stack-top-frame");
131
131
  }
132
- function m(e) {
133
- if (ae.call(e, "key")) {
134
- var n = Object.getOwnPropertyDescriptor(e, "key").get;
135
- if (n && n.isReactWarning) return !1;
132
+ function d(t) {
133
+ if (H.call(t, "key")) {
134
+ var a = Object.getOwnPropertyDescriptor(t, "key").get;
135
+ if (a && a.isReactWarning) return !1;
136
136
  }
137
- return e.key !== void 0;
137
+ return t.key !== void 0;
138
138
  }
139
- function p(e, n) {
140
- function f() {
141
- oe || (oe = !0, console.error(
139
+ function l(t, a) {
140
+ function p() {
141
+ U || (U = !0, console.error(
142
142
  "%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)",
143
- n
143
+ a
144
144
  ));
145
145
  }
146
- f.isReactWarning = !0, Object.defineProperty(e, "key", {
147
- get: f,
146
+ p.isReactWarning = !0, Object.defineProperty(t, "key", {
147
+ get: p,
148
148
  configurable: !0
149
149
  });
150
150
  }
151
- function R() {
152
- var e = t(this.type);
153
- return se[e] || (se[e] = !0, console.error(
151
+ function x() {
152
+ var t = e(this.type);
153
+ return ue[t] || (ue[t] = !0, console.error(
154
154
  "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."
155
- )), e = this.props.ref, e !== void 0 ? e : null;
155
+ )), t = this.props.ref, t !== void 0 ? t : null;
156
156
  }
157
- function D(e, n, f, g, U, Q) {
158
- var y = f.ref;
159
- return e = {
160
- $$typeof: b,
161
- type: e,
162
- key: n,
163
- props: f,
164
- _owner: g
165
- }, (y !== void 0 ? y : null) !== null ? Object.defineProperty(e, "ref", {
157
+ function T(t, a, p, _, q, te) {
158
+ var b = p.ref;
159
+ return t = {
160
+ $$typeof: $,
161
+ type: t,
162
+ key: a,
163
+ props: p,
164
+ _owner: _
165
+ }, (b !== void 0 ? b : null) !== null ? Object.defineProperty(t, "ref", {
166
166
  enumerable: !1,
167
- get: R
168
- }) : Object.defineProperty(e, "ref", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, "validated", {
167
+ get: x
168
+ }) : Object.defineProperty(t, "ref", { enumerable: !1, value: null }), t._store = {}, Object.defineProperty(t._store, "validated", {
169
169
  configurable: !1,
170
170
  enumerable: !1,
171
171
  writable: !0,
172
172
  value: 0
173
- }), Object.defineProperty(e, "_debugInfo", {
173
+ }), Object.defineProperty(t, "_debugInfo", {
174
174
  configurable: !1,
175
175
  enumerable: !1,
176
176
  writable: !0,
177
177
  value: null
178
- }), Object.defineProperty(e, "_debugStack", {
178
+ }), Object.defineProperty(t, "_debugStack", {
179
179
  configurable: !1,
180
180
  enumerable: !1,
181
181
  writable: !0,
182
- value: U
183
- }), Object.defineProperty(e, "_debugTask", {
182
+ value: q
183
+ }), Object.defineProperty(t, "_debugTask", {
184
184
  configurable: !1,
185
185
  enumerable: !1,
186
186
  writable: !0,
187
- value: Q
188
- }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
187
+ value: te
188
+ }), Object.freeze && (Object.freeze(t.props), Object.freeze(t)), t;
189
189
  }
190
- function $(e, n, f, g, U, Q) {
191
- var y = n.children;
192
- if (y !== void 0)
193
- if (g)
194
- if (J(y)) {
195
- for (g = 0; g < y.length; g++)
196
- w(y[g]);
197
- Object.freeze && Object.freeze(y);
190
+ function j(t, a, p, _, q, te) {
191
+ var b = a.children;
192
+ if (b !== void 0)
193
+ if (_)
194
+ if (F(b)) {
195
+ for (_ = 0; _ < b.length; _++)
196
+ R(b[_]);
197
+ Object.freeze && Object.freeze(b);
198
198
  } else
199
199
  console.error(
200
200
  "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
201
201
  );
202
- else w(y);
203
- if (ae.call(n, "key")) {
204
- y = t(e);
205
- var j = Object.keys(n).filter(function(me) {
206
- return me !== "key";
202
+ else R(b);
203
+ if (H.call(a, "key")) {
204
+ b = e(t);
205
+ var G = Object.keys(a).filter(function(J) {
206
+ return J !== "key";
207
207
  });
208
- g = 0 < j.length ? "{key: someKey, " + j.join(": ..., ") + ": ...}" : "{key: someKey}", ie[y + g] || (j = 0 < j.length ? "{" + j.join(": ..., ") + ": ...}" : "{}", console.error(
208
+ _ = 0 < G.length ? "{key: someKey, " + G.join(": ..., ") + ": ...}" : "{key: someKey}", he[b + _] || (G = 0 < G.length ? "{" + G.join(": ..., ") + ": ...}" : "{}", console.error(
209
209
  `A props object containing a "key" prop is being spread into JSX:
210
210
  let props = %s;
211
211
  <%s {...props} />
212
212
  React keys must be passed directly to JSX without using spread:
213
213
  let props = %s;
214
214
  <%s key={someKey} {...props} />`,
215
- g,
216
- y,
217
- j,
218
- y
219
- ), ie[y + g] = !0);
215
+ _,
216
+ b,
217
+ G,
218
+ b
219
+ ), he[b + _] = !0);
220
220
  }
221
- if (y = null, f !== void 0 && (u(f), y = "" + f), m(n) && (u(n.key), y = "" + n.key), "key" in n) {
222
- f = {};
223
- for (var X in n)
224
- X !== "key" && (f[X] = n[X]);
225
- } else f = n;
226
- return y && p(
227
- f,
228
- typeof e == "function" ? e.displayName || e.name || "Unknown" : e
229
- ), D(
230
- e,
231
- y,
232
- f,
233
- s(),
234
- U,
235
- Q
221
+ if (b = null, p !== void 0 && (f(p), b = "" + p), d(a) && (f(a.key), b = "" + a.key), "key" in a) {
222
+ p = {};
223
+ for (var ne in a)
224
+ ne !== "key" && (p[ne] = a[ne]);
225
+ } else p = a;
226
+ return b && l(
227
+ p,
228
+ typeof t == "function" ? t.displayName || t.name || "Unknown" : t
229
+ ), T(
230
+ t,
231
+ b,
232
+ p,
233
+ o(),
234
+ q,
235
+ te
236
236
  );
237
237
  }
238
- function w(e) {
239
- T(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === z && (e._payload.status === "fulfilled" ? T(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
238
+ function R(t) {
239
+ Y(t) ? t._store && (t._store.validated = 1) : typeof t == "object" && t !== null && t.$$typeof === z && (t._payload.status === "fulfilled" ? Y(t._payload.value) && t._payload.value._store && (t._payload.value._store.validated = 1) : t._store && (t._store.validated = 1));
240
240
  }
241
- function T(e) {
242
- return typeof e == "object" && e !== null && e.$$typeof === b;
241
+ function Y(t) {
242
+ return typeof t == "object" && t !== null && t.$$typeof === $;
243
243
  }
244
- var a = Ie, b = Symbol.for("react.transitional.element"), o = Symbol.for("react.portal"), E = Symbol.for("react.fragment"), Y = Symbol.for("react.strict_mode"), d = Symbol.for("react.profiler"), v = Symbol.for("react.consumer"), S = Symbol.for("react.context"), O = Symbol.for("react.forward_ref"), V = Symbol.for("react.suspense"), I = Symbol.for("react.suspense_list"), x = Symbol.for("react.memo"), z = Symbol.for("react.lazy"), C = Symbol.for("react.activity"), N = Symbol.for("react.client.reference"), G = a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, ae = Object.prototype.hasOwnProperty, J = Array.isArray, Z = console.createTask ? console.createTask : function() {
244
+ var v = Le, $ = Symbol.for("react.transitional.element"), s = Symbol.for("react.portal"), n = Symbol.for("react.fragment"), u = Symbol.for("react.strict_mode"), y = Symbol.for("react.profiler"), m = Symbol.for("react.consumer"), N = Symbol.for("react.context"), O = Symbol.for("react.forward_ref"), W = Symbol.for("react.suspense"), k = Symbol.for("react.suspense_list"), S = Symbol.for("react.memo"), z = Symbol.for("react.lazy"), B = Symbol.for("react.activity"), M = Symbol.for("react.client.reference"), ee = v.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, H = Object.prototype.hasOwnProperty, F = Array.isArray, Z = console.createTask ? console.createTask : function() {
245
245
  return null;
246
246
  };
247
- a = {
248
- react_stack_bottom_frame: function(e) {
249
- return e();
247
+ v = {
248
+ react_stack_bottom_frame: function(t) {
249
+ return t();
250
250
  }
251
251
  };
252
- var oe, se = {}, le = a.react_stack_bottom_frame.bind(
253
- a,
254
- i
255
- )(), ce = Z(l(i)), ie = {};
256
- te.Fragment = E, te.jsx = function(e, n, f) {
257
- var g = 1e4 > G.recentlyCreatedOwnerStacks++;
258
- return $(
259
- e,
260
- n,
261
- f,
252
+ var U, ue = {}, de = v.react_stack_bottom_frame.bind(
253
+ v,
254
+ h
255
+ )(), fe = Z(i(h)), he = {};
256
+ le.Fragment = n, le.jsx = function(t, a, p) {
257
+ var _ = 1e4 > ee.recentlyCreatedOwnerStacks++;
258
+ return j(
259
+ t,
260
+ a,
261
+ p,
262
262
  !1,
263
- g ? Error("react-stack-top-frame") : le,
264
- g ? Z(l(e)) : ce
263
+ _ ? Error("react-stack-top-frame") : de,
264
+ _ ? Z(i(t)) : fe
265
265
  );
266
- }, te.jsxs = function(e, n, f) {
267
- var g = 1e4 > G.recentlyCreatedOwnerStacks++;
268
- return $(
269
- e,
270
- n,
271
- f,
266
+ }, le.jsxs = function(t, a, p) {
267
+ var _ = 1e4 > ee.recentlyCreatedOwnerStacks++;
268
+ return j(
269
+ t,
270
+ a,
271
+ p,
272
272
  !0,
273
- g ? Error("react-stack-top-frame") : le,
274
- g ? Z(l(e)) : ce
273
+ _ ? Error("react-stack-top-frame") : de,
274
+ _ ? Z(i(t)) : fe
275
275
  );
276
276
  };
277
- })()), te;
277
+ })()), le;
278
278
  }
279
279
  var we;
280
- function Ye() {
281
- return we || (we = 1, process.env.NODE_ENV === "production" ? he.exports = Me() : he.exports = Fe()), he.exports;
280
+ function Je() {
281
+ return we || (we = 1, process.env.NODE_ENV === "production" ? be.exports = Be() : be.exports = Ue()), be.exports;
282
282
  }
283
- var h = Ye();
284
- const Ve = ({ items: t, itemHeight: r, width: u, segmentWidth: l, color: s = "#a0aec0", strokeWidth: i = 1, renderFromY: m = 0, renderHeight: p, renderStartIndex: R, renderEndIndex: D, lookaheadEndIndex: $ }) => {
285
- const w = [], T = p ?? t.length * r, a = typeof R == "number" && Number.isFinite(R) ? Math.max(0, Math.floor(R)) : Math.max(0, Math.floor(m / r)), b = Math.min(t.length, Math.ceil((m + T) / r)), o = (() => {
286
- if (typeof D == "number" && Number.isFinite(D)) {
287
- const d = Math.floor(D);
288
- return Math.max(Math.min(t.length, d + 1), a);
283
+ var E = Je();
284
+ const We = ({ items: e, itemHeight: r, width: f, segmentWidth: i, color: o = "#a0aec0", strokeWidth: h = 1, renderFromY: d = 0, renderHeight: l, renderStartIndex: x, renderEndIndex: T, lookaheadEndIndex: j }) => {
285
+ const R = [], Y = l ?? e.length * r, v = typeof x == "number" && Number.isFinite(x) ? Math.max(0, Math.floor(x)) : Math.max(0, Math.floor(d / r)), $ = Math.min(e.length, Math.ceil((d + Y) / r)), s = (() => {
286
+ if (typeof T == "number" && Number.isFinite(T)) {
287
+ const y = Math.floor(T);
288
+ return Math.max(Math.min(e.length, y + 1), v);
289
289
  }
290
- return Math.max(b, a);
291
- })(), E = (() => {
292
- if (typeof $ == "number" && Number.isFinite($)) {
293
- const d = Math.floor($), v = Math.min(t.length, d + 1);
294
- return Math.max(v, o);
290
+ return Math.max($, v);
291
+ })(), n = (() => {
292
+ if (typeof j == "number" && Number.isFinite(j)) {
293
+ const y = Math.floor(j), m = Math.min(e.length, y + 1);
294
+ return Math.max(m, s);
295
295
  }
296
- return Math.max(b, o);
296
+ return Math.max($, s);
297
297
  })();
298
- for (let d = a; d < o; d++) {
299
- const v = t[d], S = d * r, O = S + r / 2;
300
- for (let x = 0; x < v.indentLevel; x++) {
301
- const z = x * l + l / 2;
302
- let C = !1;
303
- for (let N = d; N < E; N++) {
304
- if (t[N].indentLevel > x && t[N].ancestorIsLast.length > x && !t[N].ancestorIsLast[x]) {
305
- C = !0;
298
+ for (let y = v; y < s; y++) {
299
+ const m = e[y], N = y * r, O = N + r / 2;
300
+ for (let S = 0; S < m.indentLevel; S++) {
301
+ const z = S * i + i / 2;
302
+ let B = !1;
303
+ for (let M = y; M < n; M++) {
304
+ if (e[M].indentLevel > S && e[M].ancestorIsLast.length > S && !e[M].ancestorIsLast[S]) {
305
+ B = !0;
306
306
  break;
307
307
  }
308
- if (t[N].indentLevel === x && N > d)
308
+ if (e[M].indentLevel === S && M > y)
309
309
  break;
310
310
  }
311
- C && v.ancestorIsLast.length > x && !v.ancestorIsLast[x] && w.push(`M ${z},${S} L ${z},${S + r}`);
311
+ B && m.ancestorIsLast.length > S && !m.ancestorIsLast[S] && R.push(`M ${z},${N} L ${z},${N + r}`);
312
312
  }
313
- const V = v.indentLevel * l, I = V + l / 2;
314
- if (v.isDirectory) {
315
- const x = l / 1.5;
316
- w.push(`M ${I},${S} L ${I},${O - x}`);
313
+ const W = m.indentLevel * i, k = W + i / 2;
314
+ if (m.isDirectory) {
315
+ const S = i / 1.5;
316
+ R.push(`M ${k},${N} L ${k},${O - S}`);
317
317
  } else
318
- w.push(`M ${I},${S} L ${I},${O}`);
319
- if (v.isDirectory || v.isLastChild && w.push(`M ${I},${O} L ${V + l},${O}`), !v.isLastChild)
320
- if (v.isDirectory) {
321
- const x = l / 1.5;
322
- w.push(`M ${I},${O + x} L ${I},${S + r}`);
318
+ R.push(`M ${k},${N} L ${k},${O}`);
319
+ if (m.isDirectory || m.isLastChild && R.push(`M ${k},${O} L ${W + i},${O}`), !m.isLastChild)
320
+ if (m.isDirectory) {
321
+ const S = i / 1.5;
322
+ R.push(`M ${k},${O + S} L ${k},${N + r}`);
323
323
  } else
324
- w.push(`M ${I},${O} L ${I},${S + r}`);
324
+ R.push(`M ${k},${O} L ${k},${N + r}`);
325
325
  }
326
- const Y = t.length * r;
327
- return /* @__PURE__ */ h.jsxs(
326
+ const u = e.length * r;
327
+ return /* @__PURE__ */ E.jsxs(
328
328
  "svg",
329
329
  {
330
- width: u,
331
- height: p ?? Y,
332
- viewBox: `0 ${m} ${u} ${p ?? Y}`,
330
+ width: f,
331
+ height: l ?? u,
332
+ viewBox: `0 ${d} ${f} ${l ?? u}`,
333
333
  fill: "none",
334
334
  xmlns: "http://www.w3.org/2000/svg",
335
335
  className: "pointer-events-none absolute top-0 left-0 z-0 opacity-75",
336
336
  children: [
337
- /* @__PURE__ */ h.jsx("title", { children: "Tree Lines" }),
338
- w.map((d, v) => /* @__PURE__ */ h.jsx("path", { d, stroke: s, strokeWidth: i, strokeLinecap: "round", strokeLinejoin: "round" }, `path-${t[a + v]?.id || v}-${a + v}`))
337
+ /* @__PURE__ */ E.jsx("title", { children: "Tree Lines" }),
338
+ R.map((y, m) => /* @__PURE__ */ E.jsx("path", { d: y, stroke: o, strokeWidth: h, strokeLinecap: "round", strokeLinejoin: "round" }, `path-${e[v + m]?.id || m}-${v + m}`))
339
339
  ]
340
340
  }
341
341
  );
342
342
  }, A = {
343
343
  container: "directory-tree-container relative h-full transition-opacity duration-300 overflow-y-hidden pb-[5px] pr-[3px]",
344
344
  containerPending: "opacity-70",
345
- entry: "flex items-center cursor-pointer relative select-none",
345
+ entry: "directory-tree-entry flex items-center cursor-pointer relative select-none",
346
346
  // ホバー時のスタイル(ライト/ダークモード対応)
347
- entryHover: P("hover:bg-gray-400/15", "dark:hover:bg-gray-200/10"),
347
+ entryHover: P("directory-tree-entry--hover hover:bg-gray-400/15", "dark:hover:bg-gray-200/10"),
348
348
  // 選択時のスタイル(ライト/ダークモード対応)
349
- entrySelected: P("bg-blue-400/10", "dark:bg-blue-400/15"),
349
+ entrySelected: P("directory-tree-entry--selected bg-blue-400/10", "dark:bg-blue-400/15"),
350
350
  // アイテム選択時のスタイル(ライト/ダークモード対応)
351
- entryItemSelected: P("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)]"),
351
+ entryItemSelected: P(
352
+ "directory-tree-entry--item-selected bg-blue-400/20 shadow-[0_0_0_1px_rgba(59,130,246,0.3)]",
353
+ "dark:bg-blue-400/25 dark:shadow-[0_0_0_1px_rgba(96,165,250,0.4)]"
354
+ ),
352
355
  // アイコンのスタイル
353
- expandIcon: P("w-5 h-5 flex-shrink-0 flex items-center justify-center", "text-gray-500", "dark:text-gray-400"),
354
- expandIconSelected: P("text-blue-700", "dark:text-blue-400"),
355
- typeIcon: P("w-5 h-5 flex-shrink-0 flex items-center justify-center", "text-gray-500", "dark:text-gray-400"),
356
- typeIconSelected: P("text-blue-700", "dark:text-blue-400"),
356
+ expandIcon: P("directory-tree-expand-icon w-5 h-5 flex-shrink-0 flex items-center justify-center", "text-gray-500", "dark:text-gray-400"),
357
+ expandIconSelected: P("directory-tree-expand-icon--selected text-blue-700", "dark:text-blue-400"),
358
+ typeIcon: P("directory-tree-type-icon w-5 h-5 flex-shrink-0 flex items-center justify-center", "text-gray-500", "dark:text-gray-400"),
359
+ typeIconSelected: P("directory-tree-type-icon--selected text-blue-700", "dark:text-blue-400"),
357
360
  // テキストのスタイル
358
- name: P("overflow-hidden text-ellipsis whitespace-nowrap ml-1", "text-gray-700", "dark:text-gray-200"),
359
- nameDirectory: "font-bold",
360
- nameSelected: P("text-blue-800 font-medium", "dark:text-blue-300")
361
- }, Se = {
361
+ name: P("directory-tree-name overflow-hidden text-ellipsis whitespace-nowrap ml-1", "text-gray-700", "dark:text-gray-200"),
362
+ nameDirectory: "directory-tree-name--directory",
363
+ nameSelected: P("directory-tree-name--selected text-blue-800 font-medium", "dark:text-blue-300")
364
+ }, Ee = {
362
365
  msOverflowStyle: "none",
363
366
  scrollbarWidth: "none"
364
- }, ze = () => {
365
- let t = document.getElementById("directory-tree-webkit-scrollbar-hide");
366
- t || (t = document.createElement("style"), t.id = "directory-tree-webkit-scrollbar-hide", t.textContent = ".directory-tree-container::-webkit-scrollbar { display: none; }", document.head.appendChild(t));
367
- }, Ue = (t = !1, r = !1, u = !1) => P(A.entry, t && A.entryHover, r && A.entrySelected, u && A.entryItemSelected), Be = (t = !1) => P(A.expandIcon, t && A.expandIconSelected), Je = (t = !1) => P(A.typeIcon, t && A.typeIconSelected), We = (t = !1, r = !1) => P(A.name, t && A.nameDirectory, r && A.nameSelected), qe = Oe, He = (t) => t.slice((t.lastIndexOf(".") - 1 >>> 0) + 2).toLowerCase(), ye = Ce(
368
- ({ entry: t, indentLevel: r, isDirOpen: u, onFileSelect: l, toggleDirectory: s, onToggleDirectoryRecursive: i, selectedPath: m, parentIsLast: p, renderChildren: R = !0, selectionMode: D = "none", selectedItems: $, onSelectionChange: w }) => {
369
- const T = ve(null), [a, b] = H(null);
370
- ne(() => () => {
371
- T.current && window.clearTimeout(T.current);
367
+ }, qe = () => {
368
+ let e = document.getElementById("directory-tree-webkit-scrollbar-hide");
369
+ 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));
370
+ }, Ge = (e = !1, r = !1, f = !1) => P(A.entry, e && A.entryHover, r && A.entrySelected, f && A.entryItemSelected), Xe = (e = !1) => P(A.expandIcon, e && A.expandIconSelected), He = (e = !1) => P(A.typeIcon, e && A.typeIconSelected), Ze = (e = !1, r = !1) => P(A.name, e && A.nameDirectory, r && A.nameSelected), Qe = De, Ke = (e) => e.slice((e.lastIndexOf(".") - 1 >>> 0) + 2).toLowerCase(), ce = (e, r) => e ? typeof e == "function" ? e(r) ?? null : e : null, et = (e, r) => {
371
+ const { entry: f, isDirectory: i, isExpanded: o, extension: h } = e, d = ce(f.icon, e);
372
+ if (d)
373
+ return d;
374
+ if (i) {
375
+ const x = o ? ce(r?.directoryExpanded, e) : null;
376
+ if (x)
377
+ return x;
378
+ const T = ce(r?.directory, e);
379
+ return T || /* @__PURE__ */ E.jsx(Ye, { className: "h-4 w-4" });
380
+ }
381
+ if (h) {
382
+ const x = ce(r?.fileByExtension?.[h], e);
383
+ if (x)
384
+ return x;
385
+ }
386
+ const l = ce(r?.file, e);
387
+ return l || (h === "md" ? /* @__PURE__ */ E.jsx(Ve, { className: "h-4 w-4" }) : /* @__PURE__ */ E.jsx(ze, { className: "h-4 w-4" }));
388
+ }, ve = Ae(
389
+ ({ entry: e, indentLevel: r, isDirOpen: f, onFileSelect: i, toggleDirectory: o, onToggleDirectoryRecursive: h, selectedPath: d, parentIsLast: l, renderChildren: x = !0, selectionMode: T = "none", selectedItems: j, onSelectionChange: R, iconOverrides: Y }) => {
390
+ const v = pe(null), [$, s] = K(null);
391
+ re(() => () => {
392
+ v.current && window.clearTimeout(v.current);
372
393
  }, []);
373
- const o = t.children !== void 0, E = o && u(t.absolutePath, t.relativePath), Y = t.absolutePath === m, d = !o && $?.has(t.absolutePath);
374
- ne(() => {
375
- E && t.children ? Promise.resolve().then(() => {
376
- b(t.children ?? []);
377
- }) : b(null);
378
- }, [E, t.children]);
379
- const v = F(
380
- (C) => {
381
- C.stopPropagation(), D !== "none" && !o && w && w(t.absolutePath, !d), o ? T.current ? (window.clearTimeout(T.current), T.current = null, i(t)) : T.current = window.setTimeout(() => {
382
- s(t.absolutePath, t.relativePath), T.current = null;
383
- }, 500) : l(t.absolutePath, t.relativePath);
394
+ const n = e.children !== void 0, u = n && f(e.absolutePath, e.relativePath), y = e.absolutePath === d, m = !n && j?.has(e.absolutePath), N = n ? void 0 : Ke(e.name);
395
+ re(() => {
396
+ u && e.children ? Promise.resolve().then(() => {
397
+ s(e.children ?? []);
398
+ }) : s(null);
399
+ }, [u, e.children]);
400
+ const O = L(
401
+ (F) => {
402
+ F.stopPropagation(), T !== "none" && !n && R && R(e.absolutePath, !m), n ? v.current ? (window.clearTimeout(v.current), v.current = null, h(e)) : v.current = window.setTimeout(() => {
403
+ o(e.absolutePath, e.relativePath), v.current = null;
404
+ }, 500) : i(e.absolutePath, e.relativePath);
384
405
  },
385
- [o, t, i, s, l, D, w, d]
386
- ), [S, O] = H(!1), V = Ue(S, Y, d), I = Be(Y || d), x = Je(Y || d), z = We(o, Y || d);
387
- return /* @__PURE__ */ h.jsxs(je, { children: [
388
- /* @__PURE__ */ h.jsxs(
406
+ [n, e, h, o, i, T, R, m]
407
+ ), [W, k] = K(!1), S = Ge(W, y, m), z = Xe(y || m), B = He(y || m), M = Ze(n, y || m), H = et({
408
+ entry: e,
409
+ isDirectory: n,
410
+ isExpanded: u,
411
+ isSelected: y,
412
+ isItemSelected: !!m,
413
+ extension: N
414
+ }, Y);
415
+ return /* @__PURE__ */ E.jsxs(Oe, { children: [
416
+ /* @__PURE__ */ E.jsxs(
389
417
  "div",
390
418
  {
391
- className: V,
419
+ className: S,
392
420
  style: {
393
- paddingLeft: `${r * ge}px`,
394
- height: `${re}px`
421
+ paddingLeft: `${r * xe}px`,
422
+ height: `${ie}px`
395
423
  },
396
- onClick: v,
397
- onMouseEnter: () => O(!0),
398
- onMouseLeave: () => O(!1),
399
- onKeyDown: (C) => {
400
- C.key === "Enter" && v(C);
424
+ "data-entry-type": n ? "directory" : "file",
425
+ "data-entry-expanded": n ? u ? "true" : "false" : void 0,
426
+ "data-entry-selected": y ? "true" : void 0,
427
+ "data-entry-item-selected": m ? "true" : void 0,
428
+ onClick: O,
429
+ onMouseEnter: () => k(!0),
430
+ onMouseLeave: () => k(!1),
431
+ onKeyDown: (F) => {
432
+ F.key === "Enter" && O(F);
401
433
  },
402
434
  tabIndex: 0,
403
435
  role: "treeitem",
404
- "aria-expanded": o ? E : void 0,
405
- "aria-label": `${t.name} (${o ? "directory" : "file"})`,
436
+ "aria-expanded": n ? u : void 0,
437
+ "aria-label": `${e.name} (${n ? "directory" : "file"})`,
406
438
  children: [
407
- /* @__PURE__ */ h.jsx("span", { className: I, children: o ? E ? /* @__PURE__ */ h.jsx(Ne, { className: "h-4 w-4" }) : /* @__PURE__ */ h.jsx(Le, { className: "h-4 w-4" }) : /* @__PURE__ */ h.jsx("span", { className: "w-4" }) }),
408
- /* @__PURE__ */ h.jsx("span", { className: x, children: o ? /* @__PURE__ */ h.jsx(Ae, { className: "h-4 w-4" }) : (() => {
409
- switch (He(t.name)) {
410
- case "md":
411
- return /* @__PURE__ */ h.jsx(De, { className: "h-4 w-4" });
412
- default:
413
- return /* @__PURE__ */ h.jsx(Pe, { className: "h-4 w-4" });
414
- }
415
- })() }),
416
- /* @__PURE__ */ h.jsx("span", { className: z, children: t.name })
439
+ /* @__PURE__ */ E.jsx("span", { className: z, children: n ? u ? /* @__PURE__ */ E.jsx(Pe, { className: "h-4 w-4" }) : /* @__PURE__ */ E.jsx(Fe, { className: "h-4 w-4" }) : /* @__PURE__ */ E.jsx("span", { className: "w-4" }) }),
440
+ /* @__PURE__ */ E.jsx("span", { className: B, children: H }),
441
+ /* @__PURE__ */ E.jsx("span", { className: M, "data-entry-type": n ? "directory" : "file", "data-entry-role": "name", children: e.name })
417
442
  ]
418
443
  }
419
444
  ),
420
- E && a && R && /* @__PURE__ */ h.jsx("fieldset", { children: a.map((C, N) => /* @__PURE__ */ h.jsx(
421
- ye,
445
+ u && $ && x && /* @__PURE__ */ E.jsx("fieldset", { children: $.map((F, Z) => /* @__PURE__ */ E.jsx(
446
+ ve,
422
447
  {
423
- entry: C,
448
+ entry: F,
424
449
  indentLevel: r + 1,
425
- isDirOpen: u,
426
- onFileSelect: l,
427
- toggleDirectory: s,
428
- onToggleDirectoryRecursive: i,
429
- selectedPath: m,
430
- parentIsLast: [...p, N === (a || []).length - 1],
431
- selectionMode: D,
432
- selectedItems: $,
433
- onSelectionChange: w
450
+ isDirOpen: f,
451
+ onFileSelect: i,
452
+ toggleDirectory: o,
453
+ onToggleDirectoryRecursive: h,
454
+ selectedPath: d,
455
+ parentIsLast: [...l, Z === ($ || []).length - 1],
456
+ selectionMode: T,
457
+ selectedItems: j,
458
+ onSelectionChange: R,
459
+ iconOverrides: Y
434
460
  },
435
- C.absolutePath
461
+ F.absolutePath
436
462
  )) })
437
- ] }, t.absolutePath);
463
+ ] }, e.absolutePath);
438
464
  },
439
- (t, r) => {
440
- if (t.entry.absolutePath !== r.entry.absolutePath || t.entry.relativePath !== r.entry.relativePath || t.entry.name !== r.entry.name || t.entry.type !== r.entry.type || t.entry.children === void 0 != (r.entry.children === void 0))
465
+ (e, r) => {
466
+ if (e.entry.absolutePath !== r.entry.absolutePath || e.entry.relativePath !== r.entry.relativePath || e.entry.name !== r.entry.name || e.entry.type !== r.entry.type || e.entry.icon !== r.entry.icon || e.entry.children === void 0 != (r.entry.children === void 0))
441
467
  return !1;
442
- const u = t.entry.children !== void 0, l = r.entry.children !== void 0, s = u && t.isDirOpen(t.entry.absolutePath, t.entry.relativePath), i = l && r.isDirOpen(r.entry.absolutePath, r.entry.relativePath);
443
- if (t.indentLevel !== r.indentLevel || s !== i || t.selectedPath !== r.selectedPath || t.onFileSelect !== r.onFileSelect || // onFileSelect はメモ化されていることを期待
444
- t.toggleDirectory !== r.toggleDirectory || // toggleDirectory はメモ化されていることを期待
445
- t.onToggleDirectoryRecursive !== r.onToggleDirectoryRecursive || t.selectionMode !== r.selectionMode || t.selectedItems !== r.selectedItems || t.onSelectionChange !== r.onSelectionChange || t.parentIsLast.length !== r.parentIsLast.length)
468
+ const f = e.entry.children !== void 0, i = r.entry.children !== void 0, o = f && e.isDirOpen(e.entry.absolutePath, e.entry.relativePath), h = i && r.isDirOpen(r.entry.absolutePath, r.entry.relativePath);
469
+ if (e.indentLevel !== r.indentLevel || o !== h || e.selectedPath !== r.selectedPath || e.onFileSelect !== r.onFileSelect || // onFileSelect はメモ化されていることを期待
470
+ e.toggleDirectory !== r.toggleDirectory || // toggleDirectory はメモ化されていることを期待
471
+ e.onToggleDirectoryRecursive !== r.onToggleDirectoryRecursive || e.selectionMode !== r.selectionMode || e.selectedItems !== r.selectedItems || e.onSelectionChange !== r.onSelectionChange || e.iconOverrides !== r.iconOverrides || e.parentIsLast.length !== r.parentIsLast.length)
446
472
  return !1;
447
- for (let m = 0; m < t.parentIsLast.length; m++)
448
- if (t.parentIsLast[m] !== r.parentIsLast[m])
473
+ for (let d = 0; d < e.parentIsLast.length; d++)
474
+ if (e.parentIsLast[d] !== r.parentIsLast[d])
449
475
  return !1;
450
476
  return !0;
451
477
  }
452
478
  );
453
- ye.displayName = "DirectoryEntryItem";
454
- const re = 20, ge = 16, _e = (t) => {
479
+ ve.displayName = "DirectoryEntryItem";
480
+ const ie = 20, xe = 16, Te = (e) => {
455
481
  const r = [];
456
- if (t.children)
457
- for (const u of t.children)
458
- u.type === "directory" && (r.push(u.absolutePath), r.push(..._e(u)));
482
+ if (e.children)
483
+ for (const f of e.children)
484
+ f.type === "directory" && (r.push(f.absolutePath), r.push(...Te(f)));
459
485
  return r;
460
- }, ke = (t, r, u = [], l = 0) => t.flatMap((s, i) => {
461
- const m = i === t.length - 1, p = [...u, m], R = { entry: s, indentLevel: l, parentIsLast: p };
462
- return s.children && s.children.length > 0 && r(s.absolutePath, s.relativePath) ? [R, ...ke(s.children, r, p, l + 1)] : [R];
463
- }), et = ({
464
- entries: t,
486
+ }, Ce = (e, r, f = [], i = 0) => e.flatMap((o, h) => {
487
+ const d = h === e.length - 1, l = [...f, d], x = { entry: o, indentLevel: i, parentIsLast: l };
488
+ return o.children && o.children.length > 0 && r(o.absolutePath, o.relativePath) ? [x, ...Ce(o.children, r, l, i + 1)] : [x];
489
+ }), st = ({
490
+ entries: e,
465
491
  onFileSelect: r,
466
- className: u,
467
- style: l,
468
- selectedPath: s,
469
- toggle: i,
470
- isExpanded: m,
471
- expandMultiple: p,
472
- collapseMultiple: R,
473
- isPending: D,
474
- doubleClickAction: $ = "recursive",
475
- selectionMode: w = "none",
476
- selectedItems: T,
477
- onSelectionChange: a,
478
- lineColor: b = "#A0AEC0",
479
- virtualScrollOptions: o
492
+ className: f,
493
+ style: i,
494
+ selectedPath: o,
495
+ toggle: h,
496
+ isExpanded: d,
497
+ expandMultiple: l,
498
+ collapseMultiple: x,
499
+ isPending: T,
500
+ doubleClickAction: j = "recursive",
501
+ selectionMode: R = "none",
502
+ selectedItems: Y,
503
+ onSelectionChange: v,
504
+ lineColor: $ = "#A0AEC0",
505
+ virtualScrollOptions: s,
506
+ viewportHeightOverride: n,
507
+ iconOverrides: u
480
508
  }) => {
481
- const [E, Y] = H(!1), d = ve(null), v = ve(null), [S, O] = H(0), [V, I] = H(null), {
482
- overscanCount: x,
483
- className: z,
484
- background: C,
485
- onScroll: N,
486
- onRangeChange: G,
487
- initialScrollIndex: ae,
488
- initialScrollOffset: J,
489
- tapScrollCircleOptions: Z,
490
- scrollBarWidth: oe,
491
- enableThumbDrag: se,
492
- enableTrackClick: le,
493
- enableArrowButtons: ce,
494
- enablePointerDrag: ie,
495
- inertiaOptions: e
496
- } = o ?? {}, n = typeof J == "number" ? J : 0, [f, g] = H(n), U = typeof x == "number" ? x : 10, Q = F(
497
- (c, _) => {
498
- g(c), N?.(c, _);
509
+ const [y, m] = K(!1), N = pe(null), O = pe(null), [W, k] = K(0), [S, z] = K(null), {
510
+ overscanCount: B,
511
+ className: M,
512
+ background: ee,
513
+ onScroll: H,
514
+ onRangeChange: F,
515
+ initialScrollIndex: Z,
516
+ initialScrollOffset: U,
517
+ tapScrollCircleOptions: ue,
518
+ scrollBarWidth: de,
519
+ enableThumbDrag: fe,
520
+ enableTrackClick: he,
521
+ enableArrowButtons: t,
522
+ enablePointerDrag: a,
523
+ inertiaOptions: p
524
+ } = s ?? {}, _ = typeof U == "number" ? U : 0, [q, te] = K(_), b = typeof B == "number" ? B : 10, G = L(
525
+ (c, w) => {
526
+ te(c), H?.(c, w);
499
527
  },
500
- [N]
501
- ), y = F(
502
- (c, _, L, k, M, W) => {
503
- I((B) => B && B.renderStart === c && B.renderEnd === _ ? B : { renderStart: c, renderEnd: _ }), G?.(c, _, L, k, M, W);
528
+ [H]
529
+ ), ne = L(
530
+ (c, w, C, g, I, V) => {
531
+ z((D) => D && D.renderStart === c && D.renderEnd === w ? D : { renderStart: c, renderEnd: w }), F?.(c, w, C, g, I, V);
504
532
  },
505
- [G]
533
+ [F]
506
534
  );
507
- ne(() => {
508
- typeof J == "number" && g(J);
509
- }, [J]), ne(() => {
510
- if (Y(!0), ze(), d.current) {
511
- O(d.current.clientHeight);
512
- const c = new ResizeObserver((_) => {
513
- for (const L of _)
514
- O(L.contentRect.height);
515
- });
516
- return c.observe(d.current), () => c.disconnect();
535
+ re(() => {
536
+ typeof U == "number" && te(U);
537
+ }, [U]), re(() => {
538
+ m(!0), qe();
539
+ }, []), re(() => {
540
+ if (typeof n == "number") {
541
+ k((g) => Math.abs(g - n) > 1 ? n : g);
542
+ return;
517
543
  }
518
- }, []);
519
- const j = F(
520
- (c) => E ? m(c) : !1,
521
- [E, m]
522
- ), X = D ? `${A.container} ${A.containerPending}` : A.container, me = F(
523
- (c, _) => {
524
- const L = _e(c), k = [c.absolutePath, ...L], M = _ || $;
525
- k.every((B) => j(B)) ? R(k) : k.every((K) => !j(K)) || M === "recursive" ? p(k) : M === "toggle" ? R(k) : console.warn(`[DirectoryTree] Unknown double click action: ${M}. No action taken.`);
544
+ const c = N.current;
545
+ if (!c) {
546
+ k(0);
547
+ return;
548
+ }
549
+ (() => {
550
+ const g = c.clientHeight;
551
+ k((I) => Math.abs(I - g) > 1 ? g : I);
552
+ })();
553
+ const C = new ResizeObserver((g) => {
554
+ for (const I of g)
555
+ if (I.target === c) {
556
+ const { height: V } = I.contentRect;
557
+ k((D) => Math.abs(D - V) > 1 ? V : D);
558
+ }
559
+ });
560
+ return C.observe(c), () => {
561
+ C.disconnect();
562
+ };
563
+ }, [n]);
564
+ const J = typeof n == "number" ? n : W, X = L(
565
+ (c) => y ? d(c) : !1,
566
+ [y, d]
567
+ ), Se = T ? `${A.container} ${A.containerPending}` : A.container, _e = oe(() => typeof n == "number" ? {
568
+ ...Ee,
569
+ ...i ?? {},
570
+ height: n,
571
+ minHeight: n
572
+ } : i ? {
573
+ ...Ee,
574
+ ...i
575
+ } : { ...Ee }, [i, n]), je = L(
576
+ (c, w) => {
577
+ const C = Te(c), g = [c.absolutePath, ...C], I = w || j;
578
+ g.every((D) => X(D)) ? x(g) : g.every((ae) => !X(ae)) || I === "recursive" ? l(g) : I === "toggle" ? x(g) : console.warn(`[DirectoryTree] Unknown double click action: ${I}. No action taken.`);
526
579
  },
527
- [j, p, R, $]
528
- ), ue = fe(() => {
529
- if (t.length === 0)
580
+ [X, l, x, j]
581
+ ), me = oe(() => {
582
+ if (e.length === 0)
530
583
  return [];
531
584
  const c = [];
532
- function _(L, k, M) {
533
- L.forEach((W, B) => {
534
- const K = W.children !== void 0, be = W.absolutePath, pe = K && j(be), Te = {
535
- id: be,
536
- name: W.name,
537
- absolutePath: be,
538
- indentLevel: k,
539
- isLastChild: B === L.length - 1,
540
- isDirectory: K,
541
- isExpanded: pe,
542
- ancestorIsLast: [...M]
585
+ function w(C, g, I) {
586
+ C.forEach((V, D) => {
587
+ const ae = V.children !== void 0, ge = V.absolutePath, Re = ae && X(ge), Ne = {
588
+ id: ge,
589
+ name: V.name,
590
+ absolutePath: ge,
591
+ indentLevel: g,
592
+ isLastChild: D === C.length - 1,
593
+ isDirectory: ae,
594
+ isExpanded: Re,
595
+ ancestorIsLast: [...I]
543
596
  // 祖先の状態をコピーして渡す
544
597
  };
545
- c.push(Te), K && pe && W.children && _(W.children, k + 1, [...M, B === L.length - 1]);
598
+ c.push(Ne), ae && Re && V.children && w(V.children, g + 1, [...I, D === C.length - 1]);
546
599
  });
547
600
  }
548
- return _(t, 0, []), c;
549
- }, [t, j]), q = fe(() => ke(t, j), [t, j]), de = fe(() => {
550
- if (t.length === 0)
601
+ return w(e, 0, []), c;
602
+ }, [e, X]), Q = oe(() => Ce(e, X), [e, X]), ye = oe(() => {
603
+ if (e.length === 0)
551
604
  return 0;
552
605
  let c = 0;
553
- for (const _ of ue)
554
- _.indentLevel > c && (c = _.indentLevel);
555
- return (c + 2) * ge;
556
- }, [ue, t]), Re = fe(() => {
557
- if (de <= 0 || S <= 0)
606
+ for (const w of me)
607
+ w.indentLevel > c && (c = w.indentLevel);
608
+ return (c + 2) * xe;
609
+ }, [me, e]), $e = oe(() => {
610
+ if (ye <= 0 || J <= 0)
558
611
  return null;
559
- const c = V?.renderStart ?? Math.max(0, Math.floor(f / re)), _ = S > 0 ? Math.ceil(S / re) + U : U, L = q.length > 0 ? Math.min(q.length - 1, c + _) : c, k = V?.renderEnd ?? L, M = q.length > 0 ? Math.min(q.length - 1, k + U) : k;
560
- return /* @__PURE__ */ h.jsx("div", { className: "pointer-events-none absolute inset-0 z-0", "aria-hidden": "true", children: /* @__PURE__ */ h.jsx("div", { className: "absolute top-0 left-0", style: { width: de, height: S }, children: /* @__PURE__ */ h.jsx(
561
- Ve,
612
+ const c = S?.renderStart ?? Math.max(0, Math.floor(q / ie)), w = J > 0 ? Math.ceil(J / ie) + b : b, C = Q.length > 0 ? Math.min(Q.length - 1, c + w) : c, g = S?.renderEnd ?? C, I = Q.length > 0 ? Math.min(Q.length - 1, g + b) : g;
613
+ return /* @__PURE__ */ E.jsx("div", { className: "pointer-events-none absolute inset-0 z-0", "aria-hidden": "true", children: /* @__PURE__ */ E.jsx("div", { className: "absolute top-0 left-0", style: { width: ye, height: J }, children: /* @__PURE__ */ E.jsx(
614
+ We,
562
615
  {
563
- items: ue,
564
- itemHeight: re,
565
- width: de,
566
- segmentWidth: ge,
567
- color: b,
568
- renderFromY: f,
569
- renderHeight: S,
616
+ items: me,
617
+ itemHeight: ie,
618
+ width: ye,
619
+ segmentWidth: xe,
620
+ color: $,
621
+ renderFromY: q,
622
+ renderHeight: J,
570
623
  renderStartIndex: c,
571
- renderEndIndex: k,
572
- lookaheadEndIndex: M
624
+ renderEndIndex: g,
625
+ lookaheadEndIndex: I
573
626
  }
574
627
  ) }) });
575
- }, [de, S, V, f, U, q.length, ue, b]);
576
- return t.length === 0 ? /* @__PURE__ */ h.jsx("div", { className: `${X} ${u || ""}`, style: { ...l, ...Se } }) : /* @__PURE__ */ h.jsx("div", { ref: d, className: `${X} ${u || ""}`, style: { ...l, ...Se }, role: "tree", children: /* @__PURE__ */ h.jsx(
577
- qe,
628
+ }, [ye, J, S, q, b, Q.length, me, $]);
629
+ return e.length === 0 ? /* @__PURE__ */ E.jsx("div", { className: `${Se} ${f || ""}`, style: _e }) : /* @__PURE__ */ E.jsx("div", { ref: N, className: `${Se} ${f || ""}`, style: _e, role: "tree", children: /* @__PURE__ */ E.jsx(
630
+ Qe,
578
631
  {
579
- ref: v,
580
- itemCount: q.length,
581
- getItem: (c) => q[c],
582
- getItemHeight: () => re,
583
- viewportSize: S,
584
- overscanCount: U,
585
- onScroll: Q,
586
- onRangeChange: y,
587
- className: z,
588
- background: /* @__PURE__ */ h.jsxs(h.Fragment, { children: [
589
- Re,
590
- C
632
+ ref: O,
633
+ itemCount: Q.length,
634
+ getItem: (c) => Q[c],
635
+ getItemHeight: () => ie,
636
+ viewportSize: J,
637
+ overscanCount: b,
638
+ onScroll: G,
639
+ onRangeChange: ne,
640
+ className: M,
641
+ background: /* @__PURE__ */ E.jsxs(E.Fragment, { children: [
642
+ $e,
643
+ ee
591
644
  ] }),
592
- initialScrollIndex: ae,
593
- initialScrollOffset: J,
594
- tapScrollCircleOptions: Z,
595
- scrollBarWidth: oe,
596
- enableThumbDrag: se,
597
- enableTrackClick: le,
598
- enableArrowButtons: ce,
599
- enablePointerDrag: ie,
600
- inertiaOptions: e,
601
- children: (c, _) => {
645
+ initialScrollIndex: Z,
646
+ initialScrollOffset: U,
647
+ tapScrollCircleOptions: ue,
648
+ scrollBarWidth: de,
649
+ enableThumbDrag: fe,
650
+ enableTrackClick: he,
651
+ enableArrowButtons: t,
652
+ enablePointerDrag: a,
653
+ inertiaOptions: p,
654
+ children: (c, w) => {
602
655
  if (!c)
603
656
  return null;
604
- const { entry: L, indentLevel: k, parentIsLast: M } = c;
605
- return /* @__PURE__ */ h.jsx(
606
- ye,
657
+ const { entry: C, indentLevel: g, parentIsLast: I } = c;
658
+ return /* @__PURE__ */ E.jsx(
659
+ ve,
607
660
  {
608
- entry: L,
609
- indentLevel: k,
610
- isDirOpen: j,
661
+ entry: C,
662
+ indentLevel: g,
663
+ isDirOpen: X,
611
664
  onFileSelect: r,
612
- toggleDirectory: i,
613
- onToggleDirectoryRecursive: me,
614
- selectedPath: s,
615
- parentIsLast: M,
665
+ toggleDirectory: h,
666
+ onToggleDirectoryRecursive: je,
667
+ selectedPath: o,
668
+ parentIsLast: I,
616
669
  renderChildren: !1,
617
- selectionMode: w,
618
- selectedItems: T,
619
- onSelectionChange: a
670
+ selectionMode: R,
671
+ selectedItems: Y,
672
+ onSelectionChange: v,
673
+ iconOverrides: u
620
674
  },
621
- L.absolutePath
675
+ C.absolutePath
622
676
  );
623
677
  }
624
678
  }
625
679
  ) });
626
- }, tt = ({
627
- initialExpanded: t = /* @__PURE__ */ new Set(),
680
+ }, lt = ({
681
+ initialExpanded: e = /* @__PURE__ */ new Set(),
628
682
  storageKey: r
629
683
  } = {}) => {
630
- const [u, l] = $e(), [s, i] = H(() => {
684
+ const [f, i] = Me(), [o, h] = K(() => {
631
685
  if (typeof window < "u" && r)
632
686
  try {
633
- const a = window.localStorage.getItem(r);
634
- if (a) {
635
- const b = JSON.parse(a);
636
- return new Set(b);
687
+ const s = window.localStorage.getItem(r);
688
+ if (s) {
689
+ const n = JSON.parse(s);
690
+ return new Set(n);
637
691
  }
638
- } catch (a) {
639
- console.error("[useDirectoryTreeState] Error reading from localStorage", a);
692
+ } catch (s) {
693
+ console.error("[useDirectoryTreeState] Error reading from localStorage", s);
640
694
  }
641
- return t;
642
- });
643
- ne(() => {
695
+ return e;
696
+ }), d = L((s) => {
697
+ i(() => {
698
+ h((n) => {
699
+ const u = new Set(n);
700
+ return s(u), u;
701
+ });
702
+ });
703
+ }, []), l = L((s, n) => {
704
+ d((u) => {
705
+ for (const y of s)
706
+ n(u, y);
707
+ });
708
+ }, [d]);
709
+ re(() => {
644
710
  if (r && typeof window < "u")
645
711
  try {
646
- window.localStorage.setItem(r, JSON.stringify(Array.from(s)));
647
- } catch (a) {
648
- console.warn(`Error setting localStorage key "${r}":`, a);
712
+ window.localStorage.setItem(r, JSON.stringify(Array.from(o)));
713
+ } catch (s) {
714
+ console.warn(`Error setting localStorage key "${r}":`, s);
649
715
  }
650
- }, [s, r]);
651
- const m = F((a) => {
652
- l(() => {
653
- i((b) => {
654
- const o = new Set(b);
655
- return o.has(a) ? o.delete(a) : o.add(a), o;
656
- });
716
+ }, [o, r]);
717
+ const x = L((s) => {
718
+ l([s], (n, u) => {
719
+ n.has(u) ? n.delete(u) : n.add(u);
657
720
  });
658
- }, []), p = F((a) => {
659
- l(() => {
660
- i((b) => {
661
- const o = new Set(b);
662
- return o.has(a) || o.add(a), o;
663
- });
721
+ }, [l]), T = L((s) => {
722
+ l([s], (n, u) => {
723
+ n.add(u);
664
724
  });
665
- }, []), R = F((a) => {
666
- l(() => {
667
- i((b) => {
668
- const o = new Set(b);
669
- return o.has(a) && o.delete(a), o;
670
- });
725
+ }, [l]), j = L((s) => {
726
+ l([s], (n, u) => {
727
+ n.delete(u);
671
728
  });
672
- }, []), D = F((a) => {
673
- l(() => {
674
- i((b) => {
675
- const o = new Set(b);
676
- for (const E of a)
677
- o.has(E) && o.delete(E);
678
- return o;
679
- });
729
+ }, [l]), R = L((s) => {
730
+ l(s, (n, u) => {
731
+ n.delete(u);
680
732
  });
681
- }, []), $ = F((a) => {
682
- l(() => {
683
- i((b) => {
684
- const o = new Set(b);
685
- for (const E of a)
686
- o.has(E) || o.add(E);
687
- return o;
688
- });
733
+ }, [l]), Y = L((s) => {
734
+ l(s, (n, u) => {
735
+ n.add(u);
689
736
  });
690
- }, []), w = F(() => {
691
- l(() => {
692
- i(/* @__PURE__ */ new Set());
737
+ }, [l]), v = L(() => {
738
+ d((s) => {
739
+ s.clear();
693
740
  });
694
- }, []), T = F((a) => s.has(a), [s]);
741
+ }, [d]), $ = L((s) => o.has(s), [o]);
695
742
  return {
696
- expanded: s,
697
- toggle: m,
698
- expand: p,
699
- collapse: R,
700
- collapseMultiple: D,
701
- expandMultiple: $,
702
- collapseAll: w,
703
- isExpanded: T,
704
- isPending: u
743
+ expanded: o,
744
+ toggle: x,
745
+ expand: T,
746
+ collapse: j,
747
+ collapseMultiple: R,
748
+ expandMultiple: Y,
749
+ collapseAll: v,
750
+ isExpanded: $,
751
+ isPending: f
705
752
  };
706
753
  };
707
754
  export {
708
- et as DirectoryTree,
709
- Ve as TreeLine,
755
+ st as DirectoryTree,
756
+ We as TreeLine,
710
757
  A as directoryTreeClasses,
711
- Ue as getEntryClasses,
712
- Be as getExpandIconClasses,
713
- We as getNameClasses,
714
- Je as getTypeIconClasses,
715
- tt as useDirectoryTreeState
758
+ Ge as getEntryClasses,
759
+ Xe as getExpandIconClasses,
760
+ Ze as getNameClasses,
761
+ He as getTypeIconClasses,
762
+ lt as useDirectoryTreeState
716
763
  };
717
764
  //# sourceMappingURL=index.js.map