react-floorplanner
Version:
react-floorplanner is a React Component for plans design. Draw a 2D floorplan and navigate it in 3D mode.
66 lines (52 loc) • 1.88 kB
JavaScript
export function browserDownload(json) {
var fileOutputLink = document.createElement('a');
var filename = "output" + Date.now() + ".json";
filename = window.prompt("Insert output filename", filename);
if (!filename) return;
var output = JSON.stringify(json);
var data = new Blob([output], {type: 'text/plain'});
var url = window.URL.createObjectURL(data);
fileOutputLink.setAttribute('download', filename);
fileOutputLink.href = url;
fileOutputLink.style.display = 'none';
document.body.appendChild(fileOutputLink);
fileOutputLink.click();
document.body.removeChild(fileOutputLink);
}
export function browserUpload() {
return new Promise(function (resolve, reject) {
var fileInput = document.createElement('input');
fileInput.type = "file";
fileInput.addEventListener('change', function (event) {
var file = event.target.files[0];
var reader = new FileReader();
reader.addEventListener('load', (fileEvent) => {
var loadedData = fileEvent.target.result;
resolve(loadedData);
});
reader.readAsText(file);
});
fileInput.click();
});
}
export function browserImageUpload() {
return new Promise(function (resolve, reject) {
var fileInput = document.createElement('input');
fileInput.type = "file";
fileInput.addEventListener('change', function (event) {
var file = event.target.files[0];
var reader = new FileReader();
reader.addEventListener('load', (fileEvent) => {
var loadedData = fileEvent.target.result;
var fileInput = document.createElement('input');
var image = new Image();
image.onload = ()=> {
resolve({data: loadedData, width: image.width, height: image.height});
};
image.src = loadedData;
});
reader.readAsDataURL(file);
});
fileInput.click();
});
}