diff --git a/package.json b/package.json
index 3a485a08..d97367f1 100644
--- a/package.json
+++ b/package.json
@@ -41,6 +41,7 @@
"devDependencies": {
"autoprefixer": "^7.1.0",
"babel-core": "^6.24.1",
+ "babel-eslint": "^10.0.3",
"babel-jest": "^20.0.3",
"babel-loader": "^7.0.0",
"babel-plugin-transform-class-properties": "^6.19.0",
diff --git a/src/.eslintrc b/src/.eslintrc
index a24d701e..ae42e644 100644
--- a/src/.eslintrc
+++ b/src/.eslintrc
@@ -1,6 +1,6 @@
{
"rules": {
- "react/prop-types": [0, {customValidators: ["skipUndeclared"]}],
+ "react/prop-types": [0, { "customValidators": ["skipUndeclared"] }],
"jsx-a11y/media-has-caption": [0],
"jsx-a11y/anchor-has-content": [0],
"jsx-a11y/no-static-element-interactions": [0],
@@ -11,13 +11,14 @@
"no-mixed-operators": [0],
"max-len": [0],
"react/no-unused-prop-types": [0],
- "react/no-did-mount-set-state": [0],
+ "react/no-did-mount-set-state": [0]
},
+ "parser": "babel-eslint",
"extends": "airbnb",
"globals": {
- XMLHttpRequest: true,
- XDomainRequest: true,
- document: true,
- window: true
+ "XMLHttpRequest": true,
+ "XDomainRequest": true,
+ "document": true,
+ "window": true
}
}
diff --git a/src/components/drivers/docx-viewer.jsx b/src/components/drivers/docx-viewer.jsx
index 54490a21..c73a4df2 100644
--- a/src/components/drivers/docx-viewer.jsx
+++ b/src/components/drivers/docx-viewer.jsx
@@ -7,6 +7,7 @@ import 'styles/docx.scss';
import Loading from '../loading';
export default class extends Component {
+ divRef = React.createRef();
componentDidMount() {
const jsonFile = new XMLHttpRequest();
jsonFile.open('GET', this.props.filePath, true);
@@ -14,28 +15,31 @@ export default class extends Component {
jsonFile.responseType = 'arraybuffer';
jsonFile.onreadystatechange = () => {
if (jsonFile.readyState === 4 && jsonFile.status === 200) {
- mammoth.convertToHtml(
- { arrayBuffer: jsonFile.response },
- { includeDefaultStyleMap: true },
- )
- .then((result) => {
- const docEl = document.createElement('div');
- docEl.className = 'document-container';
- docEl.innerHTML = result.value;
- document.getElementById('docx').innerHTML = docEl.outerHTML;
- })
- .catch((a) => {
- console.log('alexei: something went wrong', a);
- })
- .done();
+ mammoth
+ .convertToHtml(
+ { arrayBuffer: jsonFile.response },
+ { includeDefaultStyleMap: true },
+ )
+ .then(result => {
+ const docEl = document.createElement('div');
+ docEl.className = 'document-container';
+ docEl.innerHTML = result.value;
+ if (this.divRef.current)
+ this.divRef.current.innerHTML = docEl.outerHTML;
+ })
+ .catch(a => {
+ console.log('alexei: something went wrong', a);
+ })
+ .done();
}
};
}
render() {
return (
-
+ );
}
}
diff --git a/src/components/drivers/photo-viewer.jsx b/src/components/drivers/photo-viewer.jsx
index e82456a0..8a513228 100644
--- a/src/components/drivers/photo-viewer.jsx
+++ b/src/components/drivers/photo-viewer.jsx
@@ -5,14 +5,21 @@ import React, { Component } from 'react';
import 'styles/photo-viewer.scss';
export default class PhotoViewer extends Component {
+ divRef = React.createRef();
+
componentDidMount() {
const { originalWidth, originalHeight } = this.props;
- const imageDimensions = this.getImageDimensions.call(this, originalWidth, originalHeight);
+ const imageDimensions = this.getImageDimensions.call(
+ this,
+ originalWidth,
+ originalHeight,
+ );
this.props.texture.image.style.width = `${imageDimensions.width}px`;
this.props.texture.image.style.height = `${imageDimensions.height}px`;
this.props.texture.image.setAttribute('class', 'photo');
- document.getElementById('pg-photo-container').appendChild(this.props.texture.image);
+ if (this.divRef.current)
+ this.divRef.current.appendChild(this.props.texture.image);
}
getImageDimensions(originalWidth, originalHeight) {
@@ -46,7 +53,11 @@ export default class PhotoViewer extends Component {
};
return (
-
+
);
}
}
diff --git a/src/components/drivers/photo360-viewer.jsx b/src/components/drivers/photo360-viewer.jsx
index ded8705c..5d9fb157 100644
--- a/src/components/drivers/photo360-viewer.jsx
+++ b/src/components/drivers/photo360-viewer.jsx
@@ -5,6 +5,7 @@ import * as THREE from 'three';
import 'styles/photo360.scss';
export default class extends Component {
+ divRef = React.createRef();
constructor(props) {
super(props);
let savedX;
@@ -28,8 +29,7 @@ export default class extends Component {
}
componentDidMount() {
- const el = document.getElementById('360-photo');
- const positionInfo = el.getBoundingClientRect();
+ const positionInfo = this.divRef.current.getBoundingClientRect();
const height = positionInfo.height;
const width = positionInfo.width;
@@ -89,15 +89,20 @@ export default class extends Component {
});
}
-
updateView() {
const latitude = Math.max(-85, Math.min(85, this.state.latitude));
// moving the camera according to current latitude (vertical movement)
// and longitude (horizontal movement)
- this.camera.target.x = 500 * Math.sin(THREE.Math.degToRad(90 - latitude)) * Math.cos(THREE.Math.degToRad(this.state.longitude));
+ this.camera.target.x =
+ 500 *
+ Math.sin(THREE.Math.degToRad(90 - latitude)) *
+ Math.cos(THREE.Math.degToRad(this.state.longitude));
this.camera.target.y = 500 * Math.cos(THREE.Math.degToRad(90 - latitude));
- this.camera.target.z = 500 * Math.sin(THREE.Math.degToRad(90 - latitude)) * Math.sin(THREE.Math.degToRad(this.state.longitude));
+ this.camera.target.z =
+ 500 *
+ Math.sin(THREE.Math.degToRad(90 - latitude)) *
+ Math.sin(THREE.Math.degToRad(this.state.longitude));
this.camera.lookAt(this.camera.target);
this.renderer.render(this.scene, this.camera);
@@ -106,7 +111,7 @@ export default class extends Component {
render() {
return (