@rhc-office/sdk 6.6.256 → 6.6.264

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/README.md CHANGED
@@ -1,6 +1,26 @@
1
- # RHC Office SDK
2
-
3
- `@rhc-office/sdk` 用于把 RHC Office 阅读器嵌入第三方 Web 应用,并通过统一工具接口控制文档、页面、UI、批注、网络上传和 PDF 表单填充等能力。
1
+ # 软航版式文档服务(RHC Office SDK
2
+
3
+ `@rhc-office/sdk` 是软航版式文档服务的 Web 端阅读器集成 SDK。它负责在第三方应用中加载阅读器、挂载阅读器 Web Component,并把本地或网络文档打开、网络文件保存回传、多文档阅读、页面控制、UI 配置、批注、打印、保存导出、PDF 表单填充、数字签章和审阅协同等能力封装成统一的工具接口,便于业务系统把阅读器嵌入到自己的门户、业务审批、档案管理、合同管理或在线预览流程中。
4
+
5
+ ## 功能特性
6
+
7
+ - 阅读器嵌入:在指定 DOM 容器中加载阅读器部署产物,创建 `<rhc-office-editor>`,并支持配置阅读模式、批注模式、签章模式、语言、主题、尺寸和菜单显示状态。
8
+ - 多格式文档打开:支持 PDF、OFD、Office、图片和文本类型,可通过远程 URL、Base64、`ArrayBuffer` 或本地文件入口打开文档。
9
+ - 网络文件集成:支持通过 `fileUrl` 打开业务系统中的远程文件,并通过 `uploadUrl`、HTTP headers、表单字段和文件字段名配置保存回传流程,适合对接对象存储、网盘、档案系统或业务后端。
10
+ - 多文档阅读视图:支持阅读器侧多文档打开和标签页式浏览,宿主应用可以按业务场景控制单文档或多文档工作流。
11
+ - 保存与导出:支持保存、另存为和导出,导出格式包含 PDF、PNG、JPEG、JPG、TIFF,并可配置页码范围、图片缩放倍率和 JPEG 质量。
12
+ - 页面与视图控制:支持跳页、上一页、下一页、缩放、适宽、适高、顺时针/逆时针旋转、单页/双页视图、横向/纵向滚动、书本视图和页面混合背景色。
13
+ - UI 配置:支持显示或隐藏 Ribbon 菜单、标题栏和工具区,切换紧凑模式、全屏模式、刷新视图,并可设置阅读器水印。
14
+ - 检索能力:支持清空检索结果、查找下一个和查找上一个,便于在宿主应用中接入统一搜索入口。
15
+ - 批注能力:支持进入/退出批注视图、文本批注、手写批注、图章批注、模板签标记、批注导入导出、批注列表查询、画笔样式配置、撤销、重做、清空以及保存批注。
16
+ - 打印与预览:提供阅读器侧打印和预览入口,可接入阅读器的高保真打印流程;OFD/PDF 场景可由阅读器生成适合系统打印的 PDF 输出,满足矢量化或版式保真打印需求。
17
+ - PDF 表单填充:支持打开表单填充模式、设置字段值、控制字段只读状态、提交、清空,并导出表单键值数据。
18
+ - 数字签章:支持签章参数配置、签章服务登录、USB Key/EKey 认证、外部印章服务、签章回调、签章列表读取、签章验签、签章信息展示和吊销检查等业务流程。
19
+ - 模板签与骑缝签:支持创建常规印模、单侧骑缝印模、对称骑缝印模和校核印模,支持列举、删除印模,并可按模板印模执行签章。
20
+ - 审阅协同:支持创建和打开审阅会话、管理审阅参与者和审阅文档、嵌入审阅视图、控制发言人,以及按参与者控制批注权限。
21
+ - 扩展和安全能力:支持浏览器扩展连接状态监听、安全 Provider 配置、签章/验签 Provider 管理,以及 PDF417 条码生成等扩展场景。
22
+ - 事件和状态:支持监听阅读器就绪、卸载、文档打开、保存、关闭、页码变化等事件,便于宿主应用同步业务状态。
23
+ - 数字签名环境配置:支持在挂载阅读器前注入签章默认参数和签章服务配置,便于不同业务系统统一签章环境。
4
24
 
5
25
  ## 安装
6
26
 
@@ -46,6 +66,46 @@ sdk.embedReader('reader-host', 'https://viewer.example.com/', {
46
66
 
47
67
  `appUrl` 通常指向阅读器部署地址。示例中的域名都是占位值,集成时请替换为你自己的阅读器部署地址。
48
68
 
69
+ ## Script 引入
70
+
71
+ 如果宿主页面不使用前端构建工具,可以直接引入预编译的浏览器版本:
72
+
73
+ ```html
74
+ <script src="https://unpkg.com/@rhc-office/sdk/dist/browser/document-viewer.js"></script>
75
+ <script>
76
+ const sdk = document.newDocumentSDK();
77
+
78
+ sdk.addReaderReadyCallback(function () {
79
+ sdk.getDocumentTool().openPDFDocument({
80
+ timestamp: Date.now(),
81
+ fileId: 'sample-pdf',
82
+ fileType: 'application/pdf',
83
+ fileName: 'sample.pdf',
84
+ fileUrl: 'https://example.com/sample.pdf',
85
+ });
86
+ });
87
+
88
+ sdk.embedReader('reader-host', 'https://viewer.example.com/', {
89
+ viewMode: 'View',
90
+ ribbonMenu: true,
91
+ ribbonTitle: true,
92
+ width: '100%',
93
+ height: '100%',
94
+ });
95
+ </script>
96
+ ```
97
+
98
+ 浏览器版本会把关键 SDK 入口直接暴露到 `document` 上:
99
+
100
+ - `document.newDocumentSDK(options?)`:创建新的 `DocumentSDK` 实例。
101
+ - `document.DocumentSDK`:访问 `DocumentSDK` 构造函数。
102
+ - `document.createNewDocumentSdk(options?)`:模块化 API 中同名工厂方法的浏览器全局入口。
103
+ - `document.WatermarkDisplay`、`document.DIGITAL_SIGN_DEFAULTS`:访问常用枚举和默认配置。
104
+ - `document.getDigitalSignEnvironment()`、`document.patchDigitalSignEnvironment()` 等:访问数字签名环境配置方法。
105
+ - `document.RHCOfficeSDK`:保留完整 namespace,便于统一枚举所有浏览器全局 SDK 入口。
106
+
107
+ 如果从 npm 包中自行托管该文件,预编译产物路径为 `node_modules/@rhc-office/sdk/dist/browser/document-viewer.js`。SDK 构建也会同步一份到本仓库文档站点的 `packages/docs/public/sdk/document-viewer.js`。
108
+
49
109
  ## 打开文档
50
110
 
51
111
  `DocumentTool` 支持 PDF、OFD、Office、图片和文本入口。常用字段如下:
@@ -26,10 +26,6 @@ export interface IReaderEmbedOptions {
26
26
  theme?: string;
27
27
  binder?: string;
28
28
  origin?: string;
29
- /**
30
- * 阅读器部署的地址
31
- */
32
- officeServer: string;
33
29
  /**
34
30
  * View: 阅读模式,Annotation: 批注模式,DigitalSign: 签章模式
35
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"document-sdk.d.ts","sourceRoot":"","sources":["../../src/api/document-sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document-sdk.d.ts","sourceRoot":"","sources":["../../src/api/document-sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var RHCOfficeSDK=function(g){"use strict";var M=(n=>(n.DEFAULT="default",n.COMPACT="compact",n.HIDE="none",n))(M||{});const V="RIGHT_CENTER",B="REGULAR_ESM",x="auto",I="__RHC_OFFICE_DIGITAL_SIGN_ENVIRONMENT__",K={defaults:{bjca:{pin:""},deviceType:"client",edgePosition:V,kol:{appId:"",appName:"",pin:"",serviceUrl:"",token:""},plugin:{pin:"",usbKeyType:14},rsaMode:x,signatureType:B},signServer:{authSource:"Password",defaultLogin:"",defaultPassword:"",defaultServer:"",kol:{appId:"",appName:"",serviceUrl:"",token:""},macAddress:"",token:"",usbKey:{checkCertificateBinding:!1,usbKeyType:14}}},H=n=>({bjca:{pin:n.bjca.pin},deviceType:n.deviceType,edgePosition:n.edgePosition,kol:{appId:n.kol.appId,appName:n.kol.appName,pin:n.kol.pin,serviceUrl:n.kol.serviceUrl,token:n.kol.token},plugin:{pin:n.plugin.pin,usbKeyType:n.plugin.usbKeyType},rsaMode:n.rsaMode,signatureType:n.signatureType}),G=n=>({authSource:n.authSource,defaultLogin:n.defaultLogin,defaultPassword:n.defaultPassword,defaultServer:n.defaultServer,kol:{appId:n.kol.appId,appName:n.kol.appName,serviceUrl:n.kol.serviceUrl,token:n.kol.token},macAddress:n.macAddress,token:n.token,usbKey:{checkCertificateBinding:n.usbKey.checkCertificateBinding,usbKeyType:n.usbKey.usbKeyType}}),S=n=>({defaults:H(n.defaults),signServer:G(n.signServer)}),q=n=>({defaults:n.defaults?{...n.defaults,bjca:n.defaults.bjca?{...n.defaults.bjca}:void 0,kol:n.defaults.kol?{...n.defaults.kol}:void 0,plugin:n.defaults.plugin?{...n.defaults.plugin}:void 0}:void 0,signServer:n.signServer?{...n.signServer,kol:n.signServer.kol?{...n.signServer.kol}:void 0,usbKey:n.signServer.usbKey?{...n.signServer.usbKey}:void 0}:void 0}),de=(n,t)=>{var e,i,r,a,o,s,d,h,u,l,m,c,f,p,k,T,E,R,A,D;return t?{bjca:{pin:(i=(e=t.bjca)==null?void 0:e.pin)!=null?i:n.bjca.pin},deviceType:(r=t.deviceType)!=null?r:n.deviceType,edgePosition:(a=t.edgePosition)!=null?a:n.edgePosition,kol:{appId:(s=(o=t.kol)==null?void 0:o.appId)!=null?s:n.kol.appId,appName:(h=(d=t.kol)==null?void 0:d.appName)!=null?h:n.kol.appName,pin:(l=(u=t.kol)==null?void 0:u.pin)!=null?l:n.kol.pin,serviceUrl:(c=(m=t.kol)==null?void 0:m.serviceUrl)!=null?c:n.kol.serviceUrl,token:(p=(f=t.kol)==null?void 0:f.token)!=null?p:n.kol.token},plugin:{pin:(T=(k=t.plugin)==null?void 0:k.pin)!=null?T:n.plugin.pin,usbKeyType:(R=(E=t.plugin)==null?void 0:E.usbKeyType)!=null?R:n.plugin.usbKeyType},rsaMode:(A=t.rsaMode)!=null?A:n.rsaMode,signatureType:(D=t.signatureType)!=null?D:n.signatureType}:H(n)},le=(n,t)=>{var e,i,r,a,o,s,d,h,u,l,m,c,f,p,k,T,E,R;return t?{authSource:(e=t.authSource)!=null?e:n.authSource,defaultLogin:(i=t.defaultLogin)!=null?i:n.defaultLogin,defaultPassword:(r=t.defaultPassword)!=null?r:n.defaultPassword,defaultServer:(a=t.defaultServer)!=null?a:n.defaultServer,kol:{appId:(s=(o=t.kol)==null?void 0:o.appId)!=null?s:n.kol.appId,appName:(h=(d=t.kol)==null?void 0:d.appName)!=null?h:n.kol.appName,serviceUrl:(l=(u=t.kol)==null?void 0:u.serviceUrl)!=null?l:n.kol.serviceUrl,token:(c=(m=t.kol)==null?void 0:m.token)!=null?c:n.kol.token},macAddress:(f=t.macAddress)!=null?f:n.macAddress,token:(p=t.token)!=null?p:n.token,usbKey:{checkCertificateBinding:(T=(k=t.usbKey)==null?void 0:k.checkCertificateBinding)!=null?T:n.usbKey.checkCertificateBinding,usbKeyType:(R=(E=t.usbKey)==null?void 0:E.usbKeyType)!=null?R:n.usbKey.usbKeyType}}:G(n)},Q=(n,t)=>({defaults:de(n.defaults,t.defaults),signServer:le(n.signServer,t.signServer)}),ce=(n,t)=>{var e,i,r,a,o,s,d,h,u,l,m,c,f,p,k,T,E,R,A,D;return{defaults:n.defaults||t.defaults?{...n.defaults,...t.defaults,bjca:{...(i=(e=n.defaults)==null?void 0:e.bjca)!=null?i:{},...(a=(r=t.defaults)==null?void 0:r.bjca)!=null?a:{}},kol:{...(s=(o=n.defaults)==null?void 0:o.kol)!=null?s:{},...(h=(d=t.defaults)==null?void 0:d.kol)!=null?h:{}},plugin:{...(l=(u=n.defaults)==null?void 0:u.plugin)!=null?l:{},...(c=(m=t.defaults)==null?void 0:m.plugin)!=null?c:{}}}:void 0,signServer:n.signServer||t.signServer?{...n.signServer,...t.signServer,kol:{...(p=(f=n.signServer)==null?void 0:f.kol)!=null?p:{},...(T=(k=t.signServer)==null?void 0:k.kol)!=null?T:{}},usbKey:{...(R=(E=n.signServer)==null?void 0:E.usbKey)!=null?R:{},...(D=(A=t.signServer)==null?void 0:A.usbKey)!=null?D:{}}}:void 0}},ue=()=>globalThis,C=()=>{const n=ue();return n[I]||(n[I]={current:S(K),defaults:S(K),overrides:{}}),n[I]},z=()=>C().current,W=n=>{const t=C();return t.defaults=S(n),t.current=Q(t.defaults,t.overrides),t.current},$=n=>{const t=C();return t.current=S(n),t.overrides=q(n),t.current},j=n=>{const t=C();return t.overrides=ce(t.overrides,q(n)),t.current=Q(t.current,n),t.current},Y=n=>{const t=C();return n&&(t.defaults=S(n)),t.overrides={},t.current=S(t.defaults),t.current},X={EDGE_POSITION:V,RSA_MODE:x,SIGNATURE_TYPE:B},w=n=>{if(n.length!==0)return n.length===1?n[0]:n},b=(n,t,e)=>new Proxy({},{get:(i,r)=>{if(r==="then")return;if(typeof r=="symbol")return r===Symbol.toStringTag?n:void 0;const a=t[r];return a?(...o)=>{var d,h,u;if(a.kind==="callbackRegister"){(d=a.callback)==null||d.call(a,e.callbacks,o);return}if(a.kind==="stateGetter")return(h=a.state)==null?void 0:h.call(a,e.state.snapshot(),o);const s=(u=a.adapterMethod)!=null?u:r;if(a.kind==="query")return e.bridge.request(n,s,w(o));if(a.kind==="callbackQuery"){const l=o.find(c=>typeof c=="function"),m=o.filter(c=>typeof c!="function");e.bridge.request(n,s,w(m)).then(c=>{var p,k;const f=(k=(p=a.mapCallbackResult)==null?void 0:p.call(a,c))!=null?k:[c];l==null||l(...f)}).catch(e.onAsyncError);return}e.bridge.request(n,s,w(o)).catch(e.onAsyncError)}:(...o)=>{const s=new Error(`${n}.${r} is not implemented by the SDK adapter.`);e.onAsyncError(s)}}}),v=(n,t)=>new Proxy({},{get:(e,i)=>{if(i!=="then"&&typeof i!="symbol")return(...r)=>{const a=`${n}.${i} is not implemented by the SDK adapter.`;t.onAsyncError(new Error(a))}}}),he={addDocumentOpenedCallback:{kind:"callbackRegister",callback:(n,t)=>{const e=t[0];typeof e=="function"&&n.documentOpened.push(e)}},addDocumentSavedCallback:{kind:"callbackRegister",callback:(n,t)=>{const e=t[0];typeof e=="function"&&n.documentSaved.push(e)}},addDocumentClosedCallback:{kind:"callbackRegister",callback:(n,t)=>{const e=t[0];typeof e=="function"&&n.documentClosed.push(e)}},openPDFDocument:{kind:"callbackQuery",adapterMethod:"open"},openPdfDocument:{kind:"callbackQuery",adapterMethod:"open"},openOFDDocument:{kind:"callbackQuery",adapterMethod:"open"},openOfdDocument:{kind:"callbackQuery",adapterMethod:"open"},openOfficeDocument:{kind:"callbackQuery",adapterMethod:"open"},openImageDocument:{kind:"callbackQuery",adapterMethod:"open"},openTextDocument:{kind:"callbackQuery",adapterMethod:"open"},openFromLocalStorage:{kind:"command"},setUploadUrl:{kind:"command"},save:{kind:"callbackQuery"},saveAs:{kind:"query"},getDocumentContent:{kind:"callbackQuery",mapCallbackResult:n=>{const t=n;return[t==null?void 0:t.fileCacheId,t==null?void 0:t.fileBuffer]}},closeDocument:{kind:"callbackQuery"},isDocumentOpened:{kind:"stateGetter",state:n=>n.documentOpened},isDocumentModified:{kind:"stateGetter",state:n=>n.documentModified},print:{kind:"command"},createPreview:{kind:"command"}};class me{constructor(t){this.addDocumentOpenedCallback=e=>this.adapter.addDocumentOpenedCallback(e),this.addDocumentSavedCallback=e=>this.adapter.addDocumentSavedCallback(e),this.addDocumentClosedCallback=e=>this.adapter.addDocumentClosedCallback(e),this.openPDFDocument=(e,i)=>this.adapter.openPDFDocument(e,i),this.openPdfDocument=(e,i)=>this.adapter.openPdfDocument(e,i),this.openOFDDocument=(e,i)=>this.adapter.openOFDDocument(e,i),this.openOfdDocument=(e,i)=>this.adapter.openOfdDocument(e,i),this.openOfficeDocument=(e,i)=>this.adapter.openOfficeDocument(e,i),this.openImageDocument=(e,i)=>this.adapter.openImageDocument(e,i),this.openTextDocument=(e,i)=>this.adapter.openTextDocument(e,i),this.openFromLocalStorage=()=>this.adapter.openFromLocalStorage(),this.setUploadUrl=e=>this.adapter.setUploadUrl(e),this.save=(e,i,r)=>this.adapter.save(e,i,r),this.saveAs=e=>this.adapter.saveAs(e),this.getDocumentContent=e=>this.adapter.getDocumentContent(e),this.closeDocument=(e,i,r)=>this.adapter.closeDocument(e,i,r),this.isDocumentOpened=()=>this.adapter.isDocumentOpened(),this.isDocumentModified=()=>this.adapter.isDocumentModified(),this.print=()=>this.adapter.print(),this.createPreview=(e,i)=>this.adapter.createPreview(e,i),this.adapter=b("document",he,t)}}const ge={clearFind:{kind:"command"},findNext:{kind:"command"},findPrevious:{kind:"command"}};class pe{constructor(t){this.clearFind=()=>this.adapter.clearFind(),this.findNext=e=>this.adapter.findNext(e),this.findPrevious=e=>this.adapter.findPrevious(e),this.adapter=b("find",ge,t)}}const ke={configFileUpload:{kind:"command"},setHttpHeaders:{kind:"command"},setHttpFormFields:{kind:"command"}};class fe{constructor(t){this.configFileUpload=e=>this.adapter.configFileUpload(e),this.setHttpHeaders=e=>this.adapter.setHttpHeaders(e),this.setHttpFormFields=e=>this.adapter.setHttpFormFields(e),this.adapter=b("networking",ke,t)}}const be=n=>({addPageChangeCallback:{kind:"callbackRegister",callback:(t,e)=>{const i=e[0];typeof i=="function"&&t.pageChange.push(i)}},addPageModeChangeCallback:{kind:"callbackRegister",callback:(t,e)=>{const i=e[0];typeof i=="function"&&t.pageModeChange.push(i)}},getPageCount:{kind:"callbackRegister",callback:(t,e)=>{const i=e[0];typeof i=="function"&&i(n.state.snapshot().pageCount)}},getPageIndex:{kind:"callbackRegister",callback:(t,e)=>{const i=e[0];typeof i=="function"&&i(n.state.snapshot().pageIndex)}},setSinglePageViewMode:{kind:"command"},setTwoPagesViewMode:{kind:"command"},setPageScrollVertical:{kind:"command"},setPageScrollHorizontal:{kind:"command"},setPageCursorPanDrag:{kind:"command"},setPageCursorTextSelect:{kind:"command"},rotateCW:{kind:"command"},rotateCCW:{kind:"command"},autoFitPage:{kind:"command"},fitPageSize:{kind:"command"},fitPageWidth:{kind:"command"},fitPageHeight:{kind:"command"},increasePageScale:{kind:"command"},decreasePageScale:{kind:"command"},setPageScale:{kind:"command"},setPageBlendColor:{kind:"command"},gotoPage:{kind:"command"},gotoNextPage:{kind:"command"},gotoPreviousPage:{kind:"command"},rotatePage:{kind:"command"}});class Te{constructor(t){this.addPageChangeCallback=e=>this.adapter.addPageChangeCallback(e),this.addPageModeChangeCallback=e=>this.adapter.addPageModeChangeCallback(e),this.getPageCount=e=>this.adapter.getPageCount(e),this.getPageIndex=e=>this.adapter.getPageIndex(e),this.setSinglePageViewMode=()=>this.adapter.setSinglePageViewMode(),this.setTwoPagesViewMode=()=>this.adapter.setTwoPagesViewMode(),this.setPageScrollVertical=()=>this.adapter.setPageScrollVertical(),this.setPageScrollHorizontal=()=>this.adapter.setPageScrollHorizontal(),this.setPageCursorPanDrag=()=>this.adapter.setPageCursorPanDrag(),this.setPageCursorTextSelect=()=>this.adapter.setPageCursorTextSelect(),this.rotateCW=()=>this.adapter.rotateCW(),this.rotateCCW=()=>this.adapter.rotateCCW(),this.autoFitPage=()=>this.adapter.autoFitPage(),this.fitPageSize=()=>this.adapter.fitPageSize(),this.fitPageWidth=()=>this.adapter.fitPageWidth(),this.fitPageHeight=()=>this.adapter.fitPageHeight(),this.increasePageScale=()=>this.adapter.increasePageScale(),this.decreasePageScale=()=>this.adapter.decreasePageScale(),this.setPageScale=e=>this.adapter.setPageScale(e),this.setPageBlendColor=(e,i,r,a)=>this.adapter.setPageBlendColor(e,i,r,a),this.gotoPage=(e,i,r)=>this.adapter.gotoPage(e,i,r),this.gotoNextPage=()=>this.adapter.gotoNextPage(),this.gotoPreviousPage=()=>this.adapter.gotoPreviousPage(),this.rotatePage=e=>this.adapter.rotatePage(e),this.adapter=b("page",be(t),t)}}const Ee={open:{kind:"command"},setFormFieldValue:{kind:"command"},setFormFieldReadonly:{kind:"command"},commit:{kind:"callbackQuery",mapCallbackResult:()=>[]},clear:{kind:"callbackQuery",mapCallbackResult:()=>[]},toKeyValue:{kind:"callbackQuery",mapCallbackResult:n=>[Array.isArray(n)?n:[]]}};class Re{constructor(t){this.open=()=>this.adapter.open(),this.setFormFieldValue=(e,i)=>this.adapter.setFormFieldValue(e,i),this.setFormFieldReadonly=(e,i)=>this.adapter.setFormFieldReadonly(e,i),this.commit=e=>this.adapter.commit(e),this.clear=e=>this.adapter.clear(e),this.toKeyValue=e=>this.adapter.toKeyValue(e),this.adapter=b("pdfFormFiller",Ee,t)}}const ve=/\s*,\s*/,Se=/\s*-\s*/,_=n=>{const t=Number.parseInt(n.trim(),10);return!Number.isFinite(t)||t<=0?null:t},ye=n=>{var r,a,o;const t=n.split(Se);if(t.length===1){const s=_((r=t[0])!=null?r:"");return s?[s]:[]}const e=_((a=t[0])!=null?a:""),i=_((o=t[1])!=null?o:"");return!e||!i||i<e?[]:Array.from({length:i-e+1},(s,d)=>e+d)},Ce=n=>n?n.split(ve).flatMap(e=>ye(e)).filter((e,i,r)=>r.indexOf(e)===i):[];class Pe{constructor(t,e,i){this.setFieldName=r=>{this.key=r},this.setFieldValue=r=>{this.value=r},this.setDescription=r=>{this.description=r},this.key=t,this.value=e,this.description=i}}class Ae{constructor(){this.fields=[],this.keywordTextFixedPositions=void 0,this.keywordOffsetX=0,this.keywordOffsetY=0,this.bookmarkOffsetX=0,this.bookmarkOffsetY=0,this.printMargin=0,this.grayscaleSealImage=!1,this.signType=0,this.sealPosition=0,this.getSignType=()=>this.signType,this.setSignType=t=>{this.signType=t},this.isCrossPageSideSign=()=>this.signType===2||this.signType===3,this.getSealPosition=()=>this.sealPosition,this.setSignOnPageSides=t=>{t>=0&&t<=3&&(this.signType=t)},this.setSignPositionOnPageSides=t=>{this.sealPosition=t},this.setPageRange=t=>{this.pageRange=t},this.getPageRange=()=>this.pageRange,this.getPageRanges=()=>Ce(this.pageRange),this.setSignUserData=t=>{this.signUserData=t},this.setPrintMargin=t=>{this.printMargin=t},this.getPrintMargin=()=>{var t;return(t=this.printMargin)!=null?t:0},this.setSignReason=t=>{this.signReason=t},this.getSignReason=()=>this.signReason,this.setSignLocation=t=>{this.signLocation=t},this.getSignLocation=()=>this.signLocation,this.setDefaultStampPassword=t=>{this.defaultStampPassword=t}}}const De=new Set([2,5]),Me=n=>({showToolbarMenu:{kind:"command"},hideToolbarMenu:{kind:"command"},setupToolbarMenu:{kind:"command"},showToolbarMenuItem:{kind:"command"},hideToolbarMenuItem:{kind:"command"},setupRibbonMenu:{kind:"command"},setupRibbonMenuItem:{kind:"command"},setupRibbonTitleBar:{kind:"command"},showRibbonMenu:{kind:"command"},hideRibbonMenu:{kind:"command"},showRibbonMenuItem:{kind:"command"},hideRibbonMenuItem:{kind:"command"},showRibbonTitleBar:{kind:"command"},hideRibbonTitleBar:{kind:"command"},selectRibbonMenu:{kind:"command"},setRibbonMenuButtonStyle:{kind:"command"},setWatermark:{kind:"command"},setCompactMode:{kind:"command"},enterBookViewMode:{kind:"callbackQuery",mapCallbackResult:()=>[]},exitBookViewMode:{kind:"command"},isBookViewActivated:{kind:"stateGetter",state:()=>De.has(n.state.snapshot().pageMode)},requestFullScreen:{kind:"command"},exitFullScreen:{kind:"command"},invalidateView:{kind:"command"}});class Ie{constructor(t){this.showToolbarMenu=()=>this.adapter.showToolbarMenu(),this.hideToolbarMenu=()=>this.adapter.hideToolbarMenu(),this.setupToolbarMenu=e=>this.adapter.setupToolbarMenu(e),this.showToolbarMenuItem=e=>this.adapter.showToolbarMenuItem(e),this.hideToolbarMenuItem=e=>this.adapter.hideToolbarMenuItem(e),this.setupRibbonMenu=e=>this.adapter.setupRibbonMenu(e),this.setupRibbonMenuItem=(e,i,r)=>this.adapter.setupRibbonMenuItem(e,i,r),this.setupRibbonTitleBar=e=>this.adapter.setupRibbonTitleBar(e),this.showRibbonMenu=()=>this.adapter.showRibbonMenu(),this.hideRibbonMenu=()=>this.adapter.hideRibbonMenu(),this.showRibbonMenuItem=(e,i)=>this.adapter.showRibbonMenuItem(e,i),this.hideRibbonMenuItem=(e,i)=>this.adapter.hideRibbonMenuItem(e,i),this.showRibbonTitleBar=()=>this.adapter.showRibbonTitleBar(),this.hideRibbonTitleBar=()=>this.adapter.hideRibbonTitleBar(),this.selectRibbonMenu=e=>this.adapter.selectRibbonMenu(e),this.setRibbonMenuButtonStyle=(e,i)=>this.adapter.setRibbonMenuButtonStyle(e,i),this.setWatermark=e=>this.adapter.setWatermark(e),this.setCompactMode=e=>this.adapter.setCompactMode(e),this.enterBookViewMode=e=>this.adapter.enterBookViewMode(e),this.exitBookViewMode=()=>this.adapter.exitBookViewMode(),this.isBookViewActivated=()=>this.adapter.isBookViewActivated(),this.requestFullScreen=()=>this.adapter.requestFullScreen(),this.exitFullScreen=()=>this.adapter.exitFullScreen(),this.invalidateView=()=>this.adapter.invalidateView(),this.adapter=b("ui",Me(t),t)}}const we=n=>{if(!n)return;const t=n.trim().toLowerCase();if(t==="application")return"auto";if(t==="light"||t==="dark"||t==="high-contrast"||t==="auto")return t},J=n=>{var e,i;const t=new URL(n,(i=(e=globalThis.location)==null?void 0:e.href)!=null?i:"http://localhost/");return t.hash="",t.pathname.endsWith("/")||(t.pathname=`${t.pathname}/`),t.toString()},_e=n=>new URL("editors.bootstrap.js",n).toString(),Oe=(n,t)=>{var i;const e=J(n);return{...t,appUrl:e,scrollIntoView:(i=t.scrollIntoView)!=null?i:!0,theme:we(t.theme)}},y="rhc-office-editor",O="__RHC_OFFICE_SDK_READER_LOADER__",Z=()=>{const n=globalThis;return n[O]||(n[O]={activeAppUrl:null,loadPromises:new Map}),n[O]},Fe=n=>{var t;return(t=Array.from(document.querySelectorAll("script")).find(e=>e.src===n))!=null?t:null};class ee extends Error{constructor(t){super(`Failed to load reader bootstrap script: ${t}`),this.name="ReaderScriptLoadError"}}class Le extends Error{constructor(t,e){super(`Reader Web Component "${y}" is already bound to ${t} and cannot be reloaded from ${e}.`),this.name="ReaderSourceConflictError"}}const te=n=>{const t=Z();if(t.activeAppUrl&&t.activeAppUrl!==n)throw new Le(t.activeAppUrl,n)},Ue=n=>{var o;const t=Z();te(n);const e=t.loadPromises.get(n);if(e)return e;if((o=globalThis.customElements)!=null&&o.get(y)){t.activeAppUrl=n;const s=Promise.resolve();return t.loadPromises.set(n,s),s}const i=_e(n),r=Fe(i);t.activeAppUrl=n;const a=new Promise((s,d)=>{var m;const h=c=>{c==null||c.remove(),d(new ee(i))},u=()=>{globalThis.customElements.whenDefined(y).then(()=>{s()}).catch(d)};if(r){if((m=globalThis.customElements)!=null&&m.get(y)){s();return}r.addEventListener("error",()=>d(new ee(i)),{once:!0}),u();return}const l=document.createElement("script");l.src=i,l.async=!0,l.dataset.rhcOfficeSdkReader=n,l.addEventListener("load",u,{once:!0}),l.addEventListener("error",()=>h(l),{once:!0}),document.head.appendChild(l)}).catch(s=>{var d;throw t.loadPromises.delete(n),!((d=globalThis.customElements)!=null&&d.get(y))&&t.activeAppUrl===n&&(t.activeAppUrl=null),s});return t.loadPromises.set(n,a),a},Ne="rhc-office.editor-adapter",Ve=1,Be="__RHC_OFFICE_EDITOR_ADAPTER__",ne="rhcOfficeAdapterReady",ie="rhcOfficeAdapterEvent",xe="data-rhc-office-reader-id",Ke=5e3,He=5e3,Ge=()=>{const n=globalThis.crypto;return typeof(n==null?void 0:n.randomUUID)=="function"?n.randomUUID():`adapter-${Date.now()}-${Math.random().toString(36).slice(2)}`},P=()=>globalThis[Be];class qe extends Error{constructor(t,e,i){super(e),this.name="ReaderBridgeError",this.code=t,this.details=i}}class Qe{constructor(t){var e,i;this.readerId=null,this.readyTimeoutMs=(e=t==null?void 0:t.readyTimeoutMs)!=null?e:He,this.requestTimeoutMs=(i=t==null?void 0:t.requestTimeoutMs)!=null?i:Ke}configureTimeouts(t){var e,i;this.readyTimeoutMs=(e=t==null?void 0:t.readyTimeoutMs)!=null?e:this.readyTimeoutMs,this.requestTimeoutMs=(i=t==null?void 0:t.requestTimeoutMs)!=null?i:this.requestTimeoutMs}setReaderId(t){this.readerId=t}getReaderId(){return this.readerId}async request(t,e,i,r){const a=await this.requestRaw(t,e,i,r);if(a.ok)return a.result;throw new qe(a.error.code,a.error.message,a.error.details)}async requestRaw(t,e,i,r){var s;if(!this.readerId)return{ok:!1,requestId:"",error:{code:"READER_NOT_READY",message:"Reader is not mounted."}};const a=await this.waitForAdapter(this.readerId,r==null?void 0:r.timeoutMs);if(!a)return{ok:!1,requestId:"",error:{code:"ADAPTER_UNAVAILABLE",message:"Editor adapter is not available."}};const o={protocol:Ne,version:Ve,requestId:Ge(),readerId:this.readerId,tool:t,method:e,params:i};return this.withTimeout(a.request(o),o.requestId,(s=r==null?void 0:r.timeoutMs)!=null?s:this.requestTimeoutMs)}getCapabilities(){var t,e;return this.readerId&&(e=(t=P())==null?void 0:t.getCapabilities(this.readerId))!=null?e:null}async waitForAdapter(t,e=this.readyTimeoutMs){const i=P();return i!=null&&i.getCapabilities(t)?i:new Promise(r=>{let a;const o=()=>{a&&clearTimeout(a),globalThis.removeEventListener(ne,s)},s=d=>{const h=d instanceof CustomEvent?d.detail:void 0;if((h==null?void 0:h.readerId)!==t)return;const u=P();o(),r(u!=null?u:null)};globalThis.addEventListener(ne,s),a=setTimeout(()=>{var d;o(),r((d=P())!=null&&d.getCapabilities(t)?P():null)},e)})}async withTimeout(t,e,i){return new Promise(r=>{const a=setTimeout(()=>{r({ok:!1,requestId:e,error:{code:"TIMEOUT",message:`Editor adapter request timed out after ${i}ms.`}})},i);t.then(o=>r(o)).catch(o=>{r({ok:!1,requestId:e,error:{code:"EXECUTION_FAILED",message:o instanceof Error?o.message:String(o)}})}).finally(()=>{clearTimeout(a)})})}}const re={annotationEnabled:!1,documentModified:!1,documentOpened:!1,extensionState:"disconnected",pageCount:0,pageIndex:1,pageMode:0,zoomLevel:100};class ze{constructor(){this.state={...re}}reset(){this.state={...re}}update(t){t&&(this.state={...this.state,...t})}setDocumentOpened(t){this.state={...this.state,documentOpened:t}}snapshot(){return{...this.state}}}class We{constructor(){this.annotationEvents=[],this.annotationPersist=[],this.annotationRetrieve=[],this.digitalAnnotationRetrieve=[],this.digitalSignatureParse=[],this.digitalSignatureRetrieve=[],this.documentClosed=[],this.documentOpened=[],this.documentSaved=[],this.extensionStateChanged=[],this.pageChange=[],this.pageModeChange=[]}emit(t,e){switch(t){case"documentOpened":case"documentLoaded":this.documentOpened.forEach(i=>i("ok",""));return;case"documentSaved":this.documentSaved.forEach(i=>i(e));return;case"documentClosed":this.documentClosed.forEach(i=>i(e));return;case"pageChange":{const i=e;this.pageChange.forEach(r=>{var a,o;return r((a=i.pageIndex)!=null?a:1,(o=i.pageCount)!=null?o:0)});return}case"pageModeChange":{const i=e;this.pageModeChange.forEach(r=>{var a;return r((a=i.pageMode)!=null?a:0)});return}case"annotationEvent":{const i=e;this.annotationEvents.forEach(r=>{var a;return r((a=i.event)!=null?a:"annotationEvent",i.payload)});return}case"annotationPersist":this.annotationPersist.forEach(i=>i(e));return;case"annotationRetrieve":this.annotationRetrieve.forEach(i=>i(e));return;case"digitalAnnotationRetrieve":this.digitalAnnotationRetrieve.forEach(i=>i(Array.isArray(e)?e:[]));return;case"digitalSignatureRetrieve":this.digitalSignatureRetrieve.forEach(i=>i(Array.isArray(e)?e:[]));return;case"digitalSignatureParse":this.digitalSignatureParse.forEach(i=>i(Array.isArray(e)?e:[]));return;case"extensionStateChanged":{const i=e;this.extensionStateChanged.forEach(r=>{var a;return r((a=i.state)!=null?a:"disconnected")});return}default:return}}}const $e=["documentLoaded","documentStateChange","documentError"],je="readerReady",Ye="readerUnload",F="readerError",Xe=()=>{var n;return typeof((n=globalThis.crypto)==null?void 0:n.randomUUID)=="function"?globalThis.crypto.randomUUID():`rhc-reader-${Date.now()}-${Math.random().toString(36).slice(2)}`},ae=(n,t)=>{var e;return{appUrl:(e=t==null?void 0:t.appUrl)!=null?e:null,configuration:t,element:n}},Je=n=>{if(typeof n=="string"){const t=document.getElementById(n);if(!t)throw new Error(`Reader container "${n}" was not found.`);if(!(t instanceof HTMLDivElement))throw new Error(`Reader container "${n}" must be a div element.`);return t}if(!(n instanceof HTMLDivElement))throw new Error("Reader container must be a div element.");return n},Ze=()=>{const n=typeof globalThis.matchMedia=="function";return(n?globalThis.matchMedia("(prefers-contrast: more)").matches:!1)?"high-contrast":(n?globalThis.matchMedia("(prefers-color-scheme: dark)").matches:!1)?"dark":"light"},oe=(n,t)=>{const e=n;if(typeof e.addEventListener=="function"){e.addEventListener("change",t);return}typeof e.addListener=="function"&&e.addListener(t)},se=(n,t)=>{const e=n;if(typeof e.removeEventListener=="function"){e.removeEventListener("change",t);return}typeof e.removeListener=="function"&&e.removeListener(t)},et=(n,t)=>{var e,i;t.style&&(n.style.cssText=t.style),n.style.display||(n.style.display="block"),n.style.width?t.width&&(n.style.width=t.width):n.style.width=(e=t.width)!=null?e:"100%",n.style.height?t.height&&(n.style.height=t.height):n.style.height=(i=t.height)!=null?i:"100%"},tt=(n,t)=>{const e=t.theme;if(!e)return n.removeAttribute("theme"),null;if(e!=="auto")return n.setAttribute("theme",e),null;const i=()=>{n.setAttribute("theme",Ze())};if(i(),typeof globalThis.matchMedia!="function")return null;const r=globalThis.matchMedia("(prefers-color-scheme: dark)"),a=globalThis.matchMedia("(prefers-contrast: more)"),o=()=>{i()};return oe(r,o),oe(a,o),()=>{se(r,o),se(a,o)}};class L{constructor(t){this.bridge=new Qe,this.callbacks=new We,this.readerState=new ze,this.bridgeToolContext={bridge:this.bridge,callbacks:this.callbacks,debug:()=>this.debugEnabled,onAsyncError:e=>this.reportAdapterError(e),state:this.readerState},this.documentTool=new me(this.bridgeToolContext),this.uiTool=new Ie(this.bridgeToolContext),this.pageTool=new Te(this.bridgeToolContext),this.findTool=new pe(this.bridgeToolContext),this.signServerTool=v("signServer",this.bridgeToolContext),this.digitalSignTool=v("digitalSign",this.bridgeToolContext),this.reviewTool=v("review",this.bridgeToolContext),this.ekeyTool=v("ekey",this.bridgeToolContext),this.symbologyTool=v("symbology",this.bridgeToolContext),this.annotationTool=this.createAnnotationTool(),this.templateSignTool=v("templateSign",this.bridgeToolContext),this.pdfFormFiller=new Re(this.bridgeToolContext),this.extensionTool=this.createExtensionTool(),this.networkingTool=new fe(this.bridgeToolContext),this.cryptoTool=v("crypto",this.bridgeToolContext),this.readyCallbacks=[],this.unloadCallbacks=[],this.debugEnabled=!1,this.isReady=!1,this.removed=!1,this.mountToken=0,this.hostContainer=null,this.readerElement=null,this.readerId=null,this.normalizedConfiguration=null,this.nativeEventCleanupCallbacks=[],this.themeCleanup=null,this.enableDebug=e=>{this.debugEnabled=e},this.changeLanguage=()=>{},this.setLicense=(e,i)=>{this.license={license:e,feature:i}},this.setSessionUser=e=>{this.sessionUser=e},this.setSessionUserId=e=>{if(typeof this.sessionUser=="string"||!this.sessionUser){this.sessionUser={userName:typeof this.sessionUser=="string"?this.sessionUser:"",userId:e};return}this.sessionUser={...this.sessionUser,userId:e}},this.setSessionData=e=>{this.sessionData=e},this.isReaderReady=()=>this.isReady,this.isReaderDestroyed=()=>this.removed&&!this.isReady,this.addReaderReadyCallback=e=>{this.readyCallbacks.push(e)},this.addReaderUnloadCallback=e=>{this.unloadCallbacks.push(e)},this.setReaderEventListener=e=>{this.readerEventListener=e},this.embedReader=(e,i,r)=>{const a=Je(e),o=J(i);te(o);const s=Oe(o,r),d=this.mountToken+1;this.removeReader(),this.mountToken=d,this.removed=!1,this.hostContainer=a,this.normalizedConfiguration=s,this.mountReader(a,s,d)},this.removeReader=()=>{var r;const e=!!(this.readerElement||this.hostContainer);if(this.mountToken+=1,this.cleanupNativeEventForwarders(),this.cleanupThemeBinding(),(r=this.readerElement)!=null&&r.parentNode&&this.readerElement.parentNode.removeChild(this.readerElement),this.readerElement=null,this.readerId=null,this.bridge.setReaderId(null),this.readerState.reset(),this.hostContainer=null,this.normalizedConfiguration=null,this.isReady=!1,this.removed=!0,!e)return;const i=ae(null,null);this.emitReaderEvent(Ye,i),this.unloadCallbacks.forEach(a=>a())},this.getDocumentTool=()=>this.documentTool,this.getUITool=()=>this.uiTool,this.getPageTool=()=>this.pageTool,this.getFindTool=()=>this.findTool,this.getSignServerTool=()=>this.signServerTool,this.getDigitalSignTool=()=>this.digitalSignTool,this.getReviewTool=()=>this.reviewTool,this.getEkeyTool=()=>this.ekeyTool,this.getSymbologyTool=()=>this.symbologyTool,this.getAnnotationTool=()=>this.annotationTool,this.getTemplateSignTool=()=>this.templateSignTool,this.getPdfFormFiller=()=>this.pdfFormFiller,this.getExtensionTool=()=>this.extensionTool,this.getNetworkingTool=()=>this.networkingTool,this.getCryptoTool=()=>this.cryptoTool,this.createDigitalSignOptions=()=>new Ae,this.createKVField=(e,i,r)=>new Pe(e,i,r),this.mountReader=async(e,i,r)=>{try{if(await Ue(i.appUrl),this.mountToken!==r)return;const a=document.createElement(y),o=Xe();if(a.setAttribute(xe,o),this.readerId=o,this.bridge.setReaderId(o),et(a,i),this.themeCleanup=tt(a,i),this.bindNativeReaderEvents(a),e.replaceChildren(a),this.readerElement=a,await Promise.resolve(),this.mountToken!==r)return;i.scrollIntoView&&typeof e.scrollIntoView=="function"&&e.scrollIntoView({behavior:"smooth",block:"nearest"}),this.isReady=!0;const s=ae(a,i);this.emitReaderEvent(je,s),this.readyCallbacks.forEach(d=>d())}catch(a){if(this.mountToken!==r)return;this.reportReaderError(a)}},this.bindNativeReaderEvents=e=>{this.cleanupNativeEventForwarders();const i=r=>{const a=r instanceof CustomEvent?r.detail:null;!a||a.readerId!==this.readerId||(this.readerState.update(a.statePatch),this.callbacks.emit(a.event,a.payload),this.emitReaderEvent(a.event,a.payload))};e.addEventListener(ie,i),this.nativeEventCleanupCallbacks.push(()=>{e.removeEventListener(ie,i)}),$e.forEach(r=>{const a=o=>{const s=o instanceof CustomEvent?o.detail:o;r==="documentLoaded"&&this.readerState.setDocumentOpened(!0),this.emitReaderEvent(r,s),r==="documentError"&&this.emitReaderEvent(F,s)};e.addEventListener(r,a),this.nativeEventCleanupCallbacks.push(()=>{e.removeEventListener(r,a)})})},this.cleanupNativeEventForwarders=()=>{this.nativeEventCleanupCallbacks.splice(0).forEach(e=>e())},this.cleanupThemeBinding=()=>{var e;(e=this.themeCleanup)==null||e.call(this),this.themeCleanup=null},this.emitReaderEvent=(e,i)=>{var r;(r=this.readerEventListener)==null||r.call(this,e,i)},this.reportReaderError=e=>{this.isReady=!1,this.debugEnabled&&console.error("[RHC Office SDK] Reader mount failed",e),this.emitReaderEvent(F,e)},this.reportAdapterError=e=>{this.debugEnabled&&console.error("[RHC Office SDK] Adapter command failed",e),this.emitReaderEvent(F,e)},this.bridge.configureTimeouts({readyTimeoutMs:t==null?void 0:t.adapterReadyTimeoutMs,requestTimeoutMs:t==null?void 0:t.adapterRequestTimeoutMs})}createAnnotationTool(){return b("annotation",{addAnnotationEventCallback:{kind:"callbackRegister",callback:(t,e)=>{const i=e[0];typeof i=="function"&&t.annotationEvents.push(i)}},addAnnotationPersistCallback:{kind:"callbackRegister",callback:(t,e)=>{const i=e[0];typeof i=="function"&&t.annotationPersist.push(i)}},addAnnotationRetrieveCallback:{kind:"callbackRegister",callback:(t,e)=>{const i=e[0];typeof i=="function"&&t.annotationRetrieve.push(i)}},addDigitalAnnotationRetrieveCallback:{kind:"callbackRegister",callback:(t,e)=>{const i=e[0];typeof i=="function"&&t.digitalAnnotationRetrieve.push(i)}},isInAnnotationMode:{kind:"stateGetter",state:t=>t.annotationEnabled},getAnnotations:{kind:"stateGetter",state:()=>[]},getAnnotationsCount:{kind:"stateGetter",state:()=>0},queryAnnotationsBy:{kind:"stateGetter",state:()=>[]},setToolSource:{kind:"command"},openAnnotationView:{kind:"command"},closeAnnotationView:{kind:"command"},openTextAnnotationView:{kind:"command"},setTextAnnotationFontColor:{kind:"command"},setTextAnnotationFontSize:{kind:"command"},closeTextAnnotationView:{kind:"command"},createTextAnnotation:{kind:"command"},setPersistToDocument:{kind:"command"},saveAnnotations:{kind:"callbackQuery"},saveTextAnnotations:{kind:"command"},clearAnnotations:{kind:"command"},clearTextAnnotations:{kind:"command"},undoAnnotation:{kind:"command"},redoAnnotation:{kind:"command"},selectAnnotationTool:{kind:"command"},showAnnotationColorPicker:{kind:"command"},setAnnotationPenType:{kind:"command"},appendAnnotations:{kind:"callbackQuery"},batchAppendAnnotations:{kind:"callbackQuery"},setAnnotationPenColor:{kind:"command"},setAnnotationPenWidth:{kind:"command"},setAnnotationPenThickness:{kind:"command"},enableAnnotationsInfoView:{kind:"command"},enableAnnotationsDeletion:{kind:"command"},enableAnnotationsDeletionOnlyByAuthor:{kind:"command"},listDigitalStamps:{kind:"command"},listAnnotations:{kind:"command"},deleteAnnotationsBy:{kind:"command"},deleteAnnotationsById:{kind:"command"},addDigitalAnnotation:{kind:"command"},addInkAnnotationCallback:{kind:"callbackRegister"}},this.bridgeToolContext)}createExtensionTool(){return b("extension",{addExtensionStateChangedCallback:{kind:"callbackRegister",callback:(t,e)=>{const i=e[0];typeof i=="function"&&t.extensionStateChanged.push(i)}}},this.bridgeToolContext)}}const U=n=>new L(n),N={DocumentSDK:L,WatermarkDisplay:M,DIGITAL_SIGN_DEFAULTS:X,createNewDocumentSdk:U,newDocumentSDK:U,getDigitalSignEnvironment:z,initializeDigitalSignEnvironment:W,patchDigitalSignEnvironment:j,resetDigitalSignEnvironment:Y,setDigitalSignEnvironment:$};return typeof document<"u"&&(n=>{Object.entries(N).forEach(([t,e])=>{Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0})}),n.RHCOfficeSDK=N})(document),g.DIGITAL_SIGN_DEFAULTS=X,g.DocumentSDK=L,g.RHCOfficeSDK=N,g.WatermarkDisplay=M,g.createNewDocumentSdk=U,g.getDigitalSignEnvironment=z,g.initializeDigitalSignEnvironment=W,g.patchDigitalSignEnvironment=j,g.resetDigitalSignEnvironment=Y,g.setDigitalSignEnvironment=$,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"}),g}({});
2
+ //# sourceMappingURL=document-viewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-viewer.js","sources":["../../src/api/watermark.ts","../../src/api/digital-sign-environment.ts","../../src/viewer/BridgeToolAdapter.ts","../../src/tools/DocumentToolImpl.ts","../../src/tools/FindToolImpl.ts","../../src/tools/NetworkingToolImpl.ts","../../src/tools/PageToolImpl.ts","../../src/tools/PdfFormFillerImpl.ts","../../src/tools/SDKValueObjects.ts","../../src/tools/UIToolImpl.ts","../../src/viewer/ReaderConfiguration.ts","../../src/viewer/ReaderScriptLoader.ts","../../src/viewer/AdapterProtocol.ts","../../src/viewer/ReaderBridgeClient.ts","../../src/viewer/ReaderStateStore.ts","../../src/viewer/SdkCallbackRegistry.ts","../../src/viewer/DocumentSDK.ts","../../src/browser.ts"],"sourcesContent":["export interface IWatermarkTextStyle {\n size?: number;\n color?: string;\n compact?: boolean;\n rotation?: number;\n opacity?: number;\n\n hex(color: string): IWatermarkTextStyle;\n\n rgb(r: number, g: number, b: number): IWatermarkTextStyle;\n\n rgba(r: number, g: number, b: number, a: number): IWatermarkTextStyle;\n}\n\nexport enum WatermarkDisplay {\n DEFAULT = 'default',\n COMPACT = 'compact',\n HIDE = 'none',\n}\n\nexport interface IWatermark {\n text?: string;\n\n sparseRatio?: number;\n\n display?: WatermarkDisplay;\n\n config?: IWatermarkTextStyle;\n\n setDisplay(display: WatermarkDisplay): void;\n\n setText(text: string, style?: IWatermarkTextStyle): void;\n\n setSparseRatio(sparseRatio: number): void;\n}\n","export type SignServerAuthSource = 'Password' | 'USBKey' | 'KolKey' | 'Token';\nexport type DigitalSignRsaMode = 'auto' | 'rsa' | 'sm2';\nexport type SigningDeviceType = 'client' | 'bjca' | 'plugin' | 'kol' | 'hsm' | string;\nexport type EdgePosition =\n | 'LEFT_TOP'\n | 'LEFT_CENTER'\n | 'LEFT_BOTTOM'\n | 'RIGHT_TOP'\n | 'RIGHT_CENTER'\n | 'RIGHT_BOTTOM'\n | string;\nexport type SignatureType = 'REGULAR_ESM' | 'OFCRYPTO_ESM' | string;\n\nconst DEFAULT_EDGE_POSITION = 'RIGHT_CENTER' as EdgePosition;\nconst DEFAULT_SIGNATURE_TYPE = 'REGULAR_ESM' as SignatureType;\nconst DEFAULT_RSA_MODE: DigitalSignRsaMode = 'auto';\n\nexport interface DigitalSignSignServerConfig {\n authSource: SignServerAuthSource;\n defaultLogin: string;\n defaultPassword: string;\n defaultServer: string;\n kol: {\n appId: string;\n appName: string;\n serviceUrl: string;\n token: string;\n };\n macAddress: string;\n token: string;\n usbKey: {\n checkCertificateBinding: boolean;\n usbKeyType: number;\n };\n}\n\nexport interface DigitalSignDefaultsConfig {\n bjca: {\n pin: string;\n };\n deviceType: SigningDeviceType;\n edgePosition: EdgePosition;\n kol: {\n appId: string;\n appName: string;\n pin: string;\n serviceUrl: string;\n token: string;\n };\n plugin: {\n pin: string;\n usbKeyType: number;\n };\n rsaMode: DigitalSignRsaMode;\n signatureType: SignatureType;\n}\n\nexport interface DigitalSignEnvironmentConfig {\n defaults: DigitalSignDefaultsConfig;\n signServer: DigitalSignSignServerConfig;\n}\n\nexport interface DigitalSignDefaultsPatch {\n bjca?: {\n pin?: string;\n };\n deviceType?: SigningDeviceType;\n edgePosition?: EdgePosition;\n kol?: {\n appId?: string;\n appName?: string;\n pin?: string;\n serviceUrl?: string;\n token?: string;\n };\n plugin?: {\n pin?: string;\n usbKeyType?: number;\n };\n rsaMode?: DigitalSignRsaMode;\n signatureType?: SignatureType;\n}\n\nexport interface DigitalSignSignServerPatch {\n authSource?: SignServerAuthSource;\n defaultLogin?: string;\n defaultPassword?: string;\n defaultServer?: string;\n kol?: {\n appId?: string;\n appName?: string;\n serviceUrl?: string;\n token?: string;\n };\n macAddress?: string;\n token?: string;\n usbKey?: {\n checkCertificateBinding?: boolean;\n usbKeyType?: number;\n };\n}\n\nexport interface DigitalSignEnvironmentPatch {\n defaults?: DigitalSignDefaultsPatch;\n signServer?: DigitalSignSignServerPatch;\n}\n\ninterface DigitalSignEnvironmentRuntimeStore {\n current: DigitalSignEnvironmentConfig;\n defaults: DigitalSignEnvironmentConfig;\n overrides: DigitalSignEnvironmentPatch;\n}\n\nconst DIGITAL_SIGN_ENVIRONMENT_STORE_KEY = '__RHC_OFFICE_DIGITAL_SIGN_ENVIRONMENT__';\n\nconst EMPTY_DIGITAL_SIGN_ENVIRONMENT: DigitalSignEnvironmentConfig = {\n defaults: {\n bjca: {\n pin: '',\n },\n deviceType: 'client',\n edgePosition: DEFAULT_EDGE_POSITION,\n kol: {\n appId: '',\n appName: '',\n pin: '',\n serviceUrl: '',\n token: '',\n },\n plugin: {\n pin: '',\n usbKeyType: 14,\n },\n rsaMode: DEFAULT_RSA_MODE,\n signatureType: DEFAULT_SIGNATURE_TYPE,\n },\n signServer: {\n authSource: 'Password',\n defaultLogin: '',\n defaultPassword: '',\n defaultServer: '',\n kol: {\n appId: '',\n appName: '',\n serviceUrl: '',\n token: '',\n },\n macAddress: '',\n token: '',\n usbKey: {\n checkCertificateBinding: false,\n usbKeyType: 14,\n },\n },\n};\n\nconst cloneDefaultsConfig = (config: DigitalSignDefaultsConfig): DigitalSignDefaultsConfig => {\n return {\n bjca: {\n pin: config.bjca.pin,\n },\n deviceType: config.deviceType,\n edgePosition: config.edgePosition,\n kol: {\n appId: config.kol.appId,\n appName: config.kol.appName,\n pin: config.kol.pin,\n serviceUrl: config.kol.serviceUrl,\n token: config.kol.token,\n },\n plugin: {\n pin: config.plugin.pin,\n usbKeyType: config.plugin.usbKeyType,\n },\n rsaMode: config.rsaMode,\n signatureType: config.signatureType,\n };\n};\n\nconst cloneSignServerConfig = (\n config: DigitalSignSignServerConfig,\n): DigitalSignSignServerConfig => {\n return {\n authSource: config.authSource,\n defaultLogin: config.defaultLogin,\n defaultPassword: config.defaultPassword,\n defaultServer: config.defaultServer,\n kol: {\n appId: config.kol.appId,\n appName: config.kol.appName,\n serviceUrl: config.kol.serviceUrl,\n token: config.kol.token,\n },\n macAddress: config.macAddress,\n token: config.token,\n usbKey: {\n checkCertificateBinding: config.usbKey.checkCertificateBinding,\n usbKeyType: config.usbKey.usbKeyType,\n },\n };\n};\n\nconst cloneEnvironmentConfig = (\n config: DigitalSignEnvironmentConfig,\n): DigitalSignEnvironmentConfig => {\n return {\n defaults: cloneDefaultsConfig(config.defaults),\n signServer: cloneSignServerConfig(config.signServer),\n };\n};\n\nconst cloneEnvironmentPatch = (patch: DigitalSignEnvironmentPatch): DigitalSignEnvironmentPatch => {\n return {\n defaults: patch.defaults\n ? {\n ...patch.defaults,\n bjca: patch.defaults.bjca ? { ...patch.defaults.bjca } : undefined,\n kol: patch.defaults.kol ? { ...patch.defaults.kol } : undefined,\n plugin: patch.defaults.plugin ? { ...patch.defaults.plugin } : undefined,\n }\n : undefined,\n signServer: patch.signServer\n ? {\n ...patch.signServer,\n kol: patch.signServer.kol ? { ...patch.signServer.kol } : undefined,\n usbKey: patch.signServer.usbKey ? { ...patch.signServer.usbKey } : undefined,\n }\n : undefined,\n };\n};\n\nconst mergeDefaultsPatch = (\n base: DigitalSignDefaultsConfig,\n patch?: DigitalSignEnvironmentPatch['defaults'],\n): DigitalSignDefaultsConfig => {\n if (!patch) {\n return cloneDefaultsConfig(base);\n }\n\n return {\n bjca: {\n pin: patch.bjca?.pin ?? base.bjca.pin,\n },\n deviceType: patch.deviceType ?? base.deviceType,\n edgePosition: patch.edgePosition ?? base.edgePosition,\n kol: {\n appId: patch.kol?.appId ?? base.kol.appId,\n appName: patch.kol?.appName ?? base.kol.appName,\n pin: patch.kol?.pin ?? base.kol.pin,\n serviceUrl: patch.kol?.serviceUrl ?? base.kol.serviceUrl,\n token: patch.kol?.token ?? base.kol.token,\n },\n plugin: {\n pin: patch.plugin?.pin ?? base.plugin.pin,\n usbKeyType: patch.plugin?.usbKeyType ?? base.plugin.usbKeyType,\n },\n rsaMode: patch.rsaMode ?? base.rsaMode,\n signatureType: patch.signatureType ?? base.signatureType,\n };\n};\n\nconst mergeSignServerPatch = (\n base: DigitalSignSignServerConfig,\n patch?: DigitalSignEnvironmentPatch['signServer'],\n): DigitalSignSignServerConfig => {\n if (!patch) {\n return cloneSignServerConfig(base);\n }\n\n return {\n authSource: patch.authSource ?? base.authSource,\n defaultLogin: patch.defaultLogin ?? base.defaultLogin,\n defaultPassword: patch.defaultPassword ?? base.defaultPassword,\n defaultServer: patch.defaultServer ?? base.defaultServer,\n kol: {\n appId: patch.kol?.appId ?? base.kol.appId,\n appName: patch.kol?.appName ?? base.kol.appName,\n serviceUrl: patch.kol?.serviceUrl ?? base.kol.serviceUrl,\n token: patch.kol?.token ?? base.kol.token,\n },\n macAddress: patch.macAddress ?? base.macAddress,\n token: patch.token ?? base.token,\n usbKey: {\n checkCertificateBinding:\n patch.usbKey?.checkCertificateBinding ?? base.usbKey.checkCertificateBinding,\n usbKeyType: patch.usbKey?.usbKeyType ?? base.usbKey.usbKeyType,\n },\n };\n};\n\nconst mergeEnvironmentPatch = (\n base: DigitalSignEnvironmentConfig,\n patch: DigitalSignEnvironmentPatch,\n): DigitalSignEnvironmentConfig => {\n return {\n defaults: mergeDefaultsPatch(base.defaults, patch.defaults),\n signServer: mergeSignServerPatch(base.signServer, patch.signServer),\n };\n};\n\nconst mergeEnvironmentPatchState = (\n base: DigitalSignEnvironmentPatch,\n patch: DigitalSignEnvironmentPatch,\n): DigitalSignEnvironmentPatch => {\n return {\n defaults:\n base.defaults || patch.defaults\n ? {\n ...base.defaults,\n ...patch.defaults,\n bjca: {\n ...(base.defaults?.bjca ?? {}),\n ...(patch.defaults?.bjca ?? {}),\n },\n kol: {\n ...(base.defaults?.kol ?? {}),\n ...(patch.defaults?.kol ?? {}),\n },\n plugin: {\n ...(base.defaults?.plugin ?? {}),\n ...(patch.defaults?.plugin ?? {}),\n },\n }\n : undefined,\n signServer:\n base.signServer || patch.signServer\n ? {\n ...base.signServer,\n ...patch.signServer,\n kol: {\n ...(base.signServer?.kol ?? {}),\n ...(patch.signServer?.kol ?? {}),\n },\n usbKey: {\n ...(base.signServer?.usbKey ?? {}),\n ...(patch.signServer?.usbKey ?? {}),\n },\n }\n : undefined,\n };\n};\n\nconst getGlobalScope = (): typeof globalThis & {\n [DIGITAL_SIGN_ENVIRONMENT_STORE_KEY]?: DigitalSignEnvironmentRuntimeStore;\n} => {\n return globalThis as typeof globalThis & {\n [DIGITAL_SIGN_ENVIRONMENT_STORE_KEY]?: DigitalSignEnvironmentRuntimeStore;\n };\n};\n\nconst resolveRuntimeStore = (): DigitalSignEnvironmentRuntimeStore => {\n const globalScope = getGlobalScope();\n if (!globalScope[DIGITAL_SIGN_ENVIRONMENT_STORE_KEY]) {\n globalScope[DIGITAL_SIGN_ENVIRONMENT_STORE_KEY] = {\n current: cloneEnvironmentConfig(EMPTY_DIGITAL_SIGN_ENVIRONMENT),\n defaults: cloneEnvironmentConfig(EMPTY_DIGITAL_SIGN_ENVIRONMENT),\n overrides: {},\n };\n }\n\n return globalScope[DIGITAL_SIGN_ENVIRONMENT_STORE_KEY]!;\n};\n\nexport const getDigitalSignEnvironment = (): DigitalSignEnvironmentConfig => {\n return resolveRuntimeStore().current;\n};\n\nexport const initializeDigitalSignEnvironment = (\n defaults: DigitalSignEnvironmentConfig,\n): DigitalSignEnvironmentConfig => {\n const store = resolveRuntimeStore();\n store.defaults = cloneEnvironmentConfig(defaults);\n store.current = mergeEnvironmentPatch(store.defaults, store.overrides);\n return store.current;\n};\n\nexport const setDigitalSignEnvironment = (\n config: DigitalSignEnvironmentConfig,\n): DigitalSignEnvironmentConfig => {\n const store = resolveRuntimeStore();\n store.current = cloneEnvironmentConfig(config);\n store.overrides = cloneEnvironmentPatch(config);\n return store.current;\n};\n\nexport const patchDigitalSignEnvironment = (\n patch: DigitalSignEnvironmentPatch,\n): DigitalSignEnvironmentConfig => {\n const store = resolveRuntimeStore();\n store.overrides = mergeEnvironmentPatchState(store.overrides, cloneEnvironmentPatch(patch));\n store.current = mergeEnvironmentPatch(store.current, patch);\n return store.current;\n};\n\nexport const resetDigitalSignEnvironment = (\n defaults?: DigitalSignEnvironmentConfig,\n): DigitalSignEnvironmentConfig => {\n const store = resolveRuntimeStore();\n if (defaults) {\n store.defaults = cloneEnvironmentConfig(defaults);\n }\n store.overrides = {};\n store.current = cloneEnvironmentConfig(store.defaults);\n return store.current;\n};\n\nexport const DIGITAL_SIGN_DEFAULTS = {\n EDGE_POSITION: DEFAULT_EDGE_POSITION,\n RSA_MODE: DEFAULT_RSA_MODE,\n SIGNATURE_TYPE: DEFAULT_SIGNATURE_TYPE,\n} as const;\n","import type { AdapterToolName } from './AdapterProtocol';\nimport type { ReaderBridgeClient } from './ReaderBridgeClient';\nimport type { SdkCallbackRegistry } from './SdkCallbackRegistry';\nimport type { ReaderStateStore } from './ReaderStateStore';\n\nexport type BridgeMethodKind =\n | 'callbackQuery'\n | 'callbackRegister'\n | 'command'\n | 'query'\n | 'stateGetter';\n\nexport interface BridgeToolMethodDescriptor {\n adapterMethod?: string;\n callback?: (callbacks: SdkCallbackRegistry, args: unknown[]) => void;\n mapCallbackResult?: (result: unknown) => unknown[];\n kind: BridgeMethodKind;\n state?: (state: ReturnType<ReaderStateStore['snapshot']>, args: unknown[]) => unknown;\n}\n\nexport type BridgeToolDescriptor = Record<string, BridgeToolMethodDescriptor>;\n\nexport interface BridgeToolAdapterContext {\n bridge: ReaderBridgeClient;\n callbacks: SdkCallbackRegistry;\n debug: () => boolean;\n onAsyncError: (error: unknown) => void;\n state: ReaderStateStore;\n}\n\nconst normalizeParams = (args: unknown[]): unknown => {\n if (args.length === 0) {\n return undefined;\n }\n\n if (args.length === 1) {\n return args[0];\n }\n\n return args;\n};\n\nexport const createBridgeToolAdapter = <T extends object>(\n tool: AdapterToolName,\n descriptor: BridgeToolDescriptor,\n context: BridgeToolAdapterContext,\n): T => {\n return new Proxy(\n {},\n {\n get: (_target, property): unknown => {\n if (property === 'then') {\n return undefined;\n }\n\n if (typeof property === 'symbol') {\n if (property === Symbol.toStringTag) {\n return tool;\n }\n\n return undefined;\n }\n\n const methodDescriptor = descriptor[property];\n if (!methodDescriptor) {\n return (..._args: unknown[]) => {\n const error = new Error(`${tool}.${property} is not implemented by the SDK adapter.`);\n context.onAsyncError(error);\n };\n }\n\n return (...args: unknown[]) => {\n if (methodDescriptor.kind === 'callbackRegister') {\n methodDescriptor.callback?.(context.callbacks, args);\n return undefined;\n }\n\n if (methodDescriptor.kind === 'stateGetter') {\n return methodDescriptor.state?.(context.state.snapshot(), args);\n }\n\n const adapterMethod = methodDescriptor.adapterMethod ?? property;\n\n if (methodDescriptor.kind === 'query') {\n return context.bridge.request(tool, adapterMethod, normalizeParams(args));\n }\n\n if (methodDescriptor.kind === 'callbackQuery') {\n const callback = args.find((arg) => typeof arg === 'function') as\n | ((...values: unknown[]) => void)\n | undefined;\n const params = args.filter((arg) => typeof arg !== 'function');\n void context.bridge\n .request(tool, adapterMethod, normalizeParams(params))\n .then((result) => {\n const callbackArgs = methodDescriptor.mapCallbackResult?.(result) ?? [result];\n callback?.(...callbackArgs);\n })\n .catch(context.onAsyncError);\n return undefined;\n }\n\n void context.bridge\n .request(tool, adapterMethod, normalizeParams(args))\n .catch(context.onAsyncError);\n return undefined;\n };\n },\n },\n ) as T;\n};\n\nexport const createNotImplementedBridgeTool = <T extends object>(\n tool: AdapterToolName,\n context: BridgeToolAdapterContext,\n): T => {\n return new Proxy(\n {},\n {\n get: (_target, property): unknown => {\n if (property === 'then') {\n return undefined;\n }\n\n if (typeof property === 'symbol') {\n return undefined;\n }\n\n return (..._args: unknown[]) => {\n const message = `${tool}.${property} is not implemented by the SDK adapter.`;\n context.onAsyncError(new Error(message));\n return undefined;\n };\n },\n },\n ) as T;\n};\n","import type { DocumentClosedCallback, DocumentSavedCallback } from '../api/callbacks';\nimport type { DocumentTool } from '../api/document-tool';\nimport {\n createBridgeToolAdapter,\n type BridgeToolAdapterContext,\n type BridgeToolDescriptor,\n} from '../viewer/BridgeToolAdapter';\n\nconst DOCUMENT_TOOL_DESCRIPTOR: BridgeToolDescriptor = {\n addDocumentOpenedCallback: {\n kind: 'callbackRegister',\n callback: (callbacks, args) => {\n const callback = args[0];\n if (typeof callback === 'function') {\n callbacks.documentOpened.push(callback as (status: string, error: string) => void);\n }\n },\n },\n addDocumentSavedCallback: {\n kind: 'callbackRegister',\n callback: (callbacks, args) => {\n const callback = args[0];\n if (typeof callback === 'function') {\n callbacks.documentSaved.push(callback as DocumentSavedCallback);\n }\n },\n },\n addDocumentClosedCallback: {\n kind: 'callbackRegister',\n callback: (callbacks, args) => {\n const callback = args[0];\n if (typeof callback === 'function') {\n callbacks.documentClosed.push(callback as DocumentClosedCallback);\n }\n },\n },\n openPDFDocument: { kind: 'callbackQuery', adapterMethod: 'open' },\n openPdfDocument: { kind: 'callbackQuery', adapterMethod: 'open' },\n openOFDDocument: { kind: 'callbackQuery', adapterMethod: 'open' },\n openOfdDocument: { kind: 'callbackQuery', adapterMethod: 'open' },\n openOfficeDocument: { kind: 'callbackQuery', adapterMethod: 'open' },\n openImageDocument: { kind: 'callbackQuery', adapterMethod: 'open' },\n openTextDocument: { kind: 'callbackQuery', adapterMethod: 'open' },\n openFromLocalStorage: { kind: 'command' },\n setUploadUrl: { kind: 'command' },\n save: { kind: 'callbackQuery' },\n saveAs: { kind: 'query' },\n getDocumentContent: {\n kind: 'callbackQuery',\n mapCallbackResult: (result) => {\n const content = result as { fileCacheId?: string; fileBuffer?: ArrayBuffer };\n return [content?.fileCacheId, content?.fileBuffer];\n },\n },\n closeDocument: { kind: 'callbackQuery' },\n isDocumentOpened: {\n kind: 'stateGetter',\n state: (state) => state.documentOpened,\n },\n isDocumentModified: {\n kind: 'stateGetter',\n state: (state) => state.documentModified,\n },\n print: { kind: 'command' },\n createPreview: { kind: 'command' },\n};\n\nexport class DocumentToolImpl implements DocumentTool {\n private readonly adapter: DocumentTool;\n\n constructor(context: BridgeToolAdapterContext) {\n this.adapter = createBridgeToolAdapter<DocumentTool>(\n 'document',\n DOCUMENT_TOOL_DESCRIPTOR,\n context,\n );\n }\n\n addDocumentOpenedCallback: DocumentTool['addDocumentOpenedCallback'] = (callback) => {\n return this.adapter.addDocumentOpenedCallback(callback);\n };\n\n addDocumentSavedCallback: DocumentTool['addDocumentSavedCallback'] = (callback) => {\n return this.adapter.addDocumentSavedCallback(callback);\n };\n\n addDocumentClosedCallback: DocumentTool['addDocumentClosedCallback'] = (callback) => {\n return this.adapter.addDocumentClosedCallback(callback);\n };\n\n openPDFDocument: DocumentTool['openPDFDocument'] = (options, onDocumentOpened) => {\n return this.adapter.openPDFDocument(options, onDocumentOpened);\n };\n\n openPdfDocument: DocumentTool['openPdfDocument'] = (options, onDocumentOpened) => {\n return this.adapter.openPdfDocument(options, onDocumentOpened);\n };\n\n openOFDDocument: DocumentTool['openOFDDocument'] = (options, onDocumentOpened) => {\n return this.adapter.openOFDDocument(options, onDocumentOpened);\n };\n\n openOfdDocument: DocumentTool['openOfdDocument'] = (options, onDocumentOpened) => {\n return this.adapter.openOfdDocument(options, onDocumentOpened);\n };\n\n openOfficeDocument: DocumentTool['openOfficeDocument'] = (options, onDocumentOpened) => {\n return this.adapter.openOfficeDocument(options, onDocumentOpened);\n };\n\n openImageDocument: DocumentTool['openImageDocument'] = (options, onDocumentOpened) => {\n return this.adapter.openImageDocument(options, onDocumentOpened);\n };\n\n openTextDocument: DocumentTool['openTextDocument'] = (options, onDocumentOpened) => {\n return this.adapter.openTextDocument(options, onDocumentOpened);\n };\n\n openFromLocalStorage: DocumentTool['openFromLocalStorage'] = () => {\n return this.adapter.openFromLocalStorage();\n };\n\n setUploadUrl: DocumentTool['setUploadUrl'] = (uploadUrl) => {\n return this.adapter.setUploadUrl(uploadUrl);\n };\n\n save: DocumentTool['save'] = (uploadUrl, onSavedCallback, options) => {\n return this.adapter.save(uploadUrl, onSavedCallback, options);\n };\n\n saveAs: DocumentTool['saveAs'] = (options) => {\n return this.adapter.saveAs(options);\n };\n\n getDocumentContent: DocumentTool['getDocumentContent'] = (onDocumentContent) => {\n return this.adapter.getDocumentContent(onDocumentContent);\n };\n\n closeDocument: DocumentTool['closeDocument'] = (discardModify, onClose, options) => {\n return this.adapter.closeDocument(discardModify, onClose, options);\n };\n\n isDocumentOpened: DocumentTool['isDocumentOpened'] = () => {\n return this.adapter.isDocumentOpened();\n };\n\n isDocumentModified: DocumentTool['isDocumentModified'] = () => {\n return this.adapter.isDocumentModified();\n };\n\n print: DocumentTool['print'] = () => {\n return this.adapter.print();\n };\n\n createPreview: DocumentTool['createPreview'] = (serverUrl, options) => {\n return this.adapter.createPreview(serverUrl, options);\n };\n}\n","import type { FindTool } from '../api/find-tool';\nimport {\n createBridgeToolAdapter,\n type BridgeToolAdapterContext,\n type BridgeToolDescriptor,\n} from '../viewer/BridgeToolAdapter';\n\nconst FIND_TOOL_DESCRIPTOR: BridgeToolDescriptor = {\n clearFind: { kind: 'command' },\n findNext: { kind: 'command' },\n findPrevious: { kind: 'command' },\n};\n\nexport class FindToolImpl implements FindTool {\n private readonly adapter: FindTool;\n\n constructor(context: BridgeToolAdapterContext) {\n this.adapter = createBridgeToolAdapter<FindTool>('find', FIND_TOOL_DESCRIPTOR, context);\n }\n\n clearFind: FindTool['clearFind'] = () => {\n return this.adapter.clearFind();\n };\n\n findNext: FindTool['findNext'] = (queryText) => {\n return this.adapter.findNext(queryText);\n };\n\n findPrevious: FindTool['findPrevious'] = (queryText) => {\n return this.adapter.findPrevious(queryText);\n };\n}\n","import type { NetworkingTool } from '../api/networking-tool';\nimport {\n createBridgeToolAdapter,\n type BridgeToolAdapterContext,\n type BridgeToolDescriptor,\n} from '../viewer/BridgeToolAdapter';\n\nconst NETWORKING_TOOL_DESCRIPTOR: BridgeToolDescriptor = {\n configFileUpload: { kind: 'command' },\n setHttpHeaders: { kind: 'command' },\n setHttpFormFields: { kind: 'command' },\n};\n\nexport class NetworkingToolImpl implements NetworkingTool {\n private readonly adapter: NetworkingTool;\n\n constructor(context: BridgeToolAdapterContext) {\n this.adapter = createBridgeToolAdapter<NetworkingTool>(\n 'networking',\n NETWORKING_TOOL_DESCRIPTOR,\n context,\n );\n }\n\n configFileUpload: NetworkingTool['configFileUpload'] = (options) => {\n return this.adapter.configFileUpload(options);\n };\n\n setHttpHeaders: NetworkingTool['setHttpHeaders'] = (headers) => {\n return this.adapter.setHttpHeaders(headers);\n };\n\n setHttpFormFields: NetworkingTool['setHttpFormFields'] = (fields) => {\n return this.adapter.setHttpFormFields(fields);\n };\n}\n","import type {\n PageChangeCallback,\n PageCountCallback,\n PageIndexGetCallback,\n PageModeChangeCallback,\n} from '../api/callbacks';\nimport type { PageTool } from '../api/page-tool';\nimport {\n createBridgeToolAdapter,\n type BridgeToolAdapterContext,\n type BridgeToolDescriptor,\n} from '../viewer/BridgeToolAdapter';\n\nconst createPageToolDescriptor = (context: BridgeToolAdapterContext): BridgeToolDescriptor => ({\n addPageChangeCallback: {\n kind: 'callbackRegister',\n callback: (callbacks, args) => {\n const callback = args[0];\n if (typeof callback === 'function') {\n callbacks.pageChange.push(callback as PageChangeCallback);\n }\n },\n },\n addPageModeChangeCallback: {\n kind: 'callbackRegister',\n callback: (callbacks, args) => {\n const callback = args[0];\n if (typeof callback === 'function') {\n callbacks.pageModeChange.push(callback as PageModeChangeCallback);\n }\n },\n },\n getPageCount: {\n kind: 'callbackRegister',\n callback: (callbacks, args) => {\n void callbacks;\n const callback = args[0];\n if (typeof callback === 'function') {\n (callback as PageCountCallback)(context.state.snapshot().pageCount);\n }\n },\n },\n getPageIndex: {\n kind: 'callbackRegister',\n callback: (callbacks, args) => {\n void callbacks;\n const callback = args[0];\n if (typeof callback === 'function') {\n (callback as PageIndexGetCallback)(context.state.snapshot().pageIndex);\n }\n },\n },\n setSinglePageViewMode: { kind: 'command' },\n setTwoPagesViewMode: { kind: 'command' },\n setPageScrollVertical: { kind: 'command' },\n setPageScrollHorizontal: { kind: 'command' },\n setPageCursorPanDrag: { kind: 'command' },\n setPageCursorTextSelect: { kind: 'command' },\n rotateCW: { kind: 'command' },\n rotateCCW: { kind: 'command' },\n autoFitPage: { kind: 'command' },\n fitPageSize: { kind: 'command' },\n fitPageWidth: { kind: 'command' },\n fitPageHeight: { kind: 'command' },\n increasePageScale: { kind: 'command' },\n decreasePageScale: { kind: 'command' },\n setPageScale: { kind: 'command' },\n setPageBlendColor: { kind: 'command' },\n gotoPage: { kind: 'command' },\n gotoNextPage: { kind: 'command' },\n gotoPreviousPage: { kind: 'command' },\n rotatePage: { kind: 'command' },\n});\n\nexport class PageToolImpl implements PageTool {\n private readonly adapter: PageTool;\n\n constructor(context: BridgeToolAdapterContext) {\n this.adapter = createBridgeToolAdapter<PageTool>(\n 'page',\n createPageToolDescriptor(context),\n context,\n );\n }\n\n addPageChangeCallback: PageTool['addPageChangeCallback'] = (callback) => {\n return this.adapter.addPageChangeCallback(callback);\n };\n\n addPageModeChangeCallback: PageTool['addPageModeChangeCallback'] = (callback) => {\n return this.adapter.addPageModeChangeCallback(callback);\n };\n\n getPageCount: PageTool['getPageCount'] = (callback) => {\n return this.adapter.getPageCount(callback);\n };\n\n getPageIndex: PageTool['getPageIndex'] = (callback) => {\n return this.adapter.getPageIndex(callback);\n };\n\n setSinglePageViewMode: PageTool['setSinglePageViewMode'] = () => {\n return this.adapter.setSinglePageViewMode();\n };\n\n setTwoPagesViewMode: PageTool['setTwoPagesViewMode'] = () => {\n return this.adapter.setTwoPagesViewMode();\n };\n\n setPageScrollVertical: PageTool['setPageScrollVertical'] = () => {\n return this.adapter.setPageScrollVertical();\n };\n\n setPageScrollHorizontal: PageTool['setPageScrollHorizontal'] = () => {\n return this.adapter.setPageScrollHorizontal();\n };\n\n setPageCursorPanDrag: PageTool['setPageCursorPanDrag'] = () => {\n return this.adapter.setPageCursorPanDrag();\n };\n\n setPageCursorTextSelect: PageTool['setPageCursorTextSelect'] = () => {\n return this.adapter.setPageCursorTextSelect();\n };\n\n rotateCW: PageTool['rotateCW'] = () => {\n return this.adapter.rotateCW();\n };\n\n rotateCCW: PageTool['rotateCCW'] = () => {\n return this.adapter.rotateCCW();\n };\n\n autoFitPage: PageTool['autoFitPage'] = () => {\n return this.adapter.autoFitPage();\n };\n\n fitPageSize: PageTool['fitPageSize'] = () => {\n return this.adapter.fitPageSize();\n };\n\n fitPageWidth: PageTool['fitPageWidth'] = () => {\n return this.adapter.fitPageWidth();\n };\n\n fitPageHeight: PageTool['fitPageHeight'] = () => {\n return this.adapter.fitPageHeight();\n };\n\n increasePageScale: PageTool['increasePageScale'] = () => {\n return this.adapter.increasePageScale();\n };\n\n decreasePageScale: PageTool['decreasePageScale'] = () => {\n return this.adapter.decreasePageScale();\n };\n\n setPageScale: PageTool['setPageScale'] = (scale) => {\n return this.adapter.setPageScale(scale);\n };\n\n setPageBlendColor: PageTool['setPageBlendColor'] = (r, g, b, alpha) => {\n return this.adapter.setPageBlendColor(r, g, b, alpha);\n };\n\n gotoPage: PageTool['gotoPage'] = (pageIndex, x, y) => {\n return this.adapter.gotoPage(pageIndex, x, y);\n };\n\n gotoNextPage: PageTool['gotoNextPage'] = () => {\n return this.adapter.gotoNextPage();\n };\n\n gotoPreviousPage: PageTool['gotoPreviousPage'] = () => {\n return this.adapter.gotoPreviousPage();\n };\n\n rotatePage: PageTool['rotatePage'] = (rotation) => {\n return this.adapter.rotatePage(rotation);\n };\n}\n","import type { PdfFormFiller } from '../api/pdf-formfiller';\nimport {\n createBridgeToolAdapter,\n type BridgeToolAdapterContext,\n type BridgeToolDescriptor,\n} from '../viewer/BridgeToolAdapter';\n\ninterface PdfFormKeyValueField {\n key: string;\n value: string;\n}\n\nconst PDF_FORM_FILLER_TOOL_DESCRIPTOR: BridgeToolDescriptor = {\n open: { kind: 'command' },\n setFormFieldValue: { kind: 'command' },\n setFormFieldReadonly: { kind: 'command' },\n commit: {\n kind: 'callbackQuery',\n mapCallbackResult: () => [],\n },\n clear: {\n kind: 'callbackQuery',\n mapCallbackResult: () => [],\n },\n toKeyValue: {\n kind: 'callbackQuery',\n mapCallbackResult: (result) => {\n return [Array.isArray(result) ? (result as PdfFormKeyValueField[]) : []];\n },\n },\n};\n\nexport class PdfFormFillerImpl implements PdfFormFiller {\n private readonly adapter: PdfFormFiller;\n\n constructor(context: BridgeToolAdapterContext) {\n this.adapter = createBridgeToolAdapter<PdfFormFiller>(\n 'pdfFormFiller',\n PDF_FORM_FILLER_TOOL_DESCRIPTOR,\n context,\n );\n }\n\n open: PdfFormFiller['open'] = () => {\n return this.adapter.open();\n };\n\n setFormFieldValue: PdfFormFiller['setFormFieldValue'] = (filedName, value) => {\n return this.adapter.setFormFieldValue(filedName, value);\n };\n\n setFormFieldReadonly: PdfFormFiller['setFormFieldReadonly'] = (filedName, readOnly) => {\n return this.adapter.setFormFieldReadonly(filedName, readOnly);\n };\n\n commit: PdfFormFiller['commit'] = (callback) => {\n return this.adapter.commit(callback);\n };\n\n clear: PdfFormFiller['clear'] = (callback) => {\n return this.adapter.clear(callback);\n };\n\n toKeyValue: PdfFormFiller['toKeyValue'] = (callback) => {\n return this.adapter.toKeyValue(callback);\n };\n}\n","import type {\n DigitalSealPosition,\n DigitalSignType,\n IDigitalSignOptions,\n IKVField,\n} from '../api/common';\n\nconst PAGE_RANGE_SEPARATOR_PATTERN = /\\s*,\\s*/;\nconst PAGE_BOUNDS_SEPARATOR_PATTERN = /\\s*-\\s*/;\n\nconst normalizePageNumber = (value: string): number | null => {\n const parsedValue = Number.parseInt(value.trim(), 10);\n if (!Number.isFinite(parsedValue) || parsedValue <= 0) {\n return null;\n }\n\n return parsedValue;\n};\n\nconst expandPageRangeSegment = (segment: string): number[] => {\n const bounds = segment.split(PAGE_BOUNDS_SEPARATOR_PATTERN);\n if (bounds.length === 1) {\n const pageNumber = normalizePageNumber(bounds[0] ?? '');\n return pageNumber ? [pageNumber] : [];\n }\n\n const startPage = normalizePageNumber(bounds[0] ?? '');\n const endPage = normalizePageNumber(bounds[1] ?? '');\n if (!startPage || !endPage || endPage < startPage) {\n return [];\n }\n\n return Array.from({ length: endPage - startPage + 1 }, (_, index) => startPage + index);\n};\n\nconst parsePageRanges = (pageRange?: string): number[] => {\n if (!pageRange) {\n return [];\n }\n\n const pageNumbers = pageRange\n .split(PAGE_RANGE_SEPARATOR_PATTERN)\n .flatMap((segment) => expandPageRangeSegment(segment))\n .filter((value, index, source) => source.indexOf(value) === index);\n\n return pageNumbers;\n};\n\nexport class KVField implements IKVField {\n key?: string;\n value?: string;\n description?: string;\n\n constructor(key: string, value: string, description?: string) {\n this.key = key;\n this.value = value;\n this.description = description;\n }\n\n readonly setFieldName = (name: string): void => {\n this.key = name;\n };\n\n readonly setFieldValue = (value: string): void => {\n this.value = value;\n };\n\n readonly setDescription = (description?: string): void => {\n this.description = description;\n };\n}\n\nexport class DigitalSignOptions implements IDigitalSignOptions {\n pageRange?: string;\n page?: number;\n pageX?: number;\n pageY?: number;\n signReason?: string;\n signLocation?: string;\n signUserData?: string;\n fields: IKVField[] = [];\n defaultStampPassword?: string;\n defaultKeystorePassword?: string;\n keywordText?: string | undefined;\n keywordTextFixedPositions:\n | {\n pageIndex?: number;\n firstOccurrence?: boolean;\n position?: number;\n }[]\n | undefined = undefined;\n keywordOffsetX = 0;\n keywordOffsetY = 0;\n bookmarkName?: string | undefined;\n bookmarkOffsetX = 0;\n bookmarkOffsetY = 0;\n printMargin?: number = 0;\n grayscaleSealImage = false;\n\n private signType: DigitalSignType = 0;\n private sealPosition: DigitalSealPosition = 0;\n\n readonly getSignType = (): DigitalSignType => {\n return this.signType;\n };\n\n readonly setSignType = (signType: DigitalSignType): void => {\n this.signType = signType;\n };\n\n readonly isCrossPageSideSign = (): boolean => {\n return this.signType === 2 || this.signType === 3;\n };\n\n readonly getSealPosition = (): DigitalSealPosition => {\n return this.sealPosition;\n };\n\n readonly setSignOnPageSides = (signType: number): void => {\n if (signType >= 0 && signType <= 3) {\n this.signType = signType as DigitalSignType;\n }\n };\n\n readonly setSignPositionOnPageSides = (position: number): void => {\n this.sealPosition = position;\n };\n\n readonly setPageRange = (text: string): void => {\n this.pageRange = text;\n };\n\n readonly getPageRange = (): string | undefined => {\n return this.pageRange;\n };\n\n readonly getPageRanges = (): number[] => {\n return parsePageRanges(this.pageRange);\n };\n\n readonly setSignUserData = (signUserData: string): void => {\n this.signUserData = signUserData;\n };\n\n readonly setPrintMargin = (margin: number): void => {\n this.printMargin = margin;\n };\n\n readonly getPrintMargin = (): number => {\n return this.printMargin ?? 0;\n };\n\n readonly setSignReason = (reason: string): void => {\n this.signReason = reason;\n };\n\n readonly getSignReason = (): string | undefined => {\n return this.signReason;\n };\n\n readonly setSignLocation = (location: string): void => {\n this.signLocation = location;\n };\n\n readonly getSignLocation = (): string | undefined => {\n return this.signLocation;\n };\n\n readonly setDefaultStampPassword = (password: string): void => {\n this.defaultStampPassword = password;\n };\n}\n","import type { UITool } from '../api/ui-tool';\nimport {\n createBridgeToolAdapter,\n type BridgeToolAdapterContext,\n type BridgeToolDescriptor,\n} from '../viewer/BridgeToolAdapter';\n\nconst BOOK_VIEW_PAGE_MODES = new Set([2, 5]);\n\nconst createUIToolDescriptor = (context: BridgeToolAdapterContext): BridgeToolDescriptor => ({\n showToolbarMenu: { kind: 'command' },\n hideToolbarMenu: { kind: 'command' },\n setupToolbarMenu: { kind: 'command' },\n showToolbarMenuItem: { kind: 'command' },\n hideToolbarMenuItem: { kind: 'command' },\n setupRibbonMenu: { kind: 'command' },\n setupRibbonMenuItem: { kind: 'command' },\n setupRibbonTitleBar: { kind: 'command' },\n showRibbonMenu: { kind: 'command' },\n hideRibbonMenu: { kind: 'command' },\n showRibbonMenuItem: { kind: 'command' },\n hideRibbonMenuItem: { kind: 'command' },\n showRibbonTitleBar: { kind: 'command' },\n hideRibbonTitleBar: { kind: 'command' },\n selectRibbonMenu: { kind: 'command' },\n setRibbonMenuButtonStyle: { kind: 'command' },\n setWatermark: { kind: 'command' },\n setCompactMode: { kind: 'command' },\n enterBookViewMode: {\n kind: 'callbackQuery',\n mapCallbackResult: () => [],\n },\n exitBookViewMode: { kind: 'command' },\n isBookViewActivated: {\n kind: 'stateGetter',\n state: () => BOOK_VIEW_PAGE_MODES.has(context.state.snapshot().pageMode),\n },\n requestFullScreen: { kind: 'command' },\n exitFullScreen: { kind: 'command' },\n invalidateView: { kind: 'command' },\n});\n\nexport class UIToolImpl implements UITool {\n private readonly adapter: UITool;\n\n constructor(context: BridgeToolAdapterContext) {\n this.adapter = createBridgeToolAdapter<UITool>('ui', createUIToolDescriptor(context), context);\n }\n\n showToolbarMenu: UITool['showToolbarMenu'] = () => {\n return this.adapter.showToolbarMenu();\n };\n\n hideToolbarMenu: UITool['hideToolbarMenu'] = () => {\n return this.adapter.hideToolbarMenu();\n };\n\n setupToolbarMenu: UITool['setupToolbarMenu'] = (opt) => {\n return this.adapter.setupToolbarMenu(opt);\n };\n\n showToolbarMenuItem: UITool['showToolbarMenuItem'] = (menuId) => {\n return this.adapter.showToolbarMenuItem(menuId);\n };\n\n hideToolbarMenuItem: UITool['hideToolbarMenuItem'] = (menuId) => {\n return this.adapter.hideToolbarMenuItem(menuId);\n };\n\n setupRibbonMenu: UITool['setupRibbonMenu'] = (opt) => {\n return this.adapter.setupRibbonMenu(opt);\n };\n\n setupRibbonMenuItem: UITool['setupRibbonMenuItem'] = (menuId, visible, config) => {\n return this.adapter.setupRibbonMenuItem(menuId, visible, config);\n };\n\n setupRibbonTitleBar: UITool['setupRibbonTitleBar'] = (visible) => {\n return this.adapter.setupRibbonTitleBar(visible);\n };\n\n showRibbonMenu: UITool['showRibbonMenu'] = () => {\n return this.adapter.showRibbonMenu();\n };\n\n hideRibbonMenu: UITool['hideRibbonMenu'] = () => {\n return this.adapter.hideRibbonMenu();\n };\n\n showRibbonMenuItem: UITool['showRibbonMenuItem'] = (menuId, config) => {\n return this.adapter.showRibbonMenuItem(menuId, config);\n };\n\n hideRibbonMenuItem: UITool['hideRibbonMenuItem'] = (menuId, config) => {\n return this.adapter.hideRibbonMenuItem(menuId, config);\n };\n\n showRibbonTitleBar: UITool['showRibbonTitleBar'] = () => {\n return this.adapter.showRibbonTitleBar();\n };\n\n hideRibbonTitleBar: UITool['hideRibbonTitleBar'] = () => {\n return this.adapter.hideRibbonTitleBar();\n };\n\n selectRibbonMenu: UITool['selectRibbonMenu'] = (menuId) => {\n return this.adapter.selectRibbonMenu(menuId);\n };\n\n setRibbonMenuButtonStyle: UITool['setRibbonMenuButtonStyle'] = (buttonId, buttonStyle) => {\n return this.adapter.setRibbonMenuButtonStyle(buttonId, buttonStyle);\n };\n\n setWatermark: UITool['setWatermark'] = (fields) => {\n return this.adapter.setWatermark(fields);\n };\n\n setCompactMode: UITool['setCompactMode'] = (compact) => {\n return this.adapter.setCompactMode(compact);\n };\n\n enterBookViewMode: UITool['enterBookViewMode'] = (callback) => {\n return this.adapter.enterBookViewMode(callback);\n };\n\n exitBookViewMode: UITool['exitBookViewMode'] = () => {\n return this.adapter.exitBookViewMode();\n };\n\n isBookViewActivated: UITool['isBookViewActivated'] = () => {\n return this.adapter.isBookViewActivated();\n };\n\n requestFullScreen: UITool['requestFullScreen'] = () => {\n return this.adapter.requestFullScreen();\n };\n\n exitFullScreen: UITool['exitFullScreen'] = () => {\n return this.adapter.exitFullScreen();\n };\n\n invalidateView: UITool['invalidateView'] = () => {\n return this.adapter.invalidateView();\n };\n}\n","import type { IReaderEmbedOptions } from '../api/document-sdk';\n\nexport type SupportedReaderTheme = 'light' | 'dark' | 'high-contrast' | 'auto';\n\nexport interface NormalizedReaderEmbedOptions extends IReaderEmbedOptions {\n appUrl: string;\n scrollIntoView: boolean;\n theme?: SupportedReaderTheme;\n}\n\nconst normalizeTheme = (theme?: string): SupportedReaderTheme | undefined => {\n if (!theme) {\n return undefined;\n }\n\n const normalizedTheme = theme.trim().toLowerCase();\n if (normalizedTheme === 'application') {\n return 'auto';\n }\n\n if (\n normalizedTheme === 'light' ||\n normalizedTheme === 'dark' ||\n normalizedTheme === 'high-contrast' ||\n normalizedTheme === 'auto'\n ) {\n return normalizedTheme;\n }\n\n return undefined;\n};\n\nexport const normalizeAppUrl = (appUrl: string): string => {\n const normalizedUrl = new URL(appUrl, globalThis.location?.href ?? 'http://localhost/');\n normalizedUrl.hash = '';\n if (!normalizedUrl.pathname.endsWith('/')) {\n normalizedUrl.pathname = `${normalizedUrl.pathname}/`;\n }\n\n return normalizedUrl.toString();\n};\n\nexport const createBootstrapUrl = (appUrl: string): string => {\n return new URL('editors.bootstrap.js', appUrl).toString();\n};\n\nexport const normalizeReaderEmbedOptions = (\n appUrl: string,\n configuration: IReaderEmbedOptions,\n): NormalizedReaderEmbedOptions => {\n const normalizedAppUrl = normalizeAppUrl(appUrl);\n\n return {\n ...configuration,\n appUrl: normalizedAppUrl,\n scrollIntoView: configuration.scrollIntoView ?? true,\n theme: normalizeTheme(configuration.theme),\n };\n};\n","import { createBootstrapUrl } from './ReaderConfiguration';\n\nexport const READER_CUSTOM_ELEMENT_TAG = 'rhc-office-editor';\n\nconst READER_LOADER_REGISTRY_KEY = '__RHC_OFFICE_SDK_READER_LOADER__';\n\ninterface ReaderLoaderRegistry {\n activeAppUrl: string | null;\n loadPromises: Map<string, Promise<void>>;\n}\n\ntype BrowserGlobal = typeof globalThis & {\n [READER_LOADER_REGISTRY_KEY]?: ReaderLoaderRegistry;\n};\n\nconst getReaderLoaderRegistry = (): ReaderLoaderRegistry => {\n const browserGlobal = globalThis as BrowserGlobal;\n if (!browserGlobal[READER_LOADER_REGISTRY_KEY]) {\n browserGlobal[READER_LOADER_REGISTRY_KEY] = {\n activeAppUrl: null,\n loadPromises: new Map<string, Promise<void>>(),\n };\n }\n\n return browserGlobal[READER_LOADER_REGISTRY_KEY];\n};\n\nconst findScriptElementBySource = (source: string): HTMLScriptElement | null => {\n return (\n Array.from(document.querySelectorAll('script')).find((element) => element.src === source) ??\n null\n );\n};\n\nexport class ReaderScriptLoadError extends Error {\n constructor(bootstrapUrl: string) {\n super(`Failed to load reader bootstrap script: ${bootstrapUrl}`);\n this.name = 'ReaderScriptLoadError';\n }\n}\n\nexport class ReaderSourceConflictError extends Error {\n constructor(activeAppUrl: string, requestedAppUrl: string) {\n super(\n `Reader Web Component \"${READER_CUSTOM_ELEMENT_TAG}\" is already bound to ${activeAppUrl} and cannot be reloaded from ${requestedAppUrl}.`,\n );\n this.name = 'ReaderSourceConflictError';\n }\n}\n\nexport const assertCompatibleReaderSource = (appUrl: string): void => {\n const registry = getReaderLoaderRegistry();\n if (registry.activeAppUrl && registry.activeAppUrl !== appUrl) {\n throw new ReaderSourceConflictError(registry.activeAppUrl, appUrl);\n }\n};\n\nexport const ensureReaderScriptLoaded = (appUrl: string): Promise<void> => {\n const registry = getReaderLoaderRegistry();\n assertCompatibleReaderSource(appUrl);\n\n const existingLoadPromise = registry.loadPromises.get(appUrl);\n if (existingLoadPromise) {\n return existingLoadPromise;\n }\n\n if (globalThis.customElements?.get(READER_CUSTOM_ELEMENT_TAG)) {\n registry.activeAppUrl = appUrl;\n const resolvedPromise = Promise.resolve();\n registry.loadPromises.set(appUrl, resolvedPromise);\n return resolvedPromise;\n }\n\n const bootstrapUrl = createBootstrapUrl(appUrl);\n const existingScriptElement = findScriptElementBySource(bootstrapUrl);\n registry.activeAppUrl = appUrl;\n\n const loadPromise = new Promise<void>((resolve, reject) => {\n const rejectScriptLoad = (scriptElement?: HTMLScriptElement): void => {\n scriptElement?.remove();\n reject(new ReaderScriptLoadError(bootstrapUrl));\n };\n\n const resolveWhenDefined = (): void => {\n void globalThis.customElements\n .whenDefined(READER_CUSTOM_ELEMENT_TAG)\n .then(() => {\n resolve();\n })\n .catch(reject);\n };\n\n if (existingScriptElement) {\n if (globalThis.customElements?.get(READER_CUSTOM_ELEMENT_TAG)) {\n resolve();\n return;\n }\n\n existingScriptElement.addEventListener(\n 'error',\n () => reject(new ReaderScriptLoadError(bootstrapUrl)),\n {\n once: true,\n },\n );\n resolveWhenDefined();\n return;\n }\n\n const scriptElement = document.createElement('script');\n scriptElement.src = bootstrapUrl;\n scriptElement.async = true;\n scriptElement.dataset.rhcOfficeSdkReader = appUrl;\n scriptElement.addEventListener('load', resolveWhenDefined, { once: true });\n scriptElement.addEventListener('error', () => rejectScriptLoad(scriptElement), { once: true });\n document.head.appendChild(scriptElement);\n }).catch((error: unknown) => {\n registry.loadPromises.delete(appUrl);\n if (\n !globalThis.customElements?.get(READER_CUSTOM_ELEMENT_TAG) &&\n registry.activeAppUrl === appUrl\n ) {\n registry.activeAppUrl = null;\n }\n throw error;\n });\n\n registry.loadPromises.set(appUrl, loadPromise);\n return loadPromise;\n};\n","export const RHC_OFFICE_ADAPTER_PROTOCOL = 'rhc-office.editor-adapter';\nexport const RHC_OFFICE_ADAPTER_VERSION = 1;\nexport const RHC_OFFICE_ADAPTER_GLOBAL = '__RHC_OFFICE_EDITOR_ADAPTER__';\nexport const RHC_OFFICE_ADAPTER_READY_EVENT = 'rhcOfficeAdapterReady';\nexport const RHC_OFFICE_ADAPTER_EVENT = 'rhcOfficeAdapterEvent';\nexport const RHC_OFFICE_READER_ID_ATTRIBUTE = 'data-rhc-office-reader-id';\n\nexport type AdapterToolName =\n | 'document'\n | 'page'\n | 'ui'\n | 'find'\n | 'annotation'\n | 'digitalSign'\n | 'signServer'\n | 'review'\n | 'ekey'\n | 'symbology'\n | 'templateSign'\n | 'pdfFormFiller'\n | 'extension'\n | 'networking'\n | 'crypto';\n\nexport type AdapterErrorCode =\n | 'ADAPTER_UNAVAILABLE'\n | 'READER_NOT_READY'\n | 'READER_NOT_FOUND'\n | 'COMMAND_NOT_FOUND'\n | 'NOT_IMPLEMENTED'\n | 'INVALID_PARAMS'\n | 'EXECUTION_FAILED'\n | 'TIMEOUT';\n\nexport interface AdapterError {\n code: AdapterErrorCode;\n message: string;\n details?: unknown;\n}\n\nexport interface AdapterRequest<TParams = unknown> {\n protocol: typeof RHC_OFFICE_ADAPTER_PROTOCOL;\n version: typeof RHC_OFFICE_ADAPTER_VERSION;\n requestId: string;\n readerId: string;\n tool: AdapterToolName;\n method: string;\n params?: TParams;\n}\n\nexport type AdapterResponse<TResult = unknown> =\n | {\n ok: true;\n requestId: string;\n result: TResult;\n }\n | {\n ok: false;\n requestId: string;\n error: AdapterError;\n };\n\nexport interface AdapterCommandCapability {\n implemented: boolean;\n method: string;\n tool: AdapterToolName;\n}\n\nexport interface AdapterCapabilityManifest {\n version: typeof RHC_OFFICE_ADAPTER_VERSION;\n tools: AdapterToolName[];\n commands: AdapterCommandCapability[];\n}\n\nexport interface AdapterStatePatch {\n documentOpened?: boolean;\n documentModified?: boolean;\n pageCount?: number;\n pageIndex?: number;\n pageMode?: number;\n zoomLevel?: number;\n documentType?: string;\n annotationMode?: string;\n annotationEnabled?: boolean;\n extensionState?: 'connected' | 'disconnected';\n}\n\nexport interface AdapterEvent<TPayload = unknown> {\n protocol: typeof RHC_OFFICE_ADAPTER_PROTOCOL;\n version: typeof RHC_OFFICE_ADAPTER_VERSION;\n readerId: string;\n event: string;\n payload?: TPayload;\n statePatch?: AdapterStatePatch;\n}\n\nexport interface AdapterReadyEventDetail {\n protocol: typeof RHC_OFFICE_ADAPTER_PROTOCOL;\n version: typeof RHC_OFFICE_ADAPTER_VERSION;\n readerId: string;\n}\n\nexport interface AdapterReaderSession {\n readerId: string;\n capabilities: AdapterCapabilityManifest;\n request(request: AdapterRequest): Promise<AdapterResponse>;\n}\n\nexport interface AdapterGlobal {\n registerReader(session: AdapterReaderSession): void;\n unregisterReader(readerId: string): void;\n request(request: AdapterRequest): Promise<AdapterResponse>;\n getCapabilities(readerId: string): AdapterCapabilityManifest | null;\n}\n","import {\n RHC_OFFICE_ADAPTER_GLOBAL,\n RHC_OFFICE_ADAPTER_PROTOCOL,\n RHC_OFFICE_ADAPTER_READY_EVENT,\n RHC_OFFICE_ADAPTER_VERSION,\n type AdapterCapabilityManifest,\n type AdapterGlobal,\n type AdapterRequest,\n type AdapterResponse,\n type AdapterToolName,\n} from './AdapterProtocol';\n\nconst DEFAULT_REQUEST_TIMEOUT_MS = 5000;\nconst DEFAULT_READY_TIMEOUT_MS = 5000;\n\ntype BrowserGlobal = typeof globalThis & {\n [RHC_OFFICE_ADAPTER_GLOBAL]?: AdapterGlobal;\n};\n\nconst createRequestId = (): string => {\n const cryptoApi = globalThis.crypto;\n if (typeof cryptoApi?.randomUUID === 'function') {\n return cryptoApi.randomUUID();\n }\n\n return `adapter-${Date.now()}-${Math.random().toString(36).slice(2)}`;\n};\n\nconst getAdapterGlobal = (): AdapterGlobal | undefined => {\n return (globalThis as BrowserGlobal)[RHC_OFFICE_ADAPTER_GLOBAL];\n};\n\nexport class ReaderBridgeError extends Error {\n readonly code: string;\n readonly details?: unknown;\n\n constructor(code: string, message: string, details?: unknown) {\n super(message);\n this.name = 'ReaderBridgeError';\n this.code = code;\n this.details = details;\n }\n}\n\nexport class ReaderBridgeClient {\n private readerId: string | null = null;\n private readyTimeoutMs: number;\n private requestTimeoutMs: number;\n\n constructor(options?: { readyTimeoutMs?: number; requestTimeoutMs?: number }) {\n this.readyTimeoutMs = options?.readyTimeoutMs ?? DEFAULT_READY_TIMEOUT_MS;\n this.requestTimeoutMs = options?.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;\n }\n\n configureTimeouts(options?: { readyTimeoutMs?: number; requestTimeoutMs?: number }): void {\n this.readyTimeoutMs = options?.readyTimeoutMs ?? this.readyTimeoutMs;\n this.requestTimeoutMs = options?.requestTimeoutMs ?? this.requestTimeoutMs;\n }\n\n setReaderId(readerId: string | null): void {\n this.readerId = readerId;\n }\n\n getReaderId(): string | null {\n return this.readerId;\n }\n\n async request<TResult = unknown, TParams = unknown>(\n tool: AdapterToolName,\n method: string,\n params?: TParams,\n options?: {\n timeoutMs?: number;\n },\n ): Promise<TResult> {\n const response = await this.requestRaw<TResult, TParams>(tool, method, params, options);\n if (response.ok) {\n return response.result;\n }\n\n throw new ReaderBridgeError(\n response.error.code,\n response.error.message,\n response.error.details,\n );\n }\n\n async requestRaw<TResult = unknown, TParams = unknown>(\n tool: AdapterToolName,\n method: string,\n params?: TParams,\n options?: {\n timeoutMs?: number;\n },\n ): Promise<AdapterResponse<TResult>> {\n if (!this.readerId) {\n return {\n ok: false,\n requestId: '',\n error: {\n code: 'READER_NOT_READY',\n message: 'Reader is not mounted.',\n },\n };\n }\n\n const adapter = await this.waitForAdapter(this.readerId, options?.timeoutMs);\n if (!adapter) {\n return {\n ok: false,\n requestId: '',\n error: {\n code: 'ADAPTER_UNAVAILABLE',\n message: 'Editor adapter is not available.',\n },\n };\n }\n\n const request: AdapterRequest<TParams> = {\n protocol: RHC_OFFICE_ADAPTER_PROTOCOL,\n version: RHC_OFFICE_ADAPTER_VERSION,\n requestId: createRequestId(),\n readerId: this.readerId,\n tool,\n method,\n params,\n };\n\n return this.withTimeout(\n adapter.request(request) as Promise<AdapterResponse<TResult>>,\n request.requestId,\n options?.timeoutMs ?? this.requestTimeoutMs,\n );\n }\n\n getCapabilities(): AdapterCapabilityManifest | null {\n if (!this.readerId) {\n return null;\n }\n\n return getAdapterGlobal()?.getCapabilities(this.readerId) ?? null;\n }\n\n private async waitForAdapter(\n readerId: string,\n timeoutMs = this.readyTimeoutMs,\n ): Promise<AdapterGlobal | null> {\n const existingAdapter = getAdapterGlobal();\n if (existingAdapter?.getCapabilities(readerId)) {\n return existingAdapter;\n }\n\n return new Promise<AdapterGlobal | null>((resolve) => {\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n const cleanup = (): void => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n globalThis.removeEventListener(RHC_OFFICE_ADAPTER_READY_EVENT, onReady as EventListener);\n };\n\n const onReady = (event: Event): void => {\n const detail = event instanceof CustomEvent ? event.detail : undefined;\n if (detail?.readerId !== readerId) {\n return;\n }\n\n const adapter = getAdapterGlobal();\n cleanup();\n resolve(adapter ?? null);\n };\n\n globalThis.addEventListener(RHC_OFFICE_ADAPTER_READY_EVENT, onReady as EventListener);\n timeoutId = setTimeout(() => {\n cleanup();\n resolve(getAdapterGlobal()?.getCapabilities(readerId) ? getAdapterGlobal()! : null);\n }, timeoutMs);\n });\n }\n\n private async withTimeout<TResult>(\n promise: Promise<AdapterResponse<TResult>>,\n requestId: string,\n timeoutMs: number,\n ): Promise<AdapterResponse<TResult>> {\n return new Promise<AdapterResponse<TResult>>((resolve) => {\n const timeoutId = setTimeout(() => {\n resolve({\n ok: false,\n requestId,\n error: {\n code: 'TIMEOUT',\n message: `Editor adapter request timed out after ${timeoutMs}ms.`,\n },\n });\n }, timeoutMs);\n\n promise\n .then((response) => resolve(response))\n .catch((error: unknown) => {\n resolve({\n ok: false,\n requestId,\n error: {\n code: 'EXECUTION_FAILED',\n message: error instanceof Error ? error.message : String(error),\n },\n });\n })\n .finally(() => {\n clearTimeout(timeoutId);\n });\n });\n }\n}\n","import type { AdapterStatePatch } from './AdapterProtocol';\n\nexport interface ReaderStateSnapshot {\n annotationEnabled: boolean;\n annotationMode?: string;\n documentModified: boolean;\n documentOpened: boolean;\n documentType?: string;\n extensionState: 'connected' | 'disconnected';\n pageCount: number;\n pageIndex: number;\n pageMode: number;\n zoomLevel: number;\n}\n\nconst DEFAULT_READER_STATE: ReaderStateSnapshot = {\n annotationEnabled: false,\n documentModified: false,\n documentOpened: false,\n extensionState: 'disconnected',\n pageCount: 0,\n pageIndex: 1,\n pageMode: 0,\n zoomLevel: 100,\n};\n\nexport class ReaderStateStore {\n private state: ReaderStateSnapshot = { ...DEFAULT_READER_STATE };\n\n reset(): void {\n this.state = { ...DEFAULT_READER_STATE };\n }\n\n update(patch?: AdapterStatePatch): void {\n if (!patch) {\n return;\n }\n\n this.state = {\n ...this.state,\n ...patch,\n };\n }\n\n setDocumentOpened(opened: boolean): void {\n this.state = {\n ...this.state,\n documentOpened: opened,\n };\n }\n\n snapshot(): ReaderStateSnapshot {\n return { ...this.state };\n }\n}\n","import type {\n AnnotationEventCallback,\n DigitalSignatureRetrieveCallback,\n DocumentClosedCallback,\n DocumentSavedCallback,\n ExtensionStateChangedCallback,\n PageChangeCallback,\n PageModeChangeCallback,\n} from '../api/callbacks';\nimport type { IDigitalAnnotationInfo } from '../api/annotation-tool';\n\nexport class SdkCallbackRegistry {\n readonly annotationEvents: AnnotationEventCallback[] = [];\n readonly annotationPersist: Array<(event: unknown) => void> = [];\n readonly annotationRetrieve: Array<(event: unknown) => void> = [];\n readonly digitalAnnotationRetrieve: Array<(annotations: IDigitalAnnotationInfo[]) => void> = [];\n readonly digitalSignatureParse: DigitalSignatureRetrieveCallback[] = [];\n readonly digitalSignatureRetrieve: DigitalSignatureRetrieveCallback[] = [];\n readonly documentClosed: DocumentClosedCallback[] = [];\n readonly documentOpened: Array<(status: string, error: string) => void> = [];\n readonly documentSaved: DocumentSavedCallback[] = [];\n readonly extensionStateChanged: ExtensionStateChangedCallback[] = [];\n readonly pageChange: PageChangeCallback[] = [];\n readonly pageModeChange: PageModeChangeCallback[] = [];\n\n emit(event: string, payload: unknown): void {\n switch (event) {\n case 'documentOpened':\n case 'documentLoaded':\n this.documentOpened.forEach((callback) => callback('ok', ''));\n return;\n case 'documentSaved':\n this.documentSaved.forEach((callback) => callback(payload));\n return;\n case 'documentClosed':\n this.documentClosed.forEach((callback) => callback(payload));\n return;\n case 'pageChange': {\n const pagePayload = payload as { pageIndex?: number; pageCount?: number };\n this.pageChange.forEach((callback) =>\n callback(pagePayload.pageIndex ?? 1, pagePayload.pageCount ?? 0),\n );\n return;\n }\n case 'pageModeChange': {\n const pagePayload = payload as { pageMode?: number };\n this.pageModeChange.forEach((callback) => callback(pagePayload.pageMode ?? 0));\n return;\n }\n case 'annotationEvent': {\n const annotationPayload = payload as { event?: string; payload?: unknown };\n this.annotationEvents.forEach((callback) =>\n callback(annotationPayload.event ?? 'annotationEvent', annotationPayload.payload),\n );\n return;\n }\n case 'annotationPersist':\n this.annotationPersist.forEach((callback) => callback(payload));\n return;\n case 'annotationRetrieve':\n this.annotationRetrieve.forEach((callback) => callback(payload));\n return;\n case 'digitalAnnotationRetrieve':\n this.digitalAnnotationRetrieve.forEach((callback) =>\n callback(Array.isArray(payload) ? (payload as IDigitalAnnotationInfo[]) : []),\n );\n return;\n case 'digitalSignatureRetrieve':\n this.digitalSignatureRetrieve.forEach((callback) =>\n callback(Array.isArray(payload) ? payload : []),\n );\n return;\n case 'digitalSignatureParse':\n this.digitalSignatureParse.forEach((callback) =>\n callback(Array.isArray(payload) ? payload : []),\n );\n return;\n case 'extensionStateChanged': {\n const extensionPayload = payload as { state?: 'connected' | 'disconnected' };\n this.extensionStateChanged.forEach((callback) =>\n callback(extensionPayload.state ?? 'disconnected'),\n );\n return;\n }\n default:\n return;\n }\n }\n}\n","import type { AnnotationTool } from '../api/annotation-tool';\nimport type { IDigitalAnnotationInfo } from '../api/annotation-tool';\nimport type { CryptoTool } from '../api/crypto-tool';\nimport type {\n AnnotationEventCallback,\n ExtensionStateChangedCallback,\n ReaderReadyCallback,\n ReaderUnloadCallback,\n} from '../api/callbacks';\nimport type { IDocumentSDK, IReaderEmbedOptions } from '../api/document-sdk';\nimport type { DocumentTool } from '../api/document-tool';\nimport type { EkeyTool } from '../api/ekey-tool';\nimport type { ExtensionTool } from '../api/extension-tool';\nimport type { FindTool } from '../api/find-tool';\nimport type { NetworkingTool } from '../api/networking-tool';\nimport type { PageTool } from '../api/page-tool';\nimport type { PdfFormFiller } from '../api/pdf-formfiller';\nimport type { ReviewTool } from '../api/review-tool';\nimport type { SignServerTool } from '../api/sign-server';\nimport type { DigitalSignTool } from '../api/sign-tool';\nimport type { SymbologyTool } from '../api/symbology-tool';\nimport type { TemplateSignTool } from '../api/template-sign';\nimport type { UITool } from '../api/ui-tool';\nimport { DocumentToolImpl } from '../tools/DocumentToolImpl';\nimport { FindToolImpl } from '../tools/FindToolImpl';\nimport { NetworkingToolImpl } from '../tools/NetworkingToolImpl';\nimport { PageToolImpl } from '../tools/PageToolImpl';\nimport { PdfFormFillerImpl } from '../tools/PdfFormFillerImpl';\nimport { DigitalSignOptions, KVField } from '../tools/SDKValueObjects';\nimport { UIToolImpl } from '../tools/UIToolImpl';\nimport type { NormalizedReaderEmbedOptions } from './ReaderConfiguration';\nimport { normalizeAppUrl, normalizeReaderEmbedOptions } from './ReaderConfiguration';\nimport {\n assertCompatibleReaderSource,\n ensureReaderScriptLoaded,\n READER_CUSTOM_ELEMENT_TAG,\n} from './ReaderScriptLoader';\nimport {\n RHC_OFFICE_ADAPTER_EVENT,\n RHC_OFFICE_READER_ID_ATTRIBUTE,\n type AdapterEvent,\n} from './AdapterProtocol';\nimport { createBridgeToolAdapter, createNotImplementedBridgeTool } from './BridgeToolAdapter';\nimport { ReaderBridgeClient } from './ReaderBridgeClient';\nimport { ReaderStateStore } from './ReaderStateStore';\nimport { SdkCallbackRegistry } from './SdkCallbackRegistry';\n\ntype ReaderEventListener = Parameters<IDocumentSDK['setReaderEventListener']>[0];\ntype ReaderEventPayload = Parameters<NonNullable<ReaderEventListener>>[1];\n\ninterface DocumentSDKRuntimeOptions {\n adapterReadyTimeoutMs?: number;\n adapterRequestTimeoutMs?: number;\n}\n\ntype NativeReaderEventName = 'documentLoaded' | 'documentStateChange' | 'documentError';\ntype ReaderThemeCleanup = () => void;\ntype CompatibleMediaQueryList = MediaQueryList & {\n addListener?: (listener: (event: MediaQueryListEvent) => void) => void;\n removeListener?: (listener: (event: MediaQueryListEvent) => void) => void;\n};\n\nconst NATIVE_READER_EVENT_NAMES: NativeReaderEventName[] = [\n 'documentLoaded',\n 'documentStateChange',\n 'documentError',\n];\n\nconst READER_READY_EVENT_NAME = 'readerReady';\nconst READER_UNLOAD_EVENT_NAME = 'readerUnload';\nconst READER_ERROR_EVENT_NAME = 'readerError';\n\nconst createReaderId = (): string => {\n if (typeof globalThis.crypto?.randomUUID === 'function') {\n return globalThis.crypto.randomUUID();\n }\n\n return `rhc-reader-${Date.now()}-${Math.random().toString(36).slice(2)}`;\n};\n\nconst createReaderPayload = (\n readerElement: HTMLElement | null,\n configuration: NormalizedReaderEmbedOptions | null,\n): Record<string, unknown> => {\n return {\n appUrl: configuration?.appUrl ?? null,\n configuration,\n element: readerElement,\n };\n};\n\nconst resolveContainerElement = (container: string | HTMLDivElement): HTMLDivElement => {\n if (typeof container === 'string') {\n const element = document.getElementById(container);\n if (!element) {\n throw new Error(`Reader container \"${container}\" was not found.`);\n }\n\n if (!(element instanceof HTMLDivElement)) {\n throw new Error(`Reader container \"${container}\" must be a div element.`);\n }\n\n return element;\n }\n\n if (!(container instanceof HTMLDivElement)) {\n throw new Error('Reader container must be a div element.');\n }\n\n return container;\n};\n\nconst resolveSystemReaderTheme = (): 'light' | 'dark' | 'high-contrast' => {\n const supportsMatchMedia = typeof globalThis.matchMedia === 'function';\n const prefersHighContrast = supportsMatchMedia\n ? globalThis.matchMedia('(prefers-contrast: more)').matches\n : false;\n if (prefersHighContrast) {\n return 'high-contrast';\n }\n\n const prefersDark = supportsMatchMedia\n ? globalThis.matchMedia('(prefers-color-scheme: dark)').matches\n : false;\n return prefersDark ? 'dark' : 'light';\n};\n\nconst addMediaQueryListener = (\n mediaQuery: MediaQueryList,\n listener: (event: MediaQueryListEvent) => void,\n): void => {\n const compatibleMediaQuery = mediaQuery as CompatibleMediaQueryList;\n if (typeof compatibleMediaQuery.addEventListener === 'function') {\n compatibleMediaQuery.addEventListener('change', listener);\n return;\n }\n\n if (typeof compatibleMediaQuery.addListener === 'function') {\n compatibleMediaQuery.addListener(listener);\n }\n};\n\nconst removeMediaQueryListener = (\n mediaQuery: MediaQueryList,\n listener: (event: MediaQueryListEvent) => void,\n): void => {\n const compatibleMediaQuery = mediaQuery as CompatibleMediaQueryList;\n if (typeof compatibleMediaQuery.removeEventListener === 'function') {\n compatibleMediaQuery.removeEventListener('change', listener);\n return;\n }\n\n if (typeof compatibleMediaQuery.removeListener === 'function') {\n compatibleMediaQuery.removeListener(listener);\n }\n};\n\nconst applyReaderElementLayout = (\n readerElement: HTMLElement,\n configuration: NormalizedReaderEmbedOptions,\n): void => {\n if (configuration.style) {\n readerElement.style.cssText = configuration.style;\n }\n\n if (!readerElement.style.display) {\n readerElement.style.display = 'block';\n }\n\n if (!readerElement.style.width) {\n readerElement.style.width = configuration.width ?? '100%';\n } else if (configuration.width) {\n readerElement.style.width = configuration.width;\n }\n\n if (!readerElement.style.height) {\n readerElement.style.height = configuration.height ?? '100%';\n } else if (configuration.height) {\n readerElement.style.height = configuration.height;\n }\n};\n\nconst bindReaderElementTheme = (\n readerElement: HTMLElement,\n configuration: NormalizedReaderEmbedOptions,\n): ReaderThemeCleanup | null => {\n const configuredTheme = configuration.theme;\n if (!configuredTheme) {\n readerElement.removeAttribute('theme');\n return null;\n }\n\n if (configuredTheme !== 'auto') {\n readerElement.setAttribute('theme', configuredTheme);\n return null;\n }\n\n const applySystemTheme = (): void => {\n readerElement.setAttribute('theme', resolveSystemReaderTheme());\n };\n\n applySystemTheme();\n\n if (typeof globalThis.matchMedia !== 'function') {\n return null;\n }\n\n const colorSchemeMediaQuery = globalThis.matchMedia('(prefers-color-scheme: dark)');\n const contrastMediaQuery = globalThis.matchMedia('(prefers-contrast: more)');\n const handleThemeChange = (): void => {\n applySystemTheme();\n };\n\n addMediaQueryListener(colorSchemeMediaQuery, handleThemeChange);\n addMediaQueryListener(contrastMediaQuery, handleThemeChange);\n\n return () => {\n removeMediaQueryListener(colorSchemeMediaQuery, handleThemeChange);\n removeMediaQueryListener(contrastMediaQuery, handleThemeChange);\n };\n};\n\nexport class DocumentSDK implements IDocumentSDK {\n private readonly bridge = new ReaderBridgeClient();\n private readonly callbacks = new SdkCallbackRegistry();\n private readonly readerState = new ReaderStateStore();\n private readonly bridgeToolContext = {\n bridge: this.bridge,\n callbacks: this.callbacks,\n debug: () => this.debugEnabled,\n onAsyncError: (error: unknown) => this.reportAdapterError(error),\n state: this.readerState,\n };\n private readonly documentTool = new DocumentToolImpl(this.bridgeToolContext);\n private readonly uiTool = new UIToolImpl(this.bridgeToolContext);\n private readonly pageTool = new PageToolImpl(this.bridgeToolContext);\n private readonly findTool = new FindToolImpl(this.bridgeToolContext);\n private readonly signServerTool = createNotImplementedBridgeTool<SignServerTool>(\n 'signServer',\n this.bridgeToolContext,\n );\n private readonly digitalSignTool = createNotImplementedBridgeTool<DigitalSignTool>(\n 'digitalSign',\n this.bridgeToolContext,\n );\n private readonly reviewTool = createNotImplementedBridgeTool<ReviewTool>(\n 'review',\n this.bridgeToolContext,\n );\n private readonly ekeyTool = createNotImplementedBridgeTool<EkeyTool>(\n 'ekey',\n this.bridgeToolContext,\n );\n private readonly symbologyTool = createNotImplementedBridgeTool<SymbologyTool>(\n 'symbology',\n this.bridgeToolContext,\n );\n private readonly annotationTool = this.createAnnotationTool();\n private readonly templateSignTool = createNotImplementedBridgeTool<TemplateSignTool>(\n 'templateSign',\n this.bridgeToolContext,\n );\n private readonly pdfFormFiller = new PdfFormFillerImpl(this.bridgeToolContext);\n private readonly extensionTool = this.createExtensionTool();\n private readonly networkingTool = new NetworkingToolImpl(this.bridgeToolContext);\n private readonly cryptoTool = createNotImplementedBridgeTool<CryptoTool>(\n 'crypto',\n this.bridgeToolContext,\n );\n\n private readonly readyCallbacks: ReaderReadyCallback[] = [];\n private readonly unloadCallbacks: ReaderUnloadCallback[] = [];\n\n private debugEnabled = false;\n private isReady = false;\n private removed = false;\n private mountToken = 0;\n\n private readerEventListener?: ReaderEventListener;\n private hostContainer: HTMLDivElement | null = null;\n private readerElement: HTMLElement | null = null;\n private readerId: string | null = null;\n private normalizedConfiguration: NormalizedReaderEmbedOptions | null = null;\n private sessionUser?: Parameters<IDocumentSDK['setSessionUser']>[0];\n private sessionData?: string;\n private license?: { license: string; feature: string };\n private readonly nativeEventCleanupCallbacks: Array<() => void> = [];\n private themeCleanup: ReaderThemeCleanup | null = null;\n\n constructor(options?: DocumentSDKRuntimeOptions) {\n this.bridge.configureTimeouts({\n readyTimeoutMs: options?.adapterReadyTimeoutMs,\n requestTimeoutMs: options?.adapterRequestTimeoutMs,\n });\n }\n\n readonly enableDebug: IDocumentSDK['enableDebug'] = (debug): void => {\n this.debugEnabled = debug;\n };\n\n readonly changeLanguage: IDocumentSDK['changeLanguage'] = (): void => {\n // Phase 1: reserved for future reader language bridging.\n };\n\n readonly setLicense: IDocumentSDK['setLicense'] = (license, feature): void => {\n this.license = { license, feature };\n };\n\n readonly setSessionUser: IDocumentSDK['setSessionUser'] = (userNameOrInfo): void => {\n this.sessionUser = userNameOrInfo;\n };\n\n readonly setSessionUserId: IDocumentSDK['setSessionUserId'] = (userId): void => {\n if (typeof this.sessionUser === 'string' || !this.sessionUser) {\n this.sessionUser = {\n userName: typeof this.sessionUser === 'string' ? this.sessionUser : '',\n userId,\n };\n return;\n }\n\n this.sessionUser = {\n ...this.sessionUser,\n userId,\n };\n };\n\n readonly setSessionData: IDocumentSDK['setSessionData'] = (sessionData): void => {\n this.sessionData = sessionData;\n };\n\n readonly isReaderReady: IDocumentSDK['isReaderReady'] = (): boolean => {\n return this.isReady;\n };\n\n readonly isReaderDestroyed: IDocumentSDK['isReaderDestroyed'] = (): boolean => {\n return this.removed && !this.isReady;\n };\n\n readonly addReaderReadyCallback: IDocumentSDK['addReaderReadyCallback'] = (callback): void => {\n this.readyCallbacks.push(callback);\n };\n\n readonly addReaderUnloadCallback: IDocumentSDK['addReaderUnloadCallback'] = (callback): void => {\n this.unloadCallbacks.push(callback);\n };\n\n readonly setReaderEventListener: IDocumentSDK['setReaderEventListener'] = (callback): void => {\n this.readerEventListener = callback;\n };\n\n readonly embedReader: IDocumentSDK['embedReader'] = (container, appUrl, configuration): void => {\n const hostContainer = resolveContainerElement(container);\n const normalizedAppUrl = normalizeAppUrl(appUrl);\n assertCompatibleReaderSource(normalizedAppUrl);\n\n const normalizedConfiguration = normalizeReaderEmbedOptions(normalizedAppUrl, configuration);\n const mountToken = this.mountToken + 1;\n\n this.removeReader();\n\n this.mountToken = mountToken;\n this.removed = false;\n this.hostContainer = hostContainer;\n this.normalizedConfiguration = normalizedConfiguration;\n\n void this.mountReader(hostContainer, normalizedConfiguration, mountToken);\n };\n\n readonly removeReader: IDocumentSDK['removeReader'] = (): void => {\n const hadMountedReader = Boolean(this.readerElement || this.hostContainer);\n\n this.mountToken += 1;\n this.cleanupNativeEventForwarders();\n this.cleanupThemeBinding();\n\n if (this.readerElement?.parentNode) {\n this.readerElement.parentNode.removeChild(this.readerElement);\n }\n\n this.readerElement = null;\n this.readerId = null;\n this.bridge.setReaderId(null);\n this.readerState.reset();\n this.hostContainer = null;\n this.normalizedConfiguration = null;\n this.isReady = false;\n this.removed = true;\n\n if (!hadMountedReader) {\n return;\n }\n\n const payload = createReaderPayload(null, null);\n this.emitReaderEvent(READER_UNLOAD_EVENT_NAME, payload);\n this.unloadCallbacks.forEach((callback) => callback());\n };\n\n readonly getDocumentTool: IDocumentSDK['getDocumentTool'] = (): DocumentTool => {\n return this.documentTool;\n };\n\n readonly getUITool: IDocumentSDK['getUITool'] = (): UITool => {\n return this.uiTool;\n };\n\n readonly getPageTool: IDocumentSDK['getPageTool'] = (): PageTool => {\n return this.pageTool;\n };\n\n readonly getFindTool: IDocumentSDK['getFindTool'] = (): FindTool => {\n return this.findTool;\n };\n\n readonly getSignServerTool: IDocumentSDK['getSignServerTool'] = (): SignServerTool => {\n return this.signServerTool;\n };\n\n readonly getDigitalSignTool: IDocumentSDK['getDigitalSignTool'] = (): DigitalSignTool => {\n return this.digitalSignTool;\n };\n\n readonly getReviewTool: IDocumentSDK['getReviewTool'] = (): ReviewTool => {\n return this.reviewTool;\n };\n\n readonly getEkeyTool: IDocumentSDK['getEkeyTool'] = (): EkeyTool => {\n return this.ekeyTool;\n };\n\n readonly getSymbologyTool: IDocumentSDK['getSymbologyTool'] = (): SymbologyTool => {\n return this.symbologyTool;\n };\n\n readonly getAnnotationTool: IDocumentSDK['getAnnotationTool'] = (): AnnotationTool => {\n return this.annotationTool;\n };\n\n readonly getTemplateSignTool: IDocumentSDK['getTemplateSignTool'] = (): TemplateSignTool => {\n return this.templateSignTool;\n };\n\n readonly getPdfFormFiller: IDocumentSDK['getPdfFormFiller'] = (): PdfFormFiller => {\n return this.pdfFormFiller;\n };\n\n readonly getExtensionTool: IDocumentSDK['getExtensionTool'] = (): ExtensionTool => {\n return this.extensionTool;\n };\n\n readonly getNetworkingTool: IDocumentSDK['getNetworkingTool'] = (): NetworkingTool => {\n return this.networkingTool;\n };\n\n readonly getCryptoTool: IDocumentSDK['getCryptoTool'] = (): CryptoTool => {\n return this.cryptoTool;\n };\n\n readonly createDigitalSignOptions: IDocumentSDK['createDigitalSignOptions'] = () => {\n return new DigitalSignOptions();\n };\n\n readonly createKVField: IDocumentSDK['createKVField'] = (key, value, description) => {\n return new KVField(key, value, description);\n };\n\n private createAnnotationTool(): AnnotationTool {\n return createBridgeToolAdapter<AnnotationTool>(\n 'annotation',\n {\n addAnnotationEventCallback: {\n kind: 'callbackRegister',\n callback: (callbacks, args) => {\n const callback = args[0];\n if (typeof callback === 'function') {\n callbacks.annotationEvents.push(callback as AnnotationEventCallback);\n }\n },\n },\n addAnnotationPersistCallback: {\n kind: 'callbackRegister',\n callback: (callbacks, args) => {\n const callback = args[0];\n if (typeof callback === 'function') {\n callbacks.annotationPersist.push(callback as (event: unknown) => void);\n }\n },\n },\n addAnnotationRetrieveCallback: {\n kind: 'callbackRegister',\n callback: (callbacks, args) => {\n const callback = args[0];\n if (typeof callback === 'function') {\n callbacks.annotationRetrieve.push(callback as (event: unknown) => void);\n }\n },\n },\n addDigitalAnnotationRetrieveCallback: {\n kind: 'callbackRegister',\n callback: (callbacks, args) => {\n const callback = args[0];\n if (typeof callback === 'function') {\n callbacks.digitalAnnotationRetrieve.push(\n callback as (annotations: IDigitalAnnotationInfo[]) => void,\n );\n }\n },\n },\n isInAnnotationMode: {\n kind: 'stateGetter',\n state: (state) => state.annotationEnabled,\n },\n getAnnotations: { kind: 'stateGetter', state: () => [] },\n getAnnotationsCount: { kind: 'stateGetter', state: () => 0 },\n queryAnnotationsBy: { kind: 'stateGetter', state: () => [] },\n setToolSource: { kind: 'command' },\n openAnnotationView: { kind: 'command' },\n closeAnnotationView: { kind: 'command' },\n openTextAnnotationView: { kind: 'command' },\n setTextAnnotationFontColor: { kind: 'command' },\n setTextAnnotationFontSize: { kind: 'command' },\n closeTextAnnotationView: { kind: 'command' },\n createTextAnnotation: { kind: 'command' },\n setPersistToDocument: { kind: 'command' },\n saveAnnotations: { kind: 'callbackQuery' },\n saveTextAnnotations: { kind: 'command' },\n clearAnnotations: { kind: 'command' },\n clearTextAnnotations: { kind: 'command' },\n undoAnnotation: { kind: 'command' },\n redoAnnotation: { kind: 'command' },\n selectAnnotationTool: { kind: 'command' },\n showAnnotationColorPicker: { kind: 'command' },\n setAnnotationPenType: { kind: 'command' },\n appendAnnotations: { kind: 'callbackQuery' },\n batchAppendAnnotations: { kind: 'callbackQuery' },\n setAnnotationPenColor: { kind: 'command' },\n setAnnotationPenWidth: { kind: 'command' },\n setAnnotationPenThickness: { kind: 'command' },\n enableAnnotationsInfoView: { kind: 'command' },\n enableAnnotationsDeletion: { kind: 'command' },\n enableAnnotationsDeletionOnlyByAuthor: { kind: 'command' },\n listDigitalStamps: { kind: 'command' },\n listAnnotations: { kind: 'command' },\n deleteAnnotationsBy: { kind: 'command' },\n deleteAnnotationsById: { kind: 'command' },\n addDigitalAnnotation: { kind: 'command' },\n addInkAnnotationCallback: { kind: 'callbackRegister' },\n },\n this.bridgeToolContext,\n );\n }\n\n private createExtensionTool(): ExtensionTool {\n return createBridgeToolAdapter<ExtensionTool>(\n 'extension',\n {\n addExtensionStateChangedCallback: {\n kind: 'callbackRegister',\n callback: (callbacks, args) => {\n const callback = args[0];\n if (typeof callback === 'function') {\n callbacks.extensionStateChanged.push(callback as ExtensionStateChangedCallback);\n }\n },\n },\n },\n this.bridgeToolContext,\n );\n }\n\n private readonly mountReader = async (\n hostContainer: HTMLDivElement,\n configuration: NormalizedReaderEmbedOptions,\n mountToken: number,\n ): Promise<void> => {\n try {\n await ensureReaderScriptLoaded(configuration.appUrl);\n if (this.mountToken !== mountToken) {\n return;\n }\n\n const readerElement = document.createElement(READER_CUSTOM_ELEMENT_TAG);\n const readerId = createReaderId();\n readerElement.setAttribute(RHC_OFFICE_READER_ID_ATTRIBUTE, readerId);\n this.readerId = readerId;\n this.bridge.setReaderId(readerId);\n applyReaderElementLayout(readerElement, configuration);\n this.themeCleanup = bindReaderElementTheme(readerElement, configuration);\n this.bindNativeReaderEvents(readerElement);\n\n hostContainer.replaceChildren(readerElement);\n this.readerElement = readerElement;\n await Promise.resolve();\n if (this.mountToken !== mountToken) {\n return;\n }\n\n if (configuration.scrollIntoView && typeof hostContainer.scrollIntoView === 'function') {\n hostContainer.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n\n this.isReady = true;\n const payload = createReaderPayload(readerElement, configuration);\n this.emitReaderEvent(READER_READY_EVENT_NAME, payload);\n this.readyCallbacks.forEach((callback) => callback());\n } catch (error: unknown) {\n if (this.mountToken !== mountToken) {\n return;\n }\n\n this.reportReaderError(error);\n }\n };\n\n private readonly bindNativeReaderEvents = (readerElement: HTMLElement): void => {\n this.cleanupNativeEventForwarders();\n\n const adapterEventListener = (event: Event): void => {\n const detail = event instanceof CustomEvent ? (event.detail as AdapterEvent) : null;\n if (!detail || detail.readerId !== this.readerId) {\n return;\n }\n\n this.readerState.update(detail.statePatch);\n this.callbacks.emit(detail.event, detail.payload);\n this.emitReaderEvent(detail.event, detail.payload as ReaderEventPayload);\n };\n readerElement.addEventListener(RHC_OFFICE_ADAPTER_EVENT, adapterEventListener as EventListener);\n this.nativeEventCleanupCallbacks.push(() => {\n readerElement.removeEventListener(\n RHC_OFFICE_ADAPTER_EVENT,\n adapterEventListener as EventListener,\n );\n });\n\n NATIVE_READER_EVENT_NAMES.forEach((eventName) => {\n const listener = (event: Event): void => {\n const payload = event instanceof CustomEvent ? event.detail : event;\n if (eventName === 'documentLoaded') {\n this.readerState.setDocumentOpened(true);\n }\n this.emitReaderEvent(eventName, payload);\n if (eventName === 'documentError') {\n this.emitReaderEvent(READER_ERROR_EVENT_NAME, payload);\n }\n };\n\n readerElement.addEventListener(eventName, listener as EventListener);\n this.nativeEventCleanupCallbacks.push(() => {\n readerElement.removeEventListener(eventName, listener as EventListener);\n });\n });\n };\n\n private readonly cleanupNativeEventForwarders = (): void => {\n this.nativeEventCleanupCallbacks.splice(0).forEach((callback) => callback());\n };\n\n private readonly cleanupThemeBinding = (): void => {\n this.themeCleanup?.();\n this.themeCleanup = null;\n };\n\n private readonly emitReaderEvent = (eventName: string, payload: unknown): void => {\n this.readerEventListener?.(eventName, payload as ReaderEventPayload);\n };\n\n private readonly reportReaderError = (error: unknown): void => {\n this.isReady = false;\n if (this.debugEnabled) {\n console.error('[RHC Office SDK] Reader mount failed', error);\n }\n\n this.emitReaderEvent(READER_ERROR_EVENT_NAME, error);\n };\n\n private readonly reportAdapterError = (error: unknown): void => {\n if (this.debugEnabled) {\n console.error('[RHC Office SDK] Adapter command failed', error);\n }\n\n this.emitReaderEvent(READER_ERROR_EVENT_NAME, error);\n };\n}\n\nexport const createNewDocumentSdk = (options?: DocumentSDKRuntimeOptions): IDocumentSDK => {\n return new DocumentSDK(options);\n};\n","import {\n DIGITAL_SIGN_DEFAULTS,\n DocumentSDK,\n WatermarkDisplay,\n createNewDocumentSdk,\n getDigitalSignEnvironment,\n initializeDigitalSignEnvironment,\n patchDigitalSignEnvironment,\n resetDigitalSignEnvironment,\n setDigitalSignEnvironment,\n} from './index';\nimport type { IDocumentSDK } from './api/document-sdk';\n\nexport interface RHCOfficeSDKBrowserNamespace {\n DocumentSDK: typeof DocumentSDK;\n WatermarkDisplay: typeof WatermarkDisplay;\n DIGITAL_SIGN_DEFAULTS: typeof DIGITAL_SIGN_DEFAULTS;\n createNewDocumentSdk: typeof createNewDocumentSdk;\n newDocumentSDK: typeof createNewDocumentSdk;\n getDigitalSignEnvironment: typeof getDigitalSignEnvironment;\n initializeDigitalSignEnvironment: typeof initializeDigitalSignEnvironment;\n patchDigitalSignEnvironment: typeof patchDigitalSignEnvironment;\n resetDigitalSignEnvironment: typeof resetDigitalSignEnvironment;\n setDigitalSignEnvironment: typeof setDigitalSignEnvironment;\n}\n\nexport const RHCOfficeSDK: RHCOfficeSDKBrowserNamespace = {\n DocumentSDK,\n WatermarkDisplay,\n DIGITAL_SIGN_DEFAULTS,\n createNewDocumentSdk,\n newDocumentSDK: createNewDocumentSdk,\n getDigitalSignEnvironment,\n initializeDigitalSignEnvironment,\n patchDigitalSignEnvironment,\n resetDigitalSignEnvironment,\n setDigitalSignEnvironment,\n};\n\nconst installBrowserDocumentAPI = (targetDocument: Document): void => {\n Object.entries(RHCOfficeSDK).forEach(([property, value]) => {\n Object.defineProperty(targetDocument, property, {\n configurable: true,\n enumerable: true,\n value,\n writable: true,\n });\n });\n\n targetDocument.RHCOfficeSDK = RHCOfficeSDK;\n};\n\nif (typeof document !== 'undefined') {\n installBrowserDocumentAPI(document);\n}\n\ndeclare global {\n interface Document {\n DocumentSDK: typeof DocumentSDK;\n WatermarkDisplay: typeof WatermarkDisplay;\n DIGITAL_SIGN_DEFAULTS: typeof DIGITAL_SIGN_DEFAULTS;\n createNewDocumentSdk: typeof createNewDocumentSdk;\n newDocumentSDK(options?: ConstructorParameters<typeof DocumentSDK>[0]): IDocumentSDK;\n getDigitalSignEnvironment: typeof getDigitalSignEnvironment;\n initializeDigitalSignEnvironment: typeof initializeDigitalSignEnvironment;\n patchDigitalSignEnvironment: typeof patchDigitalSignEnvironment;\n resetDigitalSignEnvironment: typeof resetDigitalSignEnvironment;\n setDigitalSignEnvironment: typeof setDigitalSignEnvironment;\n RHCOfficeSDK: RHCOfficeSDKBrowserNamespace;\n }\n}\n\nexport {\n DIGITAL_SIGN_DEFAULTS,\n DocumentSDK,\n WatermarkDisplay,\n createNewDocumentSdk,\n getDigitalSignEnvironment,\n initializeDigitalSignEnvironment,\n patchDigitalSignEnvironment,\n resetDigitalSignEnvironment,\n setDigitalSignEnvironment,\n};\n\nexport * from './index';\n"],"names":["WatermarkDisplay","DEFAULT_EDGE_POSITION","DEFAULT_SIGNATURE_TYPE","DEFAULT_RSA_MODE","DIGITAL_SIGN_ENVIRONMENT_STORE_KEY","EMPTY_DIGITAL_SIGN_ENVIRONMENT","cloneDefaultsConfig","config","cloneSignServerConfig","cloneEnvironmentConfig","cloneEnvironmentPatch","patch","mergeDefaultsPatch","base","_b","_a","_c","_d","_f","_e","_h","_g","_j","_i","_l","_k","_n","_m","_p","_o","_r","_q","_s","_t","mergeSignServerPatch","mergeEnvironmentPatch","mergeEnvironmentPatchState","getGlobalScope","resolveRuntimeStore","globalScope","getDigitalSignEnvironment","initializeDigitalSignEnvironment","defaults","store","setDigitalSignEnvironment","patchDigitalSignEnvironment","resetDigitalSignEnvironment","DIGITAL_SIGN_DEFAULTS","normalizeParams","args","createBridgeToolAdapter","tool","descriptor","context","_target","property","methodDescriptor","adapterMethod","callback","arg","params","result","callbackArgs","_args","error","createNotImplementedBridgeTool","message","DOCUMENT_TOOL_DESCRIPTOR","callbacks","content","state","DocumentToolImpl","options","onDocumentOpened","uploadUrl","onSavedCallback","onDocumentContent","discardModify","onClose","serverUrl","FIND_TOOL_DESCRIPTOR","FindToolImpl","queryText","NETWORKING_TOOL_DESCRIPTOR","NetworkingToolImpl","headers","fields","createPageToolDescriptor","PageToolImpl","scale","r","g","b","alpha","pageIndex","x","y","rotation","PDF_FORM_FILLER_TOOL_DESCRIPTOR","PdfFormFillerImpl","filedName","value","readOnly","PAGE_RANGE_SEPARATOR_PATTERN","PAGE_BOUNDS_SEPARATOR_PATTERN","normalizePageNumber","parsedValue","expandPageRangeSegment","segment","bounds","pageNumber","startPage","endPage","_","index","parsePageRanges","pageRange","source","KVField","key","description","name","DigitalSignOptions","signType","position","text","signUserData","margin","reason","location","password","BOOK_VIEW_PAGE_MODES","createUIToolDescriptor","UIToolImpl","opt","menuId","visible","buttonId","buttonStyle","compact","normalizeTheme","theme","normalizedTheme","normalizeAppUrl","appUrl","normalizedUrl","createBootstrapUrl","normalizeReaderEmbedOptions","configuration","normalizedAppUrl","READER_CUSTOM_ELEMENT_TAG","READER_LOADER_REGISTRY_KEY","getReaderLoaderRegistry","browserGlobal","findScriptElementBySource","element","ReaderScriptLoadError","bootstrapUrl","ReaderSourceConflictError","activeAppUrl","requestedAppUrl","assertCompatibleReaderSource","registry","ensureReaderScriptLoaded","existingLoadPromise","resolvedPromise","existingScriptElement","loadPromise","resolve","reject","rejectScriptLoad","scriptElement","resolveWhenDefined","RHC_OFFICE_ADAPTER_PROTOCOL","RHC_OFFICE_ADAPTER_VERSION","RHC_OFFICE_ADAPTER_GLOBAL","RHC_OFFICE_ADAPTER_READY_EVENT","RHC_OFFICE_ADAPTER_EVENT","RHC_OFFICE_READER_ID_ATTRIBUTE","DEFAULT_REQUEST_TIMEOUT_MS","DEFAULT_READY_TIMEOUT_MS","createRequestId","cryptoApi","getAdapterGlobal","ReaderBridgeError","code","details","ReaderBridgeClient","readerId","method","response","adapter","request","timeoutMs","existingAdapter","timeoutId","cleanup","onReady","event","detail","promise","requestId","DEFAULT_READER_STATE","ReaderStateStore","opened","SdkCallbackRegistry","payload","pagePayload","annotationPayload","extensionPayload","NATIVE_READER_EVENT_NAMES","READER_READY_EVENT_NAME","READER_UNLOAD_EVENT_NAME","READER_ERROR_EVENT_NAME","createReaderId","createReaderPayload","readerElement","resolveContainerElement","container","resolveSystemReaderTheme","supportsMatchMedia","addMediaQueryListener","mediaQuery","listener","compatibleMediaQuery","removeMediaQueryListener","applyReaderElementLayout","bindReaderElementTheme","configuredTheme","applySystemTheme","colorSchemeMediaQuery","contrastMediaQuery","handleThemeChange","DocumentSDK","debug","license","feature","userNameOrInfo","userId","sessionData","hostContainer","normalizedConfiguration","mountToken","hadMountedReader","adapterEventListener","eventName","createNewDocumentSdk","RHCOfficeSDK","targetDocument"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { DIGITAL_SIGN_DEFAULTS, DocumentSDK, WatermarkDisplay, createNewDocumentSdk, getDigitalSignEnvironment, initializeDigitalSignEnvironment, patchDigitalSignEnvironment, resetDigitalSignEnvironment, setDigitalSignEnvironment } from './index';
2
+ import type { IDocumentSDK } from './api/document-sdk';
3
+ export interface RHCOfficeSDKBrowserNamespace {
4
+ DocumentSDK: typeof DocumentSDK;
5
+ WatermarkDisplay: typeof WatermarkDisplay;
6
+ DIGITAL_SIGN_DEFAULTS: typeof DIGITAL_SIGN_DEFAULTS;
7
+ createNewDocumentSdk: typeof createNewDocumentSdk;
8
+ newDocumentSDK: typeof createNewDocumentSdk;
9
+ getDigitalSignEnvironment: typeof getDigitalSignEnvironment;
10
+ initializeDigitalSignEnvironment: typeof initializeDigitalSignEnvironment;
11
+ patchDigitalSignEnvironment: typeof patchDigitalSignEnvironment;
12
+ resetDigitalSignEnvironment: typeof resetDigitalSignEnvironment;
13
+ setDigitalSignEnvironment: typeof setDigitalSignEnvironment;
14
+ }
15
+ export declare const RHCOfficeSDK: RHCOfficeSDKBrowserNamespace;
16
+ declare global {
17
+ interface Document {
18
+ DocumentSDK: typeof DocumentSDK;
19
+ WatermarkDisplay: typeof WatermarkDisplay;
20
+ DIGITAL_SIGN_DEFAULTS: typeof DIGITAL_SIGN_DEFAULTS;
21
+ createNewDocumentSdk: typeof createNewDocumentSdk;
22
+ newDocumentSDK(options?: ConstructorParameters<typeof DocumentSDK>[0]): IDocumentSDK;
23
+ getDigitalSignEnvironment: typeof getDigitalSignEnvironment;
24
+ initializeDigitalSignEnvironment: typeof initializeDigitalSignEnvironment;
25
+ patchDigitalSignEnvironment: typeof patchDigitalSignEnvironment;
26
+ resetDigitalSignEnvironment: typeof resetDigitalSignEnvironment;
27
+ setDigitalSignEnvironment: typeof setDigitalSignEnvironment;
28
+ RHCOfficeSDK: RHCOfficeSDKBrowserNamespace;
29
+ }
30
+ }
31
+ export { DIGITAL_SIGN_DEFAULTS, DocumentSDK, WatermarkDisplay, createNewDocumentSdk, getDigitalSignEnvironment, initializeDigitalSignEnvironment, patchDigitalSignEnvironment, resetDigitalSignEnvironment, setDigitalSignEnvironment, };
32
+ export * from './index';
33
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,gCAAgC,EAChC,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,qBAAqB,EAAE,OAAO,qBAAqB,CAAC;IACpD,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,cAAc,EAAE,OAAO,oBAAoB,CAAC;IAC5C,yBAAyB,EAAE,OAAO,yBAAyB,CAAC;IAC5D,gCAAgC,EAAE,OAAO,gCAAgC,CAAC;IAC1E,2BAA2B,EAAE,OAAO,2BAA2B,CAAC;IAChE,2BAA2B,EAAE,OAAO,2BAA2B,CAAC;IAChE,yBAAyB,EAAE,OAAO,yBAAyB,CAAC;CAC7D;AAED,eAAO,MAAM,YAAY,EAAE,4BAW1B,CAAC;AAmBF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,QAAQ;QAChB,WAAW,EAAE,OAAO,WAAW,CAAC;QAChC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;QAC1C,qBAAqB,EAAE,OAAO,qBAAqB,CAAC;QACpD,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;QAClD,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;QACrF,yBAAyB,EAAE,OAAO,yBAAyB,CAAC;QAC5D,gCAAgC,EAAE,OAAO,gCAAgC,CAAC;QAC1E,2BAA2B,EAAE,OAAO,2BAA2B,CAAC;QAChE,2BAA2B,EAAE,OAAO,2BAA2B,CAAC;QAChE,yBAAyB,EAAE,OAAO,yBAAyB,CAAC;QAC5D,YAAY,EAAE,4BAA4B,CAAC;KAC5C;CACF;AAED,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,gCAAgC,EAChC,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,GAC1B,CAAC;AAEF,cAAc,SAAS,CAAC"}