@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.esm.js CHANGED
@@ -1,11 +1,12 @@
1
- import './index.css';var $ = Object.defineProperty;
2
- var D = (n, e, t) => e in n ? $(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
3
- var C = (n, e, t) => D(n, typeof e != "symbol" ? e + "" : e, t);
4
- import { EditableConfigurablePanelLayout as q, ResponsiveConfigurablePanelLayout as K, mapThemeToPanelVars as X, mapThemeToTabVars as M } from "@principal-ade/panels";
5
- import { useState as b, useRef as T, useEffect as R, useCallback as d } from "react";
6
- class F {
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
- C(this, "storageKey", "panel-layouts");
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 x(n) {
30
+ function _(n) {
30
31
  const {
31
32
  viewKey: e,
32
33
  defaultSizes: t,
33
34
  panelType: a,
34
- adapter: s = new F()
35
- } = n, [f, u] = b(t), [y, E] = b(n.collapsed), S = T(n.collapsed), v = T({}), h = T(null), k = T(null);
36
- R(() => {
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 c = await s.load(e);
39
- c != null && c.sizes && (u(c.sizes), m(c.sizes));
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 m = d(
43
- (r) => {
44
- "left" in r && r.left > 0 && (v.current.left = r.left), "middle" in r && r.middle > 0 && (v.current.middle = r.middle), "right" in r && r.right > 0 && (v.current.right = r.right);
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
- ), l = d(
48
- (r) => {
49
- const c = v.current[r];
50
- if (c && c > 0)
51
- return c;
52
- if (r === "left" && "left" in t && t.left > 0)
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 (r === "right" && "right" in t && t.right > 0)
55
+ if (i === "right" && "right" in t && t.right > 0)
55
56
  return t.right;
56
57
  },
57
58
  [t]
58
- ), W = T(t);
59
- R(() => {
60
- ("left" in t && t.left !== W.current.left || "middle" in t && "middle" in W.current && t.middle !== W.current.middle || "right" in t && t.right !== W.current.right) && (u(t), m(t), W.current = t);
61
- }, [t, m]), R(() => {
62
- const r = n.collapsed.left !== S.current.left, c = "right" in n.collapsed && "right" in S.current && n.collapsed.right !== S.current.right;
63
- (r || c) && (E(n.collapsed), S.current = { ...n.collapsed });
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 P = d(
66
- async (r) => {
66
+ const T = p(
67
+ async (i) => {
67
68
  try {
68
- await s.save(e, { sizes: r });
69
- } catch (c) {
69
+ await s.save(e, { sizes: i });
70
+ } catch (g) {
70
71
  console.error(
71
72
  `Failed to save panel preferences for ${e}:`,
72
- c
73
+ g
73
74
  );
74
75
  }
75
76
  },
76
77
  [e, s]
77
- ), A = d(
78
- (r) => {
79
- const c = { ...r };
80
- let o = !0;
81
- if ("left" in r) {
82
- const i = !!(y != null && y.left), g = r.left;
83
- if (i) {
84
- const w = l("left");
85
- w !== void 0 && w > 0 ? c.left = w : o = !1;
86
- } else g === 0 && (o = !1);
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 r) {
89
- const i = !!(y != null && y.right), g = r.right;
90
- if (i) {
91
- const w = l("right");
92
- w !== void 0 && w > 0 ? c.right = w : o = !1;
93
- } else g === 0 && (o = !1);
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 (u(c), m(c), h.current && (clearTimeout(h.current), h.current = null), !o) {
96
- k.current = null;
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
- k.current = c, h.current = setTimeout(() => {
100
- const i = k.current;
101
- i && (P(i), k.current = null), h.current = null;
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
- y,
106
- l,
106
+ u,
107
+ o,
107
108
  a,
108
- P,
109
- m
109
+ T,
110
+ r
110
111
  ]
111
112
  );
112
- R(() => () => {
113
+ P(() => () => {
113
114
  if (h.current) {
114
- const r = k.current;
115
- r && (P(r), k.current = null), clearTimeout(h.current), h.current = null;
115
+ const i = y.current;
116
+ i && (T(i), y.current = null), clearTimeout(h.current), h.current = null;
116
117
  }
117
- }, [P]);
118
- const z = d(async () => {
119
- }, []), I = d(async () => {
120
- }, []), L = d(async () => {
121
- }, []), O = d(async () => {
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: f,
126
- collapsed: y,
127
- handlePanelResize: A,
128
- handleLeftCollapseComplete: z,
129
- handleLeftExpandComplete: I,
126
+ sizes: l,
127
+ collapsed: u,
128
+ handlePanelResize: z,
129
+ handleLeftCollapseComplete: I,
130
+ handleLeftExpandComplete: E,
130
131
  handleRightCollapseComplete: L,
131
- handleRightExpandComplete: O
132
+ handleRightExpandComplete: x
132
133
  } : {
133
134
  type: "two-panel",
134
- sizes: f,
135
- collapsed: y,
136
- handlePanelResize: A,
137
- handleLeftCollapseComplete: z,
138
- handleLeftExpandComplete: I
135
+ sizes: l,
136
+ collapsed: u,
137
+ handlePanelResize: z,
138
+ handleLeftCollapseComplete: I,
139
+ handleLeftExpandComplete: E
139
140
  };
140
141
  }
141
- class V {
142
+ class N {
142
143
  constructor() {
143
- C(this, "PRESETS_KEY", "panel-layouts:workspace-presets");
144
- C(this, "REPO_STATE_PREFIX", "panel-layouts:repo-state:");
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), f = localStorage.getItem(a);
205
- if (f)
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(f);
208
- } catch (u) {
208
+ e[s] = JSON.parse(l);
209
+ } catch (f) {
209
210
  console.error(
210
211
  `Failed to parse repository state for ${s}:`,
211
- u
212
+ f
212
213
  );
213
214
  }
214
215
  }
@@ -219,7 +220,7 @@ class V {
219
220
  }
220
221
  }
221
222
  }
222
- class p {
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
- }, f = {
260
+ }, l = {
260
261
  ...t,
261
262
  [a]: s
262
263
  };
263
- return await this.adapter.saveWorkspacePresets(f), s;
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 f = {
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
- }, u = {
283
+ }, f = {
283
284
  ...a,
284
- [e]: f
285
+ [e]: l
285
286
  };
286
- return await this.adapter.saveWorkspacePresets(u), f;
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
- C(p, "adapter", new V());
612
- function J(n = {}) {
613
- const { repositoryKey: e, autoInitialize: t = !1, defaultWorkspaceId: a } = n, [s, f] = b(
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
- ), [u, y] = b(null), [E, S] = b(null), [v, h] = b(!0), [k, m] = b(null), l = d(async () => {
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), m(null);
618
- const o = await p.getWorkspaceLayouts();
619
- if (f(o), e) {
620
- let i = await p.getRepositoryState(e);
621
- if (!i && t) {
622
- const g = a || "project-management", w = await p.getWorkspaceLayout(g);
623
- w && (i = {
624
- workspaceId: g,
625
- sizes: w.defaultSizes || {
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: w.defaultCollapsed || {
631
+ collapsed: W.defaultCollapsed || {
631
632
  left: !1,
632
633
  right: !1
633
634
  }
634
- }, await p.setRepositoryState(
635
+ }, await m.setRepositoryState(
635
636
  e,
636
- i
637
+ d
637
638
  ));
638
639
  }
639
- if (y(i), i != null && i.workspaceId) {
640
- const g = await p.getWorkspaceLayout(
641
- i.workspaceId
640
+ if (u(d), d != null && d.workspaceId) {
641
+ const S = await m.getWorkspaceLayout(
642
+ d.workspaceId
642
643
  );
643
- S(g);
644
+ w(S);
644
645
  } else
645
- S(null);
646
+ w(null);
646
647
  }
647
- } catch (o) {
648
- m(o), console.error("Failed to load workspace data:", o);
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
- R(() => {
654
- l();
655
- }, [l]);
656
- const W = d(
657
- async (o) => await p.getWorkspaceLayout(o),
654
+ P(() => {
655
+ o();
656
+ }, [o]);
657
+ const k = p(
658
+ async (c) => await m.getWorkspaceLayout(c),
658
659
  []
659
- ), P = d(
660
- async (o) => {
661
- const i = await p.createWorkspaceLayout(o);
662
- return await l(), i;
660
+ ), T = p(
661
+ async (c) => {
662
+ const d = await m.createWorkspaceLayout(c);
663
+ return await o(), d;
663
664
  },
664
- [l]
665
- ), A = d(
666
- async (o, i) => {
667
- const g = await p.updateWorkspaceLayout(o, i);
668
- return await l(), g;
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
- [l]
671
- ), z = d(
672
- async (o) => {
673
- const i = await p.deleteWorkspaceLayout(o);
674
- return i && await l(), i;
671
+ [o]
672
+ ), I = p(
673
+ async (c) => {
674
+ const d = await m.deleteWorkspaceLayout(c);
675
+ return d && await o(), d;
675
676
  },
676
- [l]
677
- ), I = d(
678
- async (o) => {
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 i = await p.getWorkspaceLayout(o);
684
- if (!i) {
685
- console.error(`Workspace ${o} not found`);
684
+ const d = await m.getWorkspaceLayout(c);
685
+ if (!d) {
686
+ console.error(`Workspace ${c} not found`);
686
687
  return;
687
688
  }
688
- const g = {
689
- workspaceId: o,
690
- sizes: i.defaultSizes || { left: 20, middle: 45, right: 35 },
691
- collapsed: i.defaultCollapsed || {
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 p.setRepositoryState(e, g), await l();
697
+ await m.setRepositoryState(e, S), await o();
697
698
  },
698
- [e, l]
699
- ), L = d(
700
- async (o) => {
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 p.updateRepositorySizes(e, o), await l();
706
+ await m.updateRepositorySizes(e, c), await o();
706
707
  },
707
- [e, l]
708
- ), O = d(
709
- async (o) => {
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 p.updateRepositoryCollapsed(
715
+ await m.updateRepositoryCollapsed(
715
716
  e,
716
- o
717
- ), await l();
717
+ c
718
+ ), await o();
718
719
  },
719
- [e, l]
720
- ), r = d(async () => {
721
- if (!e || !(u != null && u.workspaceId)) {
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 p.resetRepositoryToWorkspaceDefaults(
726
+ await m.resetRepositoryToWorkspaceDefaults(
726
727
  e,
727
- u.workspaceId
728
- ), await l();
729
- }, [e, u == null ? void 0 : u.workspaceId, l]), c = d(async () => {
730
- await l();
731
- }, [l]);
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: u,
735
- activeWorkspace: E,
736
- loading: v,
737
- error: k,
738
- getWorkspace: W,
739
- createWorkspace: P,
740
- updateWorkspace: A,
741
- deleteWorkspace: z,
742
- applyWorkspace: I,
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: O,
745
- resetToDefaults: r,
746
- refresh: c
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
- q as EditableConfigurablePanelLayout,
751
- F as LocalStoragePersistenceAdapter,
752
- V as LocalStorageWorkspaceAdapter,
753
- K as ResponsiveConfigurablePanelLayout,
754
- p as WorkspaceLayoutService,
755
- X as mapThemeToPanelVars,
756
- M as mapThemeToTabVars,
757
- x as usePanelPersistence,
758
- J as useWorkspace
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