@rhc-office/sdk 6.6.256

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 (126) hide show
  1. package/README.md +176 -0
  2. package/dist/api/annotation-tool.d.ts +127 -0
  3. package/dist/api/annotation-tool.d.ts.map +1 -0
  4. package/dist/api/callbacks.d.ts +25 -0
  5. package/dist/api/callbacks.d.ts.map +1 -0
  6. package/dist/api/common.d.ts +83 -0
  7. package/dist/api/common.d.ts.map +1 -0
  8. package/dist/api/crypto-tool.d.ts +9 -0
  9. package/dist/api/crypto-tool.d.ts.map +1 -0
  10. package/dist/api/digital-sign-environment.d.ts +100 -0
  11. package/dist/api/digital-sign-environment.d.ts.map +1 -0
  12. package/dist/api/document-sdk.d.ts +111 -0
  13. package/dist/api/document-sdk.d.ts.map +1 -0
  14. package/dist/api/document-tool.d.ts +68 -0
  15. package/dist/api/document-tool.d.ts.map +1 -0
  16. package/dist/api/ekey-tool.d.ts +8 -0
  17. package/dist/api/ekey-tool.d.ts.map +1 -0
  18. package/dist/api/extension-tool.d.ts +5 -0
  19. package/dist/api/extension-tool.d.ts.map +1 -0
  20. package/dist/api/find-tool.d.ts +6 -0
  21. package/dist/api/find-tool.d.ts.map +1 -0
  22. package/dist/api/menu-visibility.d.ts +16 -0
  23. package/dist/api/menu-visibility.d.ts.map +1 -0
  24. package/dist/api/networking-tool.d.ts +7 -0
  25. package/dist/api/networking-tool.d.ts.map +1 -0
  26. package/dist/api/page-tool.d.ts +28 -0
  27. package/dist/api/page-tool.d.ts.map +1 -0
  28. package/dist/api/pdf-formfiller.d.ts +12 -0
  29. package/dist/api/pdf-formfiller.d.ts.map +1 -0
  30. package/dist/api/review-tool.d.ts +71 -0
  31. package/dist/api/review-tool.d.ts.map +1 -0
  32. package/dist/api/sign-server.d.ts +32 -0
  33. package/dist/api/sign-server.d.ts.map +1 -0
  34. package/dist/api/sign-tool.d.ts +31 -0
  35. package/dist/api/sign-tool.d.ts.map +1 -0
  36. package/dist/api/symbology-tool.d.ts +4 -0
  37. package/dist/api/symbology-tool.d.ts.map +1 -0
  38. package/dist/api/template-sign.d.ts +88 -0
  39. package/dist/api/template-sign.d.ts.map +1 -0
  40. package/dist/api/ui-tool.d.ts +35 -0
  41. package/dist/api/ui-tool.d.ts.map +1 -0
  42. package/dist/api/watermark.d.ts +25 -0
  43. package/dist/api/watermark.d.ts.map +1 -0
  44. package/dist/index.d.ts +23 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +1061 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/index.umd.cjs +2 -0
  49. package/dist/index.umd.cjs.map +1 -0
  50. package/dist/tools/DocumentToolImpl.d.ts +27 -0
  51. package/dist/tools/DocumentToolImpl.d.ts.map +1 -0
  52. package/dist/tools/FindToolImpl.d.ts +10 -0
  53. package/dist/tools/FindToolImpl.d.ts.map +1 -0
  54. package/dist/tools/NetworkingToolImpl.d.ts +10 -0
  55. package/dist/tools/NetworkingToolImpl.d.ts.map +1 -0
  56. package/dist/tools/PageToolImpl.d.ts +31 -0
  57. package/dist/tools/PageToolImpl.d.ts.map +1 -0
  58. package/dist/tools/PdfFormFillerImpl.d.ts +13 -0
  59. package/dist/tools/PdfFormFillerImpl.d.ts.map +1 -0
  60. package/dist/tools/Phase1ToolPlaceholder.d.ts +5 -0
  61. package/dist/tools/Phase1ToolPlaceholder.d.ts.map +1 -0
  62. package/dist/tools/SDKValueObjects.d.ts +55 -0
  63. package/dist/tools/SDKValueObjects.d.ts.map +1 -0
  64. package/dist/tools/UIToolImpl.d.ts +31 -0
  65. package/dist/tools/UIToolImpl.d.ts.map +1 -0
  66. package/dist/tools/index.d.ts +9 -0
  67. package/dist/tools/index.d.ts.map +1 -0
  68. package/dist/viewer/AdapterProtocol.d.ts +78 -0
  69. package/dist/viewer/AdapterProtocol.d.ts.map +1 -0
  70. package/dist/viewer/BridgeToolAdapter.d.ts +23 -0
  71. package/dist/viewer/BridgeToolAdapter.d.ts.map +1 -0
  72. package/dist/viewer/DocumentSDK.d.ts +85 -0
  73. package/dist/viewer/DocumentSDK.d.ts.map +1 -0
  74. package/dist/viewer/ReaderBridgeClient.d.ts +31 -0
  75. package/dist/viewer/ReaderBridgeClient.d.ts.map +1 -0
  76. package/dist/viewer/ReaderConfiguration.d.ts +11 -0
  77. package/dist/viewer/ReaderConfiguration.d.ts.map +1 -0
  78. package/dist/viewer/ReaderScriptLoader.d.ts +10 -0
  79. package/dist/viewer/ReaderScriptLoader.d.ts.map +1 -0
  80. package/dist/viewer/ReaderStateStore.d.ts +21 -0
  81. package/dist/viewer/ReaderStateStore.d.ts.map +1 -0
  82. package/dist/viewer/SdkCallbackRegistry.d.ts +18 -0
  83. package/dist/viewer/SdkCallbackRegistry.d.ts.map +1 -0
  84. package/dist/viewer/index.d.ts +2 -0
  85. package/dist/viewer/index.d.ts.map +1 -0
  86. package/package.json +48 -0
  87. package/src/api/annotation-tool.ts +199 -0
  88. package/src/api/callbacks.ts +59 -0
  89. package/src/api/common.ts +117 -0
  90. package/src/api/crypto-tool.ts +10 -0
  91. package/src/api/digital-sign-environment.ts +411 -0
  92. package/src/api/document-sdk.ts +152 -0
  93. package/src/api/document-tool.ts +106 -0
  94. package/src/api/ekey-tool.ts +11 -0
  95. package/src/api/extension-tool.ts +5 -0
  96. package/src/api/find-tool.ts +7 -0
  97. package/src/api/menu-visibility.ts +17 -0
  98. package/src/api/networking-tool.ts +9 -0
  99. package/src/api/page-tool.ts +56 -0
  100. package/src/api/pdf-formfiller.ts +13 -0
  101. package/src/api/review-tool.ts +105 -0
  102. package/src/api/sign-server.ts +53 -0
  103. package/src/api/sign-tool.ts +50 -0
  104. package/src/api/symbology-tool.ts +11 -0
  105. package/src/api/template-sign.ts +102 -0
  106. package/src/api/ui-tool.ts +66 -0
  107. package/src/api/watermark.ts +35 -0
  108. package/src/index.ts +22 -0
  109. package/src/tools/DocumentToolImpl.ts +158 -0
  110. package/src/tools/FindToolImpl.ts +32 -0
  111. package/src/tools/NetworkingToolImpl.ts +36 -0
  112. package/src/tools/PageToolImpl.ts +181 -0
  113. package/src/tools/PdfFormFillerImpl.ts +67 -0
  114. package/src/tools/Phase1ToolPlaceholder.ts +35 -0
  115. package/src/tools/SDKValueObjects.ts +172 -0
  116. package/src/tools/UIToolImpl.ts +145 -0
  117. package/src/tools/index.ts +8 -0
  118. package/src/viewer/AdapterProtocol.ts +114 -0
  119. package/src/viewer/BridgeToolAdapter.ts +137 -0
  120. package/src/viewer/DocumentSDK.ts +688 -0
  121. package/src/viewer/ReaderBridgeClient.ts +216 -0
  122. package/src/viewer/ReaderConfiguration.ts +59 -0
  123. package/src/viewer/ReaderScriptLoader.ts +130 -0
  124. package/src/viewer/ReaderStateStore.ts +55 -0
  125. package/src/viewer/SdkCallbackRegistry.ts +89 -0
  126. package/src/viewer/index.ts +1 -0
