1
0
Fork 0
freesewing/sites/shared/components/workbench/views/print/config.mjs
2023-10-25 14:52:24 +02:00

79 lines
1.9 KiB
JavaScript

// __SDEFILE__ - This file is a dependency for the stand-alone environment
import { measurementAsMm } from 'shared/utils.mjs'
import {
PageSizeIcon,
PageOrientationIcon,
PageMarginIcon,
CoverPageIcon,
CuttingLayoutIcon,
} from 'shared/components/icons.mjs'
import { isProduction } from 'shared/config/freesewing.config.mjs'
export const printSettingsPath = ['print', 'pages']
export const defaultPrintSettings = (units, inMm = true) => ({
size: units === 'imperial' ? 'letter' : 'a4',
orientation: 'portrait',
margin: units === 'imperial' ? 12.7 : 10,
coverPage: true,
cutlist: true,
})
const sizes = ['a4', 'a3', 'a2', 'a1', 'a0', 'letter', 'legal', 'tabloid']
export const loadPrintConfig = (units) => {
const defaults = defaultPrintSettings(units, false)
const config = {
size: {
control: 2,
list: sizes,
dflt: defaults.size,
choiceTitles: {},
valueTitles: {},
icon: PageSizeIcon,
},
orientation: {
control: 2,
list: ['portrait', 'landscape'],
choiceTitles: {
portrait: 'portrait',
landscape: 'landscape',
},
valueTitles: {
portrait: 'portrait',
landscape: 'landscape',
},
dflt: defaults.orientation,
icon: PageOrientationIcon,
},
margin: {
control: 2,
min: units === 'imperial' ? 0.25 : 0.5,
max: 2.5,
step: units === 'imperial' ? 0.125 : 0.1,
dflt: defaults.margin,
icon: PageMarginIcon,
},
coverPage: {
control: 3,
dflt: defaults.coverPage,
icon: CoverPageIcon,
},
cutlist: {
control: 3,
dflt: defaults.cutlist,
icon: CuttingLayoutIcon,
},
}
sizes.forEach((s) => {
config.size.choiceTitles[s] = s
config.size.valueTitles[s] = s
})
/*
* Don't include cutlist in production until it's ready to go
*/
if (isProduction) delete config.cutlist
return config
}