@rhc-office/sdk 6.6.266 → 6.6.351

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.
Files changed (92) hide show
  1. package/README.md +1 -5
  2. package/dist/api/annotation-tool.d.ts +162 -102
  3. package/dist/api/annotation-tool.d.ts.map +1 -1
  4. package/dist/api/callbacks.d.ts +32 -6
  5. package/dist/api/callbacks.d.ts.map +1 -1
  6. package/dist/api/document-sdk.d.ts +6 -5
  7. package/dist/api/document-sdk.d.ts.map +1 -1
  8. package/dist/api/document-tool.d.ts +16 -11
  9. package/dist/api/document-tool.d.ts.map +1 -1
  10. package/dist/api/menu-visibility.d.ts +6 -1
  11. package/dist/api/menu-visibility.d.ts.map +1 -1
  12. package/dist/api/page-arrange-tool.d.ts +28 -0
  13. package/dist/api/page-arrange-tool.d.ts.map +1 -0
  14. package/dist/api/security-tool.d.ts +21 -0
  15. package/dist/api/security-tool.d.ts.map +1 -0
  16. package/dist/api/ui-tool.d.ts +19 -0
  17. package/dist/api/ui-tool.d.ts.map +1 -1
  18. package/dist/browser/document-viewer.js +1 -1
  19. package/dist/browser/document-viewer.js.map +1 -1
  20. package/dist/index.d.ts +3 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +730 -501
  23. package/dist/index.js.map +1 -1
  24. package/dist/index.umd.cjs +1 -1
  25. package/dist/index.umd.cjs.map +1 -1
  26. package/dist/tools/AnnotationToolImpl.d.ts +25 -0
  27. package/dist/tools/AnnotationToolImpl.d.ts.map +1 -0
  28. package/dist/tools/CryptoToolImpl.d.ts +9 -0
  29. package/dist/tools/CryptoToolImpl.d.ts.map +1 -0
  30. package/dist/tools/DigitalSignToolImpl.d.ts +27 -0
  31. package/dist/tools/DigitalSignToolImpl.d.ts.map +1 -0
  32. package/dist/tools/DocumentToolImpl.d.ts +1 -0
  33. package/dist/tools/DocumentToolImpl.d.ts.map +1 -1
  34. package/dist/tools/PageArrangeToolImpl.d.ts +21 -0
  35. package/dist/tools/PageArrangeToolImpl.d.ts.map +1 -0
  36. package/dist/tools/SecurityToolImpl.d.ts +12 -0
  37. package/dist/tools/SecurityToolImpl.d.ts.map +1 -0
  38. package/dist/tools/SignServerToolImpl.d.ts +19 -0
  39. package/dist/tools/SignServerToolImpl.d.ts.map +1 -0
  40. package/dist/tools/SymbologyToolImpl.d.ts +8 -0
  41. package/dist/tools/SymbologyToolImpl.d.ts.map +1 -0
  42. package/dist/tools/TemplateSignToolImpl.d.ts +13 -0
  43. package/dist/tools/TemplateSignToolImpl.d.ts.map +1 -0
  44. package/dist/tools/UIToolImpl.d.ts +13 -0
  45. package/dist/tools/UIToolImpl.d.ts.map +1 -1
  46. package/dist/tools/index.d.ts +8 -1
  47. package/dist/tools/index.d.ts.map +1 -1
  48. package/dist/viewer/AdapterProtocol.d.ts +3 -1
  49. package/dist/viewer/AdapterProtocol.d.ts.map +1 -1
  50. package/dist/viewer/BridgeToolAdapter.d.ts +1 -0
  51. package/dist/viewer/BridgeToolAdapter.d.ts.map +1 -1
  52. package/dist/viewer/DocumentSDK.d.ts +7 -5
  53. package/dist/viewer/DocumentSDK.d.ts.map +1 -1
  54. package/dist/viewer/ReaderBridgeClient.d.ts +3 -0
  55. package/dist/viewer/ReaderBridgeClient.d.ts.map +1 -1
  56. package/dist/viewer/ReaderConfiguration.d.ts +0 -1
  57. package/dist/viewer/ReaderConfiguration.d.ts.map +1 -1
  58. package/dist/viewer/ReaderStateStore.d.ts +2 -0
  59. package/dist/viewer/ReaderStateStore.d.ts.map +1 -1
  60. package/dist/viewer/SdkCallbackRegistry.d.ts +5 -2
  61. package/dist/viewer/SdkCallbackRegistry.d.ts.map +1 -1
  62. package/package.json +2 -2
  63. package/src/api/annotation-tool.ts +232 -146
  64. package/src/api/callbacks.ts +48 -7
  65. package/src/api/document-sdk.ts +9 -5
  66. package/src/api/document-tool.ts +25 -13
  67. package/src/api/menu-visibility.ts +10 -1
  68. package/src/api/page-arrange-tool.ts +67 -0
  69. package/src/api/security-tool.ts +32 -0
  70. package/src/api/ui-tool.ts +33 -0
  71. package/src/index.ts +3 -0
  72. package/src/tools/AnnotationToolImpl.ts +169 -0
  73. package/src/tools/CryptoToolImpl.ts +27 -0
  74. package/src/tools/DigitalSignToolImpl.ts +166 -0
  75. package/src/tools/DocumentToolImpl.ts +32 -6
  76. package/src/tools/PageArrangeToolImpl.ts +99 -0
  77. package/src/tools/SecurityToolImpl.ts +48 -0
  78. package/src/tools/SignServerToolImpl.ts +92 -0
  79. package/src/tools/SymbologyToolImpl.ts +34 -0
  80. package/src/tools/TemplateSignToolImpl.ts +51 -0
  81. package/src/tools/UIToolImpl.ts +98 -12
  82. package/src/tools/index.ts +8 -1
  83. package/src/viewer/AdapterProtocol.ts +4 -0
  84. package/src/viewer/BridgeToolAdapter.ts +11 -2
  85. package/src/viewer/DocumentSDK.ts +71 -144
  86. package/src/viewer/ReaderBridgeClient.ts +9 -0
  87. package/src/viewer/ReaderConfiguration.ts +0 -2
  88. package/src/viewer/ReaderStateStore.ts +13 -1
  89. package/src/viewer/SdkCallbackRegistry.ts +84 -6
  90. package/dist/tools/Phase1ToolPlaceholder.d.ts +0 -5
  91. package/dist/tools/Phase1ToolPlaceholder.d.ts.map +0 -1
  92. package/src/tools/Phase1ToolPlaceholder.ts +0 -35