@@ -0,0 +1,158 @@
1
+ import type { DocumentClosedCallback, DocumentSavedCallback } from '../api/callbacks';
2
+ import type { DocumentTool } from '../api/document-tool';
3
+ import {
4
+ createBridgeToolAdapter,
5
+ type BridgeToolAdapterContext,
6
+ type BridgeToolDescriptor,
7
+ } from '../viewer/BridgeToolAdapter';
8
+
9
+ const DOCUMENT_TOOL_DESCRIPTOR: BridgeToolDescriptor = {
10
+ addDocumentOpenedCallback: {
11
+ kind: 'callbackRegister',
12
+ callback: (callbacks, args) => {
13
+ const callback = args[0];
14
+ if (typeof callback === 'function') {
15
+ callbacks.documentOpened.push(callback as (status: string, error: string) => void);
16
+ }
17
+ },
18
+ },
19
+ addDocumentSavedCallback: {
20
+ kind: 'callbackRegister',
21
+ callback: (callbacks, args) => {
22
+ const callback = args[0];
23
+ if (typeof callback === 'function') {
24
+ callbacks.documentSaved.push(callback as DocumentSavedCallback);
25
+ }
26
+ },
27
+ },
28
+ addDocumentClosedCallback: {
29
+ kind: 'callbackRegister',
30
+ callback: (callbacks, args) => {
31
+ const callback = args[0];
32
+ if (typeof callback === 'function') {
33
+ callbacks.documentClosed.push(callback as DocumentClosedCallback);
34
+ }
35
+ },
36
+ },
37
+ openPDFDocument: { kind: 'callbackQuery', adapterMethod: 'open' },
38
+ openPdfDocument: { kind: 'callbackQuery', adapterMethod: 'open' },
39
+ openOFDDocument: { kind: 'callbackQuery', adapterMethod: 'open' },
40
+ openOfdDocument: { kind: 'callbackQuery', adapterMethod: 'open' },
41
+ openOfficeDocument: { kind: 'callbackQuery', adapterMethod: 'open' },
42
+ openImageDocument: { kind: 'callbackQuery', adapterMethod: 'open' },
43
+ openTextDocument: { kind: 'callbackQuery', adapterMethod: 'open' },
44
+ openFromLocalStorage: { kind: 'command' },
45
+ setUploadUrl: { kind: 'command' },
46
+ save: { kind: 'callbackQuery' },
47
+ saveAs: { kind: 'query' },
48
+ getDocumentContent: {
49
+ kind: 'callbackQuery',
50
+ mapCallbackResult: (result) => {
51
+ const content = result as { fileCacheId?: string; fileBuffer?: ArrayBuffer };
52
+ return [content?.fileCacheId, content?.fileBuffer];
53
+ },
54
+ },
55
+ closeDocument: { kind: 'callbackQuery' },
56
+ isDocumentOpened: {
57
+ kind: 'stateGetter',
58
+ state: (state) => state.documentOpened,
59
+ },
60
+ isDocumentModified: {
61
+ kind: 'stateGetter',
62
+ state: (state) => state.documentModified,
63
+ },
64
+ print: { kind: 'command' },
65
+ createPreview: { kind: 'command' },
66
+ };
67
+
68
+ export class DocumentToolImpl implements DocumentTool {
69
+ private readonly adapter: DocumentTool;
70
+
71
+ constructor(context: BridgeToolAdapterContext) {
72
+ this.adapter = createBridgeToolAdapter<DocumentTool>(
73
+ 'document',
74
+ DOCUMENT_TOOL_DESCRIPTOR,
75
+ context,
76
+ );
77
+ }
78
+
79
+ addDocumentOpenedCallback: DocumentTool['addDocumentOpenedCallback'] = (callback) => {
80
+ return this.adapter.addDocumentOpenedCallback(callback);
81
+ };
82
+
83
+ addDocumentSavedCallback: DocumentTool['addDocumentSavedCallback'] = (callback) => {
84
+ return this.adapter.addDocumentSavedCallback(callback);
85
+ };
86
+
87
+ addDocumentClosedCallback: DocumentTool['addDocumentClosedCallback'] = (callback) => {
88
+ return this.adapter.addDocumentClosedCallback(callback);
89
+ };
90
+
91
+ openPDFDocument: DocumentTool['openPDFDocument'] = (options, onDocumentOpened) => {
92
+ return this.adapter.openPDFDocument(options, onDocumentOpened);
93
+ };
94
+
95
+ openPdfDocument: DocumentTool['openPdfDocument'] = (options, onDocumentOpened) => {
96
+ return this.adapter.openPdfDocument(options, onDocumentOpened);
97
+ };
98
+
99
+ openOFDDocument: DocumentTool['openOFDDocument'] = (options, onDocumentOpened) => {
100
+ return this.adapter.openOFDDocument(options, onDocumentOpened);
101
+ };
102
+
103
+ openOfdDocument: DocumentTool['openOfdDocument'] = (options, onDocumentOpened) => {
104
+ return this.adapter.openOfdDocument(options, onDocumentOpened);
105
+ };
106
+
107
+ openOfficeDocument: DocumentTool['openOfficeDocument'] = (options, onDocumentOpened) => {
108
+ return this.adapter.openOfficeDocument(options, onDocumentOpened);
109
+ };
110
+
111
+ openImageDocument: DocumentTool['openImageDocument'] = (options, onDocumentOpened) => {
112
+ return this.adapter.openImageDocument(options, onDocumentOpened);
113
+ };
114
+
115
+ openTextDocument: DocumentTool['openTextDocument'] = (options, onDocumentOpened) => {
116
+ return this.adapter.openTextDocument(options, onDocumentOpened);
117
+ };
118
+
119
+ openFromLocalStorage: DocumentTool['openFromLocalStorage'] = () => {
120
+ return this.adapter.openFromLocalStorage();
121
+ };
122
+
123
+ setUploadUrl: DocumentTool['setUploadUrl'] = (uploadUrl) => {
124
+ return this.adapter.setUploadUrl(uploadUrl);
125
+ };
126
+
127
+ save: DocumentTool['save'] = (uploadUrl, onSavedCallback, options) => {
128
+ return this.adapter.save(uploadUrl, onSavedCallback, options);
129
+ };
130
+
131
+ saveAs: DocumentTool['saveAs'] = (options) => {
132
+ return this.adapter.saveAs(options);
133
+ };
134
+
135
+ getDocumentContent: DocumentTool['getDocumentContent'] = (onDocumentContent) => {
136
+ return this.adapter.getDocumentContent(onDocumentContent);
137
+ };
138
+
139
+ closeDocument: DocumentTool['closeDocument'] = (discardModify, onClose, options) => {
140
+ return this.adapter.closeDocument(discardModify, onClose, options);
141
+ };
142
+
143
+ isDocumentOpened: DocumentTool['isDocumentOpened'] = () => {
144
+ return this.adapter.isDocumentOpened();
145
+ };
146
+
147
+ isDocumentModified: DocumentTool['isDocumentModified'] = () => {
148
+ return this.adapter.isDocumentModified();
149
+ };
150
+
151
+ print: DocumentTool['print'] = () => {
152
+ return this.adapter.print();
153
+ };
154
+
155
+ createPreview: DocumentTool['createPreview'] = (serverUrl, options) => {
156
+ return this.adapter.createPreview(serverUrl, options);
157
+ };
158
+ }
@@ -0,0 +1,32 @@
1
+ import type { FindTool } from '../api/find-tool';
2
+ import {
3
+ createBridgeToolAdapter,
4
+ type BridgeToolAdapterContext,
5
+ type BridgeToolDescriptor,
6
+ } from '../viewer/BridgeToolAdapter';
7
+
8
+ const FIND_TOOL_DESCRIPTOR: BridgeToolDescriptor = {
9
+ clearFind: { kind: 'command' },
10
+ findNext: { kind: 'command' },
11
+ findPrevious: { kind: 'command' },
12
+ };
13
+
14
+ export class FindToolImpl implements FindTool {
15
+ private readonly adapter: FindTool;
16
+
17
+ constructor(context: BridgeToolAdapterContext) {
18
+ this.adapter = createBridgeToolAdapter<FindTool>('find', FIND_TOOL_DESCRIPTOR, context);
19
+ }
20
+
21
+ clearFind: FindTool['clearFind'] = () => {
22
+ return this.adapter.clearFind();
23
+ };
24
+
25
+ findNext: FindTool['findNext'] = (queryText) => {
26
+ return this.adapter.findNext(queryText);
27
+ };
28
+
29
+ findPrevious: FindTool['findPrevious'] = (queryText) => {
30
+ return this.adapter.findPrevious(queryText);
31
+ };
32
+ }
@@ -0,0 +1,36 @@
1
+ import type { NetworkingTool } from '../api/networking-tool';
2
+ import {
3
+ createBridgeToolAdapter,
4
+ type BridgeToolAdapterContext,
5
+ type BridgeToolDescriptor,
6
+ } from '../viewer/BridgeToolAdapter';
7
+
8
+ const NETWORKING_TOOL_DESCRIPTOR: BridgeToolDescriptor = {
9
+ configFileUpload: { kind: 'command' },
10
+ setHttpHeaders: { kind: 'command' },
11
+ setHttpFormFields: { kind: 'command' },
12
+ };
13
+
14
+ export class NetworkingToolImpl implements NetworkingTool {
15
+ private readonly adapter: NetworkingTool;
16
+
17
+ constructor(context: BridgeToolAdapterContext) {
18
+ this.adapter = createBridgeToolAdapter<NetworkingTool>(
19
+ 'networking',
20
+ NETWORKING_TOOL_DESCRIPTOR,
21
+ context,
22
+ );
23
+ }
24
+
25
+ configFileUpload: NetworkingTool['configFileUpload'] = (options) => {
26
+ return this.adapter.configFileUpload(options);
27
+ };
28
+
29
+ setHttpHeaders: NetworkingTool['setHttpHeaders'] = (headers) => {
30
+ return this.adapter.setHttpHeaders(headers);
31
+ };
32
+
33
+ setHttpFormFields: NetworkingTool['setHttpFormFields'] = (fields) => {
34
+ return this.adapter.setHttpFormFields(fields);
35
+ };
36
+ }
@@ -0,0 +1,181 @@
1
+ import type {
2
+ PageChangeCallback,
3
+ PageCountCallback,
4
+ PageIndexGetCallback,
5
+ PageModeChangeCallback,
6
+ } from '../api/callbacks';
7
+ import type { PageTool } from '../api/page-tool';
8
+ import {
9
+ createBridgeToolAdapter,
10
+ type BridgeToolAdapterContext,
11
+ type BridgeToolDescriptor,
12
+ } from '../viewer/BridgeToolAdapter';
13
+
14
+ const createPageToolDescriptor = (context: BridgeToolAdapterContext): BridgeToolDescriptor => ({
15
+ addPageChangeCallback: {
16
+ kind: 'callbackRegister',
17
+ callback: (callbacks, args) => {
18
+ const callback = args[0];
19
+ if (typeof callback === 'function') {
20
+ callbacks.pageChange.push(callback as PageChangeCallback);
21
+ }
22
+ },
23
+ },
24
+ addPageModeChangeCallback: {
25
+ kind: 'callbackRegister',
26
+ callback: (callbacks, args) => {
27
+ const callback = args[0];
28
+ if (typeof callback === 'function') {
29
+ callbacks.pageModeChange.push(callback as PageModeChangeCallback);
30
+ }
31
+ },
32
+ },
33
+ getPageCount: {
34
+ kind: 'callbackRegister',
35
+ callback: (callbacks, args) => {
36
+ void callbacks;
37
+ const callback = args[0];
38
+ if (typeof callback === 'function') {
39
+ (callback as PageCountCallback)(context.state.snapshot().pageCount);
40
+ }
41
+ },
42
+ },
43
+ getPageIndex: {
44
+ kind: 'callbackRegister',
45
+ callback: (callbacks, args) => {
46
+ void callbacks;
47
+ const callback = args[0];
48
+ if (typeof callback === 'function') {
49
+ (callback as PageIndexGetCallback)(context.state.snapshot().pageIndex);
50
+ }
51
+ },
52
+ },
53
+ setSinglePageViewMode: { kind: 'command' },
54
+ setTwoPagesViewMode: { kind: 'command' },
55
+ setPageScrollVertical: { kind: 'command' },
56
+ setPageScrollHorizontal: { kind: 'command' },
57
+ setPageCursorPanDrag: { kind: 'command' },
58
+ setPageCursorTextSelect: { kind: 'command' },
59
+ rotateCW: { kind: 'command' },
60
+ rotateCCW: { kind: 'command' },
61
+ autoFitPage: { kind: 'command' },
62
+ fitPageSize: { kind: 'command' },
63
+ fitPageWidth: { kind: 'command' },
64
+ fitPageHeight: { kind: 'command' },
65
+ increasePageScale: { kind: 'command' },
66
+ decreasePageScale: { kind: 'command' },
67
+ setPageScale: { kind: 'command' },
68
+ setPageBlendColor: { kind: 'command' },
69
+ gotoPage: { kind: 'command' },
70
+ gotoNextPage: { kind: 'command' },
71
+ gotoPreviousPage: { kind: 'command' },
72
+ rotatePage: { kind: 'command' },
73
+ });
74
+
75
+ export class PageToolImpl implements PageTool {
76
+ private readonly adapter: PageTool;
77
+
78
+ constructor(context: BridgeToolAdapterContext) {
79
+ this.adapter = createBridgeToolAdapter<PageTool>(
80
+ 'page',
81
+ createPageToolDescriptor(context),
82
+ context,
83
+ );
84
+ }
85
+
86
+ addPageChangeCallback: PageTool['addPageChangeCallback'] = (callback) => {
87
+ return this.adapter.addPageChangeCallback(callback);
88
+ };
89
+
90
+ addPageModeChangeCallback: PageTool['addPageModeChangeCallback'] = (callback) => {
91
+ return this.adapter.addPageModeChangeCallback(callback);
92
+ };
93
+
94
+ getPageCount: PageTool['getPageCount'] = (callback) => {
95
+ return this.adapter.getPageCount(callback);
96
+ };
97
+
98
+ getPageIndex: PageTool['getPageIndex'] = (callback) => {
99
+ return this.adapter.getPageIndex(callback);
100
+ };
101
+
102
+ setSinglePageViewMode: PageTool['setSinglePageViewMode'] = () => {
103
+ return this.adapter.setSinglePageViewMode();
104
+ };
105
+
106
+ setTwoPagesViewMode: PageTool['setTwoPagesViewMode'] = () => {
107
+ return this.adapter.setTwoPagesViewMode();
108
+ };
109
+
110
+ setPageScrollVertical: PageTool['setPageScrollVertical'] = () => {
111
+ return this.adapter.setPageScrollVertical();
112
+ };
113
+
114
+ setPageScrollHorizontal: PageTool['setPageScrollHorizontal'] = () => {
115
+ return this.adapter.setPageScrollHorizontal();
116
+ };
117
+
118
+ setPageCursorPanDrag: PageTool['setPageCursorPanDrag'] = () => {
119
+ return this.adapter.setPageCursorPanDrag();
120
+ };
121
+
122
+ setPageCursorTextSelect: PageTool['setPageCursorTextSelect'] = () => {
123
+ return this.adapter.setPageCursorTextSelect();
124
+ };
125
+
126
+ rotateCW: PageTool['rotateCW'] = () => {
127
+ return this.adapter.rotateCW();
128
+ };
129
+
130
+ rotateCCW: PageTool['rotateCCW'] = () => {
131
+ return this.adapter.rotateCCW();
132
+ };
133
+
134
+ autoFitPage: PageTool['autoFitPage'] = () => {
135
+ return this.adapter.autoFitPage();
136
+ };
137
+
138
+ fitPageSize: PageTool['fitPageSize'] = () => {
139
+ return this.adapter.fitPageSize();
140
+ };
141
+
142
+ fitPageWidth: PageTool['fitPageWidth'] = () => {
143
+ return this.adapter.fitPageWidth();
144
+ };
145
+
146
+ fitPageHeight: PageTool['fitPageHeight'] = () => {
147
+ return this.adapter.fitPageHeight();
148
+ };
149
+
150
+ increasePageScale: PageTool['increasePageScale'] = () => {
151
+ return this.adapter.increasePageScale();
152
+ };
153
+
154
+ decreasePageScale: PageTool['decreasePageScale'] = () => {
155
+ return this.adapter.decreasePageScale();
156
+ };
157
+
158
+ setPageScale: PageTool['setPageScale'] = (scale) => {
159
+ return this.adapter.setPageScale(scale);
160
+ };
161
+
162
+ setPageBlendColor: PageTool['setPageBlendColor'] = (r, g, b, alpha) => {
163
+ return this.adapter.setPageBlendColor(r, g, b, alpha);
164
+ };
165
+
166
+ gotoPage: PageTool['gotoPage'] = (pageIndex, x, y) => {
167
+ return this.adapter.gotoPage(pageIndex, x, y);
168
+ };
169
+
170
+ gotoNextPage: PageTool['gotoNextPage'] = () => {
171
+ return this.adapter.gotoNextPage();
172
+ };
173
+
174
+ gotoPreviousPage: PageTool['gotoPreviousPage'] = () => {
175
+ return this.adapter.gotoPreviousPage();
176
+ };
177
+
178
+ rotatePage: PageTool['rotatePage'] = (rotation) => {
179
+ return this.adapter.rotatePage(rotation);
180
+ };
181
+ }
@@ -0,0 +1,67 @@
1
+ import type { PdfFormFiller } from '../api/pdf-formfiller';
2
+ import {
3
+ createBridgeToolAdapter,
4
+ type BridgeToolAdapterContext,
5
+ type BridgeToolDescriptor,
6
+ } from '../viewer/BridgeToolAdapter';
7
+
8
+ interface PdfFormKeyValueField {
9
+ key: string;
10
+ value: string;
11
+ }
12
+
13
+ const PDF_FORM_FILLER_TOOL_DESCRIPTOR: BridgeToolDescriptor = {
14
+ open: { kind: 'command' },
15
+ setFormFieldValue: { kind: 'command' },
16
+ setFormFieldReadonly: { kind: 'command' },
17
+ commit: {
18
+ kind: 'callbackQuery',
19
+ mapCallbackResult: () => [],
20
+ },
21
+ clear: {
22
+ kind: 'callbackQuery',
23
+ mapCallbackResult: () => [],
24
+ },
25
+ toKeyValue: {
26
+ kind: 'callbackQuery',
27
+ mapCallbackResult: (result) => {
28
+ return [Array.isArray(result) ? (result as PdfFormKeyValueField[]) : []];
29
+ },
30
+ },
31
+ };
32
+
33
+ export class PdfFormFillerImpl implements PdfFormFiller {
34
+ private readonly adapter: PdfFormFiller;
35
+
36
+ constructor(context: BridgeToolAdapterContext) {
37
+ this.adapter = createBridgeToolAdapter<PdfFormFiller>(
38
+ 'pdfFormFiller',
39
+ PDF_FORM_FILLER_TOOL_DESCRIPTOR,
40
+ context,
41
+ );
42
+ }
43
+
44
+ open: PdfFormFiller['open'] = () => {
45
+ return this.adapter.open();
46
+ };
47
+
48
+ setFormFieldValue: PdfFormFiller['setFormFieldValue'] = (filedName, value) => {
49
+ return this.adapter.setFormFieldValue(filedName, value);
50
+ };
51
+
52
+ setFormFieldReadonly: PdfFormFiller['setFormFieldReadonly'] = (filedName, readOnly) => {
53
+ return this.adapter.setFormFieldReadonly(filedName, readOnly);
54
+ };
55
+
56
+ commit: PdfFormFiller['commit'] = (callback) => {
57
+ return this.adapter.commit(callback);
58
+ };
59
+
60
+ clear: PdfFormFiller['clear'] = (callback) => {
61
+ return this.adapter.clear(callback);
62
+ };
63
+
64
+ toKeyValue: PdfFormFiller['toKeyValue'] = (callback) => {
65
+ return this.adapter.toKeyValue(callback);
66
+ };
67
+ }
@@ -0,0 +1,35 @@
1
+ export class SDKPhase1NotImplementedError extends Error {
2
+ constructor(toolName: string, methodName: string) {
3
+ super(`[Phase 1] ${toolName}.${methodName} is not implemented yet.`);
4
+ this.name = 'SDKPhase1NotImplementedError';
5
+ }
6
+ }
7
+
8
+ const createThrowingMethod = (toolName: string, methodName: string) => {
9
+ return (): never => {
10
+ throw new SDKPhase1NotImplementedError(toolName, methodName);
11
+ };
12
+ };
13
+
14
+ export const createPhase1ToolPlaceholder = <T extends object>(toolName: string): T => {
15
+ return new Proxy(
16
+ {},
17
+ {
18
+ get: (_target, property): unknown => {
19
+ if (property === 'then') {
20
+ return undefined;
21
+ }
22
+
23
+ if (typeof property === 'symbol') {
24
+ if (property === Symbol.toStringTag) {
25
+ return toolName;
26
+ }
27
+
28
+ return undefined;
29
+ }
30
+
31
+ return createThrowingMethod(toolName, property);
32
+ },
33
+ },
34
+ ) as T;
35
+ };
@@ -0,0 +1,172 @@
1
+ import type {
2
+ DigitalSealPosition,
3
+ DigitalSignType,
4
+ IDigitalSignOptions,
5
+ IKVField,
6
+ } from '../api/common';
7
+
8
+ const PAGE_RANGE_SEPARATOR_PATTERN = /\s*,\s*/;
9
+ const PAGE_BOUNDS_SEPARATOR_PATTERN = /\s*-\s*/;
10
+
11
+ const normalizePageNumber = (value: string): number | null => {
12
+ const parsedValue = Number.parseInt(value.trim(), 10);
13
+ if (!Number.isFinite(parsedValue) || parsedValue <= 0) {
14
+ return null;
15
+ }
16
+
17
+ return parsedValue;
18
+ };
19
+
20
+ const expandPageRangeSegment = (segment: string): number[] => {
21
+ const bounds = segment.split(PAGE_BOUNDS_SEPARATOR_PATTERN);
22
+ if (bounds.length === 1) {
23
+ const pageNumber = normalizePageNumber(bounds[0] ?? '');
24
+ return pageNumber ? [pageNumber] : [];
25
+ }
26
+
27
+ const startPage = normalizePageNumber(bounds[0] ?? '');
28
+ const endPage = normalizePageNumber(bounds[1] ?? '');
29
+ if (!startPage || !endPage || endPage < startPage) {
30
+ return [];
31
+ }
32
+
33
+ return Array.from({ length: endPage - startPage + 1 }, (_, index) => startPage + index);
34
+ };
35
+
36
+ const parsePageRanges = (pageRange?: string): number[] => {
37
+ if (!pageRange) {
38
+ return [];
39
+ }
40
+
41
+ const pageNumbers = pageRange
42
+ .split(PAGE_RANGE_SEPARATOR_PATTERN)
43
+ .flatMap((segment) => expandPageRangeSegment(segment))
44
+ .filter((value, index, source) => source.indexOf(value) === index);
45
+
46
+ return pageNumbers;
47
+ };
48
+
49
+ export class KVField implements IKVField {
50
+ key?: string;
51
+ value?: string;
52
+ description?: string;
53
+
54
+ constructor(key: string, value: string, description?: string) {
55
+ this.key = key;
56
+ this.value = value;
57
+ this.description = description;
58
+ }
59
+
60
+ readonly setFieldName = (name: string): void => {
61
+ this.key = name;
62
+ };
63
+
64
+ readonly setFieldValue = (value: string): void => {
65
+ this.value = value;
66
+ };
67
+
68
+ readonly setDescription = (description?: string): void => {
69
+ this.description = description;
70
+ };
71
+ }
72
+
73
+ export class DigitalSignOptions implements IDigitalSignOptions {
74
+ pageRange?: string;
75
+ page?: number;
76
+ pageX?: number;
77
+ pageY?: number;
78
+ signReason?: string;
79
+ signLocation?: string;
80
+ signUserData?: string;
81
+ fields: IKVField[] = [];
82
+ defaultStampPassword?: string;
83
+ defaultKeystorePassword?: string;
84
+ keywordText?: string | undefined;
85
+ keywordTextFixedPositions:
86
+ | {
87
+ pageIndex?: number;
88
+ firstOccurrence?: boolean;
89
+ position?: number;
90
+ }[]
91
+ | undefined = undefined;
92
+ keywordOffsetX = 0;
93
+ keywordOffsetY = 0;
94
+ bookmarkName?: string | undefined;
95
+ bookmarkOffsetX = 0;
96
+ bookmarkOffsetY = 0;
97
+ printMargin?: number = 0;
98
+ grayscaleSealImage = false;
99
+
100
+ private signType: DigitalSignType = 0;
101
+ private sealPosition: DigitalSealPosition = 0;
102
+
103
+ readonly getSignType = (): DigitalSignType => {
104
+ return this.signType;
105
+ };
106
+
107
+ readonly setSignType = (signType: DigitalSignType): void => {
108
+ this.signType = signType;
109
+ };
110
+
111
+ readonly isCrossPageSideSign = (): boolean => {
112
+ return this.signType === 2 || this.signType === 3;
113
+ };
114
+
115
+ readonly getSealPosition = (): DigitalSealPosition => {
116
+ return this.sealPosition;
117
+ };
118
+
119
+ readonly setSignOnPageSides = (signType: number): void => {
120
+ if (signType >= 0 && signType <= 3) {
121
+ this.signType = signType as DigitalSignType;
122
+ }
123
+ };
124
+
125
+ readonly setSignPositionOnPageSides = (position: number): void => {
126
+ this.sealPosition = position;
127
+ };
128
+
129
+ readonly setPageRange = (text: string): void => {
130
+ this.pageRange = text;
131
+ };
132
+
133
+ readonly getPageRange = (): string | undefined => {
134
+ return this.pageRange;
135
+ };
136
+
137
+ readonly getPageRanges = (): number[] => {
138
+ return parsePageRanges(this.pageRange);
139
+ };
140
+
141
+ readonly setSignUserData = (signUserData: string): void => {
142
+ this.signUserData = signUserData;
143
+ };
144
+
145
+ readonly setPrintMargin = (margin: number): void => {
146
+ this.printMargin = margin;
147
+ };
148
+
149
+ readonly getPrintMargin = (): number => {
150
+ return this.printMargin ?? 0;
151
+ };
152
+
153
+ readonly setSignReason = (reason: string): void => {
154
+ this.signReason = reason;
155
+ };
156
+
157
+ readonly getSignReason = (): string | undefined => {
158
+ return this.signReason;
159
+ };
160
+
161
+ readonly setSignLocation = (location: string): void => {
162
+ this.signLocation = location;
163
+ };
164
+
165
+ readonly getSignLocation = (): string | undefined => {
166
+ return this.signLocation;
167
+ };
168
+
169
+ readonly setDefaultStampPassword = (password: string): void => {
170
+ this.defaultStampPassword = password;
171
+ };
172
+ }