rappel-ui 1.0.0

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 (163) hide show
  1. package/cjs/_virtual/_plugin-vue_export-helper.js +1 -0
  2. package/cjs/components/button/index.d.ts +33 -0
  3. package/cjs/components/button/index.js +1 -0
  4. package/cjs/components/button/src/button.d.ts +3 -0
  5. package/cjs/components/button/src/button.vue.js +1 -0
  6. package/cjs/components/button/src/button.vue2.js +1 -0
  7. package/cjs/components/button/src/constants.d.ts +4 -0
  8. package/cjs/components/button/src/constants.js +1 -0
  9. package/cjs/components/button/src/types.d.ts +16 -0
  10. package/cjs/components/button/style/css.d.ts +0 -0
  11. package/cjs/components/button/style/index.d.ts +0 -0
  12. package/cjs/components/colors/index.d.ts +7 -0
  13. package/cjs/components/colors/index.js +1 -0
  14. package/cjs/components/colors/src/colors.vue.js +1 -0
  15. package/cjs/components/colors/src/colors.vue2.js +1 -0
  16. package/cjs/components/colors/src/neutral-color.css +1 -0
  17. package/cjs/components/colors/src/neutral-color.vue.js +1 -0
  18. package/cjs/components/colors/src/neutral-color.vue2.js +1 -0
  19. package/cjs/components/colors/src/primary-color.css +1 -0
  20. package/cjs/components/colors/src/primary-color.vue.js +1 -0
  21. package/cjs/components/colors/src/primary-color.vue2.js +1 -0
  22. package/cjs/components/colors/src/secondary-color.css +1 -0
  23. package/cjs/components/colors/src/secondary-color.vue.js +1 -0
  24. package/cjs/components/colors/src/secondary-color.vue2.js +1 -0
  25. package/cjs/components/index.d.ts +4 -0
  26. package/cjs/components/index.js +1 -0
  27. package/cjs/components/input/index.d.ts +25 -0
  28. package/cjs/components/input/index.js +1 -0
  29. package/cjs/components/input/src/input.vue.js +1 -0
  30. package/cjs/components/input/src/input.vue2.js +1 -0
  31. package/cjs/components/tabs/index.d.ts +20 -0
  32. package/cjs/components/tabs/index.js +1 -0
  33. package/cjs/components/tabs/src/tabs.vue.js +1 -0
  34. package/cjs/composables/index.d.ts +6 -0
  35. package/cjs/composables/use-namespace/index.d.ts +12 -0
  36. package/cjs/composables/use-namespace/index.js +1 -0
  37. package/cjs/composables/useDateFormat.d.ts +7 -0
  38. package/cjs/composables/useDateFormat.js +1 -0
  39. package/cjs/composables/useDraggable.d.ts +10 -0
  40. package/cjs/composables/useDraggable.js +1 -0
  41. package/cjs/composables/useOnceFn.d.ts +24 -0
  42. package/cjs/composables/useOnceFn.js +1 -0
  43. package/cjs/composables/useTimeNodes.d.ts +3 -0
  44. package/cjs/composables/useTimeNodes.js +1 -0
  45. package/cjs/composables/useWaterFallLayout.d.ts +10 -0
  46. package/cjs/composables/useWaterFallLayout.js +1 -0
  47. package/cjs/constants/index.d.ts +1 -0
  48. package/cjs/constants/svgLoading.d.ts +2 -0
  49. package/cjs/constants/svgLoading.js +36 -0
  50. package/cjs/directives/index.d.ts +3 -0
  51. package/cjs/directives/vDraggable.d.ts +2 -0
  52. package/cjs/directives/vDraggable.js +1 -0
  53. package/cjs/directives/vResizable.d.ts +14 -0
  54. package/cjs/directives/vResizable.js +21 -0
  55. package/cjs/directives/vSvgLoading.d.ts +4 -0
  56. package/cjs/directives/vSvgLoading.js +1 -0
  57. package/cjs/index.d.ts +86 -0
  58. package/cjs/index.js +1 -0
  59. package/cjs/package.json.js +1 -0
  60. package/cjs/purple-ui/index.d.ts +1 -0
  61. package/cjs/purple-ui/resolver.d.ts +2 -0
  62. package/cjs/purple-ui/resolver.js +1 -0
  63. package/cjs/theme-chalk/src/base.css +1 -0
  64. package/cjs/theme-chalk/src/button.css +1 -0
  65. package/cjs/utils/index.d.ts +2 -0
  66. package/cjs/utils/util.d.ts +143 -0
  67. package/cjs/utils/util.js +3 -0
  68. package/cjs/utils/vue/index.d.ts +17 -0
  69. package/cjs/utils/vue/index.js +1 -0
  70. package/es/_virtual/_plugin-vue_export-helper.mjs +9 -0
  71. package/es/components/button/index.d.ts +33 -0
  72. package/es/components/button/index.mjs +6 -0
  73. package/es/components/button/src/button.d.ts +3 -0
  74. package/es/components/button/src/button.vue.mjs +74 -0
  75. package/es/components/button/src/button.vue2.mjs +4 -0
  76. package/es/components/button/src/constants.d.ts +4 -0
  77. package/es/components/button/src/constants.mjs +5 -0
  78. package/es/components/button/src/types.d.ts +16 -0
  79. package/es/components/button/style/css.d.ts +0 -0
  80. package/es/components/button/style/index.d.ts +0 -0
  81. package/es/components/colors/index.d.ts +7 -0
  82. package/es/components/colors/index.mjs +16 -0
  83. package/es/components/colors/src/colors.vue.mjs +21 -0
  84. package/es/components/colors/src/colors.vue2.mjs +4 -0
  85. package/es/components/colors/src/neutral-color.css +1 -0
  86. package/es/components/colors/src/neutral-color.vue.mjs +7 -0
  87. package/es/components/colors/src/neutral-color.vue2.mjs +195 -0
  88. package/es/components/colors/src/primary-color.css +1 -0
  89. package/es/components/colors/src/primary-color.vue.mjs +7 -0
  90. package/es/components/colors/src/primary-color.vue2.mjs +33 -0
  91. package/es/components/colors/src/secondary-color.css +1 -0
  92. package/es/components/colors/src/secondary-color.vue.mjs +7 -0
  93. package/es/components/colors/src/secondary-color.vue2.mjs +54 -0
  94. package/es/components/index.d.ts +4 -0
  95. package/es/components/index.mjs +20 -0
  96. package/es/components/input/index.d.ts +25 -0
  97. package/es/components/input/index.mjs +6 -0
  98. package/es/components/input/src/input.vue.mjs +15 -0
  99. package/es/components/input/src/input.vue2.mjs +4 -0
  100. package/es/components/tabs/index.d.ts +20 -0
  101. package/es/components/tabs/index.mjs +6 -0
  102. package/es/components/tabs/src/tabs.vue.mjs +17 -0
  103. package/es/composables/index.d.ts +6 -0
  104. package/es/composables/use-namespace/index.d.ts +12 -0
  105. package/es/composables/use-namespace/index.mjs +21 -0
  106. package/es/composables/useDateFormat.d.ts +7 -0
  107. package/es/composables/useDateFormat.mjs +20 -0
  108. package/es/composables/useDraggable.d.ts +10 -0
  109. package/es/composables/useDraggable.mjs +55 -0
  110. package/es/composables/useOnceFn.d.ts +24 -0
  111. package/es/composables/useOnceFn.mjs +32 -0
  112. package/es/composables/useTimeNodes.d.ts +3 -0
  113. package/es/composables/useTimeNodes.mjs +24 -0
  114. package/es/composables/useWaterFallLayout.d.ts +10 -0
  115. package/es/composables/useWaterFallLayout.mjs +51 -0
  116. package/es/constants/index.d.ts +1 -0
  117. package/es/constants/svgLoading.d.ts +2 -0
  118. package/es/constants/svgLoading.mjs +39 -0
  119. package/es/directives/index.d.ts +3 -0
  120. package/es/directives/vDraggable.d.ts +2 -0
  121. package/es/directives/vDraggable.mjs +13 -0
  122. package/es/directives/vResizable.d.ts +14 -0
  123. package/es/directives/vResizable.mjs +136 -0
  124. package/es/directives/vSvgLoading.d.ts +4 -0
  125. package/es/directives/vSvgLoading.mjs +48 -0
  126. package/es/index.d.ts +86 -0
  127. package/es/index.mjs +76 -0
  128. package/es/package.json.mjs +4 -0
  129. package/es/purple-ui/index.d.ts +1 -0
  130. package/es/purple-ui/resolver.d.ts +2 -0
  131. package/es/purple-ui/resolver.mjs +18 -0
  132. package/es/theme-chalk/src/base.css +1 -0
  133. package/es/theme-chalk/src/button.css +1 -0
  134. package/es/utils/index.d.ts +2 -0
  135. package/es/utils/util.d.ts +143 -0
  136. package/es/utils/util.mjs +151 -0
  137. package/es/utils/vue/index.d.ts +17 -0
  138. package/es/utils/vue/index.mjs +36 -0
  139. package/global.d.ts +7 -0
  140. package/package.json +65 -0
  141. package/theme-chalk/base.css +148 -0
  142. package/theme-chalk/css-vars/_button.css +35 -0
  143. package/theme-chalk/css-vars/_colors.css +51 -0
  144. package/theme-chalk/function/_button.css +35 -0
  145. package/theme-chalk/function/index.css +35 -0
  146. package/theme-chalk/index.css +560 -0
  147. package/theme-chalk/mixins/_button.css +35 -0
  148. package/theme-chalk/mixins/index.css +35 -0
  149. package/theme-chalk/pu-button.css +446 -0
  150. package/theme-chalk/root-vars.css +132 -0
  151. package/theme-chalk/src/base.scss +30 -0
  152. package/theme-chalk/src/button.scss +104 -0
  153. package/theme-chalk/src/common/_function.scss +46 -0
  154. package/theme-chalk/src/css-vars/_button.scss +47 -0
  155. package/theme-chalk/src/css-vars/_colors.scss +82 -0
  156. package/theme-chalk/src/css-vars/_namespace.scss +12 -0
  157. package/theme-chalk/src/function/_button.scss +2 -0
  158. package/theme-chalk/src/function/index.scss +155 -0
  159. package/theme-chalk/src/index.scss +2 -0
  160. package/theme-chalk/src/mixins/_button.scss +140 -0
  161. package/theme-chalk/src/mixins/index.scss +25 -0
  162. package/theme-chalk/src/root-vars.scss +13 -0
  163. package/umd/index.js +59 -0
