@gmb/bitmark-parser 6.3.0 → 6.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,14 +6,24 @@ A high-performance parser and generator for [bitmark](https://docs.bitmark.cloud
6
6
  npm install @gmb/bitmark-parser
7
7
  ```
8
8
 
9
- ## Programmatic API (Node.js)
9
+ ## Programmatic API (JS / TS)
10
10
 
11
11
  ```js
12
- import { convert, lex, breakscapeText, unbreakscapeText, info, version } from "@gmb/bitmark-parser";
12
+ import {
13
+ convert,
14
+ lex,
15
+ breakscapeText,
16
+ unbreakscapeText,
17
+ info,
18
+ version,
19
+ } from "@gmb/bitmark-parser";
13
20
 
14
21
  // Convert bitmark to JSON — set inputFormat explicitly when known (skips
15
22
  // auto-detection); "auto" also works but costs an extra scan
16
- const json = convert("[.article]\nHello **bold**", { inputFormat: "bitmark", warnings: true });
23
+ const json = convert("[.article]\nHello **bold**", {
24
+ inputFormat: "bitmark",
25
+ warnings: true,
26
+ });
17
27
  const parsedJson = JSON.parse(json);
18
28
  console.log(parsedJson[0].bit.type);
19
29
  console.log(parsedJson[0].parser.warnings);
@@ -29,8 +39,14 @@ const tokens = lex("[.article]\nHello **bold**");
29
39
  const tokenJson = lex("[.article]\nHello **bold**", { stage: "lex-json" });
30
40
 
31
41
  // Breakscape / unbreakscape text
32
- const escaped = breakscapeText("[!example]", { format: "bitmark++", location: "body" });
33
- const unescaped = unbreakscapeText(escaped, { format: "bitmark++", location: "body" });
42
+ const escaped = breakscapeText("[!example]", {
43
+ format: "bitmark++",
44
+ location: "body",
45
+ });
46
+ const unescaped = unbreakscapeText(escaped, {
47
+ format: "bitmark++",
48
+ location: "body",
49
+ });
34
50
 
35
51
  // Query supported bit types
36
52
  const bitInfo = info({ infoType: "list", format: "text" });
@@ -46,6 +62,7 @@ console.log(version());
46
62
  Convert between bitmark, JSON, and the mapped markup formats (html/xml/…).
47
63
 
48
64
  Options:
65
+
49
66
  - `inputFormat` — `"auto"` (default), `"bitmark"`, `"json"`, or a mapping id (`"html"`, `"xml"`, …)
50
67
  - `outputFormat` — `"auto"` (default: the opposite direction), `"text"` (lossy plain-text extraction; output-only), or as above
51
68
  - `mode` — `"optimized"` (default) or `"full"`
@@ -78,6 +95,7 @@ Options:
78
95
  `bitmarkToObjects` / `objectsToBitmark` (below), which pin their formats.
79
96
 
80
97
  For bitmark input, output is a JSON array of entries with:
98
+
81
99
  - `bit` — serialized bit payload
82
100
  - `parser` — parser metadata, `errors` / `warnings`, and `infos` (informational notices for recoveries that are not necessarily wrong, e.g. text kept as text because it only looks like an unclosed tag)
83
101
  - `bitmark` — source bitmark text
@@ -99,6 +117,7 @@ Count or split the bits of a bitmark/JSON input without full parsing.
99
117
  Lex bitmark text.
100
118
 
101
119
  Stages (`options.stage`):
120
+
102
121
  - `"lex"` — Unified lexer token stream, one token per line (default)
103
122
  - `"lex-json"` — Unified lexer token stream as JSON
104
123
 
@@ -140,7 +159,12 @@ envelope, and resource/card content have named types (`ImageResource`,
140
159
  `FlashcardBitCard`, …).
141
160
 
142
161
  ```ts
143
- import { bitmarkToObjects, objectsToBitmark, patchEntry, type ArticleBit } from "@gmb/bitmark-parser";
162
+ import {
163
+ bitmarkToObjects,
164
+ objectsToBitmark,
165
+ patchEntry,
166
+ type ArticleBit,
167
+ } from "@gmb/bitmark-parser";
144
168
 
145
169
  // bitmark → typed entries
146
170
  const entries = bitmarkToObjects("[.article]\nHello **world**");
@@ -175,7 +199,9 @@ import { BitmarkParserGenerator } from "@gmb/bitmark-parser/legacy";
175
199
  // or: import { legacy } from "@gmb/bitmark-parser";
176
200
 
177
201
  const bpg = new BitmarkParserGenerator();
178
- const json = bpg.convert("[.article]\nHello **world**", { outputFormat: "json" });
202
+ const json = bpg.convert("[.article]\nHello **world**", {
203
+ outputFormat: "json",
204
+ });
179
205
  ```
180
206
 
181
207
  Supported (bpg-compatible signatures and return shapes): `convert`,
@@ -219,7 +245,7 @@ Differences (all loud, never silent):
219
245
  bits the first entry becomes the single `resource` (as bpg).
220
246
  - **`convertHtmlTable`** converts HTML `<table>` markup ↔ table bits via
221
247
  the core's html mapping (the `<bitmark-bit>` envelope is added/stripped
222
- at the boundary). The markup produced *inside* `<table>` follows this
248
+ at the boundary). The markup produced _inside_ `<table>` follows this
223
249
  parser's html mapping and may differ from bpg's in detail.
224
250
  `keepUnknownTags` / `noBreakscaping` throw.
225
251
  - `version()` reports this package's version (6.x), not a bpg version.
@@ -281,11 +307,15 @@ The package includes pre-built browser bundles with the WASM module.
281
307
 
282
308
  ```html
283
309
  <script type="module">
284
- import init, { convert } from "https://cdn.jsdelivr.net/npm/@gmb/bitmark-parser@latest/dist/browser/bitmark-parser.min.js";
310
+ import init, {
311
+ convert,
312
+ } from "https://cdn.jsdelivr.net/npm/@gmb/bitmark-parser@latest/dist/browser/bitmark-parser.min.js";
285
313
 
286
314
  await init();
287
315
 
288
- const json = convert("[.article]\nHello **bold**", { inputFormat: "bitmark" });
316
+ const json = convert("[.article]\nHello **bold**", {
317
+ inputFormat: "bitmark",
318
+ });
289
319
  console.log(json);
290
320
  </script>
291
321
  ```
