@silurus/ooxml 0.27.0 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -10
- package/dist/docx-BJ2QX1sj.js +1050 -0
- package/dist/docx-RfvFutZ6.cjs +1 -0
- package/dist/docx.cjs +1 -1
- package/dist/docx.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +3 -3
- package/dist/pptx-BoBbwUHR.js +23250 -0
- package/dist/pptx-DJgmrjy5.cjs +1 -0
- package/dist/pptx.cjs +1 -1
- package/dist/pptx.mjs +1 -1
- package/dist/preset-Be9mzXzm.js +1284 -0
- package/dist/preset-DxpCn57X.cjs +1 -0
- package/dist/types/docx.d.ts +86 -2
- package/dist/types/index.d.ts +219 -5
- package/dist/types/pptx.d.ts +112 -2
- package/dist/types/xlsx.d.ts +21 -1
- package/dist/xlsx-DFPurGhu.js +3107 -0
- package/dist/xlsx-DzHnBF0u.cjs +11 -0
- package/dist/xlsx.cjs +1 -1
- package/dist/xlsx.mjs +1 -1
- package/package.json +1 -1
- package/dist/docx-DVe_bky9.cjs +0 -1
- package/dist/docx-x2SoqFCP.js +0 -871
- package/dist/paint-C7gG2pjf.cjs +0 -1
- package/dist/paint-CIAXt08M.js +0 -98
- package/dist/pptx-DMP47DvZ.cjs +0 -1
- package/dist/pptx-Dr6cMPL2.js +0 -23837
- package/dist/xlsx-B6wdX3-M.cjs +0 -11
- package/dist/xlsx-R5CcrPHg.js +0 -2919
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,t,n,r,i,a){for(let o of t){let t=0,s=0;for(let c of o)switch(c.cmd){case`moveTo`:e.moveTo(n+c.x*i,r+c.y*a),t=c.x,s=c.y;break;case`lineTo`:e.lineTo(n+c.x*i,r+c.y*a),t=c.x,s=c.y;break;case`cubicBezTo`:e.bezierCurveTo(n+c.x1*i,r+c.y1*a,n+c.x2*i,r+c.y2*a,n+c.x*i,r+c.y*a),t=c.x,s=c.y;break;case`arcTo`:{let o=c.wr*i,l=c.hr*a;if(o<=0||l<=0)break;let u=c.stAng*Math.PI/180,d=c.swAng*Math.PI/180,f=n+t*i,p=r+s*a,m=f-o*Math.cos(u),h=p-l*Math.sin(u),g=u+d;e.ellipse(m,h,o,l,0,u,g,d<0),t=(m+o*Math.cos(g)-n)/i,s=(h+l*Math.sin(g)-r)/a;break}case`close`:e.closePath();break}}}var t={pct5:[0,16,0,0,0,1,0,0],pct10:[136,0,34,0,136,0,34,0],pct20:[136,34,136,34,136,34,136,34],pct25:[136,85,34,85,136,85,34,85],pct30:[170,85,170,85,170,85,170,85],pct40:[170,119,170,221,170,119,170,221],pct50:[170,85,170,85,170,85,170,85],pct60:[221,85,119,85,221,85,119,85],pct70:[238,85,187,85,238,85,187,85],pct75:[238,170,187,170,238,170,187,170],pct80:[254,239,251,191,254,239,251,191],pct90:[255,239,255,251,255,239,255,251],horz:[255,0,0,0,255,0,0,0],vert:[136,136,136,136,136,136,136,136],ltHorz:[0,255,0,0,0,0,0,0],ltVert:[32,32,32,32,32,32,32,32],dkHorz:[255,255,0,0,255,255,0,0],dkVert:[204,204,204,204,204,204,204,204],narHorz:[255,0,255,0,255,0,255,0],narVert:[170,170,170,170,170,170,170,170],cross:[255,136,136,136,255,136,136,136],lgGrid:[255,128,128,128,128,128,128,128],smGrid:[255,136,136,136,255,136,136,136],dotGrid:[136,0,0,0,136,0,0,0],dnDiag:[128,64,32,16,8,4,2,1],upDiag:[1,2,4,8,16,32,64,128],ltDnDiag:[136,68,34,17,136,68,34,17],ltUpDiag:[17,34,68,136,17,34,68,136],dkDnDiag:[195,129,0,129,195,129,0,129],dkUpDiag:[195,129,0,129,195,129,0,129],wdDnDiag:[128,64,32,16,8,4,2,129],wdUpDiag:[1,2,4,8,16,32,64,129],diagCross:[129,66,36,24,24,36,66,129],horzBrick:[255,16,16,16,255,1,1,1],diagBrick:[129,66,36,24,36,66,129,0],lgCheck:[240,240,240,240,15,15,15,15],smCheck:[204,204,51,51,204,204,51,51],trellis:[165,90,165,90,165,90,165,90]};function n(e,n,a){let o=t[e];if(!o)return null;let s=r(8,8);if(!s)return null;let c=s.getContext(`2d`);if(!c)return null;c.fillStyle=i(a),c.fillRect(0,0,8,8),c.fillStyle=i(n);for(let e=0;e<8;e++){let t=o[e];for(let n=0;n<8;n++)t&1<<7-n&&c.fillRect(n,e,1,1)}return s}function r(e,t){if(typeof OffscreenCanvas<`u`)return new OffscreenCanvas(e,t);if(typeof document<`u`){let n=document.createElement(`canvas`);return n.width=e,n.height=t,n}return null}function i(e){return`rgba(${parseInt(e.slice(0,2),16)},${parseInt(e.slice(2,4),16)},${parseInt(e.slice(4,6),16)},${e.length>=8?parseInt(e.slice(6,8),16)/255:1})`}function a(e,t=1){return`rgba(${parseInt(e.slice(0,2),16)},${parseInt(e.slice(2,4),16)},${parseInt(e.slice(4,6),16)},${e.length>=8?parseInt(e.slice(6,8),16)/255:t})`}function o(e,t,n,r,i,o){if(!e||e.fillType===`none`)return null;if(e.fillType===`solid`)return a(e.color);if(e.fillType===`pattern`)return c(e,t);if(e.fillType===`gradient`){let s=e.stops;if(s.length===0)return null;if(s.length===1)return a(s[0].color);let c;if(e.gradType===`radial`){let e=n+i/2,a=r+o/2,s=Math.sqrt(i*i+o*o)/2;c=t.createRadialGradient(e,a,0,e,a,s)}else{let a=e.angle*Math.PI/180,s=n+i/2,l=r+o/2,u=(Math.abs(Math.cos(a))*i+Math.abs(Math.sin(a))*o)/2;c=t.createLinearGradient(s-Math.cos(a)*u,l-Math.sin(a)*u,s+Math.cos(a)*u,l+Math.sin(a)*u)}for(let e of s)c.addColorStop(Math.min(1,Math.max(0,e.position)),a(e.color));return c}return null}var s=new WeakMap;function c(e,t){let r=`${e.preset}|${e.fg}|${e.bg}`,i=s.get(t);i||(i=new Map,s.set(t,i));let o=i.get(r);if(o)return o;let c=n(e.preset,e.fg,e.bg);if(!c)return a(e.fg);let l=t.createPattern(c,`repeat`);return l?(i.set(r,l),l):a(e.fg)}var l={dash:[6,3],dot:[1.5,3],dashDot:[6,3,1.5,3],lgDash:[10,4],lgDashDot:[10,4,1.5,4],lgDashDotDot:[10,4,1.5,4,1.5,4],sysDash:[4,2],sysDot:[1,2],sysDashDot:[4,2,1,2]};function u(e,t,n){if(!t){e.strokeStyle=`transparent`,e.lineWidth=0,e.setLineDash([]);return}e.strokeStyle=a(t.color);let r=Math.max(.5,t.width*n);e.lineWidth=r;let i=t.dashStyle?l[t.dashStyle]:null;e.setLineDash(i?i.map(e=>e*r):[])}function d(e,t,n,r,i,a,o,s=-Math.PI/2){let c=a*2;for(let l=0;l<c;l++){let c=s+l*Math.PI/a,u=l%2==0?1:o,d=t+r*u*Math.cos(c),f=n+i*u*Math.sin(c);l===0?e.moveTo(d,f):e.lineTo(d,f)}e.closePath()}function f(e,t,n,r,i,a,o=-Math.PI/2){for(let s=0;s<a;s++){let c=o+s*2*Math.PI/a,l=t+r*Math.cos(c),u=n+i*Math.sin(c);s===0?e.moveTo(l,u):e.lineTo(l,u)}e.closePath()}function p(e,t,n,r,i,a,o){let s=e=>Math.atan2(r*Math.sin(e),i*Math.cos(e)),c=s(a),l=s(a+o),u=t-r*Math.cos(c),d=n-i*Math.sin(c);return e.ellipse(u,d,Math.abs(r),Math.abs(i),0,c,l,o<0),{x:u+r*Math.cos(l),y:d+i*Math.sin(l)}}function m(e,t,n,r,i,a,o=null,s=null,c=null,l=null){let u=n+i/2,m=r+a/2;switch(t){case`ellipse`:case`oval`:e.ellipse(u,m,i/2,a/2,0,0,Math.PI*2);break;case`rtriangle`:e.moveTo(n,r+a),e.lineTo(n+i,r+a),e.lineTo(n,r),e.closePath();break;case`triangle`:{let t=n+(o??5e4)/1e5*i;e.moveTo(t,r),e.lineTo(n+i,r+a),e.lineTo(n,r+a),e.closePath();break}case`diamond`:e.moveTo(u,r),e.lineTo(n+i,m),e.lineTo(u,r+a),e.lineTo(n,m),e.closePath();break;case`parallelogram`:{let t=i*Math.min(.5,(o??25e3)/1e5);e.moveTo(n+t,r),e.lineTo(n+i,r),e.lineTo(n+i-t,r+a),e.lineTo(n,r+a),e.closePath();break}case`trapezoid`:{let t=Math.min(i,a),s=Math.min(i/2,(o??25e3)/1e5*t);e.moveTo(n+s,r),e.lineTo(n+i-s,r),e.lineTo(n+i,r+a),e.lineTo(n,r+a),e.closePath();break}case`roundrect`:case`roundrectangle`:{let t=Math.min(i,a)*Math.min(5e4,Math.max(0,o??16667))/1e5;e.roundRect(n,r,i,a,t);break}case`pentagon`:f(e,u,m,i/2,a/2,5);break;case`hexagon`:f(e,u,m,i/2,a/2,6,0);break;case`heptagon`:f(e,u,m,i/2,a/2,7);break;case`octagon`:f(e,u,m,i/2,a/2,8,-Math.PI/8);break;case`decagon`:f(e,u,m,i/2,a/2,10);break;case`dodecagon`:f(e,u,m,i/2,a/2,12);break;case`star4`:d(e,u,m,i/2,a/2,4,(o??12500)/5e4);break;case`star5`:case`star`:d(e,u,m,i/2,a/2,5,(o??19098)/5e4);break;case`star6`:d(e,u,m,i/2,a/2,6,(o??28868)/5e4,0);break;case`star7`:d(e,u,m,i/2,a/2,7,(o??34142)/5e4);break;case`star8`:d(e,u,m,i/2,a/2,8,(o??37500)/5e4,-Math.PI/2);break;case`star10`:d(e,u,m,i/2,a/2,10,(o??41421)/5e4);break;case`star12`:d(e,u,m,i/2,a/2,12,(o??37500)/5e4,0);break;case`star16`:d(e,u,m,i/2,a/2,16,(o??37500)/5e4,-Math.PI/2);break;case`star24`:d(e,u,m,i/2,a/2,24,(o??37500)/5e4,0);break;case`star32`:d(e,u,m,i/2,a/2,32,(o??37500)/5e4,-Math.PI/2);break;case`rightarrow`:{let t=a*Math.min(1,(o??5e4)/1e5),c=i*Math.min(1,(s??5e4)/1e5),l=r+(a-t)/2;e.moveTo(n,l),e.lineTo(n+i-c,l),e.lineTo(n+i-c,r),e.lineTo(n+i,m),e.lineTo(n+i-c,r+a),e.lineTo(n+i-c,l+t),e.lineTo(n,l+t),e.closePath();break}case`leftarrow`:{let t=a*Math.min(1,(o??5e4)/1e5),c=i*Math.min(1,(s??5e4)/1e5),l=r+(a-t)/2;e.moveTo(n+i,l),e.lineTo(n+c,l),e.lineTo(n+c,r),e.lineTo(n,m),e.lineTo(n+c,r+a),e.lineTo(n+c,l+t),e.lineTo(n+i,l+t),e.closePath();break}case`uparrow`:{let t=i*Math.min(1,(o??5e4)/1e5),c=a*Math.min(1,(s??5e4)/1e5),l=n+(i-t)/2;e.moveTo(u,r),e.lineTo(n+i,r+c),e.lineTo(l+t,r+c),e.lineTo(l+t,r+a),e.lineTo(l,r+a),e.lineTo(l,r+c),e.lineTo(n,r+c),e.closePath();break}case`downarrow`:{let t=i*Math.min(1,(o??5e4)/1e5),c=a*Math.min(1,(s??5e4)/1e5),l=n+(i-t)/2;e.moveTo(u,r+a),e.lineTo(n+i,r+a-c),e.lineTo(l+t,r+a-c),e.lineTo(l+t,r),e.lineTo(l,r),e.lineTo(l,r+a-c),e.lineTo(n,r+a-c),e.closePath();break}case`leftrightarrow`:{let t=a*Math.min(1,(o??5e4)/1e5),c=i*Math.min(.5,(s??25e3)/1e5),l=r+(a-t)/2;e.moveTo(n,m),e.lineTo(n+c,r),e.lineTo(n+c,l),e.lineTo(n+i-c,l),e.lineTo(n+i-c,r),e.lineTo(n+i,m),e.lineTo(n+i-c,r+a),e.lineTo(n+i-c,l+t),e.lineTo(n+c,l+t),e.lineTo(n+c,r+a),e.closePath();break}case`updownarrow`:{let t=i*Math.min(1,(o??5e4)/1e5),c=a*Math.min(.5,(s??25e3)/1e5),l=n+(i-t)/2;e.moveTo(u,r),e.lineTo(n+i,r+c),e.lineTo(l+t,r+c),e.lineTo(l+t,r+a-c),e.lineTo(n+i,r+a-c),e.lineTo(u,r+a),e.lineTo(n,r+a-c),e.lineTo(l,r+a-c),e.lineTo(l,r+c),e.lineTo(n,r+c),e.closePath();break}case`notchedrightarrow`:{let t=a*Math.min(1,(o??5e4)/1e5),c=i*Math.min(1,(s??35e3)/1e5),l=r+(a-t)/2,u=c*.43;e.moveTo(n,l),e.lineTo(n+i-c,l),e.lineTo(n+i-c,r),e.lineTo(n+i,m),e.lineTo(n+i-c,r+a),e.lineTo(n+i-c,l+t),e.lineTo(n,l+t),e.lineTo(n+u,m),e.closePath();break}case`chevron`:{let t=i*Math.min(1,Math.max(0,(o??5e4)/1e5));e.moveTo(n,r),e.lineTo(n+t,r),e.lineTo(n+i,m),e.lineTo(n+t,r+a),e.lineTo(n,r+a),t>0&&e.lineTo(n+t,m),e.closePath();break}case`homeplate`:{let t=a*.4;e.moveTo(n,r),e.lineTo(n+i,r),e.lineTo(n+i,r+a-t),e.lineTo(u,r+a),e.lineTo(n,r+a-t),e.closePath();break}case`leftbracket`:{let t=Math.min(a*Math.min(5e4,Math.max(0,o??8333))/1e5,a/2);e.moveTo(n+i,r),e.quadraticCurveTo(n,r,n,r+t),a-2*t>.5&&e.lineTo(n,r+a-t),e.quadraticCurveTo(n,r+a,n+i,r+a);break}case`rightbracket`:{let t=Math.min(a*Math.min(5e4,Math.max(0,o??8333))/1e5,a/2);e.moveTo(n,r),e.quadraticCurveTo(n+i,r,n+i,r+t),a-2*t>.5&&e.lineTo(n+i,r+a-t),e.quadraticCurveTo(n+i,r+a,n,r+a);break}case`leftbrace`:{let t=m,o=i*.45;e.moveTo(n+i,r),e.bezierCurveTo(n+i-o,r,n+i-o,t-a*.08,n,t),e.bezierCurveTo(n+i-o,t+a*.08,n+i-o,r+a,n+i,r+a);break}case`rightbrace`:{let t=m,o=i*.45;e.moveTo(n,r),e.bezierCurveTo(n+o,r,n+o,t-a*.08,n+i,t),e.bezierCurveTo(n+o,t+a*.08,n+o,r+a,n,r+a);break}case`callout1`:case`callout2`:case`callout3`:case`bordercallout1`:case`bordercallout2`:case`bordercallout3`:case`accentcallout1`:case`accentcallout2`:case`accentcallout3`:case`accentbordercallout1`:case`accentbordercallout2`:case`accentbordercallout3`:{let u=(o===null?44150:o)/1e5,d=(s===null?98050:s)/1e5,f=(c===null?5e4:c)/1e5,p=(l===null?115e3:l)/1e5,m=n+Math.max(0,Math.min(1,u))*i,h=r+Math.max(0,Math.min(1,d))*a,g=n+f*i,_=r+p*a;if(e.rect(n,r,i,a),t.startsWith(`accent`)){let t=n+i*.08;e.moveTo(t,r),e.lineTo(t,r+a)}e.moveTo(m,h),e.lineTo(g,_);break}case`wedgerectcallout`:{e.rect(n,r,i,a*.8);let t=n+i*.2,o=r+a;e.moveTo(n+i*.1,r+a*.8),e.lineTo(t,o),e.lineTo(n+i*.3,r+a*.8),e.closePath();break}case`wedgeellipsecallout`:{let t=(o??-2e4)/1e5*i,n=(s??12e4)/1e5*a,r=u+t,c=m+n;e.ellipse(u,m,i/2,a/2,0,0,Math.PI*2);let l=Math.atan2(n,t),d=Math.PI/10,f=i/2,p=a/2,h=u+f*Math.cos(l-d),g=m+p*Math.sin(l-d),_=u+f*Math.cos(l+d),v=m+p*Math.sin(l+d);e.moveTo(h,g),e.lineTo(r,c),e.lineTo(_,v),e.closePath();break}case`cloudcallout`:{let t=Math.min(i,a)*.22,n=[[u-i*.25,r+a*.35],[u-i*.1,r+a*.15],[u+i*.1,r+a*.1],[u+i*.28,r+a*.2],[u+i*.35,r+a*.4]];e.moveTo(n[0][0]-t,n[0][1]);for(let[r,i]of n)e.arc(r,i,t,Math.PI,0);e.arc(u,r+a*.65,i*.45,0,Math.PI),e.closePath();let c=u+(o??-2e4)/1e5*i,l=m+(s??12e4)/1e5*a;e.moveTo(u+i*.05,r+a*.8),e.arc(c,l,Math.min(i,a)*.07,0,Math.PI*2);break}case`line`:case`straightconnector1`:case`bentconnector2`:case`bentconnector3`:case`bentconnector4`:case`bentconnector5`:case`curvedconnector2`:case`curvedconnector3`:case`curvedconnector4`:case`curvedconnector5`:e.moveTo(n,r),e.lineTo(n+i,r+a);break;case`heart`:e.moveTo(u,r+a*.32),e.bezierCurveTo(u,r,n+i*.05,r,n,r+a*.3),e.bezierCurveTo(n,r+a*.68,u-i*.05,r+a*.78,u,r+a),e.bezierCurveTo(u+i*.05,r+a*.78,n+i,r+a*.68,n+i,r+a*.3),e.bezierCurveTo(n+i-i*.05,r,u,r,u,r+a*.32);break;case`donut`:{let t=i/2,n=a/2,r=Math.min(t,n)*(o??25e3)/1e5,s=t-r,c=n-r;e.ellipse(u,m,t,n,0,0,Math.PI*2,!1),e.moveTo(u+s,m),e.ellipse(u,m,s,c,0,0,Math.PI*2,!0);break}case`nosmoking`:case`nosmokingsign`:{let t=(o??18750)/1e5,n=i/2,r=a/2,s=n*(1-2*t),c=r*(1-2*t);e.ellipse(u,m,n,r,0,0,Math.PI*2,!1),e.moveTo(u+s,m),e.ellipse(u,m,s,c,0,0,Math.PI*2,!0),e.moveTo(u+s,m),e.ellipse(u,m,s,c,0,0,Math.PI/2,!1),e.lineTo(u-s,m),e.ellipse(u,m,s,c,0,Math.PI,3*Math.PI/2,!1),e.closePath();break}case`pie`:case`pieWedge`:{let t=(o??0)/216e5*Math.PI*2,n=(s??162e5)/216e5*Math.PI*2;e.moveTo(u,m),e.arc(u,m,Math.min(i,a)/2,t,n),e.closePath();break}case`cloud`:{let t=a*.28;e.arc(n+i*.25,r+a*.55,t,Math.PI,Math.PI*1.8),e.arc(n+i*.45,r+a*.35,t*1.1,Math.PI*1.3,Math.PI*1.9),e.arc(n+i*.65,r+a*.4,t,Math.PI*1.5,Math.PI*2),e.arc(n+i*.8,r+a*.6,t*.9,Math.PI*1.6,Math.PI*.1),e.arc(n+i*.55,r+a*.75,t,0,Math.PI*.7),e.arc(n+i*.25,r+a*.7,t*.9,0,Math.PI),e.closePath();break}case`funnel`:e.moveTo(n,r),e.lineTo(n+i,r),e.lineTo(u+i*.15,r+a),e.lineTo(u-i*.15,r+a),e.closePath();break;case`smileyface`:{e.ellipse(u,m,i/2,a/2,0,0,Math.PI*2),e.closePath();let t=i*.05,n=a*.05,r=m-a*.12;e.moveTo(u-i*.2+t,r),e.ellipse(u-i*.2,r,t,n,0,0,Math.PI*2),e.moveTo(u+i*.2+t,r),e.ellipse(u+i*.2,r,t,n,0,0,Math.PI*2),e.moveTo(u-i*.25,m+a*.05),e.quadraticCurveTo(u,m+a*.3,u+i*.25,m+a*.05);break}case`document`:case`foldedcorner`:{let t=Math.min(i,a)*.15;e.moveTo(n,r),e.lineTo(n+i-t,r),e.lineTo(n+i,r+t),e.lineTo(n+i,r+a),e.lineTo(n,r+a),e.closePath(),e.moveTo(n+i-t,r),e.lineTo(n+i-t,r+t),e.lineTo(n+i,r+t);break}case`snip1rect`:{let t=Math.min(i,a)*Math.min(5e4,Math.max(0,o??16667))/1e5;e.moveTo(n,r),e.lineTo(n+i-t,r),e.lineTo(n+i,r+t),e.lineTo(n+i,r+a),e.lineTo(n,r+a),e.closePath();break}case`snip2samerect`:{let t=Math.min(i,a)*Math.min(5e4,Math.max(0,o??16667))/1e5;e.moveTo(n,r),e.lineTo(n+i-t,r),e.lineTo(n+i,r+t),e.lineTo(n+i,r+a),e.lineTo(n+t,r+a),e.lineTo(n,r+a-t),e.closePath();break}case`snip2diagrect`:{let t=Math.min(i,a)*Math.min(5e4,Math.max(0,o??16667))/1e5;e.moveTo(n+t,r),e.lineTo(n+i-t,r),e.lineTo(n+i,r+t),e.lineTo(n+i,r+a-t),e.lineTo(n+i-t,r+a),e.lineTo(n+t,r+a),e.lineTo(n,r+a-t),e.lineTo(n,r+t),e.closePath();break}case`snipRoundRect`:case`sniproundrect`:{let t=Math.min(i,a)*Math.min(5e4,Math.max(0,o??16667))/1e5;e.moveTo(n+t,r),e.lineTo(n+i-t,r),e.lineTo(n+i,r+t),e.lineTo(n+i,r+a),e.lineTo(n,r+a),e.quadraticCurveTo(n,r,n+t,r),e.closePath();break}case`round1rect`:{let t=Math.min(i,a)*Math.min(5e4,Math.max(0,o??16667))/1e5;e.moveTo(n+t,r),e.lineTo(n+i,r),e.lineTo(n+i,r+a),e.lineTo(n,r+a),e.lineTo(n,r+t),e.quadraticCurveTo(n,r,n+t,r),e.closePath();break}case`round2samerect`:{let t=Math.min(i,a)*Math.min(5e4,Math.max(0,o??16667))/1e5;e.moveTo(n+t,r),e.lineTo(n+i-t,r),e.quadraticCurveTo(n+i,r,n+i,r+t),e.lineTo(n+i,r+a),e.lineTo(n,r+a),e.lineTo(n,r+t),e.quadraticCurveTo(n,r,n+t,r),e.closePath();break}case`round2diagrect`:{let t=Math.min(i,a)*Math.min(5e4,Math.max(0,o??16667))/1e5;e.moveTo(n+t,r),e.lineTo(n+i,r),e.lineTo(n+i,r+a-t),e.quadraticCurveTo(n+i,r+a,n+i-t,r+a),e.lineTo(n,r+a),e.lineTo(n,r+t),e.quadraticCurveTo(n,r,n+t,r),e.closePath();break}case`plaque`:{let t=Math.min(i,a)*.25;e.moveTo(n+t,r),e.lineTo(n+i-t,r),e.quadraticCurveTo(n+i,r,n+i,r+t),e.lineTo(n+i,r+a-t),e.quadraticCurveTo(n+i,r+a,n+i-t,r+a),e.lineTo(n+t,r+a),e.quadraticCurveTo(n,r+a,n,r+a-t),e.lineTo(n,r+t),e.quadraticCurveTo(n,r,n+t,r),e.closePath();break}case`can`:{let t=a*.1;e.ellipse(u,r+t,i/2,t,0,0,Math.PI*2),e.moveTo(n,r+t),e.lineTo(n,r+a-t),e.ellipse(u,r+a-t,i/2,t,0,Math.PI,2*Math.PI),e.lineTo(n+i,r+t);break}case`cube`:{let t=Math.min(i,a)*.2;e.moveTo(n+t,r),e.lineTo(n+i,r),e.lineTo(n+i,r+a-t),e.lineTo(n+i-t,r+a),e.lineTo(n,r+a),e.lineTo(n,r+t),e.closePath(),e.moveTo(n+t,r),e.lineTo(n+t,r+t),e.lineTo(n+i-t,r+t),e.moveTo(n+t,r+t),e.lineTo(n,r+t);break}case`bevel`:{let t=Math.min(i,a)*.1;e.rect(n,r,i,a),e.moveTo(n,r),e.lineTo(n+t,r+t),e.lineTo(n+i-t,r+t),e.lineTo(n+i,r),e.moveTo(n+i-t,r+t),e.lineTo(n+i-t,r+a-t),e.lineTo(n+i,r+a),e.moveTo(n+i-t,r+a-t),e.lineTo(n+t,r+a-t),e.lineTo(n,r+a),e.moveTo(n+t,r+a-t),e.lineTo(n+t,r+t);break}case`halfframe`:{let t=Math.min(i,a)*.25;e.moveTo(n,r),e.lineTo(n+i,r),e.lineTo(n+i,r+t),e.lineTo(n+t,r+t),e.lineTo(n+t,r+a),e.lineTo(n,r+a),e.closePath();break}case`corner`:{let t=Math.min(i,a)*.25;e.moveTo(n,r),e.lineTo(n+i,r),e.lineTo(n+i,r+t),e.lineTo(n+t,r+t),e.lineTo(n+t,r+a),e.lineTo(n,r+a),e.closePath();break}case`irregularSeal1`:case`irregularseal1`:[[10800,5800],[14522,0],[14155,5325],[18380,4457],[16702,7315],[21097,8137],[17607,10475],[21600,13290],[16837,12942],[18145,18095],[14020,14457],[13247,19737],[10532,14935],[8485,21600],[7715,15627],[4762,17617],[5667,13937],[135,14587],[3722,11775],[0,8615],[4627,7617],[370,2295],[7312,6320],[8352,2295]].forEach(([t,o],s)=>{let c=n+i*t/21600,l=r+a*o/21600;s===0?e.moveTo(c,l):e.lineTo(c,l)}),e.closePath();break;case`irregularSeal2`:case`irregularseal2`:[[11462,4342],[14790,0],[14525,5777],[18007,3172],[16380,6532],[21600,6645],[16985,9402],[18270,11290],[16380,12310],[18877,15632],[14640,14350],[14942,17370],[12180,15935],[11612,18842],[9872,17370],[8700,19712],[7527,18125],[4917,21600],[4805,18240],[1285,17825],[3330,15370],[0,12877],[3935,11592],[1172,8270],[5372,7817],[4502,3625],[8550,6382],[9722,1887]].forEach(([t,o],s)=>{let c=n+i*t/21600,l=r+a*o/21600;s===0?e.moveTo(c,l):e.lineTo(c,l)}),e.closePath();break;case`flowchartalternateprocess`:case`flowchartprocess`:{let t=Math.min(i,a)*Math.min(5e4,Math.max(0,o??16667))/1e5;e.roundRect(n,r,i,a,[{x:t,y:t}]);break}case`flowchartdecision`:e.moveTo(u,r),e.lineTo(n+i,m),e.lineTo(u,r+a),e.lineTo(n,m),e.closePath();break;case`flowchartterminator`:{let t=Math.min(i,a)/2;e.roundRect(n,r,i,a,[{x:t,y:t}]);break}case`flowchartdocument`:{let t=a*.1;e.moveTo(n,r),e.lineTo(n+i,r),e.lineTo(n+i,r+a-t),e.bezierCurveTo(n+i*.75,r+a,n+i*.25,r+a-t*2,n,r+a-t),e.closePath();break}case`flowchartpredefinedprocess`:{let t=i*.1;e.rect(n,r,i,a),e.moveTo(n+t,r),e.lineTo(n+t,r+a),e.moveTo(n+i-t,r),e.lineTo(n+i-t,r+a);break}case`flowchartsort`:e.moveTo(u,r),e.lineTo(n+i,m),e.lineTo(u,r+a),e.lineTo(n,m),e.closePath(),e.moveTo(n,m),e.lineTo(n+i,m);break;case`flowchartmanualinput`:{let t=a*.2;e.moveTo(n,r+t),e.lineTo(n+i,r),e.lineTo(n+i,r+a),e.lineTo(n,r+a),e.closePath();break}case`moon`:e.arc(u,m,Math.min(i,a)/2,-Math.PI/2,Math.PI/2),e.arc(u-i*.2,m,Math.min(i,a)/2,Math.PI/2,-Math.PI/2,!0),e.closePath();break;case`arc`:{let t=216e5,n=(o??162e5)/t*Math.PI*2,r=(s??54e5)/t*Math.PI*2;e.ellipse(u,m,i/2,a/2,0,n,n+r,r<0);break}case`mathequal`:{let t=Math.min(36745,Math.max(0,o??23520)),n=1e5-2*t,r=Math.min(n,Math.max(0,s??11760)),c=a*t/1e5,l=a*r/2e5,d=i*73490/2e5,f=u-d,p=u+d,h=m-l,g=m+l,_=h-c,v=g+c;e.rect(f,_,p-f,h-_),e.rect(f,g,p-f,v-g);break}case`mathmultiply`:{let t=Math.min(i,a)*Math.min(51965,Math.max(0,o??23520))/1e5,s=Math.atan2(a,i),c=Math.sin(s),l=Math.cos(s),u=t/2*c,d=t/2*l;e.moveTo(n+u,r-d),e.lineTo(n-u,r+d),e.lineTo(n+i-u,r+a+d),e.lineTo(n+i+u,r+a-d),e.closePath(),e.moveTo(n+i-u,r-d),e.lineTo(n+i+u,r+d),e.lineTo(n+u,r+a+d),e.lineTo(n-u,r+a-d),e.closePath();break}case`mathplus`:{let t=Math.min(73490,Math.max(0,o??23520)),n=i*73490/2e5,r=a*73490/2e5,s=Math.min(i,a)*t/2e5,c=u-n,l=u+n,d=m-r,f=m+r,p=u-s,h=u+s,g=m-s,_=m+s;e.moveTo(c,g),e.lineTo(p,g),e.lineTo(p,d),e.lineTo(h,d),e.lineTo(h,g),e.lineTo(l,g),e.lineTo(l,_),e.lineTo(h,_),e.lineTo(h,f),e.lineTo(p,f),e.lineTo(p,_),e.lineTo(c,_),e.closePath();break}case`mathminus`:{let t=Math.min(1e5,Math.max(0,o??23520)),n=i*73490/2e5,r=a*t/2e5,s=u-n,c=u+n,l=m-r,d=m+r;e.rect(s,l,c-s,d-l);break}case`mathdivide`:{let t=Math.min(36745,Math.max(1e3,o??23520)),n=(73490+-t)/4,l=36745*i/a,d=Math.min(Math.min(n,l),Math.max(1e3,c??11760)),f=73490+4*d-t,p=Math.min(f,Math.max(0,s??5880)),h=a*t/2e5,g=a*p/1e5,_=a*d/1e5,v=i*73490/2e5,y=m-h,b=m+h,x=y-(g+_)-_,S=r+a-x,C=u-v,w=u+v;e.rect(C,y,w-C,b-y),e.moveTo(u+_,x+_),e.arc(u,x+_,_,0,Math.PI*2),e.moveTo(u+_,S-_),e.arc(u,S-_,_,0,Math.PI*2);break}case`quadarrow`:{let t=i*(o??23e3)/1e5,c=i*(s??3e4)/1e5,l=n+(i-t)/2,d=r+(a-t)/2;e.moveTo(u,r),e.lineTo(n+i-c,r+c),e.lineTo(n+i-c,d),e.lineTo(l+t,d),e.lineTo(l+t,r+c),e.lineTo(n+c,r+c),e.lineTo(n+i,m),e.lineTo(n+i-c,r+a-c),e.lineTo(l+t,r+a-c),e.lineTo(l+t,d+t),e.lineTo(n+i-c,d+t),e.lineTo(n+i-c,r+a-c),e.lineTo(u,r+a),e.lineTo(n+c,r+a-c),e.lineTo(n+c,d+t),e.lineTo(l,d+t),e.lineTo(l,r+a-c),e.lineTo(n,m),e.lineTo(n+c,r+c),e.lineTo(l,r+c),e.lineTo(l,d),e.lineTo(n+c,d),e.closePath();break}case`quadarrowcallout`:{let t=Math.min(i,a),d=Math.min(5e4,Math.max(0,s??18515)),f=d*2,p=Math.min(f,Math.max(0,o??18515)),h=5e4-d,g=Math.min(h,Math.max(0,c??18515)),_=1e5-2*g,v=Math.min(_,Math.max(p,l??48123)),y=t*d/1e5,b=t*p/2e5,x=t*g/1e5,S=i*v/2e5,C=a*v/2e5,w=u-S,T=u+S,E=u-y,D=u+y,O=u-b,k=u+b,A=n+i-x,j=m-C,M=m+C,N=m-y,P=m+y,F=m-b,I=m+b,L=r+a-x;e.moveTo(n,m),e.lineTo(n+x,N),e.lineTo(n+x,F),e.lineTo(w,F),e.lineTo(w,j),e.lineTo(O,j),e.lineTo(O,r+x),e.lineTo(E,r+x),e.lineTo(u,r),e.lineTo(D,r+x),e.lineTo(k,r+x),e.lineTo(k,j),e.lineTo(T,j),e.lineTo(T,F),e.lineTo(A,F),e.lineTo(A,N),e.lineTo(n+i,m),e.lineTo(A,P),e.lineTo(A,I),e.lineTo(T,I),e.lineTo(T,M),e.lineTo(k,M),e.lineTo(k,L),e.lineTo(D,L),e.lineTo(u,r+a),e.lineTo(E,L),e.lineTo(O,L),e.lineTo(O,M),e.lineTo(w,M),e.lineTo(w,I),e.lineTo(n+x,I),e.lineTo(n+x,P),e.closePath();break}case`wave`:{let t=a*(o??12500)/1e5,s=r+t,c=r+a-t;e.moveTo(n,s),e.bezierCurveTo(n+i*.25,r,n+i*.25,r+t*2,n+i*.5,s),e.bezierCurveTo(n+i*.75,r+t*2,n+i*.75,r,n+i,s),e.lineTo(n+i,c),e.bezierCurveTo(n+i*.75,r+a,n+i*.75,r+a-t*2,n+i*.5,c),e.bezierCurveTo(n+i*.25,r+a-t*2,n+i*.25,r+a,n,c),e.closePath();break}case`doublewave`:{let t=a*(o??6250)/1e5,s=r+t,c=r+a-t;e.moveTo(n,s),e.bezierCurveTo(n+i*.25,r,n+i*.25,r+t*2,n+i*.5,s),e.bezierCurveTo(n+i*.75,r+t*2,n+i*.75,r,n+i,s),e.lineTo(n+i,c),e.bezierCurveTo(n+i*.75,r+a,n+i*.75,r+a-t*2,n+i*.5,c),e.bezierCurveTo(n+i*.25,r+a-t*2,n+i*.25,r+a,n,c),e.closePath();break}case`sun`:{let t=Math.min(i,a)/2,n=t*((o??25e3)/1e5+.5),r=Math.min(n,t*.9),s=Math.PI/16;for(let n=0;n<8;n++){let i=n/8*Math.PI*2;e.moveTo(u+r*Math.cos(i-s),m+r*Math.sin(i-s)),e.lineTo(u+t*Math.cos(i),m+t*Math.sin(i)),e.lineTo(u+r*Math.cos(i+s),m+r*Math.sin(i+s)),e.closePath()}e.moveTo(u+r,m),e.arc(u,m,r,0,Math.PI*2);break}case`lightningbolt`:e.moveTo(u+i*.1,r),e.lineTo(n,m-a*.05),e.lineTo(u+i*.05,m-a*.05),e.lineTo(u-i*.1,r+a),e.lineTo(n+i,m+a*.05),e.lineTo(u-i*.05,m+a*.05),e.closePath();break;case`frame`:{let t=Math.min(i,a)*(o??12500)/1e5;e.rect(n,r,i,a),e.rect(n+t,r+t,i-2*t,a-2*t);break}case`bracketpair`:{let t=a*Math.min(5e4,Math.max(0,o??8333))/1e5;e.moveTo(n+i*.4,r),e.quadraticCurveTo(n,r,n,r+t),a-2*t>0&&e.lineTo(n,r+a-t),e.quadraticCurveTo(n,r+a,n+i*.4,r+a),e.moveTo(n+i*.6,r),e.quadraticCurveTo(n+i,r,n+i,r+t),a-2*t>0&&e.lineTo(n+i,r+a-t),e.quadraticCurveTo(n+i,r+a,n+i*.6,r+a);break}case`bracepair`:{let t=i*.2;e.moveTo(n+i*.4,r),e.bezierCurveTo(n+i*.4-t,r,n+i*.4-t,m-a*.08,n,m),e.bezierCurveTo(n+i*.4-t,m+a*.08,n+i*.4-t,r+a,n+i*.4,r+a),e.moveTo(n+i*.6,r),e.bezierCurveTo(n+i*.6+t,r,n+i*.6+t,m-a*.08,n+i,m),e.bezierCurveTo(n+i*.6+t,m+a*.08,n+i*.6+t,r+a,n+i*.6,r+a);break}case`chord`:{let t=(o??27e5)/216e5*Math.PI*2,n=(s??162e5)/216e5*Math.PI*2;e.ellipse(u,m,i/2,a/2,0,t,n),e.closePath();break}case`blockarc`:{let t=Math.min(i,a)/2,n=o??108e5,r=s??0,l=t*(1-(c??25e3)/1e5),d=n/216e5*Math.PI*2,f=r/216e5*Math.PI*2;e.arc(u,m,t,d,f,!1),e.arc(u,m,l,f,d,!0),e.closePath();break}case`teardrop`:{let t=Math.min(i,a)*.4,o=n+t,s=r+a-t;e.arc(o,s,t,0,Math.PI*2*.75),e.bezierCurveTo(o-t*.1,s-t,n+i-t,r+t,n+i,r),e.bezierCurveTo(n+i-t*.2,r+t*.5,o+t,s-t*1.1,o+t,s),e.closePath();break}case`diagstripe`:{let t=a*(o??5e4)/1e5*i/a;e.moveTo(n+t,r),e.lineTo(n+i,r),e.lineTo(n+i-t,r+a),e.lineTo(n,r+a),e.closePath();break}case`wedgeroundrectcallout`:{let t=Math.min(i,a)*.1;e.roundRect(n,r,i,a*.85,t),e.moveTo(n+i*.1,r+a*.85),e.lineTo(n+i*.2,r+a),e.lineTo(n+i*.3,r+a*.85),e.closePath();break}case`rightarrowcallout`:{let t=a*(o??5e4)/1e5,c=i*(s??5e4)/1e5,l=r+(a-t)/2;e.rect(n,l,c,t),e.moveTo(n+c,r),e.lineTo(n+i,m),e.lineTo(n+c,r+a),e.closePath();break}case`leftarrowcallout`:{let t=a*(o??5e4)/1e5,c=i*(s??5e4)/1e5,l=r+(a-t)/2;e.rect(n+i-c,l,c,t),e.moveTo(n+i-c,r),e.lineTo(n,m),e.lineTo(n+i-c,r+a),e.closePath();break}case`uparrowcallout`:{let t=i*(o??5e4)/1e5,c=a*(s??5e4)/1e5,l=n+(i-t)/2;e.rect(l,r+c,t,a-c),e.moveTo(n,r+c),e.lineTo(u,r),e.lineTo(n+i,r+c),e.closePath();break}case`downarrowcallout`:{let t=i*(o??5e4)/1e5,c=a*(s??5e4)/1e5,l=n+(i-t)/2;e.rect(l,r,t,a-c),e.moveTo(n,r+a-c),e.lineTo(u,r+a),e.lineTo(n+i,r+a-c),e.closePath();break}case`leftrightarrowcallout`:{let t=a*(o??5e4)/1e5,c=i*(s??25e3)/1e5,l=r+(a-t)/2;e.rect(n+c,l,i-2*c,t),e.moveTo(n+c,r),e.lineTo(n,m),e.lineTo(n+c,r+a),e.closePath(),e.moveTo(n+i-c,r),e.lineTo(n+i,m),e.lineTo(n+i-c,r+a),e.closePath();break}case`leftrightuparrow`:{let t=i*(o??25e3)/1e5,c=a*(s??3e4)/1e5,l=n+(i-t)/2;e.moveTo(u,r),e.lineTo(n+i,r+c),e.lineTo(l+t,r+c),e.lineTo(l+t,r+a),e.lineTo(l,r+a),e.lineTo(l,r+c),e.lineTo(n,r+c),e.closePath();break}case`leftuparrow`:{let t=Math.min(i,a),l=Math.min(5e4,Math.max(0,s??25e3)),u=l*2,d=Math.min(u,Math.max(0,o??25e3)),f=1e5-u,p=t*Math.min(f,Math.max(0,c??25e3))/1e5,m=t*l/5e4,h=i-m,g=a-m,_=t*l/1e5,v=i-_,y=a-_,b=t*d/2e5,x=v-b,S=v+b,C=y-b,w=y+b;e.moveTo(n,r+y),e.lineTo(n+p,r+g),e.lineTo(n+p,r+C),e.lineTo(n+x,r+C),e.lineTo(n+x,r+p),e.lineTo(n+h,r+p),e.lineTo(n+v,r),e.lineTo(n+i,r+p),e.lineTo(n+S,r+p),e.lineTo(n+S,r+w),e.lineTo(n+p,r+w),e.lineTo(n+p,r+a),e.closePath();break}case`uturnarrow`:{let t=i*(o??25e3)/1e5,s=(i-t)/2,c=Math.max(0,s-t),l=n+t+s,u=r+t+s,d=t*2,f=r+a-t*2.5;e.moveTo(n,r+a),e.lineTo(n,u),e.arc(l,u,s,Math.PI,0),e.lineTo(n+i,f),e.lineTo(n+i+(d-t)/2,f),e.lineTo(l+t/2,r+a),e.lineTo(n+i-(d-t)/2-t,f),e.lineTo(n+i-t,f),e.lineTo(n+i-t,u),e.arc(l,u,c,0,Math.PI,!0),e.lineTo(n+t,r+a),e.closePath();break}case`bentarrow`:case`bentuparrow`:{let t=Math.min(i,a)*.25;e.moveTo(n,m-t/2),e.lineTo(n+i-t*2,m-t/2),e.lineTo(n+i-t*2,r+t),e.lineTo(n+i,m),e.lineTo(n+i-t*2,r+a-t),e.lineTo(n+i-t*2,m+t/2),e.lineTo(n,m+t/2),e.closePath();break}case`plus`:{let t=Math.min(i,a)*(o??25e3)/1e5;e.rect(u-t,r,2*t,a),e.rect(n,m-t,i,2*t);break}case`mathnotequal`:{let t=Math.min(5e4,Math.max(0,o??23520)),n=Math.min(66e5,Math.max(42e5,s??66e5)),l=Math.min(1e5-2*t,Math.max(0,c??11760)),d=a*t/1e5,f=a*l/2e5,p=i*73490/2e5,h=a/2,g=(n/6e4-90)*Math.PI/180,_=h*Math.tan(g),v=Math.hypot(_,h)*d/h;e.rect(u-p,m-f-d,2*p,d),e.rect(u-p,m+f,2*p,d),e.moveTo(u+_-v/2,r),e.lineTo(u+_+v/2,r),e.lineTo(u-_+v/2,r+a),e.lineTo(u-_-v/2,r+a),e.closePath();break}case`flowchartconnector`:e.ellipse(u,m,i/2,a/2,0,0,Math.PI*2);break;case`flowchartdelay`:{let t=a/2;e.moveTo(n,r),e.lineTo(n+i-t,r),e.arc(n+i-t,m,t,-Math.PI/2,Math.PI/2),e.lineTo(n,r+a),e.closePath();break}case`flowchartdisplay`:{let t=i*.2,o=i*.15;e.moveTo(n+t,r),e.lineTo(n+i-o,r),e.arc(n+i-o,m,a/2,-Math.PI/2,Math.PI/2),e.lineTo(n+t,r+a),e.lineTo(n,m),e.closePath();break}case`flowchartinputoutput`:case`flowchartpunchedcard`:{let t=i*.2;e.moveTo(n+t,r),e.lineTo(n+i,r),e.lineTo(n+i-t,r+a),e.lineTo(n,r+a),e.closePath();break}case`flowchartmerge`:e.moveTo(n,r),e.lineTo(n+i,r),e.lineTo(u,r+a),e.closePath();break;case`flowchartextract`:e.moveTo(u,r),e.lineTo(n+i,r+a),e.lineTo(n,r+a),e.closePath();break;case`flowchartoffpageconnector`:{let t=a*.3;e.moveTo(n,r),e.lineTo(n+i,r),e.lineTo(n+i,r+a-t),e.lineTo(u,r+a),e.lineTo(n,r+a-t),e.closePath();break}case`flowchartonlinestorage`:case`flowchartmanuallabel`:case`flowchartpuncheddisk`:e.rect(n,r,i,a);break;case`horizontalscroll`:{let t=Math.min(i,a)*.15;e.roundRect(n+t,r,i-t,a,t),e.moveTo(n+t,r+t*2),e.arc(n+t,r+t,t,Math.PI/2,Math.PI*2.5);break}case`verticalscroll`:{let t=Math.min(i,a)*.15;e.roundRect(n,r+t,i,a-t,t),e.moveTo(n+t*2,r+t),e.arc(n+t,r+t,t,0,Math.PI*2);break}case`ribbon`:{let t=Math.min(33333,Math.max(0,o??16667)),c=i*Math.min(75e3,Math.max(25e3,s??5e4))/2e5,l=i/8,u=i/32,d=i/2-c,f=i/2+c,p=d+u,m=f-u,h=d+l,g=f-l,_=h-u,v=g+u,y=i-l,b=a*t/2e5,x=a*t/1e5,S=a-x,C=S/2;e.moveTo(n,r),e.lineTo(n+_,r),e.lineTo(n+p,r+b),e.lineTo(n+m,r+x),e.lineTo(n+v,r+b),e.lineTo(n+i,r),e.lineTo(n+y,r+C),e.lineTo(n+i,r+S),e.lineTo(n+f,r+S),e.lineTo(n+f,r+a),e.lineTo(n+p,r+a),e.lineTo(n+d,r+S),e.lineTo(n,r+S),e.lineTo(n+l,r+C),e.closePath();break}case`ribbon2`:{let t=Math.min(33333,Math.max(0,o??16667)),c=i*Math.min(75e3,Math.max(25e3,s??5e4))/2e5,l=i/8,u=i/32,d=i/2-c,f=i/2+c,p=d+u,m=f-u,h=d+l,g=f-l,_=h-u,v=g+u,y=i-l,b=a*t/2e5,x=a*t/1e5,S=a-b,C=a-x,w=x,T=(w+a)/2;e.moveTo(n,r+a),e.lineTo(n+_,r+a),e.lineTo(n+p,r+S),e.lineTo(n+m,r+C),e.lineTo(n+v,r+S),e.lineTo(n+i,r+a),e.lineTo(n+y,r+T),e.lineTo(n+i,r+w),e.lineTo(n+f,r+w),e.lineTo(n+f,r),e.lineTo(n+p,r),e.lineTo(n+d,r+w),e.lineTo(n,r+w),e.lineTo(n+l,r+T),e.closePath();break}case`ellipseribbon`:{let t=Math.min(1e5,Math.max(0,o??25e3)),l=Math.min(75e3,Math.max(25e3,s??5e4)),u=Math.max(0,t-(1e5-t)/2),d=Math.min(t,Math.max(u,c??12500)),f=i/8,p=i*l/2e5,m=i/2-p,h=m+f,g=i-h,_=i-m,v=i-f,y=a*d/1e5,b=4*y/i,x=b*(h-h*h/i),S=h/2,C=b*S,w=i-S,T=a*t/1e5,E=T-y,D=b*(m-m*m/i),O=D+E,k=y+E-O+y+E,A=a-T,j=(y*14/16+A)/2,M=D+A,N=O+A,P=m/2,F=b*P+A,I=i-P,L=k+A;e.moveTo(n,r),e.quadraticCurveTo(n+S,r+C,n+h,r+x),e.lineTo(n+m,r+O),e.quadraticCurveTo(n+i/2,r+k,n+_,r+O),e.lineTo(n+g,r+x),e.quadraticCurveTo(n+w,r+C,n+i,r),e.lineTo(n+v,r+j),e.lineTo(n+i,r+A),e.quadraticCurveTo(n+I,r+F,n+_,r+M),e.lineTo(n+_,r+N),e.quadraticCurveTo(n+i/2,r+L,n+m,r+N),e.lineTo(n+m,r+M),e.quadraticCurveTo(n+P,r+F,n,r+A),e.lineTo(n+f,r+j),e.closePath();break}case`ellipseribbon2`:{let t=Math.min(1e5,Math.max(0,o??25e3)),l=Math.min(75e3,Math.max(25e3,s??5e4)),u=Math.max(0,t-(1e5-t)/2),d=Math.min(t,Math.max(u,c??12500)),f=i/8,p=i*l/2e5,m=i/2-p,h=m+f,g=i-h,_=i-m,v=i-f,y=a*d/1e5,b=4*y/i,x=a-b*(h-h*h/i),S=h/2,C=a-b*S,w=i-S,T=a*t/1e5,E=T-y,D=b*(m-m*m/i),O=D+E,k=a-O,A=y+E-O+y+E,j=a-A,M=a-T,N=a-(y*14/16+M)/2,P=a-(D+M),F=a-(O+M),I=m/2,L=a-(b*I+M),R=i-I,z=a-(A+M);e.moveTo(n,r+a),e.quadraticCurveTo(n+S,r+C,n+h,r+x),e.lineTo(n+m,r+k),e.quadraticCurveTo(n+i/2,r+j,n+_,r+k),e.lineTo(n+g,r+x),e.quadraticCurveTo(n+w,r+C,n+i,r+a),e.lineTo(n+v,r+N),e.lineTo(n+i,r+T),e.quadraticCurveTo(n+R,r+L,n+_,r+P),e.lineTo(n+_,r+F),e.quadraticCurveTo(n+i/2,r+z,n+m,r+F),e.lineTo(n+m,r+P),e.quadraticCurveTo(n+I,r+L,n,r+T),e.lineTo(n+f,r+N),e.closePath();break}case`circulararrow`:{let t=(s??0)/6e4*Math.PI/180,n=(o??162e5)/6e4*Math.PI/180,r=(c??5e4)/1e5,l=Math.min(i,a)/2,d=l*(1-r),f=(l+d)/2,p=l-d,h=t+n;e.arc(u,m,l,t,h,!1),e.arc(u,m,d,h,t,!0),e.closePath();let g=Math.sin(h),_=-Math.cos(h),v=p*1.5,y=u+f*Math.cos(h)+v*g,b=m+f*Math.sin(h)+v*_;e.moveTo(y,b),e.lineTo(u+l*Math.cos(h),m+l*Math.sin(h)),e.lineTo(u+d*Math.cos(h),m+d*Math.sin(h)),e.closePath();break}case`curvedrightarrow`:{let t=Math.min(i,a),l=a/2,u=5e4*a/t,d=Math.min(u,Math.max(0,s??5e4)),f=t*Math.min(d,Math.max(0,o??25e3))/1e5,m=t*d/1e5,h=l-(f+m)/4,g=(2*h)**2-f**2,_=1e5*(Math.sqrt(Math.max(0,g))*i/(2*h))/t,v=t*Math.min(_,Math.max(0,c??25e3))/1e5,y=Math.sqrt(Math.max(0,i*i-v*v))*h/i,b=h+f,x=h+y,S=b+y,C=(m-f)/2,w=x-C,T=S+C,E=a-m/2,D=i-v,O=Math.atan2(v,y),k=-O,A=Math.PI-O;e.moveTo(n,r+h),p(e,n,r+h,i,h,Math.PI,k),e.lineTo(n+D,r+w),e.lineTo(n+i,r+E),e.lineTo(n+D,r+T),e.lineTo(n+D,r+S),p(e,n+D,r+S,i,h,A,O),e.closePath();break}case`curvedleftarrow`:{let t=Math.min(i,a),l=a/2,u=5e4*a/t,d=Math.min(u,Math.max(0,s??5e4)),f=t*Math.min(d,Math.max(0,o??25e3))/1e5,m=t*d/1e5,h=l-(f+m)/4,g=(2*h)**2-f**2,_=Math.sqrt(Math.max(0,g))*i/(2*h),v=1e5*_/t,y=t*Math.min(v,Math.max(0,c??25e3))/1e5,b=Math.sqrt(Math.max(0,i*i-y*y))*h/i,x=h+f,S=h+b,C=x+b,w=(m-f)/2,T=S-w,E=C+w,D=a-m/2,O=y,k=Math.atan2(y,b),A=f/2,j=Math.atan2(A,_),M=j-k,N=k-j,P=-j;e.moveTo(n,r+D),e.lineTo(n+O,r+T),e.lineTo(n+O,r+S);let F=p(e,n+O,r+S,i,h,k,M);p(e,F.x,F.y,i,h,P,N),e.lineTo(n+O,r+E),e.closePath();break}case`curveduparrow`:{let t=Math.min(i,a),l=i/2,u=5e4*i/t,d=Math.min(u,Math.max(0,s??5e4)),f=t*Math.min(1e5,Math.max(0,o??25e3))/1e5,m=t*d/1e5,h=l-(f+m)/4,g=(2*h)**2-f**2,_=Math.sqrt(Math.max(0,g))*a/(2*h),v=1e5*_/t,y=t*Math.min(v,Math.max(0,c??25e3))/1e5,b=Math.sqrt(Math.max(0,a*a-y*y))*h/a,x=h+f,S=h+b,C=x+b,w=(m-f)/2,T=S-w,E=C+w,D=i-m/2,O=y,k=Math.atan2(y,b),A=f/2,j=Math.atan2(A,_),M=j-k,N=k-j,P=Math.PI/2-k,F=Math.PI/2-j;e.moveTo(n+D,r),e.lineTo(n+E,r+O),e.lineTo(n+C,r+O);let I=p(e,n+C,r+O,h,a,P,N);p(e,I.x,I.y,h,a,F,M),e.lineTo(n+T,r+O),e.closePath();break}case`curveddownarrow`:{let t=Math.min(i,a),l=i/2,u=5e4*i/t,d=Math.min(u,Math.max(0,s??5e4)),f=t*Math.min(1e5,Math.max(0,o??25e3))/1e5,m=t*d/1e5,h=l-(f+m)/4,g=(2*h)**2-f**2,_=Math.sqrt(Math.max(0,g))*a/(2*h),v=1e5*_/t,y=t*Math.min(v,Math.max(0,c??25e3))/1e5,b=Math.sqrt(Math.max(0,a*a-y*y))*h/a,x=h+f,S=h+b,C=x+b,w=(m-f)/2,T=S-w,E=C+w,D=i-m/2,O=a-y,k=Math.atan2(y,b),A=f/2,j=Math.atan2(A,_),M=3*Math.PI/2+k;3*Math.PI/2-j,j-Math.PI/2,Math.PI/2-j,e.moveTo(n+D,r+a),e.lineTo(n+T,r+O),e.lineTo(n+S,r+O),p(e,n+S,r+O,h,a,M,-k),e.lineTo(n+x,r),p(e,n+x,r,h,a,3*Math.PI/2,k),e.lineTo(n+E,r+O),e.closePath();break}case`stripedrightarrow`:{let t=Math.min(i,a),c=t/32,l=t/16,u=t/8,d=t*(o??5e4)/1e5,f=i*(s??5e4)/1e5,p=m-d/2,h=m+d/2,g=n+i-f;e.rect(n,p,c,d),e.rect(n+l,p,l,d),e.rect(n+u,p,u,d),e.moveTo(g,p),e.lineTo(g,r),e.lineTo(n+i,m),e.lineTo(g,r+a),e.lineTo(g,h),e.lineTo(n+u*2,h),e.lineTo(n+u*2,p),e.closePath();break}case`flowchartpreparation`:{let t=i*.2;e.moveTo(n+t,r),e.lineTo(n+i-t,r),e.lineTo(n+i,m),e.lineTo(n+i-t,r+a),e.lineTo(n+t,r+a),e.lineTo(n,m),e.closePath();break}case`flowchartcollate`:e.moveTo(n,r),e.lineTo(n+i,r),e.lineTo(n,r+a),e.lineTo(n+i,r+a),e.closePath();break;case`flowchartmagneticdisk`:{let t=a*.15;e.moveTo(n,r+t),e.ellipse(u,r+t,i/2,t,0,Math.PI,0),e.lineTo(n+i,r+a-t),e.ellipse(u,r+a-t,i/2,t,0,0,Math.PI),e.lineTo(n,r+t),e.closePath(),e.moveTo(n+i,r+t),e.ellipse(u,r+t,i/2,t,0,0,Math.PI);break}case`flowchartinternalstorage`:{e.rect(n,r,i,a);let t=i*.15,o=a*.15;e.moveTo(n+t,r),e.lineTo(n+t,r+a),e.moveTo(n,r+o),e.lineTo(n+i,r+o);break}case`flowchartmagneticdrum`:{let t=i*.15;e.moveTo(n+t,r),e.lineTo(n+i,r),e.lineTo(n+i,r+a),e.lineTo(n+t,r+a),e.ellipse(n+t,m,t,a/2,0,Math.PI/2,-Math.PI/2,!0),e.closePath(),e.moveTo(n+i,r),e.ellipse(n+i,m,t,a/2,0,-Math.PI/2,Math.PI/2);break}case`flowchartsumingjunction`:case`flowchartsummingjunction`:{e.ellipse(u,m,i/2,a/2,0,0,Math.PI*2);let t=Math.min(i,a)/2*.65;e.moveTo(u-t,m-t),e.lineTo(u+t,m+t),e.moveTo(u+t,m-t),e.lineTo(u-t,m+t);break}case`flowchartmagnetictape`:{let t=Math.min(i,a)/2,n=u+t*.5;e.moveTo(u,r+a),e.arc(u,m,t,Math.PI/2,Math.PI/2+Math.PI*2*.875),e.lineTo(n,m+t*.5),e.lineTo(n,r+a),e.closePath();break}case`flowchartpunchedtape`:{let t=a*.12;e.moveTo(n,r),e.lineTo(n+i,r),e.lineTo(n+i,r+a-t),e.bezierCurveTo(n+i*.75,r+a,n+i*.25,r+a-t*2,n,r+a-t),e.closePath(),e.moveTo(n,r+t),e.bezierCurveTo(n+i*.25,r,n+i*.75,r+t*2,n+i,r+t);break}case`flowchartmanualoperation`:{let t=i*.15;e.moveTo(n+t,r),e.lineTo(n+i-t,r),e.lineTo(n+i,r+a),e.lineTo(n,r+a),e.closePath();break}case`flowchartmultidocument`:{let t=a*.1,o=i*.04;e.rect(n+o*2,r-a*.08,i-o*2,a*.1),e.rect(n+o,r-a*.04,i-o,a*.06),e.moveTo(n,r),e.lineTo(n+i,r),e.lineTo(n+i,r+a-t),e.bezierCurveTo(n+i*.75,r+a,n+i*.25,r+a-t*2,n,r+a-t),e.closePath();break}case`rttriangle`:e.moveTo(n,r),e.lineTo(n,r+a),e.lineTo(n+i,r+a),e.closePath();break;default:e.rect(n,r,i,a);break}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return m}});
|
package/dist/types/docx.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ declare type BodyElement = {
|
|
|
29
29
|
type: 'table';
|
|
30
30
|
} & DocTable | {
|
|
31
31
|
type: 'pageBreak';
|
|
32
|
+
parity?: 'odd' | 'even';
|
|
32
33
|
};
|
|
33
34
|
|
|
34
35
|
declare interface BorderSpec {
|
|
@@ -44,6 +45,13 @@ declare interface CellBorders {
|
|
|
44
45
|
right: BorderSpec | null;
|
|
45
46
|
}
|
|
46
47
|
|
|
48
|
+
/** ECMA-376 §17.4.7: a table cell may contain paragraphs AND nested tables. */
|
|
49
|
+
declare type CellElement = {
|
|
50
|
+
type: 'paragraph';
|
|
51
|
+
} & DocParagraph | {
|
|
52
|
+
type: 'table';
|
|
53
|
+
} & DocTable;
|
|
54
|
+
|
|
47
55
|
export declare interface DocParagraph {
|
|
48
56
|
/**
|
|
49
57
|
* ECMA-376 §17.18.44 ST_Jc. Renderer honors left, start, center, right, end,
|
|
@@ -104,7 +112,7 @@ declare interface DocTable {
|
|
|
104
112
|
}
|
|
105
113
|
|
|
106
114
|
declare interface DocTableCell {
|
|
107
|
-
content:
|
|
115
|
+
content: CellElement[];
|
|
108
116
|
colSpan: number;
|
|
109
117
|
vMerge: boolean | null;
|
|
110
118
|
borders: CellBorders;
|
|
@@ -116,6 +124,9 @@ declare interface DocTableCell {
|
|
|
116
124
|
declare interface DocTableRow {
|
|
117
125
|
cells: DocTableCell[];
|
|
118
126
|
rowHeight: number | null;
|
|
127
|
+
/** ECMA-376 §17.4.80 hRule. "auto" (default) = informational; "atLeast" =
|
|
128
|
+
* lower bound; "exact" = fixed clip. */
|
|
129
|
+
rowHeightRule: 'auto' | 'atLeast' | 'exact' | string;
|
|
119
130
|
isHeader: boolean;
|
|
120
131
|
}
|
|
121
132
|
|
|
@@ -128,6 +139,15 @@ declare interface Document_2 {
|
|
|
128
139
|
majorFont?: string;
|
|
129
140
|
/** Theme `<a:fontScheme><a:minorFont><a:latin@typeface>` (body face). */
|
|
130
141
|
minorFont?: string;
|
|
142
|
+
/**
|
|
143
|
+
* ECMA-376 §17.8.3.10 — font family classification from `word/fontTable.xml`.
|
|
144
|
+
* Maps font name to `<w:family @w:val>`: "roman" | "swiss" | "modern" |
|
|
145
|
+
* "script" | "decorative" | "auto". The renderer uses this as the primary
|
|
146
|
+
* source for serif/sans-serif decisions (roman→serif, swiss→sans-serif,
|
|
147
|
+
* modern→monospace), falling back to name-pattern matching only when the
|
|
148
|
+
* entry is absent or classified as "auto".
|
|
149
|
+
*/
|
|
150
|
+
fontFamilyClasses?: Record<string, string>;
|
|
131
151
|
}
|
|
132
152
|
export { Document_2 as Document }
|
|
133
153
|
|
|
@@ -375,6 +395,12 @@ export declare interface RenderPageOptions {
|
|
|
375
395
|
}) => void;
|
|
376
396
|
}
|
|
377
397
|
|
|
398
|
+
declare interface RubyAnnotation {
|
|
399
|
+
text: string;
|
|
400
|
+
/** Annotation font size in pt. Word stores this as half-points in `<w:hps>`. */
|
|
401
|
+
fontSizePt: number;
|
|
402
|
+
}
|
|
403
|
+
|
|
378
404
|
export declare interface SectionProps {
|
|
379
405
|
pageWidth: number;
|
|
380
406
|
pageHeight: number;
|
|
@@ -413,17 +439,72 @@ declare interface ShapeRun {
|
|
|
413
439
|
anchorYPt: number;
|
|
414
440
|
anchorXFromMargin: boolean;
|
|
415
441
|
anchorYFromPara: boolean;
|
|
442
|
+
/** ECMA-376 §20.4.3.1 wp:align horizontal: "left" | "center" | "right" |
|
|
443
|
+
* "inside" | "outside". When set the renderer aligns the shape inside the
|
|
444
|
+
* container indicated by `anchorXFromMargin` and ignores `anchorXPt`. */
|
|
445
|
+
anchorXAlign?: string | null;
|
|
446
|
+
/** Vertical equivalent of anchorXAlign: "top" | "center" | "bottom". */
|
|
447
|
+
anchorYAlign?: string | null;
|
|
448
|
+
/** ECMA-376 §20.4.2.7 wp14:pctPosHOffset / pctPosVOffset normalised to a
|
|
449
|
+
* fraction in `[0, 1]`. When set the renderer multiplies it by the
|
|
450
|
+
* relativeFrom container's width / height and uses that as the
|
|
451
|
+
* shape's offset within the container, ignoring anchorXPt / anchorYPt. */
|
|
452
|
+
pctPosH?: number | null;
|
|
453
|
+
pctPosV?: number | null;
|
|
454
|
+
/** Raw `relativeFrom` value from `<wp:positionH>` / `<wp:positionV>` —
|
|
455
|
+
* e.g. "page", "margin", "topMargin", "rightMargin",
|
|
456
|
+
* "insideMargin", "paragraph", "line". Drives container selection
|
|
457
|
+
* for both pctPos* and anchor*Align positioning. */
|
|
458
|
+
anchorXRelativeFrom?: string | null;
|
|
459
|
+
anchorYRelativeFrom?: string | null;
|
|
460
|
+
/** ECMA-376 §20.4.2.18 wp14:sizeRelH/sizeRelV — width/height as a
|
|
461
|
+
* fraction of the relativeFrom container. When set, the renderer uses
|
|
462
|
+
* this in place of `widthPt` / `heightPt` for layout. `pct == 0` from
|
|
463
|
+
* the source is dropped at parse time (treated as "use extent"). */
|
|
464
|
+
widthPct?: number | null;
|
|
465
|
+
heightPct?: number | null;
|
|
466
|
+
widthRelativeFrom?: string | null;
|
|
467
|
+
heightRelativeFrom?: string | null;
|
|
468
|
+
/** Parent wgp group dimensions (pt) — set only when this shape is a child
|
|
469
|
+
* of a `<wpg:wgp>`. Used by `resolveAnchor*` so align/pctPos resolve the
|
|
470
|
+
* GROUP's origin, then `anchor[XY]Pt` adds the within-group offset. */
|
|
471
|
+
groupWidthPt?: number | null;
|
|
472
|
+
groupHeightPt?: number | null;
|
|
416
473
|
/** Draw behind text when true (wp:anchor behindDoc="1"). */
|
|
417
474
|
behindDoc?: boolean;
|
|
418
475
|
/** Document-order index within a group; lower values render first. */
|
|
419
476
|
zOrder: number;
|
|
420
|
-
/** Normalized [0,1] custom-geometry sub-paths
|
|
477
|
+
/** Normalized [0,1] custom-geometry sub-paths. Empty when `presetGeometry`
|
|
478
|
+
* is set; the renderer chooses between buildCustomPath and buildShapePath. */
|
|
421
479
|
subpaths: PathCmd[][];
|
|
480
|
+
/** OOXML <a:prstGeom prst> name (e.g. "rect", "ellipse", "rtTriangle").
|
|
481
|
+
* When set the renderer calls core's buildShapePath with `adjValues`. */
|
|
482
|
+
presetGeometry?: string | null;
|
|
483
|
+
/** Up to four <a:gd name="adj{n}"> values from prstGeom/avLst (0–100000). */
|
|
484
|
+
adjValues?: number[];
|
|
422
485
|
fill: ShapeFill | null;
|
|
423
486
|
stroke: string | null;
|
|
424
487
|
strokeWidth?: number;
|
|
425
488
|
rotation?: number;
|
|
426
489
|
wrapMode?: string | null;
|
|
490
|
+
/** Text rendered INSIDE the shape's bounding box (`<wps:txbx><w:txbxContent>`). */
|
|
491
|
+
textBlocks?: ShapeText[];
|
|
492
|
+
/** "t" | "ctr" | "b" — vertical anchor for the shape's text body (`<wps:bodyPr @anchor>`). */
|
|
493
|
+
textAnchor?: string | null;
|
|
494
|
+
textInsetL?: number;
|
|
495
|
+
textInsetT?: number;
|
|
496
|
+
textInsetR?: number;
|
|
497
|
+
textInsetB?: number;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
declare interface ShapeText {
|
|
501
|
+
text: string;
|
|
502
|
+
fontSizePt: number;
|
|
503
|
+
color?: string | null;
|
|
504
|
+
fontFamily?: string | null;
|
|
505
|
+
bold?: boolean;
|
|
506
|
+
italic?: boolean;
|
|
507
|
+
alignment: string;
|
|
427
508
|
}
|
|
428
509
|
|
|
429
510
|
declare interface TableBorders {
|
|
@@ -460,6 +541,9 @@ export declare interface TextRun {
|
|
|
460
541
|
smallCaps?: boolean;
|
|
461
542
|
doubleStrikethrough?: boolean;
|
|
462
543
|
highlight?: string | null;
|
|
544
|
+
/** ECMA-376 §17.3.3.25 ruby annotation (furigana). Renders above the
|
|
545
|
+
* base text in a smaller font; line height is expanded to fit it. */
|
|
546
|
+
ruby?: RubyAnnotation;
|
|
463
547
|
}
|
|
464
548
|
|
|
465
549
|
export { }
|
package/dist/types/index.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ declare type BodyElement = {
|
|
|
38
38
|
type: 'table';
|
|
39
39
|
} & DocTable | {
|
|
40
40
|
type: 'pageBreak';
|
|
41
|
+
parity?: 'odd' | 'even';
|
|
41
42
|
};
|
|
42
43
|
|
|
43
44
|
declare interface Border {
|
|
@@ -107,6 +108,13 @@ declare interface CellBorders {
|
|
|
107
108
|
right: BorderSpec | null;
|
|
108
109
|
}
|
|
109
110
|
|
|
111
|
+
/** ECMA-376 §17.4.7: a table cell may contain paragraphs AND nested tables. */
|
|
112
|
+
declare type CellElement = {
|
|
113
|
+
type: 'paragraph';
|
|
114
|
+
} & DocParagraph | {
|
|
115
|
+
type: 'table';
|
|
116
|
+
} & DocTable;
|
|
117
|
+
|
|
110
118
|
declare interface CellRange {
|
|
111
119
|
top: number;
|
|
112
120
|
left: number;
|
|
@@ -599,7 +607,7 @@ declare interface DocTable {
|
|
|
599
607
|
}
|
|
600
608
|
|
|
601
609
|
declare interface DocTableCell {
|
|
602
|
-
content:
|
|
610
|
+
content: CellElement[];
|
|
603
611
|
colSpan: number;
|
|
604
612
|
vMerge: boolean | null;
|
|
605
613
|
borders: CellBorders;
|
|
@@ -611,6 +619,9 @@ declare interface DocTableCell {
|
|
|
611
619
|
declare interface DocTableRow {
|
|
612
620
|
cells: DocTableCell[];
|
|
613
621
|
rowHeight: number | null;
|
|
622
|
+
/** ECMA-376 §17.4.80 hRule. "auto" (default) = informational; "atLeast" =
|
|
623
|
+
* lower bound; "exact" = fixed clip. */
|
|
624
|
+
rowHeightRule: 'auto' | 'atLeast' | 'exact' | string;
|
|
614
625
|
isHeader: boolean;
|
|
615
626
|
}
|
|
616
627
|
|
|
@@ -623,6 +634,15 @@ declare interface Document_2 {
|
|
|
623
634
|
majorFont?: string;
|
|
624
635
|
/** Theme `<a:fontScheme><a:minorFont><a:latin@typeface>` (body face). */
|
|
625
636
|
minorFont?: string;
|
|
637
|
+
/**
|
|
638
|
+
* ECMA-376 §17.8.3.10 — font family classification from `word/fontTable.xml`.
|
|
639
|
+
* Maps font name to `<w:family @w:val>`: "roman" | "swiss" | "modern" |
|
|
640
|
+
* "script" | "decorative" | "auto". The renderer uses this as the primary
|
|
641
|
+
* source for serif/sans-serif decisions (roman→serif, swiss→sans-serif,
|
|
642
|
+
* modern→monospace), falling back to name-pattern matching only when the
|
|
643
|
+
* entry is absent or classified as "auto".
|
|
644
|
+
*/
|
|
645
|
+
fontFamilyClasses?: Record<string, string>;
|
|
626
646
|
}
|
|
627
647
|
|
|
628
648
|
export declare namespace docx {
|
|
@@ -747,7 +767,7 @@ declare interface FieldRun {
|
|
|
747
767
|
highlight?: string | null;
|
|
748
768
|
}
|
|
749
769
|
|
|
750
|
-
declare type Fill = SolidFill | NoFill | GradientFill;
|
|
770
|
+
declare type Fill = SolidFill | NoFill | GradientFill | PatternFill;
|
|
751
771
|
|
|
752
772
|
declare interface Fill_2 {
|
|
753
773
|
patternType: string;
|
|
@@ -765,6 +785,18 @@ declare interface Font {
|
|
|
765
785
|
size: number;
|
|
766
786
|
color: string | null;
|
|
767
787
|
name: string | null;
|
|
788
|
+
/** ECMA-376 §18.4.13 ST_UnderlineValues — see RunFont.underlineStyle. */
|
|
789
|
+
underlineStyle?: string;
|
|
790
|
+
/** ECMA-376 §18.4.6 ST_VerticalAlignRun on a cell-level <font>. */
|
|
791
|
+
vertAlign?: 'superscript' | 'subscript';
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
/** ECMA-376 §20.1.8.17 (CT_GlowEffect) — coloured halo with blur radius. */
|
|
795
|
+
declare interface Glow {
|
|
796
|
+
color: string;
|
|
797
|
+
alpha: number;
|
|
798
|
+
/** Blur radius in EMU. */
|
|
799
|
+
radius: number;
|
|
768
800
|
}
|
|
769
801
|
|
|
770
802
|
declare interface GradientFill {
|
|
@@ -1132,6 +1164,20 @@ declare interface PathInfo {
|
|
|
1132
1164
|
commands: PathCmd_2[];
|
|
1133
1165
|
}
|
|
1134
1166
|
|
|
1167
|
+
/**
|
|
1168
|
+
* Preset pattern fill — ECMA-376 §20.1.8.40 (CT_PatternFillProperties)
|
|
1169
|
+
* with `preset` drawn from §20.1.10.59 (ST_PresetPatternVal).
|
|
1170
|
+
*/
|
|
1171
|
+
declare interface PatternFill {
|
|
1172
|
+
fillType: 'pattern';
|
|
1173
|
+
/** Foreground hex colour — used for the "1" pixels of the preset bitmap. */
|
|
1174
|
+
fg: string;
|
|
1175
|
+
/** Background hex colour — used for the "0" pixels. */
|
|
1176
|
+
bg: string;
|
|
1177
|
+
/** Preset name, e.g. "pct25", "horz", "diagCross", "lgGrid". */
|
|
1178
|
+
preset: string;
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1135
1181
|
declare interface PictureElement {
|
|
1136
1182
|
type: 'picture';
|
|
1137
1183
|
x: number;
|
|
@@ -1313,6 +1359,10 @@ declare interface Presentation {
|
|
|
1313
1359
|
majorFont: string | null;
|
|
1314
1360
|
/** Theme minor (body) font family name (e.g. "Aptos", "Nunito Sans"). Null if not set. */
|
|
1315
1361
|
minorFont: string | null;
|
|
1362
|
+
/** Theme hyperlink colour (hex 6 chars). Used to colour hyperlink runs that have no explicit colour. */
|
|
1363
|
+
hlinkColor?: string;
|
|
1364
|
+
/** Theme followed-hyperlink colour. Reserved for future visited-link styling. */
|
|
1365
|
+
folHlinkColor?: string;
|
|
1316
1366
|
}
|
|
1317
1367
|
|
|
1318
1368
|
declare interface PresentationHandle {
|
|
@@ -1321,12 +1371,36 @@ declare interface PresentationHandle {
|
|
|
1321
1371
|
dispose(): void;
|
|
1322
1372
|
}
|
|
1323
1373
|
|
|
1374
|
+
/** ECMA-376 §20.1.8.27 (CT_ReflectionEffect) — mirrored copy below the
|
|
1375
|
+
* shape with a linear alpha gradient. Carries the spec attributes whose
|
|
1376
|
+
* defaults the renderer needs to interpret correctly. */
|
|
1377
|
+
declare interface Reflection {
|
|
1378
|
+
blur: number;
|
|
1379
|
+
dist: number;
|
|
1380
|
+
/** Direction in degrees, clockwise from East. */
|
|
1381
|
+
dir: number;
|
|
1382
|
+
/** Start alpha (0–1). Default 1.0. */
|
|
1383
|
+
stA: number;
|
|
1384
|
+
/** Start position along the gradient (0–1). Default 0. */
|
|
1385
|
+
stPos: number;
|
|
1386
|
+
/** End alpha. Default 0. */
|
|
1387
|
+
endA: number;
|
|
1388
|
+
/** End position. Default 1.0. */
|
|
1389
|
+
endPos: number;
|
|
1390
|
+
/** Horizontal scale (1.0 = same width). */
|
|
1391
|
+
sx: number;
|
|
1392
|
+
/** Vertical scale (-1.0 = full mirror). */
|
|
1393
|
+
sy: number;
|
|
1394
|
+
}
|
|
1395
|
+
|
|
1324
1396
|
declare interface RenderOptions {
|
|
1325
1397
|
width?: number;
|
|
1326
1398
|
defaultTextColor?: string | null;
|
|
1327
1399
|
dpr?: number;
|
|
1328
1400
|
majorFont?: string | null;
|
|
1329
1401
|
minorFont?: string | null;
|
|
1402
|
+
/** Theme hyperlink colour (hex 6 chars). Used to colour hyperlink runs without an explicit colour. */
|
|
1403
|
+
hlinkColor?: string | null;
|
|
1330
1404
|
/**
|
|
1331
1405
|
* Lazily resolve an archive-internal asset (by zip path) to a Blob. The
|
|
1332
1406
|
* renderer uses this to fetch posters and other large embedded assets on
|
|
@@ -1405,6 +1479,12 @@ declare interface Row {
|
|
|
1405
1479
|
cells: Cell[];
|
|
1406
1480
|
}
|
|
1407
1481
|
|
|
1482
|
+
declare interface RubyAnnotation {
|
|
1483
|
+
text: string;
|
|
1484
|
+
/** Annotation font size in pt. Word stores this as half-points in `<w:hps>`. */
|
|
1485
|
+
fontSizePt: number;
|
|
1486
|
+
}
|
|
1487
|
+
|
|
1408
1488
|
declare interface Run {
|
|
1409
1489
|
text: string;
|
|
1410
1490
|
font?: RunFont;
|
|
@@ -1418,6 +1498,17 @@ declare interface RunFont {
|
|
|
1418
1498
|
size?: number;
|
|
1419
1499
|
color?: string | null;
|
|
1420
1500
|
name?: string | null;
|
|
1501
|
+
/**
|
|
1502
|
+
* Underline style when not the default single line. ECMA-376 §18.4.13
|
|
1503
|
+
* (`ST_UnderlineValues`): "double" | "singleAccounting" | "doubleAccounting".
|
|
1504
|
+
* Absent means single (when `underline` is true) or no underline.
|
|
1505
|
+
*/
|
|
1506
|
+
underlineStyle?: string;
|
|
1507
|
+
/**
|
|
1508
|
+
* ECMA-376 §18.4.6 (`ST_VerticalAlignRun`): "superscript" | "subscript".
|
|
1509
|
+
* Absent leaves the run on the baseline.
|
|
1510
|
+
*/
|
|
1511
|
+
vertAlign?: 'superscript' | 'subscript';
|
|
1421
1512
|
}
|
|
1422
1513
|
|
|
1423
1514
|
declare interface SectionProps {
|
|
@@ -1511,6 +1602,14 @@ declare interface ShapeElement {
|
|
|
1511
1602
|
adj8: number | null;
|
|
1512
1603
|
/** Drop shadow from effectLst > outerShdw (null if not present). */
|
|
1513
1604
|
shadow: Shadow | null;
|
|
1605
|
+
/** Inner (inset) shadow from effectLst > innerShdw. ECMA-376 §20.1.8.21. */
|
|
1606
|
+
innerShadow?: Shadow;
|
|
1607
|
+
/** Coloured glow halo from effectLst > glow. ECMA-376 §20.1.8.17. */
|
|
1608
|
+
glow?: Glow;
|
|
1609
|
+
/** Soft (feathered) edge — ECMA-376 §20.1.8.31. */
|
|
1610
|
+
softEdge?: SoftEdge;
|
|
1611
|
+
/** Mirrored reflection — ECMA-376 §20.1.8.27. */
|
|
1612
|
+
reflection?: Reflection;
|
|
1514
1613
|
}
|
|
1515
1614
|
|
|
1516
1615
|
declare type ShapeFill = {
|
|
@@ -1571,17 +1670,62 @@ declare interface ShapeRun {
|
|
|
1571
1670
|
anchorYPt: number;
|
|
1572
1671
|
anchorXFromMargin: boolean;
|
|
1573
1672
|
anchorYFromPara: boolean;
|
|
1673
|
+
/** ECMA-376 §20.4.3.1 wp:align horizontal: "left" | "center" | "right" |
|
|
1674
|
+
* "inside" | "outside". When set the renderer aligns the shape inside the
|
|
1675
|
+
* container indicated by `anchorXFromMargin` and ignores `anchorXPt`. */
|
|
1676
|
+
anchorXAlign?: string | null;
|
|
1677
|
+
/** Vertical equivalent of anchorXAlign: "top" | "center" | "bottom". */
|
|
1678
|
+
anchorYAlign?: string | null;
|
|
1679
|
+
/** ECMA-376 §20.4.2.7 wp14:pctPosHOffset / pctPosVOffset normalised to a
|
|
1680
|
+
* fraction in `[0, 1]`. When set the renderer multiplies it by the
|
|
1681
|
+
* relativeFrom container's width / height and uses that as the
|
|
1682
|
+
* shape's offset within the container, ignoring anchorXPt / anchorYPt. */
|
|
1683
|
+
pctPosH?: number | null;
|
|
1684
|
+
pctPosV?: number | null;
|
|
1685
|
+
/** Raw `relativeFrom` value from `<wp:positionH>` / `<wp:positionV>` —
|
|
1686
|
+
* e.g. "page", "margin", "topMargin", "rightMargin",
|
|
1687
|
+
* "insideMargin", "paragraph", "line". Drives container selection
|
|
1688
|
+
* for both pctPos* and anchor*Align positioning. */
|
|
1689
|
+
anchorXRelativeFrom?: string | null;
|
|
1690
|
+
anchorYRelativeFrom?: string | null;
|
|
1691
|
+
/** ECMA-376 §20.4.2.18 wp14:sizeRelH/sizeRelV — width/height as a
|
|
1692
|
+
* fraction of the relativeFrom container. When set, the renderer uses
|
|
1693
|
+
* this in place of `widthPt` / `heightPt` for layout. `pct == 0` from
|
|
1694
|
+
* the source is dropped at parse time (treated as "use extent"). */
|
|
1695
|
+
widthPct?: number | null;
|
|
1696
|
+
heightPct?: number | null;
|
|
1697
|
+
widthRelativeFrom?: string | null;
|
|
1698
|
+
heightRelativeFrom?: string | null;
|
|
1699
|
+
/** Parent wgp group dimensions (pt) — set only when this shape is a child
|
|
1700
|
+
* of a `<wpg:wgp>`. Used by `resolveAnchor*` so align/pctPos resolve the
|
|
1701
|
+
* GROUP's origin, then `anchor[XY]Pt` adds the within-group offset. */
|
|
1702
|
+
groupWidthPt?: number | null;
|
|
1703
|
+
groupHeightPt?: number | null;
|
|
1574
1704
|
/** Draw behind text when true (wp:anchor behindDoc="1"). */
|
|
1575
1705
|
behindDoc?: boolean;
|
|
1576
1706
|
/** Document-order index within a group; lower values render first. */
|
|
1577
1707
|
zOrder: number;
|
|
1578
|
-
/** Normalized [0,1] custom-geometry sub-paths
|
|
1708
|
+
/** Normalized [0,1] custom-geometry sub-paths. Empty when `presetGeometry`
|
|
1709
|
+
* is set; the renderer chooses between buildCustomPath and buildShapePath. */
|
|
1579
1710
|
subpaths: PathCmd_3[][];
|
|
1711
|
+
/** OOXML <a:prstGeom prst> name (e.g. "rect", "ellipse", "rtTriangle").
|
|
1712
|
+
* When set the renderer calls core's buildShapePath with `adjValues`. */
|
|
1713
|
+
presetGeometry?: string | null;
|
|
1714
|
+
/** Up to four <a:gd name="adj{n}"> values from prstGeom/avLst (0–100000). */
|
|
1715
|
+
adjValues?: number[];
|
|
1580
1716
|
fill: ShapeFill | null;
|
|
1581
1717
|
stroke: string | null;
|
|
1582
1718
|
strokeWidth?: number;
|
|
1583
1719
|
rotation?: number;
|
|
1584
1720
|
wrapMode?: string | null;
|
|
1721
|
+
/** Text rendered INSIDE the shape's bounding box (`<wps:txbx><w:txbxContent>`). */
|
|
1722
|
+
textBlocks?: ShapeText_2[];
|
|
1723
|
+
/** "t" | "ctr" | "b" — vertical anchor for the shape's text body (`<wps:bodyPr @anchor>`). */
|
|
1724
|
+
textAnchor?: string | null;
|
|
1725
|
+
textInsetL?: number;
|
|
1726
|
+
textInsetT?: number;
|
|
1727
|
+
textInsetR?: number;
|
|
1728
|
+
textInsetB?: number;
|
|
1585
1729
|
}
|
|
1586
1730
|
|
|
1587
1731
|
declare interface ShapeText {
|
|
@@ -1593,6 +1737,16 @@ declare interface ShapeText {
|
|
|
1593
1737
|
paragraphs: ShapeParagraph[];
|
|
1594
1738
|
}
|
|
1595
1739
|
|
|
1740
|
+
declare interface ShapeText_2 {
|
|
1741
|
+
text: string;
|
|
1742
|
+
fontSizePt: number;
|
|
1743
|
+
color?: string | null;
|
|
1744
|
+
fontFamily?: string | null;
|
|
1745
|
+
bold?: boolean;
|
|
1746
|
+
italic?: boolean;
|
|
1747
|
+
alignment: string;
|
|
1748
|
+
}
|
|
1749
|
+
|
|
1596
1750
|
declare interface ShapeTextRun {
|
|
1597
1751
|
text: string;
|
|
1598
1752
|
bold: boolean;
|
|
@@ -1643,6 +1797,11 @@ declare interface Slide {
|
|
|
1643
1797
|
|
|
1644
1798
|
declare type SlideElement = ShapeElement | PictureElement | TableElement | ChartElement | MediaElement;
|
|
1645
1799
|
|
|
1800
|
+
/** ECMA-376 §20.1.8.31 (CT_SoftEdgesEffect) — feather radius in EMU. */
|
|
1801
|
+
declare interface SoftEdge {
|
|
1802
|
+
radius: number;
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1646
1805
|
declare interface SolidFill {
|
|
1647
1806
|
fillType: 'solid';
|
|
1648
1807
|
color: string;
|
|
@@ -1708,6 +1867,11 @@ declare interface Stroke {
|
|
|
1708
1867
|
headEnd?: ArrowEnd;
|
|
1709
1868
|
/** Arrow head at the end of the line */
|
|
1710
1869
|
tailEnd?: ArrowEnd;
|
|
1870
|
+
/**
|
|
1871
|
+
* ECMA-376 §20.1.8.42 ST_CompoundLine. "sng" (default) | "dbl" |
|
|
1872
|
+
* "thinThick" | "thickThin" | "tri". Absent means single line.
|
|
1873
|
+
*/
|
|
1874
|
+
cmpd?: string;
|
|
1711
1875
|
}
|
|
1712
1876
|
|
|
1713
1877
|
declare interface Styles {
|
|
@@ -1861,6 +2025,9 @@ declare interface TextRun_2 {
|
|
|
1861
2025
|
smallCaps?: boolean;
|
|
1862
2026
|
doubleStrikethrough?: boolean;
|
|
1863
2027
|
highlight?: string | null;
|
|
2028
|
+
/** ECMA-376 §17.3.3.25 ruby annotation (furigana). Renders above the
|
|
2029
|
+
* base text in a smaller font; line height is expanded to fit it. */
|
|
2030
|
+
ruby?: RubyAnnotation;
|
|
1864
2031
|
}
|
|
1865
2032
|
|
|
1866
2033
|
declare type TextRunCallback = (run: TextRunInfo) => void;
|
|
@@ -1873,16 +2040,58 @@ declare interface TextRunData {
|
|
|
1873
2040
|
/** null = not set, inherit from paragraph/body defaults */
|
|
1874
2041
|
italic: boolean | null;
|
|
1875
2042
|
underline: boolean;
|
|
1876
|
-
/**
|
|
2043
|
+
/**
|
|
2044
|
+
* Specific underline style when not the default single line. Values come
|
|
2045
|
+
* from ECMA-376 §21.1.2.3.16 (ST_TextUnderlineType): "dbl", "heavy",
|
|
2046
|
+
* "dotted", "dottedHeavy", "dash", "dashHeavy", "dashLong",
|
|
2047
|
+
* "dashLongHeavy", "dotDash", "dotDashHeavy", "dotDotDash",
|
|
2048
|
+
* "dotDotDashHeavy", "wavy", "wavyHeavy", "wavyDbl". Absent means either
|
|
2049
|
+
* no underline (when `underline` is false) or the default single line.
|
|
2050
|
+
*/
|
|
2051
|
+
underlineStyle?: string;
|
|
2052
|
+
/**
|
|
2053
|
+
* Underline-only colour from rPr > uFill (ECMA-376 §21.1.2.3.20). Absent
|
|
2054
|
+
* means the underline follows the text colour (uFillTx default).
|
|
2055
|
+
*/
|
|
2056
|
+
underlineColor?: string;
|
|
2057
|
+
/** True when rPr strike is sngStrike or dblStrike. */
|
|
1877
2058
|
strikethrough: boolean;
|
|
2059
|
+
/**
|
|
2060
|
+
* True only when rPr strike = "dblStrike". Lets the renderer draw two parallel
|
|
2061
|
+
* lines instead of one. ECMA-376 §21.1.2.3.10 (ST_TextStrikeType).
|
|
2062
|
+
*/
|
|
2063
|
+
strikeDouble?: boolean;
|
|
1878
2064
|
/** Font size in points */
|
|
1879
2065
|
fontSize: number | null;
|
|
1880
2066
|
color: string | null;
|
|
1881
2067
|
fontFamily: string | null;
|
|
2068
|
+
/**
|
|
2069
|
+
* East Asian font family from rPr > a:ea (ECMA-376 §21.1.2.3.7),
|
|
2070
|
+
* resolved through the theme. Renderer uses this for CJK glyphs when
|
|
2071
|
+
* present; absent means CJK falls back to fontFamily.
|
|
2072
|
+
*/
|
|
2073
|
+
fontFamilyEa?: string;
|
|
1882
2074
|
/** Baseline shift in thousandths of a point. Positive = superscript, negative = subscript. */
|
|
1883
2075
|
baseline?: number;
|
|
2076
|
+
/**
|
|
2077
|
+
* Capitalisation transform — ECMA-376 §21.1.2.3.13 (ST_TextCapsType).
|
|
2078
|
+
* 'all' renders text in upper case; 'small' uses small caps (rendered as
|
|
2079
|
+
* upper case at ~80% size when no smcp font feature is available).
|
|
2080
|
+
* 'none' or omitted leaves the text unchanged.
|
|
2081
|
+
*/
|
|
2082
|
+
caps?: 'none' | 'small' | 'all';
|
|
2083
|
+
/**
|
|
2084
|
+
* Inter-character spacing in 100ths of a point — ECMA-376 §21.1.2.3.5
|
|
2085
|
+
* (rPr @spc). Positive values add space, negative values tighten.
|
|
2086
|
+
*/
|
|
2087
|
+
letterSpacing?: number;
|
|
1884
2088
|
/** Set for OOXML field runs (e.g. "slidenum"). When set, renderer replaces text with field value. */
|
|
1885
2089
|
fieldType?: string;
|
|
2090
|
+
/**
|
|
2091
|
+
* Hyperlink target URL resolved from rPr > a:hlinkClick @r:id via the slide's _rels.
|
|
2092
|
+
* Undefined for runs without a hyperlink. ECMA-376 §21.1.2.3.5 (CT_Hyperlink).
|
|
2093
|
+
*/
|
|
2094
|
+
hyperlink?: string;
|
|
1886
2095
|
}
|
|
1887
2096
|
|
|
1888
2097
|
/** Information about a rendered text segment for building a transparent selection overlay. */
|
|
@@ -2098,7 +2307,12 @@ declare class XlsxViewer {
|
|
|
2098
2307
|
showSheet(index: number): Promise<void>;
|
|
2099
2308
|
/** Returns the cell at canvas-client coordinates, or null if outside the cell grid. */
|
|
2100
2309
|
getCellAt(clientX: number, clientY: number): CellAddress | null;
|
|
2101
|
-
/** Returns the CSS-pixel rect of a cell within canvasArea, or null if not
|
|
2310
|
+
/** Returns the CSS-pixel rect of a cell within canvasArea, or null if not
|
|
2311
|
+
* computable. Mirrors the renderer's per-cell rounding (Math.round(px * cs))
|
|
2312
|
+
* so the selection overlay sits exactly on the canvas's drawn cell borders;
|
|
2313
|
+
* multiplying logical accumulators by `cs` once at the end (the previous
|
|
2314
|
+
* approach) drifted by up to 1 px per cell at non-integer scales.
|
|
2315
|
+
*/
|
|
2102
2316
|
private getCellRect;
|
|
2103
2317
|
/** Returns the current selection, including mode. */
|
|
2104
2318
|
get selection(): CellRange_2 | null;
|