Skip to content

Commit 61d4ed2

Browse files
fix: updates all examples to use async mount to async load nutrient viewer
1 parent 1bde84a commit 61d4ed2

File tree

15 files changed

+186
-125
lines changed

15 files changed

+186
-125
lines changed
Lines changed: 62 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,90 @@
11
<script setup>
2+
import { onMounted, onUnmounted, ref } from "vue";
23
import {
34
loadBasicViewer,
45
unloadBasicViewer,
5-
} from "../nutrient/basic-viewer/implementation.js";
6+
} from "../nutrient/basic-viewer/implementation";
7+
import { loadNutrientViewer } from "../nutrient/loadNutrientViewer";
68
79
const containerRef = ref(null);
810
9-
onMounted(async () => {
10-
// Wait for NutrientViewer to be available
11-
while (!window.NutrientViewer) {
12-
await new Promise((resolve) => setTimeout(resolve, 100));
13-
}
11+
let nutrientViewer = null;
1412
13+
onMounted(async () => {
1514
const container = containerRef.value;
16-
const { NutrientViewer } = window;
1715
18-
if (container && NutrientViewer) {
19-
loadBasicViewer(NutrientViewer, container);
16+
if (!container) return;
17+
18+
try {
19+
nutrientViewer = await loadNutrientViewer();
20+
21+
loadBasicViewer(nutrientViewer, container);
22+
} catch (error) {
23+
console.error("Failed to load Nutrient Viewer:", error);
2024
}
2125
});
2226
2327
onUnmounted(() => {
2428
const container = containerRef.value;
25-
const { NutrientViewer } = window;
2629
27-
if (container && NutrientViewer) {
28-
unloadBasicViewer(NutrientViewer, container);
30+
if (nutrientViewer && container) {
31+
unloadBasicViewer(nutrientViewer, container);
2932
}
3033
});
3134
</script>
3235

3336
<template>
34-
<div :style="{ height: '100vh', display: 'flex', flexDirection: 'column' }">
35-
<nav
36-
:style="{
37-
padding: '1rem',
38-
backgroundColor: '#f5f5f5',
39-
borderBottom: '1px solid #ddd',
40-
display: 'flex',
41-
alignItems: 'center',
42-
gap: '1rem',
43-
}"
44-
>
45-
<NuxtLink
46-
to="/"
47-
:style="{
48-
textDecoration: 'none',
49-
color: '#4A8FED',
50-
fontSize: '0.9rem',
51-
}"
52-
>
37+
<div class="basic-viewer-container">
38+
<nav class="basic-viewer-nav">
39+
<router-link to="/" class="basic-viewer-back-link">
5340
← Back to Examples
54-
</NuxtLink>
55-
<h2 :style="{ margin: 0, fontSize: '1.1rem' }">Basic Viewer</h2>
56-
<span :style="{ fontSize: '0.9rem', color: '#666' }">
41+
</router-link>
42+
<h2 class="basic-viewer-title">Basic Viewer</h2>
43+
<span class="basic-viewer-subtitle">
5744
Simple PDF viewing with standard controls
5845
</span>
5946
</nav>
6047

61-
<div ref="containerRef" :style="{ flex: 1, width: '100%' }" />
48+
<div ref="containerRef" class="basic-viewer-content" />
6249
</div>
6350
</template>
51+
52+
<style scoped>
53+
.basic-viewer-container {
54+
height: 100vh;
55+
display: flex;
56+
flex-direction: column;
57+
}
58+
59+
.basic-viewer-nav {
60+
padding: 1rem;
61+
background-color: #f5f5f5;
62+
border-bottom: 1px solid #ddd;
63+
display: flex;
64+
align-items: center;
65+
gap: 1rem;
66+
}
67+
68+
.basic-viewer-back-link {
69+
text-decoration: none;
70+
color: #4a8fed;
71+
font-size: 0.9rem;
72+
}
73+
74+
.basic-viewer-title {
75+
margin: 0;
76+
font-size: 1.1rem;
77+
}
78+
79+
.basic-viewer-subtitle {
80+
font-size: 0.9rem;
81+
color: #666;
82+
}
83+
84+
.basic-viewer-content {
85+
flex: 1;
86+
width: 100%;
87+
position: relative;
88+
min-height: 400px;
89+
}
90+
</style>

frameworks/nuxt/JS/pages/custom-overlays.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ import { loadNutrientViewer } from "../nutrient/loadNutrientViewer";
88
99
const containerRef = ref(null);
1010
11-
onMounted(() => {
11+
let nutrientViewer = null;
12+
13+
onMounted(async () => {
1214
const container = containerRef.value;
1315
1416
if (!container) return;
1517
16-
let nutrientViewer = null;
17-
1818
try {
19-
nutrientViewer = loadNutrientViewer();
19+
nutrientViewer = await loadNutrientViewer();
2020
2121
nutrientViewer.unload(container);
2222

frameworks/nuxt/JS/pages/magazine-mode.vue

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,35 @@
11
<script setup>
2+
import { onMounted, onUnmounted, ref } from "vue";
3+
import { loadNutrientViewer } from "../nutrient/loadNutrientViewer";
24
import {
35
loadMagazineViewer,
46
unloadMagazineViewer,
5-
} from "../nutrient/magazine-mode/implementation.js";
7+
} from "../nutrient/magazine-mode/implementation";
68
79
const containerRef = ref(null);
810
9-
onMounted(async () => {
10-
// Wait for NutrientViewer to be available
11-
while (!window.NutrientViewer) {
12-
await new Promise((resolve) => setTimeout(resolve, 100));
13-
}
11+
let nutrientViewer = null;
1412
13+
onMounted(async () => {
1514
const container = containerRef.value;
16-
const { NutrientViewer } = window;
1715
18-
if (container && NutrientViewer) {
19-
loadMagazineViewer(NutrientViewer, container);
16+
if (!container) return;
17+
18+
try {
19+
nutrientViewer = await loadNutrientViewer();
20+
21+
nutrientViewer.unload(container);
22+
23+
loadMagazineViewer(nutrientViewer, container);
24+
} catch (error) {
25+
console.error("Failed to load Nutrient Viewer:", error);
2026
}
27+
28+
return () => {
29+
if (nutrientViewer && container) {
30+
unloadMagazineViewer(nutrientViewer, container);
31+
}
32+
};
2133
});
2234
2335
onUnmounted(() => {
@@ -42,7 +54,7 @@ onUnmounted(() => {
4254
gap: '1rem',
4355
}"
4456
>
45-
<NuxtLink
57+
<router-link
4658
to="/"
4759
:style="{
4860
textDecoration: 'none',
@@ -51,7 +63,7 @@ onUnmounted(() => {
5163
}"
5264
>
5365
← Back to Examples
54-
</NuxtLink>
66+
</router-link>
5567
<h2 :style="{ margin: 0, fontSize: '1.1rem' }">Magazine Mode</h2>
5668
<span :style="{ fontSize: '0.9rem', color: '#666' }">
5769
Double-page layout with custom toolbar and fullscreen support

frameworks/nuxt/TS/pages/basic-viewer.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<script setup lang="ts">
2-
import type NutrientViewer from "@nutrient-sdk/viewer";
32
import { onMounted, onUnmounted, ref } from "vue";
43
import {
54
loadBasicViewer,
@@ -8,15 +7,17 @@ import {
87
import { loadNutrientViewer } from "../nutrient/loadNutrientViewer";
98
109
const containerRef = ref<HTMLDivElement | null>(null);
11-
let nutrientViewer: ReturnType<typeof loadNutrientViewer>;
10+
11+
let nutrientViewer: Awaited<ReturnType<typeof loadNutrientViewer>> | null =
12+
null;
1213
1314
onMounted(async () => {
1415
const container = containerRef.value;
1516
1617
if (!container) return;
1718
1819
try {
19-
nutrientViewer = loadNutrientViewer();
20+
nutrientViewer = await loadNutrientViewer();
2021
2122
loadBasicViewer(nutrientViewer, container);
2223
} catch (error) {

frameworks/nuxt/TS/pages/custom-overlays.vue

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,16 @@ import { loadNutrientViewer } from "../nutrient/loadNutrientViewer";
88
99
const containerRef = ref<HTMLDivElement | null>(null);
1010
11-
onMounted(() => {
11+
let nutrientViewer: Awaited<ReturnType<typeof loadNutrientViewer>> | null =
12+
null;
13+
14+
onMounted(async () => {
1215
const container = containerRef.value;
1316
1417
if (!container) return;
1518
16-
let nutrientViewer: ReturnType<typeof loadNutrientViewer>;
17-
1819
try {
19-
nutrientViewer = loadNutrientViewer();
20+
nutrientViewer = await loadNutrientViewer();
2021
2122
nutrientViewer.unload(container);
2223

frameworks/nuxt/TS/pages/magazine-mode.vue

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,16 @@ import {
88
99
const containerRef = ref<HTMLDivElement | null>(null);
1010
11-
onMounted(() => {
11+
let nutrientViewer: Awaited<ReturnType<typeof loadNutrientViewer>> | null =
12+
null;
13+
14+
onMounted(async () => {
1215
const container = containerRef.value;
1316
1417
if (!container) return;
1518
16-
let nutrientViewer: ReturnType<typeof loadNutrientViewer>;
17-
1819
try {
19-
nutrientViewer = loadNutrientViewer();
20+
nutrientViewer = await loadNutrientViewer();
2021
2122
nutrientViewer.unload(container);
2223

frameworks/sveltekit/js/src/lib/pages/BasicViewerPage.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ onMount(async () => {
1313
if (!container) return;
1414
1515
try {
16-
nutrientViewer = loadNutrientViewer();
16+
nutrientViewer = await loadNutrientViewer();
1717
1818
loadBasicViewer(nutrientViewer, container);
1919
} catch (error) {

frameworks/sveltekit/js/src/lib/pages/CustomOverlaysPage.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ onMount(async () => {
1313
if (!container) return;
1414
1515
try {
16-
nutrientViewer = loadNutrientViewer();
16+
nutrientViewer = await loadNutrientViewer();
1717
1818
loadCustomOverlaysViewer(nutrientViewer, container);
1919
} catch (error) {

frameworks/sveltekit/js/src/lib/pages/MagazineModePage.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ onMount(async () => {
1313
if (!container) return;
1414
1515
try {
16-
nutrientViewer = loadNutrientViewer();
16+
nutrientViewer = await loadNutrientViewer();
1717
1818
loadMagazineViewer(nutrientViewer, container);
1919
} catch (error) {

frameworks/sveltekit/ts/src/lib/pages/BasicViewerPage.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ onMount(async () => {
1414
if (!container) return;
1515
1616
try {
17-
nutrientViewer = loadNutrientViewer();
17+
nutrientViewer = await loadNutrientViewer();
1818
1919
loadBasicViewer(nutrientViewer, container);
2020
} catch (error) {

0 commit comments

Comments
 (0)