tldraw/assets
Steve Ruiz 5bf05bbb3c
Flatten shapes to image(s) (#3933)
This PR adds some functionality for turning shapes into images.

![Kapture 2024-06-13 at 12 51
00](https://github.com/tldraw/tldraw/assets/23072548/78525e29-61b5-418f-889d-2f061f26f34d)

It adds:
- the `flattenShapesToImages`
- the `useFlatten` hook
- a `flatten-shapes-to-images` action (shift + f)
- adds `flattenImageBoundsExpand` option
- adds `flattenImageBoundsPadding` option

## Flatten shapes to images

The `flattenShapesToImages` helper method will 1) create an image for
the given shape ids, 2) add it to the canvas in the same location / size
as the source shapes, and then 3) delete the original shapes. The new
image will be placed correctly in the z index and in the correct
rotation of the root-most ancestor of the given shape ids.


![image](https://github.com/tldraw/tldraw/assets/23072548/fe888980-05a5-4369-863f-90c142f9f8b9)

It has an argument, `flattenImageBoundsExpand`, which if provided will
chunk the given shapes into images based on their overlapping (expanded)
bounding boxes.


![image](https://github.com/tldraw/tldraw/assets/23072548/c4799309-244d-4a2b-ac59-9c2fd100319c)

By default, the flatten action uses the editor's
`options.flattenImageBoundsExpand`. The `flattenImageBoundsPadding`
option is used as a value for how much larger the image should be than
the source image bounds (to account for large strokes, for example).

### Change Type

- [x] `sdk` — Changes the tldraw SDK
- [x] `feature` — New feature

### Test Plan

1. Select shapes
2. Select context menu > edit > flatten

- [ ] Unit Tests
- [ ] End to end tests

### Release Notes

- Add Flatten, a new menu item to flatten shapes into images
2024-06-16 11:40:50 +00:00
..
embed-icons Add desmos graph embed type (#3608) 2024-04-27 12:30:58 +00:00
fonts Use custom font (#2343) 2023-12-19 14:17:45 +00:00
icons/icon share: make share/fork/copy actions clearer (#3846) 2024-06-03 08:42:08 +00:00
translations Flatten shapes to image(s) (#3933) 2024-06-16 11:40:50 +00:00
card-repo.png Update README (#2444) 2024-01-10 14:58:44 +00:00
card_repo.svg Update README (#2444) 2024-01-10 14:58:44 +00:00
github-hero-dark-draw.png transfer-out: transfer out 2023-04-25 12:01:25 +01:00
github-hero-dark.png transfer-out: transfer out 2023-04-25 12:01:25 +01:00
github-hero-light-2.png Change licenses to tldraw (#2167) 2023-12-19 10:41:01 +00:00
github-hero-light-draw.png transfer-out: transfer out 2023-04-25 12:01:25 +01:00
github-hero-light.png transfer-out: transfer out 2023-04-25 12:01:25 +01:00
github-hero_dark-2.png Change licenses to tldraw (#2167) 2023-12-19 10:41:01 +00:00