diff --git a/src/components/Blockly/BlocklyComponent.css b/src/components/Blockly/BlocklyComponent.css
deleted file mode 100644
index 8705fbc..0000000
--- a/src/components/Blockly/BlocklyComponent.css
+++ /dev/null
@@ -1,7 +0,0 @@
-#blocklyDiv {
- height: 100%;
- min-height: 500px;
- width: 100%;
- /* border: 1px solid #4EAF47; */
- position: relative;
-}
diff --git a/src/components/Blockly/BlocklyComponent.jsx b/src/components/Blockly/BlocklyComponent.jsx
index 627df9a..e76de57 100644
--- a/src/components/Blockly/BlocklyComponent.jsx
+++ b/src/components/Blockly/BlocklyComponent.jsx
@@ -22,7 +22,6 @@
*/
import React from 'react';
-import './BlocklyComponent.css';
import Blockly from 'blockly/core';
import locale from 'blockly/msg/en';
diff --git a/src/components/Blockly/BlocklySvg.js b/src/components/Blockly/BlocklySvg.js
new file mode 100644
index 0000000..174b7c3
--- /dev/null
+++ b/src/components/Blockly/BlocklySvg.js
@@ -0,0 +1,65 @@
+import React, { Component } from 'react';
+
+import * as Blockly from 'blockly/core';
+
+class BlocklySvg extends Component {
+
+ constructor(props) {
+ super(props);
+ this.state = {
+ svg: ''
+ };
+ }
+
+ componentDidMount() {
+ this.getSvg();
+ }
+
+ componentDidUpdate(props) {
+ if(props.initialXml !== this.props.initialXml){
+ this.getSvg();
+ }
+ }
+
+ getSvg = () => {
+ const workspace = Blockly.getMainWorkspace();
+ workspace.clear();
+ Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(this.props.initialXml), workspace);
+ var canvas = workspace.svgBlockCanvas_.cloneNode(true);
+
+ if (canvas.children[0] !== undefined) {
+ canvas.removeAttribute("transform");
+
+ // does not work in react
+ // var cssContent = Blockly.Css.CONTENT.join('');
+ var cssContent = '';
+ for (var i = 0; i < document.getElementsByTagName('style').length; i++) {
+ if(/^blockly.*$/.test(document.getElementsByTagName('style')[i].id)){
+ cssContent += document.getElementsByTagName('style')[i].firstChild.data.replace(/\..* \./g, '.');
+ }
+ }
+
+ var css = '';
+
+ var bbox = document.getElementsByClassName("blocklyBlockCanvas")[0].getBBox();
+ var content = new XMLSerializer().serializeToString(canvas);
+
+ var xml = ``;
+
+ this.setState({svg: xml});
+ }
+ }
+
+ render() {
+ return (
+
+ );
+ };
+}
+
+export default BlocklySvg;
diff --git a/src/components/Blockly/BlocklyWindow.js b/src/components/Blockly/BlocklyWindow.js
index a31cd15..7512870 100644
--- a/src/components/Blockly/BlocklyWindow.js
+++ b/src/components/Blockly/BlocklyWindow.js
@@ -3,7 +3,8 @@ import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { onChangeWorkspace, clearStats } from '../../actions/workspaceActions';
import * as De from './msg/de';
-import BlocklyComponent from './';
+import BlocklyComponent from './BlocklyComponent';
+import BlocklySvg from './BlocklySvg';
import * as Blockly from 'blockly/core';
import './blocks/index';
import './generator/index';
@@ -32,49 +33,52 @@ class BlocklyWindow extends Component {
componentDidUpdate(props) {
const workspace = Blockly.getMainWorkspace();
- var initialXML = this.props.initialXml
- if(props.initialXml !== initialXml){
+ var xml = this.props.initialXml
+ // if svg is true, then the update process is done in the BlocklySvg component
+ if(props.initialXml !== xml && !this.props.svg){
// guarantees that the current xml-code (this.props.initialXml) is rendered
workspace.clear();
- if(!initialXML) initialXML = initialXml;
- Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(initialXML), workspace) ;
+ if(!xml) xml = initialXml;
+ Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(xml), workspace);
}
Blockly.svgResize(workspace);
}
render() {
return (
-
-
-
+
+
+
+ {this.props.svg && this.props.initialXml ? : null}
+
);
};
}
diff --git a/src/components/Home.js b/src/components/Home.js
index 1f2b6a4..af14068 100644
--- a/src/components/Home.js
+++ b/src/components/Home.js
@@ -87,7 +87,7 @@ class Home extends Component {
-
+
{this.state.codeOn ?
diff --git a/src/components/Tutorial/Assessment.js b/src/components/Tutorial/Assessment.js
index bfce041..36d107f 100644
--- a/src/components/Tutorial/Assessment.js
+++ b/src/components/Tutorial/Assessment.js
@@ -39,7 +39,10 @@ class Assessment extends Component {
-
+
diff --git a/src/components/Tutorial/Builder/BlocklyExample.js b/src/components/Tutorial/Builder/BlocklyExample.js
index ea8e81b..ef7b590 100644
--- a/src/components/Tutorial/Builder/BlocklyExample.js
+++ b/src/components/Tutorial/Builder/BlocklyExample.js
@@ -114,7 +114,10 @@ class BlocklyExample extends Component {
-
+