bwin 0.1.1 → 0.1.2
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/bwin.css +1 -1
- package/dist/bwin.js +438 -357
- package/package.json +2 -3
package/dist/bwin.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--bw-font-family: system-ui;--bw-font-size: 14px;--bw-drop-area-bg-color: hsl(0, 0%, 0%, .05);--bw-glass-clearance: 2px;--bw-glass-border-radius: 2px;--bw-glass-border-color: hsl(0, 0%, 10%);--bw-glass-border-color-disabled: hsl(0, 0%, 80%);--bw-glass-bg-color-disabled: hsl(0, 0%,
|
|
1
|
+
:root{--bw-font-family: system-ui;--bw-font-size: 14px;--bw-drop-area-bg-color: hsl(0, 0%, 0%, .05);--bw-glass-clearance: 2px;--bw-glass-border-radius: 2px;--bw-glass-border-color: hsl(0, 0%, 10%);--bw-glass-border-color-disabled: hsl(0, 0%, 80%);--bw-glass-bg-color-disabled: hsl(0, 0%, 97%);--bw-glass-header-height: 30px;--bw-glass-header-gap: 4px;--bw-glass-header-bg-color: hsl(0, 0%, 97%);--bw-sill-gap: 6px}.body--bw-resize-x{-webkit-user-select:none;user-select:none;cursor:ew-resize}.body--bw-resize-y{-webkit-user-select:none;user-select:none;cursor:ns-resize}bw-window{position:absolute;display:block;box-sizing:border-box}bw-window:has(>bw-pane[maximized])>:is(bw-pane,bw-muntin):not([maximized]){display:none}bw-pane{position:absolute;overflow:auto;box-sizing:border-box;background-color:#f2f2f2}bw-pane[drop-area]:before{content:"";position:absolute;background-color:var(--bw-drop-area-bg-color)}bw-pane[drop-area=top]:before{top:0;left:0;right:0;height:50%}bw-pane[drop-area=right]:before{top:0;right:0;bottom:0;width:50%}bw-pane[drop-area=bottom]:before{bottom:0;left:0;right:0;height:50%}bw-pane[drop-area=left]:before{top:0;left:0;bottom:0;width:50%}bw-pane[drop-area=center]:before{top:0;left:0;right:0;bottom:0}bw-muntin{box-sizing:border-box;position:absolute;background-color:#fff}bw-muntin[horizontal]{cursor:ns-resize}bw-muntin[vertical]{cursor:ew-resize}bw-muntin[resizable=false]{cursor:auto}bw-window:has(bw-glass) bw-pane{background-color:transparent}bw-window:has(bw-glass) bw-pane[drop-area]:before{z-index:1}bw-window:has(bw-glass) bw-pane[drop-area=top]:before{top:var(--bw-glass-clearance);left:var(--bw-glass-clearance);right:var(--bw-glass-clearance);height:50%}bw-window:has(bw-glass) bw-pane[drop-area=right]:before{top:var(--bw-glass-clearance);right:var(--bw-glass-clearance);bottom:var(--bw-glass-clearance);width:50%}bw-window:has(bw-glass) bw-pane[drop-area=bottom]:before{bottom:var(--bw-glass-clearance);left:var(--bw-glass-clearance);right:var(--bw-glass-clearance);height:50%}bw-window:has(bw-glass) bw-pane[drop-area=left]:before{top:var(--bw-glass-clearance);left:var(--bw-glass-clearance);bottom:var(--bw-glass-clearance);width:50%}bw-window:has(bw-glass) bw-pane[drop-area=center]:before{inset:var(--bw-glass-clearance)}bw-window:has(bw-glass) bw-muntin{background-color:transparent}bw-glass{position:absolute;inset:var(--bw-glass-clearance);display:flex;flex-direction:column;border:1px solid var(--bw-glass-border-color);border-radius:var(--bw-glass-border-radius);background-color:#fff;font-family:var(--bw-font-family);font-size:var(--bw-font-size);box-sizing:border-box}bw-glass[draggable=true]:active{cursor:move;opacity:.4}bw-glass-header{box-sizing:border-box;display:flex;flex-basis:var(--bw-glass-header-height);align-items:center;gap:var(--bw-glass-header-gap);overflow:hidden;padding-inline:var(--bw-glass-header-gap);border-bottom:1px solid var(--bw-glass-border-color);border-top-left-radius:var(--bw-glass-border-radius);border-top-right-radius:var(--bw-glass-border-radius);background-color:var(--bw-glass-header-bg-color)}bw-glass-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}bw-glass-tab-container{align-self:flex-end;display:flex;gap:var(--bw-glass-header-gap)}.bw-glass-tab{font-family:var(--bw-font-family);border:1px solid var(--bw-glass-border-color);border-bottom:none;border-top-left-radius:var(--bw-glass-border-radius);border-top-right-radius:var(--bw-glass-border-radius);cursor:pointer}.bw-glass-tab:hover{background-color:#fff}.bw-glass-tab:active{transform:translateY(1px)}bw-glass-action-container{margin-left:auto;display:flex;flex-shrink:0;gap:2px}.bw-glass-action{font-family:var(--bw-font-family);border:1px solid var(--bw-glass-border-color);border-radius:var(--bw-glass-border-radius);cursor:pointer}.bw-glass-action:hover{background-color:#fff}.bw-glass-action:active{transform:scale(.95)}.bw-glass-action:disabled{border:1px solid var(--bw-glass-border-color-disabled);background-color:var(--bw-glass-bg-color-disabled);cursor:not-allowed}.bw-glass-action:disabled:hover{background-color:var(--bw-glass-bg-color-disabled)}.bw-glass-action:disabled:active{transform:scale(1)}.bw-glass-action--close:before{content:"✕"}.bw-glass-action--maximize:before{content:"☐"}bw-pane[maximized] .bw-glass-action--maximize:before{content:"□"}.bw-glass-action--minimize:before{content:"−"}bw-glass-content{display:block;box-sizing:border-box;overflow:auto;flex-grow:1}bw-sill{position:absolute;top:100%;margin-top:calc(var(--bw-sill-gap) - var(--bw-glass-clearance));width:100%;display:flex;gap:var(--bw-sill-gap);box-sizing:border-box;padding-inline:var(--bw-glass-clearance)}.bw-minimized-glass{display:block;flex-basis:10%;height:10px;border:1px solid var(--bw-glass-border-color);border-radius:var(--bw-glass-border-radius);cursor:pointer;background-color:var(--bw-glass-header-bg-color)}.bw-minimized-glass:hover{background-color:#fff}.bw-minimized-glass:active{transform:scale(.95)}
|
package/dist/bwin.js
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
1
|
+
var B = Object.defineProperty;
|
|
2
|
+
var $ = (e, t, i) => t in e ? B(e, t, { enumerable: !0, configurable: !0, writable: !0, value: i }) : e[t] = i;
|
|
3
|
+
var f = (e, t, i) => $(e, typeof t != "symbol" ? t + "" : t, i);
|
|
4
4
|
function W(e = 0.7, t = 128) {
|
|
5
|
-
const i = 256 - t, n = Math.floor(Math.random() * i + t),
|
|
6
|
-
return `rgba(${n}, ${
|
|
5
|
+
const i = 256 - t, n = Math.floor(Math.random() * i + t), s = Math.floor(Math.random() * i + t), o = Math.floor(Math.random() * i + t), h = Math.max(0.5, Math.random() * e);
|
|
6
|
+
return `rgba(${n}, ${s}, ${o}, ${h})`;
|
|
7
7
|
}
|
|
8
|
-
function
|
|
8
|
+
function z(e = 2, t = 3) {
|
|
9
9
|
if (e < 0 || t < 0)
|
|
10
10
|
throw new Error("Parameters must be non-negative numbers");
|
|
11
11
|
const i = "ABCDEFGHIJKLMNOPQRSTUVWXYZ", n = "0123456789";
|
|
12
|
-
let
|
|
13
|
-
for (let
|
|
14
|
-
const
|
|
15
|
-
|
|
12
|
+
let s = "";
|
|
13
|
+
for (let o = 0; o < e; o++) {
|
|
14
|
+
const h = Math.floor(Math.random() * i.length);
|
|
15
|
+
s += i[h];
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
for (let
|
|
19
|
-
const
|
|
20
|
-
|
|
17
|
+
s += "-";
|
|
18
|
+
for (let o = 0; o < t; o++) {
|
|
19
|
+
const h = Math.floor(Math.random() * n.length);
|
|
20
|
+
s += n[h];
|
|
21
21
|
}
|
|
22
|
-
return
|
|
22
|
+
return s;
|
|
23
23
|
}
|
|
24
|
-
function
|
|
24
|
+
function E(e, t) {
|
|
25
25
|
for (; t.firstChild; )
|
|
26
26
|
e.append(t.firstChild);
|
|
27
27
|
}
|
|
28
28
|
function H(e, t) {
|
|
29
29
|
const i = document.createElement("div");
|
|
30
|
-
|
|
30
|
+
E(i, e), E(e, t), E(t, i);
|
|
31
31
|
}
|
|
32
|
-
function
|
|
32
|
+
function y(e) {
|
|
33
33
|
if (typeof e == "number" && !isNaN(e))
|
|
34
34
|
return e;
|
|
35
35
|
if (typeof e == "string") {
|
|
@@ -61,23 +61,27 @@ function O(e, t) {
|
|
|
61
61
|
}
|
|
62
62
|
return e;
|
|
63
63
|
}
|
|
64
|
-
function
|
|
64
|
+
function G(e) {
|
|
65
65
|
const t = document.createElement("template");
|
|
66
66
|
return t.innerHTML = e.trim(), t.content;
|
|
67
67
|
}
|
|
68
|
-
function
|
|
68
|
+
function C(e) {
|
|
69
69
|
if (e == null || e === "")
|
|
70
70
|
return null;
|
|
71
71
|
if (typeof e == "string")
|
|
72
72
|
try {
|
|
73
|
-
const t =
|
|
73
|
+
const t = G(e);
|
|
74
74
|
return t.childNodes.length === 1 ? t.firstChild : t;
|
|
75
75
|
} catch {
|
|
76
76
|
return document.createTextNode(e);
|
|
77
77
|
}
|
|
78
78
|
return e instanceof Node ? e : document.createTextNode(String(e));
|
|
79
79
|
}
|
|
80
|
-
|
|
80
|
+
function P(e) {
|
|
81
|
+
const t = parseFloat(e.style.left) || 0, i = parseFloat(e.style.top) || 0, n = parseFloat(e.style.width) || 0, s = parseFloat(e.style.height) || 0;
|
|
82
|
+
return { left: t, top: i, width: n, height: s };
|
|
83
|
+
}
|
|
84
|
+
const r = {
|
|
81
85
|
Top: "top",
|
|
82
86
|
Right: "right",
|
|
83
87
|
Bottom: "bottom",
|
|
@@ -87,16 +91,16 @@ const h = {
|
|
|
87
91
|
Unknown: "unknown",
|
|
88
92
|
Outside: "outside"
|
|
89
93
|
};
|
|
90
|
-
function
|
|
94
|
+
function F(e) {
|
|
91
95
|
switch (e) {
|
|
92
|
-
case
|
|
93
|
-
return
|
|
94
|
-
case
|
|
95
|
-
return
|
|
96
|
-
case
|
|
97
|
-
return
|
|
98
|
-
case
|
|
99
|
-
return
|
|
96
|
+
case r.Top:
|
|
97
|
+
return r.Bottom;
|
|
98
|
+
case r.Right:
|
|
99
|
+
return r.Left;
|
|
100
|
+
case r.Bottom:
|
|
101
|
+
return r.Top;
|
|
102
|
+
case r.Left:
|
|
103
|
+
return r.Right;
|
|
100
104
|
default:
|
|
101
105
|
throw new Error(`[bwin] Invalid position: ${e}`);
|
|
102
106
|
}
|
|
@@ -104,47 +108,47 @@ function G(e) {
|
|
|
104
108
|
function _({ width: e, height: t, x: i }) {
|
|
105
109
|
return t / e * i;
|
|
106
110
|
}
|
|
107
|
-
function
|
|
111
|
+
function k({ width: e, height: t, y: i }) {
|
|
108
112
|
return e / t * i;
|
|
109
113
|
}
|
|
110
|
-
function
|
|
114
|
+
function U({ width: e, height: t, x: i }) {
|
|
111
115
|
return t - t / e * i;
|
|
112
116
|
}
|
|
113
|
-
function
|
|
117
|
+
function Y({ width: e, height: t, y: i }) {
|
|
114
118
|
return e - e / t * i;
|
|
115
119
|
}
|
|
116
|
-
function
|
|
117
|
-
const n = e.getBoundingClientRect(), { width:
|
|
118
|
-
if (
|
|
119
|
-
return
|
|
120
|
-
const a = 0.3, c = _({ width:
|
|
121
|
-
return
|
|
120
|
+
function X(e, { clientX: t, clientY: i }) {
|
|
121
|
+
const n = e.getBoundingClientRect(), { width: s, height: o } = n, h = t - n.left, l = i - n.top;
|
|
122
|
+
if (h < 0 || h > s || l < 0 || l > o)
|
|
123
|
+
return r.Outside;
|
|
124
|
+
const a = 0.3, c = _({ width: s, height: o, x: h }), d = U({ width: s, height: o, x: h }), g = k({ width: s, height: o, y: l }), u = Y({ width: s, height: o, y: l });
|
|
125
|
+
return h < s * (0.5 - a / 2) && l > c && l < d ? r.Left : h > s * (0.5 + a / 2) && l < c && l > d ? r.Right : l < o * (0.5 - a / 2) && h > g && h < u ? r.Top : l > o * (0.5 + a / 2) && h < g && h > u ? r.Bottom : h > s * (0.5 - a / 2) && h < s * (0.5 + a / 2) && l > o * (0.5 - a / 2) && l < o * (0.5 + a / 2) ? r.Center : r.Unknown;
|
|
122
126
|
}
|
|
123
|
-
const w = {
|
|
124
|
-
top: 0,
|
|
127
|
+
const q = 100, j = 100, w = {
|
|
125
128
|
left: 0,
|
|
126
|
-
|
|
127
|
-
|
|
129
|
+
top: 0,
|
|
130
|
+
width: 150,
|
|
131
|
+
height: 150,
|
|
128
132
|
// Initial min values, real min width/height is calculated based on children
|
|
129
|
-
minWidth:
|
|
130
|
-
minHeight:
|
|
133
|
+
minWidth: q,
|
|
134
|
+
minHeight: j
|
|
131
135
|
};
|
|
132
|
-
class
|
|
136
|
+
class p {
|
|
133
137
|
constructor({
|
|
134
|
-
|
|
135
|
-
|
|
138
|
+
left: t = w.left,
|
|
139
|
+
top: i = w.top,
|
|
136
140
|
width: n = w.width,
|
|
137
|
-
height:
|
|
138
|
-
minWidth:
|
|
139
|
-
minHeight:
|
|
141
|
+
height: s = w.height,
|
|
142
|
+
minWidth: o = w.minWidth,
|
|
143
|
+
minHeight: h = w.minHeight,
|
|
140
144
|
domNode: l = null,
|
|
141
145
|
store: a = {},
|
|
142
146
|
position: c,
|
|
143
147
|
id: d
|
|
144
148
|
} = w) {
|
|
145
|
-
if (this.id = d ??
|
|
149
|
+
if (this.id = d ?? z(), !c)
|
|
146
150
|
throw new Error("[bwin] Sash position is required");
|
|
147
|
-
this.position = c, this.domNode = l, this._top =
|
|
151
|
+
this.position = c, this.domNode = l, this._top = i, this._left = t, this._width = n, this._height = s, this.children = [], this.minWidth = o, this.minHeight = h, this.store = a;
|
|
148
152
|
}
|
|
149
153
|
walk(t) {
|
|
150
154
|
this.children.forEach((i) => i.walk(t)), t(this);
|
|
@@ -158,31 +162,31 @@ class g {
|
|
|
158
162
|
}
|
|
159
163
|
isLeftRightSplit() {
|
|
160
164
|
return this.children.some(
|
|
161
|
-
(t) => t.position ===
|
|
165
|
+
(t) => t.position === r.Left || t.position === r.Right
|
|
162
166
|
);
|
|
163
167
|
}
|
|
164
168
|
isTopBottomSplit() {
|
|
165
169
|
return this.children.some(
|
|
166
|
-
(t) => t.position ===
|
|
170
|
+
(t) => t.position === r.Top || t.position === r.Bottom
|
|
167
171
|
);
|
|
168
172
|
}
|
|
169
173
|
get leftChild() {
|
|
170
|
-
return this.children.find((t) => t.position ===
|
|
174
|
+
return this.children.find((t) => t.position === r.Left);
|
|
171
175
|
}
|
|
172
176
|
get rightChild() {
|
|
173
|
-
return this.children.find((t) => t.position ===
|
|
177
|
+
return this.children.find((t) => t.position === r.Right);
|
|
174
178
|
}
|
|
175
179
|
get topChild() {
|
|
176
|
-
return this.children.find((t) => t.position ===
|
|
180
|
+
return this.children.find((t) => t.position === r.Top);
|
|
177
181
|
}
|
|
178
182
|
get bottomChild() {
|
|
179
|
-
return this.children.find((t) => t.position ===
|
|
183
|
+
return this.children.find((t) => t.position === r.Bottom);
|
|
180
184
|
}
|
|
181
185
|
getChildren() {
|
|
182
|
-
let t = null, i = null, n = null,
|
|
183
|
-
for (const
|
|
184
|
-
|
|
185
|
-
return [n, i,
|
|
186
|
+
let t = null, i = null, n = null, s = null;
|
|
187
|
+
for (const o of this.children)
|
|
188
|
+
o.position === r.Left ? t = o : o.position === r.Right ? i = o : o.position === r.Top ? n = o : o.position === r.Bottom && (s = o);
|
|
189
|
+
return [n, i, s, t];
|
|
186
190
|
}
|
|
187
191
|
getAllLeafDescendants() {
|
|
188
192
|
const t = [];
|
|
@@ -193,27 +197,27 @@ class g {
|
|
|
193
197
|
calcMinWidth() {
|
|
194
198
|
if (this.isLeaf())
|
|
195
199
|
return this.minWidth;
|
|
196
|
-
const [t, i, n,
|
|
197
|
-
if (
|
|
198
|
-
const
|
|
199
|
-
return Math.max(this.minWidth,
|
|
200
|
+
const [t, i, n, s] = this.getChildren();
|
|
201
|
+
if (s && i) {
|
|
202
|
+
const o = s.calcMinWidth() + i.calcMinWidth();
|
|
203
|
+
return Math.max(this.minWidth, o);
|
|
200
204
|
}
|
|
201
205
|
if (t && n) {
|
|
202
|
-
const
|
|
203
|
-
return Math.max(this.minWidth,
|
|
206
|
+
const o = Math.max(t.calcMinWidth(), n.calcMinWidth());
|
|
207
|
+
return Math.max(this.minWidth, o);
|
|
204
208
|
}
|
|
205
209
|
}
|
|
206
210
|
calcMinHeight() {
|
|
207
211
|
if (this.isLeaf())
|
|
208
212
|
return this.minHeight;
|
|
209
|
-
const [t, i, n,
|
|
210
|
-
if (
|
|
211
|
-
const
|
|
212
|
-
return Math.max(this.minHeight,
|
|
213
|
+
const [t, i, n, s] = this.getChildren();
|
|
214
|
+
if (s && i) {
|
|
215
|
+
const o = Math.max(s.calcMinHeight(), i.calcMinHeight());
|
|
216
|
+
return Math.max(this.minHeight, o);
|
|
213
217
|
}
|
|
214
218
|
if (t && n) {
|
|
215
|
-
const
|
|
216
|
-
return Math.max(this.minHeight,
|
|
219
|
+
const o = t.calcMinHeight() + n.calcMinHeight();
|
|
220
|
+
return Math.max(this.minHeight, o);
|
|
217
221
|
}
|
|
218
222
|
}
|
|
219
223
|
// Get self or descendant by id
|
|
@@ -258,8 +262,8 @@ class g {
|
|
|
258
262
|
set top(t) {
|
|
259
263
|
const i = t - this._top;
|
|
260
264
|
this._top = t;
|
|
261
|
-
const [n,
|
|
262
|
-
n &&
|
|
265
|
+
const [n, s, o, h] = this.getChildren();
|
|
266
|
+
n && o && (n.top += i, o.top += i), h && s && (h.top += i, s.top += i);
|
|
263
267
|
}
|
|
264
268
|
get left() {
|
|
265
269
|
return this._left;
|
|
@@ -267,8 +271,8 @@ class g {
|
|
|
267
271
|
set left(t) {
|
|
268
272
|
const i = t - this._left;
|
|
269
273
|
this._left = t;
|
|
270
|
-
const [n,
|
|
271
|
-
|
|
274
|
+
const [n, s, o, h] = this.getChildren();
|
|
275
|
+
h && s && (h.left += i, s.left += i), n && o && (n.left += i, o.left += i);
|
|
272
276
|
}
|
|
273
277
|
get width() {
|
|
274
278
|
return this._width;
|
|
@@ -276,14 +280,14 @@ class g {
|
|
|
276
280
|
set width(t) {
|
|
277
281
|
const i = t - this._width;
|
|
278
282
|
this._width = t;
|
|
279
|
-
const [n,
|
|
280
|
-
if (
|
|
281
|
-
const l =
|
|
282
|
-
let d =
|
|
283
|
-
const m =
|
|
284
|
-
d < m &&
|
|
283
|
+
const [n, s, o, h] = this.getChildren();
|
|
284
|
+
if (h && s) {
|
|
285
|
+
const l = h.width + s.width, a = i * (h.width / l), c = l + i;
|
|
286
|
+
let d = h.width + a, g = c - d, u = s.left + a;
|
|
287
|
+
const m = h.calcMinWidth(), b = s.calcMinWidth();
|
|
288
|
+
d < m && g > b ? (d = m, g = c - d, u = h.left + d) : g < b && d > m && (g = b, d = c - g, u = h.left + d), h.width = d, s.width = g, s.left = u;
|
|
285
289
|
}
|
|
286
|
-
n &&
|
|
290
|
+
n && o && (n.width += i, o.width += i);
|
|
287
291
|
}
|
|
288
292
|
get height() {
|
|
289
293
|
return this._height;
|
|
@@ -291,42 +295,42 @@ class g {
|
|
|
291
295
|
set height(t) {
|
|
292
296
|
const i = t - this._height;
|
|
293
297
|
this._height = t;
|
|
294
|
-
const [n,
|
|
295
|
-
if (n &&
|
|
296
|
-
const l = n.height +
|
|
297
|
-
let d = n.height + a,
|
|
298
|
-
const m = n.calcMinHeight(), b =
|
|
299
|
-
d < m &&
|
|
298
|
+
const [n, s, o, h] = this.getChildren();
|
|
299
|
+
if (n && o) {
|
|
300
|
+
const l = n.height + o.height, a = i * (n.height / l), c = l + i;
|
|
301
|
+
let d = n.height + a, g = c - d, u = o.top + a;
|
|
302
|
+
const m = n.calcMinHeight(), b = o.calcMinHeight();
|
|
303
|
+
d < m && g > b ? (d = m, g = c - d, u = n.top + d) : g < b && d > m && (g = b, d = c - g, u = n.top + d), n.height = d, o.height = g, o.top = u;
|
|
300
304
|
}
|
|
301
|
-
|
|
305
|
+
h && s && (h.height += i, s.height += i);
|
|
302
306
|
}
|
|
303
307
|
}
|
|
304
|
-
const
|
|
308
|
+
const S = {
|
|
305
309
|
size: "50%",
|
|
306
|
-
position:
|
|
310
|
+
position: r.Left
|
|
307
311
|
};
|
|
308
|
-
class
|
|
312
|
+
class R {
|
|
309
313
|
constructor({
|
|
310
314
|
parentRect: t,
|
|
311
315
|
children: i,
|
|
312
316
|
siblingConfigNode: n,
|
|
313
|
-
id:
|
|
314
|
-
minWidth:
|
|
315
|
-
minHeight:
|
|
317
|
+
id: s,
|
|
318
|
+
minWidth: o,
|
|
319
|
+
minHeight: h,
|
|
316
320
|
position: l,
|
|
317
321
|
size: a,
|
|
318
322
|
...c
|
|
319
323
|
}) {
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
this.parentRect = t, this.children = i, this.siblingConfigNode = n, this.id =
|
|
324
|
+
f(this, "left");
|
|
325
|
+
f(this, "top");
|
|
326
|
+
f(this, "width");
|
|
327
|
+
f(this, "height");
|
|
328
|
+
this.parentRect = t, this.children = i, this.siblingConfigNode = n, this.id = s, this.minWidth = o, this.minHeight = h, this.position = this.getPosition(l), this.size = this.getSize(a), this.nonCoreData = c, this.setBounds();
|
|
325
329
|
}
|
|
326
330
|
getPosition(t) {
|
|
327
331
|
if (!this.siblingConfigNode)
|
|
328
332
|
return t;
|
|
329
|
-
const i =
|
|
333
|
+
const i = F(this.siblingConfigNode.position);
|
|
330
334
|
if (!t)
|
|
331
335
|
return i;
|
|
332
336
|
if (t !== i)
|
|
@@ -335,46 +339,46 @@ class M {
|
|
|
335
339
|
}
|
|
336
340
|
getSize(t) {
|
|
337
341
|
if (!this.siblingConfigNode)
|
|
338
|
-
return
|
|
342
|
+
return y(t);
|
|
339
343
|
if (!t) {
|
|
340
344
|
if (this.siblingConfigNode.size < 1)
|
|
341
345
|
return 1 - this.siblingConfigNode.size;
|
|
342
|
-
if (this.siblingConfigNode.position ===
|
|
346
|
+
if (this.siblingConfigNode.position === r.Left || this.siblingConfigNode.position === r.Right)
|
|
343
347
|
return this.parentRect.width - this.siblingConfigNode.width;
|
|
344
|
-
if (this.siblingConfigNode.position ===
|
|
348
|
+
if (this.siblingConfigNode.position === r.Top || this.siblingConfigNode.position === r.Bottom)
|
|
345
349
|
return this.parentRect.height - this.siblingConfigNode.height;
|
|
346
350
|
}
|
|
347
|
-
const i =
|
|
351
|
+
const i = y(t);
|
|
348
352
|
if (i < 1) {
|
|
349
353
|
if (i + this.siblingConfigNode.size !== 1)
|
|
350
354
|
throw new Error("[bwin] Sum of sibling sizes is not equal to 1");
|
|
351
355
|
} else {
|
|
352
|
-
if ((this.position ===
|
|
356
|
+
if ((this.position === r.Left || this.position === r.Right) && i + this.siblingConfigNode.size !== this.parentRect.width)
|
|
353
357
|
throw new Error("[bwin] Sum of sibling sizes is not equal to parent width");
|
|
354
|
-
if ((this.position ===
|
|
358
|
+
if ((this.position === r.Top || this.position === r.Bottom) && i + this.siblingConfigNode.size !== this.parentRect.height)
|
|
355
359
|
throw new Error("[bwin] Sum of sibling sizes is not equal to parent height");
|
|
356
360
|
}
|
|
357
361
|
return i;
|
|
358
362
|
}
|
|
359
363
|
setBounds() {
|
|
360
|
-
if (this.position ===
|
|
364
|
+
if (this.position === r.Root)
|
|
361
365
|
this.left = 0, this.top = 0, this.width = this.parentRect.width, this.height = this.parentRect.height;
|
|
362
|
-
else if (this.position ===
|
|
366
|
+
else if (this.position === r.Left) {
|
|
363
367
|
const t = this.size < 1 ? this.parentRect.width * this.size : this.size;
|
|
364
368
|
this.left = this.parentRect.left, this.top = this.parentRect.top, this.width = t, this.height = this.parentRect.height;
|
|
365
|
-
} else if (this.position ===
|
|
369
|
+
} else if (this.position === r.Right) {
|
|
366
370
|
const t = this.size < 1 ? this.parentRect.width * this.size : this.size;
|
|
367
371
|
this.left = this.parentRect.left + this.parentRect.width - t, this.top = this.parentRect.top, this.width = t, this.height = this.parentRect.height;
|
|
368
|
-
} else if (this.position ===
|
|
372
|
+
} else if (this.position === r.Top) {
|
|
369
373
|
const t = this.size < 1 ? this.parentRect.height * this.size : this.size;
|
|
370
374
|
this.left = this.parentRect.left, this.top = this.parentRect.top, this.width = this.parentRect.width, this.height = t;
|
|
371
|
-
} else if (this.position ===
|
|
375
|
+
} else if (this.position === r.Bottom) {
|
|
372
376
|
const t = this.size < 1 ? this.parentRect.height * this.size : this.size;
|
|
373
377
|
this.left = this.parentRect.left, this.top = this.parentRect.top + this.parentRect.height - t, this.width = this.parentRect.width, this.height = t;
|
|
374
378
|
}
|
|
375
379
|
}
|
|
376
380
|
createSash() {
|
|
377
|
-
return new
|
|
381
|
+
return new p({
|
|
378
382
|
left: this.left,
|
|
379
383
|
top: this.top,
|
|
380
384
|
width: this.width,
|
|
@@ -394,7 +398,7 @@ class M {
|
|
|
394
398
|
children: t
|
|
395
399
|
};
|
|
396
400
|
if (typeof t == "string" || typeof t == "number") {
|
|
397
|
-
const i =
|
|
401
|
+
const i = y(t);
|
|
398
402
|
if (isNaN(i))
|
|
399
403
|
throw new Error(`[bwin] Invalid size value: ${i}`);
|
|
400
404
|
return {
|
|
@@ -406,28 +410,28 @@ class M {
|
|
|
406
410
|
throw new Error(`[bwin] Invalid config value: ${t}`);
|
|
407
411
|
}
|
|
408
412
|
}
|
|
409
|
-
createPrimaryConfigNode({ size: t, position: i, children: n, id:
|
|
410
|
-
return new
|
|
413
|
+
createPrimaryConfigNode({ size: t, position: i, children: n, id: s, minWidth: o, minHeight: h, ...l }) {
|
|
414
|
+
return new R({
|
|
411
415
|
parentRect: this,
|
|
412
|
-
size: t ??
|
|
413
|
-
position: i ??
|
|
416
|
+
size: t ?? S.size,
|
|
417
|
+
position: i ?? S.position,
|
|
414
418
|
children: n,
|
|
415
|
-
id:
|
|
416
|
-
minWidth:
|
|
417
|
-
minHeight:
|
|
419
|
+
id: s,
|
|
420
|
+
minWidth: o,
|
|
421
|
+
minHeight: h,
|
|
418
422
|
...l
|
|
419
423
|
});
|
|
420
424
|
}
|
|
421
|
-
createSecondaryConfigNode({ size: t, position: i, children: n, id:
|
|
422
|
-
return new
|
|
425
|
+
createSecondaryConfigNode({ size: t, position: i, children: n, id: s, minWidth: o, minHeight: h, ...l }, a) {
|
|
426
|
+
return new R({
|
|
423
427
|
parentRect: this,
|
|
424
428
|
size: t,
|
|
425
429
|
position: i,
|
|
426
430
|
children: n,
|
|
427
431
|
siblingConfigNode: a,
|
|
428
|
-
id:
|
|
429
|
-
minWidth:
|
|
430
|
-
minHeight:
|
|
432
|
+
id: s,
|
|
433
|
+
minWidth: o,
|
|
434
|
+
minHeight: h,
|
|
431
435
|
...l
|
|
432
436
|
});
|
|
433
437
|
}
|
|
@@ -436,64 +440,158 @@ class M {
|
|
|
436
440
|
if (!Array.isArray(this.children) || this.children.length === 0)
|
|
437
441
|
return t;
|
|
438
442
|
const i = this.normConfig(this.children[0]), n = this.normConfig(this.children.at(1));
|
|
439
|
-
let
|
|
440
|
-
return !i.size && !i.position && n ? (n.position || (n.position =
|
|
443
|
+
let s, o;
|
|
444
|
+
return !i.size && !i.position && n ? (n.position || (n.position = r.Right), s = this.createPrimaryConfigNode(n), o = this.createSecondaryConfigNode(
|
|
441
445
|
i,
|
|
442
|
-
|
|
443
|
-
)) : (
|
|
446
|
+
s
|
|
447
|
+
)) : (s = this.createPrimaryConfigNode(i), o = this.createSecondaryConfigNode(
|
|
444
448
|
n,
|
|
445
|
-
|
|
446
|
-
)),
|
|
449
|
+
s
|
|
450
|
+
)), s && o && (t.children.push(s.buildSashTree()), t.children.push(o.buildSashTree())), t;
|
|
447
451
|
}
|
|
448
452
|
}
|
|
449
|
-
const
|
|
453
|
+
const A = {
|
|
450
454
|
width: 333,
|
|
451
455
|
height: 333
|
|
452
|
-
},
|
|
456
|
+
}, D = {
|
|
453
457
|
fitContainer: !1
|
|
454
458
|
};
|
|
455
|
-
class
|
|
459
|
+
class K extends R {
|
|
456
460
|
constructor({
|
|
457
461
|
id: t,
|
|
458
462
|
children: i,
|
|
459
|
-
width: n =
|
|
460
|
-
height:
|
|
461
|
-
fitContainer:
|
|
462
|
-
...
|
|
463
|
+
width: n = A.width,
|
|
464
|
+
height: s = A.height,
|
|
465
|
+
fitContainer: o = D.fitContainer,
|
|
466
|
+
...h
|
|
463
467
|
} = {
|
|
464
|
-
...
|
|
465
|
-
...
|
|
468
|
+
...A,
|
|
469
|
+
...D
|
|
466
470
|
}) {
|
|
467
471
|
super({
|
|
468
472
|
id: t,
|
|
469
473
|
children: i,
|
|
470
474
|
size: NaN,
|
|
471
|
-
position:
|
|
472
|
-
parentRect: { width: n, height:
|
|
473
|
-
...
|
|
474
|
-
}), this.fitContainer =
|
|
475
|
+
position: r.Root,
|
|
476
|
+
parentRect: { width: n, height: s },
|
|
477
|
+
...h
|
|
478
|
+
}), this.fitContainer = o;
|
|
475
479
|
}
|
|
476
480
|
}
|
|
477
|
-
class
|
|
481
|
+
class V extends p {
|
|
478
482
|
constructor(t = w) {
|
|
479
|
-
super({ ...t, position:
|
|
483
|
+
super({ ...t, position: r.Root }), Object.assign(this, D);
|
|
480
484
|
}
|
|
481
485
|
}
|
|
482
|
-
|
|
486
|
+
function M(e) {
|
|
487
|
+
const t = document.createElement("bw-pane");
|
|
488
|
+
return t.style.top = `${e.top}px`, t.style.left = `${e.left}px`, t.style.width = `${e.width}px`, t.style.height = `${e.height}px`, t.setAttribute("sash-id", e.id), t.setAttribute("position", e.position), t;
|
|
489
|
+
}
|
|
490
|
+
function J(e) {
|
|
491
|
+
const t = e.domNode;
|
|
492
|
+
return t.style.top = `${e.top}px`, t.style.left = `${e.left}px`, t.style.width = `${e.width}px`, t.style.height = `${e.height}px`, t.setAttribute("position", e.position), t;
|
|
493
|
+
}
|
|
494
|
+
function Q(e, { size: t }) {
|
|
495
|
+
const i = y(t);
|
|
496
|
+
let n = e.width / 2;
|
|
497
|
+
i && (i < 1 ? n = e.width * i : n = i);
|
|
498
|
+
const s = new p({
|
|
499
|
+
top: e.top,
|
|
500
|
+
left: e.left,
|
|
501
|
+
width: n,
|
|
502
|
+
height: e.height,
|
|
503
|
+
position: r.Left
|
|
504
|
+
}), o = new p({
|
|
505
|
+
top: e.top,
|
|
506
|
+
left: e.left + s.width,
|
|
507
|
+
width: e.width - n,
|
|
508
|
+
height: e.height,
|
|
509
|
+
position: r.Right
|
|
510
|
+
}), h = M(o);
|
|
511
|
+
return o.domNode = h, E(h, e.domNode), e.addChild(s), e.addChild(o), s;
|
|
512
|
+
}
|
|
513
|
+
function Z(e, { size: t }) {
|
|
514
|
+
const i = y(t);
|
|
515
|
+
let n = e.width / 2;
|
|
516
|
+
i && (i < 1 ? n = e.width * i : n = i);
|
|
517
|
+
const s = new p({
|
|
518
|
+
left: e.left,
|
|
519
|
+
top: e.top,
|
|
520
|
+
width: e.width - n,
|
|
521
|
+
height: e.height,
|
|
522
|
+
position: r.Left
|
|
523
|
+
}), o = new p({
|
|
524
|
+
left: e.left + s.width,
|
|
525
|
+
top: e.top,
|
|
526
|
+
width: n,
|
|
527
|
+
height: e.height,
|
|
528
|
+
position: r.Right
|
|
529
|
+
}), h = M(s);
|
|
530
|
+
return s.domNode = h, E(h, e.domNode), e.addChild(s), e.addChild(o), o;
|
|
531
|
+
}
|
|
532
|
+
function tt(e, { size: t }) {
|
|
533
|
+
const i = y(t);
|
|
534
|
+
let n = e.height / 2;
|
|
535
|
+
i && (i < 1 ? n = e.height * i : n = i);
|
|
536
|
+
const s = new p({
|
|
537
|
+
left: e.left,
|
|
538
|
+
top: e.top,
|
|
539
|
+
width: e.width,
|
|
540
|
+
height: n,
|
|
541
|
+
position: r.Top
|
|
542
|
+
}), o = new p({
|
|
543
|
+
left: e.left,
|
|
544
|
+
top: e.top + s.height,
|
|
545
|
+
width: e.width,
|
|
546
|
+
height: e.height - n,
|
|
547
|
+
position: r.Bottom
|
|
548
|
+
}), h = M(o);
|
|
549
|
+
return o.domNode = h, E(h, e.domNode), e.addChild(s), e.addChild(o), s;
|
|
550
|
+
}
|
|
551
|
+
function et(e, { size: t }) {
|
|
552
|
+
const i = y(t);
|
|
553
|
+
let n = e.height / 2;
|
|
554
|
+
i && (i < 1 ? n = e.height * i : n = i);
|
|
555
|
+
const s = new p({
|
|
556
|
+
top: e.top,
|
|
557
|
+
left: e.left,
|
|
558
|
+
width: e.width,
|
|
559
|
+
height: e.height - n,
|
|
560
|
+
position: r.Top
|
|
561
|
+
}), o = new p({
|
|
562
|
+
top: e.top + s.height,
|
|
563
|
+
left: e.left,
|
|
564
|
+
width: e.width,
|
|
565
|
+
height: n,
|
|
566
|
+
position: r.Bottom
|
|
567
|
+
}), h = M(s);
|
|
568
|
+
return s.domNode = h, E(h, e.domNode), e.addChild(s), e.addChild(o), o;
|
|
569
|
+
}
|
|
570
|
+
function it(e, { position: t, size: i, minWidth: n, minHeight: s }) {
|
|
571
|
+
if (t === r.Left)
|
|
572
|
+
return Q(e, { size: i });
|
|
573
|
+
if (t === r.Right)
|
|
574
|
+
return Z(e, { size: i });
|
|
575
|
+
if (t === r.Top)
|
|
576
|
+
return tt(e, { size: i });
|
|
577
|
+
if (t === r.Bottom)
|
|
578
|
+
return et(e, { size: i });
|
|
579
|
+
}
|
|
580
|
+
const nt = {
|
|
483
581
|
createPane(e) {
|
|
484
|
-
const t =
|
|
582
|
+
const t = M(e);
|
|
485
583
|
return e.store.droppable === !1 && t.setAttribute("can-drop", "false"), t;
|
|
486
584
|
},
|
|
487
585
|
// Intended to be overridden
|
|
488
586
|
onPaneCreate(e, t) {
|
|
489
|
-
t.store.content && e.append(
|
|
587
|
+
t.store.content && e.append(C(t.store.content)), this != null && this.debug && (e.style.backgroundColor = W(), e.innerHTML = "", e.append(v(e)));
|
|
490
588
|
},
|
|
491
589
|
updatePane(e) {
|
|
492
|
-
return
|
|
590
|
+
return J(e);
|
|
493
591
|
},
|
|
494
592
|
// Intended to be overridden
|
|
495
593
|
onPaneUpdate(e, t) {
|
|
496
|
-
this != null && this.debug && (e.innerHTML = "", e.append(
|
|
594
|
+
this != null && this.debug && (e.innerHTML = "", e.append(v(e)));
|
|
497
595
|
},
|
|
498
596
|
/**
|
|
499
597
|
* Add a pane into the target pane. The two panes become next to each other
|
|
@@ -502,12 +600,12 @@ const K = {
|
|
|
502
600
|
* @param {'top'|'right'|'bottom'|'left'} position - The position of the new pane relative to the target pane
|
|
503
601
|
* @returns {Sash} - The newly created sash
|
|
504
602
|
*/
|
|
505
|
-
addPane(e, t) {
|
|
603
|
+
addPane(e, { position: t, size: i }) {
|
|
506
604
|
if (!t) throw new Error("[bwin] Position is required when adding pane");
|
|
507
|
-
const
|
|
508
|
-
if (!
|
|
509
|
-
const
|
|
510
|
-
return
|
|
605
|
+
const n = this.rootSash.getById(e);
|
|
606
|
+
if (!n) throw new Error("[bwin] Parent sash not found when adding pane");
|
|
607
|
+
const s = it(n, { position: t, size: i });
|
|
608
|
+
return n.id = z(), this.update(), s;
|
|
511
609
|
},
|
|
512
610
|
/**
|
|
513
611
|
* Remove a pane
|
|
@@ -518,117 +616,31 @@ const K = {
|
|
|
518
616
|
const t = this.rootSash.getDescendantParentById(e);
|
|
519
617
|
if (!t) throw new Error("[bwin] Parent sash not found when removing pane");
|
|
520
618
|
const i = t.getChildSiblingById(e);
|
|
521
|
-
t.id =
|
|
619
|
+
t.id = z(), i.children.length === 0 ? (t.domNode = i.domNode, t.domNode.setAttribute("sash-id", t.id), t.children = []) : (t.children = i.children, i.position === r.Left ? i.width = t.width : i.position === r.Right ? (i.width = t.width, i.left = t.left) : i.position === r.Top ? i.height = t.height : i.position === r.Bottom && (i.height = t.height, i.top = t.top)), this.update();
|
|
522
620
|
}
|
|
523
621
|
};
|
|
524
|
-
function
|
|
525
|
-
const t = document.createElement("bw-pane");
|
|
526
|
-
return t.style.top = `${e.top}px`, t.style.left = `${e.left}px`, t.style.width = `${e.width}px`, t.style.height = `${e.height}px`, t.setAttribute("sash-id", e.id), t.setAttribute("position", e.position), t;
|
|
527
|
-
}
|
|
528
|
-
function V(e) {
|
|
529
|
-
const t = e.domNode;
|
|
530
|
-
return t.style.top = `${e.top}px`, t.style.left = `${e.left}px`, t.style.width = `${e.width}px`, t.style.height = `${e.height}px`, t.setAttribute("position", e.position), t;
|
|
531
|
-
}
|
|
532
|
-
function J(e) {
|
|
533
|
-
const t = new g({
|
|
534
|
-
top: e.top,
|
|
535
|
-
left: e.left,
|
|
536
|
-
width: e.width / 2,
|
|
537
|
-
height: e.height,
|
|
538
|
-
position: h.Left
|
|
539
|
-
}), i = new g({
|
|
540
|
-
top: e.top,
|
|
541
|
-
left: e.left + t.width,
|
|
542
|
-
width: e.width / 2,
|
|
543
|
-
height: e.height,
|
|
544
|
-
position: h.Right
|
|
545
|
-
}), n = N(i);
|
|
546
|
-
return i.domNode = n, C(n, e.domNode), e.addChild(t), e.addChild(i), t;
|
|
547
|
-
}
|
|
548
|
-
function Q(e) {
|
|
549
|
-
const t = new g({
|
|
550
|
-
top: e.top,
|
|
551
|
-
left: e.left,
|
|
552
|
-
width: e.width / 2,
|
|
553
|
-
height: e.height,
|
|
554
|
-
position: h.Left
|
|
555
|
-
}), i = N(t);
|
|
556
|
-
t.domNode = i, C(i, e.domNode);
|
|
557
|
-
const n = new g({
|
|
558
|
-
top: e.top,
|
|
559
|
-
left: e.left + t.width,
|
|
560
|
-
width: e.width / 2,
|
|
561
|
-
height: e.height,
|
|
562
|
-
position: h.Right
|
|
563
|
-
});
|
|
564
|
-
return e.addChild(t), e.addChild(n), n;
|
|
565
|
-
}
|
|
566
|
-
function Z(e) {
|
|
567
|
-
const t = new g({
|
|
568
|
-
top: e.top,
|
|
569
|
-
left: e.left,
|
|
570
|
-
width: e.width,
|
|
571
|
-
height: e.height / 2,
|
|
572
|
-
position: h.Top
|
|
573
|
-
}), i = new g({
|
|
574
|
-
top: e.top + t.height,
|
|
575
|
-
left: e.left,
|
|
576
|
-
width: e.width,
|
|
577
|
-
height: e.height / 2,
|
|
578
|
-
position: h.Bottom
|
|
579
|
-
}), n = N(i);
|
|
580
|
-
return i.domNode = n, C(n, e.domNode), e.addChild(t), e.addChild(i), t;
|
|
581
|
-
}
|
|
582
|
-
function tt(e) {
|
|
583
|
-
const t = new g({
|
|
584
|
-
top: e.top,
|
|
585
|
-
left: e.left,
|
|
586
|
-
width: e.width,
|
|
587
|
-
height: e.height / 2,
|
|
588
|
-
position: h.Top
|
|
589
|
-
}), i = N(t);
|
|
590
|
-
t.domNode = i, C(i, e.domNode);
|
|
591
|
-
const n = new g({
|
|
592
|
-
top: e.top + t.height,
|
|
593
|
-
left: e.left,
|
|
594
|
-
width: e.width,
|
|
595
|
-
height: e.height / 2,
|
|
596
|
-
position: h.Bottom
|
|
597
|
-
});
|
|
598
|
-
return e.addChild(t), e.addChild(n), n;
|
|
599
|
-
}
|
|
600
|
-
function et(e, t) {
|
|
601
|
-
if (t === h.Left)
|
|
602
|
-
return J(e);
|
|
603
|
-
if (t === h.Right)
|
|
604
|
-
return Q(e);
|
|
605
|
-
if (t === h.Top)
|
|
606
|
-
return Z(e);
|
|
607
|
-
if (t === h.Bottom)
|
|
608
|
-
return tt(e);
|
|
609
|
-
}
|
|
610
|
-
function S(e) {
|
|
622
|
+
function v(e) {
|
|
611
623
|
const t = document.createElement("pre");
|
|
612
624
|
t.style.fontSize = "10px";
|
|
613
625
|
const i = `
|
|
614
|
-
|
|
626
|
+
${e.getAttribute("sash-id")}
|
|
627
|
+
${e.getAttribute("position")}
|
|
615
628
|
top: ${e.style.top}
|
|
616
629
|
left: ${e.style.left}
|
|
617
630
|
width: ${e.style.width}
|
|
618
631
|
height: ${e.style.height}
|
|
619
|
-
position: ${e.getAttribute("position")}
|
|
620
632
|
`;
|
|
621
633
|
return t.innerHTML = i.trim(), t;
|
|
622
634
|
}
|
|
623
|
-
const
|
|
635
|
+
const st = {
|
|
624
636
|
createWindow() {
|
|
625
637
|
const e = document.createElement("bw-window");
|
|
626
638
|
return e.style.width = `${this.rootSash.width}px`, e.style.height = `${this.rootSash.height}px`, e.setAttribute("sash-id", this.rootSash.id), e;
|
|
627
639
|
},
|
|
628
|
-
glaze(
|
|
629
|
-
this.rootSash.walk((
|
|
630
|
-
let
|
|
631
|
-
|
|
640
|
+
glaze() {
|
|
641
|
+
this.rootSash.walk((e) => {
|
|
642
|
+
let t = null;
|
|
643
|
+
e.children.length > 0 ? (t = this.createMuntin(e), this.onMuntinCreate(t, e), this.windowElement.append(t)) : (t = this.createPane(e), this.onPaneCreate(t, e), this.windowElement.prepend(t)), e.domNode = t;
|
|
632
644
|
});
|
|
633
645
|
},
|
|
634
646
|
update() {
|
|
@@ -641,7 +653,7 @@ const it = {
|
|
|
641
653
|
i.children.length > 0 ? t.includes(i.id) ? (this.updateMuntin(i), this.onMuntinUpdate(i.domNode, i)) : (i.domNode = this.createMuntin(i), this.windowElement.append(i.domNode)) : t.includes(i.id) ? (this.updatePane(i), this.onPaneUpdate(i.domNode, i)) : (i.domNode || (i.domNode = this.createPane(i)), this.windowElement.prepend(i.domNode));
|
|
642
654
|
});
|
|
643
655
|
}
|
|
644
|
-
},
|
|
656
|
+
}, ot = {
|
|
645
657
|
muntinSize: 4,
|
|
646
658
|
createMuntin(e) {
|
|
647
659
|
const t = document.createElement("bw-muntin"), i = e.leftChild, n = e.topChild;
|
|
@@ -655,7 +667,7 @@ const it = {
|
|
|
655
667
|
},
|
|
656
668
|
onMuntinUpdate(e, t) {
|
|
657
669
|
}
|
|
658
|
-
},
|
|
670
|
+
}, ht = {
|
|
659
671
|
fitContainer: !1,
|
|
660
672
|
enableFitContainer() {
|
|
661
673
|
new ResizeObserver((t) => {
|
|
@@ -663,7 +675,7 @@ const it = {
|
|
|
663
675
|
i.target === this.containerElement && this.fitContainer && (this.rootSash.width = i.contentRect.width, this.rootSash.height = i.contentRect.height, this.update());
|
|
664
676
|
}).observe(this.containerElement);
|
|
665
677
|
}
|
|
666
|
-
},
|
|
678
|
+
}, rt = {
|
|
667
679
|
activeMuntinSash: null,
|
|
668
680
|
isResizeStarted: !1,
|
|
669
681
|
isDropStarted: !1,
|
|
@@ -682,13 +694,13 @@ const it = {
|
|
|
682
694
|
this.activeMuntinSash = this.rootSash.getById(t), this.activeMuntinSash && (this.isResizeStarted = !0, this.lastX = e.pageX, this.lastY = e.pageY, this.applyResizeStyles());
|
|
683
695
|
}), document.addEventListener("mousemove", (e) => {
|
|
684
696
|
if (!this.isResizeStarted || !this.activeMuntinSash) return;
|
|
685
|
-
const [t, i, n,
|
|
686
|
-
if (
|
|
687
|
-
const l = e.pageX - this.lastX, a =
|
|
688
|
-
if (a <=
|
|
697
|
+
const [t, i, n, s] = this.activeMuntinSash.getChildren(), o = this.activeMuntinSash.isLeftRightSplit(), h = this.activeMuntinSash.isTopBottomSplit();
|
|
698
|
+
if (o && s && i) {
|
|
699
|
+
const l = e.pageX - this.lastX, a = s.width + l, c = i.width - l;
|
|
700
|
+
if (a <= s.calcMinWidth() || c <= i.calcMinWidth())
|
|
689
701
|
return;
|
|
690
|
-
|
|
691
|
-
} else if (
|
|
702
|
+
s.width = a, i.width = c, i.left = i.left + l, this.update(), this.lastX = e.pageX;
|
|
703
|
+
} else if (h && t && n) {
|
|
692
704
|
const l = e.pageY - this.lastY, a = t.height + l, c = n.height - l;
|
|
693
705
|
if (a <= t.calcMinHeight() || c <= n.calcMinHeight())
|
|
694
706
|
return;
|
|
@@ -698,7 +710,7 @@ const it = {
|
|
|
698
710
|
this.isResizeStarted = !1, this.activeMuntinSash = null, this.revertResizeStyles();
|
|
699
711
|
});
|
|
700
712
|
}
|
|
701
|
-
},
|
|
713
|
+
}, lt = {
|
|
702
714
|
activeDropPaneEl: null,
|
|
703
715
|
// Intended to be overridden in `BinaryWindow` class
|
|
704
716
|
onPaneDrop(e, t) {
|
|
@@ -708,7 +720,7 @@ const it = {
|
|
|
708
720
|
e.preventDefault();
|
|
709
721
|
const t = e.target.matches("bw-pane") ? e.target : e.target.closest("bw-pane");
|
|
710
722
|
if (!t || (t !== this.activeDropPaneEl && (this.activeDropPaneEl && this.activeDropPaneEl.removeAttribute("drop-area"), this.activeDropPaneEl = t), t.getAttribute("can-drop") === "false")) return;
|
|
711
|
-
const i =
|
|
723
|
+
const i = X(t, e);
|
|
712
724
|
t.setAttribute("drop-area", i);
|
|
713
725
|
}), this.windowElement.addEventListener("dragleave", (e) => {
|
|
714
726
|
e.currentTarget.contains(e.relatedTarget) && e.currentTarget !== e.relatedTarget || this.activeDropPaneEl && (this.activeDropPaneEl.removeAttribute("drop-area"), this.activeDropPaneEl = null);
|
|
@@ -718,22 +730,21 @@ const it = {
|
|
|
718
730
|
this.onPaneDrop(e, i), typeof i.store.onDrop == "function" && i.store.onDrop(e, i), this.activeDropPaneEl.removeAttribute("drop-area"), this.activeDropPaneEl = null;
|
|
719
731
|
});
|
|
720
732
|
}
|
|
721
|
-
};
|
|
722
|
-
class
|
|
733
|
+
}, at = !1;
|
|
734
|
+
class T {
|
|
723
735
|
constructor(t) {
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
736
|
+
f(this, "windowElement", null);
|
|
737
|
+
f(this, "containerElement", null);
|
|
738
|
+
f(this, "debug", at);
|
|
727
739
|
let i = null;
|
|
728
|
-
t instanceof
|
|
740
|
+
t instanceof V ? (i = t, this.rootSash = t) : (i = new K(t), this.rootSash = i.buildSashTree()), this.fitContainer = i.fitContainer, this.windowElement = this.createWindow(), this.glaze();
|
|
729
741
|
}
|
|
730
742
|
// Features can work independently to each other
|
|
731
743
|
enableFeatures() {
|
|
732
744
|
this.enableResize(), this.enableDrop(), this.fitContainer && this.enableFitContainer();
|
|
733
745
|
}
|
|
734
746
|
mount(t) {
|
|
735
|
-
|
|
736
|
-
this.glaze(i), this.containerElement = t, this.containerElement.append(i), this.windowElement = i, this.enableFeatures();
|
|
747
|
+
this.containerElement = t, this.containerElement.append(this.windowElement), this.enableFeatures();
|
|
737
748
|
}
|
|
738
749
|
static assemble(...t) {
|
|
739
750
|
t.forEach((i) => {
|
|
@@ -741,15 +752,15 @@ class L {
|
|
|
741
752
|
});
|
|
742
753
|
}
|
|
743
754
|
}
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
nt,
|
|
747
|
-
K,
|
|
755
|
+
T.assemble(
|
|
756
|
+
st,
|
|
748
757
|
ot,
|
|
758
|
+
nt,
|
|
749
759
|
ht,
|
|
750
|
-
|
|
760
|
+
lt,
|
|
761
|
+
rt
|
|
751
762
|
);
|
|
752
|
-
function
|
|
763
|
+
function L(e) {
|
|
753
764
|
if (e.tagName === "BW-PANE")
|
|
754
765
|
return e.getAttribute("sash-id");
|
|
755
766
|
const t = e.closest("bw-pane");
|
|
@@ -757,62 +768,147 @@ function T(e) {
|
|
|
757
768
|
throw new Error("[bwin] Pane element not found");
|
|
758
769
|
return t.getAttribute("sash-id");
|
|
759
770
|
}
|
|
760
|
-
const
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
771
|
+
const dt = {
|
|
772
|
+
label: "",
|
|
773
|
+
className: "bw-glass-action--close",
|
|
774
|
+
onClick: (e, t) => {
|
|
775
|
+
const i = L(e.target);
|
|
776
|
+
t.removePane(i);
|
|
777
|
+
}
|
|
778
|
+
}, ct = {
|
|
779
|
+
label: "",
|
|
780
|
+
className: "bw-glass-action--minimize",
|
|
781
|
+
onClick: (e, t) => {
|
|
782
|
+
const i = t.sillElement;
|
|
783
|
+
if (!i) throw new Error("[bwin] Sill element not found when minimizing");
|
|
784
|
+
const n = C('<button class="bw-minimized-glass" />');
|
|
785
|
+
i.append(n);
|
|
786
|
+
const s = e.target.closest("bw-pane"), o = e.target.closest("bw-glass"), h = s.getAttribute("sash-id"), l = s.getAttribute("position");
|
|
787
|
+
n.bwGlassElement = o, n.bwOriginalPosition = l, n.bwOriginalBoundingRect = P(s), t.removePane(h);
|
|
788
|
+
}
|
|
789
|
+
}, gt = {
|
|
790
|
+
label: "",
|
|
791
|
+
className: "bw-glass-action--maximize",
|
|
792
|
+
onClick: (e) => {
|
|
793
|
+
const t = e.target.closest("bw-pane");
|
|
794
|
+
t.hasAttribute("maximized") ? (t.removeAttribute("maximized"), t.style.left = `${t.bwOriginalBoundingRect.left}px`, t.style.top = `${t.bwOriginalBoundingRect.top}px`, t.style.width = `${t.bwOriginalBoundingRect.width}px`, t.style.height = `${t.bwOriginalBoundingRect.height}px`) : (t.setAttribute("maximized", ""), t.bwOriginalBoundingRect = P(t), t.style.left = "0", t.style.top = "0", t.style.width = "100%", t.style.height = "100%");
|
|
795
|
+
}
|
|
796
|
+
};
|
|
797
|
+
function ut(e, t) {
|
|
798
|
+
const i = e.left + e.width, n = e.top + e.height, s = t.left + t.width, o = t.top + t.height;
|
|
799
|
+
if (e.left >= s || t.left >= i || e.top >= o || t.top >= n)
|
|
800
|
+
return null;
|
|
801
|
+
const h = Math.max(e.left, t.left), l = Math.max(e.top, t.top), a = Math.min(i, s), c = Math.min(n, o);
|
|
802
|
+
return {
|
|
803
|
+
left: h,
|
|
804
|
+
top: l,
|
|
805
|
+
width: a - h,
|
|
806
|
+
height: c - l
|
|
807
|
+
};
|
|
808
|
+
}
|
|
809
|
+
const ft = [ct, gt, dt], pt = {
|
|
810
|
+
enableActions() {
|
|
811
|
+
this.handleMinimizedGlassClick(), this.observeActionButtons();
|
|
812
|
+
},
|
|
813
|
+
restoreGlass(e) {
|
|
814
|
+
const t = e.bwOriginalBoundingRect;
|
|
815
|
+
let i = 0, n = null;
|
|
816
|
+
if (this.windowElement.querySelectorAll("bw-pane").forEach((s) => {
|
|
817
|
+
const o = P(s), h = ut(t, o);
|
|
818
|
+
if (h) {
|
|
819
|
+
const l = h.width * h.height;
|
|
820
|
+
l > i && (i = l, n = s);
|
|
821
|
+
}
|
|
822
|
+
}), n) {
|
|
823
|
+
const s = e.bwOriginalPosition, o = P(n);
|
|
824
|
+
let h = 0;
|
|
825
|
+
if (s === r.Left || s === r.Right)
|
|
826
|
+
h = t.width >= o.width ? o.width / 2 : t.width;
|
|
827
|
+
else if (s === r.Top || s === r.Bottom)
|
|
828
|
+
h = t.height >= o.height ? o.height / 2 : t.height;
|
|
829
|
+
else
|
|
830
|
+
throw new Error("[bwin] Invalid position when restoring glass");
|
|
831
|
+
this.addPane(n.getAttribute("sash-id"), {
|
|
832
|
+
position: s,
|
|
833
|
+
size: h
|
|
834
|
+
}).domNode.append(e.bwGlassElement);
|
|
767
835
|
}
|
|
836
|
+
},
|
|
837
|
+
handleMinimizedGlassClick() {
|
|
838
|
+
this.sillElement.addEventListener("click", (e) => {
|
|
839
|
+
if (!e.target.matches(".bw-minimized-glass")) return;
|
|
840
|
+
const t = e.target;
|
|
841
|
+
this.restoreGlass(t), t.remove();
|
|
842
|
+
});
|
|
843
|
+
},
|
|
844
|
+
updateDisabledStateOfActionButtons() {
|
|
845
|
+
this.updateDisabledState(".bw-glass-action--close"), this.updateDisabledState(".bw-glass-action--minimize"), this.updateDisabledState(".bw-glass-action--maximize");
|
|
846
|
+
},
|
|
847
|
+
updateDisabledState(e) {
|
|
848
|
+
if (this.windowElement.querySelectorAll("bw-pane").length === 1) {
|
|
849
|
+
const i = this.windowElement.querySelector(e);
|
|
850
|
+
i && i.setAttribute("disabled", "");
|
|
851
|
+
} else
|
|
852
|
+
this.windowElement.querySelectorAll(e).forEach((i) => {
|
|
853
|
+
i.removeAttribute("disabled");
|
|
854
|
+
});
|
|
855
|
+
},
|
|
856
|
+
observeActionButtons() {
|
|
857
|
+
this.updateDisabledStateOfActionButtons(), new MutationObserver((t) => {
|
|
858
|
+
t.forEach((i) => {
|
|
859
|
+
i.type === "childList" && this.updateDisabledStateOfActionButtons();
|
|
860
|
+
});
|
|
861
|
+
}).observe(this.windowElement, {
|
|
862
|
+
childList: !0
|
|
863
|
+
});
|
|
768
864
|
}
|
|
769
|
-
|
|
865
|
+
}, N = {
|
|
770
866
|
title: null,
|
|
771
867
|
content: null,
|
|
772
868
|
tabs: [],
|
|
773
869
|
actions: void 0,
|
|
774
870
|
draggable: !0
|
|
775
871
|
};
|
|
776
|
-
class
|
|
872
|
+
class x {
|
|
777
873
|
constructor({
|
|
778
|
-
title: t =
|
|
779
|
-
content: i =
|
|
780
|
-
tabs: n =
|
|
781
|
-
actions:
|
|
782
|
-
draggable:
|
|
783
|
-
sash:
|
|
874
|
+
title: t = N.title,
|
|
875
|
+
content: i = N.content,
|
|
876
|
+
tabs: n = N.tabs,
|
|
877
|
+
actions: s = N.actions,
|
|
878
|
+
draggable: o = N.draggable,
|
|
879
|
+
sash: h,
|
|
784
880
|
binaryWindow: l
|
|
785
881
|
}) {
|
|
786
|
-
|
|
787
|
-
this.title = t, this.content = i, this.tabs = n, this.actions =
|
|
882
|
+
f(this, "domNode");
|
|
883
|
+
this.title = t, this.content = i, this.tabs = n, this.actions = s, this.sash = h, this.draggable = o, this.binaryWindow = l, this.build();
|
|
788
884
|
}
|
|
789
885
|
build() {
|
|
790
886
|
const t = document.createElement("bw-glass-header");
|
|
791
887
|
if (Array.isArray(this.tabs) && this.tabs.length > 0)
|
|
792
888
|
t.append(this.createTabs());
|
|
793
889
|
else if (this.title) {
|
|
794
|
-
const
|
|
795
|
-
|
|
890
|
+
const s = document.createElement("bw-glass-title");
|
|
891
|
+
s.append(C(this.title)), t.append(s);
|
|
796
892
|
}
|
|
797
893
|
t.setAttribute("can-drag", this.draggable), t.append(this.createActions());
|
|
798
|
-
const i = document.createElement("bw-glass-content"), n =
|
|
894
|
+
const i = document.createElement("bw-glass-content"), n = C(this.content);
|
|
799
895
|
n && i.append(n), this.domNode = document.createElement("bw-glass"), this.domNode.append(t, i);
|
|
800
896
|
}
|
|
801
897
|
createTabs() {
|
|
802
898
|
const t = document.createElement("bw-glass-tab-container");
|
|
803
899
|
for (const i of this.tabs) {
|
|
804
|
-
const n = (i == null ? void 0 : i.label) ?? i,
|
|
805
|
-
t.append(
|
|
900
|
+
const n = (i == null ? void 0 : i.label) ?? i, s = C(`<button class="bw-glass-tab">${n}</button>`);
|
|
901
|
+
t.append(s);
|
|
806
902
|
}
|
|
807
903
|
return t;
|
|
808
904
|
}
|
|
809
905
|
createActions() {
|
|
810
|
-
const t = document.createElement("bw-glass-action-container"), i = this.actions === void 0 ?
|
|
906
|
+
const t = document.createElement("bw-glass-action-container"), i = this.actions === void 0 ? ft : Array.isArray(this.actions) ? this.actions : [];
|
|
811
907
|
for (const n of i) {
|
|
812
|
-
const
|
|
813
|
-
typeof n.onClick == "function" &&
|
|
908
|
+
const s = (n == null ? void 0 : n.label) ?? n, o = n.className ? `bw-glass-action ${n.className}` : "bw-glass-action", h = C(`<button class="${o}">${s}</button>`);
|
|
909
|
+
typeof n.onClick == "function" && h.addEventListener("click", (l) => {
|
|
814
910
|
n.onClick(l, this.binaryWindow);
|
|
815
|
-
}), t.append(
|
|
911
|
+
}), t.append(h);
|
|
816
912
|
}
|
|
817
913
|
return t;
|
|
818
914
|
}
|
|
@@ -823,40 +919,19 @@ class z {
|
|
|
823
919
|
return this.domNode.querySelector("bw-glass-header");
|
|
824
920
|
}
|
|
825
921
|
}
|
|
826
|
-
const
|
|
827
|
-
enableObservers() {
|
|
828
|
-
this.observeCloseButtons();
|
|
829
|
-
},
|
|
830
|
-
observeCloseButtons() {
|
|
831
|
-
const e = `.${x}`;
|
|
832
|
-
new MutationObserver((i) => {
|
|
833
|
-
i.forEach((n) => {
|
|
834
|
-
if (n.type === "childList")
|
|
835
|
-
if (this.windowElement.querySelectorAll("bw-pane").length === 1) {
|
|
836
|
-
const s = this.windowElement.querySelector(e);
|
|
837
|
-
s && s.setAttribute("disabled", "");
|
|
838
|
-
} else
|
|
839
|
-
this.windowElement.querySelectorAll(e).forEach((s) => {
|
|
840
|
-
s.removeAttribute("disabled");
|
|
841
|
-
});
|
|
842
|
-
});
|
|
843
|
-
}).observe(this.windowElement, {
|
|
844
|
-
childList: !0
|
|
845
|
-
});
|
|
846
|
-
}
|
|
847
|
-
}, at = {
|
|
922
|
+
const wt = {
|
|
848
923
|
activeDragGlassEl: null,
|
|
849
924
|
activeDragGlassPaneCanDrop: !1,
|
|
850
925
|
onPaneDrop(e, t) {
|
|
851
926
|
if (!this.activeDragGlassEl) return;
|
|
852
927
|
const i = this.activeDropPaneEl.getAttribute("drop-area");
|
|
853
928
|
if (i === "center") {
|
|
854
|
-
const n = this.activeDragGlassEl.closest("bw-pane"),
|
|
855
|
-
H(n, this.activeDropPaneEl), n.setAttribute("can-drop",
|
|
929
|
+
const n = this.activeDragGlassEl.closest("bw-pane"), s = this.activeDropPaneEl.getAttribute("can-drop") !== "false";
|
|
930
|
+
H(n, this.activeDropPaneEl), n.setAttribute("can-drop", s);
|
|
856
931
|
return;
|
|
857
932
|
} else {
|
|
858
|
-
const n =
|
|
859
|
-
this.addPane(t.id, i).domNode.append(this.activeDragGlassEl), this.removePane(n);
|
|
933
|
+
const n = L(this.activeDragGlassEl);
|
|
934
|
+
this.addPane(t.id, { position: i }).domNode.append(this.activeDragGlassEl), this.removePane(n);
|
|
860
935
|
}
|
|
861
936
|
},
|
|
862
937
|
enableDrag() {
|
|
@@ -880,7 +955,7 @@ const lt = {
|
|
|
880
955
|
this.activeDragGlassEl && (this.activeDragGlassEl.removeAttribute("draggable"), this.activeDragGlassEl.closest("bw-pane").setAttribute("can-drop", this.activeDragGlassPaneCanDrop), this.activeDragGlassEl = null);
|
|
881
956
|
});
|
|
882
957
|
}
|
|
883
|
-
},
|
|
958
|
+
}, mt = {
|
|
884
959
|
trimMuntin(e) {
|
|
885
960
|
e.hasAttribute("vertical") ? (e.style.top = `${parseFloat(e.style.top) + this.muntinSize / 2}px`, e.style.height = `${parseFloat(e.style.height) - this.muntinSize}px`) : e.hasAttribute("horizontal") && (e.style.left = `${parseFloat(e.style.left) + this.muntinSize / 2}px`, e.style.width = `${parseFloat(e.style.width) - this.muntinSize}px`);
|
|
886
961
|
},
|
|
@@ -891,13 +966,19 @@ const lt = {
|
|
|
891
966
|
this.trimMuntin(e);
|
|
892
967
|
}
|
|
893
968
|
};
|
|
894
|
-
class
|
|
969
|
+
class bt extends T {
|
|
970
|
+
constructor() {
|
|
971
|
+
super(...arguments);
|
|
972
|
+
f(this, "sillElement", null);
|
|
973
|
+
const i = C("<bw-sill />");
|
|
974
|
+
this.windowElement.append(i), this.sillElement = i;
|
|
975
|
+
}
|
|
895
976
|
enableFeatures() {
|
|
896
|
-
super.enableFeatures(), this.
|
|
977
|
+
super.enableFeatures(), this.enableDrag(), this.enableActions();
|
|
897
978
|
}
|
|
898
|
-
onPaneCreate(
|
|
899
|
-
const
|
|
900
|
-
|
|
979
|
+
onPaneCreate(i, n) {
|
|
980
|
+
const s = new x({ ...n.store, sash: n, binaryWindow: this });
|
|
981
|
+
i.innerHTML = "", i.append(s.domNode), this.debug && s.contentElement.prepend(`${n.id}`);
|
|
901
982
|
}
|
|
902
983
|
onPaneUpdate() {
|
|
903
984
|
}
|
|
@@ -909,9 +990,9 @@ class ct extends L {
|
|
|
909
990
|
* @param {Object} glassProps - The glass properties
|
|
910
991
|
*
|
|
911
992
|
*/
|
|
912
|
-
addGlass(
|
|
913
|
-
const o = this.addPane(
|
|
914
|
-
o.domNode.append(
|
|
993
|
+
addGlass(i, n, s) {
|
|
994
|
+
const o = this.addPane(i, { position: n }), h = new x({ ...s, sash: o, binaryWindow: this });
|
|
995
|
+
o.domNode.append(h.domNode);
|
|
915
996
|
}
|
|
916
997
|
/**
|
|
917
998
|
* Remove glass from or together with the pane
|
|
@@ -919,24 +1000,24 @@ class ct extends L {
|
|
|
919
1000
|
* @param {string} paneSashId - The Sash ID of the pane that contains the glass
|
|
920
1001
|
* @param {boolean} removePane - Whether to remove the pane together
|
|
921
1002
|
*/
|
|
922
|
-
removeGlass(
|
|
923
|
-
if (
|
|
924
|
-
this.removePane(
|
|
1003
|
+
removeGlass(i, n) {
|
|
1004
|
+
if (n)
|
|
1005
|
+
this.removePane(i);
|
|
925
1006
|
else {
|
|
926
|
-
const
|
|
927
|
-
if (!
|
|
928
|
-
const o =
|
|
1007
|
+
const s = this.rootSash.getById(i);
|
|
1008
|
+
if (!s) throw new Error("[bwin] Pane not found when removing glass");
|
|
1009
|
+
const o = s.domNode.querySelector("bw-glass");
|
|
929
1010
|
o && o.remove();
|
|
930
1011
|
}
|
|
931
1012
|
}
|
|
932
1013
|
}
|
|
933
|
-
|
|
1014
|
+
bt.assemble(wt, mt, pt);
|
|
934
1015
|
export {
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
1016
|
+
ft as BUILTIN_ACTIONS,
|
|
1017
|
+
bt as BinaryWindow,
|
|
1018
|
+
K as ConfigRoot,
|
|
1019
|
+
T as Frame,
|
|
1020
|
+
r as Position,
|
|
1021
|
+
p as Sash,
|
|
1022
|
+
V as SashConfig
|
|
942
1023
|
};
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "bwin",
|
|
3
3
|
"description": "A tiling window manager for web browsers",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "0.1.
|
|
5
|
+
"version": "0.1.2",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "git+https://github.com/bhjsdev/bwin.git"
|
|
@@ -33,14 +33,13 @@
|
|
|
33
33
|
"scripts": {
|
|
34
34
|
"dev": "vite",
|
|
35
35
|
"build": "vite build",
|
|
36
|
-
"preview": "vite preview",
|
|
37
36
|
"test": "vitest"
|
|
38
37
|
},
|
|
39
38
|
"devDependencies": {
|
|
40
39
|
"jsdom": "^25.0.1",
|
|
41
40
|
"prettier": "^3.3.3",
|
|
42
41
|
"prettier-plugin-brace-style": "^0.7.0",
|
|
43
|
-
"vite": "^
|
|
42
|
+
"vite": "^6.0.2",
|
|
44
43
|
"vitest": "^2.1.4"
|
|
45
44
|
}
|
|
46
45
|
}
|