@lanrenbang/basecoat-ultra 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/CHANGELOG-cn.md +54 -0
- package/CHANGELOG.md +54 -0
- package/LICENSE +21 -0
- package/README-cn.md +186 -0
- package/README.md +173 -0
- package/dist/css/basecoat.cdn.css +7389 -0
- package/dist/css/basecoat.cdn.min.css +2 -0
- package/dist/css/basecoat.css +1797 -0
- package/dist/css/datepicker.css +382 -0
- package/dist/css/datepicker.min.css +1 -0
- package/dist/css/resizable.css +96 -0
- package/dist/css/resizable.min.css +1 -0
- package/dist/js/accordion.js +20 -0
- package/dist/js/accordion.min.js +13 -0
- package/dist/js/all.js +17 -0
- package/dist/js/all.min.js +17 -0
- package/dist/js/basecoat.js +75 -0
- package/dist/js/basecoat.min.js +56 -0
- package/dist/js/carousel.js +104 -0
- package/dist/js/carousel.min.js +41 -0
- package/dist/js/catppuccin-theme-switcher.js +136 -0
- package/dist/js/catppuccin-theme-switcher.min.js +73 -0
- package/dist/js/command.js +132 -0
- package/dist/js/command.min.js +76 -0
- package/dist/js/datepicker.js +2367 -0
- package/dist/js/datepicker.min.js +1422 -0
- package/dist/js/dialog.js +20 -0
- package/dist/js/dialog.min.js +11 -0
- package/dist/js/dropdown-menu.js +148 -0
- package/dist/js/dropdown-menu.min.js +75 -0
- package/dist/js/input-otp.js +94 -0
- package/dist/js/input-otp.min.js +38 -0
- package/dist/js/lighting.js +80 -0
- package/dist/js/lighting.min.js +44 -0
- package/dist/js/popover.js +72 -0
- package/dist/js/popover.min.js +34 -0
- package/dist/js/resizable.js +534 -0
- package/dist/js/resizable.min.js +284 -0
- package/dist/js/select.js +246 -0
- package/dist/js/select.min.js +131 -0
- package/dist/js/sheet.js +85 -0
- package/dist/js/sheet.min.js +40 -0
- package/dist/js/sidebar.js +87 -0
- package/dist/js/sidebar.min.js +53 -0
- package/dist/js/slider.js +18 -0
- package/dist/js/slider.min.js +10 -0
- package/dist/js/tabs.js +53 -0
- package/dist/js/tabs.min.js +40 -0
- package/dist/js/toast.js +137 -0
- package/dist/js/toast.min.js +83 -0
- package/dist/js/toggle.js +36 -0
- package/dist/js/toggle.min.js +20 -0
- package/dist/theme/catppuccin/index.css +448 -0
- package/dist/theme/catppuccin/index.min.css +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,534 @@
|
|
|
1
|
+
var global = typeof window !== "undefined" ? window : null;
|
|
2
|
+
var ssr = global === null;
|
|
3
|
+
var document$1 = !ssr ? global.document : void 0;
|
|
4
|
+
var addEventListener = "addEventListener";
|
|
5
|
+
var removeEventListener = "removeEventListener";
|
|
6
|
+
var getBoundingClientRect = "getBoundingClientRect";
|
|
7
|
+
var gutterStartDragging = "_a";
|
|
8
|
+
var aGutterSize = "_b";
|
|
9
|
+
var bGutterSize = "_c";
|
|
10
|
+
var HORIZONTAL = "horizontal";
|
|
11
|
+
var NOOP = function() {
|
|
12
|
+
return false;
|
|
13
|
+
};
|
|
14
|
+
var calc = ssr ? "calc" : ["", "-webkit-", "-moz-", "-o-"].filter(function(prefix) {
|
|
15
|
+
var el = document$1.createElement("div");
|
|
16
|
+
el.style.cssText = "width:" + prefix + "calc(9px)";
|
|
17
|
+
return !!el.style.length;
|
|
18
|
+
}).shift() + "calc";
|
|
19
|
+
var isString = function(v) {
|
|
20
|
+
return typeof v === "string" || v instanceof String;
|
|
21
|
+
};
|
|
22
|
+
var elementOrSelector = function(el) {
|
|
23
|
+
if (isString(el)) {
|
|
24
|
+
var ele = document$1.querySelector(el);
|
|
25
|
+
if (!ele) {
|
|
26
|
+
throw new Error("Selector " + el + " did not match a DOM element");
|
|
27
|
+
}
|
|
28
|
+
return ele;
|
|
29
|
+
}
|
|
30
|
+
return el;
|
|
31
|
+
};
|
|
32
|
+
var getOption = function(options, propName, def) {
|
|
33
|
+
var value = options[propName];
|
|
34
|
+
if (value !== void 0) {
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
return def;
|
|
38
|
+
};
|
|
39
|
+
var getGutterSize = function(gutterSize, isFirst, isLast, gutterAlign) {
|
|
40
|
+
if (isFirst) {
|
|
41
|
+
if (gutterAlign === "end") {
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
if (gutterAlign === "center") {
|
|
45
|
+
return gutterSize / 2;
|
|
46
|
+
}
|
|
47
|
+
} else if (isLast) {
|
|
48
|
+
if (gutterAlign === "start") {
|
|
49
|
+
return 0;
|
|
50
|
+
}
|
|
51
|
+
if (gutterAlign === "center") {
|
|
52
|
+
return gutterSize / 2;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return gutterSize;
|
|
56
|
+
};
|
|
57
|
+
var defaultGutterFn = function(i, gutterDirection) {
|
|
58
|
+
var gut = document$1.createElement("div");
|
|
59
|
+
gut.className = "gutter gutter-" + gutterDirection;
|
|
60
|
+
return gut;
|
|
61
|
+
};
|
|
62
|
+
var defaultElementStyleFn = function(dim, size, gutSize) {
|
|
63
|
+
var style = {};
|
|
64
|
+
if (!isString(size)) {
|
|
65
|
+
style[dim] = calc + "(" + size + "% - " + gutSize + "px)";
|
|
66
|
+
} else {
|
|
67
|
+
style[dim] = size;
|
|
68
|
+
}
|
|
69
|
+
return style;
|
|
70
|
+
};
|
|
71
|
+
var defaultGutterStyleFn = function(dim, gutSize) {
|
|
72
|
+
var obj;
|
|
73
|
+
return obj = {}, obj[dim] = gutSize + "px", obj;
|
|
74
|
+
};
|
|
75
|
+
var Split = function(idsOption, options) {
|
|
76
|
+
if (options === void 0) options = {};
|
|
77
|
+
if (ssr) {
|
|
78
|
+
return {};
|
|
79
|
+
}
|
|
80
|
+
var ids = idsOption;
|
|
81
|
+
var dimension;
|
|
82
|
+
var clientAxis;
|
|
83
|
+
var position;
|
|
84
|
+
var positionEnd;
|
|
85
|
+
var clientSize;
|
|
86
|
+
var elements;
|
|
87
|
+
if (Array.from) {
|
|
88
|
+
ids = Array.from(ids);
|
|
89
|
+
}
|
|
90
|
+
var firstElement = elementOrSelector(ids[0]);
|
|
91
|
+
var parent = firstElement.parentNode;
|
|
92
|
+
var parentStyle = getComputedStyle ? getComputedStyle(parent) : null;
|
|
93
|
+
var parentFlexDirection = parentStyle ? parentStyle.flexDirection : null;
|
|
94
|
+
var sizes = getOption(options, "sizes") || ids.map(function() {
|
|
95
|
+
return 100 / ids.length;
|
|
96
|
+
});
|
|
97
|
+
var minSize = getOption(options, "minSize", 100);
|
|
98
|
+
var minSizes = Array.isArray(minSize) ? minSize : ids.map(function() {
|
|
99
|
+
return minSize;
|
|
100
|
+
});
|
|
101
|
+
var maxSize = getOption(options, "maxSize", Infinity);
|
|
102
|
+
var maxSizes = Array.isArray(maxSize) ? maxSize : ids.map(function() {
|
|
103
|
+
return maxSize;
|
|
104
|
+
});
|
|
105
|
+
var expandToMin = getOption(options, "expandToMin", false);
|
|
106
|
+
var gutterSize = getOption(options, "gutterSize", 10);
|
|
107
|
+
var gutterAlign = getOption(options, "gutterAlign", "center");
|
|
108
|
+
var snapOffset = getOption(options, "snapOffset", 30);
|
|
109
|
+
var snapOffsets = Array.isArray(snapOffset) ? snapOffset : ids.map(function() {
|
|
110
|
+
return snapOffset;
|
|
111
|
+
});
|
|
112
|
+
var dragInterval = getOption(options, "dragInterval", 1);
|
|
113
|
+
var direction = getOption(options, "direction", HORIZONTAL);
|
|
114
|
+
var cursor = getOption(
|
|
115
|
+
options,
|
|
116
|
+
"cursor",
|
|
117
|
+
direction === HORIZONTAL ? "col-resize" : "row-resize"
|
|
118
|
+
);
|
|
119
|
+
var gutter = getOption(options, "gutter", defaultGutterFn);
|
|
120
|
+
var elementStyle = getOption(
|
|
121
|
+
options,
|
|
122
|
+
"elementStyle",
|
|
123
|
+
defaultElementStyleFn
|
|
124
|
+
);
|
|
125
|
+
var gutterStyle = getOption(options, "gutterStyle", defaultGutterStyleFn);
|
|
126
|
+
if (direction === HORIZONTAL) {
|
|
127
|
+
dimension = "width";
|
|
128
|
+
clientAxis = "clientX";
|
|
129
|
+
position = "left";
|
|
130
|
+
positionEnd = "right";
|
|
131
|
+
clientSize = "clientWidth";
|
|
132
|
+
} else if (direction === "vertical") {
|
|
133
|
+
dimension = "height";
|
|
134
|
+
clientAxis = "clientY";
|
|
135
|
+
position = "top";
|
|
136
|
+
positionEnd = "bottom";
|
|
137
|
+
clientSize = "clientHeight";
|
|
138
|
+
}
|
|
139
|
+
function setElementSize(el, size, gutSize, i) {
|
|
140
|
+
var style = elementStyle(dimension, size, gutSize, i);
|
|
141
|
+
Object.keys(style).forEach(function(prop) {
|
|
142
|
+
el.style[prop] = style[prop];
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
function setGutterSize(gutterElement, gutSize, i) {
|
|
146
|
+
var style = gutterStyle(dimension, gutSize, i);
|
|
147
|
+
Object.keys(style).forEach(function(prop) {
|
|
148
|
+
gutterElement.style[prop] = style[prop];
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
function getSizes() {
|
|
152
|
+
return elements.map(function(element) {
|
|
153
|
+
return element.size;
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
function getMousePosition(e) {
|
|
157
|
+
if ("touches" in e) {
|
|
158
|
+
return e.touches[0][clientAxis];
|
|
159
|
+
}
|
|
160
|
+
return e[clientAxis];
|
|
161
|
+
}
|
|
162
|
+
function adjust(offset) {
|
|
163
|
+
var a = elements[this.a];
|
|
164
|
+
var b = elements[this.b];
|
|
165
|
+
var percentage = a.size + b.size;
|
|
166
|
+
a.size = offset / this.size * percentage;
|
|
167
|
+
b.size = percentage - offset / this.size * percentage;
|
|
168
|
+
setElementSize(a.element, a.size, this[aGutterSize], a.i);
|
|
169
|
+
setElementSize(b.element, b.size, this[bGutterSize], b.i);
|
|
170
|
+
}
|
|
171
|
+
function drag(e) {
|
|
172
|
+
var offset;
|
|
173
|
+
var a = elements[this.a];
|
|
174
|
+
var b = elements[this.b];
|
|
175
|
+
if (!this.dragging) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
offset = getMousePosition(e) - this.start + (this[aGutterSize] - this.dragOffset);
|
|
179
|
+
if (dragInterval > 1) {
|
|
180
|
+
offset = Math.round(offset / dragInterval) * dragInterval;
|
|
181
|
+
}
|
|
182
|
+
if (offset <= a.minSize + a.snapOffset + this[aGutterSize]) {
|
|
183
|
+
offset = a.minSize + this[aGutterSize];
|
|
184
|
+
} else if (offset >= this.size - (b.minSize + b.snapOffset + this[bGutterSize])) {
|
|
185
|
+
offset = this.size - (b.minSize + this[bGutterSize]);
|
|
186
|
+
}
|
|
187
|
+
if (offset >= a.maxSize - a.snapOffset + this[aGutterSize]) {
|
|
188
|
+
offset = a.maxSize + this[aGutterSize];
|
|
189
|
+
} else if (offset <= this.size - (b.maxSize - b.snapOffset + this[bGutterSize])) {
|
|
190
|
+
offset = this.size - (b.maxSize + this[bGutterSize]);
|
|
191
|
+
}
|
|
192
|
+
adjust.call(this, offset);
|
|
193
|
+
getOption(options, "onDrag", NOOP)(getSizes());
|
|
194
|
+
}
|
|
195
|
+
function calculateSizes() {
|
|
196
|
+
var a = elements[this.a].element;
|
|
197
|
+
var b = elements[this.b].element;
|
|
198
|
+
var aBounds = a[getBoundingClientRect]();
|
|
199
|
+
var bBounds = b[getBoundingClientRect]();
|
|
200
|
+
this.size = aBounds[dimension] + bBounds[dimension] + this[aGutterSize] + this[bGutterSize];
|
|
201
|
+
this.start = aBounds[position];
|
|
202
|
+
this.end = aBounds[positionEnd];
|
|
203
|
+
}
|
|
204
|
+
function innerSize(element) {
|
|
205
|
+
if (!getComputedStyle) {
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
var computedStyle = getComputedStyle(element);
|
|
209
|
+
if (!computedStyle) {
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
var size = element[clientSize];
|
|
213
|
+
if (size === 0) {
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
if (direction === HORIZONTAL) {
|
|
217
|
+
size -= parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);
|
|
218
|
+
} else {
|
|
219
|
+
size -= parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom);
|
|
220
|
+
}
|
|
221
|
+
return size;
|
|
222
|
+
}
|
|
223
|
+
function trimToMin(sizesToTrim) {
|
|
224
|
+
var parentSize = innerSize(parent);
|
|
225
|
+
if (parentSize === null) {
|
|
226
|
+
return sizesToTrim;
|
|
227
|
+
}
|
|
228
|
+
if (minSizes.reduce(function(a, b) {
|
|
229
|
+
return a + b;
|
|
230
|
+
}, 0) > parentSize) {
|
|
231
|
+
return sizesToTrim;
|
|
232
|
+
}
|
|
233
|
+
var excessPixels = 0;
|
|
234
|
+
var toSpare = [];
|
|
235
|
+
var pixelSizes = sizesToTrim.map(function(size, i) {
|
|
236
|
+
var pixelSize = parentSize * size / 100;
|
|
237
|
+
var elementGutterSize = getGutterSize(
|
|
238
|
+
gutterSize,
|
|
239
|
+
i === 0,
|
|
240
|
+
i === sizesToTrim.length - 1,
|
|
241
|
+
gutterAlign
|
|
242
|
+
);
|
|
243
|
+
var elementMinSize = minSizes[i] + elementGutterSize;
|
|
244
|
+
if (pixelSize < elementMinSize) {
|
|
245
|
+
excessPixels += elementMinSize - pixelSize;
|
|
246
|
+
toSpare.push(0);
|
|
247
|
+
return elementMinSize;
|
|
248
|
+
}
|
|
249
|
+
toSpare.push(pixelSize - elementMinSize);
|
|
250
|
+
return pixelSize;
|
|
251
|
+
});
|
|
252
|
+
if (excessPixels === 0) {
|
|
253
|
+
return sizesToTrim;
|
|
254
|
+
}
|
|
255
|
+
return pixelSizes.map(function(pixelSize, i) {
|
|
256
|
+
var newPixelSize = pixelSize;
|
|
257
|
+
if (excessPixels > 0 && toSpare[i] - excessPixels > 0) {
|
|
258
|
+
var takenPixels = Math.min(
|
|
259
|
+
excessPixels,
|
|
260
|
+
toSpare[i] - excessPixels
|
|
261
|
+
);
|
|
262
|
+
excessPixels -= takenPixels;
|
|
263
|
+
newPixelSize = pixelSize - takenPixels;
|
|
264
|
+
}
|
|
265
|
+
return newPixelSize / parentSize * 100;
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
function stopDragging() {
|
|
269
|
+
var self = this;
|
|
270
|
+
var a = elements[self.a].element;
|
|
271
|
+
var b = elements[self.b].element;
|
|
272
|
+
if (self.dragging) {
|
|
273
|
+
getOption(options, "onDragEnd", NOOP)(getSizes());
|
|
274
|
+
}
|
|
275
|
+
self.dragging = false;
|
|
276
|
+
global[removeEventListener]("mouseup", self.stop);
|
|
277
|
+
global[removeEventListener]("touchend", self.stop);
|
|
278
|
+
global[removeEventListener]("touchcancel", self.stop);
|
|
279
|
+
global[removeEventListener]("mousemove", self.move);
|
|
280
|
+
global[removeEventListener]("touchmove", self.move);
|
|
281
|
+
self.stop = null;
|
|
282
|
+
self.move = null;
|
|
283
|
+
a[removeEventListener]("selectstart", NOOP);
|
|
284
|
+
a[removeEventListener]("dragstart", NOOP);
|
|
285
|
+
b[removeEventListener]("selectstart", NOOP);
|
|
286
|
+
b[removeEventListener]("dragstart", NOOP);
|
|
287
|
+
a.style.userSelect = "";
|
|
288
|
+
a.style.webkitUserSelect = "";
|
|
289
|
+
a.style.MozUserSelect = "";
|
|
290
|
+
a.style.pointerEvents = "";
|
|
291
|
+
b.style.userSelect = "";
|
|
292
|
+
b.style.webkitUserSelect = "";
|
|
293
|
+
b.style.MozUserSelect = "";
|
|
294
|
+
b.style.pointerEvents = "";
|
|
295
|
+
self.gutter.style.cursor = "";
|
|
296
|
+
self.parent.style.cursor = "";
|
|
297
|
+
document$1.body.style.cursor = "";
|
|
298
|
+
}
|
|
299
|
+
function startDragging(e) {
|
|
300
|
+
if ("button" in e && e.button !== 0) {
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
var self = this;
|
|
304
|
+
var a = elements[self.a].element;
|
|
305
|
+
var b = elements[self.b].element;
|
|
306
|
+
if (!self.dragging) {
|
|
307
|
+
getOption(options, "onDragStart", NOOP)(getSizes());
|
|
308
|
+
}
|
|
309
|
+
e.preventDefault();
|
|
310
|
+
self.dragging = true;
|
|
311
|
+
self.move = drag.bind(self);
|
|
312
|
+
self.stop = stopDragging.bind(self);
|
|
313
|
+
global[addEventListener]("mouseup", self.stop);
|
|
314
|
+
global[addEventListener]("touchend", self.stop);
|
|
315
|
+
global[addEventListener]("touchcancel", self.stop);
|
|
316
|
+
global[addEventListener]("mousemove", self.move);
|
|
317
|
+
global[addEventListener]("touchmove", self.move);
|
|
318
|
+
a[addEventListener]("selectstart", NOOP);
|
|
319
|
+
a[addEventListener]("dragstart", NOOP);
|
|
320
|
+
b[addEventListener]("selectstart", NOOP);
|
|
321
|
+
b[addEventListener]("dragstart", NOOP);
|
|
322
|
+
a.style.userSelect = "none";
|
|
323
|
+
a.style.webkitUserSelect = "none";
|
|
324
|
+
a.style.MozUserSelect = "none";
|
|
325
|
+
a.style.pointerEvents = "none";
|
|
326
|
+
b.style.userSelect = "none";
|
|
327
|
+
b.style.webkitUserSelect = "none";
|
|
328
|
+
b.style.MozUserSelect = "none";
|
|
329
|
+
b.style.pointerEvents = "none";
|
|
330
|
+
self.gutter.style.cursor = cursor;
|
|
331
|
+
self.parent.style.cursor = cursor;
|
|
332
|
+
document$1.body.style.cursor = cursor;
|
|
333
|
+
calculateSizes.call(self);
|
|
334
|
+
self.dragOffset = getMousePosition(e) - self.end;
|
|
335
|
+
}
|
|
336
|
+
sizes = trimToMin(sizes);
|
|
337
|
+
var pairs = [];
|
|
338
|
+
elements = ids.map(function(id, i) {
|
|
339
|
+
var element = {
|
|
340
|
+
element: elementOrSelector(id),
|
|
341
|
+
size: sizes[i],
|
|
342
|
+
minSize: minSizes[i],
|
|
343
|
+
maxSize: maxSizes[i],
|
|
344
|
+
snapOffset: snapOffsets[i],
|
|
345
|
+
i
|
|
346
|
+
};
|
|
347
|
+
var pair;
|
|
348
|
+
if (i > 0) {
|
|
349
|
+
pair = {
|
|
350
|
+
a: i - 1,
|
|
351
|
+
b: i,
|
|
352
|
+
dragging: false,
|
|
353
|
+
direction,
|
|
354
|
+
parent
|
|
355
|
+
};
|
|
356
|
+
pair[aGutterSize] = getGutterSize(
|
|
357
|
+
gutterSize,
|
|
358
|
+
i - 1 === 0,
|
|
359
|
+
false,
|
|
360
|
+
gutterAlign
|
|
361
|
+
);
|
|
362
|
+
pair[bGutterSize] = getGutterSize(
|
|
363
|
+
gutterSize,
|
|
364
|
+
false,
|
|
365
|
+
i === ids.length - 1,
|
|
366
|
+
gutterAlign
|
|
367
|
+
);
|
|
368
|
+
if (parentFlexDirection === "row-reverse" || parentFlexDirection === "column-reverse") {
|
|
369
|
+
var temp = pair.a;
|
|
370
|
+
pair.a = pair.b;
|
|
371
|
+
pair.b = temp;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
if (i > 0) {
|
|
375
|
+
var gutterElement = gutter(i, direction, element.element);
|
|
376
|
+
setGutterSize(gutterElement, gutterSize, i);
|
|
377
|
+
pair[gutterStartDragging] = startDragging.bind(pair);
|
|
378
|
+
gutterElement[addEventListener](
|
|
379
|
+
"mousedown",
|
|
380
|
+
pair[gutterStartDragging]
|
|
381
|
+
);
|
|
382
|
+
gutterElement[addEventListener](
|
|
383
|
+
"touchstart",
|
|
384
|
+
pair[gutterStartDragging]
|
|
385
|
+
);
|
|
386
|
+
parent.insertBefore(gutterElement, element.element);
|
|
387
|
+
pair.gutter = gutterElement;
|
|
388
|
+
}
|
|
389
|
+
setElementSize(
|
|
390
|
+
element.element,
|
|
391
|
+
element.size,
|
|
392
|
+
getGutterSize(
|
|
393
|
+
gutterSize,
|
|
394
|
+
i === 0,
|
|
395
|
+
i === ids.length - 1,
|
|
396
|
+
gutterAlign
|
|
397
|
+
),
|
|
398
|
+
i
|
|
399
|
+
);
|
|
400
|
+
if (i > 0) {
|
|
401
|
+
pairs.push(pair);
|
|
402
|
+
}
|
|
403
|
+
return element;
|
|
404
|
+
});
|
|
405
|
+
function adjustToMin(element) {
|
|
406
|
+
var isLast = element.i === pairs.length;
|
|
407
|
+
var pair = isLast ? pairs[element.i - 1] : pairs[element.i];
|
|
408
|
+
calculateSizes.call(pair);
|
|
409
|
+
var size = isLast ? pair.size - element.minSize - pair[bGutterSize] : element.minSize + pair[aGutterSize];
|
|
410
|
+
adjust.call(pair, size);
|
|
411
|
+
}
|
|
412
|
+
elements.forEach(function(element) {
|
|
413
|
+
var computedSize = element.element[getBoundingClientRect]()[dimension];
|
|
414
|
+
if (computedSize < element.minSize) {
|
|
415
|
+
if (expandToMin) {
|
|
416
|
+
adjustToMin(element);
|
|
417
|
+
} else {
|
|
418
|
+
element.minSize = computedSize;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
function setSizes(newSizes) {
|
|
423
|
+
var trimmed = trimToMin(newSizes);
|
|
424
|
+
trimmed.forEach(function(newSize, i) {
|
|
425
|
+
if (i > 0) {
|
|
426
|
+
var pair = pairs[i - 1];
|
|
427
|
+
var a = elements[pair.a];
|
|
428
|
+
var b = elements[pair.b];
|
|
429
|
+
a.size = trimmed[i - 1];
|
|
430
|
+
b.size = newSize;
|
|
431
|
+
setElementSize(a.element, a.size, pair[aGutterSize], a.i);
|
|
432
|
+
setElementSize(b.element, b.size, pair[bGutterSize], b.i);
|
|
433
|
+
}
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
function destroy(preserveStyles, preserveGutter) {
|
|
437
|
+
pairs.forEach(function(pair) {
|
|
438
|
+
if (preserveGutter !== true) {
|
|
439
|
+
pair.parent.removeChild(pair.gutter);
|
|
440
|
+
} else {
|
|
441
|
+
pair.gutter[removeEventListener](
|
|
442
|
+
"mousedown",
|
|
443
|
+
pair[gutterStartDragging]
|
|
444
|
+
);
|
|
445
|
+
pair.gutter[removeEventListener](
|
|
446
|
+
"touchstart",
|
|
447
|
+
pair[gutterStartDragging]
|
|
448
|
+
);
|
|
449
|
+
}
|
|
450
|
+
if (preserveStyles !== true) {
|
|
451
|
+
var style = elementStyle(
|
|
452
|
+
dimension,
|
|
453
|
+
pair.a.size,
|
|
454
|
+
pair[aGutterSize]
|
|
455
|
+
);
|
|
456
|
+
Object.keys(style).forEach(function(prop) {
|
|
457
|
+
elements[pair.a].element.style[prop] = "";
|
|
458
|
+
elements[pair.b].element.style[prop] = "";
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
return {
|
|
464
|
+
setSizes,
|
|
465
|
+
getSizes,
|
|
466
|
+
collapse: function collapse(i) {
|
|
467
|
+
adjustToMin(elements[i]);
|
|
468
|
+
},
|
|
469
|
+
destroy,
|
|
470
|
+
parent,
|
|
471
|
+
pairs
|
|
472
|
+
};
|
|
473
|
+
};
|
|
474
|
+
const initResizable = (root = document) => {
|
|
475
|
+
const groups = root.querySelectorAll(".resizable-group");
|
|
476
|
+
groups.forEach((group) => {
|
|
477
|
+
if (group.dataset.splitInitialized) return;
|
|
478
|
+
const direction = group.dataset.direction || "horizontal";
|
|
479
|
+
const children = Array.from(group.children).filter((el) => el.tagName === "DIV" || el.tagName === "SECTION" || el.tagName === "ASIDE");
|
|
480
|
+
if (children.length < 2) return;
|
|
481
|
+
let sizes;
|
|
482
|
+
if (group.dataset.sizes) {
|
|
483
|
+
sizes = group.dataset.sizes.split(",").map(Number);
|
|
484
|
+
}
|
|
485
|
+
let minSizes;
|
|
486
|
+
if (group.dataset.minSizes) {
|
|
487
|
+
minSizes = group.dataset.minSizes.split(",").map(Number);
|
|
488
|
+
}
|
|
489
|
+
Split(children, {
|
|
490
|
+
sizes: sizes || void 0,
|
|
491
|
+
// Default is equal
|
|
492
|
+
minSize: minSizes || 100,
|
|
493
|
+
direction,
|
|
494
|
+
gutterSize: 5,
|
|
495
|
+
// 5px gutter
|
|
496
|
+
cursor: direction === "horizontal" ? "col-resize" : "row-resize",
|
|
497
|
+
elementStyle: (dimension, size, gutterSize) => {
|
|
498
|
+
return {
|
|
499
|
+
"flex-basis": `calc(${size}% - ${gutterSize}px)`
|
|
500
|
+
};
|
|
501
|
+
},
|
|
502
|
+
gutterStyle: (dimension, gutterSize) => {
|
|
503
|
+
return {
|
|
504
|
+
"flex-basis": `${gutterSize}px`
|
|
505
|
+
};
|
|
506
|
+
}
|
|
507
|
+
});
|
|
508
|
+
group.dataset.splitInitialized = "true";
|
|
509
|
+
});
|
|
510
|
+
};
|
|
511
|
+
if (typeof window !== "undefined") {
|
|
512
|
+
const observer = new MutationObserver((mutations) => {
|
|
513
|
+
mutations.forEach((mutation) => {
|
|
514
|
+
if (mutation.type === "childList") {
|
|
515
|
+
mutation.addedNodes.forEach((node) => {
|
|
516
|
+
if (node.nodeType === 1) {
|
|
517
|
+
if (node.classList?.contains("resizable-group")) {
|
|
518
|
+
initResizable(node.parentNode);
|
|
519
|
+
} else if (node.querySelector?.(".resizable-group")) {
|
|
520
|
+
initResizable(node);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
});
|
|
524
|
+
}
|
|
525
|
+
});
|
|
526
|
+
});
|
|
527
|
+
document.addEventListener("DOMContentLoaded", () => {
|
|
528
|
+
initResizable();
|
|
529
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
530
|
+
});
|
|
531
|
+
}
|
|
532
|
+
export {
|
|
533
|
+
initResizable
|
|
534
|
+
};
|