diff --git a/src/App.vue b/src/App.vue
index f19efef..a601dd0 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,6 +1,7 @@
-
+
+
diff --git a/src/components/ControlPanel.vue b/src/components/ControlPanel.vue
new file mode 100644
index 0000000..2764d66
--- /dev/null
+++ b/src/components/ControlPanel.vue
@@ -0,0 +1,5 @@
+
+
+
Control Panel
+
+
diff --git a/src/components/SpeckleViewer.vue b/src/components/SpeckleViewer.vue
index 33c24b3..98d445b 100644
--- a/src/components/SpeckleViewer.vue
+++ b/src/components/SpeckleViewer.vue
@@ -14,6 +14,8 @@ const { init: initViewer, viewer, loadModelFromUrl } = useViewer()
onMounted(async () => {
if (!canvas.value) return
await initViewer(canvas.value)
- await loadModelFromUrl('https://app.speckle.systems/projects/24c98619ac/models/38639656b8')
+ await loadModelFromUrl(
+ 'https://app.speckle.systems/projects/24c98619ac/models/38639656b8'
+ )
})
diff --git a/src/composables/viewer.ts b/src/composables/viewer.ts
index 19dffd5..767babd 100644
--- a/src/composables/viewer.ts
+++ b/src/composables/viewer.ts
@@ -8,9 +8,9 @@ import {
Viewer,
} from '@speckle/viewer'
-export default function useViewer() {
- const viewer = ref(null)
+let viewer: Viewer | null = null
+export default function useViewer() {
/**
* Initialize the viewer
* @param element - HTMLDivElement to initialize the viewer on
@@ -22,11 +22,13 @@ export default function useViewer() {
params.verbose = true
// Create the viewer instance on the element
- viewer.value = new Viewer(element, params)
+ viewer = new Viewer(element, params)
+
+ await viewer.init()
// Add the stock camera controller and selection extensions
- viewer.value.createExtension(CameraController)
- viewer.value.createExtension(SelectionExtension)
+ viewer.createExtension(CameraController)
+ viewer.createExtension(SelectionExtension)
}
/**
@@ -34,12 +36,12 @@ export default function useViewer() {
* @param url - The URL of the Speckle model
*/
const loadModelFromUrl = async (url: string) => {
- if (!viewer.value) return
+ if (!viewer) return
const urls = await UrlHelper.getResourceUrls(url)
urls.forEach(async (url) => {
- const loader = new SpeckleLoader(viewer.value.getWorldTree(), url, '')
- await viewer.value.loadObject(loader, true)
+ const loader = new SpeckleLoader(viewer.getWorldTree(), url, '')
+ await viewer.loadObject(loader, true)
})
}