geekin-devtoys 0.3.2 → 0.3.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.
@@ -1 +1 @@
1
- @charset "UTF-8";.g-input-tree-tag[data-v-1fe6c294]{width:100%}.g-input-tree-tag__wrap[data-v-1fe6c294]{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:100%}.g-input-tree-tag__tags[data-v-1fe6c294]{display:flex;flex-wrap:wrap;gap:8px;width:100%}.g-input-tree-tag__tag[data-v-1fe6c294]{margin:0}.g-input-tree-tag.is-disabled[data-v-1fe6c294]{cursor:not-allowed}.g-input-tree-tag__popover{box-sizing:border-box;background:var(--el-bg-color-overlay, #fff);border:1px solid var(--el-border-color-light);border-radius:4px;box-shadow:var(--el-box-shadow-light);padding:8px 0}.g-input-tree-tag__popover .g-input-tree-tag__tree-wrap{overflow:auto}.g-input-tree-tag__popover .g-input-tree-tag__node{display:inline-flex;align-items:center;gap:4px;font-size:13px}.g-input-tree-tag__popover .g-input-tree-tag__node.is-selectable{cursor:pointer;color:var(--el-text-color-primary)}.g-input-tree-tag__popover .g-input-tree-tag__node.is-selected{color:var(--el-color-primary)}
1
+ @charset "UTF-8";.g-input-tree-tag[data-v-b74dd5d2]{width:100%}.g-input-tree-tag__wrap[data-v-b74dd5d2]{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:100%}.g-input-tree-tag__tags[data-v-b74dd5d2]{display:flex;flex-wrap:wrap;gap:8px;width:100%}.g-input-tree-tag__tag-motion[data-v-b74dd5d2]{display:inline-flex}.g-input-tree-tag__tag[data-v-b74dd5d2]{margin:0}.g-input-tree-tag.is-disabled[data-v-b74dd5d2]{cursor:not-allowed}.g-input-tree-tag__popover{box-sizing:border-box;background:var(--el-bg-color-overlay, #fff);border:1px solid var(--el-border-color-light);border-radius:4px;box-shadow:var(--el-box-shadow-light);padding:8px 0}.g-input-tree-tag__popover .g-input-tree-tag__tree-wrap{overflow:auto}.g-input-tree-tag__popover .g-input-tree-tag__node{display:inline-flex;align-items:center;gap:4px;font-size:13px}.g-input-tree-tag__popover .g-input-tree-tag__node.is-selectable{cursor:pointer;color:var(--el-text-color-primary)}.g-input-tree-tag__popover .g-input-tree-tag__node.is-selected{color:var(--el-color-primary)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),x=require("@vueuse/core"),Y=require("../index-xqOURU1q.js"),ee=require("../_plugin-vue_export-helper-BHFhmbuH.js");function le(p,M){const f=e.ref(!1);return e.watchEffect(t=>{const h=e.unref(M)||{},{once:S}=h,k=x.unrefElement(p);if(!k||S&&f.value)return;const B=()=>(f.value=!0,S?void 0:()=>{f.value=!1}),d=Y.inView(k,B,{...h,root:e.unref(h.root)});t(()=>{d()})},{flush:"post"}),f}const te=["onMouseenter","onClick"],se={class:"g-scroller__item-text"},ae={class:"g-scroller__item-text"},P=80,ne=10,oe=e.defineComponent({__name:"index",props:{items:{default:()=>[]},showGradients:{type:Boolean,default:!0},className:{default:""},itemClassName:{default:""},displayScrollbar:{type:Boolean,default:!0},initialSelectedIndex:{default:-1},height:{},stagger:{default:.05},loading:{type:Boolean,default:!1},skeletonCount:{default:5},seamless:{type:Boolean,default:!1},seamlessSpeed:{default:40},seamlessDirection:{default:"up"},seamlessPauseOnHover:{type:Boolean,default:!0}},emits:["itemSelected"],setup(p,{emit:M}){const f=e.defineComponent({name:"AnimatedItem",props:{index:{type:Number,required:!0},stagger:{type:Number,default:.05},instant:{type:Boolean,default:!1}},emits:["mouseenter","click"],setup(l,{slots:n,emit:s}){const a=e.ref(null),i=le(a,{amount:.5,once:!1});return()=>e.h(Y.motion.div,{ref:a,"data-index":l.index,style:{marginBottom:"1rem",cursor:"pointer"},initial:{x:-24,opacity:0},animate:i.value?{x:0,opacity:1}:{x:-24,opacity:0},transition:l.instant?{duration:0}:{duration:.3,delay:Math.min(l.index*l.stagger,.3),ease:"easeOut"},onMouseenter:m=>s("mouseenter",m),onClick:m=>s("click",m)},n.default?.())}}),t=p,h=M,S=e.useSlots(),k=e.computed(()=>!!S.default),B=e.ref(null),d=e.ref(t.initialSelectedIndex),O=e.ref(0),$=e.ref(1),F=e.ref(0),_=e.ref(0),E=e.ref(!1);let c=null;const T=e.ref(!1);let z=0,N=0,u=null;const L=e.ref(null),D=e.ref(null),W=e.computed(()=>t.seamless&&t.items.length>0?[...t.items,...t.items]:t.items),o=e.ref(0),C=e.ref(!1),r=e.ref(0),V=e.ref(!1);let v=null,g=0;const U=e.computed(()=>{const l={};return t.height!=null&&t.height!==""&&(l.height=typeof t.height=="number"?`${t.height}px`:String(t.height)),l}),j=e.computed(()=>({transform:`translateY(${o.value}px)`}));function K(l,n,s){return Math.min(Math.max(l,n),s)}const R=l=>{d.value=l},q=(l,n)=>{d.value=n,h("itemSelected",l,n)},X=l=>{const n=l.target,{scrollTop:s,scrollHeight:a,clientHeight:i}=n,m=performance.now();N>0&&Math.abs(s-z)/(m-N)>ne&&(T.value=!0),z=s,N=m,u&&clearTimeout(u),u=setTimeout(()=>{T.value=!1},150),O.value=Math.min(s/50,1);const I=a-(s+i);$.value=a<=i?0:Math.min(I/50,1)};function J(l){const n=B.value;if(!n)return;const{scrollTop:s,scrollHeight:a,clientHeight:i}=n;if(a<=i)return;const m=s<=0,I=s+i>=a-1;if(m&&l.deltaY<0||I&&l.deltaY>0){const G=K(_.value-l.deltaY*.3,-P,P);_.value=G,E.value=!0,c&&clearTimeout(c),c=setTimeout(()=>{_.value=0,E.value=!1},150)}}function w(){const l=D.value;if(!l||t.items.length===0){r.value=0,V.value=!1;return}const n=t.items.length,s=l.children[n];r.value=s?s.offsetTop:l.scrollHeight/2;const a=L.value;V.value=a?r.value>a.clientHeight:!0}function A(l){g===0&&(g=l);const n=l-g;if(g=l,!C.value&&r.value>0&&t.items.length>0){const s=t.seamlessSpeed*n/1e3;t.seamlessDirection==="down"?(o.value+=s,o.value>=0&&(o.value-=r.value)):(o.value-=s,o.value<=-r.value&&(o.value+=r.value))}v=requestAnimationFrame(A)}function b(){v==null&&(g=0,v=requestAnimationFrame(A))}function H(){v!=null&&(cancelAnimationFrame(v),v=null),g=0}function Q(){t.seamlessPauseOnHover&&(C.value=!0)}function Z(){t.seamlessPauseOnHover&&(C.value=!1)}return e.onMounted(()=>{t.seamless&&!t.loading&&(w(),o.value=t.seamlessDirection==="down"?-r.value:0,b())}),e.onUnmounted(()=>{H(),c&&(clearTimeout(c),c=null),u&&(clearTimeout(u),u=null)}),e.watch(()=>t.items,()=>{t.seamless&&e.nextTick(()=>{w(),o.value=t.seamlessDirection==="down"?-r.value:0}),F.value++,d.value=-1}),e.watch(()=>t.seamless,l=>{l&&!t.loading?e.nextTick(()=>{w(),o.value=t.seamlessDirection==="down"?-r.value:0,b()}):(H(),o.value=0,C.value=!1)}),e.watch(()=>t.loading,l=>{l?(_.value=0,E.value=!1,T.value=!1,H(),c&&(clearTimeout(c),c=null),u&&(clearTimeout(u),u=null)):t.seamless&&e.nextTick(()=>{w(),o.value=t.seamlessDirection==="down"?-r.value:0,b()})}),(l,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["g-scroller",l.className]),style:e.normalizeStyle(U.value)},[l.seamless&&!l.loading?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"seamlessWrapRef",ref:L,class:"g-scroller__seamless",onMouseenter:Q,onMouseleave:Z},[e.createElementVNode("div",{ref_key:"seamlessTrackRef",ref:D,class:"g-scroller__seamless-track",style:e.normalizeStyle(j.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(W.value,(s,a)=>(e.openBlock(),e.createElementBlock("div",{key:`seamless-${a}`,class:e.normalizeClass(["g-scroller__item","g-scroller__item--seamless",!k.value&&"g-scroller__item--default",d.value===a%l.items.length&&"g-scroller__item--active",l.itemClassName]),onMouseenter:i=>R(a%l.items.length),onClick:i=>q(s,a%l.items.length)},[e.renderSlot(l.$slots,"default",{item:s,index:a%l.items.length},()=>[e.createElementVNode("p",se,e.toDisplayString(s),1)],!0)],42,te))),128))],4),l.showGradients&&V.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[n[0]||(n[0]=e.createElementVNode("div",{class:"g-scroller__gradient g-scroller__gradient--top"},null,-1)),n[1]||(n[1]=e.createElementVNode("div",{class:"g-scroller__gradient g-scroller__gradient--bottom"},null,-1))],64)):e.createCommentVNode("",!0)],544)):l.loading?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["g-scroller__list",!l.displayScrollbar&&"g-scroller__list--hidden-scrollbar"])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.skeletonCount,s=>(e.openBlock(),e.createElementBlock("div",{key:`skeleton-${s}`,class:"g-scroller__skeleton"},n[2]||(n[2]=[e.createElementVNode("div",{class:"g-scroller__skeleton-line"},null,-1)])))),128))],2)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",{ref_key:"listRef",ref:B,class:e.normalizeClass(["g-scroller__list",!l.displayScrollbar&&"g-scroller__list--hidden-scrollbar"]),onScroll:X,onWheel:J},[e.createElementVNode("div",{class:e.normalizeClass(["g-scroller__content",{"g-scroller__content--pulling":E.value}]),style:e.normalizeStyle({transform:`translateY(${_.value}px)`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.items,(s,a)=>(e.openBlock(),e.createBlock(e.unref(f),{key:`${F.value}-${a}`,index:a,stagger:l.stagger,instant:T.value,onMouseenter:i=>R(a),onClick:i=>q(s,a)},{default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(["g-scroller__item",!k.value&&"g-scroller__item--default",d.value===a&&"g-scroller__item--active",l.itemClassName])},[e.renderSlot(l.$slots,"default",{item:s,index:a},()=>[e.createElementVNode("p",ae,e.toDisplayString(s),1)],!0)],2)]),_:2},1032,["index","stagger","instant","onMouseenter","onClick"]))),128))],6)],34),l.showGradients?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"g-scroller__gradient g-scroller__gradient--top",style:e.normalizeStyle({opacity:O.value})},null,4),e.createElementVNode("div",{class:"g-scroller__gradient g-scroller__gradient--bottom",style:e.normalizeStyle({opacity:$.value})},null,4)],64)):e.createCommentVNode("",!0)],64))],6))}}),y=ee._export_sfc(oe,[["__scopeId","data-v-972060e6"]]);y.install=p=>{p.component(y.name,y)};exports.GScroller=y;exports.default=y;
@@ -0,0 +1,283 @@
1
+ import { ref as n, watchEffect as de, unref as W, defineComponent as ee, h as ve, useSlots as ge, computed as B, onMounted as pe, onUnmounted as he, watch as G, nextTick as P, createElementBlock as c, openBlock as r, normalizeStyle as C, normalizeClass as y, createElementVNode as m, createCommentVNode as le, Fragment as k, renderList as V, renderSlot as te, toDisplayString as se, createBlock as _e, withCtx as ye } from "vue";
2
+ import { unrefElement as ke } from "@vueuse/core";
3
+ import { i as Se, b as Te } from "../index-Bi7JS7ve.mjs";
4
+ import { _ as we } from "../_plugin-vue_export-helper-CHgC5LLL.mjs";
5
+ function Me(S, E) {
6
+ const p = n(!1);
7
+ return de((l) => {
8
+ const T = W(E) || {}, { once: b } = T, w = ke(S);
9
+ if (!w || b && p.value) return;
10
+ const g = Se(w, () => (p.value = !0, b ? void 0 : () => {
11
+ p.value = !1;
12
+ }), {
13
+ ...T,
14
+ root: W(T.root)
15
+ });
16
+ l(() => {
17
+ g();
18
+ });
19
+ }, { flush: "post" }), p;
20
+ }
21
+ const Ce = ["onMouseenter", "onClick"], be = { class: "g-scroller__item-text" }, He = { class: "g-scroller__item-text" }, ae = 80, Ie = 10, $e = /* @__PURE__ */ ee({
22
+ __name: "index",
23
+ props: {
24
+ items: { default: () => [] },
25
+ showGradients: { type: Boolean, default: !0 },
26
+ className: { default: "" },
27
+ itemClassName: { default: "" },
28
+ displayScrollbar: { type: Boolean, default: !0 },
29
+ initialSelectedIndex: { default: -1 },
30
+ height: {},
31
+ stagger: { default: 0.05 },
32
+ loading: { type: Boolean, default: !1 },
33
+ skeletonCount: { default: 5 },
34
+ seamless: { type: Boolean, default: !1 },
35
+ seamlessSpeed: { default: 40 },
36
+ seamlessDirection: { default: "up" },
37
+ seamlessPauseOnHover: { type: Boolean, default: !0 }
38
+ },
39
+ emits: ["itemSelected"],
40
+ setup(S, { emit: E }) {
41
+ const p = ee({
42
+ name: "AnimatedItem",
43
+ props: {
44
+ index: { type: Number, required: !0 },
45
+ stagger: { type: Number, default: 0.05 },
46
+ // 快速滚动时由父级置 true,跳过进场过渡即时显示,避免动效跟不上滚动速度导致空白
47
+ instant: { type: Boolean, default: !1 }
48
+ },
49
+ emits: ["mouseenter", "click"],
50
+ setup(e, { slots: a, emit: t }) {
51
+ const s = n(null), u = Me(s, { amount: 0.5, once: !1 });
52
+ return () => ve(
53
+ Te.div,
54
+ {
55
+ ref: s,
56
+ "data-index": e.index,
57
+ style: { marginBottom: "1rem", cursor: "pointer" },
58
+ initial: { x: -24, opacity: 0 },
59
+ animate: u.value ? { x: 0, opacity: 1 } : { x: -24, opacity: 0 },
60
+ transition: e.instant ? { duration: 0 } : {
61
+ duration: 0.3,
62
+ delay: Math.min(e.index * e.stagger, 0.3),
63
+ ease: "easeOut"
64
+ },
65
+ onMouseenter: (v) => t("mouseenter", v),
66
+ onClick: (v) => t("click", v)
67
+ },
68
+ a.default?.()
69
+ );
70
+ }
71
+ }), l = S, T = E, b = ge(), w = B(() => !!b.default), R = n(null), g = n(l.initialSelectedIndex), q = n(0), z = n(1), U = n(0), M = n(0), H = n(!1);
72
+ let f = null;
73
+ const I = n(!1);
74
+ let K = 0, D = 0, d = null;
75
+ const X = n(null), j = n(null), ne = B(
76
+ () => l.seamless && l.items.length > 0 ? [...l.items, ...l.items] : l.items
77
+ ), o = n(0), $ = n(!1), i = n(0), L = n(!1);
78
+ let h = null, _ = 0;
79
+ const oe = B(() => {
80
+ const e = {};
81
+ return l.height != null && l.height !== "" && (e.height = typeof l.height == "number" ? `${l.height}px` : String(l.height)), e;
82
+ }), re = B(() => ({
83
+ transform: `translateY(${o.value}px)`
84
+ }));
85
+ function ie(e, a, t) {
86
+ return Math.min(Math.max(e, a), t);
87
+ }
88
+ const J = (e) => {
89
+ g.value = e;
90
+ }, Q = (e, a) => {
91
+ g.value = a, T("itemSelected", e, a);
92
+ }, ue = (e) => {
93
+ const a = e.target, { scrollTop: t, scrollHeight: s, clientHeight: u } = a, v = performance.now();
94
+ D > 0 && Math.abs(t - K) / (v - D) > Ie && (I.value = !0), K = t, D = v, d && clearTimeout(d), d = setTimeout(() => {
95
+ I.value = !1;
96
+ }, 150), q.value = Math.min(t / 50, 1);
97
+ const F = s - (t + u);
98
+ z.value = s <= u ? 0 : Math.min(F / 50, 1);
99
+ };
100
+ function ce(e) {
101
+ const a = R.value;
102
+ if (!a) return;
103
+ const { scrollTop: t, scrollHeight: s, clientHeight: u } = a;
104
+ if (s <= u) return;
105
+ const v = t <= 0, F = t + u >= s - 1;
106
+ if (v && e.deltaY < 0 || F && e.deltaY > 0) {
107
+ const x = ie(M.value - e.deltaY * 0.3, -ae, ae);
108
+ M.value = x, H.value = !0, f && clearTimeout(f), f = setTimeout(() => {
109
+ M.value = 0, H.value = !1;
110
+ }, 150);
111
+ }
112
+ }
113
+ function O() {
114
+ const e = j.value;
115
+ if (!e || l.items.length === 0) {
116
+ i.value = 0, L.value = !1;
117
+ return;
118
+ }
119
+ const a = l.items.length, t = e.children[a];
120
+ i.value = t ? t.offsetTop : e.scrollHeight / 2;
121
+ const s = X.value;
122
+ L.value = s ? i.value > s.clientHeight : !0;
123
+ }
124
+ function Z(e) {
125
+ _ === 0 && (_ = e);
126
+ const a = e - _;
127
+ if (_ = e, !$.value && i.value > 0 && l.items.length > 0) {
128
+ const t = l.seamlessSpeed * a / 1e3;
129
+ l.seamlessDirection === "down" ? (o.value += t, o.value >= 0 && (o.value -= i.value)) : (o.value -= t, o.value <= -i.value && (o.value += i.value));
130
+ }
131
+ h = requestAnimationFrame(Z);
132
+ }
133
+ function N() {
134
+ h == null && (_ = 0, h = requestAnimationFrame(Z));
135
+ }
136
+ function A() {
137
+ h != null && (cancelAnimationFrame(h), h = null), _ = 0;
138
+ }
139
+ function me() {
140
+ l.seamlessPauseOnHover && ($.value = !0);
141
+ }
142
+ function fe() {
143
+ l.seamlessPauseOnHover && ($.value = !1);
144
+ }
145
+ return pe(() => {
146
+ l.seamless && !l.loading && (O(), o.value = l.seamlessDirection === "down" ? -i.value : 0, N());
147
+ }), he(() => {
148
+ A(), f && (clearTimeout(f), f = null), d && (clearTimeout(d), d = null);
149
+ }), G(
150
+ () => l.items,
151
+ () => {
152
+ l.seamless && P(() => {
153
+ O(), o.value = l.seamlessDirection === "down" ? -i.value : 0;
154
+ }), U.value++, g.value = -1;
155
+ }
156
+ ), G(
157
+ () => l.seamless,
158
+ (e) => {
159
+ e && !l.loading ? P(() => {
160
+ O(), o.value = l.seamlessDirection === "down" ? -i.value : 0, N();
161
+ }) : (A(), o.value = 0, $.value = !1);
162
+ }
163
+ ), G(
164
+ () => l.loading,
165
+ (e) => {
166
+ e ? (M.value = 0, H.value = !1, I.value = !1, A(), f && (clearTimeout(f), f = null), d && (clearTimeout(d), d = null)) : l.seamless && P(() => {
167
+ O(), o.value = l.seamlessDirection === "down" ? -i.value : 0, N();
168
+ });
169
+ }
170
+ ), (e, a) => (r(), c("div", {
171
+ class: y(["g-scroller", e.className]),
172
+ style: C(oe.value)
173
+ }, [
174
+ e.seamless && !e.loading ? (r(), c("div", {
175
+ key: 0,
176
+ ref_key: "seamlessWrapRef",
177
+ ref: X,
178
+ class: "g-scroller__seamless",
179
+ onMouseenter: me,
180
+ onMouseleave: fe
181
+ }, [
182
+ m("div", {
183
+ ref_key: "seamlessTrackRef",
184
+ ref: j,
185
+ class: "g-scroller__seamless-track",
186
+ style: C(re.value)
187
+ }, [
188
+ (r(!0), c(k, null, V(ne.value, (t, s) => (r(), c("div", {
189
+ key: `seamless-${s}`,
190
+ class: y([
191
+ "g-scroller__item",
192
+ "g-scroller__item--seamless",
193
+ !w.value && "g-scroller__item--default",
194
+ g.value === s % e.items.length && "g-scroller__item--active",
195
+ e.itemClassName
196
+ ]),
197
+ onMouseenter: (u) => J(s % e.items.length),
198
+ onClick: (u) => Q(t, s % e.items.length)
199
+ }, [
200
+ te(e.$slots, "default", {
201
+ item: t,
202
+ index: s % e.items.length
203
+ }, () => [
204
+ m("p", be, se(t), 1)
205
+ ], !0)
206
+ ], 42, Ce))), 128))
207
+ ], 4),
208
+ e.showGradients && L.value ? (r(), c(k, { key: 0 }, [
209
+ a[0] || (a[0] = m("div", { class: "g-scroller__gradient g-scroller__gradient--top" }, null, -1)),
210
+ a[1] || (a[1] = m("div", { class: "g-scroller__gradient g-scroller__gradient--bottom" }, null, -1))
211
+ ], 64)) : le("", !0)
212
+ ], 544)) : e.loading ? (r(), c("div", {
213
+ key: 1,
214
+ class: y(["g-scroller__list", !e.displayScrollbar && "g-scroller__list--hidden-scrollbar"])
215
+ }, [
216
+ (r(!0), c(k, null, V(e.skeletonCount, (t) => (r(), c("div", {
217
+ key: `skeleton-${t}`,
218
+ class: "g-scroller__skeleton"
219
+ }, a[2] || (a[2] = [
220
+ m("div", { class: "g-scroller__skeleton-line" }, null, -1)
221
+ ])))), 128))
222
+ ], 2)) : (r(), c(k, { key: 2 }, [
223
+ m("div", {
224
+ ref_key: "listRef",
225
+ ref: R,
226
+ class: y(["g-scroller__list", !e.displayScrollbar && "g-scroller__list--hidden-scrollbar"]),
227
+ onScroll: ue,
228
+ onWheel: ce
229
+ }, [
230
+ m("div", {
231
+ class: y(["g-scroller__content", { "g-scroller__content--pulling": H.value }]),
232
+ style: C({ transform: `translateY(${M.value}px)` })
233
+ }, [
234
+ (r(!0), c(k, null, V(e.items, (t, s) => (r(), _e(W(p), {
235
+ key: `${U.value}-${s}`,
236
+ index: s,
237
+ stagger: e.stagger,
238
+ instant: I.value,
239
+ onMouseenter: (u) => J(s),
240
+ onClick: (u) => Q(t, s)
241
+ }, {
242
+ default: ye(() => [
243
+ m("div", {
244
+ class: y([
245
+ "g-scroller__item",
246
+ !w.value && "g-scroller__item--default",
247
+ g.value === s && "g-scroller__item--active",
248
+ e.itemClassName
249
+ ])
250
+ }, [
251
+ te(e.$slots, "default", {
252
+ item: t,
253
+ index: s
254
+ }, () => [
255
+ m("p", He, se(t), 1)
256
+ ], !0)
257
+ ], 2)
258
+ ]),
259
+ _: 2
260
+ }, 1032, ["index", "stagger", "instant", "onMouseenter", "onClick"]))), 128))
261
+ ], 6)
262
+ ], 34),
263
+ e.showGradients ? (r(), c(k, { key: 0 }, [
264
+ m("div", {
265
+ class: "g-scroller__gradient g-scroller__gradient--top",
266
+ style: C({ opacity: q.value })
267
+ }, null, 4),
268
+ m("div", {
269
+ class: "g-scroller__gradient g-scroller__gradient--bottom",
270
+ style: C({ opacity: z.value })
271
+ }, null, 4)
272
+ ], 64)) : le("", !0)
273
+ ], 64))
274
+ ], 6));
275
+ }
276
+ }), Y = /* @__PURE__ */ we($e, [["__scopeId", "data-v-972060e6"]]);
277
+ Y.install = (S) => {
278
+ S.component(Y.name, Y);
279
+ };
280
+ export {
281
+ Y as GScroller,
282
+ Y as default
283
+ };
@@ -0,0 +1 @@
1
+ .g-scroller[data-v-972060e6]{position:relative;width:100%;height:100%;--g-scroller-line-height: 1.2em}.g-scroller[data-v-972060e6],.g-scroller[data-v-972060e6] *,.g-scroller[data-v-972060e6] *:before,.g-scroller[data-v-972060e6] *:after{box-sizing:border-box}.g-scroller__list[data-v-972060e6]{height:100%;overflow-y:auto;padding:1rem;scrollbar-width:thin;overscroll-behavior-y:contain}.g-scroller__list[data-v-972060e6]::-webkit-scrollbar{width:8px}.g-scroller__list[data-v-972060e6]::-webkit-scrollbar-track{background:#111}.g-scroller__list[data-v-972060e6]::-webkit-scrollbar-thumb{background:#222;border-radius:4px}.g-scroller__list--hidden-scrollbar[data-v-972060e6]{scrollbar-width:none}.g-scroller__list--hidden-scrollbar[data-v-972060e6]::-webkit-scrollbar{display:none}.g-scroller__content[data-v-972060e6]{transition:transform .45s cubic-bezier(.34,1.56,.64,1)}.g-scroller__content--pulling[data-v-972060e6]{transition:none}.g-scroller__seamless[data-v-972060e6]{position:relative;height:100%;width:100%;overflow:hidden}.g-scroller__seamless-track[data-v-972060e6]{will-change:transform}.g-scroller__item[data-v-972060e6]{border-radius:.5rem}.g-scroller__item--default[data-v-972060e6]{padding:1rem;background:#222;transition:background .2s ease}.g-scroller__item--default.g-scroller__item--active[data-v-972060e6]{background:#2d2d3a}.g-scroller__item--seamless[data-v-972060e6]{margin-bottom:1rem;cursor:pointer}.g-scroller__item-text[data-v-972060e6]{margin:0;color:#fff;line-height:var(--g-scroller-line-height)}.g-scroller__skeleton[data-v-972060e6]{padding:1rem;background:#1a1a22;border-radius:.5rem;margin-bottom:1rem}.g-scroller__skeleton-line[data-v-972060e6]{height:var(--g-scroller-line-height);background:linear-gradient(90deg,#2a2a35 25%,#3a3a48 37%,#2a2a35 63%);background-size:400% 100%;border-radius:6px;animation:g-scroller-shimmer-972060e6 1.4s ease infinite}.g-scroller__gradient[data-v-972060e6]{position:absolute;left:0;right:0;pointer-events:none;transition:opacity .3s ease}.g-scroller__gradient--top[data-v-972060e6]{top:0;height:50px;background:linear-gradient(to bottom,#120f17,transparent)}.g-scroller__gradient--bottom[data-v-972060e6]{bottom:0;height:100px;background:linear-gradient(to top,#120f17,transparent)}@keyframes g-scroller-shimmer-972060e6{0%{background-position:100% 0}to{background-position:0 0}}
@@ -0,0 +1 @@
1
+ export {}
@@ -24,16 +24,15 @@ declare function __VLS_template(): {
24
24
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
25
25
  declare const __VLS_component: import('vue').DefineComponent<BorderGlowProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<BorderGlowProps> & Readonly<{}>, {
26
26
  className: string;
27
+ borderRadius: number;
28
+ fillOpacity: number;
27
29
  edgeSensitivity: number;
28
30
  glowColor: string;
29
- backgroundColor: string;
30
- borderRadius: number;
31
31
  glowRadius: number;
32
32
  glowIntensity: number;
33
33
  coneSpread: number;
34
34
  animated: boolean;
35
35
  colors: string[];
36
- fillOpacity: number;
37
36
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
38
37
  cardRef: HTMLDivElement;
39
38
  }, HTMLDivElement>;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * GCard 预置配色方案
3
+ * 每个方案包含 mesh 渐变色、外发光色与卡片底色,深浅背景均有覆盖
4
+ */
5
+ export interface CardPreset {
6
+ /** 方案名 */
7
+ name: string;
8
+ /** mesh 渐变颜色数组,建议 3 个 */
9
+ colors: string[];
10
+ /** 外发光 HSL 颜色,格式 "h s l"(百分号可省略) */
11
+ glowColor: string;
12
+ /** 卡片底色 */
13
+ backgroundColor: string;
14
+ /** 是否深色背景,用于决定叠加的文字色等 */
15
+ dark: boolean;
16
+ }
17
+ export declare const cardPresets: CardPreset[];
@@ -40,21 +40,21 @@ declare const _default: import('vue').DefineComponent<FuzzyTextProps, {}, {}, {}
40
40
  className: string;
41
41
  color: string;
42
42
  gradient: string[] | null;
43
+ direction: "horizontal" | "vertical" | "both";
44
+ fontFamily: string;
43
45
  fontSize: number | string;
44
46
  fontWeight: string | number;
45
- fontFamily: string;
47
+ letterSpacing: number;
48
+ transitionDuration: number;
46
49
  enableHover: boolean;
47
50
  baseIntensity: number;
48
51
  hoverIntensity: number;
49
52
  fuzzRange: number;
50
53
  fps: number;
51
- direction: "horizontal" | "vertical" | "both";
52
- transitionDuration: number;
53
54
  clickEffect: boolean;
54
55
  glitchMode: boolean;
55
56
  glitchInterval: number;
56
57
  glitchDuration: number;
57
- letterSpacing: number;
58
58
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
59
59
  canvasRef: HTMLCanvasElement;
60
60
  }, HTMLCanvasElement>;
@@ -1,8 +1,7 @@
1
- interface TreeFieldProps {
2
- label?: string;
3
- children?: string;
4
- value?: string;
5
- isLeaf?: string;
1
+ import { default as GInputTreeTag } from './index';
2
+ export default GInputTreeTag;
3
+ export { GInputTreeTag };
4
+ g;
6
5
  disabled?: string;
7
6
  }
8
7
  interface EchoFieldProps {
@@ -88,7 +87,6 @@ declare function __VLS_template(): {
88
87
  refs: {
89
88
  wrapRef: HTMLDivElement;
90
89
  inputBoxRef: HTMLDivElement;
91
- popperRef: HTMLDivElement;
92
90
  treeRef: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('vue').ExtractPropTypes<{
93
91
  readonly data: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => import('element-plus').TreeData) | (() => import('element-plus').TreeData) | ((new (...args: any[]) => import('element-plus').TreeData) | (() => import('element-plus').TreeData))[], unknown, unknown, () => never[], boolean>;
94
92
  readonly emptyText: {
@@ -470,7 +468,7 @@ declare function __VLS_template(): {
470
468
  readonly previousSibling: any | null;
471
469
  contains: (target: import('element-plus/es/components/tree/src/model/node.mjs').default, deep?: boolean) => boolean;
472
470
  remove: () => void;
473
- insertChild: (child? /** 浮层 z-index */: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, index? /** 浮层与输入框的纵向间隙 */: number, batch?: boolean) => void;
471
+ insertChild: (child?: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, index?: number, batch?: boolean) => void;
474
472
  insertBefore: (child: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, ref: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
475
473
  insertAfter: (child: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, ref: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
476
474
  removeChild: (child: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
@@ -517,7 +515,7 @@ declare function __VLS_template(): {
517
515
  readonly disabled: boolean;
518
516
  readonly nextSibling: any | null;
519
517
  readonly previousSibling: any | null;
520
- contains: (target: import('element-plus/es/components/tree/src/model/node.mjs').default, deep?: boolean) => boolean;
518
+ contains: (target: import('element-plus/es/components/tree/src/model/node.mjs').default, deep? /** 下拉面板最大高度 */: boolean) => boolean;
521
519
  remove: () => void;
522
520
  insertChild: (child?: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, index?: number, batch?: boolean) => void;
523
521
  insertBefore: (child: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, ref: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
@@ -529,7 +527,7 @@ declare function __VLS_template(): {
529
527
  collapse: () => void;
530
528
  shouldLoadData: () => boolean;
531
529
  updateLeafState: () => void;
532
- setChecked: (value?: boolean | string, deep?: boolean, recursion?: boolean, passValue?: boolean) => void;
530
+ setChecked: (value?: boolean | string, deep?: boolean, recursion?: boolean, passValue? /** 回车未匹配时的提示文案,传空串则不弹提示 */: boolean) => void;
533
531
  getChildren: (forceInit?: boolean) => import('element-plus').TreeNodeData | import('element-plus').TreeNodeData[] | null;
534
532
  updateChildren: () => void;
535
533
  loadData: (callback: (data?: import('element-plus').TreeNodeData[]) => void, defaultProps?: import('element-plus').TreeNodeLoadedDefaultProps) => void;
@@ -983,7 +981,7 @@ declare function __VLS_template(): {
983
981
  readonly previousSibling: any | null;
984
982
  contains: (target: import('element-plus/es/components/tree/src/model/node.mjs').default, deep?: boolean) => boolean;
985
983
  remove: () => void;
986
- insertChild: (child? /** 浮层 z-index */: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, index? /** 浮层与输入框的纵向间隙 */: number, batch?: boolean) => void;
984
+ insertChild: (child?: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, index?: number, batch?: boolean) => void;
987
985
  insertBefore: (child: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, ref: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
988
986
  insertAfter: (child: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, ref: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
989
987
  removeChild: (child: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
@@ -1030,7 +1028,7 @@ declare function __VLS_template(): {
1030
1028
  readonly disabled: boolean;
1031
1029
  readonly nextSibling: any | null;
1032
1030
  readonly previousSibling: any | null;
1033
- contains: (target: import('element-plus/es/components/tree/src/model/node.mjs').default, deep?: boolean) => boolean;
1031
+ contains: (target: import('element-plus/es/components/tree/src/model/node.mjs').default, deep? /** 下拉面板最大高度 */: boolean) => boolean;
1034
1032
  remove: () => void;
1035
1033
  insertChild: (child?: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, index?: number, batch?: boolean) => void;
1036
1034
  insertBefore: (child: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, ref: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
@@ -1042,7 +1040,7 @@ declare function __VLS_template(): {
1042
1040
  collapse: () => void;
1043
1041
  shouldLoadData: () => boolean;
1044
1042
  updateLeafState: () => void;
1045
- setChecked: (value?: boolean | string, deep?: boolean, recursion?: boolean, passValue?: boolean) => void;
1043
+ setChecked: (value?: boolean | string, deep?: boolean, recursion?: boolean, passValue? /** 回车未匹配时的提示文案,传空串则不弹提示 */: boolean) => void;
1046
1044
  getChildren: (forceInit?: boolean) => import('element-plus').TreeNodeData | import('element-plus').TreeNodeData[] | null;
1047
1045
  updateChildren: () => void;
1048
1046
  loadData: (callback: (data?: import('element-plus').TreeNodeData[]) => void, defaultProps?: import('element-plus').TreeNodeLoadedDefaultProps) => void;
@@ -1154,7 +1152,6 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {
1154
1152
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
1155
1153
  wrapRef: HTMLDivElement;
1156
1154
  inputBoxRef: HTMLDivElement;
1157
- popperRef: HTMLDivElement;
1158
1155
  treeRef: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('vue').ExtractPropTypes<{
1159
1156
  readonly data: import('element-plus/es/utils/index.mjs').EpPropFinalized<(new (...args: any[]) => import('element-plus').TreeData) | (() => import('element-plus').TreeData) | ((new (...args: any[]) => import('element-plus').TreeData) | (() => import('element-plus').TreeData))[], unknown, unknown, () => never[], boolean>;
1160
1157
  readonly emptyText: {
@@ -1536,7 +1533,7 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {
1536
1533
  readonly previousSibling: any | null;
1537
1534
  contains: (target: import('element-plus/es/components/tree/src/model/node.mjs').default, deep?: boolean) => boolean;
1538
1535
  remove: () => void;
1539
- insertChild: (child? /** 浮层 z-index */: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, index? /** 浮层与输入框的纵向间隙 */: number, batch?: boolean) => void;
1536
+ insertChild: (child?: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, index?: number, batch?: boolean) => void;
1540
1537
  insertBefore: (child: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, ref: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
1541
1538
  insertAfter: (child: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, ref: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
1542
1539
  removeChild: (child: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
@@ -1583,7 +1580,7 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {
1583
1580
  readonly disabled: boolean;
1584
1581
  readonly nextSibling: any | null;
1585
1582
  readonly previousSibling: any | null;
1586
- contains: (target: import('element-plus/es/components/tree/src/model/node.mjs').default, deep?: boolean) => boolean;
1583
+ contains: (target: import('element-plus/es/components/tree/src/model/node.mjs').default, deep? /** 下拉面板最大高度 */: boolean) => boolean;
1587
1584
  remove: () => void;
1588
1585
  insertChild: (child?: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, index?: number, batch?: boolean) => void;
1589
1586
  insertBefore: (child: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, ref: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
@@ -1595,7 +1592,7 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {
1595
1592
  collapse: () => void;
1596
1593
  shouldLoadData: () => boolean;
1597
1594
  updateLeafState: () => void;
1598
- setChecked: (value?: boolean | string, deep?: boolean, recursion?: boolean, passValue?: boolean) => void;
1595
+ setChecked: (value?: boolean | string, deep?: boolean, recursion?: boolean, passValue? /** 回车未匹配时的提示文案,传空串则不弹提示 */: boolean) => void;
1599
1596
  getChildren: (forceInit?: boolean) => import('element-plus').TreeNodeData | import('element-plus').TreeNodeData[] | null;
1600
1597
  updateChildren: () => void;
1601
1598
  loadData: (callback: (data?: import('element-plus').TreeNodeData[]) => void, defaultProps?: import('element-plus').TreeNodeLoadedDefaultProps) => void;
@@ -2049,7 +2046,7 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {
2049
2046
  readonly previousSibling: any | null;
2050
2047
  contains: (target: import('element-plus/es/components/tree/src/model/node.mjs').default, deep?: boolean) => boolean;
2051
2048
  remove: () => void;
2052
- insertChild: (child? /** 浮层 z-index */: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, index? /** 浮层与输入框的纵向间隙 */: number, batch?: boolean) => void;
2049
+ insertChild: (child?: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, index?: number, batch?: boolean) => void;
2053
2050
  insertBefore: (child: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, ref: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
2054
2051
  insertAfter: (child: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, ref: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
2055
2052
  removeChild: (child: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
@@ -2096,7 +2093,7 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {
2096
2093
  readonly disabled: boolean;
2097
2094
  readonly nextSibling: any | null;
2098
2095
  readonly previousSibling: any | null;
2099
- contains: (target: import('element-plus/es/components/tree/src/model/node.mjs').default, deep?: boolean) => boolean;
2096
+ contains: (target: import('element-plus/es/components/tree/src/model/node.mjs').default, deep? /** 下拉面板最大高度 */: boolean) => boolean;
2100
2097
  remove: () => void;
2101
2098
  insertChild: (child?: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, index?: number, batch?: boolean) => void;
2102
2099
  insertBefore: (child: import('element-plus').FakeNode | import('element-plus/es/components/tree/src/model/node.mjs').default, ref: import('element-plus/es/components/tree/src/model/node.mjs').default) => void;
@@ -2108,7 +2105,7 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {
2108
2105
  collapse: () => void;
2109
2106
  shouldLoadData: () => boolean;
2110
2107
  updateLeafState: () => void;
2111
- setChecked: (value?: boolean | string, deep?: boolean, recursion?: boolean, passValue?: boolean) => void;
2108
+ setChecked: (value?: boolean | string, deep?: boolean, recursion?: boolean, passValue? /** 回车未匹配时的提示文案,传空串则不弹提示 */: boolean) => void;
2112
2109
  getChildren: (forceInit?: boolean) => import('element-plus').TreeNodeData | import('element-plus').TreeNodeData[] | null;
2113
2110
  updateChildren: () => void;
2114
2111
  loadData: (callback: (data?: import('element-plus').TreeNodeData[]) => void, defaultProps?: import('element-plus').TreeNodeLoadedDefaultProps) => void;
@@ -0,0 +1,70 @@
1
+ interface AnimatedListProps {
2
+ items?: any[];
3
+ showGradients?: boolean;
4
+ className?: string;
5
+ itemClassName?: string;
6
+ displayScrollbar?: boolean;
7
+ initialSelectedIndex?: number;
8
+ height?: string | number;
9
+ stagger?: number;
10
+ loading?: boolean;
11
+ skeletonCount?: number;
12
+ /** 是否开启无缝循环滚动 */
13
+ seamless?: boolean;
14
+ /** 无缝滚动速度(px / 秒) */
15
+ seamlessSpeed?: number;
16
+ /** 无缝滚动方向:up 内容上移 / down 内容下移 */
17
+ seamlessDirection?: 'up' | 'down';
18
+ /** 鼠标悬停是否暂停无缝滚动 */
19
+ seamlessPauseOnHover?: boolean;
20
+ }
21
+ declare function __VLS_template(): {
22
+ attrs: Partial<{}>;
23
+ slots: {
24
+ default?(_: {
25
+ item: any;
26
+ index: number;
27
+ }): any;
28
+ default?(_: {
29
+ item: any;
30
+ index: number;
31
+ }): any;
32
+ };
33
+ refs: {
34
+ seamlessWrapRef: HTMLDivElement;
35
+ seamlessTrackRef: HTMLDivElement;
36
+ listRef: HTMLDivElement;
37
+ };
38
+ rootEl: HTMLDivElement;
39
+ };
40
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
41
+ declare const __VLS_component: import('vue').DefineComponent<AnimatedListProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
42
+ itemSelected: (item: any, index: number) => any;
43
+ }, string, import('vue').PublicProps, Readonly<AnimatedListProps> & Readonly<{
44
+ onItemSelected?: ((item: any, index: number) => any) | undefined;
45
+ }>, {
46
+ className: string;
47
+ loading: boolean;
48
+ stagger: number;
49
+ items: any[];
50
+ showGradients: boolean;
51
+ itemClassName: string;
52
+ displayScrollbar: boolean;
53
+ initialSelectedIndex: number;
54
+ skeletonCount: number;
55
+ seamless: boolean;
56
+ seamlessSpeed: number;
57
+ seamlessDirection: "up" | "down";
58
+ seamlessPauseOnHover: boolean;
59
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
60
+ seamlessWrapRef: HTMLDivElement;
61
+ seamlessTrackRef: HTMLDivElement;
62
+ listRef: HTMLDivElement;
63
+ }, HTMLDivElement>;
64
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
65
+ export default _default;
66
+ type __VLS_WithTemplateSlots<T, S> = T & {
67
+ new (): {
68
+ $slots: S;
69
+ };
70
+ };