import{h as e,r as t}from"./package-Bop5TfAT.js";import{C as n,D as r,X as i,Y as a,b as o,f as s,g as c,i as l,r as u,s as d,t as ee,y as f}from"./runtime-core.esm-bundler-DO-WTVbd.js";import{a as p,i as m,n as h,r as g,t as _}from"./wasm-C3ukMqzA.js";import{r as v}from"./printLayout-D2pf0W9y.js";var y=[`DejaVuSansMono-Bold.ttf`,`DejaVuSansMono-BoldOblique.ttf`,`DejaVuSansMono-Oblique.ttf`,`DejaVuSansMono.ttf`,`LibertinusSerif-Bold.otf`,`LibertinusSerif-BoldItalic.otf`,`LibertinusSerif-Italic.otf`,`LibertinusSerif-Regular.otf`,`LibertinusSerif-Semibold.otf`,`LibertinusSerif-SemiboldItalic.otf`,`NewCM10-Bold.otf`,`NewCM10-BoldItalic.otf`,`NewCM10-Italic.otf`,`NewCM10-Regular.otf`,`NewCMMath-Bold.otf`,`NewCMMath-Book.otf`,`NewCMMath-Regular.otf`],b=[`InriaSerif-Bold.ttf`,`InriaSerif-BoldItalic.ttf`,`InriaSerif-Italic.ttf`,`InriaSerif-Regular.ttf`,`Roboto-Regular.ttf`,`NotoSerifCJKsc-Regular.otf`],x=[`TwitterColorEmoji.ttf`,`NotoColorEmoji-Regular-COLR.subset.ttf`];function S(){return T([],{assets:!1})}function C(e){return T([],e)}function w(e){let t=[];if(e&&e?.assets!==!1&&e?.assets?.length&&e?.assets?.length>0){let n={text:`https://cdn.jsdelivr.net/gh/typst/typst-assets@v0.13.1/files/fonts/`,_:`https://cdn.jsdelivr.net/gh/typst/typst-dev-assets@v0.13.1/files/fonts/`},r=e.assetUrlPrefix??n;r=typeof r==`string`?{_:r}:{...n,...r};for(let e of Object.keys(r)){let t=r[e];t[t.length-1]!==`/`&&(r[e]=t+`/`)}let i=(e,t)=>t.map(t=>(r[e]||r._)+t);for(let n of e.assets)switch(n){case`text`:t.push(...i(n,y));break;case`cjk`:t.push(...i(n,b));break;case`emoji`:t.push(...i(n,x));break}}return t}function T(e,t){let n=w(t),r=async(r,{ref:i,builder:a})=>{t?.fetcher&&i.setFetcher(t.fetcher),await i.loadFonts(a,[...e,...n])};return r._preloadRemoteFontOptions=t,r._kind=`fontLoader`,r}function E(e){return async(t,{builder:n})=>new Promise(t=>{n.set_package_registry(e,function(t){return e.resolve(t,this)}),t()})}function D(e){return async(t,n)=>{if(n.alreadySetAccessModel)throw Error(`already set some assess model before: ${n.alreadySetAccessModel.constructor?.name}(${n.alreadySetAccessModel})`);return n.alreadySetAccessModel=e,new Promise(t=>{n.builder.set_access_model(e,t=>{let n=e.getMTime(t);return n?n.getTime():0},t=>e.isFile(t)||!1,t=>e.getRealPath(t)||t,t=>e.readAll(t)),t()})}}var O;(function(e){e[e.vector=0]=`vector`,e[e.pdf=1]=`pdf`,e[e._dummy=2]=`_dummy`})(O||={});var k=class{[g];constructor(e){this[g]=e}reset(){this[g].reset()}current(){return this[g].current()}setAttachDebugInfo(e){this[g].set_attach_debug_info(e)}},A;A||={};function j(){return new F}var M=class{[g];constructor(e){this[g]=e}compile(e){return this[g].compile(0,R(e?.diagnostics))}compileHtml(e){return this[g].compile(1,R(e?.diagnostics))}async query(e){return JSON.parse(this[g].query(0,e.selector,e.field))}title(){return this[g].title(0)}vector(e){return this[g].get_artifact(0,R(e?.diagnostics))||{}}pdf(e){return this[g].get_artifact(1,R(e?.diagnostics))||{}}},N=e=>new _(async t=>await e.default(t));function P(){return new I}var F=class{fontBuilderJs;fontBuilder;async init(e){this.fontBuilderJs=await(e?.getWrapper?.()||t(()=>import(`./wasm-pack-shim-BShYmbRf.js`),[],import.meta.url)),await N(this.fontBuilderJs).init(e?.getModule?.()),this.fontBuilder=new this.fontBuilderJs.TypstFontResolverBuilder}async getFontInfo(e){return this.fontBuilder.get_font_info(e)}async addFontData(e){this.fontBuilder.add_raw_font(e)}async addLazyFont(e,t){return this.fontBuilder.add_lazy_font(e,t)}async build(e){let t=await this.fontBuilder.build(),n=await e(t);return t.free(),n}},I=class e{compiler;compilerJs;static defaultAssets=[`text`];constructor(){}async init(n){this.compilerJs=await(n?.getWrapper?.()||t(()=>import(`./wasm-pack-shim-BShYmbRf.js`),[],import.meta.url));let r=this.compilerJs.TypstCompilerBuilder,i={...n||{}},a=i.beforeBuild??=[],o=a.some(e=>e._preloadRemoteFontOptions!==void 0),s=a.some(e=>e._preloadRemoteFontOptions?.assets!==void 0),c=a.some(e=>e._preloadRemoteFontOptions?.assets===!1);if((!o||!s&&!c)&&a.push(T([],{assets:e.defaultAssets})),!a.some(e=>e._kind===`fontLoader`))throw Error(`TypstCompiler: no font loader found, please use font loaders, e.g. loadFonts or preloadSystemFonts`);this.compiler=await m(n,N(this.compilerJs),r,{})}setFonts(e){this.compiler.set_fonts(e)}compile(e){return new Promise(t=>{let n=this.compiler.snapshot(e.root,e.mainFilePath,L(e.inputs));if(`incrementalServer`in e){t(n.incr_compile(e.incrementalServer[g],R(e.diagnostics)));return}t(n.get_artifact(e.format||O.vector,R(e.diagnostics)))})}async runWithWorld(e,t){let n=this.compiler.snapshot(e.root,e.mainFilePath,L(e.inputs)),r=await t(new M(n));return n.free(),r}query(e){return this.runWithWorld(e,async t=>JSON.parse(await t.query(e)))}getSemanticTokenLegend(){return new Promise(e=>{e(this.compiler.get_semantic_token_legend())})}getSemanticTokens(e){return new Promise(t=>{this.compiler.reset(),t(this.compiler.get_semantic_tokens(e.offsetEncoding||`utf-16`,e.mainFilePath,e.resultId))})}async withIncrementalServer(e){let t=new k(this.compiler.create_incr_server());try{return await e(t)}finally{t[g].free()}}async getAst(e){return this.compiler.get_ast(e)}async reset(){await new Promise(e=>{this.compiler.reset(),e(void 0)})}addSource(e,t){if(arguments.length>2)throw Error(`use of addSource(path, source, isMain) is deprecated, please use addSource(path, source) instead`);this.compiler.add_source(e,t)}mapShadow(e,t){this.compiler.map_shadow(e,t)}unmapShadow(e){this.compiler.unmap_shadow(e)}resetShadow(){this.compiler.reset_shadow()}renderPageToCanvas(){throw Error(`Please use the api TypstRenderer.renderToCanvas in v0.4.0`)}};P._impl=I;function L(e){return e?Object.entries(e):void 0}function R(e){switch(e){case`none`:return 1;case`unix`:return 2;default:return 3}}var te=class{pageInfos;loadPageCount;imageScaleFactor;container;canvasList;textLayerList;commonList;textLayerParentList;semanticLayerList;constructor(e,t,n){this.pageInfos=e,this.imageScaleFactor=n.pixelPerPt??h.PIXEL_PER_PT,t.innerHTML=``,t.style.width=`100%`,this.container=t,this.canvasList=Array(this.loadPageCount),this.textLayerList=Array(this.loadPageCount),this.commonList=Array(this.loadPageCount),this.textLayerParentList=Array(this.loadPageCount),this.semanticLayerList=Array(this.loadPageCount);let r=(e,n,r)=>{let i=Math.ceil(n.width)*this.imageScaleFactor,a=Math.ceil(n.height)*this.imageScaleFactor,o=this.canvasList[e]=document.createElement(`canvas`),s=this.semanticLayerList[e]=document.createElement(`div`),c=this.textLayerList[e]=document.createElement(`div`),l=this.textLayerParentList[e]=document.createElement(`div`);if(o.getContext(`2d`)){let e=document.createElement(`div`);o.width=i,o.height=a,e.appendChild(o),r.appendChild(e),e.style.position=`absolute`}{l.appendChild(c),l.className=`typst-html-semantics`;let e=t.offsetWidth,i=e/n.width;l.style.width=`${e}px`,l.style.height=`${n.height*i}px`,l.style.setProperty(`--data-text-width`,`${i}px`),l.style.setProperty(`--data-text-height`,`${i}px`),r.classList.add(`typst-page`),r.classList.add(`canvas`),r.style.width=`${e}px`,r.style.height=`${a*i}px`,r.style.position=`relative`,s.appendChild(l),r.appendChild(s)}};for(let e=0;e({width:this.hookedElem.offsetWidth,height:this.hookedElem.offsetHeight,window:{innerWidth:window.innerWidth,innerHeight:window.innerHeight},boundingRect:this.hookedElem.getBoundingClientRect()})),this.backgroundColor=getComputedStyle(document.documentElement).getPropertyValue(`--typst-preview-background-color`)}this.hookedElem.classList.add(`hide-scrollbar-x`),this.hookedElem.parentElement?.classList.add(`hide-scrollbar-x`),this.previewMode===z.Slide&&(this.hookedElem.classList.add(`hide-scrollbar-y`),this.hookedElem.parentElement?.classList.add(`hide-scrollbar-y`)),this.installCtrlWheelHandler()}reset(){this.kModule.reset(),this.moduleInitialized=!1}dispose(){let e=this.disposeList;this.disposeList=[],e.forEach(e=>e())}static derive(e,t){return[`rescale`,`rerender`,`postRender`].reduce((n,r)=>(n[r]=e[`${r}$${t}`].bind(e),console.assert(n[r]!==void 0,`${r}$${t} is undefined`),n),{})}registerMode(t){let n=e.derive(this,t);this.modes.push([t,n]),t===this.renderMode&&(this.r=n)}installCtrlWheelHandler(){let e=[.1,.2,.3,.4,.5,.6,.7,.8,.9,1,1.1,1.3,1.5,1.7,1.9,2.1,2.4,2.7,3,3.3,3.7,4.1,4.6,5.1,5.7,6.3,7,7.7,8.5,9.4,10],t=t=>{if(t.ctrlKey){t.preventDefault(),this.cachedDOMState=this.retrieveDOMState(),window.onresize!==null&&(window.onresize=null);let n=this.currentScaleRatio;if(t.deltaY<0){if(this.currentScaleRatio>=e.at(-1))return;this.currentScaleRatio=e.filter(e=>e>this.currentScaleRatio).at(0)}else if(t.deltaY>0){if(this.currentScaleRatio<=e.at(0))return;this.currentScaleRatio=e.filter(e=>e{window.removeEventListener(`wheel`,t)})):(document.body.addEventListener(`wheel`,t,{passive:!1}),this.disposeList.push(()=>{document.body.removeEventListener(`wheel`,t)})))}getSvgScaleRatio(){let e=this.hookedElem.firstElementChild;if(!e)return 0;let t=this.cachedDOMState,n=Number.parseFloat(e.getAttribute(`data-width`)||e.getAttribute(`width`)||`1`),r=Number.parseFloat(e.getAttribute(`data-height`)||e.getAttribute(`height`)||`1`);return this.currentRealScale=this.previewMode===z.Slide?Math.min(t.width/n,t.height/r):t.width/n,this.currentRealScale*this.currentScaleRatio}processQueue(e){let t=e[0];switch(t){case`new`:case`diff-v1`:return t===`new`&&this.reset(),this.kModule.manipulateData({action:`merge`,data:e[1]}),this.moduleInitialized=!0,!0;case`viewport-change`:return this.moduleInitialized?!0:(console.log(`viewport-change before initialization`),!1);default:return console.log(`svgUpdateEvent`,e),!1}}triggerUpdate(){if(this.isRendering)return;this.isRendering=!0;let e=async()=>{if(this.cachedDOMState=this.retrieveDOMState(),this.patchQueue.length===0){this.isRendering=!1,this.postprocessChanges();return}try{let t=performance.now(),n=this.canvasRenderCToken;n&&(await n.cancel(),await n.wait(),this.canvasRenderCToken=void 0,console.log(`cancel canvas rendering`));let r=!1;for(;this.patchQueue.length>0;)r=this.processQueue(this.patchQueue.shift())||r;performance.now(),r&&(this.r.rescale(),await this.r.rerender(),this.r.rescale());let i=performance.now();this.sampledRenderTime=i-t,requestAnimationFrame(e)}catch(e){console.error(e),this.isRendering=!1,this.postprocessChanges()}};requestAnimationFrame(e)}postprocessChanges(){this.r.postRender(),this.previewMode===z.Slide&&document.querySelectorAll(`.typst-page-number-indicator`).forEach(e=>{e.textContent=`${this.kModule.retrievePagesInfo().length}`})}addChangement(e){e[0]===`new`&&this.patchQueue.splice(0,this.patchQueue.length);let t=()=>{this.vpTimeout=void 0,this.patchQueue.push(e),this.triggerUpdate()};this.vpTimeout!==void 0&&clearTimeout(this.vpTimeout),e[0]===`viewport-change`&&this.isRendering?this.vpTimeout=setTimeout(t,this.sampledRenderTime||100):t()}addViewportChange(){this.addChangement([`viewport-change`,``])}};function V(e){return class{impl;kModule;constructor(t){if(t.isContentPreview&&(t.renderMode=`canvas`),this.kModule=t.kModule,this.impl=new e(t),!this.impl.r)throw Error(`mode is not supported, ${t?.renderMode}`);t.isContentPreview&&(this.impl.partialRendering=!0,this.impl.pixelPerPt=1,this.impl.isMixinOutline=!0)}dispose(){this.impl.dispose()}reset(){this.impl.reset()}addChangement(e){this.impl.addChangement(e)}addViewportChange(){this.impl.addViewportChange()}setPageColor(e){this.impl.pageColor=e,this.addViewportChange()}setPartialRendering(e){this.impl.partialRendering=e}setCursor(e,t,n){this.impl.cursorPosition=[e,t,n]}setPartialPageNumber(e){return e<=0||e>this.kModule.retrievePagesInfo().length?!1:(this.impl.partialRenderPage=e-1,this.addViewportChange(),!0)}getPartialPageNumber(){return this.impl.partialRenderPage+1}setOutineData(e){this.impl.outline=e,this.addViewportChange()}}}function ne(e,...t){return t.reduce((e,t)=>t(e),e)}var re=class{isCancellationRequested=!1;_onCancelled;_onCancelledResolveResolved;constructor(){let e,t;this._onCancelled=new Promise(n=>{e=n,t&&t(n)}),this._onCancelledResolveResolved=new Promise(n=>{t=n,e&&n(e)})}async cancel(){await this._onCancelledResolveResolved,this.isCancellationRequested=!0}isCancelRequested(){return this.isCancellationRequested}async consume(){(await this._onCancelledResolveResolved)()}wait(){return this._onCancelled}},ie=()=>new Promise(e=>requestAnimationFrame(e)),H;(function(e){e[e.Doc=0]=`Doc`,e[e.Pages=1]=`Pages`})(H||={});var U;(function(e){e[e.Layout=0]=`Layout`,e[e.Svg=1]=`Svg`,e[e.Semantics=2]=`Semantics`,e[e.PrepareCanvas=3]=`PrepareCanvas`,e[e.Canvas=4]=`Canvas`})(U||={});function ae(e){return class extends e{tmpl=document.createElement(`template`);stub=this.createElement(``);plugin;docKernel;resourceHeader=void 0;pages=[];domScale=1;track_mode=H.Doc;current_task=void 0;viewport;constructor(...e){if(super(...e),this.registerMode(`dom`),this.disposeList.push(()=>{this.dispose()}),this.plugin=this.opts.renderer,this.opts.domScale!==void 0){if(this.opts.domScale<=0)throw Error(`domScale must be positive`);this.domScale=this.opts.domScale}}dispose(){for(let e of this.pages)e.dispose();this.docKernel&&this.docKernel.free()}createElement(e){return this.tmpl.innerHTML=e,this.tmpl.content.firstElementChild}async mountDom(e){if(this.docKernel)throw Error(`already mounted`);this.hookedElem.innerHTML=``,this.resourceHeader=this.hookedElem.querySelector(`.typst-svg-resources`),this.docKernel=await this.plugin.renderer.mount_dom(this.kModule[g],this.hookedElem),this.docKernel.bind_functions({populateGlyphs:e=>{let t=this.createElement(e).firstElementChild;this.resourceHeader.append(t)}})}async cancelAnyway$dom(){if(this.current_task){let e=this.current_task;this.current_task=void 0,await e.cancel()}}retrieveDOMPages(){return Array.from(this.hookedElem.querySelectorAll(`.typst-dom-page`))}postRender$dom(){}rescale$dom(){}getDomViewport(e,t){let n=t.left,r=-t.top,i=t.right,a=e.innerHeight-t.top,o={x:0,y:r/this.domScale,width:Math.max(i-n,0)/this.domScale,height:Math.max(a-r,0)/this.domScale};return(o.width<=0||o.height<=0)&&(o.x=o.y=o.width=o.height=0),o}async rerender$dom(){let e=this.retrieveDOMState(),{x:t,y:n,width:r,height:i}=this.getDomViewport(e.window,e.boundingRect);if(!await this.docKernel.relayout(t,n,r,i))return;let a=new re;this.doRender$dom(a),this.current_task=a}async doRender$dom(e){let t=(t,n)=>{if(t&&!e.isCancelRequested()&&n)return n()},n=this.retrieveDOMPages().map(e=>{let{innerWidth:t,innerHeight:n}=window,r=e.getBoundingClientRect();return{inWindow:!(r.left>t||r.right<0||r.top>n||r.bottom<0),page:e}}),r=async r=>{if(await ie(),e.isCancelRequested())return;let i=n[r].page,a=i.getBoundingClientRect(),o=this.getDomViewport(window,a),s=e=>this.docKernel.need_repaint(r,o.x,o.y,o.width,o.height,e),c=e=>this.docKernel.repaint(r,o.x,o.y,o.width,o.height,e),l=n=>{if(!e.isCancelRequested())return t(s(n),()=>c(n))};await l(U.Layout);let u=(a.width?Number.parseFloat(i.getAttribute(`data-width`))/a.width:1)*this.domScale,d=(a.height?Number.parseFloat(i.getAttribute(`data-height`))/a.height:1)*this.domScale;o.x*=u,o.y*=d,o.y-=100,o.width*=u,o.height*=d,o.height+=200,await l(U.Svg),await l(U.Semantics),!e.isCancelRequested()&&(s(U.PrepareCanvas)?(async()=>{if(await c(U.PrepareCanvas),!e.isCancelRequested())return l(U.Canvas)})():await l(U.Canvas))},i=async t=>{for(let i=0;i(n||t.delete(e),r[o]=n,i[o]=a.canvas,this.plugin.canvasOptionsToRust(a)));return this[g].render_canvas(r,i,a)}async retrievePagesInfo(){let e=await this[g].get_pages_info();console.log(e);let t=[],n=e.page_count;for(let r=0;rnew _(async t=>await e.default(t));function ce(){return new J}async function le(){return(await t(()=>import(`./wasm-pack-shim-BnuNh1z7.js`),[],import.meta.url)).renderer_build_info()}var q=!0,J=class{renderer;rendererJs;constructor(){}async init(e){this.rendererJs=await(e?.getWrapper?.()||t(()=>import(`./wasm-pack-shim-BnuNh1z7.js`),[],import.meta.url));let n=this.rendererJs.TypstRendererBuilder;this.renderer=await m(e,se(this.rendererJs),n,{})}loadGlyphPack(e){return Promise.resolve()}createOptionsToRust(e){let t=new this.rendererJs.CreateSessionOptions;return e.format!==void 0&&(t.format=e.format),e.artifactContent!==void 0&&(t.artifact_content=e.artifactContent),t}canvasOptionsToRust(e){let t=new this.rendererJs.RenderPageImageOptions;if(e.pageOffset===void 0)throw Error(`pageOffset is required in reflexo v0.5.0`);if(t.page_off=e.pageOffset,e.cacheKey!==void 0&&(t.cache_key=e.cacheKey),e.backgroundColor!==void 0&&(t.background_color=e.backgroundColor),e.pixelPerPt!==void 0&&(t.pixel_per_pt=e.pixelPerPt),e.dataSelection!==void 0){let n=0;e.dataSelection.body?n|=1:e.canvas&&q&&(q=!1,console.warn(`dataSelection.body is not set but providing canvas for body`)),(e.dataSelection.text||e.dataSelection.annotation)&&console.error(`dataSelection.text and dataSelection.annotation are deprecated`),e.dataSelection.semantics&&(n|=8),t.data_selection=n}return t}retrievePagesInfoFromSession(e){return e.retrievePagesInfo()}renderCanvas(e){return this.withinOptionSession(e,async t=>this.renderer.render_page_to_canvas(t[g],e.canvas||void 0,this.canvasOptionsToRust(e)))}async inAnimationFrame(e){return new Promise((t,n)=>{requestAnimationFrame(()=>{try{t(e())}catch(e){n(e)}})})}async renderDisplayLayer(e,t,n){let r=e[g].pages_info.page_count,i=async(r,i)=>{let a=t[r].getContext(`2d`);if(!a)throw Error(`canvas context is null`);return await this.renderCanvas({...n,canvas:a,renderSession:e,pageOffset:i})},a=performance.now(),o=await(async()=>{let e=[];for(let t=0;ti(t,t)));return e})(),s=performance.now();return console.log(`display layer used: render = ${(s-a).toFixed(1)}ms`),o}renderTextLayer(e,t){let n=performance.now();e.forEach((e,n)=>{e.innerHTML=t[n].htmlSemantics[0]});let r=performance.now();console.log(`text layer used: render = ${(r-n).toFixed(1)}ms`)}async render(e){if(`format`in e&&e.format!==`vector`&&[`serde_json`,`js`,`ir`].includes(e.format))throw Error(`deprecated format ${e.format}, please use vector format`);return this.renderToCanvas(e)}async renderDom(e){if(`format`in e&&e.format!==`vector`&&[`serde_json`,`js`,`ir`].includes(e.format))throw Error(`deprecated format ${e.format}, please use vector format`);return this.withinOptionSession(e,async t=>{let n=new oe({...e,renderMode:`dom`,hookedElem:e.container,kModule:t,renderer:this});return await n.impl.mountDom(e.pixelPerPt),n})}async renderToCanvas(e){let t,n,r=e.container;r.style.visibility=`hidden`;let i=async(i,a)=>{try{n=await this.renderDisplayLayer(t,i,e),a()}finally{r.style.visibility=`visible`}};return this.withinOptionSession(e,async a=>{if(t=a,t[g].pages_info.page_count===0)throw Error(`No page found in session`);if(e.pixelPerPt!==void 0&&e.pixelPerPt<=0)throw Error(`Invalid typst.RenderOptions.pixelPerPt, should be a positive number `+e.pixelPerPt);let o=e.backgroundColor;if(o!==void 0&&!/^#[0-9a-f]{6}$/.test(o))throw Error(`Invalid typst.backgroundColor color for matching ^#?[0-9a-f]{6}$ `+o);t.pixelPerPt=e.pixelPerPt??h.PIXEL_PER_PT,t.backgroundColor=o??`#ffffff`;let s=performance.now(),c=new te(this.retrievePagesInfoFromSession(t),r,e),l=performance.now();console.log(`layer used: retrieve = ${(l-s).toFixed(1)}ms`),await i(c.canvasList,()=>c.resetLayout()),this.renderTextLayer(c.textLayerList,n)})}createModule(e){return Promise.resolve(new W(this,this.renderer.create_session(e&&this.createOptionsToRust({format:`vector`,artifactContent:e}))))}async createWorkerV0(e){return new K(this,await this.renderer.create_worker(e))}workerBridge(){return this.renderer.create_worker_bridge()}renderSvg(e,t){if(e instanceof W||t)throw Error(`removed api, please use renderToSvg({ renderSession, container }) instead`);return this.withinOptionSession(e,async t=>{let n;return e.data_selection&&(n=0,e.data_selection.body&&(n|=1),e.data_selection.defs&&(n|=2),e.data_selection.css&&(n|=4),e.data_selection.js&&(n|=8)),Promise.resolve(this.renderer.svg_data(t[g],n))})}renderSvgDiff(e){return e.window?this.renderer.render_svg_diff(e.renderSession[g],e.window.lo.x,e.window.lo.y,e.window.hi.x,e.window.hi.y):this.renderer.render_svg_diff(e.renderSession[g],0,0,1e33,1e33)}renderToSvg(e){return this.withinOptionSession(e,async t=>Promise.resolve(this.renderer.render_svg(t[g],e.container)))}getCustomV1(e){return Promise.resolve(this.renderer.get_customs(e.renderSession[g]))}resetSession(e){return this.renderer.reset(e[g])}manipulateData(e){return this.renderer.manipulate_data(e.renderSession[g],e.action??`reset`,e.data)}withinOptionSession(e,t){function n(e){return`artifactContent`in e}if(`renderSession`in e)return t(e.renderSession);if(n(e))return this.runWithSession(e,t);throw Error(`Invalid render options, should be one of RenderByContentOptions|RenderBySessionOptions`)}async runWithSession(e,t){let n=e,r=t;t||(n=void 0,r=e);let i=this.renderer.create_session(n&&this.createOptionsToRust(n));try{let e=await r(new W(this,i));return i.free(),e}catch(e){throw i.free(),e}}},Y=class{mTimes=new Map;mData=new Map;constructor(){}reset(){this.mTimes.clear(),this.mData.clear()}insertFile(e,t,n){this.mTimes.set(e,n),this.mData.set(e,t)}removeFile(e){this.mTimes.delete(e),this.mData.delete(e)}getMTime(e){if(e.startsWith(`/@memory/`)&&this.mTimes.has(e))return this.mTimes.get(e)}isFile(){return!0}getRealPath(e){return e}readAll(e){if(e.startsWith(`/@memory/`)&&this.mData.has(e))return this.mData.get(e)}},X=class{am;cache=new Map;constructor(e){this.am=e}resolvePath(e){return`https://packages.typst.org/preview/${e.name}-${e.version}.tar.gz`}pullPackageData(e){let t=new XMLHttpRequest;if(t.overrideMimeType(`text/plain; charset=x-user-defined`),t.open(`GET`,this.resolvePath(e),!1),t.send(null),t.status===200&&(t.response instanceof String||typeof t.response==`string`))return Uint8Array.from(t.response,e=>e.charCodeAt(0))}resolve(e,t){if(e.namespace!==`preview`)return;let n=this.resolvePath(e);if(this.cache.has(n))return this.cache.get(n)();let r=this.pullPackageData(e);if(!r)return;let i=`/@memory/fetch/packages/${e.namespace}/${e.name}/${e.version}`,a=[];t.untar(r,(e,t,n)=>{a.push([i+`/`+e,t,new Date(n)])});let o=()=>{for(let[e,t,n]of a)this.am.insertFile(e,t,n);return i};return this.cache.set(n,o),o()}};function ue(e){return Math.random().toString(36).replace(`0.`,e||``)}var de=typeof process<`u`&&process.versions!=null&&process.versions.node!=null,Z=class e{mainFilePath;cc;fr;ex;constructor(t){this.cc=t?.compiler||e.buildLocalCompiler,this.fr=t?.fontResolver||e.buildLocalFontResolver,this.ex=t?.renderer||e.buildLocalRenderer,this.mainFilePath=`/main.typ`,this.providers=[]}setCompiler(e){this.cc=e}async getFontResolver(){return typeof this.fr==`function`?this.fr=await this.fr():this.fr}async getCompiler(){return typeof this.cc==`function`?this.cc=await this.cc():this.cc}async getCompilerReset(){let e=await this.getCompiler();return await e.reset(),e}setRenderer(e){this.ex=e}async getRenderer(){return typeof this.ex==`function`?this.ex=await this.ex():this.ex}providers;use(...e){if(!this.providers)throw Error(`already prepare uses for instances`);this.providers.push(...e)}static preloadFontFromUrl(t){return e.preloadFonts([t])}static preloadFontData(t){return e.preloadFonts([t])}static preloadFonts(e){return{key:`access-model`,forRoles:[`compiler`],provides:[T(e)]}}static disableDefaultFontAssets(){return{key:`access-model`,forRoles:[`compiler`],provides:[S()]}}static preloadFontAssets(e){return{key:`access-model`,forRoles:[`compiler`],provides:[C(e)]}}static withAccessModel(e){return{key:`access-model`,forRoles:[`compiler`],provides:[D(e)]}}static withPackageRegistry(e){return{key:`package-registry`,forRoles:[`compiler`],provides:[E(e)]}}static fetchPackageRegistry(e){let t=e||new Y;return{key:`package-registry$fetch`,forRoles:[`compiler`],provides:[...e?[]:[D(t)],E(new X(t))]}}static fetchPackageBy(e,t){class n extends X{pullPackageData(e){return t(e,this.resolvePath(e))}}return{key:`package-registry$lambda`,forRoles:[`compiler`],provides:[E(new n(e))]}}ccOptions;setCompilerInitOptions(e){this.requireIsUninitialized(`compiler`,this.cc),this.ccOptions=e}exOptions;setRendererInitOptions(e){this.requireIsUninitialized(`renderer`,this.ex),this.exOptions=e}setMainFilePath(e){this.mainFilePath=e}getMainFilePath(){return this.mainFilePath}removeTmp(e){return e.mainFilePath.startsWith(`/tmp/`)?this.unmapShadow(e.mainFilePath):Promise.resolve()}async setFonts(e){let t=await this.getFontResolver();for(let n of e)await t.addLazyFont(n,`blob`in n?n.blob:p(n),n);let n=await this.getCompiler();await t.build(async e=>n.setFonts(e))}async addSource(e,t){(await this.getCompiler()).addSource(e,t)}async resetShadow(){(await this.getCompiler()).resetShadow()}async mapShadow(e,t){(await this.getCompiler()).mapShadow(e,t)}async unmapShadow(e){(await this.getCompiler()).unmapShadow(e)}async vector(e){let t=await this.getCompileOptions(e);return(await this.getCompilerReset()).compile(t).then(e=>e.result).finally(()=>this.removeTmp(t))}async pdf(e){let t=await this.getCompileOptions(e);return t.format=O.pdf,(await this.getCompilerReset()).compile(t).then(e=>e.result).finally(()=>this.removeTmp(t))}async svg(e){return this.transientRender(e,(t,n)=>t.renderSvg({...e,renderSession:n}))}async canvas(e,t){return this.transientRender(t,(n,r)=>n.renderToCanvas({container:e,...t,renderSession:r}))}async query(e){let t=await this.getCompileOptions(e);return(await this.getCompilerReset()).query({...e,...t}).finally(()=>this.removeTmp(t))}async getSemanticTokenLegend(){return(await this.getCompilerReset()).getSemanticTokenLegend()}async getSemanticTokens(e){let t=await this.getCompileOptions(e);return(await this.getCompilerReset()).getSemanticTokens({mainFilePath:t.mainFilePath,resultId:e.resultId}).finally(()=>this.removeTmp(t))}async getCompileOptions(e){if(e===void 0)return{mainFilePath:this.mainFilePath,diagnostics:`none`};if(typeof e==`string`)throw Error(`please specify opts as {mainContent: '...'} or {mainFilePath: '...'}`);if(`mainFilePath`in e)return{...e,diagnostics:`none`};{let t=`/tmp/${ue()}.typ`;return await this.addSource(t,e.mainContent),{mainFilePath:t,inputs:e.inputs,diagnostics:`none`}}}async getVector(e){if(e&&`vectorData`in e)return e.vectorData;let t=await this.getCompileOptions(e);return(await this.getCompiler()).compile(t).then(e=>e.result).finally(()=>this.removeTmp(t))}async transientRender(e,t){let n=await this.getRenderer();if(!n)throw Error(`does not provide renderer instance`);let r=await this.getVector(e);return await n.runWithSession(async e=>(n.manipulateData({renderSession:e,action:`reset`,data:r}),t(n,e)))}prepareUseOnce=void 0;async prepareUse(){return this.prepareUseOnce?this.prepareUseOnce:this.prepareUseOnce=this.doPrepareUse()}async doPrepareUse(){if(!this.providers)return;let t=await Promise.all(this.providers.map(e=>typeof e==`function`?e():e));if(this.providers=[],Q==this&&!t.some(e=>e.key.includes(`package-registry`)||e.key.includes(`access-model`)))if(de){let t=Function(`m`,`return import(m)`);try{let n=new Y,{default:r}=await t(`sync-request`);Q.use(e.withAccessModel(n),e.fetchPackageBy(n,(e,t)=>{let n=r(`GET`,t);if(n.statusCode===200)return n.getBody(void 0)}))}catch{}}else Q.use(e.fetchPackageRegistry());let n=await Promise.all(this.providers.map(e=>typeof e==`function`?e():e)),r=this.ccOptions||={},i=r.beforeBuild||=[],a=this.exOptions||={},o=a.beforeBuild||=[];for(let e of[...t,...n])e.forRoles.includes(`compiler`)&&(this.requireIsUninitialized(`compiler`,this.cc),i.push(...e.provides)),e.forRoles.includes(`renderer`)&&(this.requireIsUninitialized(`renderer`,this.ex),o.push(...e.provides));this.providers=void 0}requireIsUninitialized(e,t,n){if(t&&typeof t!=`function`)throw Error(`${e} has been initialized: ${t}`)}static async buildLocalCompiler(){let{createTypstCompiler:e}=await t(()=>import(`./compiler-Doo7uL6g.js`),[],import.meta.url);await this.prepareUse();let n=e();return await n.init(this.ccOptions),n}static async buildLocalFontResolver(){let{createTypstFontBuilder:e}=await t(()=>import(`./compiler-Doo7uL6g.js`),[],import.meta.url);await this.prepareUse();let n=e();return await n.init(this.ccOptions),n}static async buildGlobalCompiler(){let{createGlobalCompiler:e}=await t(()=>import(`./global-compiler-D1EEBbpA.js`),[],import.meta.url),{createTypstCompiler:n}=await t(()=>import(`./compiler-Doo7uL6g.js`),[],import.meta.url);return await this.prepareUse(),e(n,this.ccOptions)}static async buildLocalRenderer(){let{createTypstRenderer:e}=await t(()=>import(`./renderer-BMLnfeSl.js`),[],import.meta.url);await this.prepareUse();let n=e();return await n.init(this.exOptions),n}static async buildGlobalRenderer(){let{createGlobalRenderer:e}=await t(()=>import(`./global-renderer-AKzBLvRw.js`),[],import.meta.url),{createTypstRenderer:n}=await t(()=>import(`./renderer-BMLnfeSl.js`),[],import.meta.url);return await this.prepareUse(),e(n,this.exOptions)}},Q=new Z({compiler:Z.buildGlobalCompiler,renderer:Z.buildGlobalRenderer}),fe=``+new URL(`typst_ts_renderer_bg-DRRWm1TP.wasm`,import.meta.url).href,pe={class:`typst-viewer`},me={class:`typst-toolbar`},he={key:0,class:`typst-loading`,role:`status`},ge={key:1,class:`typst-error`},$={key:2,class:`typst-pages`,"aria-label":`Typst preview pages`},_e=[`aria-label`],ve=[`innerHTML`],ye=`https://cdn.jsdelivr.net/npm/@myriaddreamin/typst-ts-web-compiler@0.7.0/pkg/typst_ts_web_compiler_bg.wasm`,be=e(s({__name:`TypstViewer`,props:{source:{},filename:{},compilerWasmUrl:{},exportAdapter:{type:Function}},setup(e){let t=e,s=r(`idle`),p=r([]),m=r(``),h=0,g=!1,_=()=>t.compilerWasmUrl||window.__FLYFISH_TYPST_COMPILER_WASM_URL__||ye,y=()=>{g||=(Q.setCompilerInitOptions({getModule:_}),Q.setRendererInitOptions({getModule:()=>fe}),!0)},b=e=>e.replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e]),x=(e,t)=>{let n=Number.parseFloat(e.getAttribute(t)||``);return Number.isFinite(n)&&n>0?n:0},S=e=>{e.querySelectorAll(`script`).forEach(e=>e.remove()),e.querySelectorAll(`*`).forEach(e=>{Array.from(e.attributes).forEach(t=>{let n=t.name.toLowerCase(),r=t.value.trim().toLowerCase();(n.startsWith(`on`)||r.startsWith(`javascript:`))&&e.removeAttribute(t.name)})})},C=e=>new XMLSerializer().serializeToString(e),w=e=>{let t=new DOMParser().parseFromString(e,`image/svg+xml`),n=t.querySelector(`parsererror`);if(n)throw Error(n.textContent||`Typst SVG 解析失败`);S(t);let r=t.documentElement,i=Array.from(r.children).filter(e=>[`style`,`defs`].includes(e.tagName.toLowerCase())).map(C).join(``),a=Array.from(r.querySelectorAll(`g.typst-page`)),o=x(r,`data-width`)||x(r,`width`)||596,s=x(r,`data-height`)||x(r,`height`)||842;return a.length?a.map((e,t)=>{let n=x(e,`data-page-width`)||o,r=x(e,`data-page-height`)||s,a=e.cloneNode(!0);a.setAttribute(`transform`,`translate(0, 0)`);let c=[``,i,C(a),``].join(``);return{index:t+1,width:n,height:r,svg:c}}):[{index:1,width:o,height:s,svg:e}]},T=e=>Array.isArray(e)?e.map(e=>e&&typeof e==`object`&&`message`in e?`${`severity`in e?String(e.severity):`Error`}: ${String(e.message)}`:String(e)).join(` `):e instanceof Error?e.message:String(e),E=u(()=>{if(!p.value.length)return`0 pages`;let e=p.value[0];return`${p.value.length} pages / ${Math.round(e.width)} x ${Math.round(e.height)} pt`}),D=()=>` `,O=()=>`${D()}
${p.value.map(e=>{let t=v(e.width),n=v(e.height);return`
${e.svg}
`}).join(``)}
`,k=()=>{let e=p.value[0],t=e?v(e.width):`596px`;return` @page { size: ${t} ${e?v(e.height):`842px`}; margin: 0; } @media print { html, body { width: ${t}; min-width: ${t}; margin: 0 !important; background: #ffffff !important; } .typst-export-document { display: block !important; margin: 0 !important; padding: 0 !important; background: #ffffff !important; } .typst-export-page { display: block !important; margin: 0 !important; border: 0 !important; box-shadow: none !important; break-after: page; page-break-after: always; } .typst-export-page:last-child { break-after: auto; page-break-after: auto; } .typst-export-page svg { width: 100% !important; height: auto !important; } } `},A=()=>{if(!t.exportAdapter||!p.value.length){t.exportAdapter?.(null);return}t.exportAdapter({includeDocumentStyles:!1,print:!0,exportHtml:!0,printStyle:k,toHtml:O})};return n(()=>t.source,async()=>{let e=++h;s.value=`loading`,m.value=``,p.value=[],t.exportAdapter?.(null);try{y();let n=await Q.svg({mainContent:t.source,data_selection:{body:!0,defs:!0,css:!0,js:!1}});if(e!==h)return;p.value=w(n),s.value=`ready`,A()}catch(t){if(e!==h)return;m.value=T(t),s.value=`error`}},{immediate:!0}),c(()=>{h+=1,t.exportAdapter?.(null)}),(t,n)=>(f(),d(`div`,pe,[l(`header`,me,[l(`div`,null,[l(`strong`,null,i(e.filename||`Typst document`),1),l(`span`,null,i(s.value===`ready`?E.value:`Typst WASM renderer`),1)]),l(`em`,null,i(s.value===`loading`?`正在编译`:s.value===`error`?`编译失败`:`已渲染`),1)]),s.value===`loading`?(f(),d(`div`,he,[...n[0]||=[l(`span`,{"aria-hidden":`true`},null,-1),l(`strong`,null,`正在解析 Typst`,-1),l(`p`,null,`加载编译器并生成页面预览...`,-1)]])):s.value===`error`?(f(),d(`div`,ge,[n[1]||=l(`strong`,null,`Typst 渲染失败`,-1),l(`pre`,null,i(m.value),1)])):(f(),d(`main`,$,[(f(!0),d(ee,null,o(p.value,e=>(f(),d(`section`,{key:e.index,class:`typst-page-shell`,style:a({"--typst-page-width":`${e.width}px`,"--typst-page-height":`${e.height}px`}),"aria-label":`Page ${e.index}`},[l(`div`,{class:`typst-page-content`,innerHTML:e.svg},null,8,ve)],12,_e))),128))]))]))}}),[[`__scopeId`,`data-v-7e2db9f8`]]);export{le as a,F as c,j as d,be as default,ce as i,M as l,J as n,O as o,K as r,k as s,W as t,P as u};