yamlover 0.3.25 → 0.3.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +15 -9
  2. package/bin/yamlover.js +14 -6
  3. package/dist/agent-docs/AGENTS.md +28 -2
  4. package/dist/builtin-taxonomy/$defs/.yamlover/meta.yamlover +6 -0
  5. package/dist/builtin-taxonomy/$defs/bullets +12 -0
  6. package/dist/builtin-taxonomy/$defs/chapter +19 -14
  7. package/dist/builtin-taxonomy/$defs/numbered +12 -0
  8. package/dist/builtin-taxonomy/$defs/table +17 -10
  9. package/dist/builtin-taxonomy/$defs/task +4 -3
  10. package/dist/client/assets/decoded-Dfxf1BRR.js +1 -0
  11. package/dist/client/assets/djvu-BAFaxONw.js +1 -0
  12. package/dist/client/assets/{docx-C3gzsgKj.js → docx-aCX_2O0_.js} +1 -1
  13. package/dist/client/assets/{heic-CZ82O7cO.js → heic-8pzTwsCx.js} +2 -2
  14. package/dist/client/assets/imagemap-Bp26n33x.js +1 -0
  15. package/dist/client/assets/index-BohJjyVY.css +1 -0
  16. package/dist/client/assets/index-DXrtwPKE.js +754 -0
  17. package/dist/client/assets/map-Dtw0_sOf.js +1 -0
  18. package/dist/client/assets/{openable-d9huG_69.js → openable-Banncb36.js} +2 -2
  19. package/dist/client/assets/paged-BGVPKMC7.js +1 -0
  20. package/dist/client/assets/{pdf-DYI9E6LP.js → pdf-eI1AsxuB.js} +5 -5
  21. package/dist/client/assets/psd-BD_hUWIy.js +11 -0
  22. package/dist/client/assets/{spreadsheet-DQ1DIIfm.js → spreadsheet-D_yjjR8a.js} +1 -1
  23. package/dist/client/assets/tiff-BewNDYwu.js +1 -0
  24. package/dist/client/index.html +2 -2
  25. package/dist/server.js +2496 -627
  26. package/package.json +2 -1
  27. package/dist/client/assets/decoded-BfD5vW9k.js +0 -1
  28. package/dist/client/assets/djvu-DNElocuz.js +0 -1
  29. package/dist/client/assets/imagemap-B0by6U04.js +0 -1
  30. package/dist/client/assets/index-C3Raqez8.css +0 -1
  31. package/dist/client/assets/index-DHpG_wBG.js +0 -665
  32. package/dist/client/assets/map-Byy6U5tc.js +0 -1
  33. package/dist/client/assets/paged-DFA2Muzj.js +0 -1
  34. package/dist/client/assets/psd-CmNn7r6o.js +0 -11
  35. package/dist/client/assets/tiff-BoTWsGfS.js +0 -1
package/README.md CHANGED
@@ -156,9 +156,10 @@ One edit `{ path, op, yamlover?, meta?, concrete?, name? }`, or a batch `{ edits
156
156
  order and grouped by backing file. It **splices source lines** rather than reserializing, so
157
157
  comments, quoting, and block scalars elsewhere in the document survive an edit untouched.
158
158
 
159
- `path` is a plain yamlover path naming the node being edited; each segment is a key (`:doc:title`)
160
- or an **absolute entry index** (`:doc[3]` — keyed entries consume indices too). A node has four
161
- **facets**: its scalar value, its keyed entries, its ordinal entries, and its `!!<…>` meta tag.
159
+ `path` is a plain yamlover path naming the node being edited; each segment is a key
160
+ (`:doc:description`) or an **absolute entry index** (`:doc[3]` — keyed entries consume indices
161
+ too). A node has four **facets**: its scalar value, its keyed entries, its ordinal entries, and
162
+ its `!!<…>` meta tag.
162
163
 
163
164
  | op | facets | `meta` |
164
165
  |----|--------|--------|
@@ -169,6 +170,9 @@ or an **absolute entry index** (`:doc[3]` — keyed entries consume indices too)
169
170
 
170
171
  That is why editing a chunk's prose is an `emplace`: an annotated chunk is an omni node whose tag
171
172
  applications are keyed entries laid over its scalar, and only the scalar facet is being replaced.
173
+ A chapter's **title** works the same way — it is the chapter node's own scalar self-value
174
+ (CHAPTER.md), so a title edit is an `emplace` on the chapter path itself (an empty payload drops
175
+ the title line).
172
176
 
173
177
  `yamlover` is valid inline yamlover **source**, not prose — the caller escapes its own text (the web
174
178
  client through `escapeYamloverScalar`), and the server parses the fragment to validate it before
@@ -217,7 +221,7 @@ Registered today (a representative slice — the registry is the source of truth
217
221
  | `chapter` | `x-yamlover-chapter` | a positional body: numbered chunks + subchapter links |
218
222
  | `tag` / `board` | `x-yamlover-tag` / `x-yamlover-board` | tag-hierarchy diagram / board (handled outside the specificity loop) |
219
223
  | `task` | `x-yamlover-task` | task view |
220
- | `table` | `x-yamlover-table` | a grid (`TABLE.md`): rows/header/caption from the omni entries, merged cells (`colSpan`/`rowSpan`) from resolved relative-index `*` pointers, nested tables inline, marklower cells; prose cells edit in place under the lock |
224
+ | `table` | `x-yamlover-table` | a grid (`MARKLOWER.md`): rows/header/caption from the omni entries, merged cells (`colSpan`/`rowSpan`) from resolved relative-index `*` pointers, nested tables inline, marklower cells; prose cells edit in place under the lock |
221
225
  | `marklower` | `text/marklower` (a chapter's prose chunks, by schema propagation) | its own inline grammar (`MARKLOWER.md`): emphasis, `` `code` ``, `$$math$$` via KaTeX, links, and `*[…](…)` media embeds |
222
226
  | `markdown` | `text/markdown` | [marked](https://marked.js.org) |
223
227
  | `asciidoc` | `text/asciidoc` | [@asciidoctor/core](https://asciidoctor.org) |
@@ -285,10 +289,11 @@ $ npm test # run once
285
289
  $ npm run test:watch
286
290
  ```
287
291
 
288
- This server suite is **separate** from the repository root's `npm test`, which
289
- runs only the parser and engine suites. CI gates on the server suite, so run
290
- both before pushing. (Run everything from the project root — see the root
291
- `package.json`.)
292
+ This server suite is **separate** from the repository root's `npm test` (which
293
+ runs only the parser and engine suites) and from the editor package's own suite
294
+ (`npm --prefix tools/yed test` the grammar/corpus conformance gate,
295
+ `EDITOR.md` §9). CI gates on all of them, so run them before pushing. (Run
296
+ everything from the project root — see the root `package.json`.)
292
297
 
293
298
  ## Layout
294
299
 
@@ -305,7 +310,8 @@ src/server/ the engine-backed JSON API
305
310
  extract/ the thumbnail pipeline: decoder registry (raster/psd/webp/avif) + scaling
306
311
  agent-docs/ the AGENTS.md / CLAUDE.md guide installed by POST /api/agent-docs
307
312
  src/client/ the React SPA (tree, node view, render, icons, paths, live SSE)
308
- renderers/ facet-predicate renderer registry + per-format renderers
313
+ renderers/ facet-predicate renderer registry + per-format renderers; the
314
+ unlocked editors are yed mounts over ../yed (@yamlover/yed) — EDITOR.md
309
315
  vendor/djvu.js prebuilt DjVu.js bundle (GPL-v2; see vendor/README.md)
310
316
  test/ Vitest suite (server logic + client components)
311
317
  index.html SPA shell
