2022-01-29 14:51:13 +01:00
|
|
|
import SvgWrapper from './svg-wrapper'
|
2022-01-28 16:57:07 +01:00
|
|
|
import Error from './error.js'
|
2022-03-18 19:11:00 +01:00
|
|
|
import Robot from 'shared/components/robot/index.js'
|
2022-01-25 11:22:09 +01:00
|
|
|
|
2022-01-28 16:57:07 +01:00
|
|
|
const LabDraft = props => {
|
2022-03-18 19:11:00 +01:00
|
|
|
const { app, draft, pattern, gist, updateGist, unsetGist, feedback } = props
|
|
|
|
|
2022-01-30 15:14:44 +01:00
|
|
|
if (!draft) return null
|
2022-01-28 16:57:07 +01:00
|
|
|
|
2022-03-24 10:53:57 +01:00
|
|
|
// Render as SVG
|
2022-01-30 15:14:44 +01:00
|
|
|
if (gist?.renderer === 'svg') {
|
|
|
|
let svg
|
|
|
|
try { svg = draft.render() }
|
|
|
|
catch(error) {
|
|
|
|
console.log('Failed to render pattern', error)
|
|
|
|
return <Error error={error} {...props} />
|
|
|
|
}
|
2022-01-28 16:57:07 +01:00
|
|
|
return <div dangerouslySetInnerHTML={{ __html: svg }} />
|
2022-01-30 15:14:44 +01:00
|
|
|
}
|
2022-01-28 13:39:07 +01:00
|
|
|
|
2022-01-28 16:57:07 +01:00
|
|
|
// Render as React
|
|
|
|
let patternProps = {}
|
2022-03-24 10:53:57 +01:00
|
|
|
try { patternProps = draft.getRenderProps() }
|
2022-01-28 16:57:07 +01:00
|
|
|
catch(error) {
|
|
|
|
console.log('Failed to get render props for pattern', error)
|
2022-01-30 15:14:44 +01:00
|
|
|
return <Error error={error} {...props} />
|
2022-01-28 16:57:07 +01:00
|
|
|
}
|
2022-01-25 11:22:09 +01:00
|
|
|
|
|
|
|
return (
|
2022-03-18 19:11:00 +01:00
|
|
|
<>
|
2022-03-24 10:53:57 +01:00
|
|
|
{(!patternProps || patternProps.events.error.length > 0)
|
|
|
|
? <Error draft={draft} patternProps={patternProps} updateGist={updateGist} />
|
|
|
|
: null
|
|
|
|
}
|
2022-03-18 19:11:00 +01:00
|
|
|
<SvgWrapper {...{ draft, patternProps, gist, updateGist, unsetGist, app, feedback }} />
|
|
|
|
</>
|
2022-01-25 11:22:09 +01:00
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export default LabDraft
|