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