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