@aiquants/drag-drop-panels 0.6.0 → 0.7.1
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 +7 -1
- package/dist/DragDropLayout.d.ts.map +1 -1
- package/dist/drag-drop/ColumnInsertPanel.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/index.es.js +1367 -1314
- 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
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
166
|
value: Q
|
|
167
|
-
}), Object.freeze && (Object.freeze(
|
|
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 re = Object.keys(
|
|
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
|
-
|
|
194
|
+
X,
|
|
195
|
+
B,
|
|
196
196
|
re,
|
|
197
|
-
|
|
198
|
-
),
|
|
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
|
-
|
|
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
214
|
Q
|
|
215
215
|
);
|
|
216
216
|
}
|
|
217
|
-
function $(
|
|
218
|
-
M(
|
|
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 M(
|
|
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 oe = class oe {
|
|
|
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 oe = class oe {
|
|
|
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 oe = class oe {
|
|
|
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 oe = class oe {
|
|
|
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 ot = ({ 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,37 +390,37 @@ const ot = ({ 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
|
|
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
398
|
if ($.current) {
|
|
399
|
-
const
|
|
400
|
-
width: Math.round(
|
|
401
|
-
height: Math.round(
|
|
402
|
-
x: Math.round(
|
|
403
|
-
y: Math.round(
|
|
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
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
|
"×",
|
|
@@ -439,10 +439,10 @@ const ot = ({ 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 ot = ({ 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,456 +514,496 @@ const _e = ({ 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 M = ["resize-handle",
|
|
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 M = ["resizable-column", c ? "resizing" : "",
|
|
577
|
-
return
|
|
578
|
-
const
|
|
579
|
-
|
|
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`));
|
|
580
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: [
|
|
581
600
|
$,
|
|
582
|
-
|
|
583
|
-
|
|
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:
|
|
632
|
+
dragModes: h,
|
|
633
|
+
onDragStart: S,
|
|
634
|
+
onDragEnd: v,
|
|
616
635
|
onPlaceholderDragEnter: $,
|
|
617
636
|
onPlaceholderDragLeave: M,
|
|
618
|
-
onDragOverWithInsert:
|
|
619
|
-
onDropWithInsert:
|
|
620
|
-
onColumnDragLeave:
|
|
621
|
-
onPanelClick:
|
|
622
|
-
onPanelMouseDown:
|
|
623
|
-
onTouchStart:
|
|
624
|
-
onTouchMove:
|
|
625
|
-
onTouchEnd:
|
|
626
|
-
debugConfig:
|
|
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,
|
|
627
646
|
panelSizes: q,
|
|
628
|
-
setPanelRef:
|
|
629
|
-
enableResize:
|
|
630
|
-
columnWidths:
|
|
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
|
-
onPanelClose:
|
|
640
|
-
onPanelMaximizeChange:
|
|
641
|
-
customDrag:
|
|
642
|
-
dragHandle:
|
|
643
|
-
maximizedPanel:
|
|
644
|
-
panelClassName:
|
|
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
|
|
645
667
|
}) => {
|
|
646
|
-
const
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
}, [
|
|
650
|
-
const
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
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,
|
|
654
685
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
655
|
-
keys: Object.keys(
|
|
656
|
-
values: Object.values(
|
|
686
|
+
keys: Object.keys(h),
|
|
687
|
+
values: Object.values(h)
|
|
657
688
|
});
|
|
658
|
-
}, [
|
|
659
|
-
const
|
|
660
|
-
const
|
|
689
|
+
}, [h]);
|
|
690
|
+
const Ne = Xe(() => {
|
|
691
|
+
const P = {};
|
|
661
692
|
return t.forEach((V) => {
|
|
662
|
-
|
|
663
|
-
}),
|
|
693
|
+
P[V.id] = V;
|
|
694
|
+
}), P;
|
|
664
695
|
}, [t]);
|
|
665
|
-
|
|
666
|
-
if (!(
|
|
696
|
+
K(() => {
|
|
697
|
+
if (!(s && T))
|
|
667
698
|
return;
|
|
668
|
-
const
|
|
669
|
-
V.key === "Escape" &&
|
|
699
|
+
const P = (V) => {
|
|
700
|
+
V.key === "Escape" && T(null);
|
|
670
701
|
};
|
|
671
|
-
return document.addEventListener("keydown",
|
|
672
|
-
}, [
|
|
673
|
-
const
|
|
674
|
-
Object.keys(
|
|
675
|
-
const
|
|
676
|
-
if (
|
|
677
|
-
const
|
|
678
|
-
|
|
679
|
-
rect:
|
|
680
|
-
height:
|
|
681
|
-
width:
|
|
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
|
|
682
713
|
});
|
|
683
714
|
}
|
|
684
715
|
});
|
|
685
|
-
const V =
|
|
686
|
-
Object.values(n).forEach((
|
|
687
|
-
|
|
688
|
-
|
|
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);
|
|
689
720
|
});
|
|
690
|
-
}), new Set(V.keys()).forEach((
|
|
691
|
-
|
|
692
|
-
}),
|
|
693
|
-
const
|
|
694
|
-
if (
|
|
695
|
-
const
|
|
696
|
-
if (
|
|
697
|
-
|
|
698
|
-
const
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
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
|
+
}
|
|
704
738
|
}
|
|
705
739
|
} else {
|
|
706
|
-
|
|
707
|
-
const
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
},
|
|
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);
|
|
712
746
|
}));
|
|
713
747
|
}
|
|
714
|
-
}),
|
|
715
|
-
}, [n])
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
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];
|
|
719
759
|
if (!V)
|
|
720
|
-
return
|
|
721
|
-
const
|
|
722
|
-
|
|
723
|
-
panelId:
|
|
724
|
-
dragMode:
|
|
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,
|
|
725
765
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
726
766
|
});
|
|
727
|
-
const
|
|
728
|
-
|
|
729
|
-
const
|
|
730
|
-
|
|
731
|
-
width:
|
|
732
|
-
height:
|
|
733
|
-
x:
|
|
734
|
-
y:
|
|
735
|
-
minHeight:
|
|
736
|
-
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
|
|
737
777
|
});
|
|
738
778
|
});
|
|
739
|
-
},
|
|
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" } : {
|
|
740
780
|
minHeight: V.minHeight ?? "200px",
|
|
741
781
|
maxHeight: V.maxHeight ?? "500px"
|
|
742
|
-
},
|
|
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 ? (
|
|
743
783
|
// 最大化中: 角丸・ホバー演出・grab カーソル無し、背景は不透過寄りで下のレイアウトを遮蔽
|
|
744
|
-
`${
|
|
745
|
-
) : `${
|
|
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}`;
|
|
746
786
|
return (
|
|
747
787
|
// biome-ignore lint/a11y/noStaticElementInteractions: クリックイベントを持つ静的要素
|
|
748
788
|
/* @__PURE__ */ e.jsxs(
|
|
749
789
|
"div",
|
|
750
790
|
{
|
|
751
|
-
ref:
|
|
752
|
-
"data-panel-id":
|
|
753
|
-
"data-dragging":
|
|
754
|
-
"data-maximized":
|
|
791
|
+
ref: ne,
|
|
792
|
+
"data-panel-id": P,
|
|
793
|
+
"data-dragging": ce,
|
|
794
|
+
"data-maximized": J || void 0,
|
|
755
795
|
role: "presentation",
|
|
756
|
-
draggable:
|
|
757
|
-
onDragStart: (
|
|
758
|
-
onDragEnd:
|
|
759
|
-
onClick: (
|
|
760
|
-
onMouseDown: (
|
|
761
|
-
onTouchStart: (
|
|
762
|
-
onTouchMove:
|
|
763
|
-
onTouchEnd:
|
|
764
|
-
style:
|
|
765
|
-
className:
|
|
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,
|
|
766
806
|
children: [
|
|
767
807
|
/* @__PURE__ */ e.jsxs(
|
|
768
808
|
"div",
|
|
769
809
|
{
|
|
770
|
-
className: `group relative mb-3 flex items-center justify-between ${
|
|
771
|
-
draggable:
|
|
772
|
-
onDragStart: (
|
|
773
|
-
onDoubleClick:
|
|
774
|
-
|
|
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();
|
|
775
815
|
} : void 0,
|
|
776
816
|
children: [
|
|
777
817
|
/* @__PURE__ */ e.jsxs("div", { className: "flex items-center space-x-2", children: [
|
|
778
|
-
/* @__PURE__ */ e.jsx("h3", { className: "font-semibold text-lg text-slate-700 transition-colors group-hover:text-slate-900", children:
|
|
779
|
-
|
|
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" })
|
|
780
820
|
] }),
|
|
781
821
|
/* @__PURE__ */ e.jsxs("div", { className: "flex items-center space-x-1 opacity-0 transition-opacity group-hover:opacity-100", children: [
|
|
782
822
|
/* @__PURE__ */ e.jsx(
|
|
783
823
|
"button",
|
|
784
824
|
{
|
|
785
825
|
type: "button",
|
|
786
|
-
onClick: (
|
|
787
|
-
|
|
826
|
+
onClick: (U) => {
|
|
827
|
+
U.stopPropagation(), b && b(P);
|
|
788
828
|
},
|
|
789
|
-
onKeyDown: (
|
|
790
|
-
(
|
|
829
|
+
onKeyDown: (U) => {
|
|
830
|
+
(U.key === "Enter" || U.key === " ") && (U.preventDefault(), U.stopPropagation(), b && b(P));
|
|
791
831
|
},
|
|
792
832
|
tabIndex: 0,
|
|
793
|
-
className: `cursor-pointer rounded p-1 text-xs transition-colors ${
|
|
794
|
-
title:
|
|
795
|
-
children:
|
|
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" })
|
|
796
836
|
}
|
|
797
837
|
),
|
|
798
|
-
!
|
|
838
|
+
!J && /* @__PURE__ */ e.jsx(
|
|
799
839
|
"button",
|
|
800
840
|
{
|
|
801
841
|
type: "button",
|
|
802
|
-
onClick: (
|
|
803
|
-
|
|
842
|
+
onClick: (U) => {
|
|
843
|
+
U.stopPropagation(), o({
|
|
804
844
|
...l,
|
|
805
|
-
[
|
|
845
|
+
[P]: !1
|
|
806
846
|
});
|
|
807
847
|
},
|
|
808
848
|
className: "rounded p-1 text-slate-400 transition-colors hover:bg-slate-100 hover:text-slate-600",
|
|
809
849
|
title: "パネルを非表示",
|
|
810
|
-
children: /* @__PURE__ */ e.jsx(
|
|
850
|
+
children: /* @__PURE__ */ e.jsx(Le, { className: "h-4 w-4" })
|
|
811
851
|
}
|
|
812
852
|
),
|
|
813
|
-
|
|
853
|
+
me && /* @__PURE__ */ e.jsx(
|
|
814
854
|
"button",
|
|
815
855
|
{
|
|
816
856
|
type: "button",
|
|
817
|
-
onClick: (
|
|
818
|
-
|
|
857
|
+
onClick: (U) => {
|
|
858
|
+
U.stopPropagation(), oe();
|
|
819
859
|
},
|
|
820
860
|
className: "rounded p-1 text-slate-400 transition-colors hover:bg-slate-100 hover:text-slate-600",
|
|
821
|
-
title:
|
|
822
|
-
children:
|
|
861
|
+
title: J ? "元のサイズに戻す" : "パネルを最大化",
|
|
862
|
+
children: J ? /* @__PURE__ */ e.jsx(st, { className: "h-4 w-4" }) : /* @__PURE__ */ e.jsx(ot, { className: "h-4 w-4" })
|
|
823
863
|
}
|
|
824
864
|
),
|
|
825
|
-
|
|
865
|
+
N && /* @__PURE__ */ e.jsx(
|
|
826
866
|
"button",
|
|
827
867
|
{
|
|
828
868
|
type: "button",
|
|
829
|
-
onClick: (
|
|
830
|
-
|
|
869
|
+
onClick: (U) => {
|
|
870
|
+
U.stopPropagation(), N(P);
|
|
831
871
|
},
|
|
832
872
|
className: "rounded p-1 text-slate-400 transition-colors hover:bg-slate-100 hover:text-red-500",
|
|
833
873
|
title: "パネルを閉じる",
|
|
834
|
-
children: /* @__PURE__ */ e.jsx(
|
|
874
|
+
children: /* @__PURE__ */ e.jsx(He, { className: "h-4 w-4" })
|
|
835
875
|
}
|
|
836
876
|
)
|
|
837
877
|
] })
|
|
838
878
|
]
|
|
839
879
|
}
|
|
840
880
|
),
|
|
841
|
-
/* @__PURE__ */ e.jsx("div", { className: "panel-scroll-area min-h-0 flex-1 overflow-y-auto", children: /* @__PURE__ */ e.jsx(
|
|
842
|
-
/* @__PURE__ */ e.jsx(
|
|
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) })
|
|
843
883
|
]
|
|
844
884
|
},
|
|
845
|
-
|
|
885
|
+
P
|
|
846
886
|
)
|
|
847
887
|
);
|
|
848
|
-
},
|
|
849
|
-
const
|
|
850
|
-
let
|
|
851
|
-
for (const
|
|
852
|
-
if (l[
|
|
853
|
-
|
|
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;
|
|
854
894
|
break;
|
|
855
895
|
}
|
|
856
|
-
const
|
|
857
|
-
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(
|
|
858
898
|
"section",
|
|
859
899
|
{
|
|
860
900
|
"data-drop-zone": "true",
|
|
861
|
-
"data-column-key":
|
|
901
|
+
"data-column-key": P,
|
|
862
902
|
"data-column-index": V,
|
|
863
903
|
"aria-label": `Drop zone for column ${V + 1}`,
|
|
864
|
-
onDragOver: (
|
|
865
|
-
onDrop: (
|
|
866
|
-
onDragLeave:
|
|
904
|
+
onDragOver: (I) => y(I, V),
|
|
905
|
+
onDrop: (I) => a(I, P),
|
|
906
|
+
onDragLeave: j,
|
|
867
907
|
className: "relative flex h-full flex-col transition-all duration-200",
|
|
868
908
|
children: [
|
|
869
909
|
/* @__PURE__ */ e.jsx("div", { className: "placeholder-container", children: /* @__PURE__ */ e.jsx(
|
|
870
|
-
|
|
910
|
+
Ce,
|
|
871
911
|
{
|
|
872
912
|
index: 0,
|
|
873
913
|
columnIndex: V,
|
|
874
|
-
isDragging:
|
|
875
|
-
dragOverPosition:
|
|
914
|
+
isDragging: ce,
|
|
915
|
+
dragOverPosition: u,
|
|
876
916
|
originalPosition: c,
|
|
877
917
|
onDragEnter: $,
|
|
878
918
|
onDragLeave: M,
|
|
879
|
-
debugConfig:
|
|
880
|
-
customDrag:
|
|
919
|
+
debugConfig: Y,
|
|
920
|
+
customDrag: A
|
|
881
921
|
}
|
|
882
922
|
) }),
|
|
883
|
-
|
|
884
|
-
const
|
|
885
|
-
return /* @__PURE__ */ e.jsxs("div", { className: `panel-with-placeholder ${
|
|
886
|
-
|
|
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 ? (
|
|
887
927
|
/* ドラッグ中のみ隠されたパネルのダミー表示 */
|
|
888
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: [
|
|
889
929
|
/* @__PURE__ */ e.jsxs("div", { className: "mb-2 flex items-center space-x-2", children: [
|
|
890
|
-
/* @__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 }),
|
|
891
931
|
/* @__PURE__ */ e.jsx("span", { className: "rounded-md bg-amber-100 px-2 py-1 font-medium text-amber-600 text-xs", children: "非表示" })
|
|
892
932
|
] }),
|
|
893
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: [
|
|
894
|
-
/* @__PURE__ */ e.jsx(
|
|
934
|
+
/* @__PURE__ */ e.jsx(Le, { className: "mx-auto h-6 w-6 opacity-50" }),
|
|
895
935
|
/* @__PURE__ */ e.jsx("p", { className: "mt-1 text-xs", children: "このパネルは非表示です" })
|
|
896
936
|
] }) }) })
|
|
897
937
|
] })
|
|
898
938
|
) : null,
|
|
899
939
|
/* @__PURE__ */ e.jsx(
|
|
900
|
-
|
|
940
|
+
Ce,
|
|
901
941
|
{
|
|
902
|
-
index:
|
|
942
|
+
index: ne + 1,
|
|
903
943
|
columnIndex: V,
|
|
904
|
-
isDragging:
|
|
905
|
-
dragOverPosition:
|
|
944
|
+
isDragging: ce,
|
|
945
|
+
dragOverPosition: u,
|
|
906
946
|
originalPosition: c,
|
|
907
947
|
onDragEnter: $,
|
|
908
948
|
onDragLeave: M,
|
|
909
|
-
debugConfig:
|
|
910
|
-
customDrag:
|
|
949
|
+
debugConfig: Y,
|
|
950
|
+
customDrag: A
|
|
911
951
|
}
|
|
912
952
|
)
|
|
913
|
-
] }, `panel-${
|
|
953
|
+
] }, `panel-${I}`);
|
|
914
954
|
}),
|
|
915
|
-
!(
|
|
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: "このエリアは空です" }) })
|
|
916
956
|
]
|
|
917
957
|
}
|
|
918
958
|
) });
|
|
919
|
-
},
|
|
959
|
+
}, $e = Object.keys(l).filter((P) => !l[P]);
|
|
920
960
|
return /* @__PURE__ */ e.jsxs("div", { className: "flex h-full flex-col", children: [
|
|
921
|
-
|
|
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: [
|
|
922
962
|
/* @__PURE__ */ e.jsx("span", { className: "mr-2 text-slate-600 text-sm", children: "非表示のパネル:" }),
|
|
923
|
-
|
|
924
|
-
const
|
|
963
|
+
$e.map((P) => {
|
|
964
|
+
const ee = Ne[P]?.title || P;
|
|
925
965
|
return /* @__PURE__ */ e.jsxs(
|
|
926
966
|
"button",
|
|
927
967
|
{
|
|
928
968
|
type: "button",
|
|
929
|
-
onClick: () =>
|
|
969
|
+
onClick: () => o({
|
|
930
970
|
...l,
|
|
931
|
-
[
|
|
971
|
+
[P]: !0
|
|
932
972
|
}),
|
|
933
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",
|
|
934
974
|
children: [
|
|
935
|
-
/* @__PURE__ */ e.jsx(
|
|
936
|
-
/* @__PURE__ */ e.jsx("span", { children:
|
|
975
|
+
/* @__PURE__ */ e.jsx(tt, { className: "h-3 w-3" }),
|
|
976
|
+
/* @__PURE__ */ e.jsx("span", { children: ee })
|
|
937
977
|
]
|
|
938
978
|
},
|
|
939
|
-
|
|
979
|
+
P
|
|
940
980
|
);
|
|
941
981
|
})
|
|
942
982
|
] }) }),
|
|
943
|
-
/* @__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((
|
|
944
|
-
const
|
|
945
|
-
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(
|
|
946
986
|
"div",
|
|
947
987
|
{
|
|
948
|
-
className: `column relative ${
|
|
988
|
+
className: `column relative ${P.className || ""} ${_ ? "resize-enabled-column" : "auto-width-column"} ${x && p === P.id ? "column-resizing-active" : ""}`,
|
|
949
989
|
"data-column": V,
|
|
950
|
-
"data-column-id":
|
|
951
|
-
"data-min-width":
|
|
952
|
-
"data-max-width":
|
|
953
|
-
"data-column-width":
|
|
954
|
-
...
|
|
955
|
-
style: { "--column-width": `${
|
|
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` }
|
|
956
996
|
},
|
|
957
997
|
children: [
|
|
958
|
-
|
|
959
|
-
|
|
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 })
|
|
960
1000
|
]
|
|
961
1001
|
}
|
|
962
|
-
) },
|
|
963
|
-
}) }) })
|
|
1002
|
+
) }, P.id);
|
|
1003
|
+
}) }) }) }) })
|
|
964
1004
|
] });
|
|
965
|
-
},
|
|
966
|
-
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;
|
|
967
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: [
|
|
968
1008
|
/* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
969
1009
|
/* @__PURE__ */ e.jsx("span", { className: "font-medium text-slate-700 text-sm", children: "カラム数:" }),
|
|
@@ -971,26 +1011,26 @@ const pt = ({
|
|
|
971
1011
|
"button",
|
|
972
1012
|
{
|
|
973
1013
|
type: "button",
|
|
974
|
-
onClick: () =>
|
|
975
|
-
disabled: !
|
|
976
|
-
className: `rounded p-1 text-xs transition-colors ${
|
|
977
|
-
title: c ? "レスポンシブモード中:カラム数は自動調整されます" : `カラムを削除 (最小: ${
|
|
978
|
-
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" })
|
|
979
1019
|
}
|
|
980
1020
|
),
|
|
981
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: [
|
|
982
|
-
c ?
|
|
1022
|
+
c ? h ?? r : r,
|
|
983
1023
|
c && /* @__PURE__ */ e.jsx("span", { className: "ml-1 text-xs", children: "自動" })
|
|
984
1024
|
] }),
|
|
985
1025
|
/* @__PURE__ */ e.jsx(
|
|
986
1026
|
"button",
|
|
987
1027
|
{
|
|
988
1028
|
type: "button",
|
|
989
|
-
onClick: () =>
|
|
990
|
-
disabled: !
|
|
991
|
-
className: `rounded p-1 text-xs transition-colors ${
|
|
992
|
-
title: c ? "レスポンシブモード中:カラム数は自動調整されます" : `カラムを追加 (最大: ${
|
|
993
|
-
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" })
|
|
994
1034
|
}
|
|
995
1035
|
)
|
|
996
1036
|
] }),
|
|
@@ -1001,11 +1041,11 @@ const pt = ({
|
|
|
1001
1041
|
{
|
|
1002
1042
|
type: "button",
|
|
1003
1043
|
onClick: n,
|
|
1004
|
-
disabled:
|
|
1005
|
-
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"}`,
|
|
1006
1046
|
title: "パネルを全カラムに均等分散",
|
|
1007
1047
|
children: [
|
|
1008
|
-
/* @__PURE__ */ e.jsx(
|
|
1048
|
+
/* @__PURE__ */ e.jsx(at, { className: "h-3 w-3" }),
|
|
1009
1049
|
/* @__PURE__ */ e.jsx("span", { children: "バランス" })
|
|
1010
1050
|
]
|
|
1011
1051
|
}
|
|
@@ -1015,69 +1055,66 @@ const pt = ({
|
|
|
1015
1055
|
{
|
|
1016
1056
|
type: "button",
|
|
1017
1057
|
onClick: l,
|
|
1018
|
-
disabled:
|
|
1019
|
-
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"}`,
|
|
1020
1060
|
title: "カラム幅を初期値にリセット",
|
|
1021
1061
|
children: [
|
|
1022
|
-
/* @__PURE__ */ e.jsx(
|
|
1062
|
+
/* @__PURE__ */ e.jsx(it, { className: "h-3 w-3" }),
|
|
1023
1063
|
/* @__PURE__ */ e.jsx("span", { children: "幅リセット" })
|
|
1024
1064
|
]
|
|
1025
1065
|
}
|
|
1026
1066
|
)
|
|
1027
1067
|
] }),
|
|
1028
|
-
|
|
1068
|
+
u && /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-1 text-blue-600 text-xs", children: [
|
|
1029
1069
|
/* @__PURE__ */ e.jsx("div", { className: "h-2 w-2 animate-pulse rounded-full bg-blue-500" }),
|
|
1030
1070
|
/* @__PURE__ */ e.jsx("span", { children: "リサイズ中..." })
|
|
1031
1071
|
] })
|
|
1032
1072
|
] });
|
|
1033
|
-
},
|
|
1034
|
-
const c = r <
|
|
1035
|
-
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 ${
|
|
1036
|
-
|
|
1037
|
-
!
|
|
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: [
|
|
1038
1078
|
/* @__PURE__ */ e.jsx(
|
|
1039
1079
|
"button",
|
|
1040
1080
|
{
|
|
1041
1081
|
type: "button",
|
|
1042
1082
|
onClick: () => c && t(0),
|
|
1043
|
-
disabled: !c ||
|
|
1044
|
-
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"}`,
|
|
1045
1085
|
title: "この位置に新しいカラムを挿入",
|
|
1046
|
-
children: /* @__PURE__ */ e.jsx(
|
|
1086
|
+
children: /* @__PURE__ */ e.jsx(Se, { className: "h-4 w-4" })
|
|
1047
1087
|
}
|
|
1048
1088
|
),
|
|
1049
|
-
Array.from({ length: r }, (
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
/* @__PURE__ */ e.
|
|
1053
|
-
/* @__PURE__ */ e.jsx("span", { className: "font-medium font-mono text-slate-700 text-xs", children: w + 1 }),
|
|
1054
|
-
p && !u && /* @__PURE__ */ e.jsx(
|
|
1055
|
-
"button",
|
|
1056
|
-
{
|
|
1057
|
-
type: "button",
|
|
1058
|
-
onClick: () => n(w),
|
|
1059
|
-
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",
|
|
1060
|
-
title: `カラム ${w + 1} を削除`,
|
|
1061
|
-
children: /* @__PURE__ */ e.jsx(Re, { className: "h-2.5 w-2.5" })
|
|
1062
|
-
}
|
|
1063
|
-
)
|
|
1064
|
-
] }),
|
|
1065
|
-
/* @__PURE__ */ e.jsx(
|
|
1089
|
+
Array.from({ length: r }, (S, v) => /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
1090
|
+
/* @__PURE__ */ e.jsxs("div", { className: "relative flex h-8 w-12 items-center justify-center rounded border border-slate-300 bg-slate-100", children: [
|
|
1091
|
+
/* @__PURE__ */ e.jsx("span", { className: "font-medium font-mono text-slate-700 text-xs", children: v + 1 }),
|
|
1092
|
+
h && !i && /* @__PURE__ */ e.jsx(
|
|
1066
1093
|
"button",
|
|
1067
1094
|
{
|
|
1068
1095
|
type: "button",
|
|
1069
|
-
onClick: () =>
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
children: /* @__PURE__ */ e.jsx(we, { className: "h-4 w-4" })
|
|
1096
|
+
onClick: () => n(v),
|
|
1097
|
+
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",
|
|
1098
|
+
title: `カラム ${v + 1} を削除`,
|
|
1099
|
+
children: /* @__PURE__ */ e.jsx(He, { className: "h-2.5 w-2.5" })
|
|
1074
1100
|
}
|
|
1075
1101
|
)
|
|
1076
|
-
] },
|
|
1077
|
-
|
|
1102
|
+
] }),
|
|
1103
|
+
/* @__PURE__ */ e.jsx(
|
|
1104
|
+
"button",
|
|
1105
|
+
{
|
|
1106
|
+
type: "button",
|
|
1107
|
+
onClick: () => c && t(v + 1),
|
|
1108
|
+
disabled: !c || i,
|
|
1109
|
+
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"}`,
|
|
1110
|
+
title: "この位置に新しいカラムを挿入",
|
|
1111
|
+
children: /* @__PURE__ */ e.jsx(Se, { className: "h-4 w-4" })
|
|
1112
|
+
}
|
|
1113
|
+
)
|
|
1114
|
+
] }, `column-${v}`))
|
|
1078
1115
|
] })
|
|
1079
1116
|
] });
|
|
1080
|
-
},
|
|
1117
|
+
}, 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: [
|
|
1081
1118
|
/* @__PURE__ */ e.jsxs("div", { className: "mb-3 flex items-center justify-between", children: [
|
|
1082
1119
|
/* @__PURE__ */ e.jsx("h3", { className: "font-bold text-gray-800 text-sm", children: "🛠️ デバッグ設定" }),
|
|
1083
1120
|
/* @__PURE__ */ e.jsx("button", { type: "button", onClick: l, className: "text-gray-500 text-lg hover:text-gray-700", title: "閉じる", children: "✕" })
|
|
@@ -1089,9 +1126,9 @@ const pt = ({
|
|
|
1089
1126
|
{
|
|
1090
1127
|
type: "checkbox",
|
|
1091
1128
|
checked: r.showDebugPanel ?? !1,
|
|
1092
|
-
onChange: (
|
|
1129
|
+
onChange: (o) => t({
|
|
1093
1130
|
...r,
|
|
1094
|
-
showDebugPanel:
|
|
1131
|
+
showDebugPanel: o.target.checked
|
|
1095
1132
|
}),
|
|
1096
1133
|
className: "rounded"
|
|
1097
1134
|
}
|
|
@@ -1104,9 +1141,9 @@ const pt = ({
|
|
|
1104
1141
|
{
|
|
1105
1142
|
type: "checkbox",
|
|
1106
1143
|
checked: r.showMousePosition ?? !1,
|
|
1107
|
-
onChange: (
|
|
1144
|
+
onChange: (o) => t({
|
|
1108
1145
|
...r,
|
|
1109
|
-
showMousePosition:
|
|
1146
|
+
showMousePosition: o.target.checked
|
|
1110
1147
|
}),
|
|
1111
1148
|
className: "rounded"
|
|
1112
1149
|
}
|
|
@@ -1119,9 +1156,9 @@ const pt = ({
|
|
|
1119
1156
|
{
|
|
1120
1157
|
type: "checkbox",
|
|
1121
1158
|
checked: r.showPanelSizes ?? !1,
|
|
1122
|
-
onChange: (
|
|
1159
|
+
onChange: (o) => t({
|
|
1123
1160
|
...r,
|
|
1124
|
-
showPanelSizes:
|
|
1161
|
+
showPanelSizes: o.target.checked
|
|
1125
1162
|
}),
|
|
1126
1163
|
className: "rounded"
|
|
1127
1164
|
}
|
|
@@ -1134,9 +1171,9 @@ const pt = ({
|
|
|
1134
1171
|
{
|
|
1135
1172
|
type: "checkbox",
|
|
1136
1173
|
checked: r.showPlaceholderInfo ?? !1,
|
|
1137
|
-
onChange: (
|
|
1174
|
+
onChange: (o) => t({
|
|
1138
1175
|
...r,
|
|
1139
|
-
showPlaceholderInfo:
|
|
1176
|
+
showPlaceholderInfo: o.target.checked
|
|
1140
1177
|
}),
|
|
1141
1178
|
className: "rounded"
|
|
1142
1179
|
}
|
|
@@ -1149,9 +1186,9 @@ const pt = ({
|
|
|
1149
1186
|
{
|
|
1150
1187
|
type: "checkbox",
|
|
1151
1188
|
checked: r.showDropZoneOutlines ?? !1,
|
|
1152
|
-
onChange: (
|
|
1189
|
+
onChange: (o) => t({
|
|
1153
1190
|
...r,
|
|
1154
|
-
showDropZoneOutlines:
|
|
1191
|
+
showDropZoneOutlines: o.target.checked
|
|
1155
1192
|
}),
|
|
1156
1193
|
className: "rounded"
|
|
1157
1194
|
}
|
|
@@ -1171,9 +1208,9 @@ const pt = ({
|
|
|
1171
1208
|
min: "0",
|
|
1172
1209
|
max: "2",
|
|
1173
1210
|
value: r.logLevel ?? 0,
|
|
1174
|
-
onChange: (
|
|
1211
|
+
onChange: (o) => t({
|
|
1175
1212
|
...r,
|
|
1176
|
-
logLevel: parseInt(
|
|
1213
|
+
logLevel: parseInt(o.target.value, 10)
|
|
1177
1214
|
}),
|
|
1178
1215
|
className: "w-full",
|
|
1179
1216
|
"aria-label": "ログレベル設定"
|
|
@@ -1220,326 +1257,326 @@ const pt = ({
|
|
|
1220
1257
|
)
|
|
1221
1258
|
] })
|
|
1222
1259
|
] })
|
|
1223
|
-
] }) : /* @__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: "🛠️" }),
|
|
1260
|
+
] }) : /* @__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 = {
|
|
1224
1261
|
prefix: "column",
|
|
1225
1262
|
startIndex: 1,
|
|
1226
1263
|
separator: "_"
|
|
1227
|
-
},
|
|
1228
|
-
const { prefix: n, startIndex: l, separator:
|
|
1229
|
-
return `${n}${
|
|
1230
|
-
},
|
|
1231
|
-
const { prefix: n, startIndex: l, separator:
|
|
1232
|
-
if (!r.startsWith(
|
|
1264
|
+
}, we = (r, t = ae) => {
|
|
1265
|
+
const { prefix: n, startIndex: l, separator: o } = t, i = r + l;
|
|
1266
|
+
return `${n}${o}${i}`;
|
|
1267
|
+
}, Ve = (r, t = ae) => Array.from({ length: r }, (n, l) => we(l, t)), je = (r, t = ae) => {
|
|
1268
|
+
const { prefix: n, startIndex: l, separator: o } = t, i = `${n}${o}`;
|
|
1269
|
+
if (!r.startsWith(i))
|
|
1233
1270
|
return null;
|
|
1234
|
-
const
|
|
1271
|
+
const u = r.slice(i.length), c = parseInt(u, 10);
|
|
1235
1272
|
return Number.isNaN(c) || c < l ? null : c - l;
|
|
1236
|
-
},
|
|
1237
|
-
const n = r.map((l) =>
|
|
1273
|
+
}, At = (r, t = ae) => je(r, t) !== null, Mt = (r, t = ae) => {
|
|
1274
|
+
const n = r.map((l) => je(l, t)).filter((l) => l !== null).sort((l, o) => l - o);
|
|
1238
1275
|
for (let l = 0; l < n.length; l++)
|
|
1239
1276
|
if (n[l] !== l)
|
|
1240
|
-
return
|
|
1241
|
-
return
|
|
1242
|
-
},
|
|
1243
|
-
const
|
|
1244
|
-
return
|
|
1245
|
-
}),
|
|
1277
|
+
return we(l, t);
|
|
1278
|
+
return we(n.length, t);
|
|
1279
|
+
}, bt = (r, t = ae) => r.sort((n, l) => {
|
|
1280
|
+
const o = je(n, t) ?? -1, i = je(l, t) ?? -1;
|
|
1281
|
+
return o - i;
|
|
1282
|
+
}), Rt = (r, t = ae) => {
|
|
1246
1283
|
const n = {};
|
|
1247
|
-
return r.forEach((l,
|
|
1248
|
-
const
|
|
1249
|
-
n[l] =
|
|
1284
|
+
return r.forEach((l, o) => {
|
|
1285
|
+
const i = we(o, t);
|
|
1286
|
+
n[l] = i;
|
|
1250
1287
|
}), n;
|
|
1251
|
-
},
|
|
1288
|
+
}, vt = (r, t, n = ae) => {
|
|
1252
1289
|
const l = [];
|
|
1253
|
-
Object.values(r).forEach((
|
|
1254
|
-
l.push(...
|
|
1290
|
+
Object.values(r).forEach((u) => {
|
|
1291
|
+
l.push(...u);
|
|
1255
1292
|
});
|
|
1256
|
-
const
|
|
1257
|
-
return
|
|
1258
|
-
|
|
1259
|
-
}), l.forEach((
|
|
1260
|
-
const
|
|
1261
|
-
|
|
1262
|
-
}),
|
|
1263
|
-
},
|
|
1264
|
-
const [
|
|
1265
|
-
const
|
|
1266
|
-
for (const
|
|
1267
|
-
|
|
1293
|
+
const o = {}, i = Ve(t, n);
|
|
1294
|
+
return i.forEach((u) => {
|
|
1295
|
+
o[u] = [];
|
|
1296
|
+
}), l.forEach((u, c) => {
|
|
1297
|
+
const h = c % t, S = i[h];
|
|
1298
|
+
o[S].push(u);
|
|
1299
|
+
}), o;
|
|
1300
|
+
}, Lt = ({ initialColumns: r, initialPanels: t, debug: n = {}, onLayoutChange: l }) => {
|
|
1301
|
+
const [o, i] = te(() => {
|
|
1302
|
+
const f = {};
|
|
1303
|
+
for (const g of r)
|
|
1304
|
+
f[g.id] = g.initialWidth || 400;
|
|
1268
1305
|
return {
|
|
1269
1306
|
columns: r,
|
|
1270
|
-
columnWidths:
|
|
1307
|
+
columnWidths: f,
|
|
1271
1308
|
isResizing: !1,
|
|
1272
1309
|
resizingColumn: null,
|
|
1273
1310
|
columnPanels: t,
|
|
1274
1311
|
showInsertPlaceholders: !1
|
|
1275
1312
|
};
|
|
1276
|
-
}),
|
|
1277
|
-
|
|
1278
|
-
l?.(
|
|
1279
|
-
}, [
|
|
1280
|
-
const
|
|
1281
|
-
(
|
|
1282
|
-
|
|
1283
|
-
const
|
|
1284
|
-
|
|
1285
|
-
const
|
|
1286
|
-
...
|
|
1287
|
-
[
|
|
1288
|
-
},
|
|
1289
|
-
...
|
|
1290
|
-
[
|
|
1313
|
+
}), u = F(0), c = F(0);
|
|
1314
|
+
K(() => {
|
|
1315
|
+
l?.(o);
|
|
1316
|
+
}, [o, l]);
|
|
1317
|
+
const h = w(
|
|
1318
|
+
(f, g) => {
|
|
1319
|
+
E(n, 1, "カラム追加:", f.id, "at position:", g), i((C) => {
|
|
1320
|
+
const W = [...C.columns], x = g ?? W.length;
|
|
1321
|
+
W.splice(x, 0, f);
|
|
1322
|
+
const p = {
|
|
1323
|
+
...C.columnWidths,
|
|
1324
|
+
[f.id]: f.initialWidth || 400
|
|
1325
|
+
}, m = {
|
|
1326
|
+
...C.columnPanels,
|
|
1327
|
+
[f.id]: []
|
|
1291
1328
|
};
|
|
1292
1329
|
return {
|
|
1293
|
-
...
|
|
1294
|
-
columns:
|
|
1295
|
-
columnWidths:
|
|
1296
|
-
columnPanels:
|
|
1330
|
+
...C,
|
|
1331
|
+
columns: W,
|
|
1332
|
+
columnWidths: p,
|
|
1333
|
+
columnPanels: m
|
|
1297
1334
|
};
|
|
1298
1335
|
});
|
|
1299
1336
|
},
|
|
1300
1337
|
[n]
|
|
1301
|
-
),
|
|
1302
|
-
(
|
|
1303
|
-
|
|
1304
|
-
const
|
|
1305
|
-
if (
|
|
1306
|
-
return
|
|
1307
|
-
const
|
|
1308
|
-
|
|
1309
|
-
const
|
|
1310
|
-
return delete
|
|
1311
|
-
...
|
|
1312
|
-
columns:
|
|
1313
|
-
columnWidths:
|
|
1314
|
-
columnPanels:
|
|
1338
|
+
), S = w(
|
|
1339
|
+
(f) => {
|
|
1340
|
+
E(n, 1, "カラム削除:", f), i((g) => {
|
|
1341
|
+
const C = g.columnPanels[f] || [], W = g.columns.filter((b) => b.id !== f);
|
|
1342
|
+
if (W.length === 0)
|
|
1343
|
+
return E(n, 1, "警告: 最後のカラムを削除しようとしています"), g;
|
|
1344
|
+
const x = W[0].id, p = { ...g.columnPanels };
|
|
1345
|
+
C.length > 0 && (p[x] = [...p[x], ...C]), delete p[f];
|
|
1346
|
+
const m = { ...g.columnWidths };
|
|
1347
|
+
return delete m[f], {
|
|
1348
|
+
...g,
|
|
1349
|
+
columns: W,
|
|
1350
|
+
columnWidths: m,
|
|
1351
|
+
columnPanels: p
|
|
1315
1352
|
};
|
|
1316
1353
|
});
|
|
1317
1354
|
},
|
|
1318
1355
|
[n]
|
|
1319
|
-
),
|
|
1320
|
-
(
|
|
1321
|
-
|
|
1322
|
-
const
|
|
1323
|
-
return
|
|
1324
|
-
...
|
|
1325
|
-
columns:
|
|
1356
|
+
), v = w(
|
|
1357
|
+
(f, g) => {
|
|
1358
|
+
E(n, 1, "カラム移動:", f, "->", g), i((C) => {
|
|
1359
|
+
const W = [...C.columns], [x] = W.splice(f, 1);
|
|
1360
|
+
return W.splice(g, 0, x), {
|
|
1361
|
+
...C,
|
|
1362
|
+
columns: W
|
|
1326
1363
|
};
|
|
1327
1364
|
});
|
|
1328
1365
|
},
|
|
1329
1366
|
[n]
|
|
1330
|
-
), $ =
|
|
1331
|
-
(
|
|
1332
|
-
|
|
1333
|
-
...
|
|
1367
|
+
), $ = w(
|
|
1368
|
+
(f, g) => {
|
|
1369
|
+
E(n, 2, "リサイズ開始:", f, "at X:", g), u.current = g, c.current = o.columnWidths[f] || 300, i((C) => ({
|
|
1370
|
+
...C,
|
|
1334
1371
|
isResizing: !0,
|
|
1335
|
-
resizingColumn:
|
|
1372
|
+
resizingColumn: f
|
|
1336
1373
|
}));
|
|
1337
1374
|
},
|
|
1338
|
-
[n,
|
|
1339
|
-
), M =
|
|
1340
|
-
(
|
|
1341
|
-
const { resizingColumn:
|
|
1342
|
-
if (!(
|
|
1343
|
-
const
|
|
1344
|
-
|
|
1345
|
-
...
|
|
1375
|
+
[n, o.columnWidths]
|
|
1376
|
+
), M = w(
|
|
1377
|
+
(f) => {
|
|
1378
|
+
const { resizingColumn: g, isResizing: C } = o;
|
|
1379
|
+
if (!(C && g)) return;
|
|
1380
|
+
const W = f - u.current, x = Math.max(100, Math.min(800, c.current + W));
|
|
1381
|
+
E(n, 2, "リサイズ中:", g, "new width:", x), i((p) => ({
|
|
1382
|
+
...p,
|
|
1346
1383
|
columnWidths: {
|
|
1347
|
-
...
|
|
1348
|
-
[
|
|
1384
|
+
...p.columnWidths,
|
|
1385
|
+
[g]: x
|
|
1349
1386
|
}
|
|
1350
1387
|
}));
|
|
1351
1388
|
},
|
|
1352
|
-
[n,
|
|
1353
|
-
),
|
|
1354
|
-
|
|
1355
|
-
...
|
|
1389
|
+
[n, o]
|
|
1390
|
+
), y = w(() => {
|
|
1391
|
+
E(n, 2, "リサイズ終了"), i((f) => ({
|
|
1392
|
+
...f,
|
|
1356
1393
|
isResizing: !1,
|
|
1357
1394
|
resizingColumn: null
|
|
1358
1395
|
}));
|
|
1359
|
-
}, [n]),
|
|
1360
|
-
(
|
|
1361
|
-
|
|
1362
|
-
...
|
|
1396
|
+
}, [n]), a = w(
|
|
1397
|
+
(f, g) => {
|
|
1398
|
+
E(n, 2, "カラム幅設定:", f, g), i((C) => ({
|
|
1399
|
+
...C,
|
|
1363
1400
|
columnWidths: {
|
|
1364
|
-
...
|
|
1365
|
-
[
|
|
1401
|
+
...C.columnWidths,
|
|
1402
|
+
[f]: Math.max(100, Math.min(800, g))
|
|
1366
1403
|
}
|
|
1367
1404
|
}));
|
|
1368
1405
|
},
|
|
1369
1406
|
[n]
|
|
1370
|
-
),
|
|
1371
|
-
|
|
1372
|
-
const
|
|
1373
|
-
for (const
|
|
1374
|
-
|
|
1407
|
+
), j = w(() => {
|
|
1408
|
+
E(n, 1, "カラム幅リセット"), i((f) => {
|
|
1409
|
+
const g = {};
|
|
1410
|
+
for (const C of f.columns)
|
|
1411
|
+
g[C.id] = C.initialWidth || 400;
|
|
1375
1412
|
return {
|
|
1376
|
-
...
|
|
1377
|
-
columnWidths:
|
|
1413
|
+
...f,
|
|
1414
|
+
columnWidths: g
|
|
1378
1415
|
};
|
|
1379
1416
|
});
|
|
1380
|
-
}, [n]),
|
|
1381
|
-
(
|
|
1382
|
-
|
|
1383
|
-
const
|
|
1384
|
-
if (
|
|
1385
|
-
const
|
|
1386
|
-
|
|
1417
|
+
}, [n]), D = w(
|
|
1418
|
+
(f, g, C, W) => {
|
|
1419
|
+
E(n, 1, "パネル移動:", f, "from", g, "to", C, "at", W), i((x) => {
|
|
1420
|
+
const p = { ...x.columnPanels };
|
|
1421
|
+
if (g in p && (p[g] = p[g].filter((m) => m !== f)), C in p) {
|
|
1422
|
+
const m = [...p[C]];
|
|
1423
|
+
m.splice(W, 0, f), p[C] = m;
|
|
1387
1424
|
}
|
|
1388
1425
|
return {
|
|
1389
|
-
...
|
|
1390
|
-
columnPanels:
|
|
1426
|
+
...x,
|
|
1427
|
+
columnPanels: p
|
|
1391
1428
|
};
|
|
1392
1429
|
});
|
|
1393
1430
|
},
|
|
1394
1431
|
[n]
|
|
1395
|
-
),
|
|
1396
|
-
(
|
|
1397
|
-
|
|
1398
|
-
const
|
|
1399
|
-
|
|
1400
|
-
const
|
|
1401
|
-
return
|
|
1402
|
-
...
|
|
1403
|
-
columnPanels:
|
|
1432
|
+
), R = w(
|
|
1433
|
+
(f, g, C) => {
|
|
1434
|
+
E(n, 1, "パネル追加:", f, "to column:", g), i((W) => {
|
|
1435
|
+
const x = { ...W.columnPanels };
|
|
1436
|
+
g in x || (x[g] = []);
|
|
1437
|
+
const p = [...x[g]], m = C ?? p.length;
|
|
1438
|
+
return p.splice(m, 0, f), x[g] = p, {
|
|
1439
|
+
...W,
|
|
1440
|
+
columnPanels: x
|
|
1404
1441
|
};
|
|
1405
1442
|
});
|
|
1406
1443
|
},
|
|
1407
1444
|
[n]
|
|
1408
|
-
),
|
|
1409
|
-
(
|
|
1410
|
-
|
|
1411
|
-
const
|
|
1412
|
-
for (const [
|
|
1413
|
-
|
|
1445
|
+
), L = w(
|
|
1446
|
+
(f) => {
|
|
1447
|
+
E(n, 1, "パネル削除:", f), i((g) => {
|
|
1448
|
+
const C = {};
|
|
1449
|
+
for (const [W, x] of Object.entries(g.columnPanels))
|
|
1450
|
+
C[W] = x.filter((p) => p !== f);
|
|
1414
1451
|
return {
|
|
1415
|
-
...
|
|
1416
|
-
columnPanels:
|
|
1452
|
+
...g,
|
|
1453
|
+
columnPanels: C
|
|
1417
1454
|
};
|
|
1418
1455
|
});
|
|
1419
1456
|
},
|
|
1420
1457
|
[n]
|
|
1421
|
-
),
|
|
1422
|
-
(
|
|
1423
|
-
|
|
1424
|
-
const
|
|
1425
|
-
if (
|
|
1426
|
-
const
|
|
1427
|
-
|
|
1428
|
-
const
|
|
1429
|
-
id:
|
|
1430
|
-
title: `カラム ${
|
|
1458
|
+
), z = w(
|
|
1459
|
+
(f) => {
|
|
1460
|
+
E(n, 1, "カラム数更新:", f), i((g) => {
|
|
1461
|
+
const C = g.columns.length;
|
|
1462
|
+
if (f === C) return g;
|
|
1463
|
+
const W = vt(g.columnPanels, f, ae), x = Ve(f, ae), p = g.isResizing && g.resizingColumn && !x.includes(g.resizingColumn);
|
|
1464
|
+
p && E(n, 1, "リサイズ中のカラムが削除されるためリサイズを強制終了:", g.resizingColumn);
|
|
1465
|
+
const m = x.map((A, H) => ({
|
|
1466
|
+
id: A,
|
|
1467
|
+
title: `カラム ${H + 1}`,
|
|
1431
1468
|
minWidth: 350,
|
|
1432
1469
|
maxWidth: 800,
|
|
1433
1470
|
initialWidth: 400,
|
|
1434
|
-
resizable: !(
|
|
1435
|
-
})),
|
|
1436
|
-
if (Object.entries(
|
|
1437
|
-
|
|
1438
|
-
const
|
|
1439
|
-
|
|
1471
|
+
resizable: !(H === 1 && f === 3)
|
|
1472
|
+
})), b = {};
|
|
1473
|
+
if (Object.entries(g.columnWidths).some(([, A]) => A !== 400))
|
|
1474
|
+
x.forEach((A) => {
|
|
1475
|
+
const H = g.columnWidths[A];
|
|
1476
|
+
H && H !== 400 ? b[A] = H : b[A] = 400;
|
|
1440
1477
|
});
|
|
1441
1478
|
else {
|
|
1442
|
-
const
|
|
1443
|
-
|
|
1444
|
-
|
|
1479
|
+
const A = C > f ? Object.values(g.columnWidths).reduce((s, d) => s + d, 0) : f * 400, H = Math.max(A / f, 350);
|
|
1480
|
+
x.forEach((s) => {
|
|
1481
|
+
b[s] = H;
|
|
1445
1482
|
});
|
|
1446
1483
|
}
|
|
1447
1484
|
return {
|
|
1448
|
-
...
|
|
1449
|
-
columns:
|
|
1450
|
-
columnPanels:
|
|
1451
|
-
columnWidths:
|
|
1452
|
-
isResizing:
|
|
1453
|
-
resizingColumn:
|
|
1485
|
+
...g,
|
|
1486
|
+
columns: m,
|
|
1487
|
+
columnPanels: W,
|
|
1488
|
+
columnWidths: b,
|
|
1489
|
+
isResizing: p ? !1 : g.isResizing,
|
|
1490
|
+
resizingColumn: p ? null : g.resizingColumn
|
|
1454
1491
|
};
|
|
1455
1492
|
});
|
|
1456
1493
|
},
|
|
1457
1494
|
[n]
|
|
1458
|
-
),
|
|
1459
|
-
|
|
1460
|
-
const
|
|
1461
|
-
for (const
|
|
1462
|
-
for (const
|
|
1463
|
-
|
|
1464
|
-
const
|
|
1465
|
-
for (const
|
|
1466
|
-
|
|
1467
|
-
let
|
|
1468
|
-
for (const
|
|
1469
|
-
const
|
|
1470
|
-
|
|
1495
|
+
), Z = w(() => {
|
|
1496
|
+
E(n, 1, "カラム自動バランス調整"), i((f) => {
|
|
1497
|
+
const g = [];
|
|
1498
|
+
for (const x of Object.keys(f.columnPanels))
|
|
1499
|
+
for (const p of f.columnPanels[x])
|
|
1500
|
+
g.push(p);
|
|
1501
|
+
const C = {};
|
|
1502
|
+
for (const x of f.columns)
|
|
1503
|
+
C[x.id] = [];
|
|
1504
|
+
let W = 0;
|
|
1505
|
+
for (const x of g) {
|
|
1506
|
+
const p = f.columns[W % f.columns.length].id;
|
|
1507
|
+
C[p].push(x), W += 1;
|
|
1471
1508
|
}
|
|
1472
1509
|
return {
|
|
1473
|
-
...
|
|
1474
|
-
columnPanels:
|
|
1510
|
+
...f,
|
|
1511
|
+
columnPanels: C
|
|
1475
1512
|
};
|
|
1476
1513
|
});
|
|
1477
|
-
}, [n]),
|
|
1478
|
-
(
|
|
1479
|
-
[
|
|
1480
|
-
), q =
|
|
1481
|
-
let
|
|
1482
|
-
for (const
|
|
1483
|
-
|
|
1484
|
-
return
|
|
1485
|
-
}, [
|
|
1486
|
-
|
|
1487
|
-
...
|
|
1488
|
-
showInsertPlaceholders:
|
|
1514
|
+
}, [n]), Y = w(
|
|
1515
|
+
(f) => o.columns.find((g) => g.id === f),
|
|
1516
|
+
[o.columns]
|
|
1517
|
+
), q = w(() => {
|
|
1518
|
+
let f = 0;
|
|
1519
|
+
for (const g of Object.values(o.columnWidths))
|
|
1520
|
+
f += g;
|
|
1521
|
+
return f;
|
|
1522
|
+
}, [o.columnWidths]), O = w((f) => document.querySelector(`[data-column-id="${f}"]`), []), _ = w((f) => {
|
|
1523
|
+
i((g) => ({
|
|
1524
|
+
...g,
|
|
1525
|
+
showInsertPlaceholders: f
|
|
1489
1526
|
}));
|
|
1490
1527
|
}, []);
|
|
1491
1528
|
return {
|
|
1492
|
-
layoutState:
|
|
1493
|
-
addColumn:
|
|
1494
|
-
removeColumn:
|
|
1495
|
-
moveColumn:
|
|
1529
|
+
layoutState: o,
|
|
1530
|
+
addColumn: h,
|
|
1531
|
+
removeColumn: S,
|
|
1532
|
+
moveColumn: v,
|
|
1496
1533
|
startResize: $,
|
|
1497
1534
|
handleResize: M,
|
|
1498
|
-
endResize:
|
|
1499
|
-
setColumnWidth:
|
|
1500
|
-
resetColumnWidths:
|
|
1501
|
-
movePanel:
|
|
1502
|
-
addPanel:
|
|
1503
|
-
removePanel:
|
|
1504
|
-
updateColumnCount:
|
|
1505
|
-
autoBalanceColumns:
|
|
1506
|
-
getColumnById:
|
|
1535
|
+
endResize: y,
|
|
1536
|
+
setColumnWidth: a,
|
|
1537
|
+
resetColumnWidths: j,
|
|
1538
|
+
movePanel: D,
|
|
1539
|
+
addPanel: R,
|
|
1540
|
+
removePanel: L,
|
|
1541
|
+
updateColumnCount: z,
|
|
1542
|
+
autoBalanceColumns: Z,
|
|
1543
|
+
getColumnById: Y,
|
|
1507
1544
|
getTotalWidth: q,
|
|
1508
|
-
getColumnElement:
|
|
1509
|
-
setShowInsertPlaceholders:
|
|
1545
|
+
getColumnElement: O,
|
|
1546
|
+
setShowInsertPlaceholders: _
|
|
1510
1547
|
};
|
|
1511
|
-
},
|
|
1548
|
+
}, Pe = {
|
|
1512
1549
|
triggerDistance: 80,
|
|
1513
1550
|
scrollSpeed: 5,
|
|
1514
1551
|
maxScrollSpeed: 20
|
|
1515
|
-
},
|
|
1516
|
-
const { triggerDistance:
|
|
1552
|
+
}, Ye = (r, t, n = Pe, l) => {
|
|
1553
|
+
const { triggerDistance: o, scrollSpeed: i, maxScrollSpeed: u } = n;
|
|
1517
1554
|
let c;
|
|
1518
1555
|
l ? c = l.getBoundingClientRect() : c = new DOMRect(0, 0, window.innerWidth, window.innerHeight);
|
|
1519
|
-
const { left:
|
|
1520
|
-
let M = 0,
|
|
1521
|
-
if (r >=
|
|
1522
|
-
if (r <
|
|
1523
|
-
const
|
|
1524
|
-
M = -Math.min(
|
|
1525
|
-
} else if (r >
|
|
1526
|
-
const
|
|
1527
|
-
M = Math.min(
|
|
1556
|
+
const { left: h, top: S, right: v, bottom: $ } = c;
|
|
1557
|
+
let M = 0, y = 0;
|
|
1558
|
+
if (r >= h && r <= v && t >= S && t <= $) {
|
|
1559
|
+
if (r < h + o) {
|
|
1560
|
+
const a = Math.max(0, (h + o - r) / o);
|
|
1561
|
+
M = -Math.min(u, i + a * (u - i));
|
|
1562
|
+
} else if (r > v - o) {
|
|
1563
|
+
const a = Math.max(0, (r - (v - o)) / o);
|
|
1564
|
+
M = Math.min(u, i + a * (u - i));
|
|
1528
1565
|
}
|
|
1529
|
-
if (t <
|
|
1530
|
-
const
|
|
1531
|
-
|
|
1532
|
-
} else if (t > $ -
|
|
1533
|
-
const
|
|
1534
|
-
|
|
1566
|
+
if (t < S + o) {
|
|
1567
|
+
const a = Math.max(0, (S + o - t) / o);
|
|
1568
|
+
y = -Math.min(u, i + a * (u - i));
|
|
1569
|
+
} else if (t > $ - o) {
|
|
1570
|
+
const a = Math.max(0, (t - ($ - o)) / o);
|
|
1571
|
+
y = Math.min(u, i + a * (u - i));
|
|
1535
1572
|
}
|
|
1536
1573
|
}
|
|
1537
|
-
return { x: M, y
|
|
1538
|
-
},
|
|
1574
|
+
return { x: M, y };
|
|
1575
|
+
}, yt = (r, t) => {
|
|
1539
1576
|
(r.x !== 0 || r.y !== 0) && (t ? t.scrollBy(r.x, r.y) : window.scrollBy(r.x, r.y));
|
|
1540
1577
|
};
|
|
1541
|
-
class
|
|
1542
|
-
constructor(t =
|
|
1578
|
+
class Be {
|
|
1579
|
+
constructor(t = Pe, n) {
|
|
1543
1580
|
this.intervalId = null, this.isActive = !1, this.config = t, this.scrollElement = n;
|
|
1544
1581
|
}
|
|
1545
1582
|
setScrollElement(t) {
|
|
@@ -1547,12 +1584,12 @@ class Ye {
|
|
|
1547
1584
|
}
|
|
1548
1585
|
start(t, n) {
|
|
1549
1586
|
this.isActive || (this.isActive = !0, this.intervalId = window.setInterval(() => {
|
|
1550
|
-
const l =
|
|
1551
|
-
|
|
1587
|
+
const l = Ye(t, n, this.config, this.scrollElement);
|
|
1588
|
+
yt(l, this.scrollElement);
|
|
1552
1589
|
}, 16));
|
|
1553
1590
|
}
|
|
1554
1591
|
update(t, n) {
|
|
1555
|
-
const l =
|
|
1592
|
+
const l = Ye(t, n, this.config, this.scrollElement);
|
|
1556
1593
|
(l.x !== 0 || l.y !== 0) && !this.isActive ? this.start(t, n) : l.x === 0 && l.y === 0 && this.isActive && this.stop();
|
|
1557
1594
|
}
|
|
1558
1595
|
stop() {
|
|
@@ -1565,717 +1602,733 @@ class Ye {
|
|
|
1565
1602
|
this.config = t;
|
|
1566
1603
|
}
|
|
1567
1604
|
}
|
|
1568
|
-
const
|
|
1605
|
+
const wt = ({
|
|
1569
1606
|
debugConfig: r,
|
|
1570
1607
|
dragState: t,
|
|
1571
1608
|
customDrag: n,
|
|
1572
1609
|
clickState: l,
|
|
1573
|
-
dragModes:
|
|
1574
|
-
isMouseDown:
|
|
1575
|
-
dragOverPosition:
|
|
1610
|
+
dragModes: o,
|
|
1611
|
+
isMouseDown: i,
|
|
1612
|
+
dragOverPosition: u,
|
|
1576
1613
|
setCustomDrag: c,
|
|
1577
|
-
setDragState:
|
|
1578
|
-
setDragOverPosition:
|
|
1579
|
-
setOriginalPanelPosition:
|
|
1614
|
+
setDragState: h,
|
|
1615
|
+
setDragOverPosition: S,
|
|
1616
|
+
setOriginalPanelPosition: v,
|
|
1580
1617
|
setClickState: $,
|
|
1581
1618
|
setIsMouseDown: M,
|
|
1582
|
-
findPanelPosition:
|
|
1583
|
-
performPanelMove:
|
|
1584
|
-
showMousePosition:
|
|
1585
|
-
updateMousePosition:
|
|
1586
|
-
recordMouseDown:
|
|
1587
|
-
recordClickPosition:
|
|
1588
|
-
isVirtualClick:
|
|
1589
|
-
calculateMoveDistance:
|
|
1590
|
-
clearMouseTracking:
|
|
1619
|
+
findPanelPosition: y,
|
|
1620
|
+
performPanelMove: a,
|
|
1621
|
+
showMousePosition: j,
|
|
1622
|
+
updateMousePosition: D,
|
|
1623
|
+
recordMouseDown: R,
|
|
1624
|
+
recordClickPosition: L,
|
|
1625
|
+
isVirtualClick: z,
|
|
1626
|
+
calculateMoveDistance: Z,
|
|
1627
|
+
clearMouseTracking: Y,
|
|
1591
1628
|
resetDragState: q,
|
|
1592
|
-
resetClickState:
|
|
1593
|
-
createDragImage:
|
|
1594
|
-
updateDragImagePosition:
|
|
1595
|
-
removeDragImage:
|
|
1596
|
-
handlePlaceholderDragEnter:
|
|
1597
|
-
handlePlaceholderDragLeave:
|
|
1629
|
+
resetClickState: O,
|
|
1630
|
+
createDragImage: _,
|
|
1631
|
+
updateDragImagePosition: f,
|
|
1632
|
+
removeDragImage: g,
|
|
1633
|
+
handlePlaceholderDragEnter: C,
|
|
1634
|
+
handlePlaceholderDragLeave: W
|
|
1598
1635
|
}) => {
|
|
1599
|
-
const
|
|
1600
|
-
|
|
1601
|
-
const
|
|
1602
|
-
|
|
1603
|
-
const
|
|
1604
|
-
|
|
1636
|
+
const x = F(r);
|
|
1637
|
+
x.current = r;
|
|
1638
|
+
const p = F(null), m = F(null), b = F(0), N = F(new Be(Pe));
|
|
1639
|
+
K(() => {
|
|
1640
|
+
const d = document.querySelector("main.max-w-full.flex-1.overflow-auto");
|
|
1641
|
+
d && N.current.setScrollElement(d);
|
|
1605
1642
|
}, []);
|
|
1606
|
-
const
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
}, [
|
|
1610
|
-
const
|
|
1611
|
-
(
|
|
1643
|
+
const T = F(u);
|
|
1644
|
+
K(() => {
|
|
1645
|
+
T.current = u, E(x.current, 2, "dragOverPositionRef更新:", u);
|
|
1646
|
+
}, [u]);
|
|
1647
|
+
const A = w(
|
|
1648
|
+
(d) => {
|
|
1612
1649
|
if (n.isActive || l.isClicked) {
|
|
1613
|
-
|
|
1614
|
-
const
|
|
1615
|
-
|
|
1650
|
+
d.preventDefault();
|
|
1651
|
+
const k = window.getSelection();
|
|
1652
|
+
k && k.rangeCount > 0 && k.removeAllRanges();
|
|
1616
1653
|
}
|
|
1617
1654
|
if (n.isActive) {
|
|
1618
|
-
|
|
1619
|
-
const
|
|
1620
|
-
if (
|
|
1655
|
+
D(d.clientX, d.clientY), f(d.clientX, d.clientY), N.current.update(d.clientX, d.clientY);
|
|
1656
|
+
const k = document.elementFromPoint(d.clientX, d.clientY), X = k?.closest("[data-drop-zone]");
|
|
1657
|
+
if (X) {
|
|
1621
1658
|
document.body.classList.add("droppable");
|
|
1622
|
-
const
|
|
1623
|
-
Q !== null && Q !== t.dragOverColumn &&
|
|
1624
|
-
const
|
|
1625
|
-
if (
|
|
1626
|
-
const re =
|
|
1627
|
-
if (re &&
|
|
1628
|
-
const
|
|
1629
|
-
|
|
1659
|
+
const G = X.getAttribute("data-column-index"), Q = G ? parseInt(G, 10) : null;
|
|
1660
|
+
Q !== null && Q !== t.dragOverColumn && h((re) => ({ ...re, dragOverColumn: Q }));
|
|
1661
|
+
const B = k?.closest("[data-placeholder-index]");
|
|
1662
|
+
if (B) {
|
|
1663
|
+
const re = B.getAttribute("data-placeholder-index"), ie = B.getAttribute("data-placeholder-column");
|
|
1664
|
+
if (re && ie) {
|
|
1665
|
+
const se = parseInt(re, 10), ge = parseInt(ie, 10);
|
|
1666
|
+
C(ge, se);
|
|
1630
1667
|
}
|
|
1631
1668
|
} else
|
|
1632
|
-
|
|
1669
|
+
W();
|
|
1633
1670
|
} else
|
|
1634
|
-
document.body.classList.remove("droppable"),
|
|
1635
|
-
} else if (
|
|
1636
|
-
if (
|
|
1637
|
-
|
|
1638
|
-
const
|
|
1639
|
-
if (
|
|
1640
|
-
const
|
|
1641
|
-
|
|
1671
|
+
document.body.classList.remove("droppable"), S(null), h((G) => ({ ...G, dragOverColumn: null }));
|
|
1672
|
+
} else if (i && l.isClicked && l.panelId) {
|
|
1673
|
+
if (o[l.panelId] !== "custom" || Z(d.clientX, d.clientY) < 10) return;
|
|
1674
|
+
E(x.current, 1, "🚀 カスタムドラッグ開始 -", l.panelId);
|
|
1675
|
+
const X = document.querySelector(`[data-panel-id="${l.panelId}"]`);
|
|
1676
|
+
if (X && m.current) {
|
|
1677
|
+
const G = X.getBoundingClientRect(), Q = m.current.x - G.left, B = m.current.y - G.top;
|
|
1678
|
+
_(l.panelId, Q, B), document.body.classList.add("custom-dragging"), c({
|
|
1642
1679
|
isActive: !0,
|
|
1643
1680
|
panelId: l.panelId,
|
|
1644
1681
|
startX: Q,
|
|
1645
|
-
startY:
|
|
1682
|
+
startY: B
|
|
1646
1683
|
});
|
|
1647
1684
|
}
|
|
1648
|
-
|
|
1685
|
+
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);
|
|
1649
1686
|
}
|
|
1650
1687
|
},
|
|
1651
1688
|
[
|
|
1652
1689
|
n.isActive,
|
|
1653
1690
|
l,
|
|
1654
1691
|
t.dragOverColumn,
|
|
1655
|
-
s,
|
|
1656
|
-
u,
|
|
1657
|
-
m,
|
|
1658
|
-
p,
|
|
1659
|
-
C,
|
|
1660
|
-
B,
|
|
1661
1692
|
o,
|
|
1662
|
-
|
|
1663
|
-
w,
|
|
1693
|
+
i,
|
|
1664
1694
|
D,
|
|
1695
|
+
h,
|
|
1696
|
+
S,
|
|
1697
|
+
Z,
|
|
1698
|
+
y,
|
|
1699
|
+
c,
|
|
1700
|
+
v,
|
|
1701
|
+
j,
|
|
1665
1702
|
$,
|
|
1666
1703
|
M,
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1704
|
+
Y,
|
|
1705
|
+
_,
|
|
1706
|
+
f,
|
|
1707
|
+
C,
|
|
1708
|
+
W
|
|
1672
1709
|
]
|
|
1673
|
-
),
|
|
1674
|
-
(
|
|
1675
|
-
if (
|
|
1710
|
+
), H = w(
|
|
1711
|
+
(d) => {
|
|
1712
|
+
if (E(x.current, 1, "🐭 カスタムドラッグハンドラー - グローバルマウスアップ", {
|
|
1676
1713
|
isActive: n.isActive,
|
|
1677
1714
|
panelId: n.panelId,
|
|
1678
|
-
dragMode: n.panelId ?
|
|
1715
|
+
dragMode: n.panelId ? o[n.panelId] : "unknown"
|
|
1679
1716
|
}), n.isActive) {
|
|
1680
|
-
|
|
1681
|
-
const
|
|
1682
|
-
if (
|
|
1683
|
-
const
|
|
1684
|
-
if (
|
|
1685
|
-
const Q =
|
|
1686
|
-
Q &&
|
|
1717
|
+
N.current.stop();
|
|
1718
|
+
const k = T.current;
|
|
1719
|
+
if (k) {
|
|
1720
|
+
const G = document.elementFromPoint(d.clientX, d.clientY)?.closest("[data-drop-zone]");
|
|
1721
|
+
if (G) {
|
|
1722
|
+
const Q = G.getAttribute("data-column-key");
|
|
1723
|
+
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]);
|
|
1687
1724
|
}
|
|
1688
1725
|
}
|
|
1689
|
-
|
|
1690
|
-
} else if (
|
|
1691
|
-
const
|
|
1692
|
-
if (!(
|
|
1693
|
-
|
|
1726
|
+
g(), document.body.classList.remove("custom-dragging", "droppable"), q(), b.current = 0;
|
|
1727
|
+
} else if (z(d.clientX, d.clientY)) {
|
|
1728
|
+
const X = document.elementFromPoint(d.clientX, d.clientY)?.closest("[data-panel-id]"), G = X?.getAttribute("data-panel-id") ?? null;
|
|
1729
|
+
if (!(X && G) || o[G] !== "custom") {
|
|
1730
|
+
p.current && (clearTimeout(p.current), p.current = null), O(), m.current = null, b.current = 0;
|
|
1694
1731
|
return;
|
|
1695
1732
|
}
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
}, 2e3)) : (
|
|
1699
|
-
|
|
1733
|
+
b.current += 1, l.isClicked === !1 && b.current === 1 ? (E(x.current, 1, "🖱️ 仮想クリック検出 - ドラッグ待機状態へ:", G), $({ isClicked: !0, panelId: G }), p.current = window.setTimeout(() => {
|
|
1734
|
+
E(x.current, 1, "⏳ クリック待機状態を自動解除:", G), O(), m.current = null, b.current = 0;
|
|
1735
|
+
}, 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(() => {
|
|
1736
|
+
E(x.current, 1, "⏳ 仮想クリック検出再開:", G);
|
|
1700
1737
|
}, 2e3));
|
|
1701
|
-
} else l.isClicked && (
|
|
1702
|
-
|
|
1738
|
+
} else l.isClicked && (O(), m.current = null, b.current = 0);
|
|
1739
|
+
i && M(!1);
|
|
1703
1740
|
},
|
|
1704
|
-
[n.isActive, n.panelId, l,
|
|
1705
|
-
),
|
|
1706
|
-
(
|
|
1707
|
-
if (
|
|
1708
|
-
|
|
1741
|
+
[n.isActive, n.panelId, l, o, i, a, q, O, z, $, M, g]
|
|
1742
|
+
), s = w(
|
|
1743
|
+
(d, k) => {
|
|
1744
|
+
if (o[k] !== "custom") {
|
|
1745
|
+
E(x.current, 1, "🚫 カスタムドラッグモードではない - スキップ:", k);
|
|
1709
1746
|
return;
|
|
1710
1747
|
}
|
|
1711
|
-
|
|
1748
|
+
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 });
|
|
1712
1749
|
},
|
|
1713
|
-
[l,
|
|
1750
|
+
[l, o, R, M, L]
|
|
1714
1751
|
);
|
|
1715
|
-
return
|
|
1716
|
-
|
|
1752
|
+
return K(() => () => {
|
|
1753
|
+
p.current !== null && clearTimeout(p.current), N.current.stop();
|
|
1717
1754
|
}, []), {
|
|
1718
|
-
handleGlobalMouseMove:
|
|
1719
|
-
handleGlobalMouseUp:
|
|
1720
|
-
handleMouseDown:
|
|
1755
|
+
handleGlobalMouseMove: A,
|
|
1756
|
+
handleGlobalMouseUp: H,
|
|
1757
|
+
handleMouseDown: s
|
|
1721
1758
|
};
|
|
1722
|
-
},
|
|
1723
|
-
const [r, t] =
|
|
1759
|
+
}, jt = () => {
|
|
1760
|
+
const [r, t] = te({
|
|
1724
1761
|
isDragging: !1,
|
|
1725
1762
|
draggedPanel: null,
|
|
1726
1763
|
dragOverColumn: null
|
|
1727
|
-
}), [n, l] =
|
|
1764
|
+
}), [n, l] = te(null), [o, i] = te(null), [u, c] = te({
|
|
1728
1765
|
isActive: !1,
|
|
1729
1766
|
panelId: "",
|
|
1730
1767
|
startX: 0,
|
|
1731
1768
|
startY: 0
|
|
1732
|
-
}), [
|
|
1769
|
+
}), [h, S] = te({
|
|
1733
1770
|
isClicked: !1,
|
|
1734
1771
|
panelId: null
|
|
1735
|
-
}), [
|
|
1772
|
+
}), [v, $] = te({
|
|
1736
1773
|
isTouchDragging: !1,
|
|
1737
1774
|
startX: 0,
|
|
1738
1775
|
startY: 0,
|
|
1739
1776
|
currentX: 0,
|
|
1740
1777
|
currentY: 0,
|
|
1741
1778
|
draggedElement: null
|
|
1742
|
-
}), [M,
|
|
1743
|
-
c({ isActive: !1, panelId: "", startX: 0, startY: 0 }), t({ isDragging: !1, draggedPanel: null, dragOverColumn: null }), l(null),
|
|
1744
|
-
}, []),
|
|
1745
|
-
|
|
1746
|
-
}, []),
|
|
1747
|
-
t(
|
|
1748
|
-
}, []),
|
|
1749
|
-
l(
|
|
1750
|
-
}, []),
|
|
1751
|
-
|
|
1752
|
-
}, []),
|
|
1753
|
-
c(
|
|
1754
|
-
}, []),
|
|
1755
|
-
|
|
1756
|
-
}, []),
|
|
1757
|
-
$(
|
|
1758
|
-
}, []), q =
|
|
1759
|
-
|
|
1779
|
+
}), [M, y] = te(!1), a = w(() => {
|
|
1780
|
+
c({ isActive: !1, panelId: "", startX: 0, startY: 0 }), t({ isDragging: !1, draggedPanel: null, dragOverColumn: null }), l(null), i(null);
|
|
1781
|
+
}, []), j = w(() => {
|
|
1782
|
+
S({ isClicked: !1, panelId: null }), y(!1);
|
|
1783
|
+
}, []), D = w((O) => {
|
|
1784
|
+
t(O);
|
|
1785
|
+
}, []), R = w((O) => {
|
|
1786
|
+
l(O);
|
|
1787
|
+
}, []), L = w((O) => {
|
|
1788
|
+
i(O);
|
|
1789
|
+
}, []), z = w((O) => {
|
|
1790
|
+
c(O);
|
|
1791
|
+
}, []), Z = w((O) => {
|
|
1792
|
+
S(O);
|
|
1793
|
+
}, []), Y = w((O) => {
|
|
1794
|
+
$(O);
|
|
1795
|
+
}, []), q = w((O) => {
|
|
1796
|
+
y(O);
|
|
1760
1797
|
}, []);
|
|
1761
1798
|
return {
|
|
1762
1799
|
// States / 状態
|
|
1763
1800
|
dragState: r,
|
|
1764
1801
|
dragOverPosition: n,
|
|
1765
|
-
originalPanelPosition:
|
|
1766
|
-
customDrag:
|
|
1767
|
-
clickState:
|
|
1768
|
-
touchDragState:
|
|
1802
|
+
originalPanelPosition: o,
|
|
1803
|
+
customDrag: u,
|
|
1804
|
+
clickState: h,
|
|
1805
|
+
touchDragState: v,
|
|
1769
1806
|
isMouseDown: M,
|
|
1770
1807
|
// Stabilized Setters / 安定化されたセッター
|
|
1771
|
-
setDragState:
|
|
1772
|
-
setDragOverPosition:
|
|
1773
|
-
setOriginalPanelPosition:
|
|
1774
|
-
setCustomDrag:
|
|
1775
|
-
setClickState:
|
|
1776
|
-
setTouchDragState:
|
|
1808
|
+
setDragState: D,
|
|
1809
|
+
setDragOverPosition: R,
|
|
1810
|
+
setOriginalPanelPosition: L,
|
|
1811
|
+
setCustomDrag: z,
|
|
1812
|
+
setClickState: Z,
|
|
1813
|
+
setTouchDragState: Y,
|
|
1777
1814
|
setIsMouseDown: q,
|
|
1778
1815
|
// Utility Functions / ユーティリティ関数
|
|
1779
|
-
resetDragState:
|
|
1780
|
-
resetClickState:
|
|
1816
|
+
resetDragState: a,
|
|
1817
|
+
resetClickState: j
|
|
1781
1818
|
};
|
|
1782
|
-
},
|
|
1783
|
-
const [r, t] =
|
|
1819
|
+
}, Pt = () => {
|
|
1820
|
+
const [r, t] = te({
|
|
1784
1821
|
x: 0,
|
|
1785
1822
|
y: 0,
|
|
1786
1823
|
isVisible: !1
|
|
1787
|
-
}), n =
|
|
1788
|
-
t({ x:
|
|
1789
|
-
}, []),
|
|
1790
|
-
t((
|
|
1791
|
-
}, []), c =
|
|
1792
|
-
t((
|
|
1793
|
-
x:
|
|
1794
|
-
y:
|
|
1795
|
-
isVisible:
|
|
1824
|
+
}), n = F(null), l = F(0), o = F(null), i = w((y, a) => {
|
|
1825
|
+
t({ x: y, y: a, isVisible: !0 });
|
|
1826
|
+
}, []), u = w(() => {
|
|
1827
|
+
t((y) => ({ ...y, isVisible: !1 }));
|
|
1828
|
+
}, []), c = w((y, a) => {
|
|
1829
|
+
t((j) => j.x === y && j.y === a ? j : {
|
|
1830
|
+
x: y,
|
|
1831
|
+
y: a,
|
|
1832
|
+
isVisible: j.isVisible
|
|
1796
1833
|
});
|
|
1797
|
-
}, []),
|
|
1798
|
-
l.current = Date.now(),
|
|
1799
|
-
}, []),
|
|
1800
|
-
n.current = { x:
|
|
1801
|
-
}, []),
|
|
1834
|
+
}, []), h = w((y, a) => {
|
|
1835
|
+
l.current = Date.now(), o.current = { x: y, y: a };
|
|
1836
|
+
}, []), S = w((y, a) => {
|
|
1837
|
+
n.current = { x: y, y: a };
|
|
1838
|
+
}, []), 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) => {
|
|
1802
1839
|
if (!n.current)
|
|
1803
1840
|
return 0;
|
|
1804
|
-
const
|
|
1805
|
-
return Math.sqrt(
|
|
1806
|
-
}, []), M =
|
|
1807
|
-
n.current = null, l.current = 0,
|
|
1841
|
+
const j = Math.abs(y - n.current.x), D = Math.abs(a - n.current.y);
|
|
1842
|
+
return Math.sqrt(j * j + D * D);
|
|
1843
|
+
}, []), M = w(() => {
|
|
1844
|
+
n.current = null, l.current = 0, o.current = null;
|
|
1808
1845
|
}, []);
|
|
1809
1846
|
return {
|
|
1810
1847
|
mousePosition: r,
|
|
1811
1848
|
lastClickPosition: n.current,
|
|
1812
1849
|
mouseDownTime: l.current,
|
|
1813
|
-
mouseDownPosition:
|
|
1814
|
-
showMousePosition:
|
|
1815
|
-
hideMousePosition:
|
|
1850
|
+
mouseDownPosition: o.current,
|
|
1851
|
+
showMousePosition: i,
|
|
1852
|
+
hideMousePosition: u,
|
|
1816
1853
|
updateMousePosition: c,
|
|
1817
|
-
recordMouseDown:
|
|
1818
|
-
recordClickPosition:
|
|
1819
|
-
isVirtualClick:
|
|
1854
|
+
recordMouseDown: h,
|
|
1855
|
+
recordClickPosition: S,
|
|
1856
|
+
isVirtualClick: v,
|
|
1820
1857
|
calculateMoveDistance: $,
|
|
1821
1858
|
clearMouseTracking: M
|
|
1822
1859
|
};
|
|
1823
|
-
},
|
|
1860
|
+
}, Dt = ({
|
|
1824
1861
|
debugConfig: r,
|
|
1825
1862
|
dragState: t,
|
|
1826
1863
|
customDrag: n,
|
|
1827
1864
|
dragModes: l,
|
|
1828
|
-
columnPanels:
|
|
1829
|
-
dragOverPosition:
|
|
1830
|
-
originalPanelPosition:
|
|
1865
|
+
columnPanels: o,
|
|
1866
|
+
dragOverPosition: i,
|
|
1867
|
+
originalPanelPosition: u,
|
|
1831
1868
|
setDragState: c,
|
|
1832
|
-
setDragOverPosition:
|
|
1833
|
-
setOriginalPanelPosition:
|
|
1834
|
-
performPanelMove:
|
|
1869
|
+
setDragOverPosition: h,
|
|
1870
|
+
setOriginalPanelPosition: S,
|
|
1871
|
+
performPanelMove: v,
|
|
1835
1872
|
showMousePosition: $,
|
|
1836
1873
|
updateMousePosition: M,
|
|
1837
|
-
resetDragState:
|
|
1838
|
-
handlePlaceholderDragEnter:
|
|
1839
|
-
handlePlaceholderDragLeave:
|
|
1874
|
+
resetDragState: y,
|
|
1875
|
+
handlePlaceholderDragEnter: a,
|
|
1876
|
+
handlePlaceholderDragLeave: j,
|
|
1877
|
+
scale: D = 1
|
|
1840
1878
|
}) => {
|
|
1841
|
-
const
|
|
1842
|
-
|
|
1843
|
-
const
|
|
1844
|
-
|
|
1845
|
-
const z =
|
|
1879
|
+
const R = F(r);
|
|
1880
|
+
R.current = r;
|
|
1881
|
+
const L = F(o);
|
|
1882
|
+
L.current = o;
|
|
1883
|
+
const z = F(t);
|
|
1846
1884
|
z.current = t;
|
|
1847
|
-
const
|
|
1848
|
-
|
|
1849
|
-
const
|
|
1850
|
-
|
|
1851
|
-
const
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1885
|
+
const Z = F(i);
|
|
1886
|
+
Z.current = i;
|
|
1887
|
+
const Y = F(u);
|
|
1888
|
+
Y.current = u;
|
|
1889
|
+
const q = F(D);
|
|
1890
|
+
q.current = D;
|
|
1891
|
+
const O = F(new Be(Pe));
|
|
1892
|
+
K(() => {
|
|
1893
|
+
const x = document.querySelector("main.max-w-full.flex-1.overflow-auto");
|
|
1894
|
+
x && O.current.setScrollElement(x);
|
|
1855
1895
|
}, []);
|
|
1856
|
-
const
|
|
1857
|
-
(
|
|
1896
|
+
const _ = w(
|
|
1897
|
+
(x, p) => {
|
|
1858
1898
|
if (n.isActive) {
|
|
1859
|
-
|
|
1899
|
+
E(R.current, 2, "カスタムドラッグアクティブ中 - 通常ドラッグを無効化:", p), x.preventDefault();
|
|
1860
1900
|
return;
|
|
1861
1901
|
}
|
|
1862
|
-
if (l[
|
|
1863
|
-
|
|
1902
|
+
if (l[p] === "custom") {
|
|
1903
|
+
E(R.current, 2, "カスタムドラッグモード - 通常ドラッグを無効化:", p), x.preventDefault();
|
|
1864
1904
|
return;
|
|
1865
1905
|
}
|
|
1866
|
-
|
|
1867
|
-
const
|
|
1868
|
-
let
|
|
1869
|
-
for (let
|
|
1870
|
-
const
|
|
1906
|
+
E(R.current, 1, "ドラッグ開始:", p);
|
|
1907
|
+
const m = Object.keys(L.current);
|
|
1908
|
+
let b = null;
|
|
1909
|
+
for (let N = 0; N < m.length; N++) {
|
|
1910
|
+
const T = m[N], A = L.current[T].indexOf(p);
|
|
1871
1911
|
if (A !== -1) {
|
|
1872
|
-
|
|
1912
|
+
b = { columnIndex: N, panelIndex: A };
|
|
1873
1913
|
break;
|
|
1874
1914
|
}
|
|
1875
1915
|
}
|
|
1876
|
-
|
|
1916
|
+
if (S(b), x.dataTransfer) {
|
|
1917
|
+
x.dataTransfer.setData("text/plain", p), x.dataTransfer.effectAllowed = "move";
|
|
1918
|
+
const N = q.current;
|
|
1919
|
+
if (N < 1) {
|
|
1920
|
+
const T = x.currentTarget.closest("[data-panel-id]") ?? x.currentTarget, A = T.getBoundingClientRect(), H = T.offsetWidth, s = T.offsetHeight, d = T.cloneNode(!0);
|
|
1921
|
+
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";
|
|
1922
|
+
const k = document.createElement("div");
|
|
1923
|
+
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());
|
|
1924
|
+
}
|
|
1925
|
+
}
|
|
1926
|
+
$(x.clientX, x.clientY), requestAnimationFrame(() => {
|
|
1877
1927
|
c({
|
|
1878
1928
|
isDragging: !0,
|
|
1879
|
-
draggedPanel:
|
|
1929
|
+
draggedPanel: p,
|
|
1880
1930
|
dragOverColumn: null
|
|
1881
1931
|
});
|
|
1882
1932
|
});
|
|
1883
1933
|
},
|
|
1884
|
-
[l, n.isActive,
|
|
1885
|
-
),
|
|
1886
|
-
|
|
1887
|
-
}, [
|
|
1888
|
-
(
|
|
1889
|
-
if (
|
|
1890
|
-
M(
|
|
1891
|
-
const
|
|
1892
|
-
if (
|
|
1893
|
-
const
|
|
1894
|
-
if (
|
|
1895
|
-
const A = parseInt(
|
|
1896
|
-
|
|
1934
|
+
[l, n.isActive, S, $, c]
|
|
1935
|
+
), f = w(() => {
|
|
1936
|
+
E(R.current, 1, "ドラッグ終了"), O.current.stop(), y();
|
|
1937
|
+
}, [y]), g = w(
|
|
1938
|
+
(x, p) => {
|
|
1939
|
+
if (x.preventDefault(), x.dataTransfer.dropEffect = "move", !z.current.isDragging) return;
|
|
1940
|
+
M(x.clientX, x.clientY), p !== z.current.dragOverColumn && c((N) => ({ ...N, dragOverColumn: p }));
|
|
1941
|
+
const m = document.elementFromPoint(x.clientX, x.clientY), b = m?.closest("[data-placeholder-index]");
|
|
1942
|
+
if (b) {
|
|
1943
|
+
const N = b.getAttribute("data-placeholder-index"), T = b.getAttribute("data-placeholder-column");
|
|
1944
|
+
if (N && T) {
|
|
1945
|
+
const A = parseInt(N, 10), H = parseInt(T, 10);
|
|
1946
|
+
a(H, A);
|
|
1897
1947
|
}
|
|
1898
1948
|
} else
|
|
1899
|
-
|
|
1949
|
+
m?.closest("[data-drop-zone]") || j();
|
|
1900
1950
|
},
|
|
1901
|
-
[M, c,
|
|
1902
|
-
),
|
|
1903
|
-
(
|
|
1904
|
-
|
|
1905
|
-
const
|
|
1906
|
-
|
|
1907
|
-
draggedPanel:
|
|
1908
|
-
targetColumn:
|
|
1909
|
-
insertPosition: `カラム${
|
|
1910
|
-
}),
|
|
1951
|
+
[M, c, a, j]
|
|
1952
|
+
), C = w(
|
|
1953
|
+
(x, p) => {
|
|
1954
|
+
x.preventDefault();
|
|
1955
|
+
const m = x.dataTransfer.getData("text/plain"), b = Z.current;
|
|
1956
|
+
m && b && (E(R.current, 1, "🎯 ドロップ完了:", {
|
|
1957
|
+
draggedPanel: m,
|
|
1958
|
+
targetColumn: p,
|
|
1959
|
+
insertPosition: `カラム${b.columnIndex} - 位置${b.insertIndex}`
|
|
1960
|
+
}), v(m, p, b.insertIndex), h(null), f());
|
|
1911
1961
|
},
|
|
1912
|
-
[
|
|
1913
|
-
),
|
|
1914
|
-
(
|
|
1915
|
-
const
|
|
1916
|
-
|
|
1962
|
+
[v, h, f]
|
|
1963
|
+
), W = w(
|
|
1964
|
+
(x) => {
|
|
1965
|
+
const p = x.currentTarget, m = x.relatedTarget;
|
|
1966
|
+
m && p.contains(m) || (h(null), c((b) => ({ ...b, dragOverColumn: null })));
|
|
1917
1967
|
},
|
|
1918
|
-
[
|
|
1968
|
+
[h, c]
|
|
1919
1969
|
);
|
|
1920
|
-
return
|
|
1921
|
-
const
|
|
1922
|
-
z.current.isDragging && (M(
|
|
1970
|
+
return K(() => {
|
|
1971
|
+
const x = (p) => {
|
|
1972
|
+
z.current.isDragging && (M(p.clientX, p.clientY), O.current.update(p.clientX, p.clientY));
|
|
1923
1973
|
};
|
|
1924
1974
|
if (t.isDragging)
|
|
1925
|
-
return document.addEventListener("dragover",
|
|
1926
|
-
document.removeEventListener("dragover",
|
|
1975
|
+
return document.addEventListener("dragover", x), () => {
|
|
1976
|
+
document.removeEventListener("dragover", x), O.current.stop();
|
|
1927
1977
|
};
|
|
1928
|
-
}, [t.isDragging, M]),
|
|
1929
|
-
|
|
1978
|
+
}, [t.isDragging, M]), K(() => () => {
|
|
1979
|
+
O.current.stop();
|
|
1930
1980
|
}, []), {
|
|
1931
|
-
handleDragStart:
|
|
1932
|
-
handleDragEnd:
|
|
1933
|
-
handleDragOverWithInsert:
|
|
1934
|
-
handleDropWithInsert:
|
|
1935
|
-
handleColumnDragLeave:
|
|
1981
|
+
handleDragStart: _,
|
|
1982
|
+
handleDragEnd: f,
|
|
1983
|
+
handleDragOverWithInsert: g,
|
|
1984
|
+
handleDropWithInsert: C,
|
|
1985
|
+
handleColumnDragLeave: W
|
|
1936
1986
|
};
|
|
1937
|
-
},
|
|
1938
|
-
const [
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1987
|
+
}, Nt = (r, t = 1) => {
|
|
1988
|
+
const [n, l] = te(r), [o, i] = te({}), u = F({}), c = F(null), h = F({ x: 0, y: 0 }), S = F(t);
|
|
1989
|
+
S.current = t;
|
|
1990
|
+
const v = w((L) => document.querySelector(`[data-panel-id="${L}"]`), []), $ = w(
|
|
1991
|
+
(L, z) => {
|
|
1992
|
+
const Z = z.getBoundingClientRect(), Y = window.getComputedStyle(z), q = {
|
|
1993
|
+
width: Math.round(Z.width),
|
|
1994
|
+
height: Math.round(Z.height),
|
|
1995
|
+
x: Math.round(Z.left),
|
|
1996
|
+
y: Math.round(Z.top),
|
|
1997
|
+
minHeight: Y.minHeight || "auto",
|
|
1998
|
+
maxHeight: Y.maxHeight || "none"
|
|
1999
|
+
}, O = u.current[L];
|
|
2000
|
+
(!O || Object.keys(q).some((_) => O[_] !== q[_])) && (u.current[L] = q, i((_) => ({
|
|
2001
|
+
..._,
|
|
2002
|
+
[L]: q
|
|
1951
2003
|
})));
|
|
1952
2004
|
},
|
|
1953
2005
|
[]
|
|
1954
2006
|
// setPanelSizes は React の state セッターなので依存配列に含める必要はありません
|
|
1955
|
-
),
|
|
1956
|
-
(
|
|
1957
|
-
const
|
|
1958
|
-
|
|
2007
|
+
), M = w(
|
|
2008
|
+
(L) => {
|
|
2009
|
+
const z = v(L);
|
|
2010
|
+
z && $(L, z);
|
|
1959
2011
|
},
|
|
1960
|
-
[
|
|
1961
|
-
),
|
|
1962
|
-
(
|
|
1963
|
-
|
|
2012
|
+
[v, $]
|
|
2013
|
+
), y = w(
|
|
2014
|
+
(L, z) => {
|
|
2015
|
+
z && requestAnimationFrame(() => $(L, z));
|
|
1964
2016
|
},
|
|
1965
|
-
[
|
|
1966
|
-
),
|
|
1967
|
-
(
|
|
1968
|
-
const
|
|
1969
|
-
if (!
|
|
1970
|
-
const
|
|
1971
|
-
|
|
2017
|
+
[$]
|
|
2018
|
+
), a = w(
|
|
2019
|
+
(L, z, Z) => {
|
|
2020
|
+
const Y = v(L);
|
|
2021
|
+
if (!Y || c.current) return;
|
|
2022
|
+
const q = S.current, O = Y.getBoundingClientRect(), _ = Y.cloneNode(!0);
|
|
2023
|
+
_.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 };
|
|
1972
2024
|
},
|
|
1973
|
-
[
|
|
1974
|
-
),
|
|
1975
|
-
if (
|
|
1976
|
-
const
|
|
1977
|
-
|
|
2025
|
+
[v]
|
|
2026
|
+
), j = w((L, z) => {
|
|
2027
|
+
if (c.current) {
|
|
2028
|
+
const Z = L - h.current.x, Y = z - h.current.y;
|
|
2029
|
+
c.current.style.transform = `translate(${Z}px, ${Y}px) scale(${S.current * 1.05})`;
|
|
1978
2030
|
}
|
|
1979
|
-
}, []),
|
|
1980
|
-
|
|
1981
|
-
}, []),
|
|
1982
|
-
|
|
1983
|
-
...
|
|
1984
|
-
[
|
|
2031
|
+
}, []), D = w(() => {
|
|
2032
|
+
c.current && (c.current.remove(), c.current = null);
|
|
2033
|
+
}, []), R = w((L) => {
|
|
2034
|
+
l((z) => ({
|
|
2035
|
+
...z,
|
|
2036
|
+
[L]: !z[L]
|
|
1985
2037
|
}));
|
|
1986
2038
|
}, []);
|
|
1987
2039
|
return {
|
|
1988
2040
|
// State / 状態
|
|
1989
|
-
panelVisibility:
|
|
1990
|
-
panelSizes:
|
|
2041
|
+
panelVisibility: n,
|
|
2042
|
+
panelSizes: o,
|
|
1991
2043
|
// State update functions / 状態更新関数
|
|
1992
|
-
setPanelVisibility:
|
|
1993
|
-
setPanelSizes:
|
|
1994
|
-
setPanelRef:
|
|
1995
|
-
updatePanelSize:
|
|
1996
|
-
togglePanelVisibility:
|
|
2044
|
+
setPanelVisibility: l,
|
|
2045
|
+
setPanelSizes: i,
|
|
2046
|
+
setPanelRef: y,
|
|
2047
|
+
updatePanelSize: M,
|
|
2048
|
+
togglePanelVisibility: R,
|
|
1997
2049
|
// Utility functions / ユーティリティ関数
|
|
1998
|
-
getPanelElement:
|
|
2050
|
+
getPanelElement: v,
|
|
1999
2051
|
// Functions for drag image management / ドラッグイメージ管理用の関数
|
|
2000
|
-
createDragImage:
|
|
2001
|
-
updateDragImagePosition:
|
|
2002
|
-
removeDragImage:
|
|
2052
|
+
createDragImage: a,
|
|
2053
|
+
updateDragImagePosition: j,
|
|
2054
|
+
removeDragImage: D
|
|
2003
2055
|
};
|
|
2004
|
-
},
|
|
2005
|
-
const
|
|
2006
|
-
|
|
2007
|
-
const [
|
|
2008
|
-
|
|
2009
|
-
const
|
|
2056
|
+
}, _t = ({ initialColumnPanels: r, initialPanelVisibility: t, initialDragModes: n = {}, debugConfig: l, onPanelMove: o, onDragModeChange: i, onColumnPanelsChange: u, scale: c = 1 }) => {
|
|
2057
|
+
const h = F(l);
|
|
2058
|
+
h.current = l;
|
|
2059
|
+
const [S, v] = te(r), [$, M] = te(n), y = F(S);
|
|
2060
|
+
y.current = S;
|
|
2061
|
+
const a = jt(), j = Pt(), D = Nt(t, c), R = F({
|
|
2010
2062
|
mousemove: null,
|
|
2011
2063
|
mouseup: null
|
|
2012
|
-
}),
|
|
2013
|
-
const
|
|
2014
|
-
for (let
|
|
2015
|
-
const
|
|
2016
|
-
if (
|
|
2017
|
-
return { columnIndex:
|
|
2064
|
+
}), L = w((m) => {
|
|
2065
|
+
const b = Object.keys(y.current), N = bt(b, ae);
|
|
2066
|
+
for (let T = 0; T < N.length; T++) {
|
|
2067
|
+
const A = N[T], H = y.current[A]?.indexOf(m) ?? -1;
|
|
2068
|
+
if (H !== -1)
|
|
2069
|
+
return { columnIndex: T, panelIndex: H };
|
|
2018
2070
|
}
|
|
2019
2071
|
return null;
|
|
2020
|
-
}, []), z =
|
|
2021
|
-
(
|
|
2022
|
-
|
|
2023
|
-
const
|
|
2024
|
-
if (!
|
|
2025
|
-
return console.error("Source column not found for panel:",
|
|
2026
|
-
if (!
|
|
2027
|
-
return console.error("Target column not found:",
|
|
2028
|
-
if (
|
|
2029
|
-
const
|
|
2030
|
-
|
|
2072
|
+
}, []), z = w(
|
|
2073
|
+
(m, b, N) => {
|
|
2074
|
+
E(h.current, 1, "🔄 パネル移動実行:", m, "→", b, "@", N), v((T) => {
|
|
2075
|
+
const A = { ...T }, H = Object.keys(A).find((s) => A[s].includes(m));
|
|
2076
|
+
if (!H)
|
|
2077
|
+
return console.error("Source column not found for panel:", m), T;
|
|
2078
|
+
if (!A[b])
|
|
2079
|
+
return console.error("Target column not found:", b), T;
|
|
2080
|
+
if (H === b) {
|
|
2081
|
+
const s = [...A[H]], d = s.indexOf(m), [k] = s.splice(d, 1), X = d < N ? N - 1 : N;
|
|
2082
|
+
s.splice(X, 0, k), A[b] = s;
|
|
2031
2083
|
} else {
|
|
2032
|
-
|
|
2033
|
-
const
|
|
2034
|
-
|
|
2084
|
+
A[H] = A[H].filter((d) => d !== m);
|
|
2085
|
+
const s = [...A[b]];
|
|
2086
|
+
s.splice(N, 0, m), A[b] = s;
|
|
2035
2087
|
}
|
|
2036
|
-
if (
|
|
2037
|
-
|
|
2038
|
-
}),
|
|
2039
|
-
const
|
|
2040
|
-
|
|
2041
|
-
|
|
2088
|
+
if (E(h.current, 1, "✅ パネル移動完了:", m, "→", b), u && requestAnimationFrame(() => {
|
|
2089
|
+
u(A);
|
|
2090
|
+
}), o) {
|
|
2091
|
+
const s = Object.keys(T).find((d) => T[d].includes(m));
|
|
2092
|
+
s && requestAnimationFrame(() => {
|
|
2093
|
+
o(m, s, b, N);
|
|
2042
2094
|
});
|
|
2043
2095
|
}
|
|
2044
|
-
return
|
|
2096
|
+
return A;
|
|
2045
2097
|
});
|
|
2046
2098
|
},
|
|
2047
|
-
[
|
|
2048
|
-
),
|
|
2049
|
-
(
|
|
2050
|
-
if (!(
|
|
2051
|
-
const
|
|
2052
|
-
if (
|
|
2053
|
-
|
|
2099
|
+
[u, o]
|
|
2100
|
+
), Z = w(
|
|
2101
|
+
(m, b) => {
|
|
2102
|
+
if (!(a.dragState.isDragging || a.customDrag.isActive)) return;
|
|
2103
|
+
const N = a.originalPanelPosition;
|
|
2104
|
+
if (N && N.columnIndex === m && (N.panelIndex === b || N.panelIndex + 1 === b)) {
|
|
2105
|
+
E(h.current, 1, `元の位置への挿入をスキップ: カラム${m}, 位置${b}`);
|
|
2054
2106
|
return;
|
|
2055
2107
|
}
|
|
2056
|
-
const
|
|
2057
|
-
(!
|
|
2108
|
+
const T = a.dragOverPosition;
|
|
2109
|
+
(!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 })));
|
|
2058
2110
|
},
|
|
2059
|
-
[
|
|
2060
|
-
),
|
|
2061
|
-
(
|
|
2062
|
-
if (
|
|
2063
|
-
if (
|
|
2064
|
-
|
|
2065
|
-
else if (
|
|
2066
|
-
const
|
|
2067
|
-
if (
|
|
2068
|
-
const
|
|
2069
|
-
|
|
2111
|
+
[a]
|
|
2112
|
+
), Y = w(
|
|
2113
|
+
(m, b, N) => {
|
|
2114
|
+
if (a.dragState.isDragging || a.customDrag.isActive) {
|
|
2115
|
+
if (a.customDrag.isActive)
|
|
2116
|
+
E(h.current, 1, "🚫 カスタムドラッグ - プレースホルダーリーブ: ハイライトを解除します。"), a.setDragOverPosition(null);
|
|
2117
|
+
else if (a.dragState.isDragging && m && b !== void 0 && N !== void 0) {
|
|
2118
|
+
const T = a.dragOverPosition;
|
|
2119
|
+
if (T && T.columnIndex === b && T.insertIndex === N) {
|
|
2120
|
+
const A = m.currentTarget, H = m.relatedTarget;
|
|
2121
|
+
H && A.contains(H) || (E(h.current, 1, `ノーマルドラッグ - プレースホルダーリーブ: カラム${b}, 位置${N}。ハイライトを解除します。`), a.setDragOverPosition(null));
|
|
2070
2122
|
}
|
|
2071
2123
|
}
|
|
2072
2124
|
}
|
|
2073
2125
|
},
|
|
2074
|
-
[
|
|
2075
|
-
),
|
|
2076
|
-
debugConfig:
|
|
2077
|
-
dragState:
|
|
2078
|
-
customDrag:
|
|
2079
|
-
clickState:
|
|
2080
|
-
dragModes:
|
|
2081
|
-
isMouseDown:
|
|
2082
|
-
originalPanelPosition:
|
|
2083
|
-
dragOverPosition:
|
|
2084
|
-
setCustomDrag:
|
|
2085
|
-
setDragState:
|
|
2086
|
-
setDragOverPosition:
|
|
2087
|
-
setOriginalPanelPosition:
|
|
2088
|
-
setClickState:
|
|
2089
|
-
setIsMouseDown:
|
|
2090
|
-
findPanelPosition:
|
|
2126
|
+
[a]
|
|
2127
|
+
), q = wt({
|
|
2128
|
+
debugConfig: h.current,
|
|
2129
|
+
dragState: a.dragState,
|
|
2130
|
+
customDrag: a.customDrag,
|
|
2131
|
+
clickState: a.clickState,
|
|
2132
|
+
dragModes: $,
|
|
2133
|
+
isMouseDown: a.isMouseDown,
|
|
2134
|
+
originalPanelPosition: a.originalPanelPosition,
|
|
2135
|
+
dragOverPosition: a.dragOverPosition,
|
|
2136
|
+
setCustomDrag: a.setCustomDrag,
|
|
2137
|
+
setDragState: a.setDragState,
|
|
2138
|
+
setDragOverPosition: a.setDragOverPosition,
|
|
2139
|
+
setOriginalPanelPosition: a.setOriginalPanelPosition,
|
|
2140
|
+
setClickState: a.setClickState,
|
|
2141
|
+
setIsMouseDown: a.setIsMouseDown,
|
|
2142
|
+
findPanelPosition: L,
|
|
2091
2143
|
performPanelMove: z,
|
|
2092
|
-
showMousePosition:
|
|
2093
|
-
updateMousePosition:
|
|
2094
|
-
recordMouseDown:
|
|
2095
|
-
recordClickPosition:
|
|
2096
|
-
isVirtualClick:
|
|
2097
|
-
calculateMoveDistance:
|
|
2098
|
-
clearMouseTracking:
|
|
2099
|
-
resetDragState:
|
|
2100
|
-
resetClickState:
|
|
2144
|
+
showMousePosition: j.showMousePosition,
|
|
2145
|
+
updateMousePosition: j.updateMousePosition,
|
|
2146
|
+
recordMouseDown: j.recordMouseDown,
|
|
2147
|
+
recordClickPosition: j.recordClickPosition,
|
|
2148
|
+
isVirtualClick: j.isVirtualClick,
|
|
2149
|
+
calculateMoveDistance: j.calculateMoveDistance,
|
|
2150
|
+
clearMouseTracking: j.clearMouseTracking,
|
|
2151
|
+
resetDragState: a.resetDragState,
|
|
2152
|
+
resetClickState: a.resetClickState,
|
|
2101
2153
|
createDragImage: D.createDragImage,
|
|
2102
2154
|
updateDragImagePosition: D.updateDragImagePosition,
|
|
2103
2155
|
removeDragImage: D.removeDragImage,
|
|
2104
|
-
handlePlaceholderDragEnter:
|
|
2105
|
-
handlePlaceholderDragLeave:
|
|
2106
|
-
}),
|
|
2107
|
-
debugConfig:
|
|
2108
|
-
dragState:
|
|
2109
|
-
customDrag:
|
|
2110
|
-
dragModes:
|
|
2111
|
-
columnPanels:
|
|
2112
|
-
dragOverPosition:
|
|
2113
|
-
originalPanelPosition:
|
|
2114
|
-
setDragState:
|
|
2115
|
-
setDragOverPosition:
|
|
2116
|
-
setOriginalPanelPosition:
|
|
2156
|
+
handlePlaceholderDragEnter: Z,
|
|
2157
|
+
handlePlaceholderDragLeave: Y
|
|
2158
|
+
}), O = Dt({
|
|
2159
|
+
debugConfig: h.current,
|
|
2160
|
+
dragState: a.dragState,
|
|
2161
|
+
customDrag: a.customDrag,
|
|
2162
|
+
dragModes: $,
|
|
2163
|
+
columnPanels: S,
|
|
2164
|
+
dragOverPosition: a.dragOverPosition,
|
|
2165
|
+
originalPanelPosition: a.originalPanelPosition,
|
|
2166
|
+
setDragState: a.setDragState,
|
|
2167
|
+
setDragOverPosition: a.setDragOverPosition,
|
|
2168
|
+
setOriginalPanelPosition: a.setOriginalPanelPosition,
|
|
2117
2169
|
performPanelMove: z,
|
|
2118
|
-
showMousePosition:
|
|
2119
|
-
updateMousePosition:
|
|
2120
|
-
resetDragState:
|
|
2121
|
-
handlePlaceholderDragEnter:
|
|
2122
|
-
handlePlaceholderDragLeave:
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2170
|
+
showMousePosition: j.showMousePosition,
|
|
2171
|
+
updateMousePosition: j.updateMousePosition,
|
|
2172
|
+
resetDragState: a.resetDragState,
|
|
2173
|
+
handlePlaceholderDragEnter: Z,
|
|
2174
|
+
handlePlaceholderDragLeave: Y,
|
|
2175
|
+
scale: c
|
|
2176
|
+
}), _ = w((m) => {
|
|
2177
|
+
R.current.mousemove && R.current.mousemove(m);
|
|
2178
|
+
}, []), f = w((m) => {
|
|
2179
|
+
R.current.mouseup && R.current.mouseup(m);
|
|
2127
2180
|
}, []);
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
}), [
|
|
2131
|
-
const
|
|
2132
|
-
if (
|
|
2133
|
-
const
|
|
2134
|
-
|
|
2181
|
+
K(() => (E(h.current, 1, "🔧 グローバルイベントリスナー初期化 - refベース管理開始"), document.addEventListener("mousemove", _), document.addEventListener("mouseup", f), () => {
|
|
2182
|
+
E(h.current, 1, "🔴 グローバルイベントリスナー終了 - refベース管理終了"), document.removeEventListener("mousemove", _), document.removeEventListener("mouseup", f);
|
|
2183
|
+
}), [_, f]), K(() => {
|
|
2184
|
+
const m = !a.clickState.isClicked && Object.entries($).some(([, N]) => N === "custom"), b = a.clickState.isClicked && a.clickState.panelId;
|
|
2185
|
+
if (m || b) {
|
|
2186
|
+
const N = m ? "パターン1(仮想クリック検出)" : "パターン2,3(ドラッグ準備)";
|
|
2187
|
+
E(h.current, 1, `🔧 イベントハンドラー設定開始: ${N}`), R.current.mousemove = q.handleGlobalMouseMove, R.current.mouseup = q.handleGlobalMouseUp;
|
|
2135
2188
|
} else
|
|
2136
|
-
|
|
2137
|
-
}, [
|
|
2138
|
-
const
|
|
2139
|
-
(
|
|
2140
|
-
const
|
|
2141
|
-
|
|
2189
|
+
a.customDrag.isActive || a.dragState.isDragging || (R.current.mousemove = null, R.current.mouseup = null);
|
|
2190
|
+
}, [a.clickState.isClicked, a.clickState.panelId, $, a.customDrag.isActive, a.dragState.isDragging, q.handleGlobalMouseMove, q.handleGlobalMouseUp]);
|
|
2191
|
+
const g = w(
|
|
2192
|
+
(m, b) => {
|
|
2193
|
+
const N = m.touches[0], T = m.currentTarget;
|
|
2194
|
+
a.setTouchDragState({
|
|
2142
2195
|
isTouchDragging: !0,
|
|
2143
|
-
startX:
|
|
2144
|
-
startY:
|
|
2145
|
-
currentX:
|
|
2146
|
-
currentY:
|
|
2147
|
-
draggedElement:
|
|
2148
|
-
}),
|
|
2196
|
+
startX: N.clientX,
|
|
2197
|
+
startY: N.clientY,
|
|
2198
|
+
currentX: N.clientX,
|
|
2199
|
+
currentY: N.clientY,
|
|
2200
|
+
draggedElement: T
|
|
2201
|
+
}), a.setDragState({
|
|
2149
2202
|
isDragging: !0,
|
|
2150
|
-
draggedPanel:
|
|
2203
|
+
draggedPanel: b,
|
|
2151
2204
|
dragOverColumn: null
|
|
2152
2205
|
});
|
|
2153
2206
|
},
|
|
2154
|
-
[
|
|
2155
|
-
),
|
|
2156
|
-
(
|
|
2157
|
-
if (!
|
|
2158
|
-
|
|
2159
|
-
const
|
|
2160
|
-
|
|
2161
|
-
...
|
|
2162
|
-
currentX:
|
|
2163
|
-
currentY:
|
|
2207
|
+
[a]
|
|
2208
|
+
), C = w(
|
|
2209
|
+
(m) => {
|
|
2210
|
+
if (!a.touchDragState.isTouchDragging) return;
|
|
2211
|
+
m.preventDefault();
|
|
2212
|
+
const b = m.touches[0];
|
|
2213
|
+
a.setTouchDragState((N) => ({
|
|
2214
|
+
...N,
|
|
2215
|
+
currentX: b.clientX,
|
|
2216
|
+
currentY: b.clientY
|
|
2164
2217
|
}));
|
|
2165
2218
|
},
|
|
2166
|
-
[
|
|
2167
|
-
),
|
|
2168
|
-
(
|
|
2169
|
-
|
|
2219
|
+
[a.touchDragState.isTouchDragging, a]
|
|
2220
|
+
), W = w(
|
|
2221
|
+
(m) => {
|
|
2222
|
+
a.touchDragState.isTouchDragging && (a.setTouchDragState({
|
|
2170
2223
|
isTouchDragging: !1,
|
|
2171
2224
|
startX: 0,
|
|
2172
2225
|
startY: 0,
|
|
2173
2226
|
currentX: 0,
|
|
2174
2227
|
currentY: 0,
|
|
2175
2228
|
draggedElement: null
|
|
2176
|
-
}),
|
|
2229
|
+
}), O.handleDragEnd());
|
|
2177
2230
|
},
|
|
2178
|
-
[
|
|
2179
|
-
),
|
|
2180
|
-
(
|
|
2181
|
-
|
|
2182
|
-
const
|
|
2183
|
-
if (
|
|
2231
|
+
[a.touchDragState.isTouchDragging, a, O]
|
|
2232
|
+
), x = w(
|
|
2233
|
+
(m) => {
|
|
2234
|
+
E(h.current, 1, "🔄 toggleDragMode called:", { panelId: m }), M((b) => {
|
|
2235
|
+
const T = (b[m] || "normal") === "normal" ? "custom" : "normal", A = { ...b, [m]: T };
|
|
2236
|
+
if (i)
|
|
2184
2237
|
try {
|
|
2185
|
-
|
|
2186
|
-
} catch (
|
|
2187
|
-
console.error("🔄 Error in onDragModeChange:",
|
|
2238
|
+
i(m, T);
|
|
2239
|
+
} catch (H) {
|
|
2240
|
+
console.error("🔄 Error in onDragModeChange:", H);
|
|
2188
2241
|
}
|
|
2189
|
-
return
|
|
2242
|
+
return A;
|
|
2190
2243
|
});
|
|
2191
2244
|
},
|
|
2192
|
-
[
|
|
2193
|
-
),
|
|
2194
|
-
|
|
2245
|
+
[i]
|
|
2246
|
+
), p = w((m, b) => {
|
|
2247
|
+
m.stopPropagation(), E(h.current, 2, "パネルサイズ情報クリック:", b);
|
|
2195
2248
|
}, []);
|
|
2196
2249
|
return {
|
|
2197
2250
|
// 状態
|
|
2198
|
-
columnPanels:
|
|
2251
|
+
columnPanels: S,
|
|
2199
2252
|
panelVisibility: D.panelVisibility,
|
|
2200
|
-
dragModes:
|
|
2201
|
-
dragState:
|
|
2202
|
-
dragOverPosition:
|
|
2203
|
-
originalPanelPosition:
|
|
2204
|
-
touchDragState:
|
|
2205
|
-
customDrag:
|
|
2206
|
-
clickState:
|
|
2207
|
-
mousePosition:
|
|
2253
|
+
dragModes: $,
|
|
2254
|
+
dragState: a.dragState,
|
|
2255
|
+
dragOverPosition: a.dragOverPosition,
|
|
2256
|
+
originalPanelPosition: a.originalPanelPosition,
|
|
2257
|
+
touchDragState: a.touchDragState,
|
|
2258
|
+
customDrag: a.customDrag,
|
|
2259
|
+
clickState: a.clickState,
|
|
2260
|
+
mousePosition: j.mousePosition,
|
|
2208
2261
|
panelSizes: D.panelSizes,
|
|
2209
2262
|
// 状態更新関数
|
|
2210
|
-
setColumnPanels:
|
|
2263
|
+
setColumnPanels: v,
|
|
2211
2264
|
setPanelVisibility: D.setPanelVisibility,
|
|
2212
|
-
setDragModes:
|
|
2265
|
+
setDragModes: M,
|
|
2213
2266
|
setPanelRef: D.setPanelRef,
|
|
2214
2267
|
// イベントハンドラー
|
|
2215
|
-
handleDragStart:
|
|
2216
|
-
handleDragEnd:
|
|
2217
|
-
handleMouseDown:
|
|
2218
|
-
handleTouchStart:
|
|
2219
|
-
handleTouchMove:
|
|
2220
|
-
handleTouchEnd:
|
|
2221
|
-
handlePlaceholderDragEnter:
|
|
2222
|
-
handlePlaceholderDragLeave:
|
|
2223
|
-
handleDragOverWithInsert:
|
|
2224
|
-
handleDropWithInsert:
|
|
2225
|
-
handleColumnDragLeave:
|
|
2226
|
-
handlePanelSizeInfoClick:
|
|
2268
|
+
handleDragStart: O.handleDragStart,
|
|
2269
|
+
handleDragEnd: O.handleDragEnd,
|
|
2270
|
+
handleMouseDown: q.handleMouseDown,
|
|
2271
|
+
handleTouchStart: g,
|
|
2272
|
+
handleTouchMove: C,
|
|
2273
|
+
handleTouchEnd: W,
|
|
2274
|
+
handlePlaceholderDragEnter: Z,
|
|
2275
|
+
handlePlaceholderDragLeave: Y,
|
|
2276
|
+
handleDragOverWithInsert: O.handleDragOverWithInsert,
|
|
2277
|
+
handleDropWithInsert: O.handleDropWithInsert,
|
|
2278
|
+
handleColumnDragLeave: O.handleColumnDragLeave,
|
|
2279
|
+
handlePanelSizeInfoClick: p,
|
|
2227
2280
|
// ユーティリティ関数
|
|
2228
|
-
toggleDragMode:
|
|
2229
|
-
findPanelPosition:
|
|
2281
|
+
toggleDragMode: x,
|
|
2282
|
+
findPanelPosition: L
|
|
2230
2283
|
};
|
|
2231
|
-
},
|
|
2232
|
-
const [
|
|
2233
|
-
|
|
2284
|
+
}, Wt = ({ minColumnWidth: r = 350, defaultColumns: t = 3, maxColumns: n = 6, minColumns: l = 1, currentColumnWidths: o = {} } = {}) => {
|
|
2285
|
+
const [i, u] = te(0), c = F(0), h = F(null), [S, v] = te(!1), $ = F(t);
|
|
2286
|
+
K(() => {
|
|
2234
2287
|
if (typeof window > "u")
|
|
2235
2288
|
return;
|
|
2236
|
-
const
|
|
2237
|
-
const
|
|
2238
|
-
return
|
|
2239
|
-
},
|
|
2240
|
-
|
|
2241
|
-
const
|
|
2242
|
-
|
|
2289
|
+
const a = () => {
|
|
2290
|
+
const D = window.visualViewport?.width ?? 0, R = document?.documentElement?.clientWidth ?? 0, L = document?.body?.clientWidth ?? 0, z = window.innerWidth ?? 0;
|
|
2291
|
+
return R > 0 ? Math.floor(R) : D > 0 ? Math.floor(D) : L > 0 ? Math.floor(L) : Math.floor(z);
|
|
2292
|
+
}, j = () => {
|
|
2293
|
+
h.current !== null && cancelAnimationFrame(h.current), h.current = requestAnimationFrame(() => {
|
|
2294
|
+
const D = a();
|
|
2295
|
+
h.current = null, D !== 0 && (Math.abs(c.current - D) < 2 || (c.current = D, u(D)));
|
|
2243
2296
|
});
|
|
2244
2297
|
};
|
|
2245
|
-
return
|
|
2246
|
-
|
|
2298
|
+
return j(), window.addEventListener("resize", j), window.addEventListener("orientationchange", j), window.visualViewport?.addEventListener("resize", j), () => {
|
|
2299
|
+
h.current !== null && cancelAnimationFrame(h.current), window.removeEventListener("resize", j), window.removeEventListener("orientationchange", j), window.visualViewport?.removeEventListener("resize", j);
|
|
2247
2300
|
};
|
|
2248
2301
|
}, []);
|
|
2249
|
-
const M =
|
|
2250
|
-
if (!
|
|
2302
|
+
const M = Xe(() => {
|
|
2303
|
+
if (!S || i === 0)
|
|
2251
2304
|
return $.current = t, t;
|
|
2252
|
-
const
|
|
2253
|
-
let
|
|
2254
|
-
if (
|
|
2255
|
-
const
|
|
2256
|
-
|
|
2305
|
+
const a = Math.max(i - 64, 0), j = 24, D = Object.values(o);
|
|
2306
|
+
let R;
|
|
2307
|
+
if (D.length > 0) {
|
|
2308
|
+
const L = D.reduce((Y, q) => Y + q, 0) / D.length, z = Math.max(r, L);
|
|
2309
|
+
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));
|
|
2257
2310
|
} else
|
|
2258
|
-
|
|
2259
|
-
return
|
|
2260
|
-
}, [
|
|
2261
|
-
|
|
2311
|
+
R = Math.floor((a + j) / (r + j));
|
|
2312
|
+
return R = Math.max(l, Math.min(n, R)), $.current === R ? $.current : ($.current = R, R);
|
|
2313
|
+
}, [S, i, t, r, n, l, o]), y = w(() => {
|
|
2314
|
+
v((a) => !a);
|
|
2262
2315
|
}, []);
|
|
2263
2316
|
return {
|
|
2264
2317
|
responsiveColumnCount: M,
|
|
2265
|
-
isResponsiveMode:
|
|
2266
|
-
screenWidth:
|
|
2267
|
-
toggleResponsiveMode:
|
|
2318
|
+
isResponsiveMode: S,
|
|
2319
|
+
screenWidth: i,
|
|
2320
|
+
toggleResponsiveMode: y
|
|
2268
2321
|
};
|
|
2269
|
-
},
|
|
2322
|
+
}, 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: [
|
|
2270
2323
|
/* @__PURE__ */ e.jsxs(
|
|
2271
2324
|
"button",
|
|
2272
2325
|
{
|
|
2273
2326
|
type: "button",
|
|
2274
|
-
onClick:
|
|
2327
|
+
onClick: o,
|
|
2275
2328
|
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"}`,
|
|
2276
2329
|
title: r ? "レスポンシブモードを無効化" : "レスポンシブモードを有効化",
|
|
2277
2330
|
children: [
|
|
2278
|
-
r ? /* @__PURE__ */ e.jsx(
|
|
2331
|
+
r ? /* @__PURE__ */ e.jsx(ct, { className: "h-3 w-3" }) : /* @__PURE__ */ e.jsx(ut, { className: "h-3 w-3" }),
|
|
2279
2332
|
/* @__PURE__ */ e.jsx("span", { children: r ? "レスポンシブ" : "固定" })
|
|
2280
2333
|
]
|
|
2281
2334
|
}
|
|
@@ -2292,7 +2345,7 @@ const ct = ({
|
|
|
2292
2345
|
] }),
|
|
2293
2346
|
t !== n && /* @__PURE__ */ e.jsx("span", { className: "text-orange-600", children: "(変更予定)" })
|
|
2294
2347
|
] })
|
|
2295
|
-
] }),
|
|
2348
|
+
] }), Yt = {
|
|
2296
2349
|
showDebugPanel: !1,
|
|
2297
2350
|
showMousePosition: !1,
|
|
2298
2351
|
showPanelSizes: !1,
|
|
@@ -2301,37 +2354,37 @@ const ct = ({
|
|
|
2301
2354
|
logLevel: 0
|
|
2302
2355
|
};
|
|
2303
2356
|
export {
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2357
|
+
$t as ColumnControlPanel,
|
|
2358
|
+
Ot as ColumnInsertPanel,
|
|
2359
|
+
ae as DEFAULT_COLUMN_ID_CONFIG,
|
|
2360
|
+
Yt as DEFAULT_DEBUG_CONFIG,
|
|
2361
|
+
Pe as DEFAULT_EDGE_SCROLL_CONFIG,
|
|
2362
|
+
Tt as DebugControlPanel,
|
|
2363
|
+
Ct as DragDropLayout,
|
|
2364
|
+
Ue as DropZoneDebugOverlay,
|
|
2365
|
+
Be as EdgeScrollManager,
|
|
2366
|
+
Ie as InsertPlaceholder,
|
|
2367
|
+
ft as PanelSizeDisplay,
|
|
2368
|
+
kt as ResizableColumn,
|
|
2369
|
+
qe as ResizeHandle,
|
|
2370
|
+
zt as ResponsiveControl,
|
|
2371
|
+
Ye as calculateScrollVector,
|
|
2372
|
+
Rt as createColumnIdMapping,
|
|
2373
|
+
E as debugLog,
|
|
2374
|
+
we as generateColumnId,
|
|
2375
|
+
Ve as generateColumnIds,
|
|
2376
|
+
Mt as getNextColumnId,
|
|
2377
|
+
At as isValidColumnId,
|
|
2378
|
+
vt as normalizeColumnPanels,
|
|
2379
|
+
je as parseColumnId,
|
|
2380
|
+
yt as performScroll,
|
|
2381
|
+
bt as sortColumnIds,
|
|
2382
|
+
Lt as useColumnLayout,
|
|
2383
|
+
wt as useCustomDragHandlers,
|
|
2384
|
+
_t as useDragDropColumns,
|
|
2385
|
+
jt as useDragDropState,
|
|
2386
|
+
Pt as useMouseTracking,
|
|
2387
|
+
Dt as useNormalDragHandlers,
|
|
2388
|
+
Nt as usePanelManagement,
|
|
2389
|
+
Wt as useResponsiveColumns
|
|
2337
2390
|
};
|