@soei/flyweight 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Flyweight.cjs +1 -1
- package/Flyweight.js +176 -170
- package/README.md +4 -4
- package/package.json +1 -1
- package/style.css +1 -1
package/Flyweight.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("@soei/util"),l=require("vue");let H=/(\d+|[+\-\*/]|%)/g,T={"+":(e,t)=>e+t,"-":(e,t)=>e-t,"*":(e,t)=>e*t,"/":(e,t)=>e/t,"%":(e,t,s)=>parseFloat(e)/100*s},v=(e,t)=>{let s;if(s=n.runer("match",e,H)){let h=s.length,r,i=0,c,o=[];for(;h--;)i=s.shift(),i in T?(r&&o.push(r),i==="%"&&(o.length=2),c=i):+i&&o.push(+i),o.length==2&&(o.push(t),console.log(o,c,"W"),r=T[c].apply(null,o),o.length=0);+r||(r=+o.pop()),e=r>>0}return e},z=e=>e.replace(/\w+\((.*)\)/g,"$1").replace(/(?=\D)0(?!\w)/,"0px");const B=(e,t)=>{const s=e.__vccOpts||e;for(const[h,r]of t)s[h]=r;return s};let $=e=>e==null||e==null,C=(...e)=>{console.info("::::FLYWEIGHT",...e)};const O={name:"Flyweight",props:{flys:{type:Array,default:()=>[]},width:{type:Number,default:0},height:{type:Number,default:100},offset:{type:Array,default:()=>[0,0]},lazy:{type:Number,default:100},view:{type:Object,default:()=>({id:0})},index:{type:Number,default:0},top:{type:Number,default:!1},left:{type:Number,default:!1},auto:{type:[Boolean,String],default:!1},space:{type:Object,default:()=>null},padding:{type:Boolean,default:!1}},computed:{flyweight(){return this.$refs.flyweight}},data(){return{flyweights:[],actice:!1,Height:null,column:1,row:1,fwheight:10,count:0,task:[],realW:0,realH:0}},watch:{flys(e){this.count=e.length,this.re();let t=this.task.shift();t&&this.$nextTick(()=>{this.setview(t)})},view:{handler(e){this.setview(e)},immediate:!0,deep:!0},index(e){this.setindex(e)},top(e){this.flyweight.scrollTop=e},left(e){this.flyweight.scrollLeft=e}},mounted(){this.flyweights=[],this.$set||(this.$set=(e,t,s)=>{e[t]=s}),this.setindex(this.index);try{new ResizeObserver(()=>{this.re(),this.$emit("resize")}).observe(this.flyweight)}catch(e){C(e)}},methods:{trigger(e,t){this.lazyrun(()=>{n.isArray(e)||(e=[[e,t]]),n.each(e,(s,h)=>{this.$emit(h[0],$(h[1])?!0:h[1])})})},cheackflys(e){if(!this.flys.length)return e&&this.task.push(e),!0},setview(e){n.runer([this.cheackflys,t=>{t=t||{};let s=t.index||n.each(this.flys,(h,r,i,c)=>{if(r[i]==c)return h},t.picker,t.id);$(s)||this.setindex(s)}],this,e)},setindex(e){n.runer([this.cheackflys,({index:t})=>{this.$nextTick(()=>{let s=t/this.column>>0,h=this.fwheight;(this.flyweight.scrollTop/h>>0)+this.row-s-1>0||(this.flyweight.scrollTop=s*h,this.scroll())})}],this,{index:e})},lazyrun(e,t){clearTimeout(this.time),this.time=setTimeout(()=>{n.runer(e)},t||this.lazy)},run(e){let t=[],s=n.picker(e.target,"scrollTop=>top");n.merge(s,{height:this.realH,width:this.realW,index:s.top/this.fwheight>>0},this.space,"mix"),e.from||t.push(["onscroll",s]);let h=!1;n.each(this.flyweights,(r,i,c,o,d,u,f,a)=>{if(c=r/d>>0,f=c+o*(+(c<u%o)+(u/o>>0)),a=f*d+r%d,a>=this.count){h||(t.push(["onend"]),h=!0);return}i.index=f,i.i=a,i.top=f*this.fwheight,i.data=this.flys[a],i.width=this.realW,i.height=this.realH},null,this.row,this.column,s.index),this.trigger(t),t=null},scroll(e){this.run(e||{target:this.flyweight,from:"space"})},re(){let e=this.count||this.flys.length,t=this.flyweights;if(!e)return t.length=e;this.count=e;let s=this.flyweight,h=n.picker(s,"clientHeight=>height,clientWidth=>width");this.$nextTick(()=>{let r=/true/.test(this.auto),[i,c]=this.offset,o=h.width,d=h.height,u=(v(this.width,o)||o)+i,f=v(this.height,d)+c;this.realH=f-c;let a=o/u>>0||1,g=d/f>>0,m=this.padding;this.row=g+2,this.column=a,this.fwheight=f;let w,_=0;r?(u=(o-i*(a+2*m-1))/a,w=!m*i,_=m*i):(w=0,_=(o%u+i*a)/(a+1)>>0,u-=i),this.realW=u,this.Height=Math.ceil(e/a)*f;let S=Math.min(e,a*this.row),y=S-1,p,k,b;for(;S-- >0;)p=y-S,b=this.flys[p],s=t[p],g=p/a>>0,k=p%a,this.$set(t,p,{data:b,top:g*f,left:k*(u+w)+(k+1)*_,index:g});t.length=y+1;let x=[];d/f>y/a&&x.push(["onend"]),this.scroll(),x.push(["update:space",{row:(y/a>>0)+1,column:a,showrow:this.row,showcolumn:this.column}]),this.trigger(x)})}}};function W(e,t,s,h,r,i){return l.openBlock(),l.createElementBlock("div",{ref:"flyweight",class:l.normalizeClass(["flyweight",{"flyweight-active":r.actice}]),style:l.normalizeStyle({"--width":r.realW+"px","--height":r.realH+"px"}),onScroll:t[0]||(t[0]=(...c)=>i.scroll&&i.scroll(...c))},[l.createElementVNode("div",{class:"flyweight-all",style:l.normalizeStyle({"--flyweight-height":r.Height+"px"})},[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(r.flyweights,(c,o)=>(l.openBlock(),l.createElementBlock("div",{key:o,style:l.normalizeStyle({top:c.top+"px",left:c.left+"px"})},[l.renderSlot(e.$slots,"default",l.mergeProps({ref_for:!0},c),void 0,!0)],4))),128))],4),r.flyweights.length?l.renderSlot(e.$slots,"end",{key:0},void 0,!0):l.createCommentVNode("",!0)],38)}const N=B(O,[["render",W],["__scopeId","data-v-4f09502c"]]);const F={name:"Card",props:{offset:{type:[String,Array],default:()=>[0,0,0,0]},background:{type:String,default:""},border:{type:String,default:"1px"},height:{type:String,default:"100%"},width:{type:String,default:"100%"},show:{type:String,default:""},close:{type:Object,default:null},title:{type:String,default:""}},data(){return{closecss:{},$$attrs:{},top:"0",right:"0",bottom:"0",left:"0",style:{}}},computed:{style(){let e={};return n.each(["BackGround","Border","Height","Width","Top","Right","BottoM","Left"],(t,s)=>{e["--"+s.replace(/[a-z]/g,"")]=z(this[s.toLowerCase()])}),e}},watch:{close:{handler(e){this.change(e)},deep:!0},offset:{handler(e){this.offser(e)},deep:!0}},methods:{exec:z,isEmpty:n.isEmpty,isSimplyType:n.isSimplyType,change(e){n.isSimplyType(e)||(this.closecss=n.picker(e,"color=>--s-card-close-color,*"))},offser(e){e=n.isString(e)?e.split(/\s*(?:,|\s+)\s*/):e;let t=n.picker(e,"0=>top,1|0=>right,2|0=>bottom,3|1|0=>left",!0);n.each(t,(s,h,r)=>{r[s]=h+"px"},t),n.merge(this,t,!0)}},mounted(){this.change(this.close),this.offser(this.offset)}},L={class:"card-title"},V={class:"card-content"};function M(e,t,s,h,r,i){return l.openBlock(),l.createElementBlock("div",{class:"card",style:l.normalizeStyle(i.style)},[l.renderSlot(e.$slots,"default",{},()=>[l.renderSlot(e.$slots,"title",{},()=>[l.createElementVNode("div",L,[l.createTextVNode(l.toDisplayString(s.show||s.title)+" ",1),l.createElementVNode("div",{class:l.normalizeClass(["card-close",{hide:i.isSimplyType(s.close)?!s.close:!1}]),style:l.normalizeStyle(r.closecss),onClick:t[0]||(t[0]=c=>e.$emit("close"))},null,6)])],!0),l.renderSlot(e.$slots,"content",{},()=>[l.createElementVNode("div",V,[l.renderSlot(e.$slots,"inner",{},void 0,!0)])],!0)],!0)],4)}const E=B(F,[["render",M],["__scopeId","data-v-ca61ca3d"]]),j=[N,E],I={install(e){j.forEach(t=>{e.component("S"+t.name,t),e.component(t.name+"S",t)})}};exports.Card=E;exports.Flyweight=N;exports.default=I;
|
package/Flyweight.js
CHANGED
|
@@ -1,30 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { openBlock as _, createElementBlock as
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"+": (t, e) => t + e,
|
|
11
|
-
"-": (t, e) => t - e,
|
|
12
|
-
"*": (t, e) => t * e,
|
|
13
|
-
"/": (t, e) => t / e,
|
|
14
|
-
"%": (t, e, s) => parseFloat(t) / 100 * s
|
|
15
|
-
}, $ = (t, e) => {
|
|
1
|
+
import { runer as m, isArray as j, each as g, picker as b, merge as L, isEmpty as A, isSimplyType as W, isString as M } from "@soei/util";
|
|
2
|
+
import { openBlock as _, createElementBlock as x, normalizeClass as E, normalizeStyle as p, createElementVNode as k, Fragment as R, renderList as V, renderSlot as d, mergeProps as D, createCommentVNode as G, createTextVNode as P, toDisplayString as U } from "vue";
|
|
3
|
+
let Y = /(\d+|[+\-\*/]|%)/g, B = {
|
|
4
|
+
"+": (e, t) => e + t,
|
|
5
|
+
"-": (e, t) => e - t,
|
|
6
|
+
"*": (e, t) => e * t,
|
|
7
|
+
"/": (e, t) => e / t,
|
|
8
|
+
"%": (e, t, s) => parseFloat(e) / 100 * s
|
|
9
|
+
}, C = (e, t) => {
|
|
16
10
|
let s;
|
|
17
|
-
if (s = m("match",
|
|
18
|
-
let
|
|
19
|
-
for (;
|
|
20
|
-
|
|
21
|
-
+
|
|
11
|
+
if (s = m("match", e, Y)) {
|
|
12
|
+
let r = s.length, l, i = 0, o, h = [];
|
|
13
|
+
for (; r--; )
|
|
14
|
+
i = s.shift(), i in B ? (l && h.push(l), i === "%" && (h.length = 2), o = i) : +i && h.push(+i), h.length == 2 && (h.push(t), console.log(h, o, "W"), l = B[o].apply(null, h), h.length = 0);
|
|
15
|
+
+l || (l = +h.pop()), e = l >> 0;
|
|
22
16
|
}
|
|
23
|
-
return
|
|
24
|
-
},
|
|
25
|
-
|
|
17
|
+
return e;
|
|
18
|
+
}, O = (e) => e.replace(/\w+\((.*)\)/g, "$1").replace(/(?=\D)0(?!\w)/, "0px");
|
|
19
|
+
const I = (e, t) => {
|
|
20
|
+
const s = e.__vccOpts || e;
|
|
21
|
+
for (const [r, l] of t)
|
|
22
|
+
s[r] = l;
|
|
23
|
+
return s;
|
|
24
|
+
};
|
|
25
|
+
let F = (e) => e == null || e == null, q = (...e) => {
|
|
26
|
+
console.info("::::FLYWEIGHT", ...e);
|
|
26
27
|
};
|
|
27
|
-
const
|
|
28
|
+
const J = {
|
|
28
29
|
name: "Flyweight",
|
|
29
30
|
props: {
|
|
30
31
|
flys: {
|
|
@@ -49,7 +50,7 @@ const G = {
|
|
|
49
50
|
},
|
|
50
51
|
view: {
|
|
51
52
|
type: Object,
|
|
52
|
-
default: () =>
|
|
53
|
+
default: () => ({ id: 0 })
|
|
53
54
|
},
|
|
54
55
|
index: {
|
|
55
56
|
type: Number,
|
|
@@ -70,6 +71,10 @@ const G = {
|
|
|
70
71
|
space: {
|
|
71
72
|
type: Object,
|
|
72
73
|
default: () => null
|
|
74
|
+
},
|
|
75
|
+
padding: {
|
|
76
|
+
type: Boolean,
|
|
77
|
+
default: !1
|
|
73
78
|
}
|
|
74
79
|
},
|
|
75
80
|
computed: {
|
|
@@ -92,173 +97,173 @@ const G = {
|
|
|
92
97
|
};
|
|
93
98
|
},
|
|
94
99
|
watch: {
|
|
95
|
-
flys(
|
|
96
|
-
this.count =
|
|
97
|
-
let
|
|
98
|
-
|
|
99
|
-
this.setview(
|
|
100
|
+
flys(e) {
|
|
101
|
+
this.count = e.length, this.re();
|
|
102
|
+
let t = this.task.shift();
|
|
103
|
+
t && this.$nextTick(() => {
|
|
104
|
+
this.setview(t);
|
|
100
105
|
});
|
|
101
106
|
},
|
|
102
107
|
view: {
|
|
103
|
-
handler(
|
|
104
|
-
this.setview(
|
|
108
|
+
handler(e) {
|
|
109
|
+
this.setview(e);
|
|
105
110
|
},
|
|
106
|
-
immediate: !0
|
|
111
|
+
immediate: !0,
|
|
112
|
+
deep: !0
|
|
107
113
|
},
|
|
108
|
-
index(
|
|
109
|
-
this.setindex(
|
|
114
|
+
index(e) {
|
|
115
|
+
this.setindex(e);
|
|
110
116
|
},
|
|
111
|
-
top(
|
|
112
|
-
this.flyweight.scrollTop =
|
|
117
|
+
top(e) {
|
|
118
|
+
this.flyweight.scrollTop = e;
|
|
113
119
|
},
|
|
114
|
-
left(
|
|
115
|
-
this.flyweight.scrollLeft =
|
|
120
|
+
left(e) {
|
|
121
|
+
this.flyweight.scrollLeft = e;
|
|
116
122
|
}
|
|
117
123
|
},
|
|
118
124
|
mounted() {
|
|
119
|
-
this.flyweights = [], this.$set || (this.$set = (
|
|
120
|
-
t
|
|
125
|
+
this.flyweights = [], this.$set || (this.$set = (e, t, s) => {
|
|
126
|
+
e[t] = s;
|
|
121
127
|
}), this.setindex(this.index);
|
|
122
128
|
try {
|
|
123
129
|
new ResizeObserver(() => {
|
|
124
130
|
this.re(), this.$emit("resize");
|
|
125
131
|
}).observe(this.flyweight);
|
|
126
|
-
} catch (
|
|
127
|
-
|
|
132
|
+
} catch (e) {
|
|
133
|
+
q(e);
|
|
128
134
|
}
|
|
129
135
|
},
|
|
130
136
|
methods: {
|
|
131
|
-
trigger(
|
|
137
|
+
trigger(e, t) {
|
|
132
138
|
this.lazyrun(() => {
|
|
133
|
-
|
|
134
|
-
this.$emit(
|
|
139
|
+
j(e) || (e = [[e, t]]), g(e, (s, r) => {
|
|
140
|
+
this.$emit(r[0], F(r[1]) ? !0 : r[1]);
|
|
135
141
|
});
|
|
136
142
|
});
|
|
137
143
|
},
|
|
138
|
-
cheackflys(
|
|
144
|
+
cheackflys(e) {
|
|
139
145
|
if (!this.flys.length)
|
|
140
|
-
return
|
|
146
|
+
return e && this.task.push(e), !0;
|
|
141
147
|
},
|
|
142
|
-
setview(
|
|
143
|
-
m([this.cheackflys, (
|
|
144
|
-
|
|
145
|
-
let s =
|
|
146
|
-
if (i
|
|
147
|
-
return
|
|
148
|
-
},
|
|
149
|
-
|
|
150
|
-
}], this,
|
|
148
|
+
setview(e) {
|
|
149
|
+
m([this.cheackflys, (t) => {
|
|
150
|
+
t = t || {};
|
|
151
|
+
let s = t.index || g(this.flys, (r, l, i, o) => {
|
|
152
|
+
if (l[i] == o)
|
|
153
|
+
return r;
|
|
154
|
+
}, t.picker, t.id);
|
|
155
|
+
F(s) || this.setindex(s);
|
|
156
|
+
}], this, e);
|
|
151
157
|
},
|
|
152
|
-
setindex(
|
|
153
|
-
m([this.cheackflys, ({ index:
|
|
158
|
+
setindex(e) {
|
|
159
|
+
m([this.cheackflys, ({ index: t }) => {
|
|
154
160
|
this.$nextTick(() => {
|
|
155
|
-
let s =
|
|
156
|
-
(this.flyweight.scrollTop /
|
|
161
|
+
let s = t / this.column >> 0, r = this.fwheight;
|
|
162
|
+
(this.flyweight.scrollTop / r >> 0) + this.row - s - 1 > 0 || (this.flyweight.scrollTop = s * r, this.scroll());
|
|
157
163
|
});
|
|
158
|
-
}], this, { index:
|
|
164
|
+
}], this, { index: e });
|
|
159
165
|
},
|
|
160
|
-
lazyrun(
|
|
166
|
+
lazyrun(e, t) {
|
|
161
167
|
clearTimeout(this.time), this.time = setTimeout(() => {
|
|
162
|
-
m(
|
|
163
|
-
},
|
|
168
|
+
m(e);
|
|
169
|
+
}, t || this.lazy);
|
|
164
170
|
},
|
|
165
|
-
run(
|
|
166
|
-
let
|
|
167
|
-
|
|
171
|
+
run(e) {
|
|
172
|
+
let t = [], s = b(e.target, "scrollTop=>top");
|
|
173
|
+
L(s, {
|
|
168
174
|
height: this.realH,
|
|
169
175
|
width: this.realW,
|
|
170
176
|
/* 显示区域第一行的索引 */
|
|
171
177
|
index: s.top / this.fwheight >> 0
|
|
172
178
|
// ...this
|
|
173
|
-
}, this.space, "mix"),
|
|
179
|
+
}, this.space, "mix"), e.from || t.push(["onscroll", s]);
|
|
180
|
+
let r = !1;
|
|
181
|
+
g(
|
|
174
182
|
this.flyweights,
|
|
175
|
-
(l, i,
|
|
176
|
-
if (
|
|
177
|
-
(+(
|
|
178
|
-
|
|
183
|
+
(l, i, o, h, a, c, f, n) => {
|
|
184
|
+
if (o = l / a >> 0, f = o + h * /* 偏移量, 如果超出顶部 + 1轮,排列到列队后, 否则保持在当前*/
|
|
185
|
+
(+(o < c % h) + (c / h >> 0)), n = f * a + l % a, n >= this.count) {
|
|
186
|
+
r || (t.push(["onend"]), r = !0);
|
|
179
187
|
return;
|
|
180
188
|
}
|
|
181
|
-
i.index = f, i.top = f * this.fwheight, i.data = this.flys[
|
|
189
|
+
i.index = f, i.i = n, i.top = f * this.fwheight, i.data = this.flys[n], i.width = this.realW, i.height = this.realH;
|
|
182
190
|
},
|
|
183
191
|
null,
|
|
184
192
|
this.row,
|
|
185
193
|
this.column,
|
|
186
194
|
/* 显示区域第一行的索引 */
|
|
187
195
|
s.index
|
|
188
|
-
), this.trigger(
|
|
196
|
+
), this.trigger(t), t = null;
|
|
189
197
|
},
|
|
190
|
-
scroll(
|
|
191
|
-
this.run(
|
|
198
|
+
scroll(e) {
|
|
199
|
+
this.run(e || { target: this.flyweight, from: "space" });
|
|
192
200
|
},
|
|
193
201
|
re() {
|
|
194
|
-
let
|
|
195
|
-
if (!
|
|
196
|
-
return
|
|
197
|
-
this.count =
|
|
198
|
-
let s = this.flyweight,
|
|
202
|
+
let e = this.count || this.flys.length, t = this.flyweights;
|
|
203
|
+
if (!e)
|
|
204
|
+
return t.length = e;
|
|
205
|
+
this.count = e;
|
|
206
|
+
let s = this.flyweight, r = b(s, "clientHeight=>height,clientWidth=>width");
|
|
199
207
|
this.$nextTick(() => {
|
|
200
|
-
let
|
|
201
|
-
this.realH =
|
|
202
|
-
let
|
|
203
|
-
this.row =
|
|
204
|
-
let
|
|
205
|
-
|
|
206
|
-
let
|
|
207
|
-
for (;
|
|
208
|
-
|
|
209
|
-
data:
|
|
210
|
-
top:
|
|
211
|
-
left:
|
|
212
|
-
index:
|
|
208
|
+
let l = /true/.test(this.auto), [i, o] = this.offset, h = r.width, a = r.height, c = (C(this.width, h) || h) + i, f = C(this.height, a) + o;
|
|
209
|
+
this.realH = f - o;
|
|
210
|
+
let n = h / c >> 0 || 1, y = a / f >> 0, S = this.padding;
|
|
211
|
+
this.row = y + 2, this.column = n, this.fwheight = f;
|
|
212
|
+
let T, $ = 0;
|
|
213
|
+
l ? (c = (h - i * (n + 2 * S - 1)) / n, T = !S * i, $ = S * i) : (T = 0, $ = (h % c + i * n) / (n + 1) >> 0, c -= i), this.realW = c, this.Height = Math.ceil(e / n) * f;
|
|
214
|
+
let v = Math.min(e, n * this.row), w = v - 1, u, z, N;
|
|
215
|
+
for (; v-- > 0; )
|
|
216
|
+
u = w - v, N = this.flys[u], s = t[u], y = u / n >> 0, z = u % n, this.$set(t, u, {
|
|
217
|
+
data: N,
|
|
218
|
+
top: y * f,
|
|
219
|
+
left: z * (c + T) + (z + 1) * $,
|
|
220
|
+
index: y
|
|
213
221
|
});
|
|
214
|
-
|
|
215
|
-
let
|
|
216
|
-
|
|
217
|
-
row: (
|
|
218
|
-
column:
|
|
222
|
+
t.length = w + 1;
|
|
223
|
+
let H = [];
|
|
224
|
+
a / f > w / n && H.push(["onend"]), this.scroll(), H.push(["update:space", {
|
|
225
|
+
row: (w / n >> 0) + 1,
|
|
226
|
+
column: n,
|
|
219
227
|
showrow: this.row,
|
|
220
228
|
showcolumn: this.column
|
|
221
|
-
}]), this.trigger(
|
|
229
|
+
}]), this.trigger(H);
|
|
222
230
|
});
|
|
223
231
|
}
|
|
224
232
|
}
|
|
225
233
|
};
|
|
226
|
-
function
|
|
227
|
-
return _(),
|
|
234
|
+
function K(e, t, s, r, l, i) {
|
|
235
|
+
return _(), x("div", {
|
|
228
236
|
ref: "flyweight",
|
|
229
|
-
class:
|
|
230
|
-
"flyweight-active":
|
|
237
|
+
class: E(["flyweight", {
|
|
238
|
+
"flyweight-active": l.actice
|
|
231
239
|
}]),
|
|
232
|
-
style:
|
|
233
|
-
"--width":
|
|
234
|
-
"--height":
|
|
240
|
+
style: p({
|
|
241
|
+
"--width": l.realW + "px",
|
|
242
|
+
"--height": l.realH + "px"
|
|
235
243
|
}),
|
|
236
|
-
onScroll:
|
|
244
|
+
onScroll: t[0] || (t[0] = (...o) => i.scroll && i.scroll(...o))
|
|
237
245
|
}, [
|
|
238
|
-
|
|
246
|
+
k("div", {
|
|
239
247
|
class: "flyweight-all",
|
|
240
|
-
style:
|
|
241
|
-
"--flyweight-height":
|
|
248
|
+
style: p({
|
|
249
|
+
"--flyweight-height": l.Height + "px"
|
|
242
250
|
})
|
|
243
251
|
}, [
|
|
244
|
-
(_(!0),
|
|
245
|
-
key:
|
|
246
|
-
style:
|
|
247
|
-
top:
|
|
248
|
-
left:
|
|
252
|
+
(_(!0), x(R, null, V(l.flyweights, (o, h) => (_(), x("div", {
|
|
253
|
+
key: h,
|
|
254
|
+
style: p({
|
|
255
|
+
top: o.top + "px",
|
|
256
|
+
left: o.left + "px"
|
|
249
257
|
})
|
|
250
258
|
}, [
|
|
251
|
-
d(
|
|
252
|
-
data: n.data,
|
|
253
|
-
index: n.index
|
|
254
|
-
}, void 0, !0)
|
|
259
|
+
d(e.$slots, "default", D({ ref_for: !0 }, o), void 0, !0)
|
|
255
260
|
], 4))), 128))
|
|
256
261
|
], 4),
|
|
257
|
-
|
|
262
|
+
l.flyweights.length ? d(e.$slots, "end", { key: 0 }, void 0, !0) : G("", !0)
|
|
258
263
|
], 38);
|
|
259
264
|
}
|
|
260
|
-
const
|
|
261
|
-
const
|
|
265
|
+
const Q = /* @__PURE__ */ I(J, [["render", K], ["__scopeId", "data-v-4f09502c"]]);
|
|
266
|
+
const X = {
|
|
262
267
|
name: "Card",
|
|
263
268
|
// inheritAttrs: false,
|
|
264
269
|
props: {
|
|
@@ -302,83 +307,84 @@ const q = {
|
|
|
302
307
|
top: "0",
|
|
303
308
|
right: "0",
|
|
304
309
|
bottom: "0",
|
|
305
|
-
left: "0"
|
|
310
|
+
left: "0",
|
|
311
|
+
style: {}
|
|
306
312
|
};
|
|
307
313
|
},
|
|
314
|
+
computed: {
|
|
315
|
+
style() {
|
|
316
|
+
let e = {};
|
|
317
|
+
return g(["BackGround", "Border", "Height", "Width", "Top", "Right", "BottoM", "Left"], (t, s) => {
|
|
318
|
+
e["--" + s.replace(/[a-z]/g, "")] = O(this[s.toLowerCase()]);
|
|
319
|
+
}), e;
|
|
320
|
+
}
|
|
321
|
+
},
|
|
308
322
|
watch: {
|
|
309
323
|
close: {
|
|
310
|
-
handler(
|
|
311
|
-
this.change(
|
|
324
|
+
handler(e) {
|
|
325
|
+
this.change(e);
|
|
312
326
|
},
|
|
313
327
|
deep: !0
|
|
314
328
|
},
|
|
315
329
|
offset: {
|
|
316
|
-
handler(
|
|
317
|
-
this.offser(
|
|
330
|
+
handler(e) {
|
|
331
|
+
this.offser(e);
|
|
318
332
|
},
|
|
319
333
|
deep: !0
|
|
320
334
|
}
|
|
321
335
|
},
|
|
322
336
|
methods: {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
337
|
+
exec: O,
|
|
338
|
+
isEmpty: A,
|
|
339
|
+
isSimplyType: W,
|
|
340
|
+
change(e) {
|
|
341
|
+
W(e) || (this.closecss = b(e, "color=>--s-card-close-color,*"));
|
|
327
342
|
},
|
|
328
|
-
offser(
|
|
329
|
-
|
|
330
|
-
let
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
},
|
|
343
|
+
offser(e) {
|
|
344
|
+
e = M(e) ? e.split(/\s*(?:,|\s+)\s*/) : e;
|
|
345
|
+
let t = b(e, "0=>top,1|0=>right,2|0=>bottom,3|1|0=>left", !0);
|
|
346
|
+
g(t, (s, r, l) => {
|
|
347
|
+
l[s] = r + "px";
|
|
348
|
+
}, t), L(this, t, !0);
|
|
334
349
|
}
|
|
335
350
|
},
|
|
336
351
|
mounted() {
|
|
337
352
|
this.change(this.close), this.offser(this.offset);
|
|
338
353
|
}
|
|
339
|
-
},
|
|
340
|
-
function
|
|
341
|
-
return _(),
|
|
354
|
+
}, Z = { class: "card-title" }, ee = { class: "card-content" };
|
|
355
|
+
function te(e, t, s, r, l, i) {
|
|
356
|
+
return _(), x("div", {
|
|
342
357
|
class: "card",
|
|
343
|
-
style:
|
|
344
|
-
"--card-bgc": s.background,
|
|
345
|
-
"--card-bw": s.border,
|
|
346
|
-
"--card-height": s.height,
|
|
347
|
-
"--card-width": s.width,
|
|
348
|
-
"--top": i.top,
|
|
349
|
-
"--right": i.right,
|
|
350
|
-
"--bottom": i.bottom,
|
|
351
|
-
"--left": i.left
|
|
352
|
-
})
|
|
358
|
+
style: p(i.style)
|
|
353
359
|
}, [
|
|
354
|
-
d(
|
|
355
|
-
d(
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
class:
|
|
360
|
-
style:
|
|
361
|
-
onClick:
|
|
360
|
+
d(e.$slots, "default", {}, () => [
|
|
361
|
+
d(e.$slots, "title", {}, () => [
|
|
362
|
+
k("div", Z, [
|
|
363
|
+
P(U(s.show || s.title) + " ", 1),
|
|
364
|
+
k("div", {
|
|
365
|
+
class: E(["card-close", { hide: i.isSimplyType(s.close) ? !s.close : !1 }]),
|
|
366
|
+
style: p(l.closecss),
|
|
367
|
+
onClick: t[0] || (t[0] = (o) => e.$emit("close"))
|
|
362
368
|
}, null, 6)
|
|
363
369
|
])
|
|
364
370
|
], !0),
|
|
365
|
-
d(
|
|
366
|
-
|
|
367
|
-
d(
|
|
371
|
+
d(e.$slots, "content", {}, () => [
|
|
372
|
+
k("div", ee, [
|
|
373
|
+
d(e.$slots, "inner", {}, void 0, !0)
|
|
368
374
|
])
|
|
369
375
|
], !0)
|
|
370
376
|
], !0)
|
|
371
377
|
], 4);
|
|
372
378
|
}
|
|
373
|
-
const
|
|
374
|
-
install(
|
|
375
|
-
|
|
376
|
-
|
|
379
|
+
const se = /* @__PURE__ */ I(X, [["render", te], ["__scopeId", "data-v-ca61ca3d"]]), ie = [Q, se], he = {
|
|
380
|
+
install(e) {
|
|
381
|
+
ie.forEach((t) => {
|
|
382
|
+
e.component("S" + t.name, t), e.component(t.name + "S", t);
|
|
377
383
|
});
|
|
378
384
|
}
|
|
379
385
|
};
|
|
380
386
|
export {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
387
|
+
se as Card,
|
|
388
|
+
Q as Flyweight,
|
|
389
|
+
he as default
|
|
384
390
|
};
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-

|
|
1
|
+
[](https://npmjs.com/package/@soei/flyweight)
|
|
2
2
|
|
|
3
|
-
# 享元模式 [](https://npmjs.com/package/@soei/flyweight) [](LICENSE.md) [](https://www.npmjs.com/package/@soei/flyweight) 
|
|
3
|
+
# 享元模式 [](https://npmjs.com/package/@soei/flyweight) [](LICENSE.md) [](https://www.npmjs.com/package/@soei/flyweight) [](https://npmjs.com/package/@soei/flyweight)
|
|
4
4
|
|
|
5
|
-

|
|
5
|
+
[](https://npmjs.com/package/@soei/flyweight)
|
|
6
6
|
|
|
7
7
|
```html
|
|
8
8
|
<div style="height:100px;width:300px;">
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
</div>
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-

|
|
14
|
+
[](https://npmjs.com/package/@soei/flyweight)
|
|
15
15
|
|
|
16
16
|
## `安装`
|
|
17
17
|
|
package/package.json
CHANGED
package/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.flyweight[data-v-
|
|
1
|
+
.flyweight[data-v-4f09502c]{height:100%;width:100%;overflow:auto;position:relative}.flyweight .flyweight-all[data-v-4f09502c]{height:var(--flyweight-height)}.flyweight .flyweight-all[data-v-4f09502c]>*{width:calc(var(--width));height:var(--height);position:absolute}.card[data-v-ca61ca3d]{position:relative;background-color:var(--BG, var(--card-background-color, #fff));padding:10px;border-radius:10px;box-sizing:border-box;border-style:solid;border-color:var(--card-border-color, #555);justify-content:flex-start;margin:var(--T, 0) var(--R, 0) var(--BM, 0) var(--L, 0);height:calc(var(--H, 100%) - var(--T, 0) - var(--BM, 0));width:calc(var(--W, 100%) - var(--L, 0) - var(--R, 0));overflow:auto}.card[simply][data-v-ca61ca3d],.card [simply][data-v-ca61ca3d]{background-color:inherit;border:0!important}.card[flex][data-v-ca61ca3d],.card [flex][data-v-ca61ca3d]{display:flex}.card[column][data-v-ca61ca3d],.card [column][data-v-ca61ca3d]{flex-direction:column}.card[row][data-v-ca61ca3d],.card [row][data-v-ca61ca3d]{flex-direction:row}.card[center][data-v-ca61ca3d],.card [center][data-v-ca61ca3d]{justify-content:center}.card[vcenter][data-v-ca61ca3d],.card [vcenter][data-v-ca61ca3d]{align-items:center}.card .card-title[data-v-ca61ca3d]{max-height:40px}.card .card-close[data-v-ca61ca3d]{position:absolute;width:20px;height:20px;right:10px;top:10px;border-radius:10px;z-index:1;--s-transform: 45deg;--s-hover-transform: 35deg;--s-close-width: 11px;--s-close-height: 2px;cursor:pointer;background-color:var(--s-card-close-background-color, transparent);transition:all .3s ease}.card .card-close.hide[data-v-ca61ca3d]{display:none}.card .card-close[data-v-ca61ca3d]:before,.card .card-close[data-v-ca61ca3d]:after{content:"";width:var(--s-close-width, 11px);height:var(--s-close-height, 2px);background-color:var(--s-card-close-color, #555);transform-origin:center;position:inherit;border-radius:10px;top:calc(50% - var(--s-close-height, 2px) / 2);left:calc(50% - var(--s-close-width, 11px) / 2)}.card .card-close[data-v-ca61ca3d]:before{transform:rotate(var(--s-transform, 45deg))}.card .card-close[data-v-ca61ca3d]:after{transform:rotate(calc(0deg - var(--s-transform, 45deg)))}.card .card-close[data-v-ca61ca3d]:hover:before{transform:rotate(var(--s-hover-transform, 45deg))}.card .card-close[data-v-ca61ca3d]:hover:after{transform:rotate(calc(0deg - var(--s-hover-transform, 45deg)))}.card .card-content[data-v-ca61ca3d]{overflow:auto}
|