1
0
Fork 0
freesewing/sites/dev/docs/reference/plugins/bust
Joost De Cock ab3204f9f1 chore: Port FreeSewing.dev to docusaurus
The replaces the NextJS site powering FreeSewing.dev with a Docusaurus
setup. It's part of my efforts to simplify FreeSewing's setup so we can
focus on our core value proposition.
2024-09-28 13:13:48 +02:00
..
readme.mdx chore: Port FreeSewing.dev to docusaurus 2024-09-28 13:13:48 +02:00

---
title: plugin-bust
---

Published as [@freesewing/plugin-bust][1], this plugin helps you adapt menswear
patterns for people with breasts.  If you are designing a womenswear pattern,
you won't need this plugin. But if you're adapting a menswear pattern for
breasts or merely want to accommodate both people with and without breasts,
this plugin can help you accomplish that.

## Installation

```bash
npm install @freesewing/plugin-bust
```

## Usage

Either [add it as a part plugins](/reference/api/part/config/plugins) in your
design, or [add it to a pattern instance with
Pattern.use()](/reference/api/pattern/use).

To import the plugin for use:
```js
import { bustPlugin } from '@freesewing/plugin-bust'
// or
import { pluginBust } from '@freesewing/plugin-bust'
```

To import the plugin and condition method for conditional loading:
```js
import { withCondition } from '@freesewing/plugin-bust'
```

## Notes

### Understanding the use-case for this plugin

Almost all menswear patterns use the chest circumference to draft the garment.

As a person with breasts, using your (full) chest circumference will give you
bad fit.  Instead, it's better to use your high bust measurement as chest
circumference, and then create extra room for the breasts.

This is the same technique that's used in a full-bust adjustment to fit a
womenswear pattern for a person with above-average sized breasts.

This plugin helps you by:

- Storing the chest circumference in `measurements.bust`
- Changing `measurments.chest` to the value of
  `measurements.highBust`

### Use when extending breastless patterns into a with-breasts version

One way this plugin is used is to extend a menswear pattern into a womenswear
pattern.  In this case, the plugin will always be loaded since the pattern
assumes breasts will be present.

This way you can extend a menswear pattern and have it drafted with the high
bust measurement as chest measurement, after which you can create room for the
breasts.

You can see this in practice in our [Carlita][2] design, which extends the
menswear [Carlton][3] design.

:::note RELATED
To learn more about extending a design, see [Part
inheritance](/howtos/code/from/)
:::

### Use when creating gender-neutral designs

To create a truly gender-neutral design — one that will adapt to breasts only
if they are present — you can use this plugin, but you'll also need a few other
things:

- You'll need to include and mark the bust measurements, including `highBust`,
as [optional
  measurements](/reference/api/part/config/measurements#optionalmeasurements)
- You'll need to [conditionally load this
  plugin](/reference/api/part/config/plugins#conditional-plugins)
- You'll need to create your design such that, when appropriate,
it is able to produce the condition to cause the plugin to load

You can see an example of this in [our Teagan design][4].

### Condition for loading `withCondition`

For convenience, `plugin-bust` provides a `withCondition` named export
that is a conditional plugin, an `Object` consisting of the plugin
along with a condition method.

The condition is met if both:
1. `options.draftForHighBust` is set to `true`
2. `measurements.highBust` is set

You can use `withCondition` to conditionally load `plugin-bust`,
or you are free to instead create and use your own condition method
to pass along with the plugin.

[1]: https://www.npmjs.com/package/@freesewing/plugin-bust

[2]: https://github.com/freesewing/freesewing/blob/develop/designs/carlita/src/index.mjs#L25

[3]: https://github.com/freesewing/freesewing/blob/develop/designs/carlton

[4]: https://github.com/freesewing/freesewing/blob/develop/designs/teagan/src/index.mjs