| 
									
										
										
										
											2018-01-15 17:25:32 -08:00
										 |  |  | <:Window bind:scrollY='scrollY' bind:innerHeight='innerHeight'/> | 
					
						
							| 
									
										
										
										
											2018-01-15 12:23:28 -08:00
										 |  |  | <div class="virtual-list" ref:node style="height: {{$height}}px;"> | 
					
						
							|  |  |  |   <!-- <div class="virtual-list-viewport" ref:viewport></div> --> | 
					
						
							| 
									
										
										
										
											2018-01-15 17:25:32 -08:00
										 |  |  |   {{#each $visibleItems as item @key}} | 
					
						
							|  |  |  |   <VirtualListItem :component | 
					
						
							|  |  |  |                    offset="{{item.offset}}" | 
					
						
							|  |  |  |                    props="{{item.props}}" | 
					
						
							|  |  |  |                    key="{{item.key}}" | 
					
						
							|  |  |  |   /> | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  |   {{/each}} | 
					
						
							|  |  |  | </div> | 
					
						
							|  |  |  | <style> | 
					
						
							|  |  |  |   .virtual-list { | 
					
						
							|  |  |  |     position: relative; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | </style> | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  |   import VirtualListItem from './VirtualListItem' | 
					
						
							| 
									
										
										
										
											2018-01-15 12:23:28 -08:00
										 |  |  |   import { virtualListStore } from '../_utils/virtualListStore' | 
					
						
							| 
									
										
										
										
											2018-01-15 16:35:08 -08:00
										 |  |  |   import debounce from 'lodash/debounce' | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-15 17:25:32 -08:00
										 |  |  |   const DEBOUNCE_TIME = 200 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  |   export default { | 
					
						
							| 
									
										
										
										
											2018-01-15 17:25:32 -08:00
										 |  |  |     oncreate () { | 
					
						
							|  |  |  |       this.observe('innerHeight', debounce(innerHeight => { | 
					
						
							| 
									
										
										
										
											2018-01-15 16:35:08 -08:00
										 |  |  |         console.log('setting innerHeight', innerHeight) | 
					
						
							| 
									
										
										
										
											2018-01-15 16:12:07 -08:00
										 |  |  |         this.store.set({ | 
					
						
							|  |  |  |           innerHeight: innerHeight | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2018-01-15 17:25:32 -08:00
										 |  |  |       }, DEBOUNCE_TIME)) | 
					
						
							| 
									
										
										
										
											2018-01-15 12:23:28 -08:00
										 |  |  |       this.observe('items', (items) => { | 
					
						
							| 
									
										
										
										
											2018-01-15 16:35:08 -08:00
										 |  |  |         console.log('setting items') | 
					
						
							| 
									
										
										
										
											2018-01-15 16:12:07 -08:00
										 |  |  |         this.store.set({ | 
					
						
							|  |  |  |           'items': items | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  |       }) | 
					
						
							| 
									
										
										
										
											2018-01-15 16:35:08 -08:00
										 |  |  |       this.observe('scrollY', debounce((scrollY) => { | 
					
						
							|  |  |  |         console.log('setting scrollY', scrollY) | 
					
						
							| 
									
										
										
										
											2018-01-15 16:12:07 -08:00
										 |  |  |         this.store.set({ | 
					
						
							|  |  |  |           scrollTop: scrollY | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2018-01-15 17:25:32 -08:00
										 |  |  |       }, DEBOUNCE_TIME)) | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  |     }, | 
					
						
							|  |  |  |     data: () => ({ | 
					
						
							| 
									
										
										
										
											2018-01-15 12:23:28 -08:00
										 |  |  |       component: null | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  |     }), | 
					
						
							| 
									
										
										
										
											2018-01-15 12:23:28 -08:00
										 |  |  |     store: () => virtualListStore, | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  |     components: { | 
					
						
							|  |  |  |       VirtualListItem | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | </script> |