{{#await promise}}
<div class="loading-page">
  {{#if trueValue}} <!-- hack to get the transition to work -->
    <div transition:fade>
      <LoadingSpinner />
    </div>
  {{/if}}
</div>
{{then constructor}}
<:Component {constructor} :target />
{{catch error}}
<div>Component failed to load. Please try refreshing! {{error}}</div>
{{/await}}
<style>
  .loading-page {
    width: 100%;
    min-height: 50vh;
    display: flex;
    align-items: center;
    justify-content: center;
  }
</style>
<script>
  import { importTimeline } from '../_utils/asyncModules'
  import LoadingSpinner from './LoadingSpinner.html'
  import { fade } from 'svelte-transitions'

  export default {
    data: () => ({
      promise: importTimeline(),
      trueValue: true
    }),
    components: {
      LoadingSpinner
    },
    transitions: {
      fade
    }
  }
</script>