summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/blob/viewer/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/blob/viewer/index.js')
-rw-r--r--app/assets/javascripts/blob/viewer/index.js71
1 files changed, 34 insertions, 37 deletions
diff --git a/app/assets/javascripts/blob/viewer/index.js b/app/assets/javascripts/blob/viewer/index.js
index 742404da46c..3ac419557eb 100644
--- a/app/assets/javascripts/blob/viewer/index.js
+++ b/app/assets/javascripts/blob/viewer/index.js
@@ -5,10 +5,43 @@ import { handleLocationHash } from '../../lib/utils/common_utils';
import axios from '../../lib/utils/axios_utils';
import { __ } from '~/locale';
+const loadRichBlobViewer = type => {
+ switch (type) {
+ case 'balsamiq':
+ return import(/* webpackChunkName: 'balsamiq_viewer' */ '../balsamiq_viewer');
+ case 'notebook':
+ return import(/* webpackChunkName: 'notebook_viewer' */ '../notebook_viewer');
+ case 'openapi':
+ return import(/* webpackChunkName: 'openapi_viewer' */ '../openapi_viewer');
+ case 'pdf':
+ return import(/* webpackChunkName: 'pdf_viewer' */ '../pdf_viewer');
+ case 'sketch':
+ return import(/* webpackChunkName: 'sketch_viewer' */ '../sketch_viewer');
+ case 'stl':
+ return import(/* webpackChunkName: 'stl_viewer' */ '../stl_viewer');
+ default:
+ return Promise.resolve();
+ }
+};
+
+export const handleBlobRichViewer = (viewer, type) => {
+ if (!viewer || !type) return;
+
+ loadRichBlobViewer(type)
+ .then(module => module?.default(viewer))
+ .catch(error => {
+ Flash(__('Error loading file viewer.'));
+ throw error;
+ });
+};
+
export default class BlobViewer {
constructor() {
+ const viewer = document.querySelector('.blob-viewer[data-type="rich"]');
+ const type = viewer?.dataset?.richType;
BlobViewer.initAuxiliaryViewer();
- BlobViewer.initRichViewer();
+
+ handleBlobRichViewer(viewer, type);
this.initMainViewers();
}
@@ -20,42 +53,6 @@ export default class BlobViewer {
BlobViewer.loadViewer(auxiliaryViewer);
}
- static initRichViewer() {
- const viewer = document.querySelector('.blob-viewer[data-type="rich"]');
- if (!viewer || !viewer.dataset.richType) return;
-
- const initViewer = promise =>
- promise
- .then(module => module.default(viewer))
- .catch(error => {
- Flash(__('Error loading file viewer.'));
- throw error;
- });
-
- switch (viewer.dataset.richType) {
- case 'balsamiq':
- initViewer(import(/* webpackChunkName: 'balsamiq_viewer' */ '../balsamiq_viewer'));
- break;
- case 'notebook':
- initViewer(import(/* webpackChunkName: 'notebook_viewer' */ '../notebook_viewer'));
- break;
- case 'openapi':
- initViewer(import(/* webpackChunkName: 'openapi_viewer' */ '../openapi_viewer'));
- break;
- case 'pdf':
- initViewer(import(/* webpackChunkName: 'pdf_viewer' */ '../pdf_viewer'));
- break;
- case 'sketch':
- initViewer(import(/* webpackChunkName: 'sketch_viewer' */ '../sketch_viewer'));
- break;
- case 'stl':
- initViewer(import(/* webpackChunkName: 'stl_viewer' */ '../stl_viewer'));
- break;
- default:
- break;
- }
- }
-
initMainViewers() {
this.$fileHolder = $('.file-holder');
if (!this.$fileHolder.length) return;