@silurus/ooxml 0.5.0 → 0.6.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 +12 -7
- package/dist/docx-5SgqrF74.cjs +1 -0
- package/dist/docx-BdQTKYcj.js +827 -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-C4OquLff.cjs +1 -0
- package/dist/{pptx-BHGTs5zW.js → pptx-zFBzecSl.js} +181 -177
- package/dist/pptx.cjs +1 -1
- package/dist/pptx.mjs +1 -1
- package/dist/renderer-CkvTkvPm.cjs +1 -0
- package/dist/{renderer-CpJhtczQ.js → renderer-UsGKjfFU.js} +171 -171
- package/dist/types/docx.d.ts +11 -0
- package/dist/types/index.d.ts +32 -0
- package/dist/types/pptx.d.ts +13 -0
- package/dist/types/xlsx.d.ts +8 -0
- package/dist/xlsx-8Jv9bmoU.js +1196 -0
- package/dist/xlsx-DS7QINM4.cjs +4 -0
- package/dist/xlsx.cjs +1 -1
- package/dist/xlsx.mjs +1 -1
- package/package.json +1 -1
- package/dist/docx-CGvCIxpo.cjs +0 -1
- package/dist/docx-DUycjjDQ.js +0 -809
- package/dist/pptx-CYYMOWs4.cjs +0 -1
- package/dist/renderer-ckRjuWz0.cjs +0 -1
- package/dist/xlsx-BAksLJGU.js +0 -1191
- package/dist/xlsx-Cz9qI8c9.cjs +0 -4
package/dist/pptx.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./autoResize-ggn4hzd8.cjs`),t=require(`./pptx-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./autoResize-ggn4hzd8.cjs`),t=require(`./pptx-C4OquLff.cjs`);exports.PptxPresentation=t.r,exports.PptxViewer=t.n,exports.autoResize=e.t,exports.renderSlide=t.i;
|
package/dist/pptx.mjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=[`4472C4`,`ED7D31`,`A9D18E`,`FF0000`,`70AD47`,`4BACC6`,`FFC000`,`9E480E`,`843C0C`,`636363`,`255E91`,`967300`];function t(t,n){return n?.color?`#${n.color}`:`#${e[t%e.length]}`}function n(t,n){let r=n.dataPointColors?.[t];return r?`#${r}`:`#${e[t%e.length]}`}function r(e,t){let n=e.startsWith(`#`)?e.slice(1):e;return`rgba(${parseInt(n.slice(0,2),16)},${parseInt(n.slice(2,4),16)},${parseInt(n.slice(4,6),16)},${t})`}function i(e,t=5){if(e===0)return 1;let n=e/t,r=10**Math.floor(Math.log10(n)),i=n/r;return(i<1.5?1:i<3.5?2:i<7.5?5:10)*r}function a(e,t){if(e<=0)return t;let n=Math.ceil(e/t)*t;return Math.abs(n-e)<t*1e-9?n+t:n}function o(e,t){if(e>=0)return 0;let n=Math.floor(e/t)*t;return Math.abs(n-e)<t*1e-9?n-t:n}function s(e){return Math.abs(e)>=1e6?`${(e/1e6).toFixed(1)}M`:Math.abs(e)>=1e3?`${(e/1e3).toFixed(1)}k`:Number.isInteger(e)?String(e):e.toFixed(2).replace(/\.?0+$/,``)}function c(e,t,n,r,i,a,o,s){e.save(),e.font=`${s}px sans-serif`,e.fillStyle=`#555`,o===`cat`?(e.textAlign=`center`,e.textBaseline=`bottom`,e.fillText(t.slice(0,30),n+i/2,r+a+s+2)):(e.translate(n-s-4,r+a/2),e.rotate(-Math.PI/2),e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(t.slice(0,30),0,0)),e.restore()}function l(e,n,r,i,a,o){let s=Math.max(9,Math.min(12,o/(n.length+1)));e.font=`${s}px sans-serif`,e.textBaseline=`middle`;let c=s+4,l=i+(o-c*n.length)/2;for(let i=0;i<n.length;i++){e.fillStyle=t(i,n[i]),e.fillRect(r,l,10,s),e.fillStyle=`#333`,e.textAlign=`left`;let a=n[i].name||`Series ${i+1}`;e.fillText(a.slice(0,20),r+10+4,l+s/2),l+=c}}function u(e,t,n,r,i){if(t===`none`||!t)return;let a=e.strokeStyle;if(e.strokeStyle=`#888`,e.lineWidth=1,e.beginPath(),n===`val`){let n=r,a=i,o=t===`out`||t===`cross`?-4:0,s=t===`in`||t===`cross`?4:0;e.moveTo(n+o,a),e.lineTo(n+s,a)}else{let n=r,a=i,o=t===`out`||t===`cross`?4:0,s=t===`in`||t===`cross`?-4:0;e.moveTo(a,n+o),e.lineTo(a,n+s)}e.stroke(),e.strokeStyle=a}function d(e,t,n){return e.titleFontSizeHpt?e.titleFontSizeHpt/100*n:Math.max(10,t*.085)}function f(e,t,n){return e?e/100*n:Math.max(8,t*.045)}function p(e,t,n,r,i,a){t.title&&(e.font=`bold ${a}px ${t.titleFontFace?`"${t.titleFontFace}", Calibri, Arial, sans-serif`:`Calibri, Arial, sans-serif`}`,e.fillStyle=t.titleFontColor?`#${t.titleFontColor}`:`#333`,e.textAlign=`center`,e.textBaseline=`top`,e.fillText(t.title,n+i/2,r))}function m(e){return e.categories.length>0?e.categories:e.series[0]?.categories??[]}function h(e,n,r,o){let{x:u,y:f,w:h,h:g}=r,_=n.chartType===`clusteredBarH`||n.chartType===`stackedBarH`||n.chartType===`stackedBarHPct`,v=n.chartType.startsWith(`stacked`),y=n.chartType===`stackedBarPct`||n.chartType===`stackedBarHPct`,b=n.series.filter(e=>e.seriesType!==`line`),x=n.series.filter(e=>e.seriesType===`line`),S=m(n),C=S.length;if(C===0)return;let w=n.title?d(n,g,o):0,T=n.title?g*.02:0,E=n.title?g*.025:0,D=n.title?w+T+E:0,O=n.showLegend?Math.max(80,h*.22):0,k=Math.max(8,Math.min(10,g*.045)),A=n.catAxisTitle?k+4:0,j=n.valAxisTitle?k+4:0,M={t:D+g*.02,r:O+h*.03,b:g*.14+A,l:h*.12+j};_&&(M.l=h*.22+j,M.b=g*.08+A),p(e,n,u,f+T,h,w);let N=u+M.l,P=f+M.t,F=h-M.l-M.r,I=g-M.t-M.b;if(F<=0||I<=0)return;n.plotAreaBg&&(e.fillStyle=`#${n.plotAreaBg}`,e.fillRect(N,P,F,I));let L=0;for(let e=0;e<C;e++){let t=0;for(let n of b){let r=n.values[e]??0;v?t+=Math.abs(r):L=Math.max(L,Math.abs(r))}v&&(L=Math.max(L,t))}y&&(L=100),n.valMax!=null&&(L=n.valMax),L===0&&(L=1);let R=i(L),z=n.valMax??a(L,R),B=`#e0e0e0`,V=Math.round(z/R);if(e.textBaseline=`middle`,e.font=`${Math.max(8,Math.min(11,I/20))}px sans-serif`,e.fillStyle=`#555`,!n.valAxisHidden)for(let t=0;t<=V;t++){let n=t*R,r=y?`${Math.round(n)}%`:n>=1e3?`${(n/1e3).toFixed(1)}k`:String(n);if(_){let i=N+n/z*F;e.strokeStyle=t===0?`#aaa`:B,e.lineWidth=t===0?1:.5,e.beginPath(),e.moveTo(i,P),e.lineTo(i,P+I),e.stroke(),e.textAlign=`center`,e.fillText(r,i,P+I+10)}else{let i=P+I-n/z*I;e.strokeStyle=t===0?`#aaa`:B,e.lineWidth=t===0?1:.5,e.beginPath(),e.moveTo(N,i),e.lineTo(N+F,i),e.stroke(),e.textAlign=`right`,e.fillText(r,N-4,i)}}e.strokeStyle=`#aaa`,e.lineWidth=1,_?(e.beginPath(),e.moveTo(N,P),e.lineTo(N,P+I),e.stroke()):(e.beginPath(),e.moveTo(N,P+I),e.lineTo(N+F,P+I),e.stroke());let H=_?I/C:F/C,U=H*(v?.6:.6/Math.max(1,b.length)),W=v?0:H*.6/Math.max(1,b.length),G=H*.2;for(let r=0;r<C;r++){let i=0,a=0;if(y){for(let e of b)a+=Math.abs(e.values[r]??0);a===0&&(a=1)}for(let o=0;o<b.length;o++){let c=b[o],l=c.values[r]??0,u=y?Math.abs(l)/a*100:Math.abs(l),d=t(o,c);if(_){let t=v?P+(C-1-r)*H+G:P+(C-1-r)*H+G+o*W,a=u/z*F,c=v?N+i/z*F:N;e.fillStyle=d,e.fillRect(c,t,a,U),n.showDataLabels&&u>0&&(e.font=`bold ${Math.max(7,Math.min(10,U*.7))}px sans-serif`,e.fillStyle=`#333`,e.textAlign=`left`,e.textBaseline=`middle`,e.fillText(y?`${Math.round(u)}%`:s(u),c+a+2,t+U/2))}else{let t=v?N+r*H+G:N+r*H+G+o*W,a=u/z*I,c=P+I-(v?i+u:u)/z*I;e.fillStyle=d,e.fillRect(t,c,U,a),n.showDataLabels&&u>0&&(e.font=`bold ${Math.max(7,Math.min(10,U*.7))}px sans-serif`,e.fillStyle=`#333`,e.textAlign=`center`,e.textBaseline=`bottom`,e.fillText(y?`${Math.round(u)}%`:s(u),t+U/2,c-1))}v&&(i+=u)}}if(!n.catAxisHidden){e.fillStyle=`#555`,e.font=`${Math.max(8,Math.min(11,H*.5))}px sans-serif`;for(let t=0;t<C;t++){let n=(S[t]??``).toString().slice(0,12);if(_){let r=P+(C-1-t)*H+H/2;e.textAlign=`right`,e.textBaseline=`middle`,e.fillText(n,N-4,r)}else{let r=N+t*H+H/2;e.textAlign=`center`,e.textBaseline=`top`,e.fillText(n,r,P+I+3)}}}if(x.length>0&&!_)for(let n=0;n<x.length;n++){let r=x[n],i=t(b.length+n,r);e.strokeStyle=i,e.lineWidth=2,e.setLineDash([]),e.beginPath();let a=!1;for(let t=0;t<C;t++){let n=r.values[t];if(n==null){a=!1;continue}let i=N+t*H+H/2,o=P+I-n/z*I;a?e.lineTo(i,o):(e.moveTo(i,o),a=!0)}e.stroke();for(let t=0;t<C;t++){let n=r.values[t];if(n==null)continue;let a=N+t*H+H/2,o=P+I-n/z*I;e.fillStyle=i,e.beginPath(),e.arc(a,o,3,0,Math.PI*2),e.fill()}}O>0&&l(e,n.series,u+h-O+4,P,O-8,I),n.catAxisTitle&&c(e,n.catAxisTitle,N,P,F,I,`cat`,k),n.valAxisTitle&&c(e,n.valAxisTitle,N,P,F,I,`val`,k)}function g(e,n,r,h){let{x:g,y:_,w:v,h:y}=r,b=m(n),x=b.length;if(x===0)return;let S=n.title?d(n,y,h):0,C=n.title?y*.045:0,w=n.title?y*.035:0,T=n.title?S+C+w:0,E=n.showLegend?Math.max(80,v*.22):0,D=f(n.catAxisFontSizeHpt,y,h),O=f(n.valAxisFontSizeHpt,y,h),k=Math.max(D,O),A=n.catAxisTitle?k+4:0,j=n.valAxisTitle?k+4:0,M={t:T+O/2+2,r:E+v*.05,b:D+12+A,l:O*2.2+10+j};p(e,n,g,_+C,v,S);let N=g+M.l,P=_+M.t,F=v-M.l-M.r,I=y-M.t-M.b;if(F<=0||I<=0)return;n.plotAreaBg&&(e.fillStyle=`#${n.plotAreaBg}`,e.fillRect(N,P,F,I));let L=1/0,R=-1/0;for(let e of n.series)for(let t of e.values)t!=null&&(L=Math.min(L,t),R=Math.max(R,t));isFinite(L)||(L=0,R=1),n.valMin==null?L>0&&(L=0):L=n.valMin,n.valMax==null?R<0&&(R=0):R=n.valMax,R===L&&(R=L+1);let z=i(R-L),B=n.valMin??o(L,z),V=n.valMax??a(R,z),H=V-B;if(H===0)return;let U=e=>P+I-(e-B)/H*I,W=n.catAxisCrossBetween===`midCat`?e=>N+(x===1?F/2:e/(x-1)*F):e=>N+(e+.5)/x*F;if(!n.valAxisHidden){let t=Math.round((V-B)/z);e.font=`${O}px sans-serif`,e.textBaseline=`middle`;for(let r=0;r<=t;r++){let t=B+r*z,i=U(t);e.strokeStyle=t===0?`#aaa`:`#e0e0e0`,e.lineWidth=t===0?1:.5,e.beginPath(),e.moveTo(N,i),e.lineTo(N+F,i),e.stroke(),u(e,n.valAxisMajorTickMark,`val`,N,i),e.fillStyle=`#555`,e.textAlign=`right`,e.fillText(s(t),N-6,i)}}e.strokeStyle=`#aaa`,e.lineWidth=1,e.beginPath(),e.moveTo(N,P+I),e.lineTo(N+F,P+I),e.stroke(),n.valAxisHidden||(e.beginPath(),e.moveTo(N,P),e.lineTo(N,P+I),e.stroke());let G=Math.max(1,2.25*h),K=Math.max(2,2.5*h),q=f(n.dataLabelFontSizeHpt,y,h);for(let r=0;r<n.series.length;r++){let i=n.series[r],a=t(r,i);e.strokeStyle=a,e.lineWidth=G,e.setLineDash([]),e.beginPath();let o=!1;for(let t=0;t<x;t++){let n=i.values[t];if(n==null){o=!1;continue}let r=W(t),a=U(n);o?e.lineTo(r,a):(e.moveTo(r,a),o=!0)}e.stroke(),e.fillStyle=a;for(let t=0;t<x;t++){let r=i.values[t];r!=null&&(e.beginPath(),e.arc(W(t),U(r),K,0,Math.PI*2),e.fill(),n.showDataLabels&&(e.font=`${q}px sans-serif`,e.fillStyle=`#333`,e.textAlign=`center`,e.textBaseline=`bottom`,e.fillText(s(r),W(t),U(r)-K-1),e.fillStyle=a))}}if(!n.catAxisHidden){let t=Math.max(1,Math.ceil(x/8));e.fillStyle=`#555`,e.textAlign=`center`,e.textBaseline=`top`,e.font=`${D}px sans-serif`;for(let r=0;r<x;r+=t){let t=W(r);u(e,n.catAxisMajorTickMark,`cat`,P+I,t),e.fillStyle=`#555`,e.fillText((b[r]??``).toString().slice(0,10),t,P+I+5)}}E>0&&l(e,n.series,g+v-E+4,P,E-8,I),n.catAxisTitle&&c(e,n.catAxisTitle,N,P,F,I,`cat`,k),n.valAxisTitle&&c(e,n.valAxisTitle,N,P,F,I,`val`,k)}function _(e,n,o,u){let{x:f,y:h,w:g,h:_}=o,v=m(n),y=v.length;if(y===0)return;let b=n.chartType===`stackedArea`||n.chartType===`stackedAreaPct`,x=n.title?d(n,_,u):0,S=n.title?_*.035:0,C=n.title?_*.035:0,w=n.title?x+S+C:0,T=n.showLegend?Math.max(80,g*.22):0,E=Math.max(8,Math.min(10,_*.045)),D=n.catAxisTitle?E+4:0,O=n.valAxisTitle?E+4:0,k={t:w+_*.02,r:T+g*.05,b:_*.14+D,l:g*.12+O};p(e,n,f,h+S,g,x);let A=f+k.l,j=h+k.t,M=g-k.l-k.r,N=_-k.t-k.b;if(M<=0||N<=0)return;n.plotAreaBg&&(e.fillStyle=`#${n.plotAreaBg}`,e.fillRect(A,j,M,N));let P=0;for(let e=0;e<y;e++)if(b){let t=0;for(let r of n.series)t+=r.values[e]??0;P=Math.max(P,t)}else for(let t of n.series)P=Math.max(P,t.values[e]??0);n.valMax!=null&&(P=n.valMax),P===0&&(P=1);let F=i(P),I=n.valMax??a(P,F),L=e=>A+(y===1?M/2:e/(y-1)*M),R=e=>j+N-e/I*N;if(!n.valAxisHidden){e.font=`${Math.max(8,Math.min(11,N/20))}px sans-serif`,e.textBaseline=`middle`;let t=Math.round(I/F);for(let n=0;n<=t;n++){let t=n*F,r=R(t);e.strokeStyle=n===0?`#aaa`:`#e0e0e0`,e.lineWidth=n===0?1:.5,e.beginPath(),e.moveTo(A,r),e.lineTo(A+M,r),e.stroke(),e.fillStyle=`#555`,e.textAlign=`right`,e.fillText(s(t),A-4,r)}}e.strokeStyle=`#aaa`,e.lineWidth=1,e.beginPath(),e.moveTo(A,j+N),e.lineTo(A+M,j+N),e.stroke();let z=b?Array(y).fill(0):null;for(let i=n.series.length-1;i>=0;i--){let a=n.series[i],o=t(i,a),s=j+N;if(e.beginPath(),b&&z){for(let t=0;t<y;t++){let n=(a.values[t]??0)+z[t],r=L(t),i=R(n);t===0?e.moveTo(r,i):e.lineTo(r,i)}for(let t=y-1;t>=0;t--)e.lineTo(L(t),R(z[t]));for(let e=0;e<y;e++)z[e]+=a.values[e]??0}else{e.moveTo(L(0),s);for(let t=0;t<y;t++)e.lineTo(L(t),R(a.values[t]??0));e.lineTo(L(y-1),s)}e.closePath(),e.fillStyle=r(o,.6),e.fill(),e.strokeStyle=o,e.lineWidth=1.5,e.setLineDash([]),e.stroke()}if(!n.catAxisHidden){let t=Math.max(1,Math.ceil(y/8));e.fillStyle=`#555`,e.textAlign=`center`,e.textBaseline=`top`,e.font=`${Math.max(8,Math.min(11,M/y*.8))}px sans-serif`;for(let n=0;n<y;n+=t)e.fillText((v[n]??``).toString().slice(0,10),L(n),j+N+3)}T>0&&l(e,n.series,f+g-T+4,j,T-8,N),n.catAxisTitle&&c(e,n.catAxisTitle,A,j,M,N,`cat`,E),n.valAxisTitle&&c(e,n.valAxisTitle,A,j,M,N,`val`,E)}function v(e,t,r,i,a){let{x:o,y:s,w:c,h:l}=r,u=t.series[0];if(!u)return;let f=u.categories&&u.categories.length>0?u.categories:t.categories,m=u.values.map(e=>Math.abs(e??0)),h=m.reduce((e,t)=>e+t,0);if(h===0)return;let g=t.title?d(t,l,a):0,_=t.title?l*.035:0,v=t.title?l*.035:0,y=t.title?g+_+v:0;p(e,t,o,s+_,c,g);let b=c-(t.showLegend?Math.max(80,c*.28):0),x=l-y-l*.02,S=o+b/2,C=s+y+l*.02+x/2,w=Math.min(b,x)*.42,T=i?w*.5:0,E=-Math.PI/2;for(let r=0;r<m.length;r++){let a=m[r]/h*Math.PI*2,o=n(r,u);if(e.beginPath(),e.moveTo(S,C),e.arc(S,C,w,E,E+a),e.closePath(),e.fillStyle=o,e.fill(),e.strokeStyle=`#fff`,e.lineWidth=1,e.stroke(),t.showDataLabels&&a>.15){let t=E+a/2,n=w*(i?.75:.6),o=S+Math.cos(t)*n,s=C+Math.sin(t)*n,c=Math.round(m[r]/h*100);e.font=`bold ${Math.max(8,w*.1)}px sans-serif`,e.fillStyle=`#fff`,e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(`${c}%`,o,s)}E+=a}i&&(e.beginPath(),e.arc(S,C,T,0,Math.PI*2),e.fillStyle=`#fff`,e.fill());let D=o+b+4,O=Math.max(9,Math.min(12,l/(m.length+2)));e.font=`${O}px sans-serif`,e.textBaseline=`middle`;let k=O+4,A=s+(l-k*m.length)/2;for(let t=0;t<m.length;t++)e.fillStyle=n(t,u),e.fillRect(D,A,10,O),e.fillStyle=`#333`,e.textAlign=`left`,e.fillText((f[t]??`Item ${t+1}`).toString().slice(0,18),D+14,A+O/2),A+=k}function y(e,n,o,s){let{x:c,y:u,w:f,h}=o,g=m(n),_=g.length;if(_<3)return;let v=n.title?d(n,h,s):0,y=n.title?h*.035:0,b=n.title?h*.035:0,x=n.title?v+y+b:0,S=n.showLegend?Math.max(70,f*.2):0;p(e,n,c,u+y,f,v);let C=f-S,w=h-x-h*.02,T=c+C/2,E=u+x+h*.02+w/2,D=Math.min(C,w)*.38,O=0;for(let e of n.series)for(let t of e.values)O=Math.max(O,t??0);n.valMax!=null&&(O=n.valMax),O===0&&(O=1);let k=i(O),A=n.valMax??a(O,k),j=-Math.PI/2,M=e=>j+e/_*Math.PI*2,N=Math.round(A/k);e.strokeStyle=`#ddd`,e.lineWidth=.5;for(let t=1;t<=N;t++){let n=t/N*D;e.beginPath();for(let t=0;t<_;t++){let r=M(t),i=T+Math.cos(r)*n,a=E+Math.sin(r)*n;t===0?e.moveTo(i,a):e.lineTo(i,a)}e.closePath(),e.stroke()}e.strokeStyle=`#bbb`,e.lineWidth=.5;for(let t=0;t<_;t++){let n=M(t);e.beginPath(),e.moveTo(T,E),e.lineTo(T+Math.cos(n)*D,E+Math.sin(n)*D),e.stroke()}e.font=`${Math.max(8,Math.min(11,D*.2))}px sans-serif`,e.fillStyle=`#444`,e.textBaseline=`middle`;for(let t=0;t<_;t++){let n=M(t),r=T+Math.cos(n)*(D+12),i=E+Math.sin(n)*(D+12);e.textAlign=Math.cos(n)<-.1?`right`:Math.cos(n)>.1?`left`:`center`,e.fillText((g[t]??``).toString().slice(0,12),r,i)}for(let i=0;i<n.series.length;i++){let a=n.series[i],o=t(i,a);e.beginPath();for(let t=0;t<_;t++){let n=(a.values[t]??0)/A,r=M(t),i=T+Math.cos(r)*D*n,o=E+Math.sin(r)*D*n;t===0?e.moveTo(i,o):e.lineTo(i,o)}e.closePath(),e.fillStyle=r(o,.25),e.fill(),e.strokeStyle=o,e.lineWidth=2,e.stroke()}S>0&&l(e,n.series,c+f-S+4,u+x+h*.04,S-8,w)}function b(e,n,r,a){let{x:o,y:u,w:f,h:m}=r,h=n.title?d(n,m,a):0,g=n.title?m*.035:0,_=n.title?m*.035:0,v=n.title?h+g+_:0,y=n.showLegend?Math.max(80,f*.22):0,b=Math.max(8,Math.min(10,m*.045)),x=n.catAxisTitle?b+4:0,S=n.valAxisTitle?b+4:0,C={t:v+m*.02,r:y+f*.05,b:m*.12+x,l:f*.12+S};p(e,n,o,u+g,f,h);let w=o+C.l,T=u+C.t,E=f-C.l-C.r,D=m-C.t-C.b;if(E<=0||D<=0)return;n.plotAreaBg&&(e.fillStyle=`#${n.plotAreaBg}`,e.fillRect(w,T,E,D));let O=[],k=[];for(let e of n.series){let t=e.categories??[];for(let e of t){let t=parseFloat(e);isNaN(t)||O.push(t)}for(let t of e.values)t!=null&&k.push(t)}let A=O.length===0;if(A){let e=Math.max(...n.series.map(e=>e.values.length));for(let t=0;t<e;t++)O.push(t)}let j=Math.min(...O),M=Math.max(...O),N=Math.min(...k),P=Math.max(...k);j===M&&(--j,M+=1),N===P&&(--N,P+=1),n.valMin==null?N>0&&(N=0):N=n.valMin,n.valMax!=null&&(P=n.valMax);let F=e=>w+(e-j)/(M-j)*E,I=e=>T+D-(e-N)/(P-N)*D;if(!n.valAxisHidden){e.font=`${Math.max(8,Math.min(11,D/20))}px sans-serif`;let t=i(P-N),n=Math.round((P-N)/t)+1;for(let r=0;r<n;r++){let n=N+r*t;if(n>P+t*.01)break;let i=I(n);e.strokeStyle=`#e0e0e0`,e.lineWidth=.5,e.beginPath(),e.moveTo(w,i),e.lineTo(w+E,i),e.stroke(),e.fillStyle=`#555`,e.textAlign=`right`,e.textBaseline=`middle`,e.fillText(s(n),w-4,i)}}e.strokeStyle=`#aaa`,e.lineWidth=1,e.beginPath(),e.moveTo(w,T+D),e.lineTo(w+E,T+D),e.stroke(),e.beginPath(),e.moveTo(w,T),e.lineTo(w,T+D),e.stroke();let L=Math.max(3,D*.015);for(let r=0;r<n.series.length;r++){let i=n.series[r];e.fillStyle=t(r,i);let a=i.categories??[];for(let t=0;t<i.values.length;t++){let n=i.values[t];if(n==null)continue;let r=A?t:parseFloat(a[t]??`0`);isNaN(r)||(e.beginPath(),e.arc(F(r),I(n),L,0,Math.PI*2),e.fill())}}y>0&&l(e,n.series,o+f-y+4,T,y-8,D),n.catAxisTitle&&c(e,n.catAxisTitle,w,T,E,D,`cat`,b),n.valAxisTitle&&c(e,n.valAxisTitle,w,T,E,D,`val`,b)}function x(e,t,n){let{x:r,y:a,w:o,h:s}=n,c=o*.11,l=o*.04,u=s*.08,d=s*.18,f=r+c,p=a+u,m=o-c-l,h=s-u-d,g=t.series[0]?.values??[],_=t.categories,v=_.length;if(v===0)return;let y=new Set(t.subtotalIndices),b=0,x=[];for(let e=0;e<v;e++){let t=g[e]??0;if(e===0||y.has(e))x.push({start:0,end:t,isSub:!0,isPos:!0}),b=t;else{let e=t>=0?b:b+t,n=t>=0?b+t:b;x.push({start:e,end:n,isSub:!1,isPos:t>=0}),b+=t}}let S=x.map(e=>e.end),C=x.map(e=>e.start),w=Math.max(...S,...C),T=Math.min(...C,0),E=w-T;if(E<=0)return;let D=E*1.1,O=T-E*.05,k=O+D,A=i(D);e.save();let j=Math.round(s*.042);e.font=`${j}px sans-serif`,e.strokeStyle=`#e8e8e8`,e.lineWidth=.7,e.fillStyle=`#666`,e.textAlign=`right`,e.textBaseline=`middle`;for(let t=Math.ceil(O/A)*A;t<=k;t+=A){let n=p+h*(1-(t-O)/D);e.beginPath(),e.moveTo(f,n),e.lineTo(f+m,n),e.stroke(),e.fillText(t.toLocaleString(),f-4,n)}e.strokeStyle=`#bbb`,e.lineWidth=1,e.beginPath(),e.moveTo(f,p),e.lineTo(f,p+h),e.lineTo(f+m,p+h),e.stroke();let M=m/v*.55,N=m/v;x.forEach((t,n)=>{let r=f+N*n+(N-M)/2,i=p+h*(1-(t.end-O)/D),a=p+h*(1-(t.start-O)/D),o=Math.max(1,a-i);if(t.isSub?(e.fillStyle=`#196ECA`,e.fillRect(r,i,M,o)):(e.strokeStyle=t.isPos?`#5BA4E6`:`#E46970`,e.lineWidth=1.5,e.strokeRect(r+.75,i+.75,M-1.5,o-1.5)),n<v-1){let o=f+N*(n+1)+(N-M)/2,s=t.isPos?i:a;e.strokeStyle=`#ccc`,e.lineWidth=.8,e.setLineDash([3,3]),e.beginPath(),e.moveTo(r+M,s),e.lineTo(o,s),e.stroke(),e.setLineDash([])}let c=g[n]??0,l=c<0?`△ ${Math.abs(c).toLocaleString()}`:c.toLocaleString();e.fillStyle=`#595959`,e.font=`bold ${Math.round(s*.044)}px sans-serif`,e.textAlign=`center`,e.textBaseline=`bottom`,e.fillText(l,r+M/2,i-3)}),e.textAlign=`center`,e.textBaseline=`top`,e.fillStyle=`#666`,e.font=`${Math.round(s*.038)}px sans-serif`;let P=p+h+4;for(let t=0;t<v;t++){let n=f+N*t+N/2;_[t].split(/\s+/).forEach((t,r)=>e.fillText(t,n,P+r*(j+2)))}e.restore()}function S(e,t,n,r=1.333){let{x:i,y:a,w:o,h:s}=n;if(t.chartBg&&(e.fillStyle=`#${t.chartBg}`,e.fillRect(i,a,o,s)),t.series.length===0){e.fillStyle=`#888`,e.font=`12px sans-serif`,e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(`(no data)`,i+o/2,a+s/2);return}switch(t.chartType){case`clusteredBar`:case`clusteredBarH`:case`stackedBar`:case`stackedBarH`:case`stackedBarPct`:case`stackedBarHPct`:h(e,t,n,r);break;case`line`:case`stackedLine`:case`stackedLinePct`:g(e,t,n,r);break;case`area`:case`stackedArea`:case`stackedAreaPct`:_(e,t,n,r);break;case`pie`:v(e,t,n,!1,r);break;case`doughnut`:v(e,t,n,!0,r);break;case`radar`:y(e,t,n,r);break;case`scatter`:case`bubble`:b(e,t,n,r);break;case`waterfall`:x(e,t,n);break;default:e.fillStyle=`#888`,e.font=`11px sans-serif`,e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(`Chart: ${t.chartType}`,i+o/2,a+s/2)}}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return S}});
|
|
@@ -74,100 +74,100 @@ function f(e, t, n) {
|
|
|
74
74
|
return e ? e / 100 * n : Math.max(8, t * .045);
|
|
75
75
|
}
|
|
76
76
|
function p(e, t, n, r, i, a) {
|
|
77
|
-
t && (e.font = `bold ${a}px sans-serif`, e.fillStyle = "#333", e.textAlign = "center", e.textBaseline = "top", e.fillText(t, n + i / 2, r));
|
|
77
|
+
t.title && (e.font = `bold ${a}px ${t.titleFontFace ? `"${t.titleFontFace}", Calibri, Arial, sans-serif` : "Calibri, Arial, sans-serif"}`, e.fillStyle = t.titleFontColor ? `#${t.titleFontColor}` : "#333", e.textAlign = "center", e.textBaseline = "top", e.fillText(t.title, n + i / 2, r));
|
|
78
78
|
}
|
|
79
79
|
function m(e) {
|
|
80
80
|
return e.categories.length > 0 ? e.categories : e.series[0]?.categories ?? [];
|
|
81
81
|
}
|
|
82
|
-
function h(e, n, r) {
|
|
83
|
-
let { x:
|
|
84
|
-
if (
|
|
85
|
-
let
|
|
86
|
-
t:
|
|
87
|
-
r:
|
|
88
|
-
b:
|
|
89
|
-
l:
|
|
82
|
+
function h(e, n, r, o) {
|
|
83
|
+
let { x: u, y: f, w: h, h: g } = r, _ = n.chartType === "clusteredBarH" || n.chartType === "stackedBarH" || n.chartType === "stackedBarHPct", v = n.chartType.startsWith("stacked"), y = n.chartType === "stackedBarPct" || n.chartType === "stackedBarHPct", b = n.series.filter((e) => e.seriesType !== "line"), x = n.series.filter((e) => e.seriesType === "line"), S = m(n), C = S.length;
|
|
84
|
+
if (C === 0) return;
|
|
85
|
+
let w = n.title ? d(n, g, o) : 0, T = n.title ? g * .02 : 0, E = n.title ? g * .025 : 0, D = n.title ? w + T + E : 0, O = n.showLegend ? Math.max(80, h * .22) : 0, k = Math.max(8, Math.min(10, g * .045)), A = n.catAxisTitle ? k + 4 : 0, j = n.valAxisTitle ? k + 4 : 0, M = {
|
|
86
|
+
t: D + g * .02,
|
|
87
|
+
r: O + h * .03,
|
|
88
|
+
b: g * .14 + A,
|
|
89
|
+
l: h * .12 + j
|
|
90
90
|
};
|
|
91
|
-
|
|
92
|
-
let
|
|
93
|
-
if (
|
|
94
|
-
n.plotAreaBg && (e.fillStyle = `#${n.plotAreaBg}`, e.fillRect(
|
|
95
|
-
let
|
|
96
|
-
for (let e = 0; e <
|
|
91
|
+
_ && (M.l = h * .22 + j, M.b = g * .08 + A), p(e, n, u, f + T, h, w);
|
|
92
|
+
let N = u + M.l, P = f + M.t, F = h - M.l - M.r, I = g - M.t - M.b;
|
|
93
|
+
if (F <= 0 || I <= 0) return;
|
|
94
|
+
n.plotAreaBg && (e.fillStyle = `#${n.plotAreaBg}`, e.fillRect(N, P, F, I));
|
|
95
|
+
let L = 0;
|
|
96
|
+
for (let e = 0; e < C; e++) {
|
|
97
97
|
let t = 0;
|
|
98
|
-
for (let n of
|
|
98
|
+
for (let n of b) {
|
|
99
99
|
let r = n.values[e] ?? 0;
|
|
100
|
-
|
|
100
|
+
v ? t += Math.abs(r) : L = Math.max(L, Math.abs(r));
|
|
101
101
|
}
|
|
102
|
-
|
|
102
|
+
v && (L = Math.max(L, t));
|
|
103
103
|
}
|
|
104
|
-
|
|
105
|
-
let
|
|
106
|
-
if (e.textBaseline = "middle", e.font = `${Math.max(8, Math.min(11,
|
|
107
|
-
let n = t *
|
|
108
|
-
if (
|
|
109
|
-
let i =
|
|
110
|
-
e.strokeStyle = t === 0 ? "#aaa" :
|
|
104
|
+
y && (L = 100), n.valMax != null && (L = n.valMax), L === 0 && (L = 1);
|
|
105
|
+
let R = i(L), z = n.valMax ?? a(L, R), B = "#e0e0e0", V = Math.round(z / R);
|
|
106
|
+
if (e.textBaseline = "middle", e.font = `${Math.max(8, Math.min(11, I / 20))}px sans-serif`, e.fillStyle = "#555", !n.valAxisHidden) for (let t = 0; t <= V; t++) {
|
|
107
|
+
let n = t * R, r = y ? `${Math.round(n)}%` : n >= 1e3 ? `${(n / 1e3).toFixed(1)}k` : String(n);
|
|
108
|
+
if (_) {
|
|
109
|
+
let i = N + n / z * F;
|
|
110
|
+
e.strokeStyle = t === 0 ? "#aaa" : B, e.lineWidth = t === 0 ? 1 : .5, e.beginPath(), e.moveTo(i, P), e.lineTo(i, P + I), e.stroke(), e.textAlign = "center", e.fillText(r, i, P + I + 10);
|
|
111
111
|
} else {
|
|
112
|
-
let i =
|
|
113
|
-
e.strokeStyle = t === 0 ? "#aaa" :
|
|
112
|
+
let i = P + I - n / z * I;
|
|
113
|
+
e.strokeStyle = t === 0 ? "#aaa" : B, e.lineWidth = t === 0 ? 1 : .5, e.beginPath(), e.moveTo(N, i), e.lineTo(N + F, i), e.stroke(), e.textAlign = "right", e.fillText(r, N - 4, i);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
e.strokeStyle = "#aaa", e.lineWidth = 1,
|
|
117
|
-
let
|
|
118
|
-
for (let r = 0; r <
|
|
116
|
+
e.strokeStyle = "#aaa", e.lineWidth = 1, _ ? (e.beginPath(), e.moveTo(N, P), e.lineTo(N, P + I), e.stroke()) : (e.beginPath(), e.moveTo(N, P + I), e.lineTo(N + F, P + I), e.stroke());
|
|
117
|
+
let H = _ ? I / C : F / C, U = H * (v ? .6 : .6 / Math.max(1, b.length)), W = v ? 0 : H * .6 / Math.max(1, b.length), G = H * .2;
|
|
118
|
+
for (let r = 0; r < C; r++) {
|
|
119
119
|
let i = 0, a = 0;
|
|
120
|
-
if (
|
|
121
|
-
for (let e of
|
|
120
|
+
if (y) {
|
|
121
|
+
for (let e of b) a += Math.abs(e.values[r] ?? 0);
|
|
122
122
|
a === 0 && (a = 1);
|
|
123
123
|
}
|
|
124
|
-
for (let o = 0; o <
|
|
125
|
-
let c =
|
|
126
|
-
if (
|
|
127
|
-
let t =
|
|
128
|
-
e.fillStyle = d, e.fillRect(c, t, a,
|
|
124
|
+
for (let o = 0; o < b.length; o++) {
|
|
125
|
+
let c = b[o], l = c.values[r] ?? 0, u = y ? Math.abs(l) / a * 100 : Math.abs(l), d = t(o, c);
|
|
126
|
+
if (_) {
|
|
127
|
+
let t = v ? P + (C - 1 - r) * H + G : P + (C - 1 - r) * H + G + o * W, a = u / z * F, c = v ? N + i / z * F : N;
|
|
128
|
+
e.fillStyle = d, e.fillRect(c, t, a, U), n.showDataLabels && u > 0 && (e.font = `bold ${Math.max(7, Math.min(10, U * .7))}px sans-serif`, e.fillStyle = "#333", e.textAlign = "left", e.textBaseline = "middle", e.fillText(y ? `${Math.round(u)}%` : s(u), c + a + 2, t + U / 2));
|
|
129
129
|
} else {
|
|
130
|
-
let t =
|
|
131
|
-
e.fillStyle = d, e.fillRect(t, c,
|
|
130
|
+
let t = v ? N + r * H + G : N + r * H + G + o * W, a = u / z * I, c = P + I - (v ? i + u : u) / z * I;
|
|
131
|
+
e.fillStyle = d, e.fillRect(t, c, U, a), n.showDataLabels && u > 0 && (e.font = `bold ${Math.max(7, Math.min(10, U * .7))}px sans-serif`, e.fillStyle = "#333", e.textAlign = "center", e.textBaseline = "bottom", e.fillText(y ? `${Math.round(u)}%` : s(u), t + U / 2, c - 1));
|
|
132
132
|
}
|
|
133
|
-
|
|
133
|
+
v && (i += u);
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
if (!n.catAxisHidden) {
|
|
137
|
-
e.fillStyle = "#555", e.font = `${Math.max(8, Math.min(11,
|
|
138
|
-
for (let t = 0; t <
|
|
139
|
-
let n = (
|
|
140
|
-
if (
|
|
141
|
-
let r =
|
|
142
|
-
e.textAlign = "right", e.textBaseline = "middle", e.fillText(n,
|
|
137
|
+
e.fillStyle = "#555", e.font = `${Math.max(8, Math.min(11, H * .5))}px sans-serif`;
|
|
138
|
+
for (let t = 0; t < C; t++) {
|
|
139
|
+
let n = (S[t] ?? "").toString().slice(0, 12);
|
|
140
|
+
if (_) {
|
|
141
|
+
let r = P + (C - 1 - t) * H + H / 2;
|
|
142
|
+
e.textAlign = "right", e.textBaseline = "middle", e.fillText(n, N - 4, r);
|
|
143
143
|
} else {
|
|
144
|
-
let r =
|
|
145
|
-
e.textAlign = "center", e.textBaseline = "top", e.fillText(n, r,
|
|
144
|
+
let r = N + t * H + H / 2;
|
|
145
|
+
e.textAlign = "center", e.textBaseline = "top", e.fillText(n, r, P + I + 3);
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
|
-
if (
|
|
150
|
-
let r =
|
|
149
|
+
if (x.length > 0 && !_) for (let n = 0; n < x.length; n++) {
|
|
150
|
+
let r = x[n], i = t(b.length + n, r);
|
|
151
151
|
e.strokeStyle = i, e.lineWidth = 2, e.setLineDash([]), e.beginPath();
|
|
152
152
|
let a = !1;
|
|
153
|
-
for (let t = 0; t <
|
|
153
|
+
for (let t = 0; t < C; t++) {
|
|
154
154
|
let n = r.values[t];
|
|
155
155
|
if (n == null) {
|
|
156
156
|
a = !1;
|
|
157
157
|
continue;
|
|
158
158
|
}
|
|
159
|
-
let i =
|
|
159
|
+
let i = N + t * H + H / 2, o = P + I - n / z * I;
|
|
160
160
|
a ? e.lineTo(i, o) : (e.moveTo(i, o), a = !0);
|
|
161
161
|
}
|
|
162
162
|
e.stroke();
|
|
163
|
-
for (let t = 0; t <
|
|
163
|
+
for (let t = 0; t < C; t++) {
|
|
164
164
|
let n = r.values[t];
|
|
165
165
|
if (n == null) continue;
|
|
166
|
-
let a =
|
|
166
|
+
let a = N + t * H + H / 2, o = P + I - n / z * I;
|
|
167
167
|
e.fillStyle = i, e.beginPath(), e.arc(a, o, 3, 0, Math.PI * 2), e.fill();
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
|
-
|
|
170
|
+
O > 0 && l(e, n.series, u + h - O + 4, P, O - 8, I), n.catAxisTitle && c(e, n.catAxisTitle, N, P, F, I, "cat", k), n.valAxisTitle && c(e, n.valAxisTitle, N, P, F, I, "val", k);
|
|
171
171
|
}
|
|
172
172
|
function g(e, n, r, h) {
|
|
173
173
|
let { x: g, y: _, w: v, h: y } = r, b = m(n), x = b.length;
|
|
@@ -178,7 +178,7 @@ function g(e, n, r, h) {
|
|
|
178
178
|
b: D + 12 + A,
|
|
179
179
|
l: O * 2.2 + 10 + j
|
|
180
180
|
};
|
|
181
|
-
p(e, n
|
|
181
|
+
p(e, n, g, _ + C, v, S);
|
|
182
182
|
let N = g + M.l, P = _ + M.t, F = v - M.l - M.r, I = y - M.t - M.b;
|
|
183
183
|
if (F <= 0 || I <= 0) return;
|
|
184
184
|
n.plotAreaBg && (e.fillStyle = `#${n.plotAreaBg}`, e.fillRect(N, P, F, I));
|
|
@@ -227,162 +227,162 @@ function g(e, n, r, h) {
|
|
|
227
227
|
}
|
|
228
228
|
E > 0 && l(e, n.series, g + v - E + 4, P, E - 8, I), n.catAxisTitle && c(e, n.catAxisTitle, N, P, F, I, "cat", k), n.valAxisTitle && c(e, n.valAxisTitle, N, P, F, I, "val", k);
|
|
229
229
|
}
|
|
230
|
-
function _(e, n, o) {
|
|
231
|
-
let { x:
|
|
232
|
-
if (
|
|
233
|
-
let
|
|
234
|
-
t:
|
|
235
|
-
r:
|
|
236
|
-
b:
|
|
237
|
-
l:
|
|
230
|
+
function _(e, n, o, u) {
|
|
231
|
+
let { x: f, y: h, w: g, h: _ } = o, v = m(n), y = v.length;
|
|
232
|
+
if (y === 0) return;
|
|
233
|
+
let b = n.chartType === "stackedArea" || n.chartType === "stackedAreaPct", x = n.title ? d(n, _, u) : 0, S = n.title ? _ * .035 : 0, C = n.title ? _ * .035 : 0, w = n.title ? x + S + C : 0, T = n.showLegend ? Math.max(80, g * .22) : 0, E = Math.max(8, Math.min(10, _ * .045)), D = n.catAxisTitle ? E + 4 : 0, O = n.valAxisTitle ? E + 4 : 0, k = {
|
|
234
|
+
t: w + _ * .02,
|
|
235
|
+
r: T + g * .05,
|
|
236
|
+
b: _ * .14 + D,
|
|
237
|
+
l: g * .12 + O
|
|
238
238
|
};
|
|
239
|
-
p(e, n
|
|
240
|
-
let
|
|
241
|
-
if (
|
|
242
|
-
n.plotAreaBg && (e.fillStyle = `#${n.plotAreaBg}`, e.fillRect(
|
|
243
|
-
let
|
|
244
|
-
for (let e = 0; e <
|
|
239
|
+
p(e, n, f, h + S, g, x);
|
|
240
|
+
let A = f + k.l, j = h + k.t, M = g - k.l - k.r, N = _ - k.t - k.b;
|
|
241
|
+
if (M <= 0 || N <= 0) return;
|
|
242
|
+
n.plotAreaBg && (e.fillStyle = `#${n.plotAreaBg}`, e.fillRect(A, j, M, N));
|
|
243
|
+
let P = 0;
|
|
244
|
+
for (let e = 0; e < y; e++) if (b) {
|
|
245
245
|
let t = 0;
|
|
246
246
|
for (let r of n.series) t += r.values[e] ?? 0;
|
|
247
|
-
|
|
248
|
-
} else for (let t of n.series)
|
|
249
|
-
n.valMax != null && (
|
|
250
|
-
let
|
|
247
|
+
P = Math.max(P, t);
|
|
248
|
+
} else for (let t of n.series) P = Math.max(P, t.values[e] ?? 0);
|
|
249
|
+
n.valMax != null && (P = n.valMax), P === 0 && (P = 1);
|
|
250
|
+
let F = i(P), I = n.valMax ?? a(P, F), L = (e) => A + (y === 1 ? M / 2 : e / (y - 1) * M), R = (e) => j + N - e / I * N;
|
|
251
251
|
if (!n.valAxisHidden) {
|
|
252
|
-
e.font = `${Math.max(8, Math.min(11,
|
|
253
|
-
let t = Math.round(
|
|
252
|
+
e.font = `${Math.max(8, Math.min(11, N / 20))}px sans-serif`, e.textBaseline = "middle";
|
|
253
|
+
let t = Math.round(I / F);
|
|
254
254
|
for (let n = 0; n <= t; n++) {
|
|
255
|
-
let t = n *
|
|
256
|
-
e.strokeStyle = n === 0 ? "#aaa" : "#e0e0e0", e.lineWidth = n === 0 ? 1 : .5, e.beginPath(), e.moveTo(
|
|
255
|
+
let t = n * F, r = R(t);
|
|
256
|
+
e.strokeStyle = n === 0 ? "#aaa" : "#e0e0e0", e.lineWidth = n === 0 ? 1 : .5, e.beginPath(), e.moveTo(A, r), e.lineTo(A + M, r), e.stroke(), e.fillStyle = "#555", e.textAlign = "right", e.fillText(s(t), A - 4, r);
|
|
257
257
|
}
|
|
258
258
|
}
|
|
259
|
-
e.strokeStyle = "#aaa", e.lineWidth = 1, e.beginPath(), e.moveTo(
|
|
260
|
-
let
|
|
259
|
+
e.strokeStyle = "#aaa", e.lineWidth = 1, e.beginPath(), e.moveTo(A, j + N), e.lineTo(A + M, j + N), e.stroke();
|
|
260
|
+
let z = b ? Array(y).fill(0) : null;
|
|
261
261
|
for (let i = n.series.length - 1; i >= 0; i--) {
|
|
262
|
-
let a = n.series[i], o = t(i, a), s =
|
|
263
|
-
if (e.beginPath(),
|
|
264
|
-
for (let t = 0; t <
|
|
265
|
-
let n = (a.values[t] ?? 0) +
|
|
262
|
+
let a = n.series[i], o = t(i, a), s = j + N;
|
|
263
|
+
if (e.beginPath(), b && z) {
|
|
264
|
+
for (let t = 0; t < y; t++) {
|
|
265
|
+
let n = (a.values[t] ?? 0) + z[t], r = L(t), i = R(n);
|
|
266
266
|
t === 0 ? e.moveTo(r, i) : e.lineTo(r, i);
|
|
267
267
|
}
|
|
268
|
-
for (let t =
|
|
269
|
-
for (let e = 0; e <
|
|
268
|
+
for (let t = y - 1; t >= 0; t--) e.lineTo(L(t), R(z[t]));
|
|
269
|
+
for (let e = 0; e < y; e++) z[e] += a.values[e] ?? 0;
|
|
270
270
|
} else {
|
|
271
|
-
e.moveTo(
|
|
272
|
-
for (let t = 0; t <
|
|
273
|
-
e.lineTo(
|
|
271
|
+
e.moveTo(L(0), s);
|
|
272
|
+
for (let t = 0; t < y; t++) e.lineTo(L(t), R(a.values[t] ?? 0));
|
|
273
|
+
e.lineTo(L(y - 1), s);
|
|
274
274
|
}
|
|
275
275
|
e.closePath(), e.fillStyle = r(o, .6), e.fill(), e.strokeStyle = o, e.lineWidth = 1.5, e.setLineDash([]), e.stroke();
|
|
276
276
|
}
|
|
277
277
|
if (!n.catAxisHidden) {
|
|
278
|
-
let t = Math.max(1, Math.ceil(
|
|
279
|
-
e.fillStyle = "#555", e.textAlign = "center", e.textBaseline = "top", e.font = `${Math.max(8, Math.min(11,
|
|
280
|
-
for (let n = 0; n <
|
|
278
|
+
let t = Math.max(1, Math.ceil(y / 8));
|
|
279
|
+
e.fillStyle = "#555", e.textAlign = "center", e.textBaseline = "top", e.font = `${Math.max(8, Math.min(11, M / y * .8))}px sans-serif`;
|
|
280
|
+
for (let n = 0; n < y; n += t) e.fillText((v[n] ?? "").toString().slice(0, 10), L(n), j + N + 3);
|
|
281
281
|
}
|
|
282
|
-
|
|
282
|
+
T > 0 && l(e, n.series, f + g - T + 4, j, T - 8, N), n.catAxisTitle && c(e, n.catAxisTitle, A, j, M, N, "cat", E), n.valAxisTitle && c(e, n.valAxisTitle, A, j, M, N, "val", E);
|
|
283
283
|
}
|
|
284
|
-
function v(e, t, r, i) {
|
|
285
|
-
let { x:
|
|
286
|
-
if (!
|
|
287
|
-
let
|
|
288
|
-
if (
|
|
289
|
-
let
|
|
290
|
-
p(e, t
|
|
291
|
-
let
|
|
292
|
-
for (let r = 0; r <
|
|
293
|
-
let a =
|
|
294
|
-
if (e.beginPath(), e.moveTo(
|
|
295
|
-
let t =
|
|
296
|
-
e.font = `bold ${Math.max(8,
|
|
284
|
+
function v(e, t, r, i, a) {
|
|
285
|
+
let { x: o, y: s, w: c, h: l } = r, u = t.series[0];
|
|
286
|
+
if (!u) return;
|
|
287
|
+
let f = u.categories && u.categories.length > 0 ? u.categories : t.categories, m = u.values.map((e) => Math.abs(e ?? 0)), h = m.reduce((e, t) => e + t, 0);
|
|
288
|
+
if (h === 0) return;
|
|
289
|
+
let g = t.title ? d(t, l, a) : 0, _ = t.title ? l * .035 : 0, v = t.title ? l * .035 : 0, y = t.title ? g + _ + v : 0;
|
|
290
|
+
p(e, t, o, s + _, c, g);
|
|
291
|
+
let b = c - (t.showLegend ? Math.max(80, c * .28) : 0), x = l - y - l * .02, S = o + b / 2, C = s + y + l * .02 + x / 2, w = Math.min(b, x) * .42, T = i ? w * .5 : 0, E = -Math.PI / 2;
|
|
292
|
+
for (let r = 0; r < m.length; r++) {
|
|
293
|
+
let a = m[r] / h * Math.PI * 2, o = n(r, u);
|
|
294
|
+
if (e.beginPath(), e.moveTo(S, C), e.arc(S, C, w, E, E + a), e.closePath(), e.fillStyle = o, e.fill(), e.strokeStyle = "#fff", e.lineWidth = 1, e.stroke(), t.showDataLabels && a > .15) {
|
|
295
|
+
let t = E + a / 2, n = w * (i ? .75 : .6), o = S + Math.cos(t) * n, s = C + Math.sin(t) * n, c = Math.round(m[r] / h * 100);
|
|
296
|
+
e.font = `bold ${Math.max(8, w * .1)}px sans-serif`, e.fillStyle = "#fff", e.textAlign = "center", e.textBaseline = "middle", e.fillText(`${c}%`, o, s);
|
|
297
297
|
}
|
|
298
|
-
|
|
298
|
+
E += a;
|
|
299
299
|
}
|
|
300
|
-
i && (e.beginPath(), e.arc(
|
|
301
|
-
let
|
|
302
|
-
e.font = `${
|
|
303
|
-
let
|
|
304
|
-
for (let t = 0; t <
|
|
300
|
+
i && (e.beginPath(), e.arc(S, C, T, 0, Math.PI * 2), e.fillStyle = "#fff", e.fill());
|
|
301
|
+
let D = o + b + 4, O = Math.max(9, Math.min(12, l / (m.length + 2)));
|
|
302
|
+
e.font = `${O}px sans-serif`, e.textBaseline = "middle";
|
|
303
|
+
let k = O + 4, A = s + (l - k * m.length) / 2;
|
|
304
|
+
for (let t = 0; t < m.length; t++) e.fillStyle = n(t, u), e.fillRect(D, A, 10, O), e.fillStyle = "#333", e.textAlign = "left", e.fillText((f[t] ?? `Item ${t + 1}`).toString().slice(0, 18), D + 14, A + O / 2), A += k;
|
|
305
305
|
}
|
|
306
|
-
function y(e, n, o) {
|
|
307
|
-
let { x:
|
|
308
|
-
if (
|
|
309
|
-
let
|
|
310
|
-
p(e, n
|
|
311
|
-
let
|
|
312
|
-
for (let e of n.series) for (let t of e.values)
|
|
313
|
-
n.valMax != null && (
|
|
314
|
-
let
|
|
306
|
+
function y(e, n, o, s) {
|
|
307
|
+
let { x: c, y: u, w: f, h } = o, g = m(n), _ = g.length;
|
|
308
|
+
if (_ < 3) return;
|
|
309
|
+
let v = n.title ? d(n, h, s) : 0, y = n.title ? h * .035 : 0, b = n.title ? h * .035 : 0, x = n.title ? v + y + b : 0, S = n.showLegend ? Math.max(70, f * .2) : 0;
|
|
310
|
+
p(e, n, c, u + y, f, v);
|
|
311
|
+
let C = f - S, w = h - x - h * .02, T = c + C / 2, E = u + x + h * .02 + w / 2, D = Math.min(C, w) * .38, O = 0;
|
|
312
|
+
for (let e of n.series) for (let t of e.values) O = Math.max(O, t ?? 0);
|
|
313
|
+
n.valMax != null && (O = n.valMax), O === 0 && (O = 1);
|
|
314
|
+
let k = i(O), A = n.valMax ?? a(O, k), j = -Math.PI / 2, M = (e) => j + e / _ * Math.PI * 2, N = Math.round(A / k);
|
|
315
315
|
e.strokeStyle = "#ddd", e.lineWidth = .5;
|
|
316
|
-
for (let t = 1; t <=
|
|
317
|
-
let n = t /
|
|
316
|
+
for (let t = 1; t <= N; t++) {
|
|
317
|
+
let n = t / N * D;
|
|
318
318
|
e.beginPath();
|
|
319
|
-
for (let t = 0; t <
|
|
320
|
-
let r =
|
|
319
|
+
for (let t = 0; t < _; t++) {
|
|
320
|
+
let r = M(t), i = T + Math.cos(r) * n, a = E + Math.sin(r) * n;
|
|
321
321
|
t === 0 ? e.moveTo(i, a) : e.lineTo(i, a);
|
|
322
322
|
}
|
|
323
323
|
e.closePath(), e.stroke();
|
|
324
324
|
}
|
|
325
325
|
e.strokeStyle = "#bbb", e.lineWidth = .5;
|
|
326
|
-
for (let t = 0; t <
|
|
327
|
-
let n =
|
|
328
|
-
e.beginPath(), e.moveTo(
|
|
326
|
+
for (let t = 0; t < _; t++) {
|
|
327
|
+
let n = M(t);
|
|
328
|
+
e.beginPath(), e.moveTo(T, E), e.lineTo(T + Math.cos(n) * D, E + Math.sin(n) * D), e.stroke();
|
|
329
329
|
}
|
|
330
|
-
e.font = `${Math.max(8, Math.min(11,
|
|
331
|
-
for (let t = 0; t <
|
|
332
|
-
let n =
|
|
333
|
-
e.textAlign = Math.cos(n) < -.1 ? "right" : Math.cos(n) > .1 ? "left" : "center", e.fillText((
|
|
330
|
+
e.font = `${Math.max(8, Math.min(11, D * .2))}px sans-serif`, e.fillStyle = "#444", e.textBaseline = "middle";
|
|
331
|
+
for (let t = 0; t < _; t++) {
|
|
332
|
+
let n = M(t), r = T + Math.cos(n) * (D + 12), i = E + Math.sin(n) * (D + 12);
|
|
333
|
+
e.textAlign = Math.cos(n) < -.1 ? "right" : Math.cos(n) > .1 ? "left" : "center", e.fillText((g[t] ?? "").toString().slice(0, 12), r, i);
|
|
334
334
|
}
|
|
335
335
|
for (let i = 0; i < n.series.length; i++) {
|
|
336
336
|
let a = n.series[i], o = t(i, a);
|
|
337
337
|
e.beginPath();
|
|
338
|
-
for (let t = 0; t <
|
|
339
|
-
let n = (a.values[t] ?? 0) /
|
|
338
|
+
for (let t = 0; t < _; t++) {
|
|
339
|
+
let n = (a.values[t] ?? 0) / A, r = M(t), i = T + Math.cos(r) * D * n, o = E + Math.sin(r) * D * n;
|
|
340
340
|
t === 0 ? e.moveTo(i, o) : e.lineTo(i, o);
|
|
341
341
|
}
|
|
342
342
|
e.closePath(), e.fillStyle = r(o, .25), e.fill(), e.strokeStyle = o, e.lineWidth = 2, e.stroke();
|
|
343
343
|
}
|
|
344
|
-
|
|
344
|
+
S > 0 && l(e, n.series, c + f - S + 4, u + x + h * .04, S - 8, w);
|
|
345
345
|
}
|
|
346
|
-
function b(e, n, r) {
|
|
347
|
-
let { x:
|
|
348
|
-
t:
|
|
349
|
-
r:
|
|
350
|
-
b:
|
|
351
|
-
l:
|
|
346
|
+
function b(e, n, r, a) {
|
|
347
|
+
let { x: o, y: u, w: f, h: m } = r, h = n.title ? d(n, m, a) : 0, g = n.title ? m * .035 : 0, _ = n.title ? m * .035 : 0, v = n.title ? h + g + _ : 0, y = n.showLegend ? Math.max(80, f * .22) : 0, b = Math.max(8, Math.min(10, m * .045)), x = n.catAxisTitle ? b + 4 : 0, S = n.valAxisTitle ? b + 4 : 0, C = {
|
|
348
|
+
t: v + m * .02,
|
|
349
|
+
r: y + f * .05,
|
|
350
|
+
b: m * .12 + x,
|
|
351
|
+
l: f * .12 + S
|
|
352
352
|
};
|
|
353
|
-
p(e, n
|
|
354
|
-
let
|
|
355
|
-
if (
|
|
356
|
-
n.plotAreaBg && (e.fillStyle = `#${n.plotAreaBg}`, e.fillRect(
|
|
357
|
-
let
|
|
353
|
+
p(e, n, o, u + g, f, h);
|
|
354
|
+
let w = o + C.l, T = u + C.t, E = f - C.l - C.r, D = m - C.t - C.b;
|
|
355
|
+
if (E <= 0 || D <= 0) return;
|
|
356
|
+
n.plotAreaBg && (e.fillStyle = `#${n.plotAreaBg}`, e.fillRect(w, T, E, D));
|
|
357
|
+
let O = [], k = [];
|
|
358
358
|
for (let e of n.series) {
|
|
359
359
|
let t = e.categories ?? [];
|
|
360
360
|
for (let e of t) {
|
|
361
361
|
let t = parseFloat(e);
|
|
362
|
-
isNaN(t) ||
|
|
362
|
+
isNaN(t) || O.push(t);
|
|
363
363
|
}
|
|
364
|
-
for (let t of e.values) t != null &&
|
|
364
|
+
for (let t of e.values) t != null && k.push(t);
|
|
365
365
|
}
|
|
366
|
-
let
|
|
367
|
-
if (
|
|
366
|
+
let A = O.length === 0;
|
|
367
|
+
if (A) {
|
|
368
368
|
let e = Math.max(...n.series.map((e) => e.values.length));
|
|
369
|
-
for (let t = 0; t < e; t++)
|
|
369
|
+
for (let t = 0; t < e; t++) O.push(t);
|
|
370
370
|
}
|
|
371
|
-
let
|
|
372
|
-
|
|
373
|
-
let
|
|
371
|
+
let j = Math.min(...O), M = Math.max(...O), N = Math.min(...k), P = Math.max(...k);
|
|
372
|
+
j === M && (--j, M += 1), N === P && (--N, P += 1), n.valMin == null ? N > 0 && (N = 0) : N = n.valMin, n.valMax != null && (P = n.valMax);
|
|
373
|
+
let F = (e) => w + (e - j) / (M - j) * E, I = (e) => T + D - (e - N) / (P - N) * D;
|
|
374
374
|
if (!n.valAxisHidden) {
|
|
375
|
-
e.font = `${Math.max(8, Math.min(11,
|
|
376
|
-
let t = i(
|
|
375
|
+
e.font = `${Math.max(8, Math.min(11, D / 20))}px sans-serif`;
|
|
376
|
+
let t = i(P - N), n = Math.round((P - N) / t) + 1;
|
|
377
377
|
for (let r = 0; r < n; r++) {
|
|
378
|
-
let n =
|
|
379
|
-
if (n >
|
|
380
|
-
let i =
|
|
381
|
-
e.strokeStyle = "#e0e0e0", e.lineWidth = .5, e.beginPath(), e.moveTo(
|
|
378
|
+
let n = N + r * t;
|
|
379
|
+
if (n > P + t * .01) break;
|
|
380
|
+
let i = I(n);
|
|
381
|
+
e.strokeStyle = "#e0e0e0", e.lineWidth = .5, e.beginPath(), e.moveTo(w, i), e.lineTo(w + E, i), e.stroke(), e.fillStyle = "#555", e.textAlign = "right", e.textBaseline = "middle", e.fillText(s(n), w - 4, i);
|
|
382
382
|
}
|
|
383
383
|
}
|
|
384
|
-
e.strokeStyle = "#aaa", e.lineWidth = 1, e.beginPath(), e.moveTo(
|
|
385
|
-
let
|
|
384
|
+
e.strokeStyle = "#aaa", e.lineWidth = 1, e.beginPath(), e.moveTo(w, T + D), e.lineTo(w + E, T + D), e.stroke(), e.beginPath(), e.moveTo(w, T), e.lineTo(w, T + D), e.stroke();
|
|
385
|
+
let L = Math.max(3, D * .015);
|
|
386
386
|
for (let r = 0; r < n.series.length; r++) {
|
|
387
387
|
let i = n.series[r];
|
|
388
388
|
e.fillStyle = t(r, i);
|
|
@@ -390,11 +390,11 @@ function b(e, n, r) {
|
|
|
390
390
|
for (let t = 0; t < i.values.length; t++) {
|
|
391
391
|
let n = i.values[t];
|
|
392
392
|
if (n == null) continue;
|
|
393
|
-
let r =
|
|
394
|
-
isNaN(r) || (e.beginPath(), e.arc(
|
|
393
|
+
let r = A ? t : parseFloat(a[t] ?? "0");
|
|
394
|
+
isNaN(r) || (e.beginPath(), e.arc(F(r), I(n), L, 0, Math.PI * 2), e.fill());
|
|
395
395
|
}
|
|
396
396
|
}
|
|
397
|
-
|
|
397
|
+
y > 0 && l(e, n.series, o + f - y + 4, T, y - 8, D), n.catAxisTitle && c(e, n.catAxisTitle, w, T, E, D, "cat", b), n.valAxisTitle && c(e, n.valAxisTitle, w, T, E, D, "val", b);
|
|
398
398
|
}
|
|
399
399
|
function x(e, t, n) {
|
|
400
400
|
let { x: r, y: a, w: o, h: s } = n, c = o * .11, l = o * .04, u = s * .08, d = s * .18, f = r + c, p = a + u, m = o - c - l, h = s - u - d, g = t.series[0]?.values ?? [], _ = t.categories, v = _.length;
|
|
@@ -459,7 +459,7 @@ function S(e, t, n, r = 1.333) {
|
|
|
459
459
|
case "stackedBarH":
|
|
460
460
|
case "stackedBarPct":
|
|
461
461
|
case "stackedBarHPct":
|
|
462
|
-
h(e, t, n);
|
|
462
|
+
h(e, t, n, r);
|
|
463
463
|
break;
|
|
464
464
|
case "line":
|
|
465
465
|
case "stackedLine":
|
|
@@ -469,20 +469,20 @@ function S(e, t, n, r = 1.333) {
|
|
|
469
469
|
case "area":
|
|
470
470
|
case "stackedArea":
|
|
471
471
|
case "stackedAreaPct":
|
|
472
|
-
_(e, t, n);
|
|
472
|
+
_(e, t, n, r);
|
|
473
473
|
break;
|
|
474
474
|
case "pie":
|
|
475
|
-
v(e, t, n, !1);
|
|
475
|
+
v(e, t, n, !1, r);
|
|
476
476
|
break;
|
|
477
477
|
case "doughnut":
|
|
478
|
-
v(e, t, n, !0);
|
|
478
|
+
v(e, t, n, !0, r);
|
|
479
479
|
break;
|
|
480
480
|
case "radar":
|
|
481
|
-
y(e, t, n);
|
|
481
|
+
y(e, t, n, r);
|
|
482
482
|
break;
|
|
483
483
|
case "scatter":
|
|
484
484
|
case "bubble":
|
|
485
|
-
b(e, t, n);
|
|
485
|
+
b(e, t, n, r);
|
|
486
486
|
break;
|
|
487
487
|
case "waterfall":
|
|
488
488
|
x(e, t, n);
|
package/dist/types/docx.d.ts
CHANGED
|
@@ -244,6 +244,11 @@ export declare interface ImageRun {
|
|
|
244
244
|
declare interface LineSpacing {
|
|
245
245
|
value: number;
|
|
246
246
|
rule: 'auto' | 'exact' | 'atLeast';
|
|
247
|
+
/** True when `w:spacing/@w:line` was set on the paragraph's own pPr or on a
|
|
248
|
+
* named style (not inherited solely from docDefault). Per ECMA-376 §17.6.5,
|
|
249
|
+
* an inherited-only paragraph in a docGrid section snaps to one grid pitch
|
|
250
|
+
* per line, ignoring the multiplier. Defaults to false on JSON parse. */
|
|
251
|
+
explicit?: boolean;
|
|
247
252
|
}
|
|
248
253
|
|
|
249
254
|
declare interface NumberingInfo {
|
|
@@ -316,6 +321,12 @@ export declare interface SectionProps {
|
|
|
316
321
|
footerDistance: number;
|
|
317
322
|
titlePage: boolean;
|
|
318
323
|
evenAndOddHeaders: boolean;
|
|
324
|
+
/** ECMA-376 §17.6.5 w:docGrid/@w:type — "default" | "lines" | "linesAndChars" | "snapToChars". */
|
|
325
|
+
docGridType?: string | null;
|
|
326
|
+
/** ECMA-376 §17.6.5 w:docGrid/@w:linePitch in pt. When docGridType is "lines" or
|
|
327
|
+
* "linesAndChars", auto line spacing multiplies against this pitch instead of
|
|
328
|
+
* the font's natural line height. */
|
|
329
|
+
docGridLinePitch?: number | null;
|
|
319
330
|
}
|
|
320
331
|
|
|
321
332
|
declare type ShapeFill = {
|