Skip to content

Commit 660d0bc

Browse files
Keep annotations fixed when rotating pages
1 parent 849c53d commit 660d0bc

1 file changed

Lines changed: 2 additions & 0 deletions

File tree

playground/web-annotations.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,5 @@
9999
- [Skip the Delete confirmation popup dialog for annotations](https://www.nutrient.io/playground?p=eyJ2IjoxLCJqcyI6Ii8vVGl0bGU6IFNraXAgdGhlIERlbGV0ZSBjb25maXJtYXRpb24gcG9wLXVwIGRpYWxvZyBmb3IgQW5ub3RhdGlvbnNcblBTUERGS2l0LmxvYWQoe1xuICAuLi5iYXNlT3B0aW9ucyxcbiAgdGhlbWU6IFBTUERGS2l0LlRoZW1lLkRBUkssXG59KS50aGVuKChpbnN0YW5jZSkgPT4ge1xuICAvLyBTa2lwIGFubm90YXRpb24gZGVsZXRlIGNvbmZpcm1hdGlvbiBwb3B1cFxuICBpbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKFwiYW5ub3RhdGlvbnMud2lsbENoYW5nZVwiLCAoZXZlbnQpID0%252BIHtcbiAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgZGVsZXRlIHN0YXJ0IGFjdGlvblxuICAgIGlmIChldmVudC5yZWFzb24gPT09IFBTUERGS2l0LkFubm90YXRpb25zV2lsbENoYW5nZVJlYXNvbi5ERUxFVEVfU1RBUlQpIHtcbiAgICAgIC8vIERlbGV0ZSB0aGUgYW5ub3RhdGlvbiBpbW1lZGlhdGVseVxuICAgICAgaW5zdGFuY2UuZGVsZXRlKGV2ZW50LmFubm90YXRpb25zLmdldCgwKSk7XG4gICAgICAvLyBDbGljayB0aGUgY2FuY2VsIGJ1dHRvbiB0byBwcmV2ZW50IHRoZSBkaWFsb2cgZnJvbSBzaG93aW5nXG4gICAgICBpbnN0YW5jZS5jb250ZW50RG9jdW1lbnRcbiAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCIuUFNQREZLaXQtQ29uZmlybS1EaWFsb2ctQnV0dG9uLUNhbmNlbFwiKVxuICAgICAgICAuY2xpY2soKTtcbiAgICB9XG4gIH0pO1xufSk7XG4iLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIiwic2V0dGluZ3MiOnsiZmlsZU5hbWUiOiJiYXNpYy5wZGYifX0%253D)
100100
- This hook listens for the annotation deletion start event and immediately deletes the targeted annotation. It then clicks the dialog’s Cancel button to suppress the confirmation UI. The result is a seamless delete action with no popup interrupting the workflow
101101

102+
- [Keep annotations fixed when rotating page](https://www.nutrient.io/demo/sandbox?p=eyJqcyI6Ik51dHJpZW50Vmlld2VyLmxvYWQoe1xuICAuLi5iYXNlT3B0aW9ucyxcbiAgaW5zdGFudEpTT046IEpTT04ucGFyc2UoXG4gICAgYHtcImFubm90YXRpb25zXCI6W3tcImJib3hcIjpbNDYuODM4LDMwLjQsMzE4LjQsMjQwXSxcImNyZWF0ZWRBdFwiOlwiMjAyNi0wMy0xM1QxMzoxMjo1MlpcIixcImNyZWF0b3JOYW1lXCI6XCJrZW5AYXdzLm5ldFwiLFwiaWRcIjpcIjAxS0tLTjg0OVFIRlg5Q0pWU1hBRDZQR0dDXCIsXCJuYW1lXCI6XCIwMUtLS044NDlRSEZYOUNKVlNYQUQ2UEdHQ1wiLFwib3BhY2l0eVwiOjEsXCJwYWdlSW5kZXhcIjowLFwic3Ryb2tlQ29sb3JcIjpcIiNGRjAwMDBcIixcInN0cm9rZVdpZHRoXCI6NSxcInR5cGVcIjpcInBzcGRma2l0L3NoYXBlL2VsbGlwc2VcIixcInVwZGF0ZWRBdFwiOlwiMjAyNi0wMy0xM1QxMzoxMjo1N1pcIixcInZcIjoyfV0sXCJmb3JtYXRcIjpcImh0dHBzOi8vcHNwZGZraXQuY29tL2luc3RhbnQtanNvbi92MVwifWBcbiAgKSxcbn0pLnRoZW4oYXN5bmMgKGluc3RhbmNlKSA9PiB7XG4gIC8vIFdpZGdldCBhbm5vdGF0aW9ucyAoZm9ybSBmaWVsZHMpIGhhdmUgYWRkaXRpb25hbEFjdGlvbnMgbGlrZSBvblBvaW50ZXJEb3duXG4gIC8vIHdoaWNoIHRoZSBTREsgcmVqZWN0cyBvbiB1cGRhdGUg4oCUIGV4Y2x1ZGUgdGhlbSBmcm9tIGNhY2hlL3Jlc3RvcmVcbiAgY29uc3QgRVhDTFVERURfVFlQRVMgPSBbXG4gICAgTnV0cmllbnRWaWV3ZXIuQW5ub3RhdGlvbnMuV2lkZ2V0QW5ub3RhdGlvbixcbiAgICBOdXRyaWVudFZpZXdlci5Bbm5vdGF0aW9ucy5MaW5rQW5ub3RhdGlvbixcbiAgXTtcblxuICBmdW5jdGlvbiBpc0NhY2hlYWJsZShhbm5vdGF0aW9uKSB7XG4gICAgcmV0dXJuICFFWENMVURFRF9UWVBFUy5zb21lKChUeXBlKSA9PiBhbm5vdGF0aW9uIGluc3RhbmNlb2YgVHlwZSk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBjYWNoZUFubm90YXRpb25Qb3NpdGlvbnMocGFnZUluZGV4ZXMpIHtcbiAgICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgICBmb3IgKGNvbnN0IHBhZ2VJbmRleCBvZiBwYWdlSW5kZXhlcykge1xuICAgICAgY29uc3QgYW5ub3RhdGlvbnMgPSBhd2FpdCBpbnN0YW5jZS5nZXRBbm5vdGF0aW9ucyhwYWdlSW5kZXgpO1xuICAgICAgYW5ub3RhdGlvbnMuZmlsdGVyKGlzQ2FjaGVhYmxlKS5mb3JFYWNoKChhbm5vdGF0aW9uKSA9PiB7XG4gICAgICAgIGNhY2hlLnNldChhbm5vdGF0aW9uLmlkLCB7XG4gICAgICAgICAgYm91bmRpbmdCb3g6IGFubm90YXRpb24uYm91bmRpbmdCb3gsXG4gICAgICAgICAgcGFnZUluZGV4OiBhbm5vdGF0aW9uLnBhZ2VJbmRleCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVzdG9yZUFubm90YXRpb25Qb3NpdGlvbnMoY2FjaGUpIHtcbiAgICBmb3IgKGNvbnN0IFtpZCwgeyBib3VuZGluZ0JveCwgcGFnZUluZGV4IH1dIG9mIGNhY2hlLmVudHJpZXMoKSkge1xuICAgICAgY29uc3QgYW5ub3RhdGlvbnMgPSBhd2FpdCBpbnN0YW5jZS5nZXRBbm5vdGF0aW9ucyhwYWdlSW5kZXgpO1xuICAgICAgY29uc3QgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmZpbmQoKGEpID0%2BIGEuaWQgPT09IGlkKTtcbiAgICAgIGlmIChhbm5vdGF0aW9uKSB7XG4gICAgICAgIGF3YWl0IGluc3RhbmNlLnVwZGF0ZShhbm5vdGF0aW9uLnNldChcImJvdW5kaW5nQm94XCIsIGJvdW5kaW5nQm94KSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcm90YXRlUGFnZXNXaXRob3V0TW92aW5nQW5ub3RhdGlvbnMocGFnZUluZGV4ZXMsIHJvdGF0ZUJ5KSB7XG4gICAgY29uc3QgY2FjaGUgPSBhd2FpdCBjYWNoZUFubm90YXRpb25Qb3NpdGlvbnMocGFnZUluZGV4ZXMpO1xuICAgIGF3YWl0IGluc3RhbmNlLmFwcGx5T3BlcmF0aW9ucyhbXG4gICAgICB7IHR5cGU6IFwicm90YXRlUGFnZXNcIiwgcGFnZUluZGV4ZXMsIHJvdGF0ZUJ5IH0sXG4gICAgXSk7XG4gICAgYXdhaXQgcmVzdG9yZUFubm90YXRpb25Qb3NpdGlvbnMoY2FjaGUpO1xuICB9XG5cbiAgYXdhaXQgcm90YXRlUGFnZXNXaXRob3V0TW92aW5nQW5ub3RhdGlvbnMoWzBdLCA5MCk7XG59KTtcbiIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG4iLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsInVzZUR5bmFtaWNGb250cyI6dHJ1ZSwiY3VzdG9tRm9udEZpbGVOYW1lcyI6W119LCJ2IjoxfQ%3D%3D)
103+
- Demonstrates how to prevent annotations from moving when a page is rotated via `applyOperations`. The workaround caches each annotation's `boundingBox` before the rotation and restores it afterward, since `rotatePages` currently transforms annotation coordinates as an intended behaviour.

0 commit comments

Comments
 (0)