mirror on fold macro
This commit is contained in:
parent
18a5dac39d
commit
3bbea6d4c2
6 changed files with 62 additions and 4 deletions
|
@ -35,9 +35,11 @@ export function Store(methods = []) {
|
||||||
logs.info.push(...data)
|
logs.info.push(...data)
|
||||||
},
|
},
|
||||||
warning: function (...data) {
|
warning: function (...data) {
|
||||||
|
console.warn(...data)
|
||||||
logs.warning.push(...data)
|
logs.warning.push(...data)
|
||||||
},
|
},
|
||||||
error: function (...data) {
|
error: function (...data) {
|
||||||
|
console.error(...data)
|
||||||
logs.error.push(...data)
|
logs.error.push(...data)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import Worker from 'web-worker'
|
import Worker from 'web-worker'
|
||||||
import fileSaver from 'file-saver'
|
import fileSaver from 'file-saver'
|
||||||
import { themePlugin } from '@freesewing/plugin-theme'
|
import { themePlugin } from '@freesewing/plugin-theme'
|
||||||
import { pagesPlugin } from '../layout/layout-part-plugin.mjs'
|
import { pagesPlugin } from '../layout/plugin-layout-part.mjs'
|
||||||
import { capitalize } from 'shared/utils.mjs'
|
import { capitalize } from 'shared/utils.mjs'
|
||||||
|
|
||||||
export const exportTypes = {
|
export const exportTypes = {
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
import { useTranslation } from 'next-i18next'
|
import { useTranslation } from 'next-i18next'
|
||||||
import { CutLayoutSettings } from './settings.mjs'
|
import { CutLayoutSettings } from './settings.mjs'
|
||||||
import { Draft } from '../draft/index.mjs'
|
import { Draft } from '../draft/index.mjs'
|
||||||
import { fabricPlugin } from '../layout-part-plugin.mjs'
|
import { fabricPlugin } from '../plugin-layout-part.mjs'
|
||||||
|
import { cutLayoutPlugin } from './plugin-cut-layout.mjs'
|
||||||
|
import { pluginCutlist } from '@freesewing/plugin-cutlist'
|
||||||
import { useEffect } from 'react'
|
import { useEffect } from 'react'
|
||||||
import { measurementAsMm } from 'shared/utils.mjs'
|
import { measurementAsMm } from 'shared/utils.mjs'
|
||||||
|
|
||||||
|
@ -19,11 +21,13 @@ export const CutLayout = (props) => {
|
||||||
|
|
||||||
// add the pages plugin to the draft
|
// add the pages plugin to the draft
|
||||||
const layoutSettings = {
|
const layoutSettings = {
|
||||||
sheetWidth: gistSettings.sheetWidth || measurementAsMm(isImperial ? 54 : 50, props.gist.units),
|
sheetWidth: gistSettings.sheetWidth || measurementAsMm(isImperial ? 54 : 120, props.gist.units),
|
||||||
sheetHeight:
|
sheetHeight:
|
||||||
gistSettings.sheetHeight || measurementAsMm(isImperial ? 36 : 100, props.gist.units),
|
gistSettings.sheetHeight || measurementAsMm(isImperial ? 36 : 100, props.gist.units),
|
||||||
}
|
}
|
||||||
draft.use(fabricPlugin(layoutSettings))
|
draft.use(fabricPlugin(layoutSettings))
|
||||||
|
draft.use(pluginCutlist)
|
||||||
|
draft.use(cutLayoutPlugin)
|
||||||
|
|
||||||
let patternProps
|
let patternProps
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
const prefix = 'mirroredOnFold'
|
||||||
|
|
||||||
|
export const cutLayoutPlugin = {
|
||||||
|
hooks: {
|
||||||
|
postPartDraft: (pattern) => {
|
||||||
|
const partCutlist = pattern.setStores[pattern.activeSet].get(['cutlist', pattern.activePart])
|
||||||
|
if (!partCutlist) return
|
||||||
|
|
||||||
|
const { macro } = pattern.parts[pattern.activeSet][pattern.activePart].shorthand()
|
||||||
|
if (partCutlist.cutOnFold) macro('mirrorOnFold', { fold: partCutlist.cutOnFold })
|
||||||
|
},
|
||||||
|
},
|
||||||
|
macros: {
|
||||||
|
mirrorOnFold: ({ fold }, { paths, snippets, utils, macro, points }) => {
|
||||||
|
const mirrorPaths = []
|
||||||
|
for (const p in paths) {
|
||||||
|
if (!paths[p].hidden) mirrorPaths.push(paths[p])
|
||||||
|
}
|
||||||
|
|
||||||
|
const mirrorPoints = []
|
||||||
|
const snippetsByType = {}
|
||||||
|
for (var s in snippets) {
|
||||||
|
const snip = snippets[s]
|
||||||
|
if (['logo'].indexOf(snip.def) > -1) continue
|
||||||
|
|
||||||
|
snippetsByType[snip.def] = snippetsByType[snip.def] || []
|
||||||
|
|
||||||
|
mirrorPoints.push(snip.anchor)
|
||||||
|
for (var pName in points) {
|
||||||
|
if (points[pName] === snip.anchor) {
|
||||||
|
snippetsByType[snip.def].push(prefix + utils.capitalize(pName))
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
macro('mirror', {
|
||||||
|
paths: mirrorPaths,
|
||||||
|
points: mirrorPoints,
|
||||||
|
mirror: fold,
|
||||||
|
prefix,
|
||||||
|
})
|
||||||
|
|
||||||
|
for (var def in snippetsByType) {
|
||||||
|
macro('sprinkle', {
|
||||||
|
snippet: def,
|
||||||
|
on: snippetsByType[def],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
|
@ -2,7 +2,7 @@ import { useEffect, useState } from 'react'
|
||||||
import { useTranslation } from 'next-i18next'
|
import { useTranslation } from 'next-i18next'
|
||||||
import { PrintLayoutSettings } from './settings.mjs'
|
import { PrintLayoutSettings } from './settings.mjs'
|
||||||
import { Draft } from '../draft/index.mjs'
|
import { Draft } from '../draft/index.mjs'
|
||||||
import { pagesPlugin } from '../layout-part-plugin.mjs'
|
import { pagesPlugin } from '../plugin-layout-part.mjs'
|
||||||
import {
|
import {
|
||||||
handleExport,
|
handleExport,
|
||||||
defaultPdfSettings,
|
defaultPdfSettings,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue