diff --git a/packages/components/src/Workbench/DraftPattern/index.js b/packages/components/src/Workbench/DraftPattern/index.js
index f093ec304e1..6cdc4e0736b 100644
--- a/packages/components/src/Workbench/DraftPattern/index.js
+++ b/packages/components/src/Workbench/DraftPattern/index.js
@@ -1,43 +1,42 @@
-import React, { useState } from "react";
-import PropTypes from "prop-types";
-import Draft from "../../Draft";
-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";
+import React, { useState } from 'react'
+import PropTypes from 'prop-types'
+import Draft from '../../Draft'
+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);
- const [focus, setFocus] = useState(null);
+ const [design, setDesign] = useState(true)
+ const [focus, setFocus] = useState(null)
const raiseEvent = (type, data) => {
- if (type === "clearFocusAll") {
- props.updateGist(false, "settings", "only");
- return setFocus(null);
+ if (type === 'clearFocusAll') {
+ props.updateGist(false, 'settings', 'only')
+ return setFocus(null)
}
- let f = {};
- if (focus !== null) f = { ...focus };
- if (typeof f[data.part] === "undefined")
- f[data.part] = { paths: [], points: [], coords: [] };
- if (type === "point") f[data.part].points.push(data.name);
- else if (type === "path") f[data.part].paths.push(data.name);
- else if (type === "coords") f[data.part].coords.push(data.coords);
- else if (type === "clearFocus") {
- let i = focus[data.part][data.type].indexOf(data.name);
- f[data.part][data.type].splice(i, 1);
- } else if (type === "part") props.updateGist(data, "settings", "only");
+ let f = {}
+ if (focus !== null) f = { ...focus }
+ if (typeof f[data.part] === 'undefined') f[data.part] = { paths: [], points: [], coords: [] }
+ if (type === 'point') f[data.part].points.push(data.name)
+ else if (type === 'path') f[data.part].paths.push(data.name)
+ else if (type === 'coords') f[data.part].coords.push(data.coords)
+ else if (type === 'clearFocus') {
+ let i = focus[data.part][data.type].indexOf(data.name)
+ f[data.part][data.type].splice(i, 1)
+ } else if (type === 'part') props.updateGist(data, 'settings', 'only')
- setFocus(f);
- };
+ 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");
- };
+ type: 'image/svg+xml;charset=utf-8'
+ })
+ fileSaver.saveAs(blob, 'freesewing-' + props.config.name + '.svg')
+ }
if (props.svgExport) {
svgToFile(
@@ -48,32 +47,32 @@ const DraftPattern = props => {
.use(theme)
.draft()
.render()
- );
- props.setSvgExport(false);
+ )
+ props.setSvgExport(false)
}
const styles = {
paragraph: {
- padding: "0 1rem"
+ padding: '0 1rem'
}
- };
- let pattern = new props.Pattern(props.gist.settings);
- pattern.draft();
- let patternProps = pattern.getRenderProps();
- let focusCount = 0;
+ }
+ let pattern = new props.Pattern(props.gist.settings)
+ pattern.draft()
+ let patternProps = pattern.getRenderProps()
+ let focusCount = 0
if (focus !== null) {
for (let p of Object.keys(focus)) {
- for (let i in focus[p].points) focusCount++;
- for (let i in focus[p].paths) focusCount++;
- for (let i in focus[p].coords) focusCount++;
+ for (let i in focus[p].points) focusCount++
+ for (let i in focus[p].paths) focusCount++
+ for (let i in focus[p].coords) focusCount++
}
}
let gist = Prism.highlight(
JSON.stringify(props.gist, null, 2),
Prism.languages.javascript,
- "javascript"
- );
+ 'javascript'
+ )
return (
- );
-};
+ )
+}
DraftPattern.propTypes = {
gist: PropTypes.object.isRequired,
@@ -158,12 +146,12 @@ DraftPattern.propTypes = {
config: PropTypes.object.isRequired,
raiseEvent: PropTypes.func.isRequired,
Pattern: PropTypes.func.isRequired,
- units: PropTypes.oneOf(["metric", "imperial"])
-};
+ units: PropTypes.oneOf(['metric', 'imperial'])
+}
DraftPattern.defaultProps = {
- units: "metric",
+ units: 'metric',
pointInfo: null
-};
+}
-export default DraftPattern;
+export default DraftPattern
diff --git a/packages/components/src/Workbench/index.js b/packages/components/src/Workbench/index.js
index 2cb1f55b861..b1e3b9e7bbc 100644
--- a/packages/components/src/Workbench/index.js
+++ b/packages/components/src/Workbench/index.js
@@ -1,147 +1,142 @@
-import React, { useState, useEffect } from "react";
-import PropTypes from "prop-types";
-import withGist from "../withGist";
-import { MuiThemeProvider, createMuiTheme } from "@material-ui/core/styles";
-import Navbar from "../Navbar";
-import defaultGist from "@freesewing/utils/defaultGist";
-import storage from "@freesewing/utils/storage";
-import { dark, light } from "@freesewing/mui-theme";
-import withLanguage from "../withLanguage";
-import LanguageIcon from "@material-ui/icons/Translate";
-import DarkModeIcon from "@material-ui/icons/Brightness3";
-import LanguageChooser from "./LanguageChooser";
-import DraftPattern from "./DraftPattern";
-import SamplePattern from "./SamplePattern";
-import Welcome from "./Welcome";
-import Footer from "../Footer";
-import Measurements from "./Measurements";
+import React, { useState, useEffect } from 'react'
+import PropTypes from 'prop-types'
+import withGist from '../withGist'
+import { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles'
+import Navbar from '../Navbar'
+import defaultGist from '@freesewing/utils/defaultGist'
+import storage from '@freesewing/utils/storage'
+import { dark, light } from '@freesewing/mui-theme'
+import withLanguage from '../withLanguage'
+import LanguageIcon from '@material-ui/icons/Translate'
+import DarkModeIcon from '@material-ui/icons/Brightness3'
+import LanguageChooser from './LanguageChooser'
+import DraftPattern from './DraftPattern'
+import SamplePattern from './SamplePattern'
+import Welcome from './Welcome'
+import Footer from '../Footer'
+import Measurements from './Measurements'
const Workbench = props => {
- const [display, setDisplay] = useState(null);
- const [pattern, setPattern] = useState(false);
- const [theme, setTheme] = useState("light");
- const [measurements, setMeasurements] = useState(null);
- const [svgExport, setSvgExport] = useState(false);
+ const [display, setDisplay] = useState(null)
+ 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);
- props.updateGist(m, "settings", "measurements");
- setDisplay(getDisplay());
- props.setLanguage(props.userLanguage || "en");
- }, []);
+ let m = getMeasurements()
+ setMeasurements(m)
+ props.updateGist(m, 'settings', 'measurements')
+ setDisplay(getDisplay())
+ props.setLanguage(props.userLanguage || 'en')
+ }, [])
useEffect(() => {
- if (props.from) props.importGist(props.from);
- }, [props.from]);
+ 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]);
+ props.updateGist(props.language, 'settings', 'locale')
+ }, [props.language])
- const getDisplay = () => storage.get(props.config.name + "-display");
+ const getDisplay = () => storage.get(props.config.name + '-display')
const saveDisplay = d => {
- setDisplay(d);
- storage.set(props.config.name + "-display", d);
- };
- const getMeasurements = () =>
- storage.get(props.config.name + "-measurements");
+ setDisplay(d)
+ storage.set(props.config.name + '-display', d)
+ }
+ const getMeasurements = () => storage.get(props.config.name + '-measurements')
const saveMeasurements = data => {
- storage.set(props.config.name + "-measurements", data);
- props.updateGist(data, "settings", "measurements");
- };
+ storage.set(props.config.name + '-measurements', data)
+ props.updateGist(data, 'settings', 'measurements')
+ }
const updateMeasurement = (name, val) => {
- let updatedMeasurements = { ...measurements };
- updatedMeasurements[name] = val;
- setMeasurements(updatedMeasurements);
- saveMeasurements(updatedMeasurements);
- };
+ let updatedMeasurements = { ...measurements }
+ updatedMeasurements[name] = val
+ setMeasurements(updatedMeasurements)
+ saveMeasurements(updatedMeasurements)
+ }
const preloadMeasurements = model => {
let updatedMeasurements = {
...measurements,
...model
- };
- setMeasurements(updatedMeasurements);
- saveMeasurements(updatedMeasurements);
- };
+ }
+ setMeasurements(updatedMeasurements)
+ saveMeasurements(updatedMeasurements)
+ }
const measurementsMissing = () => {
- let required = props.config.measurements;
- if (required.length < 1) return false;
- if (measurements === null) return true;
+ let required = props.config.measurements
+ if (required.length < 1) return false
+ if (measurements === null) return true
for (let m of required) {
- if (typeof measurements[m] === "undefined") return true;
+ if (typeof measurements[m] === 'undefined') return true
}
- return false;
- };
+ return false
+ }
const toggleDarkMode = () => {
- if (theme === "light") setTheme("dark");
- else setTheme("light");
- };
- const raiseEvent = (type = null, data = null) => {};
+ if (theme === 'light') setTheme('dark')
+ else setTheme('light')
+ }
+ const raiseEvent = (type = null, data = null) => {}
const navs = {
left: {
draft: {
- type: "button",
- onClick: () => saveDisplay("draft"),
- text: "cfp.draftYourPattern",
- active: display === "draft" ? true : false
+ type: 'button',
+ onClick: () => saveDisplay('draft'),
+ text: 'cfp.draftYourPattern',
+ active: display === 'draft' ? true : false
},
sample: {
- type: "button",
- onClick: () => saveDisplay("sample"),
- text: "cfp.testYourPattern",
- active: display === "sample" ? true : false
+ type: 'button',
+ onClick: () => saveDisplay('sample'),
+ text: 'cfp.testYourPattern',
+ active: display === 'sample' ? true : false
},
measurements: {
- type: "button",
- onClick: () => saveDisplay("measurements"),
- text: "app.measurements",
- active: display === "measurements" ? true : false
+ type: 'button',
+ onClick: () => saveDisplay('measurements'),
+ text: 'app.measurements',
+ active: display === 'measurements' ? true : false
}
},
right: {
version: {
- type: "link",
- href: "https://github.com/freesewing/freesewing/releases",
- text: "v" + props.freesewing.version
+ type: 'link',
+ href: 'https://github.com/freesewing/freesewing/releases',
+ text: 'v' + props.freesewing.version
},
language: {
- type: "button",
- onClick: () => saveDisplay("languages"),
+ type: 'button',
+ onClick: () => saveDisplay('languages'),
text: ,
- title: "Languages",
- active: display === "languages" ? true : false
+ title: 'Languages',
+ active: display === 'languages' ? true : false
},
dark: {
- type: "button",
+ type: 'button',
onClick: toggleDarkMode,
text: ,
- title: "Toggle dark mode"
+ title: 'Toggle dark mode'
}
}
- };
- if (display === "draft" && !measurementsMissing())
+ }
+ if (display === 'draft' && !measurementsMissing())
navs.left.svgExport = {
- type: "button",
+ type: 'button',
onClick: () => setSvgExport(true),
- text: "app.export",
+ text: 'app.export',
active: false
- };
+ }
// FIXME:
- navs.mleft = navs.left;
- navs.mright = navs.right;
- let main = null;
+ navs.mleft = navs.left
+ navs.mright = navs.right
+ let main = null
switch (display) {
- case "languages":
- main = (
-
- );
- break;
- case "draft":
- if (measurementsMissing()) saveDisplay("measurements");
+ case 'languages':
+ main =
+ break
+ case 'draft':
+ if (measurementsMissing()) saveDisplay('measurements')
main = (
{
svgExport={svgExport}
setSvgExport={setSvgExport}
/>
- );
- break;
- case "sample":
- if (measurementsMissing()) saveDisplay("measurements");
+ )
+ break
+ case 'sample':
+ if (measurementsMissing()) saveDisplay('measurements')
main = (
{
raiseEvent={raiseEvent}
units={props.units}
/>
- );
- break;
- case "measurements":
+ )
+ break
+ case 'measurements':
main = (
{
preloadMeasurements={preloadMeasurements}
language={props.language}
/>
- );
- break;
+ )
+ break
default:
- main = ;
+ main =
}
- const themes = { dark, light };
+ const themes = { dark, light }
return (
-
- {display !== "welcome" ? (
-
saveDisplay("welcome")} />
- ) : null}
+
+ {display !== 'welcome' ? saveDisplay('welcome')} /> : null}
{main}
- {display !== "welcome" ? : null}
+ {display !== 'welcome' ? : null}
- );
-};
+ )
+}
Workbench.propTypes = {
freesewing: PropTypes.object.isRequired,
Pattern: PropTypes.func.isRequired,
config: PropTypes.object.isRequired,
from: PropTypes.object
-};
+}
Workbench.defaultProps = {
from: { settings: { embed: true } }
-};
+}
export default withLanguage(
withGist(Workbench, {
gist: defaultGist,
store: true
}),
- "en"
-);
+ 'en'
+)