web-annotation-renderer 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/index.cjs +1 -1
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +52 -51
  4. package/dist/index.js.map +1 -1
  5. package/dist/index10.cjs +1 -1
  6. package/dist/index10.cjs.map +1 -1
  7. package/dist/index10.js +13 -210
  8. package/dist/index10.js.map +1 -1
  9. package/dist/index11.cjs +1 -1
  10. package/dist/index11.cjs.map +1 -1
  11. package/dist/index11.js +50 -13
  12. package/dist/index11.js.map +1 -1
  13. package/dist/index12.cjs +1 -1
  14. package/dist/index12.cjs.map +1 -1
  15. package/dist/index12.js +155 -48
  16. package/dist/index12.js.map +1 -1
  17. package/dist/index13.cjs +1 -1
  18. package/dist/index13.cjs.map +1 -1
  19. package/dist/index13.js +34 -169
  20. package/dist/index13.js.map +1 -1
  21. package/dist/index14.cjs +1 -1
  22. package/dist/index14.cjs.map +1 -1
  23. package/dist/index14.js +65 -28
  24. package/dist/index14.js.map +1 -1
  25. package/dist/index15.cjs +1 -1
  26. package/dist/index15.cjs.map +1 -1
  27. package/dist/index15.js +33 -71
  28. package/dist/index15.js.map +1 -1
  29. package/dist/index16.cjs +1 -1
  30. package/dist/index16.cjs.map +1 -1
  31. package/dist/index16.js +77 -22
  32. package/dist/index16.js.map +1 -1
  33. package/dist/index17.cjs +1 -1
  34. package/dist/index17.cjs.map +1 -1
  35. package/dist/index17.js +31 -52
  36. package/dist/index17.js.map +1 -1
  37. package/dist/index18.cjs +1 -1
  38. package/dist/index18.cjs.map +1 -1
  39. package/dist/index18.js +22 -23
  40. package/dist/index18.js.map +1 -1
  41. package/dist/index2.cjs +1 -1
  42. package/dist/index2.cjs.map +1 -1
  43. package/dist/index2.js +5 -6
  44. package/dist/index2.js.map +1 -1
  45. package/dist/index21.cjs +1 -1
  46. package/dist/index21.cjs.map +1 -1
  47. package/dist/index21.js +48 -27
  48. package/dist/index21.js.map +1 -1
  49. package/dist/index24.cjs +1 -1
  50. package/dist/index24.js +1 -1
  51. package/dist/index25.cjs +1 -1
  52. package/dist/index25.js +1 -1
  53. package/dist/index29.cjs +1 -1
  54. package/dist/index29.cjs.map +1 -1
  55. package/dist/index29.js +70 -4
  56. package/dist/index29.js.map +1 -1
  57. package/dist/index3.cjs +1 -1
  58. package/dist/index3.js +1 -1
  59. package/dist/index30.cjs +2 -0
  60. package/dist/index30.cjs.map +1 -0
  61. package/dist/index30.js +8 -0
  62. package/dist/index30.js.map +1 -0
  63. package/dist/index31.cjs +2 -0
  64. package/dist/index31.cjs.map +1 -0
  65. package/dist/index31.js +995 -0
  66. package/dist/index31.js.map +1 -0
  67. package/dist/index5.cjs +1 -1
  68. package/dist/index5.cjs.map +1 -1
  69. package/dist/index5.js +189 -80
  70. package/dist/index5.js.map +1 -1
  71. package/dist/index6.cjs +1 -1
  72. package/dist/index6.cjs.map +1 -1
  73. package/dist/index6.js +18 -60
  74. package/dist/index6.js.map +1 -1
  75. package/dist/index7.cjs +1 -1
  76. package/dist/index7.cjs.map +1 -1
  77. package/dist/index7.js +17 -17
  78. package/dist/index7.js.map +1 -1
  79. package/dist/index8.cjs +1 -1
  80. package/dist/index8.cjs.map +1 -1
  81. package/dist/index8.js +125 -16
  82. package/dist/index8.js.map +1 -1
  83. package/dist/index9.cjs +1 -1
  84. package/dist/index9.cjs.map +1 -1
  85. package/dist/index9.js +201 -118
  86. package/dist/index9.js.map +1 -1
  87. package/package.json +4 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index31.js","sources":["../node_modules/roughjs/bundled/rough.esm.js"],"sourcesContent":["function t(t,e,s){if(t&&t.length){const[n,o]=e,a=Math.PI/180*s,h=Math.cos(a),r=Math.sin(a);for(const e of t){const[t,s]=e;e[0]=(t-n)*h-(s-o)*r+n,e[1]=(t-n)*r+(s-o)*h+o}}}function e(t,e){return t[0]===e[0]&&t[1]===e[1]}function s(s,n,o,a=1){const h=o,r=Math.max(n,.1),i=s[0]&&s[0][0]&&\"number\"==typeof s[0][0]?[s]:s,c=[0,0];if(h)for(const e of i)t(e,c,h);const l=function(t,s,n){const o=[];for(const s of t){const t=[...s];e(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&o.push(t)}const a=[];s=Math.max(s,.1);const h=[];for(const t of o)for(let e=0;e<t.length-1;e++){const s=t[e],n=t[e+1];if(s[1]!==n[1]){const t=Math.min(s[1],n[1]);h.push({ymin:t,ymax:Math.max(s[1],n[1]),x:t===s[1]?s[0]:n[0],islope:(n[0]-s[0])/(n[1]-s[1])})}}if(h.sort(((t,e)=>t.ymin<e.ymin?-1:t.ymin>e.ymin?1:t.x<e.x?-1:t.x>e.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax))),!h.length)return a;let r=[],i=h[0].ymin,c=0;for(;r.length||h.length;){if(h.length){let t=-1;for(let e=0;e<h.length&&!(h[e].ymin>i);e++)t=e;h.splice(0,t+1).forEach((t=>{r.push({s:i,edge:t})}))}if(r=r.filter((t=>!(t.edge.ymax<=i))),r.sort(((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x))),(1!==n||c%s==0)&&r.length>1)for(let t=0;t<r.length;t+=2){const e=t+1;if(e>=r.length)break;const s=r[t].edge,n=r[e].edge;a.push([[Math.round(s.x),i],[Math.round(n.x),i]])}i+=n,r.forEach((t=>{t.edge.x=t.edge.x+n*t.edge.islope})),c++}return a}(i,r,a);if(h){for(const e of i)t(e,c,-h);!function(e,s,n){const o=[];e.forEach((t=>o.push(...t))),t(o,s,n)}(l,c,-h)}return l}function n(t,e){var n;const o=e.hachureAngle+90;let a=e.hachureGap;a<0&&(a=4*e.strokeWidth),a=Math.round(Math.max(a,.1));let h=1;return e.roughness>=1&&((null===(n=e.randomizer)||void 0===n?void 0:n.next())||Math.random())>.7&&(h=a),s(t,a,o,h||1)}class o{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.renderLines(s,e)}}renderLines(t,e){const s=[];for(const n of t)s.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],e));return s}}function a(t){const e=t[0],s=t[1];return Math.sqrt(Math.pow(e[0]-s[0],2)+Math.pow(e[1]-s[1],2))}class h extends o{fillPolygons(t,e){let s=e.hachureGap;s<0&&(s=4*e.strokeWidth),s=Math.max(s,.1);const o=n(t,Object.assign({},e,{hachureGap:s})),h=Math.PI/180*e.hachureAngle,r=[],i=.5*s*Math.cos(h),c=.5*s*Math.sin(h);for(const[t,e]of o)a([t,e])&&r.push([[t[0]-i,t[1]+c],[...e]],[[t[0]+i,t[1]-c],[...e]]);return{type:\"fillSketch\",ops:this.renderLines(r,e)}}}class r extends o{fillPolygons(t,e){const s=this._fillPolygons(t,e),n=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),o=this._fillPolygons(t,n);return s.ops=s.ops.concat(o.ops),s}}class i{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(s,e)}dotsOnLines(t,e){const s=[];let n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.max(n,.1);let o=e.fillWeight;o<0&&(o=e.strokeWidth/2);const h=n/4;for(const r of t){const t=a(r),i=t/n,c=Math.ceil(i)-1,l=t-c*n,u=(r[0][0]+r[1][0])/2-n/4,p=Math.min(r[0][1],r[1][1]);for(let t=0;t<c;t++){const a=p+l+t*n,r=u-h+2*Math.random()*h,i=a-h+2*Math.random()*h,c=this.helper.ellipse(r,i,o,o,e);s.push(...c.ops)}}return{type:\"fillSketch\",ops:s}}}class c{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.dashedLine(s,e)}}dashedLine(t,e){const s=e.dashOffset<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashOffset,n=e.dashGap<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashGap,o=[];return t.forEach((t=>{const h=a(t),r=Math.floor(h/(s+n)),i=(h+n-r*(s+n))/2;let c=t[0],l=t[1];c[0]>l[0]&&(c=t[1],l=t[0]);const u=Math.atan((l[1]-c[1])/(l[0]-c[0]));for(let t=0;t<r;t++){const a=t*(s+n),h=a+s,r=[c[0]+a*Math.cos(u)+i*Math.cos(u),c[1]+a*Math.sin(u)+i*Math.sin(u)],l=[c[0]+h*Math.cos(u)+i*Math.cos(u),c[1]+h*Math.sin(u)+i*Math.sin(u)];o.push(...this.helper.doubleLineOps(r[0],r[1],l[0],l[1],e))}})),o}}class l{constructor(t){this.helper=t}fillPolygons(t,e){const s=e.hachureGap<0?4*e.strokeWidth:e.hachureGap,o=e.zigzagOffset<0?s:e.zigzagOffset,a=n(t,e=Object.assign({},e,{hachureGap:s+o}));return{type:\"fillSketch\",ops:this.zigzagLines(a,o,e)}}zigzagLines(t,e,s){const n=[];return t.forEach((t=>{const o=a(t),h=Math.round(o/(2*e));let r=t[0],i=t[1];r[0]>i[0]&&(r=t[1],i=t[0]);const c=Math.atan((i[1]-r[1])/(i[0]-r[0]));for(let t=0;t<h;t++){const o=2*t*e,a=2*(t+1)*e,h=Math.sqrt(2*Math.pow(e,2)),i=[r[0]+o*Math.cos(c),r[1]+o*Math.sin(c)],l=[r[0]+a*Math.cos(c),r[1]+a*Math.sin(c)],u=[i[0]+h*Math.cos(c+Math.PI/4),i[1]+h*Math.sin(c+Math.PI/4)];n.push(...this.helper.doubleLineOps(i[0],i[1],u[0],u[1],s),...this.helper.doubleLineOps(u[0],u[1],l[0],l[1],s))}})),n}}const u={};class p{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}const f=0,d=1,g=2,M={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function k(t,e){return t.type===e}function b(t){const e=[],s=function(t){const e=new Array;for(;\"\"!==t;)if(t.match(/^([ \\t\\r\\n,]+)/))t=t.substr(RegExp.$1.length);else if(t.match(/^([aAcChHlLmMqQsStTvVzZ])/))e[e.length]={type:f,text:RegExp.$1},t=t.substr(RegExp.$1.length);else{if(!t.match(/^(([-+]?[0-9]+(\\.[0-9]*)?|[-+]?\\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];e[e.length]={type:d,text:`${parseFloat(RegExp.$1)}`},t=t.substr(RegExp.$1.length)}return e[e.length]={type:g,text:\"\"},e}(t);let n=\"BOD\",o=0,a=s[o];for(;!k(a,g);){let h=0;const r=[];if(\"BOD\"===n){if(\"M\"!==a.text&&\"m\"!==a.text)return b(\"M0,0\"+t);o++,h=M[a.text],n=a.text}else k(a,d)?h=M[n]:(o++,h=M[a.text],n=a.text);if(!(o+h<s.length))throw new Error(\"Path data ended short\");for(let t=o;t<o+h;t++){const e=s[t];if(!k(e,d))throw new Error(\"Param not a number: \"+n+\",\"+e.text);r[r.length]=+e.text}if(\"number\"!=typeof M[n])throw new Error(\"Bad segment: \"+n);{const t={key:n,data:r};e.push(t),o+=h,a=s[o],\"M\"===n&&(n=\"L\"),\"m\"===n&&(n=\"l\")}}return e}function y(t){let e=0,s=0,n=0,o=0;const a=[];for(const{key:h,data:r}of t)switch(h){case\"M\":a.push({key:\"M\",data:[...r]}),[e,s]=r,[n,o]=r;break;case\"m\":e+=r[0],s+=r[1],a.push({key:\"M\",data:[e,s]}),n=e,o=s;break;case\"L\":a.push({key:\"L\",data:[...r]}),[e,s]=r;break;case\"l\":e+=r[0],s+=r[1],a.push({key:\"L\",data:[e,s]});break;case\"C\":a.push({key:\"C\",data:[...r]}),e=r[4],s=r[5];break;case\"c\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"C\",data:t}),e=t[4],s=t[5];break}case\"Q\":a.push({key:\"Q\",data:[...r]}),e=r[2],s=r[3];break;case\"q\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"Q\",data:t}),e=t[2],s=t[3];break}case\"A\":a.push({key:\"A\",data:[...r]}),e=r[5],s=r[6];break;case\"a\":e+=r[5],s+=r[6],a.push({key:\"A\",data:[r[0],r[1],r[2],r[3],r[4],e,s]});break;case\"H\":a.push({key:\"H\",data:[...r]}),e=r[0];break;case\"h\":e+=r[0],a.push({key:\"H\",data:[e]});break;case\"V\":a.push({key:\"V\",data:[...r]}),s=r[0];break;case\"v\":s+=r[0],a.push({key:\"V\",data:[s]});break;case\"S\":a.push({key:\"S\",data:[...r]}),e=r[2],s=r[3];break;case\"s\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"S\",data:t}),e=t[2],s=t[3];break}case\"T\":a.push({key:\"T\",data:[...r]}),e=r[0],s=r[1];break;case\"t\":e+=r[0],s+=r[1],a.push({key:\"T\",data:[e,s]});break;case\"Z\":case\"z\":a.push({key:\"Z\",data:[]}),e=n,s=o}return a}function m(t){const e=[];let s=\"\",n=0,o=0,a=0,h=0,r=0,i=0;for(const{key:c,data:l}of t){switch(c){case\"M\":e.push({key:\"M\",data:[...l]}),[n,o]=l,[a,h]=l;break;case\"C\":e.push({key:\"C\",data:[...l]}),n=l[4],o=l[5],r=l[2],i=l[3];break;case\"L\":e.push({key:\"L\",data:[...l]}),[n,o]=l;break;case\"H\":n=l[0],e.push({key:\"L\",data:[n,o]});break;case\"V\":o=l[0],e.push({key:\"L\",data:[n,o]});break;case\"S\":{let t=0,a=0;\"C\"===s||\"S\"===s?(t=n+(n-r),a=o+(o-i)):(t=n,a=o),e.push({key:\"C\",data:[t,a,...l]}),r=l[0],i=l[1],n=l[2],o=l[3];break}case\"T\":{const[t,a]=l;let h=0,c=0;\"Q\"===s||\"T\"===s?(h=n+(n-r),c=o+(o-i)):(h=n,c=o);const u=n+2*(h-n)/3,p=o+2*(c-o)/3,f=t+2*(h-t)/3,d=a+2*(c-a)/3;e.push({key:\"C\",data:[u,p,f,d,t,a]}),r=h,i=c,n=t,o=a;break}case\"Q\":{const[t,s,a,h]=l,c=n+2*(t-n)/3,u=o+2*(s-o)/3,p=a+2*(t-a)/3,f=h+2*(s-h)/3;e.push({key:\"C\",data:[c,u,p,f,a,h]}),r=t,i=s,n=a,o=h;break}case\"A\":{const t=Math.abs(l[0]),s=Math.abs(l[1]),a=l[2],h=l[3],r=l[4],i=l[5],c=l[6];if(0===t||0===s)e.push({key:\"C\",data:[n,o,i,c,i,c]}),n=i,o=c;else if(n!==i||o!==c){x(n,o,i,c,t,s,a,h,r).forEach((function(t){e.push({key:\"C\",data:t})})),n=i,o=c}break}case\"Z\":e.push({key:\"Z\",data:[]}),n=a,o=h}s=c}return e}function w(t,e,s){return[t*Math.cos(s)-e*Math.sin(s),t*Math.sin(s)+e*Math.cos(s)]}function x(t,e,s,n,o,a,h,r,i,c){const l=(u=h,Math.PI*u/180);var u;let p=[],f=0,d=0,g=0,M=0;if(c)[f,d,g,M]=c;else{[t,e]=w(t,e,-l),[s,n]=w(s,n,-l);const h=(t-s)/2,c=(e-n)/2;let u=h*h/(o*o)+c*c/(a*a);u>1&&(u=Math.sqrt(u),o*=u,a*=u);const p=o*o,k=a*a,b=p*k-p*c*c-k*h*h,y=p*c*c+k*h*h,m=(r===i?-1:1)*Math.sqrt(Math.abs(b/y));g=m*o*c/a+(t+s)/2,M=m*-a*h/o+(e+n)/2,f=Math.asin(parseFloat(((e-M)/a).toFixed(9))),d=Math.asin(parseFloat(((n-M)/a).toFixed(9))),t<g&&(f=Math.PI-f),s<g&&(d=Math.PI-d),f<0&&(f=2*Math.PI+f),d<0&&(d=2*Math.PI+d),i&&f>d&&(f-=2*Math.PI),!i&&d>f&&(d-=2*Math.PI)}let k=d-f;if(Math.abs(k)>120*Math.PI/180){const t=d,e=s,r=n;d=i&&d>f?f+120*Math.PI/180*1:f+120*Math.PI/180*-1,p=x(s=g+o*Math.cos(d),n=M+a*Math.sin(d),e,r,o,a,h,0,i,[d,t,g,M])}k=d-f;const b=Math.cos(f),y=Math.sin(f),m=Math.cos(d),P=Math.sin(d),v=Math.tan(k/4),S=4/3*o*v,O=4/3*a*v,L=[t,e],T=[t+S*y,e-O*b],D=[s+S*P,n-O*m],A=[s,n];if(T[0]=2*L[0]-T[0],T[1]=2*L[1]-T[1],c)return[T,D,A].concat(p);{p=[T,D,A].concat(p);const t=[];for(let e=0;e<p.length;e+=3){const s=w(p[e][0],p[e][1],l),n=w(p[e+1][0],p[e+1][1],l),o=w(p[e+2][0],p[e+2][1],l);t.push([s[0],s[1],n[0],n[1],o[0],o[1]])}return t}}const P={randOffset:function(t,e){return G(t,e)},randOffsetWithRange:function(t,e,s){return E(t,e,s)},ellipse:function(t,e,s,n,o){const a=T(s,n,o);return D(t,e,o,a).opset},doubleLineOps:function(t,e,s,n,o){return $(t,e,s,n,o,!0)}};function v(t,e,s,n,o){return{type:\"path\",ops:$(t,e,s,n,o)}}function S(t,e,s){const n=(t||[]).length;if(n>2){const o=[];for(let e=0;e<n-1;e++)o.push(...$(t[e][0],t[e][1],t[e+1][0],t[e+1][1],s));return e&&o.push(...$(t[n-1][0],t[n-1][1],t[0][0],t[0][1],s)),{type:\"path\",ops:o}}return 2===n?v(t[0][0],t[0][1],t[1][0],t[1][1],s):{type:\"path\",ops:[]}}function O(t,e,s,n,o){return function(t,e){return S(t,!0,e)}([[t,e],[t+s,e],[t+s,e+n],[t,e+n]],o)}function L(t,e){if(t.length){const s=\"number\"==typeof t[0][0]?[t]:t,n=j(s[0],1*(1+.2*e.roughness),e),o=e.disableMultiStroke?[]:j(s[0],1.5*(1+.22*e.roughness),z(e));for(let t=1;t<s.length;t++){const a=s[t];if(a.length){const t=j(a,1*(1+.2*e.roughness),e),s=e.disableMultiStroke?[]:j(a,1.5*(1+.22*e.roughness),z(e));for(const e of t)\"move\"!==e.op&&n.push(e);for(const t of s)\"move\"!==t.op&&o.push(t)}}return{type:\"path\",ops:n.concat(o)}}return{type:\"path\",ops:[]}}function T(t,e,s){const n=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(t/2,2)+Math.pow(e/2,2))/2)),o=Math.ceil(Math.max(s.curveStepCount,s.curveStepCount/Math.sqrt(200)*n)),a=2*Math.PI/o;let h=Math.abs(t/2),r=Math.abs(e/2);const i=1-s.curveFitting;return h+=G(h*i,s),r+=G(r*i,s),{increment:a,rx:h,ry:r}}function D(t,e,s,n){const[o,a]=F(n.increment,t,e,n.rx,n.ry,1,n.increment*E(.1,E(.4,1,s),s),s);let h=q(o,null,s);if(!s.disableMultiStroke&&0!==s.roughness){const[o]=F(n.increment,t,e,n.rx,n.ry,1.5,0,s),a=q(o,null,s);h=h.concat(a)}return{estimatedPoints:a,opset:{type:\"path\",ops:h}}}function A(t,e,s,n,o,a,h,r,i){const c=t,l=e;let u=Math.abs(s/2),p=Math.abs(n/2);u+=G(.01*u,i),p+=G(.01*p,i);let f=o,d=a;for(;f<0;)f+=2*Math.PI,d+=2*Math.PI;d-f>2*Math.PI&&(f=0,d=2*Math.PI);const g=2*Math.PI/i.curveStepCount,M=Math.min(g/2,(d-f)/2),k=V(M,c,l,u,p,f,d,1,i);if(!i.disableMultiStroke){const t=V(M,c,l,u,p,f,d,1.5,i);k.push(...t)}return h&&(r?k.push(...$(c,l,c+u*Math.cos(f),l+p*Math.sin(f),i),...$(c,l,c+u*Math.cos(d),l+p*Math.sin(d),i)):k.push({op:\"lineTo\",data:[c,l]},{op:\"lineTo\",data:[c+u*Math.cos(f),l+p*Math.sin(f)]})),{type:\"path\",ops:k}}function _(t,e){const s=m(y(b(t))),n=[];let o=[0,0],a=[0,0];for(const{key:t,data:h}of s)switch(t){case\"M\":a=[h[0],h[1]],o=[h[0],h[1]];break;case\"L\":n.push(...$(a[0],a[1],h[0],h[1],e)),a=[h[0],h[1]];break;case\"C\":{const[t,s,o,r,i,c]=h;n.push(...Z(t,s,o,r,i,c,a,e)),a=[i,c];break}case\"Z\":n.push(...$(a[0],a[1],o[0],o[1],e)),a=[o[0],o[1]]}return{type:\"path\",ops:n}}function I(t,e){const s=[];for(const n of t)if(n.length){const t=e.maxRandomnessOffset||0,o=n.length;if(o>2){s.push({op:\"move\",data:[n[0][0]+G(t,e),n[0][1]+G(t,e)]});for(let a=1;a<o;a++)s.push({op:\"lineTo\",data:[n[a][0]+G(t,e),n[a][1]+G(t,e)]})}}return{type:\"fillPath\",ops:s}}function C(t,e){return function(t,e){let s=t.fillStyle||\"hachure\";if(!u[s])switch(s){case\"zigzag\":u[s]||(u[s]=new h(e));break;case\"cross-hatch\":u[s]||(u[s]=new r(e));break;case\"dots\":u[s]||(u[s]=new i(e));break;case\"dashed\":u[s]||(u[s]=new c(e));break;case\"zigzag-line\":u[s]||(u[s]=new l(e));break;default:s=\"hachure\",u[s]||(u[s]=new o(e))}return u[s]}(e,P).fillPolygons(t,e)}function z(t){const e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function W(t){return t.randomizer||(t.randomizer=new p(t.seed||0)),t.randomizer.next()}function E(t,e,s,n=1){return s.roughness*n*(W(s)*(e-t)+t)}function G(t,e,s=1){return E(-t,t,e,s)}function $(t,e,s,n,o,a=!1){const h=a?o.disableMultiStrokeFill:o.disableMultiStroke,r=R(t,e,s,n,o,!0,!1);if(h)return r;const i=R(t,e,s,n,o,!0,!0);return r.concat(i)}function R(t,e,s,n,o,a,h){const r=Math.pow(t-s,2)+Math.pow(e-n,2),i=Math.sqrt(r);let c=1;c=i<200?1:i>500?.4:-.0016668*i+1.233334;let l=o.maxRandomnessOffset||0;l*l*100>r&&(l=i/10);const u=l/2,p=.2+.2*W(o);let f=o.bowing*o.maxRandomnessOffset*(n-e)/200,d=o.bowing*o.maxRandomnessOffset*(t-s)/200;f=G(f,o,c),d=G(d,o,c);const g=[],M=()=>G(u,o,c),k=()=>G(l,o,c),b=o.preserveVertices;return a&&(h?g.push({op:\"move\",data:[t+(b?0:M()),e+(b?0:M())]}):g.push({op:\"move\",data:[t+(b?0:G(l,o,c)),e+(b?0:G(l,o,c))]})),h?g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+M(),d+e+(n-e)*p+M(),f+t+2*(s-t)*p+M(),d+e+2*(n-e)*p+M(),s+(b?0:M()),n+(b?0:M())]}):g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+k(),d+e+(n-e)*p+k(),f+t+2*(s-t)*p+k(),d+e+2*(n-e)*p+k(),s+(b?0:k()),n+(b?0:k())]}),g}function j(t,e,s){if(!t.length)return[];const n=[];n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]),n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]);for(let o=1;o<t.length;o++)n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]),o===t.length-1&&n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]);return q(n,null,s)}function q(t,e,s){const n=t.length,o=[];if(n>3){const a=[],h=1-s.curveTightness;o.push({op:\"move\",data:[t[1][0],t[1][1]]});for(let e=1;e+2<n;e++){const s=t[e];a[0]=[s[0],s[1]],a[1]=[s[0]+(h*t[e+1][0]-h*t[e-1][0])/6,s[1]+(h*t[e+1][1]-h*t[e-1][1])/6],a[2]=[t[e+1][0]+(h*t[e][0]-h*t[e+2][0])/6,t[e+1][1]+(h*t[e][1]-h*t[e+2][1])/6],a[3]=[t[e+1][0],t[e+1][1]],o.push({op:\"bcurveTo\",data:[a[1][0],a[1][1],a[2][0],a[2][1],a[3][0],a[3][1]]})}if(e&&2===e.length){const t=s.maxRandomnessOffset;o.push({op:\"lineTo\",data:[e[0]+G(t,s),e[1]+G(t,s)]})}}else 3===n?(o.push({op:\"move\",data:[t[1][0],t[1][1]]}),o.push({op:\"bcurveTo\",data:[t[1][0],t[1][1],t[2][0],t[2][1],t[2][0],t[2][1]]})):2===n&&o.push(...R(t[0][0],t[0][1],t[1][0],t[1][1],s,!0,!0));return o}function F(t,e,s,n,o,a,h,r){const i=[],c=[];if(0===r.roughness){t/=4,c.push([e+n*Math.cos(-t),s+o*Math.sin(-t)]);for(let a=0;a<=2*Math.PI;a+=t){const t=[e+n*Math.cos(a),s+o*Math.sin(a)];i.push(t),c.push(t)}c.push([e+n*Math.cos(0),s+o*Math.sin(0)]),c.push([e+n*Math.cos(t),s+o*Math.sin(t)])}else{const l=G(.5,r)-Math.PI/2;c.push([G(a,r)+e+.9*n*Math.cos(l-t),G(a,r)+s+.9*o*Math.sin(l-t)]);const u=2*Math.PI+l-.01;for(let h=l;h<u;h+=t){const t=[G(a,r)+e+n*Math.cos(h),G(a,r)+s+o*Math.sin(h)];i.push(t),c.push(t)}c.push([G(a,r)+e+n*Math.cos(l+2*Math.PI+.5*h),G(a,r)+s+o*Math.sin(l+2*Math.PI+.5*h)]),c.push([G(a,r)+e+.98*n*Math.cos(l+h),G(a,r)+s+.98*o*Math.sin(l+h)]),c.push([G(a,r)+e+.9*n*Math.cos(l+.5*h),G(a,r)+s+.9*o*Math.sin(l+.5*h)])}return[c,i]}function V(t,e,s,n,o,a,h,r,i){const c=a+G(.1,i),l=[];l.push([G(r,i)+e+.9*n*Math.cos(c-t),G(r,i)+s+.9*o*Math.sin(c-t)]);for(let a=c;a<=h;a+=t)l.push([G(r,i)+e+n*Math.cos(a),G(r,i)+s+o*Math.sin(a)]);return l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),q(l,null,i)}function Z(t,e,s,n,o,a,h,r){const i=[],c=[r.maxRandomnessOffset||1,(r.maxRandomnessOffset||1)+.3];let l=[0,0];const u=r.disableMultiStroke?1:2,p=r.preserveVertices;for(let f=0;f<u;f++)0===f?i.push({op:\"move\",data:[h[0],h[1]]}):i.push({op:\"move\",data:[h[0]+(p?0:G(c[0],r)),h[1]+(p?0:G(c[0],r))]}),l=p?[o,a]:[o+G(c[f],r),a+G(c[f],r)],i.push({op:\"bcurveTo\",data:[t+G(c[f],r),e+G(c[f],r),s+G(c[f],r),n+G(c[f],r),l[0],l[1]]});return i}function Q(t){return[...t]}function H(t,e=0){const s=t.length;if(s<3)throw new Error(\"A curve must have at least three points.\");const n=[];if(3===s)n.push(Q(t[0]),Q(t[1]),Q(t[2]),Q(t[2]));else{const s=[];s.push(t[0],t[0]);for(let e=1;e<t.length;e++)s.push(t[e]),e===t.length-1&&s.push(t[e]);const o=[],a=1-e;n.push(Q(s[0]));for(let t=1;t+2<s.length;t++){const e=s[t];o[0]=[e[0],e[1]],o[1]=[e[0]+(a*s[t+1][0]-a*s[t-1][0])/6,e[1]+(a*s[t+1][1]-a*s[t-1][1])/6],o[2]=[s[t+1][0]+(a*s[t][0]-a*s[t+2][0])/6,s[t+1][1]+(a*s[t][1]-a*s[t+2][1])/6],o[3]=[s[t+1][0],s[t+1][1]],n.push(o[1],o[2],o[3])}}return n}function N(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)}function B(t,e,s){const n=N(e,s);if(0===n)return N(t,e);let o=((t[0]-e[0])*(s[0]-e[0])+(t[1]-e[1])*(s[1]-e[1]))/n;return o=Math.max(0,Math.min(1,o)),N(t,J(e,s,o))}function J(t,e,s){return[t[0]+(e[0]-t[0])*s,t[1]+(e[1]-t[1])*s]}function K(t,e,s,n){const o=n||[];if(function(t,e){const s=t[e+0],n=t[e+1],o=t[e+2],a=t[e+3];let h=3*n[0]-2*s[0]-a[0];h*=h;let r=3*n[1]-2*s[1]-a[1];r*=r;let i=3*o[0]-2*a[0]-s[0];i*=i;let c=3*o[1]-2*a[1]-s[1];return c*=c,h<i&&(h=i),r<c&&(r=c),h+r}(t,e)<s){const s=t[e+0];if(o.length){(a=o[o.length-1],h=s,Math.sqrt(N(a,h)))>1&&o.push(s)}else o.push(s);o.push(t[e+3])}else{const n=.5,a=t[e+0],h=t[e+1],r=t[e+2],i=t[e+3],c=J(a,h,n),l=J(h,r,n),u=J(r,i,n),p=J(c,l,n),f=J(l,u,n),d=J(p,f,n);K([a,c,p,d],0,s,o),K([d,f,u,i],0,s,o)}var a,h;return o}function U(t,e){return X(t,0,t.length,e)}function X(t,e,s,n,o){const a=o||[],h=t[e],r=t[s-1];let i=0,c=1;for(let n=e+1;n<s-1;++n){const e=B(t[n],h,r);e>i&&(i=e,c=n)}return Math.sqrt(i)>n?(X(t,e,c+1,n,a),X(t,c,s,n,a)):(a.length||a.push(h),a.push(r)),a}function Y(t,e=.15,s){const n=[],o=(t.length-1)/3;for(let s=0;s<o;s++){K(t,3*s,e,n)}return s&&s>0?X(n,0,n.length,s):n}const tt=\"none\";class et{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:\"#000\",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:\"hachure\",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,s){return{shape:t,sets:e||[],options:s||this.defaultOptions}}line(t,e,s,n,o){const a=this._o(o);return this._d(\"line\",[v(t,e,s,n,a)],a)}rectangle(t,e,s,n,o){const a=this._o(o),h=[],r=O(t,e,s,n,a);if(a.fill){const o=[[t,e],[t+s,e],[t+s,e+n],[t,e+n]];\"solid\"===a.fillStyle?h.push(I([o],a)):h.push(C([o],a))}return a.stroke!==tt&&h.push(r),this._d(\"rectangle\",h,a)}ellipse(t,e,s,n,o){const a=this._o(o),h=[],r=T(s,n,a),i=D(t,e,a,r);if(a.fill)if(\"solid\"===a.fillStyle){const s=D(t,e,a,r).opset;s.type=\"fillPath\",h.push(s)}else h.push(C([i.estimatedPoints],a));return a.stroke!==tt&&h.push(i.opset),this._d(\"ellipse\",h,a)}circle(t,e,s,n){const o=this.ellipse(t,e,s,s,n);return o.shape=\"circle\",o}linearPath(t,e){const s=this._o(e);return this._d(\"linearPath\",[S(t,!1,s)],s)}arc(t,e,s,n,o,a,h=!1,r){const i=this._o(r),c=[],l=A(t,e,s,n,o,a,h,!0,i);if(h&&i.fill)if(\"solid\"===i.fillStyle){const h=Object.assign({},i);h.disableMultiStroke=!0;const r=A(t,e,s,n,o,a,!0,!1,h);r.type=\"fillPath\",c.push(r)}else c.push(function(t,e,s,n,o,a,h){const r=t,i=e;let c=Math.abs(s/2),l=Math.abs(n/2);c+=G(.01*c,h),l+=G(.01*l,h);let u=o,p=a;for(;u<0;)u+=2*Math.PI,p+=2*Math.PI;p-u>2*Math.PI&&(u=0,p=2*Math.PI);const f=(p-u)/h.curveStepCount,d=[];for(let t=u;t<=p;t+=f)d.push([r+c*Math.cos(t),i+l*Math.sin(t)]);return d.push([r+c*Math.cos(p),i+l*Math.sin(p)]),d.push([r,i]),C([d],h)}(t,e,s,n,o,a,i));return i.stroke!==tt&&c.push(l),this._d(\"arc\",c,i)}curve(t,e){const s=this._o(e),n=[],o=L(t,s);if(s.fill&&s.fill!==tt)if(\"solid\"===s.fillStyle){const e=L(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else{const e=[],o=t;if(o.length){const t=\"number\"==typeof o[0][0]?[o]:o;for(const n of t)n.length<3?e.push(...n):3===n.length?e.push(...Y(H([n[0],n[0],n[1],n[2]]),10,(1+s.roughness)/2)):e.push(...Y(H(n),10,(1+s.roughness)/2))}e.length&&n.push(C([e],s))}return s.stroke!==tt&&n.push(o),this._d(\"curve\",n,s)}polygon(t,e){const s=this._o(e),n=[],o=S(t,!0,s);return s.fill&&(\"solid\"===s.fillStyle?n.push(I([t],s)):n.push(C([t],s))),s.stroke!==tt&&n.push(o),this._d(\"polygon\",n,s)}path(t,e){const s=this._o(e),n=[];if(!t)return this._d(\"path\",n,s);t=(t||\"\").replace(/\\n/g,\" \").replace(/(-\\s)/g,\"-\").replace(\"/(ss)/g\",\" \");const o=s.fill&&\"transparent\"!==s.fill&&s.fill!==tt,a=s.stroke!==tt,h=!!(s.simplification&&s.simplification<1),r=function(t,e,s){const n=m(y(b(t))),o=[];let a=[],h=[0,0],r=[];const i=()=>{r.length>=4&&a.push(...Y(r,e)),r=[]},c=()=>{i(),a.length&&(o.push(a),a=[])};for(const{key:t,data:e}of n)switch(t){case\"M\":c(),h=[e[0],e[1]],a.push(h);break;case\"L\":i(),a.push([e[0],e[1]]);break;case\"C\":if(!r.length){const t=a.length?a[a.length-1]:h;r.push([t[0],t[1]])}r.push([e[0],e[1]]),r.push([e[2],e[3]]),r.push([e[4],e[5]]);break;case\"Z\":i(),a.push([h[0],h[1]])}if(c(),!s)return o;const l=[];for(const t of o){const e=U(t,s);e.length&&l.push(e)}return l}(t,1,h?4-4*(s.simplification||1):(1+s.roughness)/2),i=_(t,s);if(o)if(\"solid\"===s.fillStyle)if(1===r.length){const e=_(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else n.push(I(r,s));else n.push(C(r,s));return a&&(h?r.forEach((t=>{n.push(S(t,!1,s))})):n.push(i)),this._d(\"path\",n,s)}opsToPath(t,e){let s=\"\";for(const n of t.ops){const t=\"number\"==typeof e&&e>=0?n.data.map((t=>+t.toFixed(e))):n.data;switch(n.op){case\"move\":s+=`M${t[0]} ${t[1]} `;break;case\"bcurveTo\":s+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case\"lineTo\":s+=`L${t[0]} ${t[1]} `}}return s.trim()}toPaths(t){const e=t.sets||[],s=t.options||this.defaultOptions,n=[];for(const t of e){let e=null;switch(t.type){case\"path\":e={d:this.opsToPath(t),stroke:s.stroke,strokeWidth:s.strokeWidth,fill:tt};break;case\"fillPath\":e={d:this.opsToPath(t),stroke:tt,strokeWidth:0,fill:s.fill||tt};break;case\"fillSketch\":e=this.fillSketch(t,s)}e&&n.push(e)}return n}fillSketch(t,e){let s=e.fillWeight;return s<0&&(s=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||tt,strokeWidth:s,fill:tt}}_mergedShape(t){return t.filter(((t,e)=>0===e||\"move\"!==t.op))}}class st{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext(\"2d\"),this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.ctx,o=t.options.fixedDecimalPlaceDigits;for(const a of e)switch(a.type){case\"path\":n.save(),n.strokeStyle=\"none\"===s.stroke?\"transparent\":s.stroke,n.lineWidth=s.strokeWidth,s.strokeLineDash&&n.setLineDash(s.strokeLineDash),s.strokeLineDashOffset&&(n.lineDashOffset=s.strokeLineDashOffset),this._drawToContext(n,a,o),n.restore();break;case\"fillPath\":{n.save(),n.fillStyle=s.fill||\"\";const e=\"curve\"===t.shape||\"polygon\"===t.shape||\"path\"===t.shape?\"evenodd\":\"nonzero\";this._drawToContext(n,a,o,e),n.restore();break}case\"fillSketch\":this.fillSketch(n,a,s)}}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2),t.save(),s.fillLineDash&&t.setLineDash(s.fillLineDash),s.fillLineDashOffset&&(t.lineDashOffset=s.fillLineDashOffset),t.strokeStyle=s.fill||\"\",t.lineWidth=n,this._drawToContext(t,e,s.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,s,n=\"nonzero\"){t.beginPath();for(const n of e.ops){const e=\"number\"==typeof s&&s>=0?n.data.map((t=>+t.toFixed(s))):n.data;switch(n.op){case\"move\":t.moveTo(e[0],e[1]);break;case\"bcurveTo\":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case\"lineTo\":t.lineTo(e[0],e[1])}}\"fillPath\"===e.type?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a),a}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a),a}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a),a}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o),o}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s),s}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s),s}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i),i}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s),s}path(t,e){const s=this.gen.path(t,e);return this.draw(s),s}}const nt=\"http://www.w3.org/2000/svg\";class ot{constructor(t,e){this.svg=t,this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,o=n.createElementNS(nt,\"g\"),a=t.options.fixedDecimalPlaceDigits;for(const h of e){let e=null;switch(h.type){case\"path\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",s.stroke),e.setAttribute(\"stroke-width\",s.strokeWidth+\"\"),e.setAttribute(\"fill\",\"none\"),s.strokeLineDash&&e.setAttribute(\"stroke-dasharray\",s.strokeLineDash.join(\" \").trim()),s.strokeLineDashOffset&&e.setAttribute(\"stroke-dashoffset\",`${s.strokeLineDashOffset}`);break;case\"fillPath\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",\"none\"),e.setAttribute(\"stroke-width\",\"0\"),e.setAttribute(\"fill\",s.fill||\"\"),\"curve\"!==t.shape&&\"polygon\"!==t.shape||e.setAttribute(\"fill-rule\",\"evenodd\");break;case\"fillSketch\":e=this.fillSketch(n,h,s)}e&&o.appendChild(e)}return o}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2);const o=t.createElementNS(nt,\"path\");return o.setAttribute(\"d\",this.opsToPath(e,s.fixedDecimalPlaceDigits)),o.setAttribute(\"stroke\",s.fill||\"\"),o.setAttribute(\"stroke-width\",n+\"\"),o.setAttribute(\"fill\",\"none\"),s.fillLineDash&&o.setAttribute(\"stroke-dasharray\",s.fillLineDash.join(\" \").trim()),s.fillLineDashOffset&&o.setAttribute(\"stroke-dashoffset\",`${s.fillLineDashOffset}`),o}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a)}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a)}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a)}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o)}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s)}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s)}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i)}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s)}path(t,e){const s=this.gen.path(t,e);return this.draw(s)}}var at={canvas:(t,e)=>new st(t,e),svg:(t,e)=>new ot(t,e),generator:t=>new et(t),newSeed:()=>et.newSeed()};export{at as default};\n"],"names":["t","n","o","a","h","r","e","s","i","c","l","u","p","f","d","g","M","k","b","y","m","x","w","P","v","S","O","L","T","D","A","G","E","$","j","z","F","q","V","_","Z","I","C","W","R","Q","H","N","B","J","K","U","X","Y","tt","et","st","nt","ot","at"],"mappings":"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","x_google_ignoreList":[0]}
