teamsync-pdf-viewer 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `teamsync-pdf-viewer` are documented here.
|
|
4
4
|
|
|
5
|
+
## [1.3.1] — 2026-09-04
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **Settings & Keyboard Shortcuts Customization**: Fixed settings search bar filtering across all shortcuts and general settings. Resolved shortcut recording and key normalization for US keyboard layouts (such as `Meta+Shift+=` and `Meta+Shift+-`), enabled `Escape` cancellation, and added a "Reset to Defaults" option.
|
|
9
|
+
- **Cross-Component Shortcut Synchronization**: Replaced local hook state with a shared reactive pub/sub store backed by `window.localStorage`, ensuring shortcut customizations sync immediately across all active viewer instances.
|
|
10
|
+
- **Viewer-Side Shortcut Execution**: Enabled full shortcut action handling in the viewer, adding support for `SEARCH` (`Meta+F`), `FILE_PICKER` (`Meta+O`), `COPY` (`Meta+C`), and `PASTE` (`Meta+V`) alongside existing rotation and undo/redo shortcuts. Added an "Open PDF..." action to the header menu and window-level shortcut handling.
|
|
11
|
+
- **Sidebar Search Bar**: Enabled immediate search on `Enter` keypress, immediate query and highlight clearing, auto-focus when opening the search tab, and corrected box-sizing to eliminate container overflow.
|
|
12
|
+
|
|
5
13
|
## [1.3.0] — 2026-09-04
|
|
6
14
|
|
|
7
15
|
### Added
|
|
@@ -13,6 +13,7 @@ interface HeaderProps {
|
|
|
13
13
|
onZoomIn: () => void;
|
|
14
14
|
onZoomOut: () => void;
|
|
15
15
|
onZoomSet: (scale: number) => void;
|
|
16
|
+
onOpenFile?: () => void;
|
|
16
17
|
onDownload: () => void;
|
|
17
18
|
onFullScreen: () => void;
|
|
18
19
|
onSaveAs: () => void;
|
|
@@ -32,5 +33,5 @@ interface HeaderProps {
|
|
|
32
33
|
plugins?: ViewerPlugin[];
|
|
33
34
|
permissions?: SDKPermissions;
|
|
34
35
|
}
|
|
35
|
-
export default function Header({ activeTab, setActiveTab, leftSidebarOpen, setLeftSidebarOpen, rightSidebarOpen, setRightSidebarOpen: _setRightSidebarOpen, sidebarTab, scale, onZoomIn, onZoomOut, onZoomSet, onDownload, onFullScreen, onSaveAs, onPrint, onOpenSettings, onOpenAbout, onOpenSidebarTab, pageTransition, setPageTransition, pageLayout, setPageLayout, rotation, setRotation, signatureCount, enableAnnotations, enableSign, plugins, permissions }: HeaderProps): React.JSX.Element;
|
|
36
|
+
export default function Header({ activeTab, setActiveTab, leftSidebarOpen, setLeftSidebarOpen, rightSidebarOpen, setRightSidebarOpen: _setRightSidebarOpen, sidebarTab, scale, onZoomIn, onZoomOut, onZoomSet, onOpenFile, onDownload, onFullScreen, onSaveAs, onPrint, onOpenSettings, onOpenAbout, onOpenSidebarTab, pageTransition, setPageTransition, pageLayout, setPageLayout, rotation, setRotation, signatureCount, enableAnnotations, enableSign, plugins, permissions }: HeaderProps): React.JSX.Element;
|
|
36
37
|
export {};
|
|
@@ -5,9 +5,19 @@ export interface Shortcut {
|
|
|
5
5
|
defaultCommand: string;
|
|
6
6
|
command: string;
|
|
7
7
|
}
|
|
8
|
+
export declare const DEFAULT_SHORTCUTS: Shortcut[];
|
|
9
|
+
export declare function loadStoredShortcuts(): Shortcut[];
|
|
8
10
|
export declare function useShortcuts(): {
|
|
9
11
|
shortcuts: Shortcut[];
|
|
10
12
|
updateShortcut: (action: ActionType, newCommand: string) => void;
|
|
13
|
+
resetShortcuts: () => void;
|
|
11
14
|
getCommand: (action: ActionType) => string;
|
|
12
15
|
};
|
|
16
|
+
export interface ParsedCommand {
|
|
17
|
+
meta: boolean;
|
|
18
|
+
shift: boolean;
|
|
19
|
+
alt: boolean;
|
|
20
|
+
key: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function parseCommandString(commandString: string): ParsedCommand;
|
|
13
23
|
export declare function matchShortcut(e: KeyboardEvent, commandString: string): boolean;
|