@soei/flyweight 0.2.2 → 0.2.5

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 CHANGED
@@ -1 +1 @@
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;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("@soei/util"),i=require("vue");let F=/(\d+|[+\-\*/]|%)/g,E={"+":(e,t)=>e+t,"-":(e,t)=>e-t,"*":(e,t)=>e*t,"/":(e,t)=>e/t,"%":(e,t,s)=>parseFloat(e)/100*s},x=(e,t)=>{let s;if(s=c.runer("match",e,F)){let n=s.length,r,l=0,h,o=[];for(;n--;)l=s.shift(),l in E?(r&&o.push(r),l==="%"&&(o.length=2),h=l):+l&&o.push(+l),o.length==2&&(o.push(t),r=E[h].apply(null,o),o.length=0);+r||(r=+o.pop()),e=r>>0}return e},N=e=>(e+"").replace(/\w+\((.*)\)/g,"$1").replace(/(?=\s+|^)(\d+(\.\d+)*)(?!(?:\.)*\d|%|\w)/g,"$1px");const H=(e,t)=>{const s=e.__vccOpts||e;for(const[n,r]of t)s[n]=r;return s};let C=e=>e==null||e==null,W=(...e)=>{console.info("::::FLYWEIGHT",...e)};const I={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,Size:null,column:1,row:1,spacex:10,count:0,task:[],realW:0,realH:0}},watch:{flys(e){this.count=e.length,this.rebuild();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.rebuild(),this.$emit("resize")}).observe(this.flyweight)}catch(e){W(e)}this.scrollx=c.runer("hasAttribute",this.flyweight,"scroll-x"),this.BoxRule=this.scrollx?"clientHeight=>width,clientWidth=>height":"clientHeight=>height,clientWidth=>width",this.direction=this.scrollx?"scrollLeft":"scrollTop"},methods:{exec:N,trigger(e,t){this.lazyrun(()=>{c.isArray(e)||(e=[[e,t]]),c.each(e,(s,n)=>{this.$emit(n[0],C(n[1])?!0:n[1])})})},cheackflys(e){if(!this.flys.length)return e&&this.task.push(e),!0},setview(e){c.runer([this.cheackflys,t=>{t=t||{};let s=t.index||c.each(this.flys,(n,r,l,h)=>{if(r[l]==h)return n},t.picker,t.id);C(s)||this.setindex(s)}],this,e)},setindex(e){c.runer([this.cheackflys,({index:t})=>{this.selectIndex=t,this.$nextTick(()=>{let s=t/this.column>>0,n=this.spacex;(this.flyweight[this.direction]/n>>0)+this.row-s-1>0||(this.flyweight[this.direction]=s*n,this.scroll())})}],this,{index:e})},lazyrun(e,t){clearTimeout(this.time),this.time=setTimeout(()=>{c.runer(e)},t||this.lazy)},run(e){let t=[],s=c.picker(e.target,this.scrollx?"scrollLeft=>top":"scrollTop=>top");c.merge(s,{height:this.realH,width:this.realW,index:s.top/this.spacex>>0},this.space,"mix"),e.from||t.push(["onscroll",s]);let n=!1;c.each(this.flyweights,(r,l,h,o,f,p,u,d,a)=>{if(h=r/f>>0,d=h+o*(+(h<p%o)+(p/o>>0)),a=d*f+r%f,a>=this.count){n||(t.push(["onend"]),n=!0);return}l.index=d,l.i=a,l.data=this.flys[a];let g=[d*this.spacex+l.x,l.space];u&&g.reverse(),l.top=g[0],l.left=g[1]},null,this.row,this.column,s.index,this.scrollx),this.trigger(t),t=null},scroll(e){this.run(e||{target:this.flyweight,from:"space"})},rebuild(){let e=this.count||this.flys.length,t=this.flyweights;if(!e)return t.length=e;this.count=e;let s=this.scrollx,n=this.flyweight,r=c.picker(n,this.BoxRule);this.$nextTick(()=>{let l=/true/.test(this.auto),[h,o]=this.offset,f=r.width,p=r.height,u=(x(this.width,f)||f)+h,d=x(this.height,p)+o,a=f/(s?d:u)>>0||1,g=p/(s?u:d)>>0,_=this.padding;this.row=g+2,this.column=a;let m,S=0,k,b,z;s?(m=0,u=x(this.width,p)||p,b=u,k=u-h,z=y=>y*d+(y+1)*o,d=x(this.height,f)||f,d+=o):(l?(u=(f-h*(a+2*_-1))/a,m=!_*h,S=_*h):(m=0,S=(f%u+h*a)/(a+1)>>0,u-=h),z=y=>y*(u+m)+(y+1)*S,k=u,b=d),this.realH=d-o,this.realW=k,this.spacex=b,this.Size=Math.ceil(e/a)*this.spacex;let T=Math.min(e,a*this.row),w=T-1,v,$=0;for(;T-- >0;)v=w-T,$=v%a,this.$set(t,v,{x:h,y:o,width:u,height:d-o,space:z($),data:{}});t.length=w+1;let B=[];p/this.spacex>w/a&&B.push(["onend"]),this.flyweight[this.direction]=0,this.$nextTick(()=>{this.setindex(this.selectIndex||0)}),this.scroll(),B.push(["update:space",{row:(w/a>>0)+1,column:a,showrow:this.row,showcolumn:this.column}]),this.trigger(B)})}}},R={class:"flyweight-all"};function V(e,t,s,n,r,l){return i.openBlock(),i.createElementBlock("div",{ref:"flyweight",class:i.normalizeClass(["flyweight",{"flyweight-active":r.actice}]),style:i.normalizeStyle({"--width":l.exec(r.realW),"--height":l.exec(r.realH),"--flyweight-content":l.exec(r.Size)}),onScroll:t[0]||(t[0]=(...h)=>l.scroll&&l.scroll(...h))},[i.createElementVNode("div",R,[(i.openBlock(!0),i.createElementBlock(i.Fragment,null,i.renderList(r.flyweights,(h,o)=>(i.openBlock(),i.createElementBlock("div",{key:o,style:i.normalizeStyle({top:h.top+"px",left:h.left+"px"})},[i.renderSlot(e.$slots,"default",i.mergeProps({ref_for:!0},h),void 0,!0)],4))),128))]),r.flyweights.length?i.renderSlot(e.$slots,"end",{key:0},void 0,!0):i.createCommentVNode("",!0)],38)}const L=H(I,[["render",V],["__scopeId","data-v-00424b62"]]);const j={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:{},style:{},default:{top:"0px",right:"0px",bottom:"0px",left:"0px",height:"100%",width:"100%",background:"",border:"1px"}}},computed:{style(){let e={};return this.margin(this.offset),c.each(["BackGround","BordeR","Height","Width","Top","Right","Bottom","Left"],(t,s)=>{this.css(e,s)}),e}},watch:{close:{handler(e){this.change(e)},deep:!0},offset:{handler(e){this.margin(e)},deep:!0}},methods:{exec:N,isEmpty:c.isEmpty,isSimplyType:c.isSimplyType,tolower(e,t){return t&&(e=e.replace(/[a-z]/g,"")),e.toLowerCase()},css(e,t){let s=this.tolower(t),n=this[s]||this.default[s];!n||this.default[s]==n||(e["--"+this.tolower(t,!0)]=N(n))},change(e){c.isSimplyType(e)||(this.closecss=c.picker(e,"color=>--s-card-close-color,*"))},margin(e){c.merge(this,c.picker(c.isString(e)?e.split(/\s*(?:,|\s+)\s*/):e,"0=>top,1|0=>right,2|0=>bottom,3|1|0=>left",!0),!0)}},mounted(){this.change(this.close)}},A={class:"card-title"},M={class:"card-content"};function q(e,t,s,n,r,l){return i.openBlock(),i.createElementBlock("div",{class:"card",style:i.normalizeStyle(l.style)},[i.renderSlot(e.$slots,"default",{},()=>[i.renderSlot(e.$slots,"title",{},()=>[i.createElementVNode("div",A,[i.createTextVNode(i.toDisplayString(s.show||s.title)+" ",1),i.createElementVNode("div",{class:i.normalizeClass(["card-close",{hide:l.isSimplyType(s.close)?!s.close:!1}]),style:i.normalizeStyle(r.closecss),onClick:t[0]||(t[0]=h=>e.$emit("close"))},null,6)])],!0),i.renderSlot(e.$slots,"content",{},()=>[i.createElementVNode("div",M,[i.renderSlot(e.$slots,"inner",{},void 0,!0)])],!0)],!0)],4)}const O=H(j,[["render",q],["__scopeId","data-v-def66c95"]]),G=[L,O],P={install(e){G.forEach(t=>{e.component("S"+t.name,t),e.component(t.name+"S",t)})}};exports.Card=O;exports.Flyweight=L;exports.default=P;
package/Flyweight.js CHANGED
@@ -1,31 +1,31 @@
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 = {
1
+ import { runer as y, isArray as G, each as _, picker as z, merge as A, isEmpty as M, isSimplyType as I, isString as D } from "@soei/util";
2
+ import { openBlock as b, createElementBlock as k, normalizeClass as j, normalizeStyle as T, createElementVNode as S, Fragment as P, renderList as U, renderSlot as f, mergeProps as X, createCommentVNode as Y, createTextVNode as q, toDisplayString as J } from "vue";
3
+ let K = /(\d+|[+\-\*/]|%)/g, R = {
4
4
  "+": (e, t) => e + t,
5
5
  "-": (e, t) => e - t,
6
6
  "*": (e, t) => e * t,
7
7
  "/": (e, t) => e / t,
8
8
  "%": (e, t, s) => parseFloat(e) / 100 * s
9
- }, C = (e, t) => {
9
+ }, x = (e, t) => {
10
10
  let s;
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;
11
+ if (s = y("match", e, K)) {
12
+ let h = s.length, l, i = 0, r, n = [];
13
+ for (; h--; )
14
+ i = s.shift(), i in R ? (l && n.push(l), i === "%" && (n.length = 2), r = i) : +i && n.push(+i), n.length == 2 && (n.push(t), l = R[r].apply(null, n), n.length = 0);
15
+ +l || (l = +n.pop()), e = l >> 0;
16
16
  }
17
17
  return e;
18
- }, O = (e) => e.replace(/\w+\((.*)\)/g, "$1").replace(/(?=\D)0(?!\w)/, "0px");
19
- const I = (e, t) => {
18
+ }, W = (e) => (e + "").replace(/\w+\((.*)\)/g, "$1").replace(/(?=\s+|^)(\d+(\.\d+)*)(?!(?:\.)*\d|%|\w)/g, "$1px");
19
+ const V = (e, t) => {
20
20
  const s = e.__vccOpts || e;
21
- for (const [r, l] of t)
22
- s[r] = l;
21
+ for (const [h, l] of t)
22
+ s[h] = l;
23
23
  return s;
24
24
  };
25
- let F = (e) => e == null || e == null, q = (...e) => {
25
+ let E = (e) => e == null || e == null, Q = (...e) => {
26
26
  console.info("::::FLYWEIGHT", ...e);
27
27
  };
28
- const J = {
28
+ const Z = {
29
29
  name: "Flyweight",
30
30
  props: {
31
31
  flys: {
@@ -86,10 +86,10 @@ const J = {
86
86
  return {
87
87
  flyweights: [],
88
88
  actice: !1,
89
- Height: null,
89
+ Size: null,
90
90
  column: 1,
91
91
  row: 1,
92
- fwheight: 10,
92
+ spacex: 10,
93
93
  count: 0,
94
94
  task: [],
95
95
  realW: 0,
@@ -98,7 +98,7 @@ const J = {
98
98
  },
99
99
  watch: {
100
100
  flys(e) {
101
- this.count = e.length, this.re();
101
+ this.count = e.length, this.rebuild();
102
102
  let t = this.task.shift();
103
103
  t && this.$nextTick(() => {
104
104
  this.setview(t);
@@ -127,17 +127,19 @@ const J = {
127
127
  }), this.setindex(this.index);
128
128
  try {
129
129
  new ResizeObserver(() => {
130
- this.re(), this.$emit("resize");
130
+ this.rebuild(), this.$emit("resize");
131
131
  }).observe(this.flyweight);
132
132
  } catch (e) {
133
- q(e);
133
+ Q(e);
134
134
  }
135
+ this.scrollx = y("hasAttribute", this.flyweight, "scroll-x"), this.BoxRule = this.scrollx ? "clientHeight=>width,clientWidth=>height" : "clientHeight=>height,clientWidth=>width", this.direction = this.scrollx ? "scrollLeft" : "scrollTop";
135
136
  },
136
137
  methods: {
138
+ exec: W,
137
139
  trigger(e, t) {
138
140
  this.lazyrun(() => {
139
- j(e) || (e = [[e, t]]), g(e, (s, r) => {
140
- this.$emit(r[0], F(r[1]) ? !0 : r[1]);
141
+ G(e) || (e = [[e, t]]), _(e, (s, h) => {
142
+ this.$emit(h[0], E(h[1]) ? !0 : h[1]);
141
143
  });
142
144
  });
143
145
  },
@@ -146,124 +148,133 @@ const J = {
146
148
  return e && this.task.push(e), !0;
147
149
  },
148
150
  setview(e) {
149
- m([this.cheackflys, (t) => {
151
+ y([this.cheackflys, (t) => {
150
152
  t = t || {};
151
- let s = t.index || g(this.flys, (r, l, i, o) => {
152
- if (l[i] == o)
153
- return r;
153
+ let s = t.index || _(this.flys, (h, l, i, r) => {
154
+ if (l[i] == r)
155
+ return h;
154
156
  }, t.picker, t.id);
155
- F(s) || this.setindex(s);
157
+ E(s) || this.setindex(s);
156
158
  }], this, e);
157
159
  },
158
160
  setindex(e) {
159
- m([this.cheackflys, ({ index: t }) => {
160
- this.$nextTick(() => {
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());
161
+ y([this.cheackflys, ({ index: t }) => {
162
+ this.selectIndex = t, this.$nextTick(() => {
163
+ let s = t / this.column >> 0, h = this.spacex;
164
+ (this.flyweight[this.direction] / h >> 0) + this.row - s - 1 > 0 || (this.flyweight[this.direction] = s * h, this.scroll());
163
165
  });
164
166
  }], this, { index: e });
165
167
  },
166
168
  lazyrun(e, t) {
167
169
  clearTimeout(this.time), this.time = setTimeout(() => {
168
- m(e);
170
+ y(e);
169
171
  }, t || this.lazy);
170
172
  },
171
173
  run(e) {
172
- let t = [], s = b(e.target, "scrollTop=>top");
173
- L(s, {
174
+ let t = [], s = z(e.target, this.scrollx ? "scrollLeft=>top" : "scrollTop=>top");
175
+ A(s, {
174
176
  height: this.realH,
175
177
  width: this.realW,
176
178
  /* 显示区域第一行的索引 */
177
- index: s.top / this.fwheight >> 0
179
+ index: s.top / this.spacex >> 0
178
180
  // ...this
179
181
  }, this.space, "mix"), e.from || t.push(["onscroll", s]);
180
- let r = !1;
181
- g(
182
+ let h = !1;
183
+ _(
182
184
  this.flyweights,
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);
185
+ (l, i, r, n, u, d, c, a, o) => {
186
+ if (r = l / u >> 0, a = r + n * /* 偏移量, 如果超出顶部 + 1轮,排列到列队后, 否则保持在当前*/
187
+ (+(r < d % n) + (d / n >> 0)), o = a * u + l % u, o >= this.count) {
188
+ h || (t.push(["onend"]), h = !0);
187
189
  return;
188
190
  }
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;
191
+ i.index = a, i.i = o, i.data = this.flys[o];
192
+ let p = [
193
+ /* top */
194
+ a * this.spacex + i.x,
195
+ /* left */
196
+ i.space
197
+ ];
198
+ c && p.reverse(), i.top = p[0], i.left = p[1];
190
199
  },
191
200
  null,
192
201
  this.row,
193
202
  this.column,
194
203
  /* 显示区域第一行的索引 */
195
- s.index
204
+ s.index,
205
+ this.scrollx
196
206
  ), this.trigger(t), t = null;
197
207
  },
198
208
  scroll(e) {
199
209
  this.run(e || { target: this.flyweight, from: "space" });
200
210
  },
201
- re() {
211
+ rebuild() {
202
212
  let e = this.count || this.flys.length, t = this.flyweights;
203
213
  if (!e)
204
214
  return t.length = e;
205
215
  this.count = e;
206
- let s = this.flyweight, r = b(s, "clientHeight=>height,clientWidth=>width");
216
+ let s = this.scrollx, h = this.flyweight, l = z(h, this.BoxRule);
207
217
  this.$nextTick(() => {
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
218
+ let i = /true/.test(this.auto), [r, n] = this.offset, u = l.width, d = l.height, c = (x(this.width, u) || u) + r, a = x(this.height, d) + n, o = u / (s ? a : c) >> 0 || 1, p = d / (s ? c : a) >> 0, v = this.padding;
219
+ this.row = p + 2, this.column = o;
220
+ let w, $ = 0, N, B, H;
221
+ s ? (w = 0, c = x(this.width, d) || d, B = c, N = c - r, H = (g) => (
222
+ /* 计算左偏移量 */
223
+ g * a + (g + 1) * n
224
+ ), a = x(this.height, u) || u, a += n) : (i ? (c = (u - r * (o + 2 * v - 1)) / o, w = !v * r, $ = v * r) : (w = 0, $ = (u % c + r * o) / (o + 1) >> 0, c -= r), H = (g) => g * (c + w) + (g + 1) * $, N = c, B = a), this.realH = a - n, this.realW = N, this.spacex = B, this.Size = Math.ceil(e / o) * this.spacex;
225
+ let L = Math.min(e, o * this.row), m = L - 1, C, F = 0;
226
+ for (; L-- > 0; )
227
+ C = m - L, F = C % o, this.$set(t, C, {
228
+ x: r,
229
+ y: n,
230
+ width: c,
231
+ height: a - n,
232
+ space: H(F),
233
+ data: {}
221
234
  });
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,
235
+ t.length = m + 1;
236
+ let O = [];
237
+ d / this.spacex > m / o && O.push(["onend"]), this.flyweight[this.direction] = 0, this.$nextTick(() => {
238
+ this.setindex(this.selectIndex || 0);
239
+ }), this.scroll(), O.push(["update:space", {
240
+ row: (m / o >> 0) + 1,
241
+ column: o,
227
242
  showrow: this.row,
228
243
  showcolumn: this.column
229
- }]), this.trigger(H);
244
+ }]), this.trigger(O);
230
245
  });
231
246
  }
232
247
  }
233
- };
234
- function K(e, t, s, r, l, i) {
235
- return _(), x("div", {
248
+ }, ee = { class: "flyweight-all" };
249
+ function te(e, t, s, h, l, i) {
250
+ return b(), k("div", {
236
251
  ref: "flyweight",
237
- class: E(["flyweight", {
252
+ class: j(["flyweight", {
238
253
  "flyweight-active": l.actice
239
254
  }]),
240
- style: p({
241
- "--width": l.realW + "px",
242
- "--height": l.realH + "px"
255
+ style: T({
256
+ "--width": i.exec(l.realW),
257
+ "--height": i.exec(l.realH),
258
+ "--flyweight-content": i.exec(l.Size)
243
259
  }),
244
- onScroll: t[0] || (t[0] = (...o) => i.scroll && i.scroll(...o))
260
+ onScroll: t[0] || (t[0] = (...r) => i.scroll && i.scroll(...r))
245
261
  }, [
246
- k("div", {
247
- class: "flyweight-all",
248
- style: p({
249
- "--flyweight-height": l.Height + "px"
250
- })
251
- }, [
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"
262
+ S("div", ee, [
263
+ (b(!0), k(P, null, U(l.flyweights, (r, n) => (b(), k("div", {
264
+ key: n,
265
+ style: T({
266
+ top: r.top + "px",
267
+ left: r.left + "px"
257
268
  })
258
269
  }, [
259
- d(e.$slots, "default", D({ ref_for: !0 }, o), void 0, !0)
270
+ f(e.$slots, "default", X({ ref_for: !0 }, r), void 0, !0)
260
271
  ], 4))), 128))
261
- ], 4),
262
- l.flyweights.length ? d(e.$slots, "end", { key: 0 }, void 0, !0) : G("", !0)
272
+ ]),
273
+ l.flyweights.length ? f(e.$slots, "end", { key: 0 }, void 0, !0) : Y("", !0)
263
274
  ], 38);
264
275
  }
265
- const Q = /* @__PURE__ */ I(J, [["render", K], ["__scopeId", "data-v-4f09502c"]]);
266
- const X = {
276
+ const se = /* @__PURE__ */ V(Z, [["render", te], ["__scopeId", "data-v-00424b62"]]);
277
+ const ie = {
267
278
  name: "Card",
268
279
  // inheritAttrs: false,
269
280
  props: {
@@ -303,19 +314,24 @@ const X = {
303
314
  data() {
304
315
  return {
305
316
  closecss: {},
306
- $$attrs: {},
307
- top: "0",
308
- right: "0",
309
- bottom: "0",
310
- left: "0",
311
- style: {}
317
+ style: {},
318
+ default: {
319
+ top: "0px",
320
+ right: "0px",
321
+ bottom: "0px",
322
+ left: "0px",
323
+ height: "100%",
324
+ width: "100%",
325
+ background: "",
326
+ border: "1px"
327
+ }
312
328
  };
313
329
  },
314
330
  computed: {
315
331
  style() {
316
332
  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()]);
333
+ return this.margin(this.offset), _(["BackGround", "BordeR", "Height", "Width", "Top", "Right", "Bottom", "Left"], (t, s) => {
334
+ this.css(e, s);
319
335
  }), e;
320
336
  }
321
337
  },
@@ -328,63 +344,70 @@ const X = {
328
344
  },
329
345
  offset: {
330
346
  handler(e) {
331
- this.offser(e);
347
+ this.margin(e);
332
348
  },
333
349
  deep: !0
334
350
  }
335
351
  },
336
352
  methods: {
337
- exec: O,
338
- isEmpty: A,
339
- isSimplyType: W,
353
+ exec: W,
354
+ isEmpty: M,
355
+ isSimplyType: I,
356
+ tolower(e, t) {
357
+ return t && (e = e.replace(/[a-z]/g, "")), e.toLowerCase();
358
+ },
359
+ css(e, t) {
360
+ let s = this.tolower(t), h = this[s] || this.default[s];
361
+ !h || this.default[s] == h || (e["--" + this.tolower(t, !0)] = W(h));
362
+ },
340
363
  change(e) {
341
- W(e) || (this.closecss = b(e, "color=>--s-card-close-color,*"));
342
- },
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);
364
+ I(e) || (this.closecss = z(e, "color=>--s-card-close-color,*"));
365
+ },
366
+ margin(e) {
367
+ A(this, z(
368
+ D(e) ? e.split(/\s*(?:,|\s+)\s*/) : e,
369
+ "0=>top,1|0=>right,2|0=>bottom,3|1|0=>left",
370
+ !0
371
+ ), !0);
349
372
  }
350
373
  },
351
374
  mounted() {
352
- this.change(this.close), this.offser(this.offset);
375
+ this.change(this.close);
353
376
  }
354
- }, Z = { class: "card-title" }, ee = { class: "card-content" };
355
- function te(e, t, s, r, l, i) {
356
- return _(), x("div", {
377
+ }, le = { class: "card-title" }, re = { class: "card-content" };
378
+ function he(e, t, s, h, l, i) {
379
+ return b(), k("div", {
357
380
  class: "card",
358
- style: p(i.style)
381
+ style: T(i.style)
359
382
  }, [
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"))
383
+ f(e.$slots, "default", {}, () => [
384
+ f(e.$slots, "title", {}, () => [
385
+ S("div", le, [
386
+ q(J(s.show || s.title) + " ", 1),
387
+ S("div", {
388
+ class: j(["card-close", { hide: i.isSimplyType(s.close) ? !s.close : !1 }]),
389
+ style: T(l.closecss),
390
+ onClick: t[0] || (t[0] = (r) => e.$emit("close"))
368
391
  }, null, 6)
369
392
  ])
370
393
  ], !0),
371
- d(e.$slots, "content", {}, () => [
372
- k("div", ee, [
373
- d(e.$slots, "inner", {}, void 0, !0)
394
+ f(e.$slots, "content", {}, () => [
395
+ S("div", re, [
396
+ f(e.$slots, "inner", {}, void 0, !0)
374
397
  ])
375
398
  ], !0)
376
399
  ], !0)
377
400
  ], 4);
378
401
  }
379
- const se = /* @__PURE__ */ I(X, [["render", te], ["__scopeId", "data-v-ca61ca3d"]]), ie = [Q, se], he = {
402
+ const ne = /* @__PURE__ */ V(ie, [["render", he], ["__scopeId", "data-v-def66c95"]]), oe = [se, ne], ue = {
380
403
  install(e) {
381
- ie.forEach((t) => {
404
+ oe.forEach((t) => {
382
405
  e.component("S" + t.name, t), e.component(t.name + "S", t);
383
406
  });
384
407
  }
385
408
  };
386
409
  export {
387
- se as Card,
388
- Q as Flyweight,
389
- he as default
410
+ ne as Card,
411
+ se as Flyweight,
412
+ ue as default
390
413
  };
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # 享元模式 [![Latest Version on NPM](https://img.shields.io/npm/v/@soei/flyweight?label=npm&style=flat-square)](https://npmjs.com/package/@soei/flyweight) [![Software License](https://img.shields.io/badge/license-ISC-brightgreen?label=&style=flat-square)](LICENSE.md) [![npm](https://img.shields.io/npm/dw/@soei/flyweight?label=Downloads&style=flat-square)](https://www.npmjs.com/package/@soei/flyweight) [![npm bundle size](https://img.shields.io/bundlephobia/min/%40soei%2Futil?label=Size&color=&style=flat-square)](https://npmjs.com/package/@soei/flyweight)
4
4
 
5
- [![安装](https://img.shields.io/badge/-@soei-ae8aff?style=flat-square)![NPM Downloads by package author](https://img.shields.io/npm-stat/dw/soeiz?style=flat-square)](https://npmjs.com/package/@soei/flyweight)
5
+ [![安装](https://img.shields.io/badge/-@soei-ae8aff?style=flat-square)![NPM Downloads by package author](https://img.shields.io/npm-stat/dw/soeiz?style=flat-square)](https://npmjs.com/package/@soei/flyweight)
6
6
 
7
7
  ```html
8
8
  <div style="height:100px;width:300px;">
@@ -20,6 +20,98 @@ npm i @soei/flyweight
20
20
 
21
21
  ```
22
22
 
23
+ ## `使用 <s-flyweight ...> `
24
+
25
+ ```html
26
+ <!-- scroll-x 横向滚动, 无[scroll-x]属性这是上下滚动 -->
27
+ <s-flyweight scroll-x></s-flyweight>
28
+
29
+ <!-- hover-scroll 鼠标移入显示滚动条样式 -->
30
+ <s-flyweight hover-scroll class="your-class"></s-flyweight>
31
+ <s-card hover-scroll class="your-class"></s-card>
32
+ <style lang="scss">
33
+ .your-class {
34
+ /* 设置滚动条颜色 */
35
+ --scrollbar-color: red;
36
+ /* 设置滚动条宽度 */
37
+ --scrollbar-width: 10px;
38
+ }
39
+ </style>
40
+
41
+ <!-- 设置高度 -->
42
+ <s-flyweight height="100% - 10px"></s-flyweight>
43
+
44
+ <!-- 设置宽度 -->
45
+ <s-flyweight width="100% - 10px"></s-flyweight>
46
+ <s-flyweight :width="`100% - 10px`"></s-flyweight>
47
+ ```
48
+
49
+ ## `使用 <s-card ...> `
50
+
51
+ ```html
52
+ <!-- auto-scroll 默认显示滚动条样式 -->
53
+ <s-card auto-scroll class="your-class"></s-card>
54
+ <!-- hover-scroll 鼠标移入显示滚动条样式 -->
55
+ <s-card hover-scroll class="your-class"></s-card>
56
+ <style lang="scss">
57
+ .your-class {
58
+ /* 设置滚动条颜色 */
59
+ --scrollbar-color: red;
60
+ /* 设置滚动条宽度 */
61
+ --scrollbar-width: 10px;
62
+ }
63
+ </style>
64
+
65
+ <!-- 设置高度 -->
66
+ <s-card height="100% - 10px"></s-card>
67
+
68
+ <!-- 设置边距 -->
69
+ <s-card offset="10px"></s-card>
70
+ <s-card :offset="[10]"></s-card>
71
+
72
+ <!-- 带删除的卡片 -->
73
+ <s-card :close="true" #content @close="close"></s-card>
74
+ <!-- 设置删除按钮颜色 -->
75
+ <s-card
76
+ :close="{
77
+ color: 'red'
78
+ }"
79
+ #content
80
+ @close="close"
81
+ ></s-card>
82
+
83
+ <s-card :close="true" @close="close">
84
+ <template #content>呈现内容</template>
85
+ </s-card>
86
+ <script setup>
87
+ let close = () => {
88
+ console.log("close");
89
+ };
90
+ </script>
91
+
92
+ <!-- 设置标题 -->
93
+ <s-card
94
+ title="标题"
95
+ class="flyweight"
96
+
97
+ // ** 布局 **
98
+ flex row center column
99
+
100
+ // ** 边距 **
101
+ offset="20, 0, 10, 0"
102
+
103
+ // ** 是否显示关闭按钮 **
104
+ :close="true"
105
+ @close="close"
106
+
107
+ // ** 插槽 **
108
+ [#content, #inner, #default]
109
+ >
110
+ </s-card>
111
+ ```
112
+
113
+ ````
114
+
23
115
  `Vue3` 引入方式
24
116
 
25
117
  ```html
@@ -30,7 +122,7 @@ npm i @soei/flyweight
30
122
  <style>
31
123
  @import "@soei/flyweight/dist/style.css";
32
124
  </style>
33
- ```
125
+ ````
34
126
 
35
127
  ```javascript
36
128
  // main.js
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@soei/flyweight",
3
3
  "private": false,
4
4
  "description": "Vue组件, 列表de享元模式~减少DOM节点 flyweight, Card组件",
5
- "version": "0.2.2",
5
+ "version": "0.2.5",
6
6
  "type": "module",
7
7
  "main": "Flyweight.cjs",
8
8
  "module": "Flyweight.js",
@@ -24,7 +24,9 @@
24
24
  "Flyweight",
25
25
  "享元模式",
26
26
  "List",
27
- "列表展示"
27
+ "列表展示",
28
+ "Card",
29
+ "卡片展示"
28
30
  ],
29
31
  "author": "soei | alwbg@163.com",
30
32
  "license": "ISC"
package/style.css CHANGED
@@ -1 +1 @@
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}
1
+ @charset "UTF-8";.flyweight[data-v-00424b62]{height:100%;width:100%;overflow:auto;position:relative}.flyweight[hover-scroll][data-v-00424b62]::-webkit-scrollbar-track,.flyweight[auto-scroll][data-v-00424b62]::-webkit-scrollbar-track{border-radius:10px}.flyweight[hover-scroll][data-v-00424b62]::-webkit-scrollbar-thumb,.flyweight[auto-scroll][data-v-00424b62]::-webkit-scrollbar-thumb{border-radius:10px;background-color:transparent}.flyweight[hover-scroll][data-v-00424b62]::-webkit-scrollbar,.flyweight[auto-scroll][data-v-00424b62]::-webkit-scrollbar{border-radius:10px;width:var(--scrollbar-width, 5px);height:var(--scrollbar-width, 5px)}.flyweight[hover-scroll][data-v-00424b62]:hover::-webkit-scrollbar-thumb,.flyweight[auto-scroll][data-v-00424b62]::-webkit-scrollbar-thumb{background-color:var(--scrollbar-color, #101010)}.flyweight[scroll-x] .flyweight-all[data-v-00424b62]{width:var(--flyweight-content);height:auto;min-height:100%}.flyweight[scroll-x] .flyweight-all[data-v-00424b62]+*{left:var(--flyweight-content);position:absolute;top:0;height:100%}.flyweight .flyweight-all[data-v-00424b62]{height:var(--flyweight-content)}.flyweight .flyweight-all[data-v-00424b62]>*{width:calc(var(--width));height:var(--height);position:absolute}.card[data-v-def66c95]{--t: 0px;--r: 0px;--b: 0px;--l: 0px;--h: 100%;--w: 100%;--br: 1px;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);border-width:var(--br);justify-content:flex-start;margin:var(--t) var(--r) var(--b) var(--l);height:calc(var(--h) - var(--t) - var(--b));width:calc(var(--w) - var(--l) - var(--r));overflow:auto}.card[hover-scroll][data-v-def66c95]::-webkit-scrollbar-track,.card[auto-scroll][data-v-def66c95]::-webkit-scrollbar-track{border-radius:10px}.card[hover-scroll][data-v-def66c95]::-webkit-scrollbar-thumb,.card[auto-scroll][data-v-def66c95]::-webkit-scrollbar-thumb{border-radius:10px;background-color:transparent}.card[hover-scroll][data-v-def66c95]::-webkit-scrollbar,.card[auto-scroll][data-v-def66c95]::-webkit-scrollbar{border-radius:10px;width:var(--scrollbar-width, 5px);height:var(--scrollbar-width, 5px)}.card[hover-scroll][data-v-def66c95]:hover::-webkit-scrollbar-thumb,.card[auto-scroll][data-v-def66c95]::-webkit-scrollbar-thumb{background-color:var(--scrollbar-color, #101010)}.card[simply][data-v-def66c95],.card [simply][data-v-def66c95]{background-color:inherit;border:0!important}.card[flex][data-v-def66c95],.card [flex][data-v-def66c95]{display:flex}.card[column][data-v-def66c95],.card [column][data-v-def66c95]{flex-direction:column}.card[row][data-v-def66c95],.card [row][data-v-def66c95]{flex-direction:row}.card[center][data-v-def66c95],.card [center][data-v-def66c95]{justify-content:center}.card[vcenter][data-v-def66c95],.card [vcenter][data-v-def66c95]{align-items:center}.card .card-title[data-v-def66c95]{max-height:40px}.card .card-close[data-v-def66c95]{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-def66c95]{display:none}.card .card-close[data-v-def66c95]:before,.card .card-close[data-v-def66c95]: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-def66c95]:before{transform:rotate(var(--s-transform, 45deg))}.card .card-close[data-v-def66c95]:after{transform:rotate(calc(0deg - var(--s-transform, 45deg)))}.card .card-close[data-v-def66c95]:hover:before{transform:rotate(var(--s-hover-transform, 45deg))}.card .card-close[data-v-def66c95]:hover:after{transform:rotate(calc(0deg - var(--s-hover-transform, 45deg)))}.card .card-content[data-v-def66c95]{overflow:auto;height:100%}