/* eslint-disable no-new */ import Vue from 'vue'; import axios from '../../lib/utils/axios_utils'; import notebookLab from '../../notebook/index.vue'; export default () => { const el = document.getElementById('js-notebook-viewer'); new Vue({ el, components: { notebookLab, }, data() { return { error: false, loadError: false, loading: true, json: {}, }; }, mounted() { if (gon.katex_css_url) { const katexStyles = document.createElement('link'); katexStyles.setAttribute('rel', 'stylesheet'); katexStyles.setAttribute('href', gon.katex_css_url); document.head.appendChild(katexStyles); } if (gon.katex_js_url) { const katexScript = document.createElement('script'); katexScript.addEventListener('load', () => { this.loadFile(); }); katexScript.setAttribute('src', gon.katex_js_url); document.head.appendChild(katexScript); } else { this.loadFile(); } }, methods: { loadFile() { axios .get(el.dataset.endpoint) .then(res => res.data) .then(data => { this.json = data; this.loading = false; }) .catch(e => { if (e.status !== 200) { this.loadError = true; } this.error = true; }); }, }, template: `

An error occurred whilst loading the file. Please try again later. An error occurred whilst parsing the file.

`, }); };