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

79 lines
2.1 KiB
JavaScript
Raw Normal View History

2022-08-24 11:03:11 -05:00
import { useEffect, useState } from 'react'
2022-02-20 18:46:21 +01:00
import { useTranslation } from 'next-i18next'
2023-02-05 16:30:12 +01:00
import { PrintLayoutSettings } from './settings.mjs'
import { Draft } from '../draft/index.mjs'
2023-02-19 16:24:46 +02:00
import { pagesPlugin } from '../plugin-layout-part.mjs'
import {
handleExport,
defaultPdfSettings,
} from 'shared/components/workbench/exporting/export-handler.mjs'
import { Popout } from 'shared/components/popout.mjs'
2022-02-20 18:46:21 +01:00
export const PrintLayout = (props) => {
2022-08-14 16:50:16 -05:00
// disable xray
useEffect(() => {
if (props.gist?._state?.xray?.enabled) props.updateGist(['_state', 'xray', 'enabled'], false)
2022-11-14 16:53:31 -06:00
})
const { t } = useTranslation(['workbench', 'plugin'])
2022-08-24 11:03:11 -05:00
const [error, setError] = useState(false)
2022-02-20 18:46:21 +01:00
const draft = props.draft
2022-08-17 13:11:22 -05:00
2022-08-14 16:50:16 -05:00
// add the pages plugin to the draft
2022-08-23 11:08:40 -05:00
const layoutSettings = {
...defaultPdfSettings,
...props.gist?._state?.layout?.forPrinting?.page,
2022-08-23 11:08:40 -05:00
}
draft.use(pagesPlugin(layoutSettings))
2022-08-14 16:50:16 -05:00
2022-02-20 18:46:21 +01:00
let patternProps
try {
2022-08-14 16:50:16 -05:00
// draft the pattern
2022-02-20 18:46:21 +01:00
draft.draft()
patternProps = draft.getRenderProps()
} catch (err) {
2022-03-06 18:54:30 +01:00
console.log(err, props.gist)
2022-02-20 18:46:21 +01:00
}
const bgProps = { fill: 'none' }
2022-02-20 18:46:21 +01:00
const exportIt = () => {
2022-08-24 11:03:11 -05:00
setError(false)
handleExport(
'pdf',
props.gist,
props.design,
t,
props.app,
2022-11-14 16:53:31 -06:00
() => setError(false),
() => setError(true)
)
}
let name = props.design.designConfig.data.name
name = name.replace('@freesewing/', '')
2022-02-20 18:46:21 +01:00
return (
<div>
<h2 className="capitalize">{t('layoutThing', { thing: name }) + ': ' + t('forPrinting')}</h2>
2022-02-20 18:46:21 +01:00
<div className="m-4">
2023-02-05 16:30:12 +01:00
<PrintLayoutSettings {...{ ...props, exportIt, layoutSettings }} draft={draft} />
2022-08-24 11:03:11 -05:00
{error && (
<Popout warning compact>
<span className="font-bold mr-4 uppercase text-sm">{t('error')}:</span>
2022-08-24 11:03:11 -05:00
{t('somethingWentWrong')}
</Popout>
)}
2022-02-20 18:46:21 +01:00
</div>
<Draft
draft={draft}
gist={props.gist}
2022-02-25 08:30:03 +01:00
updateGist={props.updateGist}
2022-02-20 18:46:21 +01:00
patternProps={patternProps}
bgProps={bgProps}
2022-06-28 02:02:51 -05:00
gistReady={props.gistReady}
layoutPart="pages"
2022-02-20 18:46:21 +01:00
/>
</div>
)
}