import*as e from"@react-pdf/primitives";export*from"@react-pdf/primitives";import r from"queue";import{useRef as o,useState as t,useEffect as n,useCallback as i,forwardRef as a}from"react";import l from"@react-pdf/font";import c from"@react-pdf/render";import d from"@react-pdf/pdfkit";import s from"@react-pdf/layout";import{upperFirst as u}from"@react-pdf/fns";import p from"@react-pdf/reconciler";import{jsx as m}from"react/jsx-runtime";const f=(e,r)=>{let{style:o,children:t,...n}=r;return{type:e,box:{},style:o||{},props:n||{},children:[]}},v=e=>({type:"TEXT_INSTANCE",value:e}),h=(e,r)=>{const o="TEXT"===e.type||"LINK"===e.type||"TSPAN"===e.type||"NOTE"===e.type;"TEXT_INSTANCE"!==r.type||o?e.children.push(r):console.warn(`Invalid '${r.value}' string child outside component`)},y=(e,r)=>{"ROOT"===e.type?e.document=r:h(e,r)},w=(e,r,o)=>{var t;const n=null===(t=e.children)||void 0===t?void 0:t.indexOf(o);void 0!==n&&-1!==n&&r&&e.children.splice(n,0,r)},T=(e,r)=>{var o;const t=null===(o=e.children)||void 0===o?void 0:o.indexOf(r);void 0!==t&&-1!==t&&e.children.splice(t,1)},b=(e,r)=>{var o;const t=null===(o=e.children)||void 0===o?void 0:o.indexOf(r);void 0!==t&&-1!==t&&e.children.splice(t,1)},g=(e,r,o)=>{e.value=o},C=(e,r,o,t,n)=>{const{style:i,...a}=n;e.props=a,e.style=i},P=e=>{let{onChange:r=(()=>{})}=e;return p({appendChild:h,appendChildToContainer:y,commitTextUpdate:g,commitUpdate:C,createInstance:f,createTextInstance:v,insertBefore:w,removeChild:T,removeChildFromContainer:b,resetAfterCommit:r})};var S={version:"4.5.1"};const{version:N}=S,A=new l;let O;const _={},L=e=>{const r={type:"ROOT",document:null};O=O||P({onChange:()=>{var e;const r=(null===(e=_.change)||void 0===e?void 0:e.slice())||[];for(let e=0;e{O.updateContainer(e,o,null,r)};e&&t(e);const n=async function(e){void 0===e&&(e=!0);const o=r.document.props||{},{pdfVersion:t,language:n,pageLayout:i,pageMode:a,title:l,author:p,subject:m,keywords:f,creator:v="react-pdf",producer:h="react-pdf",creationDate:y=new Date,modificationDate:w,ownerPassword:T,userPassword:b,permissions:g}=o,C=new d({compress:e,pdfVersion:t,lang:n,displayTitle:!0,autoFirstPage:!1,ownerPassword:T,userPassword:b,permissions:g,pageLayout:i,info:(P={Title:l,Author:p,Subject:m,Keywords:f,Creator:v,Producer:h,CreationDate:y,ModificationDate:w},Object.fromEntries(Object.entries(P).filter((e=>{let[,r]=e;return void 0!==r}))))});var P;a&&(C._root.data.PageMode=u(a));const S=await s(r.document,A);return{layout:S,fileStream:c(C,S)}},i=function(e){void 0===e&&(e={}),r.document.props.onRender&&r.document.props.onRender(e)};return{on:(e,r)=>{_[e]||(_[e]=[]),_[e].push(r)},container:r,toBlob:async()=>{const e=[],{layout:r,fileStream:o}=await n();return new Promise(((t,n)=>{o.on("data",(r=>{e.push(r instanceof Uint8Array?r:new Uint8Array(r))})),o.on("end",(()=>{try{const o=new Blob(e,{type:"application/pdf"});i({blob:o,_INTERNAL__LAYOUT__DATA_:r}),t(o)}catch(e){n(e)}}))}))},toBuffer:async()=>{const{layout:e,fileStream:r}=await n();return i({_INTERNAL__LAYOUT__DATA_:e}),r},toString:async()=>{"development"===process.env.NODE_ENV&&console.warn("`toString` is deprecated and will be removed in next major release");let e="";const{fileStream:r}=await n(!1);return new Promise(((o,t)=>{try{r.on("data",(r=>{e+=r})),r.on("end",(()=>{i(),o(e)}))}catch(e){t(e)}}))},removeListener:(e,r)=>{if(!_[e])return;const o=_[e].indexOf(r);o>-1&&_[e].splice(o,1)},updateContainer:t}},D=A,x={create:e=>e},E=function(e){let{document:a}=void 0===e?{}:e;const l=o(null),[c,d]=t({url:null,blob:null,error:null,loading:!!a});n((()=>{const e=r({autostart:!0,concurrency:1}),o=()=>{d((e=>({...e,loading:!0}))),e.splice(0,e.length,(()=>c.error?Promise.resolve():l.current.toBlob()))};return l.current=L(),l.current.on("change",o),a&&l.current.updateContainer(a),e.on("error",(e=>{console.error(e),d((r=>({...r,loading:!1,error:e})))})),e.on("success",(e=>{d({blob:e,error:null,loading:!1,url:URL.createObjectURL(e)})})),()=>{e.end(),l.current.removeListener("change",o)}}),[]),n((()=>()=>{c.url&&URL.revokeObjectURL(c.url)}),[c.url]);const s=i((e=>{l.current.updateContainer(e)}),[]);return[c,s]},R=e=>{let{title:r,style:o,className:t,children:i,innerRef:a,showToolbar:l=!0,...c}=e;const[d,s]=E();n((()=>s(i)),[i]);const u=d.url?`${d.url}#toolbar=${l?1:0}`:null;return m("iframe",{src:u,title:r,ref:a,style:o,className:t,...c})},B=e=>{let{document:r,children:o}=e;const[t,i]=E();return n((()=>i(r)),[r]),r?o(t):(console.warn("You should pass a valid document to BlobProvider"),null)},U=a(((e,r)=>{let{fileName:o="document.pdf",document:t,children:i,onClick:a,href:l,...c}=e;const[d,s]=E();if(n((()=>s(t)),[t]),!t)return console.warn("You should pass a valid document to PDFDownloadLink"),null;return m("a",{href:d.url,download:o,onClick:e=>{d&&window.navigator.msSaveBlob&&window.navigator.msSaveBlob(d.blob,o),"function"==typeof a&&a(e,d)},ref:r,...c,children:"function"==typeof i?i(d):i})})),F=e=>{throw new Error(`${e} is a Node specific API. You're either using this method in a browser, or your bundler is not loading react-pdf from the appropriate web build.`)},I=()=>{F("renderToStream")},j=()=>{F("renderToBuffer")},k=()=>{F("renderToString")},Y=()=>{F("renderToFile")},V=()=>{F("render")};var $={pdf:L,usePDF:E,Font:D,version:N,StyleSheet:x,PDFViewer:R,BlobProvider:B,PDFDownloadLink:U,renderToStream:I,renderToString:k,renderToFile:Y,render:V,...e};export{B as BlobProvider,D as Font,U as PDFDownloadLink,R as PDFViewer,x as StyleSheet,P as createRenderer,$ as default,L as pdf,V as render,j as renderToBuffer,Y as renderToFile,I as renderToStream,k as renderToString,E as usePDF,N as version};