package/dist/index5.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const v=require("./index6.cjs"),P=require("./index18.cjs"),C=require("./index17.cjs"),T=require("./index16.cjs"),m=require("./index15.cjs"),M=require("./index14.cjs"),R={pen:{jitter:{amplitude:1,frequency:.08},pressure:{taperIn:.15,taperOut:.2},wobble:{amplitude:1.5,frequency:.05}},highlight:{color:"rgba(255, 255, 0, 0.3)",width:24,lineCap:"butt",jitter:{amplitude:0}},text:{color:"rgba(220, 20, 60, 1.0)",width:2,fontSize:16,lineCap:"round",jitter:{amplitude:0},pressure:{taperIn:0,taperOut:0}},underline:{color:"rgba(0, 0, 255, 0.8)",width:2,lineCap:"round"},arrow:{color:"rgba(255, 0, 0, 0.8)",width:2,lineCap:"round"},circle:{color:"rgba(255, 165, 0, 0.8)",width:3,lineCap:"round"}};class S{constructor(t,r={}){if(!t||!(t instanceof HTMLCanvasElement))throw new Error("StrokeRenderer: canvas must be a valid HTMLCanvasElement");this.canvas=t,this.ctx=t.getContext("2d"),this.config=v.deepMerge(R,r),this.strokes=[],this.viewport={width:0,height:0},this.converters={highlight:M.highlightToStrokes,text:m.textToStrokes,underline:T.underlineToStrokes,arrow:C.arrowToStrokes,circle:P.circleToStrokes}}registerConverter(t,r){if(typeof r!="function")throw new Error("StrokeRenderer.registerConverter: converter must be a function");this.converters[t]=r}setViewport(t,r){this.viewport={width:t,height:r};const i=window.devicePixelRatio||1;this.canvas.width=t*i,this.canvas.height=r*i,this.canvas.style.width=`${t}px`,this.canvas.style.height=`${r}px`,this.ctx.setTransform(i,0,0,i,0,0)}setAnnotations(t,r=null){if(!Array.isArray(t)){console.warn("StrokeRenderer.setAnnotations: annotations must be an array"),this.strokes=[];return}const i=r!==null?t.filter(e=>e.page===r):t;this.strokes=i.flatMap(e=>{const n=this.converters[e.type];if(!n)return console.warn(`StrokeRenderer: Unknown annotation type "${e.type}"`),[];const o=this._resolveStyle(e);return n(e,o)})}setStrokes(t){if(!Array.isArray(t)){console.warn("StrokeRenderer.setStrokes: strokes must be an array"),this.strokes=[];return}this.strokes=t}render(t){const{ctx:r,viewport:i,strokes:e}=this;r.clearRect(0,0,i.width,i.height);for(const n of e){if(t<n.start)continue;const o=n.end-n.start,h=t-n.start,s=o>0?Math.min(1,h/o):1;this._drawStroke(n,s)}}clear(){this.ctx.clearRect(0,0,this.viewport.width,this.viewport.height)}destroy(){this.strokes=[],this.ctx=null,this.canvas=null,this.config=null,this.converters=null}_resolveStyle(t){const{type:r,style:i}=t;let e={...this.config.pen};return this.config[r]&&(e=v.deepMerge(e,this.config[r])),i&&(e=v.deepMerge(e,i)),e}_interpolatePoint(t,r,i){return[t[0]+(r[0]-t[0])*i,t[1]+(r[1]-t[1])*i]}_interpolatePressures(t,r,i){const e=t.slice(0,r+1);if(r<t.length-1&&i>0){const n=t[r],o=t[r+1];e.push(n+(o-n)*i)}return e}_drawStroke(t,r){const{ctx:i}=this,{points:e,color:n,width:o,lineCap:h,pressures:s,uniformScale:u,baseX:l,baseY:c}=t;if(!e||e.length<2)return;if(i.strokeStyle=n||"rgba(0, 0, 0, 0.5)",i.lineCap=h||"round",i.lineJoin="round",r>=1){s&&s.length>=e.length?this._drawVariableWidthStroke(e,o,s,u,l,c):this._drawConstantWidthStroke(e,o,u,l,c);return}const a=e.length-1,d=r*a,g=Math.floor(d),w=d-g,p=e.slice(0,g+1);if(g<a&&w>0){const f=e[g],k=e[g+1];p.push(this._interpolatePoint(f,k,w))}if(!(p.length<2))if(s&&s.length>=e.length){const f=this._interpolatePressures(s,g,w);this._drawVariableWidthStroke(p,o,f,u,l,c)}else this._drawConstantWidthStroke(p,o,u,l,c)}_drawConstantWidthStroke(t,r,i=!1,e=null,n=null){const{ctx:o,viewport:h}=this;o.lineWidth=r||2,o.beginPath();const s=i&&e!==null&&n!==null;for(let u=0;u<t.length;u++){const[l,c]=t[u];let a,d;s?(a=e*h.width+l*h.height,d=n*h.height+c*h.height):i?(a=l*h.height,d=c*h.height):(a=l*h.width,d=c*h.height),u===0?o.moveTo(a,d):o.lineTo(a,d)}o.stroke()}_drawVariableWidthStroke(t,r,i,e=!1,n=null,o=null){const{ctx:h,viewport:s}=this,u=e&&n!==null&&o!==null;for(let l=1;l<t.length;l++){const[c,a]=t[l-1],[d,g]=t[l];let w,p,f,k;u?(w=n*s.width+c*s.height,p=o*s.height+a*s.height,f=n*s.width+d*s.height,k=o*s.height+g*s.height):e?(w=c*s.height,p=a*s.height,f=d*s.height,k=g*s.height):(w=c*s.width,p=a*s.height,f=d*s.width,k=g*s.height);const y=i[l-1]||1,x=i[l]||1,b=(y+x)/2,_=Math.max(.5,r*b);h.lineWidth=_,h.beginPath(),h.moveTo(w,p),h.lineTo(f,k),h.stroke()}}}exports.StrokeRenderer=S;exports.default=S;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const m=require("./index18.cjs"),P=require("./index17.cjs"),R=require("./index16.cjs"),M=require("./index15.cjs"),O=require("./index14.cjs"),E=require("./index13.cjs"),v=["highlight","text","underline","arrow","circle","ink"],S=500,A={highlight:{color:"rgba(255, 255, 0, 0.3)",width:24,lineCap:"square",roughness:1.2,bowing:1.2,curveFitting:.95,curveStepCount:9,maxRandomnessOffset:2,disableMultiStroke:!1},text:{color:"rgba(220, 20, 60, 1.0)",width:2,fontSize:16,lineCap:"round",roughness:.8},underline:{color:"rgba(0, 0, 255, 0.8)",width:2,lineCap:"round",roughness:2,bowing:2.4,curveFitting:.85,curveStepCount:9,maxRandomnessOffset:3,disableMultiStroke:!1},arrow:{color:"rgba(255, 0, 0, 0.8)",width:2,lineCap:"round",roughness:1.8,bowing:1.8,curveFitting:.9,curveStepCount:9,maxRandomnessOffset:2,disableMultiStroke:!1},circle:{color:"rgba(255, 165, 0, 0.8)",width:3,lineCap:"round",roughness:1.7,bowing:2,curveFitting:.8,curveStepCount:12,maxRandomnessOffset:3,disableMultiStroke:!1},ink:{color:"#DC143C",width:2,lineCap:"round"}};class y{constructor(t,r={}){if(!t||!(t instanceof HTMLCanvasElement))throw new Error("StrokeRenderer: canvas must be a valid HTMLCanvasElement");this.canvas=t,this.ctx=t.getContext("2d"),this.strokes=[],this.viewport={width:0,height:0},this.config={};for(const i of v)this.config[i]={...A[i]};Object.keys(r).length>0&&this.setConfig(r),this.converters={highlight:E.highlightToStrokes,text:O.textToStrokes,underline:M.underlineToStrokes,arrow:R.arrowToStrokes,circle:P.circleToStrokes,ink:m.inkToStrokes}}setConfig(t){const r={},i={};for(const[e,o]of Object.entries(t))v.includes(e)?i[e]=o:r[e]=o;for(const e of v)this.config[e]={...this.config[e],...r,...i[e]||{}};return this}registerConverter(t,r){if(typeof r!="function")throw new Error("StrokeRenderer.registerConverter: converter must be a function");this.converters[t]=r}setViewport(t,r){this.viewport={width:t,height:r};const i=window.devicePixelRatio||1;this.canvas.width=t*i,this.canvas.height=r*i,this.canvas.style.width=`${t}px`,this.canvas.style.height=`${r}px`,this.ctx.setTransform(i,0,0,i,0,0)}setAnnotations(t,r=null){if(!Array.isArray(t)){console.warn("StrokeRenderer.setAnnotations: annotations must be an array"),this.strokes=[];return}const i=r!==null?t.filter(e=>e.page===r):t;this.strokes=i.flatMap(e=>{const o=this.converters[e.type];if(!o)return console.warn(`StrokeRenderer: Unknown annotation type "${e.type}"`),[];const n=this._resolveStyle(e);return o(e,n)})}setStrokes(t){if(!Array.isArray(t)){console.warn("StrokeRenderer.setStrokes: strokes must be an array"),this.strokes=[];return}this.strokes=t}render(t){const{ctx:r,viewport:i,strokes:e}=this;r.clearRect(0,0,i.width,i.height);for(const o of e){if(t<o.start)continue;const n=o.end-o.start,h=t-o.start,s=n>0?Math.min(1,h/n):1;this._drawStroke(o,s)}}clear(){this.ctx.clearRect(0,0,this.viewport.width,this.viewport.height)}destroy(){this.strokes=[],this.ctx=null,this.canvas=null,this.config=null,this.converters=null}_resolveStyle(t){const{type:r}=t;return this.config[r]||{}}_interpolatePoint(t,r,i){return[t[0]+(r[0]-t[0])*i,t[1]+(r[1]-t[1])*i]}_interpolatePressures(t,r,i){const e=t.slice(0,r+1);if(r<t.length-1&&i>0){const o=t[r],n=t[r+1];e.push(o+(n-o)*i)}return e}_drawStroke(t,r){const{ctx:i}=this,{points:e,color:o,width:n,lineCap:h,pressures:s,uniformScale:f,baseX:l,baseY:a}=t;if(!e||e.length<2)return;if(i.strokeStyle=o||"rgba(0, 0, 0, 0.5)",i.lineCap=h||"round",i.lineJoin="round",r>=1){s&&s.length>=e.length?this._drawVariableWidthStroke(e,n,s,f,l,a):this._drawConstantWidthStroke(e,n,f,l,a);return}const g=e.length-1,u=r*g,c=Math.floor(u),w=u-c,d=e.slice(0,c+1);if(c<g&&w>0){const k=e[c],p=e[c+1];d.push(this._interpolatePoint(k,p,w))}if(!(d.length<2))if(s&&s.length>=e.length){const k=this._interpolatePressures(s,c,w);this._drawVariableWidthStroke(d,n,k,f,l,a)}else this._drawConstantWidthStroke(d,n,f,l,a)}_drawConstantWidthStroke(t,r,i=!1,e=null,o=null){const{ctx:n,viewport:h}=this,s=h.height/S;n.lineWidth=(r||2)*s,n.beginPath();const f=i&&e!==null&&o!==null;for(let l=0;l<t.length;l++){const[a,g]=t[l];let u,c;f?(u=e*h.width+a*h.height,c=o*h.height+g*h.height):i?(u=a*h.height,c=g*h.height):(u=a*h.width,c=g*h.height),l===0?n.moveTo(u,c):n.lineTo(u,c)}n.stroke()}_drawVariableWidthStroke(t,r,i,e=!1,o=null,n=null){const{ctx:h,viewport:s}=this,f=e&&o!==null&&n!==null;for(let l=1;l<t.length;l++){const[a,g]=t[l-1],[u,c]=t[l];let w,d,k,p;f?(w=o*s.width+a*s.height,d=n*s.height+g*s.height,k=o*s.width+u*s.height,p=n*s.height+c*s.height):e?(w=a*s.height,d=g*s.height,k=u*s.height,p=c*s.height):(w=a*s.width,d=g*s.height,k=u*s.width,p=c*s.height);const b=i[l-1]||1,x=i[l]||1,C=(b+x)/2,T=s.height/S,_=Math.max(.5,r*C)*T;h.lineWidth=_,h.beginPath(),h.moveTo(w,d),h.lineTo(k,p),h.stroke()}}}exports.StrokeRenderer=y;exports.default=y;
2
2
  //# sourceMappingURL=index5.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index5.cjs","sources":["../src/renderer/StrokeRenderer.js"],"sourcesContent":["/**\n * StrokeRenderer - Unified canvas-based annotation renderer\n *\n * Single entry point for rendering annotations as strokes on canvas.\n * Handles conversion from annotations to strokes and progressive rendering.\n *\n * @module renderer/StrokeRenderer\n */\n\nimport {\n highlightToStrokes,\n textToStrokes,\n underlineToStrokes,\n arrowToStrokes,\n circleToStrokes\n} from '../converters/index.js';\nimport { deepMerge } from '../pen/effects.js';\n\n/**\n * Default configuration\n */\nconst DEFAULT_CONFIG = {\n pen: {\n jitter: { amplitude: 1.0, frequency: 0.08 },\n pressure: { taperIn: 0.15, taperOut: 0.20 },\n wobble: { amplitude: 1.5, frequency: 0.05 }\n },\n highlight: {\n color: 'rgba(255, 255, 0, 0.3)',\n width: 24,\n lineCap: 'butt',\n jitter: { amplitude: 0 }\n },\n text: {\n color: 'rgba(220, 20, 60, 1.0)',\n width: 2,\n fontSize: 16,\n lineCap: 'round',\n jitter: { amplitude: 0 },\n pressure: { taperIn: 0, taperOut: 0 }\n },\n underline: {\n color: 'rgba(0, 0, 255, 0.8)',\n width: 2,\n lineCap: 'round'\n },\n arrow: {\n color: 'rgba(255, 0, 0, 0.8)',\n width: 2,\n lineCap: 'round'\n },\n circle: {\n color: 'rgba(255, 165, 0, 0.8)',\n width: 3,\n lineCap: 'round'\n }\n};\n\n/**\n * StrokeRenderer class\n *\n * Converts annotations to strokes and renders them progressively on canvas.\n *\n * @class\n * @example\n * const renderer = new StrokeRenderer(canvas, {\n * highlight: { color: 'rgba(0, 255, 200, 0.4)' }\n * });\n * renderer.setViewport(800, 600);\n * renderer.setAnnotations(annotations);\n * renderer.render(1.5); // Render at t=1.5 seconds\n */\nclass StrokeRenderer {\n /**\n * Create StrokeRenderer instance\n *\n * @param {HTMLCanvasElement} canvas - Canvas element for rendering\n * @param {Object} [config={}] - Configuration overrides\n * @param {Object} [config.pen] - Global pen settings\n * @param {Object} [config.highlight] - Highlight type settings\n * @param {Object} [config.text] - Text type settings\n */\n constructor(canvas, config = {}) {\n if (!canvas || !(canvas instanceof HTMLCanvasElement)) {\n throw new Error('StrokeRenderer: canvas must be a valid HTMLCanvasElement');\n }\n\n this.canvas = canvas;\n this.ctx = canvas.getContext('2d');\n this.config = deepMerge(DEFAULT_CONFIG, config);\n this.strokes = [];\n this.viewport = { width: 0, height: 0 };\n\n // Register built-in converters\n this.converters = {\n highlight: highlightToStrokes,\n text: textToStrokes,\n underline: underlineToStrokes,\n arrow: arrowToStrokes,\n circle: circleToStrokes\n };\n }\n\n /**\n * Register a custom converter for a new annotation type\n *\n * @param {string} type - Annotation type name\n * @param {Function} converter - Converter function (annotation, style) => strokes[]\n */\n registerConverter(type, converter) {\n if (typeof converter !== 'function') {\n throw new Error('StrokeRenderer.registerConverter: converter must be a function');\n }\n this.converters[type] = converter;\n }\n\n /**\n * Set viewport dimensions and configure canvas\n *\n * Handles high-DPI displays by scaling the canvas buffer.\n *\n * @param {number} width - Viewport width in CSS pixels\n * @param {number} height - Viewport height in CSS pixels\n */\n setViewport(width, height) {\n this.viewport = { width, height };\n\n const dpr = window.devicePixelRatio || 1;\n\n // Set canvas buffer size (high-res)\n this.canvas.width = width * dpr;\n this.canvas.height = height * dpr;\n\n // Set canvas display size (CSS)\n this.canvas.style.width = `${width}px`;\n this.canvas.style.height = `${height}px`;\n\n // Scale context for high-DPI\n this.ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n\n /**\n * Set annotations and convert them to strokes\n *\n * Clears existing strokes and converts all annotations.\n *\n * @param {Array} annotations - Array of annotation objects\n * @param {number} [page] - Optional page filter (only convert annotations for this page)\n */\n setAnnotations(annotations, page = null) {\n if (!Array.isArray(annotations)) {\n console.warn('StrokeRenderer.setAnnotations: annotations must be an array');\n this.strokes = [];\n return;\n }\n\n // Filter by page if specified\n const filtered = page !== null\n ? annotations.filter(a => a.page === page)\n : annotations;\n\n // Convert each annotation to strokes\n this.strokes = filtered.flatMap(annotation => {\n const converter = this.converters[annotation.type];\n\n if (!converter) {\n console.warn(`StrokeRenderer: Unknown annotation type \"${annotation.type}\"`);\n return [];\n }\n\n // Resolve style: pen → type → annotation.style\n const style = this._resolveStyle(annotation);\n\n return converter(annotation, style);\n });\n }\n\n /**\n * Set pre-converted strokes directly\n *\n * Bypasses conversion, useful when strokes come from external source.\n *\n * @param {Array} strokes - Array of stroke command objects\n */\n setStrokes(strokes) {\n if (!Array.isArray(strokes)) {\n console.warn('StrokeRenderer.setStrokes: strokes must be an array');\n this.strokes = [];\n return;\n }\n this.strokes = strokes;\n }\n\n /**\n * Render strokes at the given time\n *\n * Clears canvas and draws all visible strokes with appropriate progress.\n *\n * @param {number} time - Current time in seconds\n */\n render(time) {\n const { ctx, viewport, strokes } = this;\n\n // Clear canvas\n ctx.clearRect(0, 0, viewport.width, viewport.height);\n\n // Draw each stroke\n for (const stroke of strokes) {\n // Skip if not started yet\n if (time < stroke.start) {\n continue;\n }\n\n // Calculate progress\n const duration = stroke.end - stroke.start;\n const elapsed = time - stroke.start;\n const progress = duration > 0 ? Math.min(1, elapsed / duration) : 1;\n\n this._drawStroke(stroke, progress);\n }\n }\n\n /**\n * Clear the canvas\n */\n clear() {\n this.ctx.clearRect(0, 0, this.viewport.width, this.viewport.height);\n }\n\n /**\n * Destroy the renderer and release resources\n */\n destroy() {\n this.strokes = [];\n this.ctx = null;\n this.canvas = null;\n this.config = null;\n this.converters = null;\n }\n\n /**\n * Resolve style for an annotation\n *\n * Merges: pen config → type config → annotation.style\n *\n * @private\n * @param {Object} annotation - Annotation object\n * @returns {Object} Resolved style object\n */\n _resolveStyle(annotation) {\n const { type, style: annotationStyle } = annotation;\n\n // Start with pen config (global)\n let resolved = { ...this.config.pen };\n\n // Merge type config\n if (this.config[type]) {\n resolved = deepMerge(resolved, this.config[type]);\n }\n\n // Merge annotation-level style\n if (annotationStyle) {\n resolved = deepMerge(resolved, annotationStyle);\n }\n\n return resolved;\n }\n\n /**\n * Linearly interpolate between two points\n *\n * @private\n * @param {Array} p1 - Start point [x, y]\n * @param {Array} p2 - End point [x, y]\n * @param {number} t - Interpolation factor (0-1)\n * @returns {Array} Interpolated point [x, y]\n */\n _interpolatePoint(p1, p2, t) {\n return [\n p1[0] + (p2[0] - p1[0]) * t,\n p1[1] + (p2[1] - p1[1]) * t\n ];\n }\n\n /**\n * Get pressure values for visible points including interpolated final\n *\n * @private\n * @param {Array} pressures - Full pressure array\n * @param {number} lastCompleteIndex - Index of last complete point\n * @param {number} segmentProgress - Progress within current segment (0-1)\n * @returns {Array} Pressure values for visible points\n */\n _interpolatePressures(pressures, lastCompleteIndex, segmentProgress) {\n const visiblePressures = pressures.slice(0, lastCompleteIndex + 1);\n\n if (lastCompleteIndex < pressures.length - 1 && segmentProgress > 0) {\n const p1 = pressures[lastCompleteIndex];\n const p2 = pressures[lastCompleteIndex + 1];\n visiblePressures.push(p1 + (p2 - p1) * segmentProgress);\n }\n\n return visiblePressures;\n }\n\n /**\n * Draw a single stroke with progress\n *\n * Uses endpoint interpolation for smooth progressive rendering.\n *\n * @private\n * @param {Object} stroke - Stroke command object\n * @param {number} progress - Progress from 0 to 1\n */\n _drawStroke(stroke, progress) {\n const { ctx } = this;\n const { points, color, width, lineCap, pressures, uniformScale, baseX, baseY } = stroke;\n\n if (!points || points.length < 2) return;\n\n // Configure stroke style\n ctx.strokeStyle = color || 'rgba(0, 0, 0, 0.5)';\n ctx.lineCap = lineCap || 'round';\n ctx.lineJoin = 'round';\n\n // Fast path: full stroke, no interpolation needed\n if (progress >= 1) {\n if (pressures && pressures.length >= points.length) {\n this._drawVariableWidthStroke(points, width, pressures, uniformScale, baseX, baseY);\n } else {\n this._drawConstantWidthStroke(points, width, uniformScale, baseX, baseY);\n }\n return;\n }\n\n // Calculate segment position for interpolation\n const totalSegments = points.length - 1;\n const progressAlongPath = progress * totalSegments;\n const lastCompleteIndex = Math.floor(progressAlongPath);\n const segmentProgress = progressAlongPath - lastCompleteIndex;\n\n // Build visible points array with complete points\n const visiblePoints = points.slice(0, lastCompleteIndex + 1);\n\n // Interpolate final point if mid-segment\n if (lastCompleteIndex < totalSegments && segmentProgress > 0) {\n const p1 = points[lastCompleteIndex];\n const p2 = points[lastCompleteIndex + 1];\n visiblePoints.push(this._interpolatePoint(p1, p2, segmentProgress));\n }\n\n // Need at least 2 points to draw a line\n if (visiblePoints.length < 2) return;\n\n // Draw with variable width if pressures provided\n if (pressures && pressures.length >= points.length) {\n const visiblePressures = this._interpolatePressures(\n pressures, lastCompleteIndex, segmentProgress\n );\n this._drawVariableWidthStroke(visiblePoints, width, visiblePressures, uniformScale, baseX, baseY);\n } else {\n this._drawConstantWidthStroke(visiblePoints, width, uniformScale, baseX, baseY);\n }\n }\n\n /**\n * Draw stroke with constant width\n *\n * @private\n * @param {Array} points - Array of [x, y] coordinates (normalized or offset)\n * @param {number} width - Stroke width in pixels\n * @param {boolean} [uniformScale=false] - Use uniform scaling to preserve aspect ratio\n * @param {number} [baseX] - Base X position in width-normalized coords (for uniformScale with offset points)\n * @param {number} [baseY] - Base Y position in height-normalized coords (for uniformScale with offset points)\n */\n _drawConstantWidthStroke(points, width, uniformScale = false, baseX = null, baseY = null) {\n const { ctx, viewport } = this;\n\n ctx.lineWidth = width || 2;\n ctx.beginPath();\n\n // When uniformScale is true and baseX/baseY provided, points are offsets from base position\n // Base position is in mixed coords (X: width-normalized, Y: height-normalized)\n // Offsets are in uniform space (both scaled by viewport.height)\n const hasBasePosition = uniformScale && baseX !== null && baseY !== null;\n\n for (let i = 0; i < points.length; i++) {\n const [coordX, coordY] = points[i];\n let px, py;\n\n if (hasBasePosition) {\n // Base position in pixels + uniform-scaled offset\n px = baseX * viewport.width + coordX * viewport.height;\n py = baseY * viewport.height + coordY * viewport.height;\n } else if (uniformScale) {\n // Legacy: full coordinates in uniform space\n px = coordX * viewport.height;\n py = coordY * viewport.height;\n } else {\n // Standard: X scaled by width, Y by height\n px = coordX * viewport.width;\n py = coordY * viewport.height;\n }\n\n if (i === 0) {\n ctx.moveTo(px, py);\n } else {\n ctx.lineTo(px, py);\n }\n }\n\n ctx.stroke();\n }\n\n /**\n * Draw stroke with variable width based on pressure\n *\n * @private\n * @param {Array} points - Array of [x, y] coordinates (normalized or offset)\n * @param {number} baseWidth - Base stroke width in pixels\n * @param {Array} pressures - Pressure values (0-1) per point\n * @param {boolean} [uniformScale=false] - Use uniform scaling to preserve aspect ratio\n * @param {number} [baseX] - Base X position in width-normalized coords (for uniformScale with offset points)\n * @param {number} [baseY] - Base Y position in height-normalized coords (for uniformScale with offset points)\n */\n _drawVariableWidthStroke(points, baseWidth, pressures, uniformScale = false, baseX = null, baseY = null) {\n const { ctx, viewport } = this;\n\n // When uniformScale is true and baseX/baseY provided, points are offsets from base position\n const hasBasePosition = uniformScale && baseX !== null && baseY !== null;\n\n for (let i = 1; i < points.length; i++) {\n const [c1x, c1y] = points[i - 1];\n const [c2x, c2y] = points[i];\n\n let px1, py1, px2, py2;\n\n if (hasBasePosition) {\n // Base position in pixels + uniform-scaled offset\n px1 = baseX * viewport.width + c1x * viewport.height;\n py1 = baseY * viewport.height + c1y * viewport.height;\n px2 = baseX * viewport.width + c2x * viewport.height;\n py2 = baseY * viewport.height + c2y * viewport.height;\n } else if (uniformScale) {\n // Legacy: full coordinates in uniform space\n px1 = c1x * viewport.height;\n py1 = c1y * viewport.height;\n px2 = c2x * viewport.height;\n py2 = c2y * viewport.height;\n } else {\n // Standard: X scaled by width, Y by height\n px1 = c1x * viewport.width;\n py1 = c1y * viewport.height;\n px2 = c2x * viewport.width;\n py2 = c2y * viewport.height;\n }\n\n // Average pressure between two points\n const p1 = pressures[i - 1] || 1;\n const p2 = pressures[i] || 1;\n const avgPressure = (p1 + p2) / 2;\n\n // Apply pressure to width (min 0.5)\n const width = Math.max(0.5, baseWidth * avgPressure);\n\n ctx.lineWidth = width;\n ctx.beginPath();\n ctx.moveTo(px1, py1);\n ctx.lineTo(px2, py2);\n ctx.stroke();\n }\n }\n}\n\nexport { StrokeRenderer };\nexport default StrokeRenderer;\n"],"names":["DEFAULT_CONFIG","StrokeRenderer","canvas","config","deepMerge","highlightToStrokes","textToStrokes","underlineToStrokes","arrowToStrokes","circleToStrokes","type","converter","width","height","dpr","annotations","page","filtered","a","annotation","style","strokes","time","ctx","viewport","stroke","duration","elapsed","progress","annotationStyle","resolved","p1","p2","t","pressures","lastCompleteIndex","segmentProgress","visiblePressures","points","color","lineCap","uniformScale","baseX","baseY","totalSegments","progressAlongPath","visiblePoints","hasBasePosition","i","coordX","coordY","px","py","baseWidth","c1x","c1y","c2x","c2y","px1","py1","px2","py2","avgPressure"],"mappings":"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"}
