5bf05bbb3c
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 |
||
---|---|---|
.. | ||
ar.json | ||
ca.json | ||
cs.json | ||
da.json | ||
de.json | ||
en.json | ||
es.json | ||
fa.json | ||
fi.json | ||
fr.json | ||
gl.json | ||
he.json | ||
hi-in.json | ||
hr.json | ||
hu.json | ||
id.json | ||
it.json | ||
ja.json | ||
ko-kr.json | ||
ku.json | ||
languages.json | ||
main.json | ||
my.json | ||
ne.json | ||
no.json | ||
pl.json | ||
pt-br.json | ||
pt-pt.json | ||
ro.json | ||
ru.json | ||
sl.json | ||
sv.json | ||
te.json | ||
th.json | ||
tr.json | ||
uk.json | ||
vi.json | ||
zh-cn.json | ||
zh-tw.json |