dependabot[bot] d9a5c9ac7e build(deps): bump the embedpdf group across 1 directory with 23 updates (#7469)
Bumps the embedpdf group with 21 updates in the /frontend directory:

| Package | From | To |
| --- | --- | --- |
|
[@embedpdf/core](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/core/main)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/models](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/models)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-annotation](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-annotation)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-attachment](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-attachment)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-bookmark](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-bookmark)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-document-manager](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-document-manager)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-export](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-download)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-history](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-history)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-interaction-manager](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-interaction-manager)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-pan](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-pan)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-print](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-print)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-redaction](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-redaction)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-render](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-render)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-rotate](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-rotate)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-scroll](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-scroll)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-search](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-search)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-spread](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-spread)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-thumbnail](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-thumbnail)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-tiling](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-tiling)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-viewport](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-viewport)
| `2.14.4` | `2.15.0` |
|
[@embedpdf/plugin-zoom](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/plugin-zoom)
| `2.14.4` | `2.15.0` |


Updates `@embedpdf/core` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/core's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/core/main">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/engines` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/engines's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/engines/CHANGELOG.md">@​embedpdf/engines's
changelog</a>.</em></p>
<blockquote>
<h2>2.15.0</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a>
chore: version packages</li>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/engines">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/models` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/models's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/models/CHANGELOG.md">@​embedpdf/models's
changelog</a>.</em></p>
<blockquote>
<h2>2.15.0</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a>
chore: version packages</li>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/models">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/plugin-annotation` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/plugin-annotation's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-annotation/CHANGELOG.md">@​embedpdf/plugin-annotation's
changelog</a>.</em></p>
<blockquote>
<h2>2.15.0</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a>
chore: version packages</li>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-annotation">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/plugin-attachment` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/plugin-attachment's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-attachment/CHANGELOG.md">@​embedpdf/plugin-attachment's
changelog</a>.</em></p>
<blockquote>
<h2>2.15.0</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a>
chore: version packages</li>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-attachment">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/plugin-bookmark` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/plugin-bookmark's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-bookmark/CHANGELOG.md">@​embedpdf/plugin-bookmark's
changelog</a>.</em></p>
<blockquote>
<h2>2.15.0</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a>
chore: version packages</li>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-bookmark">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/plugin-document-manager` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/plugin-document-manager's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-document-manager/CHANGELOG.md">@​embedpdf/plugin-document-manager's
changelog</a>.</em></p>
<blockquote>
<h2>2.15.0</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a>
chore: version packages</li>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-document-manager">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/plugin-export` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/plugin-export's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-download">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/plugin-history` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/plugin-history's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-history/CHANGELOG.md">@​embedpdf/plugin-history's
changelog</a>.</em></p>
<blockquote>
<h2>2.15.0</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a>
chore: version packages</li>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-history">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/plugin-interaction-manager` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/plugin-interaction-manager's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-interaction-manager/CHANGELOG.md">@​embedpdf/plugin-interaction-manager's
changelog</a>.</em></p>
<blockquote>
<h2>2.15.0</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a>
chore: version packages</li>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-interaction-manager">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/plugin-pan` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/plugin-pan's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-pan/CHANGELOG.md">@​embedpdf/plugin-pan's
changelog</a>.</em></p>
<blockquote>
<h2>2.15.0</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a>
chore: version packages</li>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-pan">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/plugin-print` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/plugin-print's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-print/CHANGELOG.md">@​embedpdf/plugin-print's
changelog</a>.</em></p>
<blockquote>
<h2>2.15.0</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a>
chore: version packages</li>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-print">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/plugin-redaction` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/plugin-redaction's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-redaction/CHANGELOG.md">@​embedpdf/plugin-redaction's
changelog</a>.</em></p>
<blockquote>
<h2>2.15.0</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a>
chore: version packages</li>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-redaction">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/plugin-render` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/plugin-render's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ start, end
}</code> glyph pointers) shape emitted by
<code>onSelectionChange</code>, so a saved selection can be passed
straight back in to restore it; passing <code>null</code> clears the
selection. Page geometry is loaded on demand, so the returned task
resolves only once the highlight rects are computed. The range is
normalized (start/end may be given in any order), invalid input
(malformed range, non-integer/negative indices, out-of-bounds pages) is
rejected, glyph indices are clamped to the available page geometry, and
previously highlighted pages are repainted so switching to a disjoint
selection no longer leaves stale highlights behind.</p>
</li>
</ul>
<h2><code>@​embedpdf/core</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/703">#703</a>
by <a
href="https://github.com/berkayozdin"><code>@​berkayozdin</code></a> –
Make the precompiled Svelte output work on every Svelte 5 runtime</p>
<p>Svelte 5.56 changed the <code>exclude</code> argument of the private
<code>rest_props</code> runtime helper from an array
(<code>exclude.includes(key)</code>) to a <code>Set</code>
(<code>exclude.has(key)</code>). The <code>*/svelte</code> entry points
ship precompiled component code, so output built against one side of
that change throws on the other: the currently published packages fail
with <code>TypeError: exclude.has is not a function</code> on Svelte
&gt;= 5.56, which aborts the render of every EmbedPDF Svelte
component.</p>
<p>The Svelte build now routes those calls through a wrapper that hands
the runtime an <code>exclude</code> value satisfying both contracts, so
one published build stays valid across the whole <code>svelte:
&quot;&gt;=5 &lt;6&quot;</code> peer range.</p>
</li>
</ul>
<h2><code>@​embedpdf/engines</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/models</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/pdfium</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-annotation</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-attachment</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-bookmark</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-capture</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-commands</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-document-manager</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-export</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h2><code>@​embedpdf/plugin-form</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/blob/v2.15.0/packages/plugin-render/CHANGELOG.md">@​embedpdf/plugin-render's
changelog</a>.</em></p>
<blockquote>
<h2>2.15.0</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/embedpdf/embed-pdf-viewer/commit/a8faf04b15291c895118b819d7395c3bca8a4959"><code>a8faf04</code></a>
chore: version packages</li>
<li>See full diff in <a
href="https://github.com/embedpdf/embed-pdf-viewer/commits/v2.15.0/packages/plugin-render">compare
view</a></li>
</ul>
</details>
<br />

