1
0
Fork 0
freesewing/sites/shared/components/workbench/draft/index.mjs

64 lines
1.5 KiB
JavaScript
Raw Normal View History

import { SvgWrapper } from './svg.mjs'
import { Error } from './error.mjs'
2022-01-25 11:22:09 +01:00
export const LabDraft = (props) => {
const { app, draft, gist, updateGist, unsetGist, showInfo, feedback, hasRequiredMeasurements } =
props
if (!draft || !hasRequiredMeasurements) return null
2022-01-28 16:57:07 +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) {
2022-06-17 12:02:09 +02:00
console.log('Failed to render design', error)
2022-01-30 15:14:44 +01:00
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 16:57:07 +01:00
// Render as React
let patternProps = {}
try {
patternProps = draft.getRenderProps()
} catch (error) {
2022-06-17 12:02:09 +02:00
console.log('Failed to get render props for design', error)
return (
<Error
error={error}
2023-02-05 19:58:25 +01:00
patternLogs={patternProps.store.logs}
setLogs={patternProps.setStores[0].logs}
updateGist={updateGist}
/>
)
2022-01-28 16:57:07 +01:00
}
2022-01-25 11:22:09 +01:00
const errors = []
errors.push(...patternProps.logs.pattern.error)
for (const set of patternProps.logs.sets) {
errors.push(...set.error)
}
2022-01-25 11:22:09 +01:00
return (
<>
2023-02-05 16:30:12 +01:00
{errors.length > 0 ? (
<Error
{...{
draft,
patternProps,
updateGist,
patternLogs: draft.store.logs,
setLogs: draft.setStores[0].logs,
2023-02-05 16:30:12 +01:00
errors,
}}
/>
) : null}
<SvgWrapper
{...{ draft, patternProps, gist, updateGist, unsetGist, showInfo, app, feedback }}
/>
</>
2022-01-25 11:22:09 +01:00
)
}