@@ -1,5 +1,5 @@
1
- var ke=Object.defineProperty;var st=(t,e,r)=>e in t?ke(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r;var we=(t,e)=>{for(var r in e)ke(t,r,{get:e[r],enumerable:true});};var T=(t,e,r)=>st(t,typeof e!="symbol"?e+"":e,r);var U={};we(U,{breakscape_text:()=>oe,canonicalize:()=>pe,convert:()=>H,convert_text:()=>lt,count_bits:()=>ue,default:()=>le,info:()=>se,initSync:()=>Fe,is_bitmark:()=>pt,lex:()=>re,prettify:()=>ct,split_bits:()=>ce,split_json_bits:()=>ut,transform:()=>ae,unbreakscape_text:()=>ie});var a,y=0,M=null;function D(){return (M===null||M.byteLength===0)&&(M=new Uint8Array(a.memory.buffer)),M}var K=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},at=typeof K.encodeInto=="function"?function(t,e){return K.encodeInto(t,e)}:function(t,e){let r=K.encode(t);return e.set(r),{read:t.length,written:r.length}};function _(t,e,r){if(r===void 0){let p=K.encode(t),u=e(p.length,1)>>>0;return D().subarray(u,u+p.length).set(p),y=p.length,u}let n=t.length,o=e(n,1)>>>0,s=D(),i=0;for(;i<n;i++){let p=t.charCodeAt(i);if(p>127)break;s[o+i]=p;}if(i!==n){i!==0&&(t=t.slice(i)),o=r(o,n,n=i+t.length*3,1)>>>0;let p=D().subarray(o+i,o+n),u=at(t,p);i+=u.written,o=r(o,n,i,1)>>>0;}return y=i,o}var J=null;function k(){return (J===null||J.buffer.detached===true||J.buffer.detached===void 0&&J.buffer!==a.memory.buffer)&&(J=new DataView(a.memory.buffer)),J}var he=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:true,fatal:true}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&he.decode();function S(t,e){return t=t>>>0,he.decode(D().subarray(t,t+e))}function re(t,e){let r,n;try{let i=a.__wbindgen_add_to_stack_pointer(-16),p=_(t,a.__wbindgen_export_0,a.__wbindgen_export_1),u=y,c=_(e,a.__wbindgen_export_0,a.__wbindgen_export_1),l=y;a.lex(i,p,u,c,l);var o=k().getInt32(i+0,!0),s=k().getInt32(i+4,!0);return r=o,n=s,S(o,s)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(r,n,1);}}function oe(t,e,r){let n,o;try{let p=a.__wbindgen_add_to_stack_pointer(-16),u=_(t,a.__wbindgen_export_0,a.__wbindgen_export_1),c=y,l=_(e,a.__wbindgen_export_0,a.__wbindgen_export_1),m=y,f=_(r,a.__wbindgen_export_0,a.__wbindgen_export_1),x=y;a.breakscape_text(p,u,c,l,m,f,x);var s=k().getInt32(p+0,!0),i=k().getInt32(p+4,!0);return n=s,o=i,S(s,i)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(n,o,1);}}function ie(t,e,r){let n,o;try{let p=a.__wbindgen_add_to_stack_pointer(-16),u=_(t,a.__wbindgen_export_0,a.__wbindgen_export_1),c=y,l=_(e,a.__wbindgen_export_0,a.__wbindgen_export_1),m=y,f=_(r,a.__wbindgen_export_0,a.__wbindgen_export_1),x=y;a.unbreakscape_text(p,u,c,l,m,f,x);var s=k().getInt32(p+0,!0),i=k().getInt32(p+4,!0);return n=s,o=i,S(s,i)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(n,o,1);}}function se(t,e,r,n,o){let s,i;try{let c=a.__wbindgen_add_to_stack_pointer(-16),l=_(t,a.__wbindgen_export_0,a.__wbindgen_export_1),m=y,f=_(e,a.__wbindgen_export_0,a.__wbindgen_export_1),x=y,b=_(r,a.__wbindgen_export_0,a.__wbindgen_export_1),g=y;a.info(c,l,m,f,x,b,g,n,o);var p=k().getInt32(c+0,!0),u=k().getInt32(c+4,!0);return s=p,i=u,S(p,u)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(s,i,1);}}function ae(t,e,r,n,o,s,i,p){let u,c;try{let f=a.__wbindgen_add_to_stack_pointer(-16),x=_(t,a.__wbindgen_export_0,a.__wbindgen_export_1),b=y,g=_(e,a.__wbindgen_export_0,a.__wbindgen_export_1),d=y,w=_(r,a.__wbindgen_export_0,a.__wbindgen_export_1),B=y,j=_(n,a.__wbindgen_export_0,a.__wbindgen_export_1),A=y,ot=_(o,a.__wbindgen_export_0,a.__wbindgen_export_1),it=y;a.transform(f,x,b,g,d,w,B,j,A,ot,it,s,i,p);var l=k().getInt32(f+0,!0),m=k().getInt32(f+4,!0);return u=l,c=m,S(l,m)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(u,c,1);}}function H(t,e,r,n,o,s,i,p){let u,c;try{let f=a.__wbindgen_add_to_stack_pointer(-16),x=_(t,a.__wbindgen_export_0,a.__wbindgen_export_1),b=y,g=_(e,a.__wbindgen_export_0,a.__wbindgen_export_1),d=y,w=_(r,a.__wbindgen_export_0,a.__wbindgen_export_1),B=y,j=_(n,a.__wbindgen_export_0,a.__wbindgen_export_1),A=y;a.convert(f,x,b,g,d,w,B,j,A,o,s,i,p);var l=k().getInt32(f+0,!0),m=k().getInt32(f+4,!0);return u=l,c=m,S(l,m)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(u,c,1);}}function pe(t,e,r,n,o,s){let i,p;try{let l=a.__wbindgen_add_to_stack_pointer(-16),m=_(t,a.__wbindgen_export_0,a.__wbindgen_export_1),f=y,x=_(e,a.__wbindgen_export_0,a.__wbindgen_export_1),b=y,g=_(r,a.__wbindgen_export_0,a.__wbindgen_export_1),d=y;a.canonicalize(l,m,f,x,b,g,d,n,o,s);var u=k().getInt32(l+0,!0),c=k().getInt32(l+4,!0);return i=u,p=c,S(u,c)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(i,p,1);}}function ue(t){let e,r;try{let s=a.__wbindgen_add_to_stack_pointer(-16),i=_(t,a.__wbindgen_export_0,a.__wbindgen_export_1),p=y;a.count_bits(s,i,p);var n=k().getInt32(s+0,!0),o=k().getInt32(s+4,!0);return e=n,r=o,S(n,o)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(e,r,1);}}function ce(t){let e,r;try{let s=a.__wbindgen_add_to_stack_pointer(-16),i=_(t,a.__wbindgen_export_0,a.__wbindgen_export_1),p=y;a.split_bits(s,i,p);var n=k().getInt32(s+0,!0),o=k().getInt32(s+4,!0);return e=n,r=o,S(n,o)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(e,r,1);}}function pt(t){let e=_(t,a.__wbindgen_export_0,a.__wbindgen_export_1),r=y;return a.is_bitmark(e,r)!==0}function ut(t){let e,r;try{let s=a.__wbindgen_add_to_stack_pointer(-16),i=_(t,a.__wbindgen_export_0,a.__wbindgen_export_1),p=y;a.split_json_bits(s,i,p);var n=k().getInt32(s+0,!0),o=k().getInt32(s+4,!0);return e=n,r=o,S(n,o)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(e,r,1);}}function ct(t,e){let r,n;try{let i=a.__wbindgen_add_to_stack_pointer(-16),p=_(t,a.__wbindgen_export_0,a.__wbindgen_export_1),u=y;a.prettify(i,p,u,e);var o=k().getInt32(i+0,!0),s=k().getInt32(i+4,!0);return r=o,n=s,S(o,s)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(r,n,1);}}function lt(t,e,r,n){let o,s;try{let u=a.__wbindgen_add_to_stack_pointer(-16),c=_(t,a.__wbindgen_export_0,a.__wbindgen_export_1),l=y,m=_(e,a.__wbindgen_export_0,a.__wbindgen_export_1),f=y,x=_(r,a.__wbindgen_export_0,a.__wbindgen_export_1),b=y,g=_(n,a.__wbindgen_export_0,a.__wbindgen_export_1),d=y;a.convert_text(u,c,l,m,f,x,b,g,d);var i=k().getInt32(u+0,!0),p=k().getInt32(u+4,!0);return o=i,s=p,S(i,p)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(o,s,1);}}async function dt(t,e){if(typeof Response=="function"&&t instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(t,e)}catch(n){if(t.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",n);else throw n}let r=await t.arrayBuffer();return await WebAssembly.instantiate(r,e)}else {let r=await WebAssembly.instantiate(t,e);return r instanceof WebAssembly.Instance?{instance:r,module:t}:r}}function Oe(){let t={};return t.wbg={},t}function Te(t,e){return a=t.exports,ve.__wbindgen_wasm_module=e,J=null,M=null,a}function Fe(t){if(a!==void 0)return a;typeof t<"u"&&(Object.getPrototypeOf(t)===Object.prototype?{module:t}=t:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));let e=Oe();t instanceof WebAssembly.Module||(t=new WebAssembly.Module(t));let r=new WebAssembly.Instance(t,e);return Te(r,t)}async function ve(t){if(a!==void 0)return a;typeof t<"u"&&(Object.getPrototypeOf(t)===Object.prototype?{module_or_path:t}=t:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof t>"u"&&(t=new URL("bitmark_wasm_bg.wasm",import.meta.url));let e=Oe();(typeof t=="string"||typeof Request=="function"&&t instanceof Request||typeof URL=="function"&&t instanceof URL)&&(t=fetch(t));let{instance:r,module:n}=await dt(await t,e);return Te(r,n)}var le=ve;var G={version:"6.3.0"};function N(t){return t.startsWith("error:")}function $(t){let e=t instanceof Error?t.message:String(t);return e.startsWith("error:")?e:`error: ${e}`}function mt(t){let e=t.trim();return e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):t}function ft(t){if(t===void 0)return [];if(typeof t=="string"){let e=t.trim();return e===""?[]:JSON.parse(e)}return t}function gt(t,e,r){if(r){let s=t.split_bits(e);if(N(s))throw new Error(s);let i=JSON.parse(s);return i.map(p=>({view:{format:"bitmark",index:p.index,total:i.length,source:p.source},source:p.source}))}let n=t.split_json_bits(e);if(N(n))throw new Error(n);let o=JSON.parse(n);return o.map((s,i)=>({view:{format:"json",index:i,total:o.length,bit:s.bit??{}},source:JSON.stringify([s])}))}function de(t,e,r){let n=r.mode??"optimized",o=r.outputFormat??"json",s=r.spacesAroundValues??1,i=r.indent??2,p=r.pretty??false,u=r.inputFormat??"auto",c=u==="bitmark"||u!=="json"&&t.is_bitmark(e),l=c?"bitmark":"json",m=ft(r.patch),f=gt(t,e,c),x=f.length,b=[],g=[];for(let d=0;d<x;d++){let{view:w,source:B}=f[d];w.index=d,w.total=x;let j=r.preHook?r.preHook(w)||{}:{};if(j.drop)continue;let A=j.patches?[...m,...j.patches]:m;b.push({index:d,source:B,inputFormat:l,outputFormat:j.outputFormat??o,mode:n,patchJson:JSON.stringify(A),spacesAroundValues:s}),g.push(w);}return {jobs:b,views:g,output:o,pretty:p,indent:i}}function bt(t,e){let r=t.transform(e.source,e.inputFormat,e.outputFormat,e.mode,e.patchJson,false,2,e.spacesAroundValues);return N(r)?r:e.outputFormat==="json"?mt(r):r}function me(t,e,r,n,o){if(r==="bitmark"||r==="text")return e.join(`
2
- `);let s=`[${e.join(",")}]`;return n?t.prettify(s,o):s}function Re(t,e,r){let n;try{n=de(t,e,r);}catch(s){return $(s)}let o=[];for(let s=0;s<n.jobs.length;s++){let i=bt(t,n.jobs[s]);if(N(i))return i;r.postHook?.(n.views[s],i),o.push(i);}return me(t,o,n.output,n.pretty,n.indent)}async function Ee(t,e,r,n){let o;try{o=de(t,e,r);}catch(i){return $(i)}let s;try{s=await n(o.jobs,r.workers??4);}catch(i){return $(i)}for(let i=0;i<s.length;i++){if(N(s[i]))return s[i];r.postHook?.(o.views[i],s[i]);}return me(t,s,o.output,o.pretty,o.indent)}function Pe(t,e){if(t.length===0)return Promise.resolve([]);let r=Math.max(1,Math.min(e,t.length)),n=new URL("./worker-entry.js",import.meta.url);return new Promise((o,s)=>{let i=new Array(t.length),p=0,u=0,c=false,l=[],m=()=>{for(let b of l)b.terminate();},f=b=>{c||(c=true,m(),s(b));},x=b=>{if(c||p>=t.length)return;let g=p++;b.postMessage({id:g,job:t[g]});};for(let b=0;b<r;b++){let g=new Worker(n,{type:"module"});l.push(g),g.onmessage=d=>{let w=d.data;if(!c){if(!w.ok){f(new Error(w.error??"worker job failed"));return}if(i[w.id]=w.element,u++,u===t.length){c=true,m(),o(i);return}x(g);}},g.onerror=d=>f(new Error(d.message||"worker error"));}for(let b of l)x(b);})}var fe;function Be(t){fe=t;}function h(){if(!fe)throw new Error("legacy API not initialised: the WASM module has not been provided (browser consumers must call init() first)");return fe}var rt={};we(rt,{Ast:()=>Ue,BitType:()=>Ce,BitmarkFileGenerator:()=>De,BitmarkGenerator:()=>Ge,BitmarkParser:()=>Qe,BitmarkParserGenerator:()=>te,BitmarkParserType:()=>vt,BitmarkStringGenerator:()=>ze,BitmarkVersion:()=>Tt,BodyTextFormat:()=>Pt,BoundingBoxIndex:()=>He,Builder:()=>ee,CardSetVersion:()=>Ft,FileWriter:()=>tt,HtmlTableGenerator:()=>qe,HtmlTableParser:()=>Xe,InfoFormat:()=>Et,InfoType:()=>Rt,Input:()=>wt,InputFormat:()=>Ot,JsonFileGenerator:()=>Ye,JsonGenerator:()=>Ke,JsonParser:()=>Ze,JsonStringGenerator:()=>$e,LegacyUnsupportedError:()=>C,NodeType:()=>Me,Output:()=>ht,ResourceBuilder:()=>ne,StreamWriter:()=>nt,StringWriter:()=>et,TextLocation:()=>Bt,TextMarkType:()=>We,TextNodeType:()=>Ne,bitmarkTextParse:()=>Le,isPseudoAst:()=>Ie});var C=class extends Error{constructor(e){super(e),this.name="LegacyUnsupportedError";}};function L(t,e){throw new C(`'${t}' is not supported by the @gmb/bitmark-parser legacy API`+(e?`: ${e}`:""))}function I(t,e){throw new C(`Option '${t}' is not supported by the @gmb/bitmark-parser legacy API`+(e?`: ${e}`:""))}var ge="bitmark v2 output is not supported (this parser is bitmark v3 only)";function be(t){t.bitmarkVersion===2&&I("bitmarkVersion: 2",ge);}function q(t){t.explicitTextFormat&&I("bitmarkOptions.explicitTextFormat"),t.cardSetVersion===1&&I("bitmarkOptions.cardSetVersion: 1",ge),t.debugGenerationInline&&I("bitmarkOptions.debugGenerationInline"),t.noBreakscaping&&I("bitmarkOptions.noBreakscaping");}function X(t){t.textAsPlainText&&I("jsonOptions.textAsPlainText",ge),t.debugGenerationInline&&I("jsonOptions.debugGenerationInline");}function W(t){return t===true?{pretty:true,indent:2}:typeof t=="number"&&t>0?{pretty:true,indent:t}:{pretty:false,indent:2}}function Q(t){return t===void 0||t===true?1:t===false?0:Math.max(0,Math.min(10,t))}function Z(t){switch(t){case "text":case "latex":case "json":case "xml":return "plainText";default:return "bitmark++"}}var Se=Symbol.for("@gmb/bitmark-parser/legacy-pseudo-ast");function V(t){let e={bits:t};return Object.defineProperty(e,Se,{value:true,enumerable:false}),e}function Ie(t){return t!==null&&typeof t=="object"&&(Se in t||Array.isArray(t.bits))}var je={"extractor-image":{key:"images",resourceType:"image"},"extractor-image-collapsible":{key:"images",resourceType:"image"},"images-logo-grave":{key:"logos",resourceType:"image"},"prototype-images":{key:"images",resourceType:"image"}};var ye=Symbol.for("@gmb/bitmark-parser/legacy-built-bit-parser"),_t={bitType:"type",textFormat:"format",flashcards:"cards",markConfig:"marks"},xt={"bitmark--":"bitmark++","bitmark+":"bitmark++"},kt=["title","subtitle","item","lead","pageNumber","marginNumber","hint","instruction","caption"],ee=class{buildBitmark(e){let r=V(e.bits??[]);return e.errors!==void 0&&(r.errors=e.errors),r}buildBit(e,r){let n=h(),o={...e},s=o.bitType;this.assertKnownBitType(s);let i={};i.type=s,o.isCommented&&(i.type="_comment",i.originalType=s),delete o.bitType,delete o.isCommented;let p=o.textFormat;p!==void 0&&(i.format=xt[p]??p,delete o.textFormat),delete o.resourceType;let u=o.body;u!=null&&typeof u=="object"&&"body"in u&&(i.body=u.body,delete o.body),o.example!==void 0?(i.isExample=true,i.example=o.example,delete o.example,delete o.__isDefaultExample):o.__isDefaultExample&&(i.isExample=true,delete o.__isDefaultExample);let c=o.resources;if(c!==void 0&&s!==void 0){let g=Array.isArray(c)?c:[c],d=je[s];d?i[d.key]=g.filter(w=>w!==null&&typeof w=="object"&&w.type===d.resourceType):g.length>=1&&(i.resource=g[0]),delete o.resources;}let l=o.parser;delete o.parser;let m=o.extraProperties;delete o.extraProperties;for(let[g,d]of Object.entries(o))d!==void 0&&(i[_t[g]??g]=d);if(m)for(let[g,d]of Object.entries(m))g in i||(i[g]=d);this.parseStringTexts(i);let f=n.convert(JSON.stringify([{bit:i}]),"json","json","optimized",false,2,1,false);if(f.startsWith("error:"))throw new Error(f.slice(6).trim());let b=JSON.parse(f)[0]?.bit??i;for(let[g,d]of Object.entries(i))g in b||d===false||d===""||d===null||Array.isArray(d)&&d.length===0||(b[g]=d);return l!==void 0&&Object.defineProperty(b,ye,{value:l,enumerable:false}),b}buildHighlight(e,r){if(!r)return;let n={...r},o=n.attrs;return o&&Object.assign(n,o),{type:"highlight",texts:Array.isArray(n.texts)?n.texts.filter(p=>p!=null).map(p=>({text:p.text??"",isCorrect:p.isCorrect??false,isHighlighted:p.isHighlighted??false,...Ae(p,["text","isCorrect","isHighlighted"])})):[],prefix:n.prefix??"",postfix:n.postfix??"",...Ae(n,["type","texts","prefix","postfix","attrs"]),attrs:{}}}parseStringTexts(e){let r=h(),n=(i,p)=>{if(i==="")return i;let u=r.convert_text(i,"textToAst","bitmark++",p);try{return JSON.parse(u)}catch{return i}},o=e.format,s=o===void 0||o==="bitmark++"||o==="bitmark+";typeof e.body=="string"&&s&&(e.body=n(e.body,"body"));for(let i of kt){let p=e[i];typeof p=="string"&&(e[i]=n(p,"tag"));}}assertKnownBitType(e){let r=h(),n=false;if(e!==void 0)try{n=JSON.parse(r.info("bit","json",e,!1,2)).error===void 0;}catch{n=false;}if(!n)throw new Error(`No config found for bit: ${e}`)}};function Ae(t,e){let r={};for(let[n,o]of Object.entries(t))o!==void 0&&!e.includes(n)&&(r[n]=o);return r}var te=class{version(){return G.version}convert(e,r){let n=Object.assign({},r),o=Object.assign({},n.jsonOptions),s=Object.assign({},n.bitmarkOptions);be(n),q(s),X(o),this.checkBrowserFileWrite(n.outputFile);let i=h(),{source:p,isBitmark:u}=this.resolveInput(e,n.inputFormat),c=n.outputFormat??(u?"json":"bitmark"),l=c==="ast"?"json":c,{pretty:m,indent:f}=W(o.prettify),x=l==="bitmark"?W(s.prettifyJson):{pretty:m,indent:f},b=Q(s.spacesAroundValues),g=!o.excludeUnknownProperties,d=i.convert(p,u?"bitmark":"json",l,"optimized",x.pretty,x.indent,b,g);if(this.throwOnError(d),c==="bitmark"||c==="text")return this.deliver(d,n.outputFile,n.fileOptions);if(c==="json")return n.outputFile?this.deliver(d,n.outputFile,n.fileOptions):m||o.stringify?d:JSON.parse(d);let w=V(JSON.parse(d));return n.outputFile?this.deliver(JSON.stringify(w),n.outputFile,n.fileOptions):w}upgrade(e,r){let n=Object.assign({},r),o=Object.assign({},n.jsonOptions),s=Object.assign({},n.bitmarkOptions);be(n),q(s),X(o),this.checkBrowserFileWrite(n.outputFile);let i=h(),{source:p,isBitmark:u}=this.resolveInput(e,n.inputFormat),{pretty:c,indent:l}=W(u?s.prettifyJson:o.prettify),m=Q(s.spacesAroundValues),f=i.canonicalize(p,u?"bitmark":"json","optimized",c,l,m);return this.throwOnError(f),u?this.deliver(f,n.outputFile,n.fileOptions):n.outputFile?this.deliver(f,n.outputFile,n.fileOptions):c||o.stringify?f:JSON.parse(f)}info(e){let r=Object.assign({},e),n=h(),o=r.type??"list",s=r.outputFormat??"text",{pretty:i,indent:p}=W(r.prettify),u=s==="pojo"?"json":s,c=n.info(o,u,r.bit??"",i,p);return this.throwOnError(c),s==="pojo"?JSON.parse(c):c}generateConfig(e){L("BitmarkParserGenerator.generateConfig","bpg-internal development tool");}convertHtmlTable(e,r){let n=Object.assign({},r),o=Object.assign({},n.jsonOptions),s=Object.assign({},n.bitmarkOptions);q(s),X(o),n.keepUnknownTags&&I("keepUnknownTags"),n.noBreakscaping&&I("noBreakscaping"),this.checkBrowserFileWrite(n.outputFile);let i=h(),p=typeof e=="string"?this.maybeReadFile(e,void 0):"";if(!(n.inputFormat==="html"||n.inputFormat===void 0&&typeof e=="string"&&/<table[\s>]/iu.test(p))){let{source:B,isBitmark:j}=this.resolveInput(e,void 0),A=i.convert(B,j?"bitmark":"json","html","optimized",false,2,1,false);return this.throwOnError(A),this.deliver(_e(A).join(`
3
- `),n.outputFile,n.fileOptions)}let c=n.tableFormat==="table"?"table":"table-extended",l=_e(p).map(B=>`<bitmark-bit data-type="${c}" data-format="bitmark++">${B}</bitmark-bit>`).join(""),m=n.outputFormat??"bitmark",{pretty:f,indent:x}=W(o.prettify),b=Q(s.spacesAroundValues);if(m==="html"){let B=i.convert(l,"html","html","optimized",false,2,1,false);return this.throwOnError(B),this.deliver(_e(B).join(`
4
- `),n.outputFile,n.fileOptions)}let g=m==="ast"?"json":m,d=i.convert(l,"html",g,"optimized",f,x,b,false);if(this.throwOnError(d),m==="bitmark"||m==="text")return this.deliver(d,n.outputFile,n.fileOptions);if(m==="json")return n.outputFile?this.deliver(d,n.outputFile,n.fileOptions):f||o.stringify?d:JSON.parse(d);let w=V(JSON.parse(d));return n.outputFile?this.deliver(JSON.stringify(w),n.outputFile,n.fileOptions):w}createAst(e,r){let n=Object.assign({},r),o=h(),{source:s,isBitmark:i}=this.resolveInput(e,n.inputFormat),p=o.convert(s,i?"bitmark":"json","json","optimized",false,2,1,true);return this.throwOnError(p),V(JSON.parse(p))}breakscapeText(e,r){if(!e)return e;let n=Object.assign({},r);this.checkBrowserFileWrite(n.outputFile);let o=h(),s=this.maybeReadFile(e,n.inputFormat),i=o.breakscape_text(s,Z(n.textFormat),n.textLocation??"body");return this.deliver(i,n.outputFile,n.fileOptions)}unbreakscapeText(e,r){if(!e)return e;let n=Object.assign({},r);this.checkBrowserFileWrite(n.outputFile);let o=h(),s=this.maybeReadFile(e,n.inputFormat),i=o.unbreakscape_text(s,Z(n.textFormat),n.textLocation??"body");return this.deliver(i,n.outputFile,n.fileOptions)}convertText(e,r){let n=Object.assign({},r),o=Object.assign({},n.jsonOptions);this.checkBrowserFileWrite(n.outputFile);let s=h(),i=n.textFormat===void 0||Z(n.textFormat)==="bitmark++",p=n.textLocation??"body",u,c;if(typeof e=="string"?(u=this.maybeReadFile(e,n.inputFormat),c=this.parseTextAstString(u)):(u=JSON.stringify(e),c=Array.isArray(e)?e:void 0),c!==void 0){let b=i?s.convert_text(JSON.stringify(c),"astToText","bitmark++",p):s.convert_text(JSON.stringify(c),"astToPlainText","plainText",p);return this.throwOnError(b),this.deliver(b,n.outputFile,n.fileOptions)}let l=s.convert_text(u,"textToAst",i?"bitmark++":"plainText","body");this.throwOnError(l);let{pretty:m,indent:f}=W(o.prettify),x=m?s.prettify(l,f):l;return n.outputFile?this.deliver(x,n.outputFile,n.fileOptions):m?x:JSON.parse(l)}textAstToPlainText(e,r){let o=h().convert_text(typeof e=="string"?e:JSON.stringify(e),"astToPlainText","bitmark++","body");return this.throwOnError(o),o}extractPlainText(e,r){let n=r?.inputFormat,o=h();if(n==="plainText")return typeof e=="string"?String(e):"";if(n==="bitmarkText"){let u=o.convert_text(String(e),"textToAst","bitmark++","body"),c=o.convert_text(u,"astToPlainText","bitmark++","body");return this.throwOnError(c),c}if(typeof e=="string"&&this.parseTextAstString(e)===void 0&&!o.is_bitmark(e)&&!(()=>{try{return JSON.parse(e),!0}catch{return false}})())return this.extractPlainText(e,{inputFormat:"bitmarkText"});let{source:s,isBitmark:i}=this.resolveInput(e,void 0),p=o.convert(s,i?"bitmark":"json","text","optimized",false,2,1,false);return this.throwOnError(p),p}parseTextAstString(e){let r=e.trim();if(r.startsWith("["))try{let n=JSON.parse(r);if(Array.isArray(n)&&n.every(o=>o!==null&&typeof o=="object"&&"type"in o))return n}catch{}}resolveInput(e,r){if(typeof e!="string"){let s=this.jsonEntries(e);return {source:JSON.stringify(s?s.map(i=>this.toWrapperEntry(i)):e),isBitmark:false}}let n=this.maybeReadFile(e,r);if(h().is_bitmark(n))return {source:n,isBitmark:true};try{let s=JSON.parse(n),i=this.jsonEntries(s);if(i)return {source:JSON.stringify(i.map(p=>this.toWrapperEntry(p))),isBitmark:!1}}catch{return {source:n,isBitmark:true}}return {source:n,isBitmark:false}}jsonEntries(e){if(Array.isArray(e))return e;if(e!==null&&typeof e=="object"){let r=e;if(Array.isArray(r.bits))return r.bits;if("bit"in r)return [r];if(typeof r.type=="string")return [{bit:r}]}}toWrapperEntry(e){if(e!==null&&typeof e=="object"&&"bit"in e)return e;let r={bit:e},n=e?.[ye];return n!==void 0&&(r.parser=n),r}maybeReadFile(e,r){if(r==="string")return e;return e;}checkBrowserFileWrite(e){if(e&&true)throw new Error("Cannot write to file in browser environment")}deliver(e,r,n){if(!r)return e;throw new Error("Cannot write to file in browser environment");}throwOnError(e){if(e.startsWith("error:"))throw new Error(e.slice(6).trim())}};function _e(t){let e=[],r=t.toLowerCase(),n=0;for(;;){let o=r.indexOf("<table",n);if(o===-1)break;let s=0,i=o,p=-1;for(;i<t.length;){let u=r.indexOf("<table",i),c=r.indexOf("</table",i);if(c===-1)break;if(u!==-1&&u<c)s++,i=u+6;else {s--;let l=r.indexOf(">",c);if(i=l===-1?t.length:l+1,s===0){p=i;break}}}if(p===-1)break;e.push(t.slice(o,p)),n=p;}return e}function Le(t){let e=h().convert_text(t,"textToAst","bitmark++","body");if(e.startsWith("error:"))throw new Error(e.slice(6).trim());return JSON.parse(e)}var R={imageResource:{type:"image",key:"image",valueField:"src"},imageLinkResource:{type:"image-link",key:"imageLink",valueField:"url"},audioResource:{type:"audio",key:"audio",valueField:"src"},audioEmbedResource:{type:"audio-embed",key:"audioEmbed",valueField:"src"},audioLinkResource:{type:"audio-link",key:"audioLink",valueField:"url"},videoResource:{type:"video",key:"video",valueField:"src"},videoEmbedResource:{type:"video-embed",key:"videoEmbed",valueField:"url"},videoLinkResource:{type:"video-link",key:"videoLink",valueField:"url"},stillImageFilmEmbedResource:{type:"still-image-film-embed",key:"stillImageFilmEmbed",valueField:"url"},stillImageFilmLinkResource:{type:"still-image-film-link",key:"stillImageFilmLink",valueField:"url"},articleResource:{type:"article",key:"article",valueField:"body"},documentResource:{type:"document",key:"document",valueField:"url"},documentEmbedResource:{type:"document-embed",key:"documentEmbed",valueField:"url"},documentLinkResource:{type:"document-link",key:"documentLink",valueField:"url"},documentDownloadResource:{type:"document-download",key:"documentDownload",valueField:"url"},appLinkResource:{type:"app-link",key:"appLink",valueField:"url"},websiteLinkResource:{type:"website-link",key:"websiteLink",valueField:"url"}};function O(t){return (e,r,n)=>{if(!r)return;let{value:o,...s}=r,i={[t.valueField]:o??""};for(let[p,u]of Object.entries(s))u!==void 0&&(i[p]=u);return {type:t.type,[t.key]:i}}}var Je=Object.fromEntries(Object.values(R).map(t=>[t.type,t])),ne=class{constructor(){T(this,"imageResource",O(R.imageResource));T(this,"imageLinkResource",O(R.imageLinkResource));T(this,"audioResource",O(R.audioResource));T(this,"audioEmbedResource",O(R.audioEmbedResource));T(this,"audioLinkResource",O(R.audioLinkResource));T(this,"videoResource",O(R.videoResource));T(this,"videoEmbedResource",O(R.videoEmbedResource));T(this,"videoLinkResource",O(R.videoLinkResource));T(this,"stillImageFilmEmbedResource",O(R.stillImageFilmEmbedResource));T(this,"stillImageFilmLinkResource",O(R.stillImageFilmLinkResource));T(this,"articleResource",O(R.articleResource));T(this,"documentResource",O(R.documentResource));T(this,"documentEmbedResource",O(R.documentEmbedResource));T(this,"documentLinkResource",O(R.documentLinkResource));T(this,"documentDownloadResource",O(R.documentDownloadResource));T(this,"appLinkResource",O(R.appLinkResource));T(this,"websiteLinkResource",O(R.websiteLinkResource));}resourceFromResourceJson(e,r){if(!r)return;let n=!Array.isArray(r),o=n?[r]:r,s=[];for(let i of o){let p=Je[i.type];if(!p)continue;let u=i[p.key]??{},{[p.valueField]:c,...l}=u,m=O(p)(void 0,{value:c,...l});m&&s.push(m);}if(s.length!==0)return n?s[0]:s}resourceFromResourceDataJson(e,r,n){if(!n)return;let o=Je[r];if(!o)return;let s=typeof n=="string"?n:void 0,i=typeof n=="object"?n:{},{url:p,src:u,body:c,...l}=i,m=p??u??c??s;return O(o)(e,{value:m,...l})}};var wt={string:"string",file:"file"},ht={bitmark:"bitmark",json:"json",ast:"ast",text:"text"},Ot={bitmark:"bitmark",bitmarkText:"bitmarkText",plainText:"plainText",html:"html"},Tt={v2:2,v3:3},Ft={v1:1,v2:2},vt={peggy:"peggy"},Rt={list:"list",deprecated:"deprecated",all:"all",bit:"bit"},Et={text:"text",json:"json",pojo:"pojo"},Pt={plainText:"text",latex:"latex",json:"json",xml:"xml",bitmarkPlusPlus:"bitmark++"},Bt={tag:"tag",body:"body"};var We={bold:"bold",light:"light",italic:"italic",highlight:"highlight",highlightOrange:"highlightOrange",highlightYellow:"highlightYellow",highlightGreen:"highlightGreen",highlightBlue:"highlightBlue",highlightPurple:"highlightPurple",highlightPink:"highlightPink",highlightBrown:"highlightBrown",highlightBlack:"highlightBlack",highlightWhite:"highlightWhite",highlightGray:"highlightGray",strike:"strike",subscript:"subscript",superscript:"superscript",ins:"ins",del:"del",underline:"underline",doubleUnderline:"doubleUnderline",circle:"circle",languageEmRed:"languageEmRed",languageEmOrange:"languageEmOrange",languageEmYellow:"languageEmYellow",languageEmGreen:"languageEmGreen",languageEmBlue:"languageEmBlue",languageEmPurple:"languageEmPurple",languageEmPink:"languageEmPink",languageEmBrown:"languageEmBrown",languageEmBlack:"languageEmBlack",languageEmWhite:"languageEmWhite",languageEmGray:"languageEmGray",languageEm:"languageEm",userUnderline:"userUnderline",userDoubleUnderline:"userDoubleUnderline",userStrike:"userStrike",userCircle:"userCircle",userHighlight:"userHighlight",notranslate:"notranslate",link:"link",ref:"ref",xref:"xref",extref:"extref",footnote:"footnote",footnoteStar:"footnote*",symbol:"symbol",var:"var",code:"code",timer:"timer",duration:"duration",color:"color",colorPicker:"colorPicker",comment:"comment"},Ne={text:"text",hardBreak:"hardBreak",paragraph:"paragraph",heading:"heading",section:"section",noBulletList:"noBulletList",bulletList:"bulletList",orderedList:"orderedList",orderedListRoman:"orderedListRoman",orderedListRomanLower:"orderedListRomanLower",letteredList:"letteredList",letteredListLower:"letteredListLower",taskList:"taskList",listItem:"listItem",taskItem:"taskItem",image:"image",imageInline:"imageInline",codeBlock:"codeBlock",latex:"latex",gap:"gap",select:"select",highlight:"highlight",mark:"mark"};function St(t){return t.replace(/-([a-z0-9])/gu,(e,r)=>r.toUpperCase())}var xe;function z(){if(!xe){let t=h(),e=JSON.parse(t.info("all","json","",false,2)),r={_standard:"_standard"};for(let{name:n}of e)r[St(n)]=n;xe=r;}return xe}var Ce=new Proxy({},{get:(t,e)=>typeof e=="string"?z()[e]:void 0,has:(t,e)=>typeof e=="string"&&e in z(),ownKeys:()=>Reflect.ownKeys(z()),getOwnPropertyDescriptor:(t,e)=>typeof e=="string"&&e in z()?{value:z()[e],enumerable:true,configurable:true,writable:false}:void 0});function Ve(t,e){return new Proxy({},{get:(r,n)=>n===Symbol.toPrimitive||n==="toString"||n===Symbol.toStringTag?()=>`[unsupported ${t}]`:L(t,e),has:()=>L(t,e),ownKeys:()=>L(t,e)})}var Me=Ve("NodeType","it names bpg's internal AST nodes; the legacy AST is bit JSON (see createAst)"),He=Ve("BoundingBoxIndex","bpg-internal bounding-box utility");function E(t,e){return class{constructor(){L(t,e);}}}var It="the legacy AST is bit JSON, not bpg's internal node model; walking it with bpg NodeType names would silently misbehave",P="internal class of bpg's TS implementation",Ue=E("Ast",It),Ge=E("BitmarkGenerator",P),ze=E("BitmarkStringGenerator",P),De=E("BitmarkFileGenerator",P),Ke=E("JsonGenerator",P),$e=E("JsonStringGenerator",P),Ye=E("JsonFileGenerator",P),qe=E("HtmlTableGenerator",P),Xe=E("HtmlTableParser",P),Qe=E("BitmarkParser",P),Ze=E("JsonParser",P),et=E("StringWriter",P),tt=E("FileWriter",P),nt=E("StreamWriter",P);function jt(t,e,r){return r===void 0?{path:t,op:e}:{path:t,op:e,value:r}}Be(U);async function Dn(t){return typeof t>"u"&&(t=new URL(`bitmark_wasm_bg.wasm?v=${G.version}`,import.meta.url)),le(t)}function Kn(){return G.version}function $n(t,e={}){return re(t,e.stage??"lex")}function Yn(t,e={}){let r=H(t,"bitmark","json",e.mode??"optimized",false,2,1,e.includeUnknownProperties??false);if(r.startsWith("error:"))throw new Error(r.slice(6).trim());return JSON.parse(r)}function qn(t,e={}){let r=t.map(o=>o!==null&&typeof o=="object"&&"bit"in o&&typeof o.bit=="object"?o:{bit:o}),n=H(JSON.stringify(r),"json","bitmark",e.mode??"optimized",false,2,1,false);if(n.startsWith("error:"))throw new Error(n.slice(6).trim());return n}function Xn(t,e={}){return H(t,e.inputFormat??"auto",e.outputFormat??"auto",e.mode??"optimized",e.pretty??false,e.indent??2,e.spacesAroundValues??1,e.includeUnknownProperties??false)}function Qn(t,e={}){return pe(t,e.inputFormat??"auto",e.mode??"optimized",e.pretty??false,e.indent??2,e.spacesAroundValues??1)}function Zn(t){let e=ue(t);if(e.startsWith("error:"))throw new Error(e);return Number.parseInt(e,10)}function er(t){return JSON.parse(ce(t))}function tr(t,e={}){if(e.preHook||e.postHook)return Re(U,t,e);let r=e.patch===void 0?"":typeof e.patch=="string"?e.patch:JSON.stringify(e.patch);return ae(t,e.inputFormat??"auto",e.outputFormat??"json",e.mode??"optimized",r,e.pretty??false,e.indent??2,e.spacesAroundValues??1)}function nr(t,e={}){return Ee(U,t,e,Pe)}function rr(t,e={}){let r=e.format??"bitmark++",n=e.location??"body";return oe(t,r,n)}function or(t,e={}){let r=e.format??"bitmark++",n=e.location??"body";return ie(t,r,n)}function ir(t={}){let e=t.infoType??"list",r=t.format??"text",n=t.bit??"",o=t.pretty??false,s=t.indent??2;return se(e,r,n,o,s)}export{Yn as bitmarkToObjects,rr as breakscapeText,Qn as canonicalize,Xn as convert,Zn as countBits,ir as info,Dn as init,Fe as initSync,rt as legacy,$n as lex,qn as objectsToBitmark,jt as patchEntry,er as splitBits,tr as transform,nr as transformParallel,or as unbreakscapeText,Kn as version};//# sourceMappingURL=bitmark-parser.min.js.map
1
+ var kt=Object.defineProperty;var se=(e,t,r)=>t in e?kt(e,t,{enumerable:true,configurable:true,writable:true,value:r}):e[t]=r;var wt=(e,t)=>{for(var r in t)kt(e,r,{get:t[r],enumerable:true});};var T=(e,t,r)=>se(e,typeof t!="symbol"?t+"":t,r);var U={};wt(U,{breakscape_text:()=>ot,canonicalize:()=>pt,convert:()=>H,convert_text:()=>le,count_bits:()=>ut,default:()=>lt,info:()=>st,initSync:()=>Ft,is_bitmark:()=>pe,lex:()=>rt,prettify:()=>ce,split_bits:()=>ct,split_json_bits:()=>ue,transform:()=>at,unbreakscape_text:()=>it});var a,b=0,M=null;function D(){return (M===null||M.byteLength===0)&&(M=new Uint8Array(a.memory.buffer)),M}var $=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},ae=typeof $.encodeInto=="function"?function(e,t){return $.encodeInto(e,t)}:function(e,t){let r=$.encode(e);return t.set(r),{read:e.length,written:r.length}};function y(e,t,r){if(r===void 0){let p=$.encode(e),u=t(p.length,1)>>>0;return D().subarray(u,u+p.length).set(p),b=p.length,u}let n=e.length,o=t(n,1)>>>0,s=D(),i=0;for(;i<n;i++){let p=e.charCodeAt(i);if(p>127)break;s[o+i]=p;}if(i!==n){i!==0&&(e=e.slice(i)),o=r(o,n,n=i+e.length*3,1)>>>0;let p=D().subarray(o+i,o+n),u=ae(e,p);i+=u.written,o=r(o,n,i,1)>>>0;}return b=i,o}var J=null;function w(){return (J===null||J.buffer.detached===true||J.buffer.detached===void 0&&J.buffer!==a.memory.buffer)&&(J=new DataView(a.memory.buffer)),J}var ht=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:true,fatal:true}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&ht.decode();function S(e,t){return e=e>>>0,ht.decode(D().subarray(e,e+t))}function rt(e,t){let r,n;try{let i=a.__wbindgen_add_to_stack_pointer(-16),p=y(e,a.__wbindgen_export_0,a.__wbindgen_export_1),u=b,c=y(t,a.__wbindgen_export_0,a.__wbindgen_export_1),l=b;a.lex(i,p,u,c,l);var o=w().getInt32(i+0,!0),s=w().getInt32(i+4,!0);return r=o,n=s,S(o,s)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(r,n,1);}}function ot(e,t,r){let n,o;try{let p=a.__wbindgen_add_to_stack_pointer(-16),u=y(e,a.__wbindgen_export_0,a.__wbindgen_export_1),c=b,l=y(t,a.__wbindgen_export_0,a.__wbindgen_export_1),d=b,f=y(r,a.__wbindgen_export_0,a.__wbindgen_export_1),_=b;a.breakscape_text(p,u,c,l,d,f,_);var s=w().getInt32(p+0,!0),i=w().getInt32(p+4,!0);return n=s,o=i,S(s,i)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(n,o,1);}}function it(e,t,r){let n,o;try{let p=a.__wbindgen_add_to_stack_pointer(-16),u=y(e,a.__wbindgen_export_0,a.__wbindgen_export_1),c=b,l=y(t,a.__wbindgen_export_0,a.__wbindgen_export_1),d=b,f=y(r,a.__wbindgen_export_0,a.__wbindgen_export_1),_=b;a.unbreakscape_text(p,u,c,l,d,f,_);var s=w().getInt32(p+0,!0),i=w().getInt32(p+4,!0);return n=s,o=i,S(s,i)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(n,o,1);}}function st(e,t,r,n,o){let s,i;try{let c=a.__wbindgen_add_to_stack_pointer(-16),l=y(e,a.__wbindgen_export_0,a.__wbindgen_export_1),d=b,f=y(t,a.__wbindgen_export_0,a.__wbindgen_export_1),_=b,x=y(r,a.__wbindgen_export_0,a.__wbindgen_export_1),k=b;a.info(c,l,d,f,_,x,k,n,o);var p=w().getInt32(c+0,!0),u=w().getInt32(c+4,!0);return s=p,i=u,S(p,u)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(s,i,1);}}function at(e,t,r,n,o,s,i,p){let u,c;try{let f=a.__wbindgen_add_to_stack_pointer(-16),_=y(e,a.__wbindgen_export_0,a.__wbindgen_export_1),x=b,k=y(t,a.__wbindgen_export_0,a.__wbindgen_export_1),m=b,g=y(r,a.__wbindgen_export_0,a.__wbindgen_export_1),E=b,j=y(n,a.__wbindgen_export_0,a.__wbindgen_export_1),A=b,oe=y(o,a.__wbindgen_export_0,a.__wbindgen_export_1),ie=b;a.transform(f,_,x,k,m,g,E,j,A,oe,ie,s,i,p);var l=w().getInt32(f+0,!0),d=w().getInt32(f+4,!0);return u=l,c=d,S(l,d)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(u,c,1);}}function H(e,t,r,n,o,s,i,p){let u,c;try{let f=a.__wbindgen_add_to_stack_pointer(-16),_=y(e,a.__wbindgen_export_0,a.__wbindgen_export_1),x=b,k=y(t,a.__wbindgen_export_0,a.__wbindgen_export_1),m=b,g=y(r,a.__wbindgen_export_0,a.__wbindgen_export_1),E=b,j=y(n,a.__wbindgen_export_0,a.__wbindgen_export_1),A=b;a.convert(f,_,x,k,m,g,E,j,A,o,s,i,p);var l=w().getInt32(f+0,!0),d=w().getInt32(f+4,!0);return u=l,c=d,S(l,d)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(u,c,1);}}function pt(e,t,r,n,o,s){let i,p;try{let l=a.__wbindgen_add_to_stack_pointer(-16),d=y(e,a.__wbindgen_export_0,a.__wbindgen_export_1),f=b,_=y(t,a.__wbindgen_export_0,a.__wbindgen_export_1),x=b,k=y(r,a.__wbindgen_export_0,a.__wbindgen_export_1),m=b;a.canonicalize(l,d,f,_,x,k,m,n,o,s);var u=w().getInt32(l+0,!0),c=w().getInt32(l+4,!0);return i=u,p=c,S(u,c)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(i,p,1);}}function ut(e){let t,r;try{let s=a.__wbindgen_add_to_stack_pointer(-16),i=y(e,a.__wbindgen_export_0,a.__wbindgen_export_1),p=b;a.count_bits(s,i,p);var n=w().getInt32(s+0,!0),o=w().getInt32(s+4,!0);return t=n,r=o,S(n,o)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(t,r,1);}}function ct(e){let t,r;try{let s=a.__wbindgen_add_to_stack_pointer(-16),i=y(e,a.__wbindgen_export_0,a.__wbindgen_export_1),p=b;a.split_bits(s,i,p);var n=w().getInt32(s+0,!0),o=w().getInt32(s+4,!0);return t=n,r=o,S(n,o)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(t,r,1);}}function pe(e){let t=y(e,a.__wbindgen_export_0,a.__wbindgen_export_1),r=b;return a.is_bitmark(t,r)!==0}function ue(e){let t,r;try{let s=a.__wbindgen_add_to_stack_pointer(-16),i=y(e,a.__wbindgen_export_0,a.__wbindgen_export_1),p=b;a.split_json_bits(s,i,p);var n=w().getInt32(s+0,!0),o=w().getInt32(s+4,!0);return t=n,r=o,S(n,o)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(t,r,1);}}function ce(e,t){let r,n;try{let i=a.__wbindgen_add_to_stack_pointer(-16),p=y(e,a.__wbindgen_export_0,a.__wbindgen_export_1),u=b;a.prettify(i,p,u,t);var o=w().getInt32(i+0,!0),s=w().getInt32(i+4,!0);return r=o,n=s,S(o,s)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(r,n,1);}}function le(e,t,r,n){let o,s;try{let u=a.__wbindgen_add_to_stack_pointer(-16),c=y(e,a.__wbindgen_export_0,a.__wbindgen_export_1),l=b,d=y(t,a.__wbindgen_export_0,a.__wbindgen_export_1),f=b,_=y(r,a.__wbindgen_export_0,a.__wbindgen_export_1),x=b,k=y(n,a.__wbindgen_export_0,a.__wbindgen_export_1),m=b;a.convert_text(u,c,l,d,f,_,x,k,m);var i=w().getInt32(u+0,!0),p=w().getInt32(u+4,!0);return o=i,s=p,S(i,p)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_export_2(o,s,1);}}async function de(e,t){if(typeof Response=="function"&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(e,t)}catch(n){if(e.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",n);else throw n}let r=await e.arrayBuffer();return await WebAssembly.instantiate(r,t)}else {let r=await WebAssembly.instantiate(e,t);return r instanceof WebAssembly.Instance?{instance:r,module:e}:r}}function Ot(){let e={};return e.wbg={},e}function Tt(e,t){return a=e.exports,vt.__wbindgen_wasm_module=t,J=null,M=null,a}function Ft(e){if(a!==void 0)return a;typeof e<"u"&&(Object.getPrototypeOf(e)===Object.prototype?{module:e}=e:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));let t=Ot();e instanceof WebAssembly.Module||(e=new WebAssembly.Module(e));let r=new WebAssembly.Instance(e,t);return Tt(r,e)}async function vt(e){if(a!==void 0)return a;typeof e<"u"&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e}=e:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof e>"u"&&(e=new URL("bitmark_wasm_bg.wasm",import.meta.url));let t=Ot();(typeof e=="string"||typeof Request=="function"&&e instanceof Request||typeof URL=="function"&&e instanceof URL)&&(e=fetch(e));let{instance:r,module:n}=await de(await e,t);return Tt(r,n)}var lt=vt;var G={version:"6.3.2"};function N(e){return e.startsWith("error:")}function K(e){let t=e instanceof Error?e.message:String(e);return t.startsWith("error:")?t:`error: ${t}`}function me(e){let t=e.trim();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):e}function fe(e){if(e===void 0)return [];if(typeof e=="string"){let t=e.trim();return t===""?[]:JSON.parse(t)}return e}function ge(e,t,r){if(r){let s=e.split_bits(t);if(N(s))throw new Error(s);let i=JSON.parse(s);return i.map(p=>({view:{format:"bitmark",index:p.index,total:i.length,source:p.source},source:p.source}))}let n=e.split_json_bits(t);if(N(n))throw new Error(n);let o=JSON.parse(n);return o.map((s,i)=>({view:{format:"json",index:i,total:o.length,bit:s.bit??{}},source:JSON.stringify([s])}))}function dt(e,t,r){let n=r.mode??"optimized",o=r.outputFormat??"json",s=r.spacesAroundValues??1,i=r.indent??2,p=r.pretty??false,u=r.inputFormat??"auto",c=u==="bitmark"||u!=="json"&&e.is_bitmark(t),l=c?"bitmark":"json",d=fe(r.patch),f=ge(e,t,c),_=f.length,x=[],k=[];for(let m=0;m<_;m++){let{view:g,source:E}=f[m];g.index=m,g.total=_;let j=r.preHook?r.preHook(g)||{}:{};if(j.drop)continue;let A=j.patches?[...d,...j.patches]:d;x.push({index:m,source:E,inputFormat:l,outputFormat:j.outputFormat??o,mode:n,patchJson:JSON.stringify(A),spacesAroundValues:s}),k.push(g);}return {jobs:x,views:k,output:o,pretty:p,indent:i}}function be(e,t){let r=e.transform(t.source,t.inputFormat,t.outputFormat,t.mode,t.patchJson,false,2,t.spacesAroundValues);return N(r)?r:t.outputFormat==="json"?me(r):r}function mt(e,t,r,n,o){if(r==="bitmark"||r==="text")return t.join(`
2
+ `);let s=`[${t.join(",")}]`;return n?e.prettify(s,o):s}function Rt(e,t,r){let n;try{n=dt(e,t,r);}catch(s){return K(s)}let o=[];for(let s=0;s<n.jobs.length;s++){let i=be(e,n.jobs[s]);if(N(i))return i;r.postHook?.(n.views[s],i),o.push(i);}return mt(e,o,n.output,n.pretty,n.indent)}async function Et(e,t,r,n){let o;try{o=dt(e,t,r);}catch(i){return K(i)}let s;try{s=await n(o.jobs,r.workers??4);}catch(i){return K(i)}for(let i=0;i<s.length;i++){if(N(s[i]))return s[i];r.postHook?.(o.views[i],s[i]);}return mt(e,s,o.output,o.pretty,o.indent)}function Pt(e,t){if(e.length===0)return Promise.resolve([]);let r=Math.max(1,Math.min(t,e.length)),n=new URL("./worker-entry.js",import.meta.url);return new Promise((o,s)=>{let i=new Array(e.length),p=0,u=0,c=false,l=[],d=()=>{for(let x of l)x.terminate();},f=x=>{c||(c=true,d(),s(x));},_=x=>{if(c||p>=e.length)return;let k=p++;x.postMessage({id:k,job:e[k]});};for(let x=0;x<r;x++){let k=new Worker(n,{type:"module"});l.push(k),k.onmessage=m=>{let g=m.data;if(!c){if(!g.ok){f(new Error(g.error??"worker job failed"));return}if(i[g.id]=g.element,u++,u===e.length){c=true,d(),o(i);return}_(k);}},k.onerror=m=>f(new Error(m.message||"worker error"));}for(let x of l)_(x);})}var ft;function Bt(e){ft=e;}function h(){if(!ft)throw new Error("legacy API not initialised: the WASM module has not been provided (browser consumers must call init() first)");return ft}var re={};wt(re,{Ast:()=>Ut,BitType:()=>Ct,BitmarkFileGenerator:()=>Dt,BitmarkGenerator:()=>Gt,BitmarkParser:()=>Qt,BitmarkParserGenerator:()=>et,BitmarkParserType:()=>Re,BitmarkStringGenerator:()=>zt,BitmarkVersion:()=>Fe,BodyTextFormat:()=>Be,BoundingBoxIndex:()=>Ht,Builder:()=>tt,CardSetVersion:()=>ve,FileWriter:()=>ee,HtmlTableGenerator:()=>Xt,HtmlTableParser:()=>qt,InfoFormat:()=>Pe,InfoType:()=>Ee,Input:()=>he,InputFormat:()=>Te,JsonFileGenerator:()=>Yt,JsonGenerator:()=>$t,JsonParser:()=>Zt,JsonStringGenerator:()=>Kt,LegacyUnsupportedError:()=>C,NodeType:()=>Mt,Output:()=>Oe,ResourceBuilder:()=>nt,StreamWriter:()=>ne,StringWriter:()=>te,TextLocation:()=>Se,TextMarkType:()=>Wt,TextNodeType:()=>Nt,bitmarkTextParse:()=>Lt,isPseudoAst:()=>It});var C=class extends Error{constructor(t){super(t),this.name="LegacyUnsupportedError";}};function L(e,t){throw new C(`'${e}' is not supported by the @gmb/bitmark-parser legacy API`+(t?`: ${t}`:""))}function I(e,t){throw new C(`Option '${e}' is not supported by the @gmb/bitmark-parser legacy API`+(t?`: ${t}`:""))}var gt="bitmark v2 output is not supported (this parser is bitmark v3 only)";function bt(e){e.bitmarkVersion===2&&I("bitmarkVersion: 2",gt);}function X(e){e.explicitTextFormat&&I("bitmarkOptions.explicitTextFormat"),e.cardSetVersion===1&&I("bitmarkOptions.cardSetVersion: 1",gt),e.debugGenerationInline&&I("bitmarkOptions.debugGenerationInline"),e.noBreakscaping&&I("bitmarkOptions.noBreakscaping");}function q(e){e.textAsPlainText&&I("jsonOptions.textAsPlainText",gt),e.debugGenerationInline&&I("jsonOptions.debugGenerationInline");}function W(e){return e===true?{pretty:true,indent:2}:typeof e=="number"&&e>0?{pretty:true,indent:e}:{pretty:false,indent:2}}function Q(e){return e===void 0||e===true?1:e===false?0:Math.max(0,Math.min(10,e))}function Z(e){switch(e){case "text":case "latex":case "json":case "xml":return "plainText";default:return "bitmark++"}}var St=Symbol.for("@gmb/bitmark-parser/legacy-pseudo-ast");function V(e){let t={bits:e};return Object.defineProperty(t,St,{value:true,enumerable:false}),t}function It(e){return e!==null&&typeof e=="object"&&(St in e||Array.isArray(e.bits))}var jt={"extractor-image":{key:"images",resourceType:"image"},"extractor-image-collapsible":{key:"images",resourceType:"image"},"images-logo-grave":{key:"logos",resourceType:"image"},"prototype-images":{key:"images",resourceType:"image"}};var yt=Symbol.for("@gmb/bitmark-parser/legacy-built-bit-parser"),_e={bitType:"type",textFormat:"format",flashcards:"cards",markConfig:"marks"},xe={"bitmark--":"bitmark++","bitmark+":"bitmark++"},ke={bitmark:"bitmark++",text:"text",json:"json",latex:"latex",xml:"xml"},we=["title","subtitle","item","lead","pageNumber","marginNumber","hint","instruction","caption"],tt=class{buildBitmark(t){let r=V(t.bits??[]);return t.errors!==void 0&&(r.errors=t.errors),r}buildBit(t,r){let n=h(),o={...t},s=o.bitType,i=this.getBitConfig(s),p={};p.type=s,o.isCommented&&(p.type="_comment",p.originalType=s),delete o.bitType,delete o.isCommented;let u=o.textFormat;u!==void 0?(p.format=xe[u]??u,delete o.textFormat):p.format=ke[i.bodyFormat??""]??"bitmark++",delete o.resourceType;let c=o.body;c!=null&&typeof c=="object"&&"body"in c&&(p.body=c.body,delete o.body),o.example!==void 0?(p.isExample=true,p.example=o.example,delete o.example,delete o.__isDefaultExample):o.__isDefaultExample&&(p.isExample=true,delete o.__isDefaultExample);let l=o.resources;if(l!==void 0&&s!==void 0){let m=Array.isArray(l)?l:[l],g=jt[s];g?p[g.key]=m.filter(E=>E!==null&&typeof E=="object"&&E.type===g.resourceType):m.length>=1&&(p.resource=m[0]),delete o.resources;}let d=o.parser;delete o.parser;let f=o.extraProperties;delete o.extraProperties;for(let[m,g]of Object.entries(o))g!==void 0&&(p[_e[m]??m]=g);if(f)for(let[m,g]of Object.entries(f))m in p||(p[m]=g);this.parseStringTexts(p);let _=n.convert(JSON.stringify([{bit:p}]),"json","json","optimized",false,2,1,false);if(_.startsWith("error:"))throw new Error(_.slice(6).trim());let k=JSON.parse(_)[0]?.bit??p;for(let[m,g]of Object.entries(p))m in k||g===false||g===""||g===null||Array.isArray(g)&&g.length===0||(k[m]=g);return d!==void 0&&Object.defineProperty(k,yt,{value:d,enumerable:false}),k}buildHighlight(t,r){if(!r)return;let n={...r},o=n.attrs;return o&&Object.assign(n,o),{type:"highlight",texts:Array.isArray(n.texts)?n.texts.filter(p=>p!=null).map(p=>({text:p.text??"",isCorrect:p.isCorrect??false,isHighlighted:p.isHighlighted??false,...At(p,["text","isCorrect","isHighlighted"])})):[],prefix:n.prefix??"",postfix:n.postfix??"",...At(n,["type","texts","prefix","postfix","attrs"]),attrs:{}}}parseStringTexts(t){let r=h(),n=(i,p)=>{if(i==="")return i;let u=r.convert_text(i,"textToAst","bitmark++",p);try{return JSON.parse(u)}catch{return i}},o=t.format,s=o===void 0||o==="bitmark++"||o==="bitmark+";if(typeof t.body=="string")if(o==="json")try{t.body=JSON.parse(t.body);}catch{t.body=null;}else s&&(t.body=n(t.body,"body"));for(let i of we){let p=t[i];typeof p=="string"&&(t[i]=n(p,"tag"));}}getBitConfig(t){let r=h();if(t!==void 0)try{let n=JSON.parse(r.info("bit","json",t,!1,2));if(n.error===void 0)return n}catch{}throw new Error(`No config found for bit: ${t}`)}};function At(e,t){let r={};for(let[n,o]of Object.entries(e))o!==void 0&&!t.includes(n)&&(r[n]=o);return r}var et=class{version(){return G.version}convert(t,r){let n=Object.assign({},r),o=Object.assign({},n.jsonOptions),s=Object.assign({},n.bitmarkOptions);bt(n),X(s),q(o),this.checkBrowserFileWrite(n.outputFile);let i=h(),{source:p,isBitmark:u}=this.resolveInput(t,n.inputFormat),c=n.outputFormat??(u?"json":"bitmark"),l=c==="ast"?"json":c,{pretty:d,indent:f}=W(o.prettify),_=l==="bitmark"?W(s.prettifyJson):{pretty:d,indent:f},x=Q(s.spacesAroundValues),k=!o.excludeUnknownProperties,m=i.convert(p,u?"bitmark":"json",l,"optimized",_.pretty,_.indent,x,k);if(this.throwOnError(m),c==="bitmark"||c==="text")return this.deliver(m,n.outputFile,n.fileOptions);if(c==="json")return n.outputFile?this.deliver(m,n.outputFile,n.fileOptions):d||o.stringify?m:JSON.parse(m);let g=V(JSON.parse(m));return n.outputFile?this.deliver(JSON.stringify(g),n.outputFile,n.fileOptions):g}upgrade(t,r){let n=Object.assign({},r),o=Object.assign({},n.jsonOptions),s=Object.assign({},n.bitmarkOptions);bt(n),X(s),q(o),this.checkBrowserFileWrite(n.outputFile);let i=h(),{source:p,isBitmark:u}=this.resolveInput(t,n.inputFormat),{pretty:c,indent:l}=W(u?s.prettifyJson:o.prettify),d=Q(s.spacesAroundValues),f=i.canonicalize(p,u?"bitmark":"json","optimized",c,l,d);return this.throwOnError(f),u?this.deliver(f,n.outputFile,n.fileOptions):n.outputFile?this.deliver(f,n.outputFile,n.fileOptions):c||o.stringify?f:JSON.parse(f)}info(t){let r=Object.assign({},t),n=h(),o=r.type??"list",s=r.outputFormat??"text",{pretty:i,indent:p}=W(r.prettify),u=s==="pojo"?"json":s,c=n.info(o,u,r.bit??"",i,p);return this.throwOnError(c),s==="pojo"?JSON.parse(c):c}generateConfig(t){L("BitmarkParserGenerator.generateConfig","bpg-internal development tool");}convertHtmlTable(t,r){let n=Object.assign({},r),o=Object.assign({},n.jsonOptions),s=Object.assign({},n.bitmarkOptions);X(s),q(o),n.keepUnknownTags&&I("keepUnknownTags"),n.noBreakscaping&&I("noBreakscaping"),this.checkBrowserFileWrite(n.outputFile);let i=h(),p=typeof t=="string"?this.maybeReadFile(t,void 0):"";if(!(n.inputFormat==="html"||n.inputFormat===void 0&&typeof t=="string"&&/<table[\s>]/iu.test(p))){let{source:E,isBitmark:j}=this.resolveInput(t,void 0),A=i.convert(E,j?"bitmark":"json","html","optimized",false,2,1,false);return this.throwOnError(A),this.deliver(_t(A).join(`
3
+ `),n.outputFile,n.fileOptions)}let c=n.tableFormat==="table"?"table":"table-extended",l=_t(p).map(E=>`<bitmark-bit data-type="${c}" data-format="bitmark++">${E}</bitmark-bit>`).join(""),d=n.outputFormat??"bitmark",{pretty:f,indent:_}=W(o.prettify),x=Q(s.spacesAroundValues);if(d==="html"){let E=i.convert(l,"html","html","optimized",false,2,1,false);return this.throwOnError(E),this.deliver(_t(E).join(`
4
+ `),n.outputFile,n.fileOptions)}let k=d==="ast"?"json":d,m=i.convert(l,"html",k,"optimized",f,_,x,false);if(this.throwOnError(m),d==="bitmark"||d==="text")return this.deliver(m,n.outputFile,n.fileOptions);if(d==="json")return n.outputFile?this.deliver(m,n.outputFile,n.fileOptions):f||o.stringify?m:JSON.parse(m);let g=V(JSON.parse(m));return n.outputFile?this.deliver(JSON.stringify(g),n.outputFile,n.fileOptions):g}createAst(t,r){let n=Object.assign({},r),o=h(),{source:s,isBitmark:i}=this.resolveInput(t,n.inputFormat),p=o.convert(s,i?"bitmark":"json","json","optimized",false,2,1,true);return this.throwOnError(p),V(JSON.parse(p))}breakscapeText(t,r){if(!t)return t;let n=Object.assign({},r);this.checkBrowserFileWrite(n.outputFile);let o=h(),s=this.maybeReadFile(t,n.inputFormat),i=o.breakscape_text(s,Z(n.textFormat),n.textLocation??"body");return this.deliver(i,n.outputFile,n.fileOptions)}unbreakscapeText(t,r){if(!t)return t;let n=Object.assign({},r);this.checkBrowserFileWrite(n.outputFile);let o=h(),s=this.maybeReadFile(t,n.inputFormat),i=o.unbreakscape_text(s,Z(n.textFormat),n.textLocation??"body");return this.deliver(i,n.outputFile,n.fileOptions)}convertText(t,r){let n=Object.assign({},r),o=Object.assign({},n.jsonOptions);this.checkBrowserFileWrite(n.outputFile);let s=h(),i=n.textFormat===void 0||Z(n.textFormat)==="bitmark++",p=n.textLocation??"body",u,c;if(typeof t=="string"?(u=this.maybeReadFile(t,n.inputFormat),c=this.parseTextAstString(u)):(u=JSON.stringify(t),c=Array.isArray(t)?t:void 0),c!==void 0){let x=i?s.convert_text(JSON.stringify(c),"astToText","bitmark++",p):s.convert_text(JSON.stringify(c),"astToPlainText","plainText",p);return this.throwOnError(x),this.deliver(x,n.outputFile,n.fileOptions)}let l=s.convert_text(u,"textToAst",i?"bitmark++":"plainText","body");this.throwOnError(l);let{pretty:d,indent:f}=W(o.prettify),_=d?s.prettify(l,f):l;return n.outputFile?this.deliver(_,n.outputFile,n.fileOptions):d?_:JSON.parse(l)}textAstToPlainText(t,r){let o=h().convert_text(typeof t=="string"?t:JSON.stringify(t),"astToPlainText","bitmark++","body");return this.throwOnError(o),o}extractPlainText(t,r){let n=r?.inputFormat,o=h();if(n==="plainText")return typeof t=="string"?String(t):"";if(n==="bitmarkText"){let u=o.convert_text(String(t),"textToAst","bitmark++","body"),c=o.convert_text(u,"astToPlainText","bitmark++","body");return this.throwOnError(c),c}if(typeof t=="string"&&this.parseTextAstString(t)===void 0&&!o.is_bitmark(t)&&!(()=>{try{return JSON.parse(t),!0}catch{return false}})())return this.extractPlainText(t,{inputFormat:"bitmarkText"});let{source:s,isBitmark:i}=this.resolveInput(t,void 0),p=o.convert(s,i?"bitmark":"json","text","optimized",false,2,1,false);return this.throwOnError(p),p}parseTextAstString(t){let r=t.trim();if(r.startsWith("["))try{let n=JSON.parse(r);if(Array.isArray(n)&&n.every(o=>o!==null&&typeof o=="object"&&"type"in o))return n}catch{}}resolveInput(t,r){if(typeof t!="string"){let s=this.jsonEntries(t);return {source:JSON.stringify(s?s.map(i=>this.toWrapperEntry(i)):t),isBitmark:false}}let n=this.maybeReadFile(t,r);if(h().is_bitmark(n))return {source:n,isBitmark:true};try{let s=JSON.parse(n),i=this.jsonEntries(s);if(i)return {source:JSON.stringify(i.map(p=>this.toWrapperEntry(p))),isBitmark:!1}}catch{return {source:n,isBitmark:true}}return {source:n,isBitmark:false}}jsonEntries(t){if(Array.isArray(t))return t;if(t!==null&&typeof t=="object"){let r=t;if(Array.isArray(r.bits))return r.bits;if("bit"in r)return [r];if(typeof r.type=="string")return [{bit:r}]}}toWrapperEntry(t){if(t!==null&&typeof t=="object"&&"bit"in t)return t;let r={bit:t},n=t?.[yt];return n!==void 0&&(r.parser=n),r}maybeReadFile(t,r){if(r==="string")return t;return t;}checkBrowserFileWrite(t){if(t&&true)throw new Error("Cannot write to file in browser environment")}deliver(t,r,n){if(!r)return t;throw new Error("Cannot write to file in browser environment");}throwOnError(t){if(t.startsWith("error:"))throw new Error(t.slice(6).trim())}};function _t(e){let t=[],r=e.toLowerCase(),n=0;for(;;){let o=r.indexOf("<table",n);if(o===-1)break;let s=0,i=o,p=-1;for(;i<e.length;){let u=r.indexOf("<table",i),c=r.indexOf("</table",i);if(c===-1)break;if(u!==-1&&u<c)s++,i=u+6;else {s--;let l=r.indexOf(">",c);if(i=l===-1?e.length:l+1,s===0){p=i;break}}}if(p===-1)break;t.push(e.slice(o,p)),n=p;}return t}function Lt(e){let t=h().convert_text(e,"textToAst","bitmark++","body");if(t.startsWith("error:"))throw new Error(t.slice(6).trim());return JSON.parse(t)}var R={imageResource:{type:"image",key:"image",valueField:"src"},imageLinkResource:{type:"image-link",key:"imageLink",valueField:"url"},audioResource:{type:"audio",key:"audio",valueField:"src"},audioEmbedResource:{type:"audio-embed",key:"audioEmbed",valueField:"src"},audioLinkResource:{type:"audio-link",key:"audioLink",valueField:"url"},videoResource:{type:"video",key:"video",valueField:"src"},videoEmbedResource:{type:"video-embed",key:"videoEmbed",valueField:"url"},videoLinkResource:{type:"video-link",key:"videoLink",valueField:"url"},stillImageFilmEmbedResource:{type:"still-image-film-embed",key:"stillImageFilmEmbed",valueField:"url"},stillImageFilmLinkResource:{type:"still-image-film-link",key:"stillImageFilmLink",valueField:"url"},articleResource:{type:"article",key:"article",valueField:"body"},documentResource:{type:"document",key:"document",valueField:"url"},documentEmbedResource:{type:"document-embed",key:"documentEmbed",valueField:"url"},documentLinkResource:{type:"document-link",key:"documentLink",valueField:"url"},documentDownloadResource:{type:"document-download",key:"documentDownload",valueField:"url"},appLinkResource:{type:"app-link",key:"appLink",valueField:"url"},websiteLinkResource:{type:"website-link",key:"websiteLink",valueField:"url"}};function O(e){return (t,r,n)=>{if(!r)return;let{value:o,...s}=r,i={[e.valueField]:o??""};for(let[p,u]of Object.entries(s))u!==void 0&&(i[p]=u);return {type:e.type,[e.key]:i}}}var Jt=Object.fromEntries(Object.values(R).map(e=>[e.type,e])),nt=class{constructor(){T(this,"imageResource",O(R.imageResource));T(this,"imageLinkResource",O(R.imageLinkResource));T(this,"audioResource",O(R.audioResource));T(this,"audioEmbedResource",O(R.audioEmbedResource));T(this,"audioLinkResource",O(R.audioLinkResource));T(this,"videoResource",O(R.videoResource));T(this,"videoEmbedResource",O(R.videoEmbedResource));T(this,"videoLinkResource",O(R.videoLinkResource));T(this,"stillImageFilmEmbedResource",O(R.stillImageFilmEmbedResource));T(this,"stillImageFilmLinkResource",O(R.stillImageFilmLinkResource));T(this,"articleResource",O(R.articleResource));T(this,"documentResource",O(R.documentResource));T(this,"documentEmbedResource",O(R.documentEmbedResource));T(this,"documentLinkResource",O(R.documentLinkResource));T(this,"documentDownloadResource",O(R.documentDownloadResource));T(this,"appLinkResource",O(R.appLinkResource));T(this,"websiteLinkResource",O(R.websiteLinkResource));}resourceFromResourceJson(t,r){if(!r)return;let n=!Array.isArray(r),o=n?[r]:r,s=[];for(let i of o){let p=Jt[i.type];if(!p)continue;let u=i[p.key]??{},{[p.valueField]:c,...l}=u,d=O(p)(void 0,{value:c,...l});d&&s.push(d);}if(s.length!==0)return n?s[0]:s}resourceFromResourceDataJson(t,r,n){if(!n)return;let o=Jt[r];if(!o)return;let s=typeof n=="string"?n:void 0,i=typeof n=="object"?n:{},{url:p,src:u,body:c,...l}=i,d=p??u??c??s;return O(o)(t,{value:d,...l})}};var he={string:"string",file:"file"},Oe={bitmark:"bitmark",json:"json",ast:"ast",text:"text"},Te={bitmark:"bitmark",bitmarkText:"bitmarkText",plainText:"plainText",html:"html"},Fe={v2:2,v3:3},ve={v1:1,v2:2},Re={peggy:"peggy"},Ee={list:"list",deprecated:"deprecated",all:"all",bit:"bit"},Pe={text:"text",json:"json",pojo:"pojo"},Be={plainText:"text",latex:"latex",json:"json",xml:"xml",bitmarkPlusPlus:"bitmark++"},Se={tag:"tag",body:"body"};var Wt={bold:"bold",light:"light",italic:"italic",highlight:"highlight",highlightOrange:"highlightOrange",highlightYellow:"highlightYellow",highlightGreen:"highlightGreen",highlightBlue:"highlightBlue",highlightPurple:"highlightPurple",highlightPink:"highlightPink",highlightBrown:"highlightBrown",highlightBlack:"highlightBlack",highlightWhite:"highlightWhite",highlightGray:"highlightGray",strike:"strike",subscript:"subscript",superscript:"superscript",ins:"ins",del:"del",underline:"underline",doubleUnderline:"doubleUnderline",circle:"circle",languageEmRed:"languageEmRed",languageEmOrange:"languageEmOrange",languageEmYellow:"languageEmYellow",languageEmGreen:"languageEmGreen",languageEmBlue:"languageEmBlue",languageEmPurple:"languageEmPurple",languageEmPink:"languageEmPink",languageEmBrown:"languageEmBrown",languageEmBlack:"languageEmBlack",languageEmWhite:"languageEmWhite",languageEmGray:"languageEmGray",languageEm:"languageEm",userUnderline:"userUnderline",userDoubleUnderline:"userDoubleUnderline",userStrike:"userStrike",userCircle:"userCircle",userHighlight:"userHighlight",notranslate:"notranslate",link:"link",ref:"ref",xref:"xref",extref:"extref",footnote:"footnote",footnoteStar:"footnote*",symbol:"symbol",var:"var",code:"code",timer:"timer",duration:"duration",color:"color",colorPicker:"colorPicker",comment:"comment"},Nt={text:"text",hardBreak:"hardBreak",paragraph:"paragraph",heading:"heading",section:"section",noBulletList:"noBulletList",bulletList:"bulletList",orderedList:"orderedList",orderedListRoman:"orderedListRoman",orderedListRomanLower:"orderedListRomanLower",letteredList:"letteredList",letteredListLower:"letteredListLower",taskList:"taskList",listItem:"listItem",taskItem:"taskItem",image:"image",imageInline:"imageInline",codeBlock:"codeBlock",latex:"latex",gap:"gap",select:"select",highlight:"highlight",mark:"mark"};function Ie(e){return e.replace(/-([a-z0-9])/gu,(t,r)=>r.toUpperCase())}var xt;function z(){if(!xt){let e=h(),t=JSON.parse(e.info("all","json","",false,2)),r={_standard:"_standard"};for(let{name:n}of t)r[Ie(n)]=n;xt=r;}return xt}var Ct=new Proxy({},{get:(e,t)=>typeof t=="string"?z()[t]:void 0,has:(e,t)=>typeof t=="string"&&t in z(),ownKeys:()=>Reflect.ownKeys(z()),getOwnPropertyDescriptor:(e,t)=>typeof t=="string"&&t in z()?{value:z()[t],enumerable:true,configurable:true,writable:false}:void 0});function Vt(e,t){return new Proxy({},{get:(r,n)=>n===Symbol.toPrimitive||n==="toString"||n===Symbol.toStringTag?()=>`[unsupported ${e}]`:L(e,t),has:()=>L(e,t),ownKeys:()=>L(e,t)})}var Mt=Vt("NodeType","it names bpg's internal AST nodes; the legacy AST is bit JSON (see createAst)"),Ht=Vt("BoundingBoxIndex","bpg-internal bounding-box utility");function P(e,t){return class{constructor(){L(e,t);}}}var je="the legacy AST is bit JSON, not bpg's internal node model; walking it with bpg NodeType names would silently misbehave",B="internal class of bpg's TS implementation",Ut=P("Ast",je),Gt=P("BitmarkGenerator",B),zt=P("BitmarkStringGenerator",B),Dt=P("BitmarkFileGenerator",B),$t=P("JsonGenerator",B),Kt=P("JsonStringGenerator",B),Yt=P("JsonFileGenerator",B),Xt=P("HtmlTableGenerator",B),qt=P("HtmlTableParser",B),Qt=P("BitmarkParser",B),Zt=P("JsonParser",B),te=P("StringWriter",B),ee=P("FileWriter",B),ne=P("StreamWriter",B);function Ae(e,t,r){return r===void 0?{path:e,op:t}:{path:e,op:t,value:r}}Bt(U);async function $n(e){return typeof e>"u"&&(e=new URL(`bitmark_wasm_bg.wasm?v=${G.version}`,import.meta.url)),lt(e)}function Kn(){return G.version}function Yn(e,t={}){return rt(e,t.stage??"lex")}function Xn(e,t={}){let r=H(e,"bitmark","json",t.mode??"optimized",false,2,1,t.includeUnknownProperties??false);if(r.startsWith("error:"))throw new Error(r.slice(6).trim());return JSON.parse(r)}function qn(e,t={}){let r=e.map(o=>o!==null&&typeof o=="object"&&"bit"in o&&typeof o.bit=="object"?o:{bit:o}),n=H(JSON.stringify(r),"json","bitmark",t.mode??"optimized",false,2,1,false);if(n.startsWith("error:"))throw new Error(n.slice(6).trim());return n}function Qn(e,t={}){return H(e,t.inputFormat??"auto",t.outputFormat??"auto",t.mode??"optimized",t.pretty??false,t.indent??2,t.spacesAroundValues??1,t.includeUnknownProperties??false)}function Zn(e,t={}){return pt(e,t.inputFormat??"auto",t.mode??"optimized",t.pretty??false,t.indent??2,t.spacesAroundValues??1)}function tr(e){let t=ut(e);if(t.startsWith("error:"))throw new Error(t);return Number.parseInt(t,10)}function er(e){return JSON.parse(ct(e))}function nr(e,t={}){if(t.preHook||t.postHook)return Rt(U,e,t);let r=t.patch===void 0?"":typeof t.patch=="string"?t.patch:JSON.stringify(t.patch);return at(e,t.inputFormat??"auto",t.outputFormat??"json",t.mode??"optimized",r,t.pretty??false,t.indent??2,t.spacesAroundValues??1)}function rr(e,t={}){return Et(U,e,t,Pt)}function or(e,t={}){let r=t.format??"bitmark++",n=t.location??"body";return ot(e,r,n)}function ir(e,t={}){let r=t.format??"bitmark++",n=t.location??"body";return it(e,r,n)}function sr(e={}){let t=e.infoType??"list",r=e.format??"text",n=e.bit??"",o=e.pretty??false,s=e.indent??2;return st(t,r,n,o,s)}export{Xn as bitmarkToObjects,or as breakscapeText,Zn as canonicalize,Qn as convert,tr as countBits,sr as info,$n as init,Ft as initSync,re as legacy,Yn as lex,qn as objectsToBitmark,Ae as patchEntry,er as splitBits,nr as transform,rr as transformParallel,ir as unbreakscapeText,Kn as version};//# sourceMappingURL=bitmark-parser.min.js.map
5
5
  //# sourceMappingURL=bitmark-parser.min.js.map