<div class="lazy-timeline"> {{#if !$initialized}} <div transition:fade> <div class="loading-page"> <LoadingSpinner /> </div> </div> {{/if}} {{#await promise}} {{then constructor}} <:Component {constructor} :timeline /> {{catch error}} <div>Component failed to load. Please try refreshing! {{error}}</div> {{/await}} </div> <style> .lazy-timeline { width: 100%; min-height: 60vh; } .loading-page { position: absolute; top: 0; left: 0; bottom: 0; right: 0; display: flex; align-items: center; justify-content: center; z-index: 50 } </style> <script> import { importTimeline } from '../_utils/asyncModules' import LoadingSpinner from './LoadingSpinner.html' import { fade } from 'svelte-transitions' import { store } from '../_utils/store' export default { oncreate() { let instanceName = this.store.get('currentInstance') let timeline = this.get('timeline') this.store.set({currentTimeline: timeline}) this.store.setForTimeline(instanceName, timeline, {runningUpdate: false}) }, store: () => store, data: () => ({ promise: importTimeline() }), components: { LoadingSpinner }, transitions: { fade } } </script>