@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.
Files changed (55) hide show
  1. package/CHANGELOG-cn.md +54 -0
  2. package/CHANGELOG.md +54 -0
  3. package/LICENSE +21 -0
  4. package/README-cn.md +186 -0
  5. package/README.md +173 -0
  6. package/dist/css/basecoat.cdn.css +7389 -0
  7. package/dist/css/basecoat.cdn.min.css +2 -0
  8. package/dist/css/basecoat.css +1797 -0
  9. package/dist/css/datepicker.css +382 -0
  10. package/dist/css/datepicker.min.css +1 -0
  11. package/dist/css/resizable.css +96 -0
  12. package/dist/css/resizable.min.css +1 -0
  13. package/dist/js/accordion.js +20 -0
  14. package/dist/js/accordion.min.js +13 -0
  15. package/dist/js/all.js +17 -0
  16. package/dist/js/all.min.js +17 -0
  17. package/dist/js/basecoat.js +75 -0
  18. package/dist/js/basecoat.min.js +56 -0
  19. package/dist/js/carousel.js +104 -0
  20. package/dist/js/carousel.min.js +41 -0
  21. package/dist/js/catppuccin-theme-switcher.js +136 -0
  22. package/dist/js/catppuccin-theme-switcher.min.js +73 -0
  23. package/dist/js/command.js +132 -0
  24. package/dist/js/command.min.js +76 -0
  25. package/dist/js/datepicker.js +2367 -0
  26. package/dist/js/datepicker.min.js +1422 -0
  27. package/dist/js/dialog.js +20 -0
  28. package/dist/js/dialog.min.js +11 -0
  29. package/dist/js/dropdown-menu.js +148 -0
  30. package/dist/js/dropdown-menu.min.js +75 -0
  31. package/dist/js/input-otp.js +94 -0
  32. package/dist/js/input-otp.min.js +38 -0
  33. package/dist/js/lighting.js +80 -0
  34. package/dist/js/lighting.min.js +44 -0
  35. package/dist/js/popover.js +72 -0
  36. package/dist/js/popover.min.js +34 -0
  37. package/dist/js/resizable.js +534 -0
  38. package/dist/js/resizable.min.js +284 -0
  39. package/dist/js/select.js +246 -0
  40. package/dist/js/select.min.js +131 -0
  41. package/dist/js/sheet.js +85 -0
  42. package/dist/js/sheet.min.js +40 -0
  43. package/dist/js/sidebar.js +87 -0
  44. package/dist/js/sidebar.min.js +53 -0
  45. package/dist/js/slider.js +18 -0
  46. package/dist/js/slider.min.js +10 -0
  47. package/dist/js/tabs.js +53 -0
  48. package/dist/js/tabs.min.js +40 -0
  49. package/dist/js/toast.js +137 -0
  50. package/dist/js/toast.min.js +83 -0
  51. package/dist/js/toggle.js +36 -0
  52. package/dist/js/toggle.min.js +20 -0
  53. package/dist/theme/catppuccin/index.css +448 -0
  54. package/dist/theme/catppuccin/index.min.css +1 -0
  55. 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
+ };