package/bin/yamlover.js CHANGED
@@ -167,7 +167,7 @@ if (prod) {
167
167
  // misses it, so a raw asset (notably pdf.js's worker) 404s to index.html.
168
168
  // The client re-parses edited yamlover source with the real parser (renderers/value-editors.tsx →
169
169
  // ../../parser/ts/src/yamlover.ts), which lives OUTSIDE pkgRoot — allow Vite to serve it over /@fs.
170
- const fsAllow = [pkgRoot, resolve(pkgRoot, "../parser")];
170
+ const fsAllow = [pkgRoot, resolve(pkgRoot, "../parser"), resolve(pkgRoot, "../yed")];
171
171
  try {
172
172
  const req = createRequire(join(pkgRoot, "package.json"));
173
173
  reactAlias["react"] = dirname(req.resolve("react/package.json"));
@@ -265,6 +265,14 @@ if (prod) {
265
265
  };
266
266
  }
267
267
 
268
+ // HH:MM:SS.mmm (local time) on every terminal line, so slow phases are diagnosable
269
+ // against the wall clock.
270
+ const ts = () => {
271
+ const d = new Date();
272
+ const p = (n, w = 2) => String(n).padStart(w, "0");
273
+ return `${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}.${p(d.getMilliseconds(), 3)}`;
274
+ };
275
+
268
276
  // The initial index runs as a BACKGROUND task — the server listens immediately
269
277
  // (serving the previous on-disk index, or an empty tree on a cold start) while
270
278
  // progress lands here and in the web UI (SSE task frames + GET /api/tasks).
@@ -272,9 +280,9 @@ handle = createHandlers(dataRoot, {
272
280
  gitignore,
273
281
  watch: true, // re-index + push on external edits
274
282
  ensureSettings: true, // create .yamlover/settings.yamlover with defaults if absent (so the gear opens)
275
- log: (line) => console.log(`yamlover ${line}`),
283
+ log: (line) => console.log(`yamlover ${ts()} ${line}`),
276
284
  });
277
- handle.ready.catch((e) => console.error("yamlover: indexing failed:", e));
285
+ handle.ready.catch((e) => console.error(`yamlover ${ts()} indexing failed:`, e));
278
286
 
279
287
  // --- static file server (production mode) --------------------------------- //
280
288
  const MIME = {
@@ -352,7 +360,7 @@ function listenWithFallback(p, triesLeft) {
352
360
  const onError = (err) => {
353
361
  server.off("listening", onListening); // drop this attempt's success handler
354
362
  if (err && err.code === "EADDRINUSE" && triesLeft > 0) {
355
- console.log(`yamlover port ${p} in use — trying ${p + 1}…`);
363
+ console.log(`yamlover ${ts()} port ${p} in use — trying ${p + 1}…`);
356
364
  listenWithFallback(p + 1, triesLeft - 1);
357
365
  } else if (err && err.code === "EADDRINUSE") {
358
366
  console.error(`yamlover: no free port found in ${port}–${p}`);
@@ -363,8 +371,8 @@ function listenWithFallback(p, triesLeft) {
363
371
  };
364
372
  const onListening = () => {
365
373
  server.off("error", onError); // bound OK — stop intercepting listen errors
366
- console.log(`yamlover serving ${dataRoot}${prod ? "" : " (live/Vite)"}`);
367
- console.log(` http://${shown}:${p}/ (bound to ${host})`);
374
+ console.log(`yamlover ${ts()} serving ${dataRoot}${prod ? "" : " (live/Vite)"}`);
375
+ console.log(` http://${shown}:${p}/ (bound to ${host})`);
368
376
  };
369
377
  server.once("error", onError);
370
378
  server.once("listening", onListening);
@@ -70,8 +70,8 @@ key c". Canonical style writes `: ` (colon + space) after each step; a colon wit
70
70
  also parses.
71
71
 
72
72
  `/` is an **ordinary character** now — MIME-type keys (`text/html`), date keys (`01/02/2026`)
73
- and URL-ish keys ride bare in a path. (Legacy files may still use `/` as a separator during a
74
- migration window; **new content you author should use `:`**.)
73
+ and URL-ish keys ride bare in a path. (The old `/`-separator form is DEAD it no longer
74
+ parses as a path: `*/pets` is a dangling reference to the literal key "/pets". Author `:` only.)
75
75
 
76
76
  ### The scope ladder — more colons, wider scope
77
77
 
@@ -176,6 +176,32 @@ So to add a pointer or a value "to a folder", you edit (or create) that folder's
176
176
  `.yamlover/body.yamlover`. Plain files inside the directory are its members; a `.yamlover/`
177
177
  subdir does not appear as a member — it's the overlay.
178
178
 
179
+ A pure pointer-array body (`- *file1` …) is the ORDER overlay: it grants positions to the
180
+ members it names (the projection shows each consumed key as a dimmed derived `&` anchor,
181
+ `- &file1 value`); a member the body never names stays keyed-only, after the ordered block.
182
+ Editing derives storage for NEW children by the INHERITANCE RULES (`concrete-rules.ts` — one
183
+ pure module, an explicit `concrete:` always wins): a directory-concrete parent keeps children
184
+ directory-concrete; a keyed container child becomes a nested real directory; an untagged
185
+ keyless (ordinal) container child becomes an order-numbered subdirectory (`item01`,
186
+ `item02`, …) referenced by a `- *: itemNN` pointer-array element; scalars and tagged containers
187
+ (tables, typographical lists) go inline into `body.yamlover`. Title-born subchapter members are
188
+ numbered too (`01-Введение`). The numbers are COSMETIC listing order — the body pointer-array is
189
+ the order's data, and an existing member is NEVER renamed: an insert between neighbors slots a
190
+ sub-number (`item01-1`, `01-1-Новая`). Content inside a file document speaks that file's
191
+ language (a `.json5p` interior never switches to yaml).
192
+
193
+ **Collapse / expand / promotion — the same node, two shapes.** The two concretes are
194
+ freely interconvertible without changing what the data means: a child stored as
195
+ `child.yamlover` (collapsed) and the same child stored as `child/` with a
196
+ `.yamlover/body.yamlover` (expanded) are equivalent. Converting a single-file node **into**
197
+ a directory is called **directory promotion** (the UI's action; the engine keeps inbound
198
+ pointers valid across it, like `mv`). If you do it by hand, it is a two-step move: create the
199
+ `child/` directory, move the file's contents into `child/.yamlover/body.yamlover` (plus any
200
+ members as files), and delete the old `child.yamlover` — then let the engine reindex. Because
201
+ it is a move, treat it with the same care as any rename: pointers that addressed the old file
202
+ path must still resolve (prefer the mediated `mv`/promotion in the UI, which rewrites them —
203
+ see §10).
204
+
179
205
  ---
180
206
 
181
207
  ## 8. Annotations & fragments (tags applied to content)
@@ -24,5 +24,11 @@ properties:
24
24
  type: string
25
25
  format: yamlover/meta
26
26
  table:
27
+ type: string
28
+ format: yamlover/meta
29
+ bullets:
30
+ type: string
31
+ format: yamlover/meta
32
+ numbered:
27
33
  type: string
28
34
  format: yamlover/meta
@@ -0,0 +1,12 @@
1
+ # $defs/bullets — a typographical UNORDERED (bullet) list: an ordinary yamlover list whose
2
+ # keyless entries are the items. An item is marklower prose (a chunk) or — when it is an
3
+ # UNTAGGED container — a nested bullets list: unlike table's two-level budget, the list
4
+ # schema applies at ANY depth, until an explicit !!<…> tag switches to something else.
5
+ # A titled list is a chapter holding a list — no keyed properties here on purpose.
6
+ # Attach with !!<*yamlover: $defs: bullets>.
7
+ # No explicit `format:` — `type: variant` derives x-yamlover-bullets. Spec: ../MARKLOWER.md.
8
+ type: variant
9
+ items:
10
+ anyOf:
11
+ - *:: yamlover: $defs: bullets # an untagged container item = a nested sublist, SAME kind
12
+ - *:: yamlover: $defs: chunk # a list item — marklower prose
@@ -1,26 +1,31 @@
1
- # $defs/chapter — a document node: an OMNI node with optional title/description and a
2
- # positional body. The body is a plain sequence of unkeyed elements, read top to bottom;
3
- # each element is EITHER a nested chapter (the recursion) OR a chunk (a renderable block).
1
+ # $defs/chapter — a document node: a FULLY OMNI node. The node's own scalar SELF-VALUE is the
2
+ # TITLE there is no `title:` key; `description` stays keyed; every keyless entry is a
3
+ # positional body element, read top to bottom: EITHER a nested chapter (the recursion) OR a
4
+ # chunk (a renderable block).
4
5
  #
5
6
  # There is no `chunks` array and no `children` array — prose, media, diagrams, and
6
7
  # subchapters are siblings in ONE ordered stream. Attach it to a yamlover node with the
7
8
  # tag !!<*yamlover/$defs/chapter>. Spec: ../CHAPTER.md, ../META.md.
8
9
  #
9
- # `type: variant` is the omni node: keyed fields (title/description) AND positional
10
- # elements (the body) at once. The body element type is a union — a chapter OR a chunk;
11
- # the two are told apart structurally (a chapter is a container, a chunk is a leaf).
12
- # NOTE: `properties` (keyed) + `items` (ordinal) is the JSON-Schema encoding of an omni
13
- # node's two facets; META.md §Vocabulary proposes a native `elements`/`additionalElements`.
10
+ # `type: variant` is the omni node: a scalar self-value (the title, given as `value:`) AND
11
+ # keyed fields (description) AND positional elements (the body) at once. The body element type
12
+ # is a union — a chapter OR a chunk; the two are told apart structurally (a chapter is a
13
+ # container, a chunk is a leaf). A BARE SCALAR body element is therefore both "a chunk" and
14
+ # "a title-only subchapter" the same thing, by design (CHAPTER.md).
15
+ # NOTE: `value` (scalar) + `properties` (keyed) + `items` (ordinal) is the JSON-Schema encoding
16
+ # of an omni node's facets; META.md §Vocabulary proposes a native `elements`/`additionalElements`.
14
17
  type: variant
18
+ value: # the self-value — the chapter's TITLE
19
+ type: string
20
+ format: text/marklower
15
21
  properties:
16
- title:
17
- type: string
18
- format: text/marklower
19
- description: # optional subtitle / heading annotation
22
+ description: # optional subtitle / heading annotation — stays keyed
20
23
  type: string
21
24
  format: text/marklower
22
25
  items: # the body — a positional sequence, read top to bottom
23
26
  anyOf:
24
- - *:: yamlover: $defs: chapter # a nested subchapter (the recursion) — a container
25
- - *:: yamlover: $defs: table # a table — enters only by its EXPLICIT tag (TABLE.md)
27
+ - *:: yamlover: $defs: chapter # a nested subchapter (a container) — the recursion
28
+ - *:: yamlover: $defs: table # a table — enters only by its EXPLICIT tag (MARKLOWER.md)
29
+ - *:: yamlover: $defs: bullets # a bullet list — enters only by its explicit tag
30
+ - *:: yamlover: $defs: numbered # a numbered list — enters only by its explicit tag
26
31
  - *:: yamlover: $defs: chunk # a content block — a leaf
@@ -0,0 +1,12 @@
1
+ # $defs/numbered — a typographical ORDERED (numbered) list: an ordinary yamlover list whose
2
+ # keyless entries are the items. An item is marklower prose (a chunk) or — when it is an
3
+ # UNTAGGED container — a nested numbered list: unlike table's two-level budget, the list
4
+ # schema applies at ANY depth, until an explicit !!<…> tag switches to something else.
5
+ # A titled list is a chapter holding a list — no keyed properties here on purpose.
6
+ # Attach with !!<*yamlover: $defs: numbered>.
7
+ # No explicit `format:` — `type: variant` derives x-yamlover-numbered. Spec: ../MARKLOWER.md.
8
+ type: variant
9
+ items:
10
+ anyOf:
11
+ - *:: yamlover: $defs: numbered # an untagged container item = a nested sublist, SAME kind
12
+ - *:: yamlover: $defs: chunk # a list item — marklower prose
@@ -1,12 +1,16 @@
1
1
  # $defs/table — a grid node: an OMNI node whose keyless entries are the ROWS (top to
2
2
  # bottom), each row an array of CELLS (left to right). A row keyed `header` is the header
3
3
  # row; optional keyed `title` is the caption. The column count is inferred from the first
4
- # row. A cell is marklower prose (a chunk), a nested table (the untagged container), or a
5
- # CHAPTER entering only by its explicit tag, for a cell mixing prose and tables; a cell
6
- # that is a `*` pointer to its adjacent previous cell (`*[.-1]` left, `*..[.-1][.]` up
7
- # relative indexes, URIs.md) declares a MERGED cell: colspan/rowspan. Attach with
4
+ # row. The table schema consumes exactly TWO nesting levels rows, then cells; a cell
5
+ # that is an untagged container switches BACK to a CHAPTER (prose, subchapters, tables
6
+ # the same rules as a top chapter). A NESTED table like a list enters a cell only by
7
+ # its explicit !!<…> tag. A header cell may be an omni scalar carrying a keyed `width`
8
+ # sidecar — a proportional column weight (AsciiDoc `cols` style), rendered weight/sum %;
9
+ # `width` is deliberately schema-untyped (an omni cell must stay a LEAF for shape routing).
10
+ # A cell that is a `*` pointer to its adjacent previous cell (`*[.-1]` left, `*..[.-1][.]`
11
+ # up — relative indexes, URIs.md) declares a MERGED cell: colspan/rowspan. Attach with
8
12
  # !!<*yamlover: $defs: table>.
9
- # No explicit `format:` — `type: variant` derives x-yamlover-table. Spec: ../TABLE.md.
13
+ # No explicit `format:` — `type: variant` derives x-yamlover-table. Spec: ../MARKLOWER.md.
10
14
  type: variant
11
15
  properties:
12
16
  title: # optional caption
@@ -17,13 +21,16 @@ properties:
17
21
  items: # schema is repeated literally rather than *: items)
18
22
  anyOf:
19
23
  - *:: yamlover: $defs: chunk
20
- - *:: yamlover: $defs: table
21
24
  - *:: yamlover: $defs: chapter
25
+ - *:: yamlover: $defs: table
26
+ - *:: yamlover: $defs: bullets
27
+ - *:: yamlover: $defs: numbered
22
28
  items: # a row
23
29
  type: array
24
30
  items: # a cell
25
31
  anyOf:
26
- - *:: yamlover: $defs: chunk # marklower prose (the default)
27
- - *:: yamlover: $defs: table # a nested table the UNTAGGED container (listed first,
28
- - *:: yamlover: $defs: chapter # so shape routing keeps picking it); a chapter cell
29
- # enters only by its explicit !!<…chapter> tag
32
+ - *:: yamlover: $defs: chunk # marklower prose (the default leaf)
33
+ - *:: yamlover: $defs: chapter # an UNTAGGED container cell IS a chapter (the first
34
+ - *:: yamlover: $defs: table # container branch wins shape routing); a nested
35
+ - *:: yamlover: $defs: bullets # table — and a list — enters a cell only by its
36
+ - *:: yamlover: $defs: numbered # explicit !!<…> tag
@@ -1,7 +1,8 @@
1
1
  # $defs/task — a unit of work (a ticket), or a study card. A task IS-A chapter: it EXTENDS
2
- # the chapter schema (`allOf: [*chapter]`), inheriting the optional `title`/`description`
3
- # and the OMNI positional body except its subchapter recursion means SUBTASKS (a task
4
- # tree). On top of that it adds a few OPTIONAL structured fields for planning and automation.
2
+ # the chapter schema (`allOf: [*chapter]`), inheriting the FULLY-OMNI shape — the scalar
3
+ # SELF-VALUE is the title (no `title:` key), `description` stays keyed and the positional
4
+ # body, except its subchapter recursion means SUBTASKS (a task tree). On top of that it adds
5
+ # a few OPTIONAL structured fields for planning and automation.
5
6
  # It carries NO `state` field: a task's lifecycle position is a TAG APPLICATION
6
7
  # (`yamlover-annotations`) into a workflow taxonomy ($defs/workflow), so the whole tag / board
7
8
  # machinery is reused. Every planning field is optional — defaults-never-constraints: an
@@ -0,0 +1 @@
1
+ import{r as f,b as d,j as o}from"./index-DXrtwPKE.js";import{StaticImageChunk as h,PanZoomImage as x}from"./imagemap-Bp26n33x.js";function E({node:t,label:a,decode:s,chunk:e}){const[r,i]=f.useState([]),[g,u]=f.useState(null);return f.useEffect(()=>{let n=!1;const c=[];return i([]),u(null),(async()=>{const l=await fetch(d(t.path)).then(m=>m.arrayBuffer()),p=await s(l);if(!n){for(const m of p)c.push(URL.createObjectURL(m));n||i(c)}})().catch(l=>!n&&u(String(l.message||l))),()=>{n=!0,c.forEach(URL.revokeObjectURL)}},[t.path]),g?o.jsxs("div",{className:"error",children:[a,": ",g]}):r.length?o.jsx(o.Fragment,{children:r.map((n,c)=>e?o.jsx(h,{src:n,path:t.path,onNavigate:e.onNavigate},c):o.jsx(x,{src:n,className:"filemap fileimagemap",fill:r.length===1},c))}):o.jsxs("div",{className:"loading",children:["decoding ",a,"…"]})}async function w(t,a,s){const e=document.createElement("canvas");e.width=a,e.height=s;const r=e.getContext("2d");if(!r)throw new Error("no 2d context");const i=r.createImageData(a,s);return i.data.set(t),r.putImageData(i,0,0),b(e)}function b(t){return new Promise((a,s)=>t.toBlob(e=>e?a(e):s(new Error("canvas export failed")),"image/png"))}export{E as D,b as c,w as r};
@@ -0,0 +1 @@
1
+ import{r as u,u as te,a as ne,e as oe,c as re,D as W,b as se,j as d,f as ae}from"./index-DXrtwPKE.js";import{u as ce,a as ie}from"./paged-BGVPKMC7.js";const le="/assets/djvu-Ci0lFKxE.js";let X=null;function ue(){return window.DjVu?Promise.resolve(window.DjVu):(X??=new Promise((s,c)=>{const i=document.createElement("script");i.src=le,i.onload=()=>window.DjVu?s(window.DjVu):c(new Error("DjVu failed to load")),i.onerror=()=>c(new Error("could not load djvu.js")),document.head.appendChild(i)}),X)}let v=null,Y=null,_=null;const m=new Map,R=new Map,de=6,Q=1500;async function he(s,c){const i=await ue();return v??=new i.Worker,c!==Y&&(Y=c,m.clear(),R.clear(),_=(async()=>(await v.createDocument(s),Number(await v.doc.getPagesQuantity().run())||0))()),_}async function ge(s,c){const i=Math.max(1,Math.round(s.height*c/s.width)),w=await createImageBitmap(s,{resizeWidth:c,resizeHeight:i,resizeQuality:"medium"}),g=document.createElement("canvas");g.width=c,g.height=i;const x=g.getContext("2d");return x.drawImage(w,0,0),w.close(),x.getImageData(0,0,c,i)}function fe(s){const c=m.get(s);if(c)return m.delete(s),m.set(s,c),Promise.resolve(c);const i=R.get(s);if(i)return i;const w=(async()=>{const[g,x,y,A]=await v.run(v.doc.getPage(s).getImageData(),v.doc.getPage(s).getNormalizedTextZones(),v.doc.getPage(s).getWidth(),v.doc.getPage(s).getHeight()),b=Number(y)||g.width,N=Number(A)||g.height,j={image:b>Q?await ge(g,Q):g,zones:Array.isArray(x)?x:[],w:b,h:N};for(R.delete(s),m.set(s,j);m.size>de;)m.delete(m.keys().next().value);return j})();return R.set(s,w),w}const p=s=>Number(s)||0;function pe({image:s}){const c=u.useRef(null);return u.useLayoutEffect(()=>{const i=c.current;i&&(i.width=s.width,i.height=s.height,i.getContext("2d")?.putImageData(s,0,0))},[s]),d.jsx("canvas",{className:"djvu-page",ref:c})}function xe({node:s}){const c=u.useRef(null),[i,w]=u.useState(0),[g,x]=u.useState(1),[y,A]=u.useState(0),[b,N]=u.useState(null),[f,j]=u.useState(null),[E,L]=u.useState(()=>new Set),[D,P]=u.useState(()=>new Map),T=u.useRef(new Map),V=te(s.path),{openCreate:H,openEdit:Z,palette:q,preview:S}=ne(V,s.path),O=V.annotations.filter(e=>e.selector?.type==="djvu").map(e=>({page:p(e.selector.page)||1,x:p(e.selector.x),y:p(e.selector.y),w:p(e.selector.w),h:p(e.selector.h),title:e.description,color:re(e),ann:oe(e)?e:void 0})),F=S?.color??W;if(S?.selector.type==="djvu"){const e=S.selector;O.push({page:p(e.page)||1,x:p(e.x),y:p(e.y),w:p(e.w),h:p(e.h),color:S.color})}const C=u.useRef(new Map),z=ce(c,()=>{const e=[];for(let n=1;n<=i;n++){const t=C.current.get(n);t&&e.push(t)}return e},i>0&&y>0);ie(c);const K=u.useRef(z);K.current=z,u.useLayoutEffect(()=>{z.restoreAnchor()},[g]),u.useEffect(()=>{const e=c.current;e&&!e.closest(".chunk-body")&&e.focus({preventScroll:!0})},[]),u.useLayoutEffect(()=>{const e=c.current;if(!e)return;const n=new ResizeObserver(([t])=>A(t.contentRect.width));return n.observe(e),()=>n.disconnect()},[]);const k=Math.min(y,1e3)*g;u.useEffect(()=>{const e=c.current;if(!e)return;let n=!1,t=0;const o=a=>{(a.ctrlKey||a.altKey||a.metaKey)&&(a.preventDefault(),n||(K.current.captureAnchor(),n=!0),clearTimeout(t),t=window.setTimeout(()=>n=!1,250),x(h=>Math.min(5,Math.max(.4,h*(a.deltaY<0?1.1:1/1.1)))))};return e.addEventListener("wheel",o,{passive:!1}),()=>{e.removeEventListener("wheel",o),clearTimeout(t)}},[]),u.useEffect(()=>{let e=!1;return w(0),N(null),L(new Set),P(new Map),C.current.clear(),T.current.clear(),(async()=>{const n=await fetch(se(s.path)).then(o=>o.arrayBuffer()),t=await he(n,s.path);e||w(t)})().catch(n=>!e&&N(String(n.message||n))),()=>{e=!0}},[s.path]),u.useEffect(()=>{if(!i)return;const e=new IntersectionObserver(n=>{L(t=>{const o=new Set(t);for(const a of n){const h=Number(a.target.dataset.page);a.isIntersecting?o.add(h):o.delete(h)}return o.size===t.size&&[...o].every(a=>t.has(a))?t:o})},{root:c.current,rootMargin:"2000px 0px"});for(const n of C.current.values())e.observe(n);return()=>e.disconnect()},[i,y>0]),u.useEffect(()=>{let e=!0;return E.forEach(n=>{D.has(n)||fe(n).then(t=>{T.current.set(n,{w:t.w,h:t.h}),e&&P(o=>new Map(o).set(n,t))}).catch(()=>{})}),P(n=>{let t=!1;const o=new Map(n);for(const a of o.keys())E.has(a)||(o.delete(a),t=!0);return t?o:n}),()=>{e=!1}},[E]);const G=()=>{const e=window.getSelection();if(!e||e.isCollapsed||!e.anchorNode)return;const t=(e.anchorNode.nodeType===1?e.anchorNode:e.anchorNode.parentElement)?.closest(".djvu-page-wrap");if(!t||!c.current?.contains(t))return;const o=Number(t.dataset.page),a=t.getBoundingClientRect(),h=a.width/(D.get(o)?.w||1);if(!h)return;const l=e.getRangeAt(0).getBoundingClientRect();l.width<2||l.height<2||H({type:"djvu",page:o,x:Math.round((l.left-a.left)/h),y:Math.round((l.top-a.top)/h),w:Math.round(l.width/h),h:Math.round(l.height/h)},{x:l.left,y:l.bottom+6})},I=(e,n)=>n.getBoundingClientRect().width/(D.get(e)?.w||1),J=(e,n)=>{const t=n.currentTarget.getBoundingClientRect(),o=I(e,n.currentTarget);j({page:e,x0:(n.clientX-t.left)/o,y0:(n.clientY-t.top)/o,x1:(n.clientX-t.left)/o,y1:(n.clientY-t.top)/o})},$=(e,n)=>{const t=n.currentTarget.getBoundingClientRect(),o=I(e,n.currentTarget);j(a=>a&&{...a,x1:(n.clientX-t.left)/o,y1:(n.clientY-t.top)/o})},ee=(e,n)=>{const t=f;if(j(null),!t||t.page!==e)return;const o=I(e,n.currentTarget),a=Math.min(t.x0,t.x1),h=Math.min(t.y0,t.y1),l=Math.abs(t.x1-t.x0),r=Math.abs(t.y1-t.y0);if(l*o<3||r*o<3)return;const M=n.currentTarget.getBoundingClientRect();H({type:"djvu",page:e,x:Math.round(a),y:Math.round(h),w:Math.round(l),h:Math.round(r)},{x:M.left+a*o,y:M.top+(h+r)*o+6})};return b?d.jsxs("div",{className:"error",children:["djvu: ",b]}):d.jsxs(d.Fragment,{children:[d.jsxs("div",{className:"filedjvu yo-zoomable",ref:c,tabIndex:0,onMouseUp:G,children:[i===0&&d.jsx("div",{className:"loading",children:"opening djvu…"}),y>0&&Array.from({length:i},(e,n)=>{const t=n+1,o=E.has(t)?D.get(t):void 0,a=T.current.get(t),h=k*(a?a.h/a.w:Math.SQRT2),l=o?k/o.w:0;return d.jsx("div",{className:"djvu-page-wrap","data-page":t,ref:r=>{r?C.current.set(t,r):C.current.delete(t)},style:{width:k,height:o?void 0:h},children:o?d.jsxs(d.Fragment,{children:[d.jsx(pe,{image:o.image}),o.zones.length>0?d.jsx("div",{className:"djvu-textlayer",children:o.zones.map((r,M)=>d.jsx("span",{style:{left:r.x*l,top:r.y*l,width:r.width*l,height:r.height*l,fontSize:r.height*l},children:r.text},M))}):d.jsx("div",{className:"djvu-marquee",onMouseDown:r=>J(t,r),onMouseMove:r=>$(t,r),onMouseUp:r=>ee(t,r),children:f?.page===t&&d.jsx("div",{className:"djvu-region",style:{left:Math.min(f.x0,f.x1)*l,top:Math.min(f.y0,f.y1)*l,width:Math.abs(f.x1-f.x0)*l,height:Math.abs(f.y1-f.y0)*l,borderColor:F,background:F+"2e"}})}),O.filter(r=>r.page===t).map((r,M)=>{const U=r.color||W;return d.jsx("div",{id:r.ann?.fragmentSlug?ae(s.path,r.ann.fragmentSlug):void 0,className:"djvu-region"+(r.ann?" editable":""),title:r.ann?r.title||"click to recolor or delete":r.title,onClick:r.ann?B=>{B.stopPropagation(),Z(r.ann,{x:B.clientX,y:B.clientY})}:void 0,style:{left:r.x*l,top:r.y*l,width:r.w*l,height:r.h*l,borderColor:U,background:U+"2e"}},M)})]}):d.jsx("div",{className:"djvu-placeholder",children:E.has(t)?"decoding…":""})},n)})]}),q]})}export{xe as DjvuView};
@@ -1,4 +1,4 @@
1
- import{g as mi,d as an,j as un,r as Pn,b as yi}from"./index-DHpG_wBG.js";import{c as Tn}from"./_commonjs-dynamic-modules-TDtrdbi3.js";var pt={exports:{}};(function(Je,ln){(function(C){Je.exports=C()})(function(){return function C(ie,k,D){function m(f,s){if(!k[f]){if(!ie[f]){var i=typeof Tn=="function"&&Tn;if(!s&&i)return i(f,!0);if(a)return a(f,!0);var e=new Error("Cannot find module '"+f+"'");throw e.code="MODULE_NOT_FOUND",e}var r=k[f]={exports:{}};ie[f][0].call(r.exports,function(d){var p=ie[f][1][d];return m(p||d)},r,r.exports,C,ie,k,D)}return k[f].exports}for(var a=typeof Tn=="function"&&Tn,g=0;g<D.length;g++)m(D[g]);return m}({1:[function(C,ie,k){var D=C("../../lib/promises");k.Files=m;function m(){function a(g){return D.reject(new Error("could not open external image: '"+g+`'
1
+ import{g as mi,d as an,j as un,r as Pn,b as yi}from"./index-DXrtwPKE.js";import{c as Tn}from"./_commonjs-dynamic-modules-TDtrdbi3.js";var pt={exports:{}};(function(Je,ln){(function(C){Je.exports=C()})(function(){return function C(ie,k,D){function m(f,s){if(!k[f]){if(!ie[f]){var i=typeof Tn=="function"&&Tn;if(!s&&i)return i(f,!0);if(a)return a(f,!0);var e=new Error("Cannot find module '"+f+"'");throw e.code="MODULE_NOT_FOUND",e}var r=k[f]={exports:{}};ie[f][0].call(r.exports,function(d){var p=ie[f][1][d];return m(p||d)},r,r.exports,C,ie,k,D)}return k[f].exports}for(var a=typeof Tn=="function"&&Tn,g=0;g<D.length;g++)m(D[g]);return m}({1:[function(C,ie,k){var D=C("../../lib/promises");k.Files=m;function m(){function a(g){return D.reject(new Error("could not open external image: '"+g+`'
2
2
  cannot open linked files from a web browser`))}return{read:a}}},{"../../lib/promises":23}],2:[function(C,ie,k){var D=C("../lib/promises"),m=C("../lib/zipfile");k.openZip=a;function a(g){return g.arrayBuffer?D.resolve(m.openArrayBuffer(g.arrayBuffer)):D.reject(new Error("Could not find file in options"))}},{"../lib/promises":23,"../lib/zipfile":40}],3:[function(C,ie,k){var D=C("underscore"),m=C("./promises"),a=C("./documents"),g=C("./styles/html-paths"),f=C("./results"),s=C("./images"),i=C("./html"),e=C("./writers");k.DocumentConverter=r;function r(t){return{convertToHtml:function(n){var b=D.indexBy(n.type===a.types.document?n.comments:[],"commentId"),U=new d(t,b);return U.convertToHtml(n)}}}function d(t,n){var b=1,U=[],M=[];t=D.extend({ignoreEmptyParagraphs:!0},t);var E=t.idPrefix===void 0?"":t.idPrefix,W=t.ignoreEmptyParagraphs,I=g.topLevelElement("p"),R=t.styleMap||[];function A(_){var oe=[],q=ae(_,oe,{}),X=[];h(q,function(l){l.type==="deferred"&&X.push(l)});var x={};return m.mapSeries(X,function(l){return l.value().then(function(v){x[l.id]=v})}).then(function(){function l(S){return u(S,function(O){return O.type==="deferred"?x[O.id]:O.children?[D.extend({},O,{children:l(O.children)})]:[O]})}var v=e.writer({prettyPrint:t.prettyPrint,outputFormat:t.outputFormat});return i.write(v,i.simplify(l(q))),new f.Result(v.asString(),oe)})}function Y(_,oe,q){return u(_,function(X){return ae(X,oe,q)})}function ae(_,oe,q){if(!q)throw new Error("options not set");var X=Le[_.type];return X?X(_,oe,q):[]}function F(_,oe,q){return H(_,oe).wrap(function(){var X=Y(_.children,oe,q);return W?X:[i.forceWrite].concat(X)})}function H(_,oe){var q=V(_);return q?q.to:(_.styleId&&oe.push(y("paragraph",_)),I)}function T(_,oe,q){var X=function(){return Y(_.children,oe,q)},x=[];if(_.highlight!==null){var l=z({type:"highlight",color:_.highlight});l&&x.push(l)}_.isSmallCaps&&x.push($("smallCaps")),_.isAllCaps&&x.push($("allCaps")),_.isStrikethrough&&x.push($("strikethrough","s")),_.isUnderline&&x.push($("underline")),_.verticalAlignment===a.verticalAlignment.subscript&&x.push(g.element("sub",{},{fresh:!1})),_.verticalAlignment===a.verticalAlignment.superscript&&x.push(g.element("sup",{},{fresh:!1})),_.isItalic&&x.push($("italic","em")),_.isBold&&x.push($("bold","strong"));var v=g.empty,S=V(_);return S?v=S.to:_.styleId&&oe.push(y("run",_)),x.push(v),x.forEach(function(O){X=O.wrap.bind(O,X)}),X()}function $(_,oe){var q=z({type:_});return q||(oe?g.element(oe,{},{fresh:!1}):g.empty)}function z(_,oe){var q=V(_);return q?q.to:oe}function V(_){for(var oe=0;oe<R.length;oe++)if(R[oe].from.matches(_))return R[oe]}function re(_){return function(oe,q){return m.attempt(function(){return _(oe,q)}).caught(function(X){return q.push(f.error(X)),[]})}}function K(_){return j(_.noteType,_.noteId)}function le(_){return ee(_.noteType,_.noteId)}function j(_,oe){return ye(_+"-"+oe)}function ee(_,oe){return ye(_+"-ref-"+oe)}function ye(_){return E+_}var ne=g.elements([g.element("table",{},{fresh:!0})]);function he(_,oe,q){return z(_,ne).wrap(function(){return we(_,oe,q)})}function we(_,oe,q){var X=D.findIndex(_.children,function(S){return!S.type===a.types.tableRow||!S.isHeader});X===-1&&(X=_.children.length);var x;if(X===0)x=Y(_.children,oe,D.extend({},q,{isTableHeader:!1}));else{var l=Y(_.children.slice(0,X),oe,D.extend({},q,{isTableHeader:!0})),v=Y(_.children.slice(X),oe,D.extend({},q,{isTableHeader:!1}));x=[i.freshElement("thead",{},l),i.freshElement("tbody",{},v)]}return[i.forceWrite].concat(x)}function _e(_,oe,q){var X=Y(_.children,oe,q);return[i.freshElement("tr",{},[i.forceWrite].concat(X))]}function ve(_,oe,q){var X=q.isTableHeader?"th":"td",x=Y(_.children,oe,q),l={};return _.colSpan!==1&&(l.colspan=_.colSpan.toString()),_.rowSpan!==1&&(l.rowspan=_.rowSpan.toString()),[i.freshElement(X,l,[i.forceWrite].concat(x))]}function De(_,oe,q){return z(_,g.ignore).wrap(function(){var X=n[_.commentId],x=M.length+1,l="["+o(X)+x+"]";return M.push({label:l,comment:X}),[i.freshElement("a",{href:"#"+j("comment",_.commentId),id:ee("comment",_.commentId)},[i.text(l)])]})}function Ce(_,oe,q){var X=_.label,x=_.comment,l=Y(x.body,oe,q).concat([i.nonFreshElement("p",{},[i.text(" "),i.freshElement("a",{href:"#"+ee("comment",x.commentId)},[i.text("↑")])])]);return[i.freshElement("dt",{id:j("comment",x.commentId)},[i.text("Comment "+X)]),i.freshElement("dd",{},l)]}function Se(_,oe,q){return Ne(_).wrap(function(){return[]})}function Ne(_){var oe=V(_);return oe?oe.to:_.breakType==="line"?g.topLevelElement("br"):g.empty}var Le={document:function(_,oe,q){var X=Y(_.children,oe,q),x=U.map(function(v){return _.notes.resolve(v)}),l=Y(x,oe,q);return X.concat([i.freshElement("ol",{},l),i.freshElement("dl",{},u(M,function(v){return Ce(v,oe,q)}))])},paragraph:F,run:T,text:function(_,oe,q){return[i.text(_.value)]},tab:function(_,oe,q){return[i.text(" ")]},hyperlink:function(_,oe,q){var X=_.anchor?"#"+ye(_.anchor):_.href,x={href:X};_.targetFrame!=null&&(x.target=_.targetFrame);var l=Y(_.children,oe,q);return[i.nonFreshElement("a",x,l)]},checkbox:function(_){var oe={type:"checkbox"};return _.checked&&(oe.checked="checked"),[i.freshElement("input",oe)]},bookmarkStart:function(_,oe,q){var X=i.freshElement("a",{id:ye(_.name)},[i.forceWrite]);return[X]},noteReference:function(_,oe,q){U.push(_);var X=i.freshElement("a",{href:"#"+K(_),id:le(_)},[i.text("["+b+++"]")]);return[i.freshElement("sup",{},[X])]},note:function(_,oe,q){var X=Y(_.body,oe,q),x=i.elementWithTag(g.element("p",{},{fresh:!1}),[i.text(" "),i.freshElement("a",{href:"#"+le(_)},[i.text("↑")])]),l=X.concat([x]);return i.freshElement("li",{id:K(_)},l)},commentReference:De,comment:Ce,image:c(re(t.convertImage||s.dataUri)),table:he,tableRow:_e,tableCell:ve,break:Se};return{convertToHtml:A}}var p=1;function c(t){return function(n,b,U){return[{type:"deferred",id:p++,value:function(){return t(n,b,U)}}]}}function y(t,n){return f.warning("Unrecognised "+t+" style: '"+n.styleName+"' (Style ID: "+n.styleId+")")}function u(t,n){return D.flatten(t.map(n),!0)}function h(t,n){t.forEach(function(b){n(b),b.children&&h(b.children,n)})}var o=k.commentAuthorLabel=function(n){return n.authorInitials||""}},{"./documents":4,"./html":18,"./images":20,"./promises":23,"./results":25,"./styles/html-paths":28,"./writers":33,underscore:102}],4:[function(C,ie,k){(function(D){var m=C("underscore"),a=k.types={document:"document",paragraph:"paragraph",run:"run",text:"text",tab:"tab",checkbox:"checkbox",hyperlink:"hyperlink",noteReference:"noteReference",image:"image",note:"note",commentReference:"commentReference",comment:"comment",table:"table",tableRow:"tableRow",tableCell:"tableCell",break:"break",bookmarkStart:"bookmarkStart"};function g(I,R){return R=R||{},{type:a.document,children:I,notes:R.notes||new y({}),comments:R.comments||[]}}function f(I,R){R=R||{};var A=R.indent||{};return{type:a.paragraph,children:I,styleId:R.styleId||null,styleName:R.styleName||null,numbering:R.numbering||null,alignment:R.alignment||null,indent:{start:A.start||null,end:A.end||null,firstLine:A.firstLine||null,hanging:A.hanging||null}}}function s(I,R){return R=R||{},{type:a.run,children:I,styleId:R.styleId||null,styleName:R.styleName||null,isBold:!!R.isBold,isUnderline:!!R.isUnderline,isItalic:!!R.isItalic,isStrikethrough:!!R.isStrikethrough,isAllCaps:!!R.isAllCaps,isSmallCaps:!!R.isSmallCaps,verticalAlignment:R.verticalAlignment||i.baseline,font:R.font||null,fontSize:R.fontSize||null,highlight:R.highlight||null}}var i={baseline:"baseline",superscript:"superscript",subscript:"subscript"};function e(I){return{type:a.text,value:I}}function r(){return{type:a.tab}}function d(I){return{type:a.checkbox,checked:I.checked}}function p(I,R){return{type:a.hyperlink,children:I,href:R.href,anchor:R.anchor,targetFrame:R.targetFrame}}function c(I){return{type:a.noteReference,noteType:I.noteType,noteId:I.noteId}}function y(I){this._notes=m.indexBy(I,function(R){return t(R.noteType,R.noteId)})}y.prototype.resolve=function(I){return this.findNoteByKey(t(I.noteType,I.noteId))},y.prototype.findNoteByKey=function(I){return this._notes[I]||null};function u(I){return{type:a.note,noteType:I.noteType,noteId:I.noteId,body:I.body}}function h(I){return{type:a.commentReference,commentId:I.commentId}}function o(I){return{type:a.comment,commentId:I.commentId,body:I.body,authorName:I.authorName,authorInitials:I.authorInitials}}function t(I,R){return I+"-"+R}function n(I){return{type:a.image,read:function(R){return R?I.readImage(R):I.readImage().then(function(A){return D.from(A)})},readAsArrayBuffer:function(){return I.readImage()},readAsBase64String:function(){return I.readImage("base64")},readAsBuffer:function(){return I.readImage().then(function(R){return D.from(R)})},altText:I.altText,contentType:I.contentType}}function b(I,R){return R=R||{},{type:a.table,children:I,styleId:R.styleId||null,styleName:R.styleName||null}}function U(I,R){return R=R||{},{type:a.tableRow,children:I,isHeader:R.isHeader||!1}}function M(I,R){return R=R||{},{type:a.tableCell,children:I,colSpan:R.colSpan==null?1:R.colSpan,rowSpan:R.rowSpan==null?1:R.rowSpan}}function E(I){return{type:a.break,breakType:I}}function W(I){return{type:a.bookmarkStart,name:I.name}}k.document=k.Document=g,k.paragraph=k.Paragraph=f,k.run=k.Run=s,k.text=k.Text=e,k.tab=k.Tab=r,k.checkbox=k.Checkbox=d,k.Hyperlink=p,k.noteReference=k.NoteReference=c,k.Notes=y,k.Note=u,k.commentReference=h,k.comment=o,k.Image=n,k.Table=b,k.TableRow=U,k.TableCell=M,k.lineBreak=E("line"),k.pageBreak=E("page"),k.columnBreak=E("column"),k.BookmarkStart=W,k.verticalAlignment=i}).call(this,C("buffer").Buffer)},{buffer:83,underscore:102}],5:[function(C,ie,k){k.createBodyReader=r,k._readNumberingProperties=p;var D=C("dingbat-to-unicode"),m=C("underscore"),a=C("../documents"),g=C("../results").Result,f=C("../results").warning,s=C("../xml"),i=C("../transforms"),e=C("./uris");function r(E){return{readXmlElement:function(W){return new d(E).readXmlElement(W)},readXmlElements:function(W){return new d(E).readXmlElements(W)}}}function d(E){var W=[],I=[],R=[],A=E.relationships,Y=E.contentTypes,ae=E.docxFile,F=E.files,H=E.numbering,T=E.styles;function $(ce){var be=ce.map(z);return b(be)}function z(ce){if(ce.type==="element"){var be=X[ce.name];if(be)return be(ce);if(!Object.prototype.hasOwnProperty.call(y,ce.name)){var xe=f("An unrecognised element was ignored: "+ce.name);return u([xe])}}return h()}function V(ce){return ne(ce).map(function(be){return{type:"paragraphProperties",styleId:be.styleId,styleName:be.name,alignment:ce.firstOrEmpty("w:jc").attributes["w:val"],numbering:p(be.styleId,ce.firstOrEmpty("w:numPr"),H),indent:re(ce.firstOrEmpty("w:ind"))}})}function re(ce){return{start:ce.attributes["w:start"]||ce.attributes["w:left"],end:ce.attributes["w:end"]||ce.attributes["w:right"],firstLine:ce.attributes["w:firstLine"],hanging:ce.attributes["w:hanging"]}}function K(ce){return he(ce).map(function(be){var xe=ce.firstOrEmpty("w:sz").attributes["w:val"],Fe=/^[0-9]+$/.test(xe)?parseInt(xe,10)/2:null;return{type:"runProperties",styleId:be.styleId,styleName:be.name,verticalAlignment:ce.firstOrEmpty("w:vertAlign").attributes["w:val"],font:ce.firstOrEmpty("w:rFonts").attributes["w:ascii"],fontSize:Fe,isBold:j(ce.first("w:b")),isUnderline:le(ce.first("w:u")),isItalic:j(ce.first("w:i")),isStrikethrough:j(ce.first("w:strike")),isAllCaps:j(ce.first("w:caps")),isSmallCaps:j(ce.first("w:smallCaps")),highlight:ye(ce.firstOrEmpty("w:highlight").attributes["w:val"])}})}function le(ce){if(ce){var be=ce.attributes["w:val"];return be!==void 0&&be!=="false"&&be!=="0"&&be!=="none"}else return!1}function j(ce){if(ce){var be=ce.attributes["w:val"];return be!=="false"&&be!=="0"}else return!1}function ee(ce){return ce!=="false"&&ce!=="0"}function ye(ce){return!ce||ce==="none"?null:ce}function ne(ce){return _e(ce,"w:pStyle","Paragraph",T.findParagraphStyleById)}function he(ce){return _e(ce,"w:rStyle","Run",T.findCharacterStyleById)}function we(ce){return _e(ce,"w:tblStyle","Table",T.findTableStyleById)}function _e(ce,be,xe,Fe){var ke=[],Me=ce.first(be),Pe=null,Xe=null;if(Me&&(Pe=Me.attributes["w:val"],Pe)){var Ze=Fe(Pe);Ze?Xe=Ze.name:ke.push(Re(xe,Pe))}return t({styleId:Pe,name:Xe},ke)}function ve(ce){var be=ce.attributes["w:fldCharType"];if(be==="begin")W.push({type:"begin",fldChar:ce}),I=[];else if(be==="end"){var xe=W.pop();if(xe.type==="begin"&&(xe=Ce(xe)),xe.type==="checkbox")return o(a.checkbox({checked:xe.checked}))}else if(be==="separate"){var Fe=W.pop(),ke=Ce(Fe);W.push(ke)}return h()}function De(){var ce=m.last(W.filter(function(be){return be.type==="hyperlink"}));return ce?ce.options:null}function Ce(ce){return Se(I.join(""),ce.type==="begin"?ce.fldChar:s.emptyElement)}function Se(ce,be){var xe=/^\s*HYPERLINK\s+(\\l\s+)?(?:"(.*)"|([^\\]\S*))/.exec(ce);if(xe){var Fe=xe[2]===void 0?xe[3]:xe[2],ke=xe[1]===void 0?{href:Fe}:{anchor:Fe};return{type:"hyperlink",options:ke}}var Me=/\s*FORMCHECKBOX\s*/.exec(ce);if(Me){var Pe=be.firstOrEmpty("w:ffData").firstOrEmpty("w:checkBox"),Xe=Pe.first("w:checked"),Ze=Xe==null?j(Pe.first("w:default")):j(Xe);return{type:"checkbox",checked:Ze}}return{type:"unknown"}}function Ne(ce){return I.push(ce.text()),h()}function Le(ce){var be=ce.attributes["w:font"],xe=ce.attributes["w:char"],Fe=D.hex(be,xe);return Fe==null&&/^F0..$/.test(xe)&&(Fe=D.hex(be,xe.substring(2))),Fe==null?u([f("A w:sym element with an unsupported character was ignored: char "+xe+" in font "+be)]):o(new a.Text(Fe.string))}function _(ce){return function(be){var xe=be.attributes["w:id"];return o(new a.NoteReference({noteType:ce,noteId:xe}))}}function oe(ce){return o(a.commentReference({commentId:ce.attributes["w:id"]}))}function q(ce){return $(ce.children)}var X={"w:p":function(ce){var be=ce.firstOrEmpty("w:pPr"),xe=!!be.firstOrEmpty("w:rPr").first("w:del");if(xe)return ce.children.forEach(function(ke){R.push(ke)}),h();var Fe=ce.children;return R.length>0&&(Fe=R.concat(Fe),R=[]),n.map(V(be),$(Fe),function(ke,Me){return new a.Paragraph(Me,ke)}).insertExtra()},"w:r":function(ce){return n.map(K(ce.firstOrEmpty("w:rPr")),$(ce.children),function(be,xe){var Fe=De();return Fe!==null&&(xe=[new a.Hyperlink(xe,Fe)]),new a.Run(xe,be)})},"w:fldChar":ve,"w:instrText":Ne,"w:t":function(ce){return o(new a.Text(ce.text()))},"w:tab":function(ce){return o(new a.Tab)},"w:noBreakHyphen":function(){return o(new a.Text("‑"))},"w:softHyphen":function(ce){return o(new a.Text("­"))},"w:sym":Le,"w:hyperlink":function(ce){var be=ce.attributes["r:id"],xe=ce.attributes["w:anchor"];return $(ce.children).map(function(Fe){function ke(Pe){var Xe=ce.attributes["w:tgtFrame"]||null;return new a.Hyperlink(Fe,m.extend({targetFrame:Xe},Pe))}if(be){var Me=A.findTargetByRelationshipId(be);return xe&&(Me=e.replaceFragment(Me,xe)),ke({href:Me})}else return xe?ke({anchor:xe}):Fe})},"w:tbl":x,"w:tr":v,"w:tc":S,"w:footnoteReference":_("footnote"),"w:endnoteReference":_("endnote"),"w:commentReference":oe,"w:br":function(ce){var be=ce.attributes["w:type"];return be==null||be==="textWrapping"?o(a.lineBreak):be==="page"?o(a.pageBreak):be==="column"?o(a.columnBreak):u([f("Unsupported break type: "+be)])},"w:bookmarkStart":function(ce){var be=ce.attributes["w:name"];return be==="_GoBack"?h():o(new a.BookmarkStart({name:be}))},"mc:AlternateContent":function(ce){return q(ce.firstOrEmpty("mc:Fallback"))},"w:sdt":function(ce){var be=$(ce.firstOrEmpty("w:sdtContent").children);return be.map(function(xe){var Fe=ce.firstOrEmpty("w:sdtPr").first("wordml:checkbox");if(Fe){var ke=Fe.first("wordml:checked"),Me=!!ke&&ee(ke.attributes["wordml:val"]),Pe=a.checkbox({checked:Me}),Xe=!1,Ze=xe.map(i._elementsOfType(a.types.text,function(N){return N.value.length>0&&!Xe?(Xe=!0,Pe):N}));return Xe?Ze:Pe}else return xe})},"w:ins":q,"w:object":q,"w:smartTag":q,"w:drawing":q,"w:pict":function(ce){return q(ce).toExtra()},"v:roundrect":q,"v:shape":q,"v:textbox":q,"w:txbxContent":q,"wp:inline":Z,"wp:anchor":Z,"v:imagedata":Ae,"v:group":q,"v:rect":q};return{readXmlElement:z,readXmlElements:$};function x(ce){var be=l(ce.firstOrEmpty("w:tblPr"));return $(ce.children).flatMap(J).flatMap(function(xe){return be.map(function(Fe){return a.Table(xe,Fe)})})}function l(ce){return we(ce).map(function(be){return{styleId:be.styleId,styleName:be.name}})}function v(ce){var be=ce.firstOrEmpty("w:trPr"),xe=!!be.first("w:del");if(xe)return h();var Fe=!!be.first("w:tblHeader");return $(ce.children).map(function(ke){return a.TableRow(ke,{isHeader:Fe})})}function S(ce){return $(ce.children).map(function(be){var xe=ce.firstOrEmpty("w:tcPr"),Fe=xe.firstOrEmpty("w:gridSpan").attributes["w:val"],ke=Fe?parseInt(Fe,10):1,Me=a.TableCell(be,{colSpan:ke});return Me._vMerge=O(xe),Me})}function O(ce){var be=ce.first("w:vMerge");if(be){var xe=be.attributes["w:val"];return xe==="continue"||!xe}else return null}function J(ce){var be=m.any(ce,function(ke){return ke.type!==a.types.tableRow});if(be)return L(ce),t(ce,[f("unexpected non-row element in table, cell merging may be incorrect")]);var xe=m.any(ce,function(ke){return m.any(ke.children,function(Me){return Me.type!==a.types.tableCell})});if(xe)return L(ce),t(ce,[f("unexpected non-cell element in table row, cell merging may be incorrect")]);var Fe={};return ce.forEach(function(ke){var Me=0;ke.children.forEach(function(Pe){Pe._vMerge&&Fe[Me]?Fe[Me].rowSpan++:(Fe[Me]=Pe,Pe._vMerge=!1),Me+=Pe.colSpan})}),ce.forEach(function(ke){ke.children=ke.children.filter(function(Me){return!Me._vMerge}),ke.children.forEach(function(Me){delete Me._vMerge})}),o(ce)}function L(ce){ce.forEach(function(be){var xe=i.getDescendantsOfType(be,a.types.tableCell);xe.forEach(function(Fe){delete Fe._vMerge})})}function Z(ce){var be=ce.getElementsByTagName("a:graphic").getElementsByTagName("a:graphicData").getElementsByTagName("pic:pic").getElementsByTagName("pic:blipFill").getElementsByTagName("a:blip");return b(be.map(ue.bind(null,ce)))}function ue(ce,be){var xe=ce.firstOrEmpty("wp:docPr"),Fe=xe.attributes,ke=fe(Fe.descr)?Fe.title:Fe.descr,Me=ge(be);return Me===null?u([f("Could not find image file for a:blip element")]):Ee(Me,ke).map(function(Pe){var Xe=xe.firstOrEmpty("a:hlinkClick"),Ze=Xe.attributes["r:id"];if(Ze){var N=A.findTargetByRelationshipId(Ze);return new a.Hyperlink([Pe],{href:N})}else return Pe})}function fe(ce){return ce==null||/^\s*$/.test(ce)}function ge(ce){var be=ce.attributes["r:embed"],xe=ce.attributes["r:link"];if(be)return Be(be);if(xe){var Fe=A.findTargetByRelationshipId(xe);return{path:Fe,read:F.read.bind(F,Fe)}}else return null}function Ae(ce){var be=ce.attributes["r:id"];return be?Ee(Be(be),ce.attributes["o:title"]):u([f("A v:imagedata element without a relationship ID was ignored")])}function Be(ce){var be=e.uriToZipEntryName("word",A.findTargetByRelationshipId(ce));return{path:be,read:ae.read.bind(ae,be)}}function Ee(ce,be){var xe=Y.findContentType(ce.path),Fe=a.Image({readImage:ce.read,altText:be,contentType:xe}),ke=c[xe]?[]:f("Image of type "+xe+" is unlikely to display in web browsers");return t(Fe,ke)}function Re(ce,be){return f(ce+" style with ID "+be+" was referenced but not defined in the document")}}function p(E,W,I){var R=W.firstOrEmpty("w:ilvl").attributes["w:val"],A=W.firstOrEmpty("w:numId").attributes["w:val"];if(R!==void 0&&A!==void 0)return I.findLevel(A,R);if(E!=null){var Y=I.findLevelByParagraphStyleId(E);if(Y!=null)return Y}return A!==void 0?I.findLevel(A,"0"):null}var c={"image/png":!0,"image/gif":!0,"image/jpeg":!0,"image/svg+xml":!0,"image/tiff":!0},y={"office-word:wrap":!0,"v:shadow":!0,"v:shapetype":!0,"w:annotationRef":!0,"w:bookmarkEnd":!0,"w:sectPr":!0,"w:proofErr":!0,"w:lastRenderedPageBreak":!0,"w:commentRangeStart":!0,"w:commentRangeEnd":!0,"w:del":!0,"w:footnoteRef":!0,"w:endnoteRef":!0,"w:pPr":!0,"w:rPr":!0,"w:tblPr":!0,"w:tblGrid":!0,"w:trPr":!0,"w:tcPr":!0};function u(E){return new n(null,null,E)}function h(){return new n(null)}function o(E){return new n(E)}function t(E,W){return new n(E,null,W)}function n(E,W,I){this.value=E||[],this.extra=W||[],this._result=new g({element:this.value,extra:W},I),this.messages=this._result.messages}n.prototype.toExtra=function(){return new n(null,U(this.extra,this.value),this.messages)},n.prototype.insertExtra=function(){var E=this.extra;return E&&E.length?new n(U(this.value,E),null,this.messages):this},n.prototype.map=function(E){var W=this._result.map(function(I){return E(I.element)});return new n(W.value,this.extra,W.messages)},n.prototype.flatMap=function(E){var W=this._result.flatMap(function(I){return E(I.element)._result});return new n(W.value.element,U(this.extra,W.value.extra),W.messages)},n.map=function(E,W,I){return new n(I(E.value,W.value),U(E.extra,W.extra),E.messages.concat(W.messages))};function b(E){var W=g.combine(m.pluck(E,"_result"));return new n(m.flatten(m.pluck(W.value,"element")),m.filter(m.flatten(m.pluck(W.value,"extra")),M),W.messages)}function U(E,W){return m.flatten([E,W])}function M(E){return E}},{"../documents":4,"../results":25,"../transforms":30,"../xml":35,"./uris":16,"dingbat-to-unicode":85,underscore:102}],6:[function(C,ie,k){var D=C("../documents"),m=C("../results").Result;function a(g){function f(i){return m.combine(i.getElementsByTagName("w:comment").map(s))}function s(i){var e=i.attributes["w:id"];function r(d){return(i.attributes[d]||"").trim()||null}return g.readXmlElements(i.children).map(function(d){return D.comment({commentId:e,body:d,authorName:r("w:author"),authorInitials:r("w:initials")})})}return f}k.createCommentsReader=a},{"../documents":4,"../results":25}],7:[function(C,ie,k){k.readContentTypesFromXml=m;var D={png:"png",gif:"gif",jpeg:"jpeg",jpg:"jpeg",tif:"tiff",tiff:"tiff",bmp:"bmp"};k.defaultContentTypes=a({},{});function m(g){var f={},s={};return g.children.forEach(function(i){if(i.name==="content-types:Default"&&(f[i.attributes.Extension]=i.attributes.ContentType),i.name==="content-types:Override"){var e=i.attributes.PartName;e.charAt(0)==="/"&&(e=e.substring(1)),s[e]=i.attributes.ContentType}}),a(s,f)}function a(g,f){return{findContentType:function(s){var i=g[s];if(i)return i;var e=s.split("."),r=e[e.length-1];if(f.hasOwnProperty(r))return f[r];var d=D[r.toLowerCase()];return d?"image/"+d:null}}}},{}],8:[function(C,ie,k){k.DocumentXmlReader=a;var D=C("../documents"),m=C("../results").Result;function a(g){var f=g.bodyReader;function s(i){var e=i.first("w:body");if(e==null)throw new Error("Could not find the body element: are you sure this is a docx file?");var r=f.readXmlElements(e.children).map(function(d){return new D.Document(d,{notes:g.notes,comments:g.comments})});return new m(r.value,r.messages)}return{convertXmlToDocument:s}}},{"../documents":4,"../results":25}],9:[function(C,ie,k){k.read=h,k._findPartPaths=o;var D=C("../promises"),m=C("../documents"),a=C("../results").Result,g=C("../zipfile"),f=C("./office-xml-reader").readXmlFromZipFile,s=C("./body-reader").createBodyReader,i=C("./document-xml-reader").DocumentXmlReader,e=C("./relationships-reader"),r=C("./content-types-reader"),d=C("./numbering-xml"),p=C("./styles-reader"),c=C("./notes-reader"),y=C("./comments-reader"),u=C("./files").Files;function h(A,Y,ae){Y=Y||{},ae=ae||{};var F=new u({externalFileAccess:ae.externalFileAccess,relativeToFile:Y.path});return D.props({contentTypes:E(A),partPaths:o(A),docxFile:A,files:F}).also(function(H){return{styles:I(A,H.partPaths.styles)}}).also(function(H){return{numbering:W(A,H.partPaths.numbering,H.styles)}}).also(function(H){return{footnotes:U(H.partPaths.footnotes,H,function(T,$){return $?c.createFootnotesReader(T)($):new a([])}),endnotes:U(H.partPaths.endnotes,H,function(T,$){return $?c.createEndnotesReader(T)($):new a([])}),comments:U(H.partPaths.comments,H,function(T,$){return $?y.createCommentsReader(T)($):new a([])})}}).also(function(H){return{notes:H.footnotes.flatMap(function(T){return H.endnotes.map(function($){return new m.Notes(T.concat($))})})}}).then(function(H){return U(H.partPaths.mainDocument,H,function(T,$){return H.notes.flatMap(function(z){return H.comments.flatMap(function(V){var re=new i({bodyReader:T,notes:z,comments:V});return re.convertXmlToDocument($)})})})})}function o(A){return R(A).then(function(Y){var ae=t({docxFile:A,relationships:Y,relationshipType:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",basePath:"",fallbackPath:"word/document.xml"});if(!A.exists(ae))throw new Error("Could not find main document part. Are you sure this is a valid .docx file?");return b({filename:M(ae),readElement:e.readRelationships,defaultValue:e.defaultValue})(A).then(function(F){function H(T){return t({docxFile:A,relationships:F,relationshipType:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/"+T,basePath:g.splitPath(ae).dirname,fallbackPath:"word/"+T+".xml"})}return{mainDocument:ae,comments:H("comments"),endnotes:H("endnotes"),footnotes:H("footnotes"),numbering:H("numbering"),styles:H("styles")}})})}function t(A){var Y=A.docxFile,ae=A.relationships,F=A.relationshipType,H=A.basePath,T=A.fallbackPath,$=ae.findTargetsByType(F),z=$.map(function(re){return n(g.joinPath(H,re),"/")}),V=z.filter(function(re){return Y.exists(re)});return V.length===0?T:V[0]}function n(A,Y){return A.substring(0,Y.length)===Y?A.substring(Y.length):A}function b(A){return function(Y){return f(Y,A.filename).then(function(ae){return ae?A.readElement(ae):A.defaultValue})}}function U(A,Y,ae){var F=b({filename:M(A),readElement:e.readRelationships,defaultValue:e.defaultValue});return F(Y.docxFile).then(function(H){var T=new s({relationships:H,contentTypes:Y.contentTypes,docxFile:Y.docxFile,numbering:Y.numbering,styles:Y.styles,files:Y.files});return f(Y.docxFile,A).then(function($){return ae(T,$)})})}function M(A){var Y=g.splitPath(A);return g.joinPath(Y.dirname,"_rels",Y.basename+".rels")}var E=b({filename:"[Content_Types].xml",readElement:r.readContentTypesFromXml,defaultValue:r.defaultContentTypes});function W(A,Y,ae){return b({filename:Y,readElement:function(F){return d.readNumberingXml(F,{styles:ae})},defaultValue:d.defaultNumbering})(A)}function I(A,Y){return b({filename:Y,readElement:p.readStylesXml,defaultValue:p.defaultStyles})(A)}var R=b({filename:"_rels/.rels",readElement:e.readRelationships,defaultValue:e.defaultValue})},{"../documents":4,"../promises":23,"../results":25,"../zipfile":40,"./body-reader":5,"./comments-reader":6,"./content-types-reader":7,"./document-xml-reader":8,"./files":1,"./notes-reader":10,"./numbering-xml":11,"./office-xml-reader":12,"./relationships-reader":13,"./styles-reader":15}],10:[function(C,ie,k){var D=C("../documents"),m=C("../results").Result;k.createFootnotesReader=a.bind(this,"footnote"),k.createEndnotesReader=a.bind(this,"endnote");function a(g,f){function s(r){return m.combine(r.getElementsByTagName("w:"+g).filter(i).map(e))}function i(r){var d=r.attributes["w:type"];return d!=="continuationSeparator"&&d!=="separator"}function e(r){var d=r.attributes["w:id"];return f.readXmlElements(r.children).map(function(p){return D.Note({noteType:g,noteId:d,body:p})})}return s}},{"../documents":4,"../results":25}],11:[function(C,ie,k){var D=C("underscore");k.readNumberingXml=a,k.Numbering=m,k.defaultNumbering=new m({},{});function m(i,e,r){var d=D.flatten(D.values(e).map(function(u){return D.values(u.levels)})),p=D.indexBy(d.filter(function(u){return u.paragraphStyleId!=null}),"paragraphStyleId");function c(u,h){var o=i[u];if(o){var t=e[o.abstractNumId];if(t){if(t.numStyleLink==null)return e[o.abstractNumId].levels[h];var n=r.findNumberingStyleById(t.numStyleLink);return c(n.numId,h)}else return null}else return null}function y(u){return p[u]||null}return{findLevel:c,findLevelByParagraphStyleId:y}}function a(i,e){if(!e||!e.styles)throw new Error("styles is missing");var r=g(i),d=s(i);return new m(d,r,e.styles)}function g(i){var e={};return i.getElementsByTagName("w:abstractNum").forEach(function(r){var d=r.attributes["w:abstractNumId"];e[d]=f(r)}),e}function f(i){var e={},r=null;i.getElementsByTagName("w:lvl").forEach(function(p){var c=p.attributes["w:ilvl"],y=p.firstOrEmpty("w:numFmt").attributes["w:val"],u=y!=="bullet",h=p.firstOrEmpty("w:pStyle").attributes["w:val"];c===void 0?r={isOrdered:u,level:"0",paragraphStyleId:h}:e[c]={isOrdered:u,level:c,paragraphStyleId:h}}),r!==null&&e[r.level]===void 0&&(e[r.level]=r);var d=i.firstOrEmpty("w:numStyleLink").attributes["w:val"];return{levels:e,numStyleLink:d}}function s(i){var e={};return i.getElementsByTagName("w:num").forEach(function(r){var d=r.attributes["w:numId"],p=r.first("w:abstractNumId").attributes["w:val"];e[d]={abstractNumId:p}}),e}},{underscore:102}],12:[function(C,ie,k){var D=C("underscore"),m=C("../promises"),a=C("../xml");k.read=f,k.readXmlFromZipFile=s;var g={"http://schemas.openxmlformats.org/wordprocessingml/2006/main":"w","http://schemas.openxmlformats.org/officeDocument/2006/relationships":"r","http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing":"wp","http://schemas.openxmlformats.org/drawingml/2006/main":"a","http://schemas.openxmlformats.org/drawingml/2006/picture":"pic","http://purl.oclc.org/ooxml/wordprocessingml/main":"w","http://purl.oclc.org/ooxml/officeDocument/relationships":"r","http://purl.oclc.org/ooxml/drawingml/wordprocessingDrawing":"wp","http://purl.oclc.org/ooxml/drawingml/main":"a","http://purl.oclc.org/ooxml/drawingml/picture":"pic","http://schemas.openxmlformats.org/package/2006/content-types":"content-types","http://schemas.openxmlformats.org/package/2006/relationships":"relationships","http://schemas.openxmlformats.org/markup-compatibility/2006":"mc","urn:schemas-microsoft-com:vml":"v","urn:schemas-microsoft-com:office:word":"office-word","http://schemas.microsoft.com/office/word/2010/wordml":"wordml"};function f(r){return a.readString(r,g).then(function(d){return e(d)[0]})}function s(r,d){return r.exists(d)?r.read(d,"utf-8").then(i).then(f):m.resolve(null)}function i(r){return r.replace(/^\uFEFF/g,"")}function e(r){return r.type==="element"?r.name==="mc:AlternateContent"?r.firstOrEmpty("mc:Fallback").children:(r.children=D.flatten(r.children.map(e,!0)),[r]):[r]}},{"../promises":23,"../xml":35,underscore:102}],13:[function(C,ie,k){k.readRelationships=D,k.defaultValue=new m([]),k.Relationships=m;function D(a){var g=[];return a.children.forEach(function(f){if(f.name==="relationships:Relationship"){var s={relationshipId:f.attributes.Id,target:f.attributes.Target,type:f.attributes.Type};g.push(s)}}),new m(g)}function m(a){var g={};a.forEach(function(s){g[s.relationshipId]=s.target});var f={};return a.forEach(function(s){f[s.type]||(f[s.type]=[]),f[s.type].push(s.target)}),{findTargetByRelationshipId:function(s){return g[s]},findTargetsByType:function(s){return f[s]||[]}}}},{}],14:[function(C,ie,k){var D=C("underscore"),m=C("../promises"),a=C("../xml");k.writeStyleMap=i,k.readStyleMap=p;var g="http://schemas.zwobble.org/mammoth/style-map",f="mammoth/style-map",s="/"+f;function i(c,y){return c.write(f,y),e(c).then(function(){return r(c)})}function e(c){var y="word/_rels/document.xml.rels",u="http://schemas.openxmlformats.org/package/2006/relationships",h="{"+u+"}Relationship";return c.read(y,"utf8").then(a.readString).then(function(o){var t=o.children;d(t,h,"Id",{Id:"rMammothStyleMap",Type:g,Target:s});var n={"":u};return c.write(y,a.writeString(o,n))})}function r(c){var y="[Content_Types].xml",u="http://schemas.openxmlformats.org/package/2006/content-types",h="{"+u+"}Override";return c.read(y,"utf8").then(a.readString).then(function(o){var t=o.children;d(t,h,"PartName",{PartName:s,ContentType:"text/prs.mammoth.style-map"});var n={"":u};return c.write(y,a.writeString(o,n))})}function d(c,y,u,h){var o=D.find(c,function(t){return t.name===y&&t.attributes[u]===h[u]});o?o.attributes=h:c.push(a.element(y,h))}function p(c){return c.exists(f)?c.read(f,"utf8"):m.resolve(null)}},{"../promises":23,"../xml":35,underscore:102}],15:[function(C,ie,k){k.readStylesXml=m,k.Styles=D,k.defaultStyles=new D({},{});function D(i,e,r,d){return{findParagraphStyleById:function(p){return i[p]},findCharacterStyleById:function(p){return e[p]},findTableStyleById:function(p){return r[p]},findNumberingStyleById:function(p){return d[p]}}}D.EMPTY=new D({},{},{},{});function m(i){var e={},r={},d={},p={},c={paragraph:e,character:r,table:d,numbering:p};return i.getElementsByTagName("w:style").forEach(function(y){var u=a(y),h=c[u.type];h&&h[u.styleId]===void 0&&(h[u.styleId]=u)}),new D(e,r,d,p)}function a(i){var e=i.attributes["w:type"];if(e==="numbering")return f(e,i);var r=s(i),d=g(i);return{type:e,styleId:r,name:d}}function g(i){var e=i.first("w:name");return e?e.attributes["w:val"]:null}function f(i,e){var r=s(e),d=e.firstOrEmpty("w:pPr").firstOrEmpty("w:numPr").firstOrEmpty("w:numId").attributes["w:val"];return{type:i,numId:d,styleId:r}}function s(i){return i.attributes["w:styleId"]}},{}],16:[function(C,ie,k){k.uriToZipEntryName=D,k.replaceFragment=m;function D(a,g){return g.charAt(0)==="/"?g.substr(1):a+"/"+g}function m(a,g){var f=a.indexOf("#");return f!==-1&&(a=a.substring(0,f)),a+"#"+g}},{}],17:[function(C,ie,k){var D=C("../styles/html-paths");function m(r,d,p){return g(D.element(r,d,{fresh:!1}),p)}function a(r,d,p){var c=D.element(r,d,{fresh:!0});return g(c,p)}function g(r,d){return{type:"element",tag:r,children:d||[]}}function f(r){return{type:"text",value:r}}var s={type:"forceWrite"};k.freshElement=a,k.nonFreshElement=m,k.elementWithTag=g,k.text=f,k.forceWrite=s;var i={br:!0,hr:!0,img:!0,input:!0};function e(r){return r.children.length===0&&i[r.tag.tagName]}k.isVoidElement=e},{"../styles/html-paths":28}],18:[function(C,ie,k){var D=C("./ast");k.freshElement=D.freshElement,k.nonFreshElement=D.nonFreshElement,k.elementWithTag=D.elementWithTag,k.text=D.text,k.forceWrite=D.forceWrite,k.simplify=C("./simplify");function m(i,e){e.forEach(function(r){a(i,r)})}function a(i,e){g[e.type](i,e)}var g={element:f,text:s,forceWrite:function(){}};function f(i,e){D.isVoidElement(e)?i.selfClosing(e.tag.tagName,e.tag.attributes):(i.open(e.tag.tagName,e.tag.attributes),m(i,e.children),i.close(e.tag.tagName))}function s(i,e){i.text(e.value)}k.write=m},{"./ast":17,"./simplify":19}],19:[function(C,ie,k){var D=C("underscore"),m=C("./ast");function a(o){return g(d(o))}function g(o){var t=[];return o.map(f).forEach(function(n){r(t,n)}),t}function f(o){return s[o.type](o)}var s={element:i,text:e,forceWrite:e};function i(o){return m.elementWithTag(o.tag,g(o.children))}function e(o){return o}function r(o,t){var n=o[o.length-1];t.type==="element"&&!t.tag.fresh&&n&&n.type==="element"&&t.tag.matchesElement(n.tag)?(t.tag.separator&&r(n.children,m.text(t.tag.separator)),t.children.forEach(function(b){r(n.children,b)})):o.push(t)}function d(o){return p(o,function(t){return c[t.type](t)})}function p(o,t){return D.flatten(D.map(o,t),!0)}var c={element:u,text:h,forceWrite:y};function y(o){return[o]}function u(o){var t=d(o.children);return t.length===0&&!m.isVoidElement(o)?[]:[m.elementWithTag(o.tag,t)]}function h(o){return o.value.length===0?[]:[o]}ie.exports=a},{"./ast":17,underscore:102}],20:[function(C,ie,k){var D=C("underscore"),m=C("./promises"),a=C("./html");k.imgElement=g;function g(f){return function(s,i){return m.when(f(s)).then(function(e){var r={};return s.altText&&(r.alt=s.altText),D.extend(r,e),[a.freshElement("img",r)]})}}k.inline=k.imgElement,k.dataUri=g(function(f){return f.readAsBase64String().then(function(s){return{src:"data:"+f.contentType+";base64,"+s}})})},{"./html":18,"./promises":23,underscore:102}],21:[function(C,ie,k){(function(D){var m=C("underscore"),a=C("./docx/docx-reader"),g=C("./docx/style-map"),f=C("./document-to-html").DocumentConverter,s=C("./raw-text").convertElementToRawText,i=C("./style-reader").readStyle,e=C("./options-reader").readOptions,r=C("./unzip"),d=C("./results").Result;k.convertToHtml=p,k.convertToMarkdown=c,k.convert=y,k.extractRawText=t,k.images=C("./images"),k.transforms=C("./transforms"),k.underline=C("./underline"),k.embedStyleMap=n,k.readEmbeddedStyleMap=u;function p(b,U){return y(b,U)}function c(b,U){var M=Object.create(U||{});return M.outputFormat="markdown",y(b,M)}function y(b,U){return U=e(U),r.openZip(b).tap(function(M){return g.readStyleMap(M).then(function(E){U.embeddedStyleMap=E})}).then(function(M){return a.read(M,b,U).then(function(E){return E.map(U.transformDocument)}).then(function(E){return h(E,U)})})}function u(b){return r.openZip(b).then(g.readStyleMap)}function h(b,U){var M=o(U.readStyleMap()),E=m.extend({},U,{styleMap:M.value}),W=new f(E);return b.flatMapThen(function(I){return M.flatMapThen(function(R){return W.convertToHtml(I)})})}function o(b){return d.combine((b||[]).map(i)).map(function(U){return U.filter(function(M){return!!M})})}function t(b){return r.openZip(b).then(a.read).then(function(U){return U.map(s)})}function n(b,U){return r.openZip(b).tap(function(M){return g.writeStyleMap(M,U)}).then(function(M){return M.toArrayBuffer()}).then(function(M){return{toArrayBuffer:function(){return M},toBuffer:function(){return D.from(M)}}})}k.styleMapping=function(){throw new Error(`Use a raw string instead of mammoth.styleMapping e.g. "p[style-name='Title'] => h1" instead of mammoth.styleMapping("p[style-name='Title'] => h1")`)}}).call(this,C("buffer").Buffer)},{"./document-to-html":3,"./docx/docx-reader":9,"./docx/style-map":14,"./images":20,"./options-reader":22,"./raw-text":24,"./results":25,"./style-reader":26,"./transforms":30,"./underline":31,"./unzip":2,buffer:83,underscore:102}],22:[function(C,ie,k){k.readOptions=g;var D=C("underscore"),m=k._defaultStyleMap=["p.Heading1 => h1:fresh","p.Heading2 => h2:fresh","p.Heading3 => h3:fresh","p.Heading4 => h4:fresh","p.Heading5 => h5:fresh","p.Heading6 => h6:fresh","p[style-name='Heading 1'] => h1:fresh","p[style-name='Heading 2'] => h2:fresh","p[style-name='Heading 3'] => h3:fresh","p[style-name='Heading 4'] => h4:fresh","p[style-name='Heading 5'] => h5:fresh","p[style-name='Heading 6'] => h6:fresh","p[style-name='heading 1'] => h1:fresh","p[style-name='heading 2'] => h2:fresh","p[style-name='heading 3'] => h3:fresh","p[style-name='heading 4'] => h4:fresh","p[style-name='heading 5'] => h5:fresh","p[style-name='heading 6'] => h6:fresh","p.Heading => h1:fresh","p[style-name='Heading'] => h1:fresh","r[style-name='Strong'] => strong","p[style-name='footnote text'] => p:fresh","r[style-name='footnote reference'] =>","p[style-name='endnote text'] => p:fresh","r[style-name='endnote reference'] =>","p[style-name='annotation text'] => p:fresh","r[style-name='annotation reference'] =>","p[style-name='Footnote'] => p:fresh","r[style-name='Footnote anchor'] =>","p[style-name='Endnote'] => p:fresh","r[style-name='Endnote anchor'] =>","p:unordered-list(1) => ul > li:fresh","p:unordered-list(2) => ul|ol > li > ul > li:fresh","p:unordered-list(3) => ul|ol > li > ul|ol > li > ul > li:fresh","p:unordered-list(4) => ul|ol > li > ul|ol > li > ul|ol > li > ul > li:fresh","p:unordered-list(5) => ul|ol > li > ul|ol > li > ul|ol > li > ul|ol > li > ul > li:fresh","p:ordered-list(1) => ol > li:fresh","p:ordered-list(2) => ul|ol > li > ol > li:fresh","p:ordered-list(3) => ul|ol > li > ul|ol > li > ol > li:fresh","p:ordered-list(4) => ul|ol > li > ul|ol > li > ul|ol > li > ol > li:fresh","p:ordered-list(5) => ul|ol > li > ul|ol > li > ul|ol > li > ul|ol > li > ol > li:fresh","r[style-name='Hyperlink'] =>","p[style-name='Normal'] => p:fresh","p.Body => p:fresh","p[style-name='Body'] => p:fresh"],a=k._standardOptions={externalFileAccess:!1,transformDocument:s,includeDefaultStyleMap:!0,includeEmbeddedStyleMap:!0};function g(i){return i=i||{},D.extend({},a,i,{customStyleMap:f(i.styleMap),readStyleMap:function(){var e=this.customStyleMap;return this.includeEmbeddedStyleMap&&(e=e.concat(f(this.embeddedStyleMap))),this.includeDefaultStyleMap&&(e=e.concat(m)),e}})}function f(i){return i?D.isString(i)?i.split(`
3
3
  `).map(function(e){return e.trim()}).filter(function(e){return e!==""&&e.charAt(0)!=="#"}):i:[]}function s(i){return i}},{underscore:102}],23:[function(C,ie,k){var D=C("underscore"),m=C("bluebird/js/release/promise")();k.defer=a,k.when=m.resolve,k.resolve=m.resolve,k.all=m.all,k.props=m.props,k.reject=m.reject,k.promisify=m.promisify,k.mapSeries=m.mapSeries,k.attempt=m.attempt,k.nfcall=function(g){var f=Array.prototype.slice.call(arguments,1),s=m.promisify(g);return s.apply(null,f)},m.prototype.fail=m.prototype.caught,m.prototype.also=function(g){return this.then(function(f){var s=D.extend({},f,g(f));return m.props(s)})};function a(){var g,f,s=new m.Promise(function(i,e){g=i,f=e});return{resolve:g,reject:f,promise:s}}},{"bluebird/js/release/promise":68,underscore:102}],24:[function(C,ie,k){var D=C("./documents");function m(a){if(a.type==="text")return a.value;if(a.type===D.types.tab)return" ";var g=a.type==="paragraph"?`
4
4