From 680cad82e938512fdd2820ee9de145849a642fab Mon Sep 17 00:00:00 2001 From: TANG <40519806@qq.com> Date: Sat, 11 Apr 2020 21:31:30 +0800 Subject: [PATCH] Update docs --- docs/css/{app.e6222fc2.css => app.ad98a2e0.css} | 2 +- docs/index.html | 2 +- docs/js/app.b95852df.js | 2 ++ docs/js/app.b95852df.js.map | 1 + docs/js/app.fd55a986.js | 2 -- docs/js/app.fd55a986.js.map | 1 - example/src/views/Index/Main.vue | 2 +- 7 files changed, 6 insertions(+), 6 deletions(-) rename docs/css/{app.e6222fc2.css => app.ad98a2e0.css} (95%) create mode 100644 docs/js/app.b95852df.js create mode 100644 docs/js/app.b95852df.js.map delete mode 100644 docs/js/app.fd55a986.js delete mode 100644 docs/js/app.fd55a986.js.map diff --git a/docs/css/app.e6222fc2.css b/docs/css/app.ad98a2e0.css similarity index 95% rename from docs/css/app.e6222fc2.css rename to docs/css/app.ad98a2e0.css index 5885627..667f77d 100644 --- a/docs/css/app.e6222fc2.css +++ b/docs/css/app.ad98a2e0.css @@ -1 +1 @@ -body{font-size:18px}#app{margin:0 auto;padding:0 2em;width:776px}@media (max-width:640px){#app{padding:3px;width:100%}}#nav{padding:1em 0}@media (max-width:640px){#nav{padding:0}}#nav a{margin-right:1.5em;margin-bottom:.5em;display:inline-block}@media (max-width:640px){#nav a{margin-bottom:0;margin-right:1em}}#nav .router-link-exact-active,#nav .router-link-exact-active:hover{color:inherit;cursor:default;border-bottom:1px solid;border-color:#606c76}.example-content{margin-top:1em;background-color:#fff}code{background-color:pink!important}.name[data-v-4ac967ef]{margin:1em 0}.head[data-v-4ac967ef]{margin-bottom:2em}.title[data-v-4ac967ef]{margin:1em 0}.introduction[data-v-0c507b69]{font-size:16px;padding:.5em 1em;border-radius:3px;background-color:#f8f8ff}@media (max-width:640px){.introduction[data-v-0c507b69]{display:none}}pre[data-v-99fd125a]{border:none;padding:1em;font-size:14px;border-radius:3px;font-family:Consolas,Monaco,Andale Mono,Lucida Console,monospace}.github-corner[data-v-821512e4]:hover,.octo-arm[data-v-821512e4]{-webkit-animation:octocat-wave-data-v-821512e4 .56s ease-in-out;animation:octocat-wave-data-v-821512e4 .56s ease-in-out}@-webkit-keyframes octocat-wave-data-v-821512e4{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@keyframes octocat-wave-data-v-821512e4{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm[data-v-821512e4]{-webkit-animation:none;animation:none}.github-corner .octo-arm[data-v-821512e4]{-webkit-animation:octocat-wave-data-v-821512e4 .56s ease-in-out;animation:octocat-wave-data-v-821512e4 .56s ease-in-out}}.tab[data-v-13711752]{width:100%;display:flex;margin-bottom:1em;position:relative}@media (max-width:640px){.tab[data-v-13711752]{display:none}}.tab .tab-item[data-v-13711752]{font-size:14px;font-weight:400;width:85px;margin-right:.5em;height:35px;display:flex;align-items:center;justify-content:center;position:relative;top:1px;cursor:pointer;opacity:.3;background-size:20px 20px;background-repeat:no-repeat;background-position:0}.tab .tab-item.active[data-v-13711752]{opacity:1}.tab .tab-item.view[data-v-13711752]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg class='icon' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cdefs%3E%3Cstyle/%3E%3C/defs%3E%3Cpath d='M512 251.853c192.768 0 358.707 113.1 436.378 276.275H1024c-82.022-202.394-280.218-345.293-512-345.293S82.022 325.735 0 528.128h75.674C153.344 364.954 319.284 251.853 512 251.853zm0 552.55c-192.717 0-358.656-113.05-436.326-276.275H0c82.022 202.445 280.166 345.344 512 345.344s430.029-142.9 512-345.344h-75.674C870.707 691.354 704.768 804.403 512 804.403zM327.834 528.128a184.115 184.115 0 10368.281.051 184.115 184.115 0 00-368.281-.051zm299.315 0a115.2 115.2 0 11-230.298 0 115.2 115.2 0 01230.298 0zm0 0'/%3E%3C/svg%3E")}.tab .tab-item.code[data-v-13711752]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg class='icon' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cdefs%3E%3Cstyle/%3E%3C/defs%3E%3Cpath d='M549.973 128a42.453 42.453 0 00-42.154 37.76l-75.904 683.136a42.325 42.325 0 1084.266 9.387l75.904-683.179A42.325 42.325 0 00550.016 128zM243.541 286.165a42.539 42.539 0 00-30.208 12.502L30.165 481.835a42.624 42.624 0 000 60.33l183.168 183.168a42.667 42.667 0 0060.331-60.33L120.661 512l153.003-153.003a42.624 42.624 0 00-30.165-72.832zm537.003 0a42.667 42.667 0 00-30.165 72.832L903.339 512 750.336 665.003a42.667 42.667 0 0060.33 60.33l183.169-183.168a42.624 42.624 0 000-60.33L810.667 298.667a42.539 42.539 0 00-30.166-12.502z'/%3E%3C/svg%3E")}.tab .complete-code-url[data-v-13711752]{position:absolute;right:0;top:50%;transform:translateY(-50%);font-size:12px} \ No newline at end of file +body{font-size:18px}#app{margin:0 auto;padding:0 2em;width:776px}@media (max-width:640px){#app{padding:3px;width:100%}}#nav{padding:1em 0}@media (max-width:640px){#nav{padding:0}}#nav a{margin-right:1.5em;margin-bottom:.5em;display:inline-block}@media (max-width:640px){#nav a{margin-bottom:0;margin-right:1em}}#nav .router-link-exact-active,#nav .router-link-exact-active:hover{color:inherit;cursor:default;border-bottom:1px solid;border-color:#606c76}.example-content{margin-top:1em;background-color:#fff}code{background-color:pink!important}.name[data-v-32c8ab71]{margin:1em 0}.head[data-v-32c8ab71]{margin-bottom:2em}.title[data-v-32c8ab71]{margin:1em 0}.introduction[data-v-0c507b69]{font-size:16px;padding:.5em 1em;border-radius:3px;background-color:#f8f8ff}@media (max-width:640px){.introduction[data-v-0c507b69]{display:none}}pre[data-v-99fd125a]{border:none;padding:1em;font-size:14px;border-radius:3px;font-family:Consolas,Monaco,Andale Mono,Lucida Console,monospace}.github-corner[data-v-821512e4]:hover,.octo-arm[data-v-821512e4]{-webkit-animation:octocat-wave-data-v-821512e4 .56s ease-in-out;animation:octocat-wave-data-v-821512e4 .56s ease-in-out}@-webkit-keyframes octocat-wave-data-v-821512e4{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@keyframes octocat-wave-data-v-821512e4{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm[data-v-821512e4]{-webkit-animation:none;animation:none}.github-corner .octo-arm[data-v-821512e4]{-webkit-animation:octocat-wave-data-v-821512e4 .56s ease-in-out;animation:octocat-wave-data-v-821512e4 .56s ease-in-out}}.tab[data-v-13711752]{width:100%;display:flex;margin-bottom:1em;position:relative}@media (max-width:640px){.tab[data-v-13711752]{display:none}}.tab .tab-item[data-v-13711752]{font-size:14px;font-weight:400;width:85px;margin-right:.5em;height:35px;display:flex;align-items:center;justify-content:center;position:relative;top:1px;cursor:pointer;opacity:.3;background-size:20px 20px;background-repeat:no-repeat;background-position:0}.tab .tab-item.active[data-v-13711752]{opacity:1}.tab .tab-item.view[data-v-13711752]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg class='icon' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cdefs%3E%3Cstyle/%3E%3C/defs%3E%3Cpath d='M512 251.853c192.768 0 358.707 113.1 436.378 276.275H1024c-82.022-202.394-280.218-345.293-512-345.293S82.022 325.735 0 528.128h75.674C153.344 364.954 319.284 251.853 512 251.853zm0 552.55c-192.717 0-358.656-113.05-436.326-276.275H0c82.022 202.445 280.166 345.344 512 345.344s430.029-142.9 512-345.344h-75.674C870.707 691.354 704.768 804.403 512 804.403zM327.834 528.128a184.115 184.115 0 10368.281.051 184.115 184.115 0 00-368.281-.051zm299.315 0a115.2 115.2 0 11-230.298 0 115.2 115.2 0 01230.298 0zm0 0'/%3E%3C/svg%3E")}.tab .tab-item.code[data-v-13711752]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg class='icon' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cdefs%3E%3Cstyle/%3E%3C/defs%3E%3Cpath d='M549.973 128a42.453 42.453 0 00-42.154 37.76l-75.904 683.136a42.325 42.325 0 1084.266 9.387l75.904-683.179A42.325 42.325 0 00550.016 128zM243.541 286.165a42.539 42.539 0 00-30.208 12.502L30.165 481.835a42.624 42.624 0 000 60.33l183.168 183.168a42.667 42.667 0 0060.331-60.33L120.661 512l153.003-153.003a42.624 42.624 0 00-30.165-72.832zm537.003 0a42.667 42.667 0 00-30.165 72.832L903.339 512 750.336 665.003a42.667 42.667 0 0060.33 60.33l183.169-183.168a42.624 42.624 0 000-60.33L810.667 298.667a42.539 42.539 0 00-30.166-12.502z'/%3E%3C/svg%3E")}.tab .complete-code-url[data-v-13711752]{position:absolute;right:0;top:50%;transform:translateY(-50%);font-size:12px} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 38109d0..0807b4e 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -vue-virtual-scroll-list
\ No newline at end of file +vue-virtual-scroll-list
\ No newline at end of file diff --git a/docs/js/app.b95852df.js b/docs/js/app.b95852df.js new file mode 100644 index 0000000..de97d89 --- /dev/null +++ b/docs/js/app.b95852df.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var n,a,o=t[0],l=t[1],c=t[2],u=0,h=[];uthis.range.start)){var t=Math.max(e-this.param.buffer,0);this.checkRange(t,this.getEndByStart(t))}}},{key:"handleBehind",value:function(){var e=this.getScrollOvers();ee&&(a=i-1)}return t>0?--t:0}},{key:"getIndexOffset",value:function(e){if(!e)return 0;for(var t=0,i=0,n=0;n<=e;n++)i=this.sizes.get(this.param.uniqueIds[n]),t+=i||this.getEstimateSize();return this.lastCalcIndex=Math.max(this.lastCalcIndex,e-1),this.lastCalcIndex=Math.min(this.lastCalcIndex,this.getLastIndex()),t}},{key:"isFixedType",value:function(){return this.calcType===x.FIXED}},{key:"getLastIndex",value:function(){return this.param.uniqueIds.length-1}},{key:"checkRange",value:function(e,t){var i=this.param.keeps,n=this.param.uniqueIds.length;n<=i?(e=0,t=this.getLastIndex()):t-e=o?this.$emit("tobottom",t,n):this.$emit("scroll",t,n)},getRenderSlots:function(e){for(var t=[],i=this.disabled?0:this.range.start,n=this.disabled?this.dataSources.length-1:this.range.end,a=i;a<=n;a++){var s=this.dataSources[a];s?t.push(e(w,{class:this.itemClass,props:{tag:this.itemTag,event:F.ITEM,horizontal:this.isHorizontal,uniqueKey:s[this.dataKey],source:s,component:this.dataComponent}})):console.warn("[".concat(N,"]: cannot get the index ").concat(a," from data-sources."))}return t}},render:function(e){var t=this.$slots,i=t.header,n=t.footer,a=this.isHorizontal?"0px ".concat(this.range.padBehind,"px 0px ").concat(this.range.padFront,"px"):"".concat(this.range.padFront,"px 0px ").concat(this.range.padBehind,"px");return e(this.rootTag,{ref:"root",on:{"&scroll":this.onScroll}},[i?e(R,{class:this.headerClass,props:{tag:this.headerTag,event:F.SLOT,uniqueKey:D.HEADER}},i):null,e(this.wrapTag,{class:this.wrapClass,attrs:{role:"group"},style:{padding:a}},this.getRenderSlots(e)),n?e(R,{class:this.footerClass,props:{tag:this.footerTag,event:F.SLOT,uniqueKey:D.FOOTER}},n):null])}}),M=$,P=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"introduction",domProps:{innerHTML:e._s(e.description)}})},j=[],B={name:"introduction",props:{description:{type:String}}},H=B,L=(i("de3a"),Object(r["a"])(H,P,j,!1,null,"0c507b69",null)),q=L.exports,V=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.code?i("pre",{class:e.type,domProps:{innerHTML:e._s(e.encode(e.code))}}):e._e()},A=[],K=(i("ac1f"),i("5319"),{name:"code-high-light",props:{type:{type:String,required:!0},code:{type:String,required:!0}},mounted:function(){"undefined"!==typeof window.hljs&&this.$el.textContent&&window.hljs.highlightBlock(this.$el)},methods:{encode:function(e){return"html"===this.type&&(e=e.replace(//g,">")),e=e.replace(/\s/,""),e}}}),U=K,W=(i("595a"),Object(r["a"])(U,V,A,!1,null,"99fd125a",null)),X=W.exports,Y=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.isMobile?e._e():i("a",{staticClass:"github-corner",attrs:{href:e.url,"aria-label":"View source on GitHub"}},[i("svg",{staticStyle:{fill:"#9b4dca",color:"#fff",position:"absolute",top:"0",border:"0",right:"0","z-index":"1000"},attrs:{width:e.size,height:e.size,viewBox:"0 0 250 250","aria-hidden":"true"}},[i("path",{attrs:{d:"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"}}),i("path",{staticClass:"octo-arm",staticStyle:{"transform-origin":"130px 106px"},attrs:{d:"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2",fill:"currentColor"}}),i("path",{staticClass:"octo-body",attrs:{d:"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z",fill:"currentColor"}})])])},J=[],Z=i("835c"),G=i("3f05"),Q={name:"github-corner",data:function(){return{url:"",size:80,isMobile:Z["a"]}},mounted:function(){this.url=Object(G["a"])()}},ee=Q,te=(i("3f57"),Object(r["a"])(ee,Y,J,!1,null,"821512e4",null)),ie=te.exports,ne=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"tab"},[i("div",{staticClass:"tab-item view",class:{active:e.isView},on:{click:e.eventClickView}},[e._v("VIEW")]),i("div",{staticClass:"tab-item code",class:{active:!e.isView},on:{click:e.eventClickCode}},[e._v("CODE")]),i("a",{directives:[{name:"show",rawName:"v-show",value:!e.isView,expression:"!isView"}],staticClass:"complete-code-url",attrs:{target:"_blank",href:e.completeCodeUrl}},[e._v("COMPLETE CODE")])])},ae=[],se=i("b95e"),re={name:"tab",data:function(){return{completeCodeUrl:"",active:se["a"]}},computed:{isView:function(){return this.active===se["b"].VIEW}},mounted:function(){this.completeCodeUrl=Object(G["a"])()},methods:{eventClickView:function(){this.active=se["b"].VIEW,this.emitEvent()},eventClickCode:function(){this.active=se["b"].CODE,this.emitEvent()},emitEvent:function(){this.$emit("tab-change",this.active)}}},oe=re,le=(i("2345"),Object(r["a"])(oe,ne,ae,!1,null,"13711752",null)),ce=le.exports;n["a"].component("virtual-list",M),n["a"].component(q.name,q),n["a"].component(X.name,X),n["a"].component(ie.name,ie),n["a"].component(ce.name,ce),n["a"].config.devtools=!1,n["a"].config.productionTip=!1,new n["a"]({router:z,render:function(e){return e(c)}}).$mount("#app")},"595a":function(e,t,i){"use strict";var n=i("a5ff"),a=i.n(n);a.a},"5ce3":function(e,t,i){},"67ef":function(e,t,i){},"7c55":function(e,t,i){"use strict";var n=i("2395"),a=i.n(n);a.a},"835c":function(e,t,i){"use strict";i.d(t,"a",(function(){return r}));i("ac1f"),i("466d");var n=navigator.userAgent,a=!!n.match(/Android/i),s=!!n.match(/iPhone|iPad|iPod/i),r=a||s},a5ff:function(e,t,i){},b95e:function(e,t,i){"use strict";i.d(t,"c",(function(){return n})),i.d(t,"b",(function(){return a})),i.d(t,"a",(function(){return s}));var n=1e4,a={VIEW:1,CODE:2},s=a.VIEW},caf6:function(e,t,i){},de3a:function(e,t,i){"use strict";var n=i("2f31"),a=i.n(n);a.a}}); +//# sourceMappingURL=app.b95852df.js.map \ No newline at end of file diff --git a/docs/js/app.b95852df.js.map b/docs/js/app.b95852df.js.map new file mode 100644 index 0000000..cbe6ece --- /dev/null +++ b/docs/js/app.b95852df.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/Tab.vue?8914","webpack:///./src/views/index/Main.vue?13fd","webpack:///./src/common/get-code-url.js","webpack:///./src/components/Corner.vue?baf6","webpack:///./src/App.vue?ced9","webpack:///./src/App.vue?bff9","webpack:///./src/views/index/Main.vue?abab","webpack:///src/views/index/Main.vue","webpack:///./src/views/index/Main.vue?9578","webpack:///./src/views/index/Main.vue","webpack:///./src/router/index.js","webpack:///../src/virtual.js","webpack:///../src/props.js","webpack:///../src/item.js","webpack:///../src/index.js","webpack:///./src/components/Introduction.vue?bbc7","webpack:///src/components/Introduction.vue","webpack:///./src/components/Introduction.vue?8836","webpack:///./src/components/Introduction.vue","webpack:///./src/components/CodeHighLight.vue?6132","webpack:///src/components/CodeHighLight.vue","webpack:///./src/components/CodeHighLight.vue?c9ca","webpack:///./src/components/CodeHighLight.vue","webpack:///./src/components/Corner.vue?a6db","webpack:///src/components/Corner.vue","webpack:///./src/components/Corner.vue?80c1","webpack:///./src/components/Corner.vue","webpack:///./src/components/Tab.vue?70cf","webpack:///src/components/Tab.vue","webpack:///./src/components/Tab.vue?1581","webpack:///./src/components/Tab.vue","webpack:///./src/main.js","webpack:///./src/components/CodeHighLight.vue?0b70","webpack:///./src/App.vue?a173","webpack:///./src/common/ua.js","webpack:///./src/common/const.js","webpack:///./src/components/Introduction.vue?f996"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","hashValue","location","hash","substr","_vm","this","_h","$createElement","_c","_self","attrs","_v","staticRenderFns","component","staticClass","_m","Vue","use","VueRouter","routes","path","Index","router","DIRECTION_TYPE","FRONT","BEHIND","CALC_TYPE","INIT","FIXED","DYNAMIC","LEADING_BUFFER","Virtual","param","updateHook","init","sizes","Map","firstRangeTotalSize","firstRangeAverageSize","lastCalcIndex","fixedSizeValue","calcType","offset","direction","range","disabled","checkRange","keeps","start","end","padFront","padBehind","getIndexOffset","id","size","set","Math","round","max","updateRange","getEndByStart","handleDataSourcesChange","handleFront","handleBehind","overs","getScrollOvers","buffer","slotHeaderSize","isFixedType","floor","low","middle","middleOffset","high","uniqueIds","givenIndex","indexSize","index","getEstimateSize","min","getLastIndex","total","getPadFront","getPadBehind","getRange","theoryEnd","truelyEnd","lastIndex","VirtualProps","Number","require","dataKey","String","dataSources","Array","dataComponent","rootTag","default","wrapTag","wrapClass","upperThreshold","lowerThreshold","itemTag","itemClass","headerTag","headerClass","footerTag","footerClass","Boolean","ItemProps","horizontal","source","uniqueKey","SlotProps","Wrapper","created","hasInitial","shapeKey","mounted","dispatchSizeChange","ResizeObserver","resizeObserver","observe","$el","beforeDestroy","disconnect","methods","getCurrentSize","$parent","$emit","Item","mixins","props","render","h","role","Slot","$slots","EVENT_TYPE","ITEM","SLOT","SLOT_TYPE","HEADER","FOOTER","NAME","VirtualList","watch","newValue","oldValue","virtual","updateParam","getUniqueIdFromDataSources","isHorizontal","directionKey","slotFooterSize","onRangeChanged","$on","onItemResized","header","footer","onSlotResized","destroy","setScrollOffset","getOffset","saveSize","hasInit","handleSlotSizeChange","onScroll","evt","root","$refs","handleScroll","emitEvent","map","dataSource","isLower","isUpper","offsetShape","scrollShape","getRenderSlots","slots","class","warn","padding","ref","on","style","domProps","_s","description","encode","_e","required","hljs","textContent","highlightBlock","replace","isMobile","url","staticStyle","active","isView","eventClickView","eventClickCode","directives","rawName","expression","completeCodeUrl","computed","Introduction","CodeHighLight","Corner","Tab","config","devtools","productionTip","App","$mount","ua","navigator","userAgent","Android","match","iOS","TOTAL_COUNT","TAB_TYPE","VIEW","CODE","DEFAULT_TAB"],"mappings":"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","file":"js/app.b95852df.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"dynamic-size~fixed-size~horizontal~infinite-loading~keep-state\":\"dynamic-size~fixed-size~horizontal~infinite-loading~keep-state\",\"dynamic-size\":\"dynamic-size\",\"fixed-size\":\"fixed-size\",\"horizontal\":\"horizontal\",\"infinite-loading\":\"infinite-loading\",\"keep-state\":\"keep-state\"}[chunkId]||chunkId) + \".\" + {\"dynamic-size~fixed-size~horizontal~infinite-loading~keep-state\":\"3b940789\",\"dynamic-size\":\"af2b38a2\",\"fixed-size\":\"856b63cd\",\"horizontal\":\"a2686d86\",\"infinite-loading\":\"7ebcd00d\",\"keep-state\":\"587170ed\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"dynamic-size\":1,\"fixed-size\":1,\"horizontal\":1,\"infinite-loading\":1,\"keep-state\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"dynamic-size~fixed-size~horizontal~infinite-loading~keep-state\":\"dynamic-size~fixed-size~horizontal~infinite-loading~keep-state\",\"dynamic-size\":\"dynamic-size\",\"fixed-size\":\"fixed-size\",\"horizontal\":\"horizontal\",\"infinite-loading\":\"infinite-loading\",\"keep-state\":\"keep-state\"}[chunkId]||chunkId) + \".\" + {\"dynamic-size~fixed-size~horizontal~infinite-loading~keep-state\":\"31d6cfe0\",\"dynamic-size\":\"05987921\",\"fixed-size\":\"50cd9045\",\"horizontal\":\"5a6cefd6\",\"infinite-loading\":\"e3344d42\",\"keep-state\":\"367cb4ef\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=style&index=0&id=13711752&lang=less&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=style&index=0&id=13711752&lang=less&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=style&index=0&id=32c8ab71&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=style&index=0&id=32c8ab71&lang=less&scoped=true&\"","export default () => {\n const hashValue = (location.hash || '').substr(2)\n if (hashValue) {\n return `https://github.com/tangbc/vue-virtual-scroll-list/tree/master/example/views/${hashValue}/Main.vue`\n } else {\n return `https://github.com/tangbc/vue-virtual-scroll-list`\n }\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Corner.vue?vue&type=style&index=0&id=821512e4&lang=less&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Corner.vue?vue&type=style&index=0&id=821512e4&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('div',{attrs:{\"id\":\"nav\"}},[_c('router-link',{attrs:{\"to\":\"/\"}},[_vm._v(\"home\")]),_c('router-link',{attrs:{\"to\":\"/fixed-size\"}},[_vm._v(\"fixed size\")]),_c('router-link',{attrs:{\"to\":\"/dynamic-size\"}},[_vm._v(\"dynamic size\")]),_c('router-link',{attrs:{\"to\":\"/horizontal\"}},[_vm._v(\"horizontal\")]),_c('router-link',{attrs:{\"to\":\"/infinite-loading\"}},[_vm._v(\"infinite loading\")]),_c('router-link',{attrs:{\"to\":\"/keep-state\"}},[_vm._v(\"keep state\")])],1),_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=55963a8a&\"\nvar script = {}\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"index\"},[_c('github-corner'),_c('h2',{staticClass:\"name\"},[_vm._v(\"vue-virtual-scroll-list\")]),_vm._m(0),_c('h3',{staticClass:\"title\"},[_vm._v(\"What's news in v2.0\")]),_vm._m(1),_c('h3',{staticClass:\"title\"},[_vm._v(\"Todos\")]),_vm._m(2)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"head\"},[_c('img',{attrs:{\"src\":\"https://nodei.co/npm/vue-virtual-scroll-list.png?downloads=true&downloadRank=true&stars=true\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"Support header slot, footer slot.\")]),_c('li',[_vm._v(\"Code structure is more reasonable and good maintainability.\")]),_c('li',[_vm._v(\"Abandoned v-for mode and variable mode, all condition unify into one mode.\")]),_c('li',[_vm._v(\"Don't have to care about each item size, in sometimes it's difficult to know that.\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"Improve calculate offset efficient.\")]),_c('li',[_vm._v(\"Support page scroll, table layout, unit test.\")]),_c('li',[_vm._v(\"......\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Main.vue?vue&type=template&id=32c8ab71&scoped=true&\"\nimport script from \"./Main.vue?vue&type=script&lang=js&\"\nexport * from \"./Main.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Main.vue?vue&type=style&index=0&id=32c8ab71&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"32c8ab71\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport Index from '../views/index/Main.vue'\n\nVue.use(VueRouter)\n\n const routes = [\n {\n path: '/',\n name: 'Index',\n component: Index\n },\n {\n path: '/fixed-size',\n name: 'fixed-size',\n component: () => import(/* webpackChunkName: \"fixed-size\" */ '../views/fixed-size/Main.vue')\n },\n {\n path: '/dynamic-size',\n name: 'dynamic-size',\n component: () => import(/* webpackChunkName: \"dynamic-size\" */ '../views/dynamic-size/Main.vue')\n },\n {\n path: '/horizontal',\n name: 'horizontal',\n component: () => import(/* webpackChunkName: \"horizontal\" */ '../views/horizontal/Main.vue')\n },\n {\n path: '/infinite-loading',\n name: 'infinite-loading',\n component: () => import(/* webpackChunkName: \"infinite-loading\" */ '../views/infinite-loading/Main.vue')\n },\n {\n path: '/keep-state',\n name: 'keep-state',\n component: () => import(/* webpackChunkName: \"keep-state\" */ '../views/keep-state/Main.vue')\n }\n]\n\nconst router = new VueRouter({\n routes\n})\n\nexport default router\n","/**\n * virtual list core calculating center.\n */\n\nconst DIRECTION_TYPE = {\n FRONT: 'FRONT', // scroll up or left.\n BEHIND: 'BEHIND' // scroll down or right.\n}\nconst CALC_TYPE = {\n INIT: 'INIT',\n FIXED: 'FIXED',\n DYNAMIC: 'DYNAMIC'\n}\nconst LEADING_BUFFER = 1\n\nexport default class Virtual {\n constructor (param, updateHook) {\n this.init(param, updateHook)\n }\n\n init (param, updateHook) {\n // param data.\n this.param = param\n this.updateHook = updateHook\n\n // size data.\n this.sizes = new Map()\n this.firstRangeTotalSize = 0\n this.firstRangeAverageSize = 0\n this.lastCalcIndex = 0\n this.fixedSizeValue = 0\n this.calcType = CALC_TYPE.INIT\n\n // scroll data.\n this.offset = 0\n this.direction = ''\n\n // range data.\n this.range = Object.create(null)\n if (this.param && !this.param.disabled) {\n this.checkRange(0, param.keeps - 1)\n }\n\n // benchmark test data.\n // this.__bsearchCalls = 0\n // this.__getIndexOffsetCalls = 0\n }\n\n destroy () {\n this.init(null, null)\n }\n\n // return actually render range.\n getRange () {\n const range = Object.create(null)\n range.start = this.range.start\n range.end = this.range.end\n range.padFront = this.range.padFront\n range.padBehind = this.range.padBehind\n return range\n }\n\n isLower () {\n return this.direction === DIRECTION_TYPE.BEHIND\n }\n\n isUpper () {\n return this.direction === DIRECTION_TYPE.FRONT\n }\n\n // return start index offset.\n getOffset (start) {\n return this.getIndexOffset(start)\n }\n\n updateParam (key, value) {\n if (this.param && (key in this.param)) {\n this.param[key] = value\n }\n }\n\n // save each size map by id.\n saveSize (id, size) {\n this.sizes.set(id, size)\n\n // we assume size type is fixed at the beginning and remember first size value\n // if there is no size value different from this at next comming saving\n // we think it's a fixed size list, otherwise is dynamic size list.\n if (this.calcType === CALC_TYPE.INIT) {\n this.fixedSizeValue = size\n this.calcType = CALC_TYPE.FIXED\n } else if (this.calcType === CALC_TYPE.FIXED && this.fixedSizeValue !== size) {\n this.calcType = CALC_TYPE.DYNAMIC\n // it's no use at all.\n delete this.fixedSizeValue\n }\n\n // calculate the average size only in the first range.\n if (this.sizes.size <= this.param.keeps) {\n this.firstRangeTotalSize = this.firstRangeTotalSize + size\n this.firstRangeAverageSize = Math.round(this.firstRangeTotalSize / this.sizes.size)\n } else {\n // it's done using.\n delete this.firstRangeTotalSize\n }\n }\n\n // in some special situation (e.g. length change) we need to update in a row\n // try goiong to render next range by a leading buffer according to current direction.\n handleDataSourcesChange () {\n let start = this.range.start\n\n if (this.direction === DIRECTION_TYPE.FRONT) {\n start = start - LEADING_BUFFER\n } else if (this.direction === DIRECTION_TYPE.BEHIND) {\n start = start + LEADING_BUFFER\n }\n\n start = Math.max(start, 0)\n\n this.updateRange(start, this.getEndByStart(start))\n }\n\n // when slot size change, we also need force update.\n handleSlotSizeChange () {\n this.handleDataSourcesChange()\n }\n\n // calculating range on scroll.\n handleScroll (offset) {\n if (this.param.disabled) {\n return\n }\n\n this.direction = offset < this.offset ? DIRECTION_TYPE.FRONT : DIRECTION_TYPE.BEHIND\n this.offset = offset\n\n if (this.direction === DIRECTION_TYPE.FRONT) {\n this.handleFront()\n } else if (this.direction === DIRECTION_TYPE.BEHIND) {\n this.handleBehind()\n }\n }\n\n // ----------- public method end. -----------\n\n handleFront () {\n const overs = this.getScrollOvers()\n // should not change range if start doesn't exceed overs.\n if (overs > this.range.start) {\n return\n }\n\n // move up start by a buffer length, and make sure its safety.\n const start = Math.max(overs - this.param.buffer, 0)\n this.checkRange(start, this.getEndByStart(start))\n }\n\n handleBehind () {\n const overs = this.getScrollOvers()\n // range should not change if scroll overs within buffer.\n if (overs < this.range.start + this.param.buffer) {\n return\n }\n\n this.checkRange(overs, this.getEndByStart(overs))\n }\n\n // return the pass over numbers at current scroll offset.\n getScrollOvers () {\n // if slot header exist, we need subtract its size.\n const offset = this.offset - this.param.slotHeaderSize\n if (offset <= 0) {\n return 0\n }\n\n // if this list is fixed size, that can be easily.\n if (this.isFixedType()) {\n return Math.floor(offset / this.fixedSizeValue)\n }\n\n let low = 0\n let middle = 0\n let middleOffset = 0\n let high = this.param.uniqueIds.length\n\n while (low <= high) {\n // this.__bsearchCalls++\n middle = low + Math.floor((high - low) / 2)\n middleOffset = this.getIndexOffset(middle)\n\n if (middleOffset === offset) {\n return middle\n } else if (middleOffset < offset) {\n low = middle + 1\n } else if (middleOffset > offset) {\n high = middle - 1\n }\n }\n\n return low > 0 ? --low : 0\n }\n\n // return a scroll offset from given index, can efficiency be improved more here?\n // although the call frequency is very high, its only a superposition of numbers.\n getIndexOffset (givenIndex) {\n // we know this.\n if (!givenIndex) {\n return 0\n }\n\n let offset = 0\n let indexSize = 0\n for (let index = 0; index <= givenIndex; index++) {\n // this.__getIndexOffsetCalls++\n indexSize = this.sizes.get(this.param.uniqueIds[index])\n offset = offset + (indexSize || this.getEstimateSize())\n }\n\n // remember last calculate index.\n this.lastCalcIndex = Math.max(this.lastCalcIndex, givenIndex - 1)\n this.lastCalcIndex = Math.min(this.lastCalcIndex, this.getLastIndex())\n\n return offset\n }\n\n isFixedType () {\n return this.calcType === CALC_TYPE.FIXED\n }\n\n // return the real last index.\n getLastIndex () {\n return this.param.uniqueIds.length - 1\n }\n\n // in some conditions range will break, we need check and correct it\n // and then decide whether need update to next range.\n checkRange (start, end) {\n const keeps = this.param.keeps\n const total = this.param.uniqueIds.length\n\n // datas less than keeps, render all.\n if (total <= keeps) {\n start = 0\n end = this.getLastIndex()\n } else if (end - start < keeps - 1) {\n // if range length is less than keeps, corrent it base on end.\n start = end - keeps + 1\n }\n\n if (this.range.start !== start) {\n this.updateRange(start, end)\n }\n }\n\n // call updating to a new range and rerender.\n updateRange (start, end) {\n this.range.start = start\n this.range.end = end\n this.range.padFront = this.getPadFront()\n this.range.padBehind = this.getPadBehind()\n\n if (!this.param.disabled) {\n this.updateHook(this.getRange())\n }\n }\n\n // return end base on start when going to a new range.\n getEndByStart (start) {\n const theoryEnd = start + this.param.keeps - 1\n const truelyEnd = Math.min(theoryEnd, this.getLastIndex())\n return truelyEnd\n }\n\n // return total front offset.\n getPadFront () {\n if (this.isFixedType()) {\n return this.fixedSizeValue * this.range.start\n } else {\n return this.getIndexOffset(this.range.start)\n }\n }\n\n // return total behind offset.\n // for better performance, use estimated value if a not calculated.\n getPadBehind () {\n const end = this.range.end\n const lastIndex = this.getLastIndex()\n\n if (this.isFixedType()) {\n return (lastIndex - end) * this.fixedSizeValue\n }\n\n // if calculated all already, return the exactly offset.\n if (this.lastCalcIndex === lastIndex) {\n return this.getIndexOffset(lastIndex) - this.getIndexOffset(end)\n } else {\n // if not, return a estimate offset.\n return (lastIndex - end) * this.getEstimateSize()\n }\n }\n\n // get estimate size for one item, get from param.size at first range.\n getEstimateSize () {\n return this.firstRangeAverageSize || this.param.size\n }\n}\n","/**\n * props declaration for default, item and slot component.\n */\n\nexport const VirtualProps = {\n size: {\n type: Number\n },\n keeps: {\n type: Number,\n require: true\n },\n\n dataKey: {\n type: String,\n require: true\n },\n dataSources: {\n type: Array,\n require: true\n },\n dataComponent: {\n type: Object,\n require: true\n },\n\n rootTag: {\n type: String,\n default: 'div'\n },\n wrapTag: {\n type: String,\n default: 'div'\n },\n wrapClass: {\n type: String,\n default: ''\n },\n\n direction: {\n type: String,\n default: 'vertical' // the other value is horizontal.\n },\n upperThreshold: {\n type: Number,\n default: 0\n },\n lowerThreshold: {\n type: Number,\n default: 0\n },\n start: {\n type: Number,\n default: 0\n },\n offset: {\n type: Number,\n default: 0\n },\n\n itemTag: {\n type: String,\n default: 'div'\n },\n itemClass: {\n type: String,\n default: ''\n },\n\n headerTag: {\n type: String,\n default: 'div'\n },\n headerClass: {\n type: String,\n default: ''\n },\n footerTag: {\n type: String,\n default: 'div'\n },\n footerClass: {\n type: String,\n default: ''\n },\n\n disabled: {\n type: Boolean,\n default: false\n }\n}\n\nexport const ItemProps = {\n event: {\n type: String\n },\n tag: {\n type: String\n },\n horizontal: {\n type: Boolean\n },\n source: {\n type: Object\n },\n component: {\n type: Object\n },\n uniqueKey: {\n type: String\n }\n}\n\nexport const SlotProps = {\n event: {\n type: String\n },\n uniqueKey: {\n String\n },\n tag: {\n type: String\n },\n horizontal: {\n type: Boolean\n }\n}\n","/**\n * item and slot component both use similar wrapper\n * we need to know their size change at any time.\n */\n\nimport Vue from 'vue'\nimport { ItemProps, SlotProps } from './props'\n\nconst Wrapper = {\n created () {\n this.hasInitial = false\n this.shapeKey = this.horizontal ? 'offsetWidth' : 'offsetHeight'\n },\n\n mounted () {\n // dispatch once at initial.\n this.dispatchSizeChange()\n\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => {\n // dispatch when size changed.\n if (this.hasInitial) {\n this.dispatchSizeChange()\n } else {\n this.hasInitial = true\n }\n })\n this.resizeObserver.observe(this.$el)\n }\n },\n\n beforeDestroy () {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect()\n this.resizeObserver = null\n }\n },\n\n methods: {\n getCurrentSize () {\n return this.$el ? this.$el[this.shapeKey] : 0\n },\n\n // tell parent current size identify by unqiue key.\n dispatchSizeChange () {\n this.$parent.$emit(this.event, this.uniqueKey, this.getCurrentSize(), this.hasInitial)\n }\n }\n}\n\n// wrapping for item.\nexport const Item = Vue.component('virtual-list-item', {\n mixins: [Wrapper],\n\n props: ItemProps,\n\n render (h) {\n return h(this.tag, {\n role: 'item'\n }, [h(this.component, {\n props: this.source\n })])\n }\n})\n\n// wrapping for slot.\nexport const Slot = Vue.component('virtual-list-slot', {\n mixins: [Wrapper],\n\n props: SlotProps,\n\n render (h) {\n return h(this.tag, {\n attrs: {\n role: this.uniqueKey\n }\n }, this.$slots.default)\n }\n})\n","/**\n * virtual list default component.\n */\n\nimport Vue from 'vue'\nimport Virtual from './virtual'\nimport { Item, Slot } from './item'\nimport { VirtualProps } from './props'\n\nconst EVENT_TYPE = {\n ITEM: 'item_resize',\n SLOT: 'slot_resize'\n}\nconst SLOT_TYPE = {\n HEADER: 'header', // string value also use for aria role attribute.\n FOOTER: 'footer'\n}\n\nconst NAME = 'virtual-list'\n\nconst VirtualList = Vue.component(NAME, {\n props: VirtualProps,\n\n data () {\n return {\n range: null\n }\n },\n\n watch: {\n dataSources (newValue, oldValue) {\n if (newValue.length !== oldValue.length) {\n this.virtual.updateParam('uniqueIds', this.getUniqueIdFromDataSources())\n this.virtual.handleDataSourcesChange()\n }\n }\n },\n\n created () {\n this.isHorizontal = this.direction === 'horizontal'\n this.directionKey = this.isHorizontal ? 'scrollLeft' : 'scrollTop'\n\n this.virtual = new Virtual({\n size: this.size, // also could be a estimate value.\n slotHeaderSize: 0,\n slotFooterSize: 0,\n keeps: this.keeps,\n disabled: this.disabled,\n buffer: Math.round(this.keeps / 3), // recommend for a third of keeps.\n uniqueIds: this.getUniqueIdFromDataSources()\n }, this.onRangeChanged)\n\n // just for debug\n // window.virtual = this.virtual\n\n // also need sync initial range first.\n this.range = this.virtual.getRange()\n\n // listen item size changing.\n this.$on(EVENT_TYPE.ITEM, this.onItemResized)\n\n // listen slot size changing.\n if (this.$slots.header || this.$slots.footer) {\n this.$on(EVENT_TYPE.SLOT, this.onSlotResized)\n }\n },\n\n beforeDestroy () {\n this.virtual.destroy()\n },\n\n mounted () {\n // set position.\n if (this.start) {\n this.setScrollOffset(this.virtual.getOffset(this.start))\n } else if (this.offset) {\n this.setScrollOffset(this.offset)\n }\n },\n\n methods: {\n // event called when every item mounted or size changed.\n onItemResized (id, size) {\n this.virtual.saveSize(id, size)\n },\n\n // event called when slot mounted or size changed.\n onSlotResized (type, size, hasInit) {\n if (type === SLOT_TYPE.HEADER) {\n this.virtual.updateParam('slotHeaderSize', size)\n } else if (type === SLOT_TYPE.FOOTER) {\n this.virtual.updateParam('slotFooterSize', size)\n }\n\n if (hasInit) {\n this.virtual.handleSlotSizeChange()\n }\n },\n\n // here is the rerendering entry.\n onRangeChanged (range) {\n this.range = range\n },\n\n onScroll (evt) {\n const { root } = this.$refs\n if (!root) {\n return\n }\n\n const offset = root[this.directionKey]\n this.virtual.handleScroll(offset)\n this.emitEvent(offset, evt)\n },\n\n getUniqueIdFromDataSources () {\n return this.dataSources.map((dataSource) => dataSource[this.dataKey])\n },\n\n // set current scroll position to a expectant offset.\n setScrollOffset (offset) {\n const { root } = this.$refs\n if (root) {\n root[this.directionKey] = offset || 0\n }\n },\n\n // emit event in special position.\n emitEvent (offset, evt) {\n // ref element is definitely available here.\n const { root } = this.$refs\n const range = this.virtual.getRange()\n const isLower = this.virtual.isLower()\n const isUpper = this.virtual.isUpper()\n const offsetShape = root[this.isHorizontal ? 'clientWidth' : 'clientHeight']\n const scrollShape = root[this.isHorizontal ? 'scrollWidth' : 'scrollHeight']\n\n if (isUpper && !!this.dataSources.length && offset - this.upperThreshold <= 0) {\n this.$emit('totop', evt, range)\n } else if (isLower && offset + offsetShape + this.lowerThreshold >= scrollShape) {\n this.$emit('tobottom', evt, range)\n } else {\n this.$emit('scroll', evt, range)\n }\n },\n\n // get the real render slots based on range data.\n getRenderSlots (h) {\n const slots = []\n const start = this.disabled ? 0 : this.range.start\n const end = this.disabled ? this.dataSources.length - 1 : this.range.end\n\n for (let index = start; index <= end; index++) {\n const dataSource = this.dataSources[index]\n if (dataSource) {\n slots.push(h(Item, {\n class: this.itemClass,\n props: {\n tag: this.itemTag,\n event: EVENT_TYPE.ITEM,\n horizontal: this.isHorizontal,\n uniqueKey: dataSource[this.dataKey],\n source: dataSource,\n component: this.dataComponent\n }\n }))\n } else {\n console.warn(`[${NAME}]: cannot get the index ${index} from data-sources.`)\n }\n }\n\n return slots\n }\n },\n\n // render function, a closer-to-the-compiler alternative to templates.\n // https://vuejs.org/v2/guide/render-function.html#The-Data-Object-In-Depth\n render (h) {\n const { header, footer } = this.$slots\n const padding = this.isHorizontal\n ? `0px ${this.range.padBehind}px 0px ${this.range.padFront}px`\n : `${this.range.padFront}px 0px ${this.range.padBehind}px`\n\n return h(this.rootTag, {\n ref: 'root',\n on: {\n '&scroll': this.onScroll\n }\n }, [\n // header slot.\n header ? h(Slot, {\n class: this.headerClass,\n props: {\n tag: this.headerTag,\n event: EVENT_TYPE.SLOT,\n uniqueKey: SLOT_TYPE.HEADER\n }\n }, header) : null,\n\n // main list.\n h(this.wrapTag, {\n class: this.wrapClass,\n attrs: {\n role: 'group'\n },\n style: {\n padding: padding\n }\n }, this.getRenderSlots(h)),\n\n // footer slot.\n footer ? h(Slot, {\n class: this.footerClass,\n props: {\n tag: this.footerTag,\n event: EVENT_TYPE.SLOT,\n uniqueKey: SLOT_TYPE.FOOTER\n }\n }, footer) : null\n ])\n }\n})\n\nexport default VirtualList\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"introduction\",domProps:{\"innerHTML\":_vm._s(_vm.description)}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Introduction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Introduction.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Introduction.vue?vue&type=template&id=0c507b69&scoped=true&\"\nimport script from \"./Introduction.vue?vue&type=script&lang=js&\"\nexport * from \"./Introduction.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Introduction.vue?vue&type=style&index=0&id=0c507b69&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0c507b69\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!!_vm.code)?_c('pre',{class:_vm.type,domProps:{\"innerHTML\":_vm._s(_vm.encode(_vm.code))}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeHighLight.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeHighLight.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CodeHighLight.vue?vue&type=template&id=99fd125a&scoped=true&\"\nimport script from \"./CodeHighLight.vue?vue&type=script&lang=js&\"\nexport * from \"./CodeHighLight.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CodeHighLight.vue?vue&type=style&index=0&id=99fd125a&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"99fd125a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.isMobile)?_c('a',{staticClass:\"github-corner\",attrs:{\"href\":_vm.url,\"aria-label\":\"View source on GitHub\"}},[_c('svg',{staticStyle:{\"fill\":\"#9b4dca\",\"color\":\"#fff\",\"position\":\"absolute\",\"top\":\"0\",\"border\":\"0\",\"right\":\"0\",\"z-index\":\"1000\"},attrs:{\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 250 250\",\"aria-hidden\":\"true\"}},[_c('path',{attrs:{\"d\":\"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z\"}}),_c('path',{staticClass:\"octo-arm\",staticStyle:{\"transform-origin\":\"130px 106px\"},attrs:{\"d\":\"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2\",\"fill\":\"currentColor\"}}),_c('path',{staticClass:\"octo-body\",attrs:{\"d\":\"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z\",\"fill\":\"currentColor\"}})])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Corner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Corner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Corner.vue?vue&type=template&id=821512e4&scoped=true&\"\nimport script from \"./Corner.vue?vue&type=script&lang=js&\"\nexport * from \"./Corner.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Corner.vue?vue&type=style&index=0&id=821512e4&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"821512e4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tab\"},[_c('div',{staticClass:\"tab-item view\",class:{active: _vm.isView},on:{\"click\":_vm.eventClickView}},[_vm._v(\"VIEW\")]),_c('div',{staticClass:\"tab-item code\",class:{active: !_vm.isView},on:{\"click\":_vm.eventClickCode}},[_vm._v(\"CODE\")]),_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isView),expression:\"!isView\"}],staticClass:\"complete-code-url\",attrs:{\"target\":\"_blank\",\"href\":_vm.completeCodeUrl}},[_vm._v(\"COMPLETE CODE\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tab.vue?vue&type=template&id=13711752&scoped=true&\"\nimport script from \"./Tab.vue?vue&type=script&lang=js&\"\nexport * from \"./Tab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tab.vue?vue&type=style&index=0&id=13711752&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13711752\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\nimport router from './router'\n\nimport VirtualList from '../../src/index'\nimport Introduction from './components/Introduction'\nimport CodeHighLight from './components/CodeHighLight'\nimport Corner from './components/Corner'\nimport Tab from './components/Tab'\n\nVue.component('virtual-list', VirtualList)\nVue.component(Introduction.name, Introduction)\nVue.component(CodeHighLight.name, CodeHighLight)\nVue.component(Corner.name, Corner)\nVue.component(Tab.name, Tab)\n\nVue.config.devtools = false\nVue.config.productionTip = false\n\nnew Vue({\n router,\n render: h => h(App)\n}).$mount('#app')\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeHighLight.vue?vue&type=style&index=0&id=99fd125a&lang=less&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeHighLight.vue?vue&type=style&index=0&id=99fd125a&lang=less&scoped=true&\"","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=less&\"","const ua = navigator.userAgent\nconst Android = !!ua.match(/Android/i)\nconst iOS = !!ua.match(/iPhone|iPad|iPod/i)\nexport const isMobile = Android || iOS\n","// config and constants.\n\nexport const TOTAL_COUNT = 10000\n\nexport const TAB_TYPE = {\n VIEW: 1,\n CODE: 2\n}\n\nexport const DEFAULT_TAB = TAB_TYPE.VIEW\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Introduction.vue?vue&type=style&index=0&id=0c507b69&lang=less&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Introduction.vue?vue&type=style&index=0&id=0c507b69&lang=less&scoped=true&\""],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/app.fd55a986.js b/docs/js/app.fd55a986.js deleted file mode 100644 index 7730935..0000000 --- a/docs/js/app.fd55a986.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(e){function t(t){for(var n,a,o=t[0],l=t[1],u=t[2],c=0,h=[];cthis.range.start)){var t=Math.max(e-this.param.buffer,0);this.checkRange(t,this.getEndByStart(t))}}},{key:"handleBehind",value:function(){var e=this.getScrollOvers();ee&&(a=i-1)}return t>0?--t:0}},{key:"getIndexOffset",value:function(e){if(!e)return 0;for(var t=0,i=0,n=0;n<=e;n++)i=this.sizes.get(this.param.uniqueIds[n]),t+=i||this.getEstimateSize();return this.lastCalcIndex=Math.max(this.lastCalcIndex,e-1),this.lastCalcIndex=Math.min(this.lastCalcIndex,this.getLastIndex()),t}},{key:"isFixedType",value:function(){return this.calcType===x.FIXED}},{key:"getLastIndex",value:function(){return this.param.uniqueIds.length-1}},{key:"checkRange",value:function(e,t){var i=this.param.keeps,n=this.param.uniqueIds.length;n<=i?(e=0,t=this.getLastIndex()):t-e=o?this.$emit("tobottom",t,n):this.$emit("scroll",t,n)},getRenderSlots:function(e){for(var t=[],i=this.disabled?0:this.range.start,n=this.disabled?this.dataSources.length-1:this.range.end,a=i;a<=n;a++){var s=this.dataSources[a];s?t.push(e(w,{class:this.itemClass,props:{tag:this.itemTag,event:F.ITEM,horizontal:this.isHorizontal,uniqueKey:s[this.dataKey],source:s,component:this.dataComponent}})):console.warn("[".concat(N,"]: cannot get the index ").concat(a," from data-sources."))}return t}},render:function(e){var t=this.$slots,i=t.header,n=t.footer,a=this.isHorizontal?"0px ".concat(this.range.padBehind,"px 0px ").concat(this.range.padFront,"px"):"".concat(this.range.padFront,"px 0px ").concat(this.range.padBehind,"px");return e(this.rootTag,{ref:"root",on:{"&scroll":this.onScroll}},[i?e(R,{class:this.headerClass,props:{tag:this.headerTag,event:F.SLOT,uniqueKey:D.HEADER}},i):null,e(this.wrapTag,{class:this.wrapClass,attrs:{role:"group"},style:{padding:a}},this.getRenderSlots(e)),n?e(R,{class:this.footerClass,props:{tag:this.footerTag,event:F.SLOT,uniqueKey:D.FOOTER}},n):null])}}),M=$,P=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"introduction",domProps:{innerHTML:e._s(e.description)}})},j=[],B={name:"introduction",props:{description:{type:String}}},H=B,L=(i("de3a"),Object(r["a"])(H,P,j,!1,null,"0c507b69",null)),q=L.exports,V=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.code?i("pre",{class:e.type,domProps:{innerHTML:e._s(e.encode(e.code))}}):e._e()},A=[],K=(i("ac1f"),i("5319"),{name:"code-high-light",props:{type:{type:String,required:!0},code:{type:String,required:!0}},mounted:function(){"undefined"!==typeof window.hljs&&this.$el.textContent&&window.hljs.highlightBlock(this.$el)},methods:{encode:function(e){return"html"===this.type&&(e=e.replace(//g,">")),e=e.replace(/\s/,""),e}}}),U=K,W=(i("595a"),Object(r["a"])(U,V,A,!1,null,"99fd125a",null)),X=W.exports,Y=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.isMobile?e._e():i("a",{staticClass:"github-corner",attrs:{href:e.url,"aria-label":"View source on GitHub"}},[i("svg",{staticStyle:{fill:"#9b4dca",color:"#fff",position:"absolute",top:"0",border:"0",right:"0","z-index":"1000"},attrs:{width:e.size,height:e.size,viewBox:"0 0 250 250","aria-hidden":"true"}},[i("path",{attrs:{d:"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"}}),i("path",{staticClass:"octo-arm",staticStyle:{"transform-origin":"130px 106px"},attrs:{d:"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2",fill:"currentColor"}}),i("path",{staticClass:"octo-body",attrs:{d:"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z",fill:"currentColor"}})])])},J=[],Z=i("835c"),G=i("3f05"),Q={name:"github-corner",data:function(){return{url:"",size:80,isMobile:Z["a"]}},mounted:function(){this.url=Object(G["a"])()}},ee=Q,te=(i("3f57"),Object(r["a"])(ee,Y,J,!1,null,"821512e4",null)),ie=te.exports,ne=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"tab"},[i("div",{staticClass:"tab-item view",class:{active:e.isView},on:{click:e.eventClickView}},[e._v("VIEW")]),i("div",{staticClass:"tab-item code",class:{active:!e.isView},on:{click:e.eventClickCode}},[e._v("CODE")]),i("a",{directives:[{name:"show",rawName:"v-show",value:!e.isView,expression:"!isView"}],staticClass:"complete-code-url",attrs:{target:"_blank",href:e.completeCodeUrl}},[e._v("COMPLETE CODE")])])},ae=[],se=i("b95e"),re={name:"tab",data:function(){return{completeCodeUrl:"",active:se["a"]}},computed:{isView:function(){return this.active===se["b"].VIEW}},mounted:function(){this.completeCodeUrl=Object(G["a"])()},methods:{eventClickView:function(){this.active=se["b"].VIEW,this.emitEvent()},eventClickCode:function(){this.active=se["b"].CODE,this.emitEvent()},emitEvent:function(){this.$emit("tab-change",this.active)}}},oe=re,le=(i("2345"),Object(r["a"])(oe,ne,ae,!1,null,"13711752",null)),ue=le.exports;n["a"].component("virtual-list",M),n["a"].component(q.name,q),n["a"].component(X.name,X),n["a"].component(ie.name,ie),n["a"].component(ue.name,ue),n["a"].config.devtools=!1,n["a"].config.productionTip=!1,new n["a"]({router:z,render:function(e){return e(u)}}).$mount("#app")},"595a":function(e,t,i){"use strict";var n=i("a5ff"),a=i.n(n);a.a},"67ef":function(e,t,i){},"7c55":function(e,t,i){"use strict";var n=i("2395"),a=i.n(n);a.a},"835c":function(e,t,i){"use strict";i.d(t,"a",(function(){return r}));i("ac1f"),i("466d");var n=navigator.userAgent,a=!!n.match(/Android/i),s=!!n.match(/iPhone|iPad|iPod/i),r=a||s},a5ff:function(e,t,i){},a762:function(e,t,i){"use strict";var n=i("06b1"),a=i.n(n);a.a},b95e:function(e,t,i){"use strict";i.d(t,"c",(function(){return n})),i.d(t,"b",(function(){return a})),i.d(t,"a",(function(){return s}));var n=1e4,a={VIEW:1,CODE:2},s=a.VIEW},caf6:function(e,t,i){},de3a:function(e,t,i){"use strict";var n=i("2f31"),a=i.n(n);a.a}}); -//# sourceMappingURL=app.fd55a986.js.map \ No newline at end of file diff --git a/docs/js/app.fd55a986.js.map b/docs/js/app.fd55a986.js.map deleted file mode 100644 index 96c9a05..0000000 --- a/docs/js/app.fd55a986.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/Tab.vue?8914","webpack:///./src/common/get-code-url.js","webpack:///./src/components/Corner.vue?baf6","webpack:///./src/App.vue?ced9","webpack:///./src/App.vue?bff9","webpack:///./src/views/index/Main.vue?c75f","webpack:///src/views/index/Main.vue","webpack:///./src/views/index/Main.vue?9578","webpack:///./src/views/index/Main.vue","webpack:///./src/router/index.js","webpack:///../src/virtual.js","webpack:///../src/props.js","webpack:///../src/item.js","webpack:///../src/index.js","webpack:///./src/components/Introduction.vue?bbc7","webpack:///src/components/Introduction.vue","webpack:///./src/components/Introduction.vue?8836","webpack:///./src/components/Introduction.vue","webpack:///./src/components/CodeHighLight.vue?6132","webpack:///src/components/CodeHighLight.vue","webpack:///./src/components/CodeHighLight.vue?c9ca","webpack:///./src/components/CodeHighLight.vue","webpack:///./src/components/Corner.vue?a6db","webpack:///src/components/Corner.vue","webpack:///./src/components/Corner.vue?80c1","webpack:///./src/components/Corner.vue","webpack:///./src/components/Tab.vue?70cf","webpack:///src/components/Tab.vue","webpack:///./src/components/Tab.vue?1581","webpack:///./src/components/Tab.vue","webpack:///./src/main.js","webpack:///./src/components/CodeHighLight.vue?0b70","webpack:///./src/App.vue?a173","webpack:///./src/common/ua.js","webpack:///./src/views/index/Main.vue?7e48","webpack:///./src/common/const.js","webpack:///./src/components/Introduction.vue?f996"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","hashValue","location","hash","substr","_vm","this","_h","$createElement","_c","_self","attrs","_v","staticRenderFns","component","staticClass","_m","Vue","use","VueRouter","routes","path","Index","router","DIRECTION_TYPE","FRONT","BEHIND","CALC_TYPE","INIT","FIXED","DYNAMIC","LEADING_BUFFER","Virtual","param","updateHook","init","sizes","Map","firstRangeTotalSize","firstRangeAverageSize","lastCalcIndex","fixedSizeValue","calcType","offset","direction","range","disabled","checkRange","keeps","start","end","padFront","padBehind","getIndexOffset","id","size","set","Math","round","max","updateRange","getEndByStart","handleDataSourcesChange","handleFront","handleBehind","overs","getScrollOvers","buffer","slotHeaderSize","isFixedType","floor","low","middle","middleOffset","high","uniqueIds","givenIndex","indexSize","index","getEstimateSize","min","getLastIndex","total","getPadFront","getPadBehind","getRange","theoryEnd","truelyEnd","lastIndex","VirtualProps","Number","require","dataKey","String","dataSources","Array","dataComponent","rootTag","default","wrapTag","wrapClass","upperThreshold","lowerThreshold","itemTag","itemClass","headerTag","headerClass","footerTag","footerClass","Boolean","ItemProps","horizontal","source","uniqueKey","SlotProps","Wrapper","created","hasInitial","shapeKey","mounted","dispatchSizeChange","ResizeObserver","resizeObserver","observe","$el","beforeDestroy","disconnect","methods","getCurrentSize","$parent","$emit","Item","mixins","props","render","h","role","Slot","$slots","EVENT_TYPE","ITEM","SLOT","SLOT_TYPE","HEADER","FOOTER","NAME","VirtualList","watch","newValue","oldValue","virtual","updateParam","getUniqueIdFromDataSources","isHorizontal","directionKey","slotFooterSize","onRangeChanged","$on","onItemResized","header","footer","onSlotResized","destroy","setScrollOffset","getOffset","saveSize","hasInit","handleSlotSizeChange","onScroll","evt","root","$refs","handleScroll","emitEvent","map","dataSource","isLower","isUpper","offsetShape","scrollShape","getRenderSlots","slots","class","warn","padding","ref","on","style","domProps","_s","description","encode","_e","required","hljs","textContent","highlightBlock","replace","isMobile","url","staticStyle","active","isView","eventClickView","eventClickCode","directives","rawName","expression","completeCodeUrl","computed","Introduction","CodeHighLight","Corner","Tab","config","devtools","productionTip","App","$mount","ua","navigator","userAgent","Android","match","iOS","TOTAL_COUNT","TAB_TYPE","VIEW","CODE","DEFAULT_TAB"],"mappings":"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","file":"js/app.fd55a986.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"dynamic-size~fixed-size~horizontal~infinite-loading~keep-state\":\"dynamic-size~fixed-size~horizontal~infinite-loading~keep-state\",\"dynamic-size\":\"dynamic-size\",\"fixed-size\":\"fixed-size\",\"horizontal\":\"horizontal\",\"infinite-loading\":\"infinite-loading\",\"keep-state\":\"keep-state\"}[chunkId]||chunkId) + \".\" + {\"dynamic-size~fixed-size~horizontal~infinite-loading~keep-state\":\"3b940789\",\"dynamic-size\":\"af2b38a2\",\"fixed-size\":\"856b63cd\",\"horizontal\":\"a2686d86\",\"infinite-loading\":\"7ebcd00d\",\"keep-state\":\"587170ed\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"dynamic-size\":1,\"fixed-size\":1,\"horizontal\":1,\"infinite-loading\":1,\"keep-state\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"dynamic-size~fixed-size~horizontal~infinite-loading~keep-state\":\"dynamic-size~fixed-size~horizontal~infinite-loading~keep-state\",\"dynamic-size\":\"dynamic-size\",\"fixed-size\":\"fixed-size\",\"horizontal\":\"horizontal\",\"infinite-loading\":\"infinite-loading\",\"keep-state\":\"keep-state\"}[chunkId]||chunkId) + \".\" + {\"dynamic-size~fixed-size~horizontal~infinite-loading~keep-state\":\"31d6cfe0\",\"dynamic-size\":\"05987921\",\"fixed-size\":\"50cd9045\",\"horizontal\":\"5a6cefd6\",\"infinite-loading\":\"e3344d42\",\"keep-state\":\"367cb4ef\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=style&index=0&id=13711752&lang=less&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=style&index=0&id=13711752&lang=less&scoped=true&\"","export default () => {\n const hashValue = (location.hash || '').substr(2)\n if (hashValue) {\n return `https://github.com/tangbc/vue-virtual-scroll-list/tree/master/example/views/${hashValue}/Main.vue`\n } else {\n return `https://github.com/tangbc/vue-virtual-scroll-list`\n }\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Corner.vue?vue&type=style&index=0&id=821512e4&lang=less&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Corner.vue?vue&type=style&index=0&id=821512e4&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('div',{attrs:{\"id\":\"nav\"}},[_c('router-link',{attrs:{\"to\":\"/\"}},[_vm._v(\"home\")]),_c('router-link',{attrs:{\"to\":\"/fixed-size\"}},[_vm._v(\"fixed size\")]),_c('router-link',{attrs:{\"to\":\"/dynamic-size\"}},[_vm._v(\"dynamic size\")]),_c('router-link',{attrs:{\"to\":\"/horizontal\"}},[_vm._v(\"horizontal\")]),_c('router-link',{attrs:{\"to\":\"/infinite-loading\"}},[_vm._v(\"infinite loading\")]),_c('router-link',{attrs:{\"to\":\"/keep-state\"}},[_vm._v(\"keep state\")])],1),_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=55963a8a&\"\nvar script = {}\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"index\"},[_c('github-corner'),_c('h2',{staticClass:\"name\"},[_vm._v(\"vue-virtual-scroll-list\")]),_vm._m(0),_c('h3',{staticClass:\"title\"},[_vm._v(\"What's news in v2.0\")]),_vm._m(1),_c('h3',{staticClass:\"title\"},[_vm._v(\"Todos\")]),_vm._m(2)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"head\"},[_c('img',{attrs:{\"src\":\"https://nodei.co/npm/vue-virtual-scroll-list.png?downloads=true&downloadRank=true&stars=true\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"Support header slot, footer slot.\")]),_c('li',[_vm._v(\"Code structure is more reasonable and good maintainability.\")]),_c('li',[_vm._v(\"Abandoned v-for mode and variable mode, all condition unify into one mode.\")]),_c('li',[_vm._v(\"Don't have to care about each item size, in sometimes it's difficult to know that.\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"Improve calculate offset efficient.\")]),_c('li',[_vm._v(\"Support page scroll, table layout.\")]),_c('li',[_vm._v(\"......\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Main.vue?vue&type=template&id=4ac967ef&scoped=true&\"\nimport script from \"./Main.vue?vue&type=script&lang=js&\"\nexport * from \"./Main.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Main.vue?vue&type=style&index=0&id=4ac967ef&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ac967ef\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport Index from '../views/index/Main.vue'\n\nVue.use(VueRouter)\n\n const routes = [\n {\n path: '/',\n name: 'Index',\n component: Index\n },\n {\n path: '/fixed-size',\n name: 'fixed-size',\n component: () => import(/* webpackChunkName: \"fixed-size\" */ '../views/fixed-size/Main.vue')\n },\n {\n path: '/dynamic-size',\n name: 'dynamic-size',\n component: () => import(/* webpackChunkName: \"dynamic-size\" */ '../views/dynamic-size/Main.vue')\n },\n {\n path: '/horizontal',\n name: 'horizontal',\n component: () => import(/* webpackChunkName: \"horizontal\" */ '../views/horizontal/Main.vue')\n },\n {\n path: '/infinite-loading',\n name: 'infinite-loading',\n component: () => import(/* webpackChunkName: \"infinite-loading\" */ '../views/infinite-loading/Main.vue')\n },\n {\n path: '/keep-state',\n name: 'keep-state',\n component: () => import(/* webpackChunkName: \"keep-state\" */ '../views/keep-state/Main.vue')\n }\n]\n\nconst router = new VueRouter({\n routes\n})\n\nexport default router\n","/**\n * virtual list core calculating center.\n */\n\nconst DIRECTION_TYPE = {\n FRONT: 'FRONT', // scroll up or left.\n BEHIND: 'BEHIND' // scroll down or right.\n}\nconst CALC_TYPE = {\n INIT: 'INIT',\n FIXED: 'FIXED',\n DYNAMIC: 'DYNAMIC'\n}\nconst LEADING_BUFFER = 1\n\nexport default class Virtual {\n constructor (param, updateHook) {\n this.init(param, updateHook)\n }\n\n init (param, updateHook) {\n // param data.\n this.param = param\n this.updateHook = updateHook\n\n // size data.\n this.sizes = new Map()\n this.firstRangeTotalSize = 0\n this.firstRangeAverageSize = 0\n this.lastCalcIndex = 0\n this.fixedSizeValue = 0\n this.calcType = CALC_TYPE.INIT\n\n // scroll data.\n this.offset = 0\n this.direction = ''\n\n // range data.\n this.range = Object.create(null)\n if (this.param && !this.param.disabled) {\n this.checkRange(0, param.keeps - 1)\n }\n\n // benchmark test data.\n // this.__bsearchCalls = 0\n // this.__getIndexOffsetCalls = 0\n }\n\n destroy () {\n this.init(null, null)\n }\n\n // return actually render range.\n getRange () {\n const range = Object.create(null)\n range.start = this.range.start\n range.end = this.range.end\n range.padFront = this.range.padFront\n range.padBehind = this.range.padBehind\n return range\n }\n\n isLower () {\n return this.direction === DIRECTION_TYPE.BEHIND\n }\n\n isUpper () {\n return this.direction === DIRECTION_TYPE.FRONT\n }\n\n // return start index offset.\n getOffset (start) {\n return this.getIndexOffset(start)\n }\n\n updateParam (key, value) {\n if (this.param && (key in this.param)) {\n this.param[key] = value\n }\n }\n\n // save each size map by id.\n saveSize (id, size) {\n this.sizes.set(id, size)\n\n // we assume size type is fixed at the beginning and remember first size value\n // if there is no size value different from this at next comming saving\n // we think it's a fixed size list, otherwise is dynamic size list.\n if (this.calcType === CALC_TYPE.INIT) {\n this.fixedSizeValue = size\n this.calcType = CALC_TYPE.FIXED\n } else if (this.calcType === CALC_TYPE.FIXED && this.fixedSizeValue !== size) {\n this.calcType = CALC_TYPE.DYNAMIC\n // it's no use at all.\n delete this.fixedSizeValue\n }\n\n // calculate the average size only in the first range.\n if (this.sizes.size <= this.param.keeps) {\n this.firstRangeTotalSize = this.firstRangeTotalSize + size\n this.firstRangeAverageSize = Math.round(this.firstRangeTotalSize / this.sizes.size)\n } else {\n // it's done using.\n delete this.firstRangeTotalSize\n }\n }\n\n // in some special situation (e.g. length change) we need to update in a row\n // try goiong to render next range by a leading buffer according to current direction.\n handleDataSourcesChange () {\n let start = this.range.start\n\n if (this.direction === DIRECTION_TYPE.FRONT) {\n start = start - LEADING_BUFFER\n } else if (this.direction === DIRECTION_TYPE.BEHIND) {\n start = start + LEADING_BUFFER\n }\n\n start = Math.max(start, 0)\n\n this.updateRange(start, this.getEndByStart(start))\n }\n\n // when slot size change, we also need force update.\n handleSlotSizeChange () {\n this.handleDataSourcesChange()\n }\n\n // calculating range on scroll.\n handleScroll (offset) {\n if (this.param.disabled) {\n return\n }\n\n this.direction = offset < this.offset ? DIRECTION_TYPE.FRONT : DIRECTION_TYPE.BEHIND\n this.offset = offset\n\n if (this.direction === DIRECTION_TYPE.FRONT) {\n this.handleFront()\n } else if (this.direction === DIRECTION_TYPE.BEHIND) {\n this.handleBehind()\n }\n }\n\n // ----------- public method end. -----------\n\n handleFront () {\n const overs = this.getScrollOvers()\n // should not change range if start doesn't exceed overs.\n if (overs > this.range.start) {\n return\n }\n\n // move up start by a buffer length, and make sure its safety.\n const start = Math.max(overs - this.param.buffer, 0)\n this.checkRange(start, this.getEndByStart(start))\n }\n\n handleBehind () {\n const overs = this.getScrollOvers()\n // range should not change if scroll overs within buffer.\n if (overs < this.range.start + this.param.buffer) {\n return\n }\n\n this.checkRange(overs, this.getEndByStart(overs))\n }\n\n // return the pass over numbers at current scroll offset.\n getScrollOvers () {\n // if slot header exist, we need subtract its size.\n const offset = this.offset - this.param.slotHeaderSize\n if (offset <= 0) {\n return 0\n }\n\n // if this list is fixed size, that can be easily.\n if (this.isFixedType()) {\n return Math.floor(offset / this.fixedSizeValue)\n }\n\n let low = 0\n let middle = 0\n let middleOffset = 0\n let high = this.param.uniqueIds.length\n\n while (low <= high) {\n // this.__bsearchCalls++\n middle = low + Math.floor((high - low) / 2)\n middleOffset = this.getIndexOffset(middle)\n\n if (middleOffset === offset) {\n return middle\n } else if (middleOffset < offset) {\n low = middle + 1\n } else if (middleOffset > offset) {\n high = middle - 1\n }\n }\n\n return low > 0 ? --low : 0\n }\n\n // return a scroll offset from given index, can efficiency be improved more here?\n // although the call frequency is very high, its only a superposition of numbers.\n getIndexOffset (givenIndex) {\n // we know this.\n if (!givenIndex) {\n return 0\n }\n\n let offset = 0\n let indexSize = 0\n for (let index = 0; index <= givenIndex; index++) {\n // this.__getIndexOffsetCalls++\n indexSize = this.sizes.get(this.param.uniqueIds[index])\n offset = offset + (indexSize || this.getEstimateSize())\n }\n\n // remember last calculate index.\n this.lastCalcIndex = Math.max(this.lastCalcIndex, givenIndex - 1)\n this.lastCalcIndex = Math.min(this.lastCalcIndex, this.getLastIndex())\n\n return offset\n }\n\n isFixedType () {\n return this.calcType === CALC_TYPE.FIXED\n }\n\n // return the real last index.\n getLastIndex () {\n return this.param.uniqueIds.length - 1\n }\n\n // in some conditions range will break, we need check and correct it\n // and then decide whether need update to next range.\n checkRange (start, end) {\n const keeps = this.param.keeps\n const total = this.param.uniqueIds.length\n\n // datas less than keeps, render all.\n if (total <= keeps) {\n start = 0\n end = this.getLastIndex()\n } else if (end - start < keeps - 1) {\n // if range length is less than keeps, corrent it base on end.\n start = end - keeps + 1\n }\n\n if (this.range.start !== start) {\n this.updateRange(start, end)\n }\n }\n\n // call updating to a new range and rerender.\n updateRange (start, end) {\n this.range.start = start\n this.range.end = end\n this.range.padFront = this.getPadFront()\n this.range.padBehind = this.getPadBehind()\n\n if (!this.param.disabled) {\n this.updateHook(this.getRange())\n }\n }\n\n // return end base on start when going to a new range.\n getEndByStart (start) {\n const theoryEnd = start + this.param.keeps - 1\n const truelyEnd = Math.min(theoryEnd, this.getLastIndex())\n return truelyEnd\n }\n\n // return total front offset.\n getPadFront () {\n if (this.isFixedType()) {\n return this.fixedSizeValue * this.range.start\n } else {\n return this.getIndexOffset(this.range.start)\n }\n }\n\n // return total behind offset.\n // for better performance, use estimated value if a not calculated.\n getPadBehind () {\n const end = this.range.end\n const lastIndex = this.getLastIndex()\n\n if (this.isFixedType()) {\n return (lastIndex - end) * this.fixedSizeValue\n }\n\n // if calculated all already, return the exactly offset.\n if (this.lastCalcIndex === lastIndex) {\n return this.getIndexOffset(lastIndex) - this.getIndexOffset(end)\n } else {\n // if not, return a estimate offset.\n return (lastIndex - end) * this.getEstimateSize()\n }\n }\n\n // get estimate size for one item, get from param.size at first range.\n getEstimateSize () {\n return this.firstRangeAverageSize || this.param.size\n }\n}\n","/**\n * props declaration for default, item and slot component.\n */\n\nexport const VirtualProps = {\n size: {\n type: Number\n },\n keeps: {\n type: Number,\n require: true\n },\n\n dataKey: {\n type: String,\n require: true\n },\n dataSources: {\n type: Array,\n require: true\n },\n dataComponent: {\n type: Object,\n require: true\n },\n\n rootTag: {\n type: String,\n default: 'div'\n },\n wrapTag: {\n type: String,\n default: 'div'\n },\n wrapClass: {\n type: String,\n default: ''\n },\n\n direction: {\n type: String,\n default: 'vertical' // the other value is horizontal.\n },\n upperThreshold: {\n type: Number,\n default: 0\n },\n lowerThreshold: {\n type: Number,\n default: 0\n },\n start: {\n type: Number,\n default: 0\n },\n offset: {\n type: Number,\n default: 0\n },\n\n itemTag: {\n type: String,\n default: 'div'\n },\n itemClass: {\n type: String,\n default: ''\n },\n\n headerTag: {\n type: String,\n default: 'div'\n },\n headerClass: {\n type: String,\n default: ''\n },\n footerTag: {\n type: String,\n default: 'div'\n },\n footerClass: {\n type: String,\n default: ''\n },\n\n disabled: {\n type: Boolean,\n default: false\n }\n}\n\nexport const ItemProps = {\n event: {\n type: String\n },\n tag: {\n type: String\n },\n horizontal: {\n type: Boolean\n },\n source: {\n type: Object\n },\n component: {\n type: Object\n },\n uniqueKey: {\n type: String\n }\n}\n\nexport const SlotProps = {\n event: {\n type: String\n },\n uniqueKey: {\n String\n },\n tag: {\n type: String\n },\n horizontal: {\n type: Boolean\n }\n}\n","/**\n * item and slot component both use similar wrapper\n * we need to know their size change at any time.\n */\n\nimport Vue from 'vue'\nimport { ItemProps, SlotProps } from './props'\n\nconst Wrapper = {\n created () {\n this.hasInitial = false\n this.shapeKey = this.horizontal ? 'offsetWidth' : 'offsetHeight'\n },\n\n mounted () {\n // dispatch once at initial.\n this.dispatchSizeChange()\n\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => {\n // dispatch when size changed.\n if (this.hasInitial) {\n this.dispatchSizeChange()\n } else {\n this.hasInitial = true\n }\n })\n this.resizeObserver.observe(this.$el)\n }\n },\n\n beforeDestroy () {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect()\n this.resizeObserver = null\n }\n },\n\n methods: {\n getCurrentSize () {\n return this.$el ? this.$el[this.shapeKey] : 0\n },\n\n // tell parent current size identify by unqiue key.\n dispatchSizeChange () {\n this.$parent.$emit(this.event, this.uniqueKey, this.getCurrentSize(), this.hasInitial)\n }\n }\n}\n\n// wrapping for item.\nexport const Item = Vue.component('virtual-list-item', {\n mixins: [Wrapper],\n\n props: ItemProps,\n\n render (h) {\n return h(this.tag, {\n role: 'item'\n }, [h(this.component, {\n props: this.source\n })])\n }\n})\n\n// wrapping for slot.\nexport const Slot = Vue.component('virtual-list-slot', {\n mixins: [Wrapper],\n\n props: SlotProps,\n\n render (h) {\n return h(this.tag, {\n attrs: {\n role: this.uniqueKey\n }\n }, this.$slots.default)\n }\n})\n","/**\n * virtual list default component.\n */\n\nimport Vue from 'vue'\nimport Virtual from './virtual'\nimport { Item, Slot } from './item'\nimport { VirtualProps } from './props'\n\nconst EVENT_TYPE = {\n ITEM: 'item_resize',\n SLOT: 'slot_resize'\n}\nconst SLOT_TYPE = {\n HEADER: 'header', // string value also use for aria role attribute.\n FOOTER: 'footer'\n}\n\nconst NAME = 'virtual-list'\n\nconst VirtualList = Vue.component(NAME, {\n props: VirtualProps,\n\n data () {\n return {\n range: null\n }\n },\n\n watch: {\n dataSources (newValue, oldValue) {\n if (newValue.length !== oldValue.length) {\n this.virtual.updateParam('uniqueIds', this.getUniqueIdFromDataSources())\n this.virtual.handleDataSourcesChange()\n }\n }\n },\n\n created () {\n this.isHorizontal = this.direction === 'horizontal'\n this.directionKey = this.isHorizontal ? 'scrollLeft' : 'scrollTop'\n\n this.virtual = new Virtual({\n size: this.size, // also could be a estimate value.\n slotHeaderSize: 0,\n slotFooterSize: 0,\n keeps: this.keeps,\n disabled: this.disabled,\n buffer: Math.round(this.keeps / 3), // recommend for a third of keeps.\n uniqueIds: this.getUniqueIdFromDataSources()\n }, this.onRangeChanged)\n\n // just for debug\n // window.virtual = this.virtual\n\n // also need sync initial range first.\n this.range = this.virtual.getRange()\n\n // listen item size changing.\n this.$on(EVENT_TYPE.ITEM, this.onItemResized)\n\n // listen slot size changing.\n if (this.$slots.header || this.$slots.footer) {\n this.$on(EVENT_TYPE.SLOT, this.onSlotResized)\n }\n },\n\n beforeDestroy () {\n this.virtual.destroy()\n },\n\n mounted () {\n // set position.\n if (this.start) {\n this.setScrollOffset(this.virtual.getOffset(this.start))\n } else if (this.offset) {\n this.setScrollOffset(this.offset)\n }\n },\n\n methods: {\n // event called when every item mounted or size changed.\n onItemResized (id, size) {\n this.virtual.saveSize(id, size)\n },\n\n // event called when slot mounted or size changed.\n onSlotResized (type, size, hasInit) {\n if (type === SLOT_TYPE.HEADER) {\n this.virtual.updateParam('slotHeaderSize', size)\n } else if (type === SLOT_TYPE.FOOTER) {\n this.virtual.updateParam('slotFooterSize', size)\n }\n\n if (hasInit) {\n this.virtual.handleSlotSizeChange()\n }\n },\n\n // here is the rerendering entry.\n onRangeChanged (range) {\n this.range = range\n },\n\n onScroll (evt) {\n const { root } = this.$refs\n if (!root) {\n return\n }\n\n const offset = root[this.directionKey]\n this.virtual.handleScroll(offset)\n this.emitEvent(offset, evt)\n },\n\n getUniqueIdFromDataSources () {\n return this.dataSources.map((dataSource) => dataSource[this.dataKey])\n },\n\n // set current scroll position to a expectant offset.\n setScrollOffset (offset) {\n const { root } = this.$refs\n if (root) {\n root[this.directionKey] = offset || 0\n }\n },\n\n // emit event in special position.\n emitEvent (offset, evt) {\n // ref element is definitely available here.\n const { root } = this.$refs\n const range = this.virtual.getRange()\n const isLower = this.virtual.isLower()\n const isUpper = this.virtual.isUpper()\n const offsetShape = root[this.isHorizontal ? 'clientWidth' : 'clientHeight']\n const scrollShape = root[this.isHorizontal ? 'scrollWidth' : 'scrollHeight']\n\n if (isUpper && !!this.dataSources.length && offset - this.upperThreshold <= 0) {\n this.$emit('totop', evt, range)\n } else if (isLower && offset + offsetShape + this.lowerThreshold >= scrollShape) {\n this.$emit('tobottom', evt, range)\n } else {\n this.$emit('scroll', evt, range)\n }\n },\n\n // get the real render slots based on range data.\n getRenderSlots (h) {\n const slots = []\n const start = this.disabled ? 0 : this.range.start\n const end = this.disabled ? this.dataSources.length - 1 : this.range.end\n\n for (let index = start; index <= end; index++) {\n const dataSource = this.dataSources[index]\n if (dataSource) {\n slots.push(h(Item, {\n class: this.itemClass,\n props: {\n tag: this.itemTag,\n event: EVENT_TYPE.ITEM,\n horizontal: this.isHorizontal,\n uniqueKey: dataSource[this.dataKey],\n source: dataSource,\n component: this.dataComponent\n }\n }))\n } else {\n console.warn(`[${NAME}]: cannot get the index ${index} from data-sources.`)\n }\n }\n\n return slots\n }\n },\n\n // render function, a closer-to-the-compiler alternative to templates.\n // https://vuejs.org/v2/guide/render-function.html#The-Data-Object-In-Depth\n render (h) {\n const { header, footer } = this.$slots\n const padding = this.isHorizontal\n ? `0px ${this.range.padBehind}px 0px ${this.range.padFront}px`\n : `${this.range.padFront}px 0px ${this.range.padBehind}px`\n\n return h(this.rootTag, {\n ref: 'root',\n on: {\n '&scroll': this.onScroll\n }\n }, [\n // header slot.\n header ? h(Slot, {\n class: this.headerClass,\n props: {\n tag: this.headerTag,\n event: EVENT_TYPE.SLOT,\n uniqueKey: SLOT_TYPE.HEADER\n }\n }, header) : null,\n\n // main list.\n h(this.wrapTag, {\n class: this.wrapClass,\n attrs: {\n role: 'group'\n },\n style: {\n padding: padding\n }\n }, this.getRenderSlots(h)),\n\n // footer slot.\n footer ? h(Slot, {\n class: this.footerClass,\n props: {\n tag: this.footerTag,\n event: EVENT_TYPE.SLOT,\n uniqueKey: SLOT_TYPE.FOOTER\n }\n }, footer) : null\n ])\n }\n})\n\nexport default VirtualList\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"introduction\",domProps:{\"innerHTML\":_vm._s(_vm.description)}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Introduction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Introduction.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Introduction.vue?vue&type=template&id=0c507b69&scoped=true&\"\nimport script from \"./Introduction.vue?vue&type=script&lang=js&\"\nexport * from \"./Introduction.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Introduction.vue?vue&type=style&index=0&id=0c507b69&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0c507b69\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!!_vm.code)?_c('pre',{class:_vm.type,domProps:{\"innerHTML\":_vm._s(_vm.encode(_vm.code))}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeHighLight.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeHighLight.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CodeHighLight.vue?vue&type=template&id=99fd125a&scoped=true&\"\nimport script from \"./CodeHighLight.vue?vue&type=script&lang=js&\"\nexport * from \"./CodeHighLight.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CodeHighLight.vue?vue&type=style&index=0&id=99fd125a&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"99fd125a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.isMobile)?_c('a',{staticClass:\"github-corner\",attrs:{\"href\":_vm.url,\"aria-label\":\"View source on GitHub\"}},[_c('svg',{staticStyle:{\"fill\":\"#9b4dca\",\"color\":\"#fff\",\"position\":\"absolute\",\"top\":\"0\",\"border\":\"0\",\"right\":\"0\",\"z-index\":\"1000\"},attrs:{\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 250 250\",\"aria-hidden\":\"true\"}},[_c('path',{attrs:{\"d\":\"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z\"}}),_c('path',{staticClass:\"octo-arm\",staticStyle:{\"transform-origin\":\"130px 106px\"},attrs:{\"d\":\"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2\",\"fill\":\"currentColor\"}}),_c('path',{staticClass:\"octo-body\",attrs:{\"d\":\"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z\",\"fill\":\"currentColor\"}})])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Corner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Corner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Corner.vue?vue&type=template&id=821512e4&scoped=true&\"\nimport script from \"./Corner.vue?vue&type=script&lang=js&\"\nexport * from \"./Corner.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Corner.vue?vue&type=style&index=0&id=821512e4&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"821512e4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tab\"},[_c('div',{staticClass:\"tab-item view\",class:{active: _vm.isView},on:{\"click\":_vm.eventClickView}},[_vm._v(\"VIEW\")]),_c('div',{staticClass:\"tab-item code\",class:{active: !_vm.isView},on:{\"click\":_vm.eventClickCode}},[_vm._v(\"CODE\")]),_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isView),expression:\"!isView\"}],staticClass:\"complete-code-url\",attrs:{\"target\":\"_blank\",\"href\":_vm.completeCodeUrl}},[_vm._v(\"COMPLETE CODE\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tab.vue?vue&type=template&id=13711752&scoped=true&\"\nimport script from \"./Tab.vue?vue&type=script&lang=js&\"\nexport * from \"./Tab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tab.vue?vue&type=style&index=0&id=13711752&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13711752\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\nimport router from './router'\n\nimport VirtualList from '../../src/index'\nimport Introduction from './components/Introduction'\nimport CodeHighLight from './components/CodeHighLight'\nimport Corner from './components/Corner'\nimport Tab from './components/Tab'\n\nVue.component('virtual-list', VirtualList)\nVue.component(Introduction.name, Introduction)\nVue.component(CodeHighLight.name, CodeHighLight)\nVue.component(Corner.name, Corner)\nVue.component(Tab.name, Tab)\n\nVue.config.devtools = false\nVue.config.productionTip = false\n\nnew Vue({\n router,\n render: h => h(App)\n}).$mount('#app')\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeHighLight.vue?vue&type=style&index=0&id=99fd125a&lang=less&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeHighLight.vue?vue&type=style&index=0&id=99fd125a&lang=less&scoped=true&\"","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=less&\"","const ua = navigator.userAgent\nconst Android = !!ua.match(/Android/i)\nconst iOS = !!ua.match(/iPhone|iPad|iPod/i)\nexport const isMobile = Android || iOS\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=style&index=0&id=4ac967ef&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Main.vue?vue&type=style&index=0&id=4ac967ef&lang=less&scoped=true&\"","// config and constants.\n\nexport const TOTAL_COUNT = 10000\n\nexport const TAB_TYPE = {\n VIEW: 1,\n CODE: 2\n}\n\nexport const DEFAULT_TAB = TAB_TYPE.VIEW\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Introduction.vue?vue&type=style&index=0&id=0c507b69&lang=less&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Introduction.vue?vue&type=style&index=0&id=0c507b69&lang=less&scoped=true&\""],"sourceRoot":""} \ No newline at end of file diff --git a/example/src/views/Index/Main.vue b/example/src/views/Index/Main.vue index b368b6f..3635539 100644 --- a/example/src/views/Index/Main.vue +++ b/example/src/views/Index/Main.vue @@ -19,7 +19,7 @@

Todos

  • Improve calculate offset efficient.
  • -
  • Support page scroll, table layout.
  • +
  • Support page scroll, table layout, unit test.
  • ......