From dea6d92272b8a371fa235c941aa9340d31995359 Mon Sep 17 00:00:00 2001
From: Jeff Avallone
Date: Sat, 17 Feb 2018 10:45:03 -0500
Subject: [PATCH] Reorganizing the rendering flow
---
package.json | 1 -
src/components/App/__snapshots__/test.js.snap | 5 ----
src/components/App/index.js | 30 +++++++++++--------
src/components/SVG/Image.js | 19 ------------
yarn.lock | 4 ---
5 files changed, 17 insertions(+), 42 deletions(-)
diff --git a/package.json b/package.json
index 0be8e47..d2216cc 100644
--- a/package.json
+++ b/package.json
@@ -157,7 +157,6 @@
"react-i18next": "^7.3.6",
"style-loader": "^0.20.1",
"svg-react-loader": "^0.4.5",
- "throttle-debounce": "^1.0.1",
"uglifyjs-webpack-plugin": "^1.1.8",
"webpack": "^3.10.0",
"webpack-merge": "^4.1.1",
diff --git a/src/components/App/__snapshots__/test.js.snap b/src/components/App/__snapshots__/test.js.snap
index be4115a..c75a758 100644
--- a/src/components/App/__snapshots__/test.js.snap
+++ b/src/components/App/__snapshots__/test.js.snap
@@ -29,10 +29,5 @@ exports[`App rendering 1`] = `
Sample warning message
-
- Testing image
-
`;
diff --git a/src/components/App/index.js b/src/components/App/index.js
index 1d9fab7..d5537c6 100644
--- a/src/components/App/index.js
+++ b/src/components/App/index.js
@@ -1,7 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
import { translate } from 'react-i18next';
-import { debounce } from 'throttle-debounce';
import style from './style.css';
@@ -12,13 +11,13 @@ import { syntaxes, demoImage } from 'devel';
class App extends React.PureComponent {
state = {
- syntaxes,
- image: demoImage
+ syntaxes
}
- setSvgUrl({ markup }) {
+ setSvgUrl(element) {
try {
const type = 'image/svg+xml';
+ const markup = element.outerHTML;
const blob = new Blob([markup], { type });
this.setState({
@@ -35,9 +34,10 @@ class App extends React.PureComponent {
}
}
- async setPngUrl({ element, markup }) {
+ async setPngUrl(element) {
try {
const type = 'image/png';
+ const markup = element.outerHTML;
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
const loader = new Image();
@@ -67,15 +67,19 @@ class App extends React.PureComponent {
}
}
- handleRender = debounce(0, result => {
- this.setSvgUrl(result);
- this.setPngUrl(result);
- })
-
handleSubmit = ({expr, syntax}) => {
console.log(syntax, expr); // eslint-disable-line no-console
+ this.setState({
+ image: demoImage
+ }, async () => {
+ await this.image.doReflow();
+ this.setSvgUrl(this.image.svg);
+ this.setPngUrl(this.image.svg);
+ });
}
+ imageRef = image => this.image = image
+
render() {
const { svgUrl, pngUrl, syntaxes, image } = this.state;
const downloadUrls = [
@@ -95,9 +99,9 @@ class App extends React.PureComponent {
Sample warning message
-
- { renderImage(image, { onRender: this.handleRender }) }
-
+ { image &&
+ { renderImage(image, { ref: this.imageRef }) }
+
}
;
}
}
diff --git a/src/components/SVG/Image.js b/src/components/SVG/Image.js
index f106f0d..4caf920 100644
--- a/src/components/SVG/Image.js
+++ b/src/components/SVG/Image.js
@@ -32,24 +32,6 @@ class Image extends Base {
height: 0
}
- componentDidMount() {
- this.doReflow().then(() => this.publishMarkup());
- }
-
- componentDidUpdate() {
- this.doReflow().then(() => this.publishMarkup());
- }
-
- publishMarkup() {
- const { onRender } = this.props;
- const markup = this.svg.outerHTML;
-
- if (onRender && this.publishedMarkup !== markup) {
- this.publishedMarkup = markup;
- onRender({ element: this.svg, markup: this.svg.outerHTML });
- }
- }
-
preReflow() {
return this.contained;
}
@@ -96,7 +78,6 @@ class Image extends Base {
Image.propTypes = {
children: PropTypes.node,
- onRender: PropTypes.func,
padding: PropTypes.number
};
diff --git a/yarn.lock b/yarn.lock
index 3c9f3cd..fa32320 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7785,10 +7785,6 @@ throat@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
-throttle-debounce@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-1.0.1.tgz#dad0fe130f9daf3719fdea33dc36a8e6ba7f30b5"
-
throttleit@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"