@docx-editor.dev/editor-api 0.0.1-placeholder → 2.0.0
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/LICENSE.md +121 -0
- package/README.md +150 -2
- package/THIRD_PARTY_NOTICES.md +22 -0
- package/dist/browser.d.mts +86 -0
- package/dist/browser.d.ts +86 -0
- package/dist/browser.js +1 -0
- package/dist/browser.mjs +1 -0
- package/dist/index.d.mts +157 -0
- package/dist/index.d.ts +157 -0
- package/dist/index.js +1 -0
- package/dist/index.mjs +1 -0
- package/dist/server-C96AzKaT.d.mts +1965 -0
- package/dist/server-C96AzKaT.d.ts +1965 -0
- package/package.json +67 -4
package/LICENSE.md
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# EigenPal Pro Evaluation License 1.0
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 EigenPal, Inc. All rights reserved.
|
|
4
|
+
|
|
5
|
+
By copying, modifying, or using the Software, you agree to these terms.
|
|
6
|
+
|
|
7
|
+
## 1. Covered Software
|
|
8
|
+
|
|
9
|
+
“Software” means all source code, object code, documentation, assets, and other
|
|
10
|
+
materials contained in the “packages/editor-api/” directory of the EigenPal DOCX
|
|
11
|
+
Editor repository, except for any material that expressly states that it is
|
|
12
|
+
subject to a different license.
|
|
13
|
+
|
|
14
|
+
## 2. Evaluation Permission; Modifications
|
|
15
|
+
|
|
16
|
+
Subject to these terms, EigenPal, Inc. grants you a limited, non-exclusive,
|
|
17
|
+
non-transferable, non-sublicensable, royalty-free license to:
|
|
18
|
+
|
|
19
|
+
1. view, clone, and copy the Software;
|
|
20
|
+
2. run the Software internally in a non-production environment solely to
|
|
21
|
+
evaluate its suitability for your intended application; and
|
|
22
|
+
3. modify the Software solely as reasonably necessary for that internal,
|
|
23
|
+
non-production evaluation.
|
|
24
|
+
|
|
25
|
+
For any such modification, the following applies:
|
|
26
|
+
|
|
27
|
+
You may keep any modification to yourself. If you do not disclose it to EigenPal, Inc. or to anyone else, it remains yours
|
|
28
|
+
If you disclose a modification to EigenPal, Inc. or to any third party, in any form, you assign all right, title, and interest in it to EigenPal, Inc. at the moment of disclosure. The same applies to any feedback you give EigenPal, Inc. You will promptly send EigenPal, Inc. the source code of any modification you disclose, and will sign any document needed to record the assignment.
|
|
29
|
+
Disclosing a modification to a third party grants that third party no rights in it or in the Software. You will not license or purport to license any modification to anyone.
|
|
30
|
+
You may continue using an assigned modification for the internal, non-production evaluation permitted by Section 2 for as long as this license is in effect. EigenPal, Inc. is not obliged to use or support any modification or feedback, and owes you nothing for it.
|
|
31
|
+
You confirm that any modification or feedback you disclose is yours to assign and is not subject to any license that would impose obligations on EigenPal, Inc. or grant rights to any third party.
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
No other rights are granted.
|
|
35
|
+
|
|
36
|
+
## 3. No Production Use
|
|
37
|
+
|
|
38
|
+
You may not use the Software for Production Use.
|
|
39
|
+
|
|
40
|
+
“Production Use” means any use of the Software:
|
|
41
|
+
|
|
42
|
+
1. in a live, operational, or customer-facing environment;
|
|
43
|
+
2. to provide, operate, support, or enhance a product or service for another
|
|
44
|
+
person or organization;
|
|
45
|
+
3. to process live, customer, or business-operational data; or
|
|
46
|
+
4. as part of your ordinary internal business operations, other than evaluation
|
|
47
|
+
and testing.
|
|
48
|
+
|
|
49
|
+
For the avoidance of doubt, Production Use includes embedding the Software in a product made available to
|
|
50
|
+
others, offering the Software through a hosted or managed service, and using it
|
|
51
|
+
in a customer pilot or paid proof of concept.
|
|
52
|
+
|
|
53
|
+
## 4. No Distribution or Sublicensing
|
|
54
|
+
|
|
55
|
+
You may not sell, sublicense, distribute, publish, transfer, or otherwise make
|
|
56
|
+
the Software or modifications to the Software available to any third party.
|
|
57
|
+
|
|
58
|
+
You may allow your employees and contractors to access the Software solely for
|
|
59
|
+
your evaluation, provided they are bound by restrictions at least as protective
|
|
60
|
+
as these terms. You are responsible for their compliance.
|
|
61
|
+
|
|
62
|
+
## 5. Commercial Rights
|
|
63
|
+
|
|
64
|
+
Production Use and any rights not expressly granted by this license require a
|
|
65
|
+
separate written commercial agreement signed by EigenPal, Inc.
|
|
66
|
+
|
|
67
|
+
Commercial licenses are available by contacting licensing@eigenpal.com.
|
|
68
|
+
|
|
69
|
+
Access to the Software, correspondence with EigenPal, Inc., or payment of an
|
|
70
|
+
invoice does not by itself grant production or commercial rights unless those
|
|
71
|
+
rights are set out in a written agreement signed by EigenPal, Inc.
|
|
72
|
+
|
|
73
|
+
## 6. Ownership
|
|
74
|
+
|
|
75
|
+
EigenPal, Inc. and its licensors retain all rights, title, and interest in the
|
|
76
|
+
Software. This license does not transfer ownership or grant any rights by
|
|
77
|
+
implication.
|
|
78
|
+
|
|
79
|
+
Modifying the Software does not grant you the right to use the Software or those
|
|
80
|
+
modifications in production.
|
|
81
|
+
|
|
82
|
+
## 7. Termination
|
|
83
|
+
|
|
84
|
+
Your rights under this license terminate automatically if you breach these
|
|
85
|
+
terms or if EigenPal terminates this license.
|
|
86
|
+
|
|
87
|
+
Following termination, you must stop using the Software and delete your copies
|
|
88
|
+
and modifications, except for copies that you are legally required to retain.
|
|
89
|
+
EigenPal, Inc. may reinstate your rights in writing.
|
|
90
|
+
|
|
91
|
+
## 8. No Warranty
|
|
92
|
+
|
|
93
|
+
TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED “AS IS” AND
|
|
94
|
+
WITHOUT WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, OR STATUTORY,
|
|
95
|
+
INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
|
96
|
+
TITLE, AND NON-INFRINGEMENT.
|
|
97
|
+
|
|
98
|
+
## 9. Limitation of Liability
|
|
99
|
+
|
|
100
|
+
TO THE MAXIMUM EXTENT PERMITTED BY LAW, EIGENPAL, INC. AND ITS LICENSORS WILL NOT BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES, OR FOR ANY LOSS OF DATA, REVENUE, PROFITS, OR BUSINESS, ARISING FROM OR RELATING TO THE SOFTWARE OR THIS LICENSE. TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE TOTAL AGGREGATE LIABILITY OF EIGENPAL, INC. AND ITS LICENSORS FOR ALL CLAIMS ARISING FROM OR RELATING TO THE SOFTWARE OR THIS LICENSE, WHETHER IN CONTRACT, TORT, STRICT LIABILITY, OR ANY OTHER THEORY, WILL NOT EXCEED TEN UNITED STATES DOLLARS (US$10). THE FOREGOING LIMITATIONS APPLY EVEN IF EIGENPAL, INC. HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND EVEN IF ANY LIMITED REMEDY IS FOUND TO HAVE FAILED OF ITS ESSENTIAL PURPOSE.
|
|
101
|
+
|
|
102
|
+
## 10. Trademarks
|
|
103
|
+
|
|
104
|
+
This license does not grant permission to use the names, trademarks, service
|
|
105
|
+
marks, or logos of EigenPal, Inc., except to identify the origin of an
|
|
106
|
+
unmodified copy of the Software.
|
|
107
|
+
|
|
108
|
+
## 11. Governing Law and Jurisdiction
|
|
109
|
+
|
|
110
|
+
This license is governed by the laws of the State of California, without regard
|
|
111
|
+
to its conflict-of-laws rules.
|
|
112
|
+
|
|
113
|
+
Any dispute arising from or relating to this license will be subject to the
|
|
114
|
+
exclusive jurisdiction of the state and federal courts located in California,
|
|
115
|
+
and you consent to their jurisdiction.
|
|
116
|
+
|
|
117
|
+
## 12. Separate Commercial Agreements
|
|
118
|
+
|
|
119
|
+
If EigenPal, Inc. and you enter into a separate written commercial agreement,
|
|
120
|
+
that agreement controls to the extent it grants additional rights or conflicts
|
|
121
|
+
with this license.
|
package/README.md
CHANGED
|
@@ -1,5 +1,153 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://www.docx-editor.dev/">
|
|
3
|
+
<img src="https://raw.githubusercontent.com/eigenpal/docx-editor/main/.github/assets/header.png" alt="DOCX Editor — .docx in, .docx out. Open source, client-side." width="500" />
|
|
4
|
+
</a>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/@docx-editor.dev/editor-api"><img src="https://img.shields.io/npm/v/@docx-editor.dev/editor-api.svg?style=flat-square&color=3B5BDB" alt="npm version" /></a>
|
|
9
|
+
<a href="https://www.npmjs.com/package/@docx-editor.dev/editor-api"><img src="https://img.shields.io/npm/dm/@docx-editor.dev/editor-api.svg?style=flat-square&color=3B5BDB" alt="npm downloads" /></a>
|
|
10
|
+
<a href="https://github.com/eigenpal/docx-editor/blob/main/packages/editor-api/LICENSE.md"><img src="https://img.shields.io/badge/license-EigenPal_Pro_Evaluation_1.0-blue.svg?style=flat-square&color=3B5BDB" alt="license" /></a>
|
|
11
|
+
<a href="https://docx-editor.dev/editor"><img src="https://img.shields.io/badge/Live_Demo-3B5BDB?style=flat-square&logo=vercel&logoColor=white" alt="Demo" /></a>
|
|
12
|
+
<a href="https://www.docx-editor.dev/docs"><img src="https://img.shields.io/badge/Docs-3B5BDB?style=flat-square&logo=readthedocs&logoColor=white" alt="Documentation" /></a>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
1
15
|
# @docx-editor.dev/editor-api
|
|
2
16
|
|
|
3
|
-
|
|
17
|
+
An **Office.js-compatible editing API** for DOCX. It implements the Word JavaScript object model —
|
|
18
|
+
`context.document.body.paragraphs`, `load()` then `sync()`, `search()`, `getFirstOrNullObject()` —
|
|
19
|
+
so code written for a Word add-in compiles and runs here.
|
|
20
|
+
|
|
21
|
+
Describe work against objects, and one `sync()` sends it as a single ordered batch that either
|
|
22
|
+
applies whole or not at all. The same code drives bytes on a server and a document a reader
|
|
23
|
+
already has open in a page.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install @docx-editor.dev/editor-api
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## On a server, from bytes
|
|
30
|
+
|
|
31
|
+
No browser, no framework, nothing to mount. This half of the package opens DOCX bytes, edits
|
|
32
|
+
them, and hands them back.
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
36
|
+
import { DocxEditor } from '@docx-editor.dev/editor-api';
|
|
37
|
+
|
|
38
|
+
const runtime = await DocxEditor.createServer(await readFile('contract.docx'), {
|
|
39
|
+
author: 'Review bot',
|
|
40
|
+
});
|
|
41
|
+
try {
|
|
42
|
+
const filled = await runtime.run(async (context) => {
|
|
43
|
+
const matches = context.document.body.search('{{cap}}', { matchCase: true });
|
|
44
|
+
matches.load();
|
|
45
|
+
await context.sync(); // one round trip: now you know what was found
|
|
46
|
+
|
|
47
|
+
for (const match of matches.items) match.insertText('$500k', 'Replace');
|
|
48
|
+
await context.sync(); // one atomic batch: all of the writes, or none
|
|
49
|
+
return matches.items.length;
|
|
50
|
+
});
|
|
51
|
+
console.log(`replaced ${filled}`);
|
|
52
|
+
await writeFile('contract.filled.docx', await runtime.save());
|
|
53
|
+
} finally {
|
|
54
|
+
runtime.dispose();
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## In a page, on a document already open
|
|
59
|
+
|
|
60
|
+
The browser entry takes an editor the host already created — from `@docx-editor.dev/react`,
|
|
61
|
+
`@docx-editor.dev/react` or a plain page — and drives it in place, so edits land in the open
|
|
62
|
+
document with the reader's undo stack intact. There is no `save()`: the host saves as it already
|
|
63
|
+
did.
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
import { DocxEditor } from '@docx-editor.dev/editor-api/browser';
|
|
67
|
+
|
|
68
|
+
const runtime = DocxEditor.createBrowser(editor);
|
|
69
|
+
await runtime.run(async (context) => {
|
|
70
|
+
const heading = context.document.body.paragraphs.getFirstOrNullObject();
|
|
71
|
+
heading.load('text');
|
|
72
|
+
await context.sync();
|
|
73
|
+
|
|
74
|
+
if (!heading.isNullObject) heading.font.bold = true;
|
|
75
|
+
await context.sync();
|
|
76
|
+
});
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Import it from `/browser` deliberately: reaching a live editor means reaching the painted engine,
|
|
80
|
+
and a server holding bytes should not pay for that.
|
|
81
|
+
|
|
82
|
+
## The four rules
|
|
83
|
+
|
|
84
|
+
- **Read what you asked for.** A property you did not `load()` throws instead of answering
|
|
85
|
+
`undefined`, so a typo fails at the read rather than producing a wrong document later.
|
|
86
|
+
- **`sync()` is the only round trip.** Everything queued between two syncs is one ordered batch,
|
|
87
|
+
applied atomically.
|
|
88
|
+
- **Objects live inside `run`.** They are proxies into a document the runtime owns. Keeping one
|
|
89
|
+
past the callback, or past `dispose()`, is an error rather than a stale read — to keep one
|
|
90
|
+
across syncs deliberately, hand it to `context.trackedObjects`.
|
|
91
|
+
- **Ask before you assume.** `getFirstOrNullObject` / `getLastOrNullObject` answer an object whose
|
|
92
|
+
`isNullObject` is `true`, which is the difference between "no such heading" and a crash.
|
|
93
|
+
|
|
94
|
+
`runtime.capabilities` says what the host behind a runtime can do — `save` is false in the
|
|
95
|
+
browser; `selection`, `scrolling` and `layout` are false on a server — and it is frozen for the
|
|
96
|
+
life of the runtime, so one read stays true.
|
|
97
|
+
|
|
98
|
+
## Entries
|
|
99
|
+
|
|
100
|
+
| Entry | Use when |
|
|
101
|
+
| ------------------------------------- | ---------------------------------------------------- |
|
|
102
|
+
| `@docx-editor.dev/editor-api` | Servers, workers, build scripts: bytes in, bytes out |
|
|
103
|
+
| `@docx-editor.dev/editor-api/browser` | A page, driving an editor the host already created |
|
|
104
|
+
|
|
105
|
+
Both entries export the same vocabulary — the lifecycle types, the object model and the error
|
|
106
|
+
type — so consumer code compiles against either. They differ by one member: `createBrowser`.
|
|
107
|
+
|
|
108
|
+
## What this is, and is not
|
|
109
|
+
|
|
110
|
+
The Office.js Word-shaped DocxEditor API is compatible with a documented subset of Word's
|
|
111
|
+
JavaScript object model, so a call site written against that vocabulary compiles here. It is not
|
|
112
|
+
Office.js, does not run in an Office add-in host, and depends on no Microsoft package. Every type
|
|
113
|
+
in the surface is authored in this repository.
|
|
114
|
+
|
|
115
|
+
The supported subset and its documented omissions — tables, images, repeating sections, custom
|
|
116
|
+
XML mapping — are listed in
|
|
117
|
+
[the Word API compatibility page](https://www.docx-editor.dev/docs/1.x/editor-api/word-js-api).
|
|
118
|
+
|
|
119
|
+
Upgrading from the reviewer/bridge/MCP/chat surfaces this package used to ship? See
|
|
120
|
+
[MIGRATION.md](https://github.com/eigenpal/docx-editor/blob/main/packages/editor-api/MIGRATION.md).
|
|
121
|
+
|
|
122
|
+
## Packages
|
|
123
|
+
|
|
124
|
+
| Package | Description |
|
|
125
|
+
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------- |
|
|
126
|
+
| [`@docx-editor.dev/react`](https://www.npmjs.com/package/@docx-editor.dev/react) | React adapter. `<DocxEditor>`, provider primitives, hooks, and compound chrome. |
|
|
127
|
+
| [`@docx-editor.dev/core`](https://www.npmjs.com/package/@docx-editor.dev/core) | Framework-agnostic engine: OOXML read/write, canonical document tree, layout, paint. |
|
|
128
|
+
| [`@docx-editor.dev/i18n`](https://www.npmjs.com/package/@docx-editor.dev/i18n) | Shared locale strings and types. |
|
|
129
|
+
| [`@docx-editor.dev/pro`](https://www.npmjs.com/package/@docx-editor.dev/pro) | Tracked changes, comments, and custom nodes. |
|
|
130
|
+
| [`@docx-editor.dev/editor-api`](https://www.npmjs.com/package/@docx-editor.dev/editor-api) | Office.js-compatible editing API: a batching object model, on a server or against an open editor. |
|
|
131
|
+
|
|
132
|
+
The editor packages above are Apache 2.0. This one is not — see below.
|
|
133
|
+
|
|
134
|
+
## License
|
|
135
|
+
|
|
136
|
+
This package is licensed under the
|
|
137
|
+
[EigenPal Pro Evaluation License 1.0](https://github.com/eigenpal/docx-editor/blob/main/packages/editor-api/LICENSE.md).
|
|
138
|
+
You may read, run and modify it internally, free of charge, to evaluate whether it fits your
|
|
139
|
+
application. Production use — a live or customer-facing environment, live or business-operational
|
|
140
|
+
data, or the package embedded in something you offer to others — requires a written commercial
|
|
141
|
+
agreement, and so does redistribution.
|
|
142
|
+
|
|
143
|
+
> [!IMPORTANT]
|
|
144
|
+
> Commercial licensing: **[licensing@eigenpal.com](mailto:licensing@eigenpal.com)**.
|
|
145
|
+
|
|
146
|
+
## Contributing
|
|
147
|
+
|
|
148
|
+
Contributions welcome. See [CONTRIBUTING.md](https://github.com/eigenpal/docx-editor/blob/main/CONTRIBUTING.md) for setup, tests, and the one-time CLA signature.
|
|
149
|
+
|
|
150
|
+
## Commercial Support
|
|
4
151
|
|
|
5
|
-
|
|
152
|
+
> [!TIP]
|
|
153
|
+
> Questions or custom features? Email **[docx-editor@eigenpal.com](mailto:docx-editor@eigenpal.com)**.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
`@docx-editor.dev/editor-api` is distributed under LicenseRef-EigenPal-Pro-Evaluation-1.0. Its published bundles also contain
|
|
4
|
+
source from the open-source packages listed below, redistributed here under
|
|
5
|
+
their own licenses, reproduced in full.
|
|
6
|
+
|
|
7
|
+
Those copies are not verbatim. The build inlines, minifies and tree-shakes
|
|
8
|
+
them, and includes only the parts each bundle reaches, so what ships is a
|
|
9
|
+
modified form of the original source.
|
|
10
|
+
|
|
11
|
+
The terms of LicenseRef-EigenPal-Pro-Evaluation-1.0 do not apply to the portions of these bundles
|
|
12
|
+
derived from the packages listed below. Those portions are licensed to you
|
|
13
|
+
under their own terms.
|
|
14
|
+
|
|
15
|
+
This file covers code copied INTO the published bundles. Packages this one
|
|
16
|
+
declares as `dependencies` or `peerDependencies` are installed separately by
|
|
17
|
+
the consumer and are not repeated here.
|
|
18
|
+
|
|
19
|
+
Generated by `bun run notices:generate` from the build's esbuild metafile.
|
|
20
|
+
Do not edit by hand.
|
|
21
|
+
|
|
22
|
+
No third-party code is bundled into this package.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* The same document automation, for a page that already has an editor open.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { DocxEditor } from '@docx-editor.dev/editor-api/browser';
|
|
7
|
+
*
|
|
8
|
+
* const runtime = DocxEditor.createBrowser(editor);
|
|
9
|
+
* await runtime.run(async (context) => { … });
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* A separate subpath rather than a second export from the package root, because `createBrowser`
|
|
13
|
+
* reaches the editor lane, and the editor lane brings the painted engine and its font shaper with
|
|
14
|
+
* it. Both namespaces expose `createServer`: opening bytes is neutral, and a page that opens an
|
|
15
|
+
* attachment beside the document it is showing should not need two imports.
|
|
16
|
+
*
|
|
17
|
+
* The editor comes from wherever the host got it — `@docx-editor.dev/react`,
|
|
18
|
+
* `@docx-editor.dev/vue`, or a plain page that created one directly. This package does not create
|
|
19
|
+
* editors and does not own their lifetime.
|
|
20
|
+
*
|
|
21
|
+
* @packageDocumentation
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
import { DocxEditorInstance } from '@docx-editor.dev/core/editor';
|
|
25
|
+
import { y as DocxEditorRuntime, C as CreateServerOptions, D as DocxEditorServerRuntime } from './server-C96AzKaT.mjs';
|
|
26
|
+
export { B as BesideLocation, a as Body, b as BodyInsertParagraphLocation, c as BodyInsertTextLocation, d as Bookmark, e as BookmarkCollection, f as ClientObject, g as ClientResult, h as Comment, i as CommentCollection, j as CommentReply, k as CommentReplyCollection, l as ContentControl, m as ContentControlCollection, n as ContentControlLockState, o as ContentControlSubtype, p as ContentControlValue, q as Document, r as DocumentCapabilities, s as DocumentLimits, t as DocumentXmlLimits, u as DocumentZipLimits, v as DocxEditorError, w as DocxEditorErrorCode, x as DocxEditorErrorInit, F as Font, H as HeaderFooterType, I as InsertLocation, L as List, z as ListCollection, A as ListItem, E as LoadOption, G as LoadQueryOptions, N as NoteItem, J as NoteItemCollection, K as NoteItemType, P as PageOrientation, M as PageSetup, O as Paragraph, Q as ParagraphAlignment, R as ParagraphCollection, S as ParagraphInsertTextLocation, T as Range, U as RangeCollection, V as RangeInsertTextLocation, W as RequestContext, X as Revision, Y as RevisionCollection, Z as RevisionType, _ as RunCallback, $ as SearchOptions, a0 as Section, a1 as SectionCollection, a2 as SelectionMode, a3 as TrackedObjects, a4 as isDocxEditorError } from './server-C96AzKaT.mjs';
|
|
27
|
+
import '@docx-editor.dev/core/automation';
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The same document automation, for a page that already has an editor open.
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* import { DocxEditor } from '@docx-editor.dev/editor-api/browser';
|
|
34
|
+
*
|
|
35
|
+
* const runtime = DocxEditor.createBrowser(editor);
|
|
36
|
+
* await runtime.run(async (context) => { … });
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* A separate subpath rather than a second export from the package root, because `createBrowser`
|
|
40
|
+
* reaches the editor lane, and the editor lane brings the painted engine and its font shaper with
|
|
41
|
+
* it. Both namespaces expose `createServer`: opening bytes is neutral, and a page that opens an
|
|
42
|
+
* attachment beside the document it is showing should not need two imports.
|
|
43
|
+
*
|
|
44
|
+
* The editor comes from wherever the host got it — `@docx-editor.dev/react`,
|
|
45
|
+
* `@docx-editor.dev/vue`, or a plain page that created one directly. This package does not create
|
|
46
|
+
* editors and does not own their lifetime.
|
|
47
|
+
*
|
|
48
|
+
* @packageDocumentation
|
|
49
|
+
* @public
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The entry point, with the editor-bound factory. A superset of the one at the package root.
|
|
54
|
+
*
|
|
55
|
+
* @public
|
|
56
|
+
*/
|
|
57
|
+
interface DocxEditorNamespace {
|
|
58
|
+
/** A runtime over an editor that is already open. The editor keeps its own lifetime. */
|
|
59
|
+
createBrowser(editor: DocxEditorInstance): DocxEditorRuntime;
|
|
60
|
+
/** A runtime over DOCX bytes. Additionally offers `save()`. */
|
|
61
|
+
createServer(bytes: Uint8Array, options?: CreateServerOptions): Promise<DocxEditorServerRuntime>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The entry point, with the editor-bound factory — a superset of the package root's.
|
|
65
|
+
*
|
|
66
|
+
* `createBrowser` borrows an editor that is already open, so the runtime reads and writes the
|
|
67
|
+
* document the user is looking at. The editor keeps its own lifetime: disposing the runtime does
|
|
68
|
+
* not close the editor.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* import { DocxEditor } from '@docx-editor.dev/editor-api/browser';
|
|
73
|
+
*
|
|
74
|
+
* const runtime = DocxEditor.createBrowser(editor);
|
|
75
|
+
* await runtime.run(async (context) => {
|
|
76
|
+
* const paragraphs = context.document.paragraphs;
|
|
77
|
+
* paragraphs.load('text');
|
|
78
|
+
* await context.sync();
|
|
79
|
+
* });
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* @public
|
|
83
|
+
*/
|
|
84
|
+
declare const DocxEditor: DocxEditorNamespace;
|
|
85
|
+
|
|
86
|
+
export { CreateServerOptions, DocxEditor, type DocxEditorNamespace, DocxEditorRuntime, DocxEditorServerRuntime };
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* The same document automation, for a page that already has an editor open.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { DocxEditor } from '@docx-editor.dev/editor-api/browser';
|
|
7
|
+
*
|
|
8
|
+
* const runtime = DocxEditor.createBrowser(editor);
|
|
9
|
+
* await runtime.run(async (context) => { … });
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* A separate subpath rather than a second export from the package root, because `createBrowser`
|
|
13
|
+
* reaches the editor lane, and the editor lane brings the painted engine and its font shaper with
|
|
14
|
+
* it. Both namespaces expose `createServer`: opening bytes is neutral, and a page that opens an
|
|
15
|
+
* attachment beside the document it is showing should not need two imports.
|
|
16
|
+
*
|
|
17
|
+
* The editor comes from wherever the host got it — `@docx-editor.dev/react`,
|
|
18
|
+
* `@docx-editor.dev/vue`, or a plain page that created one directly. This package does not create
|
|
19
|
+
* editors and does not own their lifetime.
|
|
20
|
+
*
|
|
21
|
+
* @packageDocumentation
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
import { DocxEditorInstance } from '@docx-editor.dev/core/editor';
|
|
25
|
+
import { y as DocxEditorRuntime, C as CreateServerOptions, D as DocxEditorServerRuntime } from './server-C96AzKaT.js';
|
|
26
|
+
export { B as BesideLocation, a as Body, b as BodyInsertParagraphLocation, c as BodyInsertTextLocation, d as Bookmark, e as BookmarkCollection, f as ClientObject, g as ClientResult, h as Comment, i as CommentCollection, j as CommentReply, k as CommentReplyCollection, l as ContentControl, m as ContentControlCollection, n as ContentControlLockState, o as ContentControlSubtype, p as ContentControlValue, q as Document, r as DocumentCapabilities, s as DocumentLimits, t as DocumentXmlLimits, u as DocumentZipLimits, v as DocxEditorError, w as DocxEditorErrorCode, x as DocxEditorErrorInit, F as Font, H as HeaderFooterType, I as InsertLocation, L as List, z as ListCollection, A as ListItem, E as LoadOption, G as LoadQueryOptions, N as NoteItem, J as NoteItemCollection, K as NoteItemType, P as PageOrientation, M as PageSetup, O as Paragraph, Q as ParagraphAlignment, R as ParagraphCollection, S as ParagraphInsertTextLocation, T as Range, U as RangeCollection, V as RangeInsertTextLocation, W as RequestContext, X as Revision, Y as RevisionCollection, Z as RevisionType, _ as RunCallback, $ as SearchOptions, a0 as Section, a1 as SectionCollection, a2 as SelectionMode, a3 as TrackedObjects, a4 as isDocxEditorError } from './server-C96AzKaT.js';
|
|
27
|
+
import '@docx-editor.dev/core/automation';
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The same document automation, for a page that already has an editor open.
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* import { DocxEditor } from '@docx-editor.dev/editor-api/browser';
|
|
34
|
+
*
|
|
35
|
+
* const runtime = DocxEditor.createBrowser(editor);
|
|
36
|
+
* await runtime.run(async (context) => { … });
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* A separate subpath rather than a second export from the package root, because `createBrowser`
|
|
40
|
+
* reaches the editor lane, and the editor lane brings the painted engine and its font shaper with
|
|
41
|
+
* it. Both namespaces expose `createServer`: opening bytes is neutral, and a page that opens an
|
|
42
|
+
* attachment beside the document it is showing should not need two imports.
|
|
43
|
+
*
|
|
44
|
+
* The editor comes from wherever the host got it — `@docx-editor.dev/react`,
|
|
45
|
+
* `@docx-editor.dev/vue`, or a plain page that created one directly. This package does not create
|
|
46
|
+
* editors and does not own their lifetime.
|
|
47
|
+
*
|
|
48
|
+
* @packageDocumentation
|
|
49
|
+
* @public
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The entry point, with the editor-bound factory. A superset of the one at the package root.
|
|
54
|
+
*
|
|
55
|
+
* @public
|
|
56
|
+
*/
|
|
57
|
+
interface DocxEditorNamespace {
|
|
58
|
+
/** A runtime over an editor that is already open. The editor keeps its own lifetime. */
|
|
59
|
+
createBrowser(editor: DocxEditorInstance): DocxEditorRuntime;
|
|
60
|
+
/** A runtime over DOCX bytes. Additionally offers `save()`. */
|
|
61
|
+
createServer(bytes: Uint8Array, options?: CreateServerOptions): Promise<DocxEditorServerRuntime>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The entry point, with the editor-bound factory — a superset of the package root's.
|
|
65
|
+
*
|
|
66
|
+
* `createBrowser` borrows an editor that is already open, so the runtime reads and writes the
|
|
67
|
+
* document the user is looking at. The editor keeps its own lifetime: disposing the runtime does
|
|
68
|
+
* not close the editor.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* import { DocxEditor } from '@docx-editor.dev/editor-api/browser';
|
|
73
|
+
*
|
|
74
|
+
* const runtime = DocxEditor.createBrowser(editor);
|
|
75
|
+
* await runtime.run(async (context) => {
|
|
76
|
+
* const paragraphs = context.document.paragraphs;
|
|
77
|
+
* paragraphs.load('text');
|
|
78
|
+
* await context.sync();
|
|
79
|
+
* });
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* @public
|
|
83
|
+
*/
|
|
84
|
+
declare const DocxEditor: DocxEditorNamespace;
|
|
85
|
+
|
|
86
|
+
export { CreateServerOptions, DocxEditor, type DocxEditorNamespace, DocxEditorRuntime, DocxEditorServerRuntime };
|
package/dist/browser.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var editor=require('@docx-editor.dev/core/editor'),automation=require('@docx-editor.dev/core/automation');var Lt=Object.freeze({PropertyNotLoaded:"the property has not been loaded. Call load(...) and await context.sync() before reading it.",ValueNotLoaded:"the result has not been filled in yet. Await context.sync() before reading it.",InvalidObjectPath:"the object is no longer usable. Objects are released when their run ends unless context.trackedObjects.add(...) kept them.",ObjectInUse:"the object still belongs to a run that has not finished. Await that run before passing the object to another one.",InvalidArgument:"the argument is not one this API accepts.",ItemNotFound:"the collection has no such item.",NotSupported:"this document host does not support that operation.",NotImplemented:"this version does not implement that yet.",ConflictingChanges:"two changes in this batch affect the same paragraph. Split them across two context.sync() calls.",InvalidRequestContext:"the request context has finished. Start another run to continue.",RuntimeDisposed:"the runtime has been disposed.",StaleDocument:"the document changed after this context read it, so nothing was applied.",DocumentUnavailable:"the document is not available right now.",GeneralException:"the document could not complete the request."}),u=class extends Error{code;target;expectedRevision;actualRevision;constructor(t){let e=t.target?`${Lt[t.code]} (${t.target})`:Lt[t.code];super(e),this.name="DocxEditorError",this.code=t.code,t.target!==void 0&&(this.target=t.target),t.expectedRevision!==void 0&&(this.expectedRevision=t.expectedRevision),t.actualRevision!==void 0&&(this.actualRevision=t.actualRevision);}};function ee(n){return n instanceof u?true:typeof n=="object"&&n!==null&&n.name==="DocxEditorError"&&typeof n.code=="string"}function a(n){throw new u(n)}var D=Symbol("docx-editor.runtime.internals"),lt=Symbol("docx-editor.runtime.release"),ct=Symbol("docx-editor.runtime.rebind");function ot(n){return n[D]}var oe=new Set(["select","expand","top","skip"]),ne=/^[A-Za-z][A-Za-z0-9]*$/;function At(n,t){if(n===void 0)return [];let e=typeof n=="string"?n.split(",").map(r=>r.trim()):Array.isArray(n)?n.map(r=>typeof r=="string"?r.trim():r):a({code:"InvalidArgument",target:t}),o=[];for(let r of e)(typeof r!="string"||!ne.test(r))&&a({code:"InvalidArgument",target:t}),o.includes(r)||o.push(r);return o.length===0&&a({code:"InvalidArgument",target:t}),o}function jt(n,t){return (typeof n!="number"||!Number.isInteger(n)||n<0)&&a({code:"InvalidArgument",target:t}),n}function wt(n,t){if(n===void 0)return {select:[],expand:[]};if(typeof n=="string"||Array.isArray(n))return {select:At(n,t),expand:[]};(typeof n!="object"||n===null)&&a({code:"InvalidArgument",target:t});let e=n;for(let o of Object.keys(e))oe.has(o)||a({code:"InvalidArgument",target:`${t}.${o}`});return {select:At(e.select,`${t}.select`),expand:At(e.expand,`${t}.expand`),...e.top===void 0?{}:{top:jt(e.top,`${t}.top`)},...e.skip===void 0?{}:{skip:jt(e.skip,`${t}.skip`)}}}var w=class{#t;#e;#o;#n;#i=new Map;constructor(t,e,o={}){this.#t=t,this.#e=t[D],this.#o=e,this.#n=o.nullable===true,this.#e.register(this);}get context(){return this.#t}get isNullObject(){return this.#o.isReleased&&a({code:"InvalidObjectPath",target:this.#o.label}),this.#n?(this.#o.isPending&&a({code:"PropertyNotLoaded",target:`${this.#o.label}.isNullObject`}),this.#o.isNull):false}load(t){return this.requireAddressable(),this.onLoad(wt(t,this.#o.label)),this}get path(){return this.#o}get internals(){return this.#e}handle(){return this.#o.handle()}requireAddressable(){this.#o.isAddressable||a({code:"InvalidObjectPath",target:this.#o.label}),this.#e.assertUsable(this.#o.label);}enqueue(t){this.requireAddressable(),this.#e.queue.push(t);}loadedProperty(t){return this.#o.isReleased&&!this.#i.has(t)&&a({code:"InvalidObjectPath",target:this.#o.label}),this.#i.has(t)||a({code:"PropertyNotLoaded",target:`${this.#o.label}.${t}`}),this.#i.get(t)}hasLoadedProperty(t){return this.#i.has(t)}setLoadedProperty(t,e){this.#i.set(t,e);}[lt](){this.#o.release();}[ct](t){this.#t=t,this.#e=t[D];}};var Ct=class n{#t=false;#e;#o;constructor(t){this.#o=t;}get value(){return this.#t||a({code:"ValueNotLoaded",target:this.#o}),this.#e}get isLoaded(){return this.#t}static create(t){let e=new n(t);return {result:e,fill(o){e.#t=true,e.#e=o;}}}};function O(n){return new u({code:"GeneralException",target:n})}function x(n,t){if(n.kind!=="text")throw O(t);return n.text}function g(n,t){if(n.kind!=="handle")throw O(t);return n.handle}function P(n,t){if(n.kind!=="handles")throw O(t);return n.handles}function f(n,t){if(n.kind!=="span")throw O(t);return n.span}function pt(n,t){if(n.kind!=="spans")throw O(t);return n.spans}function vt(n,t){if(n.kind!=="font")throw O(t);return n.font}function Rt(n,t){if(n.kind!=="paragraphFormat")throw O(t);return n.format}function nt(n,t){if(n.kind!=="style")throw O(t);return n.name}function ht(n,t){if(n.kind!=="number")throw O(t);return n.value}function B(n,t){if(n.kind!=="flag")throw O(t);return n.value}function Ot(n,t){if(n.kind!=="pageSetup")throw O(t);return n.setup}function A(n,t){if(n.kind!=="applied")throw O(t)}var l=class n{label;#t;#e;constructor(t,e,o=null){this.label=t,this.#t=e,this.#e=o;}static of(t,e){return new n(t,{status:"resolved",address:{kind:"handle",handle:e}})}static ofSpan(t,e){return new n(t,{status:"resolved",address:{kind:"span",span:e}})}static pending(t){return new n(t,{status:"pending"})}static derived(t,e){return new n(t,{status:"pending"},e)}get state(){return this.#e?this.#e.state:this.#t}get isAddressable(){return this.state.status==="resolved"}get isPending(){return this.state.status==="pending"}get isNull(){return this.state.status==="null"}get isReleased(){return this.state.status==="released"}address(){let t=this.state;if(t.status==="resolved")return t.address;a({code:"InvalidObjectPath",target:this.label});}handle(){let t=this.address();return t.kind!=="handle"&&a({code:"InvalidObjectPath",target:this.label}),t.handle}span(){let t=this.address();return t.kind!=="span"&&a({code:"InvalidObjectPath",target:this.label}),t.span}resolveTo(t){this.#o({kind:"handle",handle:t});}resolveToSpan(t){this.#o({kind:"span",span:t});}resolveNull(){this.#t.status!=="released"&&(this.#t={status:"null"});}release(){this.#e||(this.#t={status:"released"});}#o(t){this.#t.status!=="released"&&(this.#t={status:"resolved",address:t});}};function Et(n){let t=[],e=false,o=false;for(let r of n)t.push(r.plan()),r.sort==="write"?o=true:e=true;return {operations:t,hasRead:e,hasWrite:o}}var re=Object.freeze({"stale-revision":"StaleDocument","invalid-handle":"InvalidObjectPath","invalid-offset":"InvalidArgument","unsupported-capability":"NotSupported",disposed:"RuntimeDisposed","transaction-refused":"GeneralException","unknown-operation":"NotSupported","unsupported-content":"InvalidArgument","conflicting-operations":"ConflictingChanges","document-unavailable":"DocumentUnavailable"});function ut(n,t={}){let e=re[n.code]??"GeneralException",o=e==="StaleDocument";return new u({code:e,...t.target===void 0?{}:{target:t.target},...o&&t.expectedRevision!==void 0?{expectedRevision:t.expectedRevision}:{},...o&&t.actualRevision!==void 0?{actualRevision:t.actualRevision}:{}})}function Tt(n,t,e){for(let o=0;o<n.results.length;o+=1){let r=n.results[o];if(r?.status!=="error")continue;let i=t[o]?.label;return ut(r.error,{...i===void 0?{}:{target:i},...e===void 0?{}:{expectedRevision:e},actualRevision:n.revision})}return new u({code:"GeneralException"})}function qt(n,t){if(t.results.length!==n.length)throw new u({code:"GeneralException"});for(let e=0;e<n.length;e+=1){let o=t.results[e],r=n[e];if(o.status!=="ok")throw new u({code:"GeneralException",target:r.label});r.settle(o.value);}}var mt=class{#t=[];get size(){return this.#t.length}get pending(){return this.#t}push(t){this.#t.push(t);}take(){let t=this.#t;return this.#t=[],t}clear(){this.#t=[];}};function Nt(n,t){if(Array.isArray(n)){for(let e of n)t(e);return}t(n);}var rt=class{#t;#e;constructor(t,e){this.#t=t,this.#e=e;}add(t){this.#t.assertUsable(),Nt(t,e=>{this.#o(e),this.#t.track(e);});}remove(t){this.#t.assertUsable(),Nt(t,e=>{this.#o(e),this.#t.untrack(e);});}#o(t){this.#e(t)||a({code:"InvalidObjectPath"});}};var it=class n{#t;#e=new mt;#o=new Set;#n=new Set;#i;#a;#r;#s=false;#d=null;constructor(t){this.#t=t,this.#i={host:t.host,capabilities:t.capabilities,...t.author===void 0?{}:{author:t.author},queue:this.#e,session:t.id,roots:()=>t.roots(),assertUsable:e=>{this.#t.assertLive(e),this.#s&&a({code:"InvalidRequestContext",...e===void 0?{}:{target:e}});},isFinished:()=>this.#s,readRevision:()=>this.#d,register:e=>{this.#o.add(e);},track:e=>{this.#n.add(e);},untrack:e=>{this.#n.delete(e);},isTracked:e=>this.#n.has(e),disown:e=>{this.#o.delete(e),this.#n.delete(e);}},this.#a=new rt(this.#i,e=>this.#o.has(e));}get document(){return this.#i.assertUsable("document"),this.#r??=this.#t.openDocument(this),this.#r}get capabilities(){return this.#t.capabilities}get trackedObjects(){return this.#a}async sync(){this.#i.assertUsable();let t=this.#e.take();if(t.length===0)return;let e=Et(t),r=e.hasWrite&&this.#d!==null?this.#d:void 0,i={operations:e.operations,...r===void 0?{}:{expectedRevision:r}},s=this.#t.host.execute(i);if(!s.ok)throw Tt(s,t,r);qt(t,s),(e.hasRead||e.hasWrite)&&(this.#d=s.revision);}get[D](){return this.#i}static begin(t){let e=new n(t);return {context:e,adopt(o){for(let r of o)e.#l(r);},finish(){e.#p();}}}#l(t){let e=t.context;if(e===this)return;let o=e[D];if(o.session!==this.#t.id)throw new u({code:"InvalidObjectPath"});if(!o.isFinished())throw new u({code:"ObjectInUse"});if(!o.isTracked(t))throw new u({code:"InvalidObjectPath"});let r=o.readRevision();o.disown(t),t[ct](this),this.#o.add(t),this.#n.add(t),r!==null&&this.#c(r);}#c(t){this.#d=this.#d===null?t:Math.min(this.#d,t);}#p(){if(!this.#s){this.#s=true,this.#e.clear();for(let t of this.#o)this.#n.has(t)||t[lt]();this.#o.clear();}}};function at(n,t,e){if(n.select.length===0)return t;for(let o of n.select)t.includes(o)||a({code:"InvalidArgument",target:`${e}.${o}`});return n.select}var M=class extends w{#t;#e=[];constructor(t,e){super(t,e);}get items(){return this.loadedProperty("items")}fill(t,e){this.setLoadedProperty("items",this.#n(t,e,0,void 0)),this.#t={value:t,label:e};let o=this.#e.splice(0,this.#e.length);for(let r of o)this.#o(r,t);}onLoad(t){at(t,["items"],this.path.label);let e=this.listing();if(!e)return;let o=`${this.path.label}.items`,r=t.skip??0,i=t.top;this.enqueue({sort:"read",label:o,plan:()=>e,settle:s=>{this.setLoadedProperty("items",this.#n(s,o,r,i));}});}edge(t,e,o){let r=`${this.path.label}.${e}()`,i=this.promised(r,o),s=this.listing();if(!s){let d={edge:t,target:r,nullable:o,item:i};return this.#t?this.#o(d,this.#t.value):this.#e.push(d),i}return this.enqueue({sort:"read",label:r,plan:()=>s,settle:d=>{this.#o({edge:t,target:r,nullable:o,item:i},d);}}),i}#o(t,e){let{edge:o,target:r,nullable:i,item:s}=t,d=this.size(e,r);if(d===0){i||a({code:"ItemNotFound",target:r}),s.hydrateNull();return}let c=this.addressAt(e,r,o==="first"?0:d-1);c||a({code:"ItemNotFound",target:r}),s.hydrateAddress(c);}#n(t,e,o,r){let i=this.size(t,e),s=r===void 0?i:Math.min(i,o+r),d=[];for(let c=o;c<s;c+=1){let b=this.addressAt(t,e,c);b&&d.push(this.itemAt(`${e}[${String(c)}]`,b));}return d}},y=class extends M{size(t,e){return P(t,e).length}addressAt(t,e,o){let r=P(t,e)[o];return r?{kind:"handle",handle:r}:void 0}};var ie=["Replace","Start","End"],ae=["Start","End"],se=["Replace","Start","End"],de=["Before","After"],le=["Replace","Start","End","Before","After"],ce=["Select","Start","End"];function V(n,t,e){return (typeof n!="string"||!t.includes(n))&&a({code:"InvalidArgument",target:e}),n}var Dt=(n,t)=>V(n,ie,t),$t=(n,t)=>V(n,ae,t),Ft=(n,t)=>V(n,se,t),Ht=(n,t)=>V(n,de,t),Pt=(n,t)=>V(n,le,t),gt=(n,t)=>n===void 0?"Select":V(n,ce,t);function C(n,t){return typeof n!="string"&&a({code:"InvalidArgument",target:t}),/[\r\n\v\f\u2028\u2029]/.test(n)&&a({code:"InvalidArgument",target:t}),n}var p=class extends w{loadTextInto(t,e){let o=`${this.path.label}.${t}`;this.enqueue({sort:"read",label:o,plan:e,settle:r=>{this.setLoadedProperty(t,x(r,o));}});}command(t,e){let o=`${this.path.label}.${t}`;this.enqueue({sort:"write",label:o,plan:e,settle:r=>A(r,o)});}commandDiscarding(t,e){let o=`${this.path.label}.${t}`;this.enqueue({sort:"write",label:o,plan:e,settle:()=>{}});}commandAnswering(t,e,o){this.enqueue({sort:"write",label:t,plan:e,settle:o});}read(t,e,o){this.enqueue({sort:"read",label:t,plan:e,settle:o});}selection(t,e){return at(t,e,this.path.label)}onLoad(t){this.selection(t,[]);}};var pe=8,L=class n extends p{#t;static at(t,e,o){return o.kind!=="handle"&&a({code:"InvalidObjectPath",target:e}),new n(t,l.of(e,o.handle),false)}static promised(t,e,o){return new n(t,l.pending(e),o)}constructor(t,e,o){super(t,e,{nullable:o});}hydrateAddress(t){t.kind==="handle"?this.path.resolveTo(t.handle):this.path.resolveNull();}hydrateNull(){this.path.resolveNull();}get id(){return this.loadedProperty("id")}get paragraphs(){return this.#t??=v.overListing(this.context,`${this.path.label}.paragraphs`,this.path,()=>({op:"getListParagraphs",list:this.#e()})),this.#t}getLevelParagraphs(t){let e=`${this.path.label}.getLevelParagraphs`,o=Bt(t,e),r=this.#e();return v.overListing(this.context,e,this.path,()=>({op:"getListParagraphs",list:r,level:o}))}insertParagraph(t,e){let o=`${this.path.label}.insertParagraph`,r=C(t,o);e!=="Start"&&e!=="End"&&e!=="Before"&&e!=="After"&&a({code:"InvalidArgument",target:o});let i=this.#e(),s=R.promised(this.context,o,false);return this.commandAnswering(o,()=>({op:"insertListParagraph",list:i,where:e==="Start"||e==="Before"?"start":"end",text:r}),d=>{s.hydrateAddress({kind:"handle",handle:g(d,o)});}),s}onLoad(t){if(!this.selection(t,["id"]).includes("id"))return;let e=`${this.path.label}.id`,o=this.#e();this.read(e,()=>({op:"getListId",list:o}),r=>{this.setLoadedProperty("id",ht(r,e));});}#e(){return this.requireAddressable(),this.path.handle()}},W=class n extends y{#t;static of(t,e,o,r){return new n(t,l.derived(e,o),r)}constructor(t,e,o){super(t,e),this.#t=o;}getFirst(){return this.edge("first","getFirst",false)}getById(t){let e=`${this.path.label}.getById`,o=he(t,e),r=this.#t,i=L.promised(this.context,e,false);return this.enqueue({sort:"read",label:e,plan:()=>({op:"getListById",body:r,id:o}),settle:s=>{i.hydrateAddress({kind:"handle",handle:g(s,e)});}}),i}listing(){return {op:"getLists",body:this.#t}}itemAt(t,e){return L.at(this.context,t,e)}promised(t,e){return L.promised(this.context,t,e)}},U=class n extends p{static of(t,e,o){return new n(t,l.derived(e,o))}constructor(t,e){super(t,e);}get level(){return this.loadedProperty("level")}set level(t){let e=`${this.path.label}.level`,o=Bt(t,e),r=this.#t();this.commandAnswering(e,()=>({op:"setListLevel",paragraph:r,level:o}),i=>{A(i,e);});}onLoad(t){if(!this.selection(t,["level"]).includes("level"))return;let e=`${this.path.label}.level`,o=this.#t();this.read(e,()=>({op:"getListLevel",paragraph:o}),r=>{this.setLoadedProperty("level",ht(r,e));});}#t(){this.requireAddressable();let t=this.path.address();return t.kind!=="handle"&&a({code:"InvalidObjectPath",target:this.path.label}),t.handle}};function Bt(n,t){return (!Number.isInteger(n)||n<0||n>pe)&&a({code:"InvalidArgument",target:t}),n}function he(n,t){return (!Number.isInteger(n)||n<=0)&&a({code:"InvalidArgument",target:t}),n}function E(n,t){let e=n.address();return t==="span"?(e.kind!=="span"&&a({code:"InvalidObjectPath",target:n.label}),{start:e.span.start,end:e.span.end}):(e.kind!=="handle"&&a({code:"InvalidObjectPath",target:n.label}),t==="body"?{body:e.handle}:{paragraph:e.handle})}function z(n,t){return (typeof n!="string"||n.trim().length===0||n.length>255)&&a({code:"InvalidArgument",target:t}),n}var ue=["bold","italic","color","name","size"],S=class n extends p{#t;#e;static of(t,e,o,r){return new n(t,l.derived(e,o),r)}constructor(t,e,o){super(t,e),this.#t=o;}get bold(){return this.loadedProperty("bold")}set bold(t){this.#o("bold",Mt(t,`${this.path.label}.bold`));}get italic(){return this.loadedProperty("italic")}set italic(t){this.#o("italic",Mt(t,`${this.path.label}.italic`));}get color(){return this.loadedProperty("color")}set color(t){this.#o("color",Vt(t,`${this.path.label}.color`));}get name(){return this.loadedProperty("name")}set name(t){this.#o("name",Vt(t,`${this.path.label}.name`));}get size(){return this.loadedProperty("size")}set size(t){this.#o("size",me(t,`${this.path.label}.size`));}onLoad(t){let e=this.selection(t,ue);if(e.length===0)return;let o=`${this.path.label}.font`;this.read(o,()=>({op:"getFont",span:this.#n()}),r=>{let i=vt(r,o);for(let s of e)this.setLoadedProperty(s,i[s]);});}#o(t,e){if(this.requireAddressable(),this.#e){this.#e[t]=e;return}let o={[t]:e};this.#e=o;let r=`${this.path.label}.${t}`;this.commandAnswering(this.path.label,()=>(this.#e=void 0,{op:"setFont",span:this.#n(),font:o}),i=>{A(i,r);});}#n(){return this.requireAddressable(),E(this.path,this.#t)}};function Mt(n,t){return typeof n!="boolean"&&a({code:"InvalidArgument",target:t}),n}function me(n,t){return (typeof n!="number"||!Number.isFinite(n))&&a({code:"InvalidArgument",target:t}),n}function Vt(n,t){return (typeof n!="string"||n.length===0)&&a({code:"InvalidArgument",target:t}),n}var G=class n extends p{#t;static at(t,e,o){return o.kind!=="handle"&&a({code:"InvalidObjectPath",target:e}),new n(t,l.of(e,o.handle),false)}static promised(t,e,o){return new n(t,l.pending(e),o)}constructor(t,e,o){super(t,e,{nullable:o});}hydrateAddress(t){t.kind==="handle"?this.path.resolveTo(t.handle):this.path.resolveNull();}hydrateNull(){this.path.resolveNull();}get name(){return this.loadedProperty("name")}get range(){return this.#t??=this.#e(`${this.path.label}.range`),this.#t}select(t){let e=`${this.path.label}.select`,o=gt(t,e);this.requireAddressable(),this.internals.capabilities.selection||a({code:"NotSupported",target:e});let r=this.#o(),i=h.promised(this.context,e,false);this.read(`${e}.range`,()=>({op:"getBookmarkRange",bookmark:r}),s=>{i.hydrateAddress({kind:"span",span:f(s,e)});}),i.select(o);}onLoad(t){if(!this.selection(t,["name"]).includes("name"))return;let e=`${this.path.label}.name`,o=this.#o();this.read(e,()=>({op:"getBookmarkName",bookmark:o}),r=>{this.setLoadedProperty("name",x(r,e));});}#e(t){let e=this.#o(),o=h.promised(this.context,t,false);return this.read(t,()=>({op:"getBookmarkRange",bookmark:e}),r=>{o.hydrateAddress({kind:"span",span:f(r,t)});}),o}#o(){return this.requireAddressable(),this.path.handle()}},Q=class n extends y{#t;static of(t,e,o,r){return new n(t,l.derived(e,o),r)}constructor(t,e,o){super(t,e),this.#t=o;}listing(){return this.#t()}itemAt(t,e){return G.at(this.context,t,e)}promised(t,e){return G.promised(this.context,t,e)}};var ge=new Set(["matchCase","matchWholeWord","ignorePunct","ignoreSpace","matchWildcards"]);function ft(n,t){if(n===void 0)return;typeof n!="object"&&a({code:"InvalidArgument",target:t});for(let[o,r]of Object.entries(n))ge.has(o)||a({code:"InvalidArgument",target:`${t}.${o}`}),r!==void 0&&typeof r!="boolean"&&a({code:"InvalidArgument",target:`${t}.${o}`});let e={...n.matchCase===void 0?{}:{matchCase:n.matchCase},...n.matchWholeWord===void 0?{}:{matchWholeWord:n.matchWholeWord},...n.ignorePunct===void 0?{}:{ignorePunct:n.ignorePunct},...n.ignoreSpace===void 0?{}:{ignoreSpace:n.ignoreSpace},...n.matchWildcards===void 0?{}:{matchWildcards:n.matchWildcards}};return Object.keys(e).length===0?void 0:e}var h=class n extends p{#t;#e;#o;static at(t,e,o){return o.kind!=="span"&&a({code:"InvalidObjectPath",target:e}),new n(t,l.ofSpan(e,o.span),false)}static promised(t,e,o){return new n(t,l.pending(e),o)}constructor(t,e,o){super(t,e,{nullable:o});}hydrateAddress(t){t.kind==="span"?this.path.resolveToSpan(t.span):this.path.resolveNull();}hydrateNull(){this.path.resolveNull();}get text(){return this.loadedProperty("text")}get font(){return this.#e??=S.of(this.context,`${this.path.label}.font`,this.path,"span"),this.#e}get paragraphs(){return this.#t??=v.of(this.context,`${this.path.label}.paragraphs`,this.path),this.#t}get style(){return this.loadedProperty("style")}set style(t){let e=`${this.path.label}.style`,o=z(t,e);this.requireAddressable(),this.command("style",()=>({op:"setStyle",span:E(this.path,"span"),name:o}));}get hyperlink(){return this.loadedProperty("hyperlink")}set hyperlink(t){let e=`${this.path.label}.hyperlink`;(typeof t!="string"||t.length>2048)&&a({code:"InvalidArgument",target:e});let o=this.#n();this.command("hyperlink",()=>({op:"setHyperlink",span:o,target:t}));}get bookmarks(){let t=this.#n();return this.#o??=Q.of(this.context,`${this.path.label}.bookmarks`,this.path,()=>({op:"getBookmarks",scope:{start:t.start,end:t.end}})),this.#o}search(t,e){let o=`${this.path.label}.search`;typeof t!="string"&&a({code:"InvalidArgument",target:o});let r=ft(e,o),i=this.#n();return k.of(this.context,o,this.path,()=>({op:"search",scope:i,text:t,...r===void 0?{}:{options:r}}))}insertText(t,e){let o=`${this.path.label}.insertText`,r=C(t,o),i=Pt(e,o),s=this.#n(),d=n.promised(this.context,o,false);return this.commandAnswering(o,()=>i==="Replace"?{op:"replaceSpan",span:s,text:r}:{op:"insertText",at:i==="Start"||i==="Before"?s.start:s.end,text:r},c=>{d.hydrateAddress({kind:"span",span:f(c,o)});}),d}insertParagraph(t,e){let o=`${this.path.label}.insertParagraph`,r=C(t,o),i=Pt(e,o);i!=="Before"&&i!=="After"&&a({code:"InvalidArgument",target:o});let s=this.#n(),d=i==="Before"?s.start.paragraph:s.end.paragraph,c=R.promised(this.context,o,false);return this.commandAnswering(o,()=>({op:"insertParagraph",anchor:{paragraph:d},where:i==="Before"?"before":"after",text:r}),b=>{b.kind!=="handle"&&a({code:"GeneralException",target:o}),c.hydrateAddress({kind:"handle",handle:b.handle});}),c}select(t){let e=`${this.path.label}.select`,o=gt(t,e);this.requireAddressable(),this.internals.capabilities.selection||a({code:"NotSupported",target:e});let r=this.#n();this.command("select",()=>({op:"selectSpan",span:r,mode:o==="Select"?"select":o==="Start"?"start":"end"}));}onLoad(t){let e=this.selection(t,["text","style","hyperlink"]);if(e.includes("hyperlink")){let r=this.#n();this.loadTextInto("hyperlink",()=>({op:"getHyperlink",span:r}));}if(e.includes("text")){let r=this.#n(),i=`${this.path.label}.text`;this.read(i,()=>({op:"getSpanText",span:r}),s=>{this.setLoadedProperty("text",x(s,i));});}if(!e.includes("style"))return;let o=`${this.path.label}.style`;this.requireAddressable(),this.read(o,()=>({op:"getStyle",span:E(this.path,"span")}),r=>{this.setLoadedProperty("style",nt(r,o));});}#n(){return this.requireAddressable(),this.path.span()}};var fe=16,R=class n extends p{#t;#e;#o;#n;static at(t,e,o){return o.kind!=="handle"&&a({code:"InvalidObjectPath",target:e}),new n(t,l.of(e,o.handle),false)}static promised(t,e,o){return new n(t,l.pending(e),o)}constructor(t,e,o){super(t,e,{nullable:o});}hydrateAddress(t){t.kind==="handle"?this.path.resolveTo(t.handle):this.path.resolveNull();}hydrateNull(){this.path.resolveNull();}get text(){return this.loadedProperty("text")}get uniqueLocalId(){return this.loadedProperty("uniqueLocalId")}get style(){return this.loadedProperty("style")}set style(t){this.#i("style",z(t,`${this.path.label}.style`));}get font(){return this.#t??=S.of(this.context,`${this.path.label}.font`,this.path,"paragraph"),this.#t}get alignment(){return this.loadedProperty("alignment")}set alignment(t){this.#i("alignment",be(t,`${this.path.label}.alignment`));}get firstLineIndent(){return this.loadedProperty("firstLineIndent")}set firstLineIndent(t){this.#i("firstLineIndent",X(t,`${this.path.label}.firstLineIndent`));}get leftIndent(){return this.loadedProperty("leftIndent")}set leftIndent(t){this.#i("leftIndent",X(t,`${this.path.label}.leftIndent`));}get rightIndent(){return this.loadedProperty("rightIndent")}set rightIndent(t){this.#i("rightIndent",X(t,`${this.path.label}.rightIndent`));}get lineSpacing(){return this.loadedProperty("lineSpacing")}set lineSpacing(t){this.#i("lineSpacing",X(t,`${this.path.label}.lineSpacing`));}get spaceBefore(){return this.loadedProperty("spaceBefore")}set spaceBefore(t){this.#i("spaceBefore",X(t,`${this.path.label}.spaceBefore`));}get spaceAfter(){return this.loadedProperty("spaceAfter")}set spaceAfter(t){this.#i("spaceAfter",X(t,`${this.path.label}.spaceAfter`));}get list(){return this.#e??=this.#a(`${this.path.label}.list`),this.#e}get listItem(){return this.#o??=U.of(this.context,`${this.path.label}.listItem`,this.path),this.#o}clear(){let t=this.#r();this.commandDiscarding("clear",()=>({op:"replaceSpan",span:{paragraph:t},text:""}));}delete(){let t=this.#r();this.command("delete",()=>({op:"deleteParagraph",paragraph:t}));}insertText(t,e){let o=`${this.path.label}.insertText`,r=C(t,o),i=Ft(e,o),s=this.#r(),d=h.promised(this.context,o,false);return this.commandAnswering(o,()=>i==="Replace"?{op:"replaceSpan",span:{paragraph:s},text:r}:{op:"insertText",at:{paragraph:s,at:i==="Start"?"start":"end"},text:r},c=>{d.hydrateAddress({kind:"span",span:f(c,o)});}),d}insertParagraph(t,e){let o=`${this.path.label}.insertParagraph`,r=C(t,o),i=Ht(e,o),s=this.#r(),d=n.promised(this.context,o,false);return this.commandAnswering(o,()=>({op:"insertParagraph",anchor:{paragraph:s},where:i==="Before"?"before":"after",text:r}),c=>{c.kind!=="handle"&&a({code:"GeneralException",target:o}),d.hydrateAddress({kind:"handle",handle:c.handle});}),d}split(t,e,o){let r=`${this.path.label}.split`,i=xe(t,r),s=Ut(e,`${r}.trimDelimiters`),d=Ut(o,`${r}.trimSpacing`),c=this.#r(),b=k.answered(this.context,r,this.path);return this.commandAnswering(r,()=>({op:"splitParagraph",paragraph:c,delimiters:i,...s?{trimDelimiters:true}:{},...d?{trimSpacing:true}:{}}),N=>{b.fill(N,r);}),b}onLoad(t){let e=this.selection(t,["text","uniqueLocalId",...Wt]),o=this.#r();e.includes("text")&&this.loadTextInto("text",()=>({op:"getText",target:o})),e.includes("uniqueLocalId")&&this.loadTextInto("uniqueLocalId",()=>({op:"getParagraphId",paragraph:o}));let r=Wt.filter(s=>e.includes(s));if(r.length===0)return;let i=`${this.path.label}.paragraphFormat`;this.read(i,()=>({op:"getParagraphFormat",paragraph:{paragraph:o}}),s=>{let d=Rt(s,i);for(let c of r)this.setLoadedProperty(c,d[c]);});}#i(t,e){if(this.requireAddressable(),this.#n){this.#n[t]=e;return}let o={[t]:e};this.#n=o;let r=this.#r(),i=`${this.path.label}.${t}`;this.commandAnswering(`${this.path.label}.paragraphFormat`,()=>(this.#n=void 0,{op:"setParagraphFormat",paragraph:{paragraph:r},format:o}),s=>{A(s,i);});}#a(t){let e=this.#r(),o=L.promised(this.context,t,false);return this.read(t,()=>({op:"getParagraphList",paragraph:e}),r=>{o.hydrateAddress({kind:"handle",handle:g(r,t)});}),o}#r(){return this.requireAddressable(),this.path.handle()}},Wt=["style","alignment","firstLineIndent","leftIndent","rightIndent","lineSpacing","spaceBefore","spaceAfter"],ye=["Left","Centered","Right","Justified"];function be(n,t){return ye.includes(n)||a({code:"InvalidArgument",target:t}),n}function X(n,t){return (typeof n!="number"||!Number.isFinite(n))&&a({code:"InvalidArgument",target:t}),n}function xe(n,t){(!Array.isArray(n)||n.length===0||n.length>fe)&&a({code:"InvalidArgument",target:t});for(let e of n)(typeof e!="string"||e.length===0)&&a({code:"InvalidArgument",target:t});return [...n]}function Ut(n,t){return n!==void 0&&typeof n!="boolean"&&a({code:"InvalidArgument",target:t}),n===true}var v=class n extends M{#t;static of(t,e,o){return new n(t,l.derived(e,o),null)}static overListing(t,e,o,r){return new n(t,l.derived(e,o),r)}constructor(t,e,o){super(t,e),this.#t=o;}getFirst(){return this.edge("first","getFirst",false)}getLast(){return this.edge("last","getLast",false)}getFirstOrNullObject(){return this.edge("first","getFirstOrNullObject",true)}getLastOrNullObject(){return this.edge("last","getLastOrNullObject",true)}listing(){if(this.#t)return this.#t();let t=this.path.address();return t.kind==="handle"?{op:"getParagraphs",body:t.handle}:{op:"getSpanParagraphs",span:t.span}}size(t,e){return P(t,e).length}addressAt(t,e,o){let r=P(t,e)[o];return r?{kind:"handle",handle:r}:void 0}itemAt(t,e){return R.at(this.context,t,e)}promised(t,e){return R.promised(this.context,t,e)}},k=class n extends M{#t;static of(t,e,o,r){return new n(t,l.derived(e,o),r)}static answered(t,e,o){return new n(t,l.derived(e,o),null)}constructor(t,e,o){super(t,e),this.#t=o;}getFirst(){return this.edge("first","getFirst",false)}getLast(){return this.edge("last","getLast",false)}getFirstOrNullObject(){return this.edge("first","getFirstOrNullObject",true)}listing(){return this.#t?this.#t():null}size(t,e){return pt(t,e).length}addressAt(t,e,o){let r=pt(t,e)[o];return r?{kind:"span",span:r}:void 0}itemAt(t,e){return h.at(this.context,t,e)}promised(t,e){return h.promised(this.context,t,e)}};var Gt=4096,$=class n extends p{#t=new Map;#e;#o;static at(t,e,o){return o.kind!=="handle"&&a({code:"InvalidObjectPath",target:e}),new n(t,l.of(e,o.handle),false)}static promised(t,e,o){return new n(t,l.pending(e),o)}constructor(t,e,o){super(t,e,{nullable:o});}hydrateAddress(t){t.kind==="handle"?this.path.resolveTo(t.handle):this.path.resolveNull();}hydrateNull(){this.path.resolveNull();}get id(){return this.loadedProperty("id")}get tag(){return this.loadedProperty("tag")}set tag(t){this.#i("tag",{tag:It(t,`${this.path.label}.tag`)});}get title(){return this.loadedProperty("title")}set title(t){this.#i("title",{title:It(t,`${this.path.label}.title`)});}get subtype(){return this.loadedProperty("subtype")}get cannotDelete(){let t=this.loadedProperty("lock");return t==="sdtLocked"||t==="sdtContentLocked"}set cannotDelete(t){this.#a(t,this.cannotEdit,`${this.path.label}.cannotDelete`);}get cannotEdit(){let t=this.loadedProperty("lock");return t==="contentLocked"||t==="sdtContentLocked"}set cannotEdit(t){this.#a(this.cannotDelete,t,`${this.path.label}.cannotEdit`);}get placeholderShown(){return this.loadedProperty("placeholderShown")}get temporary(){return this.loadedProperty("temporary")}get text(){return this.loadedProperty("text")}get paragraphs(){return this.#e??=v.overListing(this.context,`${this.path.label}.paragraphs`,this.path,()=>({op:"getContentControlParagraphs",contentControl:this.#r()})),this.#e}get contentControls(){return this.#o??=j.of(this.context,`${this.path.label}.contentControls`,this.path,{contentControl:this.#r()}),this.#o}getRange(t){let e=`${this.path.label}.getRange`,o=Ae(t??"Whole",e),r=this.#t.get(o);if(r)return r;let i=this.#n(e,o);return this.#t.set(o,i),i}setValue(t){let e=`${this.path.label}.setValue`,o=Ce(t,e),r=this.#r();this.command("setValue",()=>({op:"setContentControlValue",contentControl:r,value:o}));}insertText(t,e){let o=`${this.path.label}.insertText`,r=C(t,o),i=e==="Replace"?"replace":e==="Start"?"start":e==="End"?"end":a({code:"InvalidArgument",target:o}),s=this.#r(),d=h.promised(this.context,o,false);return this.commandAnswering(o,()=>({op:"insertContentControlText",contentControl:s,text:r,at:i}),c=>{d.hydrateAddress({kind:"span",span:f(c,o)});}),d}delete(t){let e=`${this.path.label}.delete`;typeof t!="boolean"&&a({code:"InvalidArgument",target:e});let o=this.#r();this.command("delete",()=>({op:"deleteContentControl",contentControl:o,keepContent:t}));}onLoad(t){let e=this.selection(t,["id","tag","title","subtype","text","cannotDelete","cannotEdit","placeholderShown","temporary"]),o=this.#r();if(e.includes("id")&&this.loadTextInto("id",()=>({op:"getContentControlFileId",contentControl:o})),e.includes("tag")&&this.loadTextInto("tag",()=>({op:"getContentControlTag",contentControl:o})),e.includes("title")&&this.loadTextInto("title",()=>({op:"getContentControlTitle",contentControl:o})),e.includes("subtype")&&this.loadTextInto("subtype",()=>({op:"getContentControlSubtype",contentControl:o})),e.includes("text")&&this.loadTextInto("text",()=>({op:"getContentControlText",contentControl:o})),e.includes("cannotDelete")||e.includes("cannotEdit")){let i=`${this.path.label}.lock`;this.read(i,()=>({op:"getContentControlLock",contentControl:o}),s=>{this.setLoadedProperty("lock",x(s,i));});}if(e.includes("placeholderShown")){let i=`${this.path.label}.placeholderShown`;this.read(i,()=>({op:"getContentControlPlaceholderShown",contentControl:o}),s=>{this.setLoadedProperty("placeholderShown",B(s,i));});}if(!e.includes("temporary"))return;let r=`${this.path.label}.temporary`;this.read(r,()=>({op:"getContentControlTemporary",contentControl:o}),i=>{this.setLoadedProperty("temporary",B(i,r));});}#n(t,e){let o=this.#r(),r=h.promised(this.context,t,false);return this.read(t,()=>({op:"getContentControlRange",contentControl:o,location:e}),i=>{r.hydrateAddress({kind:"span",span:f(i,t)});}),r}#i(t,e){let o=this.#r();this.command(t,()=>({op:"setContentControlProperties",contentControl:o,...e}));}#a(t,e,o){(typeof t!="boolean"||typeof e!="boolean")&&a({code:"InvalidArgument",target:o});let r=t&&e?"sdtContentLocked":t?"sdtLocked":e?"contentLocked":"unlocked",i=this.#r();this.command(o,()=>({op:"setContentControlProperties",contentControl:i,lock:r}));}#r(){return this.requireAddressable(),this.path.handle()}},j=class n extends y{#t;#e;static of(t,e,o,r){return new n(t,l.derived(e,o),r,()=>({op:"getContentControls",scope:r}))}constructor(t,e,o,r){super(t,e),this.#t=o,this.#e=r;}getFirst(){return this.edge("first","getFirst",false)}getFirstOrNullObject(){return this.edge("first","getFirstOrNullObject",true)}getById(t){let e=`${this.path.label}.getById`;Number.isInteger(t)||a({code:"InvalidArgument",target:e});let o=this.#t,r=$.promised(this.context,e,false);return this.enqueue({sort:"read",label:e,plan:()=>({op:"getContentControlById",scope:o,id:t}),settle:i=>{r.hydrateAddress({kind:"handle",handle:g(i,e)});}}),r}getByTag(t){let e=`${this.path.label}.getByTag`,o=zt(t,e),r=this.#t;return new n(this.context,l.derived(e,this.path),r,()=>({op:"getContentControlsByTag",scope:r,tag:o}))}getByTitle(t){let e=`${this.path.label}.getByTitle`,o=zt(t,e),r=this.#t;return new n(this.context,l.derived(e,this.path),r,()=>({op:"getContentControlsByTitle",scope:r,title:o}))}listing(){return this.#e()}itemAt(t,e){return $.at(this.context,t,e)}promised(t,e){return $.promised(this.context,t,e)}};function It(n,t){return (typeof n!="string"||n.length>Gt)&&a({code:"InvalidArgument",target:t}),n}function zt(n,t){let e=It(n,t);return e.length===0&&a({code:"InvalidArgument",target:t}),e}function Ae(n,t){switch(n){case "Whole":return "whole";case "Content":return "content";case "Start":return "start";case "End":return "end";case "Before":return "before";case "After":return "after";default:return a({code:"InvalidArgument",target:t})}}function Ce(n,t){(typeof n!="object"||n===null)&&a({code:"InvalidArgument",target:t});let e=n;if(e.kind==="text"||e.kind==="listItem"){let o=e.kind==="text"?e.text:e.value;return (typeof o!="string"||o.length>Gt)&&a({code:"InvalidArgument",target:t}),e.kind==="text"?{kind:"text",text:o}:{kind:"listItem",value:o}}if(e.kind==="checkbox")return typeof e.checked!="boolean"&&a({code:"InvalidArgument",target:t}),{kind:"checkbox",checked:e.checked};if(e.kind==="date")return (typeof e.iso!="string"||e.iso.length>64)&&a({code:"InvalidArgument",target:t}),{kind:"date",iso:e.iso};a({code:"InvalidArgument",target:t});}function Qt(n){if(n.length===0)return null;let t=new Date(n);return Number.isNaN(t.getTime())?null:t}var yt=class extends p{hydrateAddress(t){t.kind==="handle"?this.path.resolveTo(t.handle):this.path.resolveNull();}hydrateNull(){this.path.resolveNull();}get authorName(){return this.loadedProperty("authorName")}get creationDate(){return this.loadedProperty("creationDate")}get id(){return this.loadedProperty("id")}get text(){return this.loadedProperty("text")}loadCommentFields(t,e){let o=this.selection(t,["authorName","creationDate","id","text",...e]),r=this.commentHandle();if(o.includes("authorName")&&this.loadTextInto("authorName",()=>({op:"getCommentAuthor",comment:r})),o.includes("text")&&this.loadTextInto("text",()=>({op:"getCommentText",comment:r})),o.includes("id")&&this.loadTextInto("id",()=>({op:"getCommentId",comment:r})),o.includes("creationDate")){let s=`${this.path.label}.creationDate`;this.read(s,()=>({op:"getCommentDate",comment:r}),d=>{this.setLoadedProperty("creationDate",Qt(x(d,s)));});}if(!o.includes("resolved"))return;let i=`${this.path.label}.resolved`;this.read(i,()=>({op:"getCommentResolved",comment:r}),s=>{this.setLoadedProperty("resolved",B(s,i));});}commentHandle(){return this.requireAddressable(),this.path.handle()}},F=class n extends yt{static at(t,e,o){return o.kind!=="handle"&&a({code:"InvalidObjectPath",target:e}),new n(t,l.of(e,o.handle),false)}static promised(t,e,o){return new n(t,l.pending(e),o)}constructor(t,e,o){super(t,e,{nullable:o});}onLoad(t){this.loadCommentFields(t,[]);}},st=class n extends y{#t;static of(t,e,o,r){return new n(t,l.derived(e,o),r)}constructor(t,e,o){super(t,e),this.#t=o;}getFirst(){return this.edge("first","getFirst",false)}listing(){return this.#t()}itemAt(t,e){return F.at(this.context,t,e)}promised(t,e){return F.promised(this.context,t,e)}},K=class n extends yt{#t;static at(t,e,o){return o.kind!=="handle"&&a({code:"InvalidObjectPath",target:e}),new n(t,l.of(e,o.handle),false)}static promised(t,e,o){return new n(t,l.pending(e),o)}constructor(t,e,o){super(t,e,{nullable:o});}get resolved(){return this.loadedProperty("resolved")}set resolved(t){let e=`${this.path.label}.resolved`;typeof t!="boolean"&&a({code:"InvalidArgument",target:e});let o=this.commentHandle();this.commandAnswering(e,()=>({op:"setCommentResolved",comment:o,resolved:t}),r=>{A(r,e);});}get replies(){return this.#t??=st.of(this.context,`${this.path.label}.replies`,this.path,()=>({op:"getCommentReplies",comment:this.commentHandle()})),this.#t}getRange(){let t=`${this.path.label}.getRange`,e=this.commentHandle(),o=h.promised(this.context,t,false);return this.read(t,()=>({op:"getCommentRange",comment:e}),r=>{o.hydrateAddress({kind:"span",span:f(r,t)});}),o}reply(t){let e=`${this.path.label}.reply`;(typeof t!="string"||t.length===0)&&a({code:"InvalidArgument",target:e});let o=this.internals.author;(typeof o!="string"||o.trim().length===0)&&a({code:"NotSupported",target:e});let r=this.commentHandle(),i=F.promised(this.context,e,false);return this.commandAnswering(e,()=>({op:"replyToComment",comment:r,text:t,author:o}),s=>{i.hydrateAddress({kind:"handle",handle:g(s,e)});}),i}onLoad(t){this.loadCommentFields(t,["resolved"]);}},T=class n extends y{#t;static of(t,e,o,r){return new n(t,l.derived(e,o),r)}constructor(t,e,o){super(t,e),this.#t=o;}getFirst(){return this.edge("first","getFirst",false)}listing(){return this.#t()}itemAt(t,e){return K.at(this.context,t,e)}promised(t,e){return K.promised(this.context,t,e)}},Y=class n extends p{static at(t,e,o){return o.kind!=="handle"&&a({code:"InvalidObjectPath",target:e}),new n(t,l.of(e,o.handle),false)}static promised(t,e,o){return new n(t,l.pending(e),o)}constructor(t,e,o){super(t,e,{nullable:o});}hydrateAddress(t){t.kind==="handle"?this.path.resolveTo(t.handle):this.path.resolveNull();}hydrateNull(){this.path.resolveNull();}get author(){return this.loadedProperty("author")}get date(){return this.loadedProperty("date")}get type(){return this.loadedProperty("type")}get range(){let t=`${this.path.label}.range`,e=this.#t(),o=h.promised(this.context,t,false);return this.read(t,()=>({op:"getRevisionRange",revision:e}),r=>{o.hydrateAddress({kind:"span",span:f(r,t)});}),o}accept(){let t=this.#t();this.command("accept",()=>({op:"acceptRevision",revision:t}));}reject(){let t=this.#t();this.command("reject",()=>({op:"rejectRevision",revision:t}));}onLoad(t){let e=this.selection(t,["author","date","type"]),o=this.#t();if(e.includes("author")&&this.loadTextInto("author",()=>({op:"getRevisionAuthor",revision:o})),e.includes("type")&&this.loadTextInto("type",()=>({op:"getRevisionType",revision:o})),!e.includes("date"))return;let r=`${this.path.label}.date`;this.read(r,()=>({op:"getRevisionDate",revision:o}),i=>{this.setLoadedProperty("date",Qt(x(i,r)));});}#t(){return this.requireAddressable(),this.path.handle()}},q=class n extends y{#t;#e;static of(t,e,o,r,i){return new n(t,l.derived(e,o),r,i)}constructor(t,e,o,r){super(t,e),this.#t=o,this.#e=r;}acceptAll(){let t=this.#e;this.commandOn("acceptAll",()=>({op:"acceptAllRevisions",document:t}));}rejectAll(){let t=this.#e;this.commandOn("rejectAll",()=>({op:"rejectAllRevisions",document:t}));}listing(){return {op:"getRevisions",body:this.#t}}itemAt(t,e){return Y.at(this.context,t,e)}promised(t,e){return Y.promised(this.context,t,e)}commandOn(t,e){let o=`${this.path.label}.${t}`;this.enqueue({sort:"write",label:o,plan:e,settle:r=>{A(r,o);}});}};var I=class n extends p{#t;#e;#o;#n;#i;static main(t,e){return new n(t,l.of(e,ot(t).roots().body))}static promisedStory(t,e){return new n(t,l.pending(e))}hydrateAddress(t){t.kind==="handle"?this.path.resolveTo(t.handle):this.path.resolveNull();}constructor(t,e){super(t,e);}get text(){return this.loadedProperty("text")}get paragraphs(){return this.#t??=this.paragraphsUnder(`${this.path.label}.paragraphs`),this.#t}get font(){return this.#e??=S.of(this.context,`${this.path.label}.font`,this.path,"body"),this.#e}paragraphsUnder(t){return v.of(this.context,t,this.path)}get style(){return this.loadedProperty("style")}set style(t){let e=`${this.path.label}.style`,o=z(t,e);this.requireAddressable(),this.command("style",()=>({op:"setStyle",span:E(this.path,"body"),name:o}));}get lists(){return this.#o??=W.of(this.context,`${this.path.label}.lists`,this.path,this.#r()),this.#o}get contentControls(){return this.#n??=j.of(this.context,`${this.path.label}.contentControls`,this.path,{body:this.#r()}),this.#n}getComments(){let t=`${this.path.label}.getComments`,e=this.#r();return T.of(this.context,t,this.path,()=>({op:"getComments",scope:{body:e}}))}get revisions(){return this.#i??=q.of(this.context,`${this.path.label}.revisions`,this.path,this.#r(),this.internals.roots().document),this.#i}search(t,e){let o=`${this.path.label}.search`;typeof t!="string"&&a({code:"InvalidArgument",target:o});let r=ft(e,o),i=this.#r();return k.of(this.context,o,this.path,()=>({op:"search",scope:{body:i},text:t,...r===void 0?{}:{options:r}}))}clear(){let t=this.#r();this.commandDiscarding("clear",()=>({op:"replaceSpan",span:{body:t},text:""}));}insertText(t,e){let o=`${this.path.label}.insertText`,r=C(t,o),i=Dt(e,o),s=this.#r(),d=h.promised(this.context,o,false);return this.commandAnswering(o,()=>i==="Replace"?{op:"replaceSpan",span:{body:s},text:r}:{op:"insertText",at:{body:s,at:i==="Start"?"start":"end"},text:r},c=>{d.hydrateAddress({kind:"span",span:f(c,o)});}),d}insertParagraph(t,e){let o=`${this.path.label}.insertParagraph`,r=C(t,o),i=$t(e,o),s=this.#r(),d=R.promised(this.context,o,false);return this.commandAnswering(o,()=>({op:"insertParagraph",anchor:{body:s,at:i==="Start"?"first":"last"},where:i==="Start"?"before":"after",text:r}),c=>{c.kind!=="handle"&&a({code:"GeneralException",target:o}),d.hydrateAddress({kind:"handle",handle:c.handle});}),d}onLoad(t){let e=this.selection(t,["text","style"]);if(e.includes("text")){let o=this.#r();this.loadTextInto("text",()=>({op:"getText",target:o}));}e.includes("style")&&this.#a();}#a(){let t=`${this.path.label}.style`;this.requireAddressable(),this.read(t,()=>({op:"getStyle",span:E(this.path,"body")}),e=>{this.setLoadedProperty("style",nt(e,t));});}#r(){return this.requireAddressable(),this.path.handle()}};function ve(n){return n==="endnote"?"Endnote":"Footnote"}var Z=class n extends p{#t;static at(t,e,o){return o.kind!=="handle"&&a({code:"InvalidObjectPath",target:e}),new n(t,l.of(e,o.handle),false)}static promised(t,e,o){return new n(t,l.pending(e),o)}constructor(t,e,o){super(t,e,{nullable:o});}hydrateAddress(t){t.kind==="handle"?this.path.resolveTo(t.handle):this.path.resolveNull();}hydrateNull(){this.path.resolveNull();}get type(){return this.loadedProperty("type")}get body(){if(this.#t)return this.#t;let t=`${this.path.label}.body`,e=this.#e(),o=I.promisedStory(this.context,t);return this.read(t,()=>({op:"getNoteBody",note:e}),r=>{o.hydrateAddress({kind:"handle",handle:g(r,t)});}),this.#t=o,o}delete(){let t=this.#e();this.command("delete",()=>({op:"deleteNote",note:t}));}getNext(){let t=`${this.path.label}.getNext`,e=this.#e(),o=n.promised(this.context,t,false),r=this.internals.roots().document,i=`${t}.type`,s="footnote";return this.read(i,()=>({op:"getNoteKind",note:e}),d=>{s=x(d,i)==="endnote"?"endnote":"footnote";}),this.read(t,()=>({op:"getNotes",document:r,noteKind:s}),d=>{let c=P(d,t),b=c.findIndex(St=>St.ref===e.ref),N=b<0?void 0:c[b+1];N||a({code:"ItemNotFound",target:t}),o.hydrateAddress({kind:"handle",handle:N});}),o}onLoad(t){if(!this.selection(t,["type"]).includes("type"))return;let e=`${this.path.label}.type`,o=this.#e();this.read(e,()=>({op:"getNoteKind",note:o}),r=>{this.setLoadedProperty("type",ve(x(r,e)));});}#e(){return this.requireAddressable(),this.path.handle()}},H=class n extends y{#t;static of(t,e,o,r){return new n(t,l.derived(e,o),r)}constructor(t,e,o){super(t,e),this.#t=o;}getFirst(){return this.edge("first","getFirst",false)}listing(){return this.#t()}itemAt(t,e){return Z.at(this.context,t,e)}promised(t,e){return Z.promised(this.context,t,e)}};var Re=Object.freeze({Primary:"default",FirstPage:"first",EvenPages:"even"}),Oe=["pageWidth","pageHeight","orientation","topMargin","rightMargin","bottomMargin","leftMargin"],dt=class n extends p{#t;static of(t,e,o){return new n(t,l.derived(e,o))}constructor(t,e){super(t,e);}get pageWidth(){return this.loadedProperty("pageWidth")}set pageWidth(t){this.#e("pageWidth",J(t,`${this.path.label}.pageWidth`));}get pageHeight(){return this.loadedProperty("pageHeight")}set pageHeight(t){this.#e("pageHeight",J(t,`${this.path.label}.pageHeight`));}get orientation(){return this.loadedProperty("orientation")}set orientation(t){let e=`${this.path.label}.orientation`;t!=="Portrait"&&t!=="Landscape"&&a({code:"InvalidArgument",target:e}),this.#e("orientation",t==="Portrait"?"portrait":"landscape");}get topMargin(){return this.loadedProperty("topMargin")}set topMargin(t){this.#e("topMargin",J(t,`${this.path.label}.topMargin`));}get bottomMargin(){return this.loadedProperty("bottomMargin")}set bottomMargin(t){this.#e("bottomMargin",J(t,`${this.path.label}.bottomMargin`));}get leftMargin(){return this.loadedProperty("leftMargin")}set leftMargin(t){this.#e("leftMargin",J(t,`${this.path.label}.leftMargin`));}get rightMargin(){return this.loadedProperty("rightMargin")}set rightMargin(t){this.#e("rightMargin",J(t,`${this.path.label}.rightMargin`));}onLoad(t){let e=this.selection(t,Oe);if(e.length===0)return;let o=`${this.path.label}.pageSetup`,r=this.#o();this.read(o,()=>({op:"getPageSetup",section:r}),i=>{let s=Ot(i,o);for(let d of e)this.setLoadedProperty(d,d==="orientation"?s.orientation==="landscape"?"Landscape":"Portrait":s[d]);});}#e(t,e){if(this.requireAddressable(),this.#t){this.#t[t]=e;return}let o={[t]:e};this.#t=o;let r=this.#o(),i=`${this.path.label}.${t}`;this.commandAnswering(`${this.path.label}.pageSetup`,()=>(this.#t=void 0,{op:"setPageSetup",section:r,setup:o}),s=>{A(s,i);});}#o(){this.requireAddressable();let t=this.path.address();return t.kind!=="handle"&&a({code:"InvalidObjectPath",target:this.path.label}),t.handle}},_=class n extends p{#t;#e;static at(t,e,o){return o.kind!=="handle"&&a({code:"InvalidObjectPath",target:e}),new n(t,l.of(e,o.handle),false)}static promised(t,e,o){return new n(t,l.pending(e),o)}constructor(t,e,o){super(t,e,{nullable:o});}hydrateAddress(t){t.kind==="handle"?this.path.resolveTo(t.handle):this.path.resolveNull();}hydrateNull(){this.path.resolveNull();}get body(){return this.#e??=I.main(this.context,`${this.path.label}.body`),this.#e}get pageSetup(){return this.#t??=dt.of(this.context,`${this.path.label}.pageSetup`,this.path),this.#t}getHeader(t){return this.#o("header",t,"getHeader")}getFooter(t){return this.#o("footer",t,"getFooter")}getNext(){let t=`${this.path.label}.getNext`,e=this.#n(),o=n.promised(this.context,t,false),r=this.internals.roots().document;return this.read(t,()=>({op:"getSections",document:r}),i=>{let s=P(i,t),d=s.findIndex(b=>b.ref===e.ref),c=d<0?void 0:s[d+1];c||a({code:"ItemNotFound",target:t}),o.hydrateAddress({kind:"handle",handle:c});}),o}onLoad(t){this.selection(t,[]);}#o(t,e,o){let r=`${this.path.label}.${o}`,i=Re[e];i===void 0&&a({code:"InvalidArgument",target:r});let s=this.#n(),d=I.promisedStory(this.context,r);return this.read(r,()=>({op:"getFurniture",section:s,kind:t,variant:i}),c=>{d.hydrateAddress({kind:"handle",handle:g(c,r)});}),d}#n(){return this.requireAddressable(),this.path.handle()}},tt=class n extends y{#t;static of(t,e,o,r){return new n(t,l.derived(e,o),r)}constructor(t,e,o){super(t,e),this.#t=o;}getFirst(){return this.edge("first","getFirst",false)}listing(){return this.#t()}itemAt(t,e){return _.at(this.context,t,e)}promised(t,e){return _.promised(this.context,t,e)}};function J(n,t){return (typeof n!="number"||!Number.isFinite(n)||n<0)&&a({code:"InvalidArgument",target:t}),n}var et=class n extends p{#t;#e;#o;#n;#i;#a;#r;#s;static open(t){return new n(t)}constructor(t){super(t,l.of("document",ot(t).roots().document));}get body(){return this.#t??=I.main(this.context,"document.body"),this.#t}get paragraphs(){return this.#e??=this.body.paragraphsUnder("document.paragraphs"),this.#e}get sections(){let t=this.path.handle();return this.#o??=tt.of(this.context,"document.sections",this.path,()=>({op:"getSections",document:t})),this.#o}get contentControls(){return this.#a??=j.of(this.context,"document.contentControls",this.path,{body:this.internals.roots().body}),this.#a}get comments(){return this.#n??=T.of(this.context,"document.comments",this.path,()=>({op:"getComments",scope:{body:this.internals.roots().body}})),this.#n}get revisions(){return this.#i??=q.of(this.context,"document.revisions",this.path,this.internals.roots().body,this.path.handle()),this.#i}get footnotes(){let t=this.path.handle();return this.#r??=H.of(this.context,"document.footnotes",this.path,()=>({op:"getNotes",document:t,noteKind:"footnote"})),this.#r}get endnotes(){let t=this.path.handle();return this.#s??=H.of(this.context,"document.endnotes",this.path,()=>({op:"getNotes",document:t,noteKind:"endnote"})),this.#s}onLoad(t){this.selection(t,[]);}};function bt(n){let t=n.host,e=t.capabilities,o=typeof n.author=="string"&&n.author.trim().length>0?n.author:void 0,r=false,i=null,s=m=>{r&&a({code:"RuntimeDisposed",...m===void 0?{}:{target:m}});},d=()=>{if(i)return i;s("document");let m=Xt(t.execute({operations:[{op:"getDocument"}]}),"document"),xt=Xt(t.execute({operations:[{op:"getBody",document:m}]}),"document.body");return i={document:m,body:xt},i},c={host:t,capabilities:e,...o===void 0?{}:{author:o},id:{},roots:d,assertLive:s,openDocument:m=>et.open(m)};try{d();}catch{i=null;}async function b(m,xt){s();let kt=typeof m=="function"?m:xt,Zt=typeof m=="function"?[]:Array.isArray(m)?m:[m];typeof kt!="function"&&a({code:"InvalidArgument",target:"run"});let{context:Jt,adopt:_t,finish:te}=it.begin(c);try{return _t(Zt),await kt(Jt)}finally{te();}}let N={capabilities:e,run:b,dispose(){r||(r=true,i=null,t.dispose());}};return n.save?{...N,async save(){s("save"),e.save||a({code:"NotSupported",target:"save"});let m=t.save();if(!m.ok)throw ut(m.error,{target:"save"});return m.bytes}}:N}function Xt(n,t){let e=n.results[0];if(e?.status==="error")throw ut(e.error,{target:t});if(e?.status!=="ok")throw new u({code:"GeneralException",target:t});return g(e.value,t)}function Kt(n){return bt({host:editor.createBrowserAutomationHost(n),save:false})}async function Yt(n,t={}){let e=automation.createServerAutomationHost(n,{...t.limits===void 0?{}:{limits:t.limits}});return e.ok||a({code:"InvalidArgument",target:"createServer"}),bt({host:e.host,save:true,...t.author===void 0?{}:{author:t.author}})}var wr=Object.freeze({createBrowser:Kt,createServer:Yt});exports.Body=I;exports.Bookmark=G;exports.BookmarkCollection=Q;exports.ClientObject=w;exports.ClientResult=Ct;exports.Comment=K;exports.CommentCollection=T;exports.CommentReply=F;exports.CommentReplyCollection=st;exports.ContentControl=$;exports.ContentControlCollection=j;exports.Document=et;exports.DocxEditor=wr;exports.DocxEditorError=u;exports.Font=S;exports.List=L;exports.ListCollection=W;exports.ListItem=U;exports.NoteItem=Z;exports.NoteItemCollection=H;exports.PageSetup=dt;exports.Paragraph=R;exports.ParagraphCollection=v;exports.Range=h;exports.RangeCollection=k;exports.RequestContext=it;exports.Revision=Y;exports.RevisionCollection=q;exports.Section=_;exports.SectionCollection=tt;exports.TrackedObjects=rt;exports.isDocxEditorError=ee;
|