You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

10 lines
7.9 KiB

/*!
* @antv/g-plugin-canvas-path-generator
* @description A G plugin of path generator with Canvas2D API
* @version 2.1.22
* @date 7/30/2025, 1:35:25 PM
* @author AntVis
* @docs https://g.antv.antgroup.com/
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@antv/g-lite")):"function"==typeof define&&define.amd?define(["exports","@antv/g-lite"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).G=t.G||{},t.G.CanvasPathGenerator={}),t.window.G)}(this,function(t,e){"use strict";function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function n(t){var e=function(t,e){if("object"!=r(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var a=n.call(t,e||"default");if("object"!=r(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==r(e)?e:e+""}function a(t,e,r){return(e=n(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){for(var r=0;e.length>r;r++){var a=e[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,n(a.key),a)}}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(c=function(){return!!t})()}function l(t,e){if(e&&("object"==r(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function u(t,e){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},u(t,e)}function f(t,e){var r=e.cx,n=e.cy;t.arc(void 0===r?0:r,void 0===n?0:n,e.r,0,2*Math.PI,!1)}function s(t,e){var r=e.cx,n=void 0===r?0:r,a=e.cy,o=void 0===a?0:a,i=e.rx,c=e.ry;if(t.ellipse)t.ellipse(n,o,i,c,0,0,2*Math.PI,!1);else{var l=i>c?i:c,u=i>c?1:i/c,f=i>c?c/i:1;t.save(),t.scale(u,f),t.arc(n,o,l,0,2*Math.PI)}}function h(t,r){var n=r.x1,a=r.y1,o=r.x2,i=r.y2,c=r.markerStart,l=r.markerEnd,u=r.markerStartOffset,f=r.markerEndOffset,s=0,h=0,p=0,y=0,v=0;c&&e.isDisplayObject(c)&&u&&(s=Math.cos(v=Math.atan2(i-a,o-n))*(u||0),h=Math.sin(v)*(u||0)),l&&e.isDisplayObject(l)&&f&&(p=Math.cos(v=Math.atan2(a-i,n-o))*(f||0),y=Math.sin(v)*(f||0)),t.moveTo(n+s,a+h),t.lineTo(o+p,i+y)}function p(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);e>r;r++)n[r]=t[r];return n}function y(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,a,o,i,c=[],l=!0,u=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=o.call(r)).done)&&(c.push(n.value),c.length!==e);l=!0);}catch(t){u=!0,a=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(u)throw a}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return p(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(t,r){var n=r.markerStart,a=r.markerEnd,o=r.markerStartOffset,i=r.markerEndOffset,c=r.d,l=c.absolutePath,u=c.segments,f=0,s=0,h=0,p=0,v=0;if(n&&e.isDisplayObject(n)&&o){var b=y(n.parentNode.getStartTangent(),2),d=b[0],m=b[1];f=Math.cos(v=Math.atan2(d[1]-m[1],d[0]-m[0]))*(o||0),s=Math.sin(v)*(o||0)}if(a&&e.isDisplayObject(a)&&i){var M=y(a.parentNode.getEndTangent(),2),O=M[0],S=M[1];h=Math.cos(v=Math.atan2(O[1]-S[1],O[0]-S[0]))*(i||0),p=Math.sin(v)*(i||0)}for(var g=0;l.length>g;g++){var P=l[g],T=P[0],j=l[g+1],E=(g===l.length-1||j&&("M"===j[0]||"Z"===j[0]))&&0!==h&&0!==p,k=y(0===g&&(0!==f||0!==s)?[f,s]:[0,0],2),w=k[0],I=k[1],x=y(E?[h,p]:[0,0],2),A=x[0],G=x[1];switch(T){case"M":t.moveTo(P[1]+w,P[2]+I);break;case"L":t.lineTo(P[1]+A,P[2]+G);break;case"Q":t.quadraticCurveTo(P[1],P[2],P[3]+A,P[4]+G);break;case"C":t.bezierCurveTo(P[1],P[2],P[3],P[4],P[5]+A,P[6]+G);break;case"A":var C=u[g].arcParams,D=C.cx,L=C.cy,R=C.rx,_=C.ry,N=C.startAngle,F=C.endAngle,H=C.xRotation,q=C.sweepFlag;if(t.ellipse)t.ellipse(D,L,R,_,H,N,F,!!(1-q));else{var B=R>_?R:_,U=R>_?1:R/_,Y=R>_?_/R:1;t.translate(D,L),t.rotate(H),t.scale(U,Y),t.arc(0,0,B,N,F,!!(1-q)),t.scale(1/U,1/Y),t.rotate(-H),t.translate(-D,-L)}E&&t.lineTo(P[6]+h,P[7]+p);break;case"Z":t.closePath()}}}function b(t,r){var n=r.markerStart,a=r.markerEnd,o=r.markerStartOffset,i=r.markerEndOffset,c=r.points.points,l=c.length,u=c[0][0],f=c[0][1],s=c[l-1][0],h=c[l-1][1],p=0,y=0,v=0,b=0,d=0;n&&e.isDisplayObject(n)&&o&&(p=Math.cos(d=Math.atan2(c[1][1]-c[0][1],c[1][0]-c[0][0]))*(o||0),y=Math.sin(d)*(o||0)),a&&e.isDisplayObject(a)&&i&&(v=Math.cos(d=Math.atan2(c[l-1][1]-c[0][1],c[l-1][0]-c[0][0]))*(i||0),b=Math.sin(d)*(i||0)),t.moveTo(u+(p||v),f+(y||b));for(var m=1;l-1>m;m++){var M=c[m];t.lineTo(M[0],M[1])}t.lineTo(s,h)}function d(t,r){var n=r.markerStart,a=r.markerEnd,o=r.markerStartOffset,i=r.markerEndOffset,c=r.points.points,l=c.length,u=c[0][0],f=c[0][1],s=c[l-1][0],h=c[l-1][1],p=0,y=0,v=0,b=0,d=0;n&&e.isDisplayObject(n)&&o&&(p=Math.cos(d=Math.atan2(c[1][1]-c[0][1],c[1][0]-c[0][0]))*(o||0),y=Math.sin(d)*(o||0)),a&&e.isDisplayObject(a)&&i&&(v=Math.cos(d=Math.atan2(c[l-2][1]-c[l-1][1],c[l-2][0]-c[l-1][0]))*(i||0),b=Math.sin(d)*(i||0)),t.moveTo(u+p,f+y);for(var m=1;l-1>m;m++){var M=c[m];t.lineTo(M[0],M[1])}t.lineTo(s+v,h+b)}var m=function(t,e,r){return e>t?e:t>r?r:t};function M(t,e){var r=e.x,n=void 0===r?0:r,a=e.y,o=void 0===a?0:a,i=e.radius,c=e.width,l=e.height,u=c,f=l;if(i&&i.some(function(t){return 0!==t})){var s=c>0?1:-1,h=l>0?1:-1,p=s+h===0,v=y(i.map(function(t){return m(t,0,Math.min(Math.abs(u)/2,Math.abs(f)/2))}),4),b=v[0],d=v[1],M=v[2],O=v[3];t.moveTo(s*b+n,o),t.lineTo(u-s*d+n,o),0!==d&&t.arc(u-s*d+n,h*d+o,d,-h*Math.PI/2,s>0?0:Math.PI,p),t.lineTo(u+n,f-h*M+o),0!==M&&t.arc(u-s*M+n,f-h*M+o,M,s>0?0:Math.PI,h>0?Math.PI/2:1.5*Math.PI,p),t.lineTo(s*O+n,f+o),0!==O&&t.arc(s*O+n,f-h*O+o,O,h>0?Math.PI/2:-Math.PI/2,s>0?Math.PI:0,p),t.lineTo(n,h*b+o),0!==b&&t.arc(s*b+n,h*b+o,b,s>0?Math.PI:0,h>0?1.5*Math.PI:Math.PI/2,p)}else t.rect(n,o,u,f)}var O=function(t){function r(){var t,e,n,a;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r);for(var o=arguments.length,u=Array(o),f=0;o>f;f++)u[f]=arguments[f];return e=this,n=r,a=[].concat(u),n=i(n),(t=l(e,c()?Reflect.construct(n,a||[],i(e).constructor):n.apply(e,a))).name="canvas-path-generator",t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&u(t,e)}(r,t),n=r,(p=[{key:"init",value:function(){var t,r=(a(a(a(a(a(a(a(a(a(a(t={},e.Shape.CIRCLE,f),e.Shape.ELLIPSE,s),e.Shape.RECT,M),e.Shape.LINE,h),e.Shape.POLYLINE,d),e.Shape.POLYGON,b),e.Shape.PATH,v),e.Shape.TEXT,void 0),e.Shape.GROUP,void 0),e.Shape.IMAGE,void 0),a(a(a(t,e.Shape.HTML,void 0),e.Shape.MESH,void 0),e.Shape.FRAGMENT,void 0));this.context.pathGeneratorFactory=r}},{key:"destroy",value:function(){delete this.context.pathGeneratorFactory}}])&&o(n.prototype,p),y&&o(n,y),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,p,y}(e.AbstractRendererPlugin);t.Plugin=O});
//# sourceMappingURL=index.umd.min.js.map