Updates `@embedpdf/plugin-rotate` from 2.14.4 to 2.15.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/embedpdf/embed-pdf-viewer/releases">@​embedpdf/plugin-rotate's
releases</a>.</em></p>
<blockquote>
<h2>Release v2.15.0</h2>
<h2><code>@​embedpdf/plugin-selection</code><a
href="https://github.com/2"><code>@​2</code></a>.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/embedpdf/embed-pdf-viewer/pull/685">#685</a>
by <a href="https://github.com/simonmysun"><code>@​simonmysun</code></a>
– Add <code>setSelection(range, documentId?)</code> to the selection
capability and document scope for programmatically applying or restoring
a text selection.</p>
<p>It accepts the same <code>SelectionRangeX</code> (<code>{ star...

_Description has been truncated_

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-20 14:41:25 +00:00
2026-07-24 09:37:10 +00:00
2026-08-20 12:00:03 +00:00
2026-08-13 14:09:25 +00:00
2026-07-11 12:48:53 +01:00
2026-03-25 11:00:40 +00:00
2026-07-17 10:16:06 +00:00
2026-03-25 11:00:40 +00:00

Stirling PDF logo

Stirling PDF - The Open-Source PDF Platform

Stirling PDF is a powerful, open-source PDF editing platform. Run it as a personal desktop app, in the browser, or deploy it on your own servers with a private API. Edit, sign, redact, convert, and automate PDFs without sending documents to external services.

Docker Pulls Discord OpenSSF Scorecard GitHub Repo stars

Stirling PDF - Dashboard

Key Capabilities

  • Everywhere you work - Desktop client, browser UI, and self-hosted server with a private API.
  • 50+ PDF tools - Edit, merge, split, sign, redact, convert, OCR, compress, and more.
  • Automation & workflows - No-code pipelines direct in UI with APIs to process millions of PDFs.
  • Enterprisegrade - SSO, auditing, and flexible onprem deployments.
  • Developer platform - REST APIs available for nearly all tools to integrate into your existing systems.
  • Global UI - Interface available in 40+ languages.

For a full feature list, see the docs: https://docs.stirlingpdf.com

Quick Start

docker run -p 8080:8080 docker.stirlingpdf.com/stirlingtools/stirling-pdf

Then open: http://localhost:8080

For full installation options (including desktop and Kubernetes), see our Documentation Guide.

Resources

Support

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

This project uses Task as a unified command runner for all build, dev, and test commands. Run task dev to get started running the editor, run task to see the most common commands, or see the Developer Guide for full details.

For adding translations, see the Translation Guide.

License

Stirling PDF is open-core. See LICENSE for details.

S
Description
#1 Locally hosted web application that allows you to perform various operations on PDF files
Readme MIT
1.3 GiB
Languages
Java 45.9%
TypeScript 44.7%
Python 3.9%
CSS 2.4%
Shell 0.8%
Other 2.2%