✨ Added export to components/Workbench
This commit is contained in:
parent
e3035747dc
commit
0ae95f64ad
6 changed files with 77 additions and 51 deletions
|
@ -80,6 +80,7 @@ components:
|
|||
"@material-ui/icons": "^4.0.1"
|
||||
"@material-ui/lab": "^v4.0.0-alpha.14"
|
||||
"prismjs": "1.16.0"
|
||||
"file-saver": "^2.0.2"
|
||||
core:
|
||||
_:
|
||||
"bezier-js": "^2.2.13"
|
||||
|
|
|
@ -26,25 +26,27 @@
|
|||
"watch": "BABEL_ENV=production rollup -c -w -o dist/index.js -f cjs"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.8",
|
||||
"prop-types": "15.7.2",
|
||||
"@freesewing/pattern-info": "^2.0.0-beta.32",
|
||||
"@freesewing/mui-theme": "^2.0.0-beta.32",
|
||||
"@freesewing/css-theme": "^2.0.0-beta.32",
|
||||
"@freesewing/core": "^2.0.0-beta.32",
|
||||
"@freesewing/css-theme": "^2.0.0-beta.32",
|
||||
"@freesewing/examples": "^2.0.0-beta.32",
|
||||
"@freesewing/i18n": "^2.0.0-beta.32",
|
||||
"@freesewing/mui-theme": "^2.0.0-beta.32",
|
||||
"@freesewing/pattern-info": "^2.0.0-beta.32",
|
||||
"@freesewing/rendertest": "^2.0.0-beta.32",
|
||||
"@freesewing/tutorial": "^2.0.0-beta.32",
|
||||
"typeface-roboto-condensed": "latest",
|
||||
"@freesewing/i18n": "^2.0.0-beta.32",
|
||||
"@freesewing/utils": "^2.0.0-beta.32",
|
||||
"react-intl": "^2.8.0",
|
||||
"@material-ui/core": "^4.0.1",
|
||||
"@material-ui/icons": "^4.0.1",
|
||||
"@material-ui/lab": "^v4.0.0-alpha.14",
|
||||
"prismjs": "1.16.0"
|
||||
"prismjs": "1.16.0",
|
||||
"prop-types": "15.7.2",
|
||||
"react": "^16.8",
|
||||
"react-intl": "^2.8.0",
|
||||
"typeface-roboto-condensed": "latest"
|
||||
},
|
||||
"dependencies": {
|
||||
"file-saver": "2.0.2"
|
||||
},
|
||||
"dependencies": {},
|
||||
"devDependencies": {},
|
||||
"files": [
|
||||
"Blockquote/*",
|
||||
|
|
|
@ -13,20 +13,23 @@ const Footer = props => {
|
|||
instagram: "https://instagram.com/freesewing_org",
|
||||
facebook: "https://facebook.com/freesewing.org/"
|
||||
};
|
||||
const links = {
|
||||
docs: {
|
||||
blog: "https://" + props.language + ".freesewing.org/blog",
|
||||
aboutFreesewing:
|
||||
"https://" + props.language + ".freesewing.org/docs/about",
|
||||
faq: "https://" + props.language + ".freesewing.org/docs/faq"
|
||||
},
|
||||
community: {
|
||||
becomeAPatron:
|
||||
"https://" + props.language + ".freesewing.org/patrons/join",
|
||||
makerDocs: "https://" + props.language + ".freesewing.org/docs/",
|
||||
devDocs: "https://" + props.language + ".freesewing.dev/"
|
||||
}
|
||||
};
|
||||
const links =
|
||||
props.links === false
|
||||
? {
|
||||
left: {
|
||||
blog: "https://" + props.language + ".freesewing.org/blog",
|
||||
aboutFreesewing:
|
||||
"https://" + props.language + ".freesewing.org/docs/about",
|
||||
faq: "https://" + props.language + ".freesewing.org/docs/faq"
|
||||
},
|
||||
right: {
|
||||
becomeAPatron:
|
||||
"https://" + props.language + ".freesewing.org/patrons/join",
|
||||
makerDocs: "https://" + props.language + ".freesewing.org/docs/",
|
||||
devDocs: "https://" + props.language + ".freesewing.dev/"
|
||||
}
|
||||
}
|
||||
: props.links;
|
||||
const styles = {
|
||||
container: {
|
||||
display: "flex",
|
||||
|
@ -57,7 +60,7 @@ const Footer = props => {
|
|||
items.push(
|
||||
<li
|
||||
key={i}
|
||||
style={{ textAlign: l === "docs" ? "right" : "left" }}
|
||||
style={{ textAlign: l === "left" ? "right" : "left" }}
|
||||
>
|
||||
<a href={links[l][i]}>
|
||||
<FormattedMessage id={"app." + i} />
|
||||
|
@ -78,6 +81,7 @@ const Footer = props => {
|
|||
};
|
||||
|
||||
Footer.defaultProps = {
|
||||
home: "/"
|
||||
home: "/",
|
||||
links: false
|
||||
};
|
||||
export default Footer;
|
||||
|
|
|
@ -5,6 +5,8 @@ import Design from "../Design";
|
|||
import DraftConfigurator from "../../DraftConfigurator";
|
||||
import { FormattedMessage } from "react-intl";
|
||||
import Prism from "prismjs";
|
||||
import fileSaver from "file-saver";
|
||||
import theme from "@freesewing/plugin-theme";
|
||||
|
||||
const DraftPattern = props => {
|
||||
const [design, setDesign] = useState(true);
|
||||
|
@ -30,6 +32,23 @@ const DraftPattern = props => {
|
|||
setFocus(f);
|
||||
};
|
||||
|
||||
const svgToFile = svg => {
|
||||
const blob = new Blob([svg], {
|
||||
type: "image/svg+xml;charset=utf-8"
|
||||
});
|
||||
fileSaver.saveAs(blob, "freesewing-" + props.config.name + ".svg");
|
||||
};
|
||||
|
||||
if (props.svgExport) {
|
||||
svgToFile(
|
||||
new props.Pattern(props.gist.settings)
|
||||
.use(theme)
|
||||
.draft()
|
||||
.render()
|
||||
);
|
||||
props.setSvgExport(false);
|
||||
}
|
||||
|
||||
const styles = {
|
||||
paragraph: {
|
||||
padding: "0 1rem"
|
||||
|
@ -56,6 +75,8 @@ const DraftPattern = props => {
|
|||
return (
|
||||
<div className="fs-sa">
|
||||
<section>
|
||||
<h5>REMOVEME</h5>
|
||||
<pre>{JSON.stringify(props.svgExport, null, 2)}</pre>
|
||||
<h2>
|
||||
<FormattedMessage id="app.pattern" />
|
||||
</h2>
|
||||
|
|
|
@ -21,6 +21,7 @@ const Workbench = props => {
|
|||
const [pattern, setPattern] = useState(false);
|
||||
const [theme, setTheme] = useState("light");
|
||||
const [measurements, setMeasurements] = useState(null);
|
||||
const [svgExport, setSvgExport] = useState(false);
|
||||
useEffect(() => {
|
||||
let m = getMeasurements();
|
||||
setMeasurements(m);
|
||||
|
@ -28,19 +29,13 @@ const Workbench = props => {
|
|||
setDisplay(getDisplay());
|
||||
props.setLanguage(props.userLanguage || "en");
|
||||
}, []);
|
||||
useEffect(
|
||||
() => {
|
||||
if (props.from) props.importGist(props.from);
|
||||
},
|
||||
[props.from]
|
||||
);
|
||||
useEffect(
|
||||
() => {
|
||||
if (props.language !== props.gist.settings.locale)
|
||||
props.updateGist(props.language, "settings", "locale");
|
||||
},
|
||||
[props.language]
|
||||
);
|
||||
useEffect(() => {
|
||||
if (props.from) props.importGist(props.from);
|
||||
}, [props.from]);
|
||||
useEffect(() => {
|
||||
if (props.language !== props.gist.settings.locale)
|
||||
props.updateGist(props.language, "settings", "locale");
|
||||
}, [props.language]);
|
||||
|
||||
const getDisplay = () => storage.get(props.config.name + "-display");
|
||||
const saveDisplay = d => {
|
||||
|
@ -125,6 +120,13 @@ const Workbench = props => {
|
|||
}
|
||||
}
|
||||
};
|
||||
if (display === "draft" && !measurementsMissing())
|
||||
navs.left.svgExport = {
|
||||
type: "button",
|
||||
onClick: () => setSvgExport(true),
|
||||
text: "app.export",
|
||||
active: false
|
||||
};
|
||||
// FIXME:
|
||||
navs.mleft = navs.left;
|
||||
navs.mright = navs.right;
|
||||
|
@ -149,6 +151,8 @@ const Workbench = props => {
|
|||
updateGist={props.updateGist}
|
||||
raiseEvent={raiseEvent}
|
||||
units={props.units}
|
||||
svgExport={svgExport}
|
||||
setSvgExport={setSvgExport}
|
||||
/>
|
||||
);
|
||||
break;
|
||||
|
|
18
yarn.lock
18
yarn.lock
|
@ -8034,6 +8034,11 @@ file-loader@3.0.1, file-loader@^3.0.1:
|
|||
loader-utils "^1.0.2"
|
||||
schema-utils "^1.0.0"
|
||||
|
||||
file-saver@2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-2.0.2.tgz#06d6e728a9ea2df2cce2f8d9e84dfcdc338ec17a"
|
||||
integrity sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw==
|
||||
|
||||
file-system-cache@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-1.0.5.tgz#84259b36a2bbb8d3d6eb1021d3132ffe64cfff4f"
|
||||
|
@ -16610,17 +16615,6 @@ rollup-plugin-sass@^1.2.2:
|
|||
rollup-pluginutils ">= 1.3.1"
|
||||
sass "1.7.2"
|
||||
|
||||
rollup-plugin-terser@5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.1.1.tgz#e9d2545ec8d467f96ba99b9216d2285aad8d5b66"
|
||||
integrity sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0"
|
||||
jest-worker "^24.6.0"
|
||||
rollup-pluginutils "^2.8.1"
|
||||
serialize-javascript "^1.7.0"
|
||||
terser "^4.1.0"
|
||||
|
||||
rollup-plugin-terser@^4.0.4:
|
||||
version "4.0.4"
|
||||
resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-4.0.4.tgz#6f661ef284fa7c27963d242601691dc3d23f994e"
|
||||
|
@ -18099,7 +18093,7 @@ terser@^3.14.1, terser@^3.16.1, terser@^3.8.0:
|
|||
source-map "~0.6.1"
|
||||
source-map-support "~0.5.10"
|
||||
|
||||
terser@^4.0.0, terser@^4.1.0:
|
||||
terser@^4.0.0:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.2.tgz#b2656c8a506f7ce805a3f300a2ff48db022fa391"
|
||||
integrity sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw==
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue