@principal-ade/panel-layouts 0.1.5 → 0.1.6
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.d.ts +104 -0
- package/dist/index.esm.js +313 -186
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import './index.css';var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
import { EditableConfigurablePanelLayout as
|
|
5
|
-
import { useState as
|
|
6
|
-
|
|
1
|
+
import './index.css';var D = Object.defineProperty;
|
|
2
|
+
var F = (n, e, t) => e in n ? D(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
|
|
3
|
+
var A = (n, e, t) => F(n, typeof e != "symbol" ? e + "" : e, t);
|
|
4
|
+
import { EditableConfigurablePanelLayout as Z, ResponsiveConfigurablePanelLayout as G, mapThemeToPanelVars as Q, mapThemeToTabVars as H } from "@principal-ade/panels";
|
|
5
|
+
import { useState as R, useRef as C, useEffect as P, useCallback as p } from "react";
|
|
6
|
+
import { jsx as O } from "react/jsx-runtime";
|
|
7
|
+
class $ {
|
|
7
8
|
constructor() {
|
|
8
|
-
|
|
9
|
+
A(this, "storageKey", "panel-layouts");
|
|
9
10
|
}
|
|
10
11
|
async load(e) {
|
|
11
12
|
try {
|
|
@@ -26,122 +27,122 @@ class F {
|
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
|
-
function
|
|
30
|
+
function _(n) {
|
|
30
31
|
const {
|
|
31
32
|
viewKey: e,
|
|
32
33
|
defaultSizes: t,
|
|
33
34
|
panelType: a,
|
|
34
|
-
adapter: s = new
|
|
35
|
-
} = n, [
|
|
36
|
-
|
|
35
|
+
adapter: s = new $()
|
|
36
|
+
} = n, [l, f] = R(t), [u, v] = R(n.collapsed), w = C(n.collapsed), b = C({}), h = C(null), y = C(null);
|
|
37
|
+
P(() => {
|
|
37
38
|
(async () => {
|
|
38
|
-
const
|
|
39
|
-
|
|
39
|
+
const g = await s.load(e);
|
|
40
|
+
g != null && g.sizes && (f(g.sizes), r(g.sizes));
|
|
40
41
|
})();
|
|
41
42
|
}, [e]);
|
|
42
|
-
const
|
|
43
|
-
(
|
|
44
|
-
"left" in
|
|
43
|
+
const r = p(
|
|
44
|
+
(i) => {
|
|
45
|
+
"left" in i && i.left > 0 && (b.current.left = i.left), "middle" in i && i.middle > 0 && (b.current.middle = i.middle), "right" in i && i.right > 0 && (b.current.right = i.right);
|
|
45
46
|
},
|
|
46
47
|
[]
|
|
47
|
-
),
|
|
48
|
-
(
|
|
49
|
-
const
|
|
50
|
-
if (
|
|
51
|
-
return
|
|
52
|
-
if (
|
|
48
|
+
), o = p(
|
|
49
|
+
(i) => {
|
|
50
|
+
const g = b.current[i];
|
|
51
|
+
if (g && g > 0)
|
|
52
|
+
return g;
|
|
53
|
+
if (i === "left" && "left" in t && t.left > 0)
|
|
53
54
|
return t.left;
|
|
54
|
-
if (
|
|
55
|
+
if (i === "right" && "right" in t && t.right > 0)
|
|
55
56
|
return t.right;
|
|
56
57
|
},
|
|
57
58
|
[t]
|
|
58
|
-
),
|
|
59
|
-
|
|
60
|
-
("left" in t && t.left !==
|
|
61
|
-
}, [t,
|
|
62
|
-
const
|
|
63
|
-
(
|
|
59
|
+
), k = C(t);
|
|
60
|
+
P(() => {
|
|
61
|
+
("left" in t && t.left !== k.current.left || "middle" in t && "middle" in k.current && t.middle !== k.current.middle || "right" in t && t.right !== k.current.right) && (f(t), r(t), k.current = t);
|
|
62
|
+
}, [t, r]), P(() => {
|
|
63
|
+
const i = n.collapsed.left !== w.current.left, g = "right" in n.collapsed && "right" in w.current && n.collapsed.right !== w.current.right;
|
|
64
|
+
(i || g) && (v(n.collapsed), w.current = { ...n.collapsed });
|
|
64
65
|
}, [n.collapsed.left, n.collapsed.right]);
|
|
65
|
-
const
|
|
66
|
-
async (
|
|
66
|
+
const T = p(
|
|
67
|
+
async (i) => {
|
|
67
68
|
try {
|
|
68
|
-
await s.save(e, { sizes:
|
|
69
|
-
} catch (
|
|
69
|
+
await s.save(e, { sizes: i });
|
|
70
|
+
} catch (g) {
|
|
70
71
|
console.error(
|
|
71
72
|
`Failed to save panel preferences for ${e}:`,
|
|
72
|
-
|
|
73
|
+
g
|
|
73
74
|
);
|
|
74
75
|
}
|
|
75
76
|
},
|
|
76
77
|
[e, s]
|
|
77
|
-
),
|
|
78
|
-
(
|
|
79
|
-
const
|
|
80
|
-
let
|
|
81
|
-
if ("left" in
|
|
82
|
-
const
|
|
83
|
-
if (
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
} else
|
|
78
|
+
), z = p(
|
|
79
|
+
(i) => {
|
|
80
|
+
const g = { ...i };
|
|
81
|
+
let c = !0;
|
|
82
|
+
if ("left" in i) {
|
|
83
|
+
const d = !!(u != null && u.left), S = i.left;
|
|
84
|
+
if (d) {
|
|
85
|
+
const W = o("left");
|
|
86
|
+
W !== void 0 && W > 0 ? g.left = W : c = !1;
|
|
87
|
+
} else S === 0 && (c = !1);
|
|
87
88
|
}
|
|
88
|
-
if (a === "three-panel" && "right" in
|
|
89
|
-
const
|
|
90
|
-
if (
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
} else
|
|
89
|
+
if (a === "three-panel" && "right" in i) {
|
|
90
|
+
const d = !!(u != null && u.right), S = i.right;
|
|
91
|
+
if (d) {
|
|
92
|
+
const W = o("right");
|
|
93
|
+
W !== void 0 && W > 0 ? g.right = W : c = !1;
|
|
94
|
+
} else S === 0 && (c = !1);
|
|
94
95
|
}
|
|
95
|
-
if (
|
|
96
|
-
|
|
96
|
+
if (f(g), r(g), h.current && (clearTimeout(h.current), h.current = null), !c) {
|
|
97
|
+
y.current = null;
|
|
97
98
|
return;
|
|
98
99
|
}
|
|
99
|
-
|
|
100
|
-
const
|
|
101
|
-
|
|
100
|
+
y.current = g, h.current = setTimeout(() => {
|
|
101
|
+
const d = y.current;
|
|
102
|
+
d && (T(d), y.current = null), h.current = null;
|
|
102
103
|
}, 500);
|
|
103
104
|
},
|
|
104
105
|
[
|
|
105
|
-
|
|
106
|
-
|
|
106
|
+
u,
|
|
107
|
+
o,
|
|
107
108
|
a,
|
|
108
|
-
|
|
109
|
-
|
|
109
|
+
T,
|
|
110
|
+
r
|
|
110
111
|
]
|
|
111
112
|
);
|
|
112
|
-
|
|
113
|
+
P(() => () => {
|
|
113
114
|
if (h.current) {
|
|
114
|
-
const
|
|
115
|
-
|
|
115
|
+
const i = y.current;
|
|
116
|
+
i && (T(i), y.current = null), clearTimeout(h.current), h.current = null;
|
|
116
117
|
}
|
|
117
|
-
}, [
|
|
118
|
-
const
|
|
119
|
-
}, []),
|
|
120
|
-
}, []), L =
|
|
121
|
-
}, []),
|
|
118
|
+
}, [T]);
|
|
119
|
+
const I = p(async () => {
|
|
120
|
+
}, []), E = p(async () => {
|
|
121
|
+
}, []), L = p(async () => {
|
|
122
|
+
}, []), x = p(async () => {
|
|
122
123
|
}, []);
|
|
123
124
|
return a === "three-panel" ? {
|
|
124
125
|
type: "three-panel",
|
|
125
|
-
sizes:
|
|
126
|
-
collapsed:
|
|
127
|
-
handlePanelResize:
|
|
128
|
-
handleLeftCollapseComplete:
|
|
129
|
-
handleLeftExpandComplete:
|
|
126
|
+
sizes: l,
|
|
127
|
+
collapsed: u,
|
|
128
|
+
handlePanelResize: z,
|
|
129
|
+
handleLeftCollapseComplete: I,
|
|
130
|
+
handleLeftExpandComplete: E,
|
|
130
131
|
handleRightCollapseComplete: L,
|
|
131
|
-
handleRightExpandComplete:
|
|
132
|
+
handleRightExpandComplete: x
|
|
132
133
|
} : {
|
|
133
134
|
type: "two-panel",
|
|
134
|
-
sizes:
|
|
135
|
-
collapsed:
|
|
136
|
-
handlePanelResize:
|
|
137
|
-
handleLeftCollapseComplete:
|
|
138
|
-
handleLeftExpandComplete:
|
|
135
|
+
sizes: l,
|
|
136
|
+
collapsed: u,
|
|
137
|
+
handlePanelResize: z,
|
|
138
|
+
handleLeftCollapseComplete: I,
|
|
139
|
+
handleLeftExpandComplete: E
|
|
139
140
|
};
|
|
140
141
|
}
|
|
141
|
-
class
|
|
142
|
+
class N {
|
|
142
143
|
constructor() {
|
|
143
|
-
|
|
144
|
-
|
|
144
|
+
A(this, "PRESETS_KEY", "panel-layouts:workspace-presets");
|
|
145
|
+
A(this, "REPO_STATE_PREFIX", "panel-layouts:repo-state:");
|
|
145
146
|
}
|
|
146
147
|
/**
|
|
147
148
|
* Load all user-created workspace presets
|
|
@@ -201,14 +202,14 @@ class V {
|
|
|
201
202
|
for (let t = 0; t < localStorage.length; t++) {
|
|
202
203
|
const a = localStorage.key(t);
|
|
203
204
|
if (a && a.startsWith(this.REPO_STATE_PREFIX)) {
|
|
204
|
-
const s = a.substring(this.REPO_STATE_PREFIX.length),
|
|
205
|
-
if (
|
|
205
|
+
const s = a.substring(this.REPO_STATE_PREFIX.length), l = localStorage.getItem(a);
|
|
206
|
+
if (l)
|
|
206
207
|
try {
|
|
207
|
-
e[s] = JSON.parse(
|
|
208
|
-
} catch (
|
|
208
|
+
e[s] = JSON.parse(l);
|
|
209
|
+
} catch (f) {
|
|
209
210
|
console.error(
|
|
210
211
|
`Failed to parse repository state for ${s}:`,
|
|
211
|
-
|
|
212
|
+
f
|
|
212
213
|
);
|
|
213
214
|
}
|
|
214
215
|
}
|
|
@@ -219,7 +220,7 @@ class V {
|
|
|
219
220
|
}
|
|
220
221
|
}
|
|
221
222
|
}
|
|
222
|
-
class
|
|
223
|
+
class m {
|
|
223
224
|
/**
|
|
224
225
|
* Configure a custom storage adapter (for Electron IPC or remote storage)
|
|
225
226
|
*/
|
|
@@ -256,11 +257,11 @@ class p {
|
|
|
256
257
|
createdAt: Date.now(),
|
|
257
258
|
updatedAt: Date.now(),
|
|
258
259
|
isBuiltIn: !1
|
|
259
|
-
},
|
|
260
|
+
}, l = {
|
|
260
261
|
...t,
|
|
261
262
|
[a]: s
|
|
262
263
|
};
|
|
263
|
-
return await this.adapter.saveWorkspacePresets(
|
|
264
|
+
return await this.adapter.saveWorkspacePresets(l), s;
|
|
264
265
|
}
|
|
265
266
|
/**
|
|
266
267
|
* Update an existing workspace layout
|
|
@@ -271,7 +272,7 @@ class p {
|
|
|
271
272
|
return console.error(`Workspace layout ${e} not found`), null;
|
|
272
273
|
if (s.isBuiltIn)
|
|
273
274
|
return console.error(`Cannot update built-in workspace layout ${e}`), null;
|
|
274
|
-
const
|
|
275
|
+
const l = {
|
|
275
276
|
...s,
|
|
276
277
|
...t,
|
|
277
278
|
id: e,
|
|
@@ -279,11 +280,11 @@ class p {
|
|
|
279
280
|
createdAt: s.createdAt,
|
|
280
281
|
// Preserve creation time
|
|
281
282
|
updatedAt: Date.now()
|
|
282
|
-
},
|
|
283
|
+
}, f = {
|
|
283
284
|
...a,
|
|
284
|
-
[e]:
|
|
285
|
+
[e]: l
|
|
285
286
|
};
|
|
286
|
-
return await this.adapter.saveWorkspacePresets(
|
|
287
|
+
return await this.adapter.saveWorkspacePresets(f), l;
|
|
287
288
|
}
|
|
288
289
|
/**
|
|
289
290
|
* Delete a workspace layout
|
|
@@ -608,153 +609,279 @@ class p {
|
|
|
608
609
|
Object.keys(e).length;
|
|
609
610
|
}
|
|
610
611
|
}
|
|
611
|
-
|
|
612
|
-
function
|
|
613
|
-
const { repositoryKey: e, autoInitialize: t = !1, defaultWorkspaceId: a } = n, [s,
|
|
612
|
+
A(m, "adapter", new N());
|
|
613
|
+
function K(n = {}) {
|
|
614
|
+
const { repositoryKey: e, autoInitialize: t = !1, defaultWorkspaceId: a } = n, [s, l] = R(
|
|
614
615
|
{}
|
|
615
|
-
), [
|
|
616
|
+
), [f, u] = R(null), [v, w] = R(null), [b, h] = R(!0), [y, r] = R(null), o = p(async () => {
|
|
616
617
|
try {
|
|
617
|
-
h(!0),
|
|
618
|
-
const
|
|
619
|
-
if (
|
|
620
|
-
let
|
|
621
|
-
if (!
|
|
622
|
-
const
|
|
623
|
-
|
|
624
|
-
workspaceId:
|
|
625
|
-
sizes:
|
|
618
|
+
h(!0), r(null);
|
|
619
|
+
const c = await m.getWorkspaceLayouts();
|
|
620
|
+
if (l(c), e) {
|
|
621
|
+
let d = await m.getRepositoryState(e);
|
|
622
|
+
if (!d && t) {
|
|
623
|
+
const S = a || "project-management", W = await m.getWorkspaceLayout(S);
|
|
624
|
+
W && (d = {
|
|
625
|
+
workspaceId: S,
|
|
626
|
+
sizes: W.defaultSizes || {
|
|
626
627
|
left: 20,
|
|
627
628
|
middle: 45,
|
|
628
629
|
right: 35
|
|
629
630
|
},
|
|
630
|
-
collapsed:
|
|
631
|
+
collapsed: W.defaultCollapsed || {
|
|
631
632
|
left: !1,
|
|
632
633
|
right: !1
|
|
633
634
|
}
|
|
634
|
-
}, await
|
|
635
|
+
}, await m.setRepositoryState(
|
|
635
636
|
e,
|
|
636
|
-
|
|
637
|
+
d
|
|
637
638
|
));
|
|
638
639
|
}
|
|
639
|
-
if (
|
|
640
|
-
const
|
|
641
|
-
|
|
640
|
+
if (u(d), d != null && d.workspaceId) {
|
|
641
|
+
const S = await m.getWorkspaceLayout(
|
|
642
|
+
d.workspaceId
|
|
642
643
|
);
|
|
643
|
-
S
|
|
644
|
+
w(S);
|
|
644
645
|
} else
|
|
645
|
-
|
|
646
|
+
w(null);
|
|
646
647
|
}
|
|
647
|
-
} catch (
|
|
648
|
-
|
|
648
|
+
} catch (c) {
|
|
649
|
+
r(c), console.error("Failed to load workspace data:", c);
|
|
649
650
|
} finally {
|
|
650
651
|
h(!1);
|
|
651
652
|
}
|
|
652
653
|
}, [e, t, a]);
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
}, [
|
|
656
|
-
const
|
|
657
|
-
async (
|
|
654
|
+
P(() => {
|
|
655
|
+
o();
|
|
656
|
+
}, [o]);
|
|
657
|
+
const k = p(
|
|
658
|
+
async (c) => await m.getWorkspaceLayout(c),
|
|
658
659
|
[]
|
|
659
|
-
),
|
|
660
|
-
async (
|
|
661
|
-
const
|
|
662
|
-
return await
|
|
660
|
+
), T = p(
|
|
661
|
+
async (c) => {
|
|
662
|
+
const d = await m.createWorkspaceLayout(c);
|
|
663
|
+
return await o(), d;
|
|
663
664
|
},
|
|
664
|
-
[
|
|
665
|
-
),
|
|
666
|
-
async (
|
|
667
|
-
const
|
|
668
|
-
return await
|
|
665
|
+
[o]
|
|
666
|
+
), z = p(
|
|
667
|
+
async (c, d) => {
|
|
668
|
+
const S = await m.updateWorkspaceLayout(c, d);
|
|
669
|
+
return await o(), S;
|
|
669
670
|
},
|
|
670
|
-
[
|
|
671
|
-
),
|
|
672
|
-
async (
|
|
673
|
-
const
|
|
674
|
-
return
|
|
671
|
+
[o]
|
|
672
|
+
), I = p(
|
|
673
|
+
async (c) => {
|
|
674
|
+
const d = await m.deleteWorkspaceLayout(c);
|
|
675
|
+
return d && await o(), d;
|
|
675
676
|
},
|
|
676
|
-
[
|
|
677
|
-
),
|
|
678
|
-
async (
|
|
677
|
+
[o]
|
|
678
|
+
), E = p(
|
|
679
|
+
async (c) => {
|
|
679
680
|
if (!e) {
|
|
680
681
|
console.error("Cannot apply workspace without repositoryKey");
|
|
681
682
|
return;
|
|
682
683
|
}
|
|
683
|
-
const
|
|
684
|
-
if (!
|
|
685
|
-
console.error(`Workspace ${
|
|
684
|
+
const d = await m.getWorkspaceLayout(c);
|
|
685
|
+
if (!d) {
|
|
686
|
+
console.error(`Workspace ${c} not found`);
|
|
686
687
|
return;
|
|
687
688
|
}
|
|
688
|
-
const
|
|
689
|
-
workspaceId:
|
|
690
|
-
sizes:
|
|
691
|
-
collapsed:
|
|
689
|
+
const S = {
|
|
690
|
+
workspaceId: c,
|
|
691
|
+
sizes: d.defaultSizes || { left: 20, middle: 45, right: 35 },
|
|
692
|
+
collapsed: d.defaultCollapsed || {
|
|
692
693
|
left: !1,
|
|
693
694
|
right: !1
|
|
694
695
|
}
|
|
695
696
|
};
|
|
696
|
-
await
|
|
697
|
+
await m.setRepositoryState(e, S), await o();
|
|
697
698
|
},
|
|
698
|
-
[e,
|
|
699
|
-
), L =
|
|
700
|
-
async (
|
|
699
|
+
[e, o]
|
|
700
|
+
), L = p(
|
|
701
|
+
async (c) => {
|
|
701
702
|
if (!e) {
|
|
702
703
|
console.error("Cannot update sizes without repositoryKey");
|
|
703
704
|
return;
|
|
704
705
|
}
|
|
705
|
-
await
|
|
706
|
+
await m.updateRepositorySizes(e, c), await o();
|
|
706
707
|
},
|
|
707
|
-
[e,
|
|
708
|
-
),
|
|
709
|
-
async (
|
|
708
|
+
[e, o]
|
|
709
|
+
), x = p(
|
|
710
|
+
async (c) => {
|
|
710
711
|
if (!e) {
|
|
711
712
|
console.error("Cannot update collapsed without repositoryKey");
|
|
712
713
|
return;
|
|
713
714
|
}
|
|
714
|
-
await
|
|
715
|
+
await m.updateRepositoryCollapsed(
|
|
715
716
|
e,
|
|
716
|
-
|
|
717
|
-
), await
|
|
717
|
+
c
|
|
718
|
+
), await o();
|
|
718
719
|
},
|
|
719
|
-
[e,
|
|
720
|
-
),
|
|
721
|
-
if (!e || !(
|
|
720
|
+
[e, o]
|
|
721
|
+
), i = p(async () => {
|
|
722
|
+
if (!e || !(f != null && f.workspaceId)) {
|
|
722
723
|
console.error("Cannot reset without repositoryKey and active workspace");
|
|
723
724
|
return;
|
|
724
725
|
}
|
|
725
|
-
await
|
|
726
|
+
await m.resetRepositoryToWorkspaceDefaults(
|
|
726
727
|
e,
|
|
727
|
-
|
|
728
|
-
), await
|
|
729
|
-
}, [e,
|
|
730
|
-
await
|
|
731
|
-
}, [
|
|
728
|
+
f.workspaceId
|
|
729
|
+
), await o();
|
|
730
|
+
}, [e, f == null ? void 0 : f.workspaceId, o]), g = p(async () => {
|
|
731
|
+
await o();
|
|
732
|
+
}, [o]);
|
|
732
733
|
return {
|
|
733
734
|
workspaces: s,
|
|
734
|
-
repositoryState:
|
|
735
|
-
activeWorkspace:
|
|
736
|
-
loading:
|
|
737
|
-
error:
|
|
738
|
-
getWorkspace:
|
|
739
|
-
createWorkspace:
|
|
740
|
-
updateWorkspace:
|
|
741
|
-
deleteWorkspace:
|
|
742
|
-
applyWorkspace:
|
|
735
|
+
repositoryState: f,
|
|
736
|
+
activeWorkspace: v,
|
|
737
|
+
loading: b,
|
|
738
|
+
error: y,
|
|
739
|
+
getWorkspace: k,
|
|
740
|
+
createWorkspace: T,
|
|
741
|
+
updateWorkspace: z,
|
|
742
|
+
deleteWorkspace: I,
|
|
743
|
+
applyWorkspace: E,
|
|
743
744
|
updateSizes: L,
|
|
744
|
-
updateCollapsed:
|
|
745
|
-
resetToDefaults:
|
|
746
|
-
refresh:
|
|
745
|
+
updateCollapsed: x,
|
|
746
|
+
resetToDefaults: i,
|
|
747
|
+
refresh: g
|
|
747
748
|
};
|
|
748
749
|
}
|
|
750
|
+
function j(n = {}) {
|
|
751
|
+
const {
|
|
752
|
+
initialFocus: e = null,
|
|
753
|
+
collapsed: t = {},
|
|
754
|
+
panelType: a = "three-panel",
|
|
755
|
+
onFocusChange: s
|
|
756
|
+
} = n, [l, f] = R(
|
|
757
|
+
e
|
|
758
|
+
), u = p(
|
|
759
|
+
(r) => {
|
|
760
|
+
f(r), s == null || s(r);
|
|
761
|
+
},
|
|
762
|
+
[s]
|
|
763
|
+
), v = p(() => {
|
|
764
|
+
f(null), s == null || s(null);
|
|
765
|
+
}, [s]), w = p(() => {
|
|
766
|
+
const r = [];
|
|
767
|
+
return t.left || r.push("left"), r.push("middle"), a === "three-panel" && !t.right && r.push("right"), r;
|
|
768
|
+
}, [t, a]), b = p(() => {
|
|
769
|
+
const r = w();
|
|
770
|
+
if (r.length === 0) return;
|
|
771
|
+
if (l === null) {
|
|
772
|
+
u(r[0]);
|
|
773
|
+
return;
|
|
774
|
+
}
|
|
775
|
+
const o = r.indexOf(l);
|
|
776
|
+
if (o === -1) {
|
|
777
|
+
u(r[0]);
|
|
778
|
+
return;
|
|
779
|
+
}
|
|
780
|
+
const k = (o + 1) % r.length;
|
|
781
|
+
u(r[k]);
|
|
782
|
+
}, [l, w, u]), h = p(() => {
|
|
783
|
+
const r = w();
|
|
784
|
+
if (r.length === 0) return;
|
|
785
|
+
if (l === null) {
|
|
786
|
+
u(r[r.length - 1]);
|
|
787
|
+
return;
|
|
788
|
+
}
|
|
789
|
+
const o = r.indexOf(l);
|
|
790
|
+
if (o === -1) {
|
|
791
|
+
u(r[r.length - 1]);
|
|
792
|
+
return;
|
|
793
|
+
}
|
|
794
|
+
const k = o === 0 ? r.length - 1 : o - 1;
|
|
795
|
+
u(r[k]);
|
|
796
|
+
}, [l, w, u]), y = p(
|
|
797
|
+
(r) => l === r,
|
|
798
|
+
[l]
|
|
799
|
+
);
|
|
800
|
+
return {
|
|
801
|
+
focusedPanel: l,
|
|
802
|
+
setFocus: u,
|
|
803
|
+
clearFocus: v,
|
|
804
|
+
focusNext: b,
|
|
805
|
+
focusPrevious: h,
|
|
806
|
+
isFocused: y
|
|
807
|
+
};
|
|
808
|
+
}
|
|
809
|
+
function q(n) {
|
|
810
|
+
const {
|
|
811
|
+
enabled: e = !0,
|
|
812
|
+
focusedPanel: t,
|
|
813
|
+
collapsed: a,
|
|
814
|
+
panelType: s,
|
|
815
|
+
setFocus: l,
|
|
816
|
+
onExpand: f,
|
|
817
|
+
onCollapse: u
|
|
818
|
+
} = n, v = C(t), w = C(a), b = C(s);
|
|
819
|
+
P(() => {
|
|
820
|
+
v.current = t;
|
|
821
|
+
}, [t]), P(() => {
|
|
822
|
+
w.current = a;
|
|
823
|
+
}, [a]), P(() => {
|
|
824
|
+
b.current = s;
|
|
825
|
+
}, [s]);
|
|
826
|
+
const h = p(
|
|
827
|
+
(y) => {
|
|
828
|
+
if (!y.altKey || y.ctrlKey || y.metaKey || y.shiftKey)
|
|
829
|
+
return;
|
|
830
|
+
const r = y.code, o = v.current, k = w.current, T = b.current;
|
|
831
|
+
r === "Digit1" || r === "Numpad1" ? (y.preventDefault(), k.left ? f("left") : o !== "left" ? l("left") : (u("left"), l("middle"))) : r === "Digit2" || r === "Numpad2" ? (y.preventDefault(), l("middle")) : (r === "Digit3" || r === "Numpad3") && T === "three-panel" && (y.preventDefault(), k.right ? f("right") : o !== "right" ? l("right") : (u("right"), l("middle")));
|
|
832
|
+
},
|
|
833
|
+
[l, f, u]
|
|
834
|
+
);
|
|
835
|
+
P(() => {
|
|
836
|
+
if (e)
|
|
837
|
+
return window.addEventListener("keydown", h), () => {
|
|
838
|
+
window.removeEventListener("keydown", h);
|
|
839
|
+
};
|
|
840
|
+
}, [e, h]);
|
|
841
|
+
}
|
|
842
|
+
const X = ({
|
|
843
|
+
isFocused: n,
|
|
844
|
+
className: e = "",
|
|
845
|
+
style: t = {}
|
|
846
|
+
}) => {
|
|
847
|
+
if (!n)
|
|
848
|
+
return null;
|
|
849
|
+
const a = {
|
|
850
|
+
position: "absolute",
|
|
851
|
+
top: 0,
|
|
852
|
+
left: 0,
|
|
853
|
+
right: 0,
|
|
854
|
+
bottom: 0,
|
|
855
|
+
pointerEvents: "none",
|
|
856
|
+
border: "2px solid var(--panel-focus-border-color, #0066cc)",
|
|
857
|
+
borderRadius: "4px",
|
|
858
|
+
boxShadow: "0 0 0 1px var(--panel-focus-shadow-color, rgba(0, 102, 204, 0.2))",
|
|
859
|
+
zIndex: 1e3,
|
|
860
|
+
transition: "opacity 0.15s ease-in-out",
|
|
861
|
+
...t
|
|
862
|
+
};
|
|
863
|
+
return /* @__PURE__ */ O(
|
|
864
|
+
"div",
|
|
865
|
+
{
|
|
866
|
+
className: `panel-focus-indicator ${e}`,
|
|
867
|
+
style: a,
|
|
868
|
+
role: "presentation",
|
|
869
|
+
"aria-hidden": "true"
|
|
870
|
+
}
|
|
871
|
+
);
|
|
872
|
+
};
|
|
749
873
|
export {
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
874
|
+
Z as EditableConfigurablePanelLayout,
|
|
875
|
+
X as FocusIndicator,
|
|
876
|
+
$ as LocalStoragePersistenceAdapter,
|
|
877
|
+
N as LocalStorageWorkspaceAdapter,
|
|
878
|
+
G as ResponsiveConfigurablePanelLayout,
|
|
879
|
+
m as WorkspaceLayoutService,
|
|
880
|
+
Q as mapThemeToPanelVars,
|
|
881
|
+
H as mapThemeToTabVars,
|
|
882
|
+
j as usePanelFocus,
|
|
883
|
+
q as usePanelKeyboardShortcuts,
|
|
884
|
+
_ as usePanelPersistence,
|
|
885
|
+
K as useWorkspace
|
|
759
886
|
};
|
|
760
887
|
//# sourceMappingURL=index.esm.js.map
|