@aiquants/drag-drop-panels 0.4.0 → 0.7.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/README.md +1 -1
- package/dist/DragDropLayout.d.ts +11 -2
- package/dist/DragDropLayout.d.ts.map +1 -1
- package/dist/drag-drop/hooks/useDragDropColumns.d.ts +2 -1
- package/dist/drag-drop/hooks/useDragDropColumns.d.ts.map +1 -1
- package/dist/drag-drop/hooks/useFitScale.d.ts +12 -0
- package/dist/drag-drop/hooks/useFitScale.d.ts.map +1 -0
- package/dist/drag-drop/hooks/useNormalDragHandlers.d.ts +2 -1
- package/dist/drag-drop/hooks/useNormalDragHandlers.d.ts.map +1 -1
- package/dist/drag-drop/hooks/usePanelManagement.d.ts +2 -1
- package/dist/drag-drop/hooks/usePanelManagement.d.ts.map +1 -1
- package/dist/drag-drop/types.d.ts +32 -1
- package/dist/drag-drop/types.d.ts.map +1 -1
- package/dist/index.es.js +1453 -1342
- package/dist/index.umd.js +2 -2
- package/package.json +11 -5
package/dist/index.es.js
CHANGED
|
@@ -1,266 +1,266 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Eye as
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
function
|
|
6
|
-
if (
|
|
7
|
-
|
|
1
|
+
import Fe, { useRef as F, useState as te, useEffect as K, useLayoutEffect as Ee, useCallback as w, memo as Ke, useMemo as Xe, Fragment as et } from "react";
|
|
2
|
+
import { Eye as tt, EyeOff as Le, MousePointerClick as nt, MousePointer as rt, Minimize2 as st, Maximize2 as ot, X as He, Minus as lt, Plus as Se, Grid3X3 as at, RotateCcw as it, Smartphone as ct, Monitor as ut } from "lucide-react";
|
|
3
|
+
var ye = { exports: {} }, fe = {};
|
|
4
|
+
var _e;
|
|
5
|
+
function dt() {
|
|
6
|
+
if (_e) return fe;
|
|
7
|
+
_e = 1;
|
|
8
8
|
var r = /* @__PURE__ */ Symbol.for("react.transitional.element"), t = /* @__PURE__ */ Symbol.for("react.fragment");
|
|
9
|
-
function n(l,
|
|
10
|
-
var
|
|
11
|
-
if (
|
|
12
|
-
|
|
13
|
-
for (var c in
|
|
14
|
-
c !== "key" && (
|
|
15
|
-
} else
|
|
16
|
-
return
|
|
9
|
+
function n(l, o, i) {
|
|
10
|
+
var u = null;
|
|
11
|
+
if (i !== void 0 && (u = "" + i), o.key !== void 0 && (u = "" + o.key), "key" in o) {
|
|
12
|
+
i = {};
|
|
13
|
+
for (var c in o)
|
|
14
|
+
c !== "key" && (i[c] = o[c]);
|
|
15
|
+
} else i = o;
|
|
16
|
+
return o = i.ref, {
|
|
17
17
|
$$typeof: r,
|
|
18
18
|
type: l,
|
|
19
|
-
key:
|
|
20
|
-
ref:
|
|
21
|
-
props:
|
|
19
|
+
key: u,
|
|
20
|
+
ref: o !== void 0 ? o : null,
|
|
21
|
+
props: i
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
return
|
|
24
|
+
return fe.Fragment = t, fe.jsx = n, fe.jsxs = n, fe;
|
|
25
25
|
}
|
|
26
|
-
var
|
|
27
|
-
var
|
|
28
|
-
function
|
|
29
|
-
return
|
|
30
|
-
function r(
|
|
31
|
-
if (
|
|
32
|
-
if (typeof
|
|
33
|
-
return
|
|
34
|
-
if (typeof
|
|
35
|
-
switch (
|
|
36
|
-
case
|
|
26
|
+
var xe = {};
|
|
27
|
+
var We;
|
|
28
|
+
function ht() {
|
|
29
|
+
return We || (We = 1, process.env.NODE_ENV !== "production" && (function() {
|
|
30
|
+
function r(s) {
|
|
31
|
+
if (s == null) return null;
|
|
32
|
+
if (typeof s == "function")
|
|
33
|
+
return s.$$typeof === C ? null : s.displayName || s.name || null;
|
|
34
|
+
if (typeof s == "string") return s;
|
|
35
|
+
switch (s) {
|
|
36
|
+
case D:
|
|
37
37
|
return "Fragment";
|
|
38
|
-
case
|
|
38
|
+
case L:
|
|
39
39
|
return "Profiler";
|
|
40
|
-
case
|
|
40
|
+
case R:
|
|
41
41
|
return "StrictMode";
|
|
42
|
-
case
|
|
42
|
+
case q:
|
|
43
43
|
return "Suspense";
|
|
44
|
-
case
|
|
44
|
+
case O:
|
|
45
45
|
return "SuspenseList";
|
|
46
|
-
case
|
|
46
|
+
case g:
|
|
47
47
|
return "Activity";
|
|
48
48
|
}
|
|
49
|
-
if (typeof
|
|
50
|
-
switch (typeof
|
|
49
|
+
if (typeof s == "object")
|
|
50
|
+
switch (typeof s.tag == "number" && console.error(
|
|
51
51
|
"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
|
|
52
|
-
),
|
|
53
|
-
case
|
|
52
|
+
), s.$$typeof) {
|
|
53
|
+
case j:
|
|
54
54
|
return "Portal";
|
|
55
|
-
case
|
|
56
|
-
return
|
|
57
|
-
case
|
|
58
|
-
return (
|
|
59
|
-
case
|
|
60
|
-
var
|
|
61
|
-
return
|
|
62
|
-
case
|
|
63
|
-
return
|
|
64
|
-
case
|
|
65
|
-
|
|
55
|
+
case Z:
|
|
56
|
+
return s.displayName || "Context";
|
|
57
|
+
case z:
|
|
58
|
+
return (s._context.displayName || "Context") + ".Consumer";
|
|
59
|
+
case Y:
|
|
60
|
+
var d = s.render;
|
|
61
|
+
return s = s.displayName, s || (s = d.displayName || d.name || "", s = s !== "" ? "ForwardRef(" + s + ")" : "ForwardRef"), s;
|
|
62
|
+
case _:
|
|
63
|
+
return d = s.displayName || null, d !== null ? d : r(s.type) || "Memo";
|
|
64
|
+
case f:
|
|
65
|
+
d = s._payload, s = s._init;
|
|
66
66
|
try {
|
|
67
|
-
return r(
|
|
67
|
+
return r(s(d));
|
|
68
68
|
} catch {
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
return null;
|
|
72
72
|
}
|
|
73
|
-
function t(
|
|
74
|
-
return "" +
|
|
73
|
+
function t(s) {
|
|
74
|
+
return "" + s;
|
|
75
75
|
}
|
|
76
|
-
function n(
|
|
76
|
+
function n(s) {
|
|
77
77
|
try {
|
|
78
|
-
t(
|
|
79
|
-
var
|
|
78
|
+
t(s);
|
|
79
|
+
var d = !1;
|
|
80
80
|
} catch {
|
|
81
|
-
|
|
81
|
+
d = !0;
|
|
82
82
|
}
|
|
83
|
-
if (
|
|
84
|
-
|
|
85
|
-
var
|
|
86
|
-
return
|
|
87
|
-
|
|
83
|
+
if (d) {
|
|
84
|
+
d = console;
|
|
85
|
+
var k = d.error, X = typeof Symbol == "function" && Symbol.toStringTag && s[Symbol.toStringTag] || s.constructor.name || "Object";
|
|
86
|
+
return k.call(
|
|
87
|
+
d,
|
|
88
88
|
"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
|
|
89
|
-
|
|
90
|
-
), t(
|
|
89
|
+
X
|
|
90
|
+
), t(s);
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
-
function l(
|
|
94
|
-
if (
|
|
95
|
-
if (typeof
|
|
93
|
+
function l(s) {
|
|
94
|
+
if (s === D) return "<>";
|
|
95
|
+
if (typeof s == "object" && s !== null && s.$$typeof === f)
|
|
96
96
|
return "<...>";
|
|
97
97
|
try {
|
|
98
|
-
var
|
|
99
|
-
return
|
|
98
|
+
var d = r(s);
|
|
99
|
+
return d ? "<" + d + ">" : "<...>";
|
|
100
100
|
} catch {
|
|
101
101
|
return "<...>";
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
|
-
function
|
|
105
|
-
var
|
|
106
|
-
return
|
|
104
|
+
function o() {
|
|
105
|
+
var s = W.A;
|
|
106
|
+
return s === null ? null : s.getOwner();
|
|
107
107
|
}
|
|
108
|
-
function
|
|
108
|
+
function i() {
|
|
109
109
|
return Error("react-stack-top-frame");
|
|
110
110
|
}
|
|
111
|
-
function
|
|
112
|
-
if (
|
|
113
|
-
var
|
|
114
|
-
if (
|
|
111
|
+
function u(s) {
|
|
112
|
+
if (x.call(s, "key")) {
|
|
113
|
+
var d = Object.getOwnPropertyDescriptor(s, "key").get;
|
|
114
|
+
if (d && d.isReactWarning) return !1;
|
|
115
115
|
}
|
|
116
|
-
return
|
|
116
|
+
return s.key !== void 0;
|
|
117
117
|
}
|
|
118
|
-
function c(
|
|
119
|
-
function
|
|
120
|
-
|
|
118
|
+
function c(s, d) {
|
|
119
|
+
function k() {
|
|
120
|
+
b || (b = !0, console.error(
|
|
121
121
|
"%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)",
|
|
122
|
-
|
|
122
|
+
d
|
|
123
123
|
));
|
|
124
124
|
}
|
|
125
|
-
|
|
126
|
-
get:
|
|
125
|
+
k.isReactWarning = !0, Object.defineProperty(s, "key", {
|
|
126
|
+
get: k,
|
|
127
127
|
configurable: !0
|
|
128
128
|
});
|
|
129
129
|
}
|
|
130
|
-
function
|
|
131
|
-
var
|
|
132
|
-
return
|
|
130
|
+
function h() {
|
|
131
|
+
var s = r(this.type);
|
|
132
|
+
return N[s] || (N[s] = !0, console.error(
|
|
133
133
|
"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."
|
|
134
|
-
)),
|
|
134
|
+
)), s = this.props.ref, s !== void 0 ? s : null;
|
|
135
135
|
}
|
|
136
|
-
function
|
|
137
|
-
var
|
|
138
|
-
return
|
|
139
|
-
$$typeof:
|
|
140
|
-
type:
|
|
141
|
-
key:
|
|
142
|
-
props:
|
|
143
|
-
_owner:
|
|
144
|
-
}, (
|
|
136
|
+
function S(s, d, k, X, G, Q) {
|
|
137
|
+
var B = k.ref;
|
|
138
|
+
return s = {
|
|
139
|
+
$$typeof: a,
|
|
140
|
+
type: s,
|
|
141
|
+
key: d,
|
|
142
|
+
props: k,
|
|
143
|
+
_owner: X
|
|
144
|
+
}, (B !== void 0 ? B : null) !== null ? Object.defineProperty(s, "ref", {
|
|
145
145
|
enumerable: !1,
|
|
146
|
-
get:
|
|
147
|
-
}) : Object.defineProperty(
|
|
146
|
+
get: h
|
|
147
|
+
}) : Object.defineProperty(s, "ref", { enumerable: !1, value: null }), s._store = {}, Object.defineProperty(s._store, "validated", {
|
|
148
148
|
configurable: !1,
|
|
149
149
|
enumerable: !1,
|
|
150
150
|
writable: !0,
|
|
151
151
|
value: 0
|
|
152
|
-
}), Object.defineProperty(
|
|
152
|
+
}), Object.defineProperty(s, "_debugInfo", {
|
|
153
153
|
configurable: !1,
|
|
154
154
|
enumerable: !1,
|
|
155
155
|
writable: !0,
|
|
156
156
|
value: null
|
|
157
|
-
}), Object.defineProperty(
|
|
157
|
+
}), Object.defineProperty(s, "_debugStack", {
|
|
158
158
|
configurable: !1,
|
|
159
159
|
enumerable: !1,
|
|
160
160
|
writable: !0,
|
|
161
|
-
value:
|
|
162
|
-
}), Object.defineProperty(
|
|
161
|
+
value: G
|
|
162
|
+
}), Object.defineProperty(s, "_debugTask", {
|
|
163
163
|
configurable: !1,
|
|
164
164
|
enumerable: !1,
|
|
165
165
|
writable: !0,
|
|
166
|
-
value:
|
|
167
|
-
}), Object.freeze && (Object.freeze(
|
|
166
|
+
value: Q
|
|
167
|
+
}), Object.freeze && (Object.freeze(s.props), Object.freeze(s)), s;
|
|
168
168
|
}
|
|
169
|
-
function
|
|
170
|
-
var
|
|
171
|
-
if (
|
|
172
|
-
if (
|
|
173
|
-
if (
|
|
174
|
-
for (
|
|
175
|
-
|
|
176
|
-
Object.freeze && Object.freeze(
|
|
169
|
+
function v(s, d, k, X, G, Q) {
|
|
170
|
+
var B = d.children;
|
|
171
|
+
if (B !== void 0)
|
|
172
|
+
if (X)
|
|
173
|
+
if (p(B)) {
|
|
174
|
+
for (X = 0; X < B.length; X++)
|
|
175
|
+
$(B[X]);
|
|
176
|
+
Object.freeze && Object.freeze(B);
|
|
177
177
|
} else
|
|
178
178
|
console.error(
|
|
179
179
|
"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
|
|
180
180
|
);
|
|
181
|
-
else
|
|
182
|
-
if (
|
|
183
|
-
|
|
184
|
-
var
|
|
185
|
-
return
|
|
181
|
+
else $(B);
|
|
182
|
+
if (x.call(d, "key")) {
|
|
183
|
+
B = r(s);
|
|
184
|
+
var re = Object.keys(d).filter(function(se) {
|
|
185
|
+
return se !== "key";
|
|
186
186
|
});
|
|
187
|
-
|
|
187
|
+
X = 0 < re.length ? "{key: someKey, " + re.join(": ..., ") + ": ...}" : "{key: someKey}", H[B + X] || (re = 0 < re.length ? "{" + re.join(": ..., ") + ": ...}" : "{}", console.error(
|
|
188
188
|
`A props object containing a "key" prop is being spread into JSX:
|
|
189
189
|
let props = %s;
|
|
190
190
|
<%s {...props} />
|
|
191
191
|
React keys must be passed directly to JSX without using spread:
|
|
192
192
|
let props = %s;
|
|
193
193
|
<%s key={someKey} {...props} />`,
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
),
|
|
194
|
+
X,
|
|
195
|
+
B,
|
|
196
|
+
re,
|
|
197
|
+
B
|
|
198
|
+
), H[B + X] = !0);
|
|
199
199
|
}
|
|
200
|
-
if (
|
|
201
|
-
|
|
202
|
-
for (var
|
|
203
|
-
|
|
204
|
-
} else
|
|
205
|
-
return
|
|
206
|
-
|
|
207
|
-
typeof
|
|
208
|
-
),
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
200
|
+
if (B = null, k !== void 0 && (n(k), B = "" + k), u(d) && (n(d.key), B = "" + d.key), "key" in d) {
|
|
201
|
+
k = {};
|
|
202
|
+
for (var ie in d)
|
|
203
|
+
ie !== "key" && (k[ie] = d[ie]);
|
|
204
|
+
} else k = d;
|
|
205
|
+
return B && c(
|
|
206
|
+
k,
|
|
207
|
+
typeof s == "function" ? s.displayName || s.name || "Unknown" : s
|
|
208
|
+
), S(
|
|
209
|
+
s,
|
|
210
|
+
B,
|
|
211
|
+
k,
|
|
212
|
+
o(),
|
|
213
|
+
G,
|
|
214
|
+
Q
|
|
215
215
|
);
|
|
216
216
|
}
|
|
217
|
-
function
|
|
218
|
-
|
|
217
|
+
function $(s) {
|
|
218
|
+
M(s) ? s._store && (s._store.validated = 1) : typeof s == "object" && s !== null && s.$$typeof === f && (s._payload.status === "fulfilled" ? M(s._payload.value) && s._payload.value._store && (s._payload.value._store.validated = 1) : s._store && (s._store.validated = 1));
|
|
219
219
|
}
|
|
220
|
-
function
|
|
221
|
-
return typeof
|
|
220
|
+
function M(s) {
|
|
221
|
+
return typeof s == "object" && s !== null && s.$$typeof === a;
|
|
222
222
|
}
|
|
223
|
-
var
|
|
223
|
+
var y = Fe, a = /* @__PURE__ */ Symbol.for("react.transitional.element"), j = /* @__PURE__ */ Symbol.for("react.portal"), D = /* @__PURE__ */ Symbol.for("react.fragment"), R = /* @__PURE__ */ Symbol.for("react.strict_mode"), L = /* @__PURE__ */ Symbol.for("react.profiler"), z = /* @__PURE__ */ Symbol.for("react.consumer"), Z = /* @__PURE__ */ Symbol.for("react.context"), Y = /* @__PURE__ */ Symbol.for("react.forward_ref"), q = /* @__PURE__ */ Symbol.for("react.suspense"), O = /* @__PURE__ */ Symbol.for("react.suspense_list"), _ = /* @__PURE__ */ Symbol.for("react.memo"), f = /* @__PURE__ */ Symbol.for("react.lazy"), g = /* @__PURE__ */ Symbol.for("react.activity"), C = /* @__PURE__ */ Symbol.for("react.client.reference"), W = y.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, x = Object.prototype.hasOwnProperty, p = Array.isArray, m = console.createTask ? console.createTask : function() {
|
|
224
224
|
return null;
|
|
225
225
|
};
|
|
226
|
-
|
|
227
|
-
react_stack_bottom_frame: function(
|
|
228
|
-
return
|
|
226
|
+
y = {
|
|
227
|
+
react_stack_bottom_frame: function(s) {
|
|
228
|
+
return s();
|
|
229
229
|
}
|
|
230
230
|
};
|
|
231
|
-
var
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
)(),
|
|
235
|
-
|
|
236
|
-
var
|
|
237
|
-
return
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
231
|
+
var b, N = {}, T = y.react_stack_bottom_frame.bind(
|
|
232
|
+
y,
|
|
233
|
+
i
|
|
234
|
+
)(), A = m(l(i)), H = {};
|
|
235
|
+
xe.Fragment = D, xe.jsx = function(s, d, k) {
|
|
236
|
+
var X = 1e4 > W.recentlyCreatedOwnerStacks++;
|
|
237
|
+
return v(
|
|
238
|
+
s,
|
|
239
|
+
d,
|
|
240
|
+
k,
|
|
241
241
|
!1,
|
|
242
|
-
|
|
243
|
-
|
|
242
|
+
X ? Error("react-stack-top-frame") : T,
|
|
243
|
+
X ? m(l(s)) : A
|
|
244
244
|
);
|
|
245
|
-
},
|
|
246
|
-
var
|
|
247
|
-
return
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
245
|
+
}, xe.jsxs = function(s, d, k) {
|
|
246
|
+
var X = 1e4 > W.recentlyCreatedOwnerStacks++;
|
|
247
|
+
return v(
|
|
248
|
+
s,
|
|
249
|
+
d,
|
|
250
|
+
k,
|
|
251
251
|
!0,
|
|
252
|
-
|
|
253
|
-
|
|
252
|
+
X ? Error("react-stack-top-frame") : T,
|
|
253
|
+
X ? m(l(s)) : A
|
|
254
254
|
);
|
|
255
255
|
};
|
|
256
|
-
})()),
|
|
256
|
+
})()), xe;
|
|
257
257
|
}
|
|
258
|
-
var
|
|
259
|
-
function
|
|
260
|
-
return
|
|
258
|
+
var ze;
|
|
259
|
+
function mt() {
|
|
260
|
+
return ze || (ze = 1, process.env.NODE_ENV === "production" ? ye.exports = dt() : ye.exports = ht()), ye.exports;
|
|
261
261
|
}
|
|
262
|
-
var e =
|
|
263
|
-
const
|
|
262
|
+
var e = mt();
|
|
263
|
+
const le = class le {
|
|
264
264
|
/**
|
|
265
265
|
* @constructor
|
|
266
266
|
* @param {LogLevel} [level=LogLevel.WARN] - The minimum log level to output.
|
|
@@ -277,7 +277,7 @@ const ne = class ne {
|
|
|
277
277
|
* @param {LogLevel} level - The new log level.
|
|
278
278
|
*/
|
|
279
279
|
static setLevel(t) {
|
|
280
|
-
|
|
280
|
+
le.instance.setLevel(t);
|
|
281
281
|
}
|
|
282
282
|
/**
|
|
283
283
|
* @method setLevel
|
|
@@ -295,7 +295,7 @@ const ne = class ne {
|
|
|
295
295
|
* @param {ILogger} impl - The new logger implementation.
|
|
296
296
|
*/
|
|
297
297
|
static setImplementation(t) {
|
|
298
|
-
|
|
298
|
+
le.instance.setImplementation(t);
|
|
299
299
|
}
|
|
300
300
|
/**
|
|
301
301
|
* @method setImplementation
|
|
@@ -313,7 +313,7 @@ const ne = class ne {
|
|
|
313
313
|
* @param {string} prefix - The new prefix.
|
|
314
314
|
*/
|
|
315
315
|
static setPrefix(t) {
|
|
316
|
-
|
|
316
|
+
le.instance.setPrefix(t);
|
|
317
317
|
}
|
|
318
318
|
/**
|
|
319
319
|
* @method setPrefix
|
|
@@ -328,33 +328,33 @@ const ne = class ne {
|
|
|
328
328
|
return typeof t == "string" ? [`${this.prefix} ${t}`] : [this.prefix, t];
|
|
329
329
|
}
|
|
330
330
|
static debug(t, ...n) {
|
|
331
|
-
|
|
331
|
+
le.instance.debug(t, ...n);
|
|
332
332
|
}
|
|
333
333
|
debug(t, ...n) {
|
|
334
334
|
this.level <= 0 && this.impl.debug(...this.formatMessage(t), ...n);
|
|
335
335
|
}
|
|
336
336
|
static info(t, ...n) {
|
|
337
|
-
|
|
337
|
+
le.instance.info(t, ...n);
|
|
338
338
|
}
|
|
339
339
|
info(t, ...n) {
|
|
340
340
|
this.level <= 1 && this.impl.info(...this.formatMessage(t), ...n);
|
|
341
341
|
}
|
|
342
342
|
static warn(t, ...n) {
|
|
343
|
-
|
|
343
|
+
le.instance.warn(t, ...n);
|
|
344
344
|
}
|
|
345
345
|
warn(t, ...n) {
|
|
346
346
|
this.level <= 2 && this.impl.warn(...this.formatMessage(t), ...n);
|
|
347
347
|
}
|
|
348
348
|
static error(t, ...n) {
|
|
349
|
-
|
|
349
|
+
le.instance.error(t, ...n);
|
|
350
350
|
}
|
|
351
351
|
error(t, ...n) {
|
|
352
352
|
this.level <= 3 && this.impl.error(...this.formatMessage(t), ...n);
|
|
353
353
|
}
|
|
354
354
|
};
|
|
355
|
-
|
|
356
|
-
let
|
|
357
|
-
const
|
|
355
|
+
le.instance = new le(2, "[drag-drop-panels]");
|
|
356
|
+
let ke = le;
|
|
357
|
+
const ft = ({ config: r, panelId: t, sizeInfo: n, onSizeInfoClick: l }) => r.showPanelSizes && n ? (
|
|
358
358
|
// biome-ignore lint/a11y/noStaticElementInteractions: クリックイベントを持つ静的要素。デバッグ目的のため、インタラクティブ性は限定的。
|
|
359
359
|
// biome-ignore lint/a11y/useKeyWithClickEvents: キーボード操作はデバッグ機能では優先度が低い。
|
|
360
360
|
/* @__PURE__ */ e.jsxs(
|
|
@@ -363,7 +363,7 @@ const Fe = ({ config: r, panelId: t, sizeInfo: n, onSizeInfoClick: l }) => r.sho
|
|
|
363
363
|
className: "absolute top-1 right-24 z-10 cursor-default rounded-md bg-red-500/90 px-2 py-1 font-mono text-white text-xs leading-tight shadow-lg",
|
|
364
364
|
onClick: l,
|
|
365
365
|
onMouseDown: l,
|
|
366
|
-
onTouchStart: (
|
|
366
|
+
onTouchStart: (o) => o instanceof TouchEvent && l(o),
|
|
367
367
|
onDragStart: l,
|
|
368
368
|
children: [
|
|
369
369
|
/* @__PURE__ */ e.jsxs("div", { className: "text-[10px] opacity-80", children: [
|
|
@@ -390,47 +390,47 @@ const Fe = ({ config: r, panelId: t, sizeInfo: n, onSizeInfoClick: l }) => r.sho
|
|
|
390
390
|
]
|
|
391
391
|
}
|
|
392
392
|
)
|
|
393
|
-
) : null,
|
|
394
|
-
(r.logLevel ?? 0) >= t &&
|
|
395
|
-
},
|
|
396
|
-
const
|
|
397
|
-
return
|
|
398
|
-
if (
|
|
399
|
-
const
|
|
400
|
-
width: Math.round(
|
|
401
|
-
height: Math.round(
|
|
402
|
-
x: Math.round(
|
|
403
|
-
y: Math.round(
|
|
393
|
+
) : null, E = (r, t, ...n) => {
|
|
394
|
+
(r.logLevel ?? 0) >= t && ke.info(...n);
|
|
395
|
+
}, Ie = Fe.memo(({ index: r, columnIndex: t, isDragging: n, dragOverPosition: l, originalPosition: o, onDragEnter: i, onDragLeave: u, config: c, customDrag: h }) => {
|
|
396
|
+
const S = o && o.columnIndex === t && (o.panelIndex === r || o.panelIndex + 1 === r), v = !S && l?.columnIndex === t && l?.insertIndex === r, $ = F(null), [M, y] = te(null), a = n || (h?.isActive ?? !1);
|
|
397
|
+
return K(() => {
|
|
398
|
+
if ($.current) {
|
|
399
|
+
const j = $.current.getBoundingClientRect(), D = {
|
|
400
|
+
width: Math.round(j.width),
|
|
401
|
+
height: Math.round(j.height),
|
|
402
|
+
x: Math.round(j.left),
|
|
403
|
+
y: Math.round(j.top)
|
|
404
404
|
};
|
|
405
|
-
|
|
406
|
-
size: `${
|
|
407
|
-
position: `(${
|
|
408
|
-
bottomRight: `(${
|
|
409
|
-
center: `(${
|
|
405
|
+
y(D), v && E(c, 1, `🎯 アクティブプレースホルダー ${r}-${t}:`, {
|
|
406
|
+
size: `${D.width}×${D.height}`,
|
|
407
|
+
position: `(${D.x}, ${D.y})`,
|
|
408
|
+
bottomRight: `(${D.x + D.width}, ${D.y + D.height})`,
|
|
409
|
+
center: `(${D.x + D.width / 2}, ${D.y + D.height / 2})`
|
|
410
410
|
});
|
|
411
411
|
}
|
|
412
|
-
}, [
|
|
412
|
+
}, [v, r, t, c]), E(c, 2, `プレースホルダー${r}-${t}: 表示中`, { isHighlighted: v, isDragging: n, dragOverPosition: l, shouldShow: a }), // biome-ignore lint/a11y/noStaticElementInteractions: ドラッグイベントを処理するための対話的な要素。デバッグ目的のため、キーボード操作は必須ではない。
|
|
413
413
|
/* @__PURE__ */ e.jsxs(
|
|
414
414
|
"div",
|
|
415
415
|
{
|
|
416
|
-
ref:
|
|
416
|
+
ref: $,
|
|
417
417
|
"data-placeholder-index": r,
|
|
418
418
|
"data-placeholder-column": t,
|
|
419
|
-
onDragEnter: () =>
|
|
420
|
-
onDragLeave: (
|
|
421
|
-
className: `relative flex w-full items-center justify-center transition-all duration-0 ${
|
|
419
|
+
onDragEnter: () => i(t, r),
|
|
420
|
+
onDragLeave: (j) => u(j, t, r),
|
|
421
|
+
className: `relative flex w-full items-center justify-center transition-all duration-0 ${S ? "pointer-events-none h-0 overflow-hidden opacity-0" : a ? v ? "my-2 scale-[1.02] rounded-xl border-4 border-sky-500 border-dashed bg-sky-200 px-4 py-6 shadow-lg ring-2 ring-sky-400 ring-opacity-50" : "my-2 rounded-xl border-2 border-sky-300 border-dashed bg-sky-50/70 px-2 py-4 opacity-80" : "pointer-events-none h-0 overflow-hidden opacity-0"}`,
|
|
422
422
|
children: [
|
|
423
|
-
!
|
|
423
|
+
!S && a && c.showPlaceholderInfo && M && /* @__PURE__ */ e.jsxs("div", { className: "absolute top-1 right-1 z-10 rounded-md bg-blue-500/90 px-2 py-1 font-mono text-white text-xs leading-tight shadow-lg", children: [
|
|
424
424
|
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
425
|
-
|
|
425
|
+
M.width,
|
|
426
426
|
"×",
|
|
427
|
-
|
|
427
|
+
M.height
|
|
428
428
|
] }),
|
|
429
429
|
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
430
430
|
"X:",
|
|
431
|
-
|
|
431
|
+
M.x,
|
|
432
432
|
" Y:",
|
|
433
|
-
|
|
433
|
+
M.y
|
|
434
434
|
] }),
|
|
435
435
|
/* @__PURE__ */ e.jsx("div", { className: "text-[10px] opacity-80", children: "min:200px max:500px" }),
|
|
436
436
|
/* @__PURE__ */ e.jsxs("div", { className: "mt-0.5 text-[10px] opacity-80", children: [
|
|
@@ -439,10 +439,10 @@ const Fe = ({ config: r, panelId: t, sizeInfo: n, onSizeInfoClick: l }) => r.sho
|
|
|
439
439
|
"-",
|
|
440
440
|
r,
|
|
441
441
|
" ",
|
|
442
|
-
|
|
442
|
+
v ? "ACTIVE" : "IDLE"
|
|
443
443
|
] })
|
|
444
444
|
] }),
|
|
445
|
-
!
|
|
445
|
+
!S && a && /* @__PURE__ */ e.jsxs("div", { className: "flex items-center space-x-2 text-sky-600", children: [
|
|
446
446
|
/* @__PURE__ */ e.jsxs("svg", { className: "h-6 w-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: [
|
|
447
447
|
/* @__PURE__ */ e.jsx("title", { children: "パネルをここにドロップ" }),
|
|
448
448
|
/* @__PURE__ */ e.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 6v6m0 0v6m0-6h6m-6 0H6" })
|
|
@@ -453,59 +453,59 @@ const Fe = ({ config: r, panelId: t, sizeInfo: n, onSizeInfoClick: l }) => r.sho
|
|
|
453
453
|
}
|
|
454
454
|
);
|
|
455
455
|
});
|
|
456
|
-
|
|
457
|
-
const
|
|
458
|
-
const
|
|
459
|
-
return
|
|
460
|
-
if (
|
|
461
|
-
const
|
|
462
|
-
width: Math.round(
|
|
463
|
-
height: Math.round(
|
|
464
|
-
x: Math.round(
|
|
465
|
-
y: Math.round(
|
|
466
|
-
isActive:
|
|
456
|
+
Ie.displayName = "InsertPlaceholder";
|
|
457
|
+
const Ue = ({ columnIndex: r, isDragging: t, dragOverPosition: n, children: l, config: o }) => {
|
|
458
|
+
const i = F(null), [u, c] = te(null);
|
|
459
|
+
return K(() => {
|
|
460
|
+
if (i.current && t) {
|
|
461
|
+
const h = i.current.getBoundingClientRect(), S = n?.columnIndex === r, v = {
|
|
462
|
+
width: Math.round(h.width),
|
|
463
|
+
height: Math.round(h.height),
|
|
464
|
+
x: Math.round(h.left),
|
|
465
|
+
y: Math.round(h.top),
|
|
466
|
+
isActive: S
|
|
467
467
|
};
|
|
468
|
-
c(
|
|
469
|
-
size: `${
|
|
470
|
-
position: `(${
|
|
471
|
-
bottomRight: `(${
|
|
472
|
-
center: `(${
|
|
468
|
+
c(v), S && E(o, 1, `🎯 アクティブドロップゾーン ${r}:`, {
|
|
469
|
+
size: `${v.width}×${v.height}`,
|
|
470
|
+
position: `(${v.x}, ${v.y})`,
|
|
471
|
+
bottomRight: `(${v.x + v.width}, ${v.y + v.height})`,
|
|
472
|
+
center: `(${v.x + v.width / 2}, ${v.y + v.height / 2})`
|
|
473
473
|
});
|
|
474
474
|
}
|
|
475
|
-
}, [t, n, r,
|
|
475
|
+
}, [t, n, r, o]), /* @__PURE__ */ e.jsxs("div", { ref: i, className: "relative", children: [
|
|
476
476
|
l,
|
|
477
|
-
t &&
|
|
478
|
-
/* @__PURE__ */ e.jsx("div", { className: `pointer-events-none absolute inset-0 rounded-lg border-2 border-dashed transition-all duration-200 ${
|
|
479
|
-
/* @__PURE__ */ e.jsxs("div", { className: `absolute top-2 left-2 z-20 rounded-md px-2 py-1 font-mono text-xs leading-tight shadow-lg transition-all duration-200 ${
|
|
477
|
+
t && u && o.showDropZoneOutlines && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
478
|
+
/* @__PURE__ */ e.jsx("div", { className: `pointer-events-none absolute inset-0 rounded-lg border-2 border-dashed transition-all duration-200 ${u.isActive ? "border-red-500 bg-red-100/20 shadow-lg" : "border-gray-400 bg-gray-100/10"}` }),
|
|
479
|
+
/* @__PURE__ */ e.jsxs("div", { className: `absolute top-2 left-2 z-20 rounded-md px-2 py-1 font-mono text-xs leading-tight shadow-lg transition-all duration-200 ${u.isActive ? "bg-red-500/90 text-white" : "bg-gray-500/90 text-white"}`, children: [
|
|
480
480
|
/* @__PURE__ */ e.jsxs("div", { className: "font-bold", children: [
|
|
481
481
|
"DropZone-",
|
|
482
482
|
r
|
|
483
483
|
] }),
|
|
484
484
|
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
485
|
-
|
|
485
|
+
u.width,
|
|
486
486
|
"×",
|
|
487
|
-
|
|
487
|
+
u.height
|
|
488
488
|
] }),
|
|
489
489
|
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
490
490
|
"X:",
|
|
491
|
-
|
|
491
|
+
u.x,
|
|
492
492
|
" Y:",
|
|
493
|
-
|
|
493
|
+
u.y
|
|
494
494
|
] }),
|
|
495
|
-
/* @__PURE__ */ e.jsx("div", { className: "mt-0.5 text-[10px] opacity-80", children:
|
|
495
|
+
/* @__PURE__ */ e.jsx("div", { className: "mt-0.5 text-[10px] opacity-80", children: u.isActive ? "ACTIVE" : "IDLE" })
|
|
496
496
|
] }),
|
|
497
497
|
/* @__PURE__ */ e.jsx(
|
|
498
498
|
"div",
|
|
499
499
|
{
|
|
500
|
-
className: `pointer-events-none absolute transition-all duration-200 ${
|
|
500
|
+
className: `pointer-events-none absolute transition-all duration-200 ${u.isActive ? "opacity-100" : "opacity-50"}`,
|
|
501
501
|
style: {
|
|
502
|
-
left: `${
|
|
503
|
-
top: `${
|
|
502
|
+
left: `${u.width / 2 - 6}px`,
|
|
503
|
+
top: `${u.height / 2 - 6}px`
|
|
504
504
|
},
|
|
505
|
-
children: /* @__PURE__ */ e.jsx("div", { className: `h-3 w-3 rounded-full border-2 ${
|
|
505
|
+
children: /* @__PURE__ */ e.jsx("div", { className: `h-3 w-3 rounded-full border-2 ${u.isActive ? "border-red-700 bg-red-500" : "border-gray-700 bg-gray-500"}` })
|
|
506
506
|
}
|
|
507
507
|
),
|
|
508
|
-
|
|
508
|
+
u.isActive && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
509
509
|
/* @__PURE__ */ e.jsx("div", { className: "pointer-events-none absolute top-0 left-0 h-2 w-2 rounded-full bg-red-500" }),
|
|
510
510
|
/* @__PURE__ */ e.jsx("div", { className: "pointer-events-none absolute top-0 right-0 h-2 w-2 rounded-full bg-red-500" }),
|
|
511
511
|
/* @__PURE__ */ e.jsx("div", { className: "pointer-events-none absolute bottom-0 left-0 h-2 w-2 rounded-full bg-red-500" }),
|
|
@@ -514,401 +514,496 @@ const Pe = ({ columnIndex: r, isDragging: t, dragOverPosition: n, children: l, c
|
|
|
514
514
|
] })
|
|
515
515
|
] });
|
|
516
516
|
};
|
|
517
|
-
|
|
518
|
-
const
|
|
519
|
-
const
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
517
|
+
Ue.displayName = "DropZoneDebugOverlay";
|
|
518
|
+
const xt = 0.25, gt = typeof window < "u" ? Ee : K, pt = (r, t = xt) => {
|
|
519
|
+
const n = F(null), [l, o] = te(1);
|
|
520
|
+
return gt(() => {
|
|
521
|
+
const i = n.current;
|
|
522
|
+
if (!i || r <= 0) {
|
|
523
|
+
o(1);
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
const u = () => {
|
|
527
|
+
const h = i.clientWidth;
|
|
528
|
+
if (h <= 0)
|
|
529
|
+
return;
|
|
530
|
+
const S = h >= r ? 1 : Math.max(h / r, t);
|
|
531
|
+
o((v) => Math.abs(v - S) < 5e-3 ? v : S);
|
|
532
|
+
};
|
|
533
|
+
u();
|
|
534
|
+
const c = new ResizeObserver(u);
|
|
535
|
+
return c.observe(i), () => c.disconnect();
|
|
536
|
+
}, [r, t]), { containerRef: n, scale: l };
|
|
537
|
+
}, qe = ({ columnId: r, onResizeStart: t, onResize: n, onResizeEnd: l, isResizing: o = !1, position: i = "right", className: u = "", debug: c = {} }) => {
|
|
538
|
+
const h = F(!1), S = F(null);
|
|
539
|
+
K(() => {
|
|
540
|
+
!o && h.current && (E(c, 1, "外部からのリサイズ解除を検出、ドラッグ状態を強制解除:", r), h.current = !1, document.body.style.cursor = "", document.body.style.userSelect = "", document.body.classList.remove("resizing-column"));
|
|
541
|
+
}, [o, r, c]);
|
|
542
|
+
const v = w(
|
|
543
|
+
(y) => {
|
|
544
|
+
y.preventDefault(), y.stopPropagation(), E(c, 2, "リサイズハンドル マウスダウン:", r), h.current = !0, t(r, y.clientX), document.body.style.cursor = "col-resize", document.body.style.userSelect = "none", document.body.classList.add("resizing-column");
|
|
526
545
|
},
|
|
527
546
|
[r, t, c]
|
|
528
547
|
);
|
|
529
|
-
|
|
530
|
-
const
|
|
531
|
-
|
|
532
|
-
},
|
|
533
|
-
|
|
548
|
+
K(() => {
|
|
549
|
+
const y = (j) => {
|
|
550
|
+
h.current && (j.preventDefault(), n(j.clientX));
|
|
551
|
+
}, a = () => {
|
|
552
|
+
h.current && (E(c, 2, "リサイズハンドル マウスアップ:", r), h.current = !1, l(), document.body.style.cursor = "", document.body.style.userSelect = "", document.body.classList.remove("resizing-column"));
|
|
534
553
|
};
|
|
535
|
-
return document.addEventListener("mousemove",
|
|
536
|
-
document.removeEventListener("mousemove",
|
|
554
|
+
return document.addEventListener("mousemove", y), document.addEventListener("mouseup", a), () => {
|
|
555
|
+
document.removeEventListener("mousemove", y), document.removeEventListener("mouseup", a);
|
|
537
556
|
};
|
|
538
557
|
}, [r, n, l, c]);
|
|
539
|
-
const
|
|
540
|
-
(
|
|
541
|
-
|
|
542
|
-
const
|
|
543
|
-
|
|
558
|
+
const $ = w(
|
|
559
|
+
(y) => {
|
|
560
|
+
y.preventDefault(), y.stopPropagation();
|
|
561
|
+
const a = y.touches[0];
|
|
562
|
+
E(c, 2, "リサイズハンドル タッチスタート:", r), h.current = !0, t(r, a.clientX), document.body.style.cursor = "col-resize", document.body.style.userSelect = "none", document.body.classList.add("resizing-column");
|
|
544
563
|
},
|
|
545
564
|
[r, t, c]
|
|
546
565
|
);
|
|
547
|
-
|
|
548
|
-
const
|
|
549
|
-
if (!
|
|
550
|
-
|
|
551
|
-
const
|
|
552
|
-
n(
|
|
553
|
-
},
|
|
554
|
-
|
|
566
|
+
K(() => {
|
|
567
|
+
const y = (j) => {
|
|
568
|
+
if (!h.current) return;
|
|
569
|
+
j.preventDefault();
|
|
570
|
+
const D = j.touches[0];
|
|
571
|
+
n(D.clientX);
|
|
572
|
+
}, a = () => {
|
|
573
|
+
h.current && (E(c, 2, "リサイズハンドル タッチエンド:", r), h.current = !1, l(), document.body.style.cursor = "", document.body.style.userSelect = "", document.body.classList.remove("resizing-column"));
|
|
555
574
|
};
|
|
556
|
-
return document.addEventListener("touchmove",
|
|
557
|
-
document.removeEventListener("touchmove",
|
|
575
|
+
return document.addEventListener("touchmove", y, { passive: !1 }), document.addEventListener("touchend", a), () => {
|
|
576
|
+
document.removeEventListener("touchmove", y), document.removeEventListener("touchend", a);
|
|
558
577
|
};
|
|
559
|
-
}, [r, n, l, c]),
|
|
560
|
-
|
|
578
|
+
}, [r, n, l, c]), K(() => () => {
|
|
579
|
+
h.current && (E(c, 1, "リサイズハンドルアンマウント時のクリーンアップ:", r), document.body.style.cursor = "", document.body.style.userSelect = "", document.body.classList.remove("resizing-column"));
|
|
561
580
|
}, [r, c]);
|
|
562
|
-
const
|
|
581
|
+
const M = ["resize-handle", i, o ? "resizing" : "", u].filter(Boolean).join(" ");
|
|
563
582
|
return (
|
|
564
583
|
// biome-ignore lint/a11y/useFocusableInteractive: リサイズハンドルとして機能するためインタラクティブである必要がある
|
|
565
584
|
// biome-ignore lint/a11y/useSemanticElements: divを使用するが、aria-roleでセマンティックな意味を提供している
|
|
566
585
|
// biome-ignore lint/a11y/useAriaPropsForRole: リサイズハンドルのため、値の範囲を指定することが難しい
|
|
567
|
-
/* @__PURE__ */ e.jsxs("div", { ref:
|
|
586
|
+
/* @__PURE__ */ e.jsxs("div", { ref: S, className: M, onMouseDown: v, onTouchStart: $, "data-column-id": r, "data-position": i, "aria-label": `${r}のカラム幅を調整`, role: "separator", "aria-orientation": "vertical", children: [
|
|
568
587
|
/* @__PURE__ */ e.jsx("div", { className: "resize-handle-bar" }),
|
|
569
588
|
c.showPanelSizes && /* @__PURE__ */ e.jsxs("div", { className: "resize-handle-debug-info", children: [
|
|
570
589
|
r,
|
|
571
|
-
|
|
590
|
+
o && " (resizing)"
|
|
572
591
|
] })
|
|
573
592
|
] })
|
|
574
593
|
);
|
|
575
|
-
},
|
|
576
|
-
const
|
|
577
|
-
return
|
|
578
|
-
const
|
|
579
|
-
|
|
580
|
-
}, [r, t, n, l]), /* @__PURE__ */ e.jsxs("div", { className:
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
594
|
+
}, kt = ({ columnId: r, width: t, minWidth: n = 100, maxWidth: l = 800, onResizeStart: o, onResize: i, onResizeEnd: u, isResizing: c = !1, resizable: h = !0, className: S = "", debug: v = {}, children: $ }) => {
|
|
595
|
+
const M = ["resizable-column", c ? "resizing" : "", S].filter(Boolean).join(" ");
|
|
596
|
+
return K(() => {
|
|
597
|
+
const y = document.querySelector(`[data-column-id="${r}"]`);
|
|
598
|
+
y && (y.style.setProperty("--column-width", `${t}px`), y.style.setProperty("--column-min-width", `${n}px`), y.style.setProperty("--column-max-width", `${l}px`));
|
|
599
|
+
}, [r, t, n, l]), /* @__PURE__ */ e.jsxs("div", { className: M, "data-column-id": r, "data-width": t, "data-min-width": n, "data-max-width": l, children: [
|
|
600
|
+
$,
|
|
601
|
+
h && /* @__PURE__ */ e.jsx(qe, { columnId: r, onResizeStart: o, onResize: i, onResizeEnd: u, isResizing: c, position: "right", debug: v }),
|
|
602
|
+
v.showPanelSizes && /* @__PURE__ */ e.jsxs("div", { className: "column-debug-size", children: [
|
|
584
603
|
t,
|
|
585
604
|
"px",
|
|
586
605
|
c && " ↔"
|
|
587
606
|
] })
|
|
588
607
|
] });
|
|
589
|
-
},
|
|
608
|
+
}, Ce = Ke(
|
|
590
609
|
({
|
|
591
610
|
index: r,
|
|
592
611
|
columnIndex: t,
|
|
593
612
|
isDragging: n,
|
|
594
613
|
dragOverPosition: l,
|
|
595
|
-
originalPosition:
|
|
596
|
-
onDragEnter:
|
|
597
|
-
onDragLeave:
|
|
614
|
+
originalPosition: o,
|
|
615
|
+
onDragEnter: i,
|
|
616
|
+
onDragLeave: u,
|
|
598
617
|
debugConfig: c,
|
|
599
|
-
customDrag:
|
|
600
|
-
}) => /* @__PURE__ */ e.jsx(
|
|
618
|
+
customDrag: h
|
|
619
|
+
}) => /* @__PURE__ */ e.jsx(Ie, { index: r, columnIndex: t, isDragging: n, dragOverPosition: l, originalPosition: o, onDragEnter: i, onDragLeave: u, config: c, customDrag: h })
|
|
601
620
|
);
|
|
602
|
-
|
|
603
|
-
const
|
|
621
|
+
Ce.displayName = "LocalInsertPlaceholder";
|
|
622
|
+
const Ct = ({
|
|
604
623
|
columns: r,
|
|
605
624
|
panels: t,
|
|
606
625
|
columnPanels: n,
|
|
607
626
|
// onColumnPanelsChange,
|
|
608
627
|
panelVisibility: l,
|
|
609
|
-
onPanelVisibilityChange:
|
|
610
|
-
dragState:
|
|
611
|
-
dragOverPosition:
|
|
628
|
+
onPanelVisibilityChange: o,
|
|
629
|
+
dragState: i,
|
|
630
|
+
dragOverPosition: u,
|
|
612
631
|
originalPanelPosition: c,
|
|
613
|
-
dragModes:
|
|
614
|
-
onDragStart:
|
|
615
|
-
onDragEnd:
|
|
616
|
-
onPlaceholderDragEnter:
|
|
617
|
-
onPlaceholderDragLeave:
|
|
618
|
-
onDragOverWithInsert:
|
|
619
|
-
onDropWithInsert:
|
|
620
|
-
onColumnDragLeave:
|
|
621
|
-
onPanelClick:
|
|
622
|
-
onPanelMouseDown:
|
|
623
|
-
onTouchStart:
|
|
624
|
-
onTouchMove:
|
|
625
|
-
onTouchEnd:
|
|
626
|
-
debugConfig:
|
|
627
|
-
panelSizes:
|
|
628
|
-
setPanelRef:
|
|
629
|
-
enableResize:
|
|
630
|
-
columnWidths:
|
|
632
|
+
dragModes: h,
|
|
633
|
+
onDragStart: S,
|
|
634
|
+
onDragEnd: v,
|
|
635
|
+
onPlaceholderDragEnter: $,
|
|
636
|
+
onPlaceholderDragLeave: M,
|
|
637
|
+
onDragOverWithInsert: y,
|
|
638
|
+
onDropWithInsert: a,
|
|
639
|
+
onColumnDragLeave: j,
|
|
640
|
+
onPanelClick: D,
|
|
641
|
+
onPanelMouseDown: R,
|
|
642
|
+
onTouchStart: L,
|
|
643
|
+
onTouchMove: z,
|
|
644
|
+
onTouchEnd: Z,
|
|
645
|
+
debugConfig: Y,
|
|
646
|
+
panelSizes: q,
|
|
647
|
+
setPanelRef: O,
|
|
648
|
+
enableResize: _ = !1,
|
|
649
|
+
columnWidths: f,
|
|
631
650
|
// onColumnWidthChange,
|
|
632
|
-
onResizeStart:
|
|
633
|
-
onResize:
|
|
634
|
-
onResizeEnd:
|
|
635
|
-
isResizing:
|
|
636
|
-
resizingColumn:
|
|
637
|
-
onPanelSizeInfoClick:
|
|
638
|
-
onToggleDragMode:
|
|
639
|
-
|
|
651
|
+
onResizeStart: g,
|
|
652
|
+
onResize: C,
|
|
653
|
+
onResizeEnd: W,
|
|
654
|
+
isResizing: x = !1,
|
|
655
|
+
resizingColumn: p,
|
|
656
|
+
onPanelSizeInfoClick: m,
|
|
657
|
+
onToggleDragMode: b,
|
|
658
|
+
onPanelClose: N,
|
|
659
|
+
onPanelMaximizeChange: T,
|
|
660
|
+
customDrag: A,
|
|
661
|
+
dragHandle: H = "panel",
|
|
662
|
+
maximizedPanel: s = null,
|
|
663
|
+
panelClassName: d = "",
|
|
664
|
+
scale: k,
|
|
665
|
+
autoScale: X,
|
|
666
|
+
onScaleChange: G
|
|
640
667
|
}) => {
|
|
641
|
-
const
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
}, [
|
|
645
|
-
const
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
668
|
+
const Q = F(Y);
|
|
669
|
+
K(() => {
|
|
670
|
+
Q.current = Y;
|
|
671
|
+
}, [Y]);
|
|
672
|
+
const { containerRef: B, scale: re } = pt(X?.requiredWidth ?? 0, X?.minScale), ie = s ? 1 : k ?? (X ? re : 1), se = Number.isFinite(ie) && ie > 0 ? ie : 1, ge = F(se);
|
|
673
|
+
ge.current = se, K(() => {
|
|
674
|
+
G && G(se);
|
|
675
|
+
}, [se, G]);
|
|
676
|
+
const Ze = se < 1 ? {
|
|
677
|
+
width: `${100 / se}%`,
|
|
678
|
+
height: `${100 / se}%`,
|
|
679
|
+
transform: `scale(${se})`,
|
|
680
|
+
transformOrigin: "top left"
|
|
681
|
+
} : void 0, de = F({}), De = F(/* @__PURE__ */ new Map());
|
|
682
|
+
K(() => {
|
|
683
|
+
E(Q.current, 1, "🎨 DragDropLayout - dragModes props changed:", {
|
|
684
|
+
dragModes: h,
|
|
649
685
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
650
|
-
keys: Object.keys(
|
|
651
|
-
values: Object.values(
|
|
686
|
+
keys: Object.keys(h),
|
|
687
|
+
values: Object.values(h)
|
|
652
688
|
});
|
|
653
|
-
}, [
|
|
654
|
-
const
|
|
655
|
-
const
|
|
656
|
-
return t.forEach((
|
|
657
|
-
|
|
658
|
-
}),
|
|
689
|
+
}, [h]);
|
|
690
|
+
const Ne = Xe(() => {
|
|
691
|
+
const P = {};
|
|
692
|
+
return t.forEach((V) => {
|
|
693
|
+
P[V.id] = V;
|
|
694
|
+
}), P;
|
|
659
695
|
}, [t]);
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
696
|
+
K(() => {
|
|
697
|
+
if (!(s && T))
|
|
698
|
+
return;
|
|
699
|
+
const P = (V) => {
|
|
700
|
+
V.key === "Escape" && T(null);
|
|
701
|
+
};
|
|
702
|
+
return document.addEventListener("keydown", P), () => document.removeEventListener("keydown", P);
|
|
703
|
+
}, [s, T]), Ee(() => {
|
|
704
|
+
const P = /* @__PURE__ */ new Map();
|
|
705
|
+
Object.keys(de.current).forEach((I) => {
|
|
706
|
+
const ne = de.current[I];
|
|
707
|
+
if (ne) {
|
|
708
|
+
const ue = ne.getBoundingClientRect();
|
|
709
|
+
P.set(I, {
|
|
710
|
+
rect: ue,
|
|
711
|
+
height: ne.offsetHeight,
|
|
712
|
+
width: ne.offsetWidth
|
|
670
713
|
});
|
|
671
714
|
}
|
|
672
715
|
});
|
|
673
|
-
const
|
|
674
|
-
Object.values(n).forEach((
|
|
675
|
-
|
|
676
|
-
|
|
716
|
+
const V = De.current, ee = 300, he = /* @__PURE__ */ new Set();
|
|
717
|
+
Object.values(n).forEach((I) => {
|
|
718
|
+
I.forEach((ne) => {
|
|
719
|
+
he.add(ne);
|
|
677
720
|
});
|
|
678
|
-
}), new Set(
|
|
679
|
-
|
|
680
|
-
}),
|
|
681
|
-
const
|
|
682
|
-
if (
|
|
683
|
-
const
|
|
684
|
-
if (
|
|
685
|
-
|
|
686
|
-
const
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
721
|
+
}), new Set(V.keys()).forEach((I) => {
|
|
722
|
+
he.has(I) || (E(Q.current, 1, "パネル削除検出 - クリーンアップ:", I), V.delete(I), de.current[I] && delete de.current[I]);
|
|
723
|
+
}), P.forEach((I, ne) => {
|
|
724
|
+
const ue = V.get(ne);
|
|
725
|
+
if (ue) {
|
|
726
|
+
const J = ue.rect.left - I.rect.left, me = ue.rect.top - I.rect.top;
|
|
727
|
+
if (J !== 0 || me !== 0) {
|
|
728
|
+
E(Q.current, 2, "パネル移動検出 - アニメーション開始:", ne, { dx: J, dy: me });
|
|
729
|
+
const oe = de.current[ne];
|
|
730
|
+
if (oe) {
|
|
731
|
+
const pe = ge.current || 1;
|
|
732
|
+
oe.style.transform = `translate(${J / pe}px, ${me / pe}px)`, oe.style.transition = "none", oe.classList.add("is-moving"), requestAnimationFrame(() => {
|
|
733
|
+
oe.style.transition = `transform ${ee}ms cubic-bezier(0.2, 0, 0.2, 1)`, oe.style.transform = "translate(0, 0)", setTimeout(() => {
|
|
734
|
+
oe.style.transition = "", oe.style.transform = "", oe.classList.remove("is-moving");
|
|
735
|
+
}, ee);
|
|
736
|
+
});
|
|
737
|
+
}
|
|
692
738
|
}
|
|
693
739
|
} else {
|
|
694
|
-
|
|
695
|
-
const
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
},
|
|
740
|
+
E(Q.current, 1, "新規パネル検出 - フェードインアニメーション:", ne);
|
|
741
|
+
const J = de.current[ne];
|
|
742
|
+
J && (J.style.opacity = "0", J.style.transition = "none", requestAnimationFrame(() => {
|
|
743
|
+
J.style.transition = `opacity ${ee}ms ease-out`, J.style.opacity = "1", setTimeout(() => {
|
|
744
|
+
J.style.transition = "", J.style.opacity = "";
|
|
745
|
+
}, ee);
|
|
700
746
|
}));
|
|
701
747
|
}
|
|
702
|
-
}),
|
|
703
|
-
}, [n])
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
748
|
+
}), De.current = P;
|
|
749
|
+
}, [n]), Ee(() => {
|
|
750
|
+
const P = /* @__PURE__ */ new Map();
|
|
751
|
+
Object.keys(de.current).forEach((V) => {
|
|
752
|
+
const ee = de.current[V];
|
|
753
|
+
ee && P.set(V, { rect: ee.getBoundingClientRect(), height: ee.offsetHeight, width: ee.offsetWidth });
|
|
754
|
+
}), De.current = P;
|
|
755
|
+
}, [se]);
|
|
756
|
+
const Ge = (P) => {
|
|
757
|
+
if (!l[P]) return null;
|
|
758
|
+
const V = Ne[P];
|
|
759
|
+
if (!V)
|
|
760
|
+
return E(Q.current, 1, `Panel config not found for panelId: ${P}`), null;
|
|
761
|
+
const ee = V.component, he = V.title, ce = i.draggedPanel === P, I = h[P] || "normal";
|
|
762
|
+
E(Q.current, 2, `🎨 renderPanel - ${P}:`, {
|
|
763
|
+
panelId: P,
|
|
764
|
+
dragMode: I,
|
|
713
765
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
714
766
|
});
|
|
715
|
-
const
|
|
716
|
-
|
|
717
|
-
const
|
|
718
|
-
|
|
719
|
-
width:
|
|
720
|
-
height:
|
|
721
|
-
x:
|
|
722
|
-
y:
|
|
723
|
-
minHeight:
|
|
724
|
-
maxHeight:
|
|
767
|
+
const ne = (U) => {
|
|
768
|
+
de.current[P] = U, O && O(P, U), U && Y.showPanelSizes && requestAnimationFrame(() => {
|
|
769
|
+
const ve = U.getBoundingClientRect(), Re = window.getComputedStyle(U);
|
|
770
|
+
E(Q.current, 1, `Panel ${P} mounted with size:`, {
|
|
771
|
+
width: ve.width,
|
|
772
|
+
height: ve.height,
|
|
773
|
+
x: ve.left,
|
|
774
|
+
y: ve.top,
|
|
775
|
+
minHeight: Re.minHeight,
|
|
776
|
+
maxHeight: Re.maxHeight
|
|
725
777
|
});
|
|
726
778
|
});
|
|
727
|
-
},
|
|
779
|
+
}, ue = q[P], J = s === P, me = !!T, oe = () => T?.(J ? null : P), pe = J ? { position: "fixed", inset: 0, zIndex: 50, minHeight: 0, maxHeight: "none" } : {
|
|
780
|
+
minHeight: V.minHeight ?? "200px",
|
|
781
|
+
maxHeight: V.maxHeight ?? "500px"
|
|
782
|
+
}, be = H === "header", Oe = I === "normal" && !be && !J, Te = I === "normal" && be && !J, Ae = ce ? "cursor-grabbing" : "cursor-grab", Me = `panel-draggable group relative flex flex-col overflow-hidden border border-slate-200 text-left shadow-lg backdrop-blur-lg ${I === "custom" ? "select-none" : ""}`, Qe = J ? (
|
|
783
|
+
// 最大化中: 角丸・ホバー演出・grab カーソル無し、背景は不透過寄りで下のレイアウトを遮蔽
|
|
784
|
+
`${Me} rounded-none bg-white/95 p-4 ${d}`
|
|
785
|
+
) : `${Me} rounded-2xl bg-white/80 p-4 transition-all duration-300 hover:-translate-y-1 hover:shadow-xl ${be ? "" : Ae} ${d}`;
|
|
728
786
|
return (
|
|
729
787
|
// biome-ignore lint/a11y/noStaticElementInteractions: クリックイベントを持つ静的要素
|
|
730
788
|
/* @__PURE__ */ e.jsxs(
|
|
731
789
|
"div",
|
|
732
790
|
{
|
|
733
|
-
ref:
|
|
734
|
-
"data-panel-id":
|
|
735
|
-
"data-dragging":
|
|
791
|
+
ref: ne,
|
|
792
|
+
"data-panel-id": P,
|
|
793
|
+
"data-dragging": ce,
|
|
794
|
+
"data-maximized": J || void 0,
|
|
736
795
|
role: "presentation",
|
|
737
|
-
draggable:
|
|
738
|
-
onDragStart: (
|
|
739
|
-
onDragEnd:
|
|
740
|
-
onClick: (
|
|
741
|
-
onMouseDown: (
|
|
742
|
-
onTouchStart: (
|
|
743
|
-
onTouchMove:
|
|
744
|
-
onTouchEnd:
|
|
745
|
-
|
|
796
|
+
draggable: Oe,
|
|
797
|
+
onDragStart: (U) => Oe && S(U, P),
|
|
798
|
+
onDragEnd: v,
|
|
799
|
+
onClick: (U) => D?.(U, P),
|
|
800
|
+
onMouseDown: (U) => R?.(U, P),
|
|
801
|
+
onTouchStart: (U) => L?.(U, P),
|
|
802
|
+
onTouchMove: z,
|
|
803
|
+
onTouchEnd: Z,
|
|
804
|
+
style: pe,
|
|
805
|
+
className: Qe,
|
|
746
806
|
children: [
|
|
747
|
-
/* @__PURE__ */ e.jsxs(
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
807
|
+
/* @__PURE__ */ e.jsxs(
|
|
808
|
+
"div",
|
|
809
|
+
{
|
|
810
|
+
className: `group relative mb-3 flex items-center justify-between ${be && !J ? Ae : ""}`,
|
|
811
|
+
draggable: Te,
|
|
812
|
+
onDragStart: (U) => Te && S(U, P),
|
|
813
|
+
onDoubleClick: me ? (U) => {
|
|
814
|
+
U.stopPropagation(), oe();
|
|
815
|
+
} : void 0,
|
|
816
|
+
children: [
|
|
817
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex items-center space-x-2", children: [
|
|
818
|
+
/* @__PURE__ */ e.jsx("h3", { className: "font-semibold text-lg text-slate-700 transition-colors group-hover:text-slate-900", children: he }),
|
|
819
|
+
I === "custom" && /* @__PURE__ */ e.jsx("span", { className: "rounded-md bg-orange-100 px-2 py-1 font-medium text-orange-600 text-xs", children: "Custom" })
|
|
820
|
+
] }),
|
|
821
|
+
/* @__PURE__ */ e.jsxs("div", { className: "flex items-center space-x-1 opacity-0 transition-opacity group-hover:opacity-100", children: [
|
|
822
|
+
/* @__PURE__ */ e.jsx(
|
|
823
|
+
"button",
|
|
824
|
+
{
|
|
825
|
+
type: "button",
|
|
826
|
+
onClick: (U) => {
|
|
827
|
+
U.stopPropagation(), b && b(P);
|
|
828
|
+
},
|
|
829
|
+
onKeyDown: (U) => {
|
|
830
|
+
(U.key === "Enter" || U.key === " ") && (U.preventDefault(), U.stopPropagation(), b && b(P));
|
|
831
|
+
},
|
|
832
|
+
tabIndex: 0,
|
|
833
|
+
className: `cursor-pointer rounded p-1 text-xs transition-colors ${I === "custom" ? "bg-orange-100 text-orange-600 hover:bg-orange-200" : "text-slate-400 hover:bg-slate-100 hover:text-slate-600"}`,
|
|
834
|
+
title: I === "custom" ? "通常ドラッグモードに戻す" : "カスタムドラッグモードに切り替え",
|
|
835
|
+
children: I === "custom" ? /* @__PURE__ */ e.jsx(nt, { className: "h-4 w-4" }) : /* @__PURE__ */ e.jsx(rt, { className: "h-4 w-4" })
|
|
836
|
+
}
|
|
837
|
+
),
|
|
838
|
+
!J && /* @__PURE__ */ e.jsx(
|
|
839
|
+
"button",
|
|
840
|
+
{
|
|
841
|
+
type: "button",
|
|
842
|
+
onClick: (U) => {
|
|
843
|
+
U.stopPropagation(), o({
|
|
844
|
+
...l,
|
|
845
|
+
[P]: !1
|
|
846
|
+
});
|
|
847
|
+
},
|
|
848
|
+
className: "rounded p-1 text-slate-400 transition-colors hover:bg-slate-100 hover:text-slate-600",
|
|
849
|
+
title: "パネルを非表示",
|
|
850
|
+
children: /* @__PURE__ */ e.jsx(Le, { className: "h-4 w-4" })
|
|
851
|
+
}
|
|
852
|
+
),
|
|
853
|
+
me && /* @__PURE__ */ e.jsx(
|
|
854
|
+
"button",
|
|
855
|
+
{
|
|
856
|
+
type: "button",
|
|
857
|
+
onClick: (U) => {
|
|
858
|
+
U.stopPropagation(), oe();
|
|
859
|
+
},
|
|
860
|
+
className: "rounded p-1 text-slate-400 transition-colors hover:bg-slate-100 hover:text-slate-600",
|
|
861
|
+
title: J ? "元のサイズに戻す" : "パネルを最大化",
|
|
862
|
+
children: J ? /* @__PURE__ */ e.jsx(st, { className: "h-4 w-4" }) : /* @__PURE__ */ e.jsx(ot, { className: "h-4 w-4" })
|
|
863
|
+
}
|
|
864
|
+
),
|
|
865
|
+
N && /* @__PURE__ */ e.jsx(
|
|
866
|
+
"button",
|
|
867
|
+
{
|
|
868
|
+
type: "button",
|
|
869
|
+
onClick: (U) => {
|
|
870
|
+
U.stopPropagation(), N(P);
|
|
871
|
+
},
|
|
872
|
+
className: "rounded p-1 text-slate-400 transition-colors hover:bg-slate-100 hover:text-red-500",
|
|
873
|
+
title: "パネルを閉じる",
|
|
874
|
+
children: /* @__PURE__ */ e.jsx(He, { className: "h-4 w-4" })
|
|
875
|
+
}
|
|
876
|
+
)
|
|
877
|
+
] })
|
|
878
|
+
]
|
|
879
|
+
}
|
|
880
|
+
),
|
|
881
|
+
/* @__PURE__ */ e.jsx("div", { className: "panel-scroll-area min-h-0 flex-1 overflow-y-auto", children: /* @__PURE__ */ e.jsx(ee, { ...V.props || {} }) }),
|
|
882
|
+
/* @__PURE__ */ e.jsx(ft, { config: Y, panelId: P, sizeInfo: ue, onSizeInfoClick: (U) => m?.(U, P) })
|
|
788
883
|
]
|
|
789
884
|
},
|
|
790
|
-
|
|
885
|
+
P
|
|
791
886
|
)
|
|
792
887
|
);
|
|
793
|
-
},
|
|
794
|
-
const
|
|
795
|
-
let
|
|
796
|
-
for (const
|
|
797
|
-
if (l[
|
|
798
|
-
|
|
888
|
+
}, Je = (P, V) => {
|
|
889
|
+
const ee = n[P] || [];
|
|
890
|
+
let he = !1;
|
|
891
|
+
for (const I of ee)
|
|
892
|
+
if (l[I]) {
|
|
893
|
+
he = !0;
|
|
799
894
|
break;
|
|
800
895
|
}
|
|
801
|
-
const
|
|
802
|
-
return /* @__PURE__ */ e.jsx(
|
|
896
|
+
const ce = i.isDragging || (A?.isActive ?? !1);
|
|
897
|
+
return /* @__PURE__ */ e.jsx(Ue, { columnIndex: V, isDragging: ce, dragOverPosition: u, config: Y, children: /* @__PURE__ */ e.jsxs(
|
|
803
898
|
"section",
|
|
804
899
|
{
|
|
805
900
|
"data-drop-zone": "true",
|
|
806
|
-
"data-column-key":
|
|
807
|
-
"data-column-index":
|
|
808
|
-
"aria-label": `Drop zone for column ${
|
|
809
|
-
onDragOver: (
|
|
810
|
-
onDrop: (
|
|
811
|
-
onDragLeave:
|
|
901
|
+
"data-column-key": P,
|
|
902
|
+
"data-column-index": V,
|
|
903
|
+
"aria-label": `Drop zone for column ${V + 1}`,
|
|
904
|
+
onDragOver: (I) => y(I, V),
|
|
905
|
+
onDrop: (I) => a(I, P),
|
|
906
|
+
onDragLeave: j,
|
|
812
907
|
className: "relative flex h-full flex-col transition-all duration-200",
|
|
813
908
|
children: [
|
|
814
909
|
/* @__PURE__ */ e.jsx("div", { className: "placeholder-container", children: /* @__PURE__ */ e.jsx(
|
|
815
|
-
|
|
910
|
+
Ce,
|
|
816
911
|
{
|
|
817
912
|
index: 0,
|
|
818
|
-
columnIndex:
|
|
819
|
-
isDragging:
|
|
820
|
-
dragOverPosition:
|
|
913
|
+
columnIndex: V,
|
|
914
|
+
isDragging: ce,
|
|
915
|
+
dragOverPosition: u,
|
|
821
916
|
originalPosition: c,
|
|
822
|
-
onDragEnter:
|
|
823
|
-
onDragLeave:
|
|
824
|
-
debugConfig:
|
|
825
|
-
customDrag:
|
|
917
|
+
onDragEnter: $,
|
|
918
|
+
onDragLeave: M,
|
|
919
|
+
debugConfig: Y,
|
|
920
|
+
customDrag: A
|
|
826
921
|
}
|
|
827
922
|
) }),
|
|
828
|
-
|
|
829
|
-
const
|
|
830
|
-
return /* @__PURE__ */ e.jsxs("div", { className: `panel-with-placeholder ${
|
|
831
|
-
|
|
923
|
+
ee.map((I, ne) => {
|
|
924
|
+
const ue = l[I], J = !(ue || ce);
|
|
925
|
+
return /* @__PURE__ */ e.jsxs("div", { className: `panel-with-placeholder ${J ? "m-0 h-0 overflow-hidden p-0" : ""}`, "data-panel-hidden": J ? "true" : void 0, "aria-hidden": J ? "true" : void 0, children: [
|
|
926
|
+
ue ? Ge(I) : ce ? (
|
|
832
927
|
/* ドラッグ中のみ隠されたパネルのダミー表示 */
|
|
833
928
|
/* @__PURE__ */ e.jsxs("div", { className: "hidden-panel-placeholder relative h-[120px] rounded-2xl border-2 border-amber-300 border-dashed bg-gradient-to-br from-amber-50 to-orange-50 p-3 text-left shadow-lg backdrop-blur-lg", children: [
|
|
834
929
|
/* @__PURE__ */ e.jsxs("div", { className: "mb-2 flex items-center space-x-2", children: [
|
|
835
|
-
/* @__PURE__ */ e.jsx("h3", { className: "font-semibold text-amber-700 text-base", children:
|
|
930
|
+
/* @__PURE__ */ e.jsx("h3", { className: "font-semibold text-amber-700 text-base", children: Ne[I]?.title || I }),
|
|
836
931
|
/* @__PURE__ */ e.jsx("span", { className: "rounded-md bg-amber-100 px-2 py-1 font-medium text-amber-600 text-xs", children: "非表示" })
|
|
837
932
|
] }),
|
|
838
933
|
/* @__PURE__ */ e.jsx("div", { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ e.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ e.jsxs("div", { className: "text-center text-amber-600", children: [
|
|
839
|
-
/* @__PURE__ */ e.jsx(
|
|
934
|
+
/* @__PURE__ */ e.jsx(Le, { className: "mx-auto h-6 w-6 opacity-50" }),
|
|
840
935
|
/* @__PURE__ */ e.jsx("p", { className: "mt-1 text-xs", children: "このパネルは非表示です" })
|
|
841
936
|
] }) }) })
|
|
842
937
|
] })
|
|
843
938
|
) : null,
|
|
844
939
|
/* @__PURE__ */ e.jsx(
|
|
845
|
-
|
|
940
|
+
Ce,
|
|
846
941
|
{
|
|
847
|
-
index:
|
|
848
|
-
columnIndex:
|
|
849
|
-
isDragging:
|
|
850
|
-
dragOverPosition:
|
|
942
|
+
index: ne + 1,
|
|
943
|
+
columnIndex: V,
|
|
944
|
+
isDragging: ce,
|
|
945
|
+
dragOverPosition: u,
|
|
851
946
|
originalPosition: c,
|
|
852
|
-
onDragEnter:
|
|
853
|
-
onDragLeave:
|
|
854
|
-
debugConfig:
|
|
855
|
-
customDrag:
|
|
947
|
+
onDragEnter: $,
|
|
948
|
+
onDragLeave: M,
|
|
949
|
+
debugConfig: Y,
|
|
950
|
+
customDrag: A
|
|
856
951
|
}
|
|
857
952
|
)
|
|
858
|
-
] }, `panel-${
|
|
953
|
+
] }, `panel-${I}`);
|
|
859
954
|
}),
|
|
860
|
-
!(
|
|
955
|
+
!(he || ce) && /* @__PURE__ */ e.jsx("div", { className: "textcenter flex-shrink-0 rounded-xl border-2 border-slate-200 border-dashed bg-white/30 p-8 text-slate-400 transition-all duration-200", children: /* @__PURE__ */ e.jsx("div", { className: "text-sm", children: "このエリアは空です" }) })
|
|
861
956
|
]
|
|
862
957
|
}
|
|
863
958
|
) });
|
|
864
|
-
},
|
|
959
|
+
}, $e = Object.keys(l).filter((P) => !l[P]);
|
|
865
960
|
return /* @__PURE__ */ e.jsxs("div", { className: "flex h-full flex-col", children: [
|
|
866
|
-
|
|
961
|
+
$e.length > 0 && /* @__PURE__ */ e.jsx("div", { className: "border-slate-200 border-b bg-white/70 px-4 py-2 backdrop-blur-lg", children: /* @__PURE__ */ e.jsxs("div", { className: "flex flex-wrap gap-2", children: [
|
|
867
962
|
/* @__PURE__ */ e.jsx("span", { className: "mr-2 text-slate-600 text-sm", children: "非表示のパネル:" }),
|
|
868
|
-
|
|
869
|
-
const
|
|
963
|
+
$e.map((P) => {
|
|
964
|
+
const ee = Ne[P]?.title || P;
|
|
870
965
|
return /* @__PURE__ */ e.jsxs(
|
|
871
966
|
"button",
|
|
872
967
|
{
|
|
873
968
|
type: "button",
|
|
874
|
-
onClick: () =>
|
|
969
|
+
onClick: () => o({
|
|
875
970
|
...l,
|
|
876
|
-
[
|
|
971
|
+
[P]: !0
|
|
877
972
|
}),
|
|
878
973
|
className: "flex items-center space-x-1 rounded-lg border border-sky-300 bg-gradient-to-r from-sky-500 to-indigo-500 px-3 py-1 text-sm text-white shadow-md transition-all duration-200 hover:from-sky-600 hover:to-indigo-600 hover:shadow-lg",
|
|
879
974
|
children: [
|
|
880
|
-
/* @__PURE__ */ e.jsx(
|
|
881
|
-
/* @__PURE__ */ e.jsx("span", { children:
|
|
975
|
+
/* @__PURE__ */ e.jsx(tt, { className: "h-3 w-3" }),
|
|
976
|
+
/* @__PURE__ */ e.jsx("span", { children: ee })
|
|
882
977
|
]
|
|
883
978
|
},
|
|
884
|
-
|
|
979
|
+
P
|
|
885
980
|
);
|
|
886
981
|
})
|
|
887
982
|
] }) }),
|
|
888
|
-
/* @__PURE__ */ e.jsx("main", { className: "no-scrollbar max-w-full flex-1 overflow-auto px-4 py-6 sm:px-6", children: /* @__PURE__ */ e.jsx("div", { className: "relative flex h-full items-start gap-6 pr-4", children: r.map((
|
|
889
|
-
const
|
|
890
|
-
return /* @__PURE__ */ e.jsx(
|
|
983
|
+
/* @__PURE__ */ e.jsx("div", { ref: B, className: "relative min-h-0 flex-1 overflow-hidden", children: /* @__PURE__ */ e.jsx("div", { className: "h-full w-full", style: Ze, children: /* @__PURE__ */ e.jsx("main", { className: "no-scrollbar h-full max-w-full flex-1 overflow-auto px-4 py-6 sm:px-6", children: /* @__PURE__ */ e.jsx("div", { className: "relative flex h-full items-start gap-6 pr-4", children: r.map((P, V) => {
|
|
984
|
+
const ee = f?.[P.id] || P.initialWidth || 350, he = _ && (P.resizable ?? !0);
|
|
985
|
+
return /* @__PURE__ */ e.jsx(et, { children: /* @__PURE__ */ e.jsxs(
|
|
891
986
|
"div",
|
|
892
987
|
{
|
|
893
|
-
className: `column relative ${
|
|
894
|
-
"data-column":
|
|
895
|
-
"data-column-id":
|
|
896
|
-
"data-min-width":
|
|
897
|
-
"data-max-width":
|
|
898
|
-
"data-column-width":
|
|
899
|
-
...
|
|
900
|
-
style: { "--column-width": `${
|
|
988
|
+
className: `column relative ${P.className || ""} ${_ ? "resize-enabled-column" : "auto-width-column"} ${x && p === P.id ? "column-resizing-active" : ""}`,
|
|
989
|
+
"data-column": V,
|
|
990
|
+
"data-column-id": P.id,
|
|
991
|
+
"data-min-width": P.minWidth || 350,
|
|
992
|
+
"data-max-width": P.maxWidth,
|
|
993
|
+
"data-column-width": _ ? ee : void 0,
|
|
994
|
+
..._ && {
|
|
995
|
+
style: { "--column-width": `${ee}px` }
|
|
901
996
|
},
|
|
902
997
|
children: [
|
|
903
|
-
|
|
904
|
-
|
|
998
|
+
Je(P.key, V),
|
|
999
|
+
he && g && C && W && /* @__PURE__ */ e.jsx(qe, { columnId: P.id, onResizeStart: g, onResize: C, onResizeEnd: W, isResizing: x && p === P.id, position: "right", debug: Y })
|
|
905
1000
|
]
|
|
906
1001
|
}
|
|
907
|
-
) },
|
|
908
|
-
}) }) })
|
|
1002
|
+
) }, P.id);
|
|
1003
|
+
}) }) }) }) })
|
|
909
1004
|
] });
|
|
910
|
-
},
|
|
911
|
-
const
|
|
1005
|
+
}, $t = ({ columnCount: r, onColumnCountChange: t, onAutoBalance: n, onResetWidths: l, minColumns: o = 2, maxColumns: i = 6, isResizing: u = !1, isResponsiveMode: c = !1, responsiveColumnCount: h }) => {
|
|
1006
|
+
const S = r > o && !c, v = r < i && !c;
|
|
912
1007
|
return /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-3 rounded-lg border border-slate-200 bg-white/80 px-4 py-2 shadow-sm backdrop-blur-lg", children: [
|
|
913
1008
|
/* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
914
1009
|
/* @__PURE__ */ e.jsx("span", { className: "font-medium text-slate-700 text-sm", children: "カラム数:" }),
|
|
@@ -916,26 +1011,26 @@ const et = ({
|
|
|
916
1011
|
"button",
|
|
917
1012
|
{
|
|
918
1013
|
type: "button",
|
|
919
|
-
onClick: () =>
|
|
920
|
-
disabled: !
|
|
921
|
-
className: `rounded p-1 text-xs transition-colors ${
|
|
922
|
-
title: c ? "レスポンシブモード中:カラム数は自動調整されます" : `カラムを削除 (最小: ${
|
|
923
|
-
children: /* @__PURE__ */ e.jsx(
|
|
1014
|
+
onClick: () => S && t(r - 1),
|
|
1015
|
+
disabled: !S || u,
|
|
1016
|
+
className: `rounded p-1 text-xs transition-colors ${S && !u ? "border border-slate-300 text-slate-600 hover:border-red-300 hover:bg-red-50 hover:text-red-600" : "cursor-not-allowed border border-slate-200 bg-slate-50 text-slate-300"}`,
|
|
1017
|
+
title: c ? "レスポンシブモード中:カラム数は自動調整されます" : `カラムを削除 (最小: ${o}列)`,
|
|
1018
|
+
children: /* @__PURE__ */ e.jsx(lt, { className: "h-3 w-3" })
|
|
924
1019
|
}
|
|
925
1020
|
),
|
|
926
1021
|
/* @__PURE__ */ e.jsxs("div", { className: `min-w-[2rem] rounded border px-3 py-1 text-center font-mono text-sm ${c ? "border-blue-300 bg-blue-50 text-blue-700" : "border-slate-300 bg-slate-100 text-slate-700"}`, children: [
|
|
927
|
-
c ?
|
|
1022
|
+
c ? h ?? r : r,
|
|
928
1023
|
c && /* @__PURE__ */ e.jsx("span", { className: "ml-1 text-xs", children: "自動" })
|
|
929
1024
|
] }),
|
|
930
1025
|
/* @__PURE__ */ e.jsx(
|
|
931
1026
|
"button",
|
|
932
1027
|
{
|
|
933
1028
|
type: "button",
|
|
934
|
-
onClick: () =>
|
|
935
|
-
disabled: !
|
|
936
|
-
className: `rounded p-1 text-xs transition-colors ${
|
|
937
|
-
title: c ? "レスポンシブモード中:カラム数は自動調整されます" : `カラムを追加 (最大: ${
|
|
938
|
-
children: /* @__PURE__ */ e.jsx(
|
|
1029
|
+
onClick: () => v && t(r + 1),
|
|
1030
|
+
disabled: !v || u,
|
|
1031
|
+
className: `rounded p-1 text-xs transition-colors ${v && !u ? "border border-slate-300 text-slate-600 hover:border-blue-300 hover:bg-blue-50 hover:text-blue-600" : "cursor-not-allowed border border-slate-200 bg-slate-50 text-slate-300"}`,
|
|
1032
|
+
title: c ? "レスポンシブモード中:カラム数は自動調整されます" : `カラムを追加 (最大: ${i}列)`,
|
|
1033
|
+
children: /* @__PURE__ */ e.jsx(Se, { className: "h-3 w-3" })
|
|
939
1034
|
}
|
|
940
1035
|
)
|
|
941
1036
|
] }),
|
|
@@ -946,11 +1041,11 @@ const et = ({
|
|
|
946
1041
|
{
|
|
947
1042
|
type: "button",
|
|
948
1043
|
onClick: n,
|
|
949
|
-
disabled:
|
|
950
|
-
className: `flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors ${
|
|
1044
|
+
disabled: u,
|
|
1045
|
+
className: `flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors ${u ? "cursor-not-allowed border border-slate-200 bg-slate-50 text-slate-300" : "border border-slate-300 text-slate-600 hover:border-green-300 hover:bg-green-50 hover:text-green-600"}`,
|
|
951
1046
|
title: "パネルを全カラムに均等分散",
|
|
952
1047
|
children: [
|
|
953
|
-
/* @__PURE__ */ e.jsx(
|
|
1048
|
+
/* @__PURE__ */ e.jsx(at, { className: "h-3 w-3" }),
|
|
954
1049
|
/* @__PURE__ */ e.jsx("span", { children: "バランス" })
|
|
955
1050
|
]
|
|
956
1051
|
}
|
|
@@ -960,50 +1055,50 @@ const et = ({
|
|
|
960
1055
|
{
|
|
961
1056
|
type: "button",
|
|
962
1057
|
onClick: l,
|
|
963
|
-
disabled:
|
|
964
|
-
className: `flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors ${
|
|
1058
|
+
disabled: u,
|
|
1059
|
+
className: `flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors ${u ? "cursor-not-allowed border border-slate-200 bg-slate-50 text-slate-300" : "border border-slate-300 text-slate-600 hover:border-orange-300 hover:bg-orange-50 hover:text-orange-600"}`,
|
|
965
1060
|
title: "カラム幅を初期値にリセット",
|
|
966
1061
|
children: [
|
|
967
|
-
/* @__PURE__ */ e.jsx(
|
|
1062
|
+
/* @__PURE__ */ e.jsx(it, { className: "h-3 w-3" }),
|
|
968
1063
|
/* @__PURE__ */ e.jsx("span", { children: "幅リセット" })
|
|
969
1064
|
]
|
|
970
1065
|
}
|
|
971
1066
|
)
|
|
972
1067
|
] }),
|
|
973
|
-
|
|
1068
|
+
u && /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-1 text-blue-600 text-xs", children: [
|
|
974
1069
|
/* @__PURE__ */ e.jsx("div", { className: "h-2 w-2 animate-pulse rounded-full bg-blue-500" }),
|
|
975
1070
|
/* @__PURE__ */ e.jsx("span", { children: "リサイズ中..." })
|
|
976
1071
|
] })
|
|
977
1072
|
] });
|
|
978
|
-
},
|
|
979
|
-
const c = r <
|
|
980
|
-
return /* @__PURE__ */ e.jsxs("div", { className: `flex items-center justify-center gap-1 rounded-lg border border-slate-200 px-4 py-2 shadow-sm backdrop-blur-lg ${
|
|
981
|
-
|
|
982
|
-
!
|
|
1073
|
+
}, Ot = ({ columnCount: r, onInsertColumn: t, onDeleteColumn: n, minColumns: l = 1, maxColumns: o = 6, isResizing: i = !1, disabled: u = !1 }) => {
|
|
1074
|
+
const c = r < o && !u, h = r > l && !u;
|
|
1075
|
+
return /* @__PURE__ */ e.jsxs("div", { className: `flex items-center justify-center gap-1 rounded-lg border border-slate-200 px-4 py-2 shadow-sm backdrop-blur-lg ${u ? "bg-slate-100/80 opacity-60" : "bg-white/80"}`, children: [
|
|
1076
|
+
u && /* @__PURE__ */ e.jsx("div", { className: "flex items-center gap-2 text-slate-500 text-xs", children: /* @__PURE__ */ e.jsx("span", { children: "レスポンシブモード有効中:カラム数は自動調整されます" }) }),
|
|
1077
|
+
!u && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
983
1078
|
/* @__PURE__ */ e.jsx(
|
|
984
1079
|
"button",
|
|
985
1080
|
{
|
|
986
1081
|
type: "button",
|
|
987
1082
|
onClick: () => c && t(0),
|
|
988
|
-
disabled: !c ||
|
|
989
|
-
className: `flex h-8 w-8 items-center justify-center rounded border-2 border-dashed text-xs transition-colors ${c && !
|
|
1083
|
+
disabled: !c || i,
|
|
1084
|
+
className: `flex h-8 w-8 items-center justify-center rounded border-2 border-dashed text-xs transition-colors ${c && !i ? "border-blue-300 text-blue-600 hover:border-blue-500 hover:bg-blue-50" : "cursor-not-allowed border-slate-200 text-slate-300"}`,
|
|
990
1085
|
title: "この位置に新しいカラムを挿入",
|
|
991
|
-
children: /* @__PURE__ */ e.jsx(
|
|
1086
|
+
children: /* @__PURE__ */ e.jsx(Se, { className: "h-4 w-4" })
|
|
992
1087
|
}
|
|
993
1088
|
),
|
|
994
|
-
Array.from({ length: r }, (
|
|
1089
|
+
Array.from({ length: r }, (S, v) => (
|
|
995
1090
|
// biome-ignore lint/suspicious/noArrayIndexKey: 表示目的の単純なリスト
|
|
996
1091
|
/* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
997
1092
|
/* @__PURE__ */ e.jsxs("div", { className: "relative flex h-8 w-12 items-center justify-center rounded border border-slate-300 bg-slate-100", children: [
|
|
998
|
-
/* @__PURE__ */ e.jsx("span", { className: "font-medium font-mono text-slate-700 text-xs", children:
|
|
999
|
-
|
|
1093
|
+
/* @__PURE__ */ e.jsx("span", { className: "font-medium font-mono text-slate-700 text-xs", children: v + 1 }),
|
|
1094
|
+
h && !i && /* @__PURE__ */ e.jsx(
|
|
1000
1095
|
"button",
|
|
1001
1096
|
{
|
|
1002
1097
|
type: "button",
|
|
1003
|
-
onClick: () => n(
|
|
1098
|
+
onClick: () => n(v),
|
|
1004
1099
|
className: "absolute -top-1 -right-1 flex h-4 w-4 items-center justify-center rounded-full border border-red-300 bg-red-100 text-red-600 hover:bg-red-200",
|
|
1005
|
-
title: `カラム ${
|
|
1006
|
-
children: /* @__PURE__ */ e.jsx(
|
|
1100
|
+
title: `カラム ${v + 1} を削除`,
|
|
1101
|
+
children: /* @__PURE__ */ e.jsx(He, { className: "h-2.5 w-2.5" })
|
|
1007
1102
|
}
|
|
1008
1103
|
)
|
|
1009
1104
|
] }),
|
|
@@ -1011,18 +1106,18 @@ const et = ({
|
|
|
1011
1106
|
"button",
|
|
1012
1107
|
{
|
|
1013
1108
|
type: "button",
|
|
1014
|
-
onClick: () => c && t(
|
|
1015
|
-
disabled: !c ||
|
|
1016
|
-
className: `flex h-8 w-8 items-center justify-center rounded border-2 border-dashed text-xs transition-colors ${c && !
|
|
1109
|
+
onClick: () => c && t(v + 1),
|
|
1110
|
+
disabled: !c || i,
|
|
1111
|
+
className: `flex h-8 w-8 items-center justify-center rounded border-2 border-dashed text-xs transition-colors ${c && !i ? "border-blue-300 text-blue-600 hover:border-blue-500 hover:bg-blue-50" : "cursor-not-allowed border-slate-200 text-slate-300"}`,
|
|
1017
1112
|
title: "この位置に新しいカラムを挿入",
|
|
1018
|
-
children: /* @__PURE__ */ e.jsx(
|
|
1113
|
+
children: /* @__PURE__ */ e.jsx(Se, { className: "h-4 w-4" })
|
|
1019
1114
|
}
|
|
1020
1115
|
)
|
|
1021
|
-
] }, `column-${
|
|
1116
|
+
] }, `column-${v}`)
|
|
1022
1117
|
))
|
|
1023
1118
|
] })
|
|
1024
1119
|
] });
|
|
1025
|
-
},
|
|
1120
|
+
}, Tt = ({ config: r, onConfigChange: t, isVisible: n, onToggleVisibility: l }) => n ? /* @__PURE__ */ e.jsxs("div", { className: "fixed right-4 bottom-4 z-50 max-w-sm rounded-lg border border-gray-300 bg-white p-4 shadow-xl", children: [
|
|
1026
1121
|
/* @__PURE__ */ e.jsxs("div", { className: "mb-3 flex items-center justify-between", children: [
|
|
1027
1122
|
/* @__PURE__ */ e.jsx("h3", { className: "font-bold text-gray-800 text-sm", children: "🛠️ デバッグ設定" }),
|
|
1028
1123
|
/* @__PURE__ */ e.jsx("button", { type: "button", onClick: l, className: "text-gray-500 text-lg hover:text-gray-700", title: "閉じる", children: "✕" })
|
|
@@ -1034,9 +1129,9 @@ const et = ({
|
|
|
1034
1129
|
{
|
|
1035
1130
|
type: "checkbox",
|
|
1036
1131
|
checked: r.showDebugPanel ?? !1,
|
|
1037
|
-
onChange: (
|
|
1132
|
+
onChange: (o) => t({
|
|
1038
1133
|
...r,
|
|
1039
|
-
showDebugPanel:
|
|
1134
|
+
showDebugPanel: o.target.checked
|
|
1040
1135
|
}),
|
|
1041
1136
|
className: "rounded"
|
|
1042
1137
|
}
|
|
@@ -1049,9 +1144,9 @@ const et = ({
|
|
|
1049
1144
|
{
|
|
1050
1145
|
type: "checkbox",
|
|
1051
1146
|
checked: r.showMousePosition ?? !1,
|
|
1052
|
-
onChange: (
|
|
1147
|
+
onChange: (o) => t({
|
|
1053
1148
|
...r,
|
|
1054
|
-
showMousePosition:
|
|
1149
|
+
showMousePosition: o.target.checked
|
|
1055
1150
|
}),
|
|
1056
1151
|
className: "rounded"
|
|
1057
1152
|
}
|
|
@@ -1064,9 +1159,9 @@ const et = ({
|
|
|
1064
1159
|
{
|
|
1065
1160
|
type: "checkbox",
|
|
1066
1161
|
checked: r.showPanelSizes ?? !1,
|
|
1067
|
-
onChange: (
|
|
1162
|
+
onChange: (o) => t({
|
|
1068
1163
|
...r,
|
|
1069
|
-
showPanelSizes:
|
|
1164
|
+
showPanelSizes: o.target.checked
|
|
1070
1165
|
}),
|
|
1071
1166
|
className: "rounded"
|
|
1072
1167
|
}
|
|
@@ -1079,9 +1174,9 @@ const et = ({
|
|
|
1079
1174
|
{
|
|
1080
1175
|
type: "checkbox",
|
|
1081
1176
|
checked: r.showPlaceholderInfo ?? !1,
|
|
1082
|
-
onChange: (
|
|
1177
|
+
onChange: (o) => t({
|
|
1083
1178
|
...r,
|
|
1084
|
-
showPlaceholderInfo:
|
|
1179
|
+
showPlaceholderInfo: o.target.checked
|
|
1085
1180
|
}),
|
|
1086
1181
|
className: "rounded"
|
|
1087
1182
|
}
|
|
@@ -1094,9 +1189,9 @@ const et = ({
|
|
|
1094
1189
|
{
|
|
1095
1190
|
type: "checkbox",
|
|
1096
1191
|
checked: r.showDropZoneOutlines ?? !1,
|
|
1097
|
-
onChange: (
|
|
1192
|
+
onChange: (o) => t({
|
|
1098
1193
|
...r,
|
|
1099
|
-
showDropZoneOutlines:
|
|
1194
|
+
showDropZoneOutlines: o.target.checked
|
|
1100
1195
|
}),
|
|
1101
1196
|
className: "rounded"
|
|
1102
1197
|
}
|
|
@@ -1116,9 +1211,9 @@ const et = ({
|
|
|
1116
1211
|
min: "0",
|
|
1117
1212
|
max: "2",
|
|
1118
1213
|
value: r.logLevel ?? 0,
|
|
1119
|
-
onChange: (
|
|
1214
|
+
onChange: (o) => t({
|
|
1120
1215
|
...r,
|
|
1121
|
-
logLevel: parseInt(
|
|
1216
|
+
logLevel: parseInt(o.target.value, 10)
|
|
1122
1217
|
}),
|
|
1123
1218
|
className: "w-full",
|
|
1124
1219
|
"aria-label": "ログレベル設定"
|
|
@@ -1165,326 +1260,326 @@ const et = ({
|
|
|
1165
1260
|
)
|
|
1166
1261
|
] })
|
|
1167
1262
|
] })
|
|
1168
|
-
] }) : /* @__PURE__ */ e.jsx("button", { type: "button", onClick: l, className: "fixed right-4 bottom-4 z-50 rounded-lg bg-gray-800 p-2 text-white shadow-lg transition-colors hover:bg-gray-700", title: "デバッグ設定を開く", children: "🛠️" }),
|
|
1263
|
+
] }) : /* @__PURE__ */ e.jsx("button", { type: "button", onClick: l, className: "fixed right-4 bottom-4 z-50 rounded-lg bg-gray-800 p-2 text-white shadow-lg transition-colors hover:bg-gray-700", title: "デバッグ設定を開く", children: "🛠️" }), ae = {
|
|
1169
1264
|
prefix: "column",
|
|
1170
1265
|
startIndex: 1,
|
|
1171
1266
|
separator: "_"
|
|
1172
|
-
},
|
|
1173
|
-
const { prefix: n, startIndex: l, separator:
|
|
1174
|
-
return `${n}${
|
|
1175
|
-
},
|
|
1176
|
-
const { prefix: n, startIndex: l, separator:
|
|
1177
|
-
if (!r.startsWith(
|
|
1267
|
+
}, we = (r, t = ae) => {
|
|
1268
|
+
const { prefix: n, startIndex: l, separator: o } = t, i = r + l;
|
|
1269
|
+
return `${n}${o}${i}`;
|
|
1270
|
+
}, Ve = (r, t = ae) => Array.from({ length: r }, (n, l) => we(l, t)), je = (r, t = ae) => {
|
|
1271
|
+
const { prefix: n, startIndex: l, separator: o } = t, i = `${n}${o}`;
|
|
1272
|
+
if (!r.startsWith(i))
|
|
1178
1273
|
return null;
|
|
1179
|
-
const
|
|
1274
|
+
const u = r.slice(i.length), c = parseInt(u, 10);
|
|
1180
1275
|
return Number.isNaN(c) || c < l ? null : c - l;
|
|
1181
|
-
},
|
|
1182
|
-
const n = r.map((l) =>
|
|
1276
|
+
}, At = (r, t = ae) => je(r, t) !== null, Mt = (r, t = ae) => {
|
|
1277
|
+
const n = r.map((l) => je(l, t)).filter((l) => l !== null).sort((l, o) => l - o);
|
|
1183
1278
|
for (let l = 0; l < n.length; l++)
|
|
1184
1279
|
if (n[l] !== l)
|
|
1185
|
-
return
|
|
1186
|
-
return
|
|
1187
|
-
},
|
|
1188
|
-
const
|
|
1189
|
-
return
|
|
1190
|
-
}),
|
|
1280
|
+
return we(l, t);
|
|
1281
|
+
return we(n.length, t);
|
|
1282
|
+
}, bt = (r, t = ae) => r.sort((n, l) => {
|
|
1283
|
+
const o = je(n, t) ?? -1, i = je(l, t) ?? -1;
|
|
1284
|
+
return o - i;
|
|
1285
|
+
}), Rt = (r, t = ae) => {
|
|
1191
1286
|
const n = {};
|
|
1192
|
-
return r.forEach((l,
|
|
1193
|
-
const
|
|
1194
|
-
n[l] =
|
|
1287
|
+
return r.forEach((l, o) => {
|
|
1288
|
+
const i = we(o, t);
|
|
1289
|
+
n[l] = i;
|
|
1195
1290
|
}), n;
|
|
1196
|
-
},
|
|
1291
|
+
}, vt = (r, t, n = ae) => {
|
|
1197
1292
|
const l = [];
|
|
1198
|
-
Object.values(r).forEach((
|
|
1199
|
-
l.push(...
|
|
1293
|
+
Object.values(r).forEach((u) => {
|
|
1294
|
+
l.push(...u);
|
|
1200
1295
|
});
|
|
1201
|
-
const
|
|
1202
|
-
return
|
|
1203
|
-
|
|
1204
|
-
}), l.forEach((
|
|
1205
|
-
const
|
|
1206
|
-
|
|
1207
|
-
}),
|
|
1208
|
-
},
|
|
1209
|
-
const [
|
|
1210
|
-
const
|
|
1211
|
-
for (const
|
|
1212
|
-
|
|
1296
|
+
const o = {}, i = Ve(t, n);
|
|
1297
|
+
return i.forEach((u) => {
|
|
1298
|
+
o[u] = [];
|
|
1299
|
+
}), l.forEach((u, c) => {
|
|
1300
|
+
const h = c % t, S = i[h];
|
|
1301
|
+
o[S].push(u);
|
|
1302
|
+
}), o;
|
|
1303
|
+
}, Lt = ({ initialColumns: r, initialPanels: t, debug: n = {}, onLayoutChange: l }) => {
|
|
1304
|
+
const [o, i] = te(() => {
|
|
1305
|
+
const f = {};
|
|
1306
|
+
for (const g of r)
|
|
1307
|
+
f[g.id] = g.initialWidth || 400;
|
|
1213
1308
|
return {
|
|
1214
1309
|
columns: r,
|
|
1215
|
-
columnWidths:
|
|
1310
|
+
columnWidths: f,
|
|
1216
1311
|
isResizing: !1,
|
|
1217
1312
|
resizingColumn: null,
|
|
1218
1313
|
columnPanels: t,
|
|
1219
1314
|
showInsertPlaceholders: !1
|
|
1220
1315
|
};
|
|
1221
|
-
}),
|
|
1222
|
-
|
|
1223
|
-
l?.(
|
|
1224
|
-
}, [
|
|
1225
|
-
const
|
|
1226
|
-
(
|
|
1227
|
-
|
|
1228
|
-
const
|
|
1229
|
-
|
|
1230
|
-
const
|
|
1231
|
-
...
|
|
1232
|
-
[
|
|
1233
|
-
},
|
|
1234
|
-
...
|
|
1235
|
-
[
|
|
1316
|
+
}), u = F(0), c = F(0);
|
|
1317
|
+
K(() => {
|
|
1318
|
+
l?.(o);
|
|
1319
|
+
}, [o, l]);
|
|
1320
|
+
const h = w(
|
|
1321
|
+
(f, g) => {
|
|
1322
|
+
E(n, 1, "カラム追加:", f.id, "at position:", g), i((C) => {
|
|
1323
|
+
const W = [...C.columns], x = g ?? W.length;
|
|
1324
|
+
W.splice(x, 0, f);
|
|
1325
|
+
const p = {
|
|
1326
|
+
...C.columnWidths,
|
|
1327
|
+
[f.id]: f.initialWidth || 400
|
|
1328
|
+
}, m = {
|
|
1329
|
+
...C.columnPanels,
|
|
1330
|
+
[f.id]: []
|
|
1236
1331
|
};
|
|
1237
1332
|
return {
|
|
1238
|
-
...
|
|
1239
|
-
columns:
|
|
1240
|
-
columnWidths:
|
|
1241
|
-
columnPanels:
|
|
1333
|
+
...C,
|
|
1334
|
+
columns: W,
|
|
1335
|
+
columnWidths: p,
|
|
1336
|
+
columnPanels: m
|
|
1242
1337
|
};
|
|
1243
1338
|
});
|
|
1244
1339
|
},
|
|
1245
1340
|
[n]
|
|
1246
|
-
),
|
|
1247
|
-
(
|
|
1248
|
-
|
|
1249
|
-
const
|
|
1250
|
-
if (
|
|
1251
|
-
return
|
|
1252
|
-
const
|
|
1253
|
-
|
|
1254
|
-
const
|
|
1255
|
-
return delete
|
|
1256
|
-
...
|
|
1257
|
-
columns:
|
|
1258
|
-
columnWidths:
|
|
1259
|
-
columnPanels:
|
|
1341
|
+
), S = w(
|
|
1342
|
+
(f) => {
|
|
1343
|
+
E(n, 1, "カラム削除:", f), i((g) => {
|
|
1344
|
+
const C = g.columnPanels[f] || [], W = g.columns.filter((b) => b.id !== f);
|
|
1345
|
+
if (W.length === 0)
|
|
1346
|
+
return E(n, 1, "警告: 最後のカラムを削除しようとしています"), g;
|
|
1347
|
+
const x = W[0].id, p = { ...g.columnPanels };
|
|
1348
|
+
C.length > 0 && (p[x] = [...p[x], ...C]), delete p[f];
|
|
1349
|
+
const m = { ...g.columnWidths };
|
|
1350
|
+
return delete m[f], {
|
|
1351
|
+
...g,
|
|
1352
|
+
columns: W,
|
|
1353
|
+
columnWidths: m,
|
|
1354
|
+
columnPanels: p
|
|
1260
1355
|
};
|
|
1261
1356
|
});
|
|
1262
1357
|
},
|
|
1263
1358
|
[n]
|
|
1264
|
-
),
|
|
1265
|
-
(
|
|
1266
|
-
|
|
1267
|
-
const
|
|
1268
|
-
return
|
|
1269
|
-
...
|
|
1270
|
-
columns:
|
|
1359
|
+
), v = w(
|
|
1360
|
+
(f, g) => {
|
|
1361
|
+
E(n, 1, "カラム移動:", f, "->", g), i((C) => {
|
|
1362
|
+
const W = [...C.columns], [x] = W.splice(f, 1);
|
|
1363
|
+
return W.splice(g, 0, x), {
|
|
1364
|
+
...C,
|
|
1365
|
+
columns: W
|
|
1271
1366
|
};
|
|
1272
1367
|
});
|
|
1273
1368
|
},
|
|
1274
1369
|
[n]
|
|
1275
|
-
),
|
|
1276
|
-
(
|
|
1277
|
-
|
|
1278
|
-
...
|
|
1370
|
+
), $ = w(
|
|
1371
|
+
(f, g) => {
|
|
1372
|
+
E(n, 2, "リサイズ開始:", f, "at X:", g), u.current = g, c.current = o.columnWidths[f] || 300, i((C) => ({
|
|
1373
|
+
...C,
|
|
1279
1374
|
isResizing: !0,
|
|
1280
|
-
resizingColumn:
|
|
1375
|
+
resizingColumn: f
|
|
1281
1376
|
}));
|
|
1282
1377
|
},
|
|
1283
|
-
[n,
|
|
1284
|
-
),
|
|
1285
|
-
(
|
|
1286
|
-
const { resizingColumn:
|
|
1287
|
-
if (!(
|
|
1288
|
-
const
|
|
1289
|
-
|
|
1290
|
-
...
|
|
1378
|
+
[n, o.columnWidths]
|
|
1379
|
+
), M = w(
|
|
1380
|
+
(f) => {
|
|
1381
|
+
const { resizingColumn: g, isResizing: C } = o;
|
|
1382
|
+
if (!(C && g)) return;
|
|
1383
|
+
const W = f - u.current, x = Math.max(100, Math.min(800, c.current + W));
|
|
1384
|
+
E(n, 2, "リサイズ中:", g, "new width:", x), i((p) => ({
|
|
1385
|
+
...p,
|
|
1291
1386
|
columnWidths: {
|
|
1292
|
-
...
|
|
1293
|
-
[
|
|
1387
|
+
...p.columnWidths,
|
|
1388
|
+
[g]: x
|
|
1294
1389
|
}
|
|
1295
1390
|
}));
|
|
1296
1391
|
},
|
|
1297
|
-
[n,
|
|
1298
|
-
),
|
|
1299
|
-
|
|
1300
|
-
...
|
|
1392
|
+
[n, o]
|
|
1393
|
+
), y = w(() => {
|
|
1394
|
+
E(n, 2, "リサイズ終了"), i((f) => ({
|
|
1395
|
+
...f,
|
|
1301
1396
|
isResizing: !1,
|
|
1302
1397
|
resizingColumn: null
|
|
1303
1398
|
}));
|
|
1304
|
-
}, [n]),
|
|
1305
|
-
(
|
|
1306
|
-
|
|
1307
|
-
...
|
|
1399
|
+
}, [n]), a = w(
|
|
1400
|
+
(f, g) => {
|
|
1401
|
+
E(n, 2, "カラム幅設定:", f, g), i((C) => ({
|
|
1402
|
+
...C,
|
|
1308
1403
|
columnWidths: {
|
|
1309
|
-
...
|
|
1310
|
-
[
|
|
1404
|
+
...C.columnWidths,
|
|
1405
|
+
[f]: Math.max(100, Math.min(800, g))
|
|
1311
1406
|
}
|
|
1312
1407
|
}));
|
|
1313
1408
|
},
|
|
1314
1409
|
[n]
|
|
1315
|
-
),
|
|
1316
|
-
|
|
1317
|
-
const
|
|
1318
|
-
for (const
|
|
1319
|
-
|
|
1410
|
+
), j = w(() => {
|
|
1411
|
+
E(n, 1, "カラム幅リセット"), i((f) => {
|
|
1412
|
+
const g = {};
|
|
1413
|
+
for (const C of f.columns)
|
|
1414
|
+
g[C.id] = C.initialWidth || 400;
|
|
1320
1415
|
return {
|
|
1321
|
-
...
|
|
1322
|
-
columnWidths:
|
|
1416
|
+
...f,
|
|
1417
|
+
columnWidths: g
|
|
1323
1418
|
};
|
|
1324
1419
|
});
|
|
1325
|
-
}, [n]),
|
|
1326
|
-
(
|
|
1327
|
-
|
|
1328
|
-
const
|
|
1329
|
-
if (
|
|
1330
|
-
const
|
|
1331
|
-
|
|
1420
|
+
}, [n]), D = w(
|
|
1421
|
+
(f, g, C, W) => {
|
|
1422
|
+
E(n, 1, "パネル移動:", f, "from", g, "to", C, "at", W), i((x) => {
|
|
1423
|
+
const p = { ...x.columnPanels };
|
|
1424
|
+
if (g in p && (p[g] = p[g].filter((m) => m !== f)), C in p) {
|
|
1425
|
+
const m = [...p[C]];
|
|
1426
|
+
m.splice(W, 0, f), p[C] = m;
|
|
1332
1427
|
}
|
|
1333
1428
|
return {
|
|
1334
|
-
...
|
|
1335
|
-
columnPanels:
|
|
1429
|
+
...x,
|
|
1430
|
+
columnPanels: p
|
|
1336
1431
|
};
|
|
1337
1432
|
});
|
|
1338
1433
|
},
|
|
1339
1434
|
[n]
|
|
1340
|
-
),
|
|
1341
|
-
(
|
|
1342
|
-
|
|
1343
|
-
const
|
|
1344
|
-
|
|
1345
|
-
const
|
|
1346
|
-
return
|
|
1347
|
-
...
|
|
1348
|
-
columnPanels:
|
|
1435
|
+
), R = w(
|
|
1436
|
+
(f, g, C) => {
|
|
1437
|
+
E(n, 1, "パネル追加:", f, "to column:", g), i((W) => {
|
|
1438
|
+
const x = { ...W.columnPanels };
|
|
1439
|
+
g in x || (x[g] = []);
|
|
1440
|
+
const p = [...x[g]], m = C ?? p.length;
|
|
1441
|
+
return p.splice(m, 0, f), x[g] = p, {
|
|
1442
|
+
...W,
|
|
1443
|
+
columnPanels: x
|
|
1349
1444
|
};
|
|
1350
1445
|
});
|
|
1351
1446
|
},
|
|
1352
1447
|
[n]
|
|
1353
|
-
),
|
|
1354
|
-
(
|
|
1355
|
-
|
|
1356
|
-
const
|
|
1357
|
-
for (const [
|
|
1358
|
-
|
|
1448
|
+
), L = w(
|
|
1449
|
+
(f) => {
|
|
1450
|
+
E(n, 1, "パネル削除:", f), i((g) => {
|
|
1451
|
+
const C = {};
|
|
1452
|
+
for (const [W, x] of Object.entries(g.columnPanels))
|
|
1453
|
+
C[W] = x.filter((p) => p !== f);
|
|
1359
1454
|
return {
|
|
1360
|
-
...
|
|
1361
|
-
columnPanels:
|
|
1455
|
+
...g,
|
|
1456
|
+
columnPanels: C
|
|
1362
1457
|
};
|
|
1363
1458
|
});
|
|
1364
1459
|
},
|
|
1365
1460
|
[n]
|
|
1366
|
-
),
|
|
1367
|
-
(
|
|
1368
|
-
|
|
1369
|
-
const
|
|
1370
|
-
if (
|
|
1371
|
-
const
|
|
1372
|
-
|
|
1373
|
-
const
|
|
1374
|
-
id:
|
|
1375
|
-
title: `カラム ${
|
|
1461
|
+
), z = w(
|
|
1462
|
+
(f) => {
|
|
1463
|
+
E(n, 1, "カラム数更新:", f), i((g) => {
|
|
1464
|
+
const C = g.columns.length;
|
|
1465
|
+
if (f === C) return g;
|
|
1466
|
+
const W = vt(g.columnPanels, f, ae), x = Ve(f, ae), p = g.isResizing && g.resizingColumn && !x.includes(g.resizingColumn);
|
|
1467
|
+
p && E(n, 1, "リサイズ中のカラムが削除されるためリサイズを強制終了:", g.resizingColumn);
|
|
1468
|
+
const m = x.map((A, H) => ({
|
|
1469
|
+
id: A,
|
|
1470
|
+
title: `カラム ${H + 1}`,
|
|
1376
1471
|
minWidth: 350,
|
|
1377
1472
|
maxWidth: 800,
|
|
1378
1473
|
initialWidth: 400,
|
|
1379
|
-
resizable: !(
|
|
1380
|
-
})),
|
|
1381
|
-
if (Object.entries(
|
|
1382
|
-
|
|
1383
|
-
const
|
|
1384
|
-
|
|
1474
|
+
resizable: !(H === 1 && f === 3)
|
|
1475
|
+
})), b = {};
|
|
1476
|
+
if (Object.entries(g.columnWidths).some(([, A]) => A !== 400))
|
|
1477
|
+
x.forEach((A) => {
|
|
1478
|
+
const H = g.columnWidths[A];
|
|
1479
|
+
H && H !== 400 ? b[A] = H : b[A] = 400;
|
|
1385
1480
|
});
|
|
1386
1481
|
else {
|
|
1387
|
-
const
|
|
1388
|
-
|
|
1389
|
-
|
|
1482
|
+
const A = C > f ? Object.values(g.columnWidths).reduce((s, d) => s + d, 0) : f * 400, H = Math.max(A / f, 350);
|
|
1483
|
+
x.forEach((s) => {
|
|
1484
|
+
b[s] = H;
|
|
1390
1485
|
});
|
|
1391
1486
|
}
|
|
1392
1487
|
return {
|
|
1393
|
-
...
|
|
1394
|
-
columns:
|
|
1395
|
-
columnPanels:
|
|
1396
|
-
columnWidths:
|
|
1397
|
-
isResizing:
|
|
1398
|
-
resizingColumn:
|
|
1488
|
+
...g,
|
|
1489
|
+
columns: m,
|
|
1490
|
+
columnPanels: W,
|
|
1491
|
+
columnWidths: b,
|
|
1492
|
+
isResizing: p ? !1 : g.isResizing,
|
|
1493
|
+
resizingColumn: p ? null : g.resizingColumn
|
|
1399
1494
|
};
|
|
1400
1495
|
});
|
|
1401
1496
|
},
|
|
1402
1497
|
[n]
|
|
1403
|
-
),
|
|
1404
|
-
|
|
1405
|
-
const
|
|
1406
|
-
for (const
|
|
1407
|
-
for (const
|
|
1408
|
-
|
|
1409
|
-
const
|
|
1410
|
-
for (const
|
|
1411
|
-
|
|
1412
|
-
let
|
|
1413
|
-
for (const
|
|
1414
|
-
const
|
|
1415
|
-
|
|
1498
|
+
), Z = w(() => {
|
|
1499
|
+
E(n, 1, "カラム自動バランス調整"), i((f) => {
|
|
1500
|
+
const g = [];
|
|
1501
|
+
for (const x of Object.keys(f.columnPanels))
|
|
1502
|
+
for (const p of f.columnPanels[x])
|
|
1503
|
+
g.push(p);
|
|
1504
|
+
const C = {};
|
|
1505
|
+
for (const x of f.columns)
|
|
1506
|
+
C[x.id] = [];
|
|
1507
|
+
let W = 0;
|
|
1508
|
+
for (const x of g) {
|
|
1509
|
+
const p = f.columns[W % f.columns.length].id;
|
|
1510
|
+
C[p].push(x), W += 1;
|
|
1416
1511
|
}
|
|
1417
1512
|
return {
|
|
1418
|
-
...
|
|
1419
|
-
columnPanels:
|
|
1513
|
+
...f,
|
|
1514
|
+
columnPanels: C
|
|
1420
1515
|
};
|
|
1421
1516
|
});
|
|
1422
|
-
}, [n]),
|
|
1423
|
-
(
|
|
1424
|
-
[
|
|
1425
|
-
),
|
|
1426
|
-
let
|
|
1427
|
-
for (const
|
|
1428
|
-
|
|
1429
|
-
return
|
|
1430
|
-
}, [
|
|
1431
|
-
|
|
1432
|
-
...
|
|
1433
|
-
showInsertPlaceholders:
|
|
1517
|
+
}, [n]), Y = w(
|
|
1518
|
+
(f) => o.columns.find((g) => g.id === f),
|
|
1519
|
+
[o.columns]
|
|
1520
|
+
), q = w(() => {
|
|
1521
|
+
let f = 0;
|
|
1522
|
+
for (const g of Object.values(o.columnWidths))
|
|
1523
|
+
f += g;
|
|
1524
|
+
return f;
|
|
1525
|
+
}, [o.columnWidths]), O = w((f) => document.querySelector(`[data-column-id="${f}"]`), []), _ = w((f) => {
|
|
1526
|
+
i((g) => ({
|
|
1527
|
+
...g,
|
|
1528
|
+
showInsertPlaceholders: f
|
|
1434
1529
|
}));
|
|
1435
1530
|
}, []);
|
|
1436
1531
|
return {
|
|
1437
|
-
layoutState:
|
|
1438
|
-
addColumn:
|
|
1439
|
-
removeColumn:
|
|
1440
|
-
moveColumn:
|
|
1441
|
-
startResize:
|
|
1442
|
-
handleResize:
|
|
1443
|
-
endResize:
|
|
1444
|
-
setColumnWidth:
|
|
1445
|
-
resetColumnWidths:
|
|
1446
|
-
movePanel:
|
|
1447
|
-
addPanel:
|
|
1448
|
-
removePanel:
|
|
1449
|
-
updateColumnCount:
|
|
1450
|
-
autoBalanceColumns:
|
|
1451
|
-
getColumnById:
|
|
1452
|
-
getTotalWidth:
|
|
1453
|
-
getColumnElement:
|
|
1454
|
-
setShowInsertPlaceholders:
|
|
1532
|
+
layoutState: o,
|
|
1533
|
+
addColumn: h,
|
|
1534
|
+
removeColumn: S,
|
|
1535
|
+
moveColumn: v,
|
|
1536
|
+
startResize: $,
|
|
1537
|
+
handleResize: M,
|
|
1538
|
+
endResize: y,
|
|
1539
|
+
setColumnWidth: a,
|
|
1540
|
+
resetColumnWidths: j,
|
|
1541
|
+
movePanel: D,
|
|
1542
|
+
addPanel: R,
|
|
1543
|
+
removePanel: L,
|
|
1544
|
+
updateColumnCount: z,
|
|
1545
|
+
autoBalanceColumns: Z,
|
|
1546
|
+
getColumnById: Y,
|
|
1547
|
+
getTotalWidth: q,
|
|
1548
|
+
getColumnElement: O,
|
|
1549
|
+
setShowInsertPlaceholders: _
|
|
1455
1550
|
};
|
|
1456
|
-
},
|
|
1551
|
+
}, Pe = {
|
|
1457
1552
|
triggerDistance: 80,
|
|
1458
1553
|
scrollSpeed: 5,
|
|
1459
1554
|
maxScrollSpeed: 20
|
|
1460
|
-
},
|
|
1461
|
-
const { triggerDistance:
|
|
1555
|
+
}, Ye = (r, t, n = Pe, l) => {
|
|
1556
|
+
const { triggerDistance: o, scrollSpeed: i, maxScrollSpeed: u } = n;
|
|
1462
1557
|
let c;
|
|
1463
1558
|
l ? c = l.getBoundingClientRect() : c = new DOMRect(0, 0, window.innerWidth, window.innerHeight);
|
|
1464
|
-
const { left:
|
|
1465
|
-
let
|
|
1466
|
-
if (r >=
|
|
1467
|
-
if (r <
|
|
1468
|
-
const
|
|
1469
|
-
|
|
1470
|
-
} else if (r >
|
|
1471
|
-
const
|
|
1472
|
-
|
|
1559
|
+
const { left: h, top: S, right: v, bottom: $ } = c;
|
|
1560
|
+
let M = 0, y = 0;
|
|
1561
|
+
if (r >= h && r <= v && t >= S && t <= $) {
|
|
1562
|
+
if (r < h + o) {
|
|
1563
|
+
const a = Math.max(0, (h + o - r) / o);
|
|
1564
|
+
M = -Math.min(u, i + a * (u - i));
|
|
1565
|
+
} else if (r > v - o) {
|
|
1566
|
+
const a = Math.max(0, (r - (v - o)) / o);
|
|
1567
|
+
M = Math.min(u, i + a * (u - i));
|
|
1473
1568
|
}
|
|
1474
|
-
if (t <
|
|
1475
|
-
const
|
|
1476
|
-
|
|
1477
|
-
} else if (t >
|
|
1478
|
-
const
|
|
1479
|
-
|
|
1569
|
+
if (t < S + o) {
|
|
1570
|
+
const a = Math.max(0, (S + o - t) / o);
|
|
1571
|
+
y = -Math.min(u, i + a * (u - i));
|
|
1572
|
+
} else if (t > $ - o) {
|
|
1573
|
+
const a = Math.max(0, (t - ($ - o)) / o);
|
|
1574
|
+
y = Math.min(u, i + a * (u - i));
|
|
1480
1575
|
}
|
|
1481
1576
|
}
|
|
1482
|
-
return { x:
|
|
1483
|
-
},
|
|
1577
|
+
return { x: M, y };
|
|
1578
|
+
}, yt = (r, t) => {
|
|
1484
1579
|
(r.x !== 0 || r.y !== 0) && (t ? t.scrollBy(r.x, r.y) : window.scrollBy(r.x, r.y));
|
|
1485
1580
|
};
|
|
1486
|
-
class
|
|
1487
|
-
constructor(t =
|
|
1581
|
+
class Be {
|
|
1582
|
+
constructor(t = Pe, n) {
|
|
1488
1583
|
this.intervalId = null, this.isActive = !1, this.config = t, this.scrollElement = n;
|
|
1489
1584
|
}
|
|
1490
1585
|
setScrollElement(t) {
|
|
@@ -1492,12 +1587,12 @@ class Ee {
|
|
|
1492
1587
|
}
|
|
1493
1588
|
start(t, n) {
|
|
1494
1589
|
this.isActive || (this.isActive = !0, this.intervalId = window.setInterval(() => {
|
|
1495
|
-
const l =
|
|
1496
|
-
|
|
1590
|
+
const l = Ye(t, n, this.config, this.scrollElement);
|
|
1591
|
+
yt(l, this.scrollElement);
|
|
1497
1592
|
}, 16));
|
|
1498
1593
|
}
|
|
1499
1594
|
update(t, n) {
|
|
1500
|
-
const l =
|
|
1595
|
+
const l = Ye(t, n, this.config, this.scrollElement);
|
|
1501
1596
|
(l.x !== 0 || l.y !== 0) && !this.isActive ? this.start(t, n) : l.x === 0 && l.y === 0 && this.isActive && this.stop();
|
|
1502
1597
|
}
|
|
1503
1598
|
stop() {
|
|
@@ -1510,717 +1605,733 @@ class Ee {
|
|
|
1510
1605
|
this.config = t;
|
|
1511
1606
|
}
|
|
1512
1607
|
}
|
|
1513
|
-
const
|
|
1608
|
+
const wt = ({
|
|
1514
1609
|
debugConfig: r,
|
|
1515
1610
|
dragState: t,
|
|
1516
1611
|
customDrag: n,
|
|
1517
1612
|
clickState: l,
|
|
1518
|
-
dragModes:
|
|
1519
|
-
isMouseDown:
|
|
1520
|
-
dragOverPosition:
|
|
1613
|
+
dragModes: o,
|
|
1614
|
+
isMouseDown: i,
|
|
1615
|
+
dragOverPosition: u,
|
|
1521
1616
|
setCustomDrag: c,
|
|
1522
|
-
setDragState:
|
|
1523
|
-
setDragOverPosition:
|
|
1524
|
-
setOriginalPanelPosition:
|
|
1525
|
-
setClickState:
|
|
1526
|
-
setIsMouseDown:
|
|
1527
|
-
findPanelPosition:
|
|
1528
|
-
performPanelMove:
|
|
1529
|
-
showMousePosition:
|
|
1530
|
-
updateMousePosition:
|
|
1531
|
-
recordMouseDown:
|
|
1532
|
-
recordClickPosition:
|
|
1533
|
-
isVirtualClick:
|
|
1534
|
-
calculateMoveDistance:
|
|
1535
|
-
clearMouseTracking:
|
|
1536
|
-
resetDragState:
|
|
1537
|
-
resetClickState:
|
|
1538
|
-
createDragImage:
|
|
1539
|
-
updateDragImagePosition:
|
|
1540
|
-
removeDragImage:
|
|
1541
|
-
handlePlaceholderDragEnter:
|
|
1542
|
-
handlePlaceholderDragLeave:
|
|
1617
|
+
setDragState: h,
|
|
1618
|
+
setDragOverPosition: S,
|
|
1619
|
+
setOriginalPanelPosition: v,
|
|
1620
|
+
setClickState: $,
|
|
1621
|
+
setIsMouseDown: M,
|
|
1622
|
+
findPanelPosition: y,
|
|
1623
|
+
performPanelMove: a,
|
|
1624
|
+
showMousePosition: j,
|
|
1625
|
+
updateMousePosition: D,
|
|
1626
|
+
recordMouseDown: R,
|
|
1627
|
+
recordClickPosition: L,
|
|
1628
|
+
isVirtualClick: z,
|
|
1629
|
+
calculateMoveDistance: Z,
|
|
1630
|
+
clearMouseTracking: Y,
|
|
1631
|
+
resetDragState: q,
|
|
1632
|
+
resetClickState: O,
|
|
1633
|
+
createDragImage: _,
|
|
1634
|
+
updateDragImagePosition: f,
|
|
1635
|
+
removeDragImage: g,
|
|
1636
|
+
handlePlaceholderDragEnter: C,
|
|
1637
|
+
handlePlaceholderDragLeave: W
|
|
1543
1638
|
}) => {
|
|
1544
|
-
const
|
|
1545
|
-
|
|
1546
|
-
const
|
|
1547
|
-
|
|
1548
|
-
const
|
|
1549
|
-
|
|
1639
|
+
const x = F(r);
|
|
1640
|
+
x.current = r;
|
|
1641
|
+
const p = F(null), m = F(null), b = F(0), N = F(new Be(Pe));
|
|
1642
|
+
K(() => {
|
|
1643
|
+
const d = document.querySelector("main.max-w-full.flex-1.overflow-auto");
|
|
1644
|
+
d && N.current.setScrollElement(d);
|
|
1550
1645
|
}, []);
|
|
1551
|
-
const
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
}, [
|
|
1555
|
-
const
|
|
1556
|
-
(
|
|
1646
|
+
const T = F(u);
|
|
1647
|
+
K(() => {
|
|
1648
|
+
T.current = u, E(x.current, 2, "dragOverPositionRef更新:", u);
|
|
1649
|
+
}, [u]);
|
|
1650
|
+
const A = w(
|
|
1651
|
+
(d) => {
|
|
1557
1652
|
if (n.isActive || l.isClicked) {
|
|
1558
|
-
|
|
1559
|
-
const
|
|
1560
|
-
|
|
1653
|
+
d.preventDefault();
|
|
1654
|
+
const k = window.getSelection();
|
|
1655
|
+
k && k.rangeCount > 0 && k.removeAllRanges();
|
|
1561
1656
|
}
|
|
1562
1657
|
if (n.isActive) {
|
|
1563
|
-
|
|
1564
|
-
const
|
|
1565
|
-
if (
|
|
1658
|
+
D(d.clientX, d.clientY), f(d.clientX, d.clientY), N.current.update(d.clientX, d.clientY);
|
|
1659
|
+
const k = document.elementFromPoint(d.clientX, d.clientY), X = k?.closest("[data-drop-zone]");
|
|
1660
|
+
if (X) {
|
|
1566
1661
|
document.body.classList.add("droppable");
|
|
1567
|
-
const
|
|
1568
|
-
|
|
1569
|
-
const
|
|
1570
|
-
if (
|
|
1571
|
-
const
|
|
1572
|
-
if (
|
|
1573
|
-
const
|
|
1574
|
-
|
|
1662
|
+
const G = X.getAttribute("data-column-index"), Q = G ? parseInt(G, 10) : null;
|
|
1663
|
+
Q !== null && Q !== t.dragOverColumn && h((re) => ({ ...re, dragOverColumn: Q }));
|
|
1664
|
+
const B = k?.closest("[data-placeholder-index]");
|
|
1665
|
+
if (B) {
|
|
1666
|
+
const re = B.getAttribute("data-placeholder-index"), ie = B.getAttribute("data-placeholder-column");
|
|
1667
|
+
if (re && ie) {
|
|
1668
|
+
const se = parseInt(re, 10), ge = parseInt(ie, 10);
|
|
1669
|
+
C(ge, se);
|
|
1575
1670
|
}
|
|
1576
1671
|
} else
|
|
1577
|
-
|
|
1672
|
+
W();
|
|
1578
1673
|
} else
|
|
1579
|
-
document.body.classList.remove("droppable"),
|
|
1580
|
-
} else if (
|
|
1581
|
-
if (
|
|
1582
|
-
|
|
1583
|
-
const
|
|
1584
|
-
if (
|
|
1585
|
-
const
|
|
1586
|
-
|
|
1674
|
+
document.body.classList.remove("droppable"), S(null), h((G) => ({ ...G, dragOverColumn: null }));
|
|
1675
|
+
} else if (i && l.isClicked && l.panelId) {
|
|
1676
|
+
if (o[l.panelId] !== "custom" || Z(d.clientX, d.clientY) < 10) return;
|
|
1677
|
+
E(x.current, 1, "🚀 カスタムドラッグ開始 -", l.panelId);
|
|
1678
|
+
const X = document.querySelector(`[data-panel-id="${l.panelId}"]`);
|
|
1679
|
+
if (X && m.current) {
|
|
1680
|
+
const G = X.getBoundingClientRect(), Q = m.current.x - G.left, B = m.current.y - G.top;
|
|
1681
|
+
_(l.panelId, Q, B), document.body.classList.add("custom-dragging"), c({
|
|
1587
1682
|
isActive: !0,
|
|
1588
1683
|
panelId: l.panelId,
|
|
1589
|
-
startX:
|
|
1590
|
-
startY:
|
|
1684
|
+
startX: Q,
|
|
1685
|
+
startY: B
|
|
1591
1686
|
});
|
|
1592
1687
|
}
|
|
1593
|
-
|
|
1688
|
+
h({ isDragging: !0, draggedPanel: l.panelId, dragOverColumn: null }), v(y(l.panelId)), j(d.clientX, d.clientY), $({ isClicked: !1, panelId: null }), M(!1), Y(), m.current = null, p.current && (clearTimeout(p.current), p.current = null);
|
|
1594
1689
|
}
|
|
1595
1690
|
},
|
|
1596
1691
|
[
|
|
1597
1692
|
n.isActive,
|
|
1598
1693
|
l,
|
|
1599
1694
|
t.dragOverColumn,
|
|
1600
|
-
s,
|
|
1601
|
-
u,
|
|
1602
|
-
m,
|
|
1603
|
-
b,
|
|
1604
|
-
C,
|
|
1605
|
-
B,
|
|
1606
1695
|
o,
|
|
1607
|
-
|
|
1608
|
-
y,
|
|
1696
|
+
i,
|
|
1609
1697
|
D,
|
|
1610
|
-
A,
|
|
1611
|
-
T,
|
|
1612
|
-
k,
|
|
1613
|
-
Q,
|
|
1614
1698
|
h,
|
|
1699
|
+
S,
|
|
1700
|
+
Z,
|
|
1701
|
+
y,
|
|
1702
|
+
c,
|
|
1615
1703
|
v,
|
|
1616
|
-
|
|
1704
|
+
j,
|
|
1705
|
+
$,
|
|
1706
|
+
M,
|
|
1707
|
+
Y,
|
|
1708
|
+
_,
|
|
1709
|
+
f,
|
|
1710
|
+
C,
|
|
1711
|
+
W
|
|
1617
1712
|
]
|
|
1618
|
-
),
|
|
1619
|
-
(
|
|
1620
|
-
if (
|
|
1713
|
+
), H = w(
|
|
1714
|
+
(d) => {
|
|
1715
|
+
if (E(x.current, 1, "🐭 カスタムドラッグハンドラー - グローバルマウスアップ", {
|
|
1621
1716
|
isActive: n.isActive,
|
|
1622
1717
|
panelId: n.panelId,
|
|
1623
|
-
dragMode: n.panelId ?
|
|
1718
|
+
dragMode: n.panelId ? o[n.panelId] : "unknown"
|
|
1624
1719
|
}), n.isActive) {
|
|
1625
|
-
|
|
1626
|
-
const
|
|
1627
|
-
if (
|
|
1628
|
-
const
|
|
1629
|
-
if (
|
|
1630
|
-
const
|
|
1631
|
-
|
|
1720
|
+
N.current.stop();
|
|
1721
|
+
const k = T.current;
|
|
1722
|
+
if (k) {
|
|
1723
|
+
const G = document.elementFromPoint(d.clientX, d.clientY)?.closest("[data-drop-zone]");
|
|
1724
|
+
if (G) {
|
|
1725
|
+
const Q = G.getAttribute("data-column-key");
|
|
1726
|
+
Q && o[n.panelId] === "custom" ? (E(x.current, 1, "🔄 カスタムドラッグパネル移動実行:", n.panelId, "→", Q), a(n.panelId, Q, k.insertIndex)) : E(x.current, 1, "🚫 カスタムドラッグパネル移動スキップ:", n.panelId, "モード:", o[n.panelId]);
|
|
1632
1727
|
}
|
|
1633
1728
|
}
|
|
1634
|
-
|
|
1635
|
-
} else if (
|
|
1636
|
-
const
|
|
1637
|
-
if (!(
|
|
1638
|
-
|
|
1729
|
+
g(), document.body.classList.remove("custom-dragging", "droppable"), q(), b.current = 0;
|
|
1730
|
+
} else if (z(d.clientX, d.clientY)) {
|
|
1731
|
+
const X = document.elementFromPoint(d.clientX, d.clientY)?.closest("[data-panel-id]"), G = X?.getAttribute("data-panel-id") ?? null;
|
|
1732
|
+
if (!(X && G) || o[G] !== "custom") {
|
|
1733
|
+
p.current && (clearTimeout(p.current), p.current = null), O(), m.current = null, b.current = 0;
|
|
1639
1734
|
return;
|
|
1640
1735
|
}
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
}, 2e3)) : (
|
|
1644
|
-
|
|
1736
|
+
b.current += 1, l.isClicked === !1 && b.current === 1 ? (E(x.current, 1, "🖱️ 仮想クリック検出 - ドラッグ待機状態へ:", G), $({ isClicked: !0, panelId: G }), p.current = window.setTimeout(() => {
|
|
1737
|
+
E(x.current, 1, "⏳ クリック待機状態を自動解除:", G), O(), m.current = null, b.current = 0;
|
|
1738
|
+
}, 2e3)) : (E(x.current, 1, "🚫 クリック待機状態を解除 - 仮想クリック検出停止:", G), p.current && (clearTimeout(p.current), p.current = null), O(), m.current = null, b.current = 0, p.current = window.setTimeout(() => {
|
|
1739
|
+
E(x.current, 1, "⏳ 仮想クリック検出再開:", G);
|
|
1645
1740
|
}, 2e3));
|
|
1646
|
-
} else l.isClicked && (
|
|
1647
|
-
|
|
1741
|
+
} else l.isClicked && (O(), m.current = null, b.current = 0);
|
|
1742
|
+
i && M(!1);
|
|
1648
1743
|
},
|
|
1649
|
-
[n.isActive, n.panelId, l,
|
|
1650
|
-
),
|
|
1651
|
-
(
|
|
1652
|
-
if (
|
|
1653
|
-
|
|
1744
|
+
[n.isActive, n.panelId, l, o, i, a, q, O, z, $, M, g]
|
|
1745
|
+
), s = w(
|
|
1746
|
+
(d, k) => {
|
|
1747
|
+
if (o[k] !== "custom") {
|
|
1748
|
+
E(x.current, 1, "🚫 カスタムドラッグモードではない - スキップ:", k);
|
|
1654
1749
|
return;
|
|
1655
1750
|
}
|
|
1656
|
-
|
|
1751
|
+
R(d.clientX, d.clientY), l.isClicked && l.panelId === k && (M(!0), p.current !== null && (clearTimeout(p.current), p.current = null), L(d.clientX, d.clientY), m.current = { x: d.clientX, y: d.clientY });
|
|
1657
1752
|
},
|
|
1658
|
-
[l,
|
|
1753
|
+
[l, o, R, M, L]
|
|
1659
1754
|
);
|
|
1660
|
-
return
|
|
1661
|
-
|
|
1755
|
+
return K(() => () => {
|
|
1756
|
+
p.current !== null && clearTimeout(p.current), N.current.stop();
|
|
1662
1757
|
}, []), {
|
|
1663
|
-
handleGlobalMouseMove:
|
|
1664
|
-
handleGlobalMouseUp:
|
|
1665
|
-
handleMouseDown:
|
|
1758
|
+
handleGlobalMouseMove: A,
|
|
1759
|
+
handleGlobalMouseUp: H,
|
|
1760
|
+
handleMouseDown: s
|
|
1666
1761
|
};
|
|
1667
|
-
},
|
|
1668
|
-
const [r, t] =
|
|
1762
|
+
}, jt = () => {
|
|
1763
|
+
const [r, t] = te({
|
|
1669
1764
|
isDragging: !1,
|
|
1670
1765
|
draggedPanel: null,
|
|
1671
1766
|
dragOverColumn: null
|
|
1672
|
-
}), [n, l] =
|
|
1767
|
+
}), [n, l] = te(null), [o, i] = te(null), [u, c] = te({
|
|
1673
1768
|
isActive: !1,
|
|
1674
1769
|
panelId: "",
|
|
1675
1770
|
startX: 0,
|
|
1676
1771
|
startY: 0
|
|
1677
|
-
}), [
|
|
1772
|
+
}), [h, S] = te({
|
|
1678
1773
|
isClicked: !1,
|
|
1679
1774
|
panelId: null
|
|
1680
|
-
}), [
|
|
1775
|
+
}), [v, $] = te({
|
|
1681
1776
|
isTouchDragging: !1,
|
|
1682
1777
|
startX: 0,
|
|
1683
1778
|
startY: 0,
|
|
1684
1779
|
currentX: 0,
|
|
1685
1780
|
currentY: 0,
|
|
1686
1781
|
draggedElement: null
|
|
1687
|
-
}), [
|
|
1688
|
-
c({ isActive: !1, panelId: "", startX: 0, startY: 0 }), t({ isDragging: !1, draggedPanel: null, dragOverColumn: null }), l(null),
|
|
1689
|
-
}, []),
|
|
1690
|
-
|
|
1691
|
-
}, []),
|
|
1692
|
-
t(
|
|
1693
|
-
}, []),
|
|
1694
|
-
l(
|
|
1695
|
-
}, []),
|
|
1696
|
-
|
|
1697
|
-
}, []),
|
|
1698
|
-
c(
|
|
1699
|
-
}, []),
|
|
1700
|
-
|
|
1701
|
-
}, []),
|
|
1702
|
-
|
|
1703
|
-
}, []),
|
|
1704
|
-
|
|
1782
|
+
}), [M, y] = te(!1), a = w(() => {
|
|
1783
|
+
c({ isActive: !1, panelId: "", startX: 0, startY: 0 }), t({ isDragging: !1, draggedPanel: null, dragOverColumn: null }), l(null), i(null);
|
|
1784
|
+
}, []), j = w(() => {
|
|
1785
|
+
S({ isClicked: !1, panelId: null }), y(!1);
|
|
1786
|
+
}, []), D = w((O) => {
|
|
1787
|
+
t(O);
|
|
1788
|
+
}, []), R = w((O) => {
|
|
1789
|
+
l(O);
|
|
1790
|
+
}, []), L = w((O) => {
|
|
1791
|
+
i(O);
|
|
1792
|
+
}, []), z = w((O) => {
|
|
1793
|
+
c(O);
|
|
1794
|
+
}, []), Z = w((O) => {
|
|
1795
|
+
S(O);
|
|
1796
|
+
}, []), Y = w((O) => {
|
|
1797
|
+
$(O);
|
|
1798
|
+
}, []), q = w((O) => {
|
|
1799
|
+
y(O);
|
|
1705
1800
|
}, []);
|
|
1706
1801
|
return {
|
|
1707
1802
|
// States / 状態
|
|
1708
1803
|
dragState: r,
|
|
1709
1804
|
dragOverPosition: n,
|
|
1710
|
-
originalPanelPosition:
|
|
1711
|
-
customDrag:
|
|
1712
|
-
clickState:
|
|
1713
|
-
touchDragState:
|
|
1714
|
-
isMouseDown:
|
|
1805
|
+
originalPanelPosition: o,
|
|
1806
|
+
customDrag: u,
|
|
1807
|
+
clickState: h,
|
|
1808
|
+
touchDragState: v,
|
|
1809
|
+
isMouseDown: M,
|
|
1715
1810
|
// Stabilized Setters / 安定化されたセッター
|
|
1716
|
-
setDragState:
|
|
1717
|
-
setDragOverPosition:
|
|
1718
|
-
setOriginalPanelPosition:
|
|
1719
|
-
setCustomDrag:
|
|
1720
|
-
setClickState:
|
|
1721
|
-
setTouchDragState:
|
|
1722
|
-
setIsMouseDown:
|
|
1811
|
+
setDragState: D,
|
|
1812
|
+
setDragOverPosition: R,
|
|
1813
|
+
setOriginalPanelPosition: L,
|
|
1814
|
+
setCustomDrag: z,
|
|
1815
|
+
setClickState: Z,
|
|
1816
|
+
setTouchDragState: Y,
|
|
1817
|
+
setIsMouseDown: q,
|
|
1723
1818
|
// Utility Functions / ユーティリティ関数
|
|
1724
|
-
resetDragState:
|
|
1725
|
-
resetClickState:
|
|
1819
|
+
resetDragState: a,
|
|
1820
|
+
resetClickState: j
|
|
1726
1821
|
};
|
|
1727
|
-
},
|
|
1728
|
-
const [r, t] =
|
|
1822
|
+
}, Pt = () => {
|
|
1823
|
+
const [r, t] = te({
|
|
1729
1824
|
x: 0,
|
|
1730
1825
|
y: 0,
|
|
1731
1826
|
isVisible: !1
|
|
1732
|
-
}), n =
|
|
1733
|
-
t({ x:
|
|
1734
|
-
}, []),
|
|
1735
|
-
t((
|
|
1736
|
-
}, []), c =
|
|
1737
|
-
t((
|
|
1738
|
-
x:
|
|
1739
|
-
y:
|
|
1740
|
-
isVisible:
|
|
1827
|
+
}), n = F(null), l = F(0), o = F(null), i = w((y, a) => {
|
|
1828
|
+
t({ x: y, y: a, isVisible: !0 });
|
|
1829
|
+
}, []), u = w(() => {
|
|
1830
|
+
t((y) => ({ ...y, isVisible: !1 }));
|
|
1831
|
+
}, []), c = w((y, a) => {
|
|
1832
|
+
t((j) => j.x === y && j.y === a ? j : {
|
|
1833
|
+
x: y,
|
|
1834
|
+
y: a,
|
|
1835
|
+
isVisible: j.isVisible
|
|
1741
1836
|
});
|
|
1742
|
-
}, []),
|
|
1743
|
-
l.current = Date.now(),
|
|
1744
|
-
}, []),
|
|
1745
|
-
n.current = { x:
|
|
1746
|
-
}, []),
|
|
1837
|
+
}, []), h = w((y, a) => {
|
|
1838
|
+
l.current = Date.now(), o.current = { x: y, y: a };
|
|
1839
|
+
}, []), S = w((y, a) => {
|
|
1840
|
+
n.current = { x: y, y: a };
|
|
1841
|
+
}, []), v = w((y, a, j = 500, D = 5) => Date.now() - (l.current || 0) >= j || !o.current ? !1 : Math.sqrt((y - o.current.x) ** 2 + (a - o.current.y) ** 2) < D, []), $ = w((y, a) => {
|
|
1747
1842
|
if (!n.current)
|
|
1748
1843
|
return 0;
|
|
1749
|
-
const
|
|
1750
|
-
return Math.sqrt(
|
|
1751
|
-
}, []),
|
|
1752
|
-
n.current = null, l.current = 0,
|
|
1844
|
+
const j = Math.abs(y - n.current.x), D = Math.abs(a - n.current.y);
|
|
1845
|
+
return Math.sqrt(j * j + D * D);
|
|
1846
|
+
}, []), M = w(() => {
|
|
1847
|
+
n.current = null, l.current = 0, o.current = null;
|
|
1753
1848
|
}, []);
|
|
1754
1849
|
return {
|
|
1755
1850
|
mousePosition: r,
|
|
1756
1851
|
lastClickPosition: n.current,
|
|
1757
1852
|
mouseDownTime: l.current,
|
|
1758
|
-
mouseDownPosition:
|
|
1759
|
-
showMousePosition:
|
|
1760
|
-
hideMousePosition:
|
|
1853
|
+
mouseDownPosition: o.current,
|
|
1854
|
+
showMousePosition: i,
|
|
1855
|
+
hideMousePosition: u,
|
|
1761
1856
|
updateMousePosition: c,
|
|
1762
|
-
recordMouseDown:
|
|
1763
|
-
recordClickPosition:
|
|
1764
|
-
isVirtualClick:
|
|
1765
|
-
calculateMoveDistance:
|
|
1766
|
-
clearMouseTracking:
|
|
1857
|
+
recordMouseDown: h,
|
|
1858
|
+
recordClickPosition: S,
|
|
1859
|
+
isVirtualClick: v,
|
|
1860
|
+
calculateMoveDistance: $,
|
|
1861
|
+
clearMouseTracking: M
|
|
1767
1862
|
};
|
|
1768
|
-
},
|
|
1863
|
+
}, Dt = ({
|
|
1769
1864
|
debugConfig: r,
|
|
1770
1865
|
dragState: t,
|
|
1771
1866
|
customDrag: n,
|
|
1772
1867
|
dragModes: l,
|
|
1773
|
-
columnPanels:
|
|
1774
|
-
dragOverPosition:
|
|
1775
|
-
originalPanelPosition:
|
|
1868
|
+
columnPanels: o,
|
|
1869
|
+
dragOverPosition: i,
|
|
1870
|
+
originalPanelPosition: u,
|
|
1776
1871
|
setDragState: c,
|
|
1777
|
-
setDragOverPosition:
|
|
1778
|
-
setOriginalPanelPosition:
|
|
1779
|
-
performPanelMove:
|
|
1780
|
-
showMousePosition:
|
|
1781
|
-
updateMousePosition:
|
|
1782
|
-
resetDragState:
|
|
1783
|
-
handlePlaceholderDragEnter:
|
|
1784
|
-
handlePlaceholderDragLeave:
|
|
1872
|
+
setDragOverPosition: h,
|
|
1873
|
+
setOriginalPanelPosition: S,
|
|
1874
|
+
performPanelMove: v,
|
|
1875
|
+
showMousePosition: $,
|
|
1876
|
+
updateMousePosition: M,
|
|
1877
|
+
resetDragState: y,
|
|
1878
|
+
handlePlaceholderDragEnter: a,
|
|
1879
|
+
handlePlaceholderDragLeave: j,
|
|
1880
|
+
scale: D = 1
|
|
1785
1881
|
}) => {
|
|
1786
|
-
const
|
|
1787
|
-
|
|
1788
|
-
const
|
|
1789
|
-
|
|
1790
|
-
const
|
|
1791
|
-
|
|
1792
|
-
const
|
|
1793
|
-
|
|
1794
|
-
const
|
|
1795
|
-
|
|
1796
|
-
const
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1882
|
+
const R = F(r);
|
|
1883
|
+
R.current = r;
|
|
1884
|
+
const L = F(o);
|
|
1885
|
+
L.current = o;
|
|
1886
|
+
const z = F(t);
|
|
1887
|
+
z.current = t;
|
|
1888
|
+
const Z = F(i);
|
|
1889
|
+
Z.current = i;
|
|
1890
|
+
const Y = F(u);
|
|
1891
|
+
Y.current = u;
|
|
1892
|
+
const q = F(D);
|
|
1893
|
+
q.current = D;
|
|
1894
|
+
const O = F(new Be(Pe));
|
|
1895
|
+
K(() => {
|
|
1896
|
+
const x = document.querySelector("main.max-w-full.flex-1.overflow-auto");
|
|
1897
|
+
x && O.current.setScrollElement(x);
|
|
1800
1898
|
}, []);
|
|
1801
|
-
const
|
|
1802
|
-
(
|
|
1899
|
+
const _ = w(
|
|
1900
|
+
(x, p) => {
|
|
1803
1901
|
if (n.isActive) {
|
|
1804
|
-
|
|
1902
|
+
E(R.current, 2, "カスタムドラッグアクティブ中 - 通常ドラッグを無効化:", p), x.preventDefault();
|
|
1805
1903
|
return;
|
|
1806
1904
|
}
|
|
1807
|
-
if (l[
|
|
1808
|
-
|
|
1905
|
+
if (l[p] === "custom") {
|
|
1906
|
+
E(R.current, 2, "カスタムドラッグモード - 通常ドラッグを無効化:", p), x.preventDefault();
|
|
1809
1907
|
return;
|
|
1810
1908
|
}
|
|
1811
|
-
|
|
1812
|
-
const
|
|
1813
|
-
let
|
|
1814
|
-
for (let
|
|
1815
|
-
const
|
|
1816
|
-
if (
|
|
1817
|
-
|
|
1909
|
+
E(R.current, 1, "ドラッグ開始:", p);
|
|
1910
|
+
const m = Object.keys(L.current);
|
|
1911
|
+
let b = null;
|
|
1912
|
+
for (let N = 0; N < m.length; N++) {
|
|
1913
|
+
const T = m[N], A = L.current[T].indexOf(p);
|
|
1914
|
+
if (A !== -1) {
|
|
1915
|
+
b = { columnIndex: N, panelIndex: A };
|
|
1818
1916
|
break;
|
|
1819
1917
|
}
|
|
1820
1918
|
}
|
|
1821
|
-
|
|
1919
|
+
if (S(b), x.dataTransfer) {
|
|
1920
|
+
x.dataTransfer.setData("text/plain", p), x.dataTransfer.effectAllowed = "move";
|
|
1921
|
+
const N = q.current;
|
|
1922
|
+
if (N < 1) {
|
|
1923
|
+
const T = x.currentTarget.closest("[data-panel-id]") ?? x.currentTarget, A = T.getBoundingClientRect(), H = T.offsetWidth, s = T.offsetHeight, d = T.cloneNode(!0);
|
|
1924
|
+
d.removeAttribute("data-panel-id"), d.removeAttribute("id"), d.style.margin = "0", d.style.width = `${H}px`, d.style.height = `${s}px`, d.style.transform = `scale(${N})`, d.style.transformOrigin = "top left";
|
|
1925
|
+
const k = document.createElement("div");
|
|
1926
|
+
k.style.position = "fixed", k.style.top = "0", k.style.left = "-10000px", k.style.width = `${H * N}px`, k.style.height = `${s * N}px`, k.style.overflow = "hidden", k.style.opacity = "0.8", k.style.pointerEvents = "none", k.appendChild(d), document.body.appendChild(k), x.dataTransfer.setDragImage(k, x.clientX - A.left, x.clientY - A.top), requestAnimationFrame(() => k.remove());
|
|
1927
|
+
}
|
|
1928
|
+
}
|
|
1929
|
+
$(x.clientX, x.clientY), requestAnimationFrame(() => {
|
|
1822
1930
|
c({
|
|
1823
1931
|
isDragging: !0,
|
|
1824
|
-
draggedPanel:
|
|
1932
|
+
draggedPanel: p,
|
|
1825
1933
|
dragOverColumn: null
|
|
1826
1934
|
});
|
|
1827
1935
|
});
|
|
1828
1936
|
},
|
|
1829
|
-
[l, n.isActive,
|
|
1830
|
-
),
|
|
1831
|
-
|
|
1832
|
-
}, [
|
|
1833
|
-
(
|
|
1834
|
-
if (
|
|
1835
|
-
|
|
1836
|
-
const
|
|
1837
|
-
if (
|
|
1838
|
-
const
|
|
1839
|
-
if (
|
|
1840
|
-
const
|
|
1841
|
-
|
|
1937
|
+
[l, n.isActive, S, $, c]
|
|
1938
|
+
), f = w(() => {
|
|
1939
|
+
E(R.current, 1, "ドラッグ終了"), O.current.stop(), y();
|
|
1940
|
+
}, [y]), g = w(
|
|
1941
|
+
(x, p) => {
|
|
1942
|
+
if (x.preventDefault(), x.dataTransfer.dropEffect = "move", !z.current.isDragging) return;
|
|
1943
|
+
M(x.clientX, x.clientY), p !== z.current.dragOverColumn && c((N) => ({ ...N, dragOverColumn: p }));
|
|
1944
|
+
const m = document.elementFromPoint(x.clientX, x.clientY), b = m?.closest("[data-placeholder-index]");
|
|
1945
|
+
if (b) {
|
|
1946
|
+
const N = b.getAttribute("data-placeholder-index"), T = b.getAttribute("data-placeholder-column");
|
|
1947
|
+
if (N && T) {
|
|
1948
|
+
const A = parseInt(N, 10), H = parseInt(T, 10);
|
|
1949
|
+
a(H, A);
|
|
1842
1950
|
}
|
|
1843
1951
|
} else
|
|
1844
|
-
|
|
1952
|
+
m?.closest("[data-drop-zone]") || j();
|
|
1845
1953
|
},
|
|
1846
|
-
[
|
|
1847
|
-
),
|
|
1848
|
-
(
|
|
1849
|
-
|
|
1850
|
-
const
|
|
1851
|
-
|
|
1852
|
-
draggedPanel:
|
|
1853
|
-
targetColumn:
|
|
1854
|
-
insertPosition: `カラム${
|
|
1855
|
-
}),
|
|
1954
|
+
[M, c, a, j]
|
|
1955
|
+
), C = w(
|
|
1956
|
+
(x, p) => {
|
|
1957
|
+
x.preventDefault();
|
|
1958
|
+
const m = x.dataTransfer.getData("text/plain"), b = Z.current;
|
|
1959
|
+
m && b && (E(R.current, 1, "🎯 ドロップ完了:", {
|
|
1960
|
+
draggedPanel: m,
|
|
1961
|
+
targetColumn: p,
|
|
1962
|
+
insertPosition: `カラム${b.columnIndex} - 位置${b.insertIndex}`
|
|
1963
|
+
}), v(m, p, b.insertIndex), h(null), f());
|
|
1856
1964
|
},
|
|
1857
|
-
[
|
|
1858
|
-
),
|
|
1859
|
-
(
|
|
1860
|
-
const
|
|
1861
|
-
|
|
1965
|
+
[v, h, f]
|
|
1966
|
+
), W = w(
|
|
1967
|
+
(x) => {
|
|
1968
|
+
const p = x.currentTarget, m = x.relatedTarget;
|
|
1969
|
+
m && p.contains(m) || (h(null), c((b) => ({ ...b, dragOverColumn: null })));
|
|
1862
1970
|
},
|
|
1863
|
-
[
|
|
1971
|
+
[h, c]
|
|
1864
1972
|
);
|
|
1865
|
-
return
|
|
1866
|
-
const
|
|
1867
|
-
|
|
1973
|
+
return K(() => {
|
|
1974
|
+
const x = (p) => {
|
|
1975
|
+
z.current.isDragging && (M(p.clientX, p.clientY), O.current.update(p.clientX, p.clientY));
|
|
1868
1976
|
};
|
|
1869
1977
|
if (t.isDragging)
|
|
1870
|
-
return document.addEventListener("dragover",
|
|
1871
|
-
document.removeEventListener("dragover",
|
|
1978
|
+
return document.addEventListener("dragover", x), () => {
|
|
1979
|
+
document.removeEventListener("dragover", x), O.current.stop();
|
|
1872
1980
|
};
|
|
1873
|
-
}, [t.isDragging,
|
|
1874
|
-
|
|
1981
|
+
}, [t.isDragging, M]), K(() => () => {
|
|
1982
|
+
O.current.stop();
|
|
1875
1983
|
}, []), {
|
|
1876
|
-
handleDragStart:
|
|
1877
|
-
handleDragEnd:
|
|
1878
|
-
handleDragOverWithInsert:
|
|
1879
|
-
handleDropWithInsert:
|
|
1880
|
-
handleColumnDragLeave:
|
|
1984
|
+
handleDragStart: _,
|
|
1985
|
+
handleDragEnd: f,
|
|
1986
|
+
handleDragOverWithInsert: g,
|
|
1987
|
+
handleDropWithInsert: C,
|
|
1988
|
+
handleColumnDragLeave: W
|
|
1881
1989
|
};
|
|
1882
|
-
},
|
|
1883
|
-
const [
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1990
|
+
}, Nt = (r, t = 1) => {
|
|
1991
|
+
const [n, l] = te(r), [o, i] = te({}), u = F({}), c = F(null), h = F({ x: 0, y: 0 }), S = F(t);
|
|
1992
|
+
S.current = t;
|
|
1993
|
+
const v = w((L) => document.querySelector(`[data-panel-id="${L}"]`), []), $ = w(
|
|
1994
|
+
(L, z) => {
|
|
1995
|
+
const Z = z.getBoundingClientRect(), Y = window.getComputedStyle(z), q = {
|
|
1996
|
+
width: Math.round(Z.width),
|
|
1997
|
+
height: Math.round(Z.height),
|
|
1998
|
+
x: Math.round(Z.left),
|
|
1999
|
+
y: Math.round(Z.top),
|
|
2000
|
+
minHeight: Y.minHeight || "auto",
|
|
2001
|
+
maxHeight: Y.maxHeight || "none"
|
|
2002
|
+
}, O = u.current[L];
|
|
2003
|
+
(!O || Object.keys(q).some((_) => O[_] !== q[_])) && (u.current[L] = q, i((_) => ({
|
|
2004
|
+
..._,
|
|
2005
|
+
[L]: q
|
|
1896
2006
|
})));
|
|
1897
2007
|
},
|
|
1898
2008
|
[]
|
|
1899
2009
|
// setPanelSizes は React の state セッターなので依存配列に含める必要はありません
|
|
1900
|
-
),
|
|
1901
|
-
(
|
|
1902
|
-
const
|
|
1903
|
-
|
|
2010
|
+
), M = w(
|
|
2011
|
+
(L) => {
|
|
2012
|
+
const z = v(L);
|
|
2013
|
+
z && $(L, z);
|
|
1904
2014
|
},
|
|
1905
|
-
[
|
|
1906
|
-
),
|
|
1907
|
-
(
|
|
1908
|
-
|
|
2015
|
+
[v, $]
|
|
2016
|
+
), y = w(
|
|
2017
|
+
(L, z) => {
|
|
2018
|
+
z && requestAnimationFrame(() => $(L, z));
|
|
1909
2019
|
},
|
|
1910
|
-
[
|
|
1911
|
-
),
|
|
1912
|
-
(
|
|
1913
|
-
const
|
|
1914
|
-
if (!
|
|
1915
|
-
const
|
|
1916
|
-
|
|
2020
|
+
[$]
|
|
2021
|
+
), a = w(
|
|
2022
|
+
(L, z, Z) => {
|
|
2023
|
+
const Y = v(L);
|
|
2024
|
+
if (!Y || c.current) return;
|
|
2025
|
+
const q = S.current, O = Y.getBoundingClientRect(), _ = Y.cloneNode(!0);
|
|
2026
|
+
_.removeAttribute("data-panel-id"), _.style.position = "fixed", _.style.top = "0px", _.style.left = "0px", _.style.width = `${Y.offsetWidth}px`, _.style.height = `${Y.offsetHeight}px`, _.style.pointerEvents = "none", _.style.zIndex = "1000", _.style.opacity = "0.5", _.style.margin = "0", _.style.transition = "none", _.style.boxShadow = "0 8px 32px rgba(0,0,0,0.3)", _.style.transformOrigin = "top left", _.style.transform = `translate(${O.left}px, ${O.top}px) scale(${q})`, _.id = `drag-image-${L}`, document.body.appendChild(_), c.current = _, h.current = { x: z, y: Z };
|
|
1917
2027
|
},
|
|
1918
|
-
[
|
|
1919
|
-
),
|
|
1920
|
-
if (
|
|
1921
|
-
const
|
|
1922
|
-
|
|
2028
|
+
[v]
|
|
2029
|
+
), j = w((L, z) => {
|
|
2030
|
+
if (c.current) {
|
|
2031
|
+
const Z = L - h.current.x, Y = z - h.current.y;
|
|
2032
|
+
c.current.style.transform = `translate(${Z}px, ${Y}px) scale(${S.current * 1.05})`;
|
|
1923
2033
|
}
|
|
1924
|
-
}, []),
|
|
1925
|
-
|
|
1926
|
-
}, []),
|
|
1927
|
-
|
|
1928
|
-
...
|
|
1929
|
-
[
|
|
2034
|
+
}, []), D = w(() => {
|
|
2035
|
+
c.current && (c.current.remove(), c.current = null);
|
|
2036
|
+
}, []), R = w((L) => {
|
|
2037
|
+
l((z) => ({
|
|
2038
|
+
...z,
|
|
2039
|
+
[L]: !z[L]
|
|
1930
2040
|
}));
|
|
1931
2041
|
}, []);
|
|
1932
2042
|
return {
|
|
1933
2043
|
// State / 状態
|
|
1934
|
-
panelVisibility:
|
|
1935
|
-
panelSizes:
|
|
2044
|
+
panelVisibility: n,
|
|
2045
|
+
panelSizes: o,
|
|
1936
2046
|
// State update functions / 状態更新関数
|
|
1937
|
-
setPanelVisibility:
|
|
1938
|
-
setPanelSizes:
|
|
1939
|
-
setPanelRef:
|
|
1940
|
-
updatePanelSize:
|
|
1941
|
-
togglePanelVisibility:
|
|
2047
|
+
setPanelVisibility: l,
|
|
2048
|
+
setPanelSizes: i,
|
|
2049
|
+
setPanelRef: y,
|
|
2050
|
+
updatePanelSize: M,
|
|
2051
|
+
togglePanelVisibility: R,
|
|
1942
2052
|
// Utility functions / ユーティリティ関数
|
|
1943
|
-
getPanelElement:
|
|
2053
|
+
getPanelElement: v,
|
|
1944
2054
|
// Functions for drag image management / ドラッグイメージ管理用の関数
|
|
1945
|
-
createDragImage:
|
|
1946
|
-
updateDragImagePosition:
|
|
1947
|
-
removeDragImage:
|
|
2055
|
+
createDragImage: a,
|
|
2056
|
+
updateDragImagePosition: j,
|
|
2057
|
+
removeDragImage: D
|
|
1948
2058
|
};
|
|
1949
|
-
},
|
|
1950
|
-
const
|
|
1951
|
-
|
|
1952
|
-
const [
|
|
1953
|
-
|
|
1954
|
-
const
|
|
2059
|
+
}, _t = ({ initialColumnPanels: r, initialPanelVisibility: t, initialDragModes: n = {}, debugConfig: l, onPanelMove: o, onDragModeChange: i, onColumnPanelsChange: u, scale: c = 1 }) => {
|
|
2060
|
+
const h = F(l);
|
|
2061
|
+
h.current = l;
|
|
2062
|
+
const [S, v] = te(r), [$, M] = te(n), y = F(S);
|
|
2063
|
+
y.current = S;
|
|
2064
|
+
const a = jt(), j = Pt(), D = Nt(t, c), R = F({
|
|
1955
2065
|
mousemove: null,
|
|
1956
2066
|
mouseup: null
|
|
1957
|
-
}),
|
|
1958
|
-
const
|
|
1959
|
-
for (let
|
|
1960
|
-
const
|
|
1961
|
-
if (
|
|
1962
|
-
return { columnIndex:
|
|
2067
|
+
}), L = w((m) => {
|
|
2068
|
+
const b = Object.keys(y.current), N = bt(b, ae);
|
|
2069
|
+
for (let T = 0; T < N.length; T++) {
|
|
2070
|
+
const A = N[T], H = y.current[A]?.indexOf(m) ?? -1;
|
|
2071
|
+
if (H !== -1)
|
|
2072
|
+
return { columnIndex: T, panelIndex: H };
|
|
1963
2073
|
}
|
|
1964
2074
|
return null;
|
|
1965
|
-
}, []),
|
|
1966
|
-
(
|
|
1967
|
-
|
|
1968
|
-
const
|
|
1969
|
-
if (!
|
|
1970
|
-
return console.error("Source column not found for panel:",
|
|
1971
|
-
if (!
|
|
1972
|
-
return console.error("Target column not found:",
|
|
1973
|
-
if (
|
|
1974
|
-
const
|
|
1975
|
-
|
|
2075
|
+
}, []), z = w(
|
|
2076
|
+
(m, b, N) => {
|
|
2077
|
+
E(h.current, 1, "🔄 パネル移動実行:", m, "→", b, "@", N), v((T) => {
|
|
2078
|
+
const A = { ...T }, H = Object.keys(A).find((s) => A[s].includes(m));
|
|
2079
|
+
if (!H)
|
|
2080
|
+
return console.error("Source column not found for panel:", m), T;
|
|
2081
|
+
if (!A[b])
|
|
2082
|
+
return console.error("Target column not found:", b), T;
|
|
2083
|
+
if (H === b) {
|
|
2084
|
+
const s = [...A[H]], d = s.indexOf(m), [k] = s.splice(d, 1), X = d < N ? N - 1 : N;
|
|
2085
|
+
s.splice(X, 0, k), A[b] = s;
|
|
1976
2086
|
} else {
|
|
1977
|
-
|
|
1978
|
-
const
|
|
1979
|
-
|
|
2087
|
+
A[H] = A[H].filter((d) => d !== m);
|
|
2088
|
+
const s = [...A[b]];
|
|
2089
|
+
s.splice(N, 0, m), A[b] = s;
|
|
1980
2090
|
}
|
|
1981
|
-
if (
|
|
1982
|
-
|
|
1983
|
-
}),
|
|
1984
|
-
const
|
|
1985
|
-
|
|
1986
|
-
|
|
2091
|
+
if (E(h.current, 1, "✅ パネル移動完了:", m, "→", b), u && requestAnimationFrame(() => {
|
|
2092
|
+
u(A);
|
|
2093
|
+
}), o) {
|
|
2094
|
+
const s = Object.keys(T).find((d) => T[d].includes(m));
|
|
2095
|
+
s && requestAnimationFrame(() => {
|
|
2096
|
+
o(m, s, b, N);
|
|
1987
2097
|
});
|
|
1988
2098
|
}
|
|
1989
|
-
return
|
|
2099
|
+
return A;
|
|
1990
2100
|
});
|
|
1991
2101
|
},
|
|
1992
|
-
[
|
|
1993
|
-
),
|
|
1994
|
-
(
|
|
1995
|
-
if (!(
|
|
1996
|
-
const
|
|
1997
|
-
if (
|
|
1998
|
-
|
|
2102
|
+
[u, o]
|
|
2103
|
+
), Z = w(
|
|
2104
|
+
(m, b) => {
|
|
2105
|
+
if (!(a.dragState.isDragging || a.customDrag.isActive)) return;
|
|
2106
|
+
const N = a.originalPanelPosition;
|
|
2107
|
+
if (N && N.columnIndex === m && (N.panelIndex === b || N.panelIndex + 1 === b)) {
|
|
2108
|
+
E(h.current, 1, `元の位置への挿入をスキップ: カラム${m}, 位置${b}`);
|
|
1999
2109
|
return;
|
|
2000
2110
|
}
|
|
2001
|
-
const
|
|
2002
|
-
(
|
|
2111
|
+
const T = a.dragOverPosition;
|
|
2112
|
+
(!T || T.columnIndex !== m || T.insertIndex !== b) && (E(h.current, 1, `プレースホルダーエンター: カラム${m}, 位置${b}`), a.setDragOverPosition({ columnIndex: m, insertIndex: b }), a.setDragState((A) => ({ ...A, dragOverColumn: m })));
|
|
2003
2113
|
},
|
|
2004
|
-
[
|
|
2005
|
-
),
|
|
2006
|
-
(
|
|
2007
|
-
if (
|
|
2008
|
-
if (
|
|
2009
|
-
|
|
2010
|
-
else if (
|
|
2011
|
-
const
|
|
2012
|
-
if (
|
|
2013
|
-
const
|
|
2014
|
-
|
|
2114
|
+
[a]
|
|
2115
|
+
), Y = w(
|
|
2116
|
+
(m, b, N) => {
|
|
2117
|
+
if (a.dragState.isDragging || a.customDrag.isActive) {
|
|
2118
|
+
if (a.customDrag.isActive)
|
|
2119
|
+
E(h.current, 1, "🚫 カスタムドラッグ - プレースホルダーリーブ: ハイライトを解除します。"), a.setDragOverPosition(null);
|
|
2120
|
+
else if (a.dragState.isDragging && m && b !== void 0 && N !== void 0) {
|
|
2121
|
+
const T = a.dragOverPosition;
|
|
2122
|
+
if (T && T.columnIndex === b && T.insertIndex === N) {
|
|
2123
|
+
const A = m.currentTarget, H = m.relatedTarget;
|
|
2124
|
+
H && A.contains(H) || (E(h.current, 1, `ノーマルドラッグ - プレースホルダーリーブ: カラム${b}, 位置${N}。ハイライトを解除します。`), a.setDragOverPosition(null));
|
|
2015
2125
|
}
|
|
2016
2126
|
}
|
|
2017
2127
|
}
|
|
2018
2128
|
},
|
|
2019
|
-
[
|
|
2020
|
-
),
|
|
2021
|
-
debugConfig:
|
|
2022
|
-
dragState:
|
|
2023
|
-
customDrag:
|
|
2024
|
-
clickState:
|
|
2025
|
-
dragModes:
|
|
2026
|
-
isMouseDown:
|
|
2027
|
-
originalPanelPosition:
|
|
2028
|
-
dragOverPosition:
|
|
2029
|
-
setCustomDrag:
|
|
2030
|
-
setDragState:
|
|
2031
|
-
setDragOverPosition:
|
|
2032
|
-
setOriginalPanelPosition:
|
|
2033
|
-
setClickState:
|
|
2034
|
-
setIsMouseDown:
|
|
2035
|
-
findPanelPosition:
|
|
2036
|
-
performPanelMove:
|
|
2037
|
-
showMousePosition:
|
|
2038
|
-
updateMousePosition:
|
|
2039
|
-
recordMouseDown:
|
|
2040
|
-
recordClickPosition:
|
|
2041
|
-
isVirtualClick:
|
|
2042
|
-
calculateMoveDistance:
|
|
2043
|
-
clearMouseTracking:
|
|
2044
|
-
resetDragState:
|
|
2045
|
-
resetClickState:
|
|
2129
|
+
[a]
|
|
2130
|
+
), q = wt({
|
|
2131
|
+
debugConfig: h.current,
|
|
2132
|
+
dragState: a.dragState,
|
|
2133
|
+
customDrag: a.customDrag,
|
|
2134
|
+
clickState: a.clickState,
|
|
2135
|
+
dragModes: $,
|
|
2136
|
+
isMouseDown: a.isMouseDown,
|
|
2137
|
+
originalPanelPosition: a.originalPanelPosition,
|
|
2138
|
+
dragOverPosition: a.dragOverPosition,
|
|
2139
|
+
setCustomDrag: a.setCustomDrag,
|
|
2140
|
+
setDragState: a.setDragState,
|
|
2141
|
+
setDragOverPosition: a.setDragOverPosition,
|
|
2142
|
+
setOriginalPanelPosition: a.setOriginalPanelPosition,
|
|
2143
|
+
setClickState: a.setClickState,
|
|
2144
|
+
setIsMouseDown: a.setIsMouseDown,
|
|
2145
|
+
findPanelPosition: L,
|
|
2146
|
+
performPanelMove: z,
|
|
2147
|
+
showMousePosition: j.showMousePosition,
|
|
2148
|
+
updateMousePosition: j.updateMousePosition,
|
|
2149
|
+
recordMouseDown: j.recordMouseDown,
|
|
2150
|
+
recordClickPosition: j.recordClickPosition,
|
|
2151
|
+
isVirtualClick: j.isVirtualClick,
|
|
2152
|
+
calculateMoveDistance: j.calculateMoveDistance,
|
|
2153
|
+
clearMouseTracking: j.clearMouseTracking,
|
|
2154
|
+
resetDragState: a.resetDragState,
|
|
2155
|
+
resetClickState: a.resetClickState,
|
|
2046
2156
|
createDragImage: D.createDragImage,
|
|
2047
2157
|
updateDragImagePosition: D.updateDragImagePosition,
|
|
2048
2158
|
removeDragImage: D.removeDragImage,
|
|
2049
|
-
handlePlaceholderDragEnter:
|
|
2050
|
-
handlePlaceholderDragLeave:
|
|
2051
|
-
}),
|
|
2052
|
-
debugConfig:
|
|
2053
|
-
dragState:
|
|
2054
|
-
customDrag:
|
|
2055
|
-
dragModes:
|
|
2056
|
-
columnPanels:
|
|
2057
|
-
dragOverPosition:
|
|
2058
|
-
originalPanelPosition:
|
|
2059
|
-
setDragState:
|
|
2060
|
-
setDragOverPosition:
|
|
2061
|
-
setOriginalPanelPosition:
|
|
2062
|
-
performPanelMove:
|
|
2063
|
-
showMousePosition:
|
|
2064
|
-
updateMousePosition:
|
|
2065
|
-
resetDragState:
|
|
2066
|
-
handlePlaceholderDragEnter:
|
|
2067
|
-
handlePlaceholderDragLeave:
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2159
|
+
handlePlaceholderDragEnter: Z,
|
|
2160
|
+
handlePlaceholderDragLeave: Y
|
|
2161
|
+
}), O = Dt({
|
|
2162
|
+
debugConfig: h.current,
|
|
2163
|
+
dragState: a.dragState,
|
|
2164
|
+
customDrag: a.customDrag,
|
|
2165
|
+
dragModes: $,
|
|
2166
|
+
columnPanels: S,
|
|
2167
|
+
dragOverPosition: a.dragOverPosition,
|
|
2168
|
+
originalPanelPosition: a.originalPanelPosition,
|
|
2169
|
+
setDragState: a.setDragState,
|
|
2170
|
+
setDragOverPosition: a.setDragOverPosition,
|
|
2171
|
+
setOriginalPanelPosition: a.setOriginalPanelPosition,
|
|
2172
|
+
performPanelMove: z,
|
|
2173
|
+
showMousePosition: j.showMousePosition,
|
|
2174
|
+
updateMousePosition: j.updateMousePosition,
|
|
2175
|
+
resetDragState: a.resetDragState,
|
|
2176
|
+
handlePlaceholderDragEnter: Z,
|
|
2177
|
+
handlePlaceholderDragLeave: Y,
|
|
2178
|
+
scale: c
|
|
2179
|
+
}), _ = w((m) => {
|
|
2180
|
+
R.current.mousemove && R.current.mousemove(m);
|
|
2181
|
+
}, []), f = w((m) => {
|
|
2182
|
+
R.current.mouseup && R.current.mouseup(m);
|
|
2072
2183
|
}, []);
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
}), [
|
|
2076
|
-
const
|
|
2077
|
-
if (
|
|
2078
|
-
const
|
|
2079
|
-
|
|
2184
|
+
K(() => (E(h.current, 1, "🔧 グローバルイベントリスナー初期化 - refベース管理開始"), document.addEventListener("mousemove", _), document.addEventListener("mouseup", f), () => {
|
|
2185
|
+
E(h.current, 1, "🔴 グローバルイベントリスナー終了 - refベース管理終了"), document.removeEventListener("mousemove", _), document.removeEventListener("mouseup", f);
|
|
2186
|
+
}), [_, f]), K(() => {
|
|
2187
|
+
const m = !a.clickState.isClicked && Object.entries($).some(([, N]) => N === "custom"), b = a.clickState.isClicked && a.clickState.panelId;
|
|
2188
|
+
if (m || b) {
|
|
2189
|
+
const N = m ? "パターン1(仮想クリック検出)" : "パターン2,3(ドラッグ準備)";
|
|
2190
|
+
E(h.current, 1, `🔧 イベントハンドラー設定開始: ${N}`), R.current.mousemove = q.handleGlobalMouseMove, R.current.mouseup = q.handleGlobalMouseUp;
|
|
2080
2191
|
} else
|
|
2081
|
-
|
|
2082
|
-
}, [
|
|
2083
|
-
const
|
|
2084
|
-
(
|
|
2085
|
-
const
|
|
2086
|
-
|
|
2192
|
+
a.customDrag.isActive || a.dragState.isDragging || (R.current.mousemove = null, R.current.mouseup = null);
|
|
2193
|
+
}, [a.clickState.isClicked, a.clickState.panelId, $, a.customDrag.isActive, a.dragState.isDragging, q.handleGlobalMouseMove, q.handleGlobalMouseUp]);
|
|
2194
|
+
const g = w(
|
|
2195
|
+
(m, b) => {
|
|
2196
|
+
const N = m.touches[0], T = m.currentTarget;
|
|
2197
|
+
a.setTouchDragState({
|
|
2087
2198
|
isTouchDragging: !0,
|
|
2088
|
-
startX:
|
|
2089
|
-
startY:
|
|
2090
|
-
currentX:
|
|
2091
|
-
currentY:
|
|
2092
|
-
draggedElement:
|
|
2093
|
-
}),
|
|
2199
|
+
startX: N.clientX,
|
|
2200
|
+
startY: N.clientY,
|
|
2201
|
+
currentX: N.clientX,
|
|
2202
|
+
currentY: N.clientY,
|
|
2203
|
+
draggedElement: T
|
|
2204
|
+
}), a.setDragState({
|
|
2094
2205
|
isDragging: !0,
|
|
2095
|
-
draggedPanel:
|
|
2206
|
+
draggedPanel: b,
|
|
2096
2207
|
dragOverColumn: null
|
|
2097
2208
|
});
|
|
2098
2209
|
},
|
|
2099
|
-
[
|
|
2100
|
-
),
|
|
2101
|
-
(
|
|
2102
|
-
if (!
|
|
2103
|
-
|
|
2104
|
-
const
|
|
2105
|
-
|
|
2106
|
-
...
|
|
2107
|
-
currentX:
|
|
2108
|
-
currentY:
|
|
2210
|
+
[a]
|
|
2211
|
+
), C = w(
|
|
2212
|
+
(m) => {
|
|
2213
|
+
if (!a.touchDragState.isTouchDragging) return;
|
|
2214
|
+
m.preventDefault();
|
|
2215
|
+
const b = m.touches[0];
|
|
2216
|
+
a.setTouchDragState((N) => ({
|
|
2217
|
+
...N,
|
|
2218
|
+
currentX: b.clientX,
|
|
2219
|
+
currentY: b.clientY
|
|
2109
2220
|
}));
|
|
2110
2221
|
},
|
|
2111
|
-
[
|
|
2112
|
-
),
|
|
2113
|
-
(
|
|
2114
|
-
|
|
2222
|
+
[a.touchDragState.isTouchDragging, a]
|
|
2223
|
+
), W = w(
|
|
2224
|
+
(m) => {
|
|
2225
|
+
a.touchDragState.isTouchDragging && (a.setTouchDragState({
|
|
2115
2226
|
isTouchDragging: !1,
|
|
2116
2227
|
startX: 0,
|
|
2117
2228
|
startY: 0,
|
|
2118
2229
|
currentX: 0,
|
|
2119
2230
|
currentY: 0,
|
|
2120
2231
|
draggedElement: null
|
|
2121
|
-
}),
|
|
2232
|
+
}), O.handleDragEnd());
|
|
2122
2233
|
},
|
|
2123
|
-
[
|
|
2124
|
-
),
|
|
2125
|
-
(
|
|
2126
|
-
|
|
2127
|
-
const
|
|
2128
|
-
if (
|
|
2234
|
+
[a.touchDragState.isTouchDragging, a, O]
|
|
2235
|
+
), x = w(
|
|
2236
|
+
(m) => {
|
|
2237
|
+
E(h.current, 1, "🔄 toggleDragMode called:", { panelId: m }), M((b) => {
|
|
2238
|
+
const T = (b[m] || "normal") === "normal" ? "custom" : "normal", A = { ...b, [m]: T };
|
|
2239
|
+
if (i)
|
|
2129
2240
|
try {
|
|
2130
|
-
|
|
2131
|
-
} catch (
|
|
2132
|
-
console.error("🔄 Error in onDragModeChange:",
|
|
2241
|
+
i(m, T);
|
|
2242
|
+
} catch (H) {
|
|
2243
|
+
console.error("🔄 Error in onDragModeChange:", H);
|
|
2133
2244
|
}
|
|
2134
|
-
return
|
|
2245
|
+
return A;
|
|
2135
2246
|
});
|
|
2136
2247
|
},
|
|
2137
|
-
[
|
|
2138
|
-
),
|
|
2139
|
-
|
|
2248
|
+
[i]
|
|
2249
|
+
), p = w((m, b) => {
|
|
2250
|
+
m.stopPropagation(), E(h.current, 2, "パネルサイズ情報クリック:", b);
|
|
2140
2251
|
}, []);
|
|
2141
2252
|
return {
|
|
2142
2253
|
// 状態
|
|
2143
|
-
columnPanels:
|
|
2254
|
+
columnPanels: S,
|
|
2144
2255
|
panelVisibility: D.panelVisibility,
|
|
2145
|
-
dragModes:
|
|
2146
|
-
dragState:
|
|
2147
|
-
dragOverPosition:
|
|
2148
|
-
originalPanelPosition:
|
|
2149
|
-
touchDragState:
|
|
2150
|
-
customDrag:
|
|
2151
|
-
clickState:
|
|
2152
|
-
mousePosition:
|
|
2256
|
+
dragModes: $,
|
|
2257
|
+
dragState: a.dragState,
|
|
2258
|
+
dragOverPosition: a.dragOverPosition,
|
|
2259
|
+
originalPanelPosition: a.originalPanelPosition,
|
|
2260
|
+
touchDragState: a.touchDragState,
|
|
2261
|
+
customDrag: a.customDrag,
|
|
2262
|
+
clickState: a.clickState,
|
|
2263
|
+
mousePosition: j.mousePosition,
|
|
2153
2264
|
panelSizes: D.panelSizes,
|
|
2154
2265
|
// 状態更新関数
|
|
2155
|
-
setColumnPanels:
|
|
2266
|
+
setColumnPanels: v,
|
|
2156
2267
|
setPanelVisibility: D.setPanelVisibility,
|
|
2157
|
-
setDragModes:
|
|
2268
|
+
setDragModes: M,
|
|
2158
2269
|
setPanelRef: D.setPanelRef,
|
|
2159
2270
|
// イベントハンドラー
|
|
2160
|
-
handleDragStart:
|
|
2161
|
-
handleDragEnd:
|
|
2162
|
-
handleMouseDown:
|
|
2163
|
-
handleTouchStart:
|
|
2164
|
-
handleTouchMove:
|
|
2165
|
-
handleTouchEnd:
|
|
2166
|
-
handlePlaceholderDragEnter:
|
|
2167
|
-
handlePlaceholderDragLeave:
|
|
2168
|
-
handleDragOverWithInsert:
|
|
2169
|
-
handleDropWithInsert:
|
|
2170
|
-
handleColumnDragLeave:
|
|
2171
|
-
handlePanelSizeInfoClick:
|
|
2271
|
+
handleDragStart: O.handleDragStart,
|
|
2272
|
+
handleDragEnd: O.handleDragEnd,
|
|
2273
|
+
handleMouseDown: q.handleMouseDown,
|
|
2274
|
+
handleTouchStart: g,
|
|
2275
|
+
handleTouchMove: C,
|
|
2276
|
+
handleTouchEnd: W,
|
|
2277
|
+
handlePlaceholderDragEnter: Z,
|
|
2278
|
+
handlePlaceholderDragLeave: Y,
|
|
2279
|
+
handleDragOverWithInsert: O.handleDragOverWithInsert,
|
|
2280
|
+
handleDropWithInsert: O.handleDropWithInsert,
|
|
2281
|
+
handleColumnDragLeave: O.handleColumnDragLeave,
|
|
2282
|
+
handlePanelSizeInfoClick: p,
|
|
2172
2283
|
// ユーティリティ関数
|
|
2173
|
-
toggleDragMode:
|
|
2174
|
-
findPanelPosition:
|
|
2284
|
+
toggleDragMode: x,
|
|
2285
|
+
findPanelPosition: L
|
|
2175
2286
|
};
|
|
2176
|
-
},
|
|
2177
|
-
const [
|
|
2178
|
-
|
|
2287
|
+
}, Wt = ({ minColumnWidth: r = 350, defaultColumns: t = 3, maxColumns: n = 6, minColumns: l = 1, currentColumnWidths: o = {} } = {}) => {
|
|
2288
|
+
const [i, u] = te(0), c = F(0), h = F(null), [S, v] = te(!1), $ = F(t);
|
|
2289
|
+
K(() => {
|
|
2179
2290
|
if (typeof window > "u")
|
|
2180
2291
|
return;
|
|
2181
|
-
const
|
|
2182
|
-
const
|
|
2183
|
-
return
|
|
2184
|
-
},
|
|
2185
|
-
|
|
2186
|
-
const
|
|
2187
|
-
|
|
2292
|
+
const a = () => {
|
|
2293
|
+
const D = window.visualViewport?.width ?? 0, R = document?.documentElement?.clientWidth ?? 0, L = document?.body?.clientWidth ?? 0, z = window.innerWidth ?? 0;
|
|
2294
|
+
return R > 0 ? Math.floor(R) : D > 0 ? Math.floor(D) : L > 0 ? Math.floor(L) : Math.floor(z);
|
|
2295
|
+
}, j = () => {
|
|
2296
|
+
h.current !== null && cancelAnimationFrame(h.current), h.current = requestAnimationFrame(() => {
|
|
2297
|
+
const D = a();
|
|
2298
|
+
h.current = null, D !== 0 && (Math.abs(c.current - D) < 2 || (c.current = D, u(D)));
|
|
2188
2299
|
});
|
|
2189
2300
|
};
|
|
2190
|
-
return
|
|
2191
|
-
|
|
2301
|
+
return j(), window.addEventListener("resize", j), window.addEventListener("orientationchange", j), window.visualViewport?.addEventListener("resize", j), () => {
|
|
2302
|
+
h.current !== null && cancelAnimationFrame(h.current), window.removeEventListener("resize", j), window.removeEventListener("orientationchange", j), window.visualViewport?.removeEventListener("resize", j);
|
|
2192
2303
|
};
|
|
2193
2304
|
}, []);
|
|
2194
|
-
const
|
|
2195
|
-
if (!
|
|
2196
|
-
return
|
|
2197
|
-
const
|
|
2198
|
-
let
|
|
2199
|
-
if (
|
|
2200
|
-
const
|
|
2201
|
-
|
|
2305
|
+
const M = Xe(() => {
|
|
2306
|
+
if (!S || i === 0)
|
|
2307
|
+
return $.current = t, t;
|
|
2308
|
+
const a = Math.max(i - 64, 0), j = 24, D = Object.values(o);
|
|
2309
|
+
let R;
|
|
2310
|
+
if (D.length > 0) {
|
|
2311
|
+
const L = D.reduce((Y, q) => Y + q, 0) / D.length, z = Math.max(r, L);
|
|
2312
|
+
R = Math.floor((a + j) / (z + j)), D.reduce((Y, q) => Y + q, 0) + (D.length - 1) * j > a && D.length > l && (R = Math.min(R, D.length - 1));
|
|
2202
2313
|
} else
|
|
2203
|
-
|
|
2204
|
-
return
|
|
2205
|
-
}, [
|
|
2206
|
-
|
|
2314
|
+
R = Math.floor((a + j) / (r + j));
|
|
2315
|
+
return R = Math.max(l, Math.min(n, R)), $.current === R ? $.current : ($.current = R, R);
|
|
2316
|
+
}, [S, i, t, r, n, l, o]), y = w(() => {
|
|
2317
|
+
v((a) => !a);
|
|
2207
2318
|
}, []);
|
|
2208
2319
|
return {
|
|
2209
|
-
responsiveColumnCount:
|
|
2210
|
-
isResponsiveMode:
|
|
2211
|
-
screenWidth:
|
|
2212
|
-
toggleResponsiveMode:
|
|
2320
|
+
responsiveColumnCount: M,
|
|
2321
|
+
isResponsiveMode: S,
|
|
2322
|
+
screenWidth: i,
|
|
2323
|
+
toggleResponsiveMode: y
|
|
2213
2324
|
};
|
|
2214
|
-
},
|
|
2325
|
+
}, zt = ({ isResponsiveMode: r, responsiveColumnCount: t, currentColumnCount: n, screenWidth: l, onToggleResponsive: o }) => /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-2 rounded-lg border border-slate-300 bg-white/90 px-3 py-1", children: [
|
|
2215
2326
|
/* @__PURE__ */ e.jsxs(
|
|
2216
2327
|
"button",
|
|
2217
2328
|
{
|
|
2218
2329
|
type: "button",
|
|
2219
|
-
onClick:
|
|
2330
|
+
onClick: o,
|
|
2220
2331
|
className: `flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors ${r ? "border border-blue-300 bg-blue-100 text-blue-700" : "border border-slate-300 text-slate-600 hover:bg-blue-50 hover:text-blue-600"}`,
|
|
2221
2332
|
title: r ? "レスポンシブモードを無効化" : "レスポンシブモードを有効化",
|
|
2222
2333
|
children: [
|
|
2223
|
-
r ? /* @__PURE__ */ e.jsx(
|
|
2334
|
+
r ? /* @__PURE__ */ e.jsx(ct, { className: "h-3 w-3" }) : /* @__PURE__ */ e.jsx(ut, { className: "h-3 w-3" }),
|
|
2224
2335
|
/* @__PURE__ */ e.jsx("span", { children: r ? "レスポンシブ" : "固定" })
|
|
2225
2336
|
]
|
|
2226
2337
|
}
|
|
@@ -2237,7 +2348,7 @@ const Ue = ({
|
|
|
2237
2348
|
] }),
|
|
2238
2349
|
t !== n && /* @__PURE__ */ e.jsx("span", { className: "text-orange-600", children: "(変更予定)" })
|
|
2239
2350
|
] })
|
|
2240
|
-
] }),
|
|
2351
|
+
] }), Yt = {
|
|
2241
2352
|
showDebugPanel: !1,
|
|
2242
2353
|
showMousePosition: !1,
|
|
2243
2354
|
showPanelSizes: !1,
|
|
@@ -2246,37 +2357,37 @@ const Ue = ({
|
|
|
2246
2357
|
logLevel: 0
|
|
2247
2358
|
};
|
|
2248
2359
|
export {
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2360
|
+
$t as ColumnControlPanel,
|
|
2361
|
+
Ot as ColumnInsertPanel,
|
|
2362
|
+
ae as DEFAULT_COLUMN_ID_CONFIG,
|
|
2363
|
+
Yt as DEFAULT_DEBUG_CONFIG,
|
|
2364
|
+
Pe as DEFAULT_EDGE_SCROLL_CONFIG,
|
|
2365
|
+
Tt as DebugControlPanel,
|
|
2366
|
+
Ct as DragDropLayout,
|
|
2367
|
+
Ue as DropZoneDebugOverlay,
|
|
2368
|
+
Be as EdgeScrollManager,
|
|
2369
|
+
Ie as InsertPlaceholder,
|
|
2370
|
+
ft as PanelSizeDisplay,
|
|
2371
|
+
kt as ResizableColumn,
|
|
2372
|
+
qe as ResizeHandle,
|
|
2373
|
+
zt as ResponsiveControl,
|
|
2374
|
+
Ye as calculateScrollVector,
|
|
2375
|
+
Rt as createColumnIdMapping,
|
|
2376
|
+
E as debugLog,
|
|
2377
|
+
we as generateColumnId,
|
|
2378
|
+
Ve as generateColumnIds,
|
|
2379
|
+
Mt as getNextColumnId,
|
|
2380
|
+
At as isValidColumnId,
|
|
2381
|
+
vt as normalizeColumnPanels,
|
|
2382
|
+
je as parseColumnId,
|
|
2383
|
+
yt as performScroll,
|
|
2384
|
+
bt as sortColumnIds,
|
|
2385
|
+
Lt as useColumnLayout,
|
|
2386
|
+
wt as useCustomDragHandlers,
|
|
2387
|
+
_t as useDragDropColumns,
|
|
2388
|
+
jt as useDragDropState,
|
|
2389
|
+
Pt as useMouseTracking,
|
|
2390
|
+
Dt as useNormalDragHandlers,
|
|
2391
|
+
Nt as usePanelManagement,
|
|
2392
|
+
Wt as useResponsiveColumns
|
|
2282
2393
|
};
|