@@ -0,0 +1,136 @@
1
+ const h = "v-resizable-handle", $ = "v-resizable-handle-style";
2
+ function C() {
3
+ if (document.getElementById($)) return;
4
+ const t = document.createElement("style");
5
+ t.id = $, t.textContent = `
6
+ .${h} {
7
+ position: absolute;
8
+ background: transparent;
9
+ z-index: 9999;
10
+ user-select: none;
11
+ touch-action: none;
12
+ opacity: 0;
13
+ }
14
+ .${h}::after {
15
+ content: '';
16
+ display:block;
17
+ width:100%;
18
+ height:100%;
19
+ border-radius:2px;
20
+ background: rgba(0,0,0,0.12);
21
+ }
22
+ .${h}.hr { cursor: ew-resize; }
23
+ .${h}.vr { cursor: ns-resize; }
24
+ .${h}.corner { cursor: nwse-resize; }
25
+ `, document.head.appendChild(t);
26
+ }
27
+ function u(t, i, r) {
28
+ let n = 0, c = 0;
29
+ switch (t) {
30
+ case "hr":
31
+ n = 4, c = r.height - 8;
32
+ break;
33
+ case "vr":
34
+ n = r.width - 8, c = 4;
35
+ break;
36
+ case "corner":
37
+ n = 8, c = 8;
38
+ break;
39
+ }
40
+ return i.style.width = `${n}px`, i.style.height = `${c}px`, i;
41
+ }
42
+ function f(t, i) {
43
+ const r = document.createElement("div"), n = i.getBoundingClientRect();
44
+ return r.className = `${h} ${t}`, u(t, r, n);
45
+ }
46
+ function S(t, i, r) {
47
+ switch (i) {
48
+ case "left":
49
+ t.style.left = "-2px", t.style.top = "4px", u("hr", t, r);
50
+ break;
51
+ case "right":
52
+ t.style.left = `${r.width - 2}px`, t.style.top = "4px", u("hr", t, r);
53
+ break;
54
+ case "top":
55
+ t.style.left = "4px", t.style.top = "-2px", u("vr", t, r);
56
+ break;
57
+ case "bottom":
58
+ t.style.left = "4px", t.style.top = `${r.height - 2}px`, u("vr", t, r);
59
+ break;
60
+ case "bottom-right":
61
+ t.style.left = `${r.width - 2}px`, t.style.top = `${r.height - 2}px`;
62
+ break;
63
+ }
64
+ }
65
+ function W(t, i) {
66
+ C(), getComputedStyle(t).position === "static" && (t.style.position = "relative"), t.style.boxSizing = t.style.boxSizing || "border-box";
67
+ const n = {
68
+ startX: 0,
69
+ startY: 0,
70
+ startW: 0,
71
+ startH: 0,
72
+ startL: 0,
73
+ startT: 0,
74
+ minW: i?.minWidth ?? 40,
75
+ minH: i?.minHeight ?? 24,
76
+ maxW: i?.maxWidth,
77
+ maxH: i?.maxHeight,
78
+ handlers: []
79
+ }, c = f("hr", t), x = f("hr", t), v = f("vr", t), E = f("vr", t), b = f("corner", t);
80
+ c.dataset.side = "left", x.dataset.side = "right", v.dataset.side = "top", E.dataset.side = "bottom", b.dataset.side = "bottom-right", t.appendChild(c), t.appendChild(x), t.appendChild(v), t.appendChild(E), t.appendChild(b), n.handlers.push(c, x, v, E, b);
81
+ const w = (o) => {
82
+ const a = o.target;
83
+ if (!a || !a.dataset?.side) return;
84
+ const e = a.dataset.side;
85
+ o.target.setPointerCapture?.(o.pointerId), n.side = e, n.pointerId = o.pointerId;
86
+ const p = t.getBoundingClientRect();
87
+ n.startX = o.clientX, n.startY = o.clientY, n.startW = p.width, n.startH = p.height;
88
+ const l = getComputedStyle(t), s = parseFloat(l.left || "0"), d = parseFloat(l.top || "0");
89
+ n.startL = s, n.startT = d, n.onMove = (m) => M(m, t, n), n.onUp = (m) => D(m, t, n), window.addEventListener("pointermove", n.onMove), window.addEventListener("pointerup", n.onUp), window.addEventListener("pointercancel", n.onUp), o.preventDefault();
90
+ }, M = (o, a, e) => {
91
+ if (e.side === void 0) return;
92
+ const p = o.clientX - e.startX, l = o.clientY - e.startY;
93
+ let s = e.startW, d = e.startH, m = e.startL, g = e.startT;
94
+ e.side === "right" ? (s = Math.max(e.minW, e.startW + p), e.maxW && (s = Math.min(s, e.maxW))) : e.side === "left" ? (s = Math.max(e.minW, e.startW - p), e.maxW && (s = Math.min(s, e.maxW)), m = e.startL + (e.startW - s)) : e.side === "bottom" ? (d = Math.max(e.minH, e.startH + l), e.maxH && (d = Math.min(d, e.maxH))) : e.side === "top" ? (d = Math.max(e.minH, e.startH - l), e.maxH && (d = Math.min(d, e.maxH)), g = e.startT + (e.startH - d)) : e.side === "bottom-right" && (s = Math.max(e.minW, e.startW + p), d = Math.max(e.minH, e.startH + l), e.maxW && (s = Math.min(s, e.maxW)), e.maxH && (d = Math.min(d, e.maxH))), a.style.width = `${s}px`, a.style.height = `${d}px`;
95
+ const H = getComputedStyle(a).position;
96
+ (H === "absolute" || H === "relative" || H === "fixed") && (a.style.left = `${m}px`, a.style.top = `${g}px`);
97
+ const I = a.getBoundingClientRect();
98
+ e.handlers.forEach((_) => {
99
+ const z = _.dataset.side;
100
+ S(_, z, I);
101
+ }), o.preventDefault();
102
+ }, D = (o, a, e) => {
103
+ e.onMove && (window.removeEventListener("pointermove", e.onMove), window.removeEventListener("pointerup", e.onUp), window.removeEventListener("pointercancel", e.onUp)), e.side = void 0, e.pointerId = void 0;
104
+ }, y = () => {
105
+ const o = t.getBoundingClientRect();
106
+ n.handlers.forEach((a) => {
107
+ const e = a.dataset.side;
108
+ a.style.position = "absolute", a.style.boxSizing = "content-box", S(a, e, o);
109
+ });
110
+ };
111
+ n.handlers.forEach((o) => o.addEventListener("pointerdown", w));
112
+ const L = new ResizeObserver(y);
113
+ return L.observe(t), n.ro = L, y(), { destroy: () => {
114
+ n.handlers.forEach((o) => {
115
+ o.removeEventListener("pointerdown", w), o.parentElement === t && t.removeChild(o);
116
+ }), n.onMove && (window.removeEventListener("pointermove", n.onMove), window.removeEventListener("pointerup", n.onUp), window.removeEventListener("pointercancel", n.onUp)), n.ro && n.ro.disconnect();
117
+ } };
118
+ }
119
+ const N = {
120
+ mounted(t, i) {
121
+ const r = i.value, { destroy: n } = W(t, r);
122
+ t.__v_resizable_cleanup = n;
123
+ },
124
+ beforeUnmount(t) {
125
+ const i = t.__v_resizable_cleanup;
126
+ i && (i(), delete t.__v_resizable_cleanup);
127
+ }
128
+ };
129
+ function Z(t, i) {
130
+ const { destroy: r } = W(t, i);
131
+ return r;
132
+ }
133
+ export {
134
+ Z as applyResizable,
135
+ N as vResizable
136
+ };
@@ -0,0 +1,4 @@
1
+ export declare const vSvgLoading: {
2
+ mounted(el: HTMLElement, binding: any, vNode: any): void;
3
+ updated(el: HTMLElement, binding: any, vNode: any): void;
4
+ };
@@ -0,0 +1,48 @@
1
+ import { svgLoadingContent as C } from "../constants/svgLoading.mjs";
2
+ import { ref as x } from "vue";
3
+ const v = x(1e3), h = x(2e3), $ = {
4
+ mounted(l, r, t) {
5
+ const o = (s, a, m) => {
6
+ const c = {
7
+ svgClass: "",
8
+ svgContent: C,
9
+ svgViewBox: "",
10
+ //min-x min-y width height
11
+ markBgColor: "rgba(255,255,255,0.8)",
12
+ markClass: "",
13
+ spinnerClass: "",
14
+ spinnerH: 300,
15
+ spinnerContent: "",
16
+ zIndex: h.value++
17
+ }, e = Object.assign({}, c, a?.arg || {}), p = `background-color:${e.markBgColor};top:0;right:0;bottom:0;left:0;margin:0;position:absolute;transition:opacity 0.3s;overflow: hidden;`, u = `position:absolute;text-align:center;left:50%;top:50%;width:100%;height:${e.spinnerH}px;`, i = document.createElement("div"), n = document.createElement("div");
18
+ v.value++, i.className = `svg-loading ${e.markClass} uid-${v.value}`, n.className = `svg-loading-spinner ${e.spinnerClass}`, n.innerHTML = `${e.svgContent}`;
19
+ const g = n.getElementsByTagName("svg")[0];
20
+ if (e.spinnerH && (g.setAttribute("width", `${e.spinnerH}px`), g.setAttribute("height", `${e.spinnerH}px`)), e.svgClass && g.setAttribute("class", e.svgClass), e.svgViewBox && g.setAttribute("viewBox", e.svgViewBox), m.ctx.markSelector = ".svg-loading", e.spinnerContent) {
21
+ const d = document.createElement("div");
22
+ d.setAttribute("style", "text-align:center;"), d.innerHTML = e.spinnerContent, n.appendChild(d);
23
+ }
24
+ n.setAttribute("style", u), n.style.setProperty("margin-top", `${-(e.spinnerH / 2)}px`), n.style.setProperty("margin-left", `${-(e.spinnerH / 2)}px`), i.setAttribute("style", p), i.style.setProperty("z-index", e.zIndex), i.appendChild(n), s.style.setProperty("position", "relative"), s.appendChild(i);
25
+ }, y = (s) => 1 - (1 - s) ** 3, f = (s, a = 150) => {
26
+ const m = performance.now(), c = (e) => {
27
+ const p = e - m;
28
+ if (p >= a) {
29
+ s.style.setProperty("opacity", "0"), s?.remove();
30
+ return;
31
+ }
32
+ const u = a ? y(p / a) : 1;
33
+ s.style.setProperty("opacity", String(1 - u)), requestAnimationFrame(c);
34
+ };
35
+ requestAnimationFrame(c);
36
+ };
37
+ t.ctx.fadeOut = f, t.ctx.createLoading = o, r.value && o(l, r, t);
38
+ },
39
+ updated(l, r, t) {
40
+ if (r.value !== r.oldValue) {
41
+ const o = l.querySelector(t.ctx.markSelector);
42
+ r.value ? !o && t.ctx.createLoading(l, r, t) : o && t.ctx.fadeOut(o);
43
+ }
44
+ }
45
+ };
46
+ export {
47
+ $ as vSvgLoading
48
+ };
package/es/index.d.ts ADDED
@@ -0,0 +1,86 @@
1
+ export * from './components';
2
+ export * from './constants';
3
+ export * from './directives';
4
+ export * from './composables';
5
+ export * from './utils';
6
+ export * from './purple-ui/index';
7
+ import * as components from './components';
8
+ export declare const install: (app: import('vue').App) => void;
9
+ export declare const version: string;
10
+ declare const _default: {
11
+ PuButton: {
12
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<components.ButtonProps> & Readonly<{
13
+ onClick?: ((evt: MouseEvent) => any) | undefined;
14
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
15
+ click: (evt: MouseEvent) => any;
16
+ }, import('vue').PublicProps, {}, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, HTMLButtonElement, import('vue').ComponentProvideOptions, {
17
+ P: {};
18
+ B: {};
19
+ D: {};
20
+ C: {};
21
+ M: {};
22
+ Defaults: {};
23
+ }, Readonly<components.ButtonProps> & Readonly<{
24
+ onClick?: ((evt: MouseEvent) => any) | undefined;
25
+ }>, {}, {}, {}, {}, {}>;
26
+ __isFragment?: never;
27
+ __isTeleport?: never;
28
+ __isSuspense?: never;
29
+ } & import('vue').ComponentOptionsBase<Readonly<components.ButtonProps> & Readonly<{
30
+ onClick?: ((evt: MouseEvent) => any) | undefined;
31
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
32
+ click: (evt: MouseEvent) => any;
33
+ }, string, {}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
34
+ $slots: {
35
+ loading?(_: {}): any;
36
+ icon?(_: {}): any;
37
+ default?(_: {}): any;
38
+ };
39
+ });
40
+ PuInput: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
41
+ type: {
42
+ type: StringConstructor;
43
+ default: string;
44
+ };
45
+ size: {
46
+ type: StringConstructor;
47
+ default: string;
48
+ };
49
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
50
+ type: {
51
+ type: StringConstructor;
52
+ default: string;
53
+ };
54
+ size: {
55
+ type: StringConstructor;
56
+ default: string;
57
+ };
58
+ }>> & Readonly<{}>, {
59
+ size: string;
60
+ type: string;
61
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLInputElement>;
62
+ PuTabs: {
63
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, HTMLDivElement, import('vue').ComponentProvideOptions, {
64
+ P: {};
65
+ B: {};
66
+ D: {};
67
+ C: {};
68
+ M: {};
69
+ Defaults: {};
70
+ }, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, {}>;
71
+ __isFragment?: never;
72
+ __isTeleport?: never;
73
+ __isSuspense?: never;
74
+ } & import('vue').ComponentOptionsBase<Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
75
+ $slots: {
76
+ 'prev-button'?(_: {}): any;
77
+ };
78
+ });
79
+ PuColors: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
80
+ PuPrimaryColor: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
81
+ PuSecondaryColor: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
82
+ PuNeutralColor: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
83
+ install: (app: import('vue').App) => void;
84
+ version: string;
85
+ };
86
+ export default _default;
package/es/index.mjs ADDED
@@ -0,0 +1,76 @@
1
+ import * as e from "./components/index.mjs";
2
+ import { svgLoadingContent as p } from "./constants/svgLoading.mjs";
3
+ import { vDraggable as u } from "./directives/vDraggable.mjs";
4
+ import { applyResizable as x, vResizable as d } from "./directives/vResizable.mjs";
5
+ import { vSvgLoading as C } from "./directives/vSvgLoading.mjs";
6
+ import { useDraggable as g } from "./composables/useDraggable.mjs";
7
+ import { useDateFormat as y } from "./composables/useDateFormat.mjs";
8
+ import { useOnceFn as L } from "./composables/useOnceFn.mjs";
9
+ import { useTimeNodes as F } from "./composables/useTimeNodes.mjs";
10
+ import { useWaterFallLayout as O } from "./composables/useWaterFallLayout.mjs";
11
+ import { useNamespace as E } from "./composables/use-namespace/index.mjs";
12
+ import { createGlobalInstaller as r } from "./utils/vue/index.mjs";
13
+ import { INSTALLED_KEY as S, toLowerCase as h, withInstall as w, withMultiInstall as N } from "./utils/vue/index.mjs";
14
+ import { autoCalcFileSize as z, buildTree as B, createColors as K, createOverload as U, darkenColor as k, deepClone as A, deleteKeys as q, flatArr as G, getEqualOpacityColor as M, hasOwnProperty as W, isPlainObject as Y, joinURLs as _, lineBreakToComma as $, omitEmptyKeys as H, paramsToFormData as J, readTxtByEncodes as Q, readTxtFile as V, setURLSearchParams as X, singleton as Z } from "./utils/util.mjs";
15
+ import { default as oe } from "./components/button/src/button.vue.mjs";
16
+ import { default as te } from "./components/input/src/input.vue.mjs";
17
+ import { default as le } from "./components/colors/src/colors.vue.mjs";
18
+ import { default as me } from "./components/tabs/src/tabs.vue.mjs";
19
+ import { default as pe } from "./components/colors/src/primary-color.vue.mjs";
20
+ import { default as ue } from "./components/colors/src/secondary-color.vue.mjs";
21
+ import { default as xe } from "./components/colors/src/neutral-color.vue.mjs";
22
+ import { PurpleUIResolver as ce } from "./purple-ui/resolver.mjs";
23
+ console.log(e);
24
+ const o = r(Object.values(e)), t = o.install, a = o.version, s = {
25
+ install: t,
26
+ version: a,
27
+ ...e
28
+ };
29
+ export {
30
+ S as INSTALLED_KEY,
31
+ oe as PuButton,
32
+ le as PuColors,
33
+ te as PuInput,
34
+ xe as PuNeutralColor,
35
+ pe as PuPrimaryColor,
36
+ ue as PuSecondaryColor,
37
+ me as PuTabs,
38
+ ce as PurpleUIResolver,
39
+ x as applyResizable,
40
+ z as autoCalcFileSize,
41
+ B as buildTree,
42
+ K as createColors,
43
+ r as createGlobalInstaller,
44
+ U as createOverload,
45
+ k as darkenColor,
46
+ A as deepClone,
47
+ s as default,
48
+ q as deleteKeys,
49
+ G as flatArr,
50
+ M as getEqualOpacityColor,
51
+ W as hasOwnProperty,
52
+ t as install,
53
+ Y as isPlainObject,
54
+ _ as joinURLs,
55
+ $ as lineBreakToComma,
56
+ H as omitEmptyKeys,
57
+ J as paramsToFormData,
58
+ Q as readTxtByEncodes,
59
+ V as readTxtFile,
60
+ X as setURLSearchParams,
61
+ Z as singleton,
62
+ p as svgLoadingContent,
63
+ h as toLowerCase,
64
+ y as useDateFormat,
65
+ g as useDraggable,
66
+ E as useNamespace,
67
+ L as useOnceFn,
68
+ F as useTimeNodes,
69
+ O as useWaterFallLayout,
70
+ u as vDraggable,
71
+ d as vResizable,
72
+ C as vSvgLoading,
73
+ a as version,
74
+ w as withInstall,
75
+ N as withMultiInstall
76
+ };
@@ -0,0 +1,4 @@
1
+ const o = "1.0.0";
2
+ export {
3
+ o as version
4
+ };
@@ -0,0 +1 @@
1
+ export * from './resolver';
@@ -0,0 +1,2 @@
1
+ import { ComponentResolver } from 'unplugin-vue-components';
2
+ export declare function PurpleUIResolver(): ComponentResolver;
@@ -0,0 +1,18 @@
1
+ import { toLowerCase as r } from "../utils/vue/index.mjs";
2
+ function o() {
3
+ return {
4
+ type: "component",
5
+ resolve: (e) => {
6
+ if (e.match(/^Pu[A-Z]/))
7
+ return {
8
+ name: e,
9
+ from: "purple-ui",
10
+ //
11
+ sideEffects: [`purple-ui/dist/es/${r(e.replace("Pu", ""))}/style.css`]
12
+ };
13
+ }
14
+ };
15
+ }
16
+ export {
17
+ o as PurpleUIResolver
18
+ };
@@ -0,0 +1 @@
1
+ @charset "UTF-8";:root{--pu-color-primary: #937bff;--pu-color-text-darkest: #000000;--pu-color-text-base: #303131;--pu-color-text-secondary: #606062;--pu-color-text-neutral: #909093;--pu-color-text-placeholder: #b2b2b6;--pu-color-text-disabled: #cdcdd1;--pu-color-text-lightest: #ffffff;--pu-color-border-darker: #c3c3cb;--pu-color-border-dark: #d0d0d8;--pu-color-border-base: #dbdbe0;--pu-color-border-light: #e4e4e8;--pu-color-border-lighter: #ededef;--pu-color-border-extra-light: #efeff3;--pu-color-border-theme: #d4caff;--pu-color-fill-darker: #d7d7dc;--pu-color-fill-dark: #e8e8ec;--pu-color-fill-base: #ededf0;--pu-color-fill-light: #f1f1f4;--pu-color-fill-lighter: #f6f6f7;--pu-color-fill-extra-light: #f8f8f9;--pu-color-fill-theme: #f7f7fb;--pu-color-fill-blank: #ffffff;--pu-color-fill-transparent: transparent;--pu-color-primary-base: #937bff;--pu-color-primary-hover: #7d69d9;--pu-color-primary-shade-9: #9e88ff;--pu-color-primary-shade-8: #a995ff;--pu-color-primary-shade-7: #b3a3ff;--pu-color-primary-shade-6: #beb0ff;--pu-color-primary-shade-5: #c9bdff;--pu-color-primary-shade-4: #d4caff;--pu-color-primary-shade-3: #dfd7ff;--pu-color-primary-shade-2: #e9e5ff;--pu-color-primary-shade-1: #f4f2ff;--pu-color-success-base: #06b56d;--pu-color-success-hover: #059a5d;--pu-color-success-shade-9: #1fbc7c;--pu-color-success-shade-8: #38c48a;--pu-color-success-shade-7: #51cb99;--pu-color-success-shade-6: #6ad3a7;--pu-color-success-shade-5: #83dab6;--pu-color-success-shade-4: #9be1c5;--pu-color-success-shade-3: #b4e9d3;--pu-color-success-shade-2: #cdf0e2;--pu-color-success-shade-1: #e6f8f0;--pu-color-danger-base: #ee6979;--pu-color-danger-hover: #ca5967;--pu-color-danger-shade-9: #f07886;--pu-color-danger-shade-8: #f18794;--pu-color-danger-shade-7: #f396a1;--pu-color-danger-shade-6: #f5a5af;--pu-color-danger-shade-5: #f7b4bc;--pu-color-danger-shade-4: #f8c3c9;--pu-color-danger-shade-3: #fad2d7;--pu-color-danger-shade-2: #fce1e4;--pu-color-danger-shade-1: #fdf0f2;--pu-color-warning-base: #cd9a0a;--pu-color-warning-hover: #ae8309;--pu-color-warning-shade-9: #d2a422;--pu-color-warning-shade-8: #d7ae3b;--pu-color-warning-shade-7: #dcb853;--pu-color-warning-shade-6: #e1c26c;--pu-color-warning-shade-5: #e6cd85;--pu-color-warning-shade-4: #ebd79d;--pu-color-warning-shade-3: #f0e1b6;--pu-color-warning-shade-2: #f5ebce;--pu-color-warning-shade-1: #faf5e7;--pu-color-info-base: #8e8e91;--pu-color-info-hover: #79797b;--pu-color-info-shade-9: #99999c;--pu-color-info-shade-8: #a5a5a7;--pu-color-info-shade-7: #b0b0b2;--pu-color-info-shade-6: #bbbbbd;--pu-color-info-shade-5: #c7c7c8;--pu-color-info-shade-4: #d2d2d3;--pu-color-info-shade-3: #ddddde;--pu-color-info-shade-2: #e8e8e9;--pu-color-info-shade-1: #f4f4f4}*,*:before,*:after{box-sizing:border-box;font-weight:400;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased}body{margin:0;padding:0;font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Microsoft YaHei,微软雅黑,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}
@@ -0,0 +1 @@
1
+ @charset "UTF-8";.pu-button{display:inline-flex;align-items:center;justify-content:center;text-align:center;cursor:pointer;white-space:nowrap;box-sizing:border-box;transition:all .3s ease;-webkit-user-select:none;user-select:none;outline:none;vertical-align:middle;height:32px;line-height:1;-webkit-appearance:none;appearance:none;position:relative;padding:8px 16px;border-radius:4px;border-width:1px;border-style:solid;background-color:var(--pu-button-bgcolor);color:var(--pu-button-color);border-color:var(--pu-button-border-color)}.pu-button__content{display:inline-flex;align-items:center}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pu-button__loading{animation:rotating 2s linear infinite}.pu-button__loading+*{margin-left:4px}.pu-button__icon{margin-right:4px;width:1em;height:1em}.pu-button.is-link{padding:2px;height:auto;border-color:var(--pu-color-fill-transparent);background-color:var(--pu-color-fill-transparent);text-decoration:underline}.pu-button.is-plain:hover:not(.is-disabled){border-color:var(--pu-color-primary-base);background-color:var(--pu-color-fill-blank)}.pu-button.is-round{border-radius:20px}.pu-button.is-circle{width:32px;border-radius:50%;padding:8px}.pu-button:active:not(.is-disabled){transform:scale(.97);transition:transform 0s ease}.pu-button:focus-visible{outline:none}.pu-button+.pu-button{margin-left:10px}.pu-button{--pu-button-bgcolor: var(--pu-color-fill-blank);--pu-button-color: var(--pu-color-text-secondary);--pu-button-border-color: var(--pu-color-border-base)}.pu-button:hover:not(.is-disabled){--pu-button-bgcolor: var(--pu-color-primary-shade-1);--pu-button-color: var(--pu-color-primary-base);--pu-button-border-color: var(--pu-color-primary-shade-4)}.pu-button.is-disabled{cursor:not-allowed;background-color:var(--pu-color-fill-blank);border-color:var(--pu-color-border-base);color:var(--pu-color-text-disabled)}.pu-button.is-link{--pu-button-color: var(--pu-color-text-secondary)}.pu-button.is-link:hover:not(.is-disabled){--pu-button-color: var(--pu-color-primary-base);--pu-button-bgcolor: transparent;--pu-button-border-color: transparent}.pu-button.is-link.is-disabled{background-color:var(--pu-color-fill-blank);border-color:var(--pu-color-fill-blank);color:var(--pu-color-text-disabled)}.pu-button.is-loading:before{z-index:1;content:"";position:absolute;inset:-1px;pointer-events:none;border-radius:inherit;background-color:#ffffff80}.pu-button--primary{--pu-button-bgcolor: var(--pu-color-primary-base);--pu-button-color: var(--pu-color-text-lightest);--pu-button-border-color: var(--pu-color-primary-base)}.pu-button--primary:hover:not(.is-disabled){--pu-button-bgcolor: var(--pu-color-primary-hover);--pu-button-color: var(--pu-color-text-lightest);--pu-button-border-color: var(--pu-color-primary-hover)}.pu-button--primary.is-disabled{cursor:not-allowed;background-color:var(--pu-color-primary-shade-4);border-color:var(--pu-color-primary-shade-4);color:var(--pu-color-fill-blank)}.pu-button--primary.is-link{--pu-button-color: var(--pu-color-primary-base)}.pu-button--primary.is-link:hover:not(.is-disabled){--pu-button-color: var(--pu-color-primary-hover);--pu-button-bgcolor: transparent;--pu-button-border-color: transparent}.pu-button--primary.is-link.is-disabled{background-color:var(--pu-color-fill-blank);border-color:var(--pu-color-fill-blank);color:var(--pu-color-primary-shade-4)}.pu-button--primary.is-plain{background-color:var(--pu-color-primary-shade-1);color:var(--pu-color-primary-base);border-color:var(--pu-color-primary-shade-6)}.pu-button--primary.is-plain:hover:not(.is-disabled){color:var(--pu-color-fill-blank);background-color:var(--pu-color-primary-base);border-color:var(--pu-color-primary-base)}.pu-button--primary.is-plain.is-disabled{background-color:var(--pu-color-primary-shade-1);color:var(--pu-color-primary-shade-4);border-color:var(--pu-color-primary-shade-4)}.pu-button--primary.is-loading:before{z-index:1;content:"";position:absolute;inset:-1px;pointer-events:none;border-radius:inherit;background-color:#ffffff80}.pu-button--success{--pu-button-bgcolor: var(--pu-color-success-base);--pu-button-color: var(--pu-color-text-lightest);--pu-button-border-color: var(--pu-color-success-base)}.pu-button--success:hover:not(.is-disabled){--pu-button-bgcolor: var(--pu-color-success-hover);--pu-button-color: var(--pu-color-text-lightest);--pu-button-border-color: var(--pu-color-success-hover)}.pu-button--success.is-disabled{cursor:not-allowed;background-color:var(--pu-color-success-shade-4);border-color:var(--pu-color-success-shade-4);color:var(--pu-color-fill-blank)}.pu-button--success.is-link{--pu-button-color: var(--pu-color-success-base)}.pu-button--success.is-link:hover:not(.is-disabled){--pu-button-color: var(--pu-color-success-hover);--pu-button-bgcolor: transparent;--pu-button-border-color: transparent}.pu-button--success.is-link.is-disabled{background-color:var(--pu-color-fill-blank);border-color:var(--pu-color-fill-blank);color:var(--pu-color-success-shade-4)}.pu-button--success.is-plain{background-color:var(--pu-color-success-shade-1);color:var(--pu-color-success-base);border-color:var(--pu-color-success-shade-6)}.pu-button--success.is-plain:hover:not(.is-disabled){color:var(--pu-color-fill-blank);background-color:var(--pu-color-success-base);border-color:var(--pu-color-success-base)}.pu-button--success.is-plain.is-disabled{background-color:var(--pu-color-success-shade-1);color:var(--pu-color-success-shade-4);border-color:var(--pu-color-success-shade-4)}.pu-button--success.is-loading:before{z-index:1;content:"";position:absolute;inset:-1px;pointer-events:none;border-radius:inherit;background-color:#ffffff80}.pu-button--danger{--pu-button-bgcolor: var(--pu-color-danger-base);--pu-button-color: var(--pu-color-text-lightest);--pu-button-border-color: var(--pu-color-danger-base)}.pu-button--danger:hover:not(.is-disabled){--pu-button-bgcolor: var(--pu-color-danger-hover);--pu-button-color: var(--pu-color-text-lightest);--pu-button-border-color: var(--pu-color-danger-hover)}.pu-button--danger.is-disabled{cursor:not-allowed;background-color:var(--pu-color-danger-shade-4);border-color:var(--pu-color-danger-shade-4);color:var(--pu-color-fill-blank)}.pu-button--danger.is-link{--pu-button-color: var(--pu-color-danger-base)}.pu-button--danger.is-link:hover:not(.is-disabled){--pu-button-color: var(--pu-color-danger-hover);--pu-button-bgcolor: transparent;--pu-button-border-color: transparent}.pu-button--danger.is-link.is-disabled{background-color:var(--pu-color-fill-blank);border-color:var(--pu-color-fill-blank);color:var(--pu-color-danger-shade-4)}.pu-button--danger.is-plain{background-color:var(--pu-color-danger-shade-1);color:var(--pu-color-danger-base);border-color:var(--pu-color-danger-shade-6)}.pu-button--danger.is-plain:hover:not(.is-disabled){color:var(--pu-color-fill-blank);background-color:var(--pu-color-danger-base);border-color:var(--pu-color-danger-base)}.pu-button--danger.is-plain.is-disabled{background-color:var(--pu-color-danger-shade-1);color:var(--pu-color-danger-shade-4);border-color:var(--pu-color-danger-shade-4)}.pu-button--danger.is-loading:before{z-index:1;content:"";position:absolute;inset:-1px;pointer-events:none;border-radius:inherit;background-color:#ffffff80}.pu-button--warning{--pu-button-bgcolor: var(--pu-color-warning-base);--pu-button-color: var(--pu-color-text-lightest);--pu-button-border-color: var(--pu-color-warning-base)}.pu-button--warning:hover:not(.is-disabled){--pu-button-bgcolor: var(--pu-color-warning-hover);--pu-button-color: var(--pu-color-text-lightest);--pu-button-border-color: var(--pu-color-warning-hover)}.pu-button--warning.is-disabled{cursor:not-allowed;background-color:var(--pu-color-warning-shade-4);border-color:var(--pu-color-warning-shade-4);color:var(--pu-color-fill-blank)}.pu-button--warning.is-link{--pu-button-color: var(--pu-color-warning-base)}.pu-button--warning.is-link:hover:not(.is-disabled){--pu-button-color: var(--pu-color-warning-hover);--pu-button-bgcolor: transparent;--pu-button-border-color: transparent}.pu-button--warning.is-link.is-disabled{background-color:var(--pu-color-fill-blank);border-color:var(--pu-color-fill-blank);color:var(--pu-color-warning-shade-4)}.pu-button--warning.is-plain{background-color:var(--pu-color-warning-shade-1);color:var(--pu-color-warning-base);border-color:var(--pu-color-warning-shade-6)}.pu-button--warning.is-plain:hover:not(.is-disabled){color:var(--pu-color-fill-blank);background-color:var(--pu-color-warning-base);border-color:var(--pu-color-warning-base)}.pu-button--warning.is-plain.is-disabled{background-color:var(--pu-color-warning-shade-1);color:var(--pu-color-warning-shade-4);border-color:var(--pu-color-warning-shade-4)}.pu-button--warning.is-loading:before{z-index:1;content:"";position:absolute;inset:-1px;pointer-events:none;border-radius:inherit;background-color:#ffffff80}.pu-button--info{--pu-button-bgcolor: var(--pu-color-info-base);--pu-button-color: var(--pu-color-text-lightest);--pu-button-border-color: var(--pu-color-info-base)}.pu-button--info:hover:not(.is-disabled){--pu-button-bgcolor: var(--pu-color-info-hover);--pu-button-color: var(--pu-color-text-lightest);--pu-button-border-color: var(--pu-color-info-hover)}.pu-button--info.is-disabled{cursor:not-allowed;background-color:var(--pu-color-info-shade-4);border-color:var(--pu-color-info-shade-4);color:var(--pu-color-fill-blank)}.pu-button--info.is-link{--pu-button-color: var(--pu-color-info-base)}.pu-button--info.is-link:hover:not(.is-disabled){--pu-button-color: var(--pu-color-info-hover);--pu-button-bgcolor: transparent;--pu-button-border-color: transparent}.pu-button--info.is-link.is-disabled{background-color:var(--pu-color-fill-blank);border-color:var(--pu-color-fill-blank);color:var(--pu-color-info-shade-4)}.pu-button--info.is-plain{background-color:var(--pu-color-info-shade-1);color:var(--pu-color-info-base);border-color:var(--pu-color-info-shade-6)}.pu-button--info.is-plain:hover:not(.is-disabled){color:var(--pu-color-fill-blank);background-color:var(--pu-color-info-base);border-color:var(--pu-color-info-base)}.pu-button--info.is-plain.is-disabled{background-color:var(--pu-color-info-shade-1);color:var(--pu-color-info-shade-4);border-color:var(--pu-color-info-shade-4)}.pu-button--info.is-loading:before{z-index:1;content:"";position:absolute;inset:-1px;pointer-events:none;border-radius:inherit;background-color:#ffffff80}.pu-button--large{padding:12px 20px}.pu-button--{padding:8px 16px}.pu-button--small{padding:6px 12px}.pu-button--mini{padding:4px 8px}
@@ -0,0 +1,2 @@
1
+ export * from './vue';
2
+ export * from './util';
@@ -0,0 +1,143 @@
1
+ /**
2
+ * 将对象转换为 FormData 对象
3
+ * @param { Object } params 要转换的对象
4
+ * @returns 转换后的 FormData 对象
5
+ */
6
+ export declare function paramsToFormData(params: Record<string, any>): FormData;
7
+ /**
8
+ * 设置URLSearchParams对象并返回新的URL字符串
9
+ * @param { string } urlString - URL字符串
10
+ * @param { Object } params - 要设置的参数对象
11
+ * @returns { string }设置参数后的新的URL字符串
12
+ */
13
+ export declare function setURLSearchParams(urlString: string, params: Record<string, any>): string;
14
+ /**
15
+ * 合并URL字符串
16
+ * @param { string[] } ...urls 可变参数: URL字符串参数
17
+ * @returns { string } 合并后的URL字符串
18
+ */
19
+ export declare function joinURLs(...urls: string[]): string;
20
+ /**
21
+ * 深度拷贝
22
+ * @param arr
23
+ * @returns
24
+ */
25
+ export declare function deepClone(arr: any[]): any[] | null;
26
+ /**
27
+ * 自动将文件大小转换成合适的带单位大小
28
+ * @param byte {number} - 文件大小(B)
29
+ * @returns
30
+ */
31
+ export declare function autoCalcFileSize(byte: number): string;
32
+ /**
33
+ * 根据编码读取txt文件
34
+ * @param file {File} - 文件对象
35
+ * @param encode {string} - 编码格式
36
+ * @returns
37
+ */
38
+ export declare function readTxtFile(file: File, encode: string): Promise<string>;
39
+ /**
40
+ * 用不同编码读取txt文件
41
+ * @param file {File} - 文件对象
42
+ * @param encodes {string[]} - 编码格式数组
43
+ * @returns
44
+ */
45
+ export declare function readTxtByEncodes(file: File, encodes?: string[]): Promise<string>;
46
+ /**
47
+ * 将以逗号或者换行符分隔的字符串转为只用逗号分隔的字符串――去除空格和重复逗号
48
+ * @param str {string} - 以逗号或者换行符分隔的字符串
49
+ */
50
+ export declare function lineBreakToComma(str: string): string;
51
+ /**
52
+ * 单例模式函数
53
+ * @param {Function} fn - 要执行的函数 / class类
54
+ */
55
+ export declare function singleton(fn: (...args: unknown[]) => unknown): unknown;
56
+ /**
57
+ * 函数重载
58
+ * @example
59
+ * const overload = createOverload()
60
+ * overload.add('string', (arg: string) => { console.log('string', arg) })
61
+ * overload.add('number','string', (arg1: number, arg2: string) => { console.log('number,string', arg1, arg2) })
62
+ * @returns {Function} 重载函数
63
+ */
64
+ export declare function createOverload(): {
65
+ (...args: any[]): any;
66
+ add(...args: any[]): void;
67
+ };
68
+ /**
69
+ * 平铺数据构建树结构
70
+ * @param data {Array} - 数据源
71
+ * @param props {Object} - 属性映射
72
+ * @returns {Array} - 树结构
73
+ */
74
+ export declare function buildTree(data: any[], props?: {
75
+ label: string;
76
+ value: string;
77
+ children: string;
78
+ parentId: string;
79
+ }): any[];
80
+ /**
81
+ * 计算半透明颜色与白色背景混合后的等效不透明颜色值
82
+ * @param hexColor 原始十六进制颜色值 (例如 '#7e69dc')
83
+ * @param opacity 透明度值 (0-1之间,默认为0.9)
84
+ * @returns 等效的不透明颜色值 (十六进制格式)
85
+ */
86
+ export declare function getEqualOpacityColor(hexColor: string, opacity?: number): string;
87
+ /**
88
+ * 将颜色向黑色靠近(变暗)
89
+ * @param hexColor 原始十六进制颜色值 (例如 '#7e69dc')
90
+ * @param factor 混合因子 (0-1, 0表示完全不改变,1表示完全变为黑色)
91
+ * @returns 调整后的颜色值
92
+ */
93
+ export declare function darkenColor(hexColor: string, factor?: number): string;
94
+ /**
95
+ * @description 创建层次颜色数组,包含一个变暗的颜色和多个不同透明度的颜色
96
+ * @param baseColor - 基础颜色的十六进制字符串 (例如 '#7e69dc')
97
+ * @param darkeness - 变暗程度,默认为0.15,取值范围为0-1,0表示不变,1表示完全变为黑色
98
+ * @param opacitySteps - 透明度数组,默认为 [0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1]
99
+ * @returns 层次颜色数组
100
+ */
101
+ export declare function createColors(baseColor: string, darkeness?: number, opacitySteps?: number[]): string[];
102
+ /**
103
+ * @description 判断对象是否具有指定的键.
104
+ *
105
+ * @param { Record<string, unknown> } obj - 待判断的对象.
106
+ * @param { string } key - 待判断的键.
107
+ * @returns { boolean } - 是否具有指定的键
108
+ */
109
+ export declare function hasOwnProperty(obj: Record<string, unknown>, key: string): boolean;
110
+ /**
111
+ * @description 判断对象是否为普通对象.
112
+ *
113
+ * @param { unknown } obj - 待判断的对象.
114
+ * @returns { boolean } - 是否为普通对象
115
+ */
116
+ export declare function isPlainObject(obj: unknown): boolean;
117
+ /**
118
+ * @description 删除对象中的指定键.
119
+ *
120
+ * @param { Record<string, unknown> } obj - 目标对象.
121
+ * @param { string[] } keys - 要删除的键/键数组.
122
+ * @returns { Record<string, unknown> } - 删除键后的新对象
123
+ */
124
+ export declare function deleteKeys<T extends Record<string, unknown>, K extends keyof T>(obj: T, keys: K[] | K): Omit<T, K>;
125
+ /**
126
+ * @description 数组深度扁平化,支持数组子元素为基本类型、对象、数组.
127
+ *
128
+ * @param { Record<string, unknown>[] } arr - 目标数组.
129
+ * @param { string } key - 拍平的键.
130
+ * @returns { Record<string, unknown>[] } - 拍平后的数组
131
+ */
132
+ export declare function flatArr<T extends Record<string, unknown>, K extends keyof T>(arr: T[], key?: K): T[];
133
+ /**
134
+ * @description 删除对象中的空值.
135
+ *
136
+ * @param { Record<string, unknown> } obj - 目标对象.
137
+ * @param { unknown[] } emptyValues - 空值数组 (默认为 ['', undefined, null],支持数组和对象的空值判断['', undefined,
138
+ * null, {}, [], false, 0])
139
+ * @returns { Partial<T> | T } - 删除空值后的新对象
140
+ */
141
+ export declare function omitEmptyKeys<T extends Record<string, unknown> & {
142
+ length?: never;
143
+ }>(obj: T, emptyValues?: unknown[]): Partial<T> | T;