1
+ {"version":3,"file":"index5.cjs","sources":["../src/renderer/StrokeRenderer.js"],"sourcesContent":["/**\n * StrokeRenderer - Unified canvas-based annotation renderer\n *\n * Single entry point for rendering annotations as strokes on canvas.\n * Handles conversion from annotations to strokes and progressive rendering.\n *\n * @module renderer/StrokeRenderer\n */\n\nimport {\n highlightToStrokes,\n textToStrokes,\n underlineToStrokes,\n arrowToStrokes,\n circleToStrokes,\n inkToStrokes,\n} from \"../converters/index.js\";\n\n/**\n * Supported annotation types\n */\nconst ANNOTATION_TYPES = [\"highlight\", \"text\", \"underline\", \"arrow\", \"circle\", \"ink\"];\n\n/**\n * Reference viewport height for width scaling\n * Stroke widths are defined relative to this height (500px = roughjs-tester default)\n */\nconst REFERENCE_HEIGHT = 500;\n\n/**\n * Default configuration\n *\n * Each annotation type has:\n * - Rendering options: color, width, lineCap\n * - RoughJS options: roughness, bowing, curveFitting, curveStepCount, maxRandomnessOffset, disableMultiStroke\n */\nconst DEFAULT_CONFIG = {\n highlight: {\n color: \"rgba(255, 255, 0, 0.3)\",\n width: 24,\n lineCap: \"square\",\n roughness: 1.2,\n bowing: 1.2,\n curveFitting: 0.95,\n curveStepCount: 9,\n maxRandomnessOffset: 2,\n disableMultiStroke: false,\n },\n text: {\n color: \"rgba(220, 20, 60, 1.0)\",\n width: 2,\n fontSize: 16,\n lineCap: \"round\",\n roughness: 0.8,\n },\n underline: {\n color: \"rgba(0, 0, 255, 0.8)\",\n width: 2,\n lineCap: \"round\",\n roughness: 2.0,\n bowing: 2.4,\n curveFitting: 0.85,\n curveStepCount: 9,\n maxRandomnessOffset: 3,\n disableMultiStroke: false,\n },\n arrow: {\n color: \"rgba(255, 0, 0, 0.8)\",\n width: 2,\n lineCap: \"round\",\n roughness: 1.8,\n bowing: 1.8,\n curveFitting: 0.9,\n curveStepCount: 9,\n maxRandomnessOffset: 2,\n disableMultiStroke: false,\n },\n circle: {\n color: \"rgba(255, 165, 0, 0.8)\",\n width: 3,\n lineCap: \"round\",\n roughness: 1.7,\n bowing: 2.0,\n curveFitting: 0.8,\n curveStepCount: 12,\n maxRandomnessOffset: 3,\n disableMultiStroke: false,\n },\n ink: {\n color: \"#DC143C\",\n width: 2,\n lineCap: \"round\",\n },\n};\n\n/**\n * StrokeRenderer class\n *\n * Converts annotations to strokes and renders them progressively on canvas.\n *\n * @class\n * @example\n * const renderer = new StrokeRenderer(canvas, {\n * highlight: { color: 'rgba(0, 255, 200, 0.4)' }\n * });\n * renderer.setViewport(800, 600);\n * renderer.setAnnotations(annotations);\n * renderer.render(1.5); // Render at t=1.5 seconds\n */\nclass StrokeRenderer {\n /**\n * Create StrokeRenderer instance\n *\n * @param {HTMLCanvasElement} canvas - Canvas element for rendering\n * @param {Object} [config={}] - Configuration overrides per annotation type\n * @param {Object} [config.highlight] - Highlight type settings\n * @param {Object} [config.text] - Text type settings\n * @param {Object} [config.underline] - Underline type settings\n * @param {Object} [config.arrow] - Arrow type settings\n * @param {Object} [config.circle] - Circle type settings\n */\n constructor(canvas, config = {}) {\n if (!canvas || !(canvas instanceof HTMLCanvasElement)) {\n throw new Error(\n \"StrokeRenderer: canvas must be a valid HTMLCanvasElement\"\n );\n }\n\n this.canvas = canvas;\n this.ctx = canvas.getContext(\"2d\");\n this.strokes = [];\n this.viewport = { width: 0, height: 0 };\n\n // Initialize config with defaults\n this.config = {};\n for (const type of ANNOTATION_TYPES) {\n this.config[type] = { ...DEFAULT_CONFIG[type] };\n }\n\n // Apply user config if provided\n if (Object.keys(config).length > 0) {\n this.setConfig(config);\n }\n\n // Register built-in converters\n this.converters = {\n highlight: highlightToStrokes,\n text: textToStrokes,\n underline: underlineToStrokes,\n arrow: arrowToStrokes,\n circle: circleToStrokes,\n ink: inkToStrokes,\n };\n }\n\n /**\n * Set configuration options\n *\n * Supports global options (applied to all types) and type-specific options.\n *\n * @param {Object} config - Configuration object\n * @param {number} [config.roughness] - Global roughness for all types\n * @param {string} [config.color] - Global color for all types\n * @param {number} [config.width] - Global width for all types\n * @param {Object} [config.highlight] - Highlight-specific options\n * @param {Object} [config.text] - Text-specific options\n * @param {Object} [config.underline] - Underline-specific options\n * @param {Object} [config.arrow] - Arrow-specific options\n * @param {Object} [config.circle] - Circle-specific options\n * @returns {StrokeRenderer} Returns this for chaining\n *\n * @example\n * // Global options\n * renderer.setConfig({ roughness: 2, color: \"blue\" });\n *\n * // Type-specific options\n * renderer.setConfig({ highlight: { color: \"yellow\", width: 30 } });\n *\n * // Combined\n * renderer.setConfig({\n * roughness: 2,\n * highlight: { color: \"yellow\" }\n * });\n */\n setConfig(config) {\n const globalOptions = {};\n const typeOptions = {};\n\n // Separate global options from type-specific options\n for (const [key, value] of Object.entries(config)) {\n if (ANNOTATION_TYPES.includes(key)) {\n typeOptions[key] = value;\n } else {\n globalOptions[key] = value;\n }\n }\n\n // Apply to each type: current config + global + type-specific\n for (const type of ANNOTATION_TYPES) {\n this.config[type] = {\n ...this.config[type],\n ...globalOptions,\n ...(typeOptions[type] || {}),\n };\n }\n\n return this;\n }\n\n /**\n * Register a custom converter for a new annotation type\n *\n * @param {string} type - Annotation type name\n * @param {Function} converter - Converter function (annotation, style) => strokes[]\n */\n registerConverter(type, converter) {\n if (typeof converter !== \"function\") {\n throw new Error(\n \"StrokeRenderer.registerConverter: converter must be a function\"\n );\n }\n this.converters[type] = converter;\n }\n\n /**\n * Set viewport dimensions and configure canvas\n *\n * Handles high-DPI displays by scaling the canvas buffer.\n *\n * @param {number} width - Viewport width in CSS pixels\n * @param {number} height - Viewport height in CSS pixels\n */\n setViewport(width, height) {\n this.viewport = { width, height };\n\n const dpr = window.devicePixelRatio || 1;\n\n // Set canvas buffer size (high-res)\n this.canvas.width = width * dpr;\n this.canvas.height = height * dpr;\n\n // Set canvas display size (CSS)\n this.canvas.style.width = `${width}px`;\n this.canvas.style.height = `${height}px`;\n\n // Scale context for high-DPI\n this.ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n\n /**\n * Set annotations and convert them to strokes\n *\n * Clears existing strokes and converts all annotations.\n *\n * @param {Array} annotations - Array of annotation objects\n * @param {number} [page] - Optional page filter (only convert annotations for this page)\n */\n setAnnotations(annotations, page = null) {\n if (!Array.isArray(annotations)) {\n console.warn(\n \"StrokeRenderer.setAnnotations: annotations must be an array\"\n );\n this.strokes = [];\n return;\n }\n\n // Filter by page if specified\n const filtered =\n page !== null ? annotations.filter((a) => a.page === page) : annotations;\n\n // Convert each annotation to strokes\n this.strokes = filtered.flatMap((annotation) => {\n const converter = this.converters[annotation.type];\n\n if (!converter) {\n console.warn(\n `StrokeRenderer: Unknown annotation type \"${annotation.type}\"`\n );\n return [];\n }\n\n // Resolve style: pen → type → annotation.style\n const style = this._resolveStyle(annotation);\n\n return converter(annotation, style);\n });\n }\n\n /**\n * Set pre-converted strokes directly\n *\n * Bypasses conversion, useful when strokes come from external source.\n *\n * @param {Array} strokes - Array of stroke command objects\n */\n setStrokes(strokes) {\n if (!Array.isArray(strokes)) {\n console.warn(\"StrokeRenderer.setStrokes: strokes must be an array\");\n this.strokes = [];\n return;\n }\n this.strokes = strokes;\n }\n\n /**\n * Render strokes at the given time\n *\n * Clears canvas and draws all visible strokes with appropriate progress.\n *\n * @param {number} time - Current time in seconds\n */\n render(time) {\n const { ctx, viewport, strokes } = this;\n\n // Clear canvas\n ctx.clearRect(0, 0, viewport.width, viewport.height);\n\n // Draw each stroke\n for (const stroke of strokes) {\n // Skip if not started yet\n if (time < stroke.start) {\n continue;\n }\n\n // Calculate progress\n const duration = stroke.end - stroke.start;\n const elapsed = time - stroke.start;\n const progress = duration > 0 ? Math.min(1, elapsed / duration) : 1;\n\n this._drawStroke(stroke, progress);\n }\n }\n\n /**\n * Clear the canvas\n */\n clear() {\n this.ctx.clearRect(0, 0, this.viewport.width, this.viewport.height);\n }\n\n /**\n * Destroy the renderer and release resources\n */\n destroy() {\n this.strokes = [];\n this.ctx = null;\n this.canvas = null;\n this.config = null;\n this.converters = null;\n }\n\n /**\n * Resolve style for an annotation\n *\n * Returns the config for the annotation type.\n * Style is managed via setConfig(), not per-annotation.\n *\n * @private\n * @param {Object} annotation - Annotation object\n * @returns {Object} Resolved style object\n */\n _resolveStyle(annotation) {\n const { type } = annotation;\n return this.config[type] || {};\n }\n\n /**\n * Linearly interpolate between two points\n *\n * @private\n * @param {Array} p1 - Start point [x, y]\n * @param {Array} p2 - End point [x, y]\n * @param {number} t - Interpolation factor (0-1)\n * @returns {Array} Interpolated point [x, y]\n */\n _interpolatePoint(p1, p2, t) {\n return [p1[0] + (p2[0] - p1[0]) * t, p1[1] + (p2[1] - p1[1]) * t];\n }\n\n /**\n * Get pressure values for visible points including interpolated final\n *\n * @private\n * @param {Array} pressures - Full pressure array\n * @param {number} lastCompleteIndex - Index of last complete point\n * @param {number} segmentProgress - Progress within current segment (0-1)\n * @returns {Array} Pressure values for visible points\n */\n _interpolatePressures(pressures, lastCompleteIndex, segmentProgress) {\n const visiblePressures = pressures.slice(0, lastCompleteIndex + 1);\n\n if (lastCompleteIndex < pressures.length - 1 && segmentProgress > 0) {\n const p1 = pressures[lastCompleteIndex];\n const p2 = pressures[lastCompleteIndex + 1];\n visiblePressures.push(p1 + (p2 - p1) * segmentProgress);\n }\n\n return visiblePressures;\n }\n\n /**\n * Draw a single stroke with progress\n *\n * Uses endpoint interpolation for smooth progressive rendering.\n *\n * @private\n * @param {Object} stroke - Stroke command object\n * @param {number} progress - Progress from 0 to 1\n */\n _drawStroke(stroke, progress) {\n const { ctx } = this;\n const {\n points,\n color,\n width,\n lineCap,\n pressures,\n uniformScale,\n baseX,\n baseY,\n } = stroke;\n\n if (!points || points.length < 2) return;\n\n // Configure stroke style\n ctx.strokeStyle = color || \"rgba(0, 0, 0, 0.5)\";\n ctx.lineCap = lineCap || \"round\";\n ctx.lineJoin = \"round\";\n\n // Fast path: full stroke, no interpolation needed\n if (progress >= 1) {\n if (pressures && pressures.length >= points.length) {\n this._drawVariableWidthStroke(\n points,\n width,\n pressures,\n uniformScale,\n baseX,\n baseY\n );\n } else {\n this._drawConstantWidthStroke(\n points,\n width,\n uniformScale,\n baseX,\n baseY\n );\n }\n return;\n }\n\n // Calculate segment position for interpolation\n const totalSegments = points.length - 1;\n const progressAlongPath = progress * totalSegments;\n const lastCompleteIndex = Math.floor(progressAlongPath);\n const segmentProgress = progressAlongPath - lastCompleteIndex;\n\n // Build visible points array with complete points\n const visiblePoints = points.slice(0, lastCompleteIndex + 1);\n\n // Interpolate final point if mid-segment\n if (lastCompleteIndex < totalSegments && segmentProgress > 0) {\n const p1 = points[lastCompleteIndex];\n const p2 = points[lastCompleteIndex + 1];\n visiblePoints.push(this._interpolatePoint(p1, p2, segmentProgress));\n }\n\n // Need at least 2 points to draw a line\n if (visiblePoints.length < 2) return;\n\n // Draw with variable width if pressures provided\n if (pressures && pressures.length >= points.length) {\n const visiblePressures = this._interpolatePressures(\n pressures,\n lastCompleteIndex,\n segmentProgress\n );\n this._drawVariableWidthStroke(\n visiblePoints,\n width,\n visiblePressures,\n uniformScale,\n baseX,\n baseY\n );\n } else {\n this._drawConstantWidthStroke(\n visiblePoints,\n width,\n uniformScale,\n baseX,\n baseY\n );\n }\n }\n\n /**\n * Draw stroke with constant width\n *\n * @private\n * @param {Array} points - Array of [x, y] coordinates (normalized or offset)\n * @param {number} width - Stroke width in pixels\n * @param {boolean} [uniformScale=false] - Use uniform scaling to preserve aspect ratio\n * @param {number} [baseX] - Base X position in width-normalized coords (for uniformScale with offset points)\n * @param {number} [baseY] - Base Y position in height-normalized coords (for uniformScale with offset points)\n */\n _drawConstantWidthStroke(\n points,\n width,\n uniformScale = false,\n baseX = null,\n baseY = null\n ) {\n const { ctx, viewport } = this;\n\n // Scale width based on viewport height for consistent appearance\n const scale = viewport.height / REFERENCE_HEIGHT;\n ctx.lineWidth = (width || 2) * scale;\n ctx.beginPath();\n\n // When uniformScale is true and baseX/baseY provided, points are offsets from base position\n // Base position is in mixed coords (X: width-normalized, Y: height-normalized)\n // Offsets are in uniform space (both scaled by viewport.height)\n const hasBasePosition = uniformScale && baseX !== null && baseY !== null;\n\n for (let i = 0; i < points.length; i++) {\n const [coordX, coordY] = points[i];\n let px, py;\n\n if (hasBasePosition) {\n // Base position in pixels + uniform-scaled offset\n px = baseX * viewport.width + coordX * viewport.height;\n py = baseY * viewport.height + coordY * viewport.height;\n } else if (uniformScale) {\n // Legacy: full coordinates in uniform space\n px = coordX * viewport.height;\n py = coordY * viewport.height;\n } else {\n // Standard: X scaled by width, Y by height\n px = coordX * viewport.width;\n py = coordY * viewport.height;\n }\n\n if (i === 0) {\n ctx.moveTo(px, py);\n } else {\n ctx.lineTo(px, py);\n }\n }\n\n ctx.stroke();\n }\n\n /**\n * Draw stroke with variable width based on pressure\n *\n * @private\n * @param {Array} points - Array of [x, y] coordinates (normalized or offset)\n * @param {number} baseWidth - Base stroke width in pixels\n * @param {Array} pressures - Pressure values (0-1) per point\n * @param {boolean} [uniformScale=false] - Use uniform scaling to preserve aspect ratio\n * @param {number} [baseX] - Base X position in width-normalized coords (for uniformScale with offset points)\n * @param {number} [baseY] - Base Y position in height-normalized coords (for uniformScale with offset points)\n */\n _drawVariableWidthStroke(\n points,\n baseWidth,\n pressures,\n uniformScale = false,\n baseX = null,\n baseY = null\n ) {\n const { ctx, viewport } = this;\n\n // When uniformScale is true and baseX/baseY provided, points are offsets from base position\n const hasBasePosition = uniformScale && baseX !== null && baseY !== null;\n\n for (let i = 1; i < points.length; i++) {\n const [c1x, c1y] = points[i - 1];\n const [c2x, c2y] = points[i];\n\n let px1, py1, px2, py2;\n\n if (hasBasePosition) {\n // Base position in pixels + uniform-scaled offset\n px1 = baseX * viewport.width + c1x * viewport.height;\n py1 = baseY * viewport.height + c1y * viewport.height;\n px2 = baseX * viewport.width + c2x * viewport.height;\n py2 = baseY * viewport.height + c2y * viewport.height;\n } else if (uniformScale) {\n // Legacy: full coordinates in uniform space\n px1 = c1x * viewport.height;\n py1 = c1y * viewport.height;\n px2 = c2x * viewport.height;\n py2 = c2y * viewport.height;\n } else {\n // Standard: X scaled by width, Y by height\n px1 = c1x * viewport.width;\n py1 = c1y * viewport.height;\n px2 = c2x * viewport.width;\n py2 = c2y * viewport.height;\n }\n\n // Average pressure between two points\n const p1 = pressures[i - 1] || 1;\n const p2 = pressures[i] || 1;\n const avgPressure = (p1 + p2) / 2;\n\n // Apply pressure to width (min 0.5) and scale for viewport\n const scale = viewport.height / REFERENCE_HEIGHT;\n const width = Math.max(0.5, baseWidth * avgPressure) * scale;\n\n ctx.lineWidth = width;\n ctx.beginPath();\n ctx.moveTo(px1, py1);\n ctx.lineTo(px2, py2);\n ctx.stroke();\n }\n }\n}\n\nexport { StrokeRenderer };\nexport default StrokeRenderer;\n"],"names":["ANNOTATION_TYPES","REFERENCE_HEIGHT","DEFAULT_CONFIG","StrokeRenderer","canvas","config","type","highlightToStrokes","textToStrokes","underlineToStrokes","arrowToStrokes","circleToStrokes","inkToStrokes","globalOptions","typeOptions","key","value","converter","width","height","dpr","annotations","page","filtered","a","annotation","style","strokes","time","ctx","viewport","stroke","duration","elapsed","progress","p1","p2","t","pressures","lastCompleteIndex","segmentProgress","visiblePressures","points","color","lineCap","uniformScale","baseX","baseY","totalSegments","progressAlongPath","visiblePoints","scale","hasBasePosition","i","coordX","coordY","px","py","baseWidth","c1x","c1y","c2x","c2y","px1","py1","px2","py2","avgPressure"],"mappings":"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"}