| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  | <div class="timeline"> | 
					
						
							| 
									
										
										
										
											2018-01-16 21:43:31 -08:00
										 |  |  |   <VirtualList component="{{StatusListItem}}" | 
					
						
							|  |  |  |                items="{{statuses}}" | 
					
						
							|  |  |  |                on:scrollToBottom="addMoreItems()" /> | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  | </div> | 
					
						
							| 
									
										
										
										
											2018-01-16 20:34:09 -08:00
										 |  |  | <style> | 
					
						
							|  |  |  |   .timeline { | 
					
						
							|  |  |  |     min-height: 50vh; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | </style> | 
					
						
							| 
									
										
										
										
											2018-01-08 18:14:21 -08:00
										 |  |  | <script> | 
					
						
							|  |  |  |   import { store } from '../_utils/store' | 
					
						
							| 
									
										
										
										
											2018-01-13 14:19:51 -08:00
										 |  |  |   import { getHomeTimeline } from '../_utils/mastodon/oauth' | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |   import fixture from '../_utils/fixture.json' | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  |   import StatusListItem from './StatusListItem.html' | 
					
						
							|  |  |  |   import VirtualList from './VirtualList.html' | 
					
						
							| 
									
										
										
										
											2018-01-17 00:06:24 -08:00
										 |  |  |   import { splice, push } from 'svelte-extras' | 
					
						
							| 
									
										
										
										
											2018-01-17 00:59:15 -08:00
										 |  |  |   import { mark, stop } from '../_utils/marks' | 
					
						
							| 
									
										
										
										
											2018-01-15 12:23:28 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   let i = -1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 23:16:15 -08:00
										 |  |  |   const createData = () => fixture.slice(0, 20).map(_ => ({ | 
					
						
							| 
									
										
										
										
											2018-01-15 12:23:28 -08:00
										 |  |  |     key: `${++i}`, | 
					
						
							|  |  |  |     props: _ | 
					
						
							|  |  |  |   })) | 
					
						
							| 
									
										
										
										
											2018-01-08 18:14:21 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   export default { | 
					
						
							|  |  |  |     data: () => ({ | 
					
						
							|  |  |  |       target: 'home', | 
					
						
							| 
									
										
										
										
											2018-01-15 12:23:28 -08:00
										 |  |  |       statuses: createData(), | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  |       StatusListItem: StatusListItem | 
					
						
							| 
									
										
										
										
											2018-01-08 18:14:21 -08:00
										 |  |  |     }), | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |     store: () => store, | 
					
						
							|  |  |  |     components: { | 
					
						
							| 
									
										
										
										
											2018-01-15 10:54:02 -08:00
										 |  |  |       VirtualList | 
					
						
							| 
									
										
										
										
											2018-01-15 12:23:28 -08:00
										 |  |  |     }, | 
					
						
							|  |  |  |     methods: { | 
					
						
							|  |  |  |       splice: splice, | 
					
						
							| 
									
										
										
										
											2018-01-17 00:06:24 -08:00
										 |  |  |       push: push, | 
					
						
							| 
									
										
										
										
											2018-01-15 12:23:28 -08:00
										 |  |  |       addMoreItems() { | 
					
						
							| 
									
										
										
										
											2018-01-17 00:59:15 -08:00
										 |  |  |         mark('addMoreItems') | 
					
						
							| 
									
										
										
										
											2018-01-16 23:16:15 -08:00
										 |  |  |         let statuses = this.get('statuses') | 
					
						
							|  |  |  |         if (statuses) { | 
					
						
							| 
									
										
										
										
											2018-01-17 00:06:24 -08:00
										 |  |  |           let itemsToAdd = createData() | 
					
						
							|  |  |  |           this.splice('statuses', statuses.length, 0, ...itemsToAdd) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-01-17 00:59:15 -08:00
										 |  |  |         stop('addMoreItems') | 
					
						
							| 
									
										
										
										
											2018-01-15 12:23:28 -08:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-01-08 18:14:21 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | </script> |