color-star-custom-components 0.0.3

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.
@@ -0,0 +1,168 @@
1
+ import { w as J } from "./chunks/index.bCzIhWFw.js";
2
+ import { ref as x, computed as y, onMounted as K, nextTick as L, onUnmounted as X, watch as Y, createElementBlock as R, openBlock as S, normalizeStyle as h, normalizeClass as ee, createCommentVNode as te, createElementVNode as c, renderSlot as ae } from "vue";
3
+ import { _ as ne } from "./chunks/_plugin-vue_export-helper.CHgC5LLL.js";
4
+ import './assets/GlassProxy.css';const oe = ["width", "height"], se = ["width", "height"], ie = ["width", "height"], le = ["scale"], re = ["stdDeviation"], ce = /* @__PURE__ */ Object.assign({
5
+ name: "GlassProxy"
6
+ }, {
7
+ __name: "layout",
8
+ props: {
9
+ cornerRadius: { type: Number, default: 16 },
10
+ saturation: { type: Number, default: 100 },
11
+ blurAmount: { type: Number, default: 0 },
12
+ displacementScale: { type: Number, default: 20 },
13
+ padding: { type: String, default: "0" },
14
+ customClass: { type: String, default: "" },
15
+ background: { type: String, default: "transparent" },
16
+ enableLiquidEffect: { type: Boolean, default: !0 }
17
+ },
18
+ setup(r) {
19
+ const t = r, C = `liquid-filter-${Math.random().toString(36).substr(2, 9)}`, u = x(null), M = x(null), p = x(100), g = x(100);
20
+ let m = null;
21
+ function D(e, n, o) {
22
+ return o = Math.max(0, Math.min(1, (o - e) / (n - e))), o * o * (3 - 2 * o);
23
+ }
24
+ function z(e, n) {
25
+ return Math.sqrt(e * e + n * n);
26
+ }
27
+ function A(e, n, o, d, a) {
28
+ const s = Math.abs(e) - o + a, i = Math.abs(n) - d + a;
29
+ return Math.min(Math.max(s, i), 0) + z(Math.max(s, 0), Math.max(i, 0)) - a;
30
+ }
31
+ const w = () => {
32
+ if (!u.value || !M.value || !t.enableLiquidEffect) return;
33
+ const e = u.value.getBoundingClientRect(), n = Math.floor(e.width), o = Math.floor(e.height);
34
+ if (n === 0 || o === 0) return;
35
+ p.value = n, g.value = o;
36
+ const d = window.devicePixelRatio || 1, a = Math.floor(n * d), s = Math.floor(o * d), i = document.createElement("canvas");
37
+ i.width = a, i.height = s;
38
+ const k = i.getContext("2d");
39
+ if (!k) return;
40
+ const I = k.createImageData(a, s), b = I.data, l = a / s, G = (l > 1 ? 0.5 * l : 0.5) - 0.02, F = (l > 1 ? 0.5 : 0.5 / l) - 0.02, O = Math.min(a, s), U = t.cornerRadius * d / O;
41
+ for (let f = 0; f < a * s; f++) {
42
+ const H = f % a, T = Math.floor(f / a), W = H / a, V = T / s;
43
+ let q = W - 0.5, E = V - 0.5;
44
+ l > 1 ? q *= l : E /= l;
45
+ const j = A(q, E, G, F, U), _ = D(0.2, 0, j), Q = 127.5 + q * _ * 255, Z = 127.5 + E * _ * 255, v = f * 4;
46
+ b[v] = Q, b[v + 1] = Z, b[v + 2] = 0, b[v + 3] = 255;
47
+ }
48
+ k.putImageData(I, 0, 0), M.value.setAttribute("href", i.toDataURL("image/png", 1));
49
+ }, $ = y(() => ({
50
+ padding: t.padding,
51
+ borderRadius: `${t.cornerRadius}px`,
52
+ position: "relative",
53
+ display: "block",
54
+ boxSizing: "border-box"
55
+ })), B = y(() => ({
56
+ position: "absolute",
57
+ top: 0,
58
+ left: 0,
59
+ width: "100%",
60
+ height: "100%",
61
+ // 背景层圆角
62
+ borderRadius: `${t.cornerRadius}px`,
63
+ background: t.background,
64
+ backdropFilter: `blur(10px) saturate(${t.saturation / 100})`,
65
+ boxShadow: "0 8px 32px 0 rgba(31, 38, 135, 0.07)",
66
+ zIndex: 0,
67
+ transform: "translateZ(0)"
68
+ })), N = y(() => ({
69
+ position: "absolute",
70
+ top: 0,
71
+ left: 0,
72
+ width: "100%",
73
+ height: "100%",
74
+ // 降级层圆角
75
+ borderRadius: `${t.cornerRadius}px`,
76
+ background: "transparent",
77
+ backdropFilter: "blur(12px)",
78
+ boxShadow: "0 4px 12px rgba(0,0,0,0.05)",
79
+ zIndex: 0
80
+ })), P = y(() => ({
81
+ borderRadius: `${t.cornerRadius}px`,
82
+ "--corner-radius": `${t.cornerRadius}px`
83
+ }));
84
+ return K(() => {
85
+ t.enableLiquidEffect && L(() => {
86
+ w(), u.value && (m = new ResizeObserver(() => {
87
+ requestAnimationFrame(w);
88
+ }), m.observe(u.value));
89
+ });
90
+ }), X(() => {
91
+ m && m.disconnect();
92
+ }), Y(
93
+ () => t.enableLiquidEffect,
94
+ (e) => {
95
+ e && L(w);
96
+ }
97
+ ), (e, n) => (S(), R("div", {
98
+ ref_key: "containerRef",
99
+ ref: u,
100
+ class: ee(["aibox-glass-proxy", r.customClass]),
101
+ style: h($.value)
102
+ }, [
103
+ r.enableLiquidEffect ? (S(), R("svg", {
104
+ key: 0,
105
+ class: "glass-svg-defs",
106
+ width: p.value,
107
+ height: g.value,
108
+ style: h({
109
+ position: "absolute",
110
+ pointerEvents: "none",
111
+ zIndex: -1,
112
+ top: 0,
113
+ left: 0,
114
+ clipPath: `inset(0 round ${t.cornerRadius}px)`
115
+ })
116
+ }, [
117
+ c("defs", null, [
118
+ c("filter", {
119
+ id: C,
120
+ filterUnits: "userSpaceOnUse",
121
+ x: "0",
122
+ y: "0",
123
+ width: p.value,
124
+ height: g.value,
125
+ "color-interpolation-filters": "sRGB"
126
+ }, [
127
+ c("feImage", {
128
+ ref_key: "feImageRef",
129
+ ref: M,
130
+ result: "DISPLACEMENT_MAP",
131
+ width: p.value,
132
+ height: g.value,
133
+ preserveAspectRatio: "none",
134
+ "image-rendering": "optimizeQuality"
135
+ }, null, 8, ie),
136
+ c("feDisplacementMap", {
137
+ in: "SourceGraphic",
138
+ in2: "DISPLACEMENT_MAP",
139
+ scale: r.displacementScale,
140
+ xChannelSelector: "R",
141
+ yChannelSelector: "G"
142
+ }, null, 8, le),
143
+ c("feGaussianBlur", { stdDeviation: r.blurAmount }, null, 8, re)
144
+ ], 8, se)
145
+ ])
146
+ ], 12, oe)) : te("", !0),
147
+ r.enableLiquidEffect ? (S(), R("div", {
148
+ key: 1,
149
+ class: "glass-liquid-bg",
150
+ style: h(B.value)
151
+ }, null, 4)) : (S(), R("div", {
152
+ key: 2,
153
+ class: "glass-fallback-bg",
154
+ style: h(N.value)
155
+ }, null, 4)),
156
+ c("div", {
157
+ class: "glass-content-layer",
158
+ style: h(P.value)
159
+ }, [
160
+ ae(e.$slots, "default", {}, void 0, !0)
161
+ ], 4)
162
+ ], 6));
163
+ }
164
+ }), ue = /* @__PURE__ */ ne(ce, [["__scopeId", "data-v-f301f72e"]]), ge = J(ue);
165
+ export {
166
+ ge as GlassProxy,
167
+ ge as default
168
+ };
@@ -0,0 +1,7 @@
1
+ import { w as t } from "./chunks/index.bCzIhWFw.js";
2
+ import { I as o } from "./chunks/layout.DBgjqaxe.js";
3
+ const p = t(o);
4
+ export {
5
+ p as IconEmpty,
6
+ p as default
7
+ };
@@ -0,0 +1,75 @@
1
+ import { w as s } from "./chunks/index.bCzIhWFw.js";
2
+ import { shallowRef as u, ref as m, watch as f, onMounted as d, createBlock as l, createCommentVNode as p, openBlock as c, unref as y, mergeProps as v, withCtx as g, resolveDynamicComponent as b } from "vue";
3
+ import { ElIcon as N } from "element-plus";
4
+ import { i, g as h } from "./chunks/config.BOO9PtC2.js";
5
+ const w = /* @__PURE__ */ Object.assign({
6
+ name: "IconRenderer"
7
+ }, {
8
+ __name: "layout",
9
+ props: {
10
+ // 图标名称
11
+ iconName: {
12
+ type: String,
13
+ default: ""
14
+ },
15
+ // 图标库类型: 'lingyun'(默认), 'aibox'
16
+ iconLibrary: {
17
+ type: String,
18
+ default: i.lingyun,
19
+ validator: (e) => Object.values(i).includes(e)
20
+ },
21
+ // 图标大小
22
+ size: {
23
+ type: Number,
24
+ default: 16
25
+ },
26
+ // 图标颜色
27
+ color: {
28
+ type: String,
29
+ default: ""
30
+ }
31
+ },
32
+ setup(e) {
33
+ const o = e, n = u(null), a = m(!1), r = async () => {
34
+ if (!o.iconName) {
35
+ n.value = null;
36
+ return;
37
+ }
38
+ if (!a.value) {
39
+ a.value = !0;
40
+ try {
41
+ const t = await h(o.iconLibrary, o.iconName);
42
+ n.value = t;
43
+ } catch (t) {
44
+ console.error("Failed to load icon component:", t), n.value = null;
45
+ } finally {
46
+ a.value = !1;
47
+ }
48
+ }
49
+ };
50
+ return f(
51
+ () => [o.iconLibrary, o.iconName],
52
+ () => {
53
+ r();
54
+ },
55
+ { immediate: !1 }
56
+ // 初始加载在 onMounted 中处理
57
+ ), d(() => {
58
+ r();
59
+ }), (t, C) => e.iconName && n.value ? (c(), l(y(N), v({
60
+ key: 0,
61
+ size: e.size,
62
+ color: e.color
63
+ }, t.$attrs), {
64
+ default: g(() => [
65
+ (c(), l(b(n.value)))
66
+ ]),
67
+ _: 1
68
+ }, 16, ["size", "color"])) : p("", !0);
69
+ }
70
+ }), R = s(w);
71
+ export {
72
+ R as IconRenderer,
73
+ R as default,
74
+ i as iconLibraryMap
75
+ };
@@ -0,0 +1,158 @@
1
+ import { w as M } from "./chunks/index.bCzIhWFw.js";
2
+ import { ref as i, computed as B, watch as x, onMounted as O, createBlock as y, openBlock as o, unref as n, withCtx as u, createElementVNode as I, createVNode as d, createElementBlock as m, Fragment as k, renderList as F, normalizeClass as V, resolveDynamicComponent as C, createTextVNode as T, markRaw as S } from "vue";
3
+ import { ElPopover as U, ElInput as A, ElIcon as g } from "element-plus";
4
+ import { IconSearch as D, IconAdd as P } from "color-message-lingyun-vue";
5
+ import { I as R } from "./chunks/layout.DBgjqaxe.js";
6
+ import { emitsMap as z } from "ling-yun-methods";
7
+ import { i as j, g as $, a as q } from "./chunks/config.BOO9PtC2.js";
8
+ import { _ as G } from "./chunks/_plugin-vue_export-helper.CHgC5LLL.js";
9
+ import './assets/IconSelect.css';const H = { class: "icon-select-content flex flex-col overflow-hidden" }, J = { class: "icon-select-grid overflow-y-auto display-grid" }, K = {
10
+ key: 0,
11
+ class: "loading-text flex items-center justify-center w-full"
12
+ }, Q = {
13
+ key: 1,
14
+ class: "no-data flex items-center justify-center w-full"
15
+ }, W = ["title", "onClick"], X = /* @__PURE__ */ Object.assign({
16
+ name: "IconSelect"
17
+ }, {
18
+ __name: "layout",
19
+ props: {
20
+ modelValue: {
21
+ type: String,
22
+ default: ""
23
+ },
24
+ placeholder: {
25
+ type: String,
26
+ default: "请选择图标"
27
+ },
28
+ // 宽度
29
+ width: {
30
+ type: Number,
31
+ default: 520
32
+ },
33
+ // 图标大小
34
+ iconSize: {
35
+ type: Number,
36
+ default: 62
37
+ },
38
+ // 图标库类型
39
+ library: {
40
+ type: String,
41
+ default: j.lingyun,
42
+ validator: (s) => Object.values(j).includes(s)
43
+ }
44
+ },
45
+ emits: [z.updateModelValue],
46
+ setup(s, { emit: L }) {
47
+ const c = s, E = L, b = i(!1), f = i(""), a = i(c.modelValue), r = i(null), v = i([]), w = i(!1), _ = async () => {
48
+ w.value = !0;
49
+ try {
50
+ const e = await q(c.library);
51
+ v.value = Object.entries(e).filter(([l]) => l.toLowerCase().includes("menu")).map(([l, t]) => ({
52
+ name: l,
53
+ component: S(t)
54
+ }));
55
+ } catch (e) {
56
+ console.error("Failed to load icons:", e), v.value = [];
57
+ } finally {
58
+ w.value = !1;
59
+ }
60
+ }, h = B(() => f.value ? v.value.filter(
61
+ (e) => e.name.toLowerCase().includes(f.value.toLowerCase())
62
+ ) : v.value), p = async () => {
63
+ if (!a.value) {
64
+ r.value = null;
65
+ return;
66
+ }
67
+ const e = await $(c.library, a.value);
68
+ r.value = e ? S(e) : null;
69
+ }, N = (e) => {
70
+ a.value = e.name, E(z.updateModelValue, e.name), b.value = !1;
71
+ };
72
+ return x(
73
+ () => c.modelValue,
74
+ (e) => {
75
+ a.value = e, p();
76
+ }
77
+ ), x(
78
+ () => c.library,
79
+ () => {
80
+ _(), p();
81
+ }
82
+ ), x(
83
+ () => a.value,
84
+ () => {
85
+ p();
86
+ }
87
+ ), O(() => {
88
+ _(), p();
89
+ }), (e, l) => (o(), y(n(U), {
90
+ visible: b.value,
91
+ "onUpdate:visible": l[1] || (l[1] = (t) => b.value = t),
92
+ placement: "bottom-start",
93
+ width: s.width,
94
+ trigger: "click"
95
+ }, {
96
+ reference: u(() => [
97
+ I("div", {
98
+ class: V(["flex items-center pointer radius-16 justify-center w-icon-item", {
99
+ "select-icon-box bg-fcfdff text-202434 fz-14 flex-col": !r.value,
100
+ "icon-item": a.value
101
+ }])
102
+ }, [
103
+ r.value ? (o(), y(n(g), {
104
+ key: 0,
105
+ size: s.iconSize
106
+ }, {
107
+ default: u(() => [
108
+ (o(), y(C(r.value)))
109
+ ]),
110
+ _: 1
111
+ }, 8, ["size"])) : (o(), m(k, { key: 1 }, [
112
+ d(n(g), { size: 16 }, {
113
+ default: u(() => [
114
+ d(n(P))
115
+ ]),
116
+ _: 1
117
+ }),
118
+ l[2] || (l[2] = T(" 上传 ", -1))
119
+ ], 64))
120
+ ], 2)
121
+ ]),
122
+ default: u(() => [
123
+ I("div", H, [
124
+ d(n(A), {
125
+ class: "mg-b-12",
126
+ modelValue: f.value,
127
+ "onUpdate:modelValue": l[0] || (l[0] = (t) => f.value = t),
128
+ placeholder: "搜索图标",
129
+ "prefix-icon": n(D),
130
+ clearable: ""
131
+ }, null, 8, ["modelValue", "prefix-icon"]),
132
+ I("div", J, [
133
+ w.value ? (o(), m("div", K, " 加载中... ")) : h.value.length === 0 ? (o(), m("div", Q, [
134
+ d(R, { text: "未找到相关图标" })
135
+ ])) : (o(!0), m(k, { key: 2 }, F(h.value, (t) => (o(), m("div", {
136
+ key: t.name,
137
+ class: V(["icon-item radius-8 justify-center items-center pointer flex w-icon-item", { active: a.value === t.name }]),
138
+ title: t.name,
139
+ onClick: (Z) => N(t)
140
+ }, [
141
+ d(n(g), { size: 50 }, {
142
+ default: u(() => [
143
+ (o(), y(C(t.component)))
144
+ ]),
145
+ _: 2
146
+ }, 1024)
147
+ ], 10, W))), 128))
148
+ ])
149
+ ])
150
+ ]),
151
+ _: 1
152
+ }, 8, ["visible", "width"]));
153
+ }
154
+ }), Y = /* @__PURE__ */ G(X, [["__scopeId", "data-v-5eacfea2"]]), ce = M(Y);
155
+ export {
156
+ ce as IconSelect,
157
+ ce as default
158
+ };
@@ -0,0 +1 @@
1
+ .aibox-glass-proxy[data-v-f301f72e]{isolation:isolate}.glass-content-layer[data-v-f301f72e]{position:relative;z-index:2;width:calc(100% - 1px);height:calc(100% - 1px);box-sizing:border-box;color:var(--color-text-base, #303133);text-shadow:none!important;box-shadow:inset 0 4px 20px #29314f0f,0 4px 10px #29314f14;border-width:.8px;border-style:solid;border-color:transparent;border-image:none}
@@ -0,0 +1 @@
1
+ .icon-select-content[data-v-5eacfea2]{max-height:290px}.icon-select-grid[data-v-5eacfea2]{grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:12px}.w-icon-item[data-v-5eacfea2]{width:70px;height:70px}.icon-item[data-v-5eacfea2]{background:#e6e9f2}.icon-item.active[data-v-5eacfea2]{background:#dbdee9}.select-icon-box[data-v-5eacfea2]{border:1px dashed var(--border-color)}.bg-fcfdff[data-v-5eacfea2]{background:#fcfdff}
File without changes
@@ -0,0 +1,9 @@
1
+ const s = (t, r) => {
2
+ const o = t.__vccOpts || t;
3
+ for (const [c, e] of r)
4
+ o[c] = e;
5
+ return o;
6
+ };
7
+ export {
8
+ s as _
9
+ };
@@ -0,0 +1,24 @@
1
+ const a = {
2
+ lingyun: "lingyun",
3
+ aibox: "aibox"
4
+ }, o = async (n) => {
5
+ switch (n) {
6
+ case a.lingyun:
7
+ return await import("./global.CCbNdFdD.js");
8
+ case a.aibox:
9
+ return await import("./global.DUSYZ3SI.js");
10
+ }
11
+ return null;
12
+ }, i = async (n, r) => {
13
+ if (!r) return null;
14
+ try {
15
+ return (await o(n))[r] || null;
16
+ } catch (t) {
17
+ return console.warn(`Failed to load icon ${r} from ${n} library:`, t), null;
18
+ }
19
+ };
20
+ export {
21
+ o as a,
22
+ i as g,
23
+ a as i
24
+ };