mirror of
https://github.com/Doodle3D/Doodle3D-Core.git
synced 2024-12-22 19:13:49 +01:00
move file import to App.js
This commit is contained in:
parent
524781b9f1
commit
9226bed73a
32
index.js
32
index.js
@ -26,37 +26,7 @@ import actionWrapper from 'redux-action-wrapper';
|
|||||||
import * as actions from './src/actions/index.js';
|
import * as actions from './src/actions/index.js';
|
||||||
window.actions = actionWrapper(actions, store.dispatch);
|
window.actions = actionWrapper(actions, store.dispatch);
|
||||||
|
|
||||||
import JSONToSketchData from './src/shape/JSONToSketchData.js';
|
// add inital shapes
|
||||||
window.addEventListener('drop', async (event) => {
|
|
||||||
event.preventDefault();
|
|
||||||
|
|
||||||
for (const file of event.dataTransfer.files) {
|
|
||||||
const [name, ...extentions] = file.name.split('.');
|
|
||||||
|
|
||||||
switch (extentions.pop().toUpperCase()) {
|
|
||||||
case 'D3SKETCH':
|
|
||||||
case 'JSON':
|
|
||||||
const url = URL.createObjectURL(file);
|
|
||||||
const data = await fetch(url).then(result => result.json());
|
|
||||||
const sketchData = await JSONToSketchData(data);
|
|
||||||
store.dispatch(actions.openSketch({data:sketchData}));
|
|
||||||
break;
|
|
||||||
case 'JPG':
|
|
||||||
case 'JPEG':
|
|
||||||
case 'PNG':
|
|
||||||
case 'GIF':
|
|
||||||
await store.dispatch(actions.addImage(file));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
window.addEventListener('dragover', (event) => {
|
|
||||||
event.preventDefault();
|
|
||||||
});
|
|
||||||
|
|
||||||
import * as CAL from 'cal';
|
import * as CAL from 'cal';
|
||||||
store.dispatch(actions.addObject({
|
store.dispatch(actions.addObject({
|
||||||
type: 'STAR',
|
type: 'STAR',
|
||||||
|
@ -2,7 +2,7 @@ import React from 'react';
|
|||||||
import PropTypes from 'proptypes';
|
import PropTypes from 'proptypes';
|
||||||
import injectSheet from 'react-jss';
|
import injectSheet from 'react-jss';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import * as actions from '../actions';
|
import * as actions from '../actions/index.js';
|
||||||
import Logo from './Logo.js';
|
import Logo from './Logo.js';
|
||||||
import D2Panel from './D2Panel.js';
|
import D2Panel from './D2Panel.js';
|
||||||
import D3Panel from './D3Panel.js';
|
import D3Panel from './D3Panel.js';
|
||||||
@ -58,15 +58,55 @@ const styles = {
|
|||||||
|
|
||||||
class App extends React.Component {
|
class App extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
|
openSketch: PropTypes.func.isRequired,
|
||||||
|
addImage: PropTypes.func.isRequired,
|
||||||
undo: PropTypes.func.isRequired,
|
undo: PropTypes.func.isRequired,
|
||||||
redo: PropTypes.func.isRequired,
|
redo: PropTypes.func.isRequired,
|
||||||
classes: PropTypes.objectOf(PropTypes.string)
|
classes: PropTypes.objectOf(PropTypes.string)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
const { container } = this.refs;
|
||||||
|
|
||||||
|
container.addEventListener('dragover', event => event.preventDefault());
|
||||||
|
container.addEventListener('drop', this.onDrop);
|
||||||
|
}
|
||||||
|
|
||||||
|
onDrop = async event => {
|
||||||
|
const { openSketch, addImage } = this.props;
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
for (const file of event.dataTransfer.files) {
|
||||||
|
const [name, ...extentions] = file.name.split('.');
|
||||||
|
|
||||||
|
switch (extentions.pop().toUpperCase()) {
|
||||||
|
case 'D3SKETCH':
|
||||||
|
case 'JSON':
|
||||||
|
const url = URL.createObjectURL(file);
|
||||||
|
const data = await fetch(url).then(result => result.json());
|
||||||
|
const sketchData = await JSONToSketchData(data);
|
||||||
|
openSketch({ data: sketchData });
|
||||||
|
break;
|
||||||
|
case 'JPG':
|
||||||
|
case 'JPEG':
|
||||||
|
case 'PNG':
|
||||||
|
case 'GIF':
|
||||||
|
await addImage(file);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
container.removeEventListener('drop', this.onDrop);
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { classes, undo, redo } = this.props;
|
const { classes, undo, redo } = this.props;
|
||||||
return (
|
return (
|
||||||
<div className={classes.container}>
|
<div ref="container" className={classes.container}>
|
||||||
<InlineIconsLoader />
|
<InlineIconsLoader />
|
||||||
<div className={classes.appContainer}>
|
<div className={classes.appContainer}>
|
||||||
<D2Panel />
|
<D2Panel />
|
||||||
@ -84,8 +124,9 @@ class App extends React.Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export default injectSheet(styles)(connect(null, {
|
export default injectSheet(styles)(connect(null, {
|
||||||
undo: actions.undo.undo,
|
undo: actions.undo.undo,
|
||||||
redo: actions.undo.redo
|
redo: actions.undo.redo,
|
||||||
|
openSketch: actions.openSketch,
|
||||||
|
addImage: actions.addImage,
|
||||||
})(App));
|
})(App));
|
||||||
|
Loading…
Reference in New Issue
Block a user