1
0
Fork 0
freesewing/sites/dev/docs/howtos/code/adding-snippets
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: Adding snippets
---

Snippets should be stored in the `snippets` key of the object passed to your part's
draft method. The constructor for snippets is available in the `Snippets` key. You can
destructure them for easy access.

<Example caption="An example of adding a snippet" tutorial>
```design/src/part.mjs
function draftPart = ({ 
  Point,
  Path,
  paths,
  // highlight-start
  Snippet, 
  snippets,
  // highlight-end
  part 
}) {

  // highlight-start
  snippets.logo = new Snippet('logo', new Point(50,50))
    .attr('data-scale', 0.5)
    .attr('data-rotate', 180)
  // highlight-end

  // prevent clipping
  paths.demo = new Path()
    .move(new Point(0,0))
    .move(new Point(100,100))

  return part
}
```
</Example>

You can scale and rotate a snippet by setting the `data-scale` and `data-rotate` attributes respectively.

- **data-scale** : Either a single scale factor, or a set of 2 scale factors
  for the X and Y axis respectively. See [the SVG scale
  transform](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform#Scale)
  for details.
- **data-rotate**: A rotation in degrees. The center of the rotation will be
  the snippet's anchor point

:::tip

See [Using attributes](/howtos/code/attributes/) for details on how to set attributes.

:::