crossnote 0.8.17 → 0.8.18
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/out/cjs/index.cjs
CHANGED
|
@@ -175,7 +175,7 @@ ${P}
|
|
|
175
175
|
\`\`\` `}}k=D+1,y=y+1,_=_+G+`
|
|
176
176
|
`;continue}catch(P){G=`<pre class="language-text"><code>${(0,wt.escape)(P.toString())}</code></pre> `,k=D+1,y=y+1,_=_+G+`
|
|
177
177
|
`;continue}}else{if(s){let x="",z=T,I=/!?\[([^\]]*)\]\(([^)]*)\)/;for(;;){let H=z.match(I);if(!H||typeof H.index!="number"){x=x+z;break}else if(x=x+z.substring(0,H.index+H[0].length),z=z.substring(H.index+H[0].length),z[0]==="{"){let j=z.indexOf("}");if(j>0){let F=z.substring(1,j);x+=`{.source-line data-source-line="${y}" ${F}}`,z=z.substring(j+1)}}else x+=`{.source-line data-source-line="${y}"}`}T=x}k=D+1,y=y+1,_=_+T+`
|
|
178
|
-
`;continue}}return A&&(_+=`${we(y,{extraClass:"empty-line final-line",prefix:""})}`),{outputString:_,slideConfigs:g,tocBracketEnabled:h,JSAndCssFiles:m,headings:f,frontMatterString:E}}let N=0;if(e.startsWith("---")&&(N=e.indexOf(`
|
|
178
|
+
`;continue}}return A&&(_+=`${we(y,{extraClass:"empty-line final-line end-of-document",prefix:""})}`),{outputString:_,slideConfigs:g,tocBracketEnabled:h,JSAndCssFiles:m,headings:f,frontMatterString:E}}let N=0;if(e.startsWith("---")&&(N=e.indexOf(`
|
|
179
179
|
---`))>0){E=e.slice(0,N+4);let k=E.length,y=(E.match(/\n/g)??[]).length,_=e.indexOf(`
|
|
180
180
|
`,k);return _>0&&(k=_+1,y++),await R(k,y)}else return await R(0,0)}var ea=O(require("cheerio")),me=O(require("path"));var Cn=require("child_process"),_t=O(require("fs/promises")),He=require("fs/promises"),Rt=O(require("path")),je=O(require("vm"));var vn=require("child_process"),ze=O(require("fs")),pe=O(require("path"));function Ge(e){let t=pe.dirname(e),n=pe.extname(e),a=pe.basename(e).replace(new RegExp(n+"$"),"");ze.readdir(t,(r,s)=>{r||s.forEach(o=>{o.startsWith(a)&&!o.match(/\.(la)?tex/)&&ze.unlink(pe.resolve(t,o),()=>{})})})}function Nn(e,{latexEngine:t="pdflatex",svgDirectoryPath:n,markdownDirectoryPath:a,svgZoom:r,svgWidth:s,svgHeight:o}){return new Promise((l,d)=>{let c=(0,vn.spawn)(t,[`"${e}"`],{cwd:pe.dirname(e),shell:!0}),p=[];c.stdout.on("data",b=>{p.push(b)});let u=[];c.stderr.on("data",b=>{u.push(b)}),c.on("error",b=>{u.push(Buffer.from(b.toString(),"utf-8"))}),c.on("close",()=>{if(u.length)return Ge(e),d(Buffer.concat(u).toString());{let b=Buffer.concat(p).toString();if(b.indexOf("LaTeX Error")>=0)return Ge(e),d(b);let S=e.replace(/\.(la)?tex$/,".pdf");$e(S,{svgDirectoryPath:n,markdownDirectoryPath:a,svgZoom:r,svgWidth:s,svgHeight:o}).then(g=>(Ge(e),l(g))).catch(g=>(Ge(e),d(g)))}}),c.stdin.end()})}async function It(e,t,n){let a=n.latex_engine||"pdflatex",r=n.latex_svg_dir,s=n.latex_zoom,o=n.latex_width,l=n.latex_height,d=Rt.resolve(t,Math.random().toString(36).substr(2,9)+"_code_chunk.tex");await _t.writeFile(d,e);try{let c=await Nn(d,{latexEngine:a,markdownDirectoryPath:t,svgDirectoryPath:r,svgZoom:s,svgWidth:o,svgHeight:l});return await(0,He.unlink)(d),c}catch(c){throw await(0,He.unlink)(d),c}}async function vr(e,t){let n=new je.Script(`((${e})())`),a=je.createContext(t.context||{});return n.runInContext(a)}async function On(e,t,n,a,r="pdflatex"){let s=a.args||[];typeof s=="string"&&(s=[s]);let o=Cr(n),l=Rt.resolve(t,Math.random().toString(36).substr(2,9)+"_code_chunk"+o);if(e=e.replace(/\u00A0/g," "),n.match(/(la)?tex/)||n==="pdflatex"){let c={...a,latex_engine:a.latex_engine||r};return It(e,t,c)}if(n==="node.vm")return vr(e,a);n.match(/python/)&&(a.matplotlib||a.mpl)&&(e=`
|
|
181
181
|
# -*- coding: utf-8 -*-
|
|
@@ -325,7 +325,7 @@ ${f.plainResult}\`\`\`
|
|
|
325
325
|
---`))>0){let a=e.slice(3,t);try{n=st.parse(a)}catch{n={}}e=e.slice(t+4).replace(/^[ \t]*\n/,"")}return{data:n,content:e}}function va(e,t){t=t||{};let n=st.stringify(t).trim();return n==="{}"||!n?e:`---
|
|
326
326
|
${n}
|
|
327
327
|
---
|
|
328
|
-
${e}`}var Le=class{constructor(){this.map={}}addReference(t,n,a){if(t===n&&!a){t in this.map||(this.map[t]={[n]:[]});return}if(a)if(t in this.map){let r=this.map[t];n in r?r[n].push(a):r[n]=[a]}else this.map[t]={[n]:[a]}}deleteReferences(t,n){if(t===n){delete this.map[t];return}t in this.map&&n in this.map[t]&&(delete this.map[t][n],Object.keys(this.map[t]).length===0&&delete this.map[t])}hasRelation(t,n){return t in this.map&&n in this.map[t]||n in this.map&&t in this.map[n]||t===n}getReferences(t,n){return t in this.map&&n in this.map[t]?this.map[t][n]:[]}noteHasReferences(t){return t in this.map}getReferredByNotesCount(t){if(t in this.map){let n=Object.keys(this.map[t]).length;return t in this.map[t]&&(n-=1),n}else return 0}};var Na=O(require("minisearch"));function Yr(e,t="-"){return e.replace(/[.\s!@#$%^&*()\-=_+~`[\]{}\\<>?/|()【】::,。]+/g,t)}var _e=class{constructor(){this.miniSearch=new Na.default({fields:["title","aliases","filePath"],storeFields:["title","aliases","filePath"],extractField:(t,n)=>n==="aliases"?t.aliases.join("|"):t[n],tokenize:t=>Yr(t," ").match(/([^\x00-\x7F]|\w+)/g)??[]}),this._cache={}}add(t,n,a=[]){if(!(t in this._cache)){let r={id:t+"#"+n,filePath:t,title:n,aliases:a};this.miniSearch.add(r),this._cache[t]=r}}remove(t){if(t in this._cache){let n=this._cache[t];n&&this.miniSearch.remove(n),delete this._cache[t]}}search(t,n){return this.miniSearch.search(t,n)}addAlias(t,n){let a=this._cache[t];a&&(this.remove(t),this.add(t,a.title,a.aliases.concat(n)))}deleteAlias(t,n){let a=this._cache[t];a&&(this.remove(t),this.add(t,a.title,a.aliases.filter(r=>r!==n)))}};var Kr={html:!0,xhtmlOut:!1,breaks:!0,langPrefix:"language-",linkify:!0,typographer:!0},Lt=class e{constructor(){this.notes={};this.hasLoadedNotes=!1;this.referenceMap=new Le;this.refreshNotesIfNotLoadedMutex=new Ca.Mutex;this.search=new _e;this.markdownEngines={}}async init({notebookPath:t,config:n={},fs:a}){let r=lt.URI.parse(t);if(!V.isAbsolute(r.fsPath)||r.path.startsWith("/./"))throw new Error(`\`notebookPath\`: "${t}" must be an absolute path`);this.notebookPath=r,this.initFs(a),await this.initConfig(n),this.initMarkdownIt(),this.updateConfig({})}static async init(t){let n=new e;return await n.init(t),n}async initConfig(t){let n=await it(V.join(this.notebookPath.fsPath,"./.crossnote"),this.fs);this.config={...he(),...t
|
|
328
|
+
${e}`}var Le=class{constructor(){this.map={}}addReference(t,n,a){if(t===n&&!a){t in this.map||(this.map[t]={[n]:[]});return}if(a)if(t in this.map){let r=this.map[t];n in r?r[n].push(a):r[n]=[a]}else this.map[t]={[n]:[a]}}deleteReferences(t,n){if(t===n){delete this.map[t];return}t in this.map&&n in this.map[t]&&(delete this.map[t][n],Object.keys(this.map[t]).length===0&&delete this.map[t])}hasRelation(t,n){return t in this.map&&n in this.map[t]||n in this.map&&t in this.map[n]||t===n}getReferences(t,n){return t in this.map&&n in this.map[t]?this.map[t][n]:[]}noteHasReferences(t){return t in this.map}getReferredByNotesCount(t){if(t in this.map){let n=Object.keys(this.map[t]).length;return t in this.map[t]&&(n-=1),n}else return 0}};var Na=O(require("minisearch"));function Yr(e,t="-"){return e.replace(/[.\s!@#$%^&*()\-=_+~`[\]{}\\<>?/|()【】::,。]+/g,t)}var _e=class{constructor(){this.miniSearch=new Na.default({fields:["title","aliases","filePath"],storeFields:["title","aliases","filePath"],extractField:(t,n)=>n==="aliases"?t.aliases.join("|"):t[n],tokenize:t=>Yr(t," ").match(/([^\x00-\x7F]|\w+)/g)??[]}),this._cache={}}add(t,n,a=[]){if(!(t in this._cache)){let r={id:t+"#"+n,filePath:t,title:n,aliases:a};this.miniSearch.add(r),this._cache[t]=r}}remove(t){if(t in this._cache){let n=this._cache[t];n&&this.miniSearch.remove(n),delete this._cache[t]}}search(t,n){return this.miniSearch.search(t,n)}addAlias(t,n){let a=this._cache[t];a&&(this.remove(t),this.add(t,a.title,a.aliases.concat(n)))}deleteAlias(t,n){let a=this._cache[t];a&&(this.remove(t),this.add(t,a.title,a.aliases.filter(r=>r!==n)))}};var Kr={html:!0,xhtmlOut:!1,breaks:!0,langPrefix:"language-",linkify:!0,typographer:!0},Lt=class e{constructor(){this.notes={};this.hasLoadedNotes=!1;this.referenceMap=new Le;this.refreshNotesIfNotLoadedMutex=new Ca.Mutex;this.search=new _e;this.markdownEngines={}}async init({notebookPath:t,config:n={},fs:a}){let r=lt.URI.parse(t);if(!V.isAbsolute(r.fsPath)||r.path.startsWith("/./"))throw new Error(`\`notebookPath\`: "${t}" must be an absolute path`);this.notebookPath=r,this.initFs(a),await this.initConfig(n),this.initMarkdownIt(),this.updateConfig({})}static async init(t){let n=new e;return await n.init(t),n}async initConfig(t){let n=await it(V.join(this.notebookPath.fsPath,"./.crossnote"),this.fs);this.config={...he(),...n,...t}}initMarkdownIt(){this.md=new Oa.default(Kr),this.md.use(Da.default),this.md.use(Ma.default),this.md.use(Fa.default),this.md.use(La.default),this.md.use(xa.default),this.md.use(Pa.default),ua(this.md),ma(this.md),ga(this.md,this),Ea(this.md,this),ya(this.md,this),wa(this.md,this),Aa(this.md,this),pa(this.md)}initFs(t){if(t)this.fs=t;else if(xt)this.fs=ot();else throw new Error("`fs` is required")}updateConfig(t){this.config={...this.config,...t},this.interpolateConfig(),this.md.set({typographer:!!this.config.enableTypographer,breaks:!!this.config.breakOnSingleNewLine,linkify:!!this.config.enableLinkify})}interpolateConfig(){var a,r,s,o;let t=/\${\s*(\w+?)\s*}/g,n={projectDir:this.notebookPath,workspaceFolder:this.notebookPath};this.config.imageFolderPath=(a=this.config.imageFolderPath)==null?void 0:a.replace(t,(l,d)=>n[d]||l),this.config.imageMagickPath=(r=this.config.imageMagickPath)==null?void 0:r.replace(t,(l,d)=>n[d]||l),this.config.chromePath=(s=this.config.chromePath)==null?void 0:s.replace(t,(l,d)=>n[d]||l),this.config.plantumlJarPath=(o=this.config.plantumlJarPath)==null?void 0:o.replace(t,(l,d)=>n[d]||l)}async getBacklinkedNotes(t){if(t=this.resolveNoteRelativePath(t),t in this.referenceMap.map){let n=this.referenceMap.map[t],a={};for(let r in n){if(r===t)continue;let s=await this.getNote(r);s&&(a[r]=s)}return a}else return{}}async getNoteBacklinks(t){let n=await this.getBacklinkedNotes(t),a=[],r=Object.keys(n);for(let s of r){let o=n[s],l=await this.getReferences(t,s);a.push({note:{notebookPath:o.notebookPath,filePath:o.filePath,title:o.title,config:o.config},references:l,referenceHtmls:l.map(d=>{let c=[d.parentToken??d.token];return this.md.renderer.render(c,this.md.options,{})})})}return a}async getReferences(t,n){return this.referenceMap.getReferences(this.resolveNoteRelativePath(t),this.resolveNoteRelativePath(n))}async processNoteMentionsAndMentionedBy(t){let n=await this.getNote(t);if(!n)return;let a=this.md.parse(n.markdown,{}),r=p=>(p.endsWith(".md")||(p=p+".md"),p.startsWith("/")?V.relative(this.notebookPath.fsPath,V.join(this.notebookPath.fsPath,"."+p)):V.relative(this.notebookPath.fsPath,V.join(V.dirname(V.join(this.notebookPath.fsPath,n.filePath)),p))),s=p=>lt.Utils.joinPath(this.notebookPath,p).toString(),o=(p,u,b,S)=>{var g;for(let m=0;m<p.length;m++){let f=p[m];if(f.type==="wikilink"){let h=f.content.split("|"),E,w;if(this.config.useGitHubStylePipedLink?(E=h[0].trim(),w=(h.length>1?h[1]:h[0]).trim()):(E=(h.length>1?h[1]:h[0]).trim(),w=h[0].trim()),w.match(/https?:\/\//))continue;w=r(w),this.config.useGitHubStylePipedLink?f.content=`${E} | ${s(w)}`:f.content=`${s(w)} | ${E}`,b.push({elementId:f.attrGet("id")||"",text:E,link:w,parentToken:u,token:f})}else if(f.type==="tag"){let h=f.content.trim(),E=f.content.trim();b.push({elementId:f.attrGet("id")||"",text:h,link:r(E),parentToken:u,token:f})}else if(f.type==="link_open"&&p[m+1]&&p[m+1].type==="text"){if((g=f.attrs)!=null&&g.length&&f.attrs[0][0]==="href"){let h=decodeURI(f.attrs[0][1]),E=p[m+1].content.trim();if(h.match(/https?:\/\//)||!E.length||!h.endsWith(".md"))continue;h=r(h),f.attrs[0][1]=s(h),b.push({elementId:f.attrGet("id")||"",text:E,link:h,parentToken:u,token:f})}}else f.children&&f.children.length&&o(f.children,f,b,S+1)}return b},l=o(a,null,[],0),d=new Set,c=n.mentions;for(let p in c)this.referenceMap.deleteReferences(p,n.filePath);for(let p=0;p<l.length;p++){let{link:u}=l[p];d[u]=!0,this.referenceMap.addReference(u,n.filePath,l[p])}this.referenceMap.addReference(n.filePath,n.filePath,void 0),n.mentions=d}async getNote(t,n=!1){if(t=this.resolveNoteRelativePath(t),!n&&t in this.notes)return this.notes[t];let a=this.resolveNoteAbsolutePath(t),r;try{r=await this.fs.stat(a)}catch{return null}if(r.isFile()&&this.config.markdownFileExtensions.includes(V.extname(t))){let s=await this.fs.readFile(a),o={createdAt:new Date(r.ctimeMs),modifiedAt:new Date(r.mtimeMs),aliases:[]};try{let p=Ia(s),u=Object.assign({},p.data);if(p.data.created&&(o.createdAt=new Date(p.data.created),delete u.created),p.data.modified&&(o.modifiedAt=new Date(p.data.modified),delete u.modified),p.data.pinned&&(o.pinned=p.data.pinned,delete u.pinned),p.data.favorited&&(o.favorited=p.data.favorited,delete u.favorited),p.data.icon&&(o.icon=p.data.icon,delete u.icon),p.data.aliases){let b=p.data.aliases||[];typeof b=="string"?o.aliases=b.split(",").map(S=>S.trim()):o.aliases=b,delete u.aliases}s=va(p.content,u)}catch{s=`Please fix front-matter. (\u{1F448} Don't forget to delete this line)
|
|
329
329
|
|
|
330
330
|
`+s}let l=new Set,d=this.notes[t];d&&(l=d.mentions);let c={notebookPath:this.notebookPath,filePath:V.relative(this.notebookPath.fsPath,a),title:V.basename(a).replace(/\.md$/,""),markdown:s,config:o,mentions:l};return n&&(this.notes[c.filePath]=c,this.search.add(c.filePath,c.title,c.config.aliases),await this.processNoteMentionsAndMentionedBy(c.filePath)),c}else return null}async refreshNotesIfNotLoaded({dir:t="./",includeSubdirectories:n=!1}){return await this.refreshNotesIfNotLoadedMutex.runExclusive(async()=>{this.hasLoadedNotes||(await this.refreshNotes({dir:t,includeSubdirectories:n,refreshRelations:!0}),this.hasLoadedNotes=!0)}),this.notes}async refreshNotes({dir:t="./",includeSubdirectories:n=!1,refreshRelations:a=!0}){a&&(this.notes={},this.referenceMap=new Le,this.search=new _e);let r=[];try{r=await this.fs.readdir(V.resolve(this.notebookPath.fsPath,t))}catch(o){console.error(o),r=[]}let s=[];for(let o=0;o<r.length;o++){let l=r[o];if(l.match(/^(node_modules|\.git)$/))continue;let d=V.resolve(this.notebookPath.fsPath,t,l),c=await this.getNote(V.relative(this.notebookPath.fsPath,d));c&&(this.notes[c.filePath]=c,this.search.add(c.filePath,c.title,c.config.aliases));let p;try{p=await this.fs.stat(d)}catch(u){console.error(u)}p&&p.isDirectory()&&n&&s.push(this.refreshNotes({dir:V.relative(this.notebookPath.fsPath,d),includeSubdirectories:n,refreshRelations:!1}))}if(await Promise.all(s),a)for(let o in this.notes)await this.processNoteMentionsAndMentionedBy(o);return this.notes}async removeNoteRelations(t){let n=await this.getNote(t);if(!n)return;let a=n.mentions;for(let r in a)this.referenceMap.deleteReferences(r,n.filePath);delete this.notes[n.filePath]}async deleteNote(t,n=!1){let a=this.resolveNoteAbsolutePath(t);(n||await this.fs.exists(a))&&(await this.fs.unlink(a),await this.removeNoteRelations(t),this.search.remove(t))}resolveNoteAbsolutePath(t){return V.isAbsolute(t)?t:V.resolve(this.notebookPath.fsPath,t)}resolveNoteRelativePath(t){return V.isAbsolute(t)?V.relative(this.notebookPath.fsPath,t):t}getNoteMarkdownEngine(t){return t=this.resolveNoteRelativePath(t),t in this.markdownEngines||(this.markdownEngines[t]=new De({notebook:this,filePath:this.resolveNoteAbsolutePath(t)})),this.markdownEngines[t]}getNoteMarkdownEngines(){return this.markdownEngines}clearAllNoteMarkdownEngineCaches(){for(let t in this.markdownEngines)this.markdownEngines[t].clearCaches()}};var za=require("html-escaper");var Zr={sh:"bash",bash:"bash",c:"c","c++":"cpp",cpp:"cpp",coffee:"coffeescript",coffeescript:"coffeescript","coffee-script":"coffeescript",cs:"csharp",csharp:"csharp",css:"css",scss:"scss",sass:"sass",elm:"elm",elmlang:"elm","elm-lang":"elm",erlang:"erlang",go:"go",html:"html",java:"java",js:"javascript",javascript:"javascript",json:"json",less:"less",objc:"objectivec",objectivec:"objectivec","objective-c":"objectivec",php:"php",py:"python",python:"python",rb:"ruby",ruby:"ruby",text:"text",tex:"latex",xml:"xml",yaml:"yaml",yml:"yaml",yaml_table:"yaml",mermaid:"mermaid",plantuml:"plantuml",puml:"plantuml",wavedrom:"wavedrom",graphviz:"dot",viz:"dot",dot:"dot",erd:"erd",node:"javascript",md:"gfm",diff:"diff"};function Ua(e){return e=e.toLowerCase(),Zr[e]||e}function Ba(e){e.languages.iele={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],variable:{pattern:/(@|%)([A-Za-z0-9\\_\\.\\-\\$])[a-zA-Z\\.\\_\\$][0-9a-zA-Z\\.\\_\\-\\$]*/,greedy:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/\b(?:load|store|sload|sstore|iszero|not|add|mul|sub|div|exp|mod|addmod|mulmod|expmod|byte|sext|twos|and|or|xor|shift|lt|le|gt|ge|eq|ne|cmp|sha3|br|call|staticcall|at|send|gaslimit|ret|void|revert|log|create|copycreate|selfdestruct|contract|external|define|public|log2|bswap|calladdress)\b/,label:/(?!\d)(?:[-$.\w]|\\[a-f\d]{2})+:/i,boolean:/\b(?:true|false)\b/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}}function $a(e){e.languages.k={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":/\b(?:strict|avoid|prefer|bracket|non-assoc|seqstrict|left|right|macro-rec|macro|token|notInRules|autoReject|structural|latex|binder|klabel|symbol|format)\b/,keyword:{pattern:/\b(?:syntax\s+(?:priority|priorities|left|right|non-assoc|lexical)|syntax|rule|Id|Int|Bool|String|Token|Lexer|Float|configuration|import|imports|require|requires|Kresult|context\s+alias|context|module|endmodule|claim)\b/,greedy:!0},boolean:/\b(?:true|false)\b/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:{pattern:/[<>]=|=>|~>|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/},punctuation:/[{}[\];(),.:]/,tag:{pattern:/<\/?(?!\d)[^\s>/=$<%]+(?:\s(?:\s*[^\s>/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>/]+/,inside:{namespace:/^[^\s>/:]+:/}}}}}}var Re=O(Ga());Re.default.hooks.add("wrap",e=>{e.type==="keyword"&&e.classes.push(`keyword-${e.content}`)});$a(Re.default);Ba(Re.default);async function Dt(e){e("pre>code").each((t,n)=>{let a=e(n),r=a.text(),s=a.parent();a.replaceWith((0,za.escape)(r)),s.addClass("language-text")}),e('[data-role="codeBlock"]').each((t,n)=>{let a=e(n);if(a.data("hiddenByEnhancer")||a.data("normalizedInfo").attributes.hide===!0){a.remove();return}let s=a.text(),o=a.data("normalizedInfo"),l=Jr(Ua(o.language),s);try{let d=Re.default.highlight(s,Re.default.languages[l],l);a.empty().append(e("<code></code>").html(d))}catch{a.empty().append(e("<code></code>").text(s))}a.addClass(`language-${l}`),o.attributes.class&&(a.addClass(o.attributes.class),Qr(a,s)),o.attributes.highlight&&ei(a,s,o.attributes.highlight),a.removeAttr("data-parsed-info"),a.removeAttr("data-normalized-info")})}function Jr(e,t){return e==="vega"||e==="vega-lite"?(t.match(/^\s*(.)/)??[])[1]==="{"?"json":"yaml":e}function Qr(e,t){if(e.hasClass("numberLines")&&(e.addClass("line-numbers"),e.removeClass("numberLines")),e.hasClass("line-numbers")){if(!t.trim().length)return;let n=t.match(/\n(?!$)/g),a=n?n.length+1:1,r="";for(let s=0;s<a;s++)r+="<span></span>";e.append(`<span aria-hidden="true" class="line-numbers-rows">${r}</span>`)}}function ei(e,t,n){if(!t.trim().length)return;typeof n=="number"?n=[n.toString()]:typeof n=="string"&&(n=n.split(","));let a=t.match(/\n(?!$)/g),r=a?a.length+1:1,s=[];n.forEach(o=>{if(o=o.toString(),o.indexOf("-")>0){let[l,d]=o.split("-").map(u=>parseInt(u,10));if(isNaN(l)||isNaN(d)||l<0||d<0||(l>d&&([l,d]=[d,l]),d>r))return;let c="";for(let u=l;u<=d;u++)c+=`
|
|
331
331
|
`;let p="";for(let u=0;u<l-1;u++)p+=`
|
|
@@ -435,7 +435,7 @@ window["initRevealPresentation"] = async function() {
|
|
|
435
435
|
window.MathJax = (${JSON.stringify(L)});
|
|
436
436
|
</script>
|
|
437
437
|
<script type="text/javascript" async src="${this.notebook.config.mathjaxV3ScriptSrc}"></script>
|
|
438
|
-
`}else this.notebook.config.mathRenderingOption==="KaTeX"?a.offline?o=`<link rel="stylesheet" href="file:///${v.resolve($(),"./dependencies/katex/katex.min.css")}">`:o=`<link rel="stylesheet" href="https://${this.notebook.config.jsdelivrCdnHost}/npm/katex@0.16.
|
|
438
|
+
`}else this.notebook.config.mathRenderingOption==="KaTeX"?a.offline?o=`<link rel="stylesheet" href="file:///${v.resolve($(),"./dependencies/katex/katex.min.css")}">`:o=`<link rel="stylesheet" href="https://${this.notebook.config.jsdelivrCdnHost}/npm/katex@0.16.9/dist/katex.min.css">`:o="";let l="";t.indexOf('<i class="fa ')>=0&&(a.offline?l=`<link rel="stylesheet" href="file:///${v.resolve($(),"./dependencies/font-awesome/css/font-awesome.min.css")}">`:l='<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">');let d="",c="";t.indexOf(' class="mermaid')>=0&&(a.offline?d=`<script type="text/javascript" src="file:///${v.resolve($(),"./dependencies/mermaid/mermaid.min.js")}" charset="UTF-8"></script>`:d=`<script src="https://${this.notebook.config.jsdelivrCdnHost}/npm/mermaid@10.5.0/dist/mermaid.min.js"></script>`,c+=`<script type="module">
|
|
439
439
|
// TODO: If ZenUML gets integrated into mermaid in the future,
|
|
440
440
|
// we can remove the following lines.
|
|
441
441
|
${t.match(/zenuml/i)?`import zenuml from 'https://${this.notebook.config.jsdelivrCdnHost}/npm/@mermaid-js/mermaid-zenuml@0.1.0/dist/mermaid-zenuml.esm.min.mjs';
|
|
@@ -547,7 +547,7 @@ sidebarTOCBtn.addEventListener('click', function(event) {
|
|
|
547
547
|
${S}
|
|
548
548
|
${N}
|
|
549
549
|
</html>
|
|
550
|
-
`,a.embedLocalImages||a.embedSVG){let L=ue.load(t);a.embedLocalImages&&await ct(L,this.notebook,this.resolveFilePath.bind(this)),a.embedSVG&&await Pt(L,this.notebook,this.resolveFilePath.bind(this)),t=L.html()}return t.trim()}async openInBrowser({runAllCodeChunks:t=!1}){let n=await this.fs.readFile(this.filePath),a,r;({html:a,yamlConfig:r}=await this.parseMD(n,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:t})),a=await this.generateHTMLTemplateForExport(a,r,{isForPrint:!1,isForPrince:!1,offline:!0,embedLocalImages:!1});let s=await ie({prefix:"crossnote",suffix:".html"});X.writeFileSync(s.fd,a),be(s.path)}async htmlExport({offline:t=!1,runAllCodeChunks:n=!1}){let a=await this.fs.readFile(this.filePath),r,s;({html:r,yamlConfig:s}=await this.parseMD(a,{useRelativeFilePath:!0,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:n}));let o=s.html||{};"offline"in o&&(t=o.offline);let l=o.embed_local_images,d=!0;"embed_svg"in o&&(d=o.embed_svg);let c=this.filePath,p=v.extname(c);if(c=c.replace(new RegExp(p+"$"),".html"),r=await this.generateHTMLTemplateForExport(r,s,{isForPrint:!1,isForPrince:!1,embedLocalImages:l,offline:t,embedSVG:d}),!t&&r.indexOf('[{"src":"revealjs_deps/notes.js","async":true}]')>=0){let u=v.resolve(v.dirname(c),"revealjs_deps");X.existsSync(u)||X.mkdirSync(u),X.createReadStream(v.resolve($(),"./dependencies/reveal/plugin/notes/notes.js")).pipe(X.createWriteStream(v.resolve(u,"notes.js"))),X.createReadStream(v.resolve($(),"./dependencies/reveal/plugin/notes/notes.html")).pipe(X.createWriteStream(v.resolve(u,"notes.html")))}return await this.fs.writeFile(c,r),c}async chromeExport({fileType:t="pdf",runAllCodeChunks:n=!1,openFileAfterGeneration:a=!1}){let r=await this.fs.readFile(this.filePath),s,o;({html:s,yamlConfig:o}=await this.parseMD(r,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:n}));let l=this.filePath,d=v.extname(l);l=l.replace(new RegExp(d+"$"),"."+t),s=await this.generateHTMLTemplateForExport(s,o,{isForPrint:!0,isForPrince:!1,embedLocalImages:!1,offline:!0});let c="";try{if(c=this.notebook.config.chromePath,!c){let h=(await import("chrome-paths")).default;c=h.chrome||h.chromeCanary||h.chromium}}catch{c=""}if(!c)throw new Error("Chrome executable path is not set.");let u=await(await import("puppeteer-core/lib/cjs/puppeteer/puppeteer-core.js")).launch({args:this.notebook.config.puppeteerArgs||[],executablePath:c,headless:!0}),b=await ie({prefix:"crossnote",suffix:".html"});X.writeFileSync(b.fd,s);let S=await u.newPage(),g="file:///"+b.path+(o.isPresentationMode?"?print-pdf":"");await S.goto(g);let m={path:l,...o.isPresentationMode?{}:{margin:{top:"1cm",bottom:"1cm",left:"1cm",right:"1cm"}},printBackground:this.notebook.config.printBackground,...o.chrome||o.puppeteer||{}},f=0;return o.chrome&&o.chrome.timeout?f=o.chrome.timeout:o.puppeteer&&o.puppeteer.timeout&&(f=o.puppeteer.timeout),f&&typeof f=="number"?await S.waitForTimeout(f):this.notebook.config.puppeteerWaitForTimeout&&this.notebook.config.puppeteerWaitForTimeout>0&&await S.waitForTimeout(this.notebook.config.puppeteerWaitForTimeout),t==="pdf"?await S.pdf(m):(m.fullPage=!0,await S.screenshot(m)),u.close(),a&&be(l),l}async princeExport({runAllCodeChunks:t=!1,openFileAfterGeneration:n=!1}){let a=await this.fs.readFile(this.filePath),r,s;({html:r,yamlConfig:s}=await this.parseMD(a,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:t}));let o=this.filePath,l=v.extname(o);o=o.replace(new RegExp(l+"$"),".pdf"),r=await this.generateHTMLTemplateForExport(r,s,{isForPrint:!0,isForPrince:!0,embedLocalImages:!1,offline:!0});let d=await ie({prefix:"crossnote",suffix:".html"});return X.writeFileSync(d.fd,r),s.isPresentationMode?"file:///"+d.path+"?print-pdf":(await ca(d.path,o),n&&be(o),o)}async eBookDownloadImages(t,n){let a=[];(v.extname(n)===".epub"||v.extname("dest")===".mobi")&&t("img").each((s,o)=>{let l=t(o);(l.attr("src")||"").match(/^https?:\/\//)&&a.push(l)});let r=a.map(s=>new Promise(o=>{let l=s.attr("src"),d=Math.random().toString(36).substr(2,9)+"_"+v.basename(l);d=v.resolve(this.fileDirectoryPath,d),(0,er.default)(l).pipe(X.createWriteStream(d)).on("finish",()=>(s.attr("src","file:///"+d),o(d)))}));return Promise.all(r)}async eBookExport({fileType:t="epub",runAllCodeChunks:n=!1}){let a=await this.fs.readFile(this.filePath),r=t==="pdf",s,o;({html:s,yamlConfig:o}=await this.parseMD(a,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:n,emojiToSvg:r}));let l=this.filePath,d=v.extname(l);l=l.replace(new RegExp(d+"$"),"."+t.toLowerCase());let c=o.ebook||{};if(!c)throw new Error("eBook config not found. Please insert ebook front-matter to your markdown file.");if(c.cover){let y=c.cover;c.cover=oe(this.resolveFilePath(y,!1))}let p=ue.load(`<div>${s}</div>`),u=[],b=new se,S=p("div > ul").last();if(S.length){if(c.include_toc===!1){let y=S.prev();y.length&&y[0].name.match(/^h\d$/i)&&y.remove()}p("h1, h2, h3, h4, h5, h6").each((y,_)=>{let L=p(_),T=parseInt(L[0].name.slice(1),10)-1;L.attr("ebook-toc-level-"+(T+1),""),L.attr("heading",L.html())}),g(S,0),c.include_toc===!1&&S.remove()}function g(y,_){y.children("li").each((L,T)=>{let C=p(T),D=C.children("a").first();if(!D.length){C.children().length>=1&&g(C.children().last(),_+1);return}let M=decodeURIComponent(D.attr("href")),U=D.html()??"",Y=b.generateId("ebook-heading-"+U);u.push({level:_,filePath:M,heading:U,id:Y}),D.attr("href","#"+Y),C.children().length>1&&g(C.children().last(),_+1)})}let m=u.map(({heading:y,id:_,level:L,filePath:T},C)=>new Promise((D,M)=>{if(T=oe(T),T.match(/^https?:\/\//))return D({heading:y,id:_,level:L,filePath:T,html:"",offset:C});X.readFile(T,{encoding:"utf-8"},(U,Y)=>{if(U)return M(U.toString());let q=v.dirname(this.filePath);Y=Y.replace(/(!\[[^\]]*\]\()(\.[^)\s]*)/g,(ne,ae,ce)=>{let W=v.resolve(v.dirname(T),ce),x=v.relative(q,W);return ae+x}),this.parseMD(Y,{useRelativeFilePath:!1,isForPreview:!1,hideFrontMatter:!0,emojiToSvg:r,fileDirectoryPath:v.dirname(T)}).then(({html:ne})=>D({heading:y,id:_,level:L,filePath:T,html:ne,offset:C}))})})),f=p.html().replace(/^<div>(.+)<\/div>$/,"$1"),h=await Promise.all(m);h=h.sort((y,_)=>y.offset-_.offset),h.forEach(({heading:y,id:_,level:L,html:T})=>{let C=ue.load(`<div>${T}</div>`);C("a").each((D,M)=>{let U=C(M),Y=U.attr("href");Y.startsWith("file://")&&h.forEach(q=>{q.filePath===oe(Y)&&U.attr("href","#"+q.id)})}),f+=`<div id="${_}" ebook-toc-level-${L+1} heading="${y}">${C.html()}</div>`}),p=ue.load(f);let E=await this.eBookDownloadImages(p,l);if(v.extname(l)===".html"){if(c.cover){let y=c.cover[0]==="/"?"file:///"+c.cover:c.cover;p(":root").children().first().prepend(`<img style="display:block; margin-bottom: 24px;" src="${y}">`)}await ct(p,this.notebook,this.resolveFilePath.bind(this))}f=p.html();let w=c.title||"no title",A="";f.indexOf('class="katex"')>0&&(v.extname(l)===".html"&&c.html&&c.html.cdn?A=`<link rel="stylesheet" href="https://${this.notebook.config.jsdelivrCdnHost}/npm/katex@0.16.
|
|
550
|
+
`,a.embedLocalImages||a.embedSVG){let L=ue.load(t);a.embedLocalImages&&await ct(L,this.notebook,this.resolveFilePath.bind(this)),a.embedSVG&&await Pt(L,this.notebook,this.resolveFilePath.bind(this)),t=L.html()}return t.trim()}async openInBrowser({runAllCodeChunks:t=!1}){let n=await this.fs.readFile(this.filePath),a,r;({html:a,yamlConfig:r}=await this.parseMD(n,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:t})),a=await this.generateHTMLTemplateForExport(a,r,{isForPrint:!1,isForPrince:!1,offline:!0,embedLocalImages:!1});let s=await ie({prefix:"crossnote",suffix:".html"});X.writeFileSync(s.fd,a),be(s.path)}async htmlExport({offline:t=!1,runAllCodeChunks:n=!1}){let a=await this.fs.readFile(this.filePath),r,s;({html:r,yamlConfig:s}=await this.parseMD(a,{useRelativeFilePath:!0,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:n}));let o=s.html||{};"offline"in o&&(t=o.offline);let l=o.embed_local_images,d=!0;"embed_svg"in o&&(d=o.embed_svg);let c=this.filePath,p=v.extname(c);if(c=c.replace(new RegExp(p+"$"),".html"),r=await this.generateHTMLTemplateForExport(r,s,{isForPrint:!1,isForPrince:!1,embedLocalImages:l,offline:t,embedSVG:d}),!t&&r.indexOf('[{"src":"revealjs_deps/notes.js","async":true}]')>=0){let u=v.resolve(v.dirname(c),"revealjs_deps");X.existsSync(u)||X.mkdirSync(u),X.createReadStream(v.resolve($(),"./dependencies/reveal/plugin/notes/notes.js")).pipe(X.createWriteStream(v.resolve(u,"notes.js"))),X.createReadStream(v.resolve($(),"./dependencies/reveal/plugin/notes/notes.html")).pipe(X.createWriteStream(v.resolve(u,"notes.html")))}return await this.fs.writeFile(c,r),c}async chromeExport({fileType:t="pdf",runAllCodeChunks:n=!1,openFileAfterGeneration:a=!1}){let r=await this.fs.readFile(this.filePath),s,o;({html:s,yamlConfig:o}=await this.parseMD(r,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:n}));let l=this.filePath,d=v.extname(l);l=l.replace(new RegExp(d+"$"),"."+t),s=await this.generateHTMLTemplateForExport(s,o,{isForPrint:!0,isForPrince:!1,embedLocalImages:!1,offline:!0});let c="";try{if(c=this.notebook.config.chromePath,!c){let h=(await import("chrome-paths")).default;c=h.chrome||h.chromeCanary||h.chromium}}catch{c=""}if(!c)throw new Error("Chrome executable path is not set.");let u=await(await import("puppeteer-core/lib/cjs/puppeteer/puppeteer-core.js")).launch({args:this.notebook.config.puppeteerArgs||[],executablePath:c,headless:!0}),b=await ie({prefix:"crossnote",suffix:".html"});X.writeFileSync(b.fd,s);let S=await u.newPage(),g="file:///"+b.path+(o.isPresentationMode?"?print-pdf":"");await S.goto(g);let m={path:l,...o.isPresentationMode?{}:{margin:{top:"1cm",bottom:"1cm",left:"1cm",right:"1cm"}},printBackground:this.notebook.config.printBackground,...o.chrome||o.puppeteer||{}},f=0;return o.chrome&&o.chrome.timeout?f=o.chrome.timeout:o.puppeteer&&o.puppeteer.timeout&&(f=o.puppeteer.timeout),f&&typeof f=="number"?await S.waitForTimeout(f):this.notebook.config.puppeteerWaitForTimeout&&this.notebook.config.puppeteerWaitForTimeout>0&&await S.waitForTimeout(this.notebook.config.puppeteerWaitForTimeout),t==="pdf"?await S.pdf(m):(m.fullPage=!0,await S.screenshot(m)),u.close(),a&&be(l),l}async princeExport({runAllCodeChunks:t=!1,openFileAfterGeneration:n=!1}){let a=await this.fs.readFile(this.filePath),r,s;({html:r,yamlConfig:s}=await this.parseMD(a,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:t}));let o=this.filePath,l=v.extname(o);o=o.replace(new RegExp(l+"$"),".pdf"),r=await this.generateHTMLTemplateForExport(r,s,{isForPrint:!0,isForPrince:!0,embedLocalImages:!1,offline:!0});let d=await ie({prefix:"crossnote",suffix:".html"});return X.writeFileSync(d.fd,r),s.isPresentationMode?"file:///"+d.path+"?print-pdf":(await ca(d.path,o),n&&be(o),o)}async eBookDownloadImages(t,n){let a=[];(v.extname(n)===".epub"||v.extname("dest")===".mobi")&&t("img").each((s,o)=>{let l=t(o);(l.attr("src")||"").match(/^https?:\/\//)&&a.push(l)});let r=a.map(s=>new Promise(o=>{let l=s.attr("src"),d=Math.random().toString(36).substr(2,9)+"_"+v.basename(l);d=v.resolve(this.fileDirectoryPath,d),(0,er.default)(l).pipe(X.createWriteStream(d)).on("finish",()=>(s.attr("src","file:///"+d),o(d)))}));return Promise.all(r)}async eBookExport({fileType:t="epub",runAllCodeChunks:n=!1}){let a=await this.fs.readFile(this.filePath),r=t==="pdf",s,o;({html:s,yamlConfig:o}=await this.parseMD(a,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:n,emojiToSvg:r}));let l=this.filePath,d=v.extname(l);l=l.replace(new RegExp(d+"$"),"."+t.toLowerCase());let c=o.ebook||{};if(!c)throw new Error("eBook config not found. Please insert ebook front-matter to your markdown file.");if(c.cover){let y=c.cover;c.cover=oe(this.resolveFilePath(y,!1))}let p=ue.load(`<div>${s}</div>`),u=[],b=new se,S=p("div > ul").last();if(S.length){if(c.include_toc===!1){let y=S.prev();y.length&&y[0].name.match(/^h\d$/i)&&y.remove()}p("h1, h2, h3, h4, h5, h6").each((y,_)=>{let L=p(_),T=parseInt(L[0].name.slice(1),10)-1;L.attr("ebook-toc-level-"+(T+1),""),L.attr("heading",L.html())}),g(S,0),c.include_toc===!1&&S.remove()}function g(y,_){y.children("li").each((L,T)=>{let C=p(T),D=C.children("a").first();if(!D.length){C.children().length>=1&&g(C.children().last(),_+1);return}let M=decodeURIComponent(D.attr("href")),U=D.html()??"",Y=b.generateId("ebook-heading-"+U);u.push({level:_,filePath:M,heading:U,id:Y}),D.attr("href","#"+Y),C.children().length>1&&g(C.children().last(),_+1)})}let m=u.map(({heading:y,id:_,level:L,filePath:T},C)=>new Promise((D,M)=>{if(T=oe(T),T.match(/^https?:\/\//))return D({heading:y,id:_,level:L,filePath:T,html:"",offset:C});X.readFile(T,{encoding:"utf-8"},(U,Y)=>{if(U)return M(U.toString());let q=v.dirname(this.filePath);Y=Y.replace(/(!\[[^\]]*\]\()(\.[^)\s]*)/g,(ne,ae,ce)=>{let W=v.resolve(v.dirname(T),ce),x=v.relative(q,W);return ae+x}),this.parseMD(Y,{useRelativeFilePath:!1,isForPreview:!1,hideFrontMatter:!0,emojiToSvg:r,fileDirectoryPath:v.dirname(T)}).then(({html:ne})=>D({heading:y,id:_,level:L,filePath:T,html:ne,offset:C}))})})),f=p.html().replace(/^<div>(.+)<\/div>$/,"$1"),h=await Promise.all(m);h=h.sort((y,_)=>y.offset-_.offset),h.forEach(({heading:y,id:_,level:L,html:T})=>{let C=ue.load(`<div>${T}</div>`);C("a").each((D,M)=>{let U=C(M),Y=U.attr("href");Y.startsWith("file://")&&h.forEach(q=>{q.filePath===oe(Y)&&U.attr("href","#"+q.id)})}),f+=`<div id="${_}" ebook-toc-level-${L+1} heading="${y}">${C.html()}</div>`}),p=ue.load(f);let E=await this.eBookDownloadImages(p,l);if(v.extname(l)===".html"){if(c.cover){let y=c.cover[0]==="/"?"file:///"+c.cover:c.cover;p(":root").children().first().prepend(`<img style="display:block; margin-bottom: 24px;" src="${y}">`)}await ct(p,this.notebook,this.resolveFilePath.bind(this))}f=p.html();let w=c.title||"no title",A="";f.indexOf('class="katex"')>0&&(v.extname(l)===".html"&&c.html&&c.html.cdn?A=`<link rel="stylesheet" href="https://${this.notebook.config.jsdelivrCdnHost}/npm/katex@0.16.9/dist/katex.min.css">`:A=`<link rel="stylesheet" href="file:///${v.resolve($(),"./dependencies/katex/katex.min.css")}">`);let R="";try{R=(await Promise.all([await this.fs.readFile(v.resolve($(),"./styles/style-template.css")),await this.fs.readFile(v.resolve($(),`./styles/prism_theme/${Se.AutoPrismThemeMap[c.theme||this.notebook.config.previewTheme]}`)),await this.fs.readFile(v.resolve($(),"./styles/twemoji.css")),await this.fs.readFile(v.resolve($(),`./styles/preview_theme/${c.theme||this.notebook.config.previewTheme}`)),f.indexOf("admonition")>0?await this.fs.readFile(v.resolve($(),"./styles/markdown-it-admonition.css")):""])).join("")}catch{R=""}let N="";try{N=this.notebook.config.globalCss}catch{}if(s=`
|
|
551
551
|
<!DOCTYPE html>
|
|
552
552
|
<html>
|
|
553
553
|
<head>
|
|
@@ -5,7 +5,7 @@ I managed some of the libraries by myself instead of through npm to reduce the o
|
|
|
5
5
|
```json
|
|
6
6
|
{
|
|
7
7
|
"font-awesome": "4.7",
|
|
8
|
-
"katex": "v0.16.
|
|
8
|
+
"katex": "v0.16.9", // Only keep the css and fonts files.
|
|
9
9
|
"mermaid": "10.5.0", // https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js
|
|
10
10
|
"reveal": "4.6.0",
|
|
11
11
|
"vega-embed": "6.22.2", // https://cdn.jsdelivr.net/npm/vega-embed@6.22.2/build/vega-embed.min.js
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.8"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}
|
|
1
|
+
@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.9"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}
|
package/out/esm/index.mjs
CHANGED
|
@@ -175,7 +175,7 @@ ${D}
|
|
|
175
175
|
\`\`\` `}}k=L+1,y=y+1,A=A+$+`
|
|
176
176
|
`;continue}catch(D){$=`<pre class="language-text"><code>${an(D.toString())}</code></pre> `,k=L+1,y=y+1,A=A+$+`
|
|
177
177
|
`;continue}}else{if(s){let O="",G=T,I=/!?\[([^\]]*)\]\(([^)]*)\)/;for(;;){let z=G.match(I);if(!z||typeof z.index!="number"){O=O+G;break}else if(O=O+G.substring(0,z.index+z[0].length),G=G.substring(z.index+z[0].length),G[0]==="{"){let H=G.indexOf("}");if(H>0){let M=G.substring(1,H);O+=`{.source-line data-source-line="${y}" ${M}}`,G=G.substring(H+1)}}else O+=`{.source-line data-source-line="${y}"}`}T=O}k=L+1,y=y+1,A=A+T+`
|
|
178
|
-
`;continue}}return w&&(A+=`${ye(y,{extraClass:"empty-line final-line",prefix:""})}`),{outputString:A,slideConfigs:m,tocBracketEnabled:h,JSAndCssFiles:u,headings:b,frontMatterString:E}}let N=0;if(e.startsWith("---")&&(N=e.indexOf(`
|
|
178
|
+
`;continue}}return w&&(A+=`${ye(y,{extraClass:"empty-line final-line end-of-document",prefix:""})}`),{outputString:A,slideConfigs:m,tocBracketEnabled:h,JSAndCssFiles:u,headings:b,frontMatterString:E}}let N=0;if(e.startsWith("---")&&(N=e.indexOf(`
|
|
179
179
|
---`))>0){E=e.slice(0,N+4);let k=E.length,y=(E.match(/\n/g)??[]).length,A=e.indexOf(`
|
|
180
180
|
`,k);return A>0&&(k=A+1,y++),await R(k,y)}else return await R(0,0)}import*as Rn from"cheerio";import*as ue from"path";import{spawn as $a}from"child_process";import*as ut from"fs/promises";import{unlink as pt}from"fs/promises";import*as gt from"path";import*as Ue from"vm";import{spawn as Ua}from"child_process";import*as Fe from"fs";import*as de from"path";function Me(e){let t=de.dirname(e),n=de.extname(e),a=de.basename(e).replace(new RegExp(n+"$"),"");Fe.readdir(t,(r,s)=>{r||s.forEach(o=>{o.startsWith(a)&&!o.match(/\.(la)?tex/)&&Fe.unlink(de.resolve(t,o),()=>{})})})}function cn(e,{latexEngine:t="pdflatex",svgDirectoryPath:n,markdownDirectoryPath:a,svgZoom:r,svgWidth:s,svgHeight:o}){return new Promise((l,d)=>{let p=Ua(t,[`"${e}"`],{cwd:de.dirname(e),shell:!0}),c=[];p.stdout.on("data",f=>{c.push(f)});let g=[];p.stderr.on("data",f=>{g.push(f)}),p.on("error",f=>{g.push(Buffer.from(f.toString(),"utf-8"))}),p.on("close",()=>{if(g.length)return Me(e),d(Buffer.concat(g).toString());{let f=Buffer.concat(c).toString();if(f.indexOf("LaTeX Error")>=0)return Me(e),d(f);let S=e.replace(/\.(la)?tex$/,".pdf");Pe(S,{svgDirectoryPath:n,markdownDirectoryPath:a,svgZoom:r,svgWidth:s,svgHeight:o}).then(m=>(Me(e),l(m))).catch(m=>(Me(e),d(m)))}}),p.stdin.end()})}async function mt(e,t,n){let a=n.latex_engine||"pdflatex",r=n.latex_svg_dir,s=n.latex_zoom,o=n.latex_width,l=n.latex_height,d=gt.resolve(t,Math.random().toString(36).substr(2,9)+"_code_chunk.tex");await ut.writeFile(d,e);try{let p=await cn(d,{latexEngine:a,markdownDirectoryPath:t,svgDirectoryPath:r,svgZoom:s,svgWidth:o,svgHeight:l});return await pt(d),p}catch(p){throw await pt(d),p}}async function Ga(e,t){let n=new Ue.Script(`((${e})())`),a=Ue.createContext(t.context||{});return n.runInContext(a)}async function pn(e,t,n,a,r="pdflatex"){let s=a.args||[];typeof s=="string"&&(s=[s]);let o=Ha(n),l=gt.resolve(t,Math.random().toString(36).substr(2,9)+"_code_chunk"+o);if(e=e.replace(/\u00A0/g," "),n.match(/(la)?tex/)||n==="pdflatex"){let p={...a,latex_engine:a.latex_engine||r};return mt(e,t,p)}if(n==="node.vm")return Ga(e,a);n.match(/python/)&&(a.matplotlib||a.mpl)&&(e=`
|
|
181
181
|
# -*- coding: utf-8 -*-
|
|
@@ -325,7 +325,7 @@ ${b.plainResult}\`\`\`
|
|
|
325
325
|
---`))>0){let a=e.slice(3,t);try{n=Ze.parse(a)}catch{n={}}e=e.slice(t+4).replace(/^[ \t]*\n/,"")}return{data:n,content:e}}function qn(e,t){t=t||{};let n=Ze.stringify(t).trim();return n==="{}"||!n?e:`---
|
|
326
326
|
${n}
|
|
327
327
|
---
|
|
328
|
-
${e}`}var Ce=class{constructor(){this.map={}}addReference(t,n,a){if(t===n&&!a){t in this.map||(this.map[t]={[n]:[]});return}if(a)if(t in this.map){let r=this.map[t];n in r?r[n].push(a):r[n]=[a]}else this.map[t]={[n]:[a]}}deleteReferences(t,n){if(t===n){delete this.map[t];return}t in this.map&&n in this.map[t]&&(delete this.map[t][n],Object.keys(this.map[t]).length===0&&delete this.map[t])}hasRelation(t,n){return t in this.map&&n in this.map[t]||n in this.map&&t in this.map[n]||t===n}getReferences(t,n){return t in this.map&&n in this.map[t]?this.map[t][n]:[]}noteHasReferences(t){return t in this.map}getReferredByNotesCount(t){if(t in this.map){let n=Object.keys(this.map[t]).length;return t in this.map[t]&&(n-=1),n}else return 0}};import _r from"minisearch";function Rr(e,t="-"){return e.replace(/[.\s!@#$%^&*()\-=_+~`[\]{}\\<>?/|()【】::,。]+/g,t)}var we=class{constructor(){this.miniSearch=new _r({fields:["title","aliases","filePath"],storeFields:["title","aliases","filePath"],extractField:(t,n)=>n==="aliases"?t.aliases.join("|"):t[n],tokenize:t=>Rr(t," ").match(/([^\x00-\x7F]|\w+)/g)??[]}),this._cache={}}add(t,n,a=[]){if(!(t in this._cache)){let r={id:t+"#"+n,filePath:t,title:n,aliases:a};this.miniSearch.add(r),this._cache[t]=r}}remove(t){if(t in this._cache){let n=this._cache[t];n&&this.miniSearch.remove(n),delete this._cache[t]}}search(t,n){return this.miniSearch.search(t,n)}addAlias(t,n){let a=this._cache[t];a&&(this.remove(t),this.add(t,a.title,a.aliases.concat(n)))}deleteAlias(t,n){let a=this._cache[t];a&&(this.remove(t),this.add(t,a.title,a.aliases.filter(r=>r!==n)))}};var Fr={html:!0,xhtmlOut:!1,breaks:!0,langPrefix:"language-",linkify:!0,typographer:!0},Yn=class e{constructor(){this.notes={};this.hasLoadedNotes=!1;this.referenceMap=new Ce;this.refreshNotesIfNotLoadedMutex=new Ir;this.search=new we;this.markdownEngines={}}async init({notebookPath:t,config:n={},fs:a}){let r=Pr.parse(t);if(!W.isAbsolute(r.fsPath)||r.path.startsWith("/./"))throw new Error(`\`notebookPath\`: "${t}" must be an absolute path`);this.notebookPath=r,this.initFs(a),await this.initConfig(n),this.initMarkdownIt(),this.updateConfig({})}static async init(t){let n=new e;return await n.init(t),n}async initConfig(t){let n=await kt(W.join(this.notebookPath.fsPath,"./.crossnote"),this.fs);this.config={...Te(),...t
|
|
328
|
+
${e}`}var Ce=class{constructor(){this.map={}}addReference(t,n,a){if(t===n&&!a){t in this.map||(this.map[t]={[n]:[]});return}if(a)if(t in this.map){let r=this.map[t];n in r?r[n].push(a):r[n]=[a]}else this.map[t]={[n]:[a]}}deleteReferences(t,n){if(t===n){delete this.map[t];return}t in this.map&&n in this.map[t]&&(delete this.map[t][n],Object.keys(this.map[t]).length===0&&delete this.map[t])}hasRelation(t,n){return t in this.map&&n in this.map[t]||n in this.map&&t in this.map[n]||t===n}getReferences(t,n){return t in this.map&&n in this.map[t]?this.map[t][n]:[]}noteHasReferences(t){return t in this.map}getReferredByNotesCount(t){if(t in this.map){let n=Object.keys(this.map[t]).length;return t in this.map[t]&&(n-=1),n}else return 0}};import _r from"minisearch";function Rr(e,t="-"){return e.replace(/[.\s!@#$%^&*()\-=_+~`[\]{}\\<>?/|()【】::,。]+/g,t)}var we=class{constructor(){this.miniSearch=new _r({fields:["title","aliases","filePath"],storeFields:["title","aliases","filePath"],extractField:(t,n)=>n==="aliases"?t.aliases.join("|"):t[n],tokenize:t=>Rr(t," ").match(/([^\x00-\x7F]|\w+)/g)??[]}),this._cache={}}add(t,n,a=[]){if(!(t in this._cache)){let r={id:t+"#"+n,filePath:t,title:n,aliases:a};this.miniSearch.add(r),this._cache[t]=r}}remove(t){if(t in this._cache){let n=this._cache[t];n&&this.miniSearch.remove(n),delete this._cache[t]}}search(t,n){return this.miniSearch.search(t,n)}addAlias(t,n){let a=this._cache[t];a&&(this.remove(t),this.add(t,a.title,a.aliases.concat(n)))}deleteAlias(t,n){let a=this._cache[t];a&&(this.remove(t),this.add(t,a.title,a.aliases.filter(r=>r!==n)))}};var Fr={html:!0,xhtmlOut:!1,breaks:!0,langPrefix:"language-",linkify:!0,typographer:!0},Yn=class e{constructor(){this.notes={};this.hasLoadedNotes=!1;this.referenceMap=new Ce;this.refreshNotesIfNotLoadedMutex=new Ir;this.search=new we;this.markdownEngines={}}async init({notebookPath:t,config:n={},fs:a}){let r=Pr.parse(t);if(!W.isAbsolute(r.fsPath)||r.path.startsWith("/./"))throw new Error(`\`notebookPath\`: "${t}" must be an absolute path`);this.notebookPath=r,this.initFs(a),await this.initConfig(n),this.initMarkdownIt(),this.updateConfig({})}static async init(t){let n=new e;return await n.init(t),n}async initConfig(t){let n=await kt(W.join(this.notebookPath.fsPath,"./.crossnote"),this.fs);this.config={...Te(),...n,...t}}initMarkdownIt(){this.md=new vr(Fr),this.md.use(Or),this.md.use(Lr),this.md.use(Dr),this.md.use(Cr),this.md.use(Nr),this.md.use(xr),Mn(this.md),Un(this.md),Fn(this.md,this),$n(this.md,this),Gn(this.md,this),zn(this.md,this),Hn(this.md,this),Pn(this.md)}initFs(t){if(t)this.fs=t;else if(jn)this.fs=Tt();else throw new Error("`fs` is required")}updateConfig(t){this.config={...this.config,...t},this.interpolateConfig(),this.md.set({typographer:!!this.config.enableTypographer,breaks:!!this.config.breakOnSingleNewLine,linkify:!!this.config.enableLinkify})}interpolateConfig(){let t=/\${\s*(\w+?)\s*}/g,n={projectDir:this.notebookPath,workspaceFolder:this.notebookPath};this.config.imageFolderPath=this.config.imageFolderPath?.replace(t,(a,r)=>n[r]||a),this.config.imageMagickPath=this.config.imageMagickPath?.replace(t,(a,r)=>n[r]||a),this.config.chromePath=this.config.chromePath?.replace(t,(a,r)=>n[r]||a),this.config.plantumlJarPath=this.config.plantumlJarPath?.replace(t,(a,r)=>n[r]||a)}async getBacklinkedNotes(t){if(t=this.resolveNoteRelativePath(t),t in this.referenceMap.map){let n=this.referenceMap.map[t],a={};for(let r in n){if(r===t)continue;let s=await this.getNote(r);s&&(a[r]=s)}return a}else return{}}async getNoteBacklinks(t){let n=await this.getBacklinkedNotes(t),a=[],r=Object.keys(n);for(let s of r){let o=n[s],l=await this.getReferences(t,s);a.push({note:{notebookPath:o.notebookPath,filePath:o.filePath,title:o.title,config:o.config},references:l,referenceHtmls:l.map(d=>{let p=[d.parentToken??d.token];return this.md.renderer.render(p,this.md.options,{})})})}return a}async getReferences(t,n){return this.referenceMap.getReferences(this.resolveNoteRelativePath(t),this.resolveNoteRelativePath(n))}async processNoteMentionsAndMentionedBy(t){let n=await this.getNote(t);if(!n)return;let a=this.md.parse(n.markdown,{}),r=c=>(c.endsWith(".md")||(c=c+".md"),c.startsWith("/")?W.relative(this.notebookPath.fsPath,W.join(this.notebookPath.fsPath,"."+c)):W.relative(this.notebookPath.fsPath,W.join(W.dirname(W.join(this.notebookPath.fsPath,n.filePath)),c))),s=c=>Mr.joinPath(this.notebookPath,c).toString(),o=(c,g,f,S)=>{for(let m=0;m<c.length;m++){let u=c[m];if(u.type==="wikilink"){let b=u.content.split("|"),h,E;if(this.config.useGitHubStylePipedLink?(h=b[0].trim(),E=(b.length>1?b[1]:b[0]).trim()):(h=(b.length>1?b[1]:b[0]).trim(),E=b[0].trim()),E.match(/https?:\/\//))continue;E=r(E),this.config.useGitHubStylePipedLink?u.content=`${h} | ${s(E)}`:u.content=`${s(E)} | ${h}`,f.push({elementId:u.attrGet("id")||"",text:h,link:E,parentToken:g,token:u})}else if(u.type==="tag"){let b=u.content.trim(),h=u.content.trim();f.push({elementId:u.attrGet("id")||"",text:b,link:r(h),parentToken:g,token:u})}else if(u.type==="link_open"&&c[m+1]&&c[m+1].type==="text"){if(u.attrs?.length&&u.attrs[0][0]==="href"){let b=decodeURI(u.attrs[0][1]),h=c[m+1].content.trim();if(b.match(/https?:\/\//)||!h.length||!b.endsWith(".md"))continue;b=r(b),u.attrs[0][1]=s(b),f.push({elementId:u.attrGet("id")||"",text:h,link:b,parentToken:g,token:u})}}else u.children&&u.children.length&&o(u.children,u,f,S+1)}return f},l=o(a,null,[],0),d=new Set,p=n.mentions;for(let c in p)this.referenceMap.deleteReferences(c,n.filePath);for(let c=0;c<l.length;c++){let{link:g}=l[c];d[g]=!0,this.referenceMap.addReference(g,n.filePath,l[c])}this.referenceMap.addReference(n.filePath,n.filePath,void 0),n.mentions=d}async getNote(t,n=!1){if(t=this.resolveNoteRelativePath(t),!n&&t in this.notes)return this.notes[t];let a=this.resolveNoteAbsolutePath(t),r;try{r=await this.fs.stat(a)}catch{return null}if(r.isFile()&&this.config.markdownFileExtensions.includes(W.extname(t))){let s=await this.fs.readFile(a),o={createdAt:new Date(r.ctimeMs),modifiedAt:new Date(r.mtimeMs),aliases:[]};try{let c=Vn(s),g=Object.assign({},c.data);if(c.data.created&&(o.createdAt=new Date(c.data.created),delete g.created),c.data.modified&&(o.modifiedAt=new Date(c.data.modified),delete g.modified),c.data.pinned&&(o.pinned=c.data.pinned,delete g.pinned),c.data.favorited&&(o.favorited=c.data.favorited,delete g.favorited),c.data.icon&&(o.icon=c.data.icon,delete g.icon),c.data.aliases){let f=c.data.aliases||[];typeof f=="string"?o.aliases=f.split(",").map(S=>S.trim()):o.aliases=f,delete g.aliases}s=qn(c.content,g)}catch{s=`Please fix front-matter. (\u{1F448} Don't forget to delete this line)
|
|
329
329
|
|
|
330
330
|
`+s}let l=new Set,d=this.notes[t];d&&(l=d.mentions);let p={notebookPath:this.notebookPath,filePath:W.relative(this.notebookPath.fsPath,a),title:W.basename(a).replace(/\.md$/,""),markdown:s,config:o,mentions:l};return n&&(this.notes[p.filePath]=p,this.search.add(p.filePath,p.title,p.config.aliases),await this.processNoteMentionsAndMentionedBy(p.filePath)),p}else return null}async refreshNotesIfNotLoaded({dir:t="./",includeSubdirectories:n=!1}){return await this.refreshNotesIfNotLoadedMutex.runExclusive(async()=>{this.hasLoadedNotes||(await this.refreshNotes({dir:t,includeSubdirectories:n,refreshRelations:!0}),this.hasLoadedNotes=!0)}),this.notes}async refreshNotes({dir:t="./",includeSubdirectories:n=!1,refreshRelations:a=!0}){a&&(this.notes={},this.referenceMap=new Ce,this.search=new we);let r=[];try{r=await this.fs.readdir(W.resolve(this.notebookPath.fsPath,t))}catch(o){console.error(o),r=[]}let s=[];for(let o=0;o<r.length;o++){let l=r[o];if(l.match(/^(node_modules|\.git)$/))continue;let d=W.resolve(this.notebookPath.fsPath,t,l),p=await this.getNote(W.relative(this.notebookPath.fsPath,d));p&&(this.notes[p.filePath]=p,this.search.add(p.filePath,p.title,p.config.aliases));let c;try{c=await this.fs.stat(d)}catch(g){console.error(g)}c&&c.isDirectory()&&n&&s.push(this.refreshNotes({dir:W.relative(this.notebookPath.fsPath,d),includeSubdirectories:n,refreshRelations:!1}))}if(await Promise.all(s),a)for(let o in this.notes)await this.processNoteMentionsAndMentionedBy(o);return this.notes}async removeNoteRelations(t){let n=await this.getNote(t);if(!n)return;let a=n.mentions;for(let r in a)this.referenceMap.deleteReferences(r,n.filePath);delete this.notes[n.filePath]}async deleteNote(t,n=!1){let a=this.resolveNoteAbsolutePath(t);(n||await this.fs.exists(a))&&(await this.fs.unlink(a),await this.removeNoteRelations(t),this.search.remove(t))}resolveNoteAbsolutePath(t){return W.isAbsolute(t)?t:W.resolve(this.notebookPath.fsPath,t)}resolveNoteRelativePath(t){return W.isAbsolute(t)?W.relative(this.notebookPath.fsPath,t):t}getNoteMarkdownEngine(t){return t=this.resolveNoteRelativePath(t),t in this.markdownEngines||(this.markdownEngines[t]=new Xe({notebook:this,filePath:this.resolveNoteAbsolutePath(t)})),this.markdownEngines[t]}getNoteMarkdownEngines(){return this.markdownEngines}clearAllNoteMarkdownEngineCaches(){for(let t in this.markdownEngines)this.markdownEngines[t].clearCaches()}};import{escape as $r}from"html-escaper";var Ur={sh:"bash",bash:"bash",c:"c","c++":"cpp",cpp:"cpp",coffee:"coffeescript",coffeescript:"coffeescript","coffee-script":"coffeescript",cs:"csharp",csharp:"csharp",css:"css",scss:"scss",sass:"sass",elm:"elm",elmlang:"elm","elm-lang":"elm",erlang:"erlang",go:"go",html:"html",java:"java",js:"javascript",javascript:"javascript",json:"json",less:"less",objc:"objectivec",objectivec:"objectivec","objective-c":"objectivec",php:"php",py:"python",python:"python",rb:"ruby",ruby:"ruby",text:"text",tex:"latex",xml:"xml",yaml:"yaml",yml:"yaml",yaml_table:"yaml",mermaid:"mermaid",plantuml:"plantuml",puml:"plantuml",wavedrom:"wavedrom",graphviz:"dot",viz:"dot",dot:"dot",erd:"erd",node:"javascript",md:"gfm",diff:"diff"};function Kn(e){return e=e.toLowerCase(),Ur[e]||e}function Zn(e){e.languages.iele={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],variable:{pattern:/(@|%)([A-Za-z0-9\\_\\.\\-\\$])[a-zA-Z\\.\\_\\$][0-9a-zA-Z\\.\\_\\-\\$]*/,greedy:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/\b(?:load|store|sload|sstore|iszero|not|add|mul|sub|div|exp|mod|addmod|mulmod|expmod|byte|sext|twos|and|or|xor|shift|lt|le|gt|ge|eq|ne|cmp|sha3|br|call|staticcall|at|send|gaslimit|ret|void|revert|log|create|copycreate|selfdestruct|contract|external|define|public|log2|bswap|calladdress)\b/,label:/(?!\d)(?:[-$.\w]|\\[a-f\d]{2})+:/i,boolean:/\b(?:true|false)\b/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}}function Xn(e){e.languages.k={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":/\b(?:strict|avoid|prefer|bracket|non-assoc|seqstrict|left|right|macro-rec|macro|token|notInRules|autoReject|structural|latex|binder|klabel|symbol|format)\b/,keyword:{pattern:/\b(?:syntax\s+(?:priority|priorities|left|right|non-assoc|lexical)|syntax|rule|Id|Int|Bool|String|Token|Lexer|Float|configuration|import|imports|require|requires|Kresult|context\s+alias|context|module|endmodule|claim)\b/,greedy:!0},boolean:/\b(?:true|false)\b/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:{pattern:/[<>]=|=>|~>|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/},punctuation:/[{}[\];(),.:]/,tag:{pattern:/<\/?(?!\d)[^\s>/=$<%]+(?:\s(?:\s*[^\s>/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>/]+/,inside:{namespace:/^[^\s>/:]+:/}}}}}}var Ae=ma(Jn());Ae.default.hooks.add("wrap",e=>{e.type==="keyword"&&e.classes.push(`keyword-${e.content}`)});Xn(Ae.default);Zn(Ae.default);async function wt(e){e("pre>code").each((t,n)=>{let a=e(n),r=a.text(),s=a.parent();a.replaceWith($r(r)),s.addClass("language-text")}),e('[data-role="codeBlock"]').each((t,n)=>{let a=e(n);if(a.data("hiddenByEnhancer")||a.data("normalizedInfo").attributes.hide===!0){a.remove();return}let s=a.text(),o=a.data("normalizedInfo"),l=Gr(Kn(o.language),s);try{let d=Ae.default.highlight(s,Ae.default.languages[l],l);a.empty().append(e("<code></code>").html(d))}catch{a.empty().append(e("<code></code>").text(s))}a.addClass(`language-${l}`),o.attributes.class&&(a.addClass(o.attributes.class),zr(a,s)),o.attributes.highlight&&Hr(a,s,o.attributes.highlight),a.removeAttr("data-parsed-info"),a.removeAttr("data-normalized-info")})}function Gr(e,t){return e==="vega"||e==="vega-lite"?(t.match(/^\s*(.)/)??[])[1]==="{"?"json":"yaml":e}function zr(e,t){if(e.hasClass("numberLines")&&(e.addClass("line-numbers"),e.removeClass("numberLines")),e.hasClass("line-numbers")){if(!t.trim().length)return;let n=t.match(/\n(?!$)/g),a=n?n.length+1:1,r="";for(let s=0;s<a;s++)r+="<span></span>";e.append(`<span aria-hidden="true" class="line-numbers-rows">${r}</span>`)}}function Hr(e,t,n){if(!t.trim().length)return;typeof n=="number"?n=[n.toString()]:typeof n=="string"&&(n=n.split(","));let a=t.match(/\n(?!$)/g),r=a?a.length+1:1,s=[];n.forEach(o=>{if(o=o.toString(),o.indexOf("-")>0){let[l,d]=o.split("-").map(g=>parseInt(g,10));if(isNaN(l)||isNaN(d)||l<0||d<0||(l>d&&([l,d]=[d,l]),d>r))return;let p="";for(let g=l;g<=d;g++)p+=`
|
|
331
331
|
`;let c="";for(let g=0;g<l-1;g++)c+=`
|
|
@@ -435,7 +435,7 @@ window["initRevealPresentation"] = async function() {
|
|
|
435
435
|
window.MathJax = (${JSON.stringify(x)});
|
|
436
436
|
</script>
|
|
437
437
|
<script type="text/javascript" async src="${this.notebook.config.mathjaxV3ScriptSrc}"></script>
|
|
438
|
-
`}else this.notebook.config.mathRenderingOption==="KaTeX"?a.offline?o=`<link rel="stylesheet" href="file:///${v.resolve(B(),"./dependencies/katex/katex.min.css")}">`:o=`<link rel="stylesheet" href="https://${this.notebook.config.jsdelivrCdnHost}/npm/katex@0.16.
|
|
438
|
+
`}else this.notebook.config.mathRenderingOption==="KaTeX"?a.offline?o=`<link rel="stylesheet" href="file:///${v.resolve(B(),"./dependencies/katex/katex.min.css")}">`:o=`<link rel="stylesheet" href="https://${this.notebook.config.jsdelivrCdnHost}/npm/katex@0.16.9/dist/katex.min.css">`:o="";let l="";t.indexOf('<i class="fa ')>=0&&(a.offline?l=`<link rel="stylesheet" href="file:///${v.resolve(B(),"./dependencies/font-awesome/css/font-awesome.min.css")}">`:l='<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">');let d="",p="";t.indexOf(' class="mermaid')>=0&&(a.offline?d=`<script type="text/javascript" src="file:///${v.resolve(B(),"./dependencies/mermaid/mermaid.min.js")}" charset="UTF-8"></script>`:d=`<script src="https://${this.notebook.config.jsdelivrCdnHost}/npm/mermaid@10.5.0/dist/mermaid.min.js"></script>`,p+=`<script type="module">
|
|
439
439
|
// TODO: If ZenUML gets integrated into mermaid in the future,
|
|
440
440
|
// we can remove the following lines.
|
|
441
441
|
${t.match(/zenuml/i)?`import zenuml from 'https://${this.notebook.config.jsdelivrCdnHost}/npm/@mermaid-js/mermaid-zenuml@0.1.0/dist/mermaid-zenuml.esm.min.mjs';
|
|
@@ -547,7 +547,7 @@ sidebarTOCBtn.addEventListener('click', function(event) {
|
|
|
547
547
|
${S}
|
|
548
548
|
${N}
|
|
549
549
|
</html>
|
|
550
|
-
`,a.embedLocalImages||a.embedSVG){let x=pe.load(t);a.embedLocalImages&&await Qe(x,this.notebook,this.resolveFilePath.bind(this)),a.embedSVG&&await At(x,this.notebook,this.resolveFilePath.bind(this)),t=x.html()}return t.trim()}async openInBrowser({runAllCodeChunks:t=!1}){let n=await this.fs.readFile(this.filePath),a,r;({html:a,yamlConfig:r}=await this.parseMD(n,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:t})),a=await this.generateHTMLTemplateForExport(a,r,{isForPrint:!1,isForPrince:!1,offline:!0,embedLocalImages:!1});let s=await re({prefix:"crossnote",suffix:".html"});Z.writeFileSync(s.fd,a),me(s.path)}async htmlExport({offline:t=!1,runAllCodeChunks:n=!1}){let a=await this.fs.readFile(this.filePath),r,s;({html:r,yamlConfig:s}=await this.parseMD(a,{useRelativeFilePath:!0,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:n}));let o=s.html||{};"offline"in o&&(t=o.offline);let l=o.embed_local_images,d=!0;"embed_svg"in o&&(d=o.embed_svg);let p=this.filePath,c=v.extname(p);if(p=p.replace(new RegExp(c+"$"),".html"),r=await this.generateHTMLTemplateForExport(r,s,{isForPrint:!1,isForPrince:!1,embedLocalImages:l,offline:t,embedSVG:d}),!t&&r.indexOf('[{"src":"revealjs_deps/notes.js","async":true}]')>=0){let g=v.resolve(v.dirname(p),"revealjs_deps");Z.existsSync(g)||Z.mkdirSync(g),Z.createReadStream(v.resolve(B(),"./dependencies/reveal/plugin/notes/notes.js")).pipe(Z.createWriteStream(v.resolve(g,"notes.js"))),Z.createReadStream(v.resolve(B(),"./dependencies/reveal/plugin/notes/notes.html")).pipe(Z.createWriteStream(v.resolve(g,"notes.html")))}return await this.fs.writeFile(p,r),p}async chromeExport({fileType:t="pdf",runAllCodeChunks:n=!1,openFileAfterGeneration:a=!1}){let r=await this.fs.readFile(this.filePath),s,o;({html:s,yamlConfig:o}=await this.parseMD(r,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:n}));let l=this.filePath,d=v.extname(l);l=l.replace(new RegExp(d+"$"),"."+t),s=await this.generateHTMLTemplateForExport(s,o,{isForPrint:!0,isForPrince:!1,embedLocalImages:!1,offline:!0});let p="";try{if(p=this.notebook.config.chromePath,!p){let h=(await import("chrome-paths")).default;p=h.chrome||h.chromeCanary||h.chromium}}catch{p=""}if(!p)throw new Error("Chrome executable path is not set.");let g=await(await import("puppeteer-core/lib/cjs/puppeteer/puppeteer-core.js")).launch({args:this.notebook.config.puppeteerArgs||[],executablePath:p,headless:!0}),f=await re({prefix:"crossnote",suffix:".html"});Z.writeFileSync(f.fd,s);let S=await g.newPage(),m="file:///"+f.path+(o.isPresentationMode?"?print-pdf":"");await S.goto(m);let u={path:l,...o.isPresentationMode?{}:{margin:{top:"1cm",bottom:"1cm",left:"1cm",right:"1cm"}},printBackground:this.notebook.config.printBackground,...o.chrome||o.puppeteer||{}},b=0;return o.chrome&&o.chrome.timeout?b=o.chrome.timeout:o.puppeteer&&o.puppeteer.timeout&&(b=o.puppeteer.timeout),b&&typeof b=="number"?await S.waitForTimeout(b):this.notebook.config.puppeteerWaitForTimeout&&this.notebook.config.puppeteerWaitForTimeout>0&&await S.waitForTimeout(this.notebook.config.puppeteerWaitForTimeout),t==="pdf"?await S.pdf(u):(u.fullPage=!0,await S.screenshot(u)),g.close(),a&&me(l),l}async princeExport({runAllCodeChunks:t=!1,openFileAfterGeneration:n=!1}){let a=await this.fs.readFile(this.filePath),r,s;({html:r,yamlConfig:s}=await this.parseMD(a,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:t}));let o=this.filePath,l=v.extname(o);o=o.replace(new RegExp(l+"$"),".pdf"),r=await this.generateHTMLTemplateForExport(r,s,{isForPrint:!0,isForPrince:!0,embedLocalImages:!1,offline:!0});let d=await re({prefix:"crossnote",suffix:".html"});return Z.writeFileSync(d.fd,r),s.isPresentationMode?"file:///"+d.path+"?print-pdf":(await Dn(d.path,o),n&&me(o),o)}async eBookDownloadImages(t,n){let a=[];(v.extname(n)===".epub"||v.extname("dest")===".mobi")&&t("img").each((s,o)=>{let l=t(o);(l.attr("src")||"").match(/^https?:\/\//)&&a.push(l)});let r=a.map(s=>new Promise(o=>{let l=s.attr("src"),d=Math.random().toString(36).substr(2,9)+"_"+v.basename(l);d=v.resolve(this.fileDirectoryPath,d),ri(l).pipe(Z.createWriteStream(d)).on("finish",()=>(s.attr("src","file:///"+d),o(d)))}));return Promise.all(r)}async eBookExport({fileType:t="epub",runAllCodeChunks:n=!1}){let a=await this.fs.readFile(this.filePath),r=t==="pdf",s,o;({html:s,yamlConfig:o}=await this.parseMD(a,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:n,emojiToSvg:r}));let l=this.filePath,d=v.extname(l);l=l.replace(new RegExp(d+"$"),"."+t.toLowerCase());let p=o.ebook||{};if(!p)throw new Error("eBook config not found. Please insert ebook front-matter to your markdown file.");if(p.cover){let y=p.cover;p.cover=ie(this.resolveFilePath(y,!1))}let c=pe.load(`<div>${s}</div>`),g=[],f=new oe,S=c("div > ul").last();if(S.length){if(p.include_toc===!1){let y=S.prev();y.length&&y[0].name.match(/^h\d$/i)&&y.remove()}c("h1, h2, h3, h4, h5, h6").each((y,A)=>{let x=c(A),T=parseInt(x[0].name.slice(1),10)-1;x.attr("ebook-toc-level-"+(T+1),""),x.attr("heading",x.html())}),m(S,0),p.include_toc===!1&&S.remove()}function m(y,A){y.children("li").each((x,T)=>{let C=c(T),L=C.children("a").first();if(!L.length){C.children().length>=1&&m(C.children().last(),A+1);return}let P=decodeURIComponent(L.attr("href")),F=L.html()??"",q=f.generateId("ebook-heading-"+F);g.push({level:A,filePath:P,heading:F,id:q}),L.attr("href","#"+q),C.children().length>1&&m(C.children().last(),A+1)})}let u=g.map(({heading:y,id:A,level:x,filePath:T},C)=>new Promise((L,P)=>{if(T=ie(T),T.match(/^https?:\/\//))return L({heading:y,id:A,level:x,filePath:T,html:"",offset:C});Z.readFile(T,{encoding:"utf-8"},(F,q)=>{if(F)return P(F.toString());let V=v.dirname(this.filePath);q=q.replace(/(!\[[^\]]*\]\()(\.[^)\s]*)/g,(te,ne,le)=>{let j=v.resolve(v.dirname(T),le),O=v.relative(V,j);return ne+O}),this.parseMD(q,{useRelativeFilePath:!1,isForPreview:!1,hideFrontMatter:!0,emojiToSvg:r,fileDirectoryPath:v.dirname(T)}).then(({html:te})=>L({heading:y,id:A,level:x,filePath:T,html:te,offset:C}))})})),b=c.html().replace(/^<div>(.+)<\/div>$/,"$1"),h=await Promise.all(u);h=h.sort((y,A)=>y.offset-A.offset),h.forEach(({heading:y,id:A,level:x,html:T})=>{let C=pe.load(`<div>${T}</div>`);C("a").each((L,P)=>{let F=C(P),q=F.attr("href");q.startsWith("file://")&&h.forEach(V=>{V.filePath===ie(q)&&F.attr("href","#"+V.id)})}),b+=`<div id="${A}" ebook-toc-level-${x+1} heading="${y}">${C.html()}</div>`}),c=pe.load(b);let E=await this.eBookDownloadImages(c,l);if(v.extname(l)===".html"){if(p.cover){let y=p.cover[0]==="/"?"file:///"+p.cover:p.cover;c(":root").children().first().prepend(`<img style="display:block; margin-bottom: 24px;" src="${y}">`)}await Qe(c,this.notebook,this.resolveFilePath.bind(this))}b=c.html();let _=p.title||"no title",w="";b.indexOf('class="katex"')>0&&(v.extname(l)===".html"&&p.html&&p.html.cdn?w=`<link rel="stylesheet" href="https://${this.notebook.config.jsdelivrCdnHost}/npm/katex@0.16.
|
|
550
|
+
`,a.embedLocalImages||a.embedSVG){let x=pe.load(t);a.embedLocalImages&&await Qe(x,this.notebook,this.resolveFilePath.bind(this)),a.embedSVG&&await At(x,this.notebook,this.resolveFilePath.bind(this)),t=x.html()}return t.trim()}async openInBrowser({runAllCodeChunks:t=!1}){let n=await this.fs.readFile(this.filePath),a,r;({html:a,yamlConfig:r}=await this.parseMD(n,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:t})),a=await this.generateHTMLTemplateForExport(a,r,{isForPrint:!1,isForPrince:!1,offline:!0,embedLocalImages:!1});let s=await re({prefix:"crossnote",suffix:".html"});Z.writeFileSync(s.fd,a),me(s.path)}async htmlExport({offline:t=!1,runAllCodeChunks:n=!1}){let a=await this.fs.readFile(this.filePath),r,s;({html:r,yamlConfig:s}=await this.parseMD(a,{useRelativeFilePath:!0,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:n}));let o=s.html||{};"offline"in o&&(t=o.offline);let l=o.embed_local_images,d=!0;"embed_svg"in o&&(d=o.embed_svg);let p=this.filePath,c=v.extname(p);if(p=p.replace(new RegExp(c+"$"),".html"),r=await this.generateHTMLTemplateForExport(r,s,{isForPrint:!1,isForPrince:!1,embedLocalImages:l,offline:t,embedSVG:d}),!t&&r.indexOf('[{"src":"revealjs_deps/notes.js","async":true}]')>=0){let g=v.resolve(v.dirname(p),"revealjs_deps");Z.existsSync(g)||Z.mkdirSync(g),Z.createReadStream(v.resolve(B(),"./dependencies/reveal/plugin/notes/notes.js")).pipe(Z.createWriteStream(v.resolve(g,"notes.js"))),Z.createReadStream(v.resolve(B(),"./dependencies/reveal/plugin/notes/notes.html")).pipe(Z.createWriteStream(v.resolve(g,"notes.html")))}return await this.fs.writeFile(p,r),p}async chromeExport({fileType:t="pdf",runAllCodeChunks:n=!1,openFileAfterGeneration:a=!1}){let r=await this.fs.readFile(this.filePath),s,o;({html:s,yamlConfig:o}=await this.parseMD(r,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:n}));let l=this.filePath,d=v.extname(l);l=l.replace(new RegExp(d+"$"),"."+t),s=await this.generateHTMLTemplateForExport(s,o,{isForPrint:!0,isForPrince:!1,embedLocalImages:!1,offline:!0});let p="";try{if(p=this.notebook.config.chromePath,!p){let h=(await import("chrome-paths")).default;p=h.chrome||h.chromeCanary||h.chromium}}catch{p=""}if(!p)throw new Error("Chrome executable path is not set.");let g=await(await import("puppeteer-core/lib/cjs/puppeteer/puppeteer-core.js")).launch({args:this.notebook.config.puppeteerArgs||[],executablePath:p,headless:!0}),f=await re({prefix:"crossnote",suffix:".html"});Z.writeFileSync(f.fd,s);let S=await g.newPage(),m="file:///"+f.path+(o.isPresentationMode?"?print-pdf":"");await S.goto(m);let u={path:l,...o.isPresentationMode?{}:{margin:{top:"1cm",bottom:"1cm",left:"1cm",right:"1cm"}},printBackground:this.notebook.config.printBackground,...o.chrome||o.puppeteer||{}},b=0;return o.chrome&&o.chrome.timeout?b=o.chrome.timeout:o.puppeteer&&o.puppeteer.timeout&&(b=o.puppeteer.timeout),b&&typeof b=="number"?await S.waitForTimeout(b):this.notebook.config.puppeteerWaitForTimeout&&this.notebook.config.puppeteerWaitForTimeout>0&&await S.waitForTimeout(this.notebook.config.puppeteerWaitForTimeout),t==="pdf"?await S.pdf(u):(u.fullPage=!0,await S.screenshot(u)),g.close(),a&&me(l),l}async princeExport({runAllCodeChunks:t=!1,openFileAfterGeneration:n=!1}){let a=await this.fs.readFile(this.filePath),r,s;({html:r,yamlConfig:s}=await this.parseMD(a,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:t}));let o=this.filePath,l=v.extname(o);o=o.replace(new RegExp(l+"$"),".pdf"),r=await this.generateHTMLTemplateForExport(r,s,{isForPrint:!0,isForPrince:!0,embedLocalImages:!1,offline:!0});let d=await re({prefix:"crossnote",suffix:".html"});return Z.writeFileSync(d.fd,r),s.isPresentationMode?"file:///"+d.path+"?print-pdf":(await Dn(d.path,o),n&&me(o),o)}async eBookDownloadImages(t,n){let a=[];(v.extname(n)===".epub"||v.extname("dest")===".mobi")&&t("img").each((s,o)=>{let l=t(o);(l.attr("src")||"").match(/^https?:\/\//)&&a.push(l)});let r=a.map(s=>new Promise(o=>{let l=s.attr("src"),d=Math.random().toString(36).substr(2,9)+"_"+v.basename(l);d=v.resolve(this.fileDirectoryPath,d),ri(l).pipe(Z.createWriteStream(d)).on("finish",()=>(s.attr("src","file:///"+d),o(d)))}));return Promise.all(r)}async eBookExport({fileType:t="epub",runAllCodeChunks:n=!1}){let a=await this.fs.readFile(this.filePath),r=t==="pdf",s,o;({html:s,yamlConfig:o}=await this.parseMD(a,{useRelativeFilePath:!1,hideFrontMatter:!0,isForPreview:!1,runAllCodeChunks:n,emojiToSvg:r}));let l=this.filePath,d=v.extname(l);l=l.replace(new RegExp(d+"$"),"."+t.toLowerCase());let p=o.ebook||{};if(!p)throw new Error("eBook config not found. Please insert ebook front-matter to your markdown file.");if(p.cover){let y=p.cover;p.cover=ie(this.resolveFilePath(y,!1))}let c=pe.load(`<div>${s}</div>`),g=[],f=new oe,S=c("div > ul").last();if(S.length){if(p.include_toc===!1){let y=S.prev();y.length&&y[0].name.match(/^h\d$/i)&&y.remove()}c("h1, h2, h3, h4, h5, h6").each((y,A)=>{let x=c(A),T=parseInt(x[0].name.slice(1),10)-1;x.attr("ebook-toc-level-"+(T+1),""),x.attr("heading",x.html())}),m(S,0),p.include_toc===!1&&S.remove()}function m(y,A){y.children("li").each((x,T)=>{let C=c(T),L=C.children("a").first();if(!L.length){C.children().length>=1&&m(C.children().last(),A+1);return}let P=decodeURIComponent(L.attr("href")),F=L.html()??"",q=f.generateId("ebook-heading-"+F);g.push({level:A,filePath:P,heading:F,id:q}),L.attr("href","#"+q),C.children().length>1&&m(C.children().last(),A+1)})}let u=g.map(({heading:y,id:A,level:x,filePath:T},C)=>new Promise((L,P)=>{if(T=ie(T),T.match(/^https?:\/\//))return L({heading:y,id:A,level:x,filePath:T,html:"",offset:C});Z.readFile(T,{encoding:"utf-8"},(F,q)=>{if(F)return P(F.toString());let V=v.dirname(this.filePath);q=q.replace(/(!\[[^\]]*\]\()(\.[^)\s]*)/g,(te,ne,le)=>{let j=v.resolve(v.dirname(T),le),O=v.relative(V,j);return ne+O}),this.parseMD(q,{useRelativeFilePath:!1,isForPreview:!1,hideFrontMatter:!0,emojiToSvg:r,fileDirectoryPath:v.dirname(T)}).then(({html:te})=>L({heading:y,id:A,level:x,filePath:T,html:te,offset:C}))})})),b=c.html().replace(/^<div>(.+)<\/div>$/,"$1"),h=await Promise.all(u);h=h.sort((y,A)=>y.offset-A.offset),h.forEach(({heading:y,id:A,level:x,html:T})=>{let C=pe.load(`<div>${T}</div>`);C("a").each((L,P)=>{let F=C(P),q=F.attr("href");q.startsWith("file://")&&h.forEach(V=>{V.filePath===ie(q)&&F.attr("href","#"+V.id)})}),b+=`<div id="${A}" ebook-toc-level-${x+1} heading="${y}">${C.html()}</div>`}),c=pe.load(b);let E=await this.eBookDownloadImages(c,l);if(v.extname(l)===".html"){if(p.cover){let y=p.cover[0]==="/"?"file:///"+p.cover:p.cover;c(":root").children().first().prepend(`<img style="display:block; margin-bottom: 24px;" src="${y}">`)}await Qe(c,this.notebook,this.resolveFilePath.bind(this))}b=c.html();let _=p.title||"no title",w="";b.indexOf('class="katex"')>0&&(v.extname(l)===".html"&&p.html&&p.html.cdn?w=`<link rel="stylesheet" href="https://${this.notebook.config.jsdelivrCdnHost}/npm/katex@0.16.9/dist/katex.min.css">`:w=`<link rel="stylesheet" href="file:///${v.resolve(B(),"./dependencies/katex/katex.min.css")}">`);let R="";try{R=(await Promise.all([await this.fs.readFile(v.resolve(B(),"./styles/style-template.css")),await this.fs.readFile(v.resolve(B(),`./styles/prism_theme/${e.AutoPrismThemeMap[p.theme||this.notebook.config.previewTheme]}`)),await this.fs.readFile(v.resolve(B(),"./styles/twemoji.css")),await this.fs.readFile(v.resolve(B(),`./styles/preview_theme/${p.theme||this.notebook.config.previewTheme}`)),b.indexOf("admonition")>0?await this.fs.readFile(v.resolve(B(),"./styles/markdown-it-admonition.css")):""])).join("")}catch{R=""}let N="";try{N=this.notebook.config.globalCss}catch{}if(s=`
|
|
551
551
|
<!DOCTYPE html>
|
|
552
552
|
<html>
|
|
553
553
|
<head>
|
|
@@ -4,6 +4,8 @@ import { MermaidConfig } from 'mermaid';
|
|
|
4
4
|
import { JsonObject } from 'type-fest';
|
|
5
5
|
import { Note } from './note';
|
|
6
6
|
import { Reference } from './reference';
|
|
7
|
+
export type { KatexOptions } from 'katex';
|
|
8
|
+
export type { MermaidConfig } from 'mermaid';
|
|
7
9
|
export declare const IS_NODE: boolean;
|
|
8
10
|
export type FileSystemStats = {
|
|
9
11
|
mtimeMs: number;
|