@pretextbook/import 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";const n=require("./upload-BnRj1gU1.cjs");function f(e){if(e.type!=="result"||"pretextError"in e.result)return[];const t=e.result,o=new Set,s=r=>{const c=r?.buffer;c instanceof ArrayBuffer&&o.add(c)};return Object.values(t.assets??{}).forEach(s),Object.values(t.outputAssets??{}).forEach(s),t.project?.assets?.forEach(r=>s(r.data)),t.nativeProject?.assets?.forEach(r=>s(r.data)),[...o]}function u(e){self.postMessage(e,f(e))}self.onmessage=e=>{const t=e.data;if(t?.type!=="convert")return;const{requestId:o,files:s,assets:r,options:c}=t;try{const a=n.importProjectFromFiles(s,{...c,assets:r});u({type:"result",requestId:o,result:a})}catch(a){u({type:"error",requestId:o,message:a instanceof Error?a.message:"An unexpected error occurred."})}};
1
+ "use strict";const n=require("./upload-CPMLFrdG.cjs");function f(e){if(e.type!=="result"||"pretextError"in e.result)return[];const t=e.result,o=new Set,s=r=>{const c=r?.buffer;c instanceof ArrayBuffer&&o.add(c)};return Object.values(t.assets??{}).forEach(s),Object.values(t.outputAssets??{}).forEach(s),t.project?.assets?.forEach(r=>s(r.data)),t.nativeProject?.assets?.forEach(r=>s(r.data)),[...o]}function u(e){self.postMessage(e,f(e))}self.onmessage=e=>{const t=e.data;if(t?.type!=="convert")return;const{requestId:o,files:s,assets:r,options:c}=t;try{const a=n.importProjectFromFiles(s,{...c,assets:r});u({type:"result",requestId:o,result:a})}catch(a){u({type:"error",requestId:o,message:a instanceof Error?a.message:"An unexpected error occurred."})}};
@@ -1,4 +1,4 @@
1
- import { j as n } from "./upload-H_OCZBBn.js";
1
+ import { k as n } from "./upload-w0BmYtpp.js";
2
2
  function u(e) {
3
3
  if (e.type !== "result" || "pretextError" in e.result)
4
4
  return [];
@@ -1,3 +1,3 @@
1
- "use strict";const h=require("./upload-BnRj1gU1.cjs");function d(e,t){const n=e.length===0?[]:e.split(`
1
+ "use strict";const h=require("./upload-CPMLFrdG.cjs");function d(e,t){const n=e.length===0?[]:e.split(`
2
2
  `),o=t.length===0?[]:t.split(`
3
3
  `);if(n.length+o.length>j)return[...n.map((c,f)=>({op:"remove",text:c,beforeLine:f+1})),...o.map((c,f)=>({op:"add",text:c,afterLine:f+1}))];const r=Array.from({length:n.length+1},()=>new Array(o.length+1).fill(0));for(let c=n.length-1;c>=0;c--)for(let f=o.length-1;f>=0;f--)r[c][f]=n[c]===o[f]?r[c+1][f+1]+1:Math.max(r[c+1][f],r[c][f+1]);const a=[];let i=0,s=0;for(;i<n.length&&s<o.length;)n[i]===o[s]?(a.push({op:"keep",text:n[i],beforeLine:i+1,afterLine:s+1}),i++,s++):r[i+1][s]>=r[i][s+1]?(a.push({op:"remove",text:n[i],beforeLine:i+1}),i++):(a.push({op:"add",text:o[s],afterLine:s+1}),s++);for(;i<n.length;)a.push({op:"remove",text:n[i],beforeLine:++i});for(;s<o.length;)a.push({op:"add",text:o[s],afterLine:++s});return a}const j=2e4;function m(e){let t=0,n=0;for(const o of e)o.op==="add"?t++:o.op==="remove"&&n++;return{added:t,removed:n}}function g(e,t=2){const n=e.map((i,s)=>i.op==="keep"?-1:s).filter(i=>i>=0);if(n.length===0)return[];const o=[];let r=Math.max(0,n[0]-t),a=Math.min(e.length-1,n[0]+t);for(const i of n.slice(1)){if(i-t<=a+1){a=Math.min(e.length-1,i+t);continue}o.push({lines:e.slice(r,a+1)}),r=Math.max(0,i-t),a=Math.min(e.length-1,i+t)}return o.push({lines:e.slice(r,a+1)}),o}function k(e,t=e.splitLevel){if(e.cleanChunks.length===0)return[];const n=h.mergeChunksAtLevel(e.cleanChunks,t),o=A(n),{pathByRef:r}=h.serializeProjectToFiles(e.project,{mainSourcePath:e.projectLayout.mainSourcePath,publicationPath:e.projectLayout.publicationPath,projectFilePath:e.projectLayout.projectFilePath,includeScaffold:!e.projectLayout.preserved}),a=[];for(const i of e.project.divisions){const s=r[i.xmlId];if(!s)continue;const c=i.isRoot?n.find(p=>p.kind==="preamble"||p.kind==="lead"):o.get(i.title);if(!c)continue;const f=d(c.before,c.after);a.push({path:s,title:i.title,before:c.before,after:c.after,stats:m(f),hunks:g(f),fixCount:c.fixes.length})}return a.sort((i,s)=>i.path.localeCompare(s.path))}function A(e){const t=new Map;for(const o of e)o.kind!=="division"||!o.title||t.set(o.title,t.has(o.title)?null:o);const n=new Map;for(const[o,r]of t)r&&n.set(o,r);return n}const v="converted";function M(e){return e.nativeOutputFiles!==void 0}function C(e,t=v){return t==="native"&&!M(e)?"converted":t}function T(e,t){return t==="native"?e.nativeProject??e.project:e.project}function y(e,t){return t==="converted"?e.outputFiles:e.nativeOutputFiles??e.files}function P(e,t){return t==="converted"?e.outputAssets:e.assets}function S(e){const t=e.action==="replace"||e.action==="rewrite"?`replaced with \`${e.replacement}\``:e.message??e.action,n=e.occurrences>1?` (x${e.occurrences})`:"";return`[${e.severity}] ${e.macro}: ${t}${n}`}const E=[".tex",".md",".markdown",".ptx",".xml",".zip",".gz",".tar.gz",".tgz"];function l(e){return e.acceptExtensions??E}function F(e,t){const n=e.toLowerCase();return t.some(o=>n.endsWith(o))}function u(e,t){return F(t,l(e))}function L(e){const t=new Set,n=[];for(const o of e)for(const r of l(o))t.has(r)||(t.add(r),n.push(r));return n}function x(e){for(let t=1;t<e.length;t++){const n=e.slice(0,t);if(l(e[t]).some(r=>n.some(a=>l(a).includes(r))))return e[t]}}function I(e,t){return e.find(n=>u(n,t))}function b(e,t){const n=I(e,t),o=x(e);if(!(!n||!o||o.id===n.id))return u(o,t)?o:void 0}function _(e,t){return`Cannot import ${e}: no converter reads that file type. Supported types are ${L(t).join(", ")}.`}exports.DEFAULT_ACCEPT_EXTENSIONS=E;exports.DEFAULT_IMPORT_MODE=v;exports.allAcceptExtensions=L;exports.alternateEngine=x;exports.alternateFor=b;exports.assetsForImportMode=P;exports.diffHunks=g;exports.diffLines=d;exports.diffStats=m;exports.engineAccepts=u;exports.engineExtensions=l;exports.fileChangesForImport=k;exports.filesForImportMode=y;exports.formatWarningLine=S;exports.hasNativeImportMode=M;exports.matchesExtension=F;exports.projectForImportMode=T;exports.resolveImportMode=C;exports.routeEngine=I;exports.unsupportedFileMessage=_;
@@ -1,4 +1,4 @@
1
- import { a1 as h, ak as d } from "./upload-H_OCZBBn.js";
1
+ import { a2 as h, al as d } from "./upload-w0BmYtpp.js";
2
2
  function m(e, t) {
3
3
  const n = e.length === 0 ? [] : e.split(`
4
4
  `), o = t.length === 0 ? [] : t.split(`
@@ -88,11 +88,11 @@ function x(e) {
88
88
  return n;
89
89
  }
90
90
  const j = "converted";
91
- function k(e) {
91
+ function M(e) {
92
92
  return e.nativeOutputFiles !== void 0;
93
93
  }
94
94
  function C(e, t = j) {
95
- return t === "native" && !k(e) ? "converted" : t;
95
+ return t === "native" && !M(e) ? "converted" : t;
96
96
  }
97
97
  function P(e, t) {
98
98
  return t === "native" ? e.nativeProject ?? e.project : e.project;
@@ -107,7 +107,7 @@ function $(e) {
107
107
  const t = e.action === "replace" || e.action === "rewrite" ? `replaced with \`${e.replacement}\`` : e.message ?? e.action, n = e.occurrences > 1 ? ` (x${e.occurrences})` : "";
108
108
  return `[${e.severity}] ${e.macro}: ${t}${n}`;
109
109
  }
110
- const M = [
110
+ const k = [
111
111
  ".tex",
112
112
  ".md",
113
113
  ".markdown",
@@ -119,7 +119,7 @@ const M = [
119
119
  ".tgz"
120
120
  ];
121
121
  function l(e) {
122
- return e.acceptExtensions ?? M;
122
+ return e.acceptExtensions ?? k;
123
123
  }
124
124
  function F(e, t) {
125
125
  const n = e.toLowerCase();
@@ -156,7 +156,7 @@ function z(e, t) {
156
156
  return `Cannot import ${e}: no converter reads that file type. Supported types are ${E(t).join(", ")}.`;
157
157
  }
158
158
  export {
159
- M as D,
159
+ k as D,
160
160
  j as a,
161
161
  E as b,
162
162
  b as c,
@@ -170,7 +170,7 @@ export {
170
170
  A as k,
171
171
  S as l,
172
172
  $ as m,
173
- k as n,
173
+ M as n,
174
174
  F as o,
175
175
  P as p,
176
176
  y as q,
package/dist/index.cjs CHANGED
@@ -1,5 +1,13 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./upload-BnRj1gU1.cjs"),p=require("./engine-routing-08ynicii.cjs"),ee=/\$(?![\s$])([^$\n]{1,200})\$/;function te(e){const n=ee.exec(e);if(!n)return!1;const r=n[1];return/[\\^_{}]/.test(r)||/^[A-Za-z]'?$/.test(r.trim())}const ne=[{pattern:/\\(?:begin|end)\{[a-zA-Z*]+\}/,weight:3},{pattern:/\\\[[\s\S]*?\\\]|\$\$[\s\S]*?\$\$/,weight:3},{pattern:/\\[a-zA-Z]+\s*\{/,weight:2},{pattern:/\\\([\s\S]*?\\\)/,weight:2},{pattern:/\\[a-zA-Z]+\b/,weight:1},{pattern:/\\(?:label|ref|eqref|cite)\b/,weight:2}],re=[{pattern:/^#{1,6}\s+\S/m,weight:3},{pattern:/^\s*```/m,weight:3},{pattern:/^\s*[-*+]\s+\S/m,weight:2},{pattern:/^\s*\d+[.)]\s+\S/m,weight:2},{pattern:/\*\*[^\s*][^*]*\*\*/,weight:2},{pattern:/\[[^\]\n]+\]\([^)\s]+\)/,weight:2},{pattern:/^\s*>\s+\S/m,weight:2},{pattern:/(?:^|\s)_[^_\s][^_\n]*_(?:\s|[.,;:!?]|$)/,weight:1},{pattern:/`[^`\n]+`/,weight:1}],oe=2;function D(e,n){return n.reduce((r,{pattern:o,weight:i})=>r+(o.test(e)?i:0),0)}function O(e){return{latex:D(e,ne)+(te(e)?2:0),markdown:D(e,re)}}function ie(e){const n=e.trim();if(!n||n.startsWith("<"))return;const{latex:r,markdown:o}=O(n);if(!(Math.max(r,o)<oe))return r>=o?"latex":"markdown"}const se={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",pdf:"application/pdf",eps:"application/postscript",ps:"application/postscript",bmp:"image/bmp",tiff:"image/tiff",tif:"image/tiff",webp:"image/webp",ico:"image/vnd.microsoft.icon"};function ae(e){const n=e.split(".").pop()?.toLowerCase()??"";return se[n]??"application/octet-stream"}const S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function ce(e){const n=e.length,r=[];for(let o=0;o<n;o+=3){const i=e[o],a=o+1<n,s=o+2<n,c=a?e[o+1]:0,l=s?e[o+2]:0;r.push(S[i>>2]),r.push(S[(i&3)<<4|c>>4]),r.push(a?S[(c&15)<<2|l>>6]:"="),r.push(s?S[l&63]:"=")}return r.join("")}function y(e){return{ref:e.ref,fileName:e.fileName,contentType:ae(e.fileName),data:ce(e.data)}}function N(e){return{ref:e.xmlId,source:e.content,sourceFormat:e.sourceFormat,isRoot:e.isRoot}}function $(e){return{title:e.title,docinfo:e.docinfo,documentKind:e.documentKind,divisions:e.divisions.map(N),assets:e.assets.map(y)}}function le(e){return{ref:e.ref,kind:"file",title:e.fileName,short_description:e.fileName,file:{filename:e.fileName,content_type:e.contentType,data:e.data}}}function k(e){return{title:e.title,docinfo:e.docinfo,document_type:e.documentKind,divisions_attributes:e.divisions.map(n=>({ref:n.ref,source:n.source,source_format:n.sourceFormat,is_root:n.isRoot})),assets_attributes:e.assets.map(le)}}function de(e){return k($(e))}function ue(e,n){const{root:r,entries:o}=t.insertEntries(e,n),i=new Set(o.map(s=>s.xmlId)),a=e.divisions.filter(s=>!i.has(s.xmlId)&&!(n.unwrapRoot&&s.xmlId===r.xmlId));return{divisions:[...o,...a].map(N),assets:e.assets.map(y),placeholders:o.map(s=>`<plus:${s.type} ref="${s.xmlId}"/>`)}}const R=/<(\/?)p(?=[\s>/])/g;function pe(e){let n=0;R.lastIndex=0;let r;for(;(r=R.exec(e))!==null;)n+=r[1]?-1:1;return n>0}const me=new RegExp(`<(${t.PRETEXT_DIVISION_TAGS.join("|")})(?=[\\s>/])`);function j(e){return me.exec(e)?.[1]}function X(e,n,r){return e.split(`
2
- `).map((o,i)=>i===0&&r?o:o&&n+o).join(`
3
- `)}function fe(e,n){let r=e.trim(),o;if(n.inline){const i=r.replace(/^<p>\s*([\s\S]*?)\s*<\/p>$/,"$1");r=i!==r?i:r.replace(/^<p>/,"");const a=j(r);a&&(o=`Pasted content produced a <${a}>, which cannot sit inside a <p>. It was inserted as-is — move it out of the paragraph to make the document valid.`)}return n.baseIndent&&(r=X(r,n.baseIndent,n.midLine)),{markup:r,warning:o}}const v={mainSourcePath:"source/main.ptx",publicationPath:"publication/publication.ptx",projectFilePath:"project.ptx",docinfoPath:"source/docinfo.ptx"};function z(e){return t.findAnyElement(e,"pretext")?e:`<pretext>
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./upload-CPMLFrdG.cjs"),m=require("./engine-routing-B03PZ4P-.cjs"),ie=/\$(?![\s$])([^$\n]{1,200})\$/;function se(e){const n=ie.exec(e);if(!n)return!1;const o=n[1];return/[\\^_{}]/.test(o)||/^[A-Za-z]'?$/.test(o.trim())}const ae=[{pattern:/\\(?:begin|end)\{[a-zA-Z*]+\}/,weight:3},{pattern:/\\\[[\s\S]*?\\\]|\$\$[\s\S]*?\$\$/,weight:3},{pattern:/\\[a-zA-Z]+\s*\{/,weight:2},{pattern:/\\\([\s\S]*?\\\)/,weight:2},{pattern:/\\[a-zA-Z]+\b/,weight:1},{pattern:/\\(?:label|ref|eqref|cite)\b/,weight:2}],ce=[{pattern:/^#{1,6}\s+\S/m,weight:3},{pattern:/^\s*```/m,weight:3},{pattern:/^\s*[-*+]\s+\S/m,weight:2},{pattern:/^\s*\d+[.)]\s+\S/m,weight:2},{pattern:/\*\*[^\s*][^*]*\*\*/,weight:2},{pattern:/\[[^\]\n]+\]\([^)\s]+\)/,weight:2},{pattern:/^\s*>\s+\S/m,weight:2},{pattern:/(?:^|\s)_[^_\s][^_\n]*_(?:\s|[.,;:!?]|$)/,weight:1},{pattern:/`[^`\n]+`/,weight:1}],le=2;function D(e,n){return n.reduce((o,{pattern:r,weight:i})=>o+(r.test(e)?i:0),0)}function $(e){return{latex:D(e,ae)+(se(e)?2:0),markdown:D(e,ce)}}function de(e){const n=e.trim();if(!n||n.startsWith("<"))return;const{latex:o,markdown:r}=$(n);if(!(Math.max(o,r)<le))return o>=r?"latex":"markdown"}const ue={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",pdf:"application/pdf",eps:"application/postscript",ps:"application/postscript",bmp:"image/bmp",tiff:"image/tiff",tif:"image/tiff",webp:"image/webp",ico:"image/vnd.microsoft.icon"};function pe(e){const n=e.split(".").pop()?.toLowerCase()??"";return ue[n]??"application/octet-stream"}const S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function me(e){const n=e.length,o=[];for(let r=0;r<n;r+=3){const i=e[r],a=r+1<n,s=r+2<n,c=a?e[r+1]:0,l=s?e[r+2]:0;o.push(S[i>>2]),o.push(S[(i&3)<<4|c>>4]),o.push(a?S[(c&15)<<2|l>>6]:"="),o.push(s?S[l&63]:"=")}return o.join("")}function j(e){return{ref:e.ref,fileName:e.fileName,contentType:pe(e.fileName),data:me(e.data)}}function X(e){return{ref:e.xmlId,source:e.content,sourceFormat:e.sourceFormat,isRoot:e.isRoot}}function z(e){return{title:e.title,docinfo:e.docinfo,documentKind:e.documentKind,divisions:e.divisions.map(X),assets:e.assets.map(j)}}function fe(e){return{ref:e.ref,kind:"file",title:e.fileName,short_description:e.fileName,file:{filename:e.fileName,content_type:e.contentType,data:e.data}}}function U(e){return{title:e.title,docinfo:e.docinfo,document_type:e.documentKind,divisions_attributes:e.divisions.map(n=>({ref:n.ref,source:n.source,source_format:n.sourceFormat,is_root:n.isRoot})),assets_attributes:e.assets.map(fe)}}function he(e){return U(z(e))}function ge(e,n){const{root:o,entries:r}=t.insertEntries(e,n),i=new Set(r.map(s=>s.xmlId)),a=e.divisions.filter(s=>!i.has(s.xmlId)&&!(n.unwrapRoot&&s.xmlId===o.xmlId));return{divisions:[...r,...a].map(X),assets:e.assets.map(j),placeholders:r.map(s=>`<plus:${s.type} ref="${s.xmlId}"/>`)}}const C=/<(\/?)p(?=[\s>/])/g;function Te(e){let n=0;C.lastIndex=0;let o;for(;(o=C.exec(e))!==null;)n+=o[1]?-1:1;return n>0}const xe=new RegExp(`<(${t.PRETEXT_DIVISION_TAGS.join("|")})(?=[\\s>/])`);function Pe(e){return xe.exec(e)?.[1]}function W(e,n,o){return e.split(`
2
+ `).map((r,i)=>i===0&&o?r:r&&n+r).join(`
3
+ `)}const G=new Set(`abbr acro ad alert am angles articletitle attr bc c ca cd chord copyleft
4
+ copyright custom dataurl dblbrackets dblprime degree delete dl doubleflat
5
+ doublesharp eg ellipsis em email etal etc fillin flat fn foreign icon idx
6
+ ie init insert kbd langle latex ldblbracket line lq lsq m md mdash midpoint
7
+ minus n natural nb nbsp ndash obelus ol permille pf phonomark pilcrow
8
+ plusminus pm prime ps pubtitle q quantity rangle rdblbracket registered rq
9
+ rsq scaledeg section-mark servicemark sharp solidus sq stale swungdash tag
10
+ tage taxon term tex timeofday times timesignature today trademark ul url
11
+ var viz vs xelatex xetex xref`.trim().split(/\s+/)),M=/<!--[\s\S]*?-->/g;function y(e,n){M.lastIndex=0;let o=0,r;for(;(r=M.exec(n))!==null;)r.index>o&&O(e,n.slice(o,r.index)),e.push({kind:"comment",text:r[0]}),o=r.index+r[0].length;o<n.length&&O(e,n.slice(o))}function O(e,n){e.push({kind:"text",text:n,meaningful:/\S/.test(n)})}function Ee(e){const n=[];let o=0;for(const r of t.findTopLevelElementsMatching(e,()=>!0))r.start>o&&y(n,e.slice(o,r.start)),n.push({kind:"element",text:r.outer,paragraphContent:G.has(r.name)}),o=r.end;return o<e.length&&y(n,e.slice(o)),n}function w(e){return e.kind==="comment"||e.kind==="text"&&!e.meaningful}function Ie(e){const n=e.map(u=>u.text).join("");if(!e.some(u=>!w(u)))return n;let o=0,r=e.length;for(;o<r&&w(e[o]);)o+=1;for(;r>o&&w(e[r-1]);)r-=1;const i=e.slice(0,o).map(u=>u.text).join(""),a=e.slice(o,r).map(u=>u.text).join(""),s=e.slice(r).map(u=>u.text).join(""),c=/^\s*/.exec(a)[0],l=/\s*$/.exec(a)[0],d=a.slice(c.length,a.length-l.length);return`${i}${c}<p>${d}</p>${l}${s}`}function K(e){const n=[];let o=[];const r=()=>{o.length>0&&(n.push(Ie(o)),o=[])};for(const i of Ee(e))i.kind==="element"&&!i.paragraphContent?(r(),n.push(i.text)):o.push(i);return r(),n.join("")}function Se(e){const n=t.findTopLevelElementsMatching(e,()=>!0),[o]=n;if(n.length===1&&o.name==="p"&&o.start===0&&o.end===e.length)return{markup:o.inner.trim()};const r=n.filter(s=>!G.has(s.name)),i=r.find(s=>s.name!=="p"),a=[];return i&&a.push(`Pasted content produced a <${i.name}>, which cannot sit inside a <p>. It was inserted as-is — move it out of the paragraph to make the document valid.`),r.some(s=>s.name==="p")&&a.push("Pasted content produced more than one paragraph, which cannot sit inside a <p>. It was inserted as-is — split the surrounding paragraph to make the document valid."),{markup:e,warning:a.length>0?a.join(" "):void 0}}function ve(e,n){const o=e.trim(),r=n.inline?Se(o):{markup:K(o)};return n.baseIndent&&(r.markup=W(r.markup,n.baseIndent,n.midLine)),r}const v={mainSourcePath:"source/main.ptx",publicationPath:"publication/publication.ptx",projectFilePath:"project.ptx",docinfoPath:"source/docinfo.ptx"};function H(e){return t.findAnyElement(e,"pretext")?e:`<pretext>
4
12
  ${e}
5
- </pretext>`}function U(e,n,r){const o=new Map,i=[],a=`${n}-`;return e.forEach((s,c)=>{const l=s.attributes["xml:id"];let d;if(l){const h=t.slugify(l);d=h.startsWith(a)?h:`${a}${h}`}else d=`${a}${t.padIndex(c+1,e.length)}`,r.push({action:"anomaly",severity:"info",kind:"structure",category:"missing_xml_id",macro:s.name,occurrences:1,message:`<${s.name}> at position ${c+1} has no xml:id; using \`${d}\` as filename.`});const m=o.get(d)??0;o.set(d,m+1);const u=m===0?d:`${d}-${m+1}`;i.push({span:s,slug:u,filename:`${u}.ptx`})}),i}function he(e,n,r,o){const i=t.findTopLevelElements(e,"section");if(i.length===0)return e;const s=U(i,"sec",o).map(c=>{const l=`source/${n}/${c.filename}`;return r[l]=t.withProlog(c.span.outer),{start:c.span.start,end:c.span.end,replacement:`<xi:include href="${n}/${c.filename}"/>`}});return t.spliceReplacements(e,s)}function ge(e,n,r){const o=t.findAnyElement(e,"book");if(!o)return r.push({action:"anomaly",severity:"warning",kind:"structure",category:"missing_root",macro:"book",occurrences:1,message:"Document was treated as a book but no <book> element found; emitting as a single file."}),W(e,n);const i={},a=t.findTopLevelElements(o.inner,"chapter");let s=o.inner;if(n.splitChapters&&a.length>0){const m=U(a,"ch",r).map(u=>{let h=u.span.outer;if(n.splitSections){const f=u.span.inner,g=he(f,u.slug,i,r);h=u.span.outer.slice(0,u.span.startTagEnd-u.span.start)+g+u.span.outer.slice(u.span.contentEnd-u.span.start)}const T=`source/${u.filename}`;return i[T]=t.withProlog(h),{start:u.span.start,end:u.span.end,replacement:`<xi:include href="${u.filename}"/>`}});s=t.spliceReplacements(o.inner,m)}const c=e.slice(o.start,o.startTagEnd)+s+e.slice(o.contentEnd,o.end),l=e.slice(0,o.start)+c+e.slice(o.end);return i[n.mainSourcePath]=t.withProlog(t.ensureXIncludeNamespace(z(l.trim()))),i}function W(e,n,r){const o={};return o[n.mainSourcePath]=t.withProlog(z(e.trim())),o}function Te(e,n={}){const r=[],o=n.documentKind??t.detectDocumentKind(e),i={splitChapters:n.splitChapters??o==="book",splitSections:n.splitSections??!1,mainSourcePath:n.mainSourcePath??v.mainSourcePath,publicationPath:n.publicationPath??v.publicationPath,projectFilePath:n.projectFilePath??v.projectFilePath,docinfoPath:n.docinfoPath??v.docinfoPath},a=o==="book"?ge(e,i,r):W(e,i);return a[i.projectFilePath]=t.renderProjectPtx({mainSource:i.mainSourcePath,publication:i.publicationPath}),a[i.publicationPath]=t.renderPublicationPtx(),{files:a,documentKind:o,warnings:r}}class K extends Error{constructor(){super("Import cancelled."),this.name="ConversionCancelledError"}}let Pe=0;function G(e,n,r={}){const o=`convert-${Pe++}`,i=e(),{assets:a={},...s}=r;let c;const l=new Promise((m,u)=>{let h=!1;const T=f=>{h||(h=!0,i.terminate(),f())};c=()=>T(()=>u(new K)),i.addEventListener("message",f=>{const g=f.data;if(!(!g||g.requestId!==o)){if(g.type==="result"){T(()=>m(g.result));return}T(()=>u(new Error(g.message)))}}),i.addEventListener("error",f=>{const g=typeof f=="object"&&f&&"message"in f?String(f.message):"The import worker failed to start.";T(()=>u(new Error(g)))})}),d=[...new Set(Object.values(a).map(m=>m.buffer).filter(m=>m instanceof ArrayBuffer))];return i.postMessage({type:"convert",requestId:o,files:n,assets:a,options:s},d),{result:l,cancel:()=>c?.()}}function Ee(e){const{createWorker:n,id:r="worker",label:o="Built-in converter",description:i="Create a new project starting with LaTeX, Markdown, or PreTeXt files.",acceptExtensions:a}=e;let s=null;const c=async(l,d)=>{s?.cancel(),s=G(n,l,d);try{return await s.result}finally{s=null}};return{id:r,label:o,description:i,acceptExtensions:a,prepare:async l=>{const{files:d,assets:m}=await t.extractUpload(l);return{fileName:l.name,files:d,assets:m,analysis:t.analyzeImportSources(d)}},convertPrepared:(l,d)=>c(l.files,{...d,assets:l.assets}),convertFile:async(l,d)=>{const{files:m,assets:u}=await t.extractUpload(l);return c(m,{...d,assets:u})},cancel:()=>{s?.cancel(),s=null}}}const B={".docx":"docx",".odt":"odt",".epub":"epub",".tex":"latex",".ltx":"latex",".md":"markdown",".markdown":"markdown",".html":"html",".htm":"html",".rst":"rst",".org":"org",".ipynb":"ipynb",".typ":"typst",".xml":"docbook",".textile":"textile"},xe=new Set(["docx","odt","epub"]),w=[".docx",".odt",".epub",".html",".htm",".rst",".org",".ipynb",".typ",".textile",".tex",".ltx",".md",".markdown"];function A(e){const n=e.lastIndexOf(".");return n<=0?"":e.slice(n).toLowerCase()}function H(e){return B[A(e)]}function V(e){const{convertToPretext:n,id:r="pandoc",label:o="Pandoc",description:i="Convert Word, OpenOffice, EPUB, HTML, reStructuredText, and more.",acceptExtensions:a=w}=e;return{id:r,label:o,description:i,acceptExtensions:a,convertFile:async(s,c)=>{const l=await n(s,c);if(!l.trim())throw new Error(`Pandoc produced no output for ${s.name}. The file may be empty or in an unexpected format.`);const d=t.importProjectFromFiles({"source.ptx":l},{documentKind:c.documentKind,splitChapters:c.splitChapters,splitSections:c.splitSections,splitLevel:c.splitLevel});return"pretextError"in d||(d.sourceName=s.name,d.sourcePath=s.name),d}}}const q=3e4;function Y(e){const n=/<pre>([\s\S]*?)<\/pre>/i.exec(e);return(n?n[1]:e).replace(/<[^>]+>/g,"").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&amp;/g,"&").trim()}function Z(e,n,r){const o=Ie(Y(n)),i=o?` (${M(o)})`:"";switch(e){case 400:return`The pandoc server will not convert ${r}${i}.${x(r)}`;case 401:case 403:return`The pandoc server rejected this site's credentials, so ${r} was never converted. Nothing is wrong with your file — this is a configuration problem with the service, and worth reporting.${x(r)}`;case 404:return`The pandoc conversion service could not be found at the address this site is configured to use. Nothing is wrong with your file — this is a configuration problem worth reporting.${x(r)}`;case 413:return`${r} is too large for the pandoc server to accept. Splitting it into chapters and importing them one at a time should get through.`;case 422:return`Pandoc could not read ${r}${i}. The file may be damaged, or may use features pandoc does not support.`;case 503:return`The pandoc server is running without its PreTeXt writer, so it cannot convert anything right now. Nothing is wrong with your file — this is a problem with the service, and worth reporting.${x(r)}`;case 504:return`Converting ${r} took longer than the pandoc server allows. Splitting it into chapters and importing them one at a time usually works.`;default:{const a=o?`(HTTP ${e}: ${M(o)})`:`(HTTP ${e})`;return`The pandoc server could not convert ${r} ${a}.${x(r)}`}}}const C=300;function Ie(e){return e.replace(/\s+/g," ").trim()}function M(e){return e.length<=C?e:`${e.slice(0,C).trimEnd()}…`}const Se=new Set([".tex",".ltx",".md",".markdown"]);function x(e){return Se.has(A(e))?" You can import this file with the built-in converter instead.":""}function ve(e){const{url:n,token:r,headers:o,credentials:i,standalone:a=!0,from:s,timeoutMs:c=q,fetchImpl:l,id:d="pandoc-remote",label:m="Pandoc (server)",description:u="Convert Word, OpenOffice, EPUB, HTML, reStructuredText, and more — no local install needed.",acceptExtensions:h=w}=e;return V({convertToPretext:async(f,g)=>{const _=l??globalThis.fetch;if(typeof _!="function")throw new Error("This environment has no fetch; pass fetchImpl to createRemotePandocEngine.");const F=s??H(f.name);if(!F)throw new Error(`Pandoc cannot determine a format for ${f.name}. Supported extensions: ${h.join(", ")}.`);const P=new FormData;r&&P.set("token",r),P.set("file",f,f.name),P.set("from",F),a&&P.set("standalone","yes");const L=new AbortController,J=setTimeout(()=>L.abort(),c);let I;try{I=await _(n,{method:"POST",body:P,headers:o,credentials:i,signal:L.signal})}catch(E){if(E instanceof Error&&E.name==="AbortError")throw new Error(`Pandoc conversion of ${f.name} timed out after ${Math.round(c/1e3)}s.`);const Q=E instanceof Error?E.message:String(E);throw new Error(`Could not reach the pandoc server: ${Q}`)}finally{clearTimeout(J)}const b=await I.text();if(!I.ok)throw new Error(Z(I.status,b,f.name));return b},id:d,label:m,description:u,acceptExtensions:h})}exports.CLEAN_RULES=t.CLEAN_RULES;exports.DIVISION_LADDER=t.DIVISION_LADDER;exports.LADDER_OVERFLOW_TAG=t.LADDER_OVERFLOW_TAG;exports.LATEX_DIVISION_COMMANDS=t.LATEX_DIVISION_COMMANDS;exports.LATEX_FORMAT_MARKERS=t.LATEX_FORMAT_MARKERS;exports.MARKDOWN_FORMAT_MARKERS=t.MARKDOWN_FORMAT_MARKERS;exports.MAX_SUGGESTED_SPLIT_LEVEL=t.MAX_SUGGESTED_SPLIT_LEVEL;exports.PRETEXT_DIVISION_TAGS=t.PRETEXT_DIVISION_TAGS;exports.PRETEXT_ROOT_TAGS=t.PRETEXT_ROOT_TAGS;exports.PROJECT_DESTINATION=t.PROJECT_DESTINATION;exports.analyzeImportSources=t.analyzeImportSources;exports.applyLatexFixes=t.applyLatexFixes;exports.attachLatexRoots=t.attachLatexRoots;exports.attachMarkdownRoots=t.attachMarkdownRoots;exports.buildDivisionPool=t.buildDivisionPool;exports.buildNativeDivisionPool=t.buildNativeDivisionPool;exports.carryOverProjectFiles=t.carryOverProjectFiles;exports.cleanLatex=t.cleanLatex;exports.cleanLatexInChunks=t.cleanLatexInChunks;exports.cleanLatexText=t.cleanLatexText;exports.convertLatexToPretext=t.convertLatexToPretext;exports.convertMarkdownToPretext=t.convertMarkdownToPretext;exports.convertSourceToPretext=t.convertSourceToPretext;exports.dedupeXmlIds=t.dedupeXmlIds;exports.defaultAttachLevel=t.defaultAttachLevel;exports.defaultManifestTarget=t.defaultManifestTarget;exports.detectDocumentKind=t.detectDocumentKind;exports.detectSourceFormat=t.detectSourceFormat;exports.divisionChildRefs=t.divisionChildRefs;exports.divisionsAtLevel=t.divisionsAtLevel;exports.expandPretextIncludes=t.expandPretextIncludes;exports.extractUpload=t.extractUpload;exports.filePrefixForDivision=t.filePrefixForDivision;exports.findLatexFixes=t.findLatexFixes;exports.findLatexHeaders=t.findLatexHeaders;exports.findProjectManifest=t.findProjectManifest;exports.fixesToWarnings=t.fixesToWarnings;exports.getConversionErrorMessage=t.getConversionErrorMessage;exports.getLatexCleanDiagnostics=t.getLatexCleanDiagnostics;exports.handleImportUploadFile=t.handleImportUploadFile;exports.importProjectFromFiles=t.importProjectFromFiles;exports.isDivisionTag=t.isDivisionTag;exports.ladderDepth=t.ladderDepth;exports.latexDivisionHierarchy=t.latexDivisionHierarchy;exports.latexFixesToCodeActions=t.latexFixesToCodeActions;exports.mergeChunksAtLevel=t.mergeChunksAtLevel;exports.normalizePretextSource=t.normalizePretextSource;exports.outlineDivisions=t.outlineDivisions;exports.parseLatexDivisions=t.parseLatexDivisions;exports.parseProjectManifest=t.parseProjectManifest;exports.prepareInsertSource=t.prepareInsertSource;exports.pruneDivisions=t.pruneDivisions;exports.rebuildImport=t.rebuildImport;exports.relayoutImport=t.relayoutImport;exports.renderProjectPtx=t.renderProjectPtx;exports.renderProjectPtxFromManifest=t.renderProjectPtxFromManifest;exports.renderPublicationPtx=t.renderPublicationPtx;exports.reselectImport=t.reselectImport;exports.resolveImportSplitLevel=t.resolveImportSplitLevel;exports.resolveSplitLevel=t.resolveSplitLevel;exports.retargetFragment=t.retargetFragment;exports.retargetFragmentToDepth=t.retargetFragmentToDepth;exports.retargetImport=t.retargetImport;exports.sanitizeRef=t.sanitizeRef;exports.serializeForDestination=t.serializeForDestination;exports.serializeInsertFiles=t.serializeInsertFiles;exports.serializeProjectToFiles=t.serializeProjectToFiles;exports.shiftLadderTag=t.shiftLadderTag;exports.suggestSplitLevel=t.suggestSplitLevel;exports.DEFAULT_ACCEPT_EXTENSIONS=p.DEFAULT_ACCEPT_EXTENSIONS;exports.DEFAULT_IMPORT_MODE=p.DEFAULT_IMPORT_MODE;exports.allAcceptExtensions=p.allAcceptExtensions;exports.alternateEngine=p.alternateEngine;exports.alternateFor=p.alternateFor;exports.assetsForImportMode=p.assetsForImportMode;exports.diffHunks=p.diffHunks;exports.diffLines=p.diffLines;exports.diffStats=p.diffStats;exports.engineAccepts=p.engineAccepts;exports.engineExtensions=p.engineExtensions;exports.fileChangesForImport=p.fileChangesForImport;exports.filesForImportMode=p.filesForImportMode;exports.formatWarningLine=p.formatWarningLine;exports.hasNativeImportMode=p.hasNativeImportMode;exports.matchesExtension=p.matchesExtension;exports.projectForImportMode=p.projectForImportMode;exports.resolveImportMode=p.resolveImportMode;exports.routeEngine=p.routeEngine;exports.unsupportedFileMessage=p.unsupportedFileMessage;exports.ConversionCancelledError=K;exports.DEFAULT_REMOTE_PANDOC_TIMEOUT_MS=q;exports.PANDOC_ACCEPT_EXTENSIONS=w;exports.PANDOC_BINARY_FORMATS=xe;exports.PANDOC_EXTENSION_FORMATS=B;exports.buildPretextProjectFiles=Te;exports.createPandocEngine=V;exports.createRemotePandocEngine=ve;exports.createWorkerEngine=Ee;exports.describeRemotePandocFailure=Z;exports.detectSnippetFormat=ie;exports.extractPandocErrorDetail=Y;exports.fileExtension=A;exports.firstDivisionTag=j;exports.isInlineContext=pe;exports.pandocFormatForFileName=H;exports.placeConvertedMarkup=fe;exports.recordsToPlusPayload=k;exports.reindentForContext=X;exports.runConversionInWorker=G;exports.scoreSnippetFormats=O;exports.serializeInsertToRecords=ue;exports.serializeProjectToPlusPayload=de;exports.serializeProjectToRecords=$;
13
+ </pretext>`}function q(e,n,o){const r=new Map,i=[],a=`${n}-`;return e.forEach((s,c)=>{const l=s.attributes["xml:id"];let d;if(l){const h=t.slugify(l);d=h.startsWith(a)?h:`${a}${h}`}else d=`${a}${t.padIndex(c+1,e.length)}`,o.push({action:"anomaly",severity:"info",kind:"structure",category:"missing_xml_id",macro:s.name,occurrences:1,message:`<${s.name}> at position ${c+1} has no xml:id; using \`${d}\` as filename.`});const u=r.get(d)??0;r.set(d,u+1);const p=u===0?d:`${d}-${u+1}`;i.push({span:s,slug:p,filename:`${p}.ptx`})}),i}function we(e,n,o,r){const i=t.findTopLevelElements(e,"section");if(i.length===0)return e;const s=q(i,"sec",r).map(c=>{const l=`source/${n}/${c.filename}`;return o[l]=t.withProlog(c.span.outer),{start:c.span.start,end:c.span.end,replacement:`<xi:include href="${n}/${c.filename}"/>`}});return t.spliceReplacements(e,s)}function Ae(e,n,o){const r=t.findAnyElement(e,"book");if(!r)return o.push({action:"anomaly",severity:"warning",kind:"structure",category:"missing_root",macro:"book",occurrences:1,message:"Document was treated as a book but no <book> element found; emitting as a single file."}),B(e,n);const i={},a=t.findTopLevelElements(r.inner,"chapter");let s=r.inner;if(n.splitChapters&&a.length>0){const u=q(a,"ch",o).map(p=>{let h=p.span.outer;if(n.splitSections){const f=p.span.inner,g=we(f,p.slug,i,o);h=p.span.outer.slice(0,p.span.startTagEnd-p.span.start)+g+p.span.outer.slice(p.span.contentEnd-p.span.start)}const T=`source/${p.filename}`;return i[T]=t.withProlog(h),{start:p.span.start,end:p.span.end,replacement:`<xi:include href="${p.filename}"/>`}});s=t.spliceReplacements(r.inner,u)}const c=e.slice(r.start,r.startTagEnd)+s+e.slice(r.contentEnd,r.end),l=e.slice(0,r.start)+c+e.slice(r.end);return i[n.mainSourcePath]=t.withProlog(t.ensureXIncludeNamespace(H(l.trim()))),i}function B(e,n,o){const r={};return r[n.mainSourcePath]=t.withProlog(H(e.trim())),r}function be(e,n={}){const o=[],r=n.documentKind??t.detectDocumentKind(e),i={splitChapters:n.splitChapters??r==="book",splitSections:n.splitSections??!1,mainSourcePath:n.mainSourcePath??v.mainSourcePath,publicationPath:n.publicationPath??v.publicationPath,projectFilePath:n.projectFilePath??v.projectFilePath,docinfoPath:n.docinfoPath??v.docinfoPath},a=r==="book"?Ae(e,i,o):B(e,i);return a[i.projectFilePath]=t.renderProjectPtx({mainSource:i.mainSourcePath,publication:i.publicationPath}),a[i.publicationPath]=t.renderPublicationPtx(),{files:a,documentKind:r,warnings:o}}class V extends Error{constructor(){super("Import cancelled."),this.name="ConversionCancelledError"}}let _e=0;function Y(e,n,o={}){const r=`convert-${_e++}`,i=e(),{assets:a={},...s}=o;let c;const l=new Promise((u,p)=>{let h=!1;const T=f=>{h||(h=!0,i.terminate(),f())};c=()=>T(()=>p(new V)),i.addEventListener("message",f=>{const g=f.data;if(!(!g||g.requestId!==r)){if(g.type==="result"){T(()=>u(g.result));return}T(()=>p(new Error(g.message)))}}),i.addEventListener("error",f=>{const g=typeof f=="object"&&f&&"message"in f?String(f.message):"The import worker failed to start.";T(()=>p(new Error(g)))})}),d=[...new Set(Object.values(a).map(u=>u.buffer).filter(u=>u instanceof ArrayBuffer))];return i.postMessage({type:"convert",requestId:r,files:n,assets:a,options:s},d),{result:l,cancel:()=>c?.()}}function Fe(e){const{createWorker:n,id:o="worker",label:r="Built-in converter",description:i="Create a new project starting with LaTeX, Markdown, or PreTeXt files.",acceptExtensions:a}=e;let s=null;const c=async(l,d)=>{s?.cancel(),s=Y(n,l,d);try{return await s.result}finally{s=null}};return{id:o,label:r,description:i,acceptExtensions:a,prepare:async l=>{const{files:d,assets:u}=await t.extractUpload(l);return{fileName:l.name,files:d,assets:u,analysis:t.analyzeImportSources(d)}},convertPrepared:(l,d)=>c(l.files,{...d,assets:l.assets}),convertFile:async(l,d)=>{const{files:u,assets:p}=await t.extractUpload(l);return c(u,{...d,assets:p})},cancel:()=>{s?.cancel(),s=null}}}const Z={".docx":"docx",".odt":"odt",".epub":"epub",".tex":"latex",".ltx":"latex",".md":"markdown",".markdown":"markdown",".html":"html",".htm":"html",".rst":"rst",".org":"org",".ipynb":"ipynb",".typ":"typst",".xml":"docbook",".textile":"textile"},Le=new Set(["docx","odt","epub"]),A=[".docx",".odt",".epub",".html",".htm",".rst",".org",".ipynb",".typ",".textile",".tex",".ltx",".md",".markdown"];function b(e){const n=e.lastIndexOf(".");return n<=0?"":e.slice(n).toLowerCase()}function J(e){return Z[b(e)]}function Q(e){const{convertToPretext:n,id:o="pandoc",label:r="Pandoc",description:i="Convert Word, OpenOffice, EPUB, HTML, reStructuredText, and more.",acceptExtensions:a=A}=e;return{id:o,label:r,description:i,acceptExtensions:a,convertFile:async(s,c)=>{const l=await n(s,c);if(!l.trim())throw new Error(`Pandoc produced no output for ${s.name}. The file may be empty or in an unexpected format.`);const d=t.importProjectFromFiles({"source.ptx":l},{documentKind:c.documentKind,splitChapters:c.splitChapters,splitSections:c.splitSections,splitLevel:c.splitLevel});return"pretextError"in d||(d.sourceName=s.name,d.sourcePath=s.name),d}}}const ee=3e4;function te(e){const n=/<pre>([\s\S]*?)<\/pre>/i.exec(e);return(n?n[1]:e).replace(/<[^>]+>/g,"").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&amp;/g,"&").trim()}function ne(e,n,o){const r=Re(te(n)),i=r?` (${N(r)})`:"";switch(e){case 400:return`The pandoc server will not convert ${o}${i}.${E(o)}`;case 401:case 403:return`The pandoc server rejected this site's credentials, so ${o} was never converted. Nothing is wrong with your file — this is a configuration problem with the service, and worth reporting.${E(o)}`;case 404:return`The pandoc conversion service could not be found at the address this site is configured to use. Nothing is wrong with your file — this is a configuration problem worth reporting.${E(o)}`;case 413:return`${o} is too large for the pandoc server to accept. Splitting it into chapters and importing them one at a time should get through.`;case 422:return`Pandoc could not read ${o}${i}. The file may be damaged, or may use features pandoc does not support.`;case 503:return`The pandoc server is running without its PreTeXt writer, so it cannot convert anything right now. Nothing is wrong with your file — this is a problem with the service, and worth reporting.${E(o)}`;case 504:return`Converting ${o} took longer than the pandoc server allows. Splitting it into chapters and importing them one at a time usually works.`;default:{const a=r?`(HTTP ${e}: ${N(r)})`:`(HTTP ${e})`;return`The pandoc server could not convert ${o} ${a}.${E(o)}`}}}const k=300;function Re(e){return e.replace(/\s+/g," ").trim()}function N(e){return e.length<=k?e:`${e.slice(0,k).trimEnd()}…`}const De=new Set([".tex",".ltx",".md",".markdown"]);function E(e){return De.has(b(e))?" You can import this file with the built-in converter instead.":""}function Ce(e){const{url:n,token:o,headers:r,credentials:i,standalone:a=!0,from:s,timeoutMs:c=ee,fetchImpl:l,id:d="pandoc-remote",label:u="Pandoc (server)",description:p="Convert Word, OpenOffice, EPUB, HTML, reStructuredText, and more — no local install needed.",acceptExtensions:h=A}=e;return Q({convertToPretext:async(f,g)=>{const _=l??globalThis.fetch;if(typeof _!="function")throw new Error("This environment has no fetch; pass fetchImpl to createRemotePandocEngine.");const F=s??J(f.name);if(!F)throw new Error(`Pandoc cannot determine a format for ${f.name}. Supported extensions: ${h.join(", ")}.`);const x=new FormData;o&&x.set("token",o),x.set("file",f,f.name),x.set("from",F),a&&x.set("standalone","yes");const L=new AbortController,re=setTimeout(()=>L.abort(),c);let I;try{I=await _(n,{method:"POST",body:x,headers:r,credentials:i,signal:L.signal})}catch(P){if(P instanceof Error&&P.name==="AbortError")throw new Error(`Pandoc conversion of ${f.name} timed out after ${Math.round(c/1e3)}s.`);const oe=P instanceof Error?P.message:String(P);throw new Error(`Could not reach the pandoc server: ${oe}`)}finally{clearTimeout(re)}const R=await I.text();if(!I.ok)throw new Error(ne(I.status,R,f.name));return R},id:d,label:u,description:p,acceptExtensions:h})}exports.CLEAN_RULES=t.CLEAN_RULES;exports.DIVISION_LADDER=t.DIVISION_LADDER;exports.LADDER_OVERFLOW_TAG=t.LADDER_OVERFLOW_TAG;exports.LATEX_DIVISION_COMMANDS=t.LATEX_DIVISION_COMMANDS;exports.LATEX_FORMAT_MARKERS=t.LATEX_FORMAT_MARKERS;exports.MARKDOWN_FORMAT_MARKERS=t.MARKDOWN_FORMAT_MARKERS;exports.MAX_SUGGESTED_SPLIT_LEVEL=t.MAX_SUGGESTED_SPLIT_LEVEL;exports.PRETEXT_DIVISION_TAGS=t.PRETEXT_DIVISION_TAGS;exports.PRETEXT_ROOT_TAGS=t.PRETEXT_ROOT_TAGS;exports.PROJECT_DESTINATION=t.PROJECT_DESTINATION;exports.analyzeImportSources=t.analyzeImportSources;exports.applyLatexFixes=t.applyLatexFixes;exports.attachLatexRoots=t.attachLatexRoots;exports.attachMarkdownRoots=t.attachMarkdownRoots;exports.buildDivisionPool=t.buildDivisionPool;exports.buildNativeDivisionPool=t.buildNativeDivisionPool;exports.carryOverProjectFiles=t.carryOverProjectFiles;exports.cleanLatex=t.cleanLatex;exports.cleanLatexInChunks=t.cleanLatexInChunks;exports.cleanLatexText=t.cleanLatexText;exports.convertLatexToPretext=t.convertLatexToPretext;exports.convertMarkdownToPretext=t.convertMarkdownToPretext;exports.convertSourceToPretext=t.convertSourceToPretext;exports.dedupeXmlIds=t.dedupeXmlIds;exports.defaultAttachLevel=t.defaultAttachLevel;exports.defaultManifestTarget=t.defaultManifestTarget;exports.detectDocumentKind=t.detectDocumentKind;exports.detectSourceFormat=t.detectSourceFormat;exports.divisionChildRefs=t.divisionChildRefs;exports.divisionsAtLevel=t.divisionsAtLevel;exports.expandPretextIncludes=t.expandPretextIncludes;exports.extractUpload=t.extractUpload;exports.filePrefixForDivision=t.filePrefixForDivision;exports.findLatexFixes=t.findLatexFixes;exports.findLatexHeaders=t.findLatexHeaders;exports.findProjectManifest=t.findProjectManifest;exports.fixesToWarnings=t.fixesToWarnings;exports.getConversionErrorMessage=t.getConversionErrorMessage;exports.getLatexCleanDiagnostics=t.getLatexCleanDiagnostics;exports.handleImportUploadFile=t.handleImportUploadFile;exports.importProjectFromFiles=t.importProjectFromFiles;exports.isDivisionTag=t.isDivisionTag;exports.ladderDepth=t.ladderDepth;exports.latexDivisionHierarchy=t.latexDivisionHierarchy;exports.latexFixesToCodeActions=t.latexFixesToCodeActions;exports.mergeChunksAtLevel=t.mergeChunksAtLevel;exports.normalizePretextSource=t.normalizePretextSource;exports.outlineDivisions=t.outlineDivisions;exports.parseLatexDivisions=t.parseLatexDivisions;exports.parseProjectManifest=t.parseProjectManifest;exports.prepareInsertSource=t.prepareInsertSource;exports.pruneDivisions=t.pruneDivisions;exports.rebuildImport=t.rebuildImport;exports.relayoutImport=t.relayoutImport;exports.renderProjectPtx=t.renderProjectPtx;exports.renderProjectPtxFromManifest=t.renderProjectPtxFromManifest;exports.renderPublicationPtx=t.renderPublicationPtx;exports.reselectImport=t.reselectImport;exports.resolveImportSplitLevel=t.resolveImportSplitLevel;exports.resolveSplitLevel=t.resolveSplitLevel;exports.retargetFragment=t.retargetFragment;exports.retargetFragmentToDepth=t.retargetFragmentToDepth;exports.retargetImport=t.retargetImport;exports.sanitizeRef=t.sanitizeRef;exports.serializeForDestination=t.serializeForDestination;exports.serializeInsertFiles=t.serializeInsertFiles;exports.serializeProjectToFiles=t.serializeProjectToFiles;exports.shiftLadderTag=t.shiftLadderTag;exports.suggestSplitLevel=t.suggestSplitLevel;exports.DEFAULT_ACCEPT_EXTENSIONS=m.DEFAULT_ACCEPT_EXTENSIONS;exports.DEFAULT_IMPORT_MODE=m.DEFAULT_IMPORT_MODE;exports.allAcceptExtensions=m.allAcceptExtensions;exports.alternateEngine=m.alternateEngine;exports.alternateFor=m.alternateFor;exports.assetsForImportMode=m.assetsForImportMode;exports.diffHunks=m.diffHunks;exports.diffLines=m.diffLines;exports.diffStats=m.diffStats;exports.engineAccepts=m.engineAccepts;exports.engineExtensions=m.engineExtensions;exports.fileChangesForImport=m.fileChangesForImport;exports.filesForImportMode=m.filesForImportMode;exports.formatWarningLine=m.formatWarningLine;exports.hasNativeImportMode=m.hasNativeImportMode;exports.matchesExtension=m.matchesExtension;exports.projectForImportMode=m.projectForImportMode;exports.resolveImportMode=m.resolveImportMode;exports.routeEngine=m.routeEngine;exports.unsupportedFileMessage=m.unsupportedFileMessage;exports.ConversionCancelledError=V;exports.DEFAULT_REMOTE_PANDOC_TIMEOUT_MS=ee;exports.PANDOC_ACCEPT_EXTENSIONS=A;exports.PANDOC_BINARY_FORMATS=Le;exports.PANDOC_EXTENSION_FORMATS=Z;exports.buildPretextProjectFiles=be;exports.createPandocEngine=Q;exports.createRemotePandocEngine=Ce;exports.createWorkerEngine=Fe;exports.describeRemotePandocFailure=ne;exports.detectSnippetFormat=de;exports.extractPandocErrorDetail=te;exports.fileExtension=b;exports.firstDivisionTag=Pe;exports.isInlineContext=Te;exports.pandocFormatForFileName=J;exports.placeConvertedMarkup=ve;exports.recordsToPlusPayload=U;exports.reindentForContext=W;exports.runConversionInWorker=Y;exports.scoreSnippetFormats=$;exports.serializeInsertToRecords=ge;exports.serializeProjectToPlusPayload=he;exports.serializeProjectToRecords=z;exports.wrapLooseParagraphs=K;
package/dist/index.d.ts CHANGED
@@ -12,7 +12,7 @@ export { attachLatexRoots, attachMarkdownRoots, defaultAttachLevel, type AttachL
12
12
  export { defaultManifestTarget, findProjectManifest, parseProjectManifest, type ManifestTarget, type ProjectManifest, } from './lib/project/manifest';
13
13
  export { carryOverProjectFiles, renderProjectPtxFromManifest, type CarryOverOptions, type CarryOverResult, } from './lib/project/existing-project';
14
14
  export { DIVISION_LADDER, LADDER_OVERFLOW_TAG, PRETEXT_DIVISION_TAGS, PRETEXT_ROOT_TAGS, filePrefixForDivision, isDivisionTag, ladderDepth, shiftLadderTag, type LadderTag, type PretextDivisionTag, type PretextRootTag, } from './lib/pretext-divisions';
15
- export { firstDivisionTag, isInlineContext, placeConvertedMarkup, reindentForContext, type PlacedMarkup, type PlacementContext, } from './lib/paste/place-markup';
15
+ export { firstDivisionTag, isInlineContext, placeConvertedMarkup, reindentForContext, wrapLooseParagraphs, type PlacedMarkup, type PlacementContext, } from './lib/paste/place-markup';
16
16
  export { outlineDivisions, pruneDivisions, type DivisionOutlineItem, type DivisionPath, type PruneDivisionsResult, } from './lib/select/divisions';
17
17
  export { retargetFragment, retargetFragmentToDepth, dedupeXmlIds, prepareInsertSource, PROJECT_DESTINATION, type ImportDestination, type ProjectDestination, type InsertDestination, type PreparedInsertSource, type RetargetFragmentResult, type DedupeXmlIdsOptions, type DedupeXmlIdsResult, type IdRenameContext, type XmlIdRename, } from './lib/insert';
18
18
  export { DEFAULT_IMPORT_MODE, filesForImportMode, assetsForImportMode, hasNativeImportMode, projectForImportMode, resolveImportMode, formatWarningLine, type ImportMode, } from './lib/import-mode';