Releases: embedpdf/embed-pdf-viewer
Release Next v2.0.0-next.2
@embedpdf/[email protected]
Minor Changes
89b94a0by @bobsingor – AddedpageNumberandtotalPagesproperties toLayoutReadyEvent. This allows consumers to get the current page information immediately when the layout becomes ready, without needing to subscribe to a separateonPageChangeevent.
@embedpdf/[email protected]
Minor Changes
-
#293 by @github-actions – Added
data-hidden-itemsattribute for efficient CSS dependency rules.Problem: Visibility dependency rules (e.g., hiding overflow buttons when all menu items are hidden) required exponential CSS rules when using category-based logic, causing stylesheet bloat.
Solution:
- Added
hiddenItemsstate that tracks which item IDs are hidden based on disabled categories - Dependency rules now use
data-epdf-hidattribute to check item IDs directly - CSS rules are now O(n) per breakpoint instead of O(m^n)
New APIs:
getHiddenItems()- returns array of hidden item IDsonCategoryChangedevent now includeshiddenItemsin payloadextractItemCategories(schema)- extracts item→categories mappingcomputeHiddenItems(itemCategories, disabledCategories)- computes hidden items
Breaking Changes: None - existing
disabledCategoriesAPI unchanged - Added
@embedpdf/[email protected]
Minor Changes
-
89b94a0by @bobsingor – Added comprehensive type exports for all plugin Capabilities and Scopes, enabling proper TypeScript support when using plugin APIs.New Type Exports
All plugins now export their
*Capabilityand*Scopetypes, allowing developers to properly type variables when usingplugin.provides()andforDocument():- Viewport:
ViewportCapability,ViewportScope,ViewportMetrics - Scroll:
ScrollCapability,ScrollScope,ScrollMetrics,PageChangeEvent,ScrollEvent,LayoutChangeEvent - Spread:
SpreadCapability,SpreadScope - Zoom:
ZoomCapability,ZoomScope,ZoomLevel,ZoomChangeEvent - Rotate:
RotateCapability,RotateScope - Tiling:
TilingCapability,TilingScope - Thumbnail:
ThumbnailCapability,ThumbnailScope - Annotation:
AnnotationCapability,AnnotationScope,AnnotationEvent - Search:
SearchCapability,SearchScope - Selection:
SelectionCapability,SelectionScope - Capture:
CaptureCapability,CaptureScope - Redaction:
RedactionCapability,RedactionScope,RedactionMode,RedactionItem - UI:
UIScope(UICapability was already exported) - I18n:
I18nCapability,I18nScope,Locale,LocaleChangeEvent - Commands:
CommandScope(CommandsCapability was already exported) - DocumentManager:
DocumentManagerCapability,DocumentChangeEvent,LoadDocumentUrlOptions,LoadDocumentBufferOptions - Print:
PrintCapability,PrintScope - Fullscreen:
FullscreenCapability - Bookmark:
BookmarkCapability,BookmarkScope - Export:
ExportCapability,ExportScope - Pan:
PanCapability,PanScope - History:
HistoryCapability,HistoryScope - Attachment:
AttachmentCapability,AttachmentScope - Render:
RenderCapability,RenderScope - InteractionManager:
InteractionManagerCapability,InteractionManagerScope
Usage Example
import { ScrollPlugin, type ScrollCapability, type ScrollScope, type PageChangeEvent, } from '@embedpdf/snippet'; // Type the capability returned by provides() const scroll: ScrollCapability = registry .getPlugin<ScrollPlugin>('scroll') ?.provides(); // Type the scoped API for a specific document const doc: ScrollScope = scroll.forDocument('my-document'); // Type event callbacks scroll.onPageChange((event: PageChangeEvent) => { console.log(`Page ${event.pageNumber} of ${event.totalPages}`); });
- Viewport:
-
#293 by @github-actions – Added global
disabledCategoriesconfig and hierarchical categories for fine-grained feature control.Global
disabledCategoriesConfigurationAdded
disabledCategoriesto the rootPDFViewerConfigthat applies to both UI and Commands plugins:const config: PDFViewerConfig = { src: 'document.pdf', // Disable all annotation and redaction features globally disabledCategories: ['annotation', 'redaction'], };
Plugin-specific settings can override the global setting:
const config: PDFViewerConfig = { disabledCategories: ['annotation'], // Global default ui: { disabledCategories: ['redaction'], // Overrides for UI only }, commands: { disabledCategories: [], // Re-enables all for commands }, };
Hierarchical Categories
All commands and UI schema items now have hierarchical categories for granular control:
annotation- all annotation featuresannotation-markup- highlight, underline, strikeout, squigglyannotation-highlight,annotation-underline, etc.
annotation-shape- rectangle, circle, line, arrow, polygon, polylineannotation-rectangle,annotation-circle, etc.
annotation-ink,annotation-text,annotation-stamp
redaction- all redaction featuresredaction-text,redaction-area,redaction-apply,redaction-clear
zoom- all zoom featureszoom-in,zoom-out,zoom-fit-page,zoom-fit-width,zoom-marqueezoom-level- all zoom level presets
document- document operationsdocument-open,document-close,document-print,document-export,document-fullscreen
panel- sidebar panelspanel-sidebar,panel-search,panel-comment,panel-annotation-style
page- page settingsspread,scroll,rotate
history- undo/redohistory-undo,history-redo
mode- viewer modesmode-view,mode-annotate,mode-shapes,mode-redact
tools- tool buttonspan,pointer,capture
Example: Disable only print functionality while keeping export:
disabledCategories: ['document-print'];
-
#293 by @github-actions – Added Spanish translations, improved i18n support, and enhanced plugin configuration API.
New Features
- Spanish Translations: Added Spanish (
es) locale support with complete translations for all UI elements and commands. - Annotation Sidebar Translations: Sidebar titles are now properly translated using i18n keys. Added missing translation keys (
annotation.freeText,annotation.square,annotation.styles,annotation.defaults) to all 5 languages.
Improvements
- Partial Plugin Configs: All plugin configuration options in
PDFViewerConfignow usePartial<>types, making it easier to override only the settings you need without specifying all required fields. - Reactive Blend Mode Labels: Blend mode dropdown labels in the annotation sidebar now update reactively when the language changes.
- Search Sidebar Layout: Changed search options checkboxes from horizontal to vertical layout for better compatibility with longer translated labels.
// Override just specific settings <PDFViewer config={{ src: '/document.pdf', zoom: { defaultZoomLevel: ZoomMode.FitWidth }, i18n: { defaultLocale: 'es' }, // Use Spanish translations }} />
- Spanish Translations: Added Spanish (
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
Release Next v2.0.0-next.1
@embedpdf/[email protected]
Minor Changes
-
#283 by @github-actions – ## Remove
initialPageConfig & AddisInitialtoLayoutReadyEventBreaking Changes
- Removed
initialPageconfig option: TheinitialPageconfiguration option has been removed fromScrollPluginConfig. With multi-document support, a global initial page setting no longer makes sense.
Migration
To scroll to a specific page when a document loads, use the
onLayoutReadyevent instead:import { useCapability } from '@embedpdf/core/react'; import type { ScrollPlugin } from '@embedpdf/plugin-scroll'; const ScrollToPageOnLoad = ({ documentId, initialPage }) => { const { provides: scrollCapability } = useCapability<ScrollPlugin>('scroll'); useEffect(() => { if (!scrollCapability) return; const unsubscribe = scrollCapability.onLayoutReady((event) => { if (event.documentId === documentId && event.isInitial) { scrollCapability.forDocument(documentId).scrollToPage({ pageNumber: initialPage, behavior: 'instant', }); } }); return unsubscribe; }, [scrollCapability, documentId, initialPage]); return null; };
New Features
isInitialflag onLayoutReadyEvent: TheonLayoutReadyevent now includes anisInitialboolean that istrueonly on the first layout after document load, andfalseon subsequent layouts (e.g., when switching between tabs). This allows distinguishing between initial document load and tab reactivation.
- Removed
@embedpdf/[email protected]
Patch Changes
-
caec11dby @bobsingor – UpdateduseCommandhook to return{ current: ResolvedCommand | null }instead of{ command: ResolvedCommand | null }for consistency with other Svelte hooks. UpdatedKeyboardShortcutscomponent to use the new pattern.Migration:
<!-- Before --> const cmd = useCommand(() => 'nav.next', () => documentId); // Access: cmd.command?.execute() <!-- After --> const cmd = useCommand(() => 'nav.next', () => documentId); // Access: cmd.current?.execute()
@embedpdf/[email protected]
Patch Changes
caec11dby @bobsingor – FixeduseOpenDocumentshook to correctly handle emptydocumentIdsarrays. Previously, passing an empty array would fall through to returning all documents; now it correctly returns an empty array. This fix applies to React, Vue, and Svelte hooks.
@embedpdf/[email protected]
Patch Changes
caec11dby @bobsingor – Fixed VueuseTranslationshook reactivity forlocalecomputed property. Thelocalevalue now correctly updates when the locale changes.
@embedpdf/[email protected]
Patch Changes
-
caec11dby @bobsingor – Added configurablemenuHeightoption toSelectionPluginConfig. This allows customizing the height used to determine whether the selection menu appears above or below the selection. Default value is40pixels. Also fixed type imports in SvelteSelectionLayercomponent.createPluginRegistration(SelectionPluginPackage, { enabled: true, menuHeight: 50, // Custom menu height for placement calculations });
@embedpdf/[email protected]
Patch Changes
-
caec11dby @bobsingor – RefactoredCounterRotateContainerto use a Svelte action (action: Action<HTMLElement>) instead of a ref callback (ref: (el: HTMLElement | null) => void). This is the idiomatic Svelte pattern for attaching lifecycle-managed behavior to DOM elements. UpdatedMenuWrapperPropstype accordingly.Migration:
<!-- Before --> <span bind:this={el} style={menuWrapperProps.style}> $effect(() => { menuWrapperProps.ref(el); }); <!-- After --> <span use:menuWrapperProps.action style={menuWrapperProps.style}>
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
Release Next v2.0.0-next.0
@embedpdf/[email protected]
Major Changes
-
#279 by @bobsingor – ## Multi-Document Support
This is a major refactoring to support multiple documents in a single viewer instance. The core architecture has been significantly enhanced to manage per-document state and lifecycle.
Breaking Changes
- Store Structure: Core state now uses
documents: Record<string, DocumentState>instead of a singledocumentproperty. Each document has its own state including pages, scale, rotation, and other document-specific properties. - BasePlugin Lifecycle: Added new protected lifecycle methods that plugins can override:
onDocumentLoadingStarted(documentId: string)- Called when a document starts loadingonDocumentLoaded(documentId: string)- Called when a document finishes loadingonDocumentClosed(documentId: string)- Called when a document is closedonActiveDocumentChanged(previousId: string | null, currentId: string | null)- Called when the active document changesonScaleChanged(documentId: string, scale: number)- Called when document scale changesonRotationChanged(documentId: string, rotation: number)- Called when document rotation changes
- Document Access: New helper methods in BasePlugin:
getActiveDocumentId()- Get the active document ID (throws if none)getActiveDocumentIdOrNull()- Get the active document ID or nullgetCoreDocument(documentId?: string)- Get document state by IDgetCoreDocumentOrThrow(documentId?: string)- Get document state or throw
- Actions: All core actions now support an optional
documentIdparameter. Actions that previously operated on a single document now require explicit document targeting. - State Management: The store now tracks multiple documents with an
activeDocumentIdfield to indicate which document is currently active.
New Features
- Support for opening and managing multiple PDF documents simultaneously
- Per-document state isolation
- Document lifecycle management with proper cleanup
- Active document tracking and switching
- Store Structure: Core state now uses
@embedpdf/[email protected]
Major Changes
-
#279 by @bobsingor – ## Multi-Document Support
The annotation plugin now supports multiple documents with per-document annotation state and tool management.
Breaking Changes
- All Actions: All annotation actions now require a
documentIdparameter:setAnnotations(documentId, annotations)- wassetAnnotations(annotations)selectAnnotation(documentId, pageIndex, id)- wasselectAnnotation(pageIndex, id)deselectAnnotation(documentId)- wasdeselectAnnotation()(no params)setActiveToolId(documentId, toolId)- wassetActiveToolId(toolId)createAnnotation(documentId, pageIndex, annotation)- wascreateAnnotation(pageIndex, annotation)patchAnnotation(documentId, pageIndex, id, patch)- waspatchAnnotation(pageIndex, id, patch)deleteAnnotation(documentId, pageIndex, id)- wasdeleteAnnotation(pageIndex, id)commitPendingChanges(documentId)- wascommitPendingChanges()(no params)purgeAnnotation(documentId, uid)- waspurgeAnnotation(uid)
- State Structure: Plugin state now uses
documents: Record<string, AnnotationDocumentState>instead of a flat structure. Each document has its own annotations, selected annotation, and active tool. - Capability Methods: All capability methods that previously operated on a single document now require document scoping or operate on the active document by default.
Framework-Specific Changes (React/Preact, Svelte, Vue)
- AnnotationContainer Component:
- Now requires
documentIdprop (React/Preact:@embedpdf/plugin-annotation/react, Svelte:@embedpdf/plugin-annotation/svelte, Vue:@embedpdf/plugin-annotation/vue) - Component now uses
forDocument(documentId)to get document-scoped annotation capability selectionMenuprop type changed toAnnotationSelectionMenuRenderFnfor better type safety- Bounding box constraints now use unscaled page dimensions (scale is applied internally)
- Now requires
- Annotation Hooks:
- All hooks now work with document-scoped capabilities via
forDocument() - Components automatically scope operations to the provided
documentId
- All hooks now work with document-scoped capabilities via
New Features
- Per-document annotation storage and management
- Per-document active tool tracking
- Document lifecycle hooks for automatic state initialization and cleanup
forDocument()method for document-scoped operations
- All Actions: All annotation actions now require a
@embedpdf/[email protected]
Major Changes
-
#279 by @bobsingor – ## Multi-Document Support
The attachment plugin now supports accessing attachments from multiple documents.
Breaking Changes
- Methods: All methods now accept an optional
documentIdparameter and operate on the active document by default:getAttachments(documentId?)- Returns attachments for the specified or active documentdownloadAttachment(attachment, documentId?)- Downloads attachment from the specified or active document
- Capability: Added
forDocument(documentId)method that returnsAttachmentScopefor document-specific operations.
Framework-Specific Changes (React/Preact, Svelte, Vue)
- Hooks:
- Added Svelte hooks support (
@embedpdf/plugin-attachment/svelte) - All hooks work with document-scoped capabilities via
forDocument()
- Added Svelte hooks support (
New Features
AttachmentScopeinterface for document-scoped attachment operations- Support for accessing attachments from any document, not just the active one
- Methods: All methods now accept an optional
@embedpdf/[email protected]
Major Changes
-
#279 by @bobsingor – ## Multi-Document Support
The bookmark plugin now supports accessing bookmarks from multiple documents.
Breaking Changes
- Methods:
getBookmarks()now accepts an optionaldocumentIdparameter and operates on the active document by default. - Capability: Added
forDocument(documentId)method that returnsBookmarkScopefor document-specific operations.
Framework-Specific Changes (React/Preact, Svelte, Vue)
- Hooks:
- Added Svelte hooks support (
@embedpdf/plugin-bookmark/svelte) - All hooks work with document-scoped capabilities via
forDocument()
- Added Svelte hooks support (
New Features
BookmarkScopeinterface for document-scoped bookmark operations- Support for accessing bookmarks from any document, not just the active one
- Methods:
@embedpdf/[email protected]
Major Changes
-
#279 by @bobsingor – ## Multi-Document Support
The capture plugin now supports multiple documents with per-document state management.
Breaking Changes
- CaptureAreaEvent: Now includes
documentIdfield. All capture events are scoped to a specific document. - RegisterMarqueeOnPageOptions: Now requires
documentIdfield to specify which document the marquee capture should be registered for. - CaptureCapability:
- Removed
onMarqueeCaptureActiveChangeevent hook - Added
onStateChangeevent hook that emitsStateChangeEventwithdocumentIdand state - Added
getState()method to get current document state - Added
forDocument(documentId: string)method that returns aCaptureScopefor document-specific operations
- Removed
- State Management: Plugin now maintains per-document state with
CaptureDocumentStatetrackingisMarqueeCaptureActiveper document.
Framework-Specific Changes (React/Preact, Svelte, Vue)
- MarqueeCapture Component:
- Now requires
documentIdprop (React/Preact:@embedpdf/plugin-capture/react, Svelte:@embedpdf/plugin-capture/svelte, Vue:@embedpdf/plugin-capture/vue) scaleprop is now optional - if not provided, uses document state scale- Component now uses
useDocumentStatehook to get document scale automatically
- Now requires
- useCapture Hook:
- Now requires
documentIdparameter:useCapture(documentId) - Returns document-scoped capture state and operations
- Now requires
New Features
CaptureScopeinterface for document-scoped operations- Per-document marquee capture state tracking
- Document lifecycle management with automatic state initialization and cleanup
forDocument()method for operating on specific documents
- CaptureAreaEvent: Now includes
@embedpdf/[email protected]
Major Changes
-
#279 by @bobsingor – ## Multi-Document Support
The commands plugin now supports command registration and execution with document awareness.
Breaking Changes
- Plugin Architecture: Complete rewrite to support command registration, execution tracking, and state management.
- Command Execution: Commands now receive document context and can...
Release v1.5.0
@embedpdf/[email protected]
Minor Changes
-
#238 by @0xbe7a – Add optional form widget rendering to the render pipeline.
What changed
-
@embedpdf/models
PdfRenderPageOptionsnow supportswithForms?: booleanto request drawing interactive form widgets.
-
@embedpdf/engines
PdfiumEngine.renderPageandrenderPageRecthonorwithForms.
When enabled, the engine initializes the page form handle and callsFPDF_FFLDrawwith the correct device transform.- New helper
computeFormDrawParams(matrix, rect, pageSize, rotation)calculates start offsets and sizes forFPDF_FFLDraw.
-
@embedpdf/plugin-render
- New plugin config flags:
withForms?: boolean(defaultfalse)withAnnotations?: boolean(defaultfalse)
- The plugin merges per-call options with plugin defaults so callers can set once at init or override per call.
- New plugin config flags:
-
@embedpdf/[email protected]
Minor Changes
-
#238 by @0xbe7a – Add optional form widget rendering to the render pipeline.
What changed
-
@embedpdf/models
PdfRenderPageOptionsnow supportswithForms?: booleanto request drawing interactive form widgets.
-
@embedpdf/engines
PdfiumEngine.renderPageandrenderPageRecthonorwithForms.
When enabled, the engine initializes the page form handle and callsFPDF_FFLDrawwith the correct device transform.- New helper
computeFormDrawParams(matrix, rect, pageSize, rotation)calculates start offsets and sizes forFPDF_FFLDraw.
-
@embedpdf/plugin-render
- New plugin config flags:
withForms?: boolean(defaultfalse)withAnnotations?: boolean(defaultfalse)
- The plugin merges per-call options with plugin defaults so callers can set once at init or override per call.
- New plugin config flags:
-
@embedpdf/[email protected]
Minor Changes
-
#238 by @0xbe7a – Add optional form widget rendering to the render pipeline.
What changed
-
@embedpdf/models
PdfRenderPageOptionsnow supportswithForms?: booleanto request drawing interactive form widgets.
-
@embedpdf/engines
PdfiumEngine.renderPageandrenderPageRecthonorwithForms.
When enabled, the engine initializes the page form handle and callsFPDF_FFLDrawwith the correct device transform.- New helper
computeFormDrawParams(matrix, rect, pageSize, rotation)calculates start offsets and sizes forFPDF_FFLDraw.
-
@embedpdf/plugin-render
- New plugin config flags:
withForms?: boolean(defaultfalse)withAnnotations?: boolean(defaultfalse)
- The plugin merges per-call options with plugin defaults so callers can set once at init or override per call.
- New plugin config flags:
-
@embedpdf/[email protected]
Patch Changes
- #236 by @eposha – Increase zoom precision from two decimals to three (changed rounding from
/100to/1000) to improve smoother zoom granularity and reduce jumpy transitions.
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
Release v1.4.1
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update Svelte hooks (
useCapability,useCoreState,usePlugin) to return reactive$stateobjects instead of computed getters for better integration with Svelte 5's reactivity model.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
usePdfiumEnginehook to return a reactive$stateobject directly, simplifying state management for consumers.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – feat: Add Svelte 5 adapter (
/svelteexport) for the Capture plugin. Includes Rune-based hooks (useCapture,useCaptureCapability,useCapturePlugin) and theMarqueeCapture.sveltecomponent.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
Download.sveltecomponent to correctly access plugin and capability instances from the refactored hooks.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
FullscreenProvider.sveltecomponent anduseFullscreenhook to work with the refactored Svelte core hooks, returning reactive state objects.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update provider components (
GlobalPointerProvider,PagePointerProvider) and hooks (useInteractionManager,useCursor,usePointerHandlers,useIsPageExclusive) to use the refactored Svelte core hooks and return reactive state objects.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
FilePicker.sveltecomponent to correctly access the loader capability instance from the refactored hook.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
usePanhook to return a reactive state object, aligning with the core hook refactoring.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
Rotate.sveltecomponent anduseRotatehook to work with the refactored Svelte core hooks and return a reactive state object.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
Scroller.sveltecomponent anduseScrollhook to use refactored core hooks and return a reactive state object. Introduced sharedRenderPagePropstype. Adjusted Vue components accordingly.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
SearchLayer.sveltecomponent anduseSearchhook to use refactored core hooks and return a reactive state object.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
CopyToClipboard.svelteandSelectionLayer.sveltecomponents to correctly access plugin/capability instances from refactored hooks.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
useSpreadhook to return a reactive state object, aligning with the core hook refactoring.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
ThumbImg.svelteandThumbnailsPane.sveltecomponents to correctly access plugin/capability instances from refactored hooks.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
TileImg.svelteandTilingLayer.sveltecomponents to correctly access capability/core state instances from refactored hooks.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
Viewport.sveltecomponent anduseViewportRefhook to use refactored core hooks. IntroduceduseViewportScrollActivityhook returning reactive state. Renamed internal hook file.
@embedpdf/[email protected]
Patch Changes
- #234 by @bobsingor – refactor(svelte): Update
MarqueeZoom.svelte,PinchWrapper.sveltecomponents anduseZoom,usePinchhooks to work with refactored core hooks and return reactive state objects.
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
Release v1.4.0
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useRegistry,usePlugin,useCapability,useCoreState) and components (EmbedPDF,AutoMount,NestedWrapper). Enhanced coreStoreto prevent dispatches within reducers. Thanks to @andrewrisse for the Svelte integration work!
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) withPdfEngineProvidercomponent and Rune-based hooks (useEngineContext,useEngine,usePdfiumEngine). Removed deprecated mock engine. Thanks to @andrewrisse!
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useExportPlugin,useExportCapability) andDownload.svelteutility component.
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useFullscreen, etc.) andFullscreenProvider.sveltewrapper component.
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useInteractionManager,useCursor,usePointerHandlers,useIsPageExclusive) and provider components (GlobalPointerProvider.svelte,PagePointerProvider.svelte). Thanks to @andrewrisse for adding the Svelte adapter!
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useLoaderPlugin,useLoaderCapability) andFilePicker.svelteutility component. Thanks to @andrewrisse for the Svelte integration!
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (usePan, etc.) andPanMode.svelteutility component.
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (usePrintPlugin,usePrintCapability) andPrintFrame.svelteutility component.
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useRenderPlugin,useRenderCapability) andRenderLayer.sveltecomponent. Thanks to @andrewrisse for implementing the Svelte render layer!
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useRotate, etc.) andRotate.sveltecomponent.
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useScroll, etc.) andScroller.sveltecomponent. Thanks to @andrewrisse for adding the Svelte adapter and hooks!
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useSearch, etc.) andSearchLayer.sveltecomponent. Fixed initial state in shared hook.
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useSelectionPlugin,useSelectionCapability),SelectionLayer.sveltecomponent, andCopyToClipboard.svelteutility.
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useSpread, etc.).
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useThumbnailPlugin,useThumbnailCapability) and components (ThumbnailsPane.svelte,ThumbImg.svelte).
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useTilingPlugin,useTilingCapability) and components (TilingLayer.svelte,TileImg.svelte). Thanks to @andrewrisse for adding the Svelte components!
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useViewportPlugin,useViewportCapability,useViewportRef) andViewport.sveltecomponent. Thanks to @andrewrisse for the Svelte integration!
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Add Svelte 5 adapter (
/svelteexport) with Rune-based hooks (useZoom,usePinch), components (MarqueeZoom.svelte,PinchWrapper.svelte), and fix for initialization timing. Thanks to @andrewrisse for adding the Svelte components and hooks!
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
Minor Changes
- #222 by @andrewrisse – feat: Update build system for Svelte 5 support. Added Svelte compilation via
@sveltejs/vite-plugin-svelteand introducedSvelteDtsResolverusingsvelte2tsxto generate accurate TypeScript declarations for.sveltefiles. Adjusted Vite config generation for Svelte output.
Release v1.3.16
@embedpdf/[email protected]
Patch Changes
fa0e3a8by @bobsingor – Guard against late callbacks after registry teardown
@embedpdf/[email protected]
Patch Changes
fa0e3a8by @bobsingor – Guard against late callbacks after registry teardown
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
Release v1.3.15
@embedpdf/[email protected]
Patch Changes
@embedpdf/[email protected]
Patch Changes
d64672dby @bobsingor – Prevent resize handling after cleanup in useViewportRef
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
Release v1.3.14
@embedpdf/[email protected]
Patch Changes
-
fb323eaby @bobsingor – Update event type definitions for vue annotation handlers -
867c84fby @bobsingor – Add blend mode styling to Vue annotation components
@embedpdf/[email protected]
Patch Changes
- #212 by @bobsingor – Add reactive state for marquee capture mode
@embedpdf/[email protected]
Patch Changes
d4092eaby @bobsingor – Removed preventDefault() from pointer and touch event handlers in CounterRotateContainer to ensure buttons remain functional on mobile and tablet devices. Now only stopPropagation() is used to prevent event propagation without interfering with native click generation.
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
@embedpdf/[email protected]
Release v1.3.13
@embedpdf/[email protected]
Patch Changes
-
#209 by @bobsingor – Introduces a deepToRaw utility to recursively unwrap Vue refs/reactives, and applies it to annotation rendering to prevent unnecessary re-renders.
-
#208 by @bobsingor – Introduces Vue components for annotation features, including annotation containers, layers, paint layers, and annotation types (circle, square, ink, etc.). Integrates annotation tools into the Vue-Vuetify example, updates toolbar and application logic to support annotation mode, and refactors shared annotation types for better modularity. Also adds supporting hooks and utilities for annotation interaction and state management.
@embedpdf/[email protected]
Patch Changes
- #209 by @bobsingor – Refactor Vue render-layer to improve image URL management
@embedpdf/[email protected]
Patch Changes
- #209 by @bobsingor – Refactor tile refresh logic and cleanup tile image components
@embedpdf/[email protected]
Patch Changes
e5d4729by @bobsingor – Updates MenuWrapperProps and counter-rotate-container.vue to use lowercase event handler props for pointer and touch events