diff --git a/config/changelog.yaml b/config/changelog.yaml index b8526a3a742..02622ff36b3 100644 --- a/config/changelog.yaml +++ b/config/changelog.yaml @@ -1,3 +1,18 @@ +Unreleased: + Changed: + 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/plugins/plugin-bust/src/index.mjs b/plugins/plugin-bust/src/index.mjs index 0e6cd5ac18f..3962540323c 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: (settings = false) => { + 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 }