@dynamix-layout/solid 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js DELETED
@@ -1,926 +0,0 @@
1
- import { spread as O, mergeProps as _, insert as y, memo as ee, effect as le, setStyleProperty as Fe, createComponent as p, setAttribute as W, template as I, style as Ae, use as Ee, delegateEvents as Be } from "solid-js/web";
2
- import { DynamixLayoutCore as C, Node as w, setElementRect as ve, placeTabbar as je, getTabbarPlacement as De, createFrameScheduler as Ue, getTabBodyRect as qe, getNavbarDropPreview as Ke, getRootSplitPreview as Xe, isSameDropPreview as Ve, getTabsetDropPreview as Ye } from "@dynamix-layout/core";
3
- import { onMount as $e, splitProps as Je, createMemo as ze, onCleanup as Se, createSignal as G, For as Q } from "solid-js";
4
- var A = I("<div>"), Ze = I("<div><div style=display:flex;align-items:center;gap:4px;height:100%>"), Ge = I('<svg xmlns=http://www.w3.org/2000/svg width=24 height=24 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round class="lucide lucide-grip-vertical size-2.5"><circle cx=9 cy=12 r=1></circle><circle cx=9 cy=5 r=1></circle><circle cx=9 cy=19 r=1></circle><circle cx=15 cy=12 r=1></circle><circle cx=15 cy=5 r=1></circle><circle cx=15 cy=19 r=1>'), Qe = I('<svg xmlns=http://www.w3.org/2000/svg width=24 height=24 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round style=transform:rotate(90deg)><circle cx=9 cy=12 r=1></circle><circle cx=9 cy=5 r=1></circle><circle cx=9 cy=19 r=1></circle><circle cx=15 cy=12 r=1></circle><circle cx=15 cy=5 r=1></circle><circle cx=15 cy=19 r=1>'), et = I('<svg xmlns=http://www.w3.org/2000/svg width=14 height=14 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path>'), tt = I("<div class=DefaultTabsetToolbar>"), pe = I("<button type=button class=DefaultTabsetToolbarButton>");
5
- const rt = (e) => (() => {
6
- var a = A();
7
- return O(a, _(e, {
8
- get class() {
9
- return `DefaultWrapTabLabel ${e.class || ""}`;
10
- },
11
- get "data-state"() {
12
- return e.active ? "active" : "inactive";
13
- },
14
- get style() {
15
- return {
16
- "align-self": "center",
17
- padding: "4px 6px",
18
- "box-sizing": "border-box",
19
- "font-size": "14px",
20
- "border-radius": "4px",
21
- ...e.style
22
- };
23
- }
24
- }), !1, !0), y(a, () => e.children), a;
25
- })(), nt = (e) => (() => {
26
- var a = A();
27
- return O(a, _(e, {
28
- get class() {
29
- return `DefaultWrapTabBody hide-scrollbar ${e.class || ""}`;
30
- },
31
- get style() {
32
- return {
33
- "box-sizing": "border-box",
34
- height: "100%",
35
- width: "100%",
36
- display: "grid",
37
- overflow: "auto",
38
- "scrollbar-width": "none",
39
- "-ms-overflow-style": "none",
40
- ...e.style
41
- };
42
- }
43
- }), !1, !0), y(a, () => e.children), a;
44
- })(), at = (e) => (() => {
45
- var a = A();
46
- return O(a, _(e, {
47
- get class() {
48
- return `DefaultWrapTabHead hide-scrollbar ${e.class || ""}`;
49
- },
50
- get style() {
51
- return {
52
- display: "grid",
53
- "grid-auto-flow": "column",
54
- "justify-content": "start",
55
- "align-items": "center",
56
- gap: "6px",
57
- "padding-left": "8px",
58
- width: "100%",
59
- "box-sizing": "border-box",
60
- height: "100%",
61
- "place-items": "self-start",
62
- overflow: "auto",
63
- "background-color": "#dfdfdf",
64
- "scrollbar-width": "none",
65
- "-ms-overflow-style": "none",
66
- ...e.style
67
- };
68
- }
69
- }), !1, !0), y(a, () => e.children), a;
70
- })(), ot = (e) => (() => {
71
- var a = A();
72
- return O(a, _(e, {
73
- get class() {
74
- return `DefaultWrapTabPanel ${e.class || ""}`;
75
- },
76
- get style() {
77
- return {
78
- display: "grid",
79
- "align-items": "center",
80
- "place-items": "self-start",
81
- "box-sizing": "border-box",
82
- position: "absolute",
83
- "border-radius": "8px",
84
- ...e.style
85
- };
86
- }
87
- }), !1, !0), y(a, () => e.children), a;
88
- })(), it = (e) => (() => {
89
- var a = A();
90
- return O(a, _(e, {
91
- get class() {
92
- return `DefaultHoverElement ${e.class || ""}`;
93
- },
94
- get style() {
95
- return {
96
- display: "flex",
97
- "justify-content": "center",
98
- "align-items": "center",
99
- opacity: 0.7,
100
- position: "absolute",
101
- "box-sizing": "border-box",
102
- "font-weight": "bold",
103
- "pointer-events": "none",
104
- "background-color": "rgba(0, 175, 249, 0.5)",
105
- "border-radius": "10px",
106
- transition: "all 0.2s ease",
107
- border: "2px dashed rgb(0, 196, 42)",
108
- ...e.style
109
- };
110
- }
111
- }), !1, !0), y(a, () => e.children), a;
112
- })(), lt = (e) => (() => {
113
- var a = Ze(), h = a.firstChild;
114
- return O(a, _(e, {
115
- get class() {
116
- return `DefaultSliderElement ${e.class || ""}`;
117
- },
118
- get style() {
119
- return {
120
- width: "100%",
121
- height: "100%",
122
- position: "absolute",
123
- "box-sizing": "border-box",
124
- "background-color": "white",
125
- "z-index": 9,
126
- cursor: "grab",
127
- ...e.style
128
- };
129
- }
130
- }), !1, !0), y(h, (() => {
131
- var s = ee(() => !e.direction);
132
- return () => s() ? Ge() : Qe();
133
- })()), y(a, () => e.children, null), le((s) => Fe(h, "flex-direction", e.direction ? "column" : "row")), a;
134
- })(), dt = (e) => {
135
- const [a, h] = Je(e, ["area", "size", "gap", "class", "style", "children"]), s = ze(() => {
136
- const o = a.size || {
137
- h: "20%",
138
- w: "6px"
139
- }, u = a.gap || "0px", c = {};
140
- return a.area === "left" ? (Object.assign(c, {
141
- "border-top-right-radius": "16px",
142
- "border-bottom-right-radius": "16px",
143
- height: o.h,
144
- left: u,
145
- width: o.w
146
- }), c.top = `calc(50% - ${o.h} / 2)`) : a.area === "top" ? (Object.assign(c, {
147
- "border-bottom-left-radius": "16px",
148
- "border-bottom-right-radius": "16px",
149
- width: o.h,
150
- top: u,
151
- height: o.w
152
- }), c.left = `calc(50% - ${o.h} / 2)`) : a.area === "right" ? (Object.assign(c, {
153
- "border-top-left-radius": "16px",
154
- "border-bottom-left-radius": "16px",
155
- height: o.h,
156
- right: u,
157
- width: o.w
158
- }), c.top = `calc(50% - ${o.h} / 2)`) : a.area === "bottom" && (Object.assign(c, {
159
- "border-top-left-radius": "16px",
160
- "border-top-right-radius": "16px",
161
- width: o.h,
162
- bottom: u,
163
- height: o.w
164
- }), c.left = `calc(50% - ${o.h} / 2)`), c;
165
- });
166
- return (() => {
167
- var o = A();
168
- return O(o, _(h, {
169
- get class() {
170
- return `RootSplitterHoverEl ${a.class || ""}`;
171
- },
172
- get style() {
173
- return {
174
- position: "absolute",
175
- "z-index": -1,
176
- display: "none",
177
- "box-sizing": "border-box",
178
- "background-color": "#0081f9",
179
- cursor: "grab",
180
- ...a.style,
181
- ...s()
182
- };
183
- }
184
- }), !1, !0), y(o, () => a.children), o;
185
- })();
186
- }, Te = (e) => (() => {
187
- var a = et(), h = a.firstChild;
188
- return le((s) => {
189
- var o = e.rotate ? {
190
- transform: `rotate(${e.rotate}deg)`
191
- } : {}, u = e.path;
192
- return s.e = Ae(a, o, s.e), u !== s.t && W(h, "d", s.t = u), s;
193
- }, {
194
- e: void 0,
195
- t: void 0
196
- }), a;
197
- })(), st = "M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3", ct = "M8 3v3a2 2 0 0 1-2 2H3M21 8h-3a2 2 0 0 1-2-2V3M3 16h3a2 2 0 0 1 2 2v3M16 21v-3a2 2 0 0 1 2-2h3", ut = "m15 18-6-6 6-6", gt = (e) => {
198
- const a = () => (e.rowIsHorizontal ? 0 : 90) + (e.folded ? 180 : 0), h = () => e.rotated ? -90 : 0;
199
- let s;
200
- return $e(() => {
201
- const o = s?.parentElement;
202
- if (!s || !o) return;
203
- const u = () => {
204
- s.style.transform = `translateX(${o.scrollLeft}px)`;
205
- };
206
- u(), o.addEventListener("scroll", u, {
207
- passive: !0
208
- }), Se(() => o.removeEventListener("scroll", u));
209
- }), (() => {
210
- var o = tt();
211
- o.$$dblclick = (c) => c.stopPropagation();
212
- var u = s;
213
- return typeof u == "function" ? Ee(u, o) : s = o, y(o, (() => {
214
- var c = ee(() => !!e.showMaximize);
215
- return () => c() && (() => {
216
- var v = pe();
217
- return v.$$click = () => e.onToggleMaximize(), y(v, p(Te, {
218
- get path() {
219
- return e.maximized ? ct : st;
220
- },
221
- get rotate() {
222
- return h();
223
- }
224
- })), le((f) => {
225
- var T = e.maximized ? "Restore" : "Maximize", k = e.maximized, z = e.maximized ? "Restore (⌥ +)" : "Maximize (⌥ +)";
226
- return T !== f.e && W(v, "aria-label", f.e = T), k !== f.t && W(v, "aria-pressed", f.t = k), z !== f.a && W(v, "title", f.a = z), f;
227
- }, {
228
- e: void 0,
229
- t: void 0,
230
- a: void 0
231
- }), v;
232
- })();
233
- })(), null), y(o, (() => {
234
- var c = ee(() => !!e.showFold);
235
- return () => c() && (() => {
236
- var v = pe();
237
- return v.$$click = () => e.onToggleFold(), y(v, p(Te, {
238
- path: ut,
239
- get rotate() {
240
- return a() + h();
241
- }
242
- })), le((f) => {
243
- var T = e.folded ? "Unfold" : "Fold", k = !e.folded, z = e.folded ? "Unfold (⌥ -)" : "Fold (⌥ -)";
244
- return T !== f.e && W(v, "aria-label", f.e = T), k !== f.t && W(v, "aria-expanded", f.t = k), z !== f.a && W(v, "title", f.a = z), f;
245
- }, {
246
- e: void 0,
247
- t: void 0,
248
- a: void 0
249
- }), v;
250
- })();
251
- })(), null), o;
252
- })();
253
- };
254
- Be(["dblclick", "click"]);
255
- const ft = ({
256
- tabOutput: e,
257
- rootId: a,
258
- layoutTree: h,
259
- updateJSON: s,
260
- dimensions: o,
261
- tabHeadHeight: u,
262
- enableTabbar: c,
263
- bondWidth: v,
264
- minTabHeight: f,
265
- minTabWidth: T,
266
- sliderUpdateTimeout: k,
267
- windowResizeTimeout: z,
268
- disableSliderTimeout: B,
269
- disableResizeTimeout: j,
270
- keyboardShortcuts: U = !0,
271
- enableDoubleClickMaximize: de = !0
272
- }) => {
273
- const q = /* @__PURE__ */ new Map(), te = /* @__PURE__ */ new Map(), K = /* @__PURE__ */ new Map(), re = /* @__PURE__ */ new Map(), D = { current: void 0 }, X = [], [V, F] = G(
274
- h
275
- ), [se, ne] = G(
276
- /* @__PURE__ */ new Map()
277
- ), [ce, ae] = G(
278
- /* @__PURE__ */ new Map()
279
- ), [ue, $] = G(!1);
280
- let S = null;
281
- const [ge, fe] = G(!1), i = {
282
- src: void 0,
283
- des: void 0,
284
- area: void 0,
285
- drag: !1
286
- }, R = {
287
- sliderId: void 0,
288
- isSliding: !1
289
- }, oe = c ? Math.max(f, u) : f, M = new C({
290
- tabs: e.keys,
291
- tree: V(),
292
- minW: T,
293
- minH: oe,
294
- bond: v,
295
- uqid: a,
296
- tabsIds: e.name,
297
- collapsedSize: c ? u : oe
298
- }), Y = (t) => {
299
- const r = new Map(t);
300
- ne(r);
301
- }, J = (t) => {
302
- const r = new Map(t);
303
- ae(r);
304
- }, b = () => {
305
- const t = c ? u : 0;
306
- w.cache.tabOpts.get().forEach((r, d) => {
307
- const l = re.get(d);
308
- if (!l) return;
309
- const g = qe(r.nodDims, t);
310
- ve(l, g);
311
- const we = r.nodOpen && !r.nodFold && !r.nodHidden && g.h > 0;
312
- l.style.display = we ? "block" : "none";
313
- });
314
- }, N = w.cache.nodOpts.onChange(
315
- (t) => {
316
- t.forEach((r, d) => {
317
- const l = K.get(d);
318
- l && ve(l, r.nodDims);
319
- const g = q.get(d);
320
- g && c && (g.toggleAttribute("data-dx-hidden", !!r.nodHidden), je(
321
- g,
322
- De(r, u)
323
- ));
324
- });
325
- }
326
- ), n = w.cache.tabOpts.onChange(() => b()), m = w.cache.bndOpts.onChange(
327
- (t) => {
328
- t.forEach((r, d) => {
329
- const l = te.get(d);
330
- l && (ve(l, r.nodDims), l.toggleAttribute("data-dx-hidden", !!r.nodHidden), l.style.pointerEvents = r.nodLocked ? "none" : "");
331
- });
332
- }
333
- ), x = Ue(
334
- ({ id: t, point: r }) => M.updateSlider(
335
- t,
336
- r,
337
- B,
338
- k
339
- )
340
- ), Z = (t) => {
341
- const r = R.sliderId;
342
- !R.isSliding || !r || x.schedule({ id: r, point: { x: t.clientX, y: t.clientY } });
343
- }, P = (t) => {
344
- if (!R.isSliding) return;
345
- x.flush();
346
- const r = t.currentTarget;
347
- R.isSliding = !1, R.sliderId = void 0, $(!1), s && s(C._root.toJSON()), r.releasePointerCapture(t.pointerId), r.removeEventListener("pointermove", Z), r.removeEventListener("pointerup", P), r.removeEventListener("pointercancel", P);
348
- }, E = (t) => {
349
- t.preventDefault();
350
- const r = t.currentTarget;
351
- R.isSliding = !0, R.sliderId = r.id, $(!0), r.setPointerCapture(t.pointerId), r.addEventListener("pointermove", Z), r.addEventListener("pointerup", P), r.addEventListener("pointercancel", P);
352
- };
353
- let H = {};
354
- const Me = (t, r, d) => {
355
- if (!D.current || !i || !d)
356
- return null;
357
- const l = Ye(
358
- d.getBoundingClientRect(),
359
- t,
360
- r
361
- );
362
- ie(l), i.des = d, i.area = l.area;
363
- }, Ce = (t) => {
364
- t.preventDefault(), t.stopPropagation(), t.dataTransfer && (t.dataTransfer.dropEffect = "move");
365
- const r = t.currentTarget;
366
- if (r.hasAttribute("data-rotated")) {
367
- if (!D.current || !i) return;
368
- const g = r.getBoundingClientRect();
369
- ie({
370
- area: "contain",
371
- left: g.left,
372
- top: g.top,
373
- width: g.width,
374
- height: g.height
375
- }), i.des = r, i.area = "contain";
376
- return;
377
- }
378
- const d = Array.from(
379
- r.querySelectorAll(
380
- ':scope > [data-type="tab"]'
381
- )
382
- );
383
- if (!D.current || !i) return;
384
- const l = Ke(
385
- r.getBoundingClientRect(),
386
- d.map((g) => g.getBoundingClientRect()),
387
- t.clientX,
388
- t.clientY
389
- );
390
- l && (ie(l), i.des = d[l.index], i.area = l.area);
391
- }, ke = (t) => {
392
- t.preventDefault(), t.stopPropagation(), t.dataTransfer && (t.dataTransfer.dropEffect = "move");
393
- const r = t.currentTarget, { area: d, uid: l } = r.dataset;
394
- if (!d || !l || !D.current || !i)
395
- return;
396
- const g = d;
397
- i.des = r, i.area = g, ie(Xe(o(), g));
398
- }, ie = (t) => {
399
- const r = D.current;
400
- !r || Ve(H, t) || (Object.assign(r.style, {
401
- left: `${t.left}px`,
402
- top: `${t.top}px`,
403
- width: `${t.width}px`,
404
- height: `${t.height}px`,
405
- display: "block",
406
- zIndex: "100"
407
- }), H = t);
408
- };
409
- let me = null;
410
- const he = () => {
411
- Y(w.cache.nodOpts.get()), J(w.cache.bndOpts.get()), b(), s && s(C._root.toJSON());
412
- }, be = (t) => {
413
- M.toggleMaximize(t) && he();
414
- }, ye = (t) => {
415
- M.toggleCollapse(t) && he();
416
- }, Re = (t) => {
417
- const r = t.target.closest("[data-uid]"), d = r?.dataset.uid ? w.cache.mapElem.get(r.dataset.uid) : void 0;
418
- d instanceof w && (d.type === "tabset" ? me = d.unId : d.type === "tab" && d.host && (me = d.host.unId));
419
- }, Ne = (t) => {
420
- const r = t.currentTarget.dataset.uid;
421
- de && r && be(r);
422
- }, xe = (t) => {
423
- if (!U || !t.altKey || t.ctrlKey || t.metaKey) return;
424
- const r = me ?? M.maximizedId;
425
- r && (t.code === "Equal" || t.code === "NumpadAdd" ? (t.preventDefault(), be(r)) : (t.code === "Minus" || t.code === "NumpadSubtract") && (t.preventDefault(), ye(r)));
426
- }, He = (t) => {
427
- if (t.stopPropagation(), M.restore() && he(), $(!0), document.body.style.cursor = "move", t.currentTarget) {
428
- if (t.dataTransfer) {
429
- t.dataTransfer.effectAllowed = "move";
430
- const r = document.createElement("div");
431
- r.style.width = "1px", r.style.height = "1px", r.style.backgroundColor = "transparent", r.style.position = "absolute", r.style.top = "-1000px", document.body.appendChild(r), t.dataTransfer.setDragImage(r, 0, 0), setTimeout(() => {
432
- r.parentNode && r.parentNode.removeChild(r);
433
- }, 0);
434
- }
435
- X.forEach((r) => {
436
- r && (r.style.display = "block", r.style.zIndex = "99");
437
- }), K.forEach((r) => {
438
- r && (r.style.display = "block", r.style.zIndex = "95");
439
- }), i.src = t.currentTarget, i.drag = !0;
440
- }
441
- }, Ie = (t) => {
442
- if (t.preventDefault(), t.stopPropagation(), document.body.style.cursor = "move", t.dataTransfer && (t.dataTransfer.dropEffect = "move"), !i?.src)
443
- return;
444
- const r = t.currentTarget, d = t.clientX, l = t.clientY;
445
- S && cancelAnimationFrame(S), S = requestAnimationFrame(() => {
446
- Me(d, l, r);
447
- });
448
- }, Oe = () => {
449
- if (document.body.style.cursor = "default", X.forEach((t) => {
450
- t && (t.style.display = "none", t.style.zIndex = "-1");
451
- }), S && (cancelAnimationFrame(S), S = null), D.current && (D.current.style.display = "none", D.current.style.zIndex = "-1"), H = {}, i.drag = !1, !i?.src || !i?.des) {
452
- i.area = void 0, i.src = void 0, i.des = void 0, $(!1);
453
- return;
454
- }
455
- if (i.src === i.des) {
456
- i.area = void 0, i.src = void 0, i.des = void 0, $(!1);
457
- return;
458
- }
459
- if (i.src && i.des) {
460
- if (!i.area) {
461
- console.warn("No area specified for drag and drop"), $(!1);
462
- return;
463
- }
464
- if (!M.updateTree(
465
- i.src.dataset.uid,
466
- i.des.dataset.uid,
467
- i.area || "contain"
468
- )) {
469
- console.warn("Failed to update layout tree"), $(!1);
470
- return;
471
- }
472
- requestAnimationFrame(() => {
473
- Y(w.cache.nodOpts.get()), J(w.cache.bndOpts.get()), b(), s && s(C._root.toJSON());
474
- });
475
- }
476
- i.area = void 0, i.src = void 0, i.des = void 0, $(!1);
477
- }, _e = (t) => {
478
- t.preventDefault(), t.stopPropagation(), t.dataTransfer && (t.dataTransfer.dropEffect = "move");
479
- }, Pe = (t) => {
480
- t.preventDefault(), t.stopPropagation();
481
- }, Le = (t) => {
482
- t.preventDefault(), t.stopPropagation(), t.dataTransfer && t.dataTransfer.getData("text/plain");
483
- }, We = (t) => {
484
- const r = t.currentTarget, d = r.dataset.uid;
485
- if (!d) return;
486
- const l = w.cache.mapElem.get(d);
487
- if (!(l instanceof w)) {
488
- console.warn(`Element with uid ${d} is not a Node instance`);
489
- return;
490
- }
491
- if (!l || !l.host || !l.host.unId) {
492
- console.warn(`Node with uid ${d} not found in mapNode`);
493
- return;
494
- }
495
- if (l.host.open == l.name) {
496
- console.warn(`Node ${l.name} is already open`);
497
- return;
498
- }
499
- const g = w.cache.nodOpts.get().get(l.host.unId);
500
- if (!g || g.nodOpen && l?.open)
501
- return;
502
- l.host.open = l.name, g.nodOpen = l.name, g.nodKids?.forEach((L) => {
503
- L.nodOpen = L.nodName === l.name;
504
- }), r?.parentElement?.childNodes?.forEach((L) => {
505
- L instanceof HTMLDivElement && L.dataset.uid !== d ? L.dataset.state = "inactive" : L.dataset.state = "active";
506
- }), b();
507
- };
508
- return $e(() => {
509
- const t = (d) => {
510
- M.updateDimension(
511
- o(),
512
- d,
513
- z
514
- );
515
- };
516
- t(!0);
517
- const r = () => t(j ?? !1);
518
- window.addEventListener("resize", r), window.addEventListener("keydown", xe), Y(w.cache.nodOpts.get()), J(w.cache.bndOpts.get()), b(), s && s(C._root.toJSON()), Se(() => {
519
- window.removeEventListener("resize", r), window.removeEventListener("keydown", xe), N(), m(), n(), x.cancel(), S && cancelAnimationFrame(S);
520
- });
521
- }), {
522
- tabsets: se,
523
- sliders: ce,
524
- tabsetsRef: q,
525
- panelsRef: K,
526
- tabsRef: re,
527
- slidersRef: te,
528
- layoutJSON: V,
529
- layoutInstance: M,
530
- hoverElementRef: D,
531
- rootSplitHoverEl: X,
532
- dragging: ue,
533
- isUpdating: ge,
534
- setIsUpdating: fe,
535
- setDragging: $,
536
- setTabsets: ne,
537
- setSliders: ae,
538
- setLayoutJSON: F,
539
- onDragStart: He,
540
- onDragOver: Ie,
541
- onDragEnd: Oe,
542
- onDragEnter: _e,
543
- onDragLeave: Pe,
544
- onDrop: Le,
545
- onPointerDown: E,
546
- updateActiveTab: We,
547
- handleRootSplit: ke,
548
- handleNavbarDragOver: Ce,
549
- toggleMaximize: be,
550
- toggleCollapse: ye,
551
- onRootPointerDown: Re,
552
- onTabbarDoubleClick: Ne
553
- };
554
- };
555
- var mt = I("<div>"), ht = I('<div class="flex items-center justify-center h-full"><span class=text-gray-500>No content');
556
- const bt = (e) => {
557
- const a = [], h = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map();
558
- for (const [o, u] of e) {
559
- const c = crypto.randomUUID();
560
- a.push(o), h.set(o, {
561
- uqid: c,
562
- name: o,
563
- node: u
564
- }), s.set(o, c);
565
- }
566
- return {
567
- keys: a,
568
- maps: h,
569
- name: s
570
- };
571
- }, wt = (e) => {
572
- const a = ze(() => bt(e.tabs));
573
- let h;
574
- const s = () => {
575
- const b = h;
576
- if (!b) return {
577
- w: 0,
578
- h: 0,
579
- x: 0,
580
- y: 0
581
- };
582
- const N = b.getBoundingClientRect(), n = e.pad || {
583
- t: 0,
584
- b: 0,
585
- l: 0,
586
- r: 0
587
- };
588
- return {
589
- w: N.width - (n.l + n.r),
590
- h: N.height - (n.t + n.b),
591
- x: N.left + n.l,
592
- y: N.top + n.t
593
- };
594
- }, {
595
- tabsetsRef: o,
596
- slidersRef: u,
597
- sliders: c,
598
- tabsets: v,
599
- hoverElementRef: f,
600
- onDragEnd: T,
601
- onDragOver: k,
602
- onDragStart: z,
603
- onDragEnter: B,
604
- onDragLeave: j,
605
- onDrop: U,
606
- dragging: de,
607
- panelsRef: q,
608
- onPointerDown: te,
609
- handleNavbarDragOver: K,
610
- updateActiveTab: re,
611
- rootSplitHoverEl: D,
612
- handleRootSplit: X,
613
- tabsRef: V,
614
- isUpdating: F,
615
- toggleMaximize: se,
616
- toggleCollapse: ne,
617
- onRootPointerDown: ce,
618
- onTabbarDoubleClick: ae
619
- } = ft({
620
- tabOutput: a(),
621
- rootId: e.rootId || "dynamix-layout-root",
622
- updateJSON: e.updateJSON,
623
- enableTabbar: e.enableTabbar === void 0 ? !0 : e.enableTabbar,
624
- layoutTree: e.layoutTree,
625
- tabHeadHeight: e.tabHeadHeight || C._minH,
626
- dimensions: s,
627
- sliderUpdateTimeout: e.sliderUpdateTimeout || 2,
628
- windowResizeTimeout: e.windowResizeTimeout || 2,
629
- bondWidth: e.bondWidth || C._bond,
630
- minTabHeight: e.minTabHeight || C._minH,
631
- minTabWidth: e.minTabWidth || C._minW,
632
- disableSliderTimeout: e.disableSliderTimeout === void 0 ? !0 : e.disableSliderTimeout,
633
- disableResizeTimeout: e.disableResizeTimeout === void 0 ? !0 : e.disableResizeTimeout,
634
- hoverElementStyles: e.hoverElementStyles,
635
- keyboardShortcuts: e.keyboardShortcuts ?? !0,
636
- enableDoubleClickMaximize: e.enableDoubleClickMaximize ?? !0
637
- }), ue = e.WrapTabPanel || ot, $ = e.WrapTabHead || at, S = e.WrapTabLabel || rt, ge = e.WrapTabBody || nt, fe = e.SliderElement || lt, i = e.HoverElement || it, R = e.TabsetToolbar || gt, oe = e.tabHeadHeight || C._minH, M = e.enableTabbar ?? !0, Y = e.enableMaximize ?? !0, J = (e.enableCollapse ?? !0) && M;
638
- return (() => {
639
- var b = mt(), N = h;
640
- return typeof N == "function" ? Ee(N, b) : h = b, O(b, _({
641
- get id() {
642
- return e.rootId || "dynamix-layout-root";
643
- }
644
- }, e, {
645
- get "data-testid"() {
646
- return e.rootId || "dynamix-layout-root";
647
- },
648
- get class() {
649
- return de() ? "is-dragging" : "";
650
- },
651
- onPointerDown: ce,
652
- get style() {
653
- return {
654
- position: "relative",
655
- width: "100%",
656
- height: "100%",
657
- overflow: "hidden",
658
- ...e.style
659
- };
660
- }
661
- }), !1, !0), y(b, p(Q, {
662
- get each() {
663
- return Array.from(v().values());
664
- },
665
- children: (n) => {
666
- const m = De(n, oe), x = Y && !!n.nodMaximizable, Z = J && !!n.nodFoldable && !n.nodMaxd, P = x || Z;
667
- return [p(ue, {
668
- ref: (E) => {
669
- const H = n.uidNode;
670
- E ? q.set(H, E) : q.delete(H);
671
- },
672
- onDragEnd: T,
673
- onDragOver: k,
674
- onDragEnter: B,
675
- onDragLeave: j,
676
- onDrop: U,
677
- get "data-uid"() {
678
- return n.uidNode;
679
- },
680
- get "data-type"() {
681
- return n.typNode;
682
- },
683
- get class() {
684
- return "hide-scrollbar DefaultWrapTabPanel " + (e.tabPanelElementClass || "");
685
- },
686
- get style() {
687
- return {
688
- position: "absolute",
689
- ...e.tabPanelElementStyles,
690
- width: `${n.nodDims.w}px`,
691
- height: `${n.nodDims.h}px`,
692
- left: `${n.nodDims.x}px`,
693
- top: `${n.nodDims.y}px`,
694
- "background-color": "transparent"
695
- };
696
- }
697
- }), p($, {
698
- get draggable() {
699
- return !F();
700
- },
701
- get "data-uid"() {
702
- return n.uidNode;
703
- },
704
- "data-type": "tabset",
705
- "data-tabbar": "",
706
- get "data-folded"() {
707
- return n.nodFold ? "" : void 0;
708
- },
709
- get "data-maximized"() {
710
- return n.nodMaxd ? "" : void 0;
711
- },
712
- get "data-dx-hidden"() {
713
- return n.nodHidden ? "" : void 0;
714
- },
715
- get "data-rotated"() {
716
- return m.rotated ? "" : void 0;
717
- },
718
- onDblClick: ae,
719
- onDragOver: K,
720
- onDragStart: z,
721
- onDragEnd: T,
722
- onDragEnter: B,
723
- onDragLeave: j,
724
- onDrop: U,
725
- ref: (E) => {
726
- const H = n.uidNode;
727
- E ? o.set(H, E) : o.delete(H);
728
- },
729
- get class() {
730
- return "hide-scrollbar " + (e.tabHeadElementClass || "");
731
- },
732
- get style() {
733
- return {
734
- ...e.tabHeadElementStyles,
735
- position: "absolute",
736
- "z-index": 99,
737
- width: `${m.rect.w}px`,
738
- height: `${m.rect.h}px`,
739
- left: `${m.rect.x}px`,
740
- top: `${m.rect.y}px`,
741
- "transform-origin": "0 0",
742
- ...m.rotated ? {
743
- transform: "rotate(90deg)"
744
- } : {},
745
- ...P ? {
746
- "padding-right": "64px"
747
- } : {},
748
- cursor: F() ? "wait" : "pointer"
749
- };
750
- },
751
- get children() {
752
- return [p(Q, {
753
- get each() {
754
- return n.nodKids;
755
- },
756
- children: (E) => p(S, {
757
- get "data-uid"() {
758
- return E.uidNode;
759
- },
760
- "data-type": "tab",
761
- onDragStart: z,
762
- onDragEnd: T,
763
- get draggable() {
764
- return !F();
765
- },
766
- get active() {
767
- return !!E.nodOpen;
768
- },
769
- get class() {
770
- return "hide-scrollbar " + (e.tabLabelElementClass || "");
771
- },
772
- get style() {
773
- return {
774
- cursor: F() ? "wait" : "pointer",
775
- ...e.tabLabelElementStyles
776
- };
777
- },
778
- onClick: re,
779
- get children() {
780
- return ee(() => !!e.tabNames)() && e.tabNames.get(E.nodName) || E.nodName;
781
- }
782
- })
783
- }), ee(() => P && p(R, {
784
- get maximized() {
785
- return !!n.nodMaxd;
786
- },
787
- get folded() {
788
- return !!n.nodFold;
789
- },
790
- get rotated() {
791
- return m.rotated;
792
- },
793
- get rowIsHorizontal() {
794
- return n.nodeDir === !1;
795
- },
796
- showMaximize: x,
797
- showFold: Z,
798
- onToggleMaximize: () => se(n.uidNode),
799
- onToggleFold: () => ne(n.uidNode)
800
- }))];
801
- }
802
- })];
803
- }
804
- }), null), y(b, p(Q, {
805
- get each() {
806
- return a().keys;
807
- },
808
- children: (n) => {
809
- const m = a().maps.get(n)?.uqid;
810
- return p(ge, {
811
- id: m,
812
- draggable: !1,
813
- "data-uid": m,
814
- get class() {
815
- return "hide-scrollbar " + (e.tabBodyElementClass || "");
816
- },
817
- get style() {
818
- return {
819
- position: "absolute",
820
- "z-index": 90,
821
- "overscroll-behavior": "contain",
822
- ...e.tabBodyElementStyles
823
- };
824
- },
825
- ref: (x) => {
826
- m && (x ? V.set(m, x) : V.delete(m));
827
- },
828
- get children() {
829
- return a().maps.get(n)?.node || ht();
830
- }
831
- });
832
- }
833
- }), null), y(b, p(Q, {
834
- get each() {
835
- return Array.from(c().values());
836
- },
837
- children: (n) => p(fe, {
838
- get id() {
839
- return n.uidNode;
840
- },
841
- get "data-uid"() {
842
- return n.uidNode;
843
- },
844
- get "data-dx-hidden"() {
845
- return n.nodHidden ? "" : void 0;
846
- },
847
- get direction() {
848
- return n.nodeDir;
849
- },
850
- onPointerDown: te,
851
- get class() {
852
- return "hide-scrollbar " + (e.sliderElementClass || "");
853
- },
854
- ref: (m) => {
855
- const x = n.uidNode;
856
- m ? u.set(x, m) : u.delete(x);
857
- },
858
- get style() {
859
- return {
860
- width: `${n.nodDims.w}px`,
861
- height: `${n.nodDims.h}px`,
862
- left: `${n.nodDims.x}px`,
863
- top: `${n.nodDims.y}px`,
864
- cursor: n.nodeDir ? "ns-resize" : "ew-resize",
865
- ...n.nodLocked ? {
866
- "pointer-events": "none"
867
- } : {},
868
- ...e.sliderElementStyles
869
- };
870
- }
871
- })
872
- }), null), y(b, p(i, {
873
- get class() {
874
- return "hide-scrollbar " + (e.hoverElementClass || "");
875
- },
876
- get style() {
877
- return {
878
- ...e.hoverElementStyles
879
- };
880
- },
881
- ref: (n) => f.current = n
882
- }), null), y(b, p(Q, {
883
- each: ["left", "right", "top", "bottom"],
884
- children: (n, m) => p(dt, {
885
- onDragOver: X,
886
- onDragEnd: T,
887
- onDragEnter: B,
888
- onDragLeave: j,
889
- onDrop: U,
890
- get "data-uid"() {
891
- return e.rootId || "dynamix-layout-root";
892
- },
893
- "data-area": n,
894
- get class() {
895
- return "hide-scrollbar " + (e.RootSplitterHoverElClass || "");
896
- },
897
- ref: (x) => {
898
- x && (D[m()] = x);
899
- },
900
- get style() {
901
- return {
902
- ...e.RootSplitterHoverElStyles
903
- };
904
- },
905
- area: n,
906
- size: {
907
- h: "25%",
908
- w: "8px"
909
- }
910
- })
911
- }), null), b;
912
- })();
913
- };
914
- export {
915
- it as DefaultHoverElement,
916
- lt as DefaultSliderElement,
917
- gt as DefaultTabsetToolbar,
918
- nt as DefaultWrapTabBody,
919
- at as DefaultWrapTabHead,
920
- rt as DefaultWrapTabLabel,
921
- ot as DefaultWrapTabPanel,
922
- wt as DynamixLayout,
923
- dt as RootSplitterHoverEl,
924
- bt as getTabOutput,
925
- ft as useDynamixLayout
926
- };