diff --git a/config/changelog.yaml b/config/changelog.yaml index b8526a3a742..bfd8d51b2b2 100644 --- a/config/changelog.yaml +++ b/config/changelog.yaml @@ -1,3 +1,20 @@ +Unreleased: + Changed: + brian: + - Always load plugin-bust due to its changes in how it handle conditionality. + plugin-bust: + - This plugin now uses the `preSetDraft` rather than `preDraft` lifecycle hook + - Conditionality has been moved to the `preSetDraft` lifecycle hook, rather than exposing a `withCondition` named export + - The plugin will now always be loaded, but will check for each drafted set whether it should make any changes. + + Deprecated: + plugin-bust: + - The `withCondition` named export is deprecated and will always return true. + + Fixed: + hugo: + - Add missing dimension id attributes + 3.2.0: date: 2024-02-11 diff --git a/designs/brian/src/base.mjs b/designs/brian/src/base.mjs index 3e64ad3f6be..3883fb07b42 100644 --- a/designs/brian/src/base.mjs +++ b/designs/brian/src/base.mjs @@ -1,4 +1,4 @@ -import { withCondition as bustPlugin } from '@freesewing/plugin-bust' +import { bustPlugin } from '@freesewing/plugin-bust' export const base = { name: 'brian.base', diff --git a/markdown/dev/reference/hooks/predraft/en.md b/markdown/dev/reference/hooks/predraft/en.md index 471c5af6f3c..bc31d7e0aab 100644 --- a/markdown/dev/reference/hooks/predraft/en.md +++ b/markdown/dev/reference/hooks/predraft/en.md @@ -20,4 +20,7 @@ pattern.on('preDraft', pattern => { ## Notes -The `preDraft` hook is rarely used, but it's there if you need it. +The `preDraft` hook fires once for all the sets in the pattern. +While typically, there is only one set, there might be more. +In that case, the [`preSetDraft` lifecycle hook](/reference/hooks/presetdraft) is +the per-set equivalent of this hook. diff --git a/markdown/dev/reference/hooks/presetdraft/en.md b/markdown/dev/reference/hooks/presetdraft/en.md index 0c805941c06..ffb7dee9c84 100644 --- a/markdown/dev/reference/hooks/presetdraft/en.md +++ b/markdown/dev/reference/hooks/presetdraft/en.md @@ -21,4 +21,15 @@ pattern.on('preSetDraft', pattern => { ## Notes -The `preSetDraft` hook is rarely used, but it's there if you need it. +The `preSetDraft` fires once for each set in the pattern. + +The pattern tracks the active set on the `activeSet` property. +So if you are using this hook and would like to get access to teh active set, you can do so like this: + +```js +pattern.on('preSetDraft', ({ settings, activeSet }) => { + const set = settings[Number(activeSet)] + + // Now set holds the active set of settings +} +``` diff --git a/plugins/plugin-bust/src/index.mjs b/plugins/plugin-bust/src/index.mjs index 0e6cd5ac18f..c25a25081fe 100644 --- a/plugins/plugin-bust/src/index.mjs +++ b/plugins/plugin-bust/src/index.mjs @@ -4,13 +4,12 @@ export const plugin = { name, version, hooks: { - preDraft: function ({ settings }) { - for (const i in settings) { - if (settings[i].measurements) { - if (typeof settings[i].measurements.bust === 'undefined') { - settings[i].measurements.bust = settings[i].measurements.chest - settings[i].measurements.chest = settings[i].measurements.highBust - } + preSetDraft: function ({ settings, activeSet }) { + const set = settings[Number(activeSet)] + if (set.measurements && set.options?.draftForHighBust && set.measurements?.highBust) { + if (typeof set.measurements.bust === 'undefined') { + set.measurements.bust = set.measurements.chest + set.measurements.chest = set.measurements.highBust } } }, @@ -24,6 +23,11 @@ export const pluginBust = plugin // Helper method to conditionally load this plugin export const withCondition = { plugin, - condition: (settings = false) => - settings?.options?.draftForHighBust && settings?.measurements?.highBust ? true : false, + condition: () => { + console.log( + "WARNING: The 'withCondition' named export in @freesewing/plugin-bust is deprecated. Conditionality has moved to the preSetDraft lifecycle hook" + ) + + return true + }, } diff --git a/plugins/plugin-bust/tests/plugin.test.mjs b/plugins/plugin-bust/tests/plugin.test.mjs index 9cf75f48616..abc23940363 100644 --- a/plugins/plugin-bust/tests/plugin.test.mjs +++ b/plugins/plugin-bust/tests/plugin.test.mjs @@ -6,9 +6,10 @@ const measurements = { chest: 100, highBust: 90, } +const options = { draftForHighBust: true } const Pattern = new Design() -const pattern = new Pattern({ measurements }).use(plugin) +const pattern = new Pattern({ measurements, options }).use(plugin) pattern.draft() describe('Bust plugin Tests', () => { @@ -18,9 +19,7 @@ describe('Bust plugin Tests', () => { }) it('Should copy measurement from chest to bust and from highBust to chest', function () { - const testPattern = new Design({ - measurements: [], - }) + const testPattern = new Design({ measurements: [], options }) const pattern = new testPattern().use(plugin) const userMeasurements = { chest: 50, highBust: 60 } pattern.settings[0].measurements = userMeasurements @@ -30,7 +29,7 @@ describe('Bust plugin Tests', () => { }) it('Should not overwrite existing bust measurements', function () { - let config = { measurements: [] } + let config = { measurements: [], options } const testPattern = new Design(config, plugin) let pattern = new testPattern() let userMeasurements = { chest: 50, highBust: 60, bust: 55 }