itk-vtk-image-viewer
Version:
ITK/VTK Image Viewer
40 lines (31 loc) • 1.41 kB
JavaScript
import vtkURLExtract from 'vtk.js/Sources/Common/Core/URLExtract';
import getRootContainer from './getRootContainer';
import preventDefaults from './preventDefaults';
import style from './ItkVtkImageViewer.mcss';
function createFileDragAndDrop(container, onDataChange) {
const myContainer = getRootContainer(container);
const fileContainer = document.createElement('div');
fileContainer.innerHTML = `<div class="${
style.bigFileDrop
}"/><input type="file" class="file" style="display: none;" multiple/>`;
myContainer.appendChild(fileContainer);
const fileInput = fileContainer.querySelector('input');
function handleFile(e) {
preventDefaults(e);
const dataTransfer = e.dataTransfer;
const files = e.target.files || dataTransfer.files;
myContainer.removeChild(fileContainer);
const use2D = !!vtkURLExtract.extractURLParameters().use2D;
onDataChange(myContainer, { files, use2D })
.catch((error) => {
const message = 'An error occurred while loading the file:\n\n' + error.message
alert(message);
createFileDragAndDrop(container, onDataChange);
})
}
fileInput.addEventListener('change', handleFile);
fileContainer.addEventListener('drop', handleFile);
fileContainer.addEventListener('click', (e) => fileInput.click());
fileContainer.addEventListener('dragover', preventDefaults);
}
export default createFileDragAndDrop;