@uurtech/jdf 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/jdfjs.cjs +2 -2
- package/dist/jdfjs.cjs.map +1 -1
- package/dist/jdfjs.js +2 -2
- package/dist/jdfjs.js.map +1 -1
- package/package.json +1 -1
- package/src/auto-init.ts +44 -22
package/dist/jdfjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var J={A3:{width:297,height:420},A4:{width:210,height:297},A5:{width:148,height:210},Letter:{width:215.9,height:279.4},Legal:{width:215.9,height:355.6},Tabloid:{width:279.4,height:431.8}},N={top:25,right:20,bottom:25,left:20},A=3.7795275591,Z=96,V=1.3333333333;function f(e,t="mm"){switch(t){case "mm":return e*A;case "in":return e*Z;case "pt":return e*V;case "px":return e;default:return e*A}}function R(e,t="portrait"){let n=typeof e=="string"?J[e]:e;return t==="landscape"?{width:n.height,height:n.width}:{...n}}function H(e){if(typeof e=="number")return `${e}px`;if(typeof e=="string")return e;let{top:t=0,right:n=0,bottom:r=0,left:o=0}=e;return `${t}px ${n}px ${r}px ${o}px`}function m(e){let t={};if(e.fontFamily&&(t["font-family"]=e.fontFamily),e.fontSize&&(t["font-size"]=`${e.fontSize*1.333}px`),e.fontWeight&&(t["font-weight"]=String(e.fontWeight)),e.fontStyle&&(t["font-style"]=e.fontStyle),e.color&&(t.color=e.color),e.backgroundColor&&(t["background-color"]=e.backgroundColor),e.textAlign&&(t["text-align"]=e.textAlign),e.textDecoration){let n=e.textDecoration==="strikethrough"?"line-through":e.textDecoration;t["text-decoration"]=n;}return e.lineHeight&&(t["line-height"]=String(e.lineHeight)),e.letterSpacing!=null&&(t["letter-spacing"]=typeof e.letterSpacing=="number"?`${e.letterSpacing}px`:e.letterSpacing),e.padding!=null&&(t.padding=H(e.padding)),e.margin!=null&&(t.margin=H(e.margin)),e.marginTop!=null&&(t["margin-top"]=`${e.marginTop}px`),e.marginBottom!=null&&(t["margin-bottom"]=`${e.marginBottom}px`),e.border&&(t.border=e.border),e.borderRadius!=null&&(t["border-radius"]=typeof e.borderRadius=="number"?`${e.borderRadius}px`:e.borderRadius),e.opacity!=null&&(t.opacity=String(e.opacity)),t}function E(e,t){if(!e)return {};if(typeof e=="string")return m(t[e]||{});if(Array.isArray(e)){let n={};for(let r of e)n={...n,...t[r]||{}};return m(n)}return m(e)}function b(e,t){for(let[n,r]of Object.entries(t))e.style.setProperty(n,r);}function L(e){if(!e)return null;let t=typeof e=="string"?e:e.target;if(typeof e=="string"?e.startsWith("#"):e.type==="internal"){let r=t.replace(/^#/,"").match(/^page-(\d+)$/i);return r?{href:t,internal:true,pageIndex:Number(r[1])-1}:{href:t,internal:true}}return {href:t,internal:false}}function k(e,t,n){e.href=t.href,t.internal?e.addEventListener("click",r=>{t.pageIndex!=null&&n&&(r.preventDefault(),n(t.pageIndex));}):(e.target="_blank",e.rel="noopener noreferrer");}var j="http://www.w3.org/2000/svg";function w(e,t){let n=document.createElement("div");_(n,e);let r=null;switch(e.type){case "text":r=q(e,t);break;case "richtext":r=B(e,t);break;case "image":r=Q(e,t);break;case "table":r=te(e,t);break;case "list":r=ne(e,t);break;case "shape":r=re(e);break;case "collapsible":r=oe(e,t);break;case "toc":r=ie(e,t);break}return r?(n.appendChild(r),n):null}function _(e,t){let n=t;n.position&&(e.style.position="absolute",n.position.x!=null&&(e.style.left=`${f(n.position.x)}px`),n.position.y!=null&&(e.style.top=`${f(n.position.y)}px`)),n.width!=null&&(e.style.width=`${f(n.width)}px`),n.height!=null&&(e.style.height=`${f(n.height)}px`);}function q(e,t){let n=W(e.heading),r=document.createElement(n);r.className="jdfjs-text",r.style.margin="0",r.style.whiteSpace="pre-wrap",b(r,E(e.style,t.styles)),e.align&&(r.style.textAlign=e.align);let o=L(e.link);if(o){let s=document.createElement("a");k(s,o,t.onNavigatePage),s.className="jdfjs-link",s.textContent=e.content||"",r.appendChild(s);}else r.textContent=e.content||"";return r}function W(e){return e===true?"h1":typeof e=="number"&&e>=1&&e<=6?"h"+e:"p"}function B(e,t){let n=document.createElement("p");n.className="jdfjs-richtext",n.style.margin="0",b(n,E(e.style,t.styles));for(let r of e.runs||[])n.appendChild(X(r,t));return n}function G(e,t){let n={};if(e.style)if(typeof e.style=="string")Object.assign(n,m(t[e.style]||{}));else if(Array.isArray(e.style))for(let o of e.style)Object.assign(n,m(t[o]||{}));else Object.assign(n,m(e.style));e.bold&&(n["font-weight"]="bold"),e.italic&&(n["font-style"]="italic");let r=[];return e.underline&&r.push("underline"),e.strikethrough&&r.push("line-through"),r.length&&(n["text-decoration"]=r.join(" ")),e.color&&(n.color=e.color),e.fontSize&&(n["font-size"]=`${e.fontSize*1.333}px`),e.fontFamily&&(n["font-family"]=e.fontFamily),n}function X(e,t){let n=L(e.link),r=n?document.createElement("a"):document.createElement("span");return n&&(k(r,n,t.onNavigatePage),r.classList.add("jdfjs-link")),b(r,G(e,t.styles)),r.textContent=e.text,r}function U(e,t){if(!e)return;let n=e[t];if(n&&typeof n=="object"&&"data"in n)return n;let r=e.images?.[t];if(r)return r}function K(e,t){if(e.src?.startsWith("data:")||e.src?.startsWith("http"))return e.src;if(e.resource){let n=U(t,e.resource);if(n?.data){let r=n.mimeType||"image/png";return n.data.startsWith("data:")?n.data:`data:${r};base64,${n.data}`}if(n?.path)return n.path}return e.src||""}function Q(e,t){let n=document.createElement("div");n.className="jdfjs-image",n.style.width="100%",n.style.height="100%";let r=document.createElement("img");switch(r.src=K(e,t.resources),r.alt=e.alt||"",r.style.display="block",r.style.width="100%",r.style.height="100%",e.fit){case "cover":r.style.objectFit="cover";break;case "fill":r.style.objectFit="fill";break;case "none":r.style.objectFit="none";break;default:r.style.objectFit="contain";}return b(r,E(e.style,t.styles)),n.appendChild(r),n}function Y(e){return typeof e=="string"?e:e.content}function ee(e){return typeof e=="string"?{}:{colspan:e.colspan,rowspan:e.rowspan}}function te(e,t){let n=document.createElement("div");n.className="jdfjs-table-wrap",b(n,E(e.style,t.styles)),n.style.overflowX="auto";let r=(()=>{let l=e.headerStyle;if(!l)return {};if(typeof l=="string")return m(t.styles[l]||{});if(Array.isArray(l)){let p={};for(let u of l)p={...p,...m(t.styles[u]||{})};return p}return m(l)})(),o=(()=>{let l=e.rowStyle;if(!l)return {};if(typeof l=="string")return m(t.styles[l]||{});if(Array.isArray(l)){let p={};for(let u of l)p={...p,...m(t.styles[u]||{})};return p}return m(l)})(),s=(()=>{let l=e.alternateRowStyle;if(!l){let p=e.alternatingRowColor;return p?{"background-color":p}:{}}if(typeof l=="string")return m(t.styles[l]||{});if(Array.isArray(l)){let p={};for(let u of l)p={...p,...m(t.styles[u]||{})};return p}return m(l)})(),a=(()=>{let l=e.borders;return l===false?{outer:false,inner:false}:l===true||l===void 0?{outer:true,inner:true,color:"#e2e8f0",width:1}:{outer:true,inner:true,color:"#e2e8f0",width:1,...l}})(),d=e.headers??e.columns?.map(l=>l.header||"").filter(l=>l!==""),c=l=>e.columns?.[l]?.align,i=document.createElement("table");if(i.style.width="100%",i.style.borderCollapse="collapse",i.style.fontSize="14px",a.outer&&(i.style.border=`${a.width||1}px solid ${a.color||"#e2e8f0"}`),d&&d.length>0){let l=document.createElement("thead"),p=document.createElement("tr");b(p,r),d.forEach((u,x)=>{let g=document.createElement("th");g.textContent=u,g.style.padding="8px 12px",g.style.fontWeight="600",g.style.background="#f8fafc",g.style.textAlign=c(x)||"left",a.inner&&(g.style.border=`${a.width||1}px solid ${a.color||"#e2e8f0"}`),p.appendChild(g);}),l.appendChild(p),i.appendChild(l);}let h=document.createElement("tbody");return e.rows.forEach((l,p)=>{let u=document.createElement("tr");b(u,o),p%2===1&&b(u,s),l.forEach((x,g)=>{let y=document.createElement("td");y.textContent=Y(x);let v=ee(x);v.colspan&&(y.colSpan=v.colspan),v.rowspan&&(y.rowSpan=v.rowspan),y.style.padding="8px 12px",y.style.verticalAlign="top",y.style.textAlign=c(g)||"left",a.inner&&(y.style.border=`${a.width||1}px solid ${a.color||"#e2e8f0"}`),u.appendChild(y);}),h.appendChild(u);}),i.appendChild(h),n.appendChild(i),n}function ne(e,t){let n=document.createElement("div");n.className="jdfjs-list-wrap",b(n,E(e.style,t.styles));let r=e.listType??(e.ordered?"ordered":"unordered"),o=z(r);return $(o,e.items||[],r),n.appendChild(o),n}function z(e){let t=document.createElement(e==="ordered"?"ol":"ul");return t.style.margin="0",t.style.paddingLeft="20px",t.style.listStyle=e==="ordered"?"decimal":"disc",t}function $(e,t,n,r){for(let o of t){let s=document.createElement("li");if(s.style.fontSize="14px",s.style.lineHeight="1.6",s.appendChild(document.createTextNode(o.content)),o.children?.length){let a=o.listType||n,d=z(a);d.style.marginTop="4px",$(d,o.children,a),s.appendChild(d);}e.appendChild(s);}}function re(e){let t=document.createElement("div");t.className="jdfjs-shape",t.style.width="100%",t.style.height="100%";let n=e.width??100,r=e.height??100,o=e.fill??"none",s=(()=>{let i=e.stroke;return typeof i=="string"?i:i?.color?i.color:"none"})(),a=(()=>{let i=e.stroke;return typeof i=="object"&&i?.width!=null?i.width:e.strokeWidth??0})(),d=document.createElementNS(j,"svg");d.setAttribute("width","100%"),d.setAttribute("height","100%"),d.setAttribute("viewBox",`0 0 ${n} ${r}`),d.setAttribute("preserveAspectRatio","none"),d.style.display="block",d.style.overflow="visible";let c=null;switch(e.shape){case "rect":{let i=document.createElementNS(j,"rect");i.setAttribute("x","0"),i.setAttribute("y","0"),i.setAttribute("width",String(n)),i.setAttribute("height",String(r)),e.borderRadius&&i.setAttribute("rx",String(e.borderRadius)),c=i;break}case "circle":{let i=document.createElementNS(j,"circle");i.setAttribute("cx",String(n/2)),i.setAttribute("cy",String(r/2)),i.setAttribute("r",String(Math.min(n,r)/2)),c=i;break}case "ellipse":{let i=document.createElementNS(j,"ellipse");i.setAttribute("cx",String(n/2)),i.setAttribute("cy",String(r/2)),i.setAttribute("rx",String(n/2)),i.setAttribute("ry",String(r/2)),c=i;break}case "line":{let i=document.createElementNS(j,"line");return i.setAttribute("x1","0"),i.setAttribute("y1","0"),i.setAttribute("x2",String(n)),i.setAttribute("y2",String(r)),i.setAttribute("stroke",s==="none"?o!=="none"?o:"currentColor":s),i.setAttribute("stroke-width",String(a||.3)),d.appendChild(i),t.appendChild(d),t}case "path":{let i=document.createElementNS(j,"path");i.setAttribute("d",e.path||""),i.setAttribute("fill-rule","evenodd"),c=i;break}}return c&&(c.setAttribute("fill",o),c.setAttribute("stroke",s),a&&c.setAttribute("stroke-width",String(a)),d.appendChild(c)),t.appendChild(d),t}function oe(e,t){let n=document.createElement("div");n.className="jdfjs-collapsible",b(n,E(e.style,t.styles)),n.style.border="1px solid #e2e8f0",n.style.borderRadius="8px",n.style.overflow="hidden",n.style.background="#ffffff";let r=document.createElement("button");r.type="button",r.className="jdfjs-collapsible-header",r.style.width="100%",r.style.display="flex",r.style.alignItems="center",r.style.gap="8px",r.style.padding="10px 16px",r.style.fontSize="14px",r.style.fontWeight="500",r.style.background="#f8fafc",r.style.border="0",r.style.cursor="pointer",r.style.textAlign="left";let o=document.createElement("span");o.textContent="\u25B6",o.style.fontSize="10px",o.style.transition="transform 0.15s ease";let s=document.createElement("span");s.textContent=e.title||"Section",s.style.flex="1",r.appendChild(o),r.appendChild(s),n.appendChild(r);let a=document.createElement("div");a.className="jdfjs-collapsible-body",a.style.padding="12px 16px",a.style.position="relative";let d=e.expanded??false,c=()=>{a.style.display=d?"block":"none",o.style.transform=d?"rotate(90deg)":"rotate(0deg)";};c(),r.addEventListener("click",()=>{d=!d,c();});for(let i of e.elements||[]){let h=w(i,{...t,path:[...t.path,"elements"]});h&&a.appendChild(h);}return n.appendChild(a),n}function ie(e,t){let n=document.createElement("div");n.className="jdfjs-toc",b(n,E(e.style,t.styles));let r=e.depth??6,o=[];t.document.pages.forEach((s,a)=>{for(let d of s.elements){if(d.type!=="text")continue;let c=d,i=c.tocEntry||(c.heading?c.content:null);if(!i)continue;let h=typeof c.tocLevel=="number"?c.tocLevel:typeof c.heading=="number"?c.heading:1;h>r||o.push({title:i,pageIndex:a,level:h});}});for(let s of o){let a=document.createElement("button");a.type="button",a.className="jdfjs-toc-entry",a.style.display="flex",a.style.alignItems="baseline",a.style.gap="8px",a.style.width="100%",a.style.background="transparent",a.style.border="0",a.style.borderBottom="1px dotted #e2e8f0",a.style.padding=`6px 8px 6px ${(s.level-1)*16+8}px`,a.style.cursor="pointer",a.style.fontSize="14px",a.style.color="#334155",a.style.textAlign="left";let d=document.createElement("span");d.textContent=s.title,d.style.flex="1";let c=document.createElement("span");c.style.flex="1",c.style.borderBottom="1px dotted #cbd5e1",c.style.alignSelf="end",c.style.marginBottom="4px";let i=document.createElement("span");i.textContent=String(s.pageIndex+1),i.style.fontFamily="JetBrains Mono, monospace",i.style.fontSize="12px",i.style.color="#94a3b8",i.style.flexShrink="0",a.appendChild(d),a.appendChild(c),a.appendChild(i),a.addEventListener("click",()=>t.onNavigatePage?.(s.pageIndex)),n.appendChild(a);}return n}function D(e,t){return e.replace(/\{\{pageNumber\}\}/g,String(t.pageNumber)).replace(/\{\{totalPages\}\}/g,String(t.totalPages)).replace(/\{\{title\}\}/g,t.title).replace(/\{\{author\}\}/g,t.author)}async function P(e,t,n={}){let r=O(e);r.classList.add("jdfjs-loading");try{let o=await fetch(t,{headers:{Accept:"application/json,application/jdf+json"}});if(!o.ok)throw new Error(`Failed to fetch ${t} (${o.status})`);let s=await o.json();if(!s?.$jdf)throw new Error("Not a valid JDF document (missing $jdf field)");return r.classList.remove("jdfjs-loading"),I(r,s,n)}catch(o){throw r.classList.remove("jdfjs-loading"),r.classList.add("jdfjs-error"),r.innerHTML=`<div class="jdfjs-error-msg">${se(o.message)}</div>`,n.onError?.(o),o}}function I(e,t,n={}){let r=O(e);return new S(r,t,n).getInstance()}var S=class{constructor(t,n,r={}){this.resizeObs=null;this.toolbarEl=null;this.sidebarEl=null;this.observer=null;this.container=t,this.doc=n,this.options={zoom:r.zoom??1,sidebar:r.sidebar??false,toolbar:r.toolbar??true,darkMode:r.darkMode??"auto",initialPage:r.initialPage??0,fit:r.fit??"manual",...r},this.zoom=this.options.zoom,this.currentPage=this.options.initialPage,this.applyContainerSize(),this.mount(),queueMicrotask(()=>this.options.onLoad?.(this.doc));}applyContainerSize(){let t=this.options.width,n=this.options.height;t!=null&&(this.container.style.width=typeof t=="number"?`${t}px`:t),n!=null&&(this.container.style.height=typeof n=="number"?`${n}px`:n);}mount(){this.container.innerHTML="",this.container.classList.add("jdfjs"),this.options.darkMode==="dark"?this.container.classList.add("jdfjs-dark"):this.options.darkMode==="auto"&&window.matchMedia?.("(prefers-color-scheme: dark)").matches&&this.container.classList.add("jdfjs-dark"),this.root=document.createElement("div"),this.root.className="jdfjs-root",this.options.toolbar&&(this.toolbarEl=this.buildToolbar(),this.root.appendChild(this.toolbarEl));let t=document.createElement("div");t.className="jdfjs-body",this.options.sidebar&&(this.sidebarEl=this.buildSidebar(),t.appendChild(this.sidebarEl)),this.pagesEl=document.createElement("div"),this.pagesEl.className="jdfjs-pages",t.appendChild(this.pagesEl),this.root.appendChild(t),this.container.appendChild(this.root),this.renderAllPages(),this.setupScrollObserver(),this.setupResizeObserver(),this.applyFit(),this.currentPage>0&&this.scrollToPage(this.currentPage);}setupResizeObserver(){typeof ResizeObserver>"u"||(this.resizeObs?.disconnect(),this.resizeObs=new ResizeObserver(()=>this.applyFit()),this.resizeObs.observe(this.pagesEl));}applyFit(){if(this.options.fit==="manual")return;let t=this.pagesEl.querySelector(".jdfjs-page");if(!t)return;let n=parseFloat(t.style.width||"0"),r=parseFloat(t.style.minHeight||"0");if(!n||!r)return;let o=this.pagesEl.clientWidth-32,s=this.pagesEl.clientHeight-32;this.options.fit==="fit-width"?this.zoom=Math.max(.25,Math.min(3,o/n)):this.options.fit==="fit-page"&&(this.zoom=Math.max(.25,Math.min(3,Math.min(o/n,s/r)))),this.applyZoom(),this.updateIndicators();}buildToolbar(){let t=document.createElement("div");return t.className="jdfjs-toolbar",t.innerHTML=`
|
|
1
|
+
var Z={A3:{width:297,height:420},A4:{width:210,height:297},A5:{width:148,height:210},Letter:{width:215.9,height:279.4},Legal:{width:215.9,height:355.6},Tabloid:{width:279.4,height:431.8}},N={top:25,right:20,bottom:25,left:20},P=3.7795275591,_=96,q=1.3333333333;function f(e,t="mm"){switch(t){case "mm":return e*P;case "in":return e*_;case "pt":return e*q;case "px":return e;default:return e*P}}function R(e,t="portrait"){let n=typeof e=="string"?Z[e]:e;return t==="landscape"?{width:n.height,height:n.width}:{...n}}function H(e){if(typeof e=="number")return `${e}px`;if(typeof e=="string")return e;let{top:t=0,right:n=0,bottom:r=0,left:o=0}=e;return `${t}px ${n}px ${r}px ${o}px`}function m(e){let t={};if(e.fontFamily&&(t["font-family"]=e.fontFamily),e.fontSize&&(t["font-size"]=`${e.fontSize*1.333}px`),e.fontWeight&&(t["font-weight"]=String(e.fontWeight)),e.fontStyle&&(t["font-style"]=e.fontStyle),e.color&&(t.color=e.color),e.backgroundColor&&(t["background-color"]=e.backgroundColor),e.textAlign&&(t["text-align"]=e.textAlign),e.textDecoration){let n=e.textDecoration==="strikethrough"?"line-through":e.textDecoration;t["text-decoration"]=n;}return e.lineHeight&&(t["line-height"]=String(e.lineHeight)),e.letterSpacing!=null&&(t["letter-spacing"]=typeof e.letterSpacing=="number"?`${e.letterSpacing}px`:e.letterSpacing),e.padding!=null&&(t.padding=H(e.padding)),e.margin!=null&&(t.margin=H(e.margin)),e.marginTop!=null&&(t["margin-top"]=`${e.marginTop}px`),e.marginBottom!=null&&(t["margin-bottom"]=`${e.marginBottom}px`),e.border&&(t.border=e.border),e.borderRadius!=null&&(t["border-radius"]=typeof e.borderRadius=="number"?`${e.borderRadius}px`:e.borderRadius),e.opacity!=null&&(t.opacity=String(e.opacity)),t}function E(e,t){if(!e)return {};if(typeof e=="string")return m(t[e]||{});if(Array.isArray(e)){let n={};for(let r of e)n={...n,...t[r]||{}};return m(n)}return m(e)}function b(e,t){for(let[n,r]of Object.entries(t))e.style.setProperty(n,r);}function C(e){if(!e)return null;let t=typeof e=="string"?e:e.target;if(typeof e=="string"?e.startsWith("#"):e.type==="internal"){let r=t.replace(/^#/,"").match(/^page-(\d+)$/i);return r?{href:t,internal:true,pageIndex:Number(r[1])-1}:{href:t,internal:true}}return {href:t,internal:false}}function L(e,t,n){e.href=t.href,t.internal?e.addEventListener("click",r=>{t.pageIndex!=null&&n&&(r.preventDefault(),n(t.pageIndex));}):(e.target="_blank",e.rel="noopener noreferrer");}var j="http://www.w3.org/2000/svg";function w(e,t){let n=document.createElement("div");W(n,e);let r=null;switch(e.type){case "text":r=B(e,t);break;case "richtext":r=X(e,t);break;case "image":r=ee(e,t);break;case "table":r=re(e,t);break;case "list":r=oe(e,t);break;case "shape":r=ie(e);break;case "collapsible":r=se(e,t);break;case "toc":r=ae(e,t);break}return r?(n.appendChild(r),n):null}function W(e,t){let n=t;n.position&&(e.style.position="absolute",n.position.x!=null&&(e.style.left=`${f(n.position.x)}px`),n.position.y!=null&&(e.style.top=`${f(n.position.y)}px`)),n.width!=null&&(e.style.width=`${f(n.width)}px`),n.height!=null&&(e.style.height=`${f(n.height)}px`);}function B(e,t){let n=G(e.heading),r=document.createElement(n);r.className="jdfjs-text",r.style.margin="0",r.style.whiteSpace="pre-wrap",b(r,E(e.style,t.styles)),e.align&&(r.style.textAlign=e.align);let o=C(e.link);if(o){let a=document.createElement("a");L(a,o,t.onNavigatePage),a.className="jdfjs-link",a.textContent=e.content||"",r.appendChild(a);}else r.textContent=e.content||"";return r}function G(e){return e===true?"h1":typeof e=="number"&&e>=1&&e<=6?"h"+e:"p"}function X(e,t){let n=document.createElement("p");n.className="jdfjs-richtext",n.style.margin="0",b(n,E(e.style,t.styles));for(let r of e.runs||[])n.appendChild(K(r,t));return n}function U(e,t){let n={};if(e.style)if(typeof e.style=="string")Object.assign(n,m(t[e.style]||{}));else if(Array.isArray(e.style))for(let o of e.style)Object.assign(n,m(t[o]||{}));else Object.assign(n,m(e.style));e.bold&&(n["font-weight"]="bold"),e.italic&&(n["font-style"]="italic");let r=[];return e.underline&&r.push("underline"),e.strikethrough&&r.push("line-through"),r.length&&(n["text-decoration"]=r.join(" ")),e.color&&(n.color=e.color),e.fontSize&&(n["font-size"]=`${e.fontSize*1.333}px`),e.fontFamily&&(n["font-family"]=e.fontFamily),n}function K(e,t){let n=C(e.link),r=n?document.createElement("a"):document.createElement("span");return n&&(L(r,n,t.onNavigatePage),r.classList.add("jdfjs-link")),b(r,U(e,t.styles)),r.textContent=e.text,r}function Q(e,t){if(!e)return;let n=e[t];if(n&&typeof n=="object"&&"data"in n)return n;let r=e.images?.[t];if(r)return r}function Y(e,t){if(e.src?.startsWith("data:")||e.src?.startsWith("http"))return e.src;if(e.resource){let n=Q(t,e.resource);if(n?.data){let r=n.mimeType||"image/png";return n.data.startsWith("data:")?n.data:`data:${r};base64,${n.data}`}if(n?.path)return n.path}return e.src||""}function ee(e,t){let n=document.createElement("div");n.className="jdfjs-image",n.style.width="100%",n.style.height="100%";let r=document.createElement("img");switch(r.src=Y(e,t.resources),r.alt=e.alt||"",r.style.display="block",r.style.width="100%",r.style.height="100%",e.fit){case "cover":r.style.objectFit="cover";break;case "fill":r.style.objectFit="fill";break;case "none":r.style.objectFit="none";break;default:r.style.objectFit="contain";}return b(r,E(e.style,t.styles)),n.appendChild(r),n}function te(e){return typeof e=="string"?e:e.content}function ne(e){return typeof e=="string"?{}:{colspan:e.colspan,rowspan:e.rowspan}}function re(e,t){let n=document.createElement("div");n.className="jdfjs-table-wrap",b(n,E(e.style,t.styles)),n.style.overflowX="auto";let r=(()=>{let l=e.headerStyle;if(!l)return {};if(typeof l=="string")return m(t.styles[l]||{});if(Array.isArray(l)){let p={};for(let u of l)p={...p,...m(t.styles[u]||{})};return p}return m(l)})(),o=(()=>{let l=e.rowStyle;if(!l)return {};if(typeof l=="string")return m(t.styles[l]||{});if(Array.isArray(l)){let p={};for(let u of l)p={...p,...m(t.styles[u]||{})};return p}return m(l)})(),a=(()=>{let l=e.alternateRowStyle;if(!l){let p=e.alternatingRowColor;return p?{"background-color":p}:{}}if(typeof l=="string")return m(t.styles[l]||{});if(Array.isArray(l)){let p={};for(let u of l)p={...p,...m(t.styles[u]||{})};return p}return m(l)})(),s=(()=>{let l=e.borders;return l===false?{outer:false,inner:false}:l===true||l===void 0?{outer:true,inner:true,color:"#e2e8f0",width:1}:{outer:true,inner:true,color:"#e2e8f0",width:1,...l}})(),d=e.headers??e.columns?.map(l=>l.header||"").filter(l=>l!==""),c=l=>e.columns?.[l]?.align,i=document.createElement("table");if(i.style.width="100%",i.style.borderCollapse="collapse",i.style.fontSize="14px",s.outer&&(i.style.border=`${s.width||1}px solid ${s.color||"#e2e8f0"}`),d&&d.length>0){let l=document.createElement("thead"),p=document.createElement("tr");b(p,r),d.forEach((u,x)=>{let g=document.createElement("th");g.textContent=u,g.style.padding="8px 12px",g.style.fontWeight="600",g.style.background="#f8fafc",g.style.textAlign=c(x)||"left",s.inner&&(g.style.border=`${s.width||1}px solid ${s.color||"#e2e8f0"}`),p.appendChild(g);}),l.appendChild(p),i.appendChild(l);}let h=document.createElement("tbody");return e.rows.forEach((l,p)=>{let u=document.createElement("tr");b(u,o),p%2===1&&b(u,a),l.forEach((x,g)=>{let y=document.createElement("td");y.textContent=te(x);let v=ne(x);v.colspan&&(y.colSpan=v.colspan),v.rowspan&&(y.rowSpan=v.rowspan),y.style.padding="8px 12px",y.style.verticalAlign="top",y.style.textAlign=c(g)||"left",s.inner&&(y.style.border=`${s.width||1}px solid ${s.color||"#e2e8f0"}`),u.appendChild(y);}),h.appendChild(u);}),i.appendChild(h),n.appendChild(i),n}function oe(e,t){let n=document.createElement("div");n.className="jdfjs-list-wrap",b(n,E(e.style,t.styles));let r=e.listType??(e.ordered?"ordered":"unordered"),o=z(r);return $(o,e.items||[],r),n.appendChild(o),n}function z(e){let t=document.createElement(e==="ordered"?"ol":"ul");return t.style.margin="0",t.style.paddingLeft="20px",t.style.listStyle=e==="ordered"?"decimal":"disc",t}function $(e,t,n,r){for(let o of t){let a=document.createElement("li");if(a.style.fontSize="14px",a.style.lineHeight="1.6",a.appendChild(document.createTextNode(o.content)),o.children?.length){let s=o.listType||n,d=z(s);d.style.marginTop="4px",$(d,o.children,s),a.appendChild(d);}e.appendChild(a);}}function ie(e){let t=document.createElement("div");t.className="jdfjs-shape",t.style.width="100%",t.style.height="100%";let n=e.width??100,r=e.height??100,o=e.fill??"none",a=(()=>{let i=e.stroke;return typeof i=="string"?i:i?.color?i.color:"none"})(),s=(()=>{let i=e.stroke;return typeof i=="object"&&i?.width!=null?i.width:e.strokeWidth??0})(),d=document.createElementNS(j,"svg");d.setAttribute("width","100%"),d.setAttribute("height","100%"),d.setAttribute("viewBox",`0 0 ${n} ${r}`),d.setAttribute("preserveAspectRatio","none"),d.style.display="block",d.style.overflow="visible";let c=null;switch(e.shape){case "rect":{let i=document.createElementNS(j,"rect");i.setAttribute("x","0"),i.setAttribute("y","0"),i.setAttribute("width",String(n)),i.setAttribute("height",String(r)),e.borderRadius&&i.setAttribute("rx",String(e.borderRadius)),c=i;break}case "circle":{let i=document.createElementNS(j,"circle");i.setAttribute("cx",String(n/2)),i.setAttribute("cy",String(r/2)),i.setAttribute("r",String(Math.min(n,r)/2)),c=i;break}case "ellipse":{let i=document.createElementNS(j,"ellipse");i.setAttribute("cx",String(n/2)),i.setAttribute("cy",String(r/2)),i.setAttribute("rx",String(n/2)),i.setAttribute("ry",String(r/2)),c=i;break}case "line":{let i=document.createElementNS(j,"line");return i.setAttribute("x1","0"),i.setAttribute("y1","0"),i.setAttribute("x2",String(n)),i.setAttribute("y2",String(r)),i.setAttribute("stroke",a==="none"?o!=="none"?o:"currentColor":a),i.setAttribute("stroke-width",String(s||.3)),d.appendChild(i),t.appendChild(d),t}case "path":{let i=document.createElementNS(j,"path");i.setAttribute("d",e.path||""),i.setAttribute("fill-rule","evenodd"),c=i;break}}return c&&(c.setAttribute("fill",o),c.setAttribute("stroke",a),s&&c.setAttribute("stroke-width",String(s)),d.appendChild(c)),t.appendChild(d),t}function se(e,t){let n=document.createElement("div");n.className="jdfjs-collapsible",b(n,E(e.style,t.styles)),n.style.border="1px solid #e2e8f0",n.style.borderRadius="8px",n.style.overflow="hidden",n.style.background="#ffffff";let r=document.createElement("button");r.type="button",r.className="jdfjs-collapsible-header",r.style.width="100%",r.style.display="flex",r.style.alignItems="center",r.style.gap="8px",r.style.padding="10px 16px",r.style.fontSize="14px",r.style.fontWeight="500",r.style.background="#f8fafc",r.style.border="0",r.style.cursor="pointer",r.style.textAlign="left";let o=document.createElement("span");o.textContent="\u25B6",o.style.fontSize="10px",o.style.transition="transform 0.15s ease";let a=document.createElement("span");a.textContent=e.title||"Section",a.style.flex="1",r.appendChild(o),r.appendChild(a),n.appendChild(r);let s=document.createElement("div");s.className="jdfjs-collapsible-body",s.style.padding="12px 16px",s.style.position="relative";let d=e.expanded??false,c=()=>{s.style.display=d?"block":"none",o.style.transform=d?"rotate(90deg)":"rotate(0deg)";};c(),r.addEventListener("click",()=>{d=!d,c();});for(let i of e.elements||[]){let h=w(i,{...t,path:[...t.path,"elements"]});h&&s.appendChild(h);}return n.appendChild(s),n}function ae(e,t){let n=document.createElement("div");n.className="jdfjs-toc",b(n,E(e.style,t.styles));let r=e.depth??6,o=[];t.document.pages.forEach((a,s)=>{for(let d of a.elements){if(d.type!=="text")continue;let c=d,i=c.tocEntry||(c.heading?c.content:null);if(!i)continue;let h=typeof c.tocLevel=="number"?c.tocLevel:typeof c.heading=="number"?c.heading:1;h>r||o.push({title:i,pageIndex:s,level:h});}});for(let a of o){let s=document.createElement("button");s.type="button",s.className="jdfjs-toc-entry",s.style.display="flex",s.style.alignItems="baseline",s.style.gap="8px",s.style.width="100%",s.style.background="transparent",s.style.border="0",s.style.borderBottom="1px dotted #e2e8f0",s.style.padding=`6px 8px 6px ${(a.level-1)*16+8}px`,s.style.cursor="pointer",s.style.fontSize="14px",s.style.color="#334155",s.style.textAlign="left";let d=document.createElement("span");d.textContent=a.title,d.style.flex="1";let c=document.createElement("span");c.style.flex="1",c.style.borderBottom="1px dotted #cbd5e1",c.style.alignSelf="end",c.style.marginBottom="4px";let i=document.createElement("span");i.textContent=String(a.pageIndex+1),i.style.fontFamily="JetBrains Mono, monospace",i.style.fontSize="12px",i.style.color="#94a3b8",i.style.flexShrink="0",s.appendChild(d),s.appendChild(c),s.appendChild(i),s.addEventListener("click",()=>t.onNavigatePage?.(a.pageIndex)),n.appendChild(s);}return n}function D(e,t){return e.replace(/\{\{pageNumber\}\}/g,String(t.pageNumber)).replace(/\{\{totalPages\}\}/g,String(t.totalPages)).replace(/\{\{title\}\}/g,t.title).replace(/\{\{author\}\}/g,t.author)}async function k(e,t,n={}){let r=O(e);r.classList.add("jdfjs-loading");try{let o=await fetch(t,{headers:{Accept:"application/json,application/jdf+json"}});if(!o.ok)throw new Error(`Failed to fetch ${t} (${o.status})`);let a=await o.json();if(!a?.$jdf)throw new Error("Not a valid JDF document (missing $jdf field)");return r.classList.remove("jdfjs-loading"),I(r,a,n)}catch(o){throw r.classList.remove("jdfjs-loading"),r.classList.add("jdfjs-error"),r.innerHTML=`<div class="jdfjs-error-msg">${le(o.message)}</div>`,n.onError?.(o),o}}function I(e,t,n={}){let r=O(e);return new S(r,t,n).getInstance()}var S=class{constructor(t,n,r={}){this.resizeObs=null;this.toolbarEl=null;this.sidebarEl=null;this.observer=null;this.container=t,this.doc=n,this.options={zoom:r.zoom??1,sidebar:r.sidebar??false,toolbar:r.toolbar??true,darkMode:r.darkMode??"auto",initialPage:r.initialPage??0,fit:r.fit??"manual",...r},this.zoom=this.options.zoom,this.currentPage=this.options.initialPage,this.applyContainerSize(),this.mount(),queueMicrotask(()=>this.options.onLoad?.(this.doc));}applyContainerSize(){let t=this.options.width,n=this.options.height;t!=null&&(this.container.style.width=typeof t=="number"?`${t}px`:t),n!=null&&(this.container.style.height=typeof n=="number"?`${n}px`:n);}mount(){this.container.innerHTML="",this.container.classList.add("jdfjs"),this.options.darkMode==="dark"?this.container.classList.add("jdfjs-dark"):this.options.darkMode==="auto"&&window.matchMedia?.("(prefers-color-scheme: dark)").matches&&this.container.classList.add("jdfjs-dark"),this.root=document.createElement("div"),this.root.className="jdfjs-root",this.options.toolbar&&(this.toolbarEl=this.buildToolbar(),this.root.appendChild(this.toolbarEl));let t=document.createElement("div");t.className="jdfjs-body",this.options.sidebar&&(this.sidebarEl=this.buildSidebar(),t.appendChild(this.sidebarEl)),this.pagesEl=document.createElement("div"),this.pagesEl.className="jdfjs-pages",t.appendChild(this.pagesEl),this.root.appendChild(t),this.container.appendChild(this.root),this.renderAllPages(),this.setupScrollObserver(),this.setupResizeObserver(),this.applyFit(),this.currentPage>0&&this.scrollToPage(this.currentPage);}setupResizeObserver(){typeof ResizeObserver>"u"||(this.resizeObs?.disconnect(),this.resizeObs=new ResizeObserver(()=>this.applyFit()),this.resizeObs.observe(this.pagesEl));}applyFit(){if(this.options.fit==="manual")return;let t=this.pagesEl.querySelector(".jdfjs-page");if(!t)return;let n=parseFloat(t.style.width||"0"),r=parseFloat(t.style.minHeight||"0");if(!n||!r)return;let o=this.pagesEl.clientWidth-32,a=this.pagesEl.clientHeight-32;this.options.fit==="fit-width"?this.zoom=Math.max(.25,Math.min(3,o/n)):this.options.fit==="fit-page"&&(this.zoom=Math.max(.25,Math.min(3,Math.min(o/n,a/r)))),this.applyZoom(),this.updateIndicators();}buildToolbar(){let t=document.createElement("div");return t.className="jdfjs-toolbar",t.innerHTML=`
|
|
2
2
|
<span class="jdfjs-title"></span>
|
|
3
3
|
<div class="jdfjs-spacer"></div>
|
|
4
4
|
<button class="jdfjs-btn" data-act="prev" title="Previous page">\u2039</button>
|
|
@@ -8,5 +8,5 @@ var J={A3:{width:297,height:420},A4:{width:210,height:297},A5:{width:148,height:
|
|
|
8
8
|
<button class="jdfjs-btn" data-act="zoom-out" title="Zoom out">\u2212</button>
|
|
9
9
|
<span class="jdfjs-zoom-indicator"></span>
|
|
10
10
|
<button class="jdfjs-btn" data-act="zoom-in" title="Zoom in">+</button>
|
|
11
|
-
`,t.querySelector(".jdfjs-title").textContent=this.doc.meta?.title??"Document",this.updateIndicators(t),t.addEventListener("click",n=>{let r=n.target.closest("[data-act]");if(!r)return;let o=r.getAttribute("data-act");o==="prev"?this.goToPage(this.currentPage-1):o==="next"?this.goToPage(this.currentPage+1):o==="zoom-in"?this.setZoom(this.zoom+.1):o==="zoom-out"&&this.setZoom(this.zoom-.1);}),t}buildSidebar(){let t=document.createElement("div");return t.className="jdfjs-sidebar",this.doc.pages.forEach((n,r)=>{let o=document.createElement("button");o.className="jdfjs-sidebar-thumb",o.setAttribute("data-page",String(r)),o.innerHTML=`<span class="jdfjs-sidebar-num">${r+1}</span>`,o.addEventListener("click",()=>this.goToPage(r)),t.appendChild(o);}),t}updateIndicators(t=this.toolbarEl){if(!t)return;let n=t.querySelector(".jdfjs-page-indicator");n&&(n.textContent=`${this.currentPage+1} / ${this.doc.pages.length}`);let r=t.querySelector(".jdfjs-zoom-indicator");r&&(r.textContent=`${Math.round(this.zoom*100)}%`),this.sidebarEl&&this.sidebarEl.querySelectorAll(".jdfjs-sidebar-thumb").forEach(o=>{let
|
|
11
|
+
`,t.querySelector(".jdfjs-title").textContent=this.doc.meta?.title??"Document",this.updateIndicators(t),t.addEventListener("click",n=>{let r=n.target.closest("[data-act]");if(!r)return;let o=r.getAttribute("data-act");o==="prev"?this.goToPage(this.currentPage-1):o==="next"?this.goToPage(this.currentPage+1):o==="zoom-in"?this.setZoom(this.zoom+.1):o==="zoom-out"&&this.setZoom(this.zoom-.1);}),t}buildSidebar(){let t=document.createElement("div");return t.className="jdfjs-sidebar",this.doc.pages.forEach((n,r)=>{let o=document.createElement("button");o.className="jdfjs-sidebar-thumb",o.setAttribute("data-page",String(r)),o.innerHTML=`<span class="jdfjs-sidebar-num">${r+1}</span>`,o.addEventListener("click",()=>this.goToPage(r)),t.appendChild(o);}),t}updateIndicators(t=this.toolbarEl){if(!t)return;let n=t.querySelector(".jdfjs-page-indicator");n&&(n.textContent=`${this.currentPage+1} / ${this.doc.pages.length}`);let r=t.querySelector(".jdfjs-zoom-indicator");r&&(r.textContent=`${Math.round(this.zoom*100)}%`),this.sidebarEl&&this.sidebarEl.querySelectorAll(".jdfjs-sidebar-thumb").forEach(o=>{let a=Number(o.getAttribute("data-page"));o.classList.toggle("jdfjs-sidebar-thumb-active",a===this.currentPage);});}renderAllPages(){this.pagesEl.innerHTML="";let t=this.doc.styles??{};this.doc.pages.forEach((n,r)=>{let o=this.renderPage(n,r,t);this.pagesEl.appendChild(o);}),this.applyZoom();}renderPage(t,n,r){let o=R(t.pageSize??this.doc.meta?.pageSize??"A4",t.pageOrientation??this.doc.meta?.pageOrientation??"portrait"),a={...N,...this.doc.meta?.margins||{},...t.margins||{}},s=document.createElement("div");s.className="jdfjs-page-wrapper",s.setAttribute("data-page-index",String(n));let d=document.createElement("div");d.className="jdfjs-page",d.style.width=`${f(o.width)}px`,d.style.minHeight=`${f(o.height)}px`,t.background&&(d.style.backgroundColor=t.background);let c=t.header??this.doc.header,i=t.footer??this.doc.footer,h=c?.height??0,l=i?.height??0;if(c){let u=this.renderHeaderFooter(c,n,this.doc.pages.length,r);u.classList.add("jdfjs-header"),u.style.paddingTop=`${f(a.top/2)}px`,u.style.paddingLeft=`${f(a.left)}px`,u.style.paddingRight=`${f(a.right)}px`,d.appendChild(u);}let p=document.createElement("div");if(p.className="jdfjs-page-content",p.style.position="relative",p.style.paddingTop=`${f((a.top||0)+h)}px`,p.style.paddingRight=`${f(a.right||0)}px`,p.style.paddingBottom=`${f((a.bottom||0)+l)}px`,p.style.paddingLeft=`${f(a.left||0)}px`,t.elements.forEach((u,x)=>{let g=w(u,{styles:r,resources:this.doc.resources,document:this.doc,path:["pages",n,"elements",x],onNavigatePage:y=>this.goToPage(y)});g&&p.appendChild(g);}),d.appendChild(p),i){let u=this.renderHeaderFooter(i,n,this.doc.pages.length,r);u.classList.add("jdfjs-footer"),u.style.paddingBottom=`${f(a.bottom/2)}px`,u.style.paddingLeft=`${f(a.left)}px`,u.style.paddingRight=`${f(a.right)}px`,d.appendChild(u);}return s.appendChild(d),s}renderHeaderFooter(t,n,r,o){let a=document.createElement("div");if(t.elements?.length)t.elements.forEach((s,d)=>{let c=w(s,{styles:o,resources:this.doc.resources,document:this.doc,path:["__hf__",n,d],onNavigatePage:i=>this.goToPage(i)});c&&a.appendChild(c);});else if(t.content){let s=D(t.content,{pageNumber:n+1,totalPages:r,title:this.doc.meta?.title??"",author:this.doc.meta?.author??""}),d=document.createElement("div");d.textContent=s,Object.assign(d.style,E(t.style,o)),a.appendChild(d);}return a}setupScrollObserver(){typeof IntersectionObserver>"u"||(this.observer?.disconnect(),this.observer=new IntersectionObserver(t=>{let n=t.filter(r=>r.isIntersecting).sort((r,o)=>o.intersectionRatio-r.intersectionRatio);if(n[0]){let r=Number(n[0].target.getAttribute("data-page-index"));!isNaN(r)&&r!==this.currentPage&&(this.currentPage=r,this.updateIndicators(),this.options.onPageChange?.(r));}},{root:this.pagesEl,threshold:[.25,.5,.75]}),this.pagesEl.querySelectorAll("[data-page-index]").forEach(t=>this.observer.observe(t)));}scrollToPage(t){let n=this.pagesEl.querySelector(`[data-page-index="${t}"]`);n&&n.scrollIntoView({behavior:"smooth",block:"start"});}applyZoom(){this.pagesEl.style.setProperty("--jdfjs-zoom",String(this.zoom)),this.pagesEl.querySelectorAll(".jdfjs-page").forEach(t=>{t.style.transform=`scale(${this.zoom})`,t.style.transformOrigin="top center";});}setZoom(t){this.zoom=Math.max(.25,Math.min(3,t)),this.applyZoom(),this.updateIndicators();}getZoom(){return this.zoom}goToPage(t){let n=Math.max(0,Math.min(this.doc.pages.length-1,t));this.currentPage=n,this.scrollToPage(n),this.updateIndicators(),this.options.onPageChange?.(n);}getCurrentPage(){return this.currentPage}setDocument(t){if(this.doc=t,this.currentPage=0,this.toolbarEl){let n=this.toolbarEl.querySelector(".jdfjs-title");n&&(n.textContent=t.meta?.title??"Document");}this.sidebarEl&&(this.sidebarEl.innerHTML="",this.buildSidebar().querySelectorAll(".jdfjs-sidebar-thumb").forEach(r=>this.sidebarEl.appendChild(r))),this.renderAllPages(),this.setupScrollObserver(),this.options.onLoad?.(t);}destroy(){this.observer?.disconnect(),this.resizeObs?.disconnect(),this.container.innerHTML="",this.container.classList.remove("jdfjs","jdfjs-dark","jdfjs-loading","jdfjs-error"),this.container.style.removeProperty("width"),this.container.style.removeProperty("height");}getInstance(){return {container:this.container,document:this.doc,setZoom:t=>this.setZoom(t),getZoom:()=>this.getZoom(),goToPage:t=>this.goToPage(t),getCurrentPage:()=>this.getCurrentPage(),setDocument:t=>this.setDocument(t),destroy:()=>this.destroy()}}};function O(e){if(typeof e=="string"){let t=document.querySelector(e);if(!t)throw new Error(`jdfjs: container "${e}" not found`);return t}return e}function le(e){return e.replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t])}var M=new WeakSet;function de(e){let t={},n=l=>e.getAttribute(l),r=n("zoom");if(r!=null){let l=Number(r);isNaN(l)||(t.zoom=l);}let o=n("sidebar");o!=null&&(t.sidebar=o!=="false"&&o!=="0");let a=n("toolbar");a!=null&&(t.toolbar=a!=="false"&&a!=="0");let s=n("dark-mode")||n("darkmode");(s==="auto"||s==="light"||s==="dark")&&(t.darkMode=s);let d=n("page");if(d!=null){let l=Number(d);isNaN(l)||(t.initialPage=l);}let c=n("width");if(c!=null){let l=Number(c);t.width=isNaN(l)?c:l;}let i=n("height");if(i!=null){let l=Number(i);t.height=isNaN(l)?i:l;}let h=n("fit");return (h==="manual"||h==="fit-width"||h==="fit-page")&&(t.fit=h),t}function A(e){if(M.has(e)||e.hasAttribute("manual"))return;let t=e.getAttribute("src");if(!t)return;M.add(e);let n=e;V(n);let r=de(e);k(n,t,r).catch(o=>{console.error("[jdf.js] failed to embed",t,o),n.dispatchEvent(new CustomEvent("jdf-error",{detail:o,bubbles:true}));}),ce(n);}function V(e){let t=e.getAttribute("width");if(t!=null){let r=Number(t);e.style.width=isNaN(r)?t:`${r}px`;}let n=e.getAttribute("height");if(n!=null){let r=Number(n);e.style.height=isNaN(r)?n:`${r}px`;}}var F=new WeakSet;function ce(e){if(F.has(e)||typeof MutationObserver>"u")return;F.add(e),new MutationObserver(n=>{for(let r of n){if(r.type!=="attributes"||!r.attributeName)continue;let o=r.attributeName;o==="src"?(M.delete(e),A(e)):(o==="width"||o==="height")&&V(e);}}).observe(e,{attributes:true,attributeFilter:["src","width","height"]});}function T(e=document){e.querySelectorAll("jdf").forEach(A);}function J(){if(typeof MutationObserver>"u")return;new MutationObserver(t=>{for(let n of t)n.addedNodes.forEach(r=>{r instanceof Element&&(r.tagName.toLowerCase()==="jdf"?A(r):T(r));});}).observe(document.body,{childList:true,subtree:true});}function pe(e=document){T(e);}function ue(){typeof window>"u"||typeof document>"u"||window.JDFjsAutoInit!==false&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{T(),J();},{once:true}):(T(),J()));}ue();export{S as JDFViewer,k as embed,pe as jdf,I as render};//# sourceMappingURL=jdfjs.js.map
|
|
12
12
|
//# sourceMappingURL=jdfjs.js.map
|