https://github.com/pspdfkit/awesome-nutrient
A collection of awesome things regarding Nutrient ecosystem
https://github.com/pspdfkit/awesome-nutrient
List: awesome-nutrient
Last synced: about 1 month ago
JSON representation
A collection of awesome things regarding Nutrient ecosystem
- Host: GitHub
- URL: https://github.com/pspdfkit/awesome-nutrient
- Owner: PSPDFKit
- Created: 2024-06-13T21:14:56.000Z (12 months ago)
- Default Branch: master
- Last Pushed: 2025-03-19T11:00:52.000Z (2 months ago)
- Last Synced: 2025-04-09T21:01:23.619Z (about 2 months ago)
- Language: JavaScript
- Homepage: https://www.nutrient.io/sdk/developers
- Size: 26.8 MB
- Stars: 81
- Watchers: 10
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- ultimate-awesome - awesome-nutrient - A collection of awesome things regarding Nutrient ecosystem. (Other Lists / Julia Lists)
README
# Awesome Nutrient

[](https://awesome.re)
[](https://discord.gg/Z754Pfb8bD)This repository contains examples built with [Nutrient](https://www.nutrient.io/). These examples are not officially supported, which means they may stop working and not be fixed, but they exist to serve for inspiration. Read [the disclaimer](https://github.com/PSPDFKit/awesome-nutrient/blob/master/DISCLAIMER.md) or [reach out if you have questions](https://support.nutrient.io/hc/en-us/requests/new).
## Web
A wide variety of examples showcasing what Nutrient Web SDK can do can be found in the [Example Catalog](https://github.com/PSPDFKit/pspdfkit-web-examples-catalog). You can also [try them online](https://web-examples.our.services.nutrient-powered.io/).
- **Electronic signatures** — Use our API to add electronic signature images to PDFs.
- **Watermarks** — Add custom content (like images, text, and logos) as watermarks to your PDF pages.
- **Image annotations** — Annotate images with Nutrient Web SDK.
- **Custom UI for annotations** — Create a fully customized UI for working with annotations.
- **Custom annotation permissions** — Define custom permissions for annotation types.
- **Custom annotation tools** — Add your own tools or actions when an annotation is selected.
- **Custom toolbar tools** — Add custom tools to the PDF toolbar.
- **PDF page manipulation** — Add, remove, reorder, or rotate pages in a PDF.
- **Advanced PDF search** — Modify PDF search behavior.
- **Custom overlays** — Extend PDFs by adding your own elements to pages.
- **Selective area revealing** — Allow users to hide/reveal areas on a PDF page.
- **HTML-based annotation customization** — Enhance or replace existing PDF annotations using custom HTML.
- **Dark mode** — Switch to dark mode programmatically.
- **Custom views and drag and drop** — Add custom views for dragging and dropping image elements.
- **Document editor customization** — Customize the document editor toolbar and footer items.
- **Page flip effect** — Create a magazine-like browsing experience.
- **Permissions enforcement** — Set permissions based on JSON Web Token (JWT) parameters.
- **Electronic signatures persistence** — Keep electronic signatures across page refreshes.## Web SDK Examples
- [Web Examples](https://github.com/PSPDFKit/nutrient-web-examples)
- [React](https://github.com/PSPDFKit/nutrient-web-examples/tree/main/examples/react)
- [Angular](https://github.com/PSPDFKit/nutrient-web-examples/tree/main/examples/angular)
- [Next](https://github.com/PSPDFKit/nutrient-web-examples/tree/main/examples/nextjs)
- [Nuxt]( https://github.com/PSPDFKit/nutrient-web-examples/tree/main/examples/nuxtjs)#### Annotations
- [Watermark from text annotation](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiJ9LCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIiwianMiOiJQU1BERktpdC5sb2FkKHtcbiAgLi4uYmFzZU9wdGlvbnMsXG4gIHRoZW1lOiBQU1BERktpdC5UaGVtZS5EQVJLLFxuICBkaXNhYmxlVGV4dFNlbGVjdGlvbjogdHJ1ZSxcbn0pLnRoZW4oYXN5bmMgKGluc3RhbmNlKSA9PiB7XG4gIGxldCB3YXRlcm1hcmtzID0gKFxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogaW5zdGFuY2UudG90YWxQYWdlQ291bnQgfSkubWFwKChfLCBwYWdlSW5kZXgpID0%252BXG4gICAgICAgIGluc3RhbmNlLnBhZ2VJbmZvRm9ySW5kZXgocGFnZUluZGV4KVxuICAgICAgKVxuICAgIClcbiAgKS5yZWR1Y2UoKGFjYywgcGFnZUluZm8pID0%252BIHtcbiAgICBjb25zdCB7IGluZGV4OiBwYWdlSW5kZXgsIHJhd1BkZkJveGVzIH0gPSBwYWdlSW5mbyxcbiAgICAgIHsgY3JvcEJveCB9ID0gcmF3UGRmQm94ZXMsXG4gICAgICBbbGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0XSA9IGNyb3BCb3g7XG5cbiAgICBjb25zdCB0b3RhbFJvd3MgPSA0OyAvLyA0IHJvd3NcbiAgICBjb25zdCB0b3RhbENvbHMgPSAzOyAvLyAzIGNvbHVtbnNcbiAgICBjb25zdCB0ZXh0ID0gXCJDT05GSURFTlRJQUxcIjtcbiAgICBjb25zdCBmb250U2l6ZSA9IDE0O1xuICAgIGNvbnN0IHRleHRXaWR0aCA9IHdpZHRoICogMC40OyAvLyBJbmNyZWFzZWQgd2lkdGggKDQwJSBvZiBwYWdlIHdpZHRoKVxuICAgIGNvbnN0IHRleHRIZWlnaHQgPSA1MDsgLy8gSW5jcmVhc2VkIGhlaWdodCBmb3IgYmV0dGVyIHZpc2liaWxpdHlcblxuICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHRvdGFsUm93czsgcm93KyspIHtcbiAgICAgIGZvciAobGV0IGNvbCA9IDA7IGNvbCA8IHRvdGFsQ29sczsgY29sKyspIHtcbiAgICAgICAgY29uc3QgeCA9IChjb2wgKyAxKSAqICh3aWR0aCAvICh0b3RhbENvbHMgKyAxKSk7XG4gICAgICAgIGNvbnN0IHkgPSAocm93ICsgMSkgKiAoaGVpZ2h0IC8gKHRvdGFsUm93cyArIDEpKTtcblxuICAgICAgICBhY2MucHVzaChcbiAgICAgICAgICBuZXcgUFNQREZLaXQuQW5ub3RhdGlvbnMuVGV4dEFubm90YXRpb24oe1xuICAgICAgICAgICAgcGFnZUluZGV4OiBwYWdlSW5kZXgsXG4gICAgICAgICAgICB0ZXh0OiB7IGZvcm1hdDogXCJwbGFpblwiLCB2YWx1ZTogdGV4dCB9LFxuICAgICAgICAgICAgZm9udFNpemU6IGZvbnRTaXplLFxuICAgICAgICAgICAgaXNCb2xkOiB0cnVlLFxuICAgICAgICAgICAgZm9udDogXCJIZWx2ZXRpY2FcIixcbiAgICAgICAgICAgIGhvcml6b250YWxBbGlnbjogXCJjZW50ZXJcIixcbiAgICAgICAgICAgIGJvdW5kaW5nQm94OiBuZXcgUFNQREZLaXQuR2VvbWV0cnkuUmVjdCh7XG4gICAgICAgICAgICAgIGxlZnQ6IHggLSB0ZXh0V2lkdGggLyAyLCAvLyBDZW50ZXIgaG9yaXpvbnRhbGx5XG4gICAgICAgICAgICAgIHRvcDogeSAtIHRleHRIZWlnaHQgLyAyLCAvLyBDZW50ZXIgdmVydGljYWxseVxuICAgICAgICAgICAgICB3aWR0aDogdGV4dFdpZHRoICsgMTAwLCAvLyBJbmNyZWFzZWQgd2lkdGhcbiAgICAgICAgICAgICAgaGVpZ2h0OiB0ZXh0SGVpZ2h0ICsgMTAwLCAvLyBJbmNyZWFzZWQgaGVpZ2h0XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZvbnRDb2xvcjogUFNQREZLaXQuQ29sb3IuR1JBWSxcbiAgICAgICAgICAgIHJvdGF0aW9uOiAzMCwgLy8gU2xpZ2h0IHRpbHRcbiAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgICAgb3BhY2l0eTogMC4yLCAvLyBUcmFuc3BhcmVudCB3YXRlcm1hcmtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG5cbiAgYXdhaXQgaW5zdGFuY2UuY3JlYXRlKHdhdGVybWFya3MpO1xuICBhd2FpdCBpbnN0YW5jZS5hcHBseU9wZXJhdGlvbnMoW3sgdHlwZTogXCJmbGF0dGVuQW5ub3RhdGlvbnNcIiB9XSk7IC8vIE9wdGlvbmFsOiBGbGF0dGVuIHdhdGVybWFya3NcbiAgY29uc29sZS5sb2coXCJOdXRyaWVudCBMb2FkZWQhIGJ5IE5hcmFzaGltYW5cIik7XG59KTtcbiIsIm1vZGUiOiJzdGFuZGFsb25lIn0%253D)
- Dynamically add watermark text annotations to PDF pages before flattening them into a document.- [Flatten annotation on annotation create](https://www.nutrient.io/playground?p=eyJ2IjoxLCJqcyI6IlBTUERGS2l0LmxvYWQoeyAuLi5iYXNlT3B0aW9ucywgdGhlbWU6IFBTUERGS2l0LlRoZW1lLkRBUksgfSkudGhlbihcbiAgKGluc3RhbmNlKSA9PiB7XG4gICAgaW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcihcImFubm90YXRpb25zLmNyZWF0ZVwiLCAoYW5ub3RhdGlvbnMpID0%252BIHtcbiAgICAgIC8vIEFzc3VtaW5nIHdlIHdhbnQgdG8gZmxhdHRlbiBhbm5vdGF0aW9ucyBvbiB0aGUgcGFnZSB3aGVyZSB0aGUgYW5ub3RhdGlvbiB3YXMgYWRkZWRcbiAgICAgIGNvbnN0IHBhZ2VJbmRleGVzID0gQXJyYXkuZnJvbShcbiAgICAgICAgbmV3IFNldChhbm5vdGF0aW9ucy5tYXAoKGFubm90YXRpb24pID0%252BIGFubm90YXRpb24ucGFnZUluZGV4KSlcbiAgICAgICk7XG4gICAgICBpbnN0YW5jZVxuICAgICAgICAuYXBwbHlPcGVyYXRpb25zKFtcbiAgICAgICAgICB7IHR5cGU6IFwiZmxhdHRlbkFubm90YXRpb25zXCIsIHBhZ2VJbmRleGVzOiBwYWdlSW5kZXhlcyB9LFxuICAgICAgICBdKVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBmbGF0dGVuIGFubm90YXRpb25zOlwiLCBlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0pLFxuICAgICAgY29uc29sZS5sb2coXCJOdXRyaWVudCBsb2FkZWQhIGJ5IE5hcmFzaGltYW5cIik7XG59KTtcbiIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG5cdCIsInNldHRpbmdzIjp7ImZpbGVOYW1lIjoiYmFzaWMucGRmIn19)
- [Remove inline text selection toolbar on text select](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiJ9LCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIiwianMiOiJQU1BERktpdC5sb2FkKHtcbiAgLi4uYmFzZU9wdGlvbnMsXG4gIHRoZW1lOiBQU1BERktpdC5UaGVtZS5EQVJLLFxuICBpbmxpbmVUZXh0U2VsZWN0aW9uVG9vbGJhckl0ZW1zOiAoXG4gICAgeyBkZWZhdWx0SXRlbXMsIGhhc0Rlc2t0b3BMYXlvdXQgfSxcbiAgICBzZWxlY3Rpb25cbiAgKSA9PiB7XG4gICAgcmV0dXJuIFtdO1xuICB9LFxufSkudGhlbigoaW5zdGFuY2UpID0%252BIHtcbiAgY29uc29sZS5sb2coXCJOdXRyaWVudCBsb2FkZWQhIGJ5IE5hcmFzaGltYW5cIik7XG59KTtcbiIsIm1vZGUiOiJzdGFuZGFsb25lIn0%253D)
- [Straighten freeform highlight](https://www.nutrient.io/playground?p=eyJ2IjoxLCJqcyI6Ii8vIENvbnZlcnRzIGZyZWVmb3JtIGhpZ2hsaWdodCBhbm5vdGF0aW9ucyBpbnRvIHN0cmFpZ2h0LWxpbmUgaGlnaGxpZ2h0c1xuUFNQREZLaXQubG9hZCh7XG4gIC4uLmJhc2VPcHRpb25zLFxuICB0aGVtZTogUFNQREZLaXQuVGhlbWUuREFSSyxcbn0pLnRoZW4oKGluc3RhbmNlKSA9PiB7XG4gIC8vIFRvIGVuYWJsZSwgYXV0by1zZWxlY3Rpb24gb2YgRnJlZWZvcm0gSGlnaGxpZ2h0ZXIgdG9vbCB1bmNvbW1lbnQgdGhlIGZvbGxvd2luZyBjb2RlOlxuICAvLyBpbnN0YW5jZS5zZXRDdXJyZW50QW5ub3RhdGlvblByZXNldChcImhpZ2hsaWdodGVyXCIpO1xuICAvLyBpbnN0YW5jZS5zZXRWaWV3U3RhdGUoKHZpZXdTdGF0ZSkgPT5cbiAgLy8gICB2aWV3U3RhdGUuc2V0KFwiaW50ZXJhY3Rpb25Nb2RlXCIsIFBTUERGS2l0LkludGVyYWN0aW9uTW9kZS5JTkspXG4gIC8vICk7XG5cbiAgLy8gTGlzdGVuIGZvciBuZXcgYW5ub3RhdGlvbiBjcmVhdGlvbiBldmVudHNcbiAgaW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcihcImFubm90YXRpb25zLmNyZWF0ZVwiLCBhc3luYyAoYW5ub3RhdGlvbikgPT4ge1xuICAgIC8vIEV4dHJhY3QgcmVsZXZhbnQgcHJvcGVydGllcyBmcm9tIHRoZSBmaXJzdCBhbm5vdGF0aW9uXG4gICAgY29uc3QgeyBib3VuZGluZ0JveCwgcGFnZUluZGV4LCBjdXN0b21EYXRhLCBsaW5lV2lkdGgsIGxpbmVzIH0gPVxuICAgICAgYW5ub3RhdGlvbi5nZXQoMCk7XG5cbiAgICAvLyBTa2lwIHByb2Nlc3NpbmcgaWY6XG4gICAgLy8gMS4gQW5ub3RhdGlvbiB3YXMgYWxyZWFkeSBjcmVhdGVkIGZyb20gZnJlZWZvcm0gKHByZXZlbnRzIGluZmluaXRlIGxvb3ApXG4gICAgLy8gMi4gQ3VycmVudCBwcmVzZXQgaXMgbm90IGhpZ2hsaWdodGVyXG4gICAgaWYgKFxuICAgICAgY3VzdG9tRGF0YT8uaXNDcmVhdGVkRnJvbUZyZWVGb3JtIHx8XG4gICAgICBpbnN0YW5jZS5jdXJyZW50QW5ub3RhdGlvblByZXNldCAhPT0gXCJoaWdobGlnaHRlclwiXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCBsaW5lcyB0byBwbGFpbiBKYXZhU2NyaXB0IGFycmF5IGFuZCBleHRyYWN0IHN0YXJ0L2VuZCBwb2ludHNcbiAgICBjb25zdCBvcmlnaW5hbExpbmVzID0gbGluZXMuZ2V0KDApLnRvSlMoKTtcbiAgICBjb25zdCBzdGFydEFuZEVuZFBvaW50cyA9IFtvcmlnaW5hbExpbmVzWzBdLCBvcmlnaW5hbExpbmVzLmF0KC0xKV07XG5cbiAgICAvLyBFeHRyYWN0IGNvb3JkaW5hdGVzIGZvciB0aGUgbmV3IHN0cmFpZ2h0IGxpbmVcbiAgICBjb25zdCB7IHg6IHN0YXJ0WCwgeTogc3RhcnRZIH0gPSBzdGFydEFuZEVuZFBvaW50c1swXTtcbiAgICBjb25zdCB7IHg6IGVuZFggfSA9IHN0YXJ0QW5kRW5kUG9pbnRzWzFdO1xuXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHN0cmFpZ2h0IGxpbmUgdXNpbmcgc3RhcnQgYW5kIGVuZCBwb2ludHNcbiAgICBjb25zdCBzdHJhaWdodExpbmUgPSBQU1BERktpdC5JbW11dGFibGUuTGlzdChbXG4gICAgICBQU1BERktpdC5JbW11dGFibGUuTGlzdChbXG4gICAgICAgIG5ldyBQU1BERktpdC5HZW9tZXRyeS5EcmF3aW5nUG9pbnQoeyB4OiBzdGFydFgsIHk6IHN0YXJ0WSB9KSxcbiAgICAgICAgbmV3IFBTUERGS2l0Lkdlb21ldHJ5LkRyYXdpbmdQb2ludCh7IHg6IGVuZFgsIHk6IHN0YXJ0WSB9KSxcbiAgICAgIF0pLFxuICAgIF0pO1xuXG4gICAgLy8gQ3JlYXRlIG5ldyBoaWdobGlnaHQgYW5ub3RhdGlvbiB3aXRoIHN0cmFpZ2h0IGxpbmVcbiAgICBjb25zdCBoaWdobGlnaHQgPSBuZXcgUFNQREZLaXQuQW5ub3RhdGlvbnMuSW5rQW5ub3RhdGlvbih7XG4gICAgICBwYWdlSW5kZXgsXG4gICAgICBsaW5lczogc3RyYWlnaHRMaW5lLFxuICAgICAgbGluZVdpZHRoLFxuICAgICAgYm91bmRpbmdCb3gsXG4gICAgICBibGVuZE1vZGU6IFwibXVsdGlwbHlcIixcbiAgICAgIGN1c3RvbURhdGE6IHtcbiAgICAgICAgaXNDcmVhdGVkRnJvbUZyZWVGb3JtOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgICBzdHJva2VDb2xvcjogUFNQREZLaXQuQ29sb3IuWUVMTE9XLFxuICAgIH0pO1xuXG4gICAgLy8gTG9nIHRoZSBzZXJpYWxpemVkIGhpZ2hsaWdodCBhbm5vdGF0aW9uIGZvciBkZWJ1Z2dpbmdcbiAgICBjb25zb2xlLmxvZyhQU1BERktpdC5Bbm5vdGF0aW9ucy50b1NlcmlhbGl6YWJsZU9iamVjdChoaWdobGlnaHQpKTtcblxuICAgIC8vIFJlcGxhY2Ugb3JpZ2luYWwgZnJlZWZvcm0gYW5ub3RhdGlvbiB3aXRoIG5ldyBzdHJhaWdodCBoaWdobGlnaHRcbiAgICBhd2FpdCBpbnN0YW5jZS5kZWxldGUoYW5ub3RhdGlvbik7XG4gICAgYXdhaXQgaW5zdGFuY2UuY3JlYXRlKGhpZ2hsaWdodCk7XG4gIH0pO1xufSk7XG4ifQ%253D%253D)
- Convert freeform ink annotations into highlight annotations. — [Video](https://www.youtube.com/watch?v=dJuIdtBJdcA)- [Add ink stroke color preset to custom buttons](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tY3Y3ZGo5NW16SyIsImxheWVyIjoicmFuZG9tY1FhQXJpcFVjMiJ9fSwianMiOiIvKipcbiAqIEluaXRpYWxpemVzIFBTUERGS2l0IFZpZXdlciB3aXRoIGN1c3RvbSB0b29sYmFyIGl0ZW1zIGZvciByZWQgYW5kIGJsdWUgaW5rIGFubm90YXRpb25zXG4gKi9cblxuLy8gSW5pdGlhbGl6ZSBQU1BERktpdCB3aXRoIGN1c3RvbSBjb25maWd1cmF0aW9uXG5QU1BERktpdC5sb2FkKHtcbiAgLi4uYmFzZU9wdGlvbnMsXG4gIHRoZW1lOiBQU1BERktpdC5UaGVtZS5EQVJLLFxufSkudGhlbigoaW5zdGFuY2UpID0%252BIHtcbiAgLy8gU1ZHIHRlbXBsYXRlIGZvciBwZW4gaWNvbiAtIHVzZWQgZm9yIGJvdGggcmVkIGFuZCBibHVlIHBlbnNcbiAgY29uc3QgUEVOX0lDT05fU1ZHID0gYFxuICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBcbiAgICAgICB3aWR0aD1cIjI0XCIgXG4gICAgICAgaGVpZ2h0PVwiMjRcIiBcbiAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCIgXG4gICAgICAgY2xhc3M9XCJiaSBiaS1wZW5cIiBcbiAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCI%252BXG4gICAgPHBhdGggZD1cIm0xMy40OTguNzk1LjE0OS0uMTQ5YTEuMjA3IDEuMjA3IDAgMSAxIDEuNzA3IDEuNzA4bC0uMTQ5LjE0OGExLjUgMS41IDAgMCAxLS4wNTkgMi4wNTlMNC44NTQgMTQuODU0YS41LjUgMCAwIDEtLjIzMy4xMzFsLTQgMWEuNS41IDAgMCAxLS42MDYtLjYwNmwxLTRhLjUuNSAwIDAgMSAuMTMxLS4yMzJsOS42NDItOS42NDJhLjUuNSAwIDAgMC0uNjQyLjA1Nkw2Ljg1NCA0Ljg1NGEuNS41IDAgMSAxLS43MDgtLjcwOEw5LjQ0Ljg1NEExLjUgMS41IDAgMCAxIDExLjUuNzk2YTEuNSAxLjUgMCAwIDEgMS45OTgtLjAwMXptLS42NDQuNzY2YS41LjUgMCAwIDAtLjcwNyAwTDEuOTUgMTEuNzU2bC0uNzY0IDMuMDU3IDMuMDU3LS43NjRMMTQuNDQgMy44NTRhLjUuNSAwIDAgMCAwLS43MDhsLTEuNTg1LTEuNTg1elwiLz5cbiAgPC9zdmc%252BYDtcblxuICAvLyBDcmVhdGVzIGEgcGVuIGljb24gRE9NIG5vZGUgd2l0aCBzcGVjaWZpZWQgY29sb3JcbiAgZnVuY3Rpb24gY3JlYXRlUGVuSWNvbk5vZGUoY29sb3IpIHtcbiAgICBjb25zdCBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBub2RlLmlubmVySFRNTCA9IFBFTl9JQ09OX1NWRy5yZXBsYWNlKFwiY3VycmVudENvbG9yXCIsIGNvbG9yKTtcbiAgICBub2RlLnF1ZXJ5U2VsZWN0b3IoXCJwYXRoXCIpLnNldEF0dHJpYnV0ZShcImZpbGxcIiwgY29sb3IpO1xuICAgIG5vZGUucXVlcnlTZWxlY3RvcihcInN2Z1wiKS5zdHlsZS5jb2xvciA9IGNvbG9yO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLy8gQ3JlYXRlcyBhIGN1c3RvbSB0b29sYmFyIGl0ZW1cbiAgZnVuY3Rpb24gY3JlYXRlSW5rVG9vbGJhckl0ZW0odGl0bGUsIG5vZGUsIGNvbG9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgICB0aXRsZSxcbiAgICAgIG5vZGUsXG4gICAgICBvblByZXNzOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW50ZXJhY3Rpb25Nb2RlIH0gPSBpbnN0YW5jZS52aWV3U3RhdGU7XG5cbiAgICAgICAgaWYgKGludGVyYWN0aW9uTW9kZSA9PT0gXCJJTktcIiB8fCBpbnRlcmFjdGlvbk1vZGUgPT09IG51bGwpIHtcbiAgICAgICAgICAvLyBEaXNhYmxlIGN1cnJlbnQgaW50ZXJhY3Rpb24gbW9kZVxuICAgICAgICAgIGluc3RhbmNlLnNldFZpZXdTdGF0ZSgodmlld1N0YXRlKSA9PlxuICAgICAgICAgICAgdmlld1N0YXRlLnNldChcImludGVyYWN0aW9uTW9kZVwiLCBudWxsKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBVcGRhdGUgaW5rIHByZXNldCB3aXRoIHNlbGVjdGVkIGNvbG9yXG4gICAgICAgICAgaW5zdGFuY2Uuc2V0QW5ub3RhdGlvblByZXNldHMoKHByZXNldHMpID0%252BICh7XG4gICAgICAgICAgICAuLi5wcmVzZXRzLFxuICAgICAgICAgICAgaW5rOiB7XG4gICAgICAgICAgICAgIC4uLnByZXNldHMuaW5rLFxuICAgICAgICAgICAgICBzdHJva2VDb2xvcjogY29sb3IsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pKTtcblxuICAgICAgICAgIC8vIEVuYWJsZSBpbmsgbW9kZSB3aXRoIG5ldyBjb2xvclxuICAgICAgICAgIGluc3RhbmNlLnNldEN1cnJlbnRBbm5vdGF0aW9uUHJlc2V0KFwiaW5rXCIpO1xuICAgICAgICAgIGluc3RhbmNlLnNldFZpZXdTdGF0ZSgodmlld1N0YXRlKSA9PlxuICAgICAgICAgICAgdmlld1N0YXRlLnNldChcImludGVyYWN0aW9uTW9kZVwiLCBQU1BERktpdC5JbnRlcmFjdGlvbk1vZGUuSU5LKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRGlzYWJsZSBpbnRlcmFjdGlvbiBtb2RlXG4gICAgICAgICAgaW5zdGFuY2Uuc2V0Vmlld1N0YXRlKCh2aWV3U3RhdGUpID0%252BXG4gICAgICAgICAgICB2aWV3U3RhdGUuc2V0KFwiaW50ZXJhY3Rpb25Nb2RlXCIsIG51bGwpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLy8gQ3JlYXRlIHBlbiBpY29uIG5vZGVzIGZvciBlYWNoIGNvbG9yXG4gIGNvbnN0IHJlZFBlbk5vZGUgPSBjcmVhdGVQZW5JY29uTm9kZShcInJlZFwiKTtcbiAgY29uc3QgYmx1ZVBlbk5vZGUgPSBjcmVhdGVQZW5JY29uTm9kZShcImJsdWVcIik7XG5cbiAgLy8gQ3JlYXRlIHRvb2xiYXIgaXRlbXMgZm9yIHJlZCBhbmQgYmx1ZSBpbmtcbiAgY29uc3QgcmVkSW5rVG9vbCA9IGNyZWF0ZUlua1Rvb2xiYXJJdGVtKFxuICAgIFwiUmVkIElua1wiLFxuICAgIHJlZFBlbk5vZGUsXG4gICAgUFNQREZLaXQuQ29sb3IuUkVEXG4gICk7XG4gIGNvbnN0IGJsdWVJbmtUb29sID0gY3JlYXRlSW5rVG9vbGJhckl0ZW0oXG4gICAgXCJCbHVlIElua1wiLFxuICAgIGJsdWVQZW5Ob2RlLFxuICAgIFBTUERGS2l0LkNvbG9yLkJMVUVcbiAgKTtcblxuICAvLyBBZGQgY3VzdG9tIHRvb2xzIHRvIHRvb2xiYXIgbmV4dCB0byB0aGUgZGVmYXVsdCBpbmsgdG9vbFxuICBpbnN0YW5jZS5zZXRUb29sYmFySXRlbXMoKGl0ZW1zKSA9PlxuICAgIGl0ZW1zLnJlZHVjZShcbiAgICAgICh0b29sYmFyLCBpdGVtKSA9PlxuICAgICAgICBpdGVtLnR5cGUgPT09IFwiaW5rXCJcbiAgICAgICAgICA%252FIFsuLi50b29sYmFyLCBpdGVtLCByZWRJbmtUb29sLCBibHVlSW5rVG9vbF1cbiAgICAgICAgICA6IFsuLi50b29sYmFyLCBpdGVtXSxcbiAgICAgIFtdXG4gICAgKVxuICApO1xufSk7XG4ifQ%253D%253D)
- Customize the toolbar to add two custom ink annotation buttons — one for red ink and one for blue ink — alongside the default ink annotation tool. — [Video](https://www.youtube.com/watch?v=5c1Djroucjk)- [Custom outlines for shape annotations](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tbEUxUXUwYzdjVCIsImxheWVyIjoicmFuZG9ta1FnUzRqOEpySCJ9fSwianMiOiJQU1BERktpdC5sb2FkKHsuLi5iYXNlT3B0aW9ucyx0aGVtZTpQU1BERktpdC5UaGVtZS5EQVJLfSkudGhlbigoaW5zdGFuY2U9PntpbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCdwYWdlLnByZXNzJywoYXN5bmMgZXZlbnQ9Pntjb25zdHtwb2ludDpwb2ludCxwYWdlSW5kZXg6cGFnZUluZGV4LG5hdGl2ZUV2ZW50Om5hdGl2ZUV2ZW50fT1ldmVudCxhbm5vdGF0aW9uPShhd2FpdCBpbnN0YW5jZS5nZXRBbm5vdGF0aW9ucygwKSkuZmluZCgoYW5ub3RhdGlvbj0%252Be2NvbnN0IG91dGVyUmVjdD1hbm5vdGF0aW9uLmJvdW5kaW5nQm94Lmdyb3coMzApLGlubmVyUmVjdD1hbm5vdGF0aW9uLmJvdW5kaW5nQm94Lmdyb3coLTMwKTtyZXR1cm4gb3V0ZXJSZWN0LmlzUG9pbnRJbnNpZGUocG9pbnQpJiYhaW5uZXJSZWN0LmlzUG9pbnRJbnNpZGUocG9pbnQpfSkpLGlzU2VsZWN0PWluc3RhbmNlLmdldFNlbGVjdGVkQW5ub3RhdGlvbnMoKTthbm5vdGF0aW9uJiYhaXNTZWxlY3QmJihuYXRpdmVFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxzZXRUaW1lb3V0KCgoKT0%252BaW5zdGFuY2Uuc2V0U2VsZWN0ZWRBbm5vdGF0aW9ucyhhbm5vdGF0aW9uLmlkKSksMCkpfSkpfSkpOyIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG4uUFNQREZLaXQtU2hhcGUtQW5ub3RhdGlvbntcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLlBTUERGS2l0LVNoYXBlLUFubm90YXRpb246bm90KDpoYXMoc3ZnIGVsbGlwc2UpKTo6YWZ0ZXJ7XG4gICBjdXJzb3I6IGRlZmF1bHQgIWltcG9ydGFudDtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxLjI1cmVtO1xuICBib3R0b206IDEuMjVyZW07XG4gIGxlZnQ6IDEuMjVyZW07XG4gIHJpZ2h0OiAxLjI1cmVtO1xuICBvdXRsaW5lOiAxcHggc29saWQgcmVkICFpbXBvcnRhbnQ7XG59XG5cbi5QU1BERktpdC1TaGFwZS1Bbm5vdGF0aW9uOmhhcyhzdmcgZWxsaXBzZSk6OmFmdGVye1xuICAgY3Vyc29yOiBkZWZhdWx0ICFpbXBvcnRhbnQ7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMS4yNXJlbTtcbiAgYm90dG9tOiAxLjI1cmVtO1xuICBsZWZ0OiAxLjI1cmVtO1xuICByaWdodDogMS4yNXJlbTtcbiAgb3V0bGluZTogMXB4IHNvbGlkIHJlZCAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbi5QU1BERktpdC1TaGFwZS1Bbm5vdGF0aW9uOjpiZWZvcmUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTI1cHg7XG4gIGJvdHRvbTogLTI1cHg7XG4gIGxlZnQ6IC0yNXB4O1xuICByaWdodDogLTI1cHg7XG4gIG91dGxpbmU6IDJweCBzb2xpZCBwaW5rO1xufVxuIiwibW9kZSI6InN0YW5kYWxvbmUifQ%253D%253D)
- Customize shape annotations by adding an outline.- [Customize annotation creators](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tbEUxUXUwYzdjVCIsImxheWVyIjoicmFuZG9ta1FnUzRqOEpySCJ9fSwianMiOiJsZXQgYWxsU3RhbXBzPVtdLGNyZWF0b3JzPVsnVHJpc3RhJywnRWxpJywnQWxleCcsJ1BhdicsJ0NocmlzJ107UFNQREZLaXQubG9hZCh7Li4uYmFzZU9wdGlvbnMsdGhlbWU6UFNQREZLaXQuVGhlbWUuREFSSyxjdXN0b21SZW5kZXJlcnM6e319KS50aGVuKChpbnN0YW5jZT0%252Be2NvbnN0IHNlbGVjdE5vZGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0Jyk7c2VsZWN0Tm9kZS5pbm5lckhUTUw9Y3JlYXRvcnMubWFwKChjcmVhdG9yPT5gPG9wdGlvbiB2YWx1ZT1cIiR7Y3JlYXRvcn1cIj4ke2NyZWF0b3J9PC9vcHRpb24%252BYCkpLFxuLy9saXN0ZW5pbmcgdG8gb25DaGFuZ2UgZXZlbnRzIHRvIHVwZGF0ZSB0aGUgZm9udCBmYW1pbHkgYWNjb3JkaW5nbHlcbnNlbGVjdE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywoYXN5bmMgZXZlbnQ9Pntjb25zb2xlLmxvZyhgU2VsZWN0ZWQgb3B0aW9uOiAke2V2ZW50LnRhcmdldC52YWx1ZX1gKSxpbnN0YW5jZS5zZXRDdXN0b21SZW5kZXJlcnMoe0Fubm90YXRpb246KHthbm5vdGF0aW9uOmFubm90YXRpb259KT0%252BZXZlbnQudGFyZ2V0LnZhbHVlPT09YW5ub3RhdGlvbi5jcmVhdG9yTmFtZT97bm9kZTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSxhcHBlbmQ6ITF9Om51bGx9KX0pKTtcbi8vQ3VzdG9tIFRvb2xiYXIgSXRlbVxuY29uc3QgZmlsdGVyPXt0eXBlOidjdXN0b20nLGlkOidteS1idXR0b24nLG5vZGU6c2VsZWN0Tm9kZX07aW5zdGFuY2Uuc2V0VG9vbGJhckl0ZW1zKFt7dHlwZTonc3BhY2VyJ30sZmlsdGVyLHt0eXBlOidzcGFjZXInfV0pLGluc3RhbmNlLnNldEFubm90YXRpb25DcmVhdG9yTmFtZSgnU2FzaGEnKTtmb3IobGV0IGk9MDtpPDU7KytpKWFsbFN0YW1wc1tpXT1uZXcgUFNQREZLaXQuQW5ub3RhdGlvbnMuU3RhbXBBbm5vdGF0aW9uKHtwYWdlSW5kZXg6MCxpZDpQU1BERktpdC5nZW5lcmF0ZUluc3RhbnRJZCgpLHN0YW1wVHlwZTonQ3VzdG9tJyx0aXRsZTpgU1RBTVAtJHtpfWAsY29sb3I6UFNQREZLaXQuQ29sb3IuQkxBQ0ssYm91bmRpbmdCb3g6bmV3IFBTUERGS2l0Lkdlb21ldHJ5LlJlY3Qoe2xlZnQ6aT4wP2FsbFN0YW1wc1tpLTFdLmJvdW5kaW5nQm94LmxlZnQrNTA6MTAwLHRvcDoxMDAsd2lkdGg6NTAsaGVpZ2h0OjUwfSksY3JlYXRvck5hbWU6Y3JlYXRvcnNbaV19KTtcbi8vY3JlYXRpbmcgYWxsIHRoZSBzdGFtcHNcbmluc3RhbmNlLmNyZWF0ZShhbGxTdGFtcHMpfSkpOyIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG5cdC5jaGVja2JveC1kcm9wZG93biB7XG4gICAgd2lkdGg6IDIwMHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi8qIERpc3BsYXkgQ1NTIGFycm93IHRvIHRoZSByaWdodCBvZiB0aGUgZHJvcGRvd24gdGV4dCAqL1xuLmNoZWNrYm94LWRyb3Bkb3duOmFmdGVyIHtcbiAgICBjb250ZW50OicnO1xuICAgIGhlaWdodDogMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDA7XG4gICAgYm9yZGVyOiA2cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogIzAwMDtcbiAgICB0b3A6IDUwJTtcbiAgICByaWdodDogMTBweDtcbiAgICBtYXJnaW4tdG9wOiAtM3B4O1xufVxuXG4vKiBSZXZlcnNlIHRoZSBDU1MgYXJyb3cgd2hlbiB0aGUgZHJvcGRvd24gaXMgYWN0aXZlICovXG4uY2hlY2tib3gtZHJvcGRvd24uaXMtYWN0aXZlOmFmdGVyIHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjMDAwO1xuICAgIGJvcmRlci10b3AtY29sb3I6ICNmZmY7XG4gICAgbWFyZ2luLXRvcDogLTlweDtcbn1cblxuLmNoZWNrYm94LWRyb3Bkb3duLWxpc3Qge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTAwJTsgLyogYWxpZ24gdGhlIGRyb3Bkb3duIHJpZ2h0IGJlbG93IHRoZSBkcm9wZG93biB0ZXh0ICovXG4gICAgYm9yZGVyOiBpbmhlcml0O1xuICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgbGVmdDogLTFweDsgLyogYWxpZ24gdGhlIGRyb3Bkb3duIHRvIHRoZSBsZWZ0ICovXG4gICAgcmlnaHQ6IC0xcHg7IC8qIGFsaWduIHRoZSBkcm9wZG93biB0byB0aGUgcmlnaHQgKi9cbiAgICBvcGFjaXR5OiAwOyAvKiBoaWRlIHRoZSBkcm9wZG93biAqL1xuICAgXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjRzIGVhc2UtaW4tb3V0O1xuICAgIGhlaWdodDogMTAwcHg7XG4gICAgb3ZlcmZsb3c6IHNjcm9sbDtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IC8qIGF2b2lkIG1vdXNlIGNsaWNrIGV2ZW50cyBpbnNpZGUgdGhlIGRyb3Bkb3duICovXG59XG4uaXMtYWN0aXZlIC5jaGVja2JveC1kcm9wZG93bi1saXN0IHtcbiAgICBvcGFjaXR5OiAxOyAvKiBkaXNwbGF5IHRoZSBkcm9wZG93biAqL1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOyAvKiBtYWtlIHN1cmUgdGhhdCB0aGUgdXNlciBzdGlsbCBjYW4gc2VsZWN0IGNoZWNrYm94ZXMgKi9cbn1cblxuLmNoZWNrYm94LWRyb3Bkb3duLWxpc3QgbGkgbGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBzaWx2ZXI7XG4gICAgcGFkZGluZzogMTBweDtcbiAgIFxuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2Utb3V0O1xufVxuXG4uY2hlY2tib3gtZHJvcGRvd24tbGlzdCBsaSBsYWJlbDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTtcbiAgICBjb2xvcjogd2hpdGU7XG59XG4iLCJtb2RlIjoic3RhbmRhbG9uZSJ9)
- Create and customize stamp annotations with multiple creators. — [Video](https://www.youtube.com/watch?v=etJAe9bJzic)- [Prevent dragging of annotations](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImZvcm0ucGRmIiwiand0Ijp7InBlcm1pc3Npb25zIjpbInJlYWQtZG9jdW1lbnQiLCJ3cml0ZSJdLCJ1c2VySWQiOiJyYW5kb21sRTFRdTBjN2NUIiwibGF5ZXIiOiJyYW5kb21rUWdTNGo4SnJIIn19LCJqcyI6IlBTUERGS2l0LmxvYWQoey4uLmJhc2VPcHRpb25zLHRoZW1lOlBTUERGS2l0LlRoZW1lLkRBUkt9KS50aGVuKChpbnN0YW5jZT0%252Be2luc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2Fubm90YXRpb25zLnByZXNzJywoZXZlbnQ9Pntjb25zdHthbm5vdGF0aW9uOmFubm90YXRpb24sbmF0aXZlRXZlbnQ6bmF0aXZlRXZlbnR9PWV2ZW50O1xuLy9oYW5kbGluZyBzcGVjaWFsIGNhc2UgZm9yIFRleHQgQW5ub3RhdGlvbnNcbnJldHVybiBudWxsIT09aW5zdGFuY2UuZ2V0U2VsZWN0ZWRBbm5vdGF0aW9ucygpJiZhbm5vdGF0aW9uIGluc3RhbmNlb2YgUFNQREZLaXQuQW5ub3RhdGlvbnMuVGV4dEFubm90YXRpb24%252FaW5zdGFuY2Uuc2V0RWRpdGluZ0Fubm90YXRpb24oYW5ub3RhdGlvbix7YXV0b1NlbGVjdFRleHQ6ITF9KTpcbi8vSGFuZGxpbmcgc3BlY2lhbCBjYXNlIGZvciBOb3RlcyBzbGlnaGx0eSBkaWZmZXJlbnQgdGhhbiBUZXh0IEFubm90YXRpb25zXG5hbm5vdGF0aW9uIGluc3RhbmNlb2YgUFNQREZLaXQuQW5ub3RhdGlvbnMuTm90ZUFubm90YXRpb24%252FKGV2ZW50LnByZXZlbnREZWZhdWx0KCksaW5zdGFuY2Uuc2V0RWRpdGluZ0Fubm90YXRpb24oYW5ub3RhdGlvbix7YXV0b1NlbGVjdFRleHQ6ITF9KSk6XG4vL2lnbm9yaW5nIEZvcm1zIGFuZCBMaW5rcyB0byBhbGxvdyBkZWZhdWx0IGZvY3VzIGFuZCByZWRpcmVjdCBiZWhhdmlvcnMgcmVzcGVjdGl2ZWx5XG5hbm5vdGF0aW9uIGluc3RhbmNlb2YgUFNQREZLaXQuQW5ub3RhdGlvbnMuV2lkZ2V0QW5ub3RhdGlvbnx8YW5ub3RhdGlvbiBpbnN0YW5jZW9mIFBTUERGS2l0LkFubm90YXRpb25zLkxpbmtBbm5vdGF0aW9uP3ZvaWQgMDooXG4vL3ByZXZlbnRpbmcgZHJhZ2dpbmcgZm9yIHRoZSByZXN0IG9mIEFubm90YXRpb24gVHlwZXNcbmV2ZW50LnByZXZlbnREZWZhdWx0KCksaW5zdGFuY2Uuc2V0U2VsZWN0ZWRBbm5vdGF0aW9ucyhhbm5vdGF0aW9uKSl9KSx7Y2FwdHVyZTohMH0pfSkpOyIsIm1vZGUiOiJzdGFuZGFsb25lIiwiY3NzIjoiLyogQWRkIHlvdXIgQ1NTIGhlcmUgKi9cbiJ9)
- Allow special behavior for text and note annotations, while preserving default behaviors for forms and links, and restrict dragging for other annotation types.- [Restrict dragging and editing ink annotations and signatures](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImZvcm0ucGRmIiwiand0Ijp7InBlcm1pc3Npb25zIjpbInJlYWQtZG9jdW1lbnQiLCJ3cml0ZSJdLCJ1c2VySWQiOiJyYW5kb211cWlpT202ZU5xIiwibGF5ZXIiOiJyYW5kb21QRzRBRkxwbGM2In19LCJqcyI6IlBTUERGS2l0LmxvYWQoey4uLmJhc2VPcHRpb25zLHRoZW1lOlBTUERGS2l0LlRoZW1lLkRBUkt9KS50aGVuKChhc3luYyBpbnN0YW5jZT0%252Be2NvbnN0IGFubm90YXRpb249bmV3IFBTUERGS2l0LkFubm90YXRpb25zLklua0Fubm90YXRpb24oe3BhZ2VJbmRleDowLGlzU2lnbmF0dXJlOiEwLGxpbmVzOlBTUERGS2l0LkltbXV0YWJsZS5MaXN0KFtQU1BERktpdC5JbW11dGFibGUuTGlzdChbbmV3IFBTUERGS2l0Lkdlb21ldHJ5LkRyYXdpbmdQb2ludCh7eDo1LHk6NX0pLG5ldyBQU1BERktpdC5HZW9tZXRyeS5EcmF3aW5nUG9pbnQoe3g6OTUseTo5NX0pXSksUFNQREZLaXQuSW1tdXRhYmxlLkxpc3QoW25ldyBQU1BERktpdC5HZW9tZXRyeS5EcmF3aW5nUG9pbnQoe3g6OTUseTo1fSksbmV3IFBTUERGS2l0Lkdlb21ldHJ5LkRyYXdpbmdQb2ludCh7eDo1LHk6OTV9KV0pXSksYm91bmRpbmdCb3g6bmV3IFBTUERGS2l0Lkdlb21ldHJ5LlJlY3Qoe2xlZnQ6MCx0b3A6MCx3aWR0aDoxMDAsaGVpZ2h0OjEwMH0pfSk7YXdhaXQgaW5zdGFuY2UuY3JlYXRlKGFubm90YXRpb24pLGluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2Fubm90YXRpb25zLnByZXNzJywoZXZlbnQ9Pntjb25zdHthbm5vdGF0aW9uOmFubm90YXRpb24sbmF0aXZlRXZlbnQ6bmF0aXZlRXZlbnR9PWV2ZW50O2NvbnNvbGUubG9nKGluc3RhbmNlLmdldFNlbGVjdGVkQW5ub3RhdGlvbnMoKSksbnVsbCE9PWluc3RhbmNlLmdldFNlbGVjdGVkQW5ub3RhdGlvbnMoKSYmYW5ub3RhdGlvbiBpbnN0YW5jZW9mIFBTUERGS2l0LkFubm90YXRpb25zLklua0Fubm90YXRpb24mJmFubm90YXRpb24uaXNTaWduYXR1cmUmJihldmVudC5wcmV2ZW50RGVmYXVsdCgpLGluc3RhbmNlLnNldFNlbGVjdGVkQW5ub3RhdGlvbnMoYW5ub3RhdGlvbikpfSkpfSkpOyIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG5cbi5QU1BERktpdC1SZXNpemUtQW5jaG9yIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXHQifQ%253D%253D)
- Prevent users from editing or dragging ink annotations and ink signatures, but allow them to delete them.- [Programmatically create a comment thread](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tbEUxUXUwYzdjVCIsImxheWVyIjoicmFuZG9ta1FnUzRqOEpySCJ9fSwianMiOiIvL3NldCB1c2VyIG5hbWUgZnJvbSBhIGxvZ2luIG9yIGF1dGhlbnRpY2F0aW9uXG5jb25zdCB1c2VybmFtZT0nT21hcic7UFNQREZLaXQubG9hZCh7Li4uYmFzZU9wdGlvbnMsdGhlbWU6UFNQREZLaXQuVGhlbWUuREFSSyx0b29sYmFySXRlbXM6W3t0eXBlOidjb21tZW50J31dfSkudGhlbigoaW5zdGFuY2U9Pntjb25zdCBhbm5vdGF0aW9uPW5ldyBQU1BERktpdC5Bbm5vdGF0aW9ucy5Db21tZW50TWFya2VyQW5ub3RhdGlvbih7aWQ6J3Rlc3QnLHBhZ2VJbmRleDowLGJvdW5kaW5nQm94Om5ldyBQU1BERktpdC5HZW9tZXRyeS5SZWN0KHt0b3A6MTAwLGxlZnQ6MTAwLHdpZHRoOjEwLGhlaWdodDoxMH0pLGN1c3RvbURhdGE6e2NpcmNsZUlkOidteS1jaXJjbGUnfX0pLGNvbW1lbnQ9bmV3IFBTUERGS2l0LkNvbW1lbnQoe2lkOidjb21tZW50SWQnLHJvb3RJZDondGVzdCcscGFnZUluZGV4OjAsdGV4dDp7Zm9ybWF0OidwbGFpbicsdmFsdWU6J0hlbGxvJ319KTtpbnN0YW5jZS5zZXRBbm5vdGF0aW9uQ3JlYXRvck5hbWUoJ09tYXInKSxpbnN0YW5jZS5jcmVhdGUoW2Fubm90YXRpb24sY29tbWVudF0pLGluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2Fubm90YXRpb25zLmNyZWF0ZScsKGFubm90YXRpb25zPT57Y29uc29sZS5sb2coYW5ub3RhdGlvbnMuZ2V0KDApLnRvSlMoKSl9KSl9KSk7IiwiY3NzIjoiLyogQWRkIHlvdXIgQ1NTIGhlcmUgKi9cbiJ9)
- Programmatically add a comment marker annotation and an associated comment while setting the annotation creator's name.- [Open URL from image annotation](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tbEUxUXUwYzdjVCIsImxheWVyIjoicmFuZG9ta1FnUzRqOEpySCJ9fSwianMiOiJQU1BERktpdC5sb2FkKHtcbiAgLi4uYmFzZU9wdGlvbnMsXG4gIHRoZW1lOiBQU1BERktpdC5UaGVtZS5EQVJLLFxufSkudGhlbihhc3luYyhpbnN0YW5jZSkgPT4ge1xuIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCBmZXRjaChcImh0dHBzOi8vcHNwZGZraXQuY29tL2Fzc2V0cy9pbWFnZXMvZGlhZ29uYWwtZmxpZ2h0LWNhcmRzLTdkOTk3Njk5LnBuZ1wiKTtcbmNvbnN0IGJsb2IgPSBhd2FpdCByZXF1ZXN0LmJsb2IoKTtcbmNvbnN0IGltYWdlQXR0YWNobWVudElkID0gYXdhaXQgaW5zdGFuY2UuY3JlYXRlQXR0YWNobWVudChibG9iKTtcbmNvbnN0IGFubm90YXRpb24gPSBuZXcgUFNQREZLaXQuQW5ub3RhdGlvbnMuSW1hZ2VBbm5vdGF0aW9uKHtcbiAgcGFnZUluZGV4OiAwLFxuICBjb250ZW50VHlwZTogXCJpbWFnZS9wbmdcIixcbiAgaW1hZ2VBdHRhY2htZW50SWQsXG4gIGRlc2NyaXB0aW9uOiBcIkV4YW1wbGUgSW1hZ2UgQW5ub3RhdGlvblwiLFxuICBib3VuZGluZ0JveDogbmV3IFBTUERGS2l0Lkdlb21ldHJ5LlJlY3Qoe1xuICAgIGxlZnQ6IDEwLFxuICAgIHRvcDogMjAsXG4gICAgd2lkdGg6IDE1MCxcbiAgICBoZWlnaHQ6IDE1MCxcbiAgfSksXG4gIGFjdGlvbjogbmV3IFBTUERGS2l0LkFjdGlvbnMuVVJJQWN0aW9uKHt1cmk6IFwiaHR0cHM6Ly9wc3BkZmtpdC5jb20vYXNzZXRzL2ltYWdlcy9sb2dvcy9wc3BkZmtpdC0zY2NkODI1My5zdmdcIn0pXG59KTtcbmF3YWl0IGluc3RhbmNlLmNyZWF0ZShhbm5vdGF0aW9uKVxufSk7XG5cdCJ9)
- [Display highlighted text in annotation sidebar](https://playground.pspdfkit.com/?p=eyJ2IjoxLCJtb2RlIjoic3RhbmRhbG9uZSIsImpzIjoibGV0IGluc3RhbmNlPW51bGw7Y29uc3QgY3VzdG9tVUlDb25maWd1cmF0aW9uPXtbUFNQREZLaXQuVUlFbGVtZW50LlNpZGViYXJdOntbUFNQREZLaXQuU2lkZWJhck1vZGUuQU5OT1RBVElPTlNdOih7Y29udGFpbmVyTm9kZTpjb250YWluZXJOb2RlfSk9Pih7bm9kZTpjb250YWluZXJOb2RlLG9uUmVuZGVySXRlbTooe2l0ZW06YW5ub3RhdGlvbixpdGVtQ29udGFpbmVyTm9kZTppdGVtQ29udGFpbmVyTm9kZX0pPT57YW5ub3RhdGlvbiBpbnN0YW5jZW9mIFBTUERGS2l0LkFubm90YXRpb25zLkhpZ2hsaWdodEFubm90YXRpb24mJmluc3RhbmNlLmdldFRleHRGcm9tUmVjdHMoYW5ub3RhdGlvbi5wYWdlSW5kZXgsYW5ub3RhdGlvbi5yZWN0cykudGhlbigodGV4dD0%252Be2l0ZW1Db250YWluZXJOb2RlLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLnRleHRDb250ZW50PXRleHR9KSl9fSl9fTtQU1BERktpdC5sb2FkKHsuLi5iYXNlT3B0aW9ucyx0aGVtZTpQU1BERktpdC5UaGVtZS5EQVJLLGN1c3RvbVVJOmN1c3RvbVVJQ29uZmlndXJhdGlvbixpbml0aWFsVmlld1N0YXRlOm5ldyBQU1BERktpdC5WaWV3U3RhdGUoe3NpZGViYXJNb2RlOlBTUERGS2l0LlNpZGViYXJNb2RlLkFOTk9UQVRJT05TfSl9KS50aGVuKChfaW5zdGFuY2U9PihpbnN0YW5jZT1faW5zdGFuY2UsY29uc29sZS5sb2coJ1BTUERGS2l0IGZvciBXZWIgc3VjY2Vzc2Z1bGx5IGxvYWRlZCEhJyxpbnN0YW5jZSksaW5zdGFuY2UpKSk7Iiwic2V0dGluZ3MiOnsiZmlsZU5hbWUiOiJiYXNpYy5wZGYiLCJqd3QiOnsicGVybWlzc2lvbnMiOlsicmVhZC1kb2N1bWVudCIsIndyaXRlIl0sInVzZXJJZCI6InJhbmRvbXZ1bllZQjlENjciLCJsYXllciI6InJhbmRvbVlqSnMwTnZNZVAifX0sImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG5cdCJ9)
- Customize the annotation sidebar to display highlighted text and allow annotation editing (except for signatures). — [Video](https://www.youtube.com/watch?v=Fs1eeMrkXEQ)- [Hide link annotations tooltip](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiJ9LCJqcyI6Ii8vY2hlY2sgQ1NTIFRhYiBmb3IgQ1NTIHNlbGVjdG9yXG4vL0hvdyB0byBhZGQgQ3VzdG9tIENTUyB0byBQU1BERktpdDogaHR0cHM6Ly9wc3BkZmtpdC5jb20vZ3VpZGVzL3dlYi9jdXN0b21pemluZy10aGUtaW50ZXJmYWNlL2Nzcy1jdXN0b21pemF0aW9uL1xuLy9QU1BERktpdCBDU1MgQ2xhc3NlczogaHR0cHM6Ly9wc3BkZmtpdC5jb20vYXBpL3dlYi8jOn46dGV4dD1XaWRnZXRBbm5vdGF0aW9uQWRkaXRpb25hbEFjdGlvbnMtLENTUywtQW5ub3RhdGlvbiUyMFRvb2x0aXBcbi8qXG4gIC5QU1BERktpdC1MaW5rLUVkaXRvci1Qb3BvdmVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4qL1xuUFNQREZLaXQubG9hZCh7XG4gIC4uLmJhc2VPcHRpb25zLFxuICB0aGVtZTogUFNQREZLaXQuVGhlbWUuREFSSyxcbiAgaW5pdGlhbFZpZXdTdGF0ZTogbmV3IFBTUERGS2l0LlZpZXdTdGF0ZSh7IGN1cnJlbnRQYWdlSW5kZXg6IDEgfSksXG59KS50aGVuKGFzeW5jIChpbnN0YW5jZSkgPT4ge1xuICBjb25zdCBsaW5rQW5ub3RhdGlvbiA9IGF3YWl0IGluc3RhbmNlLmdldEFubm90YXRpb25zKDEpO1xuICBpbnN0YW5jZS5zZXRTZWxlY3RlZEFubm90YXRpb25zKGxpbmtBbm5vdGF0aW9uKTtcbiAgY29uc29sZS5sb2coXCJQU1BERktpdCBsb2FkZWQhIGJ5IE5hcmFzaGltYW5cIik7IC8vIExvZyBhIG1lc3NhZ2UgdG8gaW5kaWNhdGUgc3VjY2Vzc2Z1bCBsb2FkaW5nXG59KTtcbiIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG4uUFNQREZLaXQtTGluay1FZGl0b3ItUG9wb3ZlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4iLCJtb2RlIjoic3RhbmRhbG9uZSJ9)
- Hide the popover element when a link annotation is selected. — [Video](https://www.youtube.com/watch?v=_sCyG5hdG10)- [Use custom renderers to display annotation information on hover](https://www.nutrient.io/playground?p=eyJ2IjoxLCJjc3MiOiIudG9vbHRpcCB7XG4gIHBvc2l0aW9uOiBpbmhlcml0O1xufVxuLnRvb2x0aXA6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvcGFjaXR5OiAxO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiA5O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGNvbG9yOiAjZmZmO1xuICBjb250ZW50OiBhdHRyKGRhdGEtYW5ub3RhdGlvbi1pZCk7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgcGFkZGluZzogNnB4IDEwcHg7XG4gIHRvcDogMjZweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLyogdGhlIGFuaW1hdGlvbnMgKi9cbi8qIGZhZGUgKi9cbiIsInNldHRpbmdzIjp7ImZpbGVOYW1lIjoiZm9ybS5wZGYiLCJqd3QiOnsicGVybWlzc2lvbnMiOlsicmVhZC1kb2N1bWVudCIsIndyaXRlIl0sInVzZXJJZCI6InJhbmRvbWVvTzNmV1JaaWciLCJsYXllciI6InJhbmRvbVRYTVM2SkZuRk4ifX0sImpzIjoiLy8gSW5pdGlhbGl6ZSBQU1BERktpdCBWaWV3ZXIgaW5zdGFuY2VcblBTUERGS2l0LmxvYWQoe1xuICAuLi5iYXNlT3B0aW9ucyxcbiAgdGhlbWU6IFBTUERGS2l0LlRoZW1lLkRBUkssXG4gIGN1c3RvbVJlbmRlcmVyczoge1xuICAgIC8vIEN1c3RvbSByZW5kZXJlciBmb3IgYW5ub3RhdGlvbnMgdGhhdCBhZGRzIGludGVyYWN0aXZlIHRvb2x0aXBzLCB3aWxsIHNob3cgdGhlIGFubm90YXRpb24gSURcbiAgICBBbm5vdGF0aW9uKHsgYW5ub3RhdGlvbiB9KSB7XG4gICAgICBjb25zdCB0b29sdGlwQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblxuICAgICAgLy8gU2V0IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgYW5ub3RhdGlvblxuICAgICAgdG9vbHRpcENvbnRhaW5lci5kYXRhc2V0LmFubm90YXRpb25JZCA9IGFubm90YXRpb24uaWQ7XG5cbiAgICAgIC8vIEFwcGx5IHN0eWxlcyBmb3IgdG9vbHRpcCBjb250YWluZXJcbiAgICAgIHRvb2x0aXBDb250YWluZXIuc3R5bGUuY3NzVGV4dCA9IGBcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgICAgIGA7XG5cbiAgICAgIC8vIFNlZSBDU1MgdGFiIGZvciBtb3JlIHRvb2x0aXAgc3R5bGVzXG5cbiAgICAgIC8vIENyZWF0ZSBpbm5lciB0b29sdGlwIGVsZW1lbnQgd2l0aCBhbm5vdGF0aW9uIElEIGFzIHRpdGxlXG4gICAgICB0b29sdGlwQ29udGFpbmVyLmlubmVySFRNTCA9IGA8ZGl2IGRhdGEtdGl0bGU9XCIke2Fubm90YXRpb24uaWR9XCI%252BPC9kaXY%252BYDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbm9kZTogdG9vbHRpcENvbnRhaW5lcixcbiAgICAgICAgYXBwZW5kOiB0cnVlLFxuICAgICAgfTtcbiAgICB9LFxuICB9LFxufSkudGhlbigoaW5zdGFuY2UpID0%252BIHtcbiAgLy8gRGlzYWJsZSBhbm5vdGF0aW9uIGVkaXRpbmdcbiAgaW5zdGFuY2Uuc2V0RWRpdGFibGVBbm5vdGF0aW9uVHlwZXMoW10pO1xuXG4gIC8vIEhlbHBlciBmdW5jdGlvbiB0byBmaW5kIGFubm90YXRpb24gZWxlbWVudCBieSBJRFxuICBjb25zdCBnZXRBbm5vdGF0aW9uRWxlbWVudCA9IChhbm5vdGF0aW9uSWQpID0%252BIHtcbiAgICByZXR1cm4gaW5zdGFuY2UuY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBgLlBTUERGS2l0LUFubm90YXRpb25bZGF0YS1hbm5vdGF0aW9uLWlkPVwiJHthbm5vdGF0aW9uSWR9XCJdYFxuICAgICk7XG4gIH07XG5cbiAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGhhbmRsZSBhbm5vdGF0aW9uIGludGVyYWN0aW9uc1xuICBjb25zdCBoYW5kbGVBbm5vdGF0aW9uSW50ZXJhY3Rpb24gPSAoZXZlbnQsIGlzSG92ZXJpbmcpID0%252BIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uSWQgPSBldmVudC50YXJnZXQuZGF0YXNldC5hbm5vdGF0aW9uSWQ7XG5cbiAgICBpZiAoYW5ub3RhdGlvbklkKSB7XG4gICAgICBjb25zdCBhbm5vdGF0aW9uRWxlbWVudCA9IGdldEFubm90YXRpb25FbGVtZW50KGFubm90YXRpb25JZCk7XG5cbiAgICAgIGlmIChpc0hvdmVyaW5nKSB7XG4gICAgICAgIGFubm90YXRpb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJ0b29sdGlwXCIsIFwiZmFkZVwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFubm90YXRpb25FbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJ0b29sdGlwXCIsIFwiZmFkZVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLy8gQWRkIG1vdXNlb3ZlciBldmVudCBsaXN0ZW5lciBmb3Igc2hvd2luZyB0b29sdGlwc1xuICAvLyBodHRwczovL3d3dy5udXRyaWVudC5pby9hcGkvd2ViL1BTUERGS2l0LlRleHRDb21wYXJpc29uSW5zdGFuY2UuaHRtbCNhZGRFdmVudExpc3RlbmVyXG4gIGluc3RhbmNlLmNvbnRlbnREb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2VvdmVyXCIsIChldmVudCkgPT5cbiAgICBoYW5kbGVBbm5vdGF0aW9uSW50ZXJhY3Rpb24oZXZlbnQsIHRydWUpXG4gICk7XG5cbiAgLy8gQWRkIG1vdXNlb3V0IGV2ZW50IGxpc3RlbmVyIGZvciBoaWRpbmcgdG9vbHRpcHNcbiAgaW5zdGFuY2UuY29udGVudERvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW91dFwiLCAoZXZlbnQpID0%252BXG4gICAgaGFuZGxlQW5ub3RhdGlvbkludGVyYWN0aW9uKGV2ZW50LCBmYWxzZSlcbiAgKTtcbn0pO1xuIiwibW9kZSI6InN0YW5kYWxvbmUifQ%253D%253D)
- Enhance annotations by adding hover-based tooltips while preventing edits. — [Video](https://www.youtube.com/watch?v=drdvz12ntlE)- [Create highlight annotations programmatically from search](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6InNjaWVudGlmaWMucGRmIiwiand0Ijp7InBlcm1pc3Npb25zIjpbInJlYWQtZG9jdW1lbnQiLCJ3cml0ZSJdLCJ1c2VySWQiOiJyYW5kb21sRTFRdTBjN2NUIiwibGF5ZXIiOiJyYW5kb21rUWdTNGo4SnJIIn19LCJqcyI6Ii8vIExvYWQgUFNQREZLaXQgd2l0aCBkYXJrIHRoZW1lXG5QU1BERktpdC5sb2FkKHtcbiAgLi4uYmFzZU9wdGlvbnMsXG4gIHRoZW1lOiBQU1BERktpdC5UaGVtZS5EQVJLLFxufSkudGhlbihhc3luYyAoaW5zdGFuY2UpID0%252BIHtcbiAgLy8gTGlzdCBvZiB0ZXJtcyB0byBzZWFyY2ggZm9yIGluIHRoZSBkb2N1bWVudFxuICBjb25zdCBuYW1lc0xpc3QgPSBbXCJwcmltYXRlXCIsIFwic2hlbGxmaXNoXCIsIFwibW9ua2V5XCIsIFwibWFjYXF1ZVwiXTtcblxuICAvLyBDcmVhdGVzIGFuIGFycmF5IG9mIHByb21pc2VzIHRoYXQgcmV0dXJuIHRoZSBzZWFyY2hSZXN1bHQgb2YgZWFjaCBzZWFyY2hcbiAgY29uc3QgYW5ub3RhdGlvbnMgPSAoXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBuYW1lc0xpc3QubGVuZ3RoIH0pLm1hcCgoZWxlbWVudCwgaW5kZXgpID0%252BXG4gICAgICAgIGluc3RhbmNlLnNlYXJjaChuYW1lc0xpc3RbaW5kZXhdKVxuICAgICAgKVxuICAgICAgLy8gaHR0cHM6Ly93d3cubnV0cmllbnQuaW8vYXBpL3dlYi9QU1BERktpdC5JbnN0YW5jZS5odG1sI3NlYXJjaFxuICAgICAgLy8gaHR0cHM6Ly93d3cubnV0cmllbnQuaW8vYXBpL3dlYi9QU1BERktpdC5TZWFyY2hSZXN1bHQuaHRtbFxuICAgIClcbiAgKS5mbGF0TWFwKChzZWFyY2hSZXN1bHRzKSA9PlxuICAgIHNlYXJjaFJlc3VsdHMucmVkdWNlKChhY2MsIHNlYXJjaFJlc3VsdCkgPT4ge1xuICAgICAgLy8gRXh0cmFjdCBsb2NhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGZvdW5kIHRleHRcbiAgICAgIGNvbnN0IHsgcmVjdHNPblBhZ2UsIHBhZ2VJbmRleCB9ID0gc2VhcmNoUmVzdWx0O1xuXG4gICAgICAvLyBDcmVhdGUgYm91bmRpbmcgYm94IGZvciB0aGUgaGlnaGxpZ2h0XG4gICAgICBjb25zdCBiYm94ID0gbmV3IFBTUERGS2l0Lkdlb21ldHJ5LlJlY3QocmVjdHNPblBhZ2VbMF0pO1xuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgaGlnaGxpZ2h0IGFubm90YXRpb25cbiAgICAgIHJldHVybiBhY2MuY29uY2F0KFxuICAgICAgICBuZXcgUFNQREZLaXQuQW5ub3RhdGlvbnMuSGlnaGxpZ2h0QW5ub3RhdGlvbih7XG4gICAgICAgICAgaWQ6IFBTUERGS2l0LmdlbmVyYXRlSW5zdGFudElkKCksXG4gICAgICAgICAgcGFnZUluZGV4OiBwYWdlSW5kZXgsXG4gICAgICAgICAgYm91bmRpbmdCb3g6IGJib3gsXG4gICAgICAgICAgcmVjdHM6IHJlY3RzT25QYWdlLFxuICAgICAgICAgIGNvbG9yOiBQU1BERktpdC5Db2xvci5ZRUxMT1csXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0sIFtdKVxuICApO1xuXG4gIC8vIEFwcGx5IGFsbCBoaWdobGlnaHQgYW5ub3RhdGlvbnMgdG8gdGhlIGRvY3VtZW50XG4gIGF3YWl0IGluc3RhbmNlLmNyZWF0ZShhbm5vdGF0aW9ucyk7XG59KTtcbiIsIm1vZGUiOiJzdGFuZGFsb25lIiwiY3NzIjoiLyogQWRkIHlvdXIgQ1NTIGhlcmUgKi9cbiJ9)
- Search for specific text values in a document, create highlight annotations for the found text, and apply those annotations to the document. — [Video](https://www.youtube.com/watch?v=tzRcFwRbaE4)- [Use custom actions with the embedded PDF widget button](https://nutrient.io/playground?p=eyJ2IjoxLCJqcyI6ImxldCBnbG9iYWxJbnN0YW5jZTtcblBTUERGS2l0LmxvYWQoe1xuICAuLi5iYXNlT3B0aW9ucyxcbiAgdGhlbWU6IFBTUERGS2l0LlRoZW1lLkRBUkssXG59KS50aGVuKChpbnN0YW5jZSkgPT4ge1xuXG4gIC8vIENyZWF0ZSBhIG5ldyBidXR0b24gZm9ybSBmaWVsZC5cbiAgY29uc3Qgd2lkZ2V0ID0gbmV3IFBTUERGS2l0LkFubm90YXRpb25zLldpZGdldEFubm90YXRpb24oe1xuICAgIGlkOiBQU1BERktpdC5nZW5lcmF0ZUluc3RhbnRJZCgpLFxuICAgIHBhZ2VJbmRleDogMCxcbiAgICBmb3JtRmllbGROYW1lOiBcIk15Rm9ybUZpZWxkXCIsXG4gICAgYm91bmRpbmdCb3g6IG5ldyBQU1BERktpdC5HZW9tZXRyeS5SZWN0KHtcbiAgICAgIGxlZnQ6IDEwMCxcbiAgICAgIHRvcDogNzUsXG4gICAgICB3aWR0aDogMTUwLFxuICAgICAgaGVpZ2h0OiA0MCxcbiAgICB9KSxcbiAgICAvL2FkZGluZyB0aGUgY3VzdG9tIGRhdGEgdG8gY2hlY2sgbGF0ZXIgdGhhdCBpdCBpcyBhIGJ1dHRvblxuICAgIGN1c3RvbURhdGE6IHtcbiAgICAgIGlzQnV0dG9uOiB0cnVlLFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vQnV0dG9uIEZvcm0gRmllbGRcbiAgY29uc3QgZm9ybUZpZWxkID0gbmV3IFBTUERGS2l0LkZvcm1GaWVsZHMuQnV0dG9uRm9ybUZpZWxkKHtcbiAgICBuYW1lOiBcIk15Rm9ybUZpZWxkXCIsXG4gICAgYW5ub3RhdGlvbklkczogbmV3IFBTUERGS2l0LkltbXV0YWJsZS5MaXN0KFt3aWRnZXQuaWRdKSxcbiAgICB2YWx1ZTogXCJUZXh0IHNob3duIGluIHRoZSBmb3JtIGZpZWxkXCIsXG4gICAgbGFiZWw6IFwiTXkgQnV0dG9uXCIsXG4gIH0pO1xuXG4gIC8vQ3JlYXRpbmcgdGhlIGJ1dHRvblxuICBpbnN0YW5jZS5jcmVhdGUoW3dpZGdldCwgZm9ybUZpZWxkXSk7XG5cbiAgLy9FdmVudCBsaXN0ZW5lciB0byBkZXRlY3QgdGhlIGFubm90YXRpb24gY2xpY2sgYW5kIGltcG9ydCBmaWxlIGlucHV0XG4gIGluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoXCJhbm5vdGF0aW9ucy5wcmVzc1wiLCAoZXZlbnQpID0%252BIHtcbiAgICBjb25zdCB7IGFubm90YXRpb24gfSA9IGV2ZW50XG4gICAgaWYgKGFubm90YXRpb24uY3VzdG9tRGF0YT8uaXNCdXR0b24pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIilcbiAgICAgICAgaW5wdXQudHlwZSA9IFwiZmlsZVwiXG4gICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuZmlsZXNbMF0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHR5cGUgfSA9IGV2ZW50LnRhcmdldC5maWxlc1swXVxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNyZWF0ZUF0dGFjaG1lbnQobmV3IEJsb2IoW2V2ZW50LnRhcmdldC5maWxlc1swXV0sIHsgdHlwZSB9KSkudGhlbihpbWFnZUF0dGFjaG1lbnRJZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlQW5ub3RhdGlvbiA9IG5ldyBQU1BERktpdC5Bbm5vdGF0aW9ucy5JbWFnZUFubm90YXRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUluZGV4OiBhbm5vdGF0aW9uLnBhZ2VJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94OiBhbm5vdGF0aW9uLmJvdW5kaW5nQm94LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUF0dGFjaG1lbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY3JlYXRlKGltYWdlQW5ub3RhdGlvbilcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pXG4gICAgICAgIGlucHV0LmNsaWNrKClcbiAgICB9XG59KVxufSk7XG4iLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tQ21zYzBOZXozQSIsImxheWVyIjoicmFuZG9tN244UDg0Q3pyUiJ9fSwiY3NzIjoiLyogQWRkIHlvdXIgQ1NTIGhlcmUgKi9cbiJ9)
- Create a button form field, add an event listener to handle button clicks that trigger a file input for uploading images, and attach the selected image as an annotation in the document.- [Prevent showing note annotation content on hover](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tbEUxUXUwYzdjVCIsImxheWVyIjoicmFuZG9ta1FnUzRqOEpySCJ9fSwianMiOiJQU1BERktpdC5sb2FkKHsuLi5iYXNlT3B0aW9ucyx0aGVtZTpQU1BERktpdC5UaGVtZS5EQVJLfSkudGhlbigoaW5zdGFuY2U9PntpbnN0YW5jZS5jb250ZW50RG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywoZXZlbnQ9Pntjb25zdHt0YXJnZXQ6dGFyZ2V0fT1ldmVudCxub3RlSWNvbj10YXJnZXQ%252FLmNsb3Nlc3QoJy5QU1BERktpdC1Ob3RlLUFubm90YXRpb24tSWNvbi1Db21tZW50Jyk7bm90ZUljb24mJihpbnN0YW5jZS5jb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvcignLlBTUERGS2l0LVBvcG92ZXItTm90ZS1Bbm5vdGF0aW9uJykuc3R5bGUuZGlzcGxheT0nbm9uZScpfSkse2NhcHR1cmU6ITB9KX0pKTsiLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIiwibW9kZSI6InN0YW5kYWxvbmUifQ%253D%253D)
- Add an event listener to hide the note annotation popover when the mouse is over the note icon.- [Link comments with annotations](https://github.com/PSPDFKit/awesome-pspdfkit/tree/master/web/annotation/comment-annotations)
- When an annotation is selected, a tooltip appears, allowing users to create a linked comment marker annotation. — [Video](https://www.youtube.com/watch?v=Gevho94VSmk)- [Create annotations from the clipboard](https://github.com/PSPDFKit/awesome-pspdfkit/tree/master/web/annotation/create-annotation-from-clipboard)
- Enable pasting content from the clipboard onto a PDF as a text or image annotation. — [Video](https://www.youtube.com/watch?v=1N3U0voT4Tc)- [Navigate annotations with a custom toolbar button](https://github.com/PSPDFKit/awesome-pspdfkit/tree/master/web/annotation/get-all-annotations-boundingBox)
- Get all annotation coordinates and seamlessly navigate with a custom “Next Annotation” button that highlights and jumps to each annotation. — [Video](https://www.youtube.com/watch?v=BprV9kSGBlU)- [Snip and save annotations as JPEG images](https://github.com/PSPDFKit/awesome-nutrient/tree/master/web/annotation/snipping-annotation)
- Snip the area covered by an annotation and save it as a JPEG image. — [Video](https://www.youtube.com/watch?v=QLSBa6X4tmU)- [Add a timestamp as a subtitle to a custom stamp](https://www.nutrient.io/playground?p=eyJ2IjoxLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIiwianMiOiJjb25zdCB7XG4gIGNyZWF0ZUJsb2NrOiBjcmVhdGVCbG9jayxcbiAgSW50ZXJmYWNlczogSW50ZXJmYWNlcyxcbiAgUmVjaXBlczogUmVjaXBlcyxcbiAgQ29yZTogQ29yZSxcbn0gPSBQU1BERktpdC5VSTtcbnZhciBzdGFtcEFubm90YXRpb25UZW1wbGF0ZXMgPSBQU1BERktpdC5kZWZhdWx0U3RhbXBBbm5vdGF0aW9uVGVtcGxhdGVzO1xuc3RhbXBBbm5vdGF0aW9uVGVtcGxhdGVzLnB1c2goXG4gIG5ldyBQU1BERktpdC5Bbm5vdGF0aW9ucy5TdGFtcEFubm90YXRpb24oe1xuICAgIHN0YW1wVHlwZTogXCJDdXN0b21cIixcbiAgICB0aXRsZTogXCJNeSBjdXN0b20gdGV4dFwiLFxuICAgIGNvbG9yOiBuZXcgUFNQREZLaXQuQ29sb3IoeyByOiAwLCBnOiAwLCBiOiA2NCB9KSxcbiAgICBzdWJ0aXRsZTogYE5hbWUgJHtuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygpfSAke25ldyBEYXRlKCkudG9Mb2NhbGVUaW1lU3RyaW5nKCl9YCxcbiAgICBib3VuZGluZ0JveDogbmV3IFBTUERGS2l0Lkdlb21ldHJ5LlJlY3Qoe1xuICAgICAgbGVmdDogMCxcbiAgICAgIHRvcDogMCxcbiAgICAgIHdpZHRoOiAzMDAsXG4gICAgICBoZWlnaHQ6IDEwMCxcbiAgICB9KSxcbiAgfSlcbiksXG4gIFBTUERGS2l0LmxvYWQoe1xuICAgIC4uLmJhc2VPcHRpb25zLFxuICAgIHRoZW1lOiBQU1BERktpdC5UaGVtZS5EQVJLLFxuICAgIHN0YW1wQW5ub3RhdGlvblRlbXBsYXRlczogc3RhbXBBbm5vdGF0aW9uVGVtcGxhdGVzLFxuICAgIHVpOiB7XG4gICAgICBbSW50ZXJmYWNlcy5TdGFtcHNMaXN0XTogKHsgaW5zdGFuY2U6IGluc3RhbmNlIH0pID0%252BIChcbiAgICAgICAgLy8gRXZlcnkgdGltZSBTdGFtcHMgTGlzdCBvcGVucywgd2Ugd2FudCB0byBzZXQgY29ycmVjdCBkYXRlIHRvIGN1c3RvbSBzdGFtcHNcbiAgICAgICAgaW5zdGFuY2Uuc2V0U3RhbXBBbm5vdGF0aW9uVGVtcGxhdGVzKCh0ZW1wbGF0ZXMpID0%252BXG4gICAgICAgICAgdGVtcGxhdGVzLm1hcCgodGVtcGxhdGUpID0%252BXG4gICAgICAgICAgICBcIkN1c3RvbVwiID09PSB0ZW1wbGF0ZS5zdGFtcFR5cGVcbiAgICAgICAgICAgICAgPyB0ZW1wbGF0ZS5zZXQoXCJzdWJ0aXRsZVwiLCBuZXcgRGF0ZShEYXRlLm5vdygpKS50b0xvY2FsZVN0cmluZygpKVxuICAgICAgICAgICAgICA6IHRlbXBsYXRlXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICB7fVxuICAgICAgKSxcbiAgICB9LFxuICB9KS50aGVuKChpbnN0YW5jZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKFwiUFNQREZLaXQgbG9hZGVkISBieSBOYXJhc2hpbWFuXCIpO1xuICB9KTtcbiIsInNldHRpbmdzIjp7ImZpbGVOYW1lIjoiYmFzaWMucGRmIn0sIm1vZGUiOiJzdGFuZGFsb25lIn0%253D)
- Add a custom stamp annotation template with dynamic subtitle text (including the current date and time), and set up the UI to update the subtitle each time the stamps list is opened. — [Video](https://www.youtube.com/watch?v=TseqHd_MWcI)- [Add PDF file as custom stamp](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiJ9LCJqcyI6IlBTUERGS2l0LmxvYWQoe1xuICAuLi5iYXNlT3B0aW9ucyxcbiAgdGhlbWU6IFBTUERGS2l0LlRoZW1lLkRBUkssXG59KS50aGVuKChpbnN0YW5jZSkgPT4ge1xuICBjb25zb2xlLmxvZyhcIk51dHJpZW50IGxvYWRlZCEgYnkgTmFyYXNoaW1hblwiKTtcblxuICBhc3luYyBmdW5jdGlvbiBvcGVuRmlsZURpYWxvZygpIHtcbiAgICBjb25zb2xlLmxvZyhcIk9wZW5pbmcgZmlsZSBkaWFsb2dcIik7XG4gICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gICAgaW5wdXQudHlwZSA9IFwiZmlsZVwiO1xuICAgIGlucHV0LmFjY2VwdCA9IFwiLnBkZlwiOyAvLyBSZXN0cmljdCBmaWxlIHNlbGVjdGlvbiB0byBQREZzXG4gICAgaW5wdXQudmFsdWUgPSBcIlwiOyAvLyBDbGVhciB2YWx1ZSB0byBlbnN1cmUgb25jaGFuZ2UgdHJpZ2dlcnNcblxuICAgIGlucHV0Lm9uY2hhbmdlID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBmID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuXG4gICAgICBpZiAoIWYpIHJldHVybjtcblxuICAgICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IGFzeW5jIChlKSA9PiB7XG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IGUudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vcGRmXCIgfSk7XG5cbiAgICAgICAgY29uc3QgYXR0YWNobWVudCA9IGF3YWl0IGluc3RhbmNlLmNyZWF0ZUF0dGFjaG1lbnQoYmxvYik7XG4gICAgICAgIGNvbnN0IHN0YW1wQW5ub3RhdGlvbiA9IG5ldyBQU1BERktpdC5Bbm5vdGF0aW9ucy5JbWFnZUFubm90YXRpb24oe1xuICAgICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi9wZGZcIixcbiAgICAgICAgICBib3VuZGluZ0JveDogbmV3IFBTUERGS2l0Lkdlb21ldHJ5LlJlY3Qoe1xuICAgICAgICAgICAgbGVmdDogMTAwLFxuICAgICAgICAgICAgdG9wOiAxMDAsXG4gICAgICAgICAgICB3aWR0aDogMjAwLFxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgaW1hZ2VBdHRhY2htZW50SWQ6IGF0dGFjaG1lbnQsXG4gICAgICAgIH0pO1xuICAgICAgICBpbnN0YW5jZS5jcmVhdGUoc3RhbXBBbm5vdGF0aW9uKTtcbiAgICAgIH07XG5cbiAgICAgIGZpbGVSZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZik7XG4gICAgfTtcblxuICAgIGlucHV0LmNsaWNrKCk7XG4gIH1cblxuICBjb25zdCBjdXN0b21GaWxlU3RhbXBJdGVtID0ge1xuICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgaWQ6IFwiZmlsZS1zdGFtcC1idXR0b25cIixcbiAgICB0aXRsZTogXCJGaWxlIFN0YW1wXCIsXG4gICAgb25QcmVzczogKCkgPT4ge1xuICAgICAgb3BlbkZpbGVEaWFsb2coKTtcbiAgICB9LFxuICB9O1xuXG4gIGluc3RhbmNlLnNldFRvb2xiYXJJdGVtcyhbY3VzdG9tRmlsZVN0YW1wSXRlbV0pO1xufSk7XG4iLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIiwibW9kZSI6InN0YW5kYWxvbmUifQ%253D%253D)
- [Add and count a checkmark annotation in the toolbar](https://www.nutrient.io/playground?p=eyJ2IjoxLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuLmljb25fdGV4dCB7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIGJhY2tncm91bmQ6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIZHBaSFJvUFNJeU5DSWdhR1ZwWjJoMFBTSXlOQ0lnZG1sbGQwSnZlRDBpTUNBd0lESTBJREkwSWo0OGNHRjBhQ0JrUFNKTk1DQXhNUzQxTWpKc01TNDFOemd0TVM0Mk1qWWdOeTQzTXpRZ05DNDJNVGtnTVRNdU16TTFMVEV5TGpVeU5pQXhMak0xTXlBeExqTTFOQzB4TkNBeE9DNDJORFo2SWk4K1BDOXpkbWMrXCIpXG4gICAgbm8tcmVwZWF0IGNlbnRlcjtcbn1cbiIsImpzIjoiLy8gRGVjbGFyZSB0aGUgaW5zdGFuY2UgdmFyaWFibGUgZm9yIFBTUERGS2l0XG5sZXQgaW5zdGFuY2U7XG5cbi8vIFRyYWNrIHdoZXRoZXIgc3RhbXAgY3JlYXRpb24gbW9kZSBpcyBlbmFibGVkXG5sZXQgaXNTdGFtcENyZWF0aW9uRW5hYmxlZCA9IGZhbHNlO1xuXG4vLyBGdW5jdGlvbiB0byBhZGQgYSBzdGFtcCBhbm5vdGF0aW9uIG9uIHRoZSBzZWxlY3RlZCBwYWdlXG5mdW5jdGlvbiBhZGRTdGFtcChldmVudCkge1xuICBjb25zdCBzdGFtcCA9IG5ldyBQU1BERktpdC5Bbm5vdGF0aW9ucy5TdGFtcEFubm90YXRpb24oe1xuICAgIHBhZ2VJbmRleDogZXZlbnQucGFnZUluZGV4LFxuICAgIGJvdW5kaW5nQm94OiBuZXcgUFNQREZLaXQuR2VvbWV0cnkuUmVjdCh7XG4gICAgICBsZWZ0OiBldmVudC5wb2ludC54LFxuICAgICAgdG9wOiBldmVudC5wb2ludC55LFxuICAgICAgd2lkdGg6IDI1LFxuICAgICAgaGVpZ2h0OiAyNSxcbiAgICB9KSxcbiAgICBzdGFtcFR5cGU6IFwiQWNjZXB0ZWRcIixcbiAgfSk7XG4gIGluc3RhbmNlLmNyZWF0ZShzdGFtcCk7XG59XG5cbi8vIEN1c3RvbSB0b29sYmFyIGl0ZW0gZm9yIGFkZGluZyBzdGFtcHNcbmNvbnN0IGNvdW50ZXJJdGVtID0ge1xuICB0eXBlOiBcImN1c3RvbVwiLFxuICBpZDogXCJDb3VudGVyXCIsXG4gIC8vcmVzcG9uc2l2ZUdyb3VwOiBcImFubm90YXRlXCIsXG4gIGNsYXNzTmFtZTogXCJpY29uX3RleHRcIixcbiAgc2VsZWN0ZWQ6IGlzU3RhbXBDcmVhdGlvbkVuYWJsZWQsXG4gIG9uUHJlc3MoKSB7XG4gICAgLy8gVG9nZ2xlIGJldHdlZW4gZW5hYmxpbmcgYW5kIGRpc2FibGluZyBzdGFtcCBjcmVhdGlvbiBtb2RlXG4gICAgaWYgKGlzU3RhbXBDcmVhdGlvbkVuYWJsZWQpIHtcbiAgICAgIGluc3RhbmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwYWdlLnByZXNzXCIsIGFkZFN0YW1wKTtcbiAgICAgIGlzU3RhbXBDcmVhdGlvbkVuYWJsZWQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcihcInBhZ2UucHJlc3NcIiwgYWRkU3RhbXApO1xuICAgICAgaXNTdGFtcENyZWF0aW9uRW5hYmxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRvb2xiYXIgaXRlbSB0byByZWZsZWN0IGN1cnJlbnQgc2VsZWN0aW9uIHN0YXRlXG4gICAgaW5zdGFuY2Uuc2V0VG9vbGJhckl0ZW1zKChpdGVtcykgPT5cbiAgICAgIGl0ZW1zLm1hcCgoaXRlbSkgPT5cbiAgICAgICAgaXRlbS5pZCA9PT0gXCJDb3VudGVyXCJcbiAgICAgICAgICA%252FIHsgLi4uaXRlbSwgc2VsZWN0ZWQ6IGlzU3RhbXBDcmVhdGlvbkVuYWJsZWQgfVxuICAgICAgICAgIDogaXRlbVxuICAgICAgKVxuICAgICk7XG4gIH0sXG4gIC8vdGl0bGU6IFwiQ291bnRlclwiLFxufTtcblxuLy8gTG9hZCBQU1BERktpdCBhbmQgaW5pdGlhbGl6ZSB0b29sYmFyIGl0ZW1zIGluY2x1ZGluZyB0aGUgY3VzdG9tIHN0YW1wIHRvb2xcblBTUERGS2l0LmxvYWQoe1xuICAuLi5iYXNlT3B0aW9ucyxcbiAgdG9vbGJhckl0ZW1zOiBQU1BERktpdC5kZWZhdWx0VG9vbGJhckl0ZW1zLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XG4gICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJleHBvcnQtcGRmXCIpIHtcbiAgICAgIHJldHVybiBhY2MuY29uY2F0KFtpdGVtLCBjb3VudGVySXRlbV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYWNjLmNvbmNhdChbaXRlbV0pO1xuICAgIH1cbiAgfSwgW10pLFxufSkudGhlbihhc3luYyAoX2luc3RhbmNlKSA9PiB7XG4gIGluc3RhbmNlID0gX2luc3RhbmNlO1xuXG4gIC8vIEV2ZW50IGxpc3RlbmVyIHRvIGxvZyB0aGUgbnVtYmVyIG9mIGNvdW50ZXIgc3RhbXAgYW5ub3RhdGlvbnMgd2hlbmV2ZXIgYSBuZXcgYW5ub3RhdGlvbiBpcyBjcmVhdGVkXG4gIGluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoXCJhbm5vdGF0aW9ucy5jcmVhdGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKFwiY291bnRlcjogXCIgKyAoYXdhaXQgZ2V0Q291bnRlckFubm90YXRpb25zKCkpKTtcbiAgfSk7XG5cbiAgLy8gRnVuY3Rpb24gdG8gY291bnQgYWxsIFwiQWNjZXB0ZWRcIiBzdGFtcCBhbm5vdGF0aW9ucyBhY3Jvc3MgYWxsIHBhZ2VzXG4gIGFzeW5jIGZ1bmN0aW9uIGdldENvdW50ZXJBbm5vdGF0aW9ucygpIHtcbiAgICBsZXQgYW5ub3RhdGlvbk9iamVjdHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIEFycmF5LmZyb20oeyBsZW5ndGg6IGluc3RhbmNlLnRvdGFsUGFnZUNvdW50IH0pLm1hcCgoXywgcGFnZUluZGV4KSA9PlxuICAgICAgICBpbnN0YW5jZS5nZXRBbm5vdGF0aW9ucyhwYWdlSW5kZXgpXG4gICAgICApXG4gICAgKTtcblxuICAgIC8vIEZpbHRlciBhbmQgY291bnQgb25seSBzdGFtcCBhbm5vdGF0aW9ucyBvZiB0eXBlIFwiQWNjZXB0ZWRcIlxuICAgIGFubm90YXRpb25PYmplY3RzID0gYW5ub3RhdGlvbk9iamVjdHMuZmxhdE1hcCgoYW5ub3RzKSA9PlxuICAgICAgYW5ub3RzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKGFubm90KSA9PlxuICAgICAgICAgICAgYW5ub3QgaW5zdGFuY2VvZiBQU1BERktpdC5Bbm5vdGF0aW9ucy5TdGFtcEFubm90YXRpb24gJiZcbiAgICAgICAgICAgIGFubm90LnN0YW1wVHlwZSA9PT0gXCJBY2NlcHRlZFwiXG4gICAgICAgIClcbiAgICAgICAgLnRvQXJyYXkoKVxuICAgICk7XG5cbiAgICByZXR1cm4gYW5ub3RhdGlvbk9iamVjdHMubGVuZ3RoO1xuICB9XG4gICAgY29uc29sZS5sb2coXCJOdXRyaWVudCBsb2FkZWQhIGJ5IE5hcmFzaGltYW5cIik7XG59KTtcbiIsInNldHRpbmdzIjp7ImZpbGVOYW1lIjoiYmFzaWMucGRmIn0sIm1vZGUiOiJzdGFuZGFsb25lIn0%253D)
- Use a custom toolbar button for toggling stamp creation mode, allowing users to add "Accepted" stamp annotations on page press and track the total count of such annotations across a document.#### Redaction
- [Redact keywords programmatically](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6InNjaWVudGlmaWMucGRmIiwiand0Ijp7InBlcm1pc3Npb25zIjpbInJlYWQtZG9jdW1lbnQiLCJ3cml0ZSJdLCJ1c2VySWQiOiJyYW5kb21WS2V6VG00d2hVIiwibGF5ZXIiOiJyYW5kb21TbThmV0s5RnRQIn19LCJqcyI6Ii8qKlxuICogSW5pdGlhbGl6ZXMgUFNQREZLaXQgYW5kIHBlcmZvcm1zIGJhdGNoIHJlZGFjdGlvbiBvZiBzZW5zaXRpdmUgaW5mb3JtYXRpb25cbiAqIEF1dG9tYXRpY2FsbHkgcmVkYWN0cyBzcGVjaWZpZWQgcGxhY2UgbmFtZXMgYW5kIHBlcnNvbmFsIG5hbWVzIGZyb20gdGhlIGRvY3VtZW50XG4gKi9cblxuLy8gTGlzdHMgb2Ygc2Vuc2l0aXZlIGluZm9ybWF0aW9uIHRvIGJlIHJlZGFjdGVkXG5jb25zdCBTRU5TSVRJVkVfREFUQSA9IHtcbiAgcGxhY2VzOiBbXG4gICAgXCJLb3JhbVwiLFxuICAgIFwiTm9tU2FvXCIsXG4gICAgXCJVZ2FuZGFcIixcbiAgICBcIk5nb2dvXCIsXG4gICAgXCJUaGFpbGFuZFwiLFxuICAgIFwiTXlhbm1hclwiXG4gIF0sXG4gIG5hbWVzOiBbXG4gICAgXCJMeWRpYSBWIEx1bmN6XCIsXG4gICAgXCJBbWFuZGEgVGFuXCIsXG4gICAgXCJNaWNoYWVsIEhhc2xhbVwiLFxuICAgIFwiTGFycyBLdWxpa1wiLFxuICAgIFwiVG9tb3MgUHJvZmZpdHRcIixcbiAgICBcIlN1Y2hpbmRhIE1hbGFpdmlqaXRub25kXCIsXG4gICAgXCJNaWNoYWVsIEd1bWVydFwiXG4gIF1cbn07XG5cbi8vIERlZmF1bHQgc2VhcmNoIG9wdGlvbnMgZm9yIHJlZGFjdGlvblxuY29uc3QgUkVEQUNUSU9OX1NFQVJDSF9PUFRJT05TID0ge1xuICBzZWFyY2hUeXBlOiBQU1BERktpdC5TZWFyY2hUeXBlLlRFWFQsXG4gIHNlYXJjaEluQW5ub3RhdGlvbnM6IGZhbHNlLFxuICBjYXNlU2Vuc2l0aXZlOiBmYWxzZSxcbiAgc3RhcnRQYWdlSW5kZXg6IDBcbn07XG5cblBTUERGS2l0LmxvYWQoe1xuICAuLi5iYXNlT3B0aW9ucyxcbiAgdGhlbWU6IFBTUERGS2l0LlRoZW1lLkRBUktcbn0pLnRoZW4oYXN5bmMgKGluc3RhbmNlKSA9PiB7XG4gIHRyeSB7XG4gICAgLy8gQ3JlYXRlIHJlZGFjdGlvbnMgZm9yIHBsYWNlc1xuICAgIGNvbnNvbGUubG9nKCdDcmVhdGluZyByZWRhY3Rpb25zIGZvciBwbGFjZXMuLi4nKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIFNFTlNJVElWRV9EQVRBLnBsYWNlcy5tYXAocGxhY2UgPT4gXG4gICAgICAgIGluc3RhbmNlLmNyZWF0ZVJlZGFjdGlvbnNCeVNlYXJjaChwbGFjZSwgUkVEQUNUSU9OX1NFQVJDSF9PUFRJT05TKVxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgcmVkYWN0aW9ucyBmb3IgbmFtZXNcbiAgICBjb25zb2xlLmxvZygnQ3JlYXRpbmcgcmVkYWN0aW9ucyBmb3IgbmFtZXMuLi4nKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIFNFTlNJVElWRV9EQVRBLm5hbWVzLm1hcChuYW1lID0%252BIFxuICAgICAgICBpbnN0YW5jZS5jcmVhdGVSZWRhY3Rpb25zQnlTZWFyY2gobmFtZSwgUkVEQUNUSU9OX1NFQVJDSF9PUFRJT05TKVxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBBcHBseSBhbGwgcmVkYWN0aW9ucyB0byB0aGUgZG9jdW1lbnRcbiAgICBjb25zb2xlLmxvZygnQXBwbHlpbmcgYWxsIHJlZGFjdGlvbnMuLi4nKTtcbiAgICBhd2FpdCBpbnN0YW5jZS5hcHBseVJlZGFjdGlvbnMoKTtcbiAgICBcbiAgICBjb25zb2xlLmxvZygnQmF0Y2ggcmVkYWN0aW9uIGNvbXBsZXRlJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgZHVyaW5nIGJhdGNoIHJlZGFjdGlvbjonLCBlcnJvcik7XG4gIH1cbn0pOyIsIm1vZGUiOiJzdGFuZGFsb25lIn0%253D)
- Load a PDF, search for keywords, create redaction annotations over the found text, and apply the redactions to permanently remove the text.
- [Apply redactions to text with an overlay](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6InNjaWVudGlmaWMucGRmIiwiand0Ijp7InBlcm1pc3Npb25zIjpbInJlYWQtZG9jdW1lbnQiLCJ3cml0ZSJdLCJ1c2VySWQiOiJyYW5kb21IYm5aaFZLTnRCIiwibGF5ZXIiOiJyYW5kb21EWXN5NjgzZUxFIn19LCJqcyI6Ii8qKlxuICogSW5pdGlhbGl6ZXMgUFNQREZLaXQgYW5kIGNyZWF0ZXMgcmVkYWN0aW9ucyBmb3IgYWxsIHRleHQgaW4gdGhlIGRvY3VtZW50XG4gKiBDcmVhdGVzIGEgcmVkYWN0aW9uIGFubm90YXRpb24gZm9yIGVhY2ggbGluZSBvZiB0ZXh0IGFuZCBhcHBsaWVzIHRoZW1cbiAqL1xuXG4vLyBDb25maWd1cmF0aW9uIGZvciByZWRhY3Rpb24gYW5ub3RhdGlvbnNcbmNvbnN0IFJFREFDVElPTl9DT05GSUcgPSB7XG4gIGNvbG9yOiBQU1BERktpdC5Db2xvci5SRUQsXG4gIG92ZXJsYXlUZXh0OiBcIlJFREFDVEVEXCIsXG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSByZWRhY3Rpb24gYW5ub3RhdGlvbiBmb3IgYSB0ZXh0IGxpbmVcbiAqIEBwYXJhbSB7UFNQREZLaXQuVGV4dExpbmV9IHRleHRMaW5lIC0gVGhlIHRleHQgbGluZSB0byByZWRhY3RcbiAqIEByZXR1cm5zIHtQU1BERktpdC5Bbm5vdGF0aW9ucy5SZWRhY3Rpb25Bbm5vdGF0aW9ufSBUaGUgcmVkYWN0aW9uIGFubm90YXRpb25cbiAqL1xuZnVuY3Rpb24gY3JlYXRlUmVkYWN0aW9uRnJvbVRleHRMaW5lKHRleHRMaW5lKSB7XG4gIGNvbnN0IHsgYm91bmRpbmdCb3gsIHBhZ2VJbmRleCB9ID0gdGV4dExpbmU7XG5cbiAgcmV0dXJuIG5ldyBQU1BERktpdC5Bbm5vdGF0aW9ucy5SZWRhY3Rpb25Bbm5vdGF0aW9uKHtcbiAgICBpZDogUFNQREZLaXQuZ2VuZXJhdGVJbnN0YW50SWQoKSxcbiAgICBwYWdlSW5kZXgsXG4gICAgYm91bmRpbmdCb3gsXG4gICAgcmVjdHM6IG5ldyBQU1BERktpdC5JbW11dGFibGUuTGlzdChbYm91bmRpbmdCb3hdKSxcbiAgICAuLi5SRURBQ1RJT05fQ09ORklHLFxuICB9KTtcbn1cblxuUFNQREZLaXQubG9hZCh7XG4gIC4uLmJhc2VPcHRpb25zLFxuICB0aGVtZTogUFNQREZLaXQuVGhlbWUuREFSSyxcbn0pLnRoZW4oYXN5bmMgKGluc3RhbmNlKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc29sZS5sb2coXCJTdGFydGluZyBmdWxsIGRvY3VtZW50IHJlZGFjdGlvbi4uLlwiKTtcblxuICAgIC8vIENyZWF0ZSBhbiBhcnJheSBvZiBwYWdlIGluZGljZXMgYmFzZWQgb24gdG90YWwgcGFnZSBjb3VudFxuICAgIGNvbnN0IHBhZ2VJbmRpY2VzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogaW5zdGFuY2UudG90YWxQYWdlQ291bnQgfSk7XG5cbiAgICAvLyBJdGVyYXRlIG92ZXIgZWFjaCBwYWdlIGluZGV4IGFuZCBnZXRzIHRleHQgbGluZXMgb24gcGFnZVxuICAgIC8vIFdhaXQgZm9yIGFsbCBwYWdlcyB0byBiZSBwcm9jZXNzZWQgYmVmb3JlIGNvbnRpbnVpbmdcbiAgICBjb25zdCBhbGxQYWdlc1RleHRMaW5lcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcGFnZUluZGljZXMubWFwKCh2YWx1ZSwgaW5kZXgpID0%252BIGluc3RhbmNlLnRleHRMaW5lc0ZvclBhZ2VJbmRleChpbmRleCkpXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBhcnJheSBvZiByZWRhY3Rpb24gYW5ub3RhdGlvbnMgZm9yIGFsbCB0ZXh0IGxpbmVzXG4gICAgY29uc29sZS5sb2coXCJDcmVhdGluZyByZWRhY3Rpb24gYW5ub3RhdGlvbnMuLi5cIik7XG4gICAgY29uc3QgcmVkYWN0aW9uQW5ub3RhdGlvbnMgPSBhbGxQYWdlc1RleHRMaW5lcy5mbGF0TWFwKChwYWdlVGV4dExpbmVzKSA9PlxuICAgICAgcGFnZVRleHRMaW5lcy5yZWR1Y2UoXG4gICAgICAgIChhbm5vdGF0aW9ucywgdGV4dExpbmUpID0%252BIFtcbiAgICAgICAgICAuLi5hbm5vdGF0aW9ucyxcbiAgICAgICAgICBjcmVhdGVSZWRhY3Rpb25Gcm9tVGV4dExpbmUodGV4dExpbmUpLFxuICAgICAgICBdLFxuICAgICAgICBbXVxuICAgICAgKVxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgYW5kIGFwcGx5IHRoZSByZWRhY3Rpb25zXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgQ3JlYXRpbmcgJHtyZWRhY3Rpb25Bbm5vdGF0aW9ucy5sZW5ndGh9IHJlZGFjdGlvbiBhbm5vdGF0aW9ucy4uLmBcbiAgICApO1xuICAgIGF3YWl0IGluc3RhbmNlLmNyZWF0ZShyZWRhY3Rpb25Bbm5vdGF0aW9ucyk7XG5cbiAgICBjb25zb2xlLmxvZyhcIkFwcGx5aW5nIHJlZGFjdGlvbnMuLi5cIik7XG4gICAgYXdhaXQgaW5zdGFuY2UuYXBwbHlSZWRhY3Rpb25zKCk7XG5cbiAgICBjb25zb2xlLmxvZyhcIkRvY3VtZW50IHJlZGFjdGlvbiBjb21wbGV0ZVwiKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZHVyaW5nIGRvY3VtZW50IHJlZGFjdGlvbjpcIiwgZXJyb3IpO1xuICB9XG59KTtcbiIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG4iLCJtb2RlIjoic3RhbmRhbG9uZSJ9)
- Load a PDF, retrieve all text lines from every page, create redaction annotations over the detected text using an overlay, and apply the redactions to the document. — [Video](https://www.youtube.com/watch?v=IIciwmN-LZ4)- [Approve or reject redactions before applying](https://github.com/PSPDFKit/awesome-pspdfkit/tree/master/web/annotation/redact-one-by-one)
- [Approve or reject redactions before applying - Playground link](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6InNjaWVudGlmaWMucGRmIn0sImpzIjoiLy8gRGVjbGFyZSB0aGUgUFNQREZLaXQgaW5zdGFuY2UgdmFyaWFibGVcbmxldCBpbnN0YW5jZTtcblxuLy8gRnVuY3Rpb24gdG8gcmV0cmlldmUgYWxsIHJlZGFjdGlvbiBhbm5vdGF0aW9ucyBpbiB0aGUgZG9jdW1lbnRcbmNvbnN0IGdldEFsbEFubm90YXRpb25zID0gYXN5bmMgKCkgPT4ge1xuICBsZXQgYW5ub3RhdGlvbnNMaXN0ID0gUFNQREZLaXQuSW1tdXRhYmxlLkxpc3QoKTsgLy8gSW5pdGlhbGl6ZSBhbiBpbW11dGFibGUgbGlzdCB0byBzdG9yZSBhbm5vdGF0aW9uc1xuXG4gIC8vIEl0ZXJhdGUgdGhyb3VnaCBhbGwgcGFnZXMgdG8gY29sbGVjdCByZWRhY3Rpb24gYW5ub3RhdGlvbnNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnN0YW5jZS50b3RhbFBhZ2VDb3VudCAtIDE7IGkrKykge1xuICAgIGNvbnN0IGFubnMgPSAoYXdhaXQgaW5zdGFuY2UuZ2V0QW5ub3RhdGlvbnMoaSkpLmZpbHRlcihcbiAgICAgIChhKSA9PiBhIGluc3RhbmNlb2YgUFNQREZLaXQuQW5ub3RhdGlvbnMuUmVkYWN0aW9uQW5ub3RhdGlvbiAvLyBGaWx0ZXIgb25seSByZWRhY3Rpb24gYW5ub3RhdGlvbnNcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKGFubnMpOyAvLyBMb2cgcmVkYWN0aW9uIGFubm90YXRpb25zIGZvciBkZWJ1Z2dpbmdcbiAgICBhbm5vdGF0aW9uc0xpc3QgPSBhbm5vdGF0aW9uc0xpc3QuY29uY2F0KGFubnMpOyAvLyBDb25jYXRlbmF0ZSBhbm5vdGF0aW9ucyB0byB0aGUgbGlzdFxuICB9XG4gIHJldHVybiBhbm5vdGF0aW9uc0xpc3Q7IC8vIFJldHVybiB0aGUgbGlzdCBvZiByZWRhY3Rpb24gYW5ub3RhdGlvbnNcbn07XG5cbi8vIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBhbm5vdGF0aW9uIHRvb2x0aXBzXG5jb25zdCByZWRhY3Rpb25Bbm5vdGF0aW9uc0hhbmRsZXJDYWxsYmFjayA9IChhbm5vdGF0aW9uKSA9PlxuICAvLyBDaGVjayBpZiB0aGUgYW5ub3RhdGlvbiBpcyBhIHJlZGFjdGlvbiBhbm5vdGF0aW9uXG4gIGFubm90YXRpb24gaW5zdGFuY2VvZiBQU1BERktpdC5Bbm5vdGF0aW9ucy5SZWRhY3Rpb25Bbm5vdGF0aW9uXG4gICAgPyBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImN1c3RvbVwiLCAvLyBEZWZpbmUgYXMgYSBjdXN0b20gdG9vbHRpcCBpdGVtXG4gICAgICAgICAgdGl0bGU6IFwiQWNjZXB0XCIsIC8vIExhYmVsIGZvciB0aGUgYWNjZXB0IG9wdGlvblxuICAgICAgICAgIGlkOiBcInRvb2x0aXAtYWNjZXB0LWFubm90YXRpb25cIiwgLy8gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB0b29sdGlwXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlRvb2x0aXBJdGVtLUR1cGxpY2F0aW9uXCIsIC8vIENTUyBjbGFzcyBmb3Igc3R5bGluZ1xuICAgICAgICAgIG9uUHJlc3M6IGFzeW5jICgpID0%252BIHtcbiAgICAgICAgICAgIC8vIEdldCBhbGwgcmVkYWN0aW9uIGFubm90YXRpb25zIGV4Y2VwdCB0aGUgY3VycmVudCBvbmVcbiAgICAgICAgICAgIGNvbnN0IGFsbFJlZGFjdGlvbkFubm90YXRpb25zID0gKGF3YWl0IGdldEFsbEFubm90YXRpb25zKCkpLmZpbHRlcihcbiAgICAgICAgICAgICAgKGEpID0%252BIGEuaWQgIT09IGFubm90YXRpb24uaWRcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIERlbGV0ZSBhbGwgb3RoZXIgcmVkYWN0aW9uIGFubm90YXRpb25zLCBhcHBseSByZWRhY3Rpb25zLCBhbmQgcmVzdG9yZSB0aGVtXG4gICAgICAgICAgICBhd2FpdCBpbnN0YW5jZS5kZWxldGUoYWxsUmVkYWN0aW9uQW5ub3RhdGlvbnMpO1xuICAgICAgICAgICAgYXdhaXQgaW5zdGFuY2UuYXBwbHlSZWRhY3Rpb25zKCk7XG4gICAgICAgICAgICBhd2FpdCBpbnN0YW5jZS5jcmVhdGUoYWxsUmVkYWN0aW9uQW5ub3RhdGlvbnMpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImN1c3RvbVwiLCAvLyBEZWZpbmUgYXMgYSBjdXN0b20gdG9vbHRpcCBpdGVtXG4gICAgICAgICAgdGl0bGU6IFwiUmVqZWN0XCIsIC8vIExhYmVsIGZvciB0aGUgcmVqZWN0IG9wdGlvblxuICAgICAgICAgIGlkOiBcInRvb2x0aXAtcmVqZWN0LWFubm90YXRpb25cIiwgLy8gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB0b29sdGlwXG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlRvb2x0aXBJdGVtLUR1cGxpY2F0aW9uXCIsIC8vIENTUyBjbGFzcyBmb3Igc3R5bGluZ1xuICAgICAgICAgIG9uUHJlc3M6IGFzeW5jICgpID0%252BIHtcbiAgICAgICAgICAgIGluc3RhbmNlLmRlbGV0ZShhbm5vdGF0aW9uKTsgLy8gRGVsZXRlIHRoZSBzZWxlY3RlZCByZWRhY3Rpb24gYW5ub3RhdGlvblxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgOiBbXTsgLy8gUmV0dXJuIGFuIGVtcHR5IGFycmF5IGlmIHRoZSBhbm5vdGF0aW9uIGlzIG5vdCBhIHJlZGFjdGlvbiBhbm5vdGF0aW9uXG5cbi8vIExvYWQgUFNQREZLaXQgd2l0aCBjb25maWd1cmF0aW9uc1xuUFNQREZLaXQubG9hZCh7XG4gIC4uLmJhc2VPcHRpb25zLCAvLyBTcHJlYWQgYmFzZSBvcHRpb25zIHRvIHJldGFpbiBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zXG4gIHRoZW1lOiBQU1BERktpdC5UaGVtZS5EQVJLLCAvLyBTZXQgdGhlbWUgdG8gZGFyayBtb2RlXG4gIGVuYWJsZUF1dG9tYXRpY0xpbmtFeHRyYWN0aW9uOiB0cnVlLCAvLyBFbmFibGUgYXV0b21hdGljIGxpbmsgZGV0ZWN0aW9uIGluIHRoZSBkb2N1bWVudFxuICBhbm5vdGF0aW9uVG9vbHRpcENhbGxiYWNrOiByZWRhY3Rpb25Bbm5vdGF0aW9uc0hhbmRsZXJDYWxsYmFjaywgLy8gQXNzaWduIGN1c3RvbSB0b29sdGlwIGNhbGxiYWNrXG4gIHRvb2xiYXJJdGVtczogW1xuICAgIC4uLlBTUERGS2l0LmRlZmF1bHRUb29sYmFySXRlbXMsIC8vIEluY2x1ZGUgZGVmYXVsdCB0b29sYmFyIGl0ZW1zXG4gICAgeyB0eXBlOiBcInJlZGFjdC1yZWN0YW5nbGVcIiB9LCAvLyBBZGQgcmVkYWN0aW9uIHJlY3RhbmdsZSB0b29sXG4gICAgeyB0eXBlOiBcInJlZGFjdC10ZXh0LWhpZ2hsaWdodGVyXCIgfSwgLy8gQWRkIHJlZGFjdGlvbiB0ZXh0IGhpZ2hsaWdodGVyIHRvb2xcbiAgXSxcbn0pLnRoZW4oKF9pbnN0YW5jZSkgPT4ge1xuICBpbnN0YW5jZSA9IF9pbnN0YW5jZTsgLy8gQXNzaWduIHRoZSBsb2FkZWQgaW5zdGFuY2UgdG8gdGhlIGdsb2JhbCB2YXJpYWJsZVxuICBjb25zb2xlLmxvZyhcIlBTUERGS2l0IGxvYWRlZCEgYnkgTmFyYXNoaW1hblwiKTsgLy8gTG9nIGEgbWVzc2FnZSB0byBpbmRpY2F0ZSBzdWNjZXNzZnVsIGxvYWRpbmdcbn0pO1xuIiwibW9kZSI6InN0YW5kYWxvbmUiLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuLmN1c3RvbS10b29sYmFyLWl0ZW0ge1xuICBoZWlnaHQ6IDEwMCU7XG59XG4ifQ%253D%253D)
- Manage redaction annotations from an annotation tooltip with two options that allow you to apply or reject redactions one by one.
- [Add a custom tooltip to a redaction annotation](https://www.nutrient.io/playground?p=eyJ2IjoxLCJqcyI6IlBTUERGS2l0LmxvYWQoey4uLmJhc2VPcHRpb25zLHRoZW1lOlBTUERGS2l0LlRoZW1lLkRBUkssdG9vbGJhckl0ZW1zOlsuLi5QU1BERktpdC5kZWZhdWx0VG9vbGJhckl0ZW1zLHt0eXBlOidyZWRhY3QtcmVjdGFuZ2xlJ30se3R5cGU6J3JlZGFjdC10ZXh0LWhpZ2hsaWdodGVyJ31dLGFubm90YXRpb25Ub29sdGlwQ2FsbGJhY2s6YW5uPT57aWYoYW5uIGluc3RhbmNlb2YgUFNQREZLaXQuQW5ub3RhdGlvbnMuUmVkYWN0aW9uQW5ub3RhdGlvbil7Y29uc3Qgc2VsZWN0Tm9kZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtyZXR1cm4gc2VsZWN0Tm9kZS5jbGFzc05hbWU9J3NlbGVjdC1ub2RlJyxzZWxlY3ROb2RlLmlubmVySFRNTD0nVGVzdCcsW3t0eXBlOidjdXN0b20nLGlkOidteS1idXR0b24nLG5vZGU6c2VsZWN0Tm9kZSxvblByZXNzOmV2ZW50PT57YWxlcnQoJ2hlbGxvIGZyb20gbXkgYnV0dG9uJyl9fV19cmV0dXJuW119fSkudGhlbigoYXN5bmMgaW5zdGFuY2U9Pntjb25zdCByZWRhY3Rpb25JZD1hd2FpdCBpbnN0YW5jZS5jcmVhdGVSZWRhY3Rpb25zQnlTZWFyY2goJ1NldCBvZiBLaXRjaGVuJyk7YXdhaXQgaW5zdGFuY2Uuc2V0U2VsZWN0ZWRBbm5vdGF0aW9ucyhyZWRhY3Rpb25JZCl9KSk7Iiwic2V0dGluZ3MiOnsiZmlsZU5hbWUiOiJhbm5vdGF0aW9ucy5wZGYiLCJqd3QiOnsicGVybWlzc2lvbnMiOlsicmVhZC1kb2N1bWVudCIsIndyaXRlIl0sInVzZXJJZCI6InJhbmRvbU9GZDlxdzAwdVAiLCJsYXllciI6InJhbmRvbVNLR3hlUjVubXUifX0sImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG5cbi5QU1BERktpdC1Qb3BvdmVyLUFubm90YXRpb24tVG9vbHRpcCB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuLnNlbGVjdC1ub2RlIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgYmFja2dyb3VuZDogIzNkNDY0ZDtcbiAgbWluLXdpZHRoOiA0NHB4O1xuICBib3JkZXI6IDAgc29saWQgIzAwMDA7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgaGVpZ2h0OiAyNXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAtMTVweDtcbiAgdG9wOiAtMTBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uc2VsZWN0LW5vZGU6OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IC01cHg7IC8qIEFkanVzdHMgdGhlIGFycm93IHBvc2l0aW9uIHRvIGxvb2sgYXR0YWNoZWQgdG8gdGhlIGJ1dHRvbiAqL1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJpZ2h0OiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci10b3A6IDVweCBzb2xpZCAjM2Q0NjRkOyAvKiBBcnJvdyBjb2xvciAqL1xufVxuIiwibW9kZSI6InN0YW5kYWxvbmUifQ%253D%253D)
- Add redaction tools to the toolbar and modify the tooltip behavior for redaction annotations.#### Comments
- [Set annotation creator name](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tbEUxUXUwYzdjVCIsImxheWVyIjoicmFuZG9ta1FnUzRqOEpySCJ9fSwianMiOiIvL3NldCB1c2VyIG5hbWUgZnJvbSBhIGxvZ2luIG9yIGF1dGhlbnRpY2F0aW9uXG5jb25zdCB1c2VybmFtZSA9IFwiSm9obiBTbWl0aFwiO1xuUFNQREZLaXQubG9hZCh7XG4gIC4uLmJhc2VPcHRpb25zLFxuICB0aGVtZTogUFNQREZLaXQuVGhlbWUuREFSSyxcbiAgdG9vbGJhckl0ZW1zOiBbeyB0eXBlOiBcImNvbW1lbnRcIiB9XSxcbn0pLnRoZW4oKGluc3RhbmNlKSA9PiB7XG4gIGluc3RhbmNlLnNldEFubm90YXRpb25DcmVhdG9yTmFtZShcIkpvaG4gU21pdGhcIik7XG59KTtcbiIsIm1vZGUiOiJzdGFuZGFsb25lIiwiY3NzIjoiLyogQWRkIHlvdXIgQ1NTIGhlcmUgKi9cbiJ9)
- Set an annotation creator’s name, ensuring any annotations — including comments — made by that user are attributed to them.
- [Link comments with annotations](https://github.com/PSPDFKit/awesome-pspdfkit/tree/master/web/annotation/comment-annotations)- [Add custom buttons for customizing comments](https://github.com/PSPDFKit/awesome-pspdfkit/tree/master/web/annotation/comments-status)
- Customize the comments popover by adding custom actions, like approve and reject, allowing users to manage comments efficiently.#### Signing
- [Disable signature annotation editing](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImZvcm0ucGRmIn0sImpzIjoiLy8gTG9hZCBQU1BERktpdCB3aXRoIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zXG5QU1BERktpdC5sb2FkKHtcbiAgLi4uYmFzZU9wdGlvbnMsIC8vIFNwcmVhZCB0aGUgYmFzZSBvcHRpb25zIHRvIHJldGFpbiBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zXG5cbiAgdGhlbWU6IFBTUERGS2l0LlRoZW1lLkRBUkssIC8vIFNldCB0aGUgdGhlbWUgdG8gZGFyayBtb2RlIGZvciBiZXR0ZXIgdmlzaWJpbGl0eVxuXG4gIGlzRWRpdGFibGVBbm5vdGF0aW9uOiBmdW5jdGlvbiAoYW5ub3RhdGlvbikge1xuICAgIC8vIEZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIGFuIGFubm90YXRpb24gaXMgZWRpdGFibGVcblxuICAgIC8vIENoZWNrIGlmIHRoZSBhbm5vdGF0aW9uIGlzIGEgc2lnbmF0dXJlXG4gICAgcmV0dXJuICFhbm5vdGF0aW9uLmlzU2lnbmF0dXJlOyAvLyBSZXR1cm4gdHJ1ZSBpZiBpdCdzIG5vdCBhIHNpZ25hdHVyZSwgZmFsc2Ugb3RoZXJ3aXNlXG4gIH0sXG59KS50aGVuKChpbnN0YW5jZSkgPT4ge1xuICAvLyBDYWxsYmFjayBmdW5jdGlvbiBleGVjdXRlZCBhZnRlciBQU1BERktpdCBoYXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZFxuICBjb25zb2xlLmxvZyhcIlBTUERGS2l0IGxvYWRlZCEgYnkgTmFyYXNoaW1hblwiKTsgLy8gTG9nIGEgbWVzc2FnZSB0byBpbmRpY2F0ZSBzdWNjZXNzZnVsIGxvYWRpbmdcbn0pO1xuIiwiY3NzIjoiLyogQWRkIHlvdXIgQ1NTIGhlcmUgKi9cbiIsIm1vZGUiOiJzdGFuZGFsb25lIn0%253D)
- Customize the editability of annotations by preventing users from modifying signature annotations.- [Automate signature placement in form fields and restrict signature placement to other fields](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImZvcm0ucGRmIiwiand0Ijp7InBlcm1pc3Npb25zIjpbInJlYWQtZG9jdW1lbnQiLCJ3cml0ZSJdLCJ1c2VySWQiOiJyYW5kb21sRTFRdTBjN2NUIiwibGF5ZXIiOiJyYW5kb21rUWdTNGo4SnJIIn19LCJtb2RlIjoic3RhbmRhbG9uZSIsImpzIjoiUFNQREZLaXQubG9hZCh7XG4gIC4uLmJhc2VPcHRpb25zLFxuICB0aGVtZTogUFNQREZLaXQuVGhlbWUuREFSSyxcbn0pLnRoZW4oYXN5bmMoaW5zdGFuY2UpID0%2BIHtcbiAgbGV0IHN0b3JlZFNpZ25hdHVyZTtcblxuICAvL0dldHRpbmcgYWxsIGZvcm0gZmllbGRzIHRvIHVzZSBpbiBhbm5vdGF0aW9uIHByZXNzIGV2ZW50XG4gIGNvbnN0IGZvcm1GaWVsZHMgPSBhd2FpdCBpbnN0YW5jZS5nZXRGb3JtRmllbGRzKCk7XG5cbiAgaW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcihcImFubm90YXRpb25zLmNyZWF0ZVwiLCAoYW5ub3RhdGlvbnMpID0%2BIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KDApO1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGFubm90YXRpb24uaXNTaWduYXR1cmUgJiYgYW5ub3RhdGlvbjtcblxuICAgIGlmIChzaWduYXR1cmUpIHtcbiAgICAgIHN0b3JlZFNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICB9XG4gIH0pO1xuXG4gIGluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoXCJhbm5vdGF0aW9ucy5wcmVzc1wiLCAoZXZlbnQpID0%2BIHtcbiAgICBjb25zdCB7YW5ub3RhdGlvbjogd2lkZ2V0fSA9IGV2ZW50XG5cbiAgICAvL0dldHRpbmcgdGhlIGlkIG9mIHRoZSB3aWRnZXQgdG8gc2VlIGlmIGFueSBmb3JtIGZpZWxkIGhhcyBpdFxuICAgIGNvbnN0IHtpZH0gPSB3aWRnZXRcbiAgICAvL0NoZWNraW5nIGlmIHRoZSB3aWRnZXQgaGFzIGEgZm9ybSBmaWVsZCBvZiB0eXBlIFNpZ25hdHVyZVxuICAgIGNvbnN0IGlzV2lkZ2V0U2lnbmF0dXJlID0gZm9ybUZpZWxkcy5zb21lKGZvcm09PntcbiAgICAgICBpZiAoZm9ybSBpbnN0YW5jZW9mIFBTUERGS2l0LkZvcm1GaWVsZHMuU2lnbmF0dXJlRm9ybUZpZWxkICYmIGZvcm0uYW5ub3RhdGlvbklkcy5zb21lKGlkcz0%2BaWRzPT09aWQpKSByZXR1cm4gdHJ1ZVxuICAgICAgICByZXR1cm5cbiAgICAgIH0pXG4gIFxuICAgIGlmKCFzdG9yZWRTaWduYXR1cmUpIHJldHVyblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgLy9TZXR0aW5nIHRoZSBTaWduYXR1cmUgb25seSBpZiB0aGUgV2lkZ2V0IGhhcyBhIGZvcm0gZmllbGQgb2YgdHlwZSBTaWduYXR1cmVcbiAgICBpc1dpZGdldFNpZ25hdHVyZSAmJiBpbnN0YW5jZS5jcmVhdGUodHJhbnNsYXRlSW5rQW5ub3RhdGlvbihzdG9yZWRTaWduYXR1cmUsIHdpZGdldCkpO1xuICB9KTtcblxuICBmdW5jdGlvbiBvZmZzZXRUcmFuc2xhdGlvbih3aWRnZXQsIHNpZ25hdHVyZSkge1xuICAgIHJldHVybiBuZXcgUFNQREZLaXQuR2VvbWV0cnkuUG9pbnQoe1xuICAgICAgeDpcbiAgICAgICAgd2lkZ2V0LmJvdW5kaW5nQm94LmxlZnQgLVxuICAgICAgICBzaWduYXR1cmUuYm91bmRpbmdCb3gubGVmdCArXG4gICAgICAgICh3aWRnZXQuYm91bmRpbmdCb3gud2lkdGggLSBzaWduYXR1cmUuYm91bmRpbmdCb3gud2lkdGgpIC8gMixcbiAgICAgIHk6XG4gICAgICAgIHdpZGdldC5ib3VuZGluZ0JveC50b3AgLVxuICAgICAgICBzaWduYXR1cmUuYm91bmRpbmdCb3gudG9wICtcbiAgICAgICAgKHdpZGdldC5ib3VuZGluZ0JveC5oZWlnaHQgLSBzaWduYXR1cmUuYm91bmRpbmdCb3guaGVpZ2h0KSAvIDIsXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2xhdGVJbmtBbm5vdGF0aW9uKGFubm90YXRpb24sIHdpZGdldCkge1xuICAgIGNvbnN0IG9mZnNldCA9IG9mZnNldFRyYW5zbGF0aW9uKHdpZGdldCwgYW5ub3RhdGlvbik7XG4gICAgY29uc3QgbmV3U2l6ZSA9IGZpdEluKFxuICAgICAge1xuICAgICAgICB3aWR0aDogYW5ub3RhdGlvbi5ib3VuZGluZ0JveC53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBhbm5vdGF0aW9uLmJvdW5kaW5nQm94LmhlaWdodCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHdpZHRoOiB3aWRnZXQuYm91bmRpbmdCb3gud2lkdGgsXG4gICAgICAgIGhlaWdodDogd2lkZ2V0LmJvdW5kaW5nQm94LmhlaWdodCxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgcmVzaXplUmF0aW8gPSBuZXdTaXplLndpZHRoIC8gYW5ub3RhdGlvbi5ib3VuZGluZ0JveC53aWR0aDtcbiAgICBjb25zdCBuZXdMZWZ0ID1cbiAgICAgIHdpZGdldC5ib3VuZGluZ0JveC5sZWZ0ICtcbiAgICAgIHdpZGdldC5ib3VuZGluZ0JveC53aWR0aCAvIDIgLVxuICAgICAgbmV3U2l6ZS53aWR0aCAvIDI7XG4gICAgY29uc3QgbmV3VG9wID1cbiAgICAgIHdpZGdldC5ib3VuZGluZ0JveC50b3AgK1xuICAgICAgd2lkZ2V0LmJvdW5kaW5nQm94LmhlaWdodCAvIDIgLVxuICAgICAgbmV3U2l6ZS5oZWlnaHQgLyAyO1xuXG4gICAgY29uc3QgbmV3Qm91bmRpbmdCb3ggPSBuZXcgUFNQREZLaXQuR2VvbWV0cnkuUmVjdCh7XG4gICAgICBsZWZ0OiBuZXdMZWZ0LFxuICAgICAgdG9wOiBuZXdUb3AsXG4gICAgICB3aWR0aDogbmV3U2l6ZS53aWR0aCxcbiAgICAgIGhlaWdodDogbmV3U2l6ZS5oZWlnaHQsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYW5ub3RhdGlvblxuICAgICAgLnNldChcImlkXCIsIG51bGwpXG4gICAgICAuc2V0KFwicGFnZUluZGV4XCIsIHdpZGdldC5wYWdlSW5kZXgpXG4gICAgICAuc2V0KFwiYm91bmRpbmdCb3hcIiwgbmV3Qm91bmRpbmdCb3gpO1xuICB9XG5cbiAgZnVuY3Rpb24gZml0SW4oc2l6ZSwgY29udGFpbmVyU2l6ZSkge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gc2l6ZTtcblxuICAgIGNvbnN0IHdpZHRoUmF0aW8gPSBjb250YWluZXJTaXplLndpZHRoIC8gd2lkdGg7XG4gICAgY29uc3QgaGVpZ2h0UmF0aW8gPSBjb250YWluZXJTaXplLmhlaWdodCAvIGhlaWdodDtcblxuICAgIGNvbnN0IHJhdGlvID0gTWF0aC5taW4od2lkdGhSYXRpbywgaGVpZ2h0UmF0aW8pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiB3aWR0aCAqIHJhdGlvLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQgKiByYXRpbyxcbiAgICB9O1xuICB9XG59KTtcbiJ9)
- Detect signature annotations and allow users to apply them to designated signature fields.- [Display a “Sign Here" widget that guides users to the next signature field](https://github.com/PSPDFKit/awesome-pspdfkit/tree/master/web/signing/sign-here-upgraded)
- Manage a signing widget in a PDF document, guiding users to the next available signature field and hiding the widget once all required signatures are completed.- [Customize the size of signature annotations](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tRXhaUFJxQTVFQSIsImxheWVyIjoicmFuZG9tNFY2T1cyT0syTyJ9fSwianMiOiJsZXQgc2NhbGluZ0ZhY3RvclR5cGVTaWduYXR1cmU9LjIsc2NhbGluZ0ZhY3RvckRyYXdTaWduYXR1cmU9LjI7UFNQREZLaXQubG9hZCh7Li4uYmFzZU9wdGlvbnMsdGhlbWU6UFNQREZLaXQuVGhlbWUuREFSS30pLnRoZW4oKGluc3RhbmNlPT57aW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcignYW5ub3RhdGlvbnMuY3JlYXRlJywoYXN5bmMgY3JlYXRlZEFubm90YXRpb25zPT57XG4vLyBSZXNpemUgdHlwZSBzaWduYXR1cmUgYW5ub3RhdGlvbnNcbmxldCB0eXBlU2lnbmF0dXJlPWNyZWF0ZWRBbm5vdGF0aW9ucy5maWx0ZXIoKGFubm90YXRpb249PmFubm90YXRpb24gaW5zdGFuY2VvZiBQU1BERktpdC5Bbm5vdGF0aW9ucy5JbWFnZUFubm90YXRpb24pKTtpZih0eXBlU2lnbmF0dXJlLl90YWlsKXtjb25zdCB0eXBlU2lnbmF0dXJlRmxhdD10eXBlU2lnbmF0dXJlLl90YWlsLmFycmF5WzBdO2lmKHR5cGVTaWduYXR1cmVGbGF0LmlzU2lnbmF0dXJlKXtjb25zdCBib3VuZGluZ0JveD10eXBlU2lnbmF0dXJlRmxhdC5ib3VuZGluZ0JveCxuZXdXaWR0aD1zY2FsaW5nRmFjdG9yVHlwZVNpZ25hdHVyZSpib3VuZGluZ0JveC53aWR0aCxuZXdIZWlnaHQ9c2NhbGluZ0ZhY3RvclR5cGVTaWduYXR1cmUqYm91bmRpbmdCb3guaGVpZ2h0LG5ld0xlZnQ9Ym91bmRpbmdCb3gubGVmdCsoYm91bmRpbmdCb3gud2lkdGgtbmV3V2lkdGgpLzIsbmV3VG9wPWJvdW5kaW5nQm94LnRvcCsoYm91bmRpbmdCb3guaGVpZ2h0LW5ld0hlaWdodCkvMixuZXdCb3VuZGluZ0JveD1uZXcgUFNQREZLaXQuR2VvbWV0cnkuUmVjdCh7bGVmdDpuZXdMZWZ0LHRvcDpuZXdUb3Asd2lkdGg6bmV3V2lkdGgsaGVpZ2h0Om5ld0hlaWdodH0pLG5ld0Fubm90YXRpb249dHlwZVNpZ25hdHVyZUZsYXQuc2V0KCdib3VuZGluZ0JveCcsbmV3Qm91bmRpbmdCb3gpO2F3YWl0IGluc3RhbmNlLnVwZGF0ZShuZXdBbm5vdGF0aW9uKX19XG4vLyBSZXNpemUgZHJhdyBzaWduYXR1cmUgYW5ub3RhdGlvbnNcbmVsc2UgY3JlYXRlZEFubm90YXRpb25zLmZpbHRlcigoYW5ub3RhdGlvbj0%252BYW5ub3RhdGlvbiBpbnN0YW5jZW9mIFBTUERGS2l0LkFubm90YXRpb25zLklua0Fubm90YXRpb24pKSxjcmVhdGVkQW5ub3RhdGlvbnM9Y3JlYXRlZEFubm90YXRpb25zLm1hcCgoYW5ub3RhdGlvbj0%252BYW5ub3RhdGlvbi51cGRhdGUoJ2JvdW5kaW5nQm94JywoYm91bmRpbmdCb3g9PmJvdW5kaW5nQm94LnNjYWxlKHNjYWxpbmdGYWN0b3JEcmF3U2lnbmF0dXJlKS5tZXJnZSh7bGVmdDpib3VuZGluZ0JveC5sZWZ0K2JvdW5kaW5nQm94LndpZHRoLzQsdG9wOmJvdW5kaW5nQm94LnRvcCtib3VuZGluZ0JveC5oZWlnaHQvNH0pKSkudXBkYXRlKCdsaW5lcycsKGxpbmVzPT5saW5lcy5tYXAoKGxpbmU9PmxpbmUubWFwKChwb2ludD0%252BcG9pbnQudHJhbnNsYXRlKHt4Oi1hbm5vdGF0aW9uLmJvdW5kaW5nQm94LmxlZnQseTotYW5ub3RhdGlvbi5ib3VuZGluZ0JveC50b3B9KS5zY2FsZSguMikudHJhbnNsYXRlKHt4OmFubm90YXRpb24uYm91bmRpbmdCb3gubGVmdCthbm5vdGF0aW9uLmJvdW5kaW5nQm94LndpZHRoLzQseTphbm5vdGF0aW9uLmJvdW5kaW5nQm94LnRvcCthbm5vdGF0aW9uLmJvdW5kaW5nQm94LmhlaWdodC80fSkpKSkpKSkpKSxhd2FpdCBpbnN0YW5jZS51cGRhdGUoY3JlYXRlZEFubm90YXRpb25zKX0pKX0pKTsifQ%253D%253D)
- Listen for the creation of signature annotations and resize and reposition them based on specific scaling factors.- [Get the last signed signature field](https://nutrient.io/playground?p=eyJ2IjoxLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIiwianMiOiJQU1BERktpdC5sb2FkKHsuLi5iYXNlT3B0aW9uc30pLnRoZW4oKGFzeW5jIGluc3RhbmNlPT57bGV0IGxhc3RGb3JtRmllbGRDbGlja2VkO2luc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2Fubm90YXRpb25zLnByZXNzJywoZXZlbnQ9PntsYXN0Rm9ybUZpZWxkQ2xpY2tlZD1ldmVudC5hbm5vdGF0aW9ufSkpLGluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2Fubm90YXRpb25zLmNyZWF0ZScsKGNyZWF0ZWRBbm5vdGF0aW9ucz0%252Beyhhc3luYyBjcmVhdGVkQW5ub3RhdGlvbnM9PntsZXQgY3JlYXRlZEFubm90YXRpb25zRmxhdD1jcmVhdGVkQW5ub3RhdGlvbnMudG9BcnJheSgpWzBdO2NvbnNvbGUubG9nKCd0aGlzIGlzIHRoZSBzaWduYXR1cmUgYW5ub3RhdGlvbicpLGNvbnNvbGUubG9nKGNyZWF0ZWRBbm5vdGF0aW9uc0ZsYXQpLGNyZWF0ZWRBbm5vdGF0aW9uc0ZsYXQuaXNTaWduYXR1cmUmJmxhc3RGb3JtRmllbGRDbGlja2VkJiYoY29uc29sZS5sb2coJ3RoaXMgaXMgdGhlIGZpZWxkIHRoYXQgd2FzIHNpZ25lZCcpLGNvbnNvbGUubG9nKGxhc3RGb3JtRmllbGRDbGlja2VkKSxsYXN0Rm9ybUZpZWxkQ2xpY2tlZD1udWxsKX0pKGNyZWF0ZWRBbm5vdGF0aW9ucyl9KSl9KSk7Iiwic2V0dGluZ3MiOnsiZmlsZU5hbWUiOiJmb3JtLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tS044eHVKaWhnbyIsImxheWVyIjoicmFuZG9teDJXSWtzVFA5cyJ9fSwibW9kZSI6InN0YW5kYWxvbmUifQ%253D%253D)
- Listen for the creation of signature annotations and track which form field was last clicked before they were created.- [Implement a multi-signer PDF signing app in Next.js](https://github.com/PSPDFKit/awesome-pspdfkit/tree/master/web/signing/signing-demo-complete)
- Implement a signing app that allows multiple signers to sign PDFs using electronic signatures and customize signing fields, and that supports digital signatures for verifying document integrity.- [Implement multi-party signing in Vanilla JS](https://github.com/PSPDFKit/awesome-pspdfkit/tree/master/web/document-generator-vanillajs)
- Implement a signing app that allows different users to sign specific fields in a PDF.
- [Navigate signature fields smoothly](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImZvcm0ucGRmIiwiand0Ijp7InBlcm1pc3Npb25zIjpbInJlYWQtZG9jdW1lbnQiLCJ3cml0ZSJdLCJ1c2VySWQiOiJyYW5kb21sRTFRdTBjN2NUIiwibGF5ZXIiOiJyYW5kb21rUWdTNGo4SnJIIn19LCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuLmJsb2Ige1xuICBiYWNrZ3JvdW5kOiBibGFjaztcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gIGJveC1zaGFkb3c6IDAgMCAwIDAgcmdiYSgwLCAwLCAwLCAxKTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgYW5pbWF0aW9uOiBwdWxzZSAycyBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDAgcmdiYSgwLCAwLCAwLCAwLjcpO1xuICB9XG5cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgwLCAwLCAwLCAwKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMCByZ2JhKDAsIDAsIDAsIDApO1xuICB9XG59XG4iLCJqcyI6ImxldCBnbG9iYWxJbnN0YW5jZTtcbi8vVG8gaXRlcmF0ZSB0aHJvdWdoIGZvcm1zXG5mdW5jdGlvbiBmb3JtRWxlbWVudHNJdGVyYXRvcihpbmRleCxyZWN0KXtcbi8vZ2xvYmFsSW5zdGFuY2UuanVtcFRvUmVjdChpbmRleCwgcmVjdCk7XG5jb25zdCBwYWdlPWdsb2JhbEluc3RhbmNlLmNvbnRlbnREb2N1bWVudC5nZXRSb290Tm9kZSgpLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLXBhZ2UtaW5kZXg9XCIke2luZGV4fVwiXWApLGFycm93PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTthcnJvdy5jbGFzc0xpc3QuYWRkKCdibG9iJyksYXJyb3cuc3R5bGUuY3NzVGV4dCs9J2JhY2tncm91bmQ6IHVybChodHRwczovL3BzcGRma2l0LmNvbS9hc3NldHMvaW1hZ2VzL2ljb25zL2Fycm93UmlnaHRMaWdodEJnLWVkYWYyNmI3LnN2ZykgNTAlIG5vLXJlcGVhdDtcXG4gICAgY29udGVudDogXCJcIjtcXG4gICAgaGVpZ2h0OiAxLjJlbTtcXG4gICAgbGVmdDogLTJyZW07XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiAwO1xcbiAgICB3aWR0aDogMXJlbTsnO2NvbnN0IGl0ZW09bmV3IFBTUERGS2l0LkN1c3RvbU92ZXJsYXlJdGVtKHtpZDonYXJyb3cnLG5vZGU6YXJyb3cscGFnZUluZGV4OmluZGV4LHBvc2l0aW9uOm5ldyBQU1BERktpdC5HZW9tZXRyeS5Qb2ludCh7eDpyZWN0LmxlZnQrMTUseTpyZWN0LnRvcH0pLG9uQXBwZWFyKCl7XG4vLyBjb25zb2xlLmxvZyhcInJlbmRlcmVkIVwiKTtcbn19KTtnbG9iYWxJbnN0YW5jZS5zZXRDdXN0b21PdmVybGF5SXRlbShpdGVtKSx3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0%252Be3BhZ2Uuc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOidlbmQnLGlubGluZTonbmVhcmVzdCcsYmVoYXZpb3I6J3Ntb290aCd9KX0pKX1sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybS1jb3VudGVyJywnMCcpLFBTUERGS2l0LmxvYWQoey4uLmJhc2VPcHRpb25zLHRoZW1lOlBTUERGS2l0LlRoZW1lLkRBUkssaXNFZGl0YWJsZUFubm90YXRpb246YW5ub3RhdGlvbj0%252BJ1NpZ25lcjEnPT1hbm5vdGF0aW9uPy5jdXN0b21EYXRhPy5yb2xlXG4vLyBpbml0aWFsVmlld1N0YXRlOiBuZXcgUFNQREZLaXQuVmlld1N0YXRlKHsgem9vbTogMiB9KSxcbn0pLnRoZW4oKGFzeW5jIGluc3RhbmNlPT57aW5zdGFuY2Uuc2V0Vmlld1N0YXRlKCh2aWV3U3RhdGU9PnZpZXdTdGF0ZS5zZXQoJ3ByZXJlbmRlcmVkUGFnZVNwcmVhZHMnLG51bGwpKSksZ2xvYmFsSW5zdGFuY2U9aW5zdGFuY2U7XG4vLyA8IS0tIElHTk9SRSAtLT5cbi8vVXBkYXRpbmcgc29tZSBmaWVsZHMgdG8gZml0IHRoZSBzYW1wbGUgcHVycG9zZVxuY29uc3QgY2hhbmdlcz0oYXdhaXQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbSh7bGVuZ3RoOmluc3RhbmNlLnRvdGFsUGFnZUNvdW50fSkubWFwKCgoXyxwYWdlSW5kZXgpPT5pbnN0YW5jZS5nZXRBbm5vdGF0aW9ucyhwYWdlSW5kZXgpKSkpKS5mbGF0TWFwKChhbm5vdGF0aW9ucz0%252BYW5ub3RhdGlvbnMucmVkdWNlKCgoYWNjLGFubm90YXRpb24pPT5hbm5vdGF0aW9uLmlkLm1hdGNoKC9eMTc2JHxeNTckL2cpP2FjYy5jb25jYXQoYW5ub3RhdGlvbi5zZXQoJ2N1c3RvbURhdGEnLHtyb2xlOidTaWduZXIxJ30pKTphY2MpLFtdKSkpO2F3YWl0IGluc3RhbmNlLnVwZGF0ZShjaGFuZ2VzKTtcbi8vIDwtLSBJR05PUkUgIS0tPlxuY29uc3QgcGFnZUFubm90YXRpb25zPShhd2FpdCBQcm9taXNlLmFsbChBcnJheS5mcm9tKHtsZW5ndGg6aW5zdGFuY2UudG90YWxQYWdlQ291bnR9KS5tYXAoKChfLHBhZ2VJbmRleCk9Pmluc3RhbmNlLmdldEFubm90YXRpb25zKHBhZ2VJbmRleCkpKSkpLmZsYXRNYXAoKGFubm90YXRpb25zPT5hbm5vdGF0aW9ucy5yZWR1Y2UoKChhY2MsYW5ub3RhdGlvbik9PmFubm90YXRpb24%252FLmN1c3RvbURhdGE%252FLnJvbGUuaW5jbHVkZXMoJ1NpZ25lcjEnKT9hY2MuY29uY2F0KGFubm90YXRpb24pOmFjYyksW10pKSk7c2V0VGltZW91dCgoKCk9PntwYWdlQW5ub3RhdGlvbnMubGVuZ3RoPjAmJmZvcm1FbGVtZW50c0l0ZXJhdG9yKHBhZ2VBbm5vdGF0aW9uc1swXS5wYWdlSW5kZXgscGFnZUFubm90YXRpb25zWzBdLmJvdW5kaW5nQm94KX0pLDFlMyksXG4vL3NlbGVjdGluZyB0aGUgbmV4dCBmb3JtIGJlbG9uZ2luZyB0byB0aGUgY3VycmVudCBzaWduZXJcbmluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2Fubm90YXRpb25zLndpbGxDaGFuZ2UnLChhc3luYyBldmVudD0%252Be2NvbnN0e2Fubm90YXRpb25zOmFubm90YXRpb25zLHJlYXNvbjpyZWFzb259PWV2ZW50O2xldCBjb3VudGVyPXBhcnNlSW50KGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmb3JtLWNvdW50ZXInKSk7YW5ub3RhdGlvbnMuZ2V0KDApLmlzU2lnbmF0dXJlJiYnU0VMRUNUX0VORCc9PT1yZWFzb24mJihpbnN0YW5jZS5yZW1vdmVDdXN0b21PdmVybGF5SXRlbSgnYXJyb3cnKSxjb3VudGVyKz0xLGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmb3JtLWNvdW50ZXInLGNvdW50ZXIudG9TdHJpbmcoKSksY291bnRlcjxwYWdlQW5ub3RhdGlvbnMubGVuZ3RoJiZzZXRUaW1lb3V0KCgoKT0%252Be2Zvcm1FbGVtZW50c0l0ZXJhdG9yKHBhZ2VBbm5vdGF0aW9uc1tjb3VudGVyXS5wYWdlSW5kZXgscGFnZUFubm90YXRpb25zW2NvdW50ZXJdLmJvdW5kaW5nQm94KX0pLDFlMykpfSkpfSkpOyIsIm1vZGUiOiJzdGFuZGFsb25lIn0%253D)
- Create a document signing workflow that highlights form elements with an arrow overlay to guide users through the signing process.#### Forms
- [Add Custom Button To Form Field Configuration](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImZvcm0ucGRmIiwiand0Ijp7InBlcm1pc3Npb25zIjpbInJlYWQtZG9jdW1lbnQiLCJ3cml0ZSJdLCJ1c2VySWQiOiJyYW5kb21sRTFRdTBjN2NUIiwibGF5ZXIiOiJyYW5kb21rUWdTNGo4SnJIIn19LCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIiwianMiOiJsZXQgaW5zdGFuY2U7UFNQREZLaXQubG9hZCh7Li4uYmFzZU9wdGlvbnMsdGhlbWU6UFNQREZLaXQuVGhlbWUuREFSSyx0b29sYmFySXRlbXM6Wy4uLlBTUERGS2l0LmRlZmF1bHRUb29sYmFySXRlbXMse3R5cGU6J2Zvcm0tY3JlYXRvcid9XX0pLnRoZW4oKGk9PntpbnN0YW5jZT1pO1xuLy9UaGlzIGlzIHRoZSBVc2VyIFJvbGUgU2VsZWN0IEVsZW1lbnRcbmxldCBodG1sPSc8ZGl2IGNsYXNzPVwiUFNQREZLaXQtNzFoNjVhc3g5azg1bWRuczRuOGoya3QzYWdcIj48ZGl2PjxkaXYgY2xhc3M9XCJQU1BERktpdC00cTZyZjQ3cmhxaHJwbTlnZGZlZnh0N3F4YVwiPjxsYWJlbCBjbGFzcz1cIlBTUERGS2l0LW50MTJhZHR0YnliNTJhd3NnajJwdnVjeHlcIj5Bc3NpZ24gVG8gVXNlcjogPHNlbGVjdCBpZD1cInVzZXJSb2xlc1wiIGNsYXNzPVwiUFNQREZLaXQtMzhjanB2eHNhZHVwbTI1aDJxeXhhN241Z2QgUFNQREZLaXQtM3lqdTJ1Mjc3ODM0Y3kzZ2FocjJyNXB4d2EgUFNQREZLaXQtRm9ybS1DcmVhdG9yLUVkaXRvci1Gb3JtLUZpZWxkLU5hbWVcIj48b3B0aW9uIHZhbHVlPVwibm9uZVwiIHNlbGVjdGVkIGRpc2FibGVkIGhpZGRlbj5zZWxlY3Qgcm9sZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJMYW5kbG9yZFwiPkxhbmRsb3JkPC9vcHRpb24%252BPG9wdGlvbiB2YWx1ZT1cIlRlbmFudFwiPlRlbmFudDwvb3B0aW9uPjwvc2VsZWN0PjwvbGFiZWw%252BPC9kaXY%252BPC9kaXY%252BPC9kaXY%252BJztcbi8vRXZlbnQgbGlzdGVuZXIgdG8gY2hlY2sgd2hlaHRlciB0aGUgY2xpY2tlZCBhbm5vdGF0aW9uIGlzIGEgU2lnbmF0dXJlIFdpZGdldFxuaW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcignYW5ub3RhdGlvbnMucHJlc3MnLChhc3luYyBldmVudD0%252Be2NvbnN0e2Fubm90YXRpb246YW5ub3RhdGlvbn09ZXZlbnQsdXNlclJvbGU9YW5ub3RhdGlvbi5jdXN0b21EYXRhPy51c2VyUm9sZSxmb3JtRmllbGRzPWF3YWl0IGluc3RhbmNlLmdldEZvcm1GaWVsZHMoKSxmb3JtRmllbGQ9Zm9ybUZpZWxkcy5nZXQoZm9ybUZpZWxkcy5tYXAoKGU9PmUubmFtZSkpLmluZGV4T2YoYW5ub3RhdGlvbi5mb3JtRmllbGROYW1lKSk7XG4vL0lmIGl0J3MgYSBzaWduYXR1cmUgd2lkZ2V0IEkgYWN0aXZhdGUgdGhlIEZvcm0gQ3JlYXRvciBNb2RlXG5pZihhbm5vdGF0aW9uJiZmb3JtRmllbGQgaW5zdGFuY2VvZiBQU1BERktpdC5Gb3JtRmllbGRzLlNpZ25hdHVyZUZvcm1GaWVsZCl7aW5zdGFuY2Uuc2V0Vmlld1N0YXRlKCh2aWV3U3RhdGU9PnZpZXdTdGF0ZS5zZXQoJ2ludGVyYWN0aW9uTW9kZScsUFNQREZLaXQuSW50ZXJhY3Rpb25Nb2RlLkZPUk1fQ1JFQVRPUikpKSxcbi8vU2V0dGluZyB0aGUgY2xpY2tlZCBBbm5vdGF0aW9uIGFzIHRoZSBzZWxlY3RlZCBBbm5vdGF0aW9uXG4vL1NlYXJjaGluZyBmb3IgdGhlIFByb3BlcnR5IEV4cGFuZG8gQ29udHJvbCBXaWRnZXQgd2hlcmUgSSdsbCBpbnNlcnQgdGhlIFNlbGVjdCBFbGVtZW50XG5pbnN0YW5jZS5zZXRTZWxlY3RlZEFubm90YXRpb24oYW5ub3RhdGlvbi5pZCk7Y29uc3QgZXhwYW5kb0NvbnRyb2w9aW5zdGFuY2UuY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5QU1BERktpdC1FeHBhbmRvLUNvbnRyb2wnKTtcbi8vSWYgdGhlIEFubm90YXRpb24gaGFzIHVzZXJSb2xlcywgdGhlbiBJJ2xsIHNldCB0aGUgdXNlciByb2xlIGZvciB0aGUgY3VycmVudCB1c2VyOyBvdGhlcndpc2UgZGlzcGxheSB0aGUgc2VsZWN0IG1lbnVcbnVzZXJSb2xlPyhleHBhbmRvQ29udHJvbC5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZUJlZ2luJyxodG1sKSxpbnN0YW5jZS5jb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3VzZXJSb2xlcyBvcHRpb25bdmFsdWU9Jyt1c2VyUm9sZSsnXScpLnNldEF0dHJpYnV0ZSgnc2VsZWN0ZWQnLCEwKSxjb25zb2xlLmxvZyhpbnN0YW5jZS5jb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3VzZXJSb2xlcyBvcHRpb25bdmFsdWU9VGVuYW50XScpKSk6ZXhwYW5kb0NvbnRyb2wuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVCZWdpbicsaHRtbCl9fSkpLFxuLy9FdmVudCBsaXN0ZW5lciB0byBkZWFjdGl2YXRlIHRoZSBGb3JtIENyZWF0b3Igb25jZSBJIGNsaWNrIGRvbmUgb3Igb3V0c2lkZSB0aGUgc2VsZWN0ZWQgU2lnbmF0dXJlIFdpZGdldFxuaW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcignYW5ub3RhdGlvblNlbGVjdGlvbi5jaGFuZ2UnLChhbm5vdGF0aW9uPT57XG4vL0lmIHRoZSBhbm5vdGF0aW9uIGlzIG5vdCBzZWxlY3RlZCwgSSBkZWFjdGl2YXRlIHRoZSBGb3JtIENyZWF0b3IgTW9kZVxuYW5ub3RhdGlvbnx8J0ZPUk1fQ1JFQVRPUichPWluc3RhbmNlLnZpZXdTdGF0ZS5pbnRlcmFjdGlvbk1vZGU%252FYW5ub3RhdGlvbiYmJ0ZPUk1fQ1JFQVRPUic9PWluc3RhbmNlLnZpZXdTdGF0ZS5pbnRlcmFjdGlvbk1vZGUmJlxuLy9PdGhlcndpc2UsIEkgdXBkYXRlIHRoZSB1c2VyUm9sZSB2YWx1ZVxuc2V0VGltZW91dCgoKCk9Pntjb25zdCBzZWxlY3RlZFJvbGU9aW5zdGFuY2UuY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN1c2VyUm9sZXMnKTtzZWxlY3RlZFJvbGUuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywoZXZlbnQ9Pntjb25zdHt2YWx1ZTp2YWx1ZX09ZXZlbnQudGFyZ2V0LHVzZXJSb2xlPWFubm90YXRpb24uc2V0KCdjdXN0b21EYXRhJyx7dXNlclJvbGU6dmFsdWV9KTtpbnN0YW5jZS51cGRhdGUodXNlclJvbGUpLHNlbGVjdGVkUm9sZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCgoKT0%252Be30pKX0pLCExKX0pLDApOmluc3RhbmNlLnNldFZpZXdTdGF0ZSgodmlld1N0YXRlPT52aWV3U3RhdGUuc2V0KCdpbnRlcmFjdGlvbk1vZGUnLG51bGwpKSl9KSksXG4vKlRoaXMgZXZlbnQgbGlzdGVuZXIgaXMganVzdCB0byBkZW1vbnN0cmF0ZSB0aGUgY29ycmVjdCBhbm5vdGF0aW9uIGlzIGdldHRpbmcgXG4gICAgdXBkYXRlZCB3aXRoIHRoZSBjb3JyZWN0IHZhbHVlXG4gICovXG5pbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCdhbm5vdGF0aW9ucy51cGRhdGUnLChhbm5vdGF0aW9uPT57Y29uc3R7Y3VzdG9tRGF0YTpjdXN0b21EYXRhfT1hbm5vdGF0aW9uLmdldCgwKTtjb25zb2xlLmxvZyhgVXNlciBSb2xlOiAke2N1c3RvbURhdGE%252FLnVzZXJSb2xlfSBmb3IgQW5ub3RhdGlvbjogJHthbm5vdGF0aW9uLmdldCgwKS5pZH1gKX0pKX0pKTsiLCJtb2RlIjoic3RhbmRhbG9uZSJ9)
- [Add Custom Form Field Buttons](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tRmt1NE5hekZ6YiIsImxheWVyIjoicmFuZG9tOWZQd2puWDJMdiJ9fSwianMiOiJjb25zdCB1cGRhdGVJbnRlcmF0aXZlID0gKGluc3RhbmNlKSA9PiB7XG4gIGluc3RhbmNlLnNldFZpZXdTdGF0ZSgodmlld1N0YXRlKSA9PlxuICAgIHZpZXdTdGF0ZS5zZXQoXCJpbnRlcmFjdGlvbk1vZGVcIiwgUFNQREZLaXQuSW50ZXJhY3Rpb25Nb2RlLkZPUk1fQ1JFQVRPUilcbiAgKTtcbiAgaW5zdGFuY2Uuc2V0Vmlld1N0YXRlKCh2aWV3U3RhdGUpID0%252BXG4gICAgdmlld1N0YXRlLnNldChcImludGVyYWN0aW9uTW9kZVwiLCBQU1BERktpdC5JbnRlcmFjdGlvbk1vZGUuVEVYVF9XSURHRVQpXG4gICk7XG59O1xubGV0IGJ1dHRvbk5hbWU7XG5jb25zdCBmaWVsZHMgPSB7XG4gIG5hbWU6IHsgbmFtZTogXCJjdXN0b21lcl9uYW1lXCIsIHZhbHVlOiBcIkN1c3RvbWVyIG5hbWUgZmllbGRcIiB9LFxuICBlbWFpbDogeyBuYW1lOiBcImN1c3RvbWVyX2VtYWlsXCIsIHZhbHVlOiBcIkN1c3RvbWVyIGVtYWlsIGZpZWxkXCIgfSxcbn07XG5QU1BERktpdC5sb2FkKHtcbiAgLi4uYmFzZU9wdGlvbnMsXG4gIHRoZW1lOiBQU1BERktpdC5UaGVtZS5EQVJLLFxuICBvbldpZGdldEFubm90YXRpb25DcmVhdGlvblN0YXJ0OiAoYW5ub3RhdGlvbiwgZm9ybUZpZWxkKSA9PiB7XG4gICAgY29uc3QgcmFuZG9tU3RyID0gUFNQREZLaXQuZ2VuZXJhdGVJbnN0YW50SWQoKVxuICAgIHJldHVybiB7XG4gICAgICBhbm5vdGF0aW9uOiBhbm5vdGF0aW9uXG4gICAgICAgIC5zZXQoJ2Zvcm1GaWVsZE5hbWUnLCBgJHtmaWVsZHNbYnV0dG9uTmFtZV0ubmFtZX0tJHtyYW5kb21TdHJ9YClcbiAgICAgICAgLnNldCgnY3VzdG9tRGF0YScsIHtjdXN0b21lckZpZWxkOiB0cnVlfSksXG4gICAgICBmb3JtRmllbGQ6IGZvcm1GaWVsZFxuICAgICAgICAuc2V0KCduYW1lJywgYCR7ZmllbGRzW2J1dHRvbk5hbWVdLm5hbWV9LSR7cmFuZG9tU3RyfWApXG4gICAgICAgIC5zZXQoJ3ZhbHVlJywgZmllbGRzW2J1dHRvbk5hbWVdLnZhbHVlKVxuICAgIH1cbiAgfSxcbn0pLnRoZW4oKGluc3RhbmNlKSA9PiB7XG4gIC8vVGhpcyBidXR0b24gY3JlYXRlcyBhIEZvcm0gRmllbGQgYW5kIFdpZGdldCBwcm9ncmFtbWF0aWNhbGx5XG5cbiAgaW5zdGFuY2Uuc2V0VG9vbGJhckl0ZW1zKFtcbiAgICB7IHR5cGU6IFwic3BhY2VyXCIgfSxcbiAgICB7XG4gICAgICB0eXBlOiBcImN1c3RvbVwiLFxuICAgICAgaWQ6IFwibmFtZVwiLFxuICAgICAgdGl0bGU6IFwiQ3VzdG9tZXIgTmFtZVwiLFxuICAgICAgb25QcmVzczogKGV2ZW50KSA9PiB7XG4gICAgICAgIC8vIEhlcmUgSSdtIHNldHRpbmcgdGhlIGludGVyYWN0aW9uIG1vZGUgdG8gRm9ybSBEZXNpZ25lciBNb2RlIHdpdGggaXRzIHRvb2xcbiAgICAgICAgYnV0dG9uTmFtZSA9IFwibmFtZVwiO1xuICAgICAgICB1cGRhdGVJbnRlcmF0aXZlKGluc3RhbmNlKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiBcImN1c3RvbVwiLFxuICAgICAgaWQ6IFwiZW1haWxcIixcbiAgICAgIHRpdGxlOiBcIkN1c3RvbWVyIEVtYWlsXCIsXG4gICAgICBvblByZXNzOiAoZXZlbnQpID0%252BIHtcbiAgICAgICAgYnV0dG9uTmFtZSA9IFwiZW1haWxcIjtcbiAgICAgICAgLy8gSGVyZSBJJ20gc2V0dGluZyB0aGUgaW50ZXJhY3Rpb24gbW9kZSB0byBGb3JtIERlc2lnbmVyIE1vZGUgd2l0aCBpdHMgdG9vbFxuICAgICAgICB1cGRhdGVJbnRlcmF0aXZlKGluc3RhbmNlKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiBcImZvcm0tY3JlYXRvclwiLFxuICAgIH0sXG4gIF0pO1xufSk7XG4iLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuLlBTUERGS2l0LUZvcm0tQ3JlYXRvci1FZGl0b3ItRm9ybS1GaWVsZC1OYW1lIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgaW1wb3J0YW50O1xuICBvcGFjaXR5OiAwLjUgIWltcG9ydGFudDtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgb3V0bGluZTogbm9uZTtcbn1cblxuLlBTUERGS2l0LUZvcm0tQ3JlYXRvci1FZGl0b3ItRGVsZXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiIsIm1vZGUiOiJzdGFuZGFsb25lIn0%253D)
- [Add Name on Top of Signature Field/Widget](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiJ9LCJqcyI6Ii8vIEdsb2JhbCB2YXJpYWJsZSB0byBzdG9yZSB0aGUgUFNQREZLaXQgaW5zdGFuY2VcbmxldCBnbG9iYWxJbnN0YW5jZTtcblxuLy8gU2V0IHRoZSBkZWZhdWx0IHVzZXJuYW1lIGZvciBhbm5vdGF0aW9uc1xuY29uc3QgdXNlcjEgPSBcIk51dHJpZW50XCI7XG5jb25zdCB1c2VyMiA9IFwiUFNQREZLaXRcIjtcblxuLy8gRnVuY3Rpb24gdG8gcmVuZGVyIGN1c3RvbSBhbm5vdGF0aW9uIGFwcGVhcmFuY2VcbmNvbnN0IGFubm90YXRpb25SZW5kZXJlciA9ICh7IGFubm90YXRpb24gfSkgPT4ge1xuICAvLyBEb24ndCBzaG93IHRoZSBjcmVhdG9yJ3MgbmFtZSBpZiBpdCdzIG5vdCBzZXQgb3IgaXMgZW1wdHkuXG4gIGlmICghYW5ub3RhdGlvbi5jcmVhdG9yTmFtZSB8fCBhbm5vdGF0aW9uLmNyZWF0b3JOYW1lLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gbnVsbDtcblxuICAvLyBDcmVhdGUgYSBjb250YWluZXIgZWxlbWVudCB0byBkaXNwbGF5IHRoZSBhdXRob3IncyBuYW1lXG4gIGNvbnN0IGF1dGhvckxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblxuICAvLyBDaGVjayBpZiB0aGUgYW5ub3RhdGlvbiBpcyBhIFdpZGdldEFubm90YXRpb24gKGUuZy4sIHNpZ25hdHVyZSBmaWVsZClcbiAgaWYgKGFubm90YXRpb24gaW5zdGFuY2VvZiBQU1BERktpdC5Bbm5vdGF0aW9ucy5XaWRnZXRBbm5vdGF0aW9uKSB7XG4gICAgKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFJldHJpZXZlIHRoZSBmb3JtIGZpZWxkIGFzc29jaWF0ZWQgd2l0aCB0aGUgYW5ub3RhdGlvblxuICAgICAgY29uc3QgZmllbGQgPSAoYXdhaXQgZ2xvYmFsSW5zdGFuY2UuZ2V0Rm9ybUZpZWxkcygpKS5maW5kKFxuICAgICAgICAoZmYpID0%252BXG4gICAgICAgICAgZmYgaW5zdGFuY2VvZiBQU1BERktpdC5Gb3JtRmllbGRzLlNpZ25hdHVyZUZvcm1GaWVsZCAmJlxuICAgICAgICAgIGZmLm5hbWUgPT09IGFubm90YXRpb24uZm9ybUZpZWxkTmFtZVxuICAgICAgKTtcblxuICAgICAgLy8gQ2hlY2sgaWYgYW55IG90aGVyIG92ZXJsYXBwaW5nIHNpZ25hdHVyZSBhbm5vdGF0aW9ucyBleGlzdFxuICAgICAgY29uc3Qgb3ZlcmxhcHBpbmdTaWduYXR1cmUgPVxuICAgICAgICBhd2FpdCBnbG9iYWxJbnN0YW5jZS5nZXRPdmVybGFwcGluZ0Fubm90YXRpb25zKGFubm90YXRpb24pO1xuXG4gICAgICAvLyBJZiB0aGUgZmllbGQgZXhpc3RzIGFuZCBubyBvdmVybGFwcGluZyBzaWduYXR1cmVzLCBhZGQgdGhlIGNyZWF0b3IncyBuYW1lXG4gICAgICBpZiAoZmllbGQgJiYgb3ZlcmxhcHBpbmdTaWduYXR1cmUuc2l6ZSA9PT0gMCkge1xuICAgICAgICBhdXRob3JMYWJlbC5jbGFzc0xpc3QuYWRkKGBuYW1lLWxhYmVsLSR7YW5ub3RhdGlvbi5pZH1gKTtcblxuICAgICAgICAvLyBBZGQgdGhlIGFubm90YXRpb24ncyBhdXRob3IgbmFtZSBhcyB0ZXh0XG4gICAgICAgIGF1dGhvckxhYmVsLmFwcGVuZENoaWxkKFxuICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGFubm90YXRpb24uY3JlYXRvck5hbWUpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSkoKTtcblxuICAgIHJldHVybiB7XG4gICAgICAvLyBSZXR1cm4gdGhlIGNyZWF0ZWQgbm9kZS5cbiAgICAgIG5vZGU6IGF1dGhvckxhYmVsLFxuICAgICAgLy8gQXBwZW5kIHRvIHRoZSBhbm5vdGF0aW9uJ3MgYXBwZWFyYW5jZSBpbnN0ZWFkIG9mIHJlcGxhY2luZyBpdC5cbiAgICAgIGFwcGVuZDogdHJ1ZSxcbiAgICAgIC8vIEFsbG93IHpvb21pbmcgdG8gc2NhbGUgdGhlIGFubm90YXRpb24gcHJvcGVybHkuXG4gICAgICBub1pvb206IGZhbHNlLFxuICAgIH07XG4gIH1cbn07XG5cbi8vIExvYWQgUFNQREZLaXQgd2l0aCBjdXN0b20gY29uZmlndXJhdGlvblxuUFNQREZLaXQubG9hZCh7XG4gIC4uLmJhc2VPcHRpb25zLCAvLyBTcHJlYWQgdGhlIGJhc2UgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gIHRoZW1lOiBQU1BERktpdC5UaGVtZS5EQVJLLCAvLyBBcHBseSBkYXJrIHRoZW1lIHRvIHRoZSB2aWV3ZXJcbiAgY3VzdG9tUmVuZGVyZXJzOiB7IEFubm90YXRpb246IGFubm90YXRpb25SZW5kZXJlciB9LCAvLyBBcHBseSB0aGUgY3VzdG9tIGFubm90YXRpb24gcmVuZGVyZXJcbiAgaXNFZGl0YWJsZUFubm90YXRpb246IGZ1bmN0aW9uIChhbm5vdGF0aW9uKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGFubm90YXRpb24gaXMgYSBzaWduYXR1cmVcbiAgICByZXR1cm4gIWFubm90YXRpb24uaXNTaWduYXR1cmU7IC8vIFJldHVybiB0cnVlIGlmIGl0J3Mgbm90IGEgc2lnbmF0dXJlLCBmYWxzZSBvdGhlcndpc2VcbiAgfSxcbn0pLnRoZW4oYXN5bmMgKGluc3RhbmNlKSA9PiB7XG4gIC8vIFN0b3JlIHRoZSBpbnN0YW5jZSBnbG9iYWxseSBmb3IgbGF0ZXIgdXNlXG4gIGdsb2JhbEluc3RhbmNlID0gaW5zdGFuY2U7XG5cbiAgLy8gQ3JlYXRlIHRoZSBmaXJzdCB3aWRnZXQgYW5ub3RhdGlvbiAoc2lnbmF0dXJlIGZpZWxkKVxuICBjb25zdCB3aWRnZXQxID0gbmV3IFBTUERGS2l0LkFubm90YXRpb25zLldpZGdldEFubm90YXRpb24oe1xuICAgIGlkOiBQU1BERktpdC5nZW5lcmF0ZUluc3RhbnRJZCgpLCAvLyBHZW5lcmF0ZSBhIHVuaXF1ZSBJRCBmb3IgdGhlIGFubm90YXRpb25cbiAgICBwYWdlSW5kZXg6IDAsIC8vIFBsYWNlIGl0IG9uIHRoZSBmaXJzdCBwYWdlXG4gICAgYm91bmRpbmdCb3g6IG5ldyBQU1BERktpdC5HZW9tZXRyeS5SZWN0KHtcbiAgICAgIGxlZnQ6IDEwMCxcbiAgICAgIHRvcDogMzAwLFxuICAgICAgd2lkdGg6IDE1MCxcbiAgICAgIGhlaWdodDogNzUsXG4gICAgfSksIC8vIERlZmluZSBhbm5vdGF0aW9uIHNpemUgYW5kIHBvc2l0aW9uXG4gICAgZm9ybUZpZWxkTmFtZTogXCJmb3JtMVwiLCAvLyBBc3NpZ24gYSBmb3JtIGZpZWxkIG5hbWVcbiAgICBjdXN0b21EYXRhOiB7IGlzSW5pdGlhbHM6IGZhbHNlIH0sIC8vIEN1c3RvbSBmbGFnIChub3QgaW5pdGlhbHMpXG4gICAgY3JlYXRvck5hbWU6IHVzZXIxLCAvLyBTZXQgdGhlIGNyZWF0b3IncyBuYW1lXG4gIH0pO1xuXG4gIC8vIENyZWF0ZSB0aGUgZmlyc3Qgc2lnbmF0dXJlIGZvcm0gZmllbGQgYXNzb2NpYXRlZCB3aXRoIHRoZSB3aWRnZXRcbiAgY29uc3QgZm9ybUZpZWxkMSA9IG5ldyBQU1BERktpdC5Gb3JtRmllbGRzLlNpZ25hdHVyZUZvcm1GaWVsZCh7XG4gICAgbmFtZTogXCJmb3JtMVwiLCAvLyBTZXQgdGhlIGZvcm0gZmllbGQgbmFtZVxuICAgIGFubm90YXRpb25JZHM6IG5ldyBQU1BERktpdC5JbW11dGFibGUuTGlzdChbd2lkZ2V0MS5pZF0pLCAvLyBMaW5rIGFubm90YXRpb24gdG8gdGhlIGZvcm0gZmllbGRcbiAgfSk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBzZWNvbmQgd2lkZ2V0IGFubm90YXRpb24gKHNpZ25hdHVyZSBmaWVsZClcbiAgY29uc3Qgd2lkZ2V0MiA9IG5ldyBQU1BERktpdC5Bbm5vdGF0aW9ucy5XaWRnZXRBbm5vdGF0aW9uKHtcbiAgICBpZDogUFNQREZLaXQuZ2VuZXJhdGVJbnN0YW50SWQoKSwgLy8gR2VuZXJhdGUgYSB1bmlxdWUgSUQgZm9yIHRoZSBhbm5vdGF0aW9uXG4gICAgcGFnZUluZGV4OiAwLCAvLyBQbGFjZSBpdCBvbiB0aGUgZmlyc3QgcGFnZVxuICAgIGJvdW5kaW5nQm94OiBuZXcgUFNQREZLaXQuR2VvbWV0cnkuUmVjdCh7XG4gICAgICBsZWZ0OiAzNTUsXG4gICAgICB0b3A6IDMwMCxcbiAgICAgIHdpZHRoOiAxNTAsXG4gICAgICBoZWlnaHQ6IDc1LFxuICAgIH0pLCAvLyBEZWZpbmUgYW5ub3RhdGlvbiBzaXplIGFuZCBwb3NpdGlvblxuICAgIGZvcm1GaWVsZE5hbWU6IFwiZm9ybTJcIiwgLy8gQXNzaWduIGEgZm9ybSBmaWVsZCBuYW1lXG4gICAgY3VzdG9tRGF0YTogeyBpc0luaXRpYWxzOiB0cnVlIH0sIC8vIEN1c3RvbSBmbGFnICh0aGlzIGlzIGZvciBpbml0aWFscylcbiAgICBjcmVhdG9yTmFtZTogdXNlcjIsIC8vIFNldCB0aGUgY3JlYXRvcidzIG5hbWVcbiAgfSk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBzZWNvbmQgc2lnbmF0dXJlIGZvcm0gZmllbGQgYXNzb2NpYXRlZCB3aXRoIHRoZSB3aWRnZXRcbiAgY29uc3QgZm9ybUZpZWxkMiA9IG5ldyBQU1BERktpdC5Gb3JtRmllbGRzLlNpZ25hdHVyZUZvcm1GaWVsZCh7XG4gICAgbmFtZTogXCJmb3JtMlwiLCAvLyBTZXQgdGhlIGZvcm0gZmllbGQgbmFtZVxuICAgIGFubm90YXRpb25JZHM6IG5ldyBQU1BERktpdC5JbW11dGFibGUuTGlzdChbd2lkZ2V0Mi5pZF0pLCAvLyBMaW5rIGFubm90YXRpb24gdG8gdGhlIGZvcm0gZmllbGRcbiAgfSk7XG5cbiAgLy8gQWRkIGJvdGggd2lkZ2V0cyBhbmQgZm9ybSBmaWVsZHMgdG8gdGhlIFBTUERGS2l0IGluc3RhbmNlXG4gIGF3YWl0IGluc3RhbmNlLmNyZWF0ZShbd2lkZ2V0MSwgZm9ybUZpZWxkMSwgd2lkZ2V0MiwgZm9ybUZpZWxkMl0pO1xuICBjb25zb2xlLmxvZyhcIk51dHJpZW50IGxvYWRlZCEgYnkgTmFyYXNoaW1hblwiKTtcbn0pO1xuIiwibW9kZSI6InN0YW5kYWxvbmUiLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuW2NsYXNzKj1cIm5hbWUtbGFiZWxcIl0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogNTAlO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4ubmFtZS1sYWJlbC1mYWRlb3V0IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiJ9)
- [Add Custom Database Form Fields Information While Creating Form Fields With UI](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tMTU2VGZzUkY1QSIsImxheWVyIjoicmFuZG9tYVRtalpzcjNyQiJ9fSwianMiOiJQU1BERktpdC5sb2FkKHsuLi5iYXNlT3B0aW9ucyx0aGVtZTpQU1BERktpdC5UaGVtZS5EQVJLfSkudGhlbigoaW5zdGFuY2U9PntsZXQgZm9ybURlc2lnbk1vZGU9ITE7aW5zdGFuY2Uuc2V0VG9vbGJhckl0ZW1zKChpdGVtcz0%252BWy4uLml0ZW1zLHt0eXBlOidmb3JtLWNyZWF0b3InfV0pKSxpbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCd2aWV3U3RhdGUuY2hhbmdlJywoKHZpZXdTdGF0ZSxwcmV2aW91c1ZpZXdTdGF0ZSk9Pntmb3JtRGVzaWduTW9kZT0hMD09PXZpZXdTdGF0ZS5mb3JtRGVzaWduTW9kZX0pKSxpbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCdhbm5vdGF0aW9ucy5jcmVhdGUnLChjcmVhdGVkQW5ub3RhdGlvbnM9PntpZighMD09PWZvcm1EZXNpZ25Nb2RlKXtsZXQgZm9ybU1vZGFsPWluc3RhbmNlLmNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuUFNQREZLaXQtRm9ybS1DcmVhdG9yLUVkaXRvcicpWzBdLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1sxXSxuZXdCdXR0b24xPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuLy8gU2V0IHNvbWUgcHJvcGVydGllcyBmb3IgdGhlIGJ1dHRvblxubmV3QnV0dG9uMS5pbm5lckhUTUw9J0RCIEZpZWxkIDEnLG5ld0J1dHRvbjEuaWQ9J25ld0J1dHRvbklkJyxcbi8vIEFkZCBhbiBvbmNsaWNrIGV2ZW50IHRvIHRoZSBidXR0b25cbm5ld0J1dHRvbjEuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLChmdW5jdGlvbigpe2xldCB1cGRhdGVkQW5ub3Q9Y3JlYXRlZEFubm90YXRpb25zLl90YWlsLmFycmF5WzBdLnNldCgnY3VzdG9tRGF0YScse2RiRmllbGQ6JzEnfSk7aW5zdGFuY2UudXBkYXRlKHVwZGF0ZWRBbm5vdCksY29uc29sZS5sb2coJ1VwZGF0ZWQgQW5ub3RhdGlvbicpLGNvbnNvbGUubG9nKHVwZGF0ZWRBbm5vdCl9KSk7XG4vLyBDcmVhdGUgYSBuZXcgYnV0dG9uIGVsZW1lbnRcbmxldCBuZXdCdXR0b24yPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuLy8gU2V0IHNvbWUgcHJvcGVydGllcyBmb3IgdGhlIGJ1dHRvblxubmV3QnV0dG9uMi5pbm5lckhUTUw9J0RCIEZpZWxkIDInLG5ld0J1dHRvbjIuaWQ9J25ld0J1dHRvbklkJyxuZXdCdXR0b24yLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywoZnVuY3Rpb24oKXtsZXQgdXBkYXRlZEFubm90PWNyZWF0ZWRBbm5vdGF0aW9ucy5fdGFpbC5hcnJheVswXS5zZXQoJ2N1c3RvbURhdGEnLHtkYkZpZWxkOicyJ30pO2luc3RhbmNlLnVwZGF0ZSh1cGRhdGVkQW5ub3QpLGNvbnNvbGUubG9nKCdVcGRhdGVkIEFubm90YXRpb24nKSxjb25zb2xlLmxvZyh1cGRhdGVkQW5ub3QpfSkpLGZvcm1Nb2RhbC5hcHBlbmRDaGlsZChuZXdCdXR0b24xKSxmb3JtTW9kYWwuYXBwZW5kQ2hpbGQobmV3QnV0dG9uMil9fSkpfSkpOyIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG4iLCJtb2RlIjoic3RhbmRhbG9uZSJ9)
- [Iterate Over Form Fields and Widgets and Output Their Properties](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImZvcm0ucGRmIiwiand0Ijp7InBlcm1pc3Npb25zIjpbInJlYWQtZG9jdW1lbnQiLCJ3cml0ZSJdLCJ1c2VySWQiOiJyYW5kb21sRTFRdTBjN2NUIiwibGF5ZXIiOiJyYW5kb21rUWdTNGo4SnJIIn19LCJqcyI6IlBTUERGS2l0LmxvYWQoey4uLmJhc2VPcHRpb25zLHRoZW1lOlBTUERGS2l0LlRoZW1lLkRBUkt9KS50aGVuKChhc3luYyBpbnN0YW5jZT0%252Be1xuLy8gUmV0cmlldmUgYWxsIGZvcm0gZmllbGRzLlxuY29uc3QgZm9ybUZpZWxkcz1hd2FpdCBpbnN0YW5jZS5nZXRGb3JtRmllbGRzKCksd2lkZ2V0QW5ub3RhdGlvbnM9KGF3YWl0IFByb21pc2UuYWxsKEFycmF5LmZyb20oe2xlbmd0aDppbnN0YW5jZS50b3RhbFBhZ2VDb3VudH0pLm1hcCgoYXN5bmMoXyxwYWdlSW5kZXgpPT4oYXdhaXQgaW5zdGFuY2UuZ2V0QW5ub3RhdGlvbnMocGFnZUluZGV4KSkuZmlsdGVyKChpdD0%252BaXQgaW5zdGFuY2VvZiBQU1BERktpdC5Bbm5vdGF0aW9ucy5XaWRnZXRBbm5vdGF0aW9uKSkpKSkpLmZsYXRNYXAoKHBhZ2VBbm5vdGF0aW9ucz0%252BcGFnZUFubm90YXRpb25zLnRvQXJyYXkoKSkpO1xuLy8gUmV0cmlldmUgYWxsIHdpZGdldCBhbm5vdGF0aW9ucyBpbiB0aGUgZG9jdW1lbnQuXG5mb3JtRmllbGRzLmZsYXRNYXAoKGZvcm1GaWVsZD0%252Be1xuLy8gVXBkYXRlIGFsbCB3aWRnZXRzIGJhc2VkIG9uIHRoZSBmb3JtIGZpZWxkIHZhbHVlLlxud2lkZ2V0QW5ub3RhdGlvbnMuZmlsdGVyKChhbm5vdGF0aW9uPT5mb3JtRmllbGQuYW5ub3RhdGlvbklkcy5jb250YWlucyhhbm5vdGF0aW9uLmlkKSkpLm1hcCgod2lkZ2V0PT5jb25zb2xlLmxvZygnTmFtZTonK2Zvcm1GaWVsZC5uYW1lKydcXG4nLCdWYWx1ZTonK2Zvcm1GaWVsZC52YWx1ZSsnXFxuJywnUmVjdDonK3dpZGdldC5ib3VuZGluZ0JveCsnXFxuJywnUGFnZUluZGV4Oicrd2lkZ2V0LnBhZ2VJbmRleCkpKX0pKX0pKTsiLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIiwibW9kZSI6InN0YW5kYWxvbmUifQ%253D%253D)
- [Set Radio Button & Checkbox Value To Default YES](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImZvcm0ucGRmIn0sIm1vZGUiOiJzdGFuZGFsb25lIiwianMiOiIvLyBMb2FkIFBTUERGS2l0IHdpdGggc3BlY2lmaWMgY29uZmlndXJhdGlvbnNcblBTUERGS2l0LmxvYWQoe1xuICAuLi5iYXNlT3B0aW9ucywgLy8gU3ByZWFkIHRoZSBiYXNlIG9wdGlvbnMgdG8gcmV0YWluIGRlZmF1bHQgY29uZmlndXJhdGlvbnNcblxuICB0b29sYmFySXRlbXM6IFtcbiAgICAuLi5QU1BERktpdC5kZWZhdWx0VG9vbGJhckl0ZW1zLCAvLyBJbmNsdWRlIGRlZmF1bHQgdG9vbGJhciBpdGVtc1xuICAgIHsgdHlwZTogXCJmb3JtLWNyZWF0b3JcIiB9LCAvLyBBZGQgYSBmb3JtIGNyZWF0b3IgdG9vbCB0byB0aGUgdG9vbGJhclxuICBdLFxufSlcbiAgLnRoZW4oYXN5bmMgKGluc3RhbmNlKSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJOdXRyaWVudCBsb2FkZWQgc3VjY2Vzc2Z1bGx5ISBieSBOYXJhc2hpbWFuXCIpOyAvLyBMb2cgc3VjY2VzcyBtZXNzYWdlXG5cbiAgICAvLyBSZXRyaWV2ZSBhbGwgZm9ybSBmaWVsZHMgYW5kIHVwZGF0ZSB0aGUgdmFsdWUgb2YgcmFkaW8gYnV0dG9uc1xuICAgIChhd2FpdCBpbnN0YW5jZS5nZXRGb3JtRmllbGRzKCkpLmZvckVhY2goKGZvcm1GaWVsZCkgPT4ge1xuICAgICAgaWYgKGZvcm1GaWVsZCBpbnN0YW5jZW9mIFBTUERGS2l0LkZvcm1GaWVsZHMuUmFkaW9CdXR0b25Gb3JtRmllbGQpIHtcbiAgICAgICAgLy8gU2V0IHRoZSByYWRpbyBidXR0b24gdmFsdWUgdG8gXCJZZXNcIlxuICAgICAgICBpbnN0YW5jZS5zZXRGb3JtRmllbGRWYWx1ZXMoeyBbZm9ybUZpZWxkLm5hbWVdOiBcIlllc1wiIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gR2V0IGFsbCBmb3JtIGZpZWxkcyBpbiB0aGUgZG9jdW1lbnRcbiAgICBjb25zdCBmb3JtRmllbGRzID0gYXdhaXQgaW5zdGFuY2UuZ2V0Rm9ybUZpZWxkcygpO1xuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBmb3JtIGZpZWxkcyB0byBmaW5kIGNoZWNrYm94ZXNcbiAgICBmb3IgKGNvbnN0IGZvcm1GaWVsZCBvZiBmb3JtRmllbGRzKSB7XG4gICAgICBpZiAoZm9ybUZpZWxkIGluc3RhbmNlb2YgUFNQREZLaXQuRm9ybUZpZWxkcy5DaGVja0JveEZvcm1GaWVsZCkge1xuICAgICAgICAvLyBDaGVjayB0aGUgY2hlY2tib3ggYnkgc2V0dGluZyBpdHMgdmFsdWUgdG8gXCJZZXNcIlxuICAgICAgICBhd2FpdCBpbnN0YW5jZS5zZXRGb3JtRmllbGRWYWx1ZXMoe1xuICAgICAgICAgIFtmb3JtRmllbGQubmFtZV06IFBTUERGS2l0LkltbXV0YWJsZS5MaXN0KFtcIlllc1wiXSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGBDaGVja2JveCBDaGVja2VkIHdpdGggdmFsdWVzIHllczogJHtmb3JtRmllbGQubmFtZX0gLT4gXCJZZXNcImBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pXG4gIC5jYXRjaCgoZXJyb3IpID0%252BIHtcbiAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgbG9hZGluZyBOdXRyaWVudDpcIiwgZXJyb3IpOyAvLyBMb2cgYW55IGVycm9ycyB0aGF0IG9jY3VyIGR1cmluZyBQU1BERktpdCBsb2FkaW5nXG4gIH0pO1xuIiwiY3NzIjoiLyogQWRkIHlvdXIgQ1NTIGhlcmUgKi9cbiJ9)
- [Highlight All Required Fields](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImZvcm0ucGRmIiwiand0Ijp7InBlcm1pc3Npb25zIjpbInJlYWQtZG9jdW1lbnQiLCJ3cml0ZSJdLCJ1c2VySWQiOiJyYW5kb203Q1FKbkZwdVFWIiwibGF5ZXIiOiJyYW5kb21lNXNocEtoSHdsIn19LCJqcyI6Ii8vIFZhcmlhYmxlIHRvIHN0b3JlIHJlcXVpcmVkIGZvcm0gZmllbGRzXG5sZXQgcmVxdWlyZWRGb3JtRmllbGRzO1xuXG5QU1BERktpdC5sb2FkKHtcbiAgLi4uYmFzZU9wdGlvbnMsXG4gIHRoZW1lOiBQU1BERktpdC5UaGVtZS5EQVJLLFxuXG4gIC8vIERlZmluZSBjdXN0b20gcmVuZGVyZXJzIGZvciBhbm5vdGF0aW9uc1xuICBjdXN0b21SZW5kZXJlcnM6IHtcbiAgICBBbm5vdGF0aW9uOiAoeyBhbm5vdGF0aW9uIH0pID0%252BIHtcbiAgICAgIC8vIFNraXAgaWYgYW5ub3RhdGlvbiBpcyBub3QgYSB3aWRnZXQgKGZvcm0gZmllbGQpXG4gICAgICBpZiAoIShhbm5vdGF0aW9uIGluc3RhbmNlb2YgUFNQREZLaXQuQW5ub3RhdGlvbnMuV2lkZ2V0QW5ub3RhdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgZm9ybSBmaWVsZCBpcyBpbiBvdXIgcmVxdWlyZWQgZmllbGRzIGxpc3RcbiAgICAgIGNvbnN0IGlzUmVxdWlyZWRGaWVsZCA9XG4gICAgICAgIHJlcXVpcmVkRm9ybUZpZWxkcy5zaXplID4gMCAmJlxuICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHMuZmluZChcbiAgICAgICAgICAoZm9ybUZpZWxkKSA9PiBmb3JtRmllbGQubmFtZSA9PT0gYW5ub3RhdGlvbi5mb3JtRmllbGROYW1lXG4gICAgICAgICk7XG5cbiAgICAgIC8vIElmIGl0J3MgYSByZXF1aXJlZCBmaWVsZCwgY3JlYXRlIGEgY3VzdG9tIHdyYXBwZXIgd2l0aCBzcGVjaWFsIHN0eWxpbmdcbiAgICAgIGlmIChpc1JlcXVpcmVkRmllbGQpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIG5vZGUuY2xhc3NMaXN0LmFkZChcInJlcXVpcmVkLWZvcm0tZmllbGRcIik7XG4gICAgICAgIC8vIFNlZSBDU1MgdGFiIGZvciBzdHlsaW5nIG9mIC5yZXF1aXJlZC1mb3JtLWZpZWxkXG5cbiAgICAgICAgLy8gUmV0dXJuIHRoZSBub2RlIHdpdGggYXBwZW5kIGZsYWcgdG8gcHJlc2VydmUgZGVmYXVsdCByZW5kZXJpbmdcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBub2RlLFxuICAgICAgICAgIGFwcGVuZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gUmV0dXJuIG51bGwgZm9yIG5vbi1yZXF1aXJlZCBmaWVsZHMgKGRlZmF1bHQgcmVuZGVyaW5nKVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgfSxcbn0pLnRoZW4oYXN5bmMgKGluc3RhbmNlKSA9PiB7XG4gIC8vIEdldCBhbGwgZm9ybSBmaWVsZHNcbiAgY29uc3QgZm9ybUZpZWxkcyA9IGF3YWl0IGluc3RhbmNlLmdldEZvcm1GaWVsZHMoKTtcbiAgLy8gTWFyayB0aGVtIGFzIHJlcXVpcmVkXG4gIGNvbnN0IGNoYW5nZXMgPSBmb3JtRmllbGRzLm1hcCgoZm9ybUZpZWxkKSA9PlxuICAgIGZvcm1GaWVsZC5zZXQoXCJyZXF1aXJlZFwiLCB0cnVlKVxuICApO1xuXG4gIC8vIEFwcGx5IHRoZSBjaGFuZ2VzIHRvIG1ha2UgZmllbGRzIHJlcXVpcmVkXG4gIGF3YWl0IGluc3RhbmNlLnVwZGF0ZShjaGFuZ2VzKTtcblxuICAvLyBHZXQgdXBkYXRlZCBmb3JtIGZpZWxkc1xuICBjb25zdCB1cGRhdGVkRm9ybUZpZWxkcyA9IGF3YWl0IGluc3RhbmNlLmdldEZvcm1GaWVsZHMoKTtcbiAgXG4gIC8vIEZpbHRlciBvbmx5IHJlcXVpcmVkIGZpZWxkc1xuICAvLyBPcHRpb25hbCAtIGFsbCBmb3JtIGZpZWxkcyBpbiB0aGlzIGV4YW1wbGUgYXJlIHJlcXVpcmVkXG4gIHJlcXVpcmVkRm9ybUZpZWxkcyA9IHVwZGF0ZWRGb3JtRmllbGRzLmZpbHRlcihcbiAgICAoZm9ybUZpZWxkKSA9PiBmb3JtRmllbGQucmVxdWlyZWQgJiYgZm9ybUZpZWxkXG4gICk7XG59KTtcbiIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG4ucmVxdWlyZWQtZm9ybS1maWVsZDphZnRlciB7XG4gIGNvbnRlbnQ6IFwiICpcIjtcbiAgY29sb3I6IHJlZDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IC0xMnB4O1xuICB0b3A6IDM1JTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuIn0%253D)#### Form Creator
- [Prevent Creating Widgets Outside of Page Bounds](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tbEUxUXUwYzdjVCIsImxheWVyIjoicmFuZG9ta1FnUzRqOEpySCJ9fSwianMiOiIvLyBHbG9iYWwgdmFyaWFibGUgdG8gc3RvcmUgdGhlIFBTUERGS2l0IGluc3RhbmNlIGZvciB1c2UgYWNyb3NzIGZ1bmN0aW9uc1xubGV0IGdsb2JhbEluc3RhbmNlO1xuXG4vLyBJbml0aWFsaXplIFBTUERGS2l0IHdpdGggY29uZmlndXJhdGlvblxuUFNQREZLaXQubG9hZCh7XG4gIC4uLmJhc2VPcHRpb25zLFxuICB0aGVtZTogUFNQREZLaXQuVGhlbWUuREFSSyxcbiAgLy8gQWRkIGZvcm0gY3JlYXRvciB0b29sIHRvIHRoZSB0b29sYmFyXG4gIHRvb2xiYXJJdGVtczogW3sgdHlwZTogXCJmb3JtLWNyZWF0b3JcIiB9XSxcblxuICAvLyBIYW5kbGVyIHRoYXQgcnVucyB3aGVuIGEgdXNlciBzdGFydHMgY3JlYXRpbmcgYSB3aWRnZXQgYW5ub3RhdGlvbiAobGlrZSBhIHNpZ25hdHVyZSBmaWVsZClcbiAgb25XaWRnZXRBbm5vdGF0aW9uQ3JlYXRpb25TdGFydDogKGFubm90YXRpb24sIGZvcm1GaWVsZCkgPT4ge1xuICAgIC8vIERlc3RydWN0dXJlIHRoZSBhbm5vdGF0aW9uIHByb3BlcnRpZXMgd2UgbmVlZFxuICAgIGNvbnN0IHsgYm91bmRpbmdCb3gsIHBhZ2VJbmRleCB9ID0gYW5ub3RhdGlvbjtcblxuICAgIC8vIEdldCB0aGUgZGltZW5zaW9ucyBvZiB0aGUgY3VycmVudCBwYWdlXG4gICAgY29uc3QgeyBoZWlnaHQsIHdpZHRoIH0gPSBnbG9iYWxJbnN0YW5jZS5wYWdlSW5mb0ZvckluZGV4KHBhZ2VJbmRleCk7XG5cbiAgICAvLyBDcmVhdGUgYSByZWN0YW5nbGUgcmVwcmVzZW50aW5nIHRoZSBlbnRpcmUgcGFnZVxuICAgIGNvbnN0IHBhZ2VSZWN0ID0gbmV3IFBTUERGS2l0Lkdlb21ldHJ5LlJlY3Qoe1xuICAgICAgdG9wOiAwLFxuICAgICAgbGVmdDogMCxcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIH0pO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGFubm90YXRpb24ncyBib3VuZGluZyBib3ggaXMgZnVsbHkgaW5zaWRlIHRoZSBwYWdlXG4gICAgaWYgKHBhZ2VSZWN0LmlzUmVjdEluc2lkZShib3VuZGluZ0JveCkpIHtcbiAgICAgIC8vIElmIGluc2lkZSBwYWdlIGJvdW5kcywgYWxsb3cgY3JlYXRpb24gYnkgcmV0dXJuaW5nIHRoZSBhbm5vdGF0aW9uIGFuZCBmb3JtIGZpZWxkXG4gICAgICByZXR1cm4geyBhbm5vdGF0aW9uLCBmb3JtRmllbGQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgb3V0c2lkZSBwYWdlIGJvdW5kcywgc2hvdyBlcnJvciBhbmQgcHJldmVudCBjcmVhdGlvblxuICAgICAgYWxlcnQoXCJDYW5ub3QgY3JlYXRlIGFubm90YXRpb24gLSBvdXRzaWRlIG9mIGJvdW5kc1wiKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSxcbn0pLnRoZW4oKGluc3RhbmNlKSA9PiB7XG4gIC8vIFN0b3JlIGluc3RhbmNlIGdsb2JhbGx5IGZvciBsYXRlciB1c2VcbiAgZ2xvYmFsSW5zdGFuY2UgPSBpbnN0YW5jZTtcblxuICAvLyBMb2cgc3VjY2VzcyBtZXNzYWdlcyBhbmQgaGVscGZ1bCBkb2N1bWVudGF0aW9uIGxpbmtzXG4gIGNvbnNvbGUubG9nKFwiUFNQREZLaXQgbG9hZGVkIVwiKTtcbiAgY29uc29sZS5sb2coXCJBUEkgZG9jczogaHR0cHM6Ly9wc3BkZmtpdC5jb20vYXBpL3dlYi9cIik7XG4gIGNvbnNvbGUubG9nKFwiR3VpZGVzOiBodHRwczovL3BzcGRma2l0LmNvbS9ndWlkZXMvd2ViL1wiKTtcbn0pO1xuIiwiY3NzIjoiLyogQWRkIHlvdXIgQ1NTIGhlcmUgKi9cbi5QU1BERktpdC1Bbm5vdGF0aW9uLUZsYWdzLVBvcG92ZXIge1xuICBkaXNwbGF5OiBub25lO1xuICBjdXJzb3I6IG5vbmU7XG59XG5cbi5UaHVtYm5haWwtSXMtUmVhZCB7XG4gIGNvbnRlbnQ6IHVybCgvYXNzZXRzL2ltYWdlcy9pY29ucy9tb25vL2NoZWNrbWFyay1jNDJiMGQ1Mi5zdmcpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHJpZ2h0OiAyMiU7XG4gIHRvcDogMTElO1xuICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG59XG4uUFNQREZLaXQtU2lkZWJhci1UaHVtYm5haWxzLVBhZ2UtU2VsZWN0ZWRcbiAgLlBTUERGS2l0LVNpZGViYXItVGh1bWJuYWlscy1QYWdlLUltYWdlIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgNHB4IGxhdmVuZGVyO1xufVxuXG4uUFNQREZLaXQtU2lkZWJhci1UaHVtYm5haWxzLVBhZ2UtU2VsZWN0ZWRcbiAgLlBTUERGS2l0LVNpZGViYXItVGh1bWJuYWlscy1QYWdlLUxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogbGF2ZW5kZXI7XG59XG4iLCJtb2RlIjoic3RhbmRhbG9uZSJ9)
#### Toolbars and Menus
- [Add Custom Sidebar Item in Menu](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tbEUxUXUwYzdjVCIsImxheWVyIjoicmFuZG9ta1FnUzRqOEpySCJ9fSwiY3NzIjoiLyogQWRkIHlvdXIgQ1NTIGhlcmUgKi9cbiIsImpzIjoiUFNQREZLaXQubG9hZCh7XG4gIC4uLmJhc2VPcHRpb25zLFxuICB0aGVtZTogUFNQREZLaXQuVGhlbWUuREFSSyxcbiAgLyp0b29sYmFySXRlbXM6IFBTUERGS2l0LmRlZmF1bHRUb29sYmFySXRlbXMucmVkdWNlKChhY2MsIGl0ZW0pID0%252BIHtcbiAgICBpZiAoaXRlbS50eXBlID09PSBcInNpZGViYXItdGh1bWJuYWlsc1wiKSB7XG4gICAgICByZXR1cm4gYWNjLmNvbmNhdChbaXRlbSwgY3VzdG9tXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYy5jb25jYXQoW2l0ZW1dKTtcbiAgfSwgW10pKi9cbn0pLnRoZW4oKGluc3RhbmNlKSA9PiB7XG4gICAgY29uc3QgY3VzdG9tID0ge1xuICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgaWQ6IFwibXktYnV0dG9uXCIsXG4gICAgdGl0bGU6IFwiU2hvdy9IaWRlXCIsXG4gICAgZHJvcGRvd25Hcm91cDogXCJzaWRlYmFyXCIsXG4gICAgb25QcmVzczogKGV2ZW50LCBpZCkgPT4ge1xuICAgICAgYWxlcnQoXCJjdXN0b20gYnV0dG9uIGFkZGVkXCIpXG4gICAgfSxcbiAgfTtcbiAgY29uc3QgdG9vbGJhckl0ZW1zID0gUFNQREZLaXQuZGVmYXVsdFRvb2xiYXJJdGVtcy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgIGlmIChpdGVtLnR5cGUgPT09IFwic2lkZWJhci10aHVtYm5haWxzXCIpIHtcbiAgICAgIHJldHVybiBhY2MuY29uY2F0KFtpdGVtLCBjdXN0b21dKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjLmNvbmNhdChbaXRlbV0pO1xuICB9LCBbXSlcblxuaW5zdGFuY2Uuc2V0VG9vbGJhckl0ZW1zKFsuLi50b29sYmFySXRlbXNdKVxuXG59KTtcbiIsIm1vZGUiOiJzdGFuZGFsb25lIn0%253D)
- [Add Custom Sidebar item with selected text](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiJ9LCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIiwianMiOiJjb25zdCB7XG4gIEludGVyZmFjZXM6IEludGVyZmFjZXMsXG4gIGNyZWF0ZUJsb2NrOiBjcmVhdGVCbG9jayxcbiAgUmVjaXBlczogUmVjaXBlcyxcbiAgQ29yZTogQ29yZSxcbn0gPSBQU1BERktpdC5VSTtcbmZ1bmN0aW9uIGdlbmVyYXRlQ3VzdG9tVUkodGV4dCkge1xuICByZXR1cm4ge1xuICAgIFtQU1BERktpdC5VSUVsZW1lbnQuU2lkZWJhcl06IHtcbiAgICAgIFtQU1BERktpdC5TaWRlYmFyTW9kZS5DVVNUT01dOiAoeyBjb250YWluZXJOb2RlOiBjb250YWluZXJOb2RlIH0pID0%252BIHtcbiAgICAgICAgY29uc3QgZG9jaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIC8vIFNldCB0aGUgdGV4dCBjb250ZW50XG4gICAgICAgIC8vIFJldHVybiB0aGUgY3VzdG9tIFVJIG5vZGVcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAoZG9jaS5pbm5lclRleHQgPSB0ZXh0KSxcbiAgICAgICAgICAvLyBBcHBseSBzdHlsZXNcbiAgICAgICAgICAoZG9jaS5zdHlsZS5jb2xvciA9IFwicmVkXCIpLFxuICAgICAgICAgIChkb2NpLnN0eWxlLmJhY2tncm91bmQgPSBcIndoaXRlXCIpLFxuICAgICAgICAgIChkb2NpLnN0eWxlLmJvcmRlciA9IFwiMXB4IHNvbGlkIGJsYWNrXCIpLCAvLyBCb3JkZXIgd2l0aCBjb2xvclxuICAgICAgICAgIChkb2NpLnN0eWxlLm1hcmdpbiA9IFwiMjBweFwiKSwgLy8gVW5pZm9ybSBtYXJnaW4gYXJvdW5kIHRoZSBlbGVtZW50XG4gICAgICAgICAgKGRvY2kuc3R5bGUucGFkZGluZyA9IFwiMTBweFwiKSwgLy8gUGFkZGluZyBpbnNpZGUgdGhlIGRpdlxuICAgICAgICAgIChkb2NpLnN0eWxlLnRleHRBbGlnbiA9IFwiY2VudGVyXCIpLCAvLyBBbGlnbiB0ZXh0IGluIHRoZSBjZW50ZXIgb2YgdGhlIGRpdlxuICAgICAgICAgIChkb2NpLnN0eWxlLmJvcmRlclJhZGl1cyA9IFwiOHB4XCIpLCAvLyBBZGQgcm91bmRlZCBjb3JuZXJzXG4gICAgICAgICAgLy9kb2NpLnN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiOyAvLyBJbmxpbmUtYmxvY2sgZm9yIG1pZGRsZSBhbGlnbm1lbnRcbiAgICAgICAgICAoZG9jaS5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIiksIC8vIFRvIGFsbG93IHByZWNpc2UgcG9zaXRpb25pbmdcbiAgICAgICAgICAvL2RvY2kuc3R5bGUubGVmdCA9IFwiMTAlXCI7IC8vIEFsaWduIGhvcml6b250YWxseVxuICAgICAgICAgIC8vZG9jaS5zdHlsZS50cmFuc2Zvcm0gPSBcInRyYW5zbGF0ZVgoLTUwJSlcIjsgLy8gQ2VudGVyLWFsaWduIGhvcml6b250YWxseVxuICAgICAgICAgIC8vIEFwcGVuZCB0aGUgZGl2IHRvIHRoZSBjb250YWluZXJcbiAgICAgICAgICBjb250YWluZXJOb2RlLmFwcGVuZENoaWxkKGRvY2kpLFxuICAgICAgICAgIHsgbm9kZTogY29udGFpbmVyTm9kZSB9XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5QU1BERktpdC5sb2FkKHtcbiAgLi4uYmFzZU9wdGlvbnMsXG4gIHRoZW1lOiBQU1BERktpdC5UaGVtZS5EQVJLLFxuICB1aToge1xuICAgIFtJbnRlcmZhY2VzLlByaW1hcnlUb29sYmFyXTogKHsgcHJvcHM6IHByb3BzLCBpbnN0YW5jZTogaW5zdGFuY2UgfSkgPT4gKHtcbiAgICAgIGNvbnRlbnQ6IGNyZWF0ZUJsb2NrKFJlY2lwZXMuUHJpbWFyeVRvb2xiYXIsIHByb3BzLCAoeyB1aTogdWkgfSkgPT4ge1xuICAgICAgICBjb25zdCBzaWRlYmFyID0gdWkuZ2V0QmxvY2tCeUlkKFwic2lkZWJhclwiKTtcbiAgICAgICAgaWYgKHNpZGViYXIpIHtcbiAgICAgICAgICBjb25zdCBuZXdTaWRlYmFyID0gY3JlYXRlQmxvY2soQ29yZS5CdXR0b25TZWxlY3QsIHtcbiAgICAgICAgICAgIC4uLnNpZGViYXIucHJvcHMsXG4gICAgICAgICAgICBvblNlbGVjdGlvbkNoYW5nZTogKGtleSkgPT4ge1xuICAgICAgICAgICAgICBcInNpZGViYXItY3VzdG9tXCIgPT09IGtleVxuICAgICAgICAgICAgICAgID8gaW5zdGFuY2Uuc2V0Vmlld1N0YXRlKCh2aWV3U3RhdGUpID0%252BXG4gICAgICAgICAgICAgICAgICAgIHZpZXdTdGF0ZS5zZXQoXCJzaWRlYmFyTW9kZVwiLCBQU1BERktpdC5TaWRlYmFyTW9kZS5DVVNUT00pXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBzaWRlYmFyLnByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlPy4oa2V5KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAgICAuLi5zaWRlYmFyLnByb3BzLml0ZW1zLFxuICAgICAgICAgICAgICB7IGlkOiBcInNpZGViYXItY3VzdG9tXCIsIGxhYmVsOiBcIkN1c3RvbSBTaWRlYmFyXCIgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdWkucmVwbGFjZShcInNpZGViYXJcIiwgbmV3U2lkZWJhcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVpLmNyZWF0ZUNvbXBvbmVudCgpO1xuICAgICAgfSkuY3JlYXRlQ29tcG9uZW50KCksXG4gICAgfSksXG4gIH0sXG4gIGluaXRpYWxWaWV3U3RhdGU6IG5ldyBQU1BERktpdC5WaWV3U3RhdGUoe1xuICAgIHNpZGViYXJNb2RlOiBQU1BERktpdC5TaWRlYmFyTW9kZS5DVVNUT00sXG4gIH0pLFxufSkudGhlbigoaW5zdGFuY2UpID0%252BIHtcbiAgaW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcihcInRleHRTZWxlY3Rpb24uY2hhbmdlXCIsIGFzeW5jICh0ZXh0U2VsZWN0aW9uKSA9PiB7XG4gICAgaWYgKHRleHRTZWxlY3Rpb24pIHtcbiAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCB0ZXh0U2VsZWN0aW9uLmdldFRleHQoKTtcbiAgICAgIGNvbnNvbGUubG9nKFwiU2VsZWN0ZWQgdGV4dDpcIiwgdGV4dCksXG4gICAgICAgIGNvbnNvbGUubG9nKFwiVGV4dCBsZW5ndGg6XCIsIHRleHQubGVuZ3RoKTtcbiAgICAgIC8vIEdlbmVyYXRlIGFuZCBhcHBseSBjdXN0b20gVUkgd2l0aCB0aGUgc2VsZWN0ZWQgdGV4dFxuICAgICAgY29uc3QgY3VzdG9tVUkgPSBnZW5lcmF0ZUN1c3RvbVVJKHRleHQpO1xuICAgICAgaW5zdGFuY2Uuc2V0Q3VzdG9tVUlDb25maWd1cmF0aW9uKGN1c3RvbVVJKTtcbiAgICB9IGVsc2UgY29uc29sZS5sb2coXCJObyB0ZXh0IGlzIHNlbGVjdGVkXCIpO1xuICB9KTtcbiAgY29uc29sZS5sb2coXCJOdXRyaWVudCBsb2FkZWQhIGJ5IE5hcmFzaGltYW5cIik7XG59KTtcbiIsIm1vZGUiOiJzdGFuZGFsb25lIn0%253D)
- [Add Read Checkmark to Thumbnails](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tbEUxUXUwYzdjVCIsImxheWVyIjoicmFuZG9ta1FnUzRqOEpySCJ9fSwianMiOiJQU1BERktpdC5sb2FkKHsuLi5iYXNlT3B0aW9ucyx0aGVtZTpQU1BERktpdC5UaGVtZS5EQVJLLGluaXRpYWxWaWV3U3RhdGU6bmV3IFBTUERGS2l0LlZpZXdTdGF0ZSh7c2lkZWJhck1vZGU6J1RIVU1CTkFJTFMnfSl9KS50aGVuKChhc3luYyBpbnN0YW5jZT0%252Be2NvbnN0IGFubm90YXRpb249bmV3IFBTUERGS2l0LkFubm90YXRpb25zLlJlY3RhbmdsZUFubm90YXRpb24oe3BhZ2VJbmRleDowLGJvdW5kaW5nQm94Om5ldyBQU1BERktpdC5HZW9tZXRyeS5SZWN0KHtsZWZ0OjEwLHRvcDoxMCx3aWR0aDoxMDAsaGVpZ2h0OjEwMH0pLGxvY2tlZDohMH0pO2luc3RhbmNlLmNyZWF0ZShhbm5vdGF0aW9uKTtjb25zdCByZWFkQ2hlY2ttYXJrPXBhZ2VJbmRleD0%252Be2NvbnN0IGN1cnJlbnRUaHVtYm5haWw9aW5zdGFuY2UuY29udGVudERvY3VtZW50LmdldFJvb3ROb2RlKCkucXVlcnlTZWxlY3RvcihgLlBTUERGS2l0LVNpZGViYXItVGh1bWJuYWlscy1QYWdlW2RhdGEtcGFnZS1pbmRleD1cIiR7cGFnZUluZGV4fVwiXWApO2N1cnJlbnRUaHVtYm5haWwucXVlcnlTZWxlY3RvcignLlRodW1ibmFpbC1Jcy1SZWFkJyl8fGN1cnJlbnRUaHVtYm5haWwuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmJlZ2luJywnPHNwYW4gY2xhc3M9XCJUaHVtYm5haWwtSXMtUmVhZFwiPjwvc3Bhbj4nKX07XG4vL2luaXQgZm9yIGN1cnJlbnQgcGFnZSBpbmRleFxucmVhZENoZWNrbWFyayhpbnN0YW5jZS52aWV3U3RhdGUuY3VycmVudFBhZ2VJbmRleCksaW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcigndmlld1N0YXRlLmN1cnJlbnRQYWdlSW5kZXguY2hhbmdlJyxyZWFkQ2hlY2ttYXJrKX0pKTsiLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuLlBTUERGS2l0LUFubm90YXRpb24tRmxhZ3MtUG9wb3ZlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGN1cnNvcjogbm9uZTtcbn1cblxuLlRodW1ibmFpbC1Jcy1SZWFkIHtcbiAgY29udGVudDogdXJsKC9hc3NldHMvaW1hZ2VzL2ljb25zL21vbm8vY2hlY2ttYXJrLWM0MmIwZDUyLnN2Zyk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgcmlnaHQ6IDIyJTtcbiAgdG9wOiAxMSU7XG4gIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbn1cbiJ9)
- [Custom Button on Redact Annotation Toolbar](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tbEUxUXUwYzdjVCIsImxheWVyIjoicmFuZG9ta1FnUzRqOEpySCJ9fSwianMiOiIvKipcbiAqIENyZWF0ZXMgYSBjdXN0b20gZHJvcGRvd24gbWVudSBhbmQgY29uZmlndXJlcyBQU1BERktpdCB3aXRoIGEgbW9kaWZpZWQgdG9vbGJhclxuICogZm9yIHJlZGFjdGlvbiBhbm5vdGF0aW9ucy5cbiAqL1xuXG4vLyBDcmVhdGUgYSBkcm9wZG93biBtZW51IHdpdGggdXNlciBvcHRpb25zXG5jb25zdCBzZWxlY3ROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNlbGVjdFwiKTtcbnNlbGVjdE5vZGUuaW5uZXJIVE1MID0gYFxuICAgIDxvcHRpb24gdmFsdWU9XCJhbGljZVwiPkFsaWNlPC9vcHRpb24%252BXG4gICAgPG9wdGlvbiB2YWx1ZT1cImJvYlwiPkJvYjwvb3B0aW9uPlxuICAgIDxvcHRpb24gdmFsdWU9XCJjYXJvbFwiPkNhcm9sPC9vcHRpb24%252BXG4gICAgPG9wdGlvbiB2YWx1ZT1cImpvaG5cIj5Kb2huPC9vcHRpb24%252BXG5gO1xuXG4vLyBBZGRlZCBzdHlsZSB0byBzZWxlY3QgYW5kIHBhcmVudCBlbGVtZW50IGluIENTUyB0YWIgdG8gdGFrZSB1cCB0aGUgZnVsbCBoZWlnaHRcblxuLy8gQWRkIGNoYW5nZSBldmVudCBsaXN0ZW5lciB0byBsb2cgc2VsZWN0ZWQgdmFsdWVzXG5zZWxlY3ROb2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgKGV2ZW50KSA9PiB7XG4gIGNvbnNvbGUubG9nKGBTZWxlY3RlZCBvcHRpb246ICR7ZXZlbnQudGFyZ2V0LnZhbHVlfWApO1xuICBhbGVydChgU2VsZWN0ZWQgb3B0aW9uOiAke2V2ZW50LnRhcmdldC52YWx1ZX1gKTtcbn0pO1xuXG4vLyBEZWZpbmUgY3VzdG9tIHRvb2xiYXIgaXRlbSBjb25maWd1cmF0aW9uXG5jb25zdCBjdXN0b21Ub29sYmFySXRlbSA9IHtcbiAgdHlwZTogXCJjdXN0b21cIixcbiAgaWQ6IFwibXktYnV0dG9uXCIsXG4gIHRpdGxlOiBcIk15IEJ1dHRvblwiLFxuICBub2RlOiBzZWxlY3ROb2RlLFxuICBvblByZXNzOiAoZXZlbnQpID0%252BIHtcbiAgICBjb25zb2xlLmxvZyhcImhlbGxvIGZyb20gbXkgYnV0dG9uXCIpO1xuICB9LFxufTtcblxuLy8gSW5pdGlhbGl6ZSBQU1BERktpdCB3aXRoIGN1c3RvbSB0b29sYmFyIGNvbmZpZ3VyYXRpb25cblBTUERGS2l0LmxvYWQoe1xuICAuLi5iYXNlT3B0aW9ucyxcbiAgdGhlbWU6IFBTUERGS2l0LlRoZW1lLkRBUkssXG5cbiAgLy8gQ3VzdG9tIHRvb2xiYXIgY29uZmlndXJhdGlvbiBmb3IgYW5ub3RhdGlvbnNcbiAgYW5ub3RhdGlvblRvb2xiYXJJdGVtczogKGFubm90YXRpb24sIHsgZGVmYXVsdEFubm90YXRpb25Ub29sYmFySXRlbXMgfSkgPT4ge1xuICAgIC8vIENoZWNrIGlmIHRoZSBhbm5vdGF0aW9uIGlzIGEgcmVkYWN0aW9uXG4gICAgaWYgKGFubm90YXRpb24gaW5zdGFuY2VvZiBQU1BERktpdC5Bbm5vdGF0aW9ucy5SZWRhY3Rpb25Bbm5vdGF0aW9uKSB7XG4gICAgICAvLyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgXCJhcHBseS1yZWRhY3Rpb25zXCIgYnV0dG9uXG4gICAgICBjb25zdCBhcHBseVJlZGFjdGlvbnNJbmRleCA9IGRlZmF1bHRBbm5vdGF0aW9uVG9vbGJhckl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgKGl0ZW0pID0%252BIGl0ZW0udHlwZSA9PT0gXCJhcHBseS1yZWRhY3Rpb25zXCJcbiAgICAgICk7XG5cbiAgICAgIC8vIEluc2VydCBjdXN0b20gYnV0dG9uIGFmdGVyIHRoZSBcImFwcGx5LXJlZGFjdGlvbnNcIiBidXR0b25cbiAgICAgIGRlZmF1bHRBbm5vdGF0aW9uVG9vbGJhckl0ZW1zLnNwbGljZShcbiAgICAgICAgYXBwbHlSZWRhY3Rpb25zSW5kZXggKyAxLFxuICAgICAgICAwLFxuICAgICAgICBjdXN0b21Ub29sYmFySXRlbVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGRlZmF1bHRBbm5vdGF0aW9uVG9vbGJhckl0ZW1zO1xuICAgIH1cblxuICAgIC8vIFJldHVybiBkZWZhdWx0IHRvb2xiYXIgaXRlbXMgZm9yIG5vbi1yZWRhY3Rpb24gYW5ub3RhdGlvbnNcbiAgICByZXR1cm4gZGVmYXVsdEFubm90YXRpb25Ub29sYmFySXRlbXM7XG4gIH0sXG59KS50aGVuKChpbnN0YW5jZSkgPT4ge1xuICAvLyBMb2cgc3VjY2VzcyBtZXNzYWdlcyBhbmQgZG9jdW1lbnRhdGlvbiBsaW5rc1xuICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZGl2W3RpdGxlPSdNeSBCdXR0b24nXVwiKTtcbiAgY29uc29sZS5sb2coXCJQU1BERktpdCBsb2FkZWQhXCIpO1xuICBjb25zb2xlLmxvZyhcIkFQSSBkb2NzOiBodHRwczovL251dHJpZW50LmlvL2FwaS93ZWIvXCIpO1xuICBjb25zb2xlLmxvZyhcIkd1aWRlczogaHR0cHM6Ly9udXRyaWVudC5pby9ndWlkZXMvd2ViL1wiKTtcbn0pO1xuIiwibW9kZSI6InN0YW5kYWxvbmUiLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuZGl2W3RpdGxlPVwiTXkgQnV0dG9uXCJdIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG5kaXZbdGl0bGU9XCJNeSBCdXR0b25cIl0gc2VsZWN0IHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuIn0%253D)
- [Add a Link, Highlight, Underline Annotation From the Inline Text Context Menu](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tWmFpZTY0V0M5dCIsImxheWVyIjoicmFuZG9tNE02M1BlUWNZNiJ9fSwianMiOiIvLyBDb25maWd1cmVzIFBTUERGS2l0IHdpdGggYSBjdXN0b20gbGluayBhbm5vdGF0aW9uIHRvb2wgdGhhdCBjcmVhdGVzIGEgaGlnaGxpZ2h0ZWQsIHVuZGVybGluZWQsIGNsaWNrYWJsZSBsaW5rIGZyb20gc2VsZWN0ZWQgdGV4dFxuUFNQREZLaXQubG9hZCh7XG4gIC4uLmJhc2VPcHRpb25zLFxufSkudGhlbigoaW5zdGFuY2UpID0%252BIHtcbiAgLy8gQ3JlYXRlIGN1c3RvbSB0b29sYmFyIGJ1dHRvbiBlbGVtZW50XG4gIGNvbnN0IGJ1dHRvbk5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBidXR0b25Ob2RlLmlubmVySFRNTCA9IGBcbiAgICA8YnV0dG9uIFxuICAgICAgY2xhc3M9XCJQU1BERktpdC04ZWhjYmh6MjQxejF0Znloanp0YmUxMnViZSBQU1BERktpdC01aHF2cGdjZ3BmMTc2OWNuMzVkdnRnNGt0eiBcbiAgICAgICAgUFNQREZLaXQtVG9vbGJhci1CdXR0b24tTGluay1Bbm5vdGF0aW9uIFBTUERGS2l0LXl6cGZ6dzliZmQ5ZWpwMWs3a2dkYWN1N2QgXG4gICAgICAgIFBTUERGS2l0LVRvb2xiYXItQnV0dG9uIFBTUERGS2l0LVRvb2wtQnV0dG9uXCJcbiAgICAgIHRpdGxlPVwiTGlua1wiXG4gICAgICBhcmlhLWxhYmVsPVwiTGlua1wiXG4gICAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCI%252BXG4gICAgICA8c3BhbiBjbGFzcz1cIlBTUERGS2l0LTZlZWtteDJyM3J6cG40OTU1N3ZkdDJlNXRqIFBTUERGS2l0LVRvb2wtQnV0dG9uLUljb24gXG4gICAgICAgIFBTUERGS2l0LVRvb2xiYXItQnV0dG9uLUljb24gUFNQREZLaXQtSWNvbiBQU1BERktpdC1JY29uLUxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI1IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTE0LjEyMTkgMTAuNTlDMTQuNDQ4MiAxMC45MTQzIDE0LjcwNzEgMTEuMjk5OSAxNC44ODM3IDExLjcyNDdDMTUuMDYwNCAxMi4xNDk0IDE1LjE1MTMgMTIuNjA0OSAxNS4xNTEzIDEzLjA2NUMxNS4xNTEzIDEzLjUyNSAxNS4wNjA0IDEzLjk4MDUgMTQuODgzNyAxNC40MDUyQzE0LjcwNzEgMTQuODMgMTQuNDQ4MiAxNS4yMTU2IDE0LjEyMTkgMTUuNTRMMTAuNTkxOSAxOS4wN0MxMC4yNjY4IDE5LjQwMzggOS44NzgwMSAxOS42NjkxIDkuNDQ4NjQgMTkuODUwM0M5LjAxOTI3IDIwLjAzMTUgOC41NTc5NiAyMC4xMjQ4IDguMDkxOTMgMjAuMTI0OEM3LjYyNTkgMjAuMTI0OCA3LjE2NDU5IDIwLjAzMTUgNi43MzUyMiAxOS44NTAzQzYuMzA1ODUgMTkuNjY5MSA1LjkxNzExIDE5LjQwMzggNS41OTE5MyAxOS4wN0M1LjI1ODEgMTguNzQ0OCA0Ljk5Mjc3IDE4LjM1NiA0LjgxMTYxIDE3LjkyNjdDNC42MzA0NSAxNy40OTczIDQuNTM3MTEgMTcuMDM2IDQuNTM3MTEgMTYuNTdDNC41MzcxMSAxNi4xMDM5IDQuNjMwNDUgMTUuNjQyNiA0LjgxMTYxIDE1LjIxMzNDNC45OTI3NyAxNC43ODM5IDUuMjU4MSAxNC4zOTUxIDUuNTkxOTMgMTQuMDdMNy40MTE5MyAxMi4zNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMjVcIiBzdHJva2UtbWl0ZXJsaW1pdD1cIjEwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgICAgICA8cGF0aCBkPVwiTTExLjMwMTkgMTMuNDA5OUMxMC45NzU2IDEzLjA4NTYgMTAuNzE2NyAxMi43IDEwLjU0MDEgMTIuMjc1MkMxMC4zNjM0IDExLjg1MDUgMTAuMjcyNSAxMS4zOTUgMTAuMjcyNSAxMC45MzQ5QzEwLjI3MjUgMTAuNDc0OSAxMC4zNjM0IDEwLjAxOTQgMTAuNTQwMSA5LjU5NDY3QzEwLjcxNjcgOS4xNjk5MiAxMC45NzU2IDguNzg0MjggMTEuMzAxOSA4LjQ1OTk0TDE0LjgzMTkgNC45Mjk5NEMxNS4xNTcxIDQuNTk2MTEgMTUuNTQ1OCA0LjMzMDc5IDE1Ljk3NTIgNC4xNDk2MkMxNi40MDQ1IDMuOTY4NDYgMTYuODY1OCAzLjg3NTEyIDE3LjMzMTkgMy44NzUxMkMxNy43OTc5IDMuODc1MTIgMTguMjU5MiAzLjk2ODQ2IDE4LjY4ODYgNC4xNDk2MkMxOS4xMTggNC4zMzA3OSAxOS41MDY3IDQuNTk2MTEgMTkuODMxOSA0LjkyOTk0QzIwLjE2NTcgNS4yNTUxMiAyMC40MzEgNS42NDM4NiAyMC42MTIyIDYuMDczMjNDMjAuNzkzNCA2LjUwMjYxIDIwLjg4NjcgNi45NjM5MSAyMC44ODY3IDcuNDI5OTRDMjAuODg2NyA3Ljg5NTk3IDIwLjc5MzQgOC4zNTcyOCAyMC42MTIyIDguNzg2NjVDMjAuNDMxIDkuMjE2MDMgMjAuMTY1NyA5LjYwNDc3IDE5LjgzMTkgOS45Mjk5NEwxOC4wMTE5IDExLjY0OTlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjI1XCIgc3Ryb2tlLW1pdGVybGltaXQ9XCIxMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg%252BXG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPmA7XG5cbiAgLy8gRGVmaW5lIGN1c3RvbSB0b29sYmFyIGl0ZW0gZm9yIGNyZWF0aW5nIGxpbmtlZCBoaWdobGlnaHRzXG4gIGNvbnN0IGhpZ2hsaWdodFdpdGhMaW5rID0ge1xuICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgaWQ6IFwiaGlnaGxpZ2h0LWxpbmtcIixcbiAgICB0aXRsZTogXCJMaW5rXCIsXG4gICAgbm9kZTogYnV0dG9uTm9kZSxcbiAgICBvblByZXNzOiBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBHZXQgdGV4dCBzZWxlY3Rpb25cbiAgICAgIGNvbnN0IHNlbGVjdGVkVGV4dCA9IGluc3RhbmNlLmdldFRleHRTZWxlY3Rpb24oKTtcbiAgICAgIGNvbnN0IHsgZ2V0U2VsZWN0ZWRSZWN0c1BlclBhZ2UsIHN0YXJ0UGFnZUluZGV4IH0gPSBzZWxlY3RlZFRleHQ7XG5cbiAgICAgIC8vIEdldCByZWN0YW5nbGVzIGZvciBzZWxlY3RlZCB0ZXh0XG4gICAgICBjb25zdCBmaXJzdFBhZ2VTZWxlY3Rpb24gPSAoYXdhaXQgZ2V0U2VsZWN0ZWRSZWN0c1BlclBhZ2UoKSkuZ2V0KDApO1xuICAgICAgY29uc3QgeyByZWN0cywgcGFnZUluZGV4IH0gPSBmaXJzdFBhZ2VTZWxlY3Rpb247XG5cbiAgICAgIC8vIENyZWF0ZSBhZGp1c3RlZCByZWN0YW5nbGVzIGZvciBoaWdobGlnaHRcbiAgICAgIGNvbnN0IGhpZ2hsaWdodFJlY3RzID0gcmVjdHMubWFwKChyZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkUmVjdCA9IHJlY3QudHJhbnNsYXRlWSgtNSk7XG4gICAgICAgIHJldHVybiBhZGp1c3RlZFJlY3RcbiAgICAgICAgICAuc2V0KFwiaGVpZ2h0XCIsIHJlY3QuaGVpZ2h0IC0gMTApXG4gICAgICAgICAgLnNldChcInRvcFwiLCByZWN0LnRvcCArIDgpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIENyZWF0ZSBhZGp1c3RlZCByZWN0YW5nbGVzIGZvciB1bmRlcmxpbmVcbiAgICAgIGNvbnN0IHVuZGVybGluZVJlY3RzID0gcmVjdHMubWFwKChyZWN0KSA9PiB7XG4gICAgICAgIC8vIGFkanVzdCB0aGUgWSBwb3NpdGlvbiBpZiBuZWNlc3NhcnlcbiAgICAgICAgLy8gY29uc3QgYWRqdXN0ZWRSZWN0ID0gcmVjdC50cmFuc2xhdGVZKC0zKTtcbiAgICAgICAgcmV0dXJuIHJlY3Quc2V0KFwiaGVpZ2h0XCIsIHJlY3QuaGVpZ2h0KTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBDcmVhdGUgaGlnaGxpZ2h0XG4gICAgICBjb25zdCBoaWdobGlnaHQgPSBuZXcgUFNQREZLaXQuQW5ub3RhdGlvbnMuSGlnaGxpZ2h0QW5ub3RhdGlvbih7XG4gICAgICAgIHBhZ2VJbmRleDogcGFnZUluZGV4LFxuICAgICAgICByZWN0czogaGlnaGxpZ2h0UmVjdHMsXG4gICAgICAgIGJvdW5kaW5nQm94OiBQU1BERktpdC5HZW9tZXRyeS5SZWN0LnVuaW9uKHJlY3RzKSxcbiAgICAgICAgY29sb3I6IFBTUERGS2l0LkNvbG9yLllFTExPVyxcbiAgICAgICAgYmxlbmRNb2RlOiBcIm11bHRpcGx5XCIsXG4gICAgICAgIG9wYWNpdHk6IDAuNSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBDcmVhdGUgdW5kZXJsaW5lXG4gICAgICBjb25zdCB1bmRlcmxpbmUgPSBuZXcgUFNQREZLaXQuQW5ub3RhdGlvbnMuVW5kZXJsaW5lQW5ub3RhdGlvbih7XG4gICAgICAgIHBhZ2VJbmRleDogcGFnZUluZGV4LFxuICAgICAgICByZWN0czogdW5kZXJsaW5lUmVjdHMsXG4gICAgICAgIGJvdW5kaW5nQm94OiBQU1BERktpdC5HZW9tZXRyeS5SZWN0LnVuaW9uKHJlY3RzKSxcbiAgICAgICAgY29sb3I6IFBTUERGS2l0LkNvbG9yLkJMVUUsXG4gICAgICAgIGJsZW5kTW9kZTogXCJtdWx0aXBseVwiLFxuICAgICAgICBvcGFjaXR5OiAwLjksXG4gICAgICB9KTtcblxuICAgICAgLy8gQ3JlYXRlIGxpbmtcbiAgICAgIGNvbnN0IGxpbmtBbm5vdGF0aW9uID0gbmV3IFBTUERGS2l0LkFubm90YXRpb25zLkxpbmtBbm5vdGF0aW9uKHtcbiAgICAgICAgcGFnZUluZGV4OiBwYWdlSW5kZXgsXG4gICAgICAgIGJvdW5kaW5nQm94OiBQU1BERktpdC5HZW9tZXRyeS5SZWN0LnVuaW9uKHJlY3RzKSxcbiAgICAgICAgYWN0aW9uOiBuZXcgUFNQREZLaXQuQWN0aW9ucy5VUklBY3Rpb24oe1xuICAgICAgICAgIHVyaTogXCJodHRwczovL251dHJpZW50LmlvXCIsXG4gICAgICAgIH0pLFxuICAgICAgICBib3JkZXJDb2xvcjogUFNQREZLaXQuQ29sb3IuVFJBTlNQQVJFTlQsXG4gICAgICAgIGJsZW5kTW9kZTogXCJtdWx0aXBseVwiLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIENyZWF0ZSBhbGwgYW5ub3RhdGlvbnNcbiAgICAgIGF3YWl0IGluc3RhbmNlLmNyZWF0ZShbbGlua0Fubm90YXRpb24sIHVuZGVybGluZSwgaGlnaGxpZ2h0XSk7XG4gICAgfSxcbiAgfTtcblxuICAvLyBBZGQgY3VzdG9tdG9vbCB0byB0aGUgaW5saW5lIHRleHQgc2VsZWN0aW9uIHRvb2xiYXJcbiAgaW5zdGFuY2Uuc2V0SW5saW5lVGV4dFNlbGVjdGlvblRvb2xiYXJJdGVtcygodG9vbGJhck9wdGlvbnMsIHNlbGVjdGlvbikgPT4ge1xuICAgIGNvbnN0IHsgZGVmYXVsdEl0ZW1zLCBoYXNEZXNrdG9wTGF5b3V0IH0gPSB0b29sYmFyT3B0aW9ucztcbiAgICByZXR1cm4gWy4uLmRlZmF1bHRJdGVtcywgaGlnaGxpZ2h0V2l0aExpbmtdO1xuICB9KTtcbn0pO1xuIiwibW9kZSI6InN0YW5kYWxvbmUifQ%253D%253D)
- [Rotate PDF Pages With Custom Toolbar Buttons](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiJ9LCJqcyI6Ii8vIExvYWQgUFNQREZLaXQgd2l0aCBzcGVjaWZpYyBjb25maWd1cmF0aW9uc1xuUFNQREZLaXQubG9hZCh7XG4gIC4uLmJhc2VPcHRpb25zLFxuICB0aGVtZTogUFNQREZLaXQuVGhlbWUuREFSSyxcbiAgdG9vbGJhckl0ZW1zOiBbeyB0eXBlOiBcImxheW91dC1jb25maWdcIiB9LCB7IHR5cGU6IFwiZXhwb3J0LXBkZlwiIH1dLCAvLyBEZWZpbmUgdG9vbGJhciBpdGVtcyBpbmNsdWRpbmcgbGF5b3V0IGNvbmZpZyBhbmQgZXhwb3J0IFBERlxufSkudGhlbigoaW5zdGFuY2UpID0%252BIHtcbiAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24gZXhlY3V0ZWQgYWZ0ZXIgUFNQREZLaXQgaGFzIHN1Y2Nlc3NmdWxseSBsb2FkZWRcbiAgY29uc29sZS5sb2coXCJQU1BERktpdCBsb2FkZWQhIGJ5IE5hcmFzaGltYW5cIik7IC8vIExvZyBhIG1lc3NhZ2UgdG8gaW5kaWNhdGUgc3VjY2Vzc2Z1bCBsb2FkaW5nXG5cbiAgLy8gRGVmaW5lIGEgY3VzdG9tIHRvb2xiYXIgYnV0dG9uIGZvciByb3RhdGluZyB0aGUgcGFnZSBjb3VudGVyY2xvY2t3aXNlXG4gIGNvbnN0IGl0ZW1fMSA9IHtcbiAgICB0eXBlOiBcImN1c3RvbVwiLFxuICAgIGlkOiBcIkFudGlDbG9ja3dpc2VcIixcbiAgICB0aXRsZTogXCJBbnRpQ2xvY2t3aXNlXCIsIC8vIEJ1dHRvbiB0aXRsZVxuICAgIGljb246IGA8c3BhbiBjbGFzcz1cIlBTUERGS2l0LTQ0MW1xNm0yZXdkNzZ2ZWU5NXY5ZnI3bXkyIFBTUERGS2l0LUxheW91dC1Db25maWctT3B0aW9uLVBhZ2UtUm90YXRpb24tTGVmdCBQU1BERktpdC1MYXlvdXQtQ29uZmlnLU9wdGlvblwiIHRpdGxlPVwiUm90YXRlIExlZnRcIiBhcmlhLWxhYmVsPVwiUm90YXRlIExlZnRcIiBpZD1cImRvd25zaGlmdC01LWl0ZW0tNVwiIHJvbGU9XCJvcHRpb25cIiBhcmlhLXNlbGVjdGVkPVwiZmFsc2VcIj48c3BhbiBjbGFzcz1cIlBTUERGS2l0LTZlZWtteDJyM3J6cG40OTU1N3ZkdDJlNXRqIFBTUERGS2l0LTZmN3NhcnA3dHNhN3VtbjRmOTJ3dmoxYmZ2IFBTUERGS2l0LUxheW91dC1Db25maWctT3B0aW9uLUljb24gUFNQREZLaXQtSWNvbiBQU1BERktpdC1JY29uLUxheW91dENvbmZpZ1ZpZXdSb3RhdGVMZWZ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9XCJ3aWR0aDogMzZweDsgaGVpZ2h0OiAzNnB4O1wiPjxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZvY3VzYWJsZT1cImZhbHNlXCI%252BPHJlY3Qgb3BhY2l0eT1cIi4xNVwiIHk9XCIxXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjIyXCIgcng9XCIxLjI1XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD48cmVjdCBvcGFjaXR5PVwiLjE1XCIgeD1cIi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyMVwiIHJ4PVwiLjc1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI%252BPC9yZWN0PjxwYXRoIGQ9XCJNOSA2LjY1bDIuNDE1LTIuNDE1YS4wNS4wNSAwIDAgMSAuMDg1LjAzNnY0Ljc1OGEuMDUuMDUgMCAwIDEtLjA4NS4wMzZMOSA2LjY1elwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI%252BPC9wYXRoPjxwYXRoIGQ9XCJNMTIgMTkuNWE2LjUgNi41IDAgMSAwIDAtMTNcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjI1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD48cGF0aCBvcGFjaXR5PVwiLjY2XCIgZD1cIk04LjY0MSAxOC41NjZhNi41MzIgNi41MzIgMCAwIDEtMi4yMTQtMi4yMTlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjI1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD48cGF0aCBvcGFjaXR5PVwiLjMzXCIgZD1cIk01LjUgMTNjMC0uODg0LjE3Ni0xLjcyNi40OTYtMi40OTRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjI1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD48L3N2Zz48L3NwYW4%252BPC9zcGFuPmAsXG4gICAgb25QcmVzczogKGV2ZW50KSA9PiB7XG4gICAgICBpbnN0YW5jZS5hcHBseU9wZXJhdGlvbnMoW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJyb3RhdGVQYWdlc1wiLCAvLyBSb3RhdGlvbiBvcGVyYXRpb25cbiAgICAgICAgICBwYWdlSW5kZXhlczogW2luc3RhbmNlLnZpZXdTdGF0ZS5jdXJyZW50UGFnZUluZGV4XSwgLy8gVGFyZ2V0IHRoZSBjdXJyZW50IHBhZ2VcbiAgICAgICAgICByb3RhdGVCeTogLTkwLCAvLyBSb3RhdGUgY291bnRlcmNsb2Nrd2lzZSBieSA5MCBkZWdyZWVzXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0IGl0ZW1fMiA9IHtcbiAgICB0eXBlOiBcImN1c3RvbVwiLFxuICAgIGlkOiBcIkNsb2Nrd2lzZVwiLFxuICAgIHRpdGxlOiBcIkNsb2Nrd2lzZVwiLCAvLyBCdXR0b24gdGl0bGVcbiAgICBpY29uOiBgPHNwYW4gY2xhc3M9XCJQU1BERktpdC00NDFtcTZtMmV3ZDc2dmVlOTV2OWZyN215MiBQU1BERktpdC1MYXlvdXQtQ29uZmlnLU9wdGlvbi1QYWdlLVJvdGF0aW9uLVJpZ2h0IFBTUERGS2l0LUxheW91dC1Db25maWctT3B0aW9uXCIgdGl0bGU9XCJSb3RhdGUgUmlnaHRcIiBhcmlhLWxhYmVsPVwiUm90YXRlIFJpZ2h0XCIgaWQ9XCJkb3duc2hpZnQtNS1pdGVtLTZcIiByb2xlPVwib3B0aW9uXCIgYXJpYS1zZWxlY3RlZD1cImZhbHNlXCI%252BPHNwYW4gY2xhc3M9XCJQU1BERktpdC02ZWVrbXgycjNyenBuNDk1NTd2ZHQyZTV0aiBQU1BERktpdC02ZjdzYXJwN3RzYTd1bW40Zjkyd3ZqMWJmdiBQU1BERktpdC1MYXlvdXQtQ29uZmlnLU9wdGlvbi1JY29uIFBTUERGS2l0LUljb24gUFNQREZLaXQtSWNvbi1MYXlvdXRDb25maWdWaWV3Um90YXRlUmlnaHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cIndpZHRoOiAzNnB4OyBoZWlnaHQ6IDM2cHg7XCI%252BPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj48cmVjdCBvcGFjaXR5PVwiLjE1XCIgeT1cIjFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjJcIiByeD1cIjEuMjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCI%252BPC9yZWN0PjxyZWN0IG9wYWNpdHk9XCIuMTVcIiB4PVwiLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIyM1wiIGhlaWdodD1cIjIxXCIgcng9XCIuNzVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q%252BPHBhdGggZD1cIk0xNSA2LjY1bC0yLjQxNS0yLjQxNWEuMDUuMDUgMCAwIDAtLjA4NS4wMzZ2NC43NThhLjA1LjA1IDAgMCAwIC4wODUuMDM2TDE1IDYuNjV6XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg%252BPHBhdGggZD1cIk0xMiAxOS41YTYuNSA2LjUgMCAxIDEgMC0xM1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI%252BPC9wYXRoPjxwYXRoIG9wYWNpdHk9XCIuNjZcIiBkPVwiTTE1LjM1OSAxOC41NjZhNi41MzIgNi41MzIgMCAwIDAgMi4yMTQtMi4yMTlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjI1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjwvcGF0aD48cGF0aCBvcGFjaXR5PVwiLjMzXCIgZD1cIk0xOC41IDEzYTYuNDggNi40OCAwIDAgMC0uNDk2LTIuNDk0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4yNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48L3BhdGg%252BPC9zdmc%252BPC9zcGFuPjwvc3Bhbj5gLFxuICAgIG9uUHJlc3M6IChldmVudCkgPT4ge1xuICAgICAgaW5zdGFuY2UuYXBwbHlPcGVyYXRpb25zKFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwicm90YXRlUGFnZXNcIiwgLy8gUm90YXRpb24gb3BlcmF0aW9uXG4gICAgICAgICAgcGFnZUluZGV4ZXM6IFtpbnN0YW5jZS52aWV3U3RhdGUuY3VycmVudFBhZ2VJbmRleF0sIC8vIFRhcmdldCB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgICAgcm90YXRlQnk6IDkwLCAvLyBSb3RhdGUgY2xvY2t3aXNlIGJ5IDkwIGRlZ3JlZXNcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgIH0sXG4gIH07XG5cbiAgLy8gQWRkIHRoZSBjdXN0b20gdG9vbGJhciBidXR0b25zIHRvIHRoZSBleGlzdGluZyB0b29sYmFyIGl0ZW1zXG4gIGluc3RhbmNlLnNldFRvb2xiYXJJdGVtcygoaXRlbXMpID0%252BIHtcbiAgICBpdGVtcy5wdXNoKGl0ZW1fMSwgaXRlbV8yKTtcbiAgICByZXR1cm4gaXRlbXM7XG4gIH0pO1xuXG4gIC8vIEV2ZW50IGxpc3RlbmVyIGZvciBkb2N1bWVudCBjaGFuZ2Ugb3BlcmF0aW9uc1xuICBpbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKFwiZG9jdW1lbnQuY2hhbmdlXCIsIChvcGVyYXRpb25zKSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJEb2N1bWVudCBjaGFuZ2VkOlwiLCAuLi5vcGVyYXRpb25zKTsgLy8gTG9nIGRvY3VtZW50IG1vZGlmaWNhdGlvbnNcbiAgfSk7XG59KTtcbiIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG4iLCJtb2RlIjoic3RhbmRhbG9uZSJ9)
- [Show Redaction Annotations in the Annotation Sidebar](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tbEUxUXUwYzdjVCIsImxheWVyIjoicmFuZG9ta1FnUzRqOEpySCJ9fSwibW9kZSI6InN0YW5kYWxvbmUiLCJqcyI6Ii8vIFRoaXMgcGxheWdyb3VuZCBhZGRzIHJlZGFjdGlvbiBhbm5vdGF0aW9uIHN1cHBvcnQgYW5kIGEgdGV4dCByZWRhY3Rpb24gdG9vbC5cbi8vIE1hcmsgaXRlbXMgZm9yIHJlZGFjdGlvbiwgdGhlbiBvcGVuIHRoZSBBbm5vdGF0aW9ucyBzaWRlYmFyIHRvIHNlZSBhbmQgbmF2aWdhdGUgdG8gdGhlbSBieSBjbGlja2luZyBvbiB0aGVtXG5cblBTUERGS2l0LmxvYWQoe1xuICAuLi5iYXNlT3B0aW9ucyxcbiAgdGhlbWU6IFBTUERGS2l0LlRoZW1lLkRBUkssXG5cbiAgLy8gQ29uZmlndXJlIGluaXRpYWwgdmlldyBzdGF0ZSB3aXRoIGN1c3RvbSBzaWRlYmFyIG9wdGlvbnNcbiAgaW5pdGlhbFZpZXdTdGF0ZTogbmV3IFBTUERGS2l0LlZpZXdTdGF0ZSh7XG4gICAgc2lkZWJhck9wdGlvbnM6IHtcbiAgICAgIC8vIENvbmZpZ3VyZSBhbm5vdGF0aW9uIHNpZGViYXIgbW9kZVxuICAgICAgW1BTUERGS2l0LlNpZGViYXJNb2RlLkFOTk9UQVRJT05TXToge1xuICAgICAgICAvLyBJbmNsdWRlIGRlZmF1bHQgYW5ub3RhdGlvbiB0eXBlcyBwbHVzIHJlZGFjdGlvbiBhbm5vdGF0aW9uc1xuICAgICAgICBpbmNsdWRlQ29udGVudDogW1xuICAgICAgICAgIC4uLlBTUERGS2l0LmRlZmF1bHRBbm5vdGF0aW9uc1NpZGViYXJDb250ZW50LFxuICAgICAgICAgIFBTUERGS2l0LkFubm90YXRpb25zLlJlZGFjdGlvbkFubm90YXRpb24sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pLFxufSkudGhlbigoaW5zdGFuY2UpID0%252BIHtcbiAgLy8gQWRkIHJlZGFjdGlvbiB0ZXh0IGhpZ2hsaWdodGVyIHRvb2wgdG8gdGhlIHRvb2xiYXJcbiAgaW5zdGFuY2Uuc2V0VG9vbGJhckl0ZW1zKChpdGVtcykgPT4gW1xuICAgIC4uLml0ZW1zLFxuICAgIHsgdHlwZTogXCJyZWRhY3QtdGV4dC1oaWdobGlnaHRlclwiIH0sXG4gIF0pO1xuXG4gIC8vIExvZyBzdWNjZXNzIGFuZCBkb2N1bWVudGF0aW9uIGxpbmtzXG4gIGNvbnNvbGUubG9nKFwiUFNQREZLaXQgbG9hZGVkIVwiKTtcbiAgY29uc29sZS5sb2coXCJBUEkgZG9jczogaHR0cHM6Ly9wc3BkZmtpdC5jb20vYXBpL3dlYi9cIik7XG4gIGNvbnNvbGUubG9nKFwiR3VpZGVzOiBodHRwczovL3BzcGRma2l0LmNvbS9ndWlkZXMvd2ViL1wiKTtcbn0pO1xuIiwiY3NzIjoiLyogQWRkIHlvdXIgQ1NTIGhlcmUgKi9cbiJ9)
- By default some annotation types are hidden in the annotation sidebar by design. This example showcases the API used to enable showing those types if needed.#### Text Comparison
- [Text Comparison using loadTextComparison method](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiJ9LCJqcyI6IlBTUERGS2l0LmxvYWRUZXh0Q29tcGFyaXNvbih7XG4gIC4uLmJhc2VPcHRpb25zLFxuICB0aGVtZTogUFNQREZLaXQuVGhlbWUuREFSSyxcbiAgICAgICAgICBkb2N1bWVudEE6IFwiaHR0cHM6Ly9wdWJsaWMtc29sdXRpb25zLWVuZ2luZWVyaW5nLWJ1Y2tldC5zMy5ldS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbS9kb2NzL3RleHQtY29tcGFyaXNvbi1hLnBkZlwiLFxuICAgICAgICBkb2N1bWVudEI6IFwiaHR0cHM6Ly9wdWJsaWMtc29sdXRpb25zLWVuZ2luZWVyaW5nLWJ1Y2tldC5zMy5ldS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbS9kb2NzL3RleHQtY29tcGFyaXNvbi1iLnBkZlwiLFxuICAgICAgICB0b29sYmFySXRlbXM6IFtcbiAgICAgICAgICB7IHR5cGU6IFwicHJldi1jaGFuZ2VcIiB9LFxuICAgICAgICAgIHsgdHlwZTogXCJuZXh0LWNoYW5nZVwiIH0sXG4gICAgICAgICAgeyB0eXBlOiBcImNvbXBhcmlzb24tY2hhbmdlc1wiIH0sXG4gICAgICAgICAgeyB0eXBlOiBcInNjcm9sbC1sb2NrXCIgfSxcbiAgICAgICAgXSxcbiAgICAgICAgY29tcGFyaXNvblNpZGViYXJDb25maWc6IHtcbiAgICAgICAgICBkaWZmQ29sb3JzOiB7XG4gICAgICAgICAgICBkZWxldGlvbkNvbG9yOiBuZXcgUFNQREZLaXQuQ29sb3IoeyByOiAyNTUsIGc6IDIxOCwgYjogMTg1IH0pLFxuICAgICAgICAgICAgaW5zZXJ0aW9uQ29sb3I6IG5ldyBQU1BERktpdC5Db2xvcih7IHI6IDIwMCwgZzogMjU1LCBiOiAyMDAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbn0pLnRoZW4oKGluc3RhbmNlKSA9PiB7XG4gIGNvbnNvbGUubG9nKFwiTG9hZGVkIHN1Y2Nlc3NmdWxseSAtIGJ5IE5hcmFzaGltYW5cIilcbn0pO1xuIiwibW9kZSI6InN0YW5kYWxvbmUiLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIn0%253D)
- [Custom Text Comparison Sample](https://github.com/jonaddams/nutrient-web-text-comparison-custom-ui)
- [Custom Text Comparison Demo](https://nutrient-web-text-comparison-custom-ui.vercel.app/))#### Viewer
- [Show Real-Time Zoom Percentage in Toolbar](https://www.nutrient.io/playground?p=eyJ2IjoxLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIiwic2V0dGluZ3MiOnsiZmlsZU5hbWUiOiJiYXNpYy5wZGYifSwianMiOiJQU1BERktpdC5sb2FkKHtcbiAgLi4uYmFzZU9wdGlvbnMsXG4gIHRoZW1lOiBQU1BERktpdC5UaGVtZS5EQVJLLFxufSkudGhlbigoaW5zdGFuY2UpID0%252BIHtcbiAgLy8gU2V0IHRoZSBkZWZhdWx0IHpvb20gbGV2ZWwgdG8gMTAwJSBvbiBsb2FkXG4gIGluc3RhbmNlLnNldFZpZXdTdGF0ZSgodmlld1N0YXRlKSA9PiB2aWV3U3RhdGUuc2V0KFwiem9vbVwiLCAxKSk7XG5cbiAgLy8gQ3JlYXRlIGEgY3VzdG9tIHRvb2xiYXIgaXRlbSB0byBkaXNwbGF5IHpvb20gcGVyY2VudGFnZVxuICBjb25zdCB0b29sYmFySXRlbXMgPSBbXG4gICAge1xuICAgICAgdHlwZTogXCJjdXN0b21cIixcbiAgICAgIHRpdGxlOiBcIjEwMCVcIiwgLy8gSW5pdGlhbCBkaXNwbGF5IGFzIDEwMCVcbiAgICAgIGlkOiBcInpvb20tZGlzcGxheVwiLCAvLyBVbmlxdWUgSUQgZm9yIHRoZSB6b29tIGRpc3BsYXkgaXRlbVxuICAgICAgZHJvcGRvd25Hcm91cDogXCJ6b29tR3JvdXBcIiwgLy8gR3JvdXAgaXQgd2l0aCBvdGhlciB6b29tIG9wdGlvbnMgaWYgbmVlZGVkXG4gICAgICBzZWxlY3RlZDogdHJ1ZSwgLy8gU2V0IGFzIHNlbGVjdGVkIGluaXRpYWxseVxuICAgICAgdG9vbHRpcDogXCJSZXNldCB0byAxMDAlXCIsIC8vIFRvb2x0aXAgd2hlbiBob3ZlcmVkXG4gICAgICBvblByZXNzOiAoKSA9PiB7XG4gICAgICAgIC8vIFJlc2V0IHpvb20gdG8gMTAwJSB3aGVuIGNsaWNrZWRcbiAgICAgICAgaW5zdGFuY2Uuc2V0Vmlld1N0YXRlKCh2aWV3U3RhdGUpID0%252BIHZpZXdTdGF0ZS5zZXQoXCJ6b29tXCIsIDEpKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcblxuICAvLyBBZGQgdGhlIGN1c3RvbSB0b29sYmFyIGl0ZW0gdG8gdGhlIHRvb2xiYXJcbiAgaW5zdGFuY2Uuc2V0VG9vbGJhckl0ZW1zKChpdGVtcykgPT4gaXRlbXMuY29uY2F0KHRvb2xiYXJJdGVtcykpO1xuXG4gIC8vIEV2ZW50IGxpc3RlbmVyIHRvIHVwZGF0ZSB6b29tIGRpc3BsYXkgZHluYW1pY2FsbHlcbiAgaW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcihcInZpZXdTdGF0ZS56b29tLmNoYW5nZVwiLCAoem9vbSkgPT4ge1xuICAgIGlmICh0eXBlb2Ygem9vbSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgY29uc3QgcGVyY2VudGFnZSA9IE1hdGgucm91bmQoem9vbSAqIDEwMCkgKyBcIiVcIjsgLy8gQ29udmVydCB6b29tIGxldmVsIHRvIHBlcmNlbnRhZ2VcbiAgICAgIGluc3RhbmNlLnNldFRvb2xiYXJJdGVtcygoaXRlbXMpID0%252BXG4gICAgICAgIGl0ZW1zLm1hcCgoaXRlbSkgPT5cbiAgICAgICAgICBpdGVtLmlkID09PSBcInpvb20tZGlzcGxheVwiID8geyAuLi5pdGVtLCB0aXRsZTogcGVyY2VudGFnZSB9IDogaXRlbVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG4gIGNvbnNvbGUubG9nKFwiTnV0cmllbnQgdmlld2VyIGxvYWRlZCEgLSBieSBOYXJhc2hpbWFuXCIpO1xufSk7XG4ifQ%253D%253D)
- [Zoom-In/Zoom-Out With Scroll](https://nutrient.io/playground?p=eyJ2IjoxLCJqcyI6IlBTUERGS2l0LmxvYWQoey4uLmJhc2VPcHRpb25zLHRoZW1lOlBTUERGS2l0LlRoZW1lLkRBUkt9KS50aGVuKChpbnN0YW5jZT0%252Be2NvbnN0IE1JTl9aT09NPWluc3RhbmNlLm1pbmltdW1ab29tTGV2ZWwsTUFYX1pPT009aW5zdGFuY2UubWF4aW11bVpvb21MZXZlbDsvLyBjaGFuZ2UgYnkgMTAlIGZvciBlYWNoIHdoZWVsIGV2ZW50XG4vLyBtYXhpbXVtIHpvb20gbGV2ZWxcbi8vIE1haW50YWluIG91ciBvd24gem9vbSBzdGF0ZVxubGV0IGN1cnJlbnRab29tPTE7aW5zdGFuY2UuY29udGVudERvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywoZnVuY3Rpb24oZXZlbnQpe1xuLy8gQ2FwdHVyZSBtb3VzZSBwb3NpdGlvblxuY29uc3QgbW91c2VYPWV2ZW50LmNsaWVudFgsbW91c2VZPWV2ZW50LmNsaWVudFksem9vbURpcmVjdGlvbj1ldmVudC5kZWx0YVk%252BMD8tMToxOy8vIC0xIGZvciB6b29tIG91dCwgMSBmb3Igem9vbSBpblxuY3VycmVudFpvb20rPS4wNSp6b29tRGlyZWN0aW9uLFxuLy8gRW5zdXJlIGN1cnJlbnRab29tIGlzIHdpdGhpbiB0aGUgZGVmaW5lZCByYW5nZVxuY3VycmVudFpvb209TWF0aC5tYXgoTUlOX1pPT00sTWF0aC5taW4oTUFYX1pPT00sY3VycmVudFpvb20pKTtjb25zdCB6b29tV2lkdGg9d2luZG93LmlubmVyV2lkdGgqY3VycmVudFpvb20sem9vbUhlaWdodD13aW5kb3cuaW5uZXJIZWlnaHQqY3VycmVudFpvb20sbGVmdD1tb3VzZVgtem9vbVdpZHRoLzIsdG9wPW1vdXNlWS16b29tSGVpZ2h0LzIsYm91bmRpbmdCb3g9bmV3IFBTUERGS2l0Lkdlb21ldHJ5LlJlY3Qoe2xlZnQ6bGVmdCx0b3A6dG9wLHdpZHRoOnpvb21XaWR0aCxoZWlnaHQ6em9vbUhlaWdodH0pO2NvbnNvbGUubG9nKCdjdXJyZW50IFpvb206ICcrY3VycmVudFpvb20pLFxuLy8gVXBkYXRlIHRoZSB6b29tIGxldmVsIGluIHRoZSB2aWV3U3RhdGVcbmluc3RhbmNlLnNldFZpZXdTdGF0ZSgoc3RhdGU9PnN0YXRlLnNldCgnem9vbScsY3VycmVudFpvb20pKSksXG4vLyBJbnZva2UganVtcEFuZFpvb21Ub1JlY3Rcbmluc3RhbmNlLmp1bXBBbmRab29tVG9SZWN0KGluc3RhbmNlLnZpZXdTdGF0ZS5jdXJyZW50UGFnZUluZGV4LGJvdW5kaW5nQm94KSxcbi8vIFByZXZlbnQgZGVmYXVsdCB3aGVlbCBiZWhhdmlvclxuZXZlbnQucHJldmVudERlZmF1bHQoKX0pLHtwYXNzaXZlOiExfSl9KSk7In0%253D)
- [Create a blank document of size A3](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiJ9LCJqcyI6ImNvbnN0IHsgZG9jdW1lbnQ6IGRvY3VtZW50LCAuLi5yZXN0IH0gPSBiYXNlT3B0aW9ucyxcbiAgUERGc3R1YiA9IGAlUERGLTEuMFxuMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4%252BZW5kb2JqXG4yIDAgb2JqPDwvVHlwZS9QYWdlcy9LaWRzWzMgMCBSIDQgMCBSIDUgMCBSIDYgMCBSIDcgMCBSXS9Db3VudCA1Pj5lbmRvYmpcbjMgMCBvYmo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL01lZGlhQm94WzAgMCA4NDEuODkgMTE5MC41NV0%252BPmVuZG9ialxuNCAwIG9iajw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvTWVkaWFCb3hbMCAwIDg0MS44OSAxMTkwLjU1XT4%252BZW5kb2JqXG41IDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgODQxLjg5IDExOTAuNTVdPj5lbmRvYmpcbjYgMCBvYmo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL01lZGlhQm94WzAgMCA4NDEuODkgMTE5MC41NV0%252BPmVuZG9ialxuNyAwIG9iajw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvTWVkaWFCb3hbMCAwIDg0MS44OSAxMTkwLjU1XT4%252BZW5kb2JqXG54cmVmXG4wIDhcbjAwMDAwMDAwMDAgNjU1MzUgZlxuMDAwMDAwMDAxMCAwMDAwMCBuXG4wMDAwMDAwMDUzIDAwMDAwIG5cbjAwMDAwMDAxMDIgMDAwMDAgblxuMDAwMDAwMDE1MSAwMDAwMCBuXG4wMDAwMDAwMjAwIDAwMDAwIG5cbjAwMDAwMDAyNDkgMDAwMDAgblxuMDAwMDAwMDI5OCAwMDAwMCBuXG50cmFpbGVyPDwvU2l6ZSA4L1Jvb3QgMSAwIFI%252BPlxuc3RhcnR4cmVmXG4zNDdcbiVFT0ZcbmAsXG4gIHVpbnQ4YXJyYXkgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoUERGc3R1Yik7XG5QU1BERktpdC5sb2FkKHtcbiAgLi4ucmVzdCxcbiAgdGhlbWU6IFBTUERGS2l0LlRoZW1lLkRBUkssXG4gIGRvY3VtZW50OiB1aW50OGFycmF5LmJ1ZmZlcixcbn0pLnRoZW4oKGluc3RhbmNlKSA9PiB7XG4gIGNvbnNvbGUubG9nKFwiTnV0cmllbnQgbG9hZGVkISBieSBOYXJhc2hpbWFuXCIpO1xufSk7XG4iLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIn0%253D)
- [Load document from S3 bucket as URL and allow Linearized Document](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiJ9LCJqcyI6IlBTUERGS2l0LmxvYWQoe1xuICAuLi5iYXNlT3B0aW9ucyxcbiAgdGhlbWU6IFBTUERGS2l0LlRoZW1lLkRBUkssXG4gIGRvY3VtZW50OlxuICAgIFwiaHR0cHM6Ly9wdWJsaWMtc29sdXRpb25zLWVuZ2luZWVyaW5nLWJ1Y2tldC5zMy5ldS1jZW50cmFsLTEuYW1hem9uYXdzLmNvbS9kb2NzL0xpbmVhcml6ZWQtaU9TLVF1aWNrU3RhcnQtR3VpZGVzLnBkZlwiLFxuICBhbGxvd0xpbmVhcml6ZWRMb2FkaW5nOiB0cnVlLFxufSkudGhlbigoaW5zdGFuY2UpID0%252BIHtcbiAgY29uc29sZS5sb2coXCJOdXRyaWVudCBsb2FkZWQhIGJ5IE5hcmFzaGltYW5cIik7XG59KTtcbiIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG5cdCJ9)
- [Using custom button on toolbar add blank page to the begining of the document](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImZvcm0ucGRmIn0sImpzIjoiUFNQREZLaXQubG9hZCh7XG4gIC4uLmJhc2VPcHRpb25zLFxuICB0aGVtZTogUFNQREZLaXQuVGhlbWUuREFSSyxcbiAgaXNBUFN0cmVhbVJlbmRlcmVkOiAoKSA9PiBmYWxzZSxcbn0pLnRoZW4oKGluc3RhbmNlKSA9PiB7XG4gIGNvbnN0IGl0ZW0gPSB7XG4gICAgdHlwZTogXCJjdXN0b21cIixcbiAgICBpZDogXCJteS1idXR0b25cIixcbiAgICB0aXRsZTogXCJBZGQtUGFnZVwiLFxuICAgIG9uUHJlc3M6IGFzeW5jIChldmVudCkgPT4ge1xuICAgICAgY29uc3QgUERGc3R1YiA9XG4gICAgICAgICAgXCIlUERGLTEuMFxcbjEgMCBvYmo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFI%252BPmVuZG9iaiAyIDAgb2JqPDwvVHlwZS9QYWdlcy9LaWRzWzMgMCBSXS9Db3VudCAxPj5lbmRvYmogMyAwIG9iajw8L1R5cGUvUGFnZS9NZWRpYUJveFswIDAgNzUwIDEwMDBdPj5lbmRvYmpcXG54cmVmXFxuMCA0XFxuMDAwMDAwMDAwMCA2NTUzNSBmXFxuMDAwMDAwMDAxMCAwMDAwMCBuXFxuMDAwMDAwMDA1MyAwMDAwMCBuXFxuMDAwMDAwMDEwMiAwMDAwMCBuXFxudHJhaWxlcjw8L1NpemUgNC9Sb290IDEgMCBSPj5cXG5zdGFydHhyZWZcXG4xNDlcXG4lRU9GXCIsXG4gICAgICAgIHVpbnQ4YXJyYXkgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoUERGc3R1Yik7XG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3VpbnQ4YXJyYXkuYnVmZmVyXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL3BkZlwiIH0pO1xuICAgICAgYXdhaXQgaW5zdGFuY2UuYXBwbHlPcGVyYXRpb25zKFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZm9yZVBhZ2VJbmRleDogMCxcbiAgICAgICAgICBkb2N1bWVudDogYmxvYixcbiAgICAgICAgICB0cmVhdEltcG9ydGVkRG9jdW1lbnRBc09uZVBhZ2U6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6IFwiaW1wb3J0RG9jdW1lbnRcIixcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgIH0sXG4gIH07XG4gIGluc3RhbmNlLnNldFRvb2xiYXJJdGVtcyhbXG4gICAgaXRlbSxcbiAgICB7XG4gICAgICB0eXBlOiBcImZvcm0tY3JlYXRvclwiLFxuICAgIH0sXG4gIF0pO1xuICBjb25zb2xlLmxvZyhcIk51dHJpZW50IExvYWRlZCEgYnkgTmFyYXNoaW1hblwiKTtcbn0pO1xuIiwibW9kZSI6InN0YW5kYWxvbmUiLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIn0%253D)
- [Export Selected Pages in Document Editor](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tSnNFMWRTck9xTCIsImxheWVyIjoicmFuZG9tNTNzeVJEQ3gyQiJ9fSwianMiOiJjb25zdCBjdXN0b21JdGVtPXt0eXBlOidjdXN0b20nLGlkOidFeHBvcnRQREYnLHRpdGxlOidFeHBvcnQgU2VsZWN0ZWQgUGFnZXMnLG9uUHJlc3M6ZXZlbnQ9Pntcbi8vIEdldCB0aGUgcGFnZUlkcyBvZiB0aGUgcGFnZSBzZWxlY3RlZCBpbiB0aGUgRG9jdW1lbnQgRWRpdG9yXG5sZXQgc2VsZWN0ZWRQYWdlcz13aW5kb3cuaW5zdGFuY2UuY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5QU1BERktpdC1Eb2N1bWVudEVkaXRvci1UaHVtYm5haWxzLVBhZ2UtU2VsZWN0ZWQnKSxwYWdlc1RvRXhwb3J0PUFycmF5LmZyb20oc2VsZWN0ZWRQYWdlcykubWFwKChwYWdlPT5wYWdlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1pZCcpKSkubWFwKE51bWJlcikuc29ydCgoKGEsYik9PmEtYikpO1xuLy8gR2V0IHRoZSBkb2N1bWVudCBhcyBhIFBERiBBcnJheUJ1ZmZlci5cbmNvbnN0IG9wZXJhdGlvbnM9W3t0eXBlOidrZWVwUGFnZXMnLHBhZ2VJbmRleGVzOnBhZ2VzVG9FeHBvcnR9XTt3aW5kb3cuaW5zdGFuY2UuZXhwb3J0UERGV2l0aE9wZXJhdGlvbnMob3BlcmF0aW9ucykudGhlbigocGRmQXJyYXlCdWZmZXI9Pntcbi8vIFlvdSBjYW4gdGhlbiBzZW5kIHRoaXMgQXJyYXlCdWZmZXIgdG8geW91ciBzZXJ2ZXIsIHNhdmUgaXQsIG9yIHR1cm4gaXQgaW50byBhIEJsb2IgdG8gZG93bmxvYWQuXG5jb25zdCBibG9iPW5ldyBCbG9iKFtwZGZBcnJheUJ1ZmZlcl0se3R5cGU6J2FwcGxpY2F0aW9uL3BkZid9KSx1cmw9VVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSxsaW5rPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtsaW5rLmhyZWY9dXJsLGxpbmsuZG93bmxvYWQ9J2V4cG9ydGVkLnBkZicsbGluay5jbGljaygpLFxuLy8gUmVtZW1iZXIgdG8gcmV2b2tlIHRoZSBVUkwgdG8gYXZvaWQgbWVtb3J5IGxlYWtzLlxuc2V0VGltZW91dCgoKCk9PlVSTC5yZXZva2VPYmplY3RVUkwodXJsKSksMTAwKX0pKSxjb25zb2xlLmxvZygnc2VsZWN0ZWQgcGFnZXMnKSxjb25zb2xlLmxvZyhwYWdlc1RvRXhwb3J0KX19LGRlZmF1bHRUb29sYmFySXRlbXM9UFNQREZLaXQuZGVmYXVsdERvY3VtZW50RWRpdG9yVG9vbGJhckl0ZW1zO1xuLy8gR2V0IHRoZSBkZWZhdWx0IHRvb2xiYXIgaXRlbXMuXG4vLyBBZGQgYSBjdXN0b20gaXRlbSB0byB0aGUgbGlzdC5cbmRlZmF1bHRUb29sYmFySXRlbXMucHVzaChjdXN0b21JdGVtKSxQU1BERktpdC5sb2FkKHsuLi5iYXNlT3B0aW9ucyxkb2N1bWVudEVkaXRvclRvb2xiYXJJdGVtczpkZWZhdWx0VG9vbGJhckl0ZW1zfSkudGhlbigoaW5zdGFuY2U9Pnt3aW5kb3cuaW5zdGFuY2U9aW5zdGFuY2V9KSk7IiwibW9kZSI6InN0YW5kYWxvbmUiLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuXHQifQ%253D%253D)
- [Regular Expression (Regex) Search](https://nutrient.io/playground?p=eyJ2IjoxLCJqcyI6ImNvbnN0IGl0ZW09e3R5cGU6J2N1c3RvbScsaWQ6J215LWJ1dHRvbicsdGl0bGU6J015IEJ1dHRvbicsb25QcmVzczpldmVudD0%252Be2FsZXJ0KCdoZWxsbyBmcm9tIG15IGJ1dHRvbicpfX07dmFyIGluc3RhbmNlR2xvYmFsO1BTUERGS2l0LmxvYWQoey4uLmJhc2VPcHRpb25zfSkudGhlbigoaW5zdGFuY2U9PntsZXQgbGFzdFNlYXJjaFRlcm09Jyc7aW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcignc2VhcmNoLnRlcm1DaGFuZ2UnLChhc3luYyBldmVudD0%252Be1xuLy8gT3B0IG91dCBmcm9tIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLlxuZXZlbnQucHJldmVudERlZmF1bHQoKTtjb25zdHt0ZXJtOnRlcm19PWV2ZW50O1xuLy8gVXBkYXRlIHRoZSBzZWFyY2ggdGVybSBpbiB0aGUgc2VhcmNoIGJveC4gV2l0aG91dCB0aGlzIGxpbmUsXG4vLyB0aGUgc2VhcmNoIGJveCB3b3VsZCBzdGF5IGVtcHR5LlxuaW5zdGFuY2Uuc2V0U2VhcmNoU3RhdGUoKHN0YXRlPT5zdGF0ZS5zZXQoJ3Rlcm0nLHRlcm0pKSksbGFzdFNlYXJjaFRlcm09dGVybTtcbi8vIFBlcmZvcm0gYSBjdXN0b20gc2VhcmNoIGZvciB0aGUgdGVybS5cbmNvbnN0IHJlc3VsdHM9YXdhaXQgYXN5bmMgZnVuY3Rpb24odGVybSxpbnN0YW5jZSl7cmV0dXJuIGluc3RhbmNlLnNlYXJjaCh0ZXJtLHtzZWFyY2hUeXBlOlBTUERGS2l0LlNlYXJjaFR5cGUuUkVHRVh9KX0odGVybSxpbnN0YW5jZSk7XG4vLyBPdXIgcmVzdWx0cyBjb3VsZCByZXR1cm4gaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiBleHBlY3RlZC5cbi8vIExldCdzIG1ha2Ugc3VyZSBvbmx5IHJlc3VsdHMgbWF0Y2hpbmcgb3VyIGN1cnJlbnQgdGVybSBhcmUgYXBwbGllZC5cbmlmKHRlcm0hPT1sYXN0U2VhcmNoVGVybSlyZXR1cm47XG4vLyBGaW5hbGx5LCB3ZSBhcHBseSB0aGUgcmVzdWx0cy4gTm90ZSB0aGF0IHlvdSBjYW4gYWxzbyBtb2RpZnlcbi8vIHRoZSBzZWFyY2ggc3RhdGUgZmlyc3QgYW5kIHRoZW4gcGFzcyB0aGUgbmV3IHN0YXRlXG4vLyB0byBgaW5zdGFuY2Uuc2V0U2VhcmNoU3RhdGVgLlxuY29uc3QgbmV3U3RhdGU9aW5zdGFuY2Uuc2VhcmNoU3RhdGUuc2V0KCdyZXN1bHRzJyxyZXN1bHRzKTtpbnN0YW5jZS5zZXRTZWFyY2hTdGF0ZShuZXdTdGF0ZSl9KSl9KSk7In0%253D)
- [Print Single Page](https://nutrient.io/playground?p=eyJ2IjoxLCJqcyI6ImNvbnN0IGl0ZW09e3R5cGU6J2N1c3RvbScsaWQ6J215LWJ1dHRvbicsdGl0bGU6J015IEJ1dHRvbicsb25QcmVzczpldmVudD0%252Be2FsZXJ0KCdoZWxsbyBmcm9tIG15IGJ1dHRvbicpfX07dmFyIGluc3RhbmNlR2xvYmFsO1BTUERGS2l0LmxvYWQoey4uLmJhc2VPcHRpb25zLHRoZW1lOlBTUERGS2l0LlRoZW1lLkRBUkssdG9vbGJhckl0ZW1zOlBTUERGS2l0LmRlZmF1bHRUb29sYmFySXRlbXMucmVkdWNlKCgoYWNjLGl0ZW0pPT4nZXhwb3J0LXBkZic9PT1pdGVtLnR5cGU%252FYWNjLmNvbmNhdChbaXRlbSx7dHlwZTonY3VzdG9tJyxpZDonUHJpbnQnLHJlc3BvbnNpdmVHcm91cDonYW5ub3RhdGUnLFxuLy9pY29uOiBcImh0dHBzOi8vc3Znc2hhcmUuY29tL2kvcTB0LnN2Z1wiLFxuc2VsZWN0ZWQ6ITEsb25QcmVzcygpe2NvbnNvbGUubG9nKCdQcmludCcpLGNvbnNvbGUubG9nKCdjdXJyZW50IHBhZ2UgJyxpbnN0YW5jZUdsb2JhbC52aWV3U3RhdGUuY3VycmVudFBhZ2VJbmRleCk7Y29uc3Qgb3BlcmF0aW9ucz1be3R5cGU6J2tlZXBQYWdlcycscGFnZUluZGV4ZXM6W2luc3RhbmNlR2xvYmFsLnZpZXdTdGF0ZS5jdXJyZW50UGFnZUluZGV4XX1dO2luc3RhbmNlR2xvYmFsLmV4cG9ydFBERldpdGhPcGVyYXRpb25zKG9wZXJhdGlvbnMpLnRoZW4oKGZ1bmN0aW9uKGJ1ZmZlcil7XG4vL2J1ZmZlcjsgLy8gPT4gQXJyYXlCdWZmZXJcbmNvbnNvbGUubG9nKGJ1ZmZlcik7XG4vLyBDb252ZXJ0IGJ1ZmZlciBpbnRvIGEgQmxvYlxuY29uc3QgYmxvYj1uZXcgQmxvYihbYnVmZmVyXSx7dHlwZTonYXBwbGljYXRpb24vcGRmJ30pLG9iamVjdFVSTD1VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuLy8gQ3JlYXRlIG9iamVjdCBVUkxcbi8vIENvbnZlcnQgdGhlIFBERiBCbG9iIHRvIGEgZGF0YSBVUkxcbihcbi8vIERlZmluZSB0aGUgYmxvYlRvRGF0YVVSTCBmdW5jdGlvblxuZnVuY3Rpb24oYmxvYil7cmV0dXJuIG5ldyBQcm9taXNlKCgocmVzb2x2ZSxyZWplY3QpPT57Y29uc3QgcmVhZGVyPW5ldyBGaWxlUmVhZGVyO3JlYWRlci5vbmxvYWRlbmQ9KCk9PnJlc29sdmUocmVhZGVyLnJlc3VsdCkscmVhZGVyLm9uZXJyb3I9cmVqZWN0LHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpfSkpfSkoYmxvYikudGhlbigoZGF0YVVSTD0%252Be1xuLy8gTG9hZCB0aGUgUERGIGRhdGEgVVJMIGludG8gdGhlIGlmcmFtZVxuY29uc29sZS5sb2coJ25vdyBwcmludGluZycpLGNvbnNvbGUubG9nKGRvY3VtZW50KTtcbi8vIENyZWF0ZSBhbiBpZnJhbWUgYW5kIGFkZCBpdCB0byB0aGUgRE9NXG5jb25zdCBwZGZGcmFtZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtwZGZGcmFtZS5pZD0ncGRmLWZyYW1lJyxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBkZkZyYW1lKSxcbi8vIExvYWQgdGhlIFBERiBkYXRhIFVSTCBpbnRvIHRoZSBpZnJhbWVcbnBkZkZyYW1lLnNyYz1vYmplY3RVUkwsXG4vLyBXYWl0IHVudGlsIHRoZSBpZnJhbWUgaGFzIGxvYWRlZCBpdHMgY29udGVudCBiZWZvcmUgcHJpbnRpbmdcbnBkZkZyYW1lLm9ubG9hZD1mdW5jdGlvbigpe3BkZkZyYW1lLmNvbnRlbnRXaW5kb3cucHJpbnQoKX19KSl9KSl9LHRpdGxlOidQcmludCBzaW5nbGUgcGFnZSd9XSk6YWNjLmNvbmNhdChbaXRlbV0pKSxbXSl9KS50aGVuKChpbnN0YW5jZT0%252Be2luc3RhbmNlR2xvYmFsPWluc3RhbmNlLGNvbnNvbGUubG9nKCdQU1BERktpdCBsb2FkZWQhJyksY29uc29sZS5sb2coJ0FQSSBkb2NzOiBodHRwczovL3BzcGRma2l0LmNvbS9hcGkvd2ViLycpLGNvbnNvbGUubG9nKCdHdWlkZXM6IGh0dHBzOi8vcHNwZGZraXQuY29tL2d1aWRlcy93ZWIvJyl9KSk7IiwibW9kZSI6InN0YW5kYWxvbmUiLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tR0pXMEFya2V3dSIsImxheWVyIjoicmFuZG9tS1lDOFQ5b2lrciJ9fX0%253D).
- [Restrict Zoom Level Both Ways](https://nutrient.io/playground?p=eyJ2IjoxLCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuXHQiLCJqcyI6IlBTUERGS2l0LmxvYWQoey4uLmJhc2VPcHRpb25zLHRoZW1lOlBTUERGS2l0LlRoZW1lLkRBUkt9KS50aGVuKChpbnN0YW5jZT0%252Be2NvbnNvbGUubG9nKCdpbml0aWFsIHpvb206ICcsaW5zdGFuY2UuY3VycmVudFpvb21MZXZlbCksaW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcigndmlld1N0YXRlLmNoYW5nZScsKChjdXJyZW50LHByZXZpb3VzKT0%252Be2N1cnJlbnQ%252FLnpvb208PTE%252FKGluc3RhbmNlLnNldFRvb2xiYXJJdGVtcygoaXRlbXM9Pml0ZW1zLm1hcCgoaXRlbT0%252BKCd6b29tLW91dCc9PWl0ZW0udHlwZSYmKGl0ZW0uZGlzYWJsZWQ9ITApLGl0ZW0pKSkpKSxpbnN0YW5jZS5zZXRWaWV3U3RhdGUoKHZpZXdTdGF0ZT0%252Bdmlld1N0YXRlLnNldCgnem9vbScsMSkpKSk6aW5zdGFuY2Uuc2V0VG9vbGJhckl0ZW1zKChpdGVtcz0%252BaXRlbXMubWFwKChpdGVtPT4oJ3pvb20tb3V0Jz09aXRlbS50eXBlJiYoaXRlbS5kaXNhYmxlZD0hMSksaXRlbSkpKSkpfSkpfSkpOyIsInNldHRpbmdzIjp7ImZpbGVOYW1lIjoiYmFzaWMucGRmIiwiand0Ijp7InBlcm1pc3Npb25zIjpbInJlYWQtZG9jdW1lbnQiLCJ3cml0ZSJdLCJ1c2VySWQiOiJyYW5kb21wd2kwM3RHZGxZIiwibGF5ZXIiOiJyYW5kb205Sms3YzJMMEpzIn19LCJtb2RlIjoic3RhbmRhbG9uZSJ9)
- [Extract Text From Cropped PDF Pages](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6InNjaWVudGlmaWMucGRmIiwiand0Ijp7InBlcm1pc3Npb25zIjpbInJlYWQtZG9jdW1lbnQiLCJ3cml0ZSJdLCJ1c2VySWQiOiJyYW5kb21WRGg3ZVVBRWFBIiwibGF5ZXIiOiJyYW5kb21LZGV1a0FhZkJMIn19LCJqcyI6IlBTUERGS2l0Lk9wdGlvbnMuSUdOT1JFX0RPQ1VNRU5UX1BFUk1JU1NJT05TPSEwLFBTUERGS2l0LmxvYWQoey4uLmJhc2VPcHRpb25zLHRoZW1lOlBTUERGS2l0LlRoZW1lLkRBUkt9KS50aGVuKChpbnN0YW5jZT0%252Be1xuLy9WYXJpYWJsZXMgdG8gc2F2ZSB0aGUgY3JvcCBhcmVhIFJlY3QsIGFuZCB0aGUgcGFnZSBpbmRleCBmcm9tIHdoZXJlIGl0IHdhcyB0YWtlblxubGV0IGNyb3BBcmVhLGNyb3BQYWdlSW5kZXgsaXRlbT17aWQ6J215LWJ1dHRvbicsdGl0bGU6J2Nyb3AgcGFnZXMnLHR5cGU6J2N1c3RvbScsb25QcmVzczphc3luYyBldmVudD0%252Be2F3YWl0IGluc3RhbmNlLmV4cG9ydFBERldpdGhPcGVyYXRpb25zKFt7dHlwZTonY3JvcFBhZ2VzJyxwYWdlSW5kZXhlczpjcm9wUGFnZUluZGV4LC8vSSdtIHBhc3NpbmcgdGhlIHBhZ2UgaW5kZXggd2hlcmUgSSdtIGFwcGx5aW5nIHRoZSBjcm9wXG5jcm9wQm94OmNyb3BBcmVhfV0pLnRoZW4oKHRpdGxlQXJyQnVmPT57Y29uc29sZS50aW1lKCksUFNQREZLaXQubG9hZCh7Li4uYmFzZU9wdGlvbnMsZG9jdW1lbnQ6dGl0bGVBcnJCdWYsaGVhZGxlc3M6ITB9KS50aGVuKChhc3luYyB0eHRJbnN0YW5jZT0%252Be1xuLy9JIGFtIGFsc28gcGFzc2luZyB0aGlzIHBhZ2VJbmRleCBoZXJlIHRvIGVuc3VyZSBJIGdldCB0aGUgdGV4dCBmcm9tIHRoZSBjcm9wcGVkIHRleHRcbmNvbnN0IHRleHQ9KGF3YWl0IHR4dEluc3RhbmNlLnRleHRMaW5lc0ZvclBhZ2VJbmRleChjcm9wUGFnZUluZGV4KSkubWFwKChlPT5lLmNvbnRlbnRzKSkuam9pbignJyk7Y29uc29sZS5sb2codGV4dCksUFNQREZLaXQudW5sb2FkKHR4dEluc3RhbmNlKX0pKX0pKX19O1xuLy9NeSBjdXN0b20gdG9vbCB0byBhcHBseSB0aGUgb3BlcmF0aW9uIG9uIGNsaWNrXG4vL0hlcmUgSSBzZXQgdGhlIGN1c3RvbSB0b29sYmFyIGl0ZW1cbmluc3RhbmNlLnNldFRvb2xiYXJJdGVtcyhbe3R5cGU6J2RvY3VtZW50LWNyb3AnfSx7dHlwZTonem9vbS1vdXQnfSx7dHlwZTonem9vbS1pbid9LGl0ZW1dKSxcbi8vVGhlIGV2ZW50IGxpc3RlbmVyIHRvIGdldCB0aGUgY3JvcGJveCBhbmQgcGFnZWluZGV4IHZhbHVlc1xuaW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcignY3JvcEFyZWEuY2hhbmdlU3RvcCcsKGNyb3A9Pntjb25zdHtjcm9wQm94OmNyb3BCb3gscGFnZUluZGV4OnBhZ2VJbmRleH09Y3JvcDtjcm9wQXJlYT1jcm9wQm94LGNyb3BQYWdlSW5kZXg9cGFnZUluZGV4fSkpfSkpOyIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG4iLCJtb2RlIjoic3RhbmRhbG9uZSJ9)
- [Execute Operations in Headless Mode Before Loading the Document in the Viewer](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6InNjaWVudGlmaWMucGRmIiwiand0Ijp7InBlcm1pc3Npb25zIjpbInJlYWQtZG9jdW1lbnQiLCJ3cml0ZSJdLCJ1c2VySWQiOiJyYW5kb21sRTFRdTBjN2NUIiwibGF5ZXIiOiJyYW5kb21rUWdTNGo4SnJIIn19LCJjc3MiOiIvKiBBZGQgeW91ciBDU1MgaGVyZSAqL1xuIiwianMiOiJQU1BERktpdC5sb2FkKHsuLi5iYXNlT3B0aW9ucyx0aGVtZTpQU1BERktpdC5UaGVtZS5EQVJLLGhlYWRsZXNzOiEwfSkudGhlbigoYXN5bmMgaW5zdGFuY2U9Pntcbi8vQ29udmVydGluZyB0aGUgdG90YWwgcGFnZSBjb3VudCB0byBhbiBhcnJheSB0aGF0IEknbGwgbGF0ZXIgdXNlIHRvIHNwbGl0IHRoZSBmaWxlIGluIGhhbGZcbmNvbnN0IHBhZ2VJbmRleGVzPUFycmF5LmZyb20oe2xlbmd0aDppbnN0YW5jZS50b3RhbFBhZ2VDb3VudH0sKChfLGkpPT5pKSksZmlyc3RIYWxmPXBhZ2VJbmRleGVzLnNsaWNlKDAsTWF0aC5jZWlsKHBhZ2VJbmRleGVzLmxlbmd0aC8yKSksc2Vjb25kSGFsZj1wYWdlSW5kZXhlcy5zbGljZShNYXRoLmNlaWwocGFnZUluZGV4ZXMubGVuZ3RoLzIpKSxmaWxlQT1hd2FpdCBpbnN0YW5jZS5leHBvcnRQREZXaXRoT3BlcmF0aW9ucyhbe3R5cGU6J3JlbW92ZVBhZ2VzJyxwYWdlSW5kZXhlczpzZWNvbmRIYWxmfSxcbi8qIHtcbiAgICAgICAgdHlwZTogXCJwZXJmb3JtT2NyXCIsXG4gICAgICAgIHBhZ2VJbmRleGVzOiBmaXJzdEhhbGYsXG4gICAgICAgIGxhbmd1YWdlOiBcImVuZ2xpc2hcIixcbiAgICAgIH0sKi9cbi8vQWRkaW5nIGFuIEFubm90YXRpb24gdG8gdGhlIGZpcnN0IGhhbGYgdG8gc2hvdyB0aGF0IHRoZSBwcm9jZXNzZWQgZmlsZSBpcyB0aGUgb25lIGJlaW5nIGxvYWRlZFxue3R5cGU6J2FwcGx5SW5zdGFudEpzb24nLGluc3RhbnRKc29uOnthbm5vdGF0aW9uczpbe2Jib3g6WzEwMCwxNTAsMjAwLDc1XSxibGVuZE1vZGU6J25vcm1hbCcsY3JlYXRlZEF0OicxOTcwLTAxLTAxVDAwOjAwOjAwWicsaWQ6JzAxRjczR0o0UlBFTlRDTUZTQ0o1Q1NGVDVHJyxuYW1lOicwMUY3M0dKNFJQRU5UQ01GU0NKNUNTRlQ1Rycsb3BhY2l0eToxLHBhZ2VJbmRleDowLHN0cm9rZUNvbG9yOicjMjI5M0ZCJyxzdHJva2VXaWR0aDo1LHR5cGU6J3BzcGRma2l0L3NoYXBlL3JlY3RhbmdsZScsdXBkYXRlZEF0OicxOTcwLTAxLTAxVDAwOjAwOjAwWicsdjoxfV0sZm9ybWF0OidodHRwczovL3BzcGRma2l0LmNvbS9pbnN0YW50LWpzb24vdjEnfX1dKS50aGVuKChmaWxlPT5uZXcgQmxvYihbZmlsZV0se3R5cGU6J2FwcGxpY2F0aW9uL3BkZid9KSkpLGZpbGVCPWF3YWl0IGluc3RhbmNlLmV4cG9ydFBERldpdGhPcGVyYXRpb25zKFt7dHlwZToncmVtb3ZlUGFnZXMnLHBhZ2VJbmRleGVzOmZpcnN0SGFsZn1dKS50aGVuKChmaWxlPT5uZXcgQmxvYihbZmlsZV0se3R5cGU6J2FwcGxpY2F0aW9uL3BkZid9KSkpO2luc3RhbmNlLmV4cG9ydFBERldpdGhPcGVyYXRpb25zKFtcbi8vVGhlIG9yZGVyIG9mIHRoZSBvcGVyYXRpb25zIG1hdHRlcnNcbnt0eXBlOidpbXBvcnREb2N1bWVudCcsYmVmb3JlUGFnZUluZGV4Omluc3RhbmNlLnRvdGFsUGFnZUNvdW50LHRyZWF0SW1wb3J0ZWREb2N1bWVudEFzT25lUGFnZTohMSxkb2N1bWVudDpmaWxlQn0se3R5cGU6J2ltcG9ydERvY3VtZW50JyxiZWZvcmVQYWdlSW5kZXg6aW5zdGFuY2UudG90YWxQYWdlQ291bnQsdHJlYXRJbXBvcnRlZERvY3VtZW50QXNPbmVQYWdlOiExLGRvY3VtZW50OmZpbGVBfSx7dHlwZToncmVtb3ZlUGFnZXMnLHBhZ2VJbmRleGVzOnBhZ2VJbmRleGVzfV0pLnRoZW4oKHJlcz0%252Be2NvbnN0e2RvY3VtZW50OmRvY3VtZW50LC4uLnJlc3R9PWJhc2VPcHRpb25zO1xuLy9VbmxvYWRpbmcgdGhlIGhlYWRsZXNzIGluc3RhbmNlIHRvIGVuaGFuY2UgcGVyZm9ybWFjZVxuLy9JZiB5b3UnZCBsaWtlIHRvIG5vdGljZSB0aGUgZGlmZmVyZW50IGNvbW1lbnQgb3V0IHRoZSB1bmxvYWRcblBTUERGS2l0LnVubG9hZChpbnN0YW5jZSksXG4vL0xvYWRpbmcgdGhlIHJlc3VsdGluZyBQREZcblBTUERGS2l0LmxvYWQoey4uLnJlc3QsZG9jdW1lbnQ6cmVzLHRoZW1lOlBTUERGS2l0LlRoZW1lLkRBUkt9KX0pKX0pKTsiLCJtb2RlIjoic3RhbmRhbG9uZSJ9)
- [Save Selected Page From Document Editor](https://www.nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6InNjaWVudGlmaWMucGRmIn0sImpzIjoiLy8gTG9hZCBQU1BERktpdCB3aXRoIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zXG5QU1BERktpdC5sb2FkKHtcbiAgLi4uYmFzZU9wdGlvbnMsIC8vIFNwcmVhZCB0aGUgYmFzZSBvcHRpb25zIHRvIHJldGFpbiBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zXG4gIHRoZW1lOiBQU1BERktpdC5UaGVtZS5EQVJLLCAvLyBTZXQgdGhlbWUgdG8gZGFyayBtb2RlIGZvciBiZXR0ZXIgdXNlciBleHBlcmllbmNlXG59KS50aGVuKChpbnN0YW5jZSkgPT4ge1xuICAvLyBTZXQgdGhlIGludGVyYWN0aW9uIG1vZGUgdG8gRE9DVU1FTlRfRURJVE9SXG4gIGluc3RhbmNlLnNldFZpZXdTdGF0ZSgoc3RhdGUpID0%252BXG4gICAgc3RhdGUuc2V0KFwiaW50ZXJhY3Rpb25Nb2RlXCIsIFwiRE9DVU1FTlRfRURJVE9SXCIpXG4gICk7XG5cbiAgLy8gRGVmaW5lIGEgY3VzdG9tIHRvb2xiYXIgaXRlbSBmb3IgZXhwb3J0aW5nIHNlbGVjdGVkIHBhZ2VzXG4gIGNvbnN0IGN1c3RvbVRvb2xiYXJJdGVtID0ge1xuICAgIHR5cGU6IFwiY3VzdG9tXCIsIC8vIERlZmluZSBhcyBhIGN1c3RvbSB0b29sYmFyIGl0ZW1cbiAgICBpZDogXCJjdXN0b20tc2F2ZS1hc1wiLCAvLyBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHRvb2xiYXIgaXRlbVxuICAgIHRpdGxlOiBcIk15IEV4dHJhY3QgUGFnZXNcIiwgLy8gRGlzcGxheSB0aXRsZSBmb3IgdGhlIHRvb2xiYXIgaXRlbVxuICAgIGNsYXNzTmFtZTogXCJjdXN0b20tdG9vbGJhci1pdGVtXCIsIC8vIENTUyBjbGFzcyBmb3Igc3R5bGluZ1xuICAgIGljb246IFwiXCIsIC8vIFBsYWNlaG9sZGVyIGZvciBhbiBpY29uIChjYW4gYmUgY3VzdG9taXplZCBsYXRlcilcblxuICAgIC8vIEZ1bmN0aW9uIHRyaWdnZXJlZCB3aGVuIHRoZSB0b29sYmFyIGl0ZW0gaXMgY2xpY2tlZFxuICAgIG9uUHJlc3M6IGFzeW5jIChcbiAgICAgIGV2ZW50LFxuICAgICAge1xuICAgICAgICBzZXRPcGVyYXRpb25zOiBzZXRPcGVyYXRpb25zLCAvLyBGdW5jdGlvbiB0byBzZXQgb3BlcmF0aW9ucyBvbiBkb2N1bWVudFxuICAgICAgICBnZXRTZWxlY3RlZFBhZ2VJbmRleGVzOiBnZXRTZWxlY3RlZFBhZ2VJbmRleGVzLCAvLyBGdW5jdGlvbiB0byBnZXQgc2VsZWN0ZWQgcGFnZXNcbiAgICAgIH1cbiAgICApID0%252BIHtcbiAgICAgIC8vIEdldCBpbmRpY2VzIG9mIHNlbGVjdGVkIHBhZ2VzXG4gICAgICBjb25zdCBzZWxlY3RlZFBhZ2VzSW5kZXggPSBnZXRTZWxlY3RlZFBhZ2VJbmRleGVzKCk7XG4gICAgICBpZiAoc2VsZWN0ZWRQYWdlc0luZGV4Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiTm8gcGFnZXMgc2VsZWN0ZWRcIik7IC8vIExvZyBhbiBlcnJvciBpZiBubyBwYWdlcyBhcmUgc2VsZWN0ZWRcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coXCJTZWxlY3RlZCBwYWdlcyBpbmRpY2VzOiBcIiwgc2VsZWN0ZWRQYWdlc0luZGV4KTsgLy8gTG9nIHNlbGVjdGVkIHBhZ2UgaW5kZXhlc1xuXG4gICAgICAvLyBFeHBvcnQgdGhlIHNlbGVjdGVkIHBhZ2VzIGFzIGEgbmV3IFBERiBmaWxlXG4gICAgICBjb25zdCBmaWxlID0gYXdhaXQgaW5zdGFuY2UuZXhwb3J0UERGV2l0aE9wZXJhdGlvbnMoW1xuICAgICAgICB7IHR5cGU6IFwia2VlcFBhZ2VzXCIsIHBhZ2VJbmRleGVzOiBzZWxlY3RlZFBhZ2VzSW5kZXggfSxcbiAgICAgIF0pO1xuXG4gICAgICAvLyBDcmVhdGUgYSBCbG9iIG9iamVjdCBmb3IgdGhlIGV4cG9ydGVkIFBERlxuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtmaWxlXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL3BkZlwiIH0pO1xuICAgICAgY29uc29sZS5sb2coXCJCbG9iIERhdGE6IFwiLCBibG9iKTsgLy8gTG9nIGJsb2IgZGF0YVxuXG4gICAgICAvLyBEb3dubG9hZCB0aGUgZmlsZVxuICAgICAgaWYgKHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYikge1xuICAgICAgICAvLyBGb3IgSW50ZXJuZXQgRXhwbG9yZXIgYW5kIEVkZ2VcbiAgICAgICAgd2luZG93Lm5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKGJsb2IsIFwic2VsZWN0ZWRwYWdlcy5wZGZcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBGb3IgbW9kZXJuIGJyb3dzZXJzXG4gICAgICAgIGNvbnN0IG9iamVjdFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgYS5ocmVmID0gb2JqZWN0VXJsO1xuICAgICAgICBhLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgYS5kb3dubG9hZCA9IFwic2VsZWN0ZWRwYWdlcy5wZGZcIjtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgICAgICAgYS5jbGljaygpOyAvLyBTaW11bGF0ZSBhIGNsaWNrIGV2ZW50IHRvIHRyaWdnZXIgZG93bmxvYWRcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVcmwpOyAvLyBSZXZva2UgdGhlIG9iamVjdCBVUkxcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTsgLy8gUmVtb3ZlIHRoZSB0ZW1wb3JhcnkgYW5jaG9yIGVsZW1lbnRcbiAgICAgIH1cbiAgICB9LFxuICB9O1xuXG4gIC8vIFNldCBjdXN0b20gZG9jdW1lbnQgZWRpdG9yIHRvb2xiYXIgaXRlbXNcbiAgaW5zdGFuY2Uuc2V0RG9jdW1lbnRFZGl0b3JUb29sYmFySXRlbXMoW1xuICAgIHsgdHlwZTogXCJhZGRcIiB9LCAvLyBBZGQgYnV0dG9uIHRvIGluc2VydCBuZXcgZWxlbWVudHNcbiAgICBjdXN0b21Ub29sYmFySXRlbSwgLy8gQWRkIHRoZSBjdXN0b20gZXhwb3J0IHBhZ2VzIGJ1dHRvblxuICAgIHsgdHlwZTogXCJtb3ZlLWxlZnRcIiB9LCAvLyBNb3ZlIGVsZW1lbnRzIGxlZnRcbiAgICB7IHR5cGU6IFwibW92ZS1yaWdodFwiIH0sIC8vIE1vdmUgZWxlbWVudHMgcmlnaHRcbiAgICB7IHR5cGU6IFwiZHVwbGljYXRlXCIgfSwgLy8gRHVwbGljYXRlIHNlbGVjdGVkIGVsZW1lbnRzXG4gIF0pO1xuXG4gIGNvbnNvbGUubG9nKFwiTnV0cmllbnQgbG9hZGVkISBieSBOYXJhc2hpbWFuXCIpOyAvLyBMb2cgY29tcGxldGlvbiBvZiBzZXR1cFxufSk7XG4iLCJtb2RlIjoic3RhbmRhbG9uZSIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG4uY3VzdG9tLXRvb2xiYXItaXRlbSB7XG4gIGhlaWdodDogMTAwJTtcbn1cbiJ9)
- [Convert From Text to Speech](https://github.com/PSPDFKit/awesome-nutrient/tree/master/web/annotation/text-2-speech)
- [Convert From Speech to text](https://github.com/PSPDFKit/awesome-nutrient/tree/master/web/annotation/speech-2-text)
- [Desanitization of HTML Entities & Special Characters in Note Annotations](https://nutrient.io/playground?p=eyJ2IjoxLCJzZXR0aW5ncyI6eyJmaWxlTmFtZSI6ImJhc2ljLnBkZiIsImp3dCI6eyJwZXJtaXNzaW9ucyI6WyJyZWFkLWRvY3VtZW50Iiwid3JpdGUiXSwidXNlcklkIjoicmFuZG9tbEUxUXUwYzdjVCIsImxheWVyIjoicmFuZG9ta1FnUzRqOEpySCJ9fSwianMiOiJmdW5jdGlvbiBkZXNhbml0aXplSHRtbCh0ZXh0KXtjb25zdCBlbnRpdGllcz17JyZsdDsnOic8JywnJmd0Oyc6Jz4nLCcmYW1wOyc6JyYnLCcmcXVvdDsnOidcIicsJyYjMzk7JzonXFwnJ307cmV0dXJuIHRleHQucmVwbGFjZSgvJig%252FOiMzOXxxdW90fGFtcHxsdHxndCk7L2csKG1hdGNoPT5lbnRpdGllc1ttYXRjaF18fG1hdGNoKSl9ZnVuY3Rpb24gZGVzYW5pdGl6ZU5vdGUoaW5zdGFuY2Upe2NvbnN0IG5vdGVBbm5vdGF0aW9uRGl2PWluc3RhbmNlLmNvbnRlbnREb2N1bWVudD8ucXVlcnlTZWxlY3RvckFsbCgnLlBTUERGS2l0LU5vdGUtQW5ub3RhdGlvbi1Db250ZW50Jyk7XG4vL2FwcGx5aW5nIHRoZSBkZXNhbml0aXplciB0byBhbGwgYXZhaWxhYmxlIG5vdGVzIHNpbmNlIG90aGVyIG5vdGVzIGNhbiBiZSB2aWV3ZWQgd2hpbGUgb25lIGlzIGZvY3VzZWRcbm5vdGVBbm5vdGF0aW9uRGl2JiZBcnJheS5mcm9tKHtsZW5ndGg6bm90ZUFubm90YXRpb25EaXYubGVuZ3RofSkubWFwKCgoXyxpbmRleCk9Pntjb25zdCBlZGl0YWJsZURpdj1ub3RlQW5ub3RhdGlvbkRpdltpbmRleF0ucXVlcnlTZWxlY3RvcignW2RhdGEtdGVzdGlkPVwiY29udGVudC1lZGl0YWJsZS1jb21wb25lbnRcIl0nKTtpZihlZGl0YWJsZURpdil7XG4vLyBHZXQgdGhlIHJhdyB0ZXh0IGNvbnRlbnQsIHByZXNlcnZpbmcgYWxsIHdoaXRlc3BhY2VcbmNvbnN0IHJhd1RleHQ9ZWRpdGFibGVEaXYuaW5uZXJUZXh0LGRlc2FuaXRpemVkVGV4dD1kZXNhbml0aXplSHRtbChyYXdUZXh0KTtcbi8vIERlc2FuaXRpemUgdGhlIHRleHQgd2l0aG91dCBhZmZlY3Rpbmcgd2hpdGVzcGFjZVxuLy8gT25seSB1cGRhdGUgaWYgdGhlIGNvbnRlbnQgaGFzIGNoYW5nZWRcbmlmKGRlc2FuaXRpemVkVGV4dCE9PXJhd1RleHQpe1xuLy8gVXNlIHRleHRDb250ZW50IHRvIHNldCB0aGUgdGV4dCwgd2hpY2ggd2lsbCBwcmVzZXJ2ZSB3aGl0ZXNwYWNlXG5lZGl0YWJsZURpdi50ZXh0Q29udGVudD1kZXNhbml0aXplZFRleHQ7XG4vLyBFbnN1cmUgdGhlIGN1cnNvciBzdGF5cyBhdCB0aGUgZW5kXG5jb25zdCByYW5nZT1kb2N1bWVudC5jcmVhdGVSYW5nZSgpLHNlbD13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7cmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVkaXRhYmxlRGl2KSxyYW5nZS5jb2xsYXBzZSghMSksc2VsLnJlbW92ZUFsbFJhbmdlcygpLHNlbC5hZGRSYW5nZShyYW5nZSl9fX0pKX1sZXQgZ2xvYmFsSW5zdGFuY2U7UFNQREZLaXQubG9hZCh7Li4uYmFzZU9wdGlvbnMsdGhlbWU6UFNQREZLaXQuVGhlbWUuREFSS30pLnRoZW4oKGluc3RhbmNlPT57Z2xvYmFsSW5zdGFuY2U9aW5zdGFuY2UsXG4vL2hhbmRsZXMgbW91c2VvdmVyXG5pbnN0YW5jZS5jb250ZW50RG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywoZT0%252Be2Rlc2FuaXRpemVOb3RlKGluc3RhbmNlKX0pLHtjYXB0dXJlOiEwfSksXG4vL2hhbmRsZXMgd2hlbiB0aGUgTm90ZSBBbm5vdGF0aW9uIGlzIGRyYWdnZWQgYW5kIG1vdmVkXG5pbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCdhbm5vdGF0aW9ucy5jaGFuZ2UnLChhc3luYygpPT57KGF3YWl0IGluc3RhbmNlLmdldFNlbGVjdGVkQW5ub3RhdGlvbnMoKSk%252FLmdldCgwKWluc3RhbmNlb2YgUFNQREZLaXQuQW5ub3RhdGlvbnMuTm90ZUFubm90YXRpb24mJmRlc2FuaXRpemVOb3RlKGluc3RhbmNlKX0pKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwYXN0ZScsKGV2ZW50PT57ZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJy5QU1BERktpdC1Db250YWluZXInKSYmZGVzYW5pdGl6ZU5vdGUoaW5zdGFuY2UpfSkpfSkpOyIsImNzcyI6Ii8qIEFkZCB5b3VyIENTUyBoZXJlICovXG4iLCJtb2RlIjoic3RhbmRhbG9uZSJ9)
- [Detect when viewer UI is loaded](./web/viewer/detecting-when-the-viewer-UI-loads.md)## .NET Coming Soon
## Design System
- [Baseline UI](https://www.nutrient.io/baseline-ui/)
- A set of customisable and accessible React components.
- [Add custom button to main toolbar](https://www.nutrient.io/playground?p=eyJ2IjoxLCJqcyI6ImNvbnN0e2NyZWF0ZUJsb2NrOmNyZWF0ZUJsb2NrLEludGVyZmFjZXM6SW50ZXJmYWNlcyxSZWNpcGVzOlJlY2lwZXMsQ29yZTpDb3JlfT1QU1BERktpdC5VSTtQU1BERktpdC5sb2FkKHsuLi5iYXNlT3B0aW9ucyx0aGVtZTpQU1BERktpdC5UaGVtZS5EQVJLLHVpOntcbi8vdGhpcyBjb21wbGV0ZXMgYW4gZXhhbXBsZSBkb25lIGluIHZpcnR1YWwgQlVJIHdvcmtzaG9wIHdpdGggUml0ZXNoXG5bSW50ZXJmYWNlcy5QcmltYXJ5VG9vbGJhcl06KHtwcm9wczpwcm9wc30pPT4oe2NvbnRlbnQ6Y3JlYXRlQmxvY2soUmVjaXBlcy5QcmltYXJ5VG9vbGJhcixwcm9wcywoKHt1aTp1aX0pPT57Y29uc3QgY3VzdG9tQnV0dG9uPWNyZWF0ZUJsb2NrKENvcmUuQWN0aW9uQnV0dG9uLHtsYWJlbDonY3VzdG9tLWJ1dHRvbicsdmFyaWFudDondG9vbGJhcid9KTtyZXR1cm4gdWkuaW5zZXJ0QWZ0ZXIoJ3BhbicsY3VzdG9tQnV0dG9uKSx1aS5jcmVhdGVDb21wb25lbnQoKX0pKS5jcmVhdGVDb21wb25lbnQoKX0pfX0pLnRoZW4oKGluc3RhbmNlPT57Y29uc29sZS5sb2coJ1BTUERGS2l0IGxvYWRlZCEnKSxjb25zb2xlLmxvZygnQVBJIGRvY3M6IGh0dHBzOi8vcHNwZGZraXQuY29tL2FwaS93ZWIvJyksY29uc29sZS5sb2coJ0d1aWRlczogaHR0cHM6Ly9wc3BkZmtpdC5jb20vZ3VpZGVzL3dlYi8nKX0pKTsifQ%253D%253D)
- This examples adds a custom button to the main toolbar.
- [Change label of thumbnails in Thumbnails Sidebar to a string](https://www.nutrient.io/playground?p=eyJ2IjoxLCJqcyI6ImNvbnN0e2NyZWF0ZUJsb2NrOmNyZWF0ZUJsb2NrLEludGVyZmFjZXM6SW50ZXJmYWNlcyxSZWNpcGVzOlJlY2lwZXMsQ29yZTpDb3JlfT1QU1BERktpdC5VSTtQU1BERktpdC5sb2FkKHsuLi5iYXNlT3B0aW9ucyx0aGVtZTpQU1BERktpdC5UaGVtZS5EQVJLLHVpOntcbi8vdGhpcyBjb21wbGV0ZXMgYW4gZXhhbXBsZSBkb25lIGluIHZpcnR1YWwgQlVJIHdvcmtzaG9wIHdpdGggUml0ZXNoXG5bSW50ZXJmYWNlcy5UaHVtYm5haWxzXTooe3Byb3BzOnByb3BzfSk9Pih7Y29udGVudDpjcmVhdGVCbG9jayhSZWNpcGVzLlRodW1ibmFpbHMscHJvcHMsKCh7dWk6dWl9KT0%252Be2NvbnN0IHRodW1ibmFpbHM9dWkuZ2V0QmxvY2tCeUlkKCdib2R5Jykse3Byb3BzOnByb3BzfT10aHVtYm5haWxzLHVwZGF0ZWRJdGVtcz1wcm9wcy5pdGVtcy5tYXAoKGl0ZW09Pih7Li4uaXRlbSxsYWJlbDpgUGFnZTogJHtpdGVtLmxhYmVsfWB9KSkpO3JldHVybiB0aHVtYm5haWxzLnNldFByb3AoJ2l0ZW1zJyx1cGRhdGVkSXRlbXMpLHVpLmNyZWF0ZUNvbXBvbmVudCgpfSkpLmNyZWF0ZUNvbXBvbmVudCgpfSl9fSkudGhlbigoaW5zdGFuY2U9Pntjb25zb2xlLmxvZygnUFNQREZLaXQgbG9hZGVkIScpLGNvbnNvbGUubG9nKCdBUEkgZG9jczogaHR0cHM6Ly9wc3BkZmtpdC5jb20vYXBpL3dlYi8nKSxjb25zb2xlLmxvZygnR3VpZGVzOiBodHRwczovL3BzcGRma2l0LmNvbS9ndWlkZXMvd2ViLycpfSkpOyJ9)
- This example changes the thumbnails label in the thumbnail sidebar to a custom strings.
- [Change cancel button in Document Editor Modal variant](https://www.nutrient.io/playground?p=eyJ2IjoxLCJqcyI6ImNvbnN0e2NyZWF0ZUJsb2NrOmNyZWF0ZUJsb2NrLEludGVyZmFjZXM6SW50ZXJmYWNlcyxSZWNpcGVzOlJlY2lwZXMsQ29yZTpDb3JlfT1QU1BERktpdC5VSTtQU1BERktpdC5sb2FkKHsuLi5iYXNlT3B0aW9ucyx0aGVtZTpQU1BERktpdC5UaGVtZS5EQVJLLHVpOntcbi8vdGhpcyBjb21wbGV0ZXMgYW4gZXhhbXBsZSBkb25lIGluIHZpcnR1YWwgQlVJIHdvcmtzaG9wIHdpdGggUml0ZXNoXG5bSW50ZXJmYWNlcy5Eb2N1bWVudEVkaXRvcl06KHtwcm9wczpwcm9wc30pPT4oe2NvbnRlbnQ6Y3JlYXRlQmxvY2soUmVjaXBlcy5Eb2N1bWVudEVkaXRvcixwcm9wcywoKHt1aTp1aX0pPT4odWkuZ2V0QmxvY2tCeUlkKCdjYW5jZWwnKS5zZXRQcm9wKCd2YXJpYW50JywnZXJyb3InKSx1aS5jcmVhdGVDb21wb25lbnQoKSkpKS5jcmVhdGVDb21wb25lbnQoKX0pfX0pLnRoZW4oKGluc3RhbmNlPT57Y29uc29sZS5sb2coJ1BTUERGS2l0IGxvYWRlZCEnKSxjb25zb2xlLmxvZygnQVBJIGRvY3M6IGh0dHBzOi8vcHNwZGZraXQuY29tL2FwaS93ZWIvJyksY29uc29sZS5sb2coJ0d1aWRlczogaHR0cHM6Ly9wc3BkZmtpdC5jb20vZ3VpZGVzL3dlYi8nKX0pKTsifQ%253D%253D)
- This examples makes the cancel button in the the Document Editor Dialog red.
- [Add a custom button in the Create Signature Modal that changes a custom state](https://www.nutrient.io/playground?p=eyJ2IjoxLCJqcyI6ImxldCBjb3VudD0wO2Z1bmN0aW9uIGNvdW50ZXIoKXtjb3VudCsrfWNvbnN0e2NyZWF0ZUJsb2NrOmNyZWF0ZUJsb2NrLEludGVyZmFjZXM6SW50ZXJmYWNlcyxSZWNpcGVzOlJlY2lwZXMsQ29yZTpDb3JlfT1QU1BERktpdC5VSTtQU1BERktpdC5sb2FkKHsuLi5iYXNlT3B0aW9ucyx0aGVtZTpQU1BERktpdC5UaGVtZS5EQVJLLHVpOntbSW50ZXJmYWNlcy5DcmVhdGVTaWduYXR1cmVdOih7cHJvcHM6cHJvcHN9KT0%252BKHtjb250ZW50OmNyZWF0ZUJsb2NrKFJlY2lwZXMuQ3JlYXRlU2lnbmF0dXJlLHByb3BzLCgoe3VpOnVpLHN0YXRlOnN0YXRlfSk9Pihcbi8vIEN1c3RvbWlzYXRpb24gY29kZSBnb2VzIGhlcmVcbnVpLmluc2VydEFmdGVyKCd0aXRsZScsY3JlYXRlQmxvY2soQ29yZS5BY3Rpb25CdXR0b24se2xhYmVsOnN0YXRlLmdldCgnY2xpY2tDb3VudCcpPz9jb3VudCx2YXJpYW50OidzdWNjZXNzJ30pKSx1aS5pbnNlcnRBZnRlcigndGl0bGUnLGNyZWF0ZUJsb2NrKENvcmUuQWN0aW9uQnV0dG9uLHtsYWJlbDonSW5jcmVtZW50JyxvblByZXNzOigpPT57Y291bnRlcigpLC8vIEluY3JlbWVudCBhbmQgbG9nIHRoZSBjb3VudGVyXG5zdGF0ZS5zZXQoJ2NsaWNrQ291bnQnLGNvdW50KX0sdmFyaWFudDonc2Vjb25kYXJ5JywnYXJpYS1sYWJlbCc6J0luY3JlbWVudCd9KSksdWkuY3JlYXRlQ29tcG9uZW50KCkpKSkuY3JlYXRlQ29tcG9uZW50KCl9KX19KS50aGVuKChpbnN0YW5jZT0%252Be2NvbnNvbGUubG9nKCdQU1BERktpdCBsb2FkZWQhJyksY29uc29sZS5sb2coJ0FQSSBkb2NzOiBodHRwczovL3BzcGRma2l0LmNvbS9hcGkvd2ViLycpLGNvbnNvbGUubG9nKCdHdWlkZXM6IGh0dHBzOi8vcHNwZGZraXQuY29tL2d1aWRlcy93ZWIvJyl9KSk7In0%253D)
- This examples displays and changes a custom state in the Create Signature Modal## AI
- [Document Assistant for PSPDFKit](https://github.com/PSPDFKit/ai-document-assistant-demo)
- AI Document Assistant for PSPDFKit Demo showcases how to interact with PDFs using natural language commands powered by AI, integrated with Nutrient Web SDK.## Document Authoring
- [Document Generator VanillaJS](./web/document-generator-vanillajs/)
- A fully functional step-by-step document generator that brings the user from a template to a PDF document, where they get to make modifications on every step of the way. Demonstrates the combined capabilities of Nutrient's Document Authoring and Web SDKs.## iOS
- [iOS Catalog](https://github.com/PSPDFKit/pspdfkit-ios-catalog)
- A wide variety of examples what Nutrient iOS SDK can do. Clone it and play with it.## Android
- [Android Catalog](https://github.com/PSPDFKit/pspdfkit-android-catalog)
- A wide variety of examples what Nutrient Android SDK can do. Clone it and play with it.## Windows
- [Using Nutrient Web SDK in WinUI3 app](/windows/pspdfkit-with-winui3)
- Learn how to use web SDK in WinUI3 app or any app that supports WebView2.## Cross-Platform
- [React Native Catalog](https://github.com/PSPDFKit/react-native/tree/master/samples/Catalog)
- A diverse range of examples showcasing what Nutrient React Native SDK is capable of. Clone the repository and explore its features firsthand.
- [MAUI Catalog](https://github.com/PSPDFKit/pspdfkit-maui-catalog)
- A diverse range of examples showcasing what Nutrient MAUI SDK is capable of. Clone the repository and explore its features.
- [Flutter Sample](https://github.com/PSPDFKit/pspdfkit-flutter/tree/master/example)
- Discover a practical example showcasing the power of Nutrient Flutter SDK.
- [.NET for Android Sample](https://github.com/PSPDFKit/dotnet-pdf-library-for-android/tree/main/samples)
- Learn how to use C# Bindings for Nutrient Android SDK.
- [.NET for iOS Sample](https://github.com/PSPDFKit/dotnet-pdf-library-for-ios/tree/main/Samples)
- Learn how to use C# Bindings for Nutrient iOS SDK.