Fix bug on group cloning (#196)
This commit is contained in:
parent
ad8bf78dd4
commit
dd4f39ae74
2 changed files with 20 additions and 2 deletions
|
@ -298,6 +298,21 @@ describe('Translate session', () => {
|
||||||
.updateSession([20, 20], false, false)
|
.updateSession([20, 20], false, false)
|
||||||
.updateSession([20, 20], false, true)
|
.updateSession([20, 20], false, true)
|
||||||
.completeSession()
|
.completeSession()
|
||||||
|
|
||||||
|
expect(tlstate.shapes.filter((shape) => shape.type === TLDrawShapeType.Group).length).toBe(2)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('deletes clones when not cloning anymore', () => {
|
||||||
|
tlstate
|
||||||
|
.loadDocument(mockDocument)
|
||||||
|
.select('rect1', 'rect2')
|
||||||
|
.group()
|
||||||
|
.startSession(SessionType.Translate, [10, 10])
|
||||||
|
.updateSession([20, 20], false, true)
|
||||||
|
.updateSession([20, 20], false, false)
|
||||||
|
.completeSession()
|
||||||
|
|
||||||
|
expect(tlstate.shapes.filter((shape) => shape.type === TLDrawShapeType.Group).length).toBe(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('clones the shapes and children when selecting a group and a different shape', () => {
|
it('clones the shapes and children when selecting a group and a different shape', () => {
|
||||||
|
|
|
@ -12,6 +12,7 @@ import {
|
||||||
GroupShape,
|
GroupShape,
|
||||||
SessionType,
|
SessionType,
|
||||||
ArrowBinding,
|
ArrowBinding,
|
||||||
|
TLDrawShapeType,
|
||||||
} from '~types'
|
} from '~types'
|
||||||
import { SLOW_SPEED, SNAP_DISTANCE } from '~state/constants'
|
import { SLOW_SPEED, SNAP_DISTANCE } from '~state/constants'
|
||||||
import { TLDR } from '~state/tldr'
|
import { TLDR } from '~state/tldr'
|
||||||
|
@ -273,9 +274,8 @@ export class TranslateSession extends Session {
|
||||||
|
|
||||||
bindingsToDelete.forEach((binding) => (nextBindings[binding.id] = undefined))
|
bindingsToDelete.forEach((binding) => (nextBindings[binding.id] = undefined))
|
||||||
|
|
||||||
// Delete the clones
|
// Remove the clones from parents
|
||||||
clones.forEach((clone) => {
|
clones.forEach((clone) => {
|
||||||
nextShapes[clone.id] = undefined
|
|
||||||
if (clone.parentId !== currentPageId) {
|
if (clone.parentId !== currentPageId) {
|
||||||
nextShapes[clone.parentId] = {
|
nextShapes[clone.parentId] = {
|
||||||
...nextShapes[clone.parentId],
|
...nextShapes[clone.parentId],
|
||||||
|
@ -284,6 +284,9 @@ export class TranslateSession extends Session {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Delete the clones (including any parent clones)
|
||||||
|
clones.forEach((clone) => (nextShapes[clone.id] = undefined))
|
||||||
|
|
||||||
// Move the original shapes back to the cursor position
|
// Move the original shapes back to the cursor position
|
||||||
initialShapes.forEach((shape) => {
|
initialShapes.forEach((shape) => {
|
||||||
nextShapes[shape.id] = {
|
nextShapes[shape.id] = {
|
||||||
|
|
Loading…
Reference in a new issue