@@ -0,0 +1,99 @@
1
+ import type { PageArrangeTool } from '../api/page-arrange-tool';
2
+ import {
3
+ createBridgeToolAdapter,
4
+ type BridgeToolAdapterContext,
5
+ type BridgeToolDescriptor,
6
+ } from '../viewer/BridgeToolAdapter';
7
+
8
+ const createPageArrangeToolDescriptor = (): BridgeToolDescriptor => ({
9
+ clearContent: { kind: 'command', returnsResult: true },
10
+ commit: { kind: 'command', returnsResult: true },
11
+ deletePages: { kind: 'command', returnsResult: true },
12
+ duplicatePages: { kind: 'command', returnsResult: true },
13
+ execute: { kind: 'command', returnsResult: true },
14
+ extractPages: { kind: 'command', returnsResult: true },
15
+ getSnapshot: { kind: 'query' },
16
+ importDocument: { kind: 'command', returnsResult: true },
17
+ moveAfter: { kind: 'command', returnsResult: true },
18
+ moveBefore: { kind: 'command', returnsResult: true },
19
+ newPage: { kind: 'command', returnsResult: true },
20
+ rotateLeft: { kind: 'command', returnsResult: true },
21
+ rotateRight: { kind: 'command', returnsResult: true },
22
+ undo: { kind: 'command', returnsResult: true },
23
+ });
24
+
25
+ const normalizePageArrangeBytes = (data: Uint8Array | ArrayBuffer): Uint8Array => {
26
+ if (data instanceof Uint8Array) {
27
+ return data;
28
+ }
29
+
30
+ return new Uint8Array(data);
31
+ };
32
+
33
+ export class PageArrangeToolImpl implements PageArrangeTool {
34
+ private readonly adapter: PageArrangeTool;
35
+
36
+ constructor(context: BridgeToolAdapterContext) {
37
+ this.adapter = createBridgeToolAdapter<PageArrangeTool>(
38
+ 'pageArrange',
39
+ createPageArrangeToolDescriptor(),
40
+ context,
41
+ );
42
+ }
43
+
44
+ getSnapshot: PageArrangeTool['getSnapshot'] = () => {
45
+ return this.adapter.getSnapshot();
46
+ };
47
+
48
+ execute: PageArrangeTool['execute'] = (action) => {
49
+ return this.adapter.execute(action);
50
+ };
51
+
52
+ newPage: PageArrangeTool['newPage'] = (index, options) => {
53
+ return this.adapter.newPage(index, options);
54
+ };
55
+
56
+ deletePages: PageArrangeTool['deletePages'] = (pageIndices) => {
57
+ return this.adapter.deletePages(pageIndices);
58
+ };
59
+
60
+ duplicatePages: PageArrangeTool['duplicatePages'] = (pageIndices, insertIndex) => {
61
+ return this.adapter.duplicatePages(pageIndices, insertIndex);
62
+ };
63
+
64
+ rotateLeft: PageArrangeTool['rotateLeft'] = (pageIndices) => {
65
+ return this.adapter.rotateLeft(pageIndices);
66
+ };
67
+
68
+ rotateRight: PageArrangeTool['rotateRight'] = (pageIndices) => {
69
+ return this.adapter.rotateRight(pageIndices);
70
+ };
71
+
72
+ clearContent: PageArrangeTool['clearContent'] = (pageIndices) => {
73
+ return this.adapter.clearContent(pageIndices);
74
+ };
75
+
76
+ moveBefore: PageArrangeTool['moveBefore'] = (pageIndices, targetIndex) => {
77
+ return this.adapter.moveBefore(pageIndices, targetIndex);
78
+ };
79
+
80
+ moveAfter: PageArrangeTool['moveAfter'] = (pageIndices, targetIndex) => {
81
+ return this.adapter.moveAfter(pageIndices, targetIndex);
82
+ };
83
+
84
+ importDocument: PageArrangeTool['importDocument'] = (data, options) => {
85
+ return this.adapter.importDocument(normalizePageArrangeBytes(data), options);
86
+ };
87
+
88
+ extractPages: PageArrangeTool['extractPages'] = (pageIndices, suggestedFileName) => {
89
+ return this.adapter.extractPages(pageIndices, suggestedFileName);
90
+ };
91
+
92
+ undo: PageArrangeTool['undo'] = () => {
93
+ return this.adapter.undo();
94
+ };
95
+
96
+ commit: PageArrangeTool['commit'] = () => {
97
+ return this.adapter.commit();
98
+ };
99
+ }
@@ -0,0 +1,48 @@
1
+ import type { SecurityTool } from '../api/security-tool';
2
+ import {
3
+ createBridgeToolAdapter,
4
+ type BridgeToolAdapterContext,
5
+ type BridgeToolDescriptor,
6
+ } from '../viewer/BridgeToolAdapter';
7
+
8
+ const SECURITY_TOOL_DESCRIPTOR: BridgeToolDescriptor = {
9
+ getSecuritySettings: { kind: 'query' },
10
+ isSecuritySettingsLocalEditable: { kind: 'query' },
11
+ setSecuritySettingsLocalEditable: { kind: 'query' },
12
+ setSecuritySettings: { kind: 'query' },
13
+ openSecuritySettingsDialog: { kind: 'command' },
14
+ };
15
+
16
+ export class SecurityToolImpl implements SecurityTool {
17
+ private readonly adapter: SecurityTool;
18
+
19
+ constructor(context: BridgeToolAdapterContext) {
20
+ this.adapter = createBridgeToolAdapter<SecurityTool>(
21
+ 'security',
22
+ SECURITY_TOOL_DESCRIPTOR,
23
+ context,
24
+ );
25
+ }
26
+
27
+ getSecuritySettings: SecurityTool['getSecuritySettings'] = () => {
28
+ return this.adapter.getSecuritySettings();
29
+ };
30
+
31
+ setSecuritySettings: SecurityTool['setSecuritySettings'] = (update) => {
32
+ return this.adapter.setSecuritySettings(update);
33
+ };
34
+
35
+ isSecuritySettingsLocalEditable: SecurityTool['isSecuritySettingsLocalEditable'] = () => {
36
+ return this.adapter.isSecuritySettingsLocalEditable();
37
+ };
38
+
39
+ setSecuritySettingsLocalEditable: SecurityTool['setSecuritySettingsLocalEditable'] = (
40
+ editable,
41
+ ) => {
42
+ return this.adapter.setSecuritySettingsLocalEditable(editable);
43
+ };
44
+
45
+ openSecuritySettingsDialog: SecurityTool['openSecuritySettingsDialog'] = () => {
46
+ return this.adapter.openSecuritySettingsDialog();
47
+ };
48
+ }
@@ -0,0 +1,92 @@
1
+ import type { SignServerAuthCallback, SignServerTool } from '../api/sign-server';
2
+ import {
3
+ createBridgeToolAdapter,
4
+ type BridgeToolAdapterContext,
5
+ type BridgeToolDescriptor,
6
+ } from '../viewer/BridgeToolAdapter';
7
+
8
+ const SIGN_SERVER_TOOL_DESCRIPTOR: BridgeToolDescriptor = {
9
+ setSignServer: { kind: 'command' },
10
+ addSignServerAuthCallback: {
11
+ kind: 'callbackRegister',
12
+ callback: (callbacks, args) => {
13
+ const callback = args[0];
14
+ if (typeof callback === 'function') {
15
+ callbacks.signServerAuth.push(callback as SignServerAuthCallback);
16
+ }
17
+ },
18
+ },
19
+ setSignServerDefaultLogin: { kind: 'command' },
20
+ setDefaultSignServerLogin: { kind: 'command' },
21
+ setSignServerDefaultPassword: { kind: 'command' },
22
+ setDefaultSignServerPassword: { kind: 'command' },
23
+ loginNTKOSignServer: { kind: 'command' },
24
+ loginSignServer: { kind: 'callbackQuery' },
25
+ signOutSignServer: { kind: 'command' },
26
+ isAuthenticatedOnSignServer: { kind: 'stateGetter', state: () => false },
27
+ setSignServerLoginFromUSBKey: { kind: 'command' },
28
+ setUserAuthSource: { kind: 'command' },
29
+ };
30
+
31
+ export class SignServerToolImpl implements SignServerTool {
32
+ private readonly adapter: SignServerTool;
33
+
34
+ constructor(context: BridgeToolAdapterContext) {
35
+ this.adapter = createBridgeToolAdapter<SignServerTool>(
36
+ 'signServer',
37
+ SIGN_SERVER_TOOL_DESCRIPTOR,
38
+ context,
39
+ );
40
+ }
41
+
42
+ setSignServer: SignServerTool['setSignServer'] = (signServer) => {
43
+ return this.adapter.setSignServer(signServer);
44
+ };
45
+
46
+ addSignServerAuthCallback: SignServerTool['addSignServerAuthCallback'] = (callback) => {
47
+ return this.adapter.addSignServerAuthCallback(callback);
48
+ };
49
+
50
+ setSignServerDefaultLogin: SignServerTool['setSignServerDefaultLogin'] = (login) => {
51
+ return this.adapter.setSignServerDefaultLogin(login);
52
+ };
53
+
54
+ setDefaultSignServerLogin: SignServerTool['setDefaultSignServerLogin'] = (login) => {
55
+ return this.adapter.setDefaultSignServerLogin(login);
56
+ };
57
+
58
+ setSignServerDefaultPassword: SignServerTool['setSignServerDefaultPassword'] = (password) => {
59
+ return this.adapter.setSignServerDefaultPassword(password);
60
+ };
61
+
62
+ setDefaultSignServerPassword: SignServerTool['setDefaultSignServerPassword'] = (password) => {
63
+ return this.adapter.setDefaultSignServerPassword(password);
64
+ };
65
+
66
+ loginNTKOSignServer: SignServerTool['loginNTKOSignServer'] = (serverAddress, login, password) => {
67
+ return this.adapter.loginNTKOSignServer(serverAddress, login, password);
68
+ };
69
+
70
+ loginSignServer: SignServerTool['loginSignServer'] = (server, login, password, onSuccess) => {
71
+ return this.adapter.loginSignServer(server, login, password, onSuccess);
72
+ };
73
+
74
+ signOutSignServer: SignServerTool['signOutSignServer'] = () => {
75
+ return this.adapter.signOutSignServer();
76
+ };
77
+
78
+ isAuthenticatedOnSignServer: SignServerTool['isAuthenticatedOnSignServer'] = () => {
79
+ return this.adapter.isAuthenticatedOnSignServer();
80
+ };
81
+
82
+ setSignServerLoginFromUSBKey: SignServerTool['setSignServerLoginFromUSBKey'] = (
83
+ enabled,
84
+ options,
85
+ ) => {
86
+ return this.adapter.setSignServerLoginFromUSBKey(enabled, options);
87
+ };
88
+
89
+ setUserAuthSource: SignServerTool['setUserAuthSource'] = (source) => {
90
+ return this.adapter.setUserAuthSource(source);
91
+ };
92
+ }
@@ -0,0 +1,34 @@
1
+ import type { SymbologyTool } from '../api/symbology-tool';
2
+ import {
3
+ createBridgeToolAdapter,
4
+ type BridgeToolAdapterContext,
5
+ type BridgeToolDescriptor,
6
+ } from '../viewer/BridgeToolAdapter';
7
+
8
+ const SYMBOLOGY_TOOL_DESCRIPTOR: BridgeToolDescriptor = {
9
+ createPDF417Barcode: { kind: 'command' },
10
+ };
11
+
12
+ export class SymbologyToolImpl implements SymbologyTool {
13
+ private readonly adapter: SymbologyTool;
14
+
15
+ constructor(context: BridgeToolAdapterContext) {
16
+ this.adapter = createBridgeToolAdapter<SymbologyTool>(
17
+ 'symbology',
18
+ SYMBOLOGY_TOOL_DESCRIPTOR,
19
+ context,
20
+ );
21
+ }
22
+
23
+ createPDF417Barcode: SymbologyTool['createPDF417Barcode'] = (
24
+ content,
25
+ pageIndex,
26
+ x,
27
+ y,
28
+ width,
29
+ height,
30
+ margin,
31
+ ) => {
32
+ return this.adapter.createPDF417Barcode(content, pageIndex, x, y, width, height, margin);
33
+ };
34
+ }
@@ -0,0 +1,51 @@
1
+ import type { TemplateSignTool } from '../api/template-sign';
2
+ import {
3
+ createBridgeToolAdapter,
4
+ type BridgeToolAdapterContext,
5
+ type BridgeToolDescriptor,
6
+ } from '../viewer/BridgeToolAdapter';
7
+
8
+ const TEMPLATE_SIGN_TOOL_DESCRIPTOR: BridgeToolDescriptor = {
9
+ setup: { kind: 'command' },
10
+ create: { kind: 'command' },
11
+ getMarkups: { kind: 'callbackQuery' },
12
+ removeMarkup: { kind: 'command' },
13
+ removeAllMarkups: { kind: 'command' },
14
+ sign: { kind: 'callbackQuery' },
15
+ };
16
+
17
+ export class TemplateSignToolImpl implements TemplateSignTool {
18
+ private readonly adapter: TemplateSignTool;
19
+
20
+ constructor(context: BridgeToolAdapterContext) {
21
+ this.adapter = createBridgeToolAdapter<TemplateSignTool>(
22
+ 'templateSign',
23
+ TEMPLATE_SIGN_TOOL_DESCRIPTOR,
24
+ context,
25
+ );
26
+ }
27
+
28
+ setup: TemplateSignTool['setup'] = (option) => {
29
+ return this.adapter.setup(option);
30
+ };
31
+
32
+ create: TemplateSignTool['create'] = (signType) => {
33
+ return this.adapter.create(signType);
34
+ };
35
+
36
+ getMarkups: TemplateSignTool['getMarkups'] = (callback) => {
37
+ return this.adapter.getMarkups(callback);
38
+ };
39
+
40
+ removeMarkup: TemplateSignTool['removeMarkup'] = (markupId, prompt) => {
41
+ return this.adapter.removeMarkup(markupId, prompt);
42
+ };
43
+
44
+ removeAllMarkups: TemplateSignTool['removeAllMarkups'] = (prompt) => {
45
+ return this.adapter.removeAllMarkups(prompt);
46
+ };
47
+
48
+ sign: TemplateSignTool['sign'] = (callback) => {
49
+ return this.adapter.sign(callback);
50
+ };
51
+ }
@@ -22,10 +22,22 @@ const createUIToolDescriptor = (context: BridgeToolAdapterContext): BridgeToolDe
22
22
  hideRibbonMenuItem: { kind: 'command' },
23
23
  showRibbonTitleBar: { kind: 'command' },
24
24
  hideRibbonTitleBar: { kind: 'command' },
25
+ showRibbonTabs: { kind: 'command' },
26
+ hideRibbonTabs: { kind: 'command' },
25
27
  selectRibbonMenu: { kind: 'command' },
28
+ setupRibbonMenuTab: { kind: 'command' },
29
+ showRibbonMenuTab: { kind: 'command' },
30
+ hideRibbonMenuTab: { kind: 'command' },
31
+ enableRibbonMenuTab: { kind: 'command' },
32
+ disableRibbonMenuTab: { kind: 'command' },
33
+ setupRibbonMenuItemState: { kind: 'command' },
34
+ enableRibbonMenuItem: { kind: 'command' },
35
+ disableRibbonMenuItem: { kind: 'command' },
26
36
  setRibbonMenuButtonStyle: { kind: 'command' },
27
37
  setWatermark: { kind: 'command' },
28
38
  setCompactMode: { kind: 'command' },
39
+ setRulerVisible: { kind: 'command' },
40
+ toggleSidebar: { kind: 'command' },
29
41
  enterBookViewMode: {
30
42
  kind: 'callbackQuery',
31
43
  mapCallbackResult: () => [],
@@ -48,35 +60,53 @@ export class UIToolImpl implements UITool {
48
60
  }
49
61
 
50
62
  showToolbarMenu: UITool['showToolbarMenu'] = () => {
51
- return this.adapter.showToolbarMenu();
63
+ this.warnLegacyRibbonMethod('showToolbarMenu', 'showRibbonMenu');
64
+ return this.showRibbonMenu();
52
65
  };
53
66
 
54
67
  hideToolbarMenu: UITool['hideToolbarMenu'] = () => {
55
- return this.adapter.hideToolbarMenu();
68
+ this.warnLegacyRibbonMethod('hideToolbarMenu', 'hideRibbonMenu');
69
+ return this.hideRibbonMenu();
56
70
  };
57
71
 
58
72
  setupToolbarMenu: UITool['setupToolbarMenu'] = (opt) => {
59
- return this.adapter.setupToolbarMenu(opt);
73
+ this.warnLegacyRibbonMethod(
74
+ 'setupToolbarMenu',
75
+ 'showRibbonMenu/hideRibbonMenu/setupRibbonMenuTab',
76
+ );
77
+ return this.setupRibbonMenu(opt);
60
78
  };
61
79
 
62
80
  showToolbarMenuItem: UITool['showToolbarMenuItem'] = (menuId) => {
63
- return this.adapter.showToolbarMenuItem(menuId);
81
+ this.warnLegacyRibbonMethod('showToolbarMenuItem', 'showRibbonMenuItem');
82
+ return this.showRibbonMenuItem(menuId);
64
83
  };
65
84
 
66
85
  hideToolbarMenuItem: UITool['hideToolbarMenuItem'] = (menuId) => {
67
- return this.adapter.hideToolbarMenuItem(menuId);
86
+ this.warnLegacyRibbonMethod('hideToolbarMenuItem', 'hideRibbonMenuItem');
87
+ return this.hideRibbonMenuItem(menuId);
68
88
  };
69
89
 
70
90
  setupRibbonMenu: UITool['setupRibbonMenu'] = (opt) => {
71
- return this.adapter.setupRibbonMenu(opt);
91
+ this.warnLegacyRibbonMethod(
92
+ 'setupRibbonMenu',
93
+ 'showRibbonMenu/hideRibbonMenu/setupRibbonMenuTab',
94
+ );
95
+ if (typeof opt === 'boolean') {
96
+ return opt ? this.showRibbonMenu() : this.hideRibbonMenu();
97
+ }
98
+
99
+ return this.setupRibbonMenuTab(opt.menu, { visible: opt.visible });
72
100
  };
73
101
 
74
102
  setupRibbonMenuItem: UITool['setupRibbonMenuItem'] = (menuId, visible, config) => {
75
- return this.adapter.setupRibbonMenuItem(menuId, visible, config);
103
+ this.warnLegacyRibbonMethod('setupRibbonMenuItem', 'setupRibbonMenuItemState');
104
+ return this.setupRibbonMenuItemState(menuId, { visible, config });
76
105
  };
77
106
 
78
107
  setupRibbonTitleBar: UITool['setupRibbonTitleBar'] = (visible) => {
79
- return this.adapter.setupRibbonTitleBar(visible);
108
+ this.warnLegacyRibbonMethod('setupRibbonTitleBar', 'showRibbonTabs/hideRibbonTabs');
109
+ return visible ? this.showRibbonTabs() : this.hideRibbonTabs();
80
110
  };
81
111
 
82
112
  showRibbonMenu: UITool['showRibbonMenu'] = () => {
@@ -88,25 +118,69 @@ export class UIToolImpl implements UITool {
88
118
  };
89
119
 
90
120
  showRibbonMenuItem: UITool['showRibbonMenuItem'] = (menuId, config) => {
91
- return this.adapter.showRibbonMenuItem(menuId, config);
121
+ this.warnLegacyRibbonMethod('showRibbonMenuItem', 'setupRibbonMenuItemState');
122
+ return this.setupRibbonMenuItemState(menuId, { visible: true, config });
92
123
  };
93
124
 
94
125
  hideRibbonMenuItem: UITool['hideRibbonMenuItem'] = (menuId, config) => {
95
- return this.adapter.hideRibbonMenuItem(menuId, config);
126
+ this.warnLegacyRibbonMethod('hideRibbonMenuItem', 'setupRibbonMenuItemState');
127
+ return this.setupRibbonMenuItemState(menuId, { visible: false, config });
96
128
  };
97
129
 
98
130
  showRibbonTitleBar: UITool['showRibbonTitleBar'] = () => {
99
- return this.adapter.showRibbonTitleBar();
131
+ this.warnLegacyRibbonMethod('showRibbonTitleBar', 'showRibbonTabs');
132
+ return this.showRibbonTabs();
100
133
  };
101
134
 
102
135
  hideRibbonTitleBar: UITool['hideRibbonTitleBar'] = () => {
103
- return this.adapter.hideRibbonTitleBar();
136
+ this.warnLegacyRibbonMethod('hideRibbonTitleBar', 'hideRibbonTabs');
137
+ return this.hideRibbonTabs();
138
+ };
139
+
140
+ showRibbonTabs: UITool['showRibbonTabs'] = () => {
141
+ return this.adapter.showRibbonTabs();
142
+ };
143
+
144
+ hideRibbonTabs: UITool['hideRibbonTabs'] = () => {
145
+ return this.adapter.hideRibbonTabs();
104
146
  };
105
147
 
106
148
  selectRibbonMenu: UITool['selectRibbonMenu'] = (menuId) => {
107
149
  return this.adapter.selectRibbonMenu(menuId);
108
150
  };
109
151
 
152
+ setupRibbonMenuTab: UITool['setupRibbonMenuTab'] = (menuId, state) => {
153
+ return this.adapter.setupRibbonMenuTab(menuId, state);
154
+ };
155
+
156
+ showRibbonMenuTab: UITool['showRibbonMenuTab'] = (menuId) => {
157
+ return this.adapter.showRibbonMenuTab(menuId);
158
+ };
159
+
160
+ hideRibbonMenuTab: UITool['hideRibbonMenuTab'] = (menuId) => {
161
+ return this.adapter.hideRibbonMenuTab(menuId);
162
+ };
163
+
164
+ enableRibbonMenuTab: UITool['enableRibbonMenuTab'] = (menuId) => {
165
+ return this.adapter.enableRibbonMenuTab(menuId);
166
+ };
167
+
168
+ disableRibbonMenuTab: UITool['disableRibbonMenuTab'] = (menuId) => {
169
+ return this.adapter.disableRibbonMenuTab(menuId);
170
+ };
171
+
172
+ setupRibbonMenuItemState: UITool['setupRibbonMenuItemState'] = (menuId, state) => {
173
+ return this.adapter.setupRibbonMenuItemState(menuId, state);
174
+ };
175
+
176
+ enableRibbonMenuItem: UITool['enableRibbonMenuItem'] = (menuId, config) => {
177
+ return this.setupRibbonMenuItemState(menuId, { disabled: false, config });
178
+ };
179
+
180
+ disableRibbonMenuItem: UITool['disableRibbonMenuItem'] = (menuId, config) => {
181
+ return this.setupRibbonMenuItemState(menuId, { disabled: true, config });
182
+ };
183
+
110
184
  setRibbonMenuButtonStyle: UITool['setRibbonMenuButtonStyle'] = (buttonId, buttonStyle) => {
111
185
  return this.adapter.setRibbonMenuButtonStyle(buttonId, buttonStyle);
112
186
  };
@@ -119,6 +193,14 @@ export class UIToolImpl implements UITool {
119
193
  return this.adapter.setCompactMode(compact);
120
194
  };
121
195
 
196
+ setRulerVisible: UITool['setRulerVisible'] = (visible) => {
197
+ return this.adapter.setRulerVisible(visible);
198
+ };
199
+
200
+ toggleSidebar: UITool['toggleSidebar'] = () => {
201
+ return this.adapter.toggleSidebar();
202
+ };
203
+
122
204
  enterBookViewMode: UITool['enterBookViewMode'] = (callback) => {
123
205
  return this.adapter.enterBookViewMode(callback);
124
206
  };
@@ -142,4 +224,8 @@ export class UIToolImpl implements UITool {
142
224
  invalidateView: UITool['invalidateView'] = () => {
143
225
  return this.adapter.invalidateView();
144
226
  };
227
+
228
+ private warnLegacyRibbonMethod(methodName: string, replacement: string): void {
229
+ console.warn(`[RHC Office SDK] ui.${methodName} is deprecated. Use ui.${replacement} instead.`);
230
+ }
145
231
  }
@@ -1,8 +1,15 @@
1
+ export * from './AnnotationToolImpl';
2
+ export * from './CryptoToolImpl';
3
+ export * from './DigitalSignToolImpl';
1
4
  export * from './DocumentToolImpl';
2
5
  export * from './FindToolImpl';
3
6
  export * from './NetworkingToolImpl';
7
+ export * from './PageArrangeToolImpl';
4
8
  export * from './PageToolImpl';
5
9
  export * from './PdfFormFillerImpl';
6
- export * from './Phase1ToolPlaceholder';
7
10
  export * from './SDKValueObjects';
11
+ export * from './SecurityToolImpl';
12
+ export * from './SignServerToolImpl';
13
+ export * from './SymbologyToolImpl';
14
+ export * from './TemplateSignToolImpl';
8
15
  export * from './UIToolImpl';
@@ -8,9 +8,11 @@ export const RHC_OFFICE_READER_ID_ATTRIBUTE = 'data-rhc-office-reader-id';
8
8
  export type AdapterToolName =
9
9
  | 'document'
10
10
  | 'page'
11
+ | 'pageArrange'
11
12
  | 'ui'
12
13
  | 'find'
13
14
  | 'annotation'
15
+ | 'security'
14
16
  | 'digitalSign'
15
17
  | 'signServer'
16
18
  | 'review'
@@ -82,6 +84,8 @@ export interface AdapterStatePatch {
82
84
  documentType?: string;
83
85
  annotationMode?: string;
84
86
  annotationEnabled?: boolean;
87
+ annotations?: unknown[];
88
+ digitalSignatures?: unknown[];
85
89
  extensionState?: 'connected' | 'disconnected';
86
90
  }
87
91
 
@@ -15,6 +15,7 @@ export interface BridgeToolMethodDescriptor {
15
15
  callback?: (callbacks: SdkCallbackRegistry, args: unknown[]) => void;
16
16
  mapCallbackResult?: (result: unknown) => unknown[];
17
17
  kind: BridgeMethodKind;
18
+ returnsResult?: boolean;
18
19
  state?: (state: ReturnType<ReaderStateStore['snapshot']>, args: unknown[]) => unknown;
19
20
  }
20
21
 
@@ -100,9 +101,17 @@ export const createBridgeToolAdapter = <T extends object>(
100
101
  return undefined;
101
102
  }
102
103
 
103
- void context.bridge
104
+ const commandRequest = context.bridge
104
105
  .request(tool, adapterMethod, normalizeParams(args))
105
- .catch(context.onAsyncError);
106
+ .catch((error): undefined => {
107
+ context.onAsyncError(error);
108
+ return undefined;
109
+ });
110
+ if (methodDescriptor.returnsResult) {
111
+ return commandRequest;
112
+ }
113
+
114
+ void commandRequest;
106
115
  return undefined;
107
116
  };
108
117
  },