/ src / components / PageResolver.svelte
PageResolver.svelte
 1  <script lang="ts">
 2      import type { Page } from '~/jet/models';
 3  
 4      import PageComponent from '~/components/Page.svelte';
 5      import ErrorComponent from '~/components/Error.svelte';
 6      import LoadingSpinner from '@amp/web-app-components/src/components/LoadingSpinner/LoadingSpinner.svelte';
 7  
 8      export let page: Promise<Page> | Page;
 9      export let isFirstPage: boolean;
10  </script>
11  
12  {#await page}
13      <div data-testid="page-loading">
14          <!--
15              Delay showing the spinner on initial page load after app boot.
16              After that, the FlowAction handler already waits 500ms before
17              it changes DOM, so we only need to wait 1000ms.
18          -->
19          <LoadingSpinner delay={isFirstPage ? 1500 : 1000} />
20      </div>
21  {:then page}
22      <PageComponent {page} />
23  {:catch error}
24      <ErrorComponent {error} />
25  {/await}