[editor] Update the AnnotationStorage.hash-getter to support editing

While calling `JSON.stringify(...)` on a class-instance obviously "works" (as in it doesn't throw), since it's really just an Object, it doesn't really make much sense in the context of the `AnnotationStorage.hash`-getter.

Also, access the *inverse* Viewport-transform correctly in `FreeTextEditor.serialize` to prevent errors being thrown when that method is invoked.

Finally, slightly updates the `AnnotationStorage.serializable`-getter to improve consistency within the class.
This commit is contained in:
Jonas Jenwald 2022-06-05 14:02:16 +02:00
parent 87fdb0eb42
commit 51c47acb41
2 changed files with 6 additions and 8 deletions

View File

@ -142,11 +142,8 @@ class AnnotationStorage {
const clone = new Map();
for (const [key, value] of this._storage) {
if (value instanceof AnnotationEditor) {
clone.set(key, value.serialize());
} else {
clone.set(key, value);
}
const val = value instanceof AnnotationEditor ? value.serialize() : value;
clone.set(key, val);
}
return clone;
}
@ -159,7 +156,8 @@ class AnnotationStorage {
const hash = new MurmurHash3_64();
for (const [key, value] of this._storage) {
hash.update(`${key}:${JSON.stringify(value)}`);
const val = value instanceof AnnotationEditor ? value.serialize() : value;
hash.update(`${key}:${JSON.stringify(val)}`);
}
return hash.hexdigest();
}

View File

@ -203,12 +203,12 @@ class FreeTextEditor extends AnnotationEditor {
const rect = this.div.getBoundingClientRect();
const [x1, y1] = Util.applyTransform(
[this.x, this.y + rect.height],
this.parent.viewport.inverseTransform
this.parent.inverseViewportTransform
);
const [x2, y2] = Util.applyTransform(
[this.x + rect.width, this.y],
this.parent.viewport.inverseTransform
this.parent.inverseViewportTransform
);
return {