@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 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
- Placeholder package reserving this name.
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
- See [docx-editor.dev](https://docx-editor.dev/) for docs.
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 };
@@ -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;