migrate balsamiq_viewer to dynamic import
This commit is contained in:
parent
52e133d176
commit
2d8966f7f5
|
@ -7,7 +7,7 @@ function onError() {
|
|||
return flash;
|
||||
}
|
||||
|
||||
function loadBalsamiqFile() {
|
||||
export default function loadBalsamiqFile() {
|
||||
const viewer = document.getElementById('js-balsamiq-viewer');
|
||||
|
||||
if (!(viewer instanceof Element)) return;
|
||||
|
@ -17,5 +17,3 @@ function loadBalsamiqFile() {
|
|||
const balsamiqViewer = new BalsamiqViewer(viewer);
|
||||
balsamiqViewer.loadFile(endpoint).catch(onError);
|
||||
}
|
||||
|
||||
$(loadBalsamiqFile);
|
||||
|
|
|
@ -5,6 +5,7 @@ import axios from '../../lib/utils/axios_utils';
|
|||
export default class BlobViewer {
|
||||
constructor() {
|
||||
BlobViewer.initAuxiliaryViewer();
|
||||
BlobViewer.initRichViewer();
|
||||
|
||||
this.initMainViewers();
|
||||
}
|
||||
|
@ -16,6 +17,26 @@ 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;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
initMainViewers() {
|
||||
this.$fileHolder = $('.file-holder');
|
||||
if (!this.$fileHolder.length) return;
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
- hidden = local_assigns.fetch(:hidden, false)
|
||||
- render_error = viewer.render_error
|
||||
- rich_type = viewer.type == :rich ? viewer.partial_name : nil
|
||||
- load_async = local_assigns.fetch(:load_async, viewer.load_async? && render_error.nil?)
|
||||
|
||||
- viewer_url = local_assigns.fetch(:viewer_url) { url_for(params.merge(viewer: viewer.type, format: :json)) } if load_async
|
||||
.blob-viewer{ data: { type: viewer.type, url: viewer_url }, class: ('hidden' if hidden) }
|
||||
.blob-viewer{ data: { type: viewer.type, rich_type: rich_type, url: viewer_url }, class: ('hidden' if hidden) }
|
||||
- if render_error
|
||||
= render 'projects/blob/render_error', viewer: viewer
|
||||
- elsif load_async
|
||||
|
|
|
@ -1,4 +1 @@
|
|||
- content_for :page_specific_javascripts do
|
||||
= webpack_bundle_tag('balsamiq_viewer')
|
||||
|
||||
.file-content.balsamiq-viewer#js-balsamiq-viewer{ data: { endpoint: blob_raw_path } }
|
||||
|
|
|
@ -43,7 +43,6 @@ function generateEntries() {
|
|||
autoEntriesCount = Object.keys(autoEntries).length;
|
||||
|
||||
const manualEntries = {
|
||||
balsamiq_viewer: './blob/balsamiq_viewer.js',
|
||||
monitoring: './monitoring/monitoring_bundle.js',
|
||||
mr_notes: './mr_notes/index.js',
|
||||
notebook_viewer: './blob/notebook_viewer.js',
|
||||
|
|
Loading…
Reference in New Issue