react-docxodus-viewer 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -0
- package/dist/react-docxodus-viewer.cjs.js +1 -1
- package/dist/react-docxodus-viewer.cjs.js.map +1 -1
- package/dist/react-docxodus-viewer.css +1 -1
- package/dist/react-docxodus-viewer.es.js +689 -503
- package/dist/react-docxodus-viewer.es.js.map +1 -1
- package/dist/types/DocumentViewer.d.ts +1 -1
- package/dist/types/DocumentViewer.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +94 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -52,9 +52,53 @@ function App() {
|
|
|
52
52
|
| `placeholder` | `string` | `'Open a DOCX file to view'` | Empty state message |
|
|
53
53
|
| `useWorker` | `boolean` | `true` | Use Web Worker for conversion |
|
|
54
54
|
| `wasmBasePath` | `string` | - | Custom WASM file location |
|
|
55
|
+
| `fitMode` | `'manual' \| 'page-width' \| 'page'` | `'manual'` | Auto-fit zoom on render and resize |
|
|
56
|
+
| `defaultZoom` | `number` | `0.8` | Initial zoom level (0.3 – 2.0) when uncontrolled |
|
|
57
|
+
| `toolbarActions` | `ToolbarAction[]` | - | Custom icon buttons in the toolbar (right side) |
|
|
55
58
|
| `className` | `string` | - | Additional CSS class |
|
|
56
59
|
| `style` | `CSSProperties` | - | Inline styles |
|
|
57
60
|
|
|
61
|
+
## Custom Toolbar Actions
|
|
62
|
+
|
|
63
|
+
Add your own icon buttons to the viewer toolbar — useful for hosting apps that
|
|
64
|
+
want to surface document-level actions (Download, Share, Print, Open Ticket)
|
|
65
|
+
inside the viewer chrome rather than awkwardly above it.
|
|
66
|
+
|
|
67
|
+
```tsx
|
|
68
|
+
import { DocumentViewer, type ToolbarAction } from 'react-docxodus-viewer';
|
|
69
|
+
|
|
70
|
+
const DownloadIcon = () => (
|
|
71
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none"
|
|
72
|
+
stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
|
|
73
|
+
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
|
|
74
|
+
<polyline points="7 10 12 15 17 10" />
|
|
75
|
+
<line x1="12" y1="15" x2="12" y2="3" />
|
|
76
|
+
</svg>
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
const actions: ToolbarAction[] = [
|
|
80
|
+
{
|
|
81
|
+
key: 'download',
|
|
82
|
+
icon: <DownloadIcon />,
|
|
83
|
+
label: 'Download',
|
|
84
|
+
onClick: () => downloadFile(),
|
|
85
|
+
variant: 'primary',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
key: 'ticket',
|
|
89
|
+
icon: '🎫',
|
|
90
|
+
label: 'Open Ticket',
|
|
91
|
+
onClick: () => openTicket(),
|
|
92
|
+
},
|
|
93
|
+
];
|
|
94
|
+
|
|
95
|
+
<DocumentViewer toolbarActions={actions} defaultZoom={1.0} />
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Each action accepts any React node as its `icon` (inline SVG, icon-library
|
|
99
|
+
component, emoji, or character). The `label` is used as both the tooltip and
|
|
100
|
+
accessible name. Set `variant: 'primary'` for an accent-colored primary action.
|
|
101
|
+
|
|
58
102
|
## Viewer Settings
|
|
59
103
|
|
|
60
104
|
```tsx
|
|
@@ -87,6 +131,9 @@ Override CSS variables to customize the viewer:
|
|
|
87
131
|
--rdv-toolbar-bg: #323639;
|
|
88
132
|
--rdv-btn-bg: #474c50;
|
|
89
133
|
--rdv-btn-color: #d4d4d4;
|
|
134
|
+
|
|
135
|
+
/* Gap between pages (placeholders and rendered) */
|
|
136
|
+
--rdv-page-gap: 20px;
|
|
90
137
|
}
|
|
91
138
|
```
|
|
92
139
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("react"),pe=require("docxodus/react"),i=require("docxodus");var ae=typeof document<"u"?document.currentScript:null;function z(){return`${Date.now()}-${Math.random().toString(36).slice(2,11)}`}async function w(s){if(s instanceof Uint8Array)return s;const o=await s.arrayBuffer();return new Uint8Array(o)}function Te(){if(typeof document<"u"){const s=document.querySelectorAll('script[src*="docxodus"]');if(s.length>0){const o=s[0].src;return o.substring(0,o.lastIndexOf("/")+1)+"wasm/"}}return"/wasm/"}async function Ee(s){const o=s?.wasmBasePath??Te(),Z=new URL("data:text/javascript;base64,Ly8gc3JjL2RvY3hvZHVzLndvcmtlci50cwp2YXIgd2FzbUV4cG9ydHMgPSBudWxsOwp2YXIgaW5pdFByb21pc2UgPSBudWxsOwphc3luYyBmdW5jdGlvbiBpbml0aWFsaXplV2FzbShiYXNlUGF0aCkgewogIGlmICh3YXNtRXhwb3J0cykgewogICAgcmV0dXJuOwogIH0KICBpZiAoaW5pdFByb21pc2UpIHsKICAgIHJldHVybiBpbml0UHJvbWlzZTsKICB9CiAgaW5pdFByb21pc2UgPSAoYXN5bmMgKCkgPT4gewogICAgdHJ5IHsKICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBiYXNlUGF0aC5lbmRzV2l0aCgiLyIpID8gYmFzZVBhdGggOiBiYXNlUGF0aCArICIvIjsKICAgICAgY29uc3QgZG90bmV0TW9kdWxlID0gYXdhaXQgaW1wb3J0KAogICAgICAgIC8qIHdlYnBhY2tJZ25vcmU6IHRydWUgKi8KICAgICAgICBgJHtub3JtYWxpemVkUGF0aH1fZnJhbWV3b3JrL2RvdG5ldC5qc2AKICAgICAgKTsKICAgICAgY29uc3QgeyBnZXRBc3NlbWJseUV4cG9ydHMsIGdldENvbmZpZyB9ID0gYXdhaXQgZG90bmV0TW9kdWxlLmRvdG5ldC53aXRoRGlhZ25vc3RpY1RyYWNpbmcoZmFsc2UpLmNyZWF0ZSgpOwogICAgICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTsKICAgICAgY29uc3QgZXhwb3J0cyA9IGF3YWl0IGdldEFzc2VtYmx5RXhwb3J0cyhjb25maWcubWFpbkFzc2VtYmx5TmFtZSk7CiAgICAgIHdhc21FeHBvcnRzID0gewogICAgICAgIERvY3VtZW50Q29udmVydGVyOiBleHBvcnRzLkRvY3hvZHVzV2FzbS5Eb2N1bWVudENvbnZlcnRlciwKICAgICAgICBEb2N1bWVudENvbXBhcmVyOiBleHBvcnRzLkRvY3hvZHVzV2FzbS5Eb2N1bWVudENvbXBhcmVyCiAgICAgIH07CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBpbml0UHJvbWlzZSA9IG51bGw7CiAgICAgIHRocm93IGVycm9yOwogICAgfQogIH0pKCk7CiAgcmV0dXJuIGluaXRQcm9taXNlOwp9CmZ1bmN0aW9uIGVuc3VyZUluaXRpYWxpemVkKCkgewogIGlmICghd2FzbUV4cG9ydHMpIHsKICAgIHRocm93IG5ldyBFcnJvcigiV29ya2VyIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBpbml0IGZpcnN0LiIpOwogIH0KICByZXR1cm4gd2FzbUV4cG9ydHM7Cn0KZnVuY3Rpb24gaXNFcnJvclJlc3BvbnNlKHJlc3VsdCkgewogIHJldHVybiByZXN1bHQuc3RhcnRzV2l0aCgieyIpICYmIHJlc3VsdC5pbmNsdWRlcygnIkVycm9yIicpOwp9CmZ1bmN0aW9uIHBhcnNlRXJyb3IocmVzdWx0KSB7CiAgdHJ5IHsKICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmVzdWx0KTsKICAgIHJldHVybiB7IGVycm9yOiBwYXJzZWQuRXJyb3IgfHwgcGFyc2VkLmVycm9yIHx8ICJVbmtub3duIGVycm9yIiB9OwogIH0gY2F0Y2ggewogICAgcmV0dXJuIHsgZXJyb3I6IHJlc3VsdCB9OwogIH0KfQpmdW5jdGlvbiBoYW5kbGVDb252ZXJ0KHJlcXVlc3QpIHsKICBjb25zdCBleHBvcnRzID0gZW5zdXJlSW5pdGlhbGl6ZWQoKTsKICBjb25zdCBvcHRpb25zID0gcmVxdWVzdC5vcHRpb25zOwogIHRyeSB7CiAgICBsZXQgcmVzdWx0OwogICAgY29uc3QgbmVlZHNDb21wbGV0ZU1ldGhvZCA9IG9wdGlvbnM/LnJlbmRlckZvb3Rub3Rlc0FuZEVuZG5vdGVzICE9PSB2b2lkIDAgfHwgb3B0aW9ucz8ucmVuZGVySGVhZGVyc0FuZEZvb3RlcnMgIT09IHZvaWQgMCB8fCBvcHRpb25zPy5yZW5kZXJUcmFja2VkQ2hhbmdlcyAhPT0gdm9pZCAwIHx8IG9wdGlvbnM/LnNob3dEZWxldGVkQ29udGVudCAhPT0gdm9pZCAwIHx8IG9wdGlvbnM/LnJlbmRlck1vdmVPcGVyYXRpb25zICE9PSB2b2lkIDA7CiAgICBpZiAobmVlZHNDb21wbGV0ZU1ldGhvZCB8fCBvcHRpb25zPy5yZW5kZXJBbm5vdGF0aW9ucykgewogICAgICByZXN1bHQgPSBleHBvcnRzLkRvY3VtZW50Q29udmVydGVyLkNvbnZlcnREb2N4VG9IdG1sQ29tcGxldGUoCiAgICAgICAgcmVxdWVzdC5kb2N1bWVudEJ5dGVzLAogICAgICAgIG9wdGlvbnM/LnBhZ2VUaXRsZSA/PyAiRG9jdW1lbnQiLAogICAgICAgIG9wdGlvbnM/LmNzc1ByZWZpeCA/PyAiZG9jeC0iLAogICAgICAgIG9wdGlvbnM/LmZhYnJpY2F0ZUNsYXNzZXMgPz8gdHJ1ZSwKICAgICAgICBvcHRpb25zPy5hZGRpdGlvbmFsQ3NzID8/ICIiLAogICAgICAgIG9wdGlvbnM/LmNvbW1lbnRSZW5kZXJNb2RlID8/IC0xLAogICAgICAgIG9wdGlvbnM/LmNvbW1lbnRDc3NDbGFzc1ByZWZpeCA/PyAiY29tbWVudC0iLAogICAgICAgIG9wdGlvbnM/LnBhZ2luYXRpb25Nb2RlID8/IDAsCiAgICAgICAgb3B0aW9ucz8ucGFnaW5hdGlvblNjYWxlID8/IDEsCiAgICAgICAgb3B0aW9ucz8ucGFnaW5hdGlvbkNzc0NsYXNzUHJlZml4ID8/ICJwYWdlLSIsCiAgICAgICAgb3B0aW9ucz8ucmVuZGVyQW5ub3RhdGlvbnMgPz8gZmFsc2UsCiAgICAgICAgb3B0aW9ucz8uYW5ub3RhdGlvbkxhYmVsTW9kZSA/PyAwLAogICAgICAgIG9wdGlvbnM/LmFubm90YXRpb25Dc3NDbGFzc1ByZWZpeCA/PyAiYW5ub3QtIiwKICAgICAgICBvcHRpb25zPy5yZW5kZXJGb290bm90ZXNBbmRFbmRub3RlcyA/PyBmYWxzZSwKICAgICAgICBvcHRpb25zPy5yZW5kZXJIZWFkZXJzQW5kRm9vdGVycyA/PyBmYWxzZSwKICAgICAgICBvcHRpb25zPy5yZW5kZXJUcmFja2VkQ2hhbmdlcyA/PyBmYWxzZSwKICAgICAgICBvcHRpb25zPy5zaG93RGVsZXRlZENvbnRlbnQgPz8gdHJ1ZSwKICAgICAgICBvcHRpb25zPy5yZW5kZXJNb3ZlT3BlcmF0aW9ucyA/PyB0cnVlCiAgICAgICk7CiAgICB9IGVsc2UgaWYgKG9wdGlvbnM/LnBhZ2luYXRpb25Nb2RlICE9PSB2b2lkIDAgJiYgb3B0aW9ucy5wYWdpbmF0aW9uTW9kZSAhPT0gMCkgewogICAgICByZXN1bHQgPSBleHBvcnRzLkRvY3VtZW50Q29udmVydGVyLkNvbnZlcnREb2N4VG9IdG1sV2l0aFBhZ2luYXRpb24oCiAgICAgICAgcmVxdWVzdC5kb2N1bWVudEJ5dGVzLAogICAgICAgIG9wdGlvbnMucGFnZVRpdGxlID8/ICJEb2N1bWVudCIsCiAgICAgICAgb3B0aW9ucy5jc3NQcmVmaXggPz8gImRvY3gtIiwKICAgICAgICBvcHRpb25zLmZhYnJpY2F0ZUNsYXNzZXMgPz8gdHJ1ZSwKICAgICAgICBvcHRpb25zLmFkZGl0aW9uYWxDc3MgPz8gIiIsCiAgICAgICAgb3B0aW9ucy5jb21tZW50UmVuZGVyTW9kZSA/PyAtMSwKICAgICAgICBvcHRpb25zLmNvbW1lbnRDc3NDbGFzc1ByZWZpeCA/PyAiY29tbWVudC0iLAogICAgICAgIG9wdGlvbnMucGFnaW5hdGlvbk1vZGUsCiAgICAgICAgb3B0aW9ucy5wYWdpbmF0aW9uU2NhbGUgPz8gMSwKICAgICAgICBvcHRpb25zLnBhZ2luYXRpb25Dc3NDbGFzc1ByZWZpeCA/PyAicGFnZS0iCiAgICAgICk7CiAgICB9IGVsc2UgaWYgKG9wdGlvbnMpIHsKICAgICAgcmVzdWx0ID0gZXhwb3J0cy5Eb2N1bWVudENvbnZlcnRlci5Db252ZXJ0RG9jeFRvSHRtbFdpdGhPcHRpb25zKAogICAgICAgIHJlcXVlc3QuZG9jdW1lbnRCeXRlcywKICAgICAgICBvcHRpb25zLnBhZ2VUaXRsZSA/PyAiRG9jdW1lbnQiLAogICAgICAgIG9wdGlvbnMuY3NzUHJlZml4ID8/ICJkb2N4LSIsCiAgICAgICAgb3B0aW9ucy5mYWJyaWNhdGVDbGFzc2VzID8/IHRydWUsCiAgICAgICAgb3B0aW9ucy5hZGRpdGlvbmFsQ3NzID8/ICIiLAogICAgICAgIG9wdGlvbnMuY29tbWVudFJlbmRlck1vZGUgPz8gLTEsCiAgICAgICAgb3B0aW9ucy5jb21tZW50Q3NzQ2xhc3NQcmVmaXggPz8gImNvbW1lbnQtIgogICAgICApOwogICAgfSBlbHNlIHsKICAgICAgcmVzdWx0ID0gZXhwb3J0cy5Eb2N1bWVudENvbnZlcnRlci5Db252ZXJ0RG9jeFRvSHRtbCgKICAgICAgICByZXF1ZXN0LmRvY3VtZW50Qnl0ZXMKICAgICAgKTsKICAgIH0KICAgIGlmIChpc0Vycm9yUmVzcG9uc2UocmVzdWx0KSkgewogICAgICByZXR1cm4gcGFyc2VFcnJvcihyZXN1bHQpOwogICAgfQogICAgcmV0dXJuIHsgaHRtbDogcmVzdWx0IH07CiAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIHJldHVybiB7IGVycm9yOiBTdHJpbmcoZXJyb3IpIH07CiAgfQp9CmZ1bmN0aW9uIGhhbmRsZUNvbXBhcmUocmVxdWVzdCkgewogIGNvbnN0IGV4cG9ydHMgPSBlbnN1cmVJbml0aWFsaXplZCgpOwogIGNvbnN0IG9wdGlvbnMgPSByZXF1ZXN0Lm9wdGlvbnM7CiAgdHJ5IHsKICAgIGxldCByZXN1bHQ7CiAgICBpZiAob3B0aW9ucz8uZGV0YWlsVGhyZXNob2xkICE9PSB2b2lkIDAgfHwgb3B0aW9ucz8uY2FzZUluc2Vuc2l0aXZlKSB7CiAgICAgIHJlc3VsdCA9IGV4cG9ydHMuRG9jdW1lbnRDb21wYXJlci5Db21wYXJlRG9jdW1lbnRzV2l0aE9wdGlvbnMoCiAgICAgICAgcmVxdWVzdC5vcmlnaW5hbEJ5dGVzLAogICAgICAgIHJlcXVlc3QubW9kaWZpZWRCeXRlcywKICAgICAgICBvcHRpb25zPy5hdXRob3JOYW1lID8/ICJEb2N4b2R1cyIsCiAgICAgICAgb3B0aW9ucz8uZGV0YWlsVGhyZXNob2xkID8/IDAuMTUsCiAgICAgICAgb3B0aW9ucz8uY2FzZUluc2Vuc2l0aXZlID8/IGZhbHNlCiAgICAgICk7CiAgICB9IGVsc2UgewogICAgICByZXN1bHQgPSBleHBvcnRzLkRvY3VtZW50Q29tcGFyZXIuQ29tcGFyZURvY3VtZW50cygKICAgICAgICByZXF1ZXN0Lm9yaWdpbmFsQnl0ZXMsCiAgICAgICAgcmVxdWVzdC5tb2RpZmllZEJ5dGVzLAogICAgICAgIG9wdGlvbnM/LmF1dGhvck5hbWUgPz8gIkRvY3hvZHVzIgogICAgICApOwogICAgfQogICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHsgZXJyb3I6ICJDb21wYXJpc29uIHJldHVybmVkIGVtcHR5IHJlc3VsdCIgfTsKICAgIH0KICAgIHJldHVybiB7IGRvY3VtZW50Qnl0ZXM6IHJlc3VsdCB9OwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICByZXR1cm4geyBlcnJvcjogU3RyaW5nKGVycm9yKSB9OwogIH0KfQpmdW5jdGlvbiBoYW5kbGVDb21wYXJlVG9IdG1sKHJlcXVlc3QpIHsKICBjb25zdCBleHBvcnRzID0gZW5zdXJlSW5pdGlhbGl6ZWQoKTsKICBjb25zdCBvcHRpb25zID0gcmVxdWVzdC5vcHRpb25zOwogIHRyeSB7CiAgICBjb25zdCByZW5kZXJUcmFja2VkQ2hhbmdlcyA9IG9wdGlvbnM/LnJlbmRlclRyYWNrZWRDaGFuZ2VzID8/IHRydWU7CiAgICBjb25zdCByZXN1bHQgPSBleHBvcnRzLkRvY3VtZW50Q29tcGFyZXIuQ29tcGFyZURvY3VtZW50c1RvSHRtbFdpdGhPcHRpb25zKAogICAgICByZXF1ZXN0Lm9yaWdpbmFsQnl0ZXMsCiAgICAgIHJlcXVlc3QubW9kaWZpZWRCeXRlcywKICAgICAgb3B0aW9ucz8uYXV0aG9yTmFtZSA/PyAiRG9jeG9kdXMiLAogICAgICByZW5kZXJUcmFja2VkQ2hhbmdlcwogICAgKTsKICAgIGlmIChpc0Vycm9yUmVzcG9uc2UocmVzdWx0KSkgewogICAgICByZXR1cm4gcGFyc2VFcnJvcihyZXN1bHQpOwogICAgfQogICAgcmV0dXJuIHsgaHRtbDogcmVzdWx0IH07CiAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIHJldHVybiB7IGVycm9yOiBTdHJpbmcoZXJyb3IpIH07CiAgfQp9CmZ1bmN0aW9uIGhhbmRsZUdldFJldmlzaW9ucyhyZXF1ZXN0KSB7CiAgY29uc3QgZXhwb3J0cyA9IGVuc3VyZUluaXRpYWxpemVkKCk7CiAgY29uc3Qgb3B0aW9ucyA9IHJlcXVlc3Qub3B0aW9uczsKICB0cnkgewogICAgY29uc3QgZGV0ZWN0TW92ZXMgPSBvcHRpb25zPy5kZXRlY3RNb3ZlcyA/PyB0cnVlOwogICAgY29uc3QgbW92ZVNpbWlsYXJpdHlUaHJlc2hvbGQgPSBvcHRpb25zPy5tb3ZlU2ltaWxhcml0eVRocmVzaG9sZCA/PyAwLjg7CiAgICBjb25zdCBtb3ZlTWluaW11bVdvcmRDb3VudCA9IG9wdGlvbnM/Lm1vdmVNaW5pbXVtV29yZENvdW50ID8/IDM7CiAgICBjb25zdCBjYXNlSW5zZW5zaXRpdmUgPSBvcHRpb25zPy5jYXNlSW5zZW5zaXRpdmUgPz8gZmFsc2U7CiAgICBjb25zdCByZXN1bHQgPSBleHBvcnRzLkRvY3VtZW50Q29tcGFyZXIuR2V0UmV2aXNpb25zSnNvbldpdGhPcHRpb25zKAogICAgICByZXF1ZXN0LmRvY3VtZW50Qnl0ZXMsCiAgICAgIGRldGVjdE1vdmVzLAogICAgICBtb3ZlU2ltaWxhcml0eVRocmVzaG9sZCwKICAgICAgbW92ZU1pbmltdW1Xb3JkQ291bnQsCiAgICAgIGNhc2VJbnNlbnNpdGl2ZQogICAgKTsKICAgIGlmIChpc0Vycm9yUmVzcG9uc2UocmVzdWx0KSkgewogICAgICByZXR1cm4gcGFyc2VFcnJvcihyZXN1bHQpOwogICAgfQogICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyZXN1bHQpOwogICAgY29uc3QgcmV2aXNpb25zID0gKHBhcnNlZC5SZXZpc2lvbnMgfHwgcGFyc2VkLnJldmlzaW9ucyB8fCBbXSkubWFwKAogICAgICAocikgPT4gKHsKICAgICAgICBhdXRob3I6IHIuQXV0aG9yIHx8IHIuYXV0aG9yLAogICAgICAgIGRhdGU6IHIuRGF0ZSB8fCByLmRhdGUsCiAgICAgICAgcmV2aXNpb25UeXBlOiByLlJldmlzaW9uVHlwZSB8fCByLnJldmlzaW9uVHlwZSwKICAgICAgICB0ZXh0OiByLlRleHQgfHwgci50ZXh0LAogICAgICAgIG1vdmVHcm91cElkOiByLk1vdmVHcm91cElkID8/IHIubW92ZUdyb3VwSWQsCiAgICAgICAgaXNNb3ZlU291cmNlOiByLklzTW92ZVNvdXJjZSA/PyByLmlzTW92ZVNvdXJjZSwKICAgICAgICBmb3JtYXRDaGFuZ2U6IHIuRm9ybWF0Q2hhbmdlIHx8IHIuZm9ybWF0Q2hhbmdlID8gewogICAgICAgICAgb2xkUHJvcGVydGllczogci5Gb3JtYXRDaGFuZ2U/Lk9sZFByb3BlcnRpZXMgfHwgci5mb3JtYXRDaGFuZ2U/Lm9sZFByb3BlcnRpZXMsCiAgICAgICAgICBuZXdQcm9wZXJ0aWVzOiByLkZvcm1hdENoYW5nZT8uTmV3UHJvcGVydGllcyB8fCByLmZvcm1hdENoYW5nZT8ubmV3UHJvcGVydGllcywKICAgICAgICAgIGNoYW5nZWRQcm9wZXJ0eU5hbWVzOiByLkZvcm1hdENoYW5nZT8uQ2hhbmdlZFByb3BlcnR5TmFtZXMgfHwgci5mb3JtYXRDaGFuZ2U/LmNoYW5nZWRQcm9wZXJ0eU5hbWVzCiAgICAgICAgfSA6IHZvaWQgMAogICAgICB9KQogICAgKTsKICAgIHJldHVybiB7IHJldmlzaW9ucyB9OwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICByZXR1cm4geyBlcnJvcjogU3RyaW5nKGVycm9yKSB9OwogIH0KfQpmdW5jdGlvbiBoYW5kbGVHZXREb2N1bWVudE1ldGFkYXRhKHJlcXVlc3QpIHsKICBjb25zdCBleHBvcnRzID0gZW5zdXJlSW5pdGlhbGl6ZWQoKTsKICB0cnkgewogICAgY29uc3QgcmVzdWx0ID0gZXhwb3J0cy5Eb2N1bWVudENvbnZlcnRlci5HZXREb2N1bWVudE1ldGFkYXRhKAogICAgICByZXF1ZXN0LmRvY3VtZW50Qnl0ZXMKICAgICk7CiAgICBpZiAoaXNFcnJvclJlc3BvbnNlKHJlc3VsdCkpIHsKICAgICAgcmV0dXJuIHBhcnNlRXJyb3IocmVzdWx0KTsKICAgIH0KICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmVzdWx0KTsKICAgIGNvbnN0IGNvbnZlcnRTZWN0aW9uID0gKHMpID0+ICh7CiAgICAgIHNlY3Rpb25JbmRleDogcy5TZWN0aW9uSW5kZXggPz8gcy5zZWN0aW9uSW5kZXgsCiAgICAgIHBhZ2VXaWR0aFB0OiBzLlBhZ2VXaWR0aFB0ID8/IHMucGFnZVdpZHRoUHQsCiAgICAgIHBhZ2VIZWlnaHRQdDogcy5QYWdlSGVpZ2h0UHQgPz8gcy5wYWdlSGVpZ2h0UHQsCiAgICAgIG1hcmdpblRvcFB0OiBzLk1hcmdpblRvcFB0ID8/IHMubWFyZ2luVG9wUHQsCiAgICAgIG1hcmdpblJpZ2h0UHQ6IHMuTWFyZ2luUmlnaHRQdCA/PyBzLm1hcmdpblJpZ2h0UHQsCiAgICAgIG1hcmdpbkJvdHRvbVB0OiBzLk1hcmdpbkJvdHRvbVB0ID8/IHMubWFyZ2luQm90dG9tUHQsCiAgICAgIG1hcmdpbkxlZnRQdDogcy5NYXJnaW5MZWZ0UHQgPz8gcy5tYXJnaW5MZWZ0UHQsCiAgICAgIGNvbnRlbnRXaWR0aFB0OiBzLkNvbnRlbnRXaWR0aFB0ID8/IHMuY29udGVudFdpZHRoUHQsCiAgICAgIGNvbnRlbnRIZWlnaHRQdDogcy5Db250ZW50SGVpZ2h0UHQgPz8gcy5jb250ZW50SGVpZ2h0UHQsCiAgICAgIGhlYWRlclB0OiBzLkhlYWRlclB0ID8/IHMuaGVhZGVyUHQsCiAgICAgIGZvb3RlclB0OiBzLkZvb3RlclB0ID8/IHMuZm9vdGVyUHQsCiAgICAgIHBhcmFncmFwaENvdW50OiBzLlBhcmFncmFwaENvdW50ID8/IHMucGFyYWdyYXBoQ291bnQsCiAgICAgIHRhYmxlQ291bnQ6IHMuVGFibGVDb3VudCA/PyBzLnRhYmxlQ291bnQsCiAgICAgIGhhc0hlYWRlcjogcy5IYXNIZWFkZXIgPz8gcy5oYXNIZWFkZXIsCiAgICAgIGhhc0Zvb3Rlcjogcy5IYXNGb290ZXIgPz8gcy5oYXNGb290ZXIsCiAgICAgIGhhc0ZpcnN0UGFnZUhlYWRlcjogcy5IYXNGaXJzdFBhZ2VIZWFkZXIgPz8gcy5oYXNGaXJzdFBhZ2VIZWFkZXIsCiAgICAgIGhhc0ZpcnN0UGFnZUZvb3Rlcjogcy5IYXNGaXJzdFBhZ2VGb290ZXIgPz8gcy5oYXNGaXJzdFBhZ2VGb290ZXIsCiAgICAgIGhhc0V2ZW5QYWdlSGVhZGVyOiBzLkhhc0V2ZW5QYWdlSGVhZGVyID8/IHMuaGFzRXZlblBhZ2VIZWFkZXIsCiAgICAgIGhhc0V2ZW5QYWdlRm9vdGVyOiBzLkhhc0V2ZW5QYWdlRm9vdGVyID8/IHMuaGFzRXZlblBhZ2VGb290ZXIsCiAgICAgIHN0YXJ0UGFyYWdyYXBoSW5kZXg6IHMuU3RhcnRQYXJhZ3JhcGhJbmRleCA/PyBzLnN0YXJ0UGFyYWdyYXBoSW5kZXgsCiAgICAgIGVuZFBhcmFncmFwaEluZGV4OiBzLkVuZFBhcmFncmFwaEluZGV4ID8/IHMuZW5kUGFyYWdyYXBoSW5kZXgsCiAgICAgIHN0YXJ0VGFibGVJbmRleDogcy5TdGFydFRhYmxlSW5kZXggPz8gcy5zdGFydFRhYmxlSW5kZXgsCiAgICAgIGVuZFRhYmxlSW5kZXg6IHMuRW5kVGFibGVJbmRleCA/PyBzLmVuZFRhYmxlSW5kZXgKICAgIH0pOwogICAgY29uc3QgbWV0YWRhdGEgPSB7CiAgICAgIHNlY3Rpb25zOiAocGFyc2VkLlNlY3Rpb25zIHx8IHBhcnNlZC5zZWN0aW9ucyB8fCBbXSkubWFwKGNvbnZlcnRTZWN0aW9uKSwKICAgICAgdG90YWxQYXJhZ3JhcGhzOiBwYXJzZWQuVG90YWxQYXJhZ3JhcGhzID8/IHBhcnNlZC50b3RhbFBhcmFncmFwaHMsCiAgICAgIHRvdGFsVGFibGVzOiBwYXJzZWQuVG90YWxUYWJsZXMgPz8gcGFyc2VkLnRvdGFsVGFibGVzLAogICAgICBoYXNGb290bm90ZXM6IHBhcnNlZC5IYXNGb290bm90ZXMgPz8gcGFyc2VkLmhhc0Zvb3Rub3RlcywKICAgICAgaGFzRW5kbm90ZXM6IHBhcnNlZC5IYXNFbmRub3RlcyA/PyBwYXJzZWQuaGFzRW5kbm90ZXMsCiAgICAgIGhhc1RyYWNrZWRDaGFuZ2VzOiBwYXJzZWQuSGFzVHJhY2tlZENoYW5nZXMgPz8gcGFyc2VkLmhhc1RyYWNrZWRDaGFuZ2VzLAogICAgICBoYXNDb21tZW50czogcGFyc2VkLkhhc0NvbW1lbnRzID8/IHBhcnNlZC5oYXNDb21tZW50cywKICAgICAgZXN0aW1hdGVkUGFnZUNvdW50OiBwYXJzZWQuRXN0aW1hdGVkUGFnZUNvdW50ID8/IHBhcnNlZC5lc3RpbWF0ZWRQYWdlQ291bnQKICAgIH07CiAgICByZXR1cm4geyBtZXRhZGF0YSB9OwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICByZXR1cm4geyBlcnJvcjogU3RyaW5nKGVycm9yKSB9OwogIH0KfQpmdW5jdGlvbiBoYW5kbGVHZXRWZXJzaW9uKCkgewogIGNvbnN0IGV4cG9ydHMgPSBlbnN1cmVJbml0aWFsaXplZCgpOwogIHRyeSB7CiAgICBjb25zdCByZXN1bHQgPSBleHBvcnRzLkRvY3VtZW50Q29udmVydGVyLkdldFZlcnNpb24oKTsKICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmVzdWx0KTsKICAgIHJldHVybiB7CiAgICAgIHZlcnNpb246IHsKICAgICAgICBsaWJyYXJ5OiBwYXJzZWQuTGlicmFyeSB8fCBwYXJzZWQubGlicmFyeSwKICAgICAgICBkb3RuZXRWZXJzaW9uOiBwYXJzZWQuRG90bmV0VmVyc2lvbiB8fCBwYXJzZWQuZG90bmV0VmVyc2lvbiwKICAgICAgICBwbGF0Zm9ybTogcGFyc2VkLlBsYXRmb3JtIHx8IHBhcnNlZC5wbGF0Zm9ybQogICAgICB9CiAgICB9OwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICByZXR1cm4geyBlcnJvcjogU3RyaW5nKGVycm9yKSB9OwogIH0KfQpzZWxmLm9ubWVzc2FnZSA9IGFzeW5jIChldmVudCkgPT4gewogIGNvbnN0IHJlcXVlc3QgPSBldmVudC5kYXRhOwogIHRyeSB7CiAgICBsZXQgcmVzcG9uc2U7CiAgICBzd2l0Y2ggKHJlcXVlc3QudHlwZSkgewogICAgICBjYXNlICJpbml0IjogewogICAgICAgIGNvbnN0IGluaXRSZXF1ZXN0ID0gcmVxdWVzdDsKICAgICAgICB0cnkgewogICAgICAgICAgYXdhaXQgaW5pdGlhbGl6ZVdhc20oaW5pdFJlcXVlc3Qud2FzbUJhc2VQYXRoKTsKICAgICAgICAgIHJlc3BvbnNlID0gewogICAgICAgICAgICBpZDogcmVxdWVzdC5pZCwKICAgICAgICAgICAgdHlwZTogImluaXQiLAogICAgICAgICAgICBzdWNjZXNzOiB0cnVlCiAgICAgICAgICB9OwogICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICByZXNwb25zZSA9IHsKICAgICAgICAgICAgaWQ6IHJlcXVlc3QuaWQsCiAgICAgICAgICAgIHR5cGU6ICJpbml0IiwKICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsCiAgICAgICAgICAgIGVycm9yOiBTdHJpbmcoZXJyb3IpCiAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBicmVhazsKICAgICAgfQogICAgICBjYXNlICJjb252ZXJ0RG9jeFRvSHRtbCI6IHsKICAgICAgICBjb25zdCBjb252ZXJ0UmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgICAgY29uc3QgcmVzdWx0ID0gaGFuZGxlQ29udmVydChjb252ZXJ0UmVxdWVzdCk7CiAgICAgICAgcmVzcG9uc2UgPSB7CiAgICAgICAgICBpZDogcmVxdWVzdC5pZCwKICAgICAgICAgIHR5cGU6ICJjb252ZXJ0RG9jeFRvSHRtbCIsCiAgICAgICAgICBzdWNjZXNzOiAhcmVzdWx0LmVycm9yLAogICAgICAgICAgaHRtbDogcmVzdWx0Lmh0bWwsCiAgICAgICAgICBlcnJvcjogcmVzdWx0LmVycm9yCiAgICAgICAgfTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICBjYXNlICJjb21wYXJlRG9jdW1lbnRzIjogewogICAgICAgIGNvbnN0IGNvbXBhcmVSZXF1ZXN0ID0gcmVxdWVzdDsKICAgICAgICBjb25zdCByZXN1bHQgPSBoYW5kbGVDb21wYXJlKGNvbXBhcmVSZXF1ZXN0KTsKICAgICAgICByZXNwb25zZSA9IHsKICAgICAgICAgIGlkOiByZXF1ZXN0LmlkLAogICAgICAgICAgdHlwZTogImNvbXBhcmVEb2N1bWVudHMiLAogICAgICAgICAgc3VjY2VzczogIXJlc3VsdC5lcnJvciwKICAgICAgICAgIGRvY3VtZW50Qnl0ZXM6IHJlc3VsdC5kb2N1bWVudEJ5dGVzLAogICAgICAgICAgZXJyb3I6IHJlc3VsdC5lcnJvcgogICAgICAgIH07CiAgICAgICAgaWYgKHJlc3VsdC5kb2N1bWVudEJ5dGVzKSB7CiAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlc3BvbnNlLCB7IHRyYW5zZmVyOiBbcmVzdWx0LmRvY3VtZW50Qnl0ZXMuYnVmZmVyXSB9KTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgY2FzZSAiY29tcGFyZURvY3VtZW50c1RvSHRtbCI6IHsKICAgICAgICBjb25zdCBjb21wYXJlVG9IdG1sUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgICAgY29uc3QgcmVzdWx0ID0gaGFuZGxlQ29tcGFyZVRvSHRtbChjb21wYXJlVG9IdG1sUmVxdWVzdCk7CiAgICAgICAgcmVzcG9uc2UgPSB7CiAgICAgICAgICBpZDogcmVxdWVzdC5pZCwKICAgICAgICAgIHR5cGU6ICJjb21wYXJlRG9jdW1lbnRzVG9IdG1sIiwKICAgICAgICAgIHN1Y2Nlc3M6ICFyZXN1bHQuZXJyb3IsCiAgICAgICAgICBodG1sOiByZXN1bHQuaHRtbCwKICAgICAgICAgIGVycm9yOiByZXN1bHQuZXJyb3IKICAgICAgICB9OwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGNhc2UgImdldFJldmlzaW9ucyI6IHsKICAgICAgICBjb25zdCBnZXRSZXZpc2lvbnNSZXF1ZXN0ID0gcmVxdWVzdDsKICAgICAgICBjb25zdCByZXN1bHQgPSBoYW5kbGVHZXRSZXZpc2lvbnMoZ2V0UmV2aXNpb25zUmVxdWVzdCk7CiAgICAgICAgcmVzcG9uc2UgPSB7CiAgICAgICAgICBpZDogcmVxdWVzdC5pZCwKICAgICAgICAgIHR5cGU6ICJnZXRSZXZpc2lvbnMiLAogICAgICAgICAgc3VjY2VzczogIXJlc3VsdC5lcnJvciwKICAgICAgICAgIHJldmlzaW9uczogcmVzdWx0LnJldmlzaW9ucywKICAgICAgICAgIGVycm9yOiByZXN1bHQuZXJyb3IKICAgICAgICB9OwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGNhc2UgImdldERvY3VtZW50TWV0YWRhdGEiOiB7CiAgICAgICAgY29uc3QgZ2V0TWV0YWRhdGFSZXF1ZXN0ID0gcmVxdWVzdDsKICAgICAgICBjb25zdCByZXN1bHQgPSBoYW5kbGVHZXREb2N1bWVudE1ldGFkYXRhKGdldE1ldGFkYXRhUmVxdWVzdCk7CiAgICAgICAgcmVzcG9uc2UgPSB7CiAgICAgICAgICBpZDogcmVxdWVzdC5pZCwKICAgICAgICAgIHR5cGU6ICJnZXREb2N1bWVudE1ldGFkYXRhIiwKICAgICAgICAgIHN1Y2Nlc3M6ICFyZXN1bHQuZXJyb3IsCiAgICAgICAgICBtZXRhZGF0YTogcmVzdWx0Lm1ldGFkYXRhLAogICAgICAgICAgZXJyb3I6IHJlc3VsdC5lcnJvcgogICAgICAgIH07CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgY2FzZSAiZ2V0VmVyc2lvbiI6IHsKICAgICAgICBjb25zdCByZXN1bHQgPSBoYW5kbGVHZXRWZXJzaW9uKCk7CiAgICAgICAgcmVzcG9uc2UgPSB7CiAgICAgICAgICBpZDogcmVxdWVzdC5pZCwKICAgICAgICAgIHR5cGU6ICJnZXRWZXJzaW9uIiwKICAgICAgICAgIHN1Y2Nlc3M6ICFyZXN1bHQuZXJyb3IsCiAgICAgICAgICB2ZXJzaW9uOiByZXN1bHQudmVyc2lvbiwKICAgICAgICAgIGVycm9yOiByZXN1bHQuZXJyb3IKICAgICAgICB9OwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGRlZmF1bHQ6IHsKICAgICAgICBjb25zdCB1bmtub3duUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7CiAgICAgICAgICBpZDogdW5rbm93blJlcXVlc3QuaWQsCiAgICAgICAgICB0eXBlOiB1bmtub3duUmVxdWVzdC50eXBlLAogICAgICAgICAgc3VjY2VzczogZmFsc2UsCiAgICAgICAgICBlcnJvcjogYFVua25vd24gcmVxdWVzdCB0eXBlOiAke3Vua25vd25SZXF1ZXN0LnR5cGV9YAogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogICAgc2VsZi5wb3N0TWVzc2FnZShyZXNwb25zZSk7CiAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIHNlbGYucG9zdE1lc3NhZ2UoewogICAgICBpZDogcmVxdWVzdC5pZCwKICAgICAgdHlwZTogcmVxdWVzdC50eXBlLAogICAgICBzdWNjZXNzOiBmYWxzZSwKICAgICAgZXJyb3I6IFN0cmluZyhlcnJvcikKICAgIH0pOwogIH0KfTsKc2VsZi5wb3N0TWVzc2FnZSh7IHR5cGU6ICJyZWFkeSIgfSk7Cg==",typeof document>"u"?require("url").pathToFileURL(__filename).href:ae&&ae.tagName.toUpperCase()==="SCRIPT"&&ae.src||new URL("react-docxodus-viewer.cjs.js",document.baseURI).href).href,A=new Worker(Z,{type:"module"}),m=new Map;let C=!0;A.onmessage=g=>{const l=g.data;if(l.type==="ready")return;const d=m.get(l.id);d&&(m.delete(l.id),l.success?d.resolve(l):d.reject(new Error(l.error||"Unknown error")))},A.onerror=g=>{for(const l of m.values())l.reject(new Error(`Worker error: ${g.message}`));m.clear(),C=!1};function I(g,l){return new Promise((d,b)=>{if(!C){b(new Error("Worker has been terminated"));return}m.set(g.id,{resolve:d,reject:b}),l&&l.length>0?A.postMessage(g,l):A.postMessage(g)})}const h=await I({id:z(),type:"init",wasmBasePath:o});if(!h.success)throw A.terminate(),new Error(`Failed to initialize worker: ${h.error}`);return{async convertDocxToHtml(g,l){const d=await w(g);return(await I({id:z(),type:"convertDocxToHtml",documentBytes:d,options:l},[d.buffer])).html},async compareDocuments(g,l,d){const b=await w(g),y=await w(l);return(await I({id:z(),type:"compareDocuments",originalBytes:b,modifiedBytes:y,options:d},[b.buffer,y.buffer])).documentBytes},async compareDocumentsToHtml(g,l,d){const b=await w(g),y=await w(l);return(await I({id:z(),type:"compareDocumentsToHtml",originalBytes:b,modifiedBytes:y,options:d},[b.buffer,y.buffer])).html},async getRevisions(g,l){const d=await w(g);return(await I({id:z(),type:"getRevisions",documentBytes:d,options:l},[d.buffer])).revisions},async getDocumentMetadata(g){const l=await w(g);return(await I({id:z(),type:"getDocumentMetadata",documentBytes:l},[l.buffer])).metadata},async getVersion(){return(await I({id:z(),type:"getVersion"})).version},terminate(){C=!1,A.terminate();for(const g of m.values())g.reject(new Error("Worker terminated"));m.clear()},isActive(){return C}}}function We(){return typeof Worker<"u"}const Be={paginationScale:.8,showPageNumbers:!0,renderFootnotesAndEndnotes:!0,renderHeadersAndFooters:!0,commentMode:"disabled",annotationMode:"disabled",renderTrackedChanges:!1,showDeletedContent:!0,renderMoveOperations:!0,pageTitle:"Document",cssPrefix:"docx-",fabricateClasses:!0,additionalCss:"",commentCssClassPrefix:"comment-",annotationCssClassPrefix:"annot-"};function _e(s){return i.isInsertion(s)?"Inserted":i.isDeletion(s)?"Deleted":i.isMove(s)?s.isMoveSource?"Moved from":"Moved to":i.isFormatChange(s)?"Formatted":String(s.revisionType)}function $e(s){return i.isInsertion(s)?"rdv-revision--insertion":i.isDeletion(s)?"rdv-revision--deletion":i.isMove(s)?"rdv-revision--move":i.isFormatChange(s)?"rdv-revision--format":""}function qe(s){try{return new Date(s).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return s}}function en(s,o=150){return s.length<=o?s:s.substring(0,o)+"..."}function ie(s){return!(!s||typeof s!="string"||s.includes("<")||s.includes("xmlns")||s.includes("Unid=")||s.length>100)}function Ge(s){return s.replace(/([A-Z])/g," $1").replace(/^./,o=>o.toUpperCase()).trim()}function Ie(s){return s==="true"?"Yes":s==="false"?"No":s==="single"?"Single":s==="double"?"Double":s}function nn(s){if(!s.formatChange)return[];const{oldProperties:o,newProperties:Z}=s.formatChange,A=[],m=new Set;if(o)for(const[C,I]of Object.entries(o)){if(!ie(I))continue;m.add(C);const h=Z?.[C];A.push({property:Ge(C),oldValue:Ie(I),newValue:h&&ie(h)?Ie(h):void 0})}if(Z)for(const[C,I]of Object.entries(Z))m.has(C)||ie(I)&&A.push({property:Ge(C),oldValue:void 0,newValue:Ie(I)});return A}function sn({revisions:s}){const[o,Z]=a.useState("all"),[A,m]=a.useState(new Set),C=a.useMemo(()=>o==="all"?s:s.filter(g=>{switch(o){case"insertions":return i.isInsertion(g);case"deletions":return i.isDeletion(g);case"moves":return i.isMove(g);case"formatting":return i.isFormatChange(g);default:return!0}}),[s,o]),I=a.useMemo(()=>({total:s.length,insertions:s.filter(i.isInsertion).length,deletions:s.filter(i.isDeletion).length,moves:s.filter(i.isMove).length,formatting:s.filter(i.isFormatChange).length}),[s]),h=g=>{m(l=>{const d=new Set(l);return d.has(g)?d.delete(g):d.add(g),d})};return s.length===0?e.jsx("div",{className:"rdv-revision-panel",children:e.jsxs("div",{className:"rdv-revision-empty",children:[e.jsx("div",{className:"rdv-revision-empty__icon",children:"📝"}),e.jsx("p",{children:"No tracked changes found in this document."})]})}):e.jsxs("div",{className:"rdv-revision-panel",children:[e.jsxs("div",{className:"rdv-revision-header",children:[e.jsxs("div",{className:"rdv-revision-stats",children:[e.jsxs("span",{className:"rdv-revision-stat rdv-revision-stat--total",children:[I.total," change",I.total!==1?"s":""]}),I.insertions>0&&e.jsxs("span",{className:"rdv-revision-stat rdv-revision-stat--insertion",children:["+",I.insertions]}),I.deletions>0&&e.jsxs("span",{className:"rdv-revision-stat rdv-revision-stat--deletion",children:["−",I.deletions]}),I.moves>0&&e.jsxs("span",{className:"rdv-revision-stat rdv-revision-stat--move",children:["↔",I.moves]}),I.formatting>0&&e.jsxs("span",{className:"rdv-revision-stat rdv-revision-stat--format",children:["✎",I.formatting]})]}),e.jsxs("select",{className:"rdv-revision-filter",value:o,onChange:g=>Z(g.target.value),children:[e.jsx("option",{value:"all",children:"All Changes"}),e.jsxs("option",{value:"insertions",children:["Insertions (",I.insertions,")"]}),e.jsxs("option",{value:"deletions",children:["Deletions (",I.deletions,")"]}),e.jsxs("option",{value:"moves",children:["Moves (",I.moves,")"]}),e.jsxs("option",{value:"formatting",children:["Formatting (",I.formatting,")"]})]})]}),e.jsx("div",{className:"rdv-revision-list",children:C.map((g,l)=>{const d=A.has(l),b=g.text.length>150,y=i.isFormatChange(g)?nn(g):[];return e.jsxs("div",{className:`rdv-revision-item ${$e(g)}`,children:[e.jsxs("div",{className:"rdv-revision-item__header",children:[e.jsx("span",{className:"rdv-revision-type",children:_e(g)}),i.isMove(g)&&g.moveGroupId!==void 0&&e.jsxs("span",{className:"rdv-revision-move-id",children:["#",g.moveGroupId]}),e.jsx("span",{className:"rdv-revision-author",children:g.author||"Unknown"}),e.jsx("span",{className:"rdv-revision-date",children:qe(g.date)})]}),g.text&&e.jsxs("div",{className:"rdv-revision-item__content",children:[e.jsx("span",{className:"rdv-revision-text",children:d?g.text:en(g.text)}),b&&e.jsx("button",{className:"rdv-revision-expand",onClick:()=>h(l),children:d?"Show less":"Show more"})]}),y.length>0&&e.jsx("div",{className:"rdv-revision-item__format-details",children:y.map((r,T)=>e.jsxs("div",{className:"rdv-format-change",children:[e.jsx("span",{className:"rdv-format-change__property",children:r.property}),e.jsxs("span",{className:"rdv-format-change__values",children:[r.oldValue&&e.jsx("span",{className:"rdv-format-change__old",children:r.oldValue}),r.oldValue&&r.newValue&&e.jsx("span",{className:"rdv-format-change__arrow",children:"→"}),r.newValue&&e.jsx("span",{className:"rdv-format-change__new",children:r.newValue}),!r.oldValue&&r.newValue&&e.jsx("span",{className:"rdv-format-change__added",children:"(added)"}),r.oldValue&&!r.newValue&&e.jsx("span",{className:"rdv-format-change__removed",children:"(removed)"})]})]},T))})]},l)})})]})}function gn(s){switch(s){case"endnote":return i.CommentRenderMode.EndnoteStyle;case"inline":return i.CommentRenderMode.Inline;case"margin":return i.CommentRenderMode.Margin;default:return i.CommentRenderMode.Disabled}}function cn(s){switch(s){case"above":return i.AnnotationLabelMode.Above;case"inline":return i.AnnotationLabelMode.Inline;case"tooltip":return i.AnnotationLabelMode.Tooltip;case"none":return i.AnnotationLabelMode.None;default:return}}function tn({file:s,html:o,onFileChange:Z,onConversionStart:A,onConversionComplete:m,onError:C,onPageChange:I,onRevisionsExtracted:h,settings:g,defaultSettings:l,onSettingsChange:d,className:b,style:y,toolbar:r="top",showSettingsButton:T=!0,showRevisionsTab:S=!0,placeholder:Ne="Open a DOCX file to view",wasmBasePath:E,useWorker:u=!0}){const _=a.useMemo(()=>({...Be,...l}),[l]),[Xe,le]=a.useState(null),[Re,K]=a.useState(null),[oe,He]=a.useState(_),X=s!==void 0?s:Xe,G=o!==void 0?o:Re,t=a.useMemo(()=>g?{..._,...g}:oe,[g,_,oe]),R=pe.useDocxodus(E),[W,de]=a.useState(null),[ze,Ce]=a.useState(!1),[we,$]=a.useState(!1),[xe,re]=a.useState(null),Q=a.useRef(null);a.useEffect(()=>{if(!u||!We())return;let n=!1;return $(!0),re(null),Ee({wasmBasePath:E}).then(c=>{n?c.terminate():(Q.current=c,de(c),Ce(!0),$(!1))}).catch(c=>{n||(re(c instanceof Error?c:new Error(String(c))),$(!1))}),()=>{n=!0,Q.current&&(Q.current.terminate(),Q.current=null,de(null),Ce(!1))}},[u,E]);const H=u?ze:R.isReady,f=u?we:R.isLoading,D=u?xe:R.error,[B,Ae]=a.useState(!1),[me,U]=a.useState(null),[be,ue]=a.useState(""),[N,q]=a.useState(1),[p,ee]=a.useState(0),[fe,P]=a.useState(!1),[F,Y]=a.useState("document"),[ne,J]=a.useState([]),[Fe,Ze]=a.useState(!1),[x,M]=a.useState(null),se=a.useRef(null),ge=a.useCallback(()=>({commentRenderMode:gn(t.commentMode),pageTitle:t.pageTitle,cssPrefix:t.cssPrefix,fabricateClasses:t.fabricateClasses,additionalCss:t.additionalCss||void 0,commentCssClassPrefix:t.commentCssClassPrefix,paginationMode:i.PaginationMode.Paginated,paginationScale:t.paginationScale,renderAnnotations:t.annotationMode!=="disabled",annotationLabelMode:cn(t.annotationMode),annotationCssClassPrefix:t.annotationCssClassPrefix,renderFootnotesAndEndnotes:t.renderFootnotesAndEndnotes,renderHeadersAndFooters:t.renderHeadersAndFooters,renderTrackedChanges:t.renderTrackedChanges,showDeletedContent:t.showDeletedContent,renderMoveOperations:t.renderMoveOperations}),[t]),Ye=a.useCallback(async n=>{try{const c=u&&W?await W.getDocumentMetadata(n):await i.getDocumentMetadata(n);M(c)}catch{M(null)}},[u,W]),he=a.useCallback(async n=>{if(!(!H||!S)){Ze(!0);try{const c=u&&W?await W.getRevisions(n):await R.getRevisions(n);J(c),h?.(c)}catch{J([])}finally{Ze(!1)}}},[H,u,W,R,S,h]),j=a.useCallback(async n=>{if(H){Ae(!0),U(null),J([]),Y("document"),A?.(),u||await new Promise(c=>requestAnimationFrame(()=>requestAnimationFrame(c)));try{const c=u&&W?await W.convertDocxToHtml(n,ge()):await R.convertToHtml(n,ge());o===void 0&&K(c),m?.(c),he(n)}catch(c){const V=c instanceof Error?c:new Error(String(c));U(V),C?.(V)}finally{Ae(!1)}}},[H,u,W,R,ge,o,A,m,C,he]);a.useEffect(()=>{H&&X&&!G&&!B&&o===void 0&&j(X)},[H,X,G,B,j,o]);const Je=async n=>{const c=n.target.files?.[0];c&&(ue(c.name),U(null),q(1),ee(0),M(null),J([]),Y("document"),s===void 0&&(le(c),K(null)),Z?.(c),Ye(c),H&&o===void 0&&await j(c))},je=a.useCallback(async()=>{X&&(o===void 0&&K(null),await j(X))},[X,j,o]),ke=()=>{s===void 0&&le(null),o===void 0&&K(null),U(null),ue(""),q(1),ee(0),J([]),Y("document"),M(null),Z?.(null);const n=document.getElementById("rdv-file-input");n&&(n.value="")},v=a.useCallback(n=>{const c={...t,...n};g===void 0&&He(c),d?.(c)},[t,g,d]),Se=()=>v({paginationScale:Math.min(t.paginationScale+.1,2)}),Ke=()=>v({paginationScale:Math.max(t.paginationScale-.1,.3)}),Qe=n=>v({paginationScale:Math.max(.3,Math.min(2,n))}),ce=n=>{const c=se.current;if(!c||n<1||n>p)return;const V=c.querySelector(`[data-page-number="${n}"]`);V&&V.scrollIntoView({behavior:"smooth",block:"start"})},De=()=>N>1&&ce(N-1),Ue=()=>N<p&&ce(N+1),Pe=n=>{q(n),I?.(n,p)};a.useEffect(()=>{const n=se.current;if(!n)return;const c=V=>{const L=V.target.closest('a[href^="#"]');if(!L)return;const k=L.getAttribute("href");if(!k||!k.startsWith("#"))return;V.preventDefault();const ye=k.substring(1),O=n.querySelector(`[id="${ye}"], [name="${ye}"]`);O&&(O.scrollIntoView({behavior:"smooth",block:"center"}),O.classList.add("rdv-footnote-highlight"),setTimeout(()=>O.classList.remove("rdv-footnote-highlight"),2e3))};return n.addEventListener("click",c),()=>n.removeEventListener("click",c)},[G]),a.useEffect(()=>{p>0&&I?.(N,p)},[p,N,I]);const ve=B||f,Me=()=>e.jsx("div",{className:"rdv-settings-overlay",onClick:()=>P(!1),children:e.jsxs("div",{className:"rdv-settings-modal",onClick:n=>n.stopPropagation(),children:[e.jsxs("div",{className:"rdv-settings-header",children:[e.jsx("h3",{children:"Viewer Settings"}),e.jsx("button",{className:"rdv-settings-close",onClick:()=>P(!1),children:"×"})]}),e.jsxs("div",{className:"rdv-settings-body",children:[e.jsxs("div",{className:"rdv-settings-section",children:[e.jsx("h4",{children:"Display Options"}),e.jsxs("label",{className:"rdv-settings-checkbox",children:[e.jsx("input",{type:"checkbox",checked:t.renderFootnotesAndEndnotes,onChange:n=>v({renderFootnotesAndEndnotes:n.target.checked})}),e.jsx("span",{children:"Show footnotes and endnotes"})]}),e.jsxs("label",{className:"rdv-settings-checkbox",children:[e.jsx("input",{type:"checkbox",checked:t.renderHeadersAndFooters,onChange:n=>v({renderHeadersAndFooters:n.target.checked})}),e.jsx("span",{children:"Show headers and footers"})]}),e.jsxs("label",{className:"rdv-settings-checkbox",children:[e.jsx("input",{type:"checkbox",checked:t.showPageNumbers,onChange:n=>v({showPageNumbers:n.target.checked})}),e.jsx("span",{children:"Show page numbers"})]})]}),e.jsxs("div",{className:"rdv-settings-section",children:[e.jsx("h4",{children:"Comment Rendering"}),e.jsx("div",{className:"rdv-settings-radio-group",children:["disabled","endnote","inline","margin"].map(n=>e.jsxs("label",{className:"rdv-settings-radio",children:[e.jsx("input",{type:"radio",name:"commentMode",checked:t.commentMode===n,onChange:()=>v({commentMode:n})}),e.jsxs("span",{children:[n.charAt(0).toUpperCase()+n.slice(1),n==="endnote"?"s":""]})]},n))})]}),e.jsxs("div",{className:"rdv-settings-section",children:[e.jsx("h4",{children:"Annotation Rendering"}),e.jsx("div",{className:"rdv-settings-radio-group",children:["disabled","above","inline","tooltip","none"].map(n=>e.jsxs("label",{className:"rdv-settings-radio",children:[e.jsx("input",{type:"radio",name:"annotationMode",checked:t.annotationMode===n,onChange:()=>v({annotationMode:n})}),e.jsx("span",{children:n==="none"?"Highlight Only":n.charAt(0).toUpperCase()+n.slice(1)})]},n))})]}),e.jsxs("div",{className:"rdv-settings-section",children:[e.jsx("h4",{children:"Tracked Changes"}),e.jsxs("label",{className:"rdv-settings-checkbox",children:[e.jsx("input",{type:"checkbox",checked:t.renderTrackedChanges,onChange:n=>v({renderTrackedChanges:n.target.checked})}),e.jsx("span",{children:"Show tracked changes"})]}),t.renderTrackedChanges&&e.jsxs("div",{className:"rdv-settings-subsection",children:[e.jsxs("label",{className:"rdv-settings-checkbox",children:[e.jsx("input",{type:"checkbox",checked:t.showDeletedContent,onChange:n=>v({showDeletedContent:n.target.checked})}),e.jsx("span",{children:"Show deleted content"})]}),e.jsxs("label",{className:"rdv-settings-checkbox",children:[e.jsx("input",{type:"checkbox",checked:t.renderMoveOperations,onChange:n=>v({renderMoveOperations:n.target.checked})}),e.jsx("span",{children:"Distinguish move operations"})]})]})]})]}),e.jsx("div",{className:"rdv-settings-footer",children:e.jsx("button",{className:"rdv-settings-apply",onClick:()=>{je(),P(!1)},children:"Apply & Close"})})]})}),Le=ne.length>0,Ve=()=>e.jsxs("div",{className:"rdv-toolbar",children:[e.jsxs("div",{className:"rdv-toolbar-left",children:[e.jsx("label",{htmlFor:"rdv-file-input",className:"rdv-toolbar-file-btn",children:be||"Open Document"}),e.jsx("input",{id:"rdv-file-input",type:"file",accept:".docx",onChange:Je,disabled:ve,className:"rdv-file-input"}),be&&e.jsx("button",{className:"rdv-toolbar-btn rdv-toolbar-clear",onClick:ke,disabled:ve,children:"×"}),S&&Le&&G&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"rdv-toolbar-separator"}),e.jsxs("div",{className:"rdv-view-tabs",children:[e.jsx("button",{className:`rdv-view-tab ${F==="document"?"rdv-view-tab--active":""}`,onClick:()=>Y("document"),title:"View Document",children:"Document"}),e.jsxs("button",{className:`rdv-view-tab ${F==="revisions"?"rdv-view-tab--active":""}`,onClick:()=>Y("revisions"),title:"View Tracked Changes",children:["Changes (",ne.length,")"]})]})]}),S&&Fe&&e.jsx("span",{className:"rdv-extracting-indicator",title:"Extracting tracked changes...",children:"..."})]}),e.jsx("div",{className:"rdv-toolbar-center",children:G&&p>0&&F==="document"&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"rdv-toolbar-btn",onClick:De,disabled:N<=1,title:"Previous Page",children:"◀"}),e.jsxs("div",{className:"rdv-page-input-group",children:[e.jsx("input",{type:"number",className:"rdv-page-input",value:N,min:1,max:p,onChange:n=>{const c=parseInt(n.target.value);isNaN(c)||ce(c)}}),e.jsxs("span",{className:"rdv-page-total",children:["/ ",p]})]}),e.jsx("button",{className:"rdv-toolbar-btn",onClick:Ue,disabled:N>=p,title:"Next Page",children:"▶"}),e.jsx("div",{className:"rdv-toolbar-separator"}),e.jsx("button",{className:"rdv-toolbar-btn",onClick:Ke,disabled:t.paginationScale<=.3,title:"Zoom Out",children:"−"}),e.jsxs("select",{className:"rdv-zoom-select",value:t.paginationScale,onChange:n=>Qe(parseFloat(n.target.value)),children:[e.jsx("option",{value:"0.5",children:"50%"}),e.jsx("option",{value:"0.75",children:"75%"}),e.jsx("option",{value:"0.8",children:"80%"}),e.jsx("option",{value:"0.9",children:"90%"}),e.jsx("option",{value:"1",children:"100%"}),e.jsx("option",{value:"1.25",children:"125%"}),e.jsx("option",{value:"1.5",children:"150%"}),e.jsx("option",{value:"2",children:"200%"})]}),e.jsx("button",{className:"rdv-toolbar-btn",onClick:Se,disabled:t.paginationScale>=2,title:"Zoom In",children:"+"})]})}),e.jsx("div",{className:"rdv-toolbar-right",children:T&&e.jsx("button",{className:"rdv-toolbar-btn rdv-toolbar-settings",onClick:()=>P(!0),title:"Settings",children:"⚙"})})]}),Oe=["rdv-viewer",b].filter(Boolean).join(" ");return e.jsxs("div",{className:Oe,style:y,children:[r==="top"&&e.jsx(Ve,{}),e.jsxs("div",{className:"rdv-content",children:[D&&e.jsx("div",{className:"rdv-message rdv-message--error",children:e.jsxs("p",{children:["Failed to initialize: ",D.message]})}),!D&&(f||B)&&(x&&B?e.jsx("div",{className:"rdv-pages rdv-pages--loading",children:e.jsx("div",{className:"rdv-page-placeholders",style:{backgroundColor:"#525659"},children:Array.from({length:x.estimatedPageCount||1}).map((n,c)=>{const V=x.sections[Math.min(c,x.sections.length-1)],te=t.paginationScale,L=Math.round((V?.pageWidthPt||612)*(96/72)*te),k=Math.round((V?.pageHeightPt||792)*(96/72)*te);return e.jsxs("div",{className:"rdv-page-placeholder",style:{width:`${L}px`,height:`${k}px`,marginBottom:"20px"},children:[e.jsx("div",{className:"rdv-page-placeholder__shimmer"}),c===0&&e.jsxs("div",{className:"rdv-page-placeholder__info",children:[e.jsx("div",{className:"rdv-spinner rdv-spinner--small"}),e.jsx("span",{children:"Converting document..."}),e.jsxs("span",{className:"rdv-page-placeholder__count",children:["~",x.estimatedPageCount," page",x.estimatedPageCount!==1?"s":""]})]}),e.jsx("div",{className:"rdv-page-placeholder__number",children:c+1})]},c)})})}):e.jsxs("div",{className:"rdv-message",children:[e.jsx("div",{className:"rdv-spinner"}),e.jsx("p",{children:f&&X?"Loading engine & preparing document...":f?"Loading document engine...":"Processing document..."})]})),!f&&!D&&!G&&!B&&!X&&e.jsxs("div",{className:"rdv-message",children:[e.jsx("div",{className:"rdv-message__icon",children:"📄"}),e.jsx("p",{children:Ne})]}),me&&!B&&e.jsx("div",{className:"rdv-message rdv-message--error",children:e.jsxs("p",{children:["Error: ",me.message]})}),F==="document"&&G&&!B&&e.jsx("div",{ref:se,className:"rdv-pages",children:e.jsx(pe.PaginatedDocument,{html:G,scale:t.paginationScale,showPageNumbers:t.showPageNumbers,pageGap:20,backgroundColor:"#525659",className:"rdv-paginated-document",onPaginationComplete:n=>{ee(n.totalPages)},onPageVisible:Pe})}),F==="revisions"&&G&&!B&&e.jsx(sn,{revisions:ne})]}),r==="bottom"&&e.jsx(Ve,{}),fe&&e.jsx(Me,{})]})}Object.defineProperty(exports,"RevisionType",{enumerable:!0,get:()=>i.RevisionType});Object.defineProperty(exports,"isDeletion",{enumerable:!0,get:()=>i.isDeletion});Object.defineProperty(exports,"isFormatChange",{enumerable:!0,get:()=>i.isFormatChange});Object.defineProperty(exports,"isInsertion",{enumerable:!0,get:()=>i.isInsertion});Object.defineProperty(exports,"isMove",{enumerable:!0,get:()=>i.isMove});exports.DEFAULT_SETTINGS=Be;exports.DocumentViewer=tn;exports.isWorkerSupported=We;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),g=require("react"),Re=require("docxodus/react"),d=require("docxodus");var Ie=typeof document<"u"?document.currentScript:null;function Y(){return`${Date.now()}-${Math.random().toString(36).slice(2,11)}`}async function j(t){if(t instanceof Uint8Array)return t;const o=await t.arrayBuffer();return new Uint8Array(o)}function gn(){if(typeof document<"u"){const t=document.querySelectorAll('script[src*="docxodus"]');if(t.length>0){const o=t[0].src;return o.substring(0,o.lastIndexOf("/")+1)+"wasm/"}}return"/wasm/"}async function ln(t){const o=t?.wasmBasePath??gn(),v=new URL("data:text/javascript;base64,Ly8gc3JjL2RvY3hvZHVzLndvcmtlci50cwp2YXIgd2FzbUV4cG9ydHMgPSBudWxsOwp2YXIgaW5pdFByb21pc2UgPSBudWxsOwphc3luYyBmdW5jdGlvbiBpbml0aWFsaXplV2FzbShiYXNlUGF0aCkgewogIGlmICh3YXNtRXhwb3J0cykgewogICAgcmV0dXJuOwogIH0KICBpZiAoaW5pdFByb21pc2UpIHsKICAgIHJldHVybiBpbml0UHJvbWlzZTsKICB9CiAgaW5pdFByb21pc2UgPSAoYXN5bmMgKCkgPT4gewogICAgdHJ5IHsKICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBiYXNlUGF0aC5lbmRzV2l0aCgiLyIpID8gYmFzZVBhdGggOiBiYXNlUGF0aCArICIvIjsKICAgICAgY29uc3QgZG90bmV0TW9kdWxlID0gYXdhaXQgaW1wb3J0KAogICAgICAgIC8qIHdlYnBhY2tJZ25vcmU6IHRydWUgKi8KICAgICAgICBgJHtub3JtYWxpemVkUGF0aH1fZnJhbWV3b3JrL2RvdG5ldC5qc2AKICAgICAgKTsKICAgICAgY29uc3QgeyBnZXRBc3NlbWJseUV4cG9ydHMsIGdldENvbmZpZyB9ID0gYXdhaXQgZG90bmV0TW9kdWxlLmRvdG5ldC53aXRoRGlhZ25vc3RpY1RyYWNpbmcoZmFsc2UpLmNyZWF0ZSgpOwogICAgICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTsKICAgICAgY29uc3QgZXhwb3J0cyA9IGF3YWl0IGdldEFzc2VtYmx5RXhwb3J0cyhjb25maWcubWFpbkFzc2VtYmx5TmFtZSk7CiAgICAgIHdhc21FeHBvcnRzID0gewogICAgICAgIERvY3VtZW50Q29udmVydGVyOiBleHBvcnRzLkRvY3hvZHVzV2FzbS5Eb2N1bWVudENvbnZlcnRlciwKICAgICAgICBEb2N1bWVudENvbXBhcmVyOiBleHBvcnRzLkRvY3hvZHVzV2FzbS5Eb2N1bWVudENvbXBhcmVyLAogICAgICAgIERvY3hTZXNzaW9uQnJpZGdlOiBleHBvcnRzLkRvY3hvZHVzV2FzbS5Eb2N4U2Vzc2lvbkJyaWRnZQogICAgICB9OwogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgaW5pdFByb21pc2UgPSBudWxsOwogICAgICB0aHJvdyBlcnJvcjsKICAgIH0KICB9KSgpOwogIHJldHVybiBpbml0UHJvbWlzZTsKfQpmdW5jdGlvbiBlbnN1cmVJbml0aWFsaXplZCgpIHsKICBpZiAoIXdhc21FeHBvcnRzKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoIldvcmtlciBub3QgaW5pdGlhbGl6ZWQuIENhbGwgaW5pdCBmaXJzdC4iKTsKICB9CiAgcmV0dXJuIHdhc21FeHBvcnRzOwp9CmZ1bmN0aW9uIGlzRXJyb3JSZXNwb25zZShyZXN1bHQpIHsKICByZXR1cm4gcmVzdWx0LnN0YXJ0c1dpdGgoInsiKSAmJiByZXN1bHQuaW5jbHVkZXMoJyJFcnJvciInKTsKfQpmdW5jdGlvbiBwYXJzZUVycm9yKHJlc3VsdCkgewogIHRyeSB7CiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJlc3VsdCk7CiAgICByZXR1cm4geyBlcnJvcjogcGFyc2VkLkVycm9yIHx8IHBhcnNlZC5lcnJvciB8fCAiVW5rbm93biBlcnJvciIgfTsKICB9IGNhdGNoIHsKICAgIHJldHVybiB7IGVycm9yOiByZXN1bHQgfTsKICB9Cn0KZnVuY3Rpb24gaGFuZGxlQ29udmVydChyZXF1ZXN0KSB7CiAgY29uc3QgZXhwb3J0cyA9IGVuc3VyZUluaXRpYWxpemVkKCk7CiAgY29uc3Qgb3B0aW9ucyA9IHJlcXVlc3Qub3B0aW9uczsKICB0cnkgewogICAgbGV0IHJlc3VsdDsKICAgIGNvbnN0IG5lZWRzQ29tcGxldGVNZXRob2QgPSBvcHRpb25zPy5yZW5kZXJGb290bm90ZXNBbmRFbmRub3RlcyAhPT0gdm9pZCAwIHx8IG9wdGlvbnM/LnJlbmRlckhlYWRlcnNBbmRGb290ZXJzICE9PSB2b2lkIDAgfHwgb3B0aW9ucz8ucmVuZGVyVHJhY2tlZENoYW5nZXMgIT09IHZvaWQgMCB8fCBvcHRpb25zPy5zaG93RGVsZXRlZENvbnRlbnQgIT09IHZvaWQgMCB8fCBvcHRpb25zPy5yZW5kZXJNb3ZlT3BlcmF0aW9ucyAhPT0gdm9pZCAwIHx8IG9wdGlvbnM/LnJlbmRlclVuc3VwcG9ydGVkQ29udGVudFBsYWNlaG9sZGVycyAhPT0gdm9pZCAwIHx8IG9wdGlvbnM/LmRvY3VtZW50TGFuZ3VhZ2UgIT09IHZvaWQgMDsKICAgIGlmIChuZWVkc0NvbXBsZXRlTWV0aG9kIHx8IG9wdGlvbnM/LnJlbmRlckFubm90YXRpb25zKSB7CiAgICAgIHJlc3VsdCA9IGV4cG9ydHMuRG9jdW1lbnRDb252ZXJ0ZXIuQ29udmVydERvY3hUb0h0bWxDb21wbGV0ZSgKICAgICAgICByZXF1ZXN0LmRvY3VtZW50Qnl0ZXMsCiAgICAgICAgb3B0aW9ucz8ucGFnZVRpdGxlID8/ICJEb2N1bWVudCIsCiAgICAgICAgb3B0aW9ucz8uY3NzUHJlZml4ID8/ICJkb2N4LSIsCiAgICAgICAgb3B0aW9ucz8uZmFicmljYXRlQ2xhc3NlcyA/PyB0cnVlLAogICAgICAgIG9wdGlvbnM/LmFkZGl0aW9uYWxDc3MgPz8gIiIsCiAgICAgICAgb3B0aW9ucz8uY29tbWVudFJlbmRlck1vZGUgPz8gLTEsCiAgICAgICAgb3B0aW9ucz8uY29tbWVudENzc0NsYXNzUHJlZml4ID8/ICJjb21tZW50LSIsCiAgICAgICAgb3B0aW9ucz8ucGFnaW5hdGlvbk1vZGUgPz8gMCwKICAgICAgICBvcHRpb25zPy5wYWdpbmF0aW9uU2NhbGUgPz8gMSwKICAgICAgICBvcHRpb25zPy5wYWdpbmF0aW9uQ3NzQ2xhc3NQcmVmaXggPz8gInBhZ2UtIiwKICAgICAgICBvcHRpb25zPy5yZW5kZXJBbm5vdGF0aW9ucyA/PyBmYWxzZSwKICAgICAgICBvcHRpb25zPy5hbm5vdGF0aW9uTGFiZWxNb2RlID8/IDAsCiAgICAgICAgb3B0aW9ucz8uYW5ub3RhdGlvbkNzc0NsYXNzUHJlZml4ID8/ICJhbm5vdC0iLAogICAgICAgIG9wdGlvbnM/LnJlbmRlckZvb3Rub3Rlc0FuZEVuZG5vdGVzID8/IGZhbHNlLAogICAgICAgIG9wdGlvbnM/LnJlbmRlckhlYWRlcnNBbmRGb290ZXJzID8/IGZhbHNlLAogICAgICAgIG9wdGlvbnM/LnJlbmRlclRyYWNrZWRDaGFuZ2VzID8/IGZhbHNlLAogICAgICAgIG9wdGlvbnM/LnNob3dEZWxldGVkQ29udGVudCA/PyB0cnVlLAogICAgICAgIG9wdGlvbnM/LnJlbmRlck1vdmVPcGVyYXRpb25zID8/IHRydWUsCiAgICAgICAgb3B0aW9ucz8ucmVuZGVyVW5zdXBwb3J0ZWRDb250ZW50UGxhY2Vob2xkZXJzID8/IGZhbHNlLAogICAgICAgIG9wdGlvbnM/LmRvY3VtZW50TGFuZ3VhZ2UgPz8gbnVsbAogICAgICApOwogICAgfSBlbHNlIGlmIChvcHRpb25zPy5wYWdpbmF0aW9uTW9kZSAhPT0gdm9pZCAwICYmIG9wdGlvbnMucGFnaW5hdGlvbk1vZGUgIT09IDApIHsKICAgICAgcmVzdWx0ID0gZXhwb3J0cy5Eb2N1bWVudENvbnZlcnRlci5Db252ZXJ0RG9jeFRvSHRtbFdpdGhQYWdpbmF0aW9uKAogICAgICAgIHJlcXVlc3QuZG9jdW1lbnRCeXRlcywKICAgICAgICBvcHRpb25zLnBhZ2VUaXRsZSA/PyAiRG9jdW1lbnQiLAogICAgICAgIG9wdGlvbnMuY3NzUHJlZml4ID8/ICJkb2N4LSIsCiAgICAgICAgb3B0aW9ucy5mYWJyaWNhdGVDbGFzc2VzID8/IHRydWUsCiAgICAgICAgb3B0aW9ucy5hZGRpdGlvbmFsQ3NzID8/ICIiLAogICAgICAgIG9wdGlvbnMuY29tbWVudFJlbmRlck1vZGUgPz8gLTEsCiAgICAgICAgb3B0aW9ucy5jb21tZW50Q3NzQ2xhc3NQcmVmaXggPz8gImNvbW1lbnQtIiwKICAgICAgICBvcHRpb25zLnBhZ2luYXRpb25Nb2RlLAogICAgICAgIG9wdGlvbnMucGFnaW5hdGlvblNjYWxlID8/IDEsCiAgICAgICAgb3B0aW9ucy5wYWdpbmF0aW9uQ3NzQ2xhc3NQcmVmaXggPz8gInBhZ2UtIgogICAgICApOwogICAgfSBlbHNlIGlmIChvcHRpb25zKSB7CiAgICAgIHJlc3VsdCA9IGV4cG9ydHMuRG9jdW1lbnRDb252ZXJ0ZXIuQ29udmVydERvY3hUb0h0bWxXaXRoT3B0aW9ucygKICAgICAgICByZXF1ZXN0LmRvY3VtZW50Qnl0ZXMsCiAgICAgICAgb3B0aW9ucy5wYWdlVGl0bGUgPz8gIkRvY3VtZW50IiwKICAgICAgICBvcHRpb25zLmNzc1ByZWZpeCA/PyAiZG9jeC0iLAogICAgICAgIG9wdGlvbnMuZmFicmljYXRlQ2xhc3NlcyA/PyB0cnVlLAogICAgICAgIG9wdGlvbnMuYWRkaXRpb25hbENzcyA/PyAiIiwKICAgICAgICBvcHRpb25zLmNvbW1lbnRSZW5kZXJNb2RlID8/IC0xLAogICAgICAgIG9wdGlvbnMuY29tbWVudENzc0NsYXNzUHJlZml4ID8/ICJjb21tZW50LSIKICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgIHJlc3VsdCA9IGV4cG9ydHMuRG9jdW1lbnRDb252ZXJ0ZXIuQ29udmVydERvY3hUb0h0bWwoCiAgICAgICAgcmVxdWVzdC5kb2N1bWVudEJ5dGVzCiAgICAgICk7CiAgICB9CiAgICBpZiAoaXNFcnJvclJlc3BvbnNlKHJlc3VsdCkpIHsKICAgICAgcmV0dXJuIHBhcnNlRXJyb3IocmVzdWx0KTsKICAgIH0KICAgIHJldHVybiB7IGh0bWw6IHJlc3VsdCB9OwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICByZXR1cm4geyBlcnJvcjogU3RyaW5nKGVycm9yKSB9OwogIH0KfQpmdW5jdGlvbiBoYW5kbGVDb21wYXJlKHJlcXVlc3QpIHsKICBjb25zdCBleHBvcnRzID0gZW5zdXJlSW5pdGlhbGl6ZWQoKTsKICBjb25zdCBvcHRpb25zID0gcmVxdWVzdC5vcHRpb25zOwogIHRyeSB7CiAgICBsZXQgcmVzdWx0OwogICAgaWYgKG9wdGlvbnM/LmRldGFpbFRocmVzaG9sZCAhPT0gdm9pZCAwIHx8IG9wdGlvbnM/LmNhc2VJbnNlbnNpdGl2ZSkgewogICAgICByZXN1bHQgPSBleHBvcnRzLkRvY3VtZW50Q29tcGFyZXIuQ29tcGFyZURvY3VtZW50c1dpdGhPcHRpb25zKAogICAgICAgIHJlcXVlc3Qub3JpZ2luYWxCeXRlcywKICAgICAgICByZXF1ZXN0Lm1vZGlmaWVkQnl0ZXMsCiAgICAgICAgb3B0aW9ucz8uYXV0aG9yTmFtZSA/PyAiRG9jeG9kdXMiLAogICAgICAgIG9wdGlvbnM/LmRldGFpbFRocmVzaG9sZCA/PyAwLjE1LAogICAgICAgIG9wdGlvbnM/LmNhc2VJbnNlbnNpdGl2ZSA/PyBmYWxzZQogICAgICApOwogICAgfSBlbHNlIHsKICAgICAgcmVzdWx0ID0gZXhwb3J0cy5Eb2N1bWVudENvbXBhcmVyLkNvbXBhcmVEb2N1bWVudHMoCiAgICAgICAgcmVxdWVzdC5vcmlnaW5hbEJ5dGVzLAogICAgICAgIHJlcXVlc3QubW9kaWZpZWRCeXRlcywKICAgICAgICBvcHRpb25zPy5hdXRob3JOYW1lID8/ICJEb2N4b2R1cyIKICAgICAgKTsKICAgIH0KICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKSB7CiAgICAgIHJldHVybiB7IGVycm9yOiAiQ29tcGFyaXNvbiByZXR1cm5lZCBlbXB0eSByZXN1bHQiIH07CiAgICB9CiAgICByZXR1cm4geyBkb2N1bWVudEJ5dGVzOiByZXN1bHQgfTsKICB9IGNhdGNoIChlcnJvcikgewogICAgcmV0dXJuIHsgZXJyb3I6IFN0cmluZyhlcnJvcikgfTsKICB9Cn0KZnVuY3Rpb24gaGFuZGxlQ29tcGFyZVRvSHRtbChyZXF1ZXN0KSB7CiAgY29uc3QgZXhwb3J0cyA9IGVuc3VyZUluaXRpYWxpemVkKCk7CiAgY29uc3Qgb3B0aW9ucyA9IHJlcXVlc3Qub3B0aW9uczsKICB0cnkgewogICAgY29uc3QgcmVuZGVyVHJhY2tlZENoYW5nZXMgPSBvcHRpb25zPy5yZW5kZXJUcmFja2VkQ2hhbmdlcyA/PyB0cnVlOwogICAgY29uc3QgcmVzdWx0ID0gZXhwb3J0cy5Eb2N1bWVudENvbXBhcmVyLkNvbXBhcmVEb2N1bWVudHNUb0h0bWxXaXRoT3B0aW9ucygKICAgICAgcmVxdWVzdC5vcmlnaW5hbEJ5dGVzLAogICAgICByZXF1ZXN0Lm1vZGlmaWVkQnl0ZXMsCiAgICAgIG9wdGlvbnM/LmF1dGhvck5hbWUgPz8gIkRvY3hvZHVzIiwKICAgICAgcmVuZGVyVHJhY2tlZENoYW5nZXMKICAgICk7CiAgICBpZiAoaXNFcnJvclJlc3BvbnNlKHJlc3VsdCkpIHsKICAgICAgcmV0dXJuIHBhcnNlRXJyb3IocmVzdWx0KTsKICAgIH0KICAgIHJldHVybiB7IGh0bWw6IHJlc3VsdCB9OwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICByZXR1cm4geyBlcnJvcjogU3RyaW5nKGVycm9yKSB9OwogIH0KfQpmdW5jdGlvbiBoYW5kbGVHZXRSZXZpc2lvbnMocmVxdWVzdCkgewogIGNvbnN0IGV4cG9ydHMgPSBlbnN1cmVJbml0aWFsaXplZCgpOwogIGNvbnN0IG9wdGlvbnMgPSByZXF1ZXN0Lm9wdGlvbnM7CiAgdHJ5IHsKICAgIGNvbnN0IGRldGVjdE1vdmVzID0gb3B0aW9ucz8uZGV0ZWN0TW92ZXMgPz8gdHJ1ZTsKICAgIGNvbnN0IG1vdmVTaW1pbGFyaXR5VGhyZXNob2xkID0gb3B0aW9ucz8ubW92ZVNpbWlsYXJpdHlUaHJlc2hvbGQgPz8gMC44OwogICAgY29uc3QgbW92ZU1pbmltdW1Xb3JkQ291bnQgPSBvcHRpb25zPy5tb3ZlTWluaW11bVdvcmRDb3VudCA/PyAzOwogICAgY29uc3QgY2FzZUluc2Vuc2l0aXZlID0gb3B0aW9ucz8uY2FzZUluc2Vuc2l0aXZlID8/IGZhbHNlOwogICAgY29uc3QgcmVzdWx0ID0gZXhwb3J0cy5Eb2N1bWVudENvbXBhcmVyLkdldFJldmlzaW9uc0pzb25XaXRoT3B0aW9ucygKICAgICAgcmVxdWVzdC5kb2N1bWVudEJ5dGVzLAogICAgICBkZXRlY3RNb3ZlcywKICAgICAgbW92ZVNpbWlsYXJpdHlUaHJlc2hvbGQsCiAgICAgIG1vdmVNaW5pbXVtV29yZENvdW50LAogICAgICBjYXNlSW5zZW5zaXRpdmUKICAgICk7CiAgICBpZiAoaXNFcnJvclJlc3BvbnNlKHJlc3VsdCkpIHsKICAgICAgcmV0dXJuIHBhcnNlRXJyb3IocmVzdWx0KTsKICAgIH0KICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmVzdWx0KTsKICAgIGNvbnN0IHJldmlzaW9ucyA9IChwYXJzZWQuUmV2aXNpb25zIHx8IHBhcnNlZC5yZXZpc2lvbnMgfHwgW10pLm1hcCgKICAgICAgKHIpID0+ICh7CiAgICAgICAgYXV0aG9yOiByLkF1dGhvciB8fCByLmF1dGhvciwKICAgICAgICBkYXRlOiByLkRhdGUgfHwgci5kYXRlLAogICAgICAgIHJldmlzaW9uVHlwZTogci5SZXZpc2lvblR5cGUgfHwgci5yZXZpc2lvblR5cGUsCiAgICAgICAgdGV4dDogci5UZXh0IHx8IHIudGV4dCwKICAgICAgICBtb3ZlR3JvdXBJZDogci5Nb3ZlR3JvdXBJZCA/PyByLm1vdmVHcm91cElkLAogICAgICAgIGlzTW92ZVNvdXJjZTogci5Jc01vdmVTb3VyY2UgPz8gci5pc01vdmVTb3VyY2UsCiAgICAgICAgZm9ybWF0Q2hhbmdlOiByLkZvcm1hdENoYW5nZSB8fCByLmZvcm1hdENoYW5nZSA/IHsKICAgICAgICAgIG9sZFByb3BlcnRpZXM6IHIuRm9ybWF0Q2hhbmdlPy5PbGRQcm9wZXJ0aWVzIHx8IHIuZm9ybWF0Q2hhbmdlPy5vbGRQcm9wZXJ0aWVzLAogICAgICAgICAgbmV3UHJvcGVydGllczogci5Gb3JtYXRDaGFuZ2U/Lk5ld1Byb3BlcnRpZXMgfHwgci5mb3JtYXRDaGFuZ2U/Lm5ld1Byb3BlcnRpZXMsCiAgICAgICAgICBjaGFuZ2VkUHJvcGVydHlOYW1lczogci5Gb3JtYXRDaGFuZ2U/LkNoYW5nZWRQcm9wZXJ0eU5hbWVzIHx8IHIuZm9ybWF0Q2hhbmdlPy5jaGFuZ2VkUHJvcGVydHlOYW1lcwogICAgICAgIH0gOiB2b2lkIDAKICAgICAgfSkKICAgICk7CiAgICByZXR1cm4geyByZXZpc2lvbnMgfTsKICB9IGNhdGNoIChlcnJvcikgewogICAgcmV0dXJuIHsgZXJyb3I6IFN0cmluZyhlcnJvcikgfTsKICB9Cn0KZnVuY3Rpb24gaGFuZGxlR2V0RG9jdW1lbnRNZXRhZGF0YShyZXF1ZXN0KSB7CiAgY29uc3QgZXhwb3J0cyA9IGVuc3VyZUluaXRpYWxpemVkKCk7CiAgdHJ5IHsKICAgIGNvbnN0IHJlc3VsdCA9IGV4cG9ydHMuRG9jdW1lbnRDb252ZXJ0ZXIuR2V0RG9jdW1lbnRNZXRhZGF0YSgKICAgICAgcmVxdWVzdC5kb2N1bWVudEJ5dGVzCiAgICApOwogICAgaWYgKGlzRXJyb3JSZXNwb25zZShyZXN1bHQpKSB7CiAgICAgIHJldHVybiBwYXJzZUVycm9yKHJlc3VsdCk7CiAgICB9CiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJlc3VsdCk7CiAgICBjb25zdCBjb252ZXJ0U2VjdGlvbiA9IChzKSA9PiAoewogICAgICBzZWN0aW9uSW5kZXg6IHMuU2VjdGlvbkluZGV4ID8/IHMuc2VjdGlvbkluZGV4LAogICAgICBwYWdlV2lkdGhQdDogcy5QYWdlV2lkdGhQdCA/PyBzLnBhZ2VXaWR0aFB0LAogICAgICBwYWdlSGVpZ2h0UHQ6IHMuUGFnZUhlaWdodFB0ID8/IHMucGFnZUhlaWdodFB0LAogICAgICBtYXJnaW5Ub3BQdDogcy5NYXJnaW5Ub3BQdCA/PyBzLm1hcmdpblRvcFB0LAogICAgICBtYXJnaW5SaWdodFB0OiBzLk1hcmdpblJpZ2h0UHQgPz8gcy5tYXJnaW5SaWdodFB0LAogICAgICBtYXJnaW5Cb3R0b21QdDogcy5NYXJnaW5Cb3R0b21QdCA/PyBzLm1hcmdpbkJvdHRvbVB0LAogICAgICBtYXJnaW5MZWZ0UHQ6IHMuTWFyZ2luTGVmdFB0ID8/IHMubWFyZ2luTGVmdFB0LAogICAgICBjb250ZW50V2lkdGhQdDogcy5Db250ZW50V2lkdGhQdCA/PyBzLmNvbnRlbnRXaWR0aFB0LAogICAgICBjb250ZW50SGVpZ2h0UHQ6IHMuQ29udGVudEhlaWdodFB0ID8/IHMuY29udGVudEhlaWdodFB0LAogICAgICBoZWFkZXJQdDogcy5IZWFkZXJQdCA/PyBzLmhlYWRlclB0LAogICAgICBmb290ZXJQdDogcy5Gb290ZXJQdCA/PyBzLmZvb3RlclB0LAogICAgICBwYXJhZ3JhcGhDb3VudDogcy5QYXJhZ3JhcGhDb3VudCA/PyBzLnBhcmFncmFwaENvdW50LAogICAgICB0YWJsZUNvdW50OiBzLlRhYmxlQ291bnQgPz8gcy50YWJsZUNvdW50LAogICAgICBoYXNIZWFkZXI6IHMuSGFzSGVhZGVyID8/IHMuaGFzSGVhZGVyLAogICAgICBoYXNGb290ZXI6IHMuSGFzRm9vdGVyID8/IHMuaGFzRm9vdGVyLAogICAgICBoYXNGaXJzdFBhZ2VIZWFkZXI6IHMuSGFzRmlyc3RQYWdlSGVhZGVyID8/IHMuaGFzRmlyc3RQYWdlSGVhZGVyLAogICAgICBoYXNGaXJzdFBhZ2VGb290ZXI6IHMuSGFzRmlyc3RQYWdlRm9vdGVyID8/IHMuaGFzRmlyc3RQYWdlRm9vdGVyLAogICAgICBoYXNFdmVuUGFnZUhlYWRlcjogcy5IYXNFdmVuUGFnZUhlYWRlciA/PyBzLmhhc0V2ZW5QYWdlSGVhZGVyLAogICAgICBoYXNFdmVuUGFnZUZvb3Rlcjogcy5IYXNFdmVuUGFnZUZvb3RlciA/PyBzLmhhc0V2ZW5QYWdlRm9vdGVyLAogICAgICBzdGFydFBhcmFncmFwaEluZGV4OiBzLlN0YXJ0UGFyYWdyYXBoSW5kZXggPz8gcy5zdGFydFBhcmFncmFwaEluZGV4LAogICAgICBlbmRQYXJhZ3JhcGhJbmRleDogcy5FbmRQYXJhZ3JhcGhJbmRleCA/PyBzLmVuZFBhcmFncmFwaEluZGV4LAogICAgICBzdGFydFRhYmxlSW5kZXg6IHMuU3RhcnRUYWJsZUluZGV4ID8/IHMuc3RhcnRUYWJsZUluZGV4LAogICAgICBlbmRUYWJsZUluZGV4OiBzLkVuZFRhYmxlSW5kZXggPz8gcy5lbmRUYWJsZUluZGV4CiAgICB9KTsKICAgIGNvbnN0IG1ldGFkYXRhID0gewogICAgICBzZWN0aW9uczogKHBhcnNlZC5TZWN0aW9ucyB8fCBwYXJzZWQuc2VjdGlvbnMgfHwgW10pLm1hcChjb252ZXJ0U2VjdGlvbiksCiAgICAgIHRvdGFsUGFyYWdyYXBoczogcGFyc2VkLlRvdGFsUGFyYWdyYXBocyA/PyBwYXJzZWQudG90YWxQYXJhZ3JhcGhzLAogICAgICB0b3RhbFRhYmxlczogcGFyc2VkLlRvdGFsVGFibGVzID8/IHBhcnNlZC50b3RhbFRhYmxlcywKICAgICAgaGFzRm9vdG5vdGVzOiBwYXJzZWQuSGFzRm9vdG5vdGVzID8/IHBhcnNlZC5oYXNGb290bm90ZXMsCiAgICAgIGhhc0VuZG5vdGVzOiBwYXJzZWQuSGFzRW5kbm90ZXMgPz8gcGFyc2VkLmhhc0VuZG5vdGVzLAogICAgICBoYXNUcmFja2VkQ2hhbmdlczogcGFyc2VkLkhhc1RyYWNrZWRDaGFuZ2VzID8/IHBhcnNlZC5oYXNUcmFja2VkQ2hhbmdlcywKICAgICAgaGFzQ29tbWVudHM6IHBhcnNlZC5IYXNDb21tZW50cyA/PyBwYXJzZWQuaGFzQ29tbWVudHMsCiAgICAgIGVzdGltYXRlZFBhZ2VDb3VudDogcGFyc2VkLkVzdGltYXRlZFBhZ2VDb3VudCA/PyBwYXJzZWQuZXN0aW1hdGVkUGFnZUNvdW50CiAgICB9OwogICAgcmV0dXJuIHsgbWV0YWRhdGEgfTsKICB9IGNhdGNoIChlcnJvcikgewogICAgcmV0dXJuIHsgZXJyb3I6IFN0cmluZyhlcnJvcikgfTsKICB9Cn0KZnVuY3Rpb24gaGFuZGxlR2V0VmVyc2lvbigpIHsKICBjb25zdCBleHBvcnRzID0gZW5zdXJlSW5pdGlhbGl6ZWQoKTsKICB0cnkgewogICAgY29uc3QgcmVzdWx0ID0gZXhwb3J0cy5Eb2N1bWVudENvbnZlcnRlci5HZXRWZXJzaW9uKCk7CiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJlc3VsdCk7CiAgICByZXR1cm4gewogICAgICB2ZXJzaW9uOiB7CiAgICAgICAgbGlicmFyeTogcGFyc2VkLkxpYnJhcnkgfHwgcGFyc2VkLmxpYnJhcnksCiAgICAgICAgZG90bmV0VmVyc2lvbjogcGFyc2VkLkRvdG5ldFZlcnNpb24gfHwgcGFyc2VkLmRvdG5ldFZlcnNpb24sCiAgICAgICAgcGxhdGZvcm06IHBhcnNlZC5QbGF0Zm9ybSB8fCBwYXJzZWQucGxhdGZvcm0KICAgICAgfQogICAgfTsKICB9IGNhdGNoIChlcnJvcikgewogICAgcmV0dXJuIHsgZXJyb3I6IFN0cmluZyhlcnJvcikgfTsKICB9Cn0Kc2VsZi5vbm1lc3NhZ2UgPSBhc3luYyAoZXZlbnQpID0+IHsKICBjb25zdCByZXF1ZXN0ID0gZXZlbnQuZGF0YTsKICB0cnkgewogICAgbGV0IHJlc3BvbnNlOwogICAgc3dpdGNoIChyZXF1ZXN0LnR5cGUpIHsKICAgICAgY2FzZSAiaW5pdCI6IHsKICAgICAgICBjb25zdCBpbml0UmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGF3YWl0IGluaXRpYWxpemVXYXNtKGluaXRSZXF1ZXN0Lndhc21CYXNlUGF0aCk7CiAgICAgICAgICByZXNwb25zZSA9IHsKICAgICAgICAgICAgaWQ6IHJlcXVlc3QuaWQsCiAgICAgICAgICAgIHR5cGU6ICJpbml0IiwKICAgICAgICAgICAgc3VjY2VzczogdHJ1ZQogICAgICAgICAgfTsKICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgcmVzcG9uc2UgPSB7CiAgICAgICAgICAgIGlkOiByZXF1ZXN0LmlkLAogICAgICAgICAgICB0eXBlOiAiaW5pdCIsCiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLAogICAgICAgICAgICBlcnJvcjogU3RyaW5nKGVycm9yKQogICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgY2FzZSAiY29udmVydERvY3hUb0h0bWwiOiB7CiAgICAgICAgY29uc3QgY29udmVydFJlcXVlc3QgPSByZXF1ZXN0OwogICAgICAgIGNvbnN0IHJlc3VsdCA9IGhhbmRsZUNvbnZlcnQoY29udmVydFJlcXVlc3QpOwogICAgICAgIHJlc3BvbnNlID0gewogICAgICAgICAgaWQ6IHJlcXVlc3QuaWQsCiAgICAgICAgICB0eXBlOiAiY29udmVydERvY3hUb0h0bWwiLAogICAgICAgICAgc3VjY2VzczogIXJlc3VsdC5lcnJvciwKICAgICAgICAgIGh0bWw6IHJlc3VsdC5odG1sLAogICAgICAgICAgZXJyb3I6IHJlc3VsdC5lcnJvcgogICAgICAgIH07CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgY2FzZSAiY29tcGFyZURvY3VtZW50cyI6IHsKICAgICAgICBjb25zdCBjb21wYXJlUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgICAgY29uc3QgcmVzdWx0ID0gaGFuZGxlQ29tcGFyZShjb21wYXJlUmVxdWVzdCk7CiAgICAgICAgcmVzcG9uc2UgPSB7CiAgICAgICAgICBpZDogcmVxdWVzdC5pZCwKICAgICAgICAgIHR5cGU6ICJjb21wYXJlRG9jdW1lbnRzIiwKICAgICAgICAgIHN1Y2Nlc3M6ICFyZXN1bHQuZXJyb3IsCiAgICAgICAgICBkb2N1bWVudEJ5dGVzOiByZXN1bHQuZG9jdW1lbnRCeXRlcywKICAgICAgICAgIGVycm9yOiByZXN1bHQuZXJyb3IKICAgICAgICB9OwogICAgICAgIGlmIChyZXN1bHQuZG9jdW1lbnRCeXRlcykgewogICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShyZXNwb25zZSwgeyB0cmFuc2ZlcjogW3Jlc3VsdC5kb2N1bWVudEJ5dGVzLmJ1ZmZlcl0gfSk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGNhc2UgImNvbXBhcmVEb2N1bWVudHNUb0h0bWwiOiB7CiAgICAgICAgY29uc3QgY29tcGFyZVRvSHRtbFJlcXVlc3QgPSByZXF1ZXN0OwogICAgICAgIGNvbnN0IHJlc3VsdCA9IGhhbmRsZUNvbXBhcmVUb0h0bWwoY29tcGFyZVRvSHRtbFJlcXVlc3QpOwogICAgICAgIHJlc3BvbnNlID0gewogICAgICAgICAgaWQ6IHJlcXVlc3QuaWQsCiAgICAgICAgICB0eXBlOiAiY29tcGFyZURvY3VtZW50c1RvSHRtbCIsCiAgICAgICAgICBzdWNjZXNzOiAhcmVzdWx0LmVycm9yLAogICAgICAgICAgaHRtbDogcmVzdWx0Lmh0bWwsCiAgICAgICAgICBlcnJvcjogcmVzdWx0LmVycm9yCiAgICAgICAgfTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICBjYXNlICJnZXRSZXZpc2lvbnMiOiB7CiAgICAgICAgY29uc3QgZ2V0UmV2aXNpb25zUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgICAgY29uc3QgcmVzdWx0ID0gaGFuZGxlR2V0UmV2aXNpb25zKGdldFJldmlzaW9uc1JlcXVlc3QpOwogICAgICAgIHJlc3BvbnNlID0gewogICAgICAgICAgaWQ6IHJlcXVlc3QuaWQsCiAgICAgICAgICB0eXBlOiAiZ2V0UmV2aXNpb25zIiwKICAgICAgICAgIHN1Y2Nlc3M6ICFyZXN1bHQuZXJyb3IsCiAgICAgICAgICByZXZpc2lvbnM6IHJlc3VsdC5yZXZpc2lvbnMsCiAgICAgICAgICBlcnJvcjogcmVzdWx0LmVycm9yCiAgICAgICAgfTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICBjYXNlICJnZXREb2N1bWVudE1ldGFkYXRhIjogewogICAgICAgIGNvbnN0IGdldE1ldGFkYXRhUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgICAgY29uc3QgcmVzdWx0ID0gaGFuZGxlR2V0RG9jdW1lbnRNZXRhZGF0YShnZXRNZXRhZGF0YVJlcXVlc3QpOwogICAgICAgIHJlc3BvbnNlID0gewogICAgICAgICAgaWQ6IHJlcXVlc3QuaWQsCiAgICAgICAgICB0eXBlOiAiZ2V0RG9jdW1lbnRNZXRhZGF0YSIsCiAgICAgICAgICBzdWNjZXNzOiAhcmVzdWx0LmVycm9yLAogICAgICAgICAgbWV0YWRhdGE6IHJlc3VsdC5tZXRhZGF0YSwKICAgICAgICAgIGVycm9yOiByZXN1bHQuZXJyb3IKICAgICAgICB9OwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGNhc2UgImdldFZlcnNpb24iOiB7CiAgICAgICAgY29uc3QgcmVzdWx0ID0gaGFuZGxlR2V0VmVyc2lvbigpOwogICAgICAgIHJlc3BvbnNlID0gewogICAgICAgICAgaWQ6IHJlcXVlc3QuaWQsCiAgICAgICAgICB0eXBlOiAiZ2V0VmVyc2lvbiIsCiAgICAgICAgICBzdWNjZXNzOiAhcmVzdWx0LmVycm9yLAogICAgICAgICAgdmVyc2lvbjogcmVzdWx0LnZlcnNpb24sCiAgICAgICAgICBlcnJvcjogcmVzdWx0LmVycm9yCiAgICAgICAgfTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICBkZWZhdWx0OiB7CiAgICAgICAgY29uc3QgdW5rbm93blJlcXVlc3QgPSByZXF1ZXN0OwogICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoewogICAgICAgICAgaWQ6IHVua25vd25SZXF1ZXN0LmlkLAogICAgICAgICAgdHlwZTogdW5rbm93blJlcXVlc3QudHlwZSwKICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLAogICAgICAgICAgZXJyb3I6IGBVbmtub3duIHJlcXVlc3QgdHlwZTogJHt1bmtub3duUmVxdWVzdC50eXBlfWAKICAgICAgICB9KTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgIH0KICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UpOwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICBzZWxmLnBvc3RNZXNzYWdlKHsKICAgICAgaWQ6IHJlcXVlc3QuaWQsCiAgICAgIHR5cGU6IHJlcXVlc3QudHlwZSwKICAgICAgc3VjY2VzczogZmFsc2UsCiAgICAgIGVycm9yOiBTdHJpbmcoZXJyb3IpCiAgICB9KTsKICB9Cn07CnNlbGYucG9zdE1lc3NhZ2UoeyB0eXBlOiAicmVhZHkiIH0pOwo=",typeof document>"u"?require("url").pathToFileURL(__filename).href:Ie&&Ie.tagName.toUpperCase()==="SCRIPT"&&Ie.src||new URL("react-docxodus-viewer.cjs.js",document.baseURI).href).href,C=new Worker(v,{type:"module"}),A=new Map;let I=!0;C.onmessage=s=>{const i=s.data;if(i.type==="ready")return;const r=A.get(i.id);r&&(A.delete(i.id),i.success?r.resolve(i):r.reject(new Error(i.error||"Unknown error")))},C.onerror=s=>{for(const i of A.values())i.reject(new Error(`Worker error: ${s.message}`));A.clear(),I=!1};function l(s,i){return new Promise((r,b)=>{if(!I){b(new Error("Worker has been terminated"));return}A.set(s.id,{resolve:r,reject:b}),i&&i.length>0?C.postMessage(s,i):C.postMessage(s)})}const h=await l({id:Y(),type:"init",wasmBasePath:o});if(!h.success)throw C.terminate(),new Error(`Failed to initialize worker: ${h.error}`);return{async convertDocxToHtml(s,i){const r=await j(s);return(await l({id:Y(),type:"convertDocxToHtml",documentBytes:r,options:i},[r.buffer])).html},async compareDocuments(s,i,r){const b=await j(s),G=await j(i);return(await l({id:Y(),type:"compareDocuments",originalBytes:b,modifiedBytes:G,options:r},[b.buffer,G.buffer])).documentBytes},async compareDocumentsToHtml(s,i,r){const b=await j(s),G=await j(i);return(await l({id:Y(),type:"compareDocumentsToHtml",originalBytes:b,modifiedBytes:G,options:r},[b.buffer,G.buffer])).html},async getRevisions(s,i){const r=await j(s);return(await l({id:Y(),type:"getRevisions",documentBytes:r,options:i},[r.buffer])).revisions},async getDocumentMetadata(s){const i=await j(s);return(await l({id:Y(),type:"getDocumentMetadata",documentBytes:i},[i.buffer])).metadata},async getVersion(){return(await l({id:Y(),type:"getVersion"})).version},terminate(){I=!1,C.terminate();for(const s of A.values())s.reject(new Error("Worker terminated"));A.clear()},isActive(){return I}}}function fe(){return typeof Worker<"u"}const Je={paginationScale:.8,showPageNumbers:!0,renderFootnotesAndEndnotes:!0,renderHeadersAndFooters:!0,commentMode:"disabled",annotationMode:"disabled",renderTrackedChanges:!1,showDeletedContent:!0,renderMoveOperations:!0,pageTitle:"Document",cssPrefix:"docx-",fabricateClasses:!0,additionalCss:"",commentCssClassPrefix:"comment-",annotationCssClassPrefix:"annot-",renderUnsupportedContentPlaceholders:!0,documentLanguage:""};function on(t){return d.isInsertion(t)?"Inserted":d.isDeletion(t)?"Deleted":d.isMove(t)?t.isMoveSource?"Moved from":"Moved to":d.isFormatChange(t)?"Formatted":String(t.revisionType)}function dn(t){return d.isInsertion(t)?"rdv-revision--insertion":d.isDeletion(t)?"rdv-revision--deletion":d.isMove(t)?"rdv-revision--move":d.isFormatChange(t)?"rdv-revision--format":""}function rn(t){try{return new Date(t).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return t}}function In(t,o=150){return t.length<=o?t:t.substring(0,o)+"..."}function Ce(t){return!(!t||typeof t!="string"||t.includes("<")||t.includes("xmlns")||t.includes("Unid=")||t.length>100)}function He(t){return t.replace(/([A-Z])/g," $1").replace(/^./,o=>o.toUpperCase()).trim()}function Ae(t){return t==="true"?"Yes":t==="false"?"No":t==="single"?"Single":t==="double"?"Double":t}function Cn(t){if(!t.formatChange)return[];const{oldProperties:o,newProperties:v}=t.formatChange,C=[],A=new Set;if(o)for(const[I,l]of Object.entries(o)){if(!Ce(l))continue;A.add(I);const h=v?.[I];C.push({property:He(I),oldValue:Ae(l),newValue:h&&Ce(h)?Ae(h):void 0})}if(v)for(const[I,l]of Object.entries(v))A.has(I)||Ce(l)&&C.push({property:He(I),oldValue:void 0,newValue:Ae(l)});return C}function An({revisions:t}){const[o,v]=g.useState("all"),[C,A]=g.useState(new Set),I=g.useMemo(()=>o==="all"?t:t.filter(s=>{switch(o){case"insertions":return d.isInsertion(s);case"deletions":return d.isDeletion(s);case"moves":return d.isMove(s);case"formatting":return d.isFormatChange(s);default:return!0}}),[t,o]),l=g.useMemo(()=>({total:t.length,insertions:t.filter(d.isInsertion).length,deletions:t.filter(d.isDeletion).length,moves:t.filter(d.isMove).length,formatting:t.filter(d.isFormatChange).length}),[t]),h=s=>{A(i=>{const r=new Set(i);return r.has(s)?r.delete(s):r.add(s),r})};return t.length===0?e.jsx("div",{className:"rdv-revision-panel",children:e.jsxs("div",{className:"rdv-revision-empty",children:[e.jsx("div",{className:"rdv-revision-empty__icon",children:"📝"}),e.jsx("p",{children:"No tracked changes found in this document."})]})}):e.jsxs("div",{className:"rdv-revision-panel",children:[e.jsxs("div",{className:"rdv-revision-header",children:[e.jsxs("div",{className:"rdv-revision-stats",children:[e.jsxs("span",{className:"rdv-revision-stat rdv-revision-stat--total",children:[l.total," change",l.total!==1?"s":""]}),l.insertions>0&&e.jsxs("span",{className:"rdv-revision-stat rdv-revision-stat--insertion",children:["+",l.insertions]}),l.deletions>0&&e.jsxs("span",{className:"rdv-revision-stat rdv-revision-stat--deletion",children:["−",l.deletions]}),l.moves>0&&e.jsxs("span",{className:"rdv-revision-stat rdv-revision-stat--move",children:["↔",l.moves]}),l.formatting>0&&e.jsxs("span",{className:"rdv-revision-stat rdv-revision-stat--format",children:["✎",l.formatting]})]}),e.jsxs("select",{className:"rdv-revision-filter",value:o,onChange:s=>v(s.target.value),children:[e.jsx("option",{value:"all",children:"All Changes"}),e.jsxs("option",{value:"insertions",children:["Insertions (",l.insertions,")"]}),e.jsxs("option",{value:"deletions",children:["Deletions (",l.deletions,")"]}),e.jsxs("option",{value:"moves",children:["Moves (",l.moves,")"]}),e.jsxs("option",{value:"formatting",children:["Formatting (",l.formatting,")"]})]})]}),e.jsx("div",{className:"rdv-revision-list",children:I.map((s,i)=>{const r=C.has(i),b=s.text.length>150,G=d.isFormatChange(s)?Cn(s):[];return e.jsxs("div",{className:`rdv-revision-item ${dn(s)}`,children:[e.jsxs("div",{className:"rdv-revision-item__header",children:[e.jsx("span",{className:"rdv-revision-type",children:on(s)}),d.isMove(s)&&s.moveGroupId!==void 0&&e.jsxs("span",{className:"rdv-revision-move-id",children:["#",s.moveGroupId]}),e.jsx("span",{className:"rdv-revision-author",children:s.author||"Unknown"}),e.jsx("span",{className:"rdv-revision-date",children:rn(s.date)})]}),s.text&&e.jsxs("div",{className:"rdv-revision-item__content",children:[e.jsx("span",{className:"rdv-revision-text",children:r?s.text:In(s.text)}),b&&e.jsx("button",{className:"rdv-revision-expand",onClick:()=>h(i),children:r?"Show less":"Show more"})]}),G.length>0&&e.jsx("div",{className:"rdv-revision-item__format-details",children:G.map((m,M)=>e.jsxs("div",{className:"rdv-format-change",children:[e.jsx("span",{className:"rdv-format-change__property",children:m.property}),e.jsxs("span",{className:"rdv-format-change__values",children:[m.oldValue&&e.jsx("span",{className:"rdv-format-change__old",children:m.oldValue}),m.oldValue&&m.newValue&&e.jsx("span",{className:"rdv-format-change__arrow",children:"→"}),m.newValue&&e.jsx("span",{className:"rdv-format-change__new",children:m.newValue}),!m.oldValue&&m.newValue&&e.jsx("span",{className:"rdv-format-change__added",children:"(added)"}),m.oldValue&&!m.newValue&&e.jsx("span",{className:"rdv-format-change__removed",children:"(removed)"})]})]},M))})]},i)})})]})}const bn=()=>e.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[e.jsx("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e.jsx("polyline",{points:"17 8 12 3 7 8"}),e.jsx("line",{x1:"12",y1:"3",x2:"12",y2:"15"})]});function un(t){switch(t){case"endnote":return d.CommentRenderMode.EndnoteStyle;case"inline":return d.CommentRenderMode.Inline;case"margin":return d.CommentRenderMode.Margin;default:return d.CommentRenderMode.Disabled}}function mn(t){switch(t){case"above":return d.AnnotationLabelMode.Above;case"inline":return d.AnnotationLabelMode.Inline;case"tooltip":return d.AnnotationLabelMode.Tooltip;case"none":return d.AnnotationLabelMode.None;default:return}}function k(t){if(t!=null)return typeof t=="number"?`${t}px`:t}const we=96/72,xe=40,hn=.3,vn=2;function Zn(t,o,v,C,A){const I=C*we,l=A*we,h=(o-xe)/I,s=(v-xe)/l,i=t==="page-width"?h:Math.min(h,s),r=Math.max(hn,Math.min(vn,i));return Math.round(r*100)/100}function pn({file:t,html:o,onFileChange:v,onConversionStart:C,onConversionComplete:A,onError:I,onPageChange:l,onRevisionsExtracted:h,settings:s,defaultSettings:i,defaultZoom:r,onSettingsChange:b,className:G,style:m,toolbar:M="top",showSettingsButton:ze=!0,showRevisionsTab:U=!0,placeholder:Fe="Open a DOCX file to view",wasmBasePath:te,useWorker:V=!0,fitMode:se="manual",toolbarActions:D}){const ce=g.useMemo(()=>{const n={...Je};return r!==void 0&&(n.paginationScale=Math.max(.3,Math.min(2,r))),{...n,...i}},[i,r]),[Ye,be]=g.useState(null),[je,E]=g.useState(null),[ue,me]=g.useState(ce),R=t!==void 0?t:Ye,Z=o!==void 0?o:je,c=g.useMemo(()=>s?{...ce,...s}:ue,[s,ce,ue]),x=Re.useDocxodus(te),[B,he]=g.useState(null),[ke,ve]=g.useState(!1),[Se,ae]=g.useState(!1),[Qe,Ze]=g.useState(null),T=g.useRef(null);g.useEffect(()=>{if(!V||!fe())return;let n=!1;return ae(!0),Ze(null),ln({wasmBasePath:te}).then(a=>{n?a.terminate():(T.current=a,he(a),ve(!0),ae(!1))}).catch(a=>{n||(Ze(a instanceof Error?a:new Error(String(a))),ae(!1))}),()=>{n=!0,T.current&&(T.current.terminate(),T.current=null,he(null),ve(!1))}},[V,te]);const f=V?ke:x.isReady,S=V?Se:x.isLoading,O=V?Qe:x.error,[W,pe]=g.useState(!1),[Ve,_]=g.useState(null),[$,ye]=g.useState(""),[N,ge]=g.useState(1),[y,le]=g.useState(0),[Ke,q]=g.useState(!1),[J,Q]=g.useState("document"),[ie,K]=g.useState([]),[Le,Ge]=g.useState(!1),[X,ee]=g.useState(null),Be=g.useRef(null),ne=g.useRef(null),[Pe,Me]=g.useState(20);g.useEffect(()=>{const n=()=>{const a=Be.current;if(!a)return;const u=getComputedStyle(a).getPropertyValue("--rdv-page-gap").trim(),H=parseFloat(u);Number.isNaN(H)||Me(H)};return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]);const oe=g.useCallback(()=>({commentRenderMode:un(c.commentMode),pageTitle:c.pageTitle,cssPrefix:c.cssPrefix,fabricateClasses:c.fabricateClasses,additionalCss:c.additionalCss||void 0,commentCssClassPrefix:c.commentCssClassPrefix,paginationMode:d.PaginationMode.Paginated,paginationScale:c.paginationScale,renderAnnotations:c.annotationMode!=="disabled",annotationLabelMode:mn(c.annotationMode),annotationCssClassPrefix:c.annotationCssClassPrefix,renderFootnotesAndEndnotes:c.renderFootnotesAndEndnotes,renderHeadersAndFooters:c.renderHeadersAndFooters,renderTrackedChanges:c.renderTrackedChanges,showDeletedContent:c.showDeletedContent,renderMoveOperations:c.renderMoveOperations,renderUnsupportedContentPlaceholders:c.renderUnsupportedContentPlaceholders,documentLanguage:c.documentLanguage||void 0}),[c]),Ue=g.useCallback(async n=>{try{const a=V&&B?await B.getDocumentMetadata(n):await d.getDocumentMetadata(n);ee(a)}catch{ee(null)}},[V,B]),We=g.useCallback(async n=>{if(!(!f||!U)){Ge(!0);try{const a=V&&B?await B.getRevisions(n):await x.getRevisions(n);K(a),h?.(a)}catch{K([])}finally{Ge(!1)}}},[f,V,B,x,U,h]),L=g.useCallback(async n=>{if(f){pe(!0),_(null),K([]),Q("document"),C?.(),V||await new Promise(a=>requestAnimationFrame(()=>requestAnimationFrame(a)));try{const a=V&&B?await B.convertDocxToHtml(n,oe()):await x.convertToHtml(n,oe());o===void 0&&E(a),A?.(a),We(n)}catch(a){const u=a instanceof Error?a:new Error(String(a));_(u),I?.(u)}finally{pe(!1)}}},[f,V,B,x,oe,o,C,A,I,We]);g.useEffect(()=>{f&&R&&!Z&&!W&&o===void 0&&L(R)},[f,R,Z,W,L,o]);const De=async n=>{const a=n.target.files?.[0];a&&(ye(a.name),_(null),ge(1),le(0),ee(null),K([]),Q("document"),t===void 0&&(be(a),E(null)),v?.(a),Ue(a),f&&o===void 0&&await L(a))},Ee=g.useCallback(async()=>{R&&(o===void 0&&E(null),await L(R))},[R,L,o]),Te=()=>{t===void 0&&be(null),o===void 0&&E(null),_(null),ye(""),ge(1),le(0),K([]),Q("document"),ee(null),v?.(null);const n=document.getElementById("rdv-file-input");n&&(n.value="")},p=g.useCallback(n=>{const a={...c,...n};s===void 0&&me(a),b?.(a)},[c,s,b]),Oe=()=>p({paginationScale:Math.min(c.paginationScale+.1,2)}),_e=()=>p({paginationScale:Math.max(c.paginationScale-.1,.3)}),$e=n=>p({paginationScale:Math.max(.3,Math.min(2,n))}),de=g.useRef(c);g.useEffect(()=>{de.current=c}),g.useEffect(()=>{if(se==="manual"||!X||!Z)return;const n=ne.current;if(!n||typeof ResizeObserver>"u")return;const a=X.sections[0],u=a?.pageWidthPt??612,H=a?.pageHeightPt??792,z=()=>{const P=Zn(se,n.clientWidth,n.clientHeight,u,H);if(Math.abs(de.current.paginationScale-P)<.005)return;const F={...de.current,paginationScale:P};s===void 0&&me(F),b?.(F)};z();const w=new ResizeObserver(z);return w.observe(n),()=>w.disconnect()},[se,X,Z,s,b]);const re=n=>{const a=ne.current;if(!a||n<1||n>y)return;const u=a.querySelector(`[data-page-number="${n}"]`);u&&u.scrollIntoView({behavior:"smooth",block:"start"})},qe=()=>N>1&&re(N-1),en=()=>N<y&&re(N+1),nn=n=>{ge(n),l?.(n,y)};g.useEffect(()=>{const n=ne.current;if(!n)return;const a=u=>{const z=u.target.closest('a[href^="#"]');if(!z)return;const w=z.getAttribute("href");if(!w||!w.startsWith("#"))return;u.preventDefault();const P=w.substring(1),F=n.querySelector(`[id="${P}"], [name="${P}"]`);F&&(F.scrollIntoView({behavior:"smooth",block:"center"}),F.classList.add("rdv-footnote-highlight"),setTimeout(()=>F.classList.remove("rdv-footnote-highlight"),2e3))};return n.addEventListener("click",a),()=>n.removeEventListener("click",a)},[Z]),g.useEffect(()=>{y>0&&l?.(N,y)},[y,N,l]);const Ne=W||S,tn=()=>e.jsx("div",{className:"rdv-settings-overlay",onClick:()=>q(!1),children:e.jsxs("div",{className:"rdv-settings-modal",onClick:n=>n.stopPropagation(),children:[e.jsxs("div",{className:"rdv-settings-header",children:[e.jsx("h3",{children:"Viewer Settings"}),e.jsx("button",{className:"rdv-settings-close",onClick:()=>q(!1),children:"×"})]}),e.jsxs("div",{className:"rdv-settings-body",children:[e.jsxs("div",{className:"rdv-settings-section",children:[e.jsx("h4",{children:"Display Options"}),e.jsxs("label",{className:"rdv-settings-checkbox",children:[e.jsx("input",{type:"checkbox",checked:c.renderFootnotesAndEndnotes,onChange:n=>p({renderFootnotesAndEndnotes:n.target.checked})}),e.jsx("span",{children:"Show footnotes and endnotes"})]}),e.jsxs("label",{className:"rdv-settings-checkbox",children:[e.jsx("input",{type:"checkbox",checked:c.renderHeadersAndFooters,onChange:n=>p({renderHeadersAndFooters:n.target.checked})}),e.jsx("span",{children:"Show headers and footers"})]}),e.jsxs("label",{className:"rdv-settings-checkbox",children:[e.jsx("input",{type:"checkbox",checked:c.showPageNumbers,onChange:n=>p({showPageNumbers:n.target.checked})}),e.jsx("span",{children:"Show page numbers"})]})]}),e.jsxs("div",{className:"rdv-settings-section",children:[e.jsx("h4",{children:"Comment Rendering"}),e.jsx("div",{className:"rdv-settings-radio-group",children:["disabled","endnote","inline","margin"].map(n=>e.jsxs("label",{className:"rdv-settings-radio",children:[e.jsx("input",{type:"radio",name:"commentMode",checked:c.commentMode===n,onChange:()=>p({commentMode:n})}),e.jsxs("span",{children:[n.charAt(0).toUpperCase()+n.slice(1),n==="endnote"?"s":""]})]},n))})]}),e.jsxs("div",{className:"rdv-settings-section",children:[e.jsx("h4",{children:"Annotation Rendering"}),e.jsx("div",{className:"rdv-settings-radio-group",children:["disabled","above","inline","tooltip","none"].map(n=>e.jsxs("label",{className:"rdv-settings-radio",children:[e.jsx("input",{type:"radio",name:"annotationMode",checked:c.annotationMode===n,onChange:()=>p({annotationMode:n})}),e.jsx("span",{children:n==="none"?"Highlight Only":n.charAt(0).toUpperCase()+n.slice(1)})]},n))})]}),e.jsxs("div",{className:"rdv-settings-section",children:[e.jsx("h4",{children:"Tracked Changes"}),e.jsxs("label",{className:"rdv-settings-checkbox",children:[e.jsx("input",{type:"checkbox",checked:c.renderTrackedChanges,onChange:n=>p({renderTrackedChanges:n.target.checked})}),e.jsx("span",{children:"Show tracked changes"})]}),c.renderTrackedChanges&&e.jsxs("div",{className:"rdv-settings-subsection",children:[e.jsxs("label",{className:"rdv-settings-checkbox",children:[e.jsx("input",{type:"checkbox",checked:c.showDeletedContent,onChange:n=>p({showDeletedContent:n.target.checked})}),e.jsx("span",{children:"Show deleted content"})]}),e.jsxs("label",{className:"rdv-settings-checkbox",children:[e.jsx("input",{type:"checkbox",checked:c.renderMoveOperations,onChange:n=>p({renderMoveOperations:n.target.checked})}),e.jsx("span",{children:"Distinguish move operations"})]})]})]}),e.jsxs("div",{className:"rdv-settings-section",children:[e.jsx("h4",{children:"Advanced"}),e.jsxs("label",{className:"rdv-settings-checkbox",children:[e.jsx("input",{type:"checkbox",checked:c.renderUnsupportedContentPlaceholders,onChange:n=>p({renderUnsupportedContentPlaceholders:n.target.checked})}),e.jsx("span",{children:"Show placeholders for unsupported content"})]}),e.jsx("p",{className:"rdv-settings-hint",children:"Display visual indicators for WMF/EMF images, math equations, form fields, and other unsupported elements"}),e.jsxs("label",{className:"rdv-settings-input-label",children:[e.jsx("span",{children:"Document language override"}),e.jsx("input",{type:"text",className:"rdv-settings-text-input",value:c.documentLanguage,onChange:n=>p({documentLanguage:n.target.value}),placeholder:"Auto-detect (e.g., en-US, fr-FR)"})]})]})]}),e.jsx("div",{className:"rdv-settings-footer",children:e.jsx("button",{className:"rdv-settings-apply",onClick:()=>{Ee(),q(!1)},children:"Apply & Close"})})]})}),sn=ie.length>0,cn=n=>{const u=["rdv-toolbar-btn","rdv-toolbar-icon-btn",n.variant==="primary"?"rdv-toolbar-icon-btn--primary":"",n.className].filter(Boolean).join(" ");return e.jsx("button",{type:"button",className:u,onClick:n.onClick,disabled:n.disabled,title:n.label,"aria-label":n.label,children:n.icon},n.key)},Xe=()=>e.jsxs("div",{className:"rdv-toolbar",children:[e.jsxs("div",{className:"rdv-toolbar-left",children:[e.jsx("label",{htmlFor:"rdv-file-input",className:"rdv-toolbar-btn rdv-toolbar-icon-btn rdv-toolbar-open-btn",title:"Open Document","aria-label":"Open Document",children:e.jsx(bn,{})}),e.jsx("input",{id:"rdv-file-input",type:"file",accept:".docx",onChange:De,disabled:Ne,className:"rdv-file-input"}),$&&e.jsx("span",{className:"rdv-toolbar-filename",title:$,children:$}),$&&e.jsx("button",{className:"rdv-toolbar-btn rdv-toolbar-icon-btn rdv-toolbar-clear",onClick:Te,disabled:Ne,title:"Clear Document","aria-label":"Clear Document",children:"×"}),U&&sn&&Z&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"rdv-toolbar-separator"}),e.jsxs("div",{className:"rdv-view-tabs",children:[e.jsx("button",{className:`rdv-view-tab ${J==="document"?"rdv-view-tab--active":""}`,onClick:()=>Q("document"),title:"View Document",children:"Document"}),e.jsxs("button",{className:`rdv-view-tab ${J==="revisions"?"rdv-view-tab--active":""}`,onClick:()=>Q("revisions"),title:"View Tracked Changes",children:["Changes (",ie.length,")"]})]})]}),U&&Le&&e.jsx("span",{className:"rdv-extracting-indicator",title:"Extracting tracked changes...",children:"..."})]}),e.jsxs("div",{className:"rdv-toolbar-right",children:[Z&&y>0&&J==="document"&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"rdv-toolbar-btn rdv-toolbar-icon-btn",onClick:qe,disabled:N<=1,title:"Previous Page","aria-label":"Previous Page",children:"◀"}),e.jsxs("div",{className:"rdv-page-input-group",children:[e.jsx("input",{type:"number",className:"rdv-page-input",value:N,min:1,max:y,onChange:n=>{const a=parseInt(n.target.value);isNaN(a)||re(a)}}),e.jsxs("span",{className:"rdv-page-total",children:["/ ",y]})]}),e.jsx("button",{className:"rdv-toolbar-btn rdv-toolbar-icon-btn",onClick:en,disabled:N>=y,title:"Next Page","aria-label":"Next Page",children:"▶"}),e.jsx("div",{className:"rdv-toolbar-separator"}),e.jsxs("div",{className:"rdv-zoom-group",children:[e.jsx("button",{className:"rdv-toolbar-btn rdv-toolbar-icon-btn rdv-zoom-btn",onClick:_e,disabled:c.paginationScale<=.3,title:"Zoom Out","aria-label":"Zoom Out",children:"−"}),e.jsxs("select",{className:"rdv-zoom-select",value:c.paginationScale,onChange:n=>$e(parseFloat(n.target.value)),"aria-label":"Zoom level",children:[e.jsx("option",{value:"0.5",children:"50%"}),e.jsx("option",{value:"0.75",children:"75%"}),e.jsx("option",{value:"0.8",children:"80%"}),e.jsx("option",{value:"0.9",children:"90%"}),e.jsx("option",{value:"1",children:"100%"}),e.jsx("option",{value:"1.25",children:"125%"}),e.jsx("option",{value:"1.5",children:"150%"}),e.jsx("option",{value:"2",children:"200%"})]}),e.jsx("button",{className:"rdv-toolbar-btn rdv-toolbar-icon-btn rdv-zoom-btn",onClick:Oe,disabled:c.paginationScale>=2,title:"Zoom In","aria-label":"Zoom In",children:"+"})]})]}),D&&D.length>0&&e.jsxs(e.Fragment,{children:[Z&&y>0&&J==="document"&&e.jsx("div",{className:"rdv-toolbar-separator"}),D.map(cn)]}),ze&&e.jsxs(e.Fragment,{children:[(D?.length||Z&&y>0&&J==="document")&&e.jsx("div",{className:"rdv-toolbar-separator"}),e.jsx("button",{className:"rdv-toolbar-btn rdv-toolbar-icon-btn rdv-toolbar-settings",onClick:()=>q(!0),title:"Settings","aria-label":"Settings",children:"⚙"})]})]})]}),an=["rdv-viewer",G].filter(Boolean).join(" ");return e.jsxs("div",{ref:Be,className:an,style:m,children:[M==="top"&&e.jsx(Xe,{}),e.jsxs("div",{className:"rdv-content",children:[O&&e.jsx("div",{className:"rdv-message rdv-message--error",children:e.jsxs("p",{children:["Failed to initialize: ",O.message]})}),!O&&(S||W)&&(X&&W?e.jsx("div",{className:"rdv-pages rdv-pages--loading",style:{...c.stableWidth&&{"--rdv-stable-width":k(c.stableWidth)},...c.stableHeight&&{minHeight:k(c.stableHeight)}},children:e.jsx("div",{className:"rdv-page-placeholders",style:{backgroundColor:"#525659"},children:Array.from({length:X.estimatedPageCount||1}).map((n,a)=>{const u=X.sections[Math.min(a,X.sections.length-1)],H=c.paginationScale,z=Math.round((u?.pageWidthPt||612)*(96/72)*H),w=Math.round((u?.pageHeightPt||792)*(96/72)*H);return e.jsxs("div",{className:"rdv-page-placeholder",style:{width:`${z}px`,height:`${w}px`},children:[e.jsx("div",{className:"rdv-page-placeholder__shimmer"}),a===0&&e.jsxs("div",{className:"rdv-page-placeholder__info",children:[e.jsx("div",{className:"rdv-spinner rdv-spinner--small"}),e.jsx("span",{children:"Converting document..."}),e.jsxs("span",{className:"rdv-page-placeholder__count",children:["~",X.estimatedPageCount," page",X.estimatedPageCount!==1?"s":""]})]}),e.jsx("div",{className:"rdv-page-placeholder__number",children:a+1})]},a)})})}):e.jsxs("div",{className:"rdv-message",children:[e.jsx("div",{className:"rdv-spinner"}),e.jsx("p",{children:S&&R?"Loading engine & preparing document...":S?"Loading document engine...":"Processing document..."})]})),!S&&!O&&!Z&&!W&&!R&&e.jsxs("div",{className:"rdv-message",style:{...c.stableWidth&&{width:k(c.stableWidth),maxWidth:"100%"},...c.stableHeight&&{minHeight:k(c.stableHeight)}},children:[e.jsx("div",{className:"rdv-message__icon",children:"📄"}),e.jsx("p",{children:Fe})]}),Ve&&!W&&e.jsx("div",{className:"rdv-message rdv-message--error",children:e.jsxs("p",{children:["Error: ",Ve.message]})}),J==="document"&&Z&&!W&&e.jsx("div",{ref:ne,className:"rdv-pages",style:{...c.stableWidth&&{"--rdv-stable-width":k(c.stableWidth)},...c.stableHeight&&{minHeight:k(c.stableHeight)}},children:e.jsx(Re.PaginatedDocument,{html:Z,scale:c.paginationScale,showPageNumbers:c.showPageNumbers,pageGap:Pe,backgroundColor:"#525659",className:"rdv-paginated-document",onPaginationComplete:n=>{le(n.totalPages)},onPageVisible:nn})}),J==="revisions"&&Z&&!W&&e.jsx(An,{revisions:ie})]}),M==="bottom"&&e.jsx(Xe,{}),Ke&&e.jsx(tn,{})]})}Object.defineProperty(exports,"RevisionType",{enumerable:!0,get:()=>d.RevisionType});Object.defineProperty(exports,"isDeletion",{enumerable:!0,get:()=>d.isDeletion});Object.defineProperty(exports,"isFormatChange",{enumerable:!0,get:()=>d.isFormatChange});Object.defineProperty(exports,"isInsertion",{enumerable:!0,get:()=>d.isInsertion});Object.defineProperty(exports,"isMove",{enumerable:!0,get:()=>d.isMove});exports.DEFAULT_SETTINGS=Je;exports.DocumentViewer=pn;exports.isWorkerSupported=fe;
|
|
2
2
|
//# sourceMappingURL=react-docxodus-viewer.cjs.js.map
|