Fix validation errors for duplicateProps
(#3065)
Should fix `At instance.duplicateProps.offset.x: Expected a number, got NaN` validation errors. Wasn't able to reproduce. We only assign the offset here, so `Vec.Averge` is the most likely offender here and for that to happen I guess `movingShapes` might not contain any shapes. ### Change Type - [x] `patch` — Bug fix - [ ] `minor` — New feature - [ ] `major` — Breaking change - [ ] `dependencies` — Changes to package dependencies[^1] - [ ] `documentation` — Changes to the documentation only[^2] - [ ] `tests` — Changes to any test code only[^2] - [ ] `internal` — Any other changes that don't affect the published package[^2] - [ ] I don't know [^1]: publishes a `patch` release, for devDependencies use `internal` [^2]: will not publish a new version ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
This commit is contained in:
parent
33d111f93e
commit
0813e54ca2
2 changed files with 12 additions and 7 deletions
|
@ -531,6 +531,9 @@ export class Vec {
|
||||||
static Average(arr: VecLike[]) {
|
static Average(arr: VecLike[]) {
|
||||||
const len = arr.length
|
const len = arr.length
|
||||||
const avg = new Vec(0, 0)
|
const avg = new Vec(0, 0)
|
||||||
|
if (len === 0) {
|
||||||
|
return avg
|
||||||
|
}
|
||||||
for (let i = 0; i < len; i++) {
|
for (let i = 0; i < len; i++) {
|
||||||
avg.add(arr[i])
|
avg.add(arr[i])
|
||||||
}
|
}
|
||||||
|
|
|
@ -213,17 +213,19 @@ export class Translating extends StateNode {
|
||||||
protected handleEnd() {
|
protected handleEnd() {
|
||||||
const { movingShapes } = this.snapshot
|
const { movingShapes } = this.snapshot
|
||||||
|
|
||||||
if (this.isCloning) {
|
if (this.isCloning && movingShapes.length > 0) {
|
||||||
const currentAveragePagePoint = Vec.Average(
|
const currentAveragePagePoint = Vec.Average(
|
||||||
movingShapes.map((s) => this.editor.getShapePageTransform(s.id)!.point())
|
movingShapes.map((s) => this.editor.getShapePageTransform(s.id)!.point())
|
||||||
)
|
)
|
||||||
const offset = Vec.Sub(currentAveragePagePoint, this.selectionSnapshot.averagePagePoint)
|
const offset = Vec.Sub(currentAveragePagePoint, this.selectionSnapshot.averagePagePoint)
|
||||||
this.editor.updateInstanceState({
|
if (!Vec.IsNaN(offset)) {
|
||||||
duplicateProps: {
|
this.editor.updateInstanceState({
|
||||||
shapeIds: movingShapes.map((s) => s.id),
|
duplicateProps: {
|
||||||
offset: { x: offset.x, y: offset.y },
|
shapeIds: movingShapes.map((s) => s.id),
|
||||||
},
|
offset: { x: offset.x, y: offset.y },
|
||||||
})
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const changes: TLShapePartial[] = []
|
const changes: TLShapePartial[] = []
|
||||||
|
|
Loading…
Reference in a new issue