{"version":3,"sources":["webpack://G/webpack/universalModuleDefinition","webpack://G/webpack/bootstrap","webpack://G/../src/is-array-like.ts","webpack://G/../src/is-type.ts","webpack://G/../src/is-function.ts","webpack://G/../src/is-nil.ts","webpack://G/../src/is-array.ts","webpack://G/../src/is-object.ts","webpack://G/../src/each.ts","webpack://G/../src/keys.ts","webpack://G/../src/is-match.ts","webpack://G/../src/is-object-like.ts","webpack://G/../src/find-index.ts","webpack://G/../src/max.ts","webpack://G/../src/min.ts","webpack://G/../src/pull.ts","webpack://G/../src/is-string.ts","webpack://G/../src/pull-at.ts","webpack://G/../src/group-by.ts","webpack://G/../src/parse-radius.ts","webpack://G/../src/is-number.ts","webpack://G/../src/is-integer.ts","webpack://G/../src/is-number-equal.ts","webpack://G/../src/is-odd.ts","webpack://G/../src/mod.ts","webpack://G/../src/to-radian.ts","webpack://G/../src/to-degree.ts","webpack://G/../src/to-integer.ts","webpack://G/../src/values.ts","webpack://G/../src/to-string.ts","webpack://G/../src/substitute.ts","webpack://G/../src/upper-first.ts","webpack://G/../src/is-prototype.ts","webpack://G/../src/mix.ts","webpack://G/../src/is-empty.ts","webpack://G/../src/is-equal.ts","webpack://G/../src/unique-id.ts","webpack://G/../src/pick.ts","webpack://G/../src/noop.ts","webpack://G/../src/measure-text-width.ts","webpack://G/../src/memoize.ts","webpack://G/../src/cache.ts","webpack://G/../../src/util/util.ts","webpack://G/./node_modules/gl-matrix/esm/common.js","webpack://G/../g-base/node_modules/gl-matrix/esm/common.js","webpack://G/../g-base/node_modules/gl-matrix/esm/mat3.js","webpack://G/../g-base/node_modules/gl-matrix/esm/vec2.js","webpack://G/./node_modules/gl-matrix/esm/mat3.js","webpack://G/./node_modules/gl-matrix/esm/vec2.js","webpack://G/../src/contains.ts","webpack://G/../src/filter.ts","webpack://G/../src/difference.ts","webpack://G/../src/is-plain-object.ts","webpack://G/../src/find.ts","webpack://G/../src/first-value.ts","webpack://G/../src/flatten.ts","webpack://G/../src/flatten-deep.ts","webpack://G/../src/get-range.ts","webpack://G/../src/reduce.ts","webpack://G/../src/remove.ts","webpack://G/../src/sort-by.ts","webpack://G/../src/uniq.ts","webpack://G/../src/union.ts","webpack://G/../src/values-of-key.ts","webpack://G/../src/head.ts","webpack://G/../src/last.ts","webpack://G/../src/starts-with.ts","webpack://G/../src/ends-with.ts","webpack://G/../src/every.ts","webpack://G/../src/some.ts","webpack://G/../src/group-to-map.ts","webpack://G/../src/group.ts","webpack://G/../src/get-wrap-behavior.ts","webpack://G/../src/wrap-behavior.ts","webpack://G/../src/number2color.ts","webpack://G/../src/clamp.ts","webpack://G/../src/fixed-base.ts","webpack://G/../src/is-decimal.ts","webpack://G/../src/is-even.ts","webpack://G/../src/is-negative.ts","webpack://G/../src/is-positive.ts","webpack://G/../src/max-by.ts","webpack://G/../src/min-by.ts","webpack://G/../src/for-in.ts","webpack://G/../src/has.ts","webpack://G/../src/has-key.ts","webpack://G/../src/has-value.ts","webpack://G/../src/lower-case.ts","webpack://G/../src/lower-first.ts","webpack://G/../src/upper-case.ts","webpack://G/../src/get-type.ts","webpack://G/../src/is-arguments.ts","webpack://G/../src/is-boolean.ts","webpack://G/../src/is-date.ts","webpack://G/../src/is-error.ts","webpack://G/../src/is-finite.ts","webpack://G/../src/is-null.ts","webpack://G/../src/is-reg-exp.ts","webpack://G/../src/is-undefined.ts","webpack://G/../src/is-element.ts","webpack://G/../src/request-animation-frame.ts","webpack://G/../src/clear-animation-frame.ts","webpack://G/../src/augment.ts","webpack://G/../src/clone.ts","webpack://G/../src/debounce.ts","webpack://G/../src/deep-mix.ts","webpack://G/../src/extend.ts","webpack://G/../src/index-of.ts","webpack://G/../src/is-equal-with.ts","webpack://G/../src/map.ts","webpack://G/../src/map-values.ts","webpack://G/../src/get.ts","webpack://G/../src/set.ts","webpack://G/../src/omit.ts","webpack://G/../src/throttle.ts","webpack://G/../src/to-array.ts","webpack://G/../src/identity.ts","webpack://G/../src/size.ts","webpack://G/../src/get-ellipsis-text.ts","webpack://G/./node_modules/tslib/tslib.es6.js","webpack://G/../g-math/node_modules/tslib/tslib.es6.js","webpack://G/../src/util.ts","webpack://G/../g-math/node_modules/gl-matrix/esm/common.js","webpack://G/../g-math/node_modules/gl-matrix/esm/vec2.js","webpack://G/../src/line.ts","webpack://G/../src/bezier.ts","webpack://G/../src/quadratic.ts","webpack://G/../src/cubic.ts","webpack://G/../src/ellipse.ts","webpack://G/../src/arc.ts","webpack://G/../src/segments.ts","webpack://G/../src/polyline.ts","webpack://G/../src/polygon.ts","webpack://G/./src/util/util.ts","webpack://G/../g-base/node_modules/tslib/tslib.es6.js","webpack://G/../../src/util/matrix.ts","webpack://G/./src/shape/base.ts","webpack://G/../src/index.ts","webpack://G/../../src/util/path.ts","webpack://G/../../src/util/text.ts","webpack://G/./src/shape/index.ts","webpack://G/./src/util/draw.ts","webpack://G/./src/util/arrow.ts","webpack://G/./src/util/in-stroke/line.ts","webpack://G/../../src/event/graph-event.ts","webpack://G/../../src/util/offscreen.ts","webpack://G/../g-base/node_modules/d3-ease/src/linear.js","webpack://G/../g-base/node_modules/d3-ease/src/quad.js","webpack://G/../g-base/node_modules/d3-ease/src/cubic.js","webpack://G/../g-base/node_modules/d3-ease/src/poly.js","webpack://G/../g-base/node_modules/d3-ease/src/sin.js","webpack://G/../g-base/node_modules/d3-ease/src/math.js","webpack://G/../g-base/node_modules/d3-ease/src/exp.js","webpack://G/../g-base/node_modules/d3-ease/src/circle.js","webpack://G/../g-base/node_modules/d3-ease/src/bounce.js","webpack://G/../g-base/node_modules/d3-ease/src/back.js","webpack://G/../g-base/node_modules/d3-ease/src/elastic.js","webpack://G/../../src/animate/register.ts","webpack://G/../../src/abstract/base.ts","webpack://G/../../src/abstract/container.ts","webpack://G/../src/ext.ts","webpack://G/../../src/abstract/element.ts","webpack://G/./src/group.ts","webpack://G/./node_modules/gl-matrix/esm/vec3.js","webpack://G/../../src/bbox/register.ts","webpack://G/../../src/bbox/rect.ts","webpack://G/../../src/bbox/circle.ts","webpack://G/../../src/bbox/util.ts","webpack://G/../../src/bbox/polyline.ts","webpack://G/../src/parse-path.ts","webpack://G/../src/parse-path-string.ts","webpack://G/../../src/process/arc-2-cubic.ts","webpack://G/../src/get-arc-params.ts","webpack://G/../src/path-2-segments.ts","webpack://G/../../src/bbox/path.ts","webpack://G/../../src/bbox/index.ts","webpack://G/../../src/bbox/polygon.ts","webpack://G/../../src/bbox/text.ts","webpack://G/../../src/bbox/line.ts","webpack://G/../../src/bbox/ellipse.ts","webpack://G/../../src/abstract/group.ts","webpack://G/../../src/abstract/shape.ts","webpack://G/./src/util/parse.ts","webpack://G/./src/util/arc-params.ts","webpack://G/./src/util/in-path/point-in-path.ts","webpack://G/./src/util/in-path/polygon.ts","webpack://G/./src/util/in-stroke/arc.ts","webpack://G/./src/util/in-stroke/polyline.ts","webpack://G/../src/catmull-rom-2-bezier.ts","webpack://G/../src/fill-path.ts","webpack://G/../src/fill-path-by-diff.ts","webpack://G/../src/format-path.ts","webpack://G/../src/rect-path.ts","webpack://G/../src/path-2-absolute.ts","webpack://G/../../src/process/quad-2-cubic.ts","webpack://G/../../src/process/line-2-cubic.ts","webpack://G/../../src/process/segment-2-cubic.ts","webpack://G/../src/path-2-curve.ts","webpack://G/../src/path-intersection.ts","webpack://G/../src/parse-path-array.ts","webpack://G/../src/get-line-intersect.ts","webpack://G/../src/point-in-polygon.ts","webpack://G/../src/is-polygons-intersect.ts","webpack://G/../g-base/node_modules/d3-timer/src/timer.js","webpack://G/../g-base/node_modules/d3-color/src/define.js","webpack://G/../g-base/node_modules/d3-color/src/color.js","webpack://G/../g-base/node_modules/d3-interpolate/src/basis.js","webpack://G/../g-base/node_modules/d3-interpolate/src/constant.js","webpack://G/../g-base/node_modules/d3-interpolate/src/color.js","webpack://G/../g-base/node_modules/d3-interpolate/src/rgb.js","webpack://G/../g-base/node_modules/d3-interpolate/src/basisClosed.js","webpack://G/../g-base/node_modules/d3-interpolate/src/numberArray.js","webpack://G/../g-base/node_modules/d3-interpolate/src/array.js","webpack://G/../g-base/node_modules/d3-interpolate/src/date.js","webpack://G/../g-base/node_modules/d3-interpolate/src/number.js","webpack://G/../g-base/node_modules/d3-interpolate/src/object.js","webpack://G/../g-base/node_modules/d3-interpolate/src/string.js","webpack://G/../g-base/node_modules/d3-interpolate/src/value.js","webpack://G/../../src/animate/timeline.ts","webpack://G/../../src/util/color.ts","webpack://G/../../src/event/event-contoller.ts","webpack://G/../../src/abstract/canvas.ts","webpack://G/../g-base/node_modules/detect-browser/es/index.js","webpack://G/./src/index.ts","webpack://G/./node_modules/process/browser.js","webpack://G/./src/shape/circle.ts","webpack://G/./src/shape/ellipse.ts","webpack://G/./src/shape/image.ts","webpack://G/./src/shape/line.ts","webpack://G/./src/shape/marker.ts","webpack://G/./src/shape/path.ts","webpack://G/./src/util/path.ts","webpack://G/./src/shape/polygon.ts","webpack://G/./src/shape/polyline.ts","webpack://G/./src/shape/rect.ts","webpack://G/./src/util/in-stroke/rect.ts","webpack://G/./src/util/in-stroke/rect-radius.ts","webpack://G/./src/shape/text.ts","webpack://G/./src/interfaces.ts","webpack://G/./src/types.ts","webpack://G/./src/canvas.ts","webpack://G/./src/util/hit.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","type","elements","_mix","obj","dist","index","EPSILON","ARRAY_TYPE","Float32Array","Array","RANDOM","Math","random","PI","hypot","y","arguments","length","sqrt","out","glMatrix","fromMat4","a","clone","copy","fromValues","m00","m01","m02","m10","m11","m12","m20","m21","m22","set","identity","transpose","a01","a02","a12","invert","a00","a10","a11","a20","a21","a22","b01","b11","b21","det","adjoint","determinant","multiply","b","b00","b02","b10","b12","b20","b22","translate","v","x","rotate","rad","sin","cos","scale","fromTranslation","fromRotation","fromScaling","fromMat2d","fromQuat","q","z","w","x2","y2","z2","xx","yx","yy","zx","zy","zz","wx","wy","wz","normalFromMat4","a03","a13","a23","a30","a31","a32","a33","b03","b04","b05","b06","b07","b08","b09","projection","width","height","str","frob","add","subtract","multiplyScalar","multiplyScalarAndAdd","exactEquals","equals","a0","a1","a2","a3","a4","a5","a6","a7","a8","b0","b1","b2","b3","b4","b5","b6","b7","b8","abs","max","mul","sub","divide","ceil","floor","min","round","scaleAndAdd","distance","squaredDistance","squaredLength","negate","inverse","normalize","len","dot","cross","lerp","ax","ay","transformMat2","transformMat2d","transformMat3","transformMat4","p0","p1","sinC","cosC","angle","x1","y1","mag","cosine","acos","zero","vec","div","sqrDist","sqrLen","forEach","stride","offset","count","fn","arg","uniq","arr","base","toString","indexOf","num","requestAnimationFrame","cancelAnimationFrame","handler","k","superObj","func","PLACEHOLDER_WIDTH","font","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","String","__","this","constructor","__assign","assign","apply","__rest","e","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","target","desc","getOwnPropertyDescriptor","Reflect","decorate","__param","paramIndex","decorator","__esDecorate","ctor","descriptorIn","contextIn","initializers","extraInitializers","accept","f","_","kind","descriptor","done","context","access","addInitializer","push","result","init","__runInitializers","thisArg","useValue","__propKey","concat","__setFunctionName","prefix","description","configurable","__metadata","metadataKey","metadataValue","metadata","__awaiter","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","then","__generator","body","g","label","sent","trys","ops","verb","iterator","op","pop","__createBinding","k2","undefined","writable","__exportStar","__values","__read","ar","error","__spread","__spreadArrays","il","j","jl","__spreadArray","to","from","pack","slice","__await","__asyncGenerator","asyncIterator","resume","fulfill","settle","shift","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__setModuleDefault","__importStar","mod","__importDefault","default","__classPrivateFieldGet","receiver","state","has","__classPrivateFieldSet","__classPrivateFieldIn","quadratic","rx","startAngle","segments","tmp","devicePixelRatio","dx","dy","minX","minY","box1","box2","maxX","maxY","region1","region2","point1","point2","isNil","isString","isFunction","isArray","each","toRadian","isNumberEqual","clearAnimationFrame","getDefaultAttrs","attrs","lineWidth","lineAppendWidth","strokeOpacity","fillOpacity","getShapeBase","Shape","getGroupBase","onCanvasChange","changeType","refreshElement","calculateBBox","getHitLineWidth","box","getBBoxMethod","bboxMethod","halfLineWidth","isFill","isClipShape","isStroke","_applyClip","clip","save","applyAttrsToContext","createPath","restore","_afterDraw","draw","region","cfg","clipShape","refresh","bbox","getCanvasBBox","intersectRect","isInView","drawPath","getCanvasViewBox","canvas","getViewRange","cacheCanvasBBox","canvasBBox","skipDraw","strokeAndFill","afterDrawPath","fill","stroke","opacity","globalAlpha","isInShape","refX","refY","isInStrokeOrPath","AbstractShape","ShapeBase","fontSize","SHAPE_ATTRS_MAP","checkChildrenRefresh","children","child","visible","hasChanged","isGroup","setChildrenRefresh","checkElementRefresh","shape","getRefreshRegion","element","destroyed","cacheBox","validCache","validBBox","mergeRegion","attr","transform","setLineDash","parseStyle","refreshElements","el","parent","clearChanged","arcParamsCache","path","startArrow","endArrow","currentPoint","startMovePoint","beginPath","params","command","tangent","getStartTangent","ArrowUtil","getShortenOffset","getEndTangent","moveTo","lineTo","quadraticCurveTo","bezierCurveTo","arcParams","cx","cy","ry","endAngle","xRotation","sweepFlag","ellipse","scaleX","scaleY","arc","closePath","_cacheCanvasBBox","minXArr","minYArr","maxXArr","maxYArr","viewRegion","atan2","_addDefaultArrow","isStart","arrowShape","Path","isArrowShape","rotateAtPoint","_addCustomizedArrow","arrowAttrs","arrowFill","arrowStroke","arrowLineWidth","restAttrs","halfWidth","Line","pointToLine","offScreenCtx","getOffScreenContext","linear","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","polyIn","custom","pow","exponent","polyOut","polyInOut","pi","halfPi","sinIn","sinOut","sinInOut","tpmt","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","bounceIn","bounceOut","bounceInOut","backIn","overshoot","backOut","backInOut","tau","elasticIn","asin","amplitude","period","elasticOut","elasticInOut","totalMatrix","getTotalMatrix","Group","xArr","yArr","viewRange","allowDraw","getClip","drawChildren","AbstractGroup","az","bx","by","bz","hermite","factorTimes2","factor1","factor2","factor3","factor4","bezier","inverseFactor","inverseFactorTimesTwo","zScale","transformQuat","qx","qy","qz","qw","uvx","uvy","uvz","uuvx","uuvy","uuvz","w2","rotateX","rotateY","rotateZ","item","u","register","circle","regexLG","regexRG","regexPR","regexColorStop","addStop","steps","gradient","match","itemArr","split","addColorStop","parseLineGradient","gradientStr","start","end","exec","parseFloat","getBBox","tanTheta","tan","tanTheta2","createLinearGradient","parseRadialGradient","fx","fy","fr","colors","createRadialGradient","parsePattern","patternStr","pattern","img","repeat","source","onload","createPattern","Image","crossOrigin","src","complete","color","isNaN","CanvasPattern","radius","r1","r2","r3","r4","vMag","vRatio","vAngle","startPoint","arcFlag","xp","yp","lambda","diff","cxp","cyp","theta","dTheta","isSamePoint","ctx","isPointInPath","dcmp","onSegment","p2","points","isHit","point","isClose","first","last","decasteljau","left","right","map","cmd","targetLen","diffMatrix","_getSegmentPoints","segment","_a","quadToCubic","pathArray","taskHead","taskTail","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","setTimeout","clearNow","Timer","_call","_time","_next","timer","callback","delay","time","restart","wake","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","stop","extend","definition","Color","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","format","trim","toLowerCase","parseInt","rgbn","Rgb","rgba","hsla","NaN","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","h","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","basis","v0","v1","v2","v3","t3","channels","displayable","formatHex8","formatHsl","brighter","darker","clamp","gamma","nogamma","exponential","constant","rgbGamma","colorRgb","rgbSpline","spline","values","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","setTime","reA","reB","am","bm","bs","bi","lastIndex","number","one","join","string","date","numberArray","valueOf","update","duration","animation","easing","easeFn","_emitEvent","event","BrowserInfo","version","os","NodeInfo","process","platform","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOT_OS_REGEX","userAgentRules","operatingSystemRules","detect","userAgent","parseUserAgent","document","navigator","product","matchUserAgent","ua","reduce","matched","browser","regex","uaMatch","matchedRule","versionParts","output","ii","createVersionParts","detectOS","searchBotMatch","IElement","Region","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","array","noop","nextTick","args","title","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","absDistance","Circle","ellipseDistance","squareX","squareY","halfLineWith","Ellipse","isCanvas","dom","HTMLElement","nodeName","toUpperCase","initAttrs","_setImage","isOnlyHitBox","_afterLoading","Number","getAttribute","onAttrChange","originValue","sx","sy","swidth","sheight","drawImage","ImageShape","setArrow","addStartArrow","addEndArrow","startArrowDistance","endArrowDistance","startArrowShape","endArrowShape","getTotalLength","getPoint","ratio","pointAt","Symbols","square","diamond","triangle","diffY","_resetParamsCache","_getR","_getPath","method","symbol","path2Absolute","Marker","console","warn","paramsCache","isInPolygons","polygons","_setPathArr","hasArc","getSegments","path2Segments","isPointInStroke","extractResutl","extractPolygons","polylines","totalLength","_calculateCurve","_setTcache","subt","tCache","curve","seg","nextSeg","Cubic","pathToCurve","segmentT","segmentL","segmentN","tempLength","endPoint","startTangent","endTangent","ext","prePoint","inBox","Quad","pointDistance","vec3","PathUtil","Polygon","_resetCache","Polyline","PolyLine","rect","parseRadius","Rect","text","fontFamily","fontStyle","fontWeight","fontVariant","textAlign","textBaseline","_assembleFont","_setText","assembleFont","textArr","startsWith","_getSpaceingY","lineHeight","_drawTextArr","subY","spaceingY","getTextHeight","subText","fillText","strokeText","_drawText","Text","getDefaultCfg","getPixelRatio","pixelRatio","createDom","createElement","getContext","setDOMSize","clear","_clearFrame","clearRect","getShape","_getRefreshRegion","getMergedRegion","mergeView","drawFrame","_startDraw","_drawAll","getChildren","_drawRegion","checkRefresh","drawFrameCallback","removeDom","parentNode","removeChild","AbstractCanvas","Canvas","getRefXY","matrix","invertMatrix","multiplyVec2","invertFromMatrix","preTest","isAllowCapture","isClipped","container","curShape"],"mappings":"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","file":"g.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"G\"] = factory();\n\telse\n\t\troot[\"G\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 55);\n","var isArrayLike = function (value) {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\nexport default isArrayLike;\n//# sourceMappingURL=is-array-like.js.map","var toString = {}.toString;\nvar isType = function (value, type) { return toString.call(value) === '[object ' + type + ']'; };\nexport default isType;\n//# sourceMappingURL=is-type.js.map","/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\nimport isType from './is-type';\nexport default (function (value) {\n return isType(value, 'Function');\n});\n//# sourceMappingURL=is-function.js.map","// isFinite,\nvar isNil = function (value) {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\nexport default isNil;\n//# sourceMappingURL=is-nil.js.map","import isType from './is-type';\nexport default (function (value) {\n return Array.isArray ?\n Array.isArray(value) :\n isType(value, 'Array');\n});\n//# sourceMappingURL=is-array.js.map","export default (function (value) {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n var type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n});\n//# sourceMappingURL=is-object.js.map","import isArray from './is-array';\nimport isObject from './is-object';\nfunction each(elements, func) {\n if (!elements) {\n return;\n }\n var rst;\n if (isArray(elements)) {\n for (var i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n }\n else if (isObject(elements)) {\n for (var k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\nexport default each;\n//# sourceMappingURL=each.js.map","import each from './each';\nimport isFunction from './is-function';\nvar keys = Object.keys ? function (obj) { return Object.keys(obj); } : function (obj) {\n var result = [];\n each(obj, function (value, key) {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\nexport default keys;\n//# sourceMappingURL=keys.js.map","import isNil from './is-nil';\nimport keys from './keys';\nfunction isMatch(obj, attrs) {\n var _keys = keys(attrs);\n var length = _keys.length;\n if (isNil(obj))\n return !length;\n for (var i = 0; i < length; i += 1) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) {\n return false;\n }\n }\n return true;\n}\nexport default isMatch;\n//# sourceMappingURL=is-match.js.map","var isObjectLike = function (value) {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\nexport default isObjectLike;\n//# sourceMappingURL=is-object-like.js.map","function findIndex(arr, predicate, fromIndex) {\n if (fromIndex === void 0) { fromIndex = 0; }\n for (var i = fromIndex; i < arr.length; i++) {\n if (predicate(arr[i], i)) {\n // 找到终止循环\n return i;\n }\n }\n return -1;\n}\nexport default findIndex;\n//# sourceMappingURL=find-index.js.map","import isArray from './is-array';\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the maximum value.\n * @example\n *\n * max([1, 2]);\n * // => 2\n *\n * max([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * max(data);\n * // => 1250010\n * // Math.max(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (function (arr) {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.max(prev, curr);\n }, arr[0]);\n});\n//# sourceMappingURL=max.js.map","import isArray from './is-array';\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the minimum value.\n * @example\n *\n * min([1, 2]);\n * // => 1\n *\n * min([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * min(data);\n * // => 1250010\n * // Math.min(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (function (arr) {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.min(prev, curr);\n }, arr[0]);\n});\n//# sourceMappingURL=min.js.map","var arrPrototype = Array.prototype;\nvar splice = arrPrototype.splice;\nvar indexOf = arrPrototype.indexOf;\nvar pull = function (arr) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var fromIndex = -1;\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n return arr;\n};\nexport default pull;\n//# sourceMappingURL=pull.js.map","import isType from './is-type';\nexport default (function (str) {\n return isType(str, 'String');\n});\n//# sourceMappingURL=is-string.js.map","import isArrayLike from './is-array-like';\nvar splice = Array.prototype.splice;\nvar pullAt = function pullAt(arr, indexes) {\n if (!isArrayLike(arr)) {\n return [];\n }\n var length = arr ? indexes.length : 0;\n var last = length - 1;\n while (length--) {\n var previous = void 0;\n var index = indexes[length];\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n return arr;\n};\nexport default pullAt;\n//# sourceMappingURL=pull-at.js.map","import isArray from './is-array';\nimport isFunction from './is-function';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction groupBy(data, condition) {\n if (!condition || !isArray(data)) {\n return {};\n }\n var result = {};\n // 兼容方法和 字符串的写法\n var predicate = isFunction(condition) ? condition : function (item) { return item[condition]; };\n var key;\n for (var i = 0; i < data.length; i++) {\n var item = data[i];\n key = predicate(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n }\n else {\n result[key] = [item];\n }\n }\n return result;\n}\nexport default groupBy;\n//# sourceMappingURL=group-by.js.map","import isArray from './is-array';\nfunction parseRadius(radius) {\n var r1 = 0, r2 = 0, r3 = 0, r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n }\n else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n }\n else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n }\n else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4\n };\n}\nexport default parseRadius;\n//# sourceMappingURL=parse-radius.js.map","/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\nimport isType from './is-type';\nvar isNumber = function (value) {\n return isType(value, 'Number');\n};\nexport default isNumber;\n//# sourceMappingURL=is-number.js.map","import isNumber from './is-number';\nvar isInteger = Number.isInteger ? Number.isInteger : function (num) {\n return isNumber(num) && num % 1 === 0;\n};\nexport default isInteger;\n//# sourceMappingURL=is-integer.js.map","var PRECISION = 0.00001; // numbers less than this is considered as 0\nexport default function isNumberEqual(a, b, precision) {\n if (precision === void 0) { precision = PRECISION; }\n return Math.abs((a - b)) < precision;\n}\n;\n//# sourceMappingURL=is-number-equal.js.map","import isNumber from './is-number';\nvar isOdd = function (num) {\n return isNumber(num) && num % 2 !== 0;\n};\nexport default isOdd;\n//# sourceMappingURL=is-odd.js.map","var mod = function (n, m) {\n return ((n % m) + m) % m;\n};\nexport default mod;\n//# sourceMappingURL=mod.js.map","var RADIAN = Math.PI / 180;\nvar toRadian = function (degree) {\n return RADIAN * degree;\n};\nexport default toRadian;\n//# sourceMappingURL=to-radian.js.map","var DEGREE = 180 / Math.PI;\nvar toDegree = function (radian) {\n return DEGREE * radian;\n};\nexport default toDegree;\n//# sourceMappingURL=to-degree.js.map","export default parseInt;\n//# sourceMappingURL=to-integer.js.map","import each from './each';\nimport isFunction from './is-function';\n// @ts-ignore\nvar values = Object.values ? function (obj) { return Object.values(obj); } : function (obj) {\n var result = [];\n each(obj, function (value, key) {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\nexport default values;\n//# sourceMappingURL=values.js.map","import isNil from './is-nil';\nexport default (function (value) {\n if (isNil(value))\n return '';\n return value.toString();\n});\n//# sourceMappingURL=to-string.js.map","function substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n return (o[name] === undefined) ? '' : o[name];\n });\n}\nexport default substitute;\n//# sourceMappingURL=substitute.js.map","import toString from './to-string';\nvar upperFirst = function (value) {\n var str = toString(value);\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\nexport default upperFirst;\n//# sourceMappingURL=upper-first.js.map","var objectProto = Object.prototype;\nvar isPrototype = function (value) {\n var Ctor = value && value.constructor;\n var proto = (typeof Ctor === 'function' && Ctor.prototype) || objectProto;\n return value === proto;\n};\nexport default isPrototype;\n//# sourceMappingURL=is-prototype.js.map","// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist, obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n dist[key] = obj[key];\n }\n }\n}\nexport default function mix(dist, src1, src2, src3) {\n if (src1)\n _mix(dist, src1);\n if (src2)\n _mix(dist, src2);\n if (src3)\n _mix(dist, src3);\n return dist;\n}\n//# sourceMappingURL=mix.js.map","import isNil from './is-nil';\nimport isArrayLike from './is-array-like';\nimport getType from './get-type';\nimport isPrototype from './is-prototype';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction isEmpty(value) {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (isNil(value)) {\n return true;\n }\n if (isArrayLike(value)) {\n return !value.length;\n }\n var type = getType(value);\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !Object.keys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\nexport default isEmpty;\n//# sourceMappingURL=is-empty.js.map","import isObjectLike from './is-object-like';\nimport isArrayLike from './is-array-like';\nimport isString from './is-string';\nvar isEqual = function (value, other) {\n if (value === other) {\n return true;\n }\n if (!value || !other) {\n return false;\n }\n if (isString(value) || isString(other)) {\n return false;\n }\n if (isArrayLike(value) || isArrayLike(other)) {\n if (value.length !== other.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < value.length; i++) {\n rst = isEqual(value[i], other[i]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n if (isObjectLike(value) || isObjectLike(other)) {\n var valueKeys = Object.keys(value);\n var otherKeys = Object.keys(other);\n if (valueKeys.length !== otherKeys.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < valueKeys.length; i++) {\n rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n return false;\n};\nexport default isEqual;\n//# sourceMappingURL=is-equal.js.map","var map = {};\nexport default (function (prefix) {\n prefix = prefix || 'g';\n if (!map[prefix]) {\n map[prefix] = 1;\n }\n else {\n map[prefix] += 1;\n }\n return prefix + map[prefix];\n});\n//# sourceMappingURL=unique-id.js.map","import each from './each';\nimport isPlainObject from './is-plain-object';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport default (function (object, keys) {\n if (object === null || !isPlainObject(object)) {\n return {};\n }\n var result = {};\n each(keys, function (key) {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n});\n//# sourceMappingURL=pick.js.map","export default (function () { });\n//# sourceMappingURL=noop.js.map","import { __spreadArrays } from \"tslib\";\nimport values from './values';\nimport memoize from './memoize';\nimport isString from './is-string';\nvar ctx;\n/**\n * 计算文本的宽度\n */\nexport default memoize(function (text, font) {\n if (font === void 0) { font = {}; }\n var fontSize = font.fontSize, fontFamily = font.fontFamily, fontWeight = font.fontWeight, fontStyle = font.fontStyle, fontVariant = font.fontVariant;\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d');\n }\n ctx.font = [fontStyle, fontVariant, fontWeight, fontSize + \"px\", fontFamily].join(' ');\n return ctx.measureText(isString(text) ? text : '').width;\n}, function (text, font) {\n if (font === void 0) { font = {}; }\n return __spreadArrays([text], values(font)).join('');\n});\n//# sourceMappingURL=measure-text-width.js.map","import isFunction from './is-function';\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\nexport default (function (f, resolver) {\n if (!isFunction(f)) {\n throw new TypeError('Expected a function');\n }\n var memoized = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n var key = resolver ? resolver.apply(this, args) : args[0];\n var cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result;\n };\n memoized.cache = new Map();\n return memoized;\n});\n//# sourceMappingURL=memoize.js.map","/**\n * k-v 存储\n */\nvar default_1 = /** @class */ (function () {\n function default_1() {\n this.map = {};\n }\n default_1.prototype.has = function (key) {\n return this.map[key] !== undefined;\n };\n default_1.prototype.get = function (key, def) {\n var v = this.map[key];\n return v === undefined ? def : v;\n };\n default_1.prototype.set = function (key, value) {\n this.map[key] = value;\n };\n default_1.prototype.clear = function () {\n this.map = {};\n };\n default_1.prototype.delete = function (key) {\n delete this.map[key];\n };\n default_1.prototype.size = function () {\n return Object.keys(this.map).length;\n };\n return default_1;\n}());\nexport default default_1;\n//# sourceMappingURL=cache.js.map","export function removeFromArray(arr, obj) {\n var index = arr.indexOf(obj);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\nexport var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport { isNil, isFunction, isString, isObject, isArray, mix, each, upperFirst } from '@antv/util';\n// 是否元素的父容器\nexport function isParent(container, shape) {\n // 所有 shape 都是 canvas 的子元素\n if (container.isCanvas()) {\n return true;\n }\n var parent = shape.getParent();\n var isParent = false;\n while (parent) {\n if (parent === container) {\n isParent = true;\n break;\n }\n parent = parent.getParent();\n }\n return isParent;\n}\nexport function isAllowCapture(element) {\n // @ts-ignore\n return element.cfg.visible && element.cfg.capture;\n}\n//# sourceMappingURL=util.js.map","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","import isArrayLike from './is-array-like';\nvar contains = function (arr, value) {\n if (!isArrayLike(arr)) {\n return false;\n }\n return arr.indexOf(value) > -1;\n};\nexport default contains;\n//# sourceMappingURL=contains.js.map","import isArrayLike from './is-array-like';\nvar filter = function (arr, func) {\n if (!isArrayLike(arr)) {\n return arr;\n }\n var result = [];\n for (var index = 0; index < arr.length; index++) {\n var value = arr[index];\n if (func(value, index)) {\n result.push(value);\n }\n }\n return result;\n};\nexport default filter;\n//# sourceMappingURL=filter.js.map","import filter from './filter';\nimport contains from './contains';\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to inspect.\n * @param {Array} values The values to exclude.\n * @return {Array} Returns the new array of filtered values.\n * @example\n * difference([2, 1], [2, 3]); // => [1]\n */\nvar difference = function (arr, values) {\n if (values === void 0) { values = []; }\n return filter(arr, function (value) { return !contains(values, value); });\n};\nexport default difference;\n//# sourceMappingURL=difference.js.map","import isObjectLike from './is-object-like';\nimport isType from './is-type';\nvar isPlainObject = function (value) {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n * isObjectLike(Object.create(null)) => true\n */\n if (!isObjectLike(value) || !isType(value, 'Object')) {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n var proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n};\nexport default isPlainObject;\n//# sourceMappingURL=is-plain-object.js.map","import isFunction from './is-function';\nimport isMatch from './is-match';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nfunction find(arr, predicate) {\n if (!isArray(arr))\n return null;\n var _predicate;\n if (isFunction(predicate)) {\n _predicate = predicate;\n }\n if (isPlainObject(predicate)) {\n _predicate = function (a) { return isMatch(a, predicate); };\n }\n if (_predicate) {\n for (var i = 0; i < arr.length; i += 1) {\n if (_predicate(arr[i])) {\n return arr[i];\n }\n }\n }\n return null;\n}\nexport default find;\n//# sourceMappingURL=find.js.map","import isNil from './is-nil';\nimport isArray from './is-array';\nvar firstValue = function (data, name) {\n var rst = null;\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n if (!isNil(value)) {\n if (isArray(value)) {\n rst = value[0]; // todo 这里是否应该使用递归,调用 firstValue @绝云\n }\n else {\n rst = value;\n }\n break;\n }\n }\n return rst;\n};\nexport default firstValue;\n//# sourceMappingURL=first-value.js.map","import isArray from './is-array';\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]\n */\nvar flatten = function (arr) {\n if (!isArray(arr)) {\n return [];\n }\n var rst = [];\n for (var i = 0; i < arr.length; i++) {\n rst = rst.concat(arr[i]);\n }\n return rst;\n};\nexport default flatten;\n//# sourceMappingURL=flatten.js.map","import isArray from './is-array';\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @param {Array} result The array to return.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]\n */\nvar flattenDeep = function (arr, result) {\n if (result === void 0) { result = []; }\n if (!isArray(arr)) {\n result.push(arr);\n }\n else {\n for (var i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], result);\n }\n }\n return result;\n};\nexport default flattenDeep;\n//# sourceMappingURL=flatten-deep.js.map","import isArray from './is-array';\nimport { default as getMax } from './max';\nimport { default as getMin } from './min';\nvar getRange = function (values) {\n // 存在 NaN 时,min,max 判定会出问题\n var filterValues = values.filter(function (v) { return !isNaN(v); });\n if (!filterValues.length) {\n // 如果没有数值则直接返回0\n return {\n min: 0,\n max: 0,\n };\n }\n if (isArray(values[0])) {\n var tmp = [];\n for (var i = 0; i < values.length; i++) {\n tmp = tmp.concat(values[i]);\n }\n filterValues = tmp;\n }\n var max = getMax(filterValues);\n var min = getMin(filterValues);\n return {\n min: min,\n max: max,\n };\n};\nexport default getRange;\n//# sourceMappingURL=get-range.js.map","import each from './each';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nvar reduce = function (arr, fn, init) {\n if (!isArray(arr) && !isPlainObject(arr)) {\n return arr;\n }\n var result = init;\n each(arr, function (data, i) {\n result = fn(result, data, i);\n });\n return result;\n};\nexport default reduce;\n//# sourceMappingURL=reduce.js.map","import isArrayLike from './is-array-like';\nimport pullAt from './pull-at';\nvar remove = function (arr, predicate) {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n var result = [];\n if (!isArrayLike(arr)) {\n return result;\n }\n var i = -1;\n var indexes = [];\n var length = arr.length;\n while (++i < length) {\n var value = arr[i];\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n pullAt(arr, indexes);\n return result;\n};\nexport default remove;\n//# sourceMappingURL=remove.js.map","import isArray from './is-array';\nimport isString from './is-string';\nimport isFunction from './is-function';\nfunction sortBy(arr, key) {\n var comparer;\n if (isFunction(key)) {\n comparer = function (a, b) { return key(a) - key(b); };\n }\n else {\n var keys_1 = [];\n if (isString(key)) {\n keys_1.push(key);\n }\n else if (isArray(key)) {\n keys_1 = key;\n }\n comparer = function (a, b) {\n for (var i = 0; i < keys_1.length; i += 1) {\n var prop = keys_1[i];\n if (a[prop] > b[prop]) {\n return 1;\n }\n if (a[prop] < b[prop]) {\n return -1;\n }\n }\n return 0;\n };\n }\n arr.sort(comparer);\n return arr;\n}\nexport default sortBy;\n//# sourceMappingURL=sort-by.js.map","export default function uniq(arr, cache) {\n if (cache === void 0) { cache = new Map(); }\n var r = [];\n if (Array.isArray(arr)) {\n for (var i = 0, len = arr.length; i < len; i++) {\n var item = arr[i];\n // 加一个 cache,提升性能\n if (!cache.has(item)) {\n r.push(item);\n cache.set(item, true);\n }\n }\n }\n return r;\n}\n//# sourceMappingURL=uniq.js.map","import uniq from './uniq';\nvar union = function () {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return uniq([].concat.apply([], sources));\n};\nexport default union;\n//# sourceMappingURL=union.js.map","import isArray from './is-array';\nimport isNil from './is-nil';\nexport default (function (data, name) {\n var rst = [];\n var tmpMap = {};\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n if (!isNil(value)) {\n // flatten\n if (!isArray(value)) {\n value = [value];\n }\n for (var j = 0; j < value.length; j++) {\n var val = value[j];\n // unique\n if (!tmpMap[val]) {\n rst.push(val);\n tmpMap[val] = true;\n }\n }\n }\n }\n return rst;\n});\n//# sourceMappingURL=values-of-key.js.map","import isArrayLike from './is-array-like';\nexport default function head(o) {\n if (isArrayLike(o)) {\n return o[0];\n }\n return undefined;\n}\n//# sourceMappingURL=head.js.map","import isArrayLike from './is-array-like';\nexport default function last(o) {\n if (isArrayLike(o)) {\n var arr = o;\n return arr[arr.length - 1];\n }\n return undefined;\n}\n//# sourceMappingURL=last.js.map","import isArray from './is-array';\nimport isString from './is-string';\nfunction startsWith(arr, e) {\n return (isArray(arr) || isString(arr)) ? arr[0] === e : false;\n}\nexport default startsWith;\n//# sourceMappingURL=starts-with.js.map","import isArray from './is-array';\nimport isString from './is-string';\nfunction endsWith(arr, e) {\n return (isArray(arr) || isString(arr)) ? arr[arr.length - 1] === e : false;\n}\nexport default endsWith;\n//# sourceMappingURL=ends-with.js.map","/**\n * 只要有一个不满足条件就返回 false\n * @param arr\n * @param func\n */\nvar every = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (!func(arr[i], i))\n return false;\n }\n return true;\n};\nexport default every;\n//# sourceMappingURL=every.js.map","/**\n * 只要有一个满足条件就返回 true\n * @param arr\n * @param func\n */\nvar some = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (func(arr[i], i))\n return true;\n }\n return false;\n};\nexport default some;\n//# sourceMappingURL=some.js.map","import isArray from './is-array';\nimport isFunction from './is-function';\nimport groupBy from './group-by';\n/**\n * 将数据分组成 map\n * @param data\n * @param condition\n */\nexport default function groupToMap(data, condition) {\n if (!condition) {\n return {\n 0: data,\n };\n }\n if (!isFunction(condition)) {\n // 如果是字符串,则按照 a*b 风格成数组\n var paramscondition_1 = isArray(condition) ? condition : condition.replace(/\\s+/g, '').split('*');\n condition = function (row) {\n var unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序\n // 根据字段列表的值,拼接成 key\n for (var i = 0, l = paramscondition_1.length; i < l; i++) {\n unique += row[paramscondition_1[i]] && row[paramscondition_1[i]].toString();\n }\n return unique;\n };\n }\n return groupBy(data, condition);\n}\n//# sourceMappingURL=group-to-map.js.map","import groupToMap from './group-to-map';\nexport default (function (data, condition) {\n if (!condition) {\n // 没有条件,则自身改成数组\n return [data];\n }\n var groups = groupToMap(data, condition);\n var array = [];\n for (var i in groups) {\n array.push(groups[i]);\n }\n return array;\n});\n//# sourceMappingURL=group.js.map","/**\n * 获取封装的事件\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction getWrapBehavior(obj, action) {\n return obj['_wrap_' + action];\n}\nexport default getWrapBehavior;\n//# sourceMappingURL=get-wrap-behavior.js.map","/**\n * 封装事件,便于使用上下文this,和便于解除事件时使用\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction wrapBehavior(obj, action) {\n if (obj['_wrap_' + action]) {\n return obj['_wrap_' + action];\n }\n var method = function (e) {\n obj[action](e);\n };\n obj['_wrap_' + action] = method;\n return method;\n}\nexport default wrapBehavior;\n//# sourceMappingURL=wrap-behavior.js.map","var numColorCache = {};\nfunction numberToColor(num) {\n // 增加缓存\n var color = numColorCache[num];\n if (!color) {\n var str = num.toString(16);\n for (var i = str.length; i < 6; i++) {\n str = '0' + str;\n }\n color = '#' + str;\n numColorCache[num] = color;\n }\n return color;\n}\nexport default numberToColor;\n//# sourceMappingURL=number2color.js.map","var clamp = function (a, min, max) {\n if (a < min) {\n return min;\n }\n else if (a > max) {\n return max;\n }\n return a;\n};\nexport default clamp;\n//# sourceMappingURL=clamp.js.map","var fixedBase = function (v, base) {\n var str = base.toString();\n var index = str.indexOf('.');\n if (index === -1) {\n return Math.round(v);\n }\n var length = str.substr(index + 1).length;\n if (length > 20) {\n length = 20;\n }\n return parseFloat(v.toFixed(length));\n};\nexport default fixedBase;\n//# sourceMappingURL=fixed-base.js.map","import isNumber from './is-number';\nvar isDecimal = function (num) {\n return isNumber(num) && num % 1 !== 0;\n};\nexport default isDecimal;\n//# sourceMappingURL=is-decimal.js.map","import isNumber from './is-number';\nvar isEven = function (num) {\n return isNumber(num) && num % 2 === 0;\n};\nexport default isEven;\n//# sourceMappingURL=is-even.js.map","import isNumber from './is-number';\nvar isNegative = function (num) {\n return isNumber(num) && num < 0;\n};\nexport default isNegative;\n//# sourceMappingURL=is-negative.js.map","import isNumber from './is-number';\nvar isPositive = function (num) {\n return isNumber(num) && num > 0;\n};\nexport default isPositive;\n//# sourceMappingURL=is-positive.js.map","import isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nexport default (function (arr, fn) {\n if (!isArray(arr)) {\n return undefined;\n }\n var maxItem;\n var max = -Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = isFunction(fn) ? fn(item) : item[fn];\n if (v > max) {\n maxItem = item;\n max = v;\n }\n }\n return maxItem;\n});\n//# sourceMappingURL=max-by.js.map","import isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nexport default (function (arr, fn) {\n if (!isArray(arr)) {\n return undefined;\n }\n var minItem;\n var min = Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = isFunction(fn) ? fn(item) : item[fn];\n if (v < min) {\n minItem = item;\n min = v;\n }\n }\n return minItem;\n});\n//# sourceMappingURL=min-by.js.map","import each from './each';\nexport default each;\n//# sourceMappingURL=for-in.js.map","export default (function (obj, key) { return obj.hasOwnProperty(key); });\n//# sourceMappingURL=has.js.map","import has from './has';\nexport default has;\n//# sourceMappingURL=has-key.js.map","import contains from './contains';\nimport values from './values';\nexport default (function (obj, value) { return contains(values(obj), value); });\n//# sourceMappingURL=has-value.js.map","import toString from './to-string';\nvar lowerCase = function (str) {\n return toString(str).toLowerCase();\n};\nexport default lowerCase;\n//# sourceMappingURL=lower-case.js.map","import toString from './to-string';\nvar lowerFirst = function (value) {\n var str = toString(value);\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\nexport default lowerFirst;\n//# sourceMappingURL=lower-first.js.map","import toString from './to-string';\nvar upperCase = function (str) {\n return toString(str).toUpperCase();\n};\nexport default upperCase;\n//# sourceMappingURL=upper-case.js.map","var toString = {}.toString;\nvar getType = function (value) {\n return toString.call(value).replace(/^\\[object /, '').replace(/]$/, '');\n};\nexport default getType;\n//# sourceMappingURL=get-type.js.map","/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\nvar isArguments = function (value) {\n return isType(value, 'Arguments');\n};\nexport default isArguments;\n//# sourceMappingURL=is-arguments.js.map","/**\n * 是否是布尔类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\nvar isBoolean = function (value) {\n return isType(value, 'Boolean');\n};\nexport default isBoolean;\n//# sourceMappingURL=is-boolean.js.map","import isType from './is-type';\nvar isDate = function (value) {\n return isType(value, 'Date');\n};\nexport default isDate;\n//# sourceMappingURL=is-date.js.map","/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\nvar isError = function (value) {\n return isType(value, 'Error');\n};\nexport default isError;\n//# sourceMappingURL=is-error.js.map","/**\n * 判断是否为有限数\n * @return {Boolean}\n */\nimport isNumber from './is-number';\nexport default function (value) {\n return isNumber(value) && isFinite(value);\n}\n//# sourceMappingURL=is-finite.js.map","var isNull = function (value) {\n return value === null;\n};\nexport default isNull;\n//# sourceMappingURL=is-null.js.map","import isType from './is-type';\nvar isRegExp = function (str) {\n return isType(str, 'RegExp');\n};\nexport default isRegExp;\n//# sourceMappingURL=is-reg-exp.js.map","var isUndefined = function (value) {\n return value === undefined;\n};\nexport default isUndefined;\n//# sourceMappingURL=is-undefined.js.map","/**\n * 判断是否HTML元素\n * @return {Boolean} 是否HTML元素\n */\nvar isElement = function (o) {\n return o instanceof Element || o instanceof HTMLDocument;\n};\nexport default isElement;\n//# sourceMappingURL=is-element.js.map","export default function requestAnimationFrame(fn) {\n var method = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n // @ts-ignore\n window.mozRequestAnimationFrame ||\n // @ts-ignore\n window.msRequestAnimationFrame ||\n function (f) {\n return setTimeout(f, 16);\n };\n return method(fn);\n}\n;\n//# sourceMappingURL=request-animation-frame.js.map","export default function cancelAnimationFrame(handler) {\n var method = window.cancelAnimationFrame ||\n window.webkitCancelAnimationFrame ||\n // @ts-ignore\n window.mozCancelAnimationFrame ||\n // @ts-ignore\n window.msCancelAnimationFrame ||\n clearTimeout;\n method(handler);\n}\n;\n//# sourceMappingURL=clear-animation-frame.js.map","import mix from './mix';\nimport isFunction from './is-function';\nvar augment = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var c = args[0];\n for (var i = 1; i < args.length; i++) {\n var obj = args[i];\n if (isFunction(obj)) {\n obj = obj.prototype;\n }\n mix(c.prototype, obj);\n }\n};\nexport default augment;\n//# sourceMappingURL=augment.js.map","import isArray from './is-array';\nvar clone = function (obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n var rst;\n if (isArray(obj)) {\n rst = [];\n for (var i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n }\n else {\n rst[i] = obj[i];\n }\n }\n }\n else {\n rst = {};\n for (var k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n }\n else {\n rst[k] = obj[k];\n }\n }\n }\n return rst;\n};\nexport default clone;\n//# sourceMappingURL=clone.js.map","function debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this, args = arguments;\n var later = function () {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\nexport default debounce;\n//# sourceMappingURL=debounce.js.map","import isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nvar MAX_MIX_LEVEL = 5;\nfunction _deepMix(dist, src, level, maxLevel) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n var value = src[key];\n if (value !== null && isPlainObject(value)) {\n if (!isPlainObject(dist[key])) {\n dist[key] = {};\n }\n if (level < maxLevel) {\n _deepMix(dist[key], value, level + 1, maxLevel);\n }\n else {\n dist[key] = src[key];\n }\n }\n else if (isArray(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n }\n else if (value !== undefined) {\n dist[key] = value;\n }\n }\n }\n}\n// todo 重写\nvar deepMix = function (rst) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i += 1) {\n _deepMix(rst, args[i]);\n }\n return rst;\n};\nexport default deepMix;\n//# sourceMappingURL=deep-mix.js.map","import mix from './mix';\nimport isFunction from './is-function';\nvar extend = function (subclass, superclass, overrides, staticOverrides) {\n // 如果只提供父类构造函数,则自动生成子类构造函数\n if (!isFunction(superclass)) {\n overrides = superclass;\n superclass = subclass;\n subclass = function () { };\n }\n var create = Object.create ?\n function (proto, c) {\n return Object.create(proto, {\n constructor: {\n value: c\n }\n });\n } :\n function (proto, c) {\n function Tmp() { }\n Tmp.prototype = proto;\n var o = new Tmp();\n o.constructor = c;\n return o;\n };\n var superObj = create(superclass.prototype, subclass); // new superclass(),//实例化父类作为子类的prototype\n subclass.prototype = mix(superObj, subclass.prototype); // 指定子类的prototype\n subclass.superclass = create(superclass.prototype, superclass);\n mix(superObj, overrides);\n mix(subclass, staticOverrides);\n return subclass;\n};\nexport default extend;\n//# sourceMappingURL=extend.js.map","import isArrayLike from './is-array-like';\nvar indexOf = function (arr, obj) {\n if (!isArrayLike(arr)) {\n return -1;\n }\n var m = Array.prototype.indexOf;\n if (m) {\n return m.call(arr, obj);\n }\n var index = -1;\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === obj) {\n index = i;\n break;\n }\n }\n return index;\n};\nexport default indexOf;\n//# sourceMappingURL=index-of.js.map","import isFunction from './is-function';\nimport isEqual from './is-equal';\n/**\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [fn] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * isEqualWith(array, other, customizer); // => true\n */\nexport default (function (value, other, fn) {\n if (!isFunction(fn)) {\n return isEqual(value, other);\n }\n return !!fn(value, other);\n});\n//# sourceMappingURL=is-equal-with.js.map","import isArrayLike from './is-array-like';\nvar map = function (arr, func) {\n if (!isArrayLike(arr)) {\n // @ts-ignore\n return arr;\n }\n var result = [];\n for (var index = 0; index < arr.length; index++) {\n var value = arr[index];\n result.push(func(value, index));\n }\n return result;\n};\nexport default map;\n//# sourceMappingURL=map.js.map","import isNil from './is-nil';\nimport isObject from './is-object';\nvar identity = function (v) { return v; };\nexport default (function (object, func) {\n if (func === void 0) { func = identity; }\n var r = {};\n if (isObject(object) && !isNil(object)) {\n Object.keys(object).forEach(function (key) {\n // @ts-ignore\n r[key] = func(object[key], key);\n });\n }\n return r;\n});\n//# sourceMappingURL=map-values.js.map","import isString from './is-string';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param key\n * @param defaultValue\n */\nexport default (function (obj, key, defaultValue) {\n var p = 0;\n var keyArr = isString(key) ? key.split('.') : key;\n while (obj && p < keyArr.length) {\n obj = obj[keyArr[p++]];\n }\n return (obj === undefined || p < keyArr.length) ? defaultValue : obj;\n});\n//# sourceMappingURL=get.js.map","import isObject from './is-object';\nimport isString from './is-string';\nimport isNumber from './is-number';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param path\n * @param value\n */\nexport default (function (obj, path, value) {\n var o = obj;\n var keyArr = isString(path) ? path.split('.') : path;\n keyArr.forEach(function (key, idx) {\n // 不是最后一个\n if (idx < keyArr.length - 1) {\n if (!isObject(o[key])) {\n o[key] = isNumber(keyArr[idx + 1]) ? [] : {};\n }\n o = o[key];\n }\n else {\n o[key] = value;\n }\n });\n return obj;\n});\n//# sourceMappingURL=set.js.map","import reduce from './reduce';\nexport default (function (obj, keys) {\n return reduce(obj, function (r, curr, key) {\n if (!keys.includes(key)) {\n r[key] = curr;\n }\n return r;\n }, {});\n});\n//# sourceMappingURL=omit.js.map","export default (function (func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options)\n options = {};\n var later = function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout)\n context = args = null;\n };\n var throttled = function () {\n var now = Date.now();\n if (!previous && options.leading === false)\n previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout)\n context = args = null;\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n return throttled;\n});\n//# sourceMappingURL=throttle.js.map","import isArrayLike from './is-array-like';\nexport default (function (value) {\n return isArrayLike(value) ? Array.prototype.slice.call(value) : [];\n});\n//# sourceMappingURL=to-array.js.map","export default (function (v) { return v; });\n//# sourceMappingURL=identity.js.map","import isNil from './is-nil';\nimport isArraylike from './is-array-like';\nexport default function size(o) {\n if (isNil(o)) {\n return 0;\n }\n if (isArraylike(o)) {\n return o.length;\n }\n return Object.keys(o).length;\n}\n//# sourceMappingURL=size.js.map","import isString from './is-string';\nimport toString from './to-string';\nimport { default as measureTextWidth } from './measure-text-width';\n/**\n * 获取文本的 ... 文本。\n * 算法(减少每次 measureText 的长度,measureText 的性能跟字符串时间相关):\n * 1. 先通过 STEP 逐步计算,找到最后一个小于 maxWidth 的字符串\n * 2. 然后对最后这个字符串二分计算\n * @param text 需要计算的文本, 由于历史原因 除了支持string,还支持空值,number和数组等\n * @param maxWidth 最大宽度\n * @param font 字体\n * @param str 要替换的文本\n */\nexport default (function (text, maxWidth, font, str) {\n if (str === void 0) { str = '...'; }\n var STEP = 16; // 每次 16,调参工程师\n var PLACEHOLDER_WIDTH = measureTextWidth(str, font);\n var leftText = !isString(text) ? toString(text) : text;\n var leftWidth = maxWidth;\n var r = []; // 最终的分段字符串\n var currentText;\n var currentWidth;\n if (measureTextWidth(text, font) <= maxWidth) {\n return text;\n }\n // 首先通过 step 计算,找出最大的未超出长度的\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, STEP);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n if (currentWidth > leftWidth) {\n break;\n }\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(STEP);\n // 字符串整体没有超出\n if (!leftText) {\n return r.join('');\n }\n }\n // 最下的最后一个 STEP,使用 1 递增(用二分效果更高)\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, 1);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n break;\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(1);\n if (!leftText) {\n return r.join('');\n }\n }\n return \"\" + r.join('') + str;\n});\n//# sourceMappingURL=get-ellipsis-text.js.map","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { max, min } from '@antv/util';\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\nexport function distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\nexport function isNumberEqual(v1, v2) {\n return Math.abs(v1 - v2) < 0.001;\n}\nexport function getBBoxByArray(xArr, yArr) {\n var minX = min(xArr);\n var minY = min(yArr);\n var maxX = max(xArr);\n var maxY = max(yArr);\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\nexport function getBBoxRange(x1, y1, x2, y2) {\n return {\n minX: min([x1, x2]),\n maxX: max([x1, x2]),\n minY: min([y1, y2]),\n maxY: max([y1, y2]),\n };\n}\nexport function piMod(angle) {\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n//# sourceMappingURL=util.js.map","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","import { distance, getBBoxByArray } from './util';\nimport * as vec2 from 'gl-matrix/vec2';\nexport default {\n /**\n * 计算线段的包围盒\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {object} 包围盒对象\n */\n box: function (x1, y1, x2, y2) {\n return getBBoxByArray([x1, x2], [y1, y2]);\n },\n /**\n * 线段的长度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\n length: function (x1, y1, x2, y2) {\n return distance(x1, y1, x2, y2);\n },\n /**\n * 根据比例获取点\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} t 指定比例\n * @return {object} 包含 x, y 的点\n */\n pointAt: function (x1, y1, x2, y2, t) {\n return {\n x: (1 - t) * x1 + t * x2,\n y: (1 - t) * y1 + t * y2,\n };\n },\n /**\n * 点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointDistance: function (x1, y1, x2, y2, x, y) {\n // 投影距离 x1, y1 的向量,假设 p, p1, p2 三个点,投影点为 a\n // p1a = p1p.p1p2/|p1p2| * (p1p 的单位向量)\n var cross = (x2 - x1) * (x - x1) + (y2 - y1) * (y - y1);\n if (cross < 0) {\n return distance(x1, y1, x, y);\n }\n var lengthSquare = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n if (cross > lengthSquare) {\n return distance(x2, y2, x, y);\n }\n return this.pointToLine(x1, y1, x2, y2, x, y);\n },\n /**\n * 点到直线的距离,而不是点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointToLine: function (x1, y1, x2, y2, x, y) {\n var d = [x2 - x1, y2 - y1];\n // 如果端点相等,则判定点到点的距离\n if (vec2.exactEquals(d, [0, 0])) {\n return Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n }\n var u = [-d[1], d[0]];\n vec2.normalize(u, u);\n var a = [x - x1, y - y1];\n return Math.abs(vec2.dot(a, u));\n },\n /**\n * 线段的角度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 导数\n */\n tangentAngle: function (x1, y1, x2, y2) {\n return Math.atan2(y2 - y1, x2 - x1);\n },\n};\n//# sourceMappingURL=line.js.map","import { distance } from './util';\nvar EPSILON = 0.0001;\n/**\n * 使用牛顿切割法求最近的点\n * @param {number[]} xArr 点的 x 数组\n * @param {number[]} yArr 点的 y 数组\n * @param {number} x 指定的点 x\n * @param {number} y 指定的点 y\n * @param {Function} tCallback 差值函数\n */\nexport function nearestPoint(xArr, yArr, x, y, tCallback, length) {\n var t;\n var d = Infinity;\n var v0 = [x, y];\n var segNum = 20;\n if (length && length > 200) {\n segNum = length / 10;\n }\n var increaseRate = 1 / segNum;\n var interval = increaseRate / 10;\n for (var i = 0; i <= segNum; i++) {\n var _t = i * increaseRate;\n var v1 = [tCallback.apply(null, xArr.concat([_t])), tCallback.apply(null, yArr.concat([_t]))];\n var d1 = distance(v0[0], v0[1], v1[0], v1[1]);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n // 提前终止\n if (t === 0) {\n return {\n x: xArr[0],\n y: yArr[0],\n };\n }\n if (t === 1) {\n var count = xArr.length;\n return {\n x: xArr[count - 1],\n y: yArr[count - 1],\n };\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON) {\n break;\n }\n var prev = t - interval;\n var next = t + interval;\n var v1 = [tCallback.apply(null, xArr.concat([prev])), tCallback.apply(null, yArr.concat([prev]))];\n var d1 = distance(v0[0], v0[1], v1[0], v1[1]);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n var v2 = [tCallback.apply(null, xArr.concat([next])), tCallback.apply(null, yArr.concat([next]))];\n var d2 = distance(v0[0], v0[1], v2[0], v2[1]);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n return {\n x: tCallback.apply(null, xArr.concat([t])),\n y: tCallback.apply(null, yArr.concat([t])),\n };\n}\n// 近似求解 https://community.khronos.org/t/3d-cubic-bezier-segment-length/62363/2\nexport function snapLength(xArr, yArr) {\n var totalLength = 0;\n var count = xArr.length;\n for (var i = 0; i < count; i++) {\n var x = xArr[i];\n var y = yArr[i];\n var nextX = xArr[(i + 1) % count];\n var nextY = yArr[(i + 1) % count];\n totalLength += distance(x, y, nextX, nextY);\n }\n return totalLength / 2;\n}\n//# sourceMappingURL=bezier.js.map","import line from './line';\nimport { distance, isNumberEqual, getBBoxByArray, piMod } from './util';\nimport { nearestPoint } from './bezier';\n// 差值公式\nfunction quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * onet * p0 + 2 * t * onet * p1 + t * t * p2;\n}\n// 求极值\nfunction extrema(p0, p1, p2) {\n var a = p0 + p2 - 2 * p1;\n if (isNumberEqual(a, 0)) {\n return [0.5];\n }\n var rst = (p0 - p1) / a;\n if (rst <= 1 && rst >= 0) {\n return [rst];\n }\n return [];\n}\nfunction derivativeAt(p0, p1, p2, t) {\n return 2 * (1 - t) * (p1 - p0) + 2 * t * (p2 - p1);\n}\n// 分割贝塞尔曲线\nfunction divideQuadratic(x1, y1, x2, y2, x3, y3, t) {\n // 划分点\n var xt = quadraticAt(x1, x2, x3, t);\n var yt = quadraticAt(y1, y2, y3, t);\n // 分割的第一条曲线的控制点\n var controlPoint1 = line.pointAt(x1, y1, x2, y2, t);\n // 分割的第二条曲线的控制点\n var controlPoint2 = line.pointAt(x2, y2, x3, y3, t);\n return [\n [x1, y1, controlPoint1.x, controlPoint1.y, xt, yt],\n [xt, yt, controlPoint2.x, controlPoint2.y, x3, y3],\n ];\n}\n// 使用迭代法取贝塞尔曲线的长度\nfunction quadraticLength(x1, y1, x2, y2, x3, y3, iterationCount) {\n if (iterationCount === 0) {\n return (distance(x1, y1, x2, y2) + distance(x2, y2, x3, y3) + distance(x1, y1, x3, y3)) / 2;\n }\n var quadratics = divideQuadratic(x1, y1, x2, y2, x3, y3, 0.5);\n var left = quadratics[0];\n var right = quadratics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return quadraticLength.apply(null, left) + quadraticLength.apply(null, right);\n}\nexport default {\n box: function (x1, y1, x2, y2, x3, y3) {\n var xExtrema = extrema(x1, x2, x3)[0];\n var yExtrema = extrema(y1, y2, y3)[0];\n // 控制点不加入 box 的计算\n var xArr = [x1, x3];\n var yArr = [y1, y3];\n if (xExtrema !== undefined) {\n xArr.push(quadraticAt(x1, x2, x3, xExtrema));\n }\n if (yExtrema !== undefined) {\n yArr.push(quadraticAt(y1, y2, y3, yExtrema));\n }\n return getBBoxByArray(xArr, yArr);\n },\n length: function (x1, y1, x2, y2, x3, y3) {\n return quadraticLength(x1, y1, x2, y2, x3, y3, 3);\n },\n nearestPoint: function (x1, y1, x2, y2, x3, y3, x0, y0) {\n return nearestPoint([x1, x2, x3], [y1, y2, y3], x0, y0, quadraticAt);\n },\n pointDistance: function (x1, y1, x2, y2, x3, y3, x0, y0) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0);\n return distance(point.x, point.y, x0, y0);\n },\n interpolationAt: quadraticAt,\n pointAt: function (x1, y1, x2, y2, x3, y3, t) {\n return {\n x: quadraticAt(x1, x2, x3, t),\n y: quadraticAt(y1, y2, y3, t),\n };\n },\n divide: function (x1, y1, x2, y2, x3, y3, t) {\n return divideQuadratic(x1, y1, x2, y2, x3, y3, t);\n },\n tangentAngle: function (x1, y1, x2, y2, x3, y3, t) {\n var dx = derivativeAt(x1, x2, x3, t);\n var dy = derivativeAt(y1, y2, y3, t);\n var angle = Math.atan2(dy, dx);\n return piMod(angle);\n },\n};\n//# sourceMappingURL=quadratic.js.map","import { distance, isNumberEqual, getBBoxByArray, piMod } from './util';\nimport line from './line';\nimport { snapLength, nearestPoint } from './bezier';\nfunction cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t; // t * t * t 的性能大概是 Math.pow(t, 3) 的三倍\n return onet * onet * onet * p0 + 3 * p1 * t * onet * onet + 3 * p2 * t * t * onet + p3 * t * t * t;\n}\nfunction derivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (onet * onet * (p1 - p0) + 2 * onet * t * (p2 - p1) + t * t * (p3 - p2));\n}\nfunction extrema(p0, p1, p2, p3) {\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var c = 3 * p1 - 3 * p0;\n var extremas = [];\n var t1;\n var t2;\n var discSqrt;\n if (isNumberEqual(a, 0)) {\n if (!isNumberEqual(b, 0)) {\n t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (isNumberEqual(disc, 0)) {\n extremas.push(-b / (2 * a));\n }\n else if (disc > 0) {\n discSqrt = Math.sqrt(disc);\n t1 = (-b + discSqrt) / (2 * a);\n t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n extremas.push(t2);\n }\n }\n }\n return extremas;\n}\n// 分割贝塞尔曲线\nfunction divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n // 划分点\n var xt = cubicAt(x1, x2, x3, x4, t);\n var yt = cubicAt(y1, y2, y3, y4, t);\n // 计算两点之间的差值点\n var c1 = line.pointAt(x1, y1, x2, y2, t);\n var c2 = line.pointAt(x2, y2, x3, y3, t);\n var c3 = line.pointAt(x3, y3, x4, y4, t);\n var c12 = line.pointAt(c1.x, c1.y, c2.x, c2.y, t);\n var c23 = line.pointAt(c2.x, c2.y, c3.x, c3.y, t);\n return [\n [x1, y1, c1.x, c1.y, c12.x, c12.y, xt, yt],\n [xt, yt, c23.x, c23.y, c3.x, c3.y, x4, y4],\n ];\n}\n// 使用迭代法取贝塞尔曲线的长度,二阶和三阶分开写,更清晰和便于调试\nfunction cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, iterationCount) {\n if (iterationCount === 0) {\n return snapLength([x1, x2, x3, x4], [y1, y2, y3, y4]);\n }\n var cubics = divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, 0.5);\n var left = cubics[0];\n var right = cubics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return cubicLength.apply(null, left) + cubicLength.apply(null, right);\n}\nexport default {\n extrema: extrema,\n box: function (x1, y1, x2, y2, x3, y3, x4, y4) {\n var xArr = [x1, x4];\n var yArr = [y1, y4];\n var xExtrema = extrema(x1, x2, x3, x4);\n var yExtrema = extrema(y1, y2, y3, y4);\n for (var i = 0; i < xExtrema.length; i++) {\n xArr.push(cubicAt(x1, x2, x3, x4, xExtrema[i]));\n }\n for (var i = 0; i < yExtrema.length; i++) {\n yArr.push(cubicAt(y1, y2, y3, y4, yExtrema[i]));\n }\n return getBBoxByArray(xArr, yArr);\n },\n length: function (x1, y1, x2, y2, x3, y3, x4, y4) {\n // 迭代三次,划分成 8 段求长度\n return cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, 3);\n },\n nearestPoint: function (x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n return nearestPoint([x1, x2, x3, x4], [y1, y2, y3, y4], x0, y0, cubicAt, length);\n },\n pointDistance: function (x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length);\n return distance(point.x, point.y, x0, y0);\n },\n interpolationAt: cubicAt,\n pointAt: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return {\n x: cubicAt(x1, x2, x3, x4, t),\n y: cubicAt(y1, y2, y3, y4, t),\n };\n },\n divide: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t);\n },\n tangentAngle: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n var dx = derivativeAt(x1, x2, x3, x4, t);\n var dy = derivativeAt(y1, y2, y3, y4, t);\n return piMod(Math.atan2(dy, dx));\n },\n};\n//# sourceMappingURL=cubic.js.map","/**\n * @fileoverview 椭圆的一些计算,\n * - 周长计算参考:https://www.mathsisfun.com/geometry/ellipse-perimeter.html\n * - 距离计算参考:https://wet-robots.ghost.io/simple-method-for-distance-to-ellipse/\n * @author dxq613@gmail.com\n */\nimport { distance, piMod } from './util';\nfunction copysign(v1, v2) {\n var absv = Math.abs(v1);\n return v2 > 0 ? absv : absv * -1;\n}\nexport default {\n /**\n * 包围盒计算\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {object} 包围盒\n */\n box: function (x, y, rx, ry) {\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2,\n };\n },\n /**\n * 计算周长,使用近似法\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {number} 椭圆周长\n */\n length: function (x, y, rx, ry) {\n return Math.PI * (3 * (rx + ry) - Math.sqrt((3 * rx + ry) * (rx + 3 * ry)));\n },\n /**\n * 距离椭圆最近的点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {object} 椭圆上距离指定点最近的点\n */\n nearestPoint: function (x, y, rx, ry, x0, y0) {\n var a = rx;\n var b = ry;\n // 假如椭圆半径为0则返回圆心\n if (a === 0 || b === 0) {\n return {\n x: x,\n y: y,\n };\n }\n // 转换成 0, 0 为中心的椭圆计算\n var relativeX = x0 - x;\n var relativeY = y0 - y;\n var px = Math.abs(relativeX);\n var py = Math.abs(relativeY);\n var squareA = a * a;\n var squareB = b * b;\n // const angle0 = Math.atan2(relativeY, relativeX);\n var t = Math.PI / 4;\n var nearestX; // 椭圆上的任一点\n var nearestY;\n // 迭代 4 次\n for (var i = 0; i < 4; i++) {\n nearestX = a * Math.cos(t);\n nearestY = b * Math.sin(t);\n var ex = ((squareA - squareB) * Math.pow(Math.cos(t), 3)) / a;\n var ey = ((squareB - squareA) * Math.pow(Math.sin(t), 3)) / b;\n var rx1 = nearestX - ex;\n var ry1 = nearestY - ey;\n var qx = px - ex;\n var qy = py - ey;\n var r = Math.hypot(ry1, rx1);\n var q = Math.hypot(qy, qx);\n var delta_c = r * Math.asin((rx1 * qy - ry1 * qx) / (r * q));\n var delta_t = delta_c / Math.sqrt(squareA + squareB - nearestX * nearestX - nearestY * nearestY);\n t += delta_t;\n t = Math.min(Math.PI / 2, Math.max(0, t));\n }\n return {\n x: x + copysign(nearestX, relativeX),\n y: y + copysign(nearestY, relativeY),\n };\n },\n /**\n * 点到椭圆最近的距离\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {number} 点到椭圆的距离\n */\n pointDistance: function (x, y, rx, ry, x0, y0) {\n var nearestPoint = this.nearestPoint(x, y, rx, ry, x0, y0);\n return distance(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n /**\n * 根据比例获取点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例,x轴方向为 0\n * @return {object} 点\n */\n pointAt: function (x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n return {\n x: x + rx * Math.cos(angle),\n y: y + ry * Math.sin(angle),\n };\n },\n /**\n * 根据比例计算切线角度\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例 0 - 1 之间,x轴方向为 0。在 0-1 范围之外是循环还是返回 null,还需要调整\n * @return {number} 角度,在 0 - 2PI 之间\n */\n tangentAngle: function (x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n // 直接使用 x,y 的导数计算, x' = -rx * sin(t); y' = ry * cos(t);\n var tangentAngle = Math.atan2(ry * Math.cos(angle), -rx * Math.sin(angle));\n // 也可以使用指定点的切线方程计算,成本有些高\n // const point = this.pointAt(0, 0, rx, ry, t); // 椭圆的切线同椭圆的中心不相关\n // let tangentAngle = -1 * Math.atan((ry * ry * point.x) / (rx * rx * point.y));\n // if (angle >= 0 && angle <= Math.PI) {\n // tangentAngle += Math.PI;\n // }\n return piMod(tangentAngle);\n },\n};\n//# sourceMappingURL=ellipse.js.map","import { distance, piMod } from './util';\nimport ellipse from './ellipse';\n// 偏导数 x\nfunction derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.cos(xRotation) * Math.sin(angle) - ry * Math.sin(xRotation) * Math.cos(angle);\n}\n// 偏导数 y\nfunction derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.sin(xRotation) * Math.sin(angle) + ry * Math.cos(xRotation) * Math.cos(angle);\n}\n// x 的极值\nfunction xExtrema(rx, ry, xRotation) {\n return Math.atan((-ry / rx) * Math.tan(xRotation));\n}\n// y 的极值\nfunction yExtrema(rx, ry, xRotation) {\n return Math.atan(ry / (rx * Math.tan(xRotation)));\n}\n// 根据角度求 x 坐标\nfunction xAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.cos(xRotation) * Math.cos(angle) - ry * Math.sin(xRotation) * Math.sin(angle) + cx;\n}\n// 根据角度求 y 坐标\nfunction yAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.sin(xRotation) * Math.cos(angle) + ry * Math.cos(xRotation) * Math.sin(angle) + cy;\n}\n// 获取点在椭圆上的角度\nfunction getAngle(rx, ry, x0, y0) {\n var angle = Math.atan2(y0 * rx, x0 * ry);\n // 转换到 0 - 2PI 内\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n// 根据角度获取,x,y\nfunction getPoint(rx, ry, angle) {\n return {\n x: rx * Math.cos(angle),\n y: ry * Math.sin(angle),\n };\n}\n// 旋转\nfunction rotate(x, y, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return [x * cos - y * sin, x * sin + y * cos];\n}\nexport default {\n /**\n * 计算包围盒\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @return {object} 包围盒对象\n */\n box: function (cx, cy, rx, ry, xRotation, startAngle, endAngle) {\n var xDim = xExtrema(rx, ry, xRotation);\n var minX = Infinity;\n var maxX = -Infinity;\n var xs = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var xAngle = xDim + i;\n if (startAngle < endAngle) {\n if (startAngle < xAngle && xAngle < endAngle) {\n xs.push(xAngle);\n }\n }\n else {\n if (endAngle < xAngle && xAngle < startAngle) {\n xs.push(xAngle);\n }\n }\n }\n for (var i = 0; i < xs.length; i++) {\n var x = xAt(cx, cy, rx, ry, xRotation, xs[i]);\n if (x < minX) {\n minX = x;\n }\n if (x > maxX) {\n maxX = x;\n }\n }\n var yDim = yExtrema(rx, ry, xRotation);\n var minY = Infinity;\n var maxY = -Infinity;\n var ys = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var yAngle = yDim + i;\n if (startAngle < endAngle) {\n if (startAngle < yAngle && yAngle < endAngle) {\n ys.push(yAngle);\n }\n }\n else {\n if (endAngle < yAngle && yAngle < startAngle) {\n ys.push(yAngle);\n }\n }\n }\n for (var i = 0; i < ys.length; i++) {\n var y = yAt(cx, cy, rx, ry, xRotation, ys[i]);\n if (y < minY) {\n minY = y;\n }\n if (y > maxY) {\n maxY = y;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n },\n /**\n * 获取圆弧的长度,计算圆弧长度时不考虑旋转角度,\n * 仅跟 rx, ry, startAngle, endAngle 相关\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n */\n length: function (cx, cy, rx, ry, xRotation, startAngle, endAngle) { },\n /**\n * 获取指定点到圆弧的最近距离的点\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @param {number} x0 指定点的 x\n * @param {number} y0 指定点的 y\n * @return {object} 到指定点最近距离的点\n */\n nearestPoint: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n // 将最近距离问题转换成到椭圆中心 0,0 没有旋转的椭圆问题\n var relativeVector = rotate(x0 - cx, y0 - cy, -xRotation);\n var x1 = relativeVector[0], y1 = relativeVector[1];\n // 计算点到椭圆的最近的点\n var relativePoint = ellipse.nearestPoint(0, 0, rx, ry, x1, y1);\n // 获取点在椭圆上的角度\n var angle = getAngle(rx, ry, relativePoint.x, relativePoint.y);\n // 点没有在圆弧上\n if (angle < startAngle) {\n // 小于起始圆弧\n relativePoint = getPoint(rx, ry, startAngle);\n }\n else if (angle > endAngle) {\n // 大于结束圆弧\n relativePoint = getPoint(rx, ry, endAngle);\n }\n // 旋转到 xRotation 的角度\n var vector = rotate(relativePoint.x, relativePoint.y, xRotation);\n return {\n x: vector[0] + cx,\n y: vector[1] + cy,\n };\n },\n pointDistance: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n var nearestPoint = this.nearestPoint(cx, cy, rx, ry, x0, y0);\n return distance(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n pointAt: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n return {\n x: xAt(cx, cy, rx, ry, xRotation, angle),\n y: yAt(cx, cy, rx, ry, xRotation, angle),\n };\n },\n tangentAngle: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n var dx = derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n var dy = derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n return piMod(Math.atan2(dy, dx));\n },\n};\n//# sourceMappingURL=arc.js.map","import line from './line';\nimport { distance } from './util';\nfunction analyzePoints(points) {\n // 计算每段的长度和总的长度\n var totalLength = 0;\n var segments = [];\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n var length_1 = distance(from[0], from[1], to[0], to[1]);\n var seg = {\n from: from,\n to: to,\n length: length_1,\n };\n segments.push(seg);\n totalLength += length_1;\n }\n return { segments: segments, totalLength: totalLength };\n}\nexport function lengthOfSegment(points) {\n if (points.length < 2) {\n return 0;\n }\n var totalLength = 0;\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n totalLength += distance(from[0], from[1], to[0], to[1]);\n }\n return totalLength;\n}\n/**\n * 按照比例在数据片段中获取点\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n * @return {object} 点的坐标\n */\nexport function pointAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return null;\n }\n var _a = analyzePoints(points), segments = _a.segments, totalLength = _a.totalLength;\n // 多个点有可能重合\n if (totalLength === 0) {\n return {\n x: points[0][0],\n y: points[0][1],\n };\n }\n // 计算比例\n var startRatio = 0;\n var point = null;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from, to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n var localRatio = (t - startRatio) / currentRatio;\n point = line.pointAt(from[0], from[1], to[0], to[1], localRatio);\n break;\n }\n startRatio += currentRatio;\n }\n return point;\n}\n/**\n * 按照比例在数据片段中获取切线的角度\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n */\nexport function angleAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return 0;\n }\n var _a = analyzePoints(points), segments = _a.segments, totalLength = _a.totalLength;\n // 计算比例\n var startRatio = 0;\n var angle = 0;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from, to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n break;\n }\n startRatio += currentRatio;\n }\n return angle;\n}\nexport function distanceAtSegment(points, x, y) {\n var minDistance = Infinity;\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i];\n var nextPoint = points[i + 1];\n var distance_1 = line.pointDistance(point[0], point[1], nextPoint[0], nextPoint[1], x, y);\n if (distance_1 < minDistance) {\n minDistance = distance_1;\n }\n }\n return minDistance;\n}\n//# sourceMappingURL=segments.js.map","import { pointAtSegments, angleAtSegments, distanceAtSegment, lengthOfSegment } from './segments';\nimport { getBBoxByArray } from './util';\nexport default {\n /**\n * 计算多折线的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box: function (points) {\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return getBBoxByArray(xArr, yArr);\n },\n /**\n * 计算多折线的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多条边的长度\n */\n length: function (points) {\n return lengthOfSegment(points);\n },\n /**\n * 根据比例获取多折线的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt: function (points, t) {\n return pointAtSegments(points, t);\n },\n /**\n * 指定点到多折线的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多折线的距离\n */\n pointDistance: function (points, x, y) {\n return distanceAtSegment(points, x, y);\n },\n /**\n * 根据比例获取多折线的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle: function (points, t) {\n return angleAtSegments(points, t);\n },\n};\n//# sourceMappingURL=polyline.js.map","import { pointAtSegments, angleAtSegments, distanceAtSegment, lengthOfSegment } from './segments';\nimport polyline from './polyline';\nfunction getAllPoints(points) {\n var tmp = points.slice(0);\n if (points.length) {\n tmp.push(points[0]);\n }\n return tmp;\n}\nexport default {\n /**\n * 计算多边形的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box: function (points) {\n return polyline.box(points);\n },\n /**\n * 计算多边形的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多边形边的长度\n */\n length: function (points) {\n return lengthOfSegment(getAllPoints(points));\n },\n /**\n * 根据比例获取多边形的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多边形的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt: function (points, t) {\n return pointAtSegments(getAllPoints(points), t);\n },\n /**\n * 指定点到多边形的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多边形的距离\n */\n pointDistance: function (points, x, y) {\n return distanceAtSegment(getAllPoints(points), x, y);\n },\n /**\n * 根据比例获取多边形的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多边形的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle: function (points, t) {\n return angleAtSegments(getAllPoints(points), t);\n },\n};\n//# sourceMappingURL=polygon.js.map","export function getPixelRatio() {\n return window ? window.devicePixelRatio : 1;\n}\n\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n */\nexport function distance(x1: number, y1: number, x2: number, y2: number) {\n const dx = x1 - x2;\n const dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\n/**\n * 是否在包围盒内\n * @param {number} minX 包围盒开始的点 x\n * @param {number} minY 包围盒开始的点 y\n * @param {number} width 宽度\n * @param {number} height 高度\n * @param {[type]} x 检测点的 x\n * @param {[type]} y 监测点的 y\n */\nexport function inBox(minX: number, minY: number, width: number, height: number, x, y) {\n return x >= minX && x <= minX + width && y >= minY && y <= minY + height;\n}\n\nexport function intersectRect(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n\n// 合并两个区域\nexport function mergeRegion(region1, region2) {\n if (!region1 || !region2) {\n return region1 || region2;\n }\n return {\n minX: Math.min(region1.minX, region2.minX),\n minY: Math.min(region1.minY, region2.minY),\n maxX: Math.max(region1.maxX, region2.maxX),\n maxY: Math.max(region1.maxY, region2.maxY),\n };\n}\n\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nexport function isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n\nexport {\n isNil,\n isString,\n isFunction,\n isArray,\n each,\n toRadian,\n mod,\n isNumberEqual,\n requestAnimationFrame,\n clearAnimationFrame,\n} from '@antv/util';\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/**\n * @fileoverview 矩阵运算,本来是要引入 gl-matrix, 但是考虑到 g-mobile 对大小有限制,同时 g-webgl 使用的 matrix 不一致\n * 所以,这里仅实现 2D 几个运算,上层自己引入 gl-matrix\n * @author dxq613@gmail.com\n */\n/**\n * 3阶矩阵相乘\n * @param {number[]} a 矩阵1\n * @param {number[]} b 矩阵2\n */\nexport function multiplyMatrix(a, b) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b00 = b[0];\n var b01 = b[1];\n var b02 = b[2];\n var b10 = b[3];\n var b11 = b[4];\n var b12 = b[5];\n var b20 = b[6];\n var b21 = b[7];\n var b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * 3阶矩阵同2阶向量相乘\n * @param {number[]} m 矩阵\n * @param {number[]} v 二阶向量\n */\nexport function multiplyVec2(m, v) {\n var out = [];\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * 矩阵的逆\n * @param {number[]} a 矩阵\n */\nexport function invert(a) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20;\n // Calculate the determinant\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n//# sourceMappingURL=matrix.js.map","import { AbstractShape } from '@antv/g-base';\nimport { ChangeType, BBox } from '@antv/g-base';\nimport { isNil, intersectRect } from '../util/util';\nimport { applyAttrsToContext, refreshElement } from '../util/draw';\nimport { getBBoxMethod } from '@antv/g-base';\nimport { Region } from '../types';\nimport * as Shape from './index';\nimport Group from '../group';\n\nclass ShapeBase extends AbstractShape {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n // 设置默认值\n return {\n ...attrs,\n lineWidth: 1,\n lineAppendWidth: 0,\n strokeOpacity: 1,\n fillOpacity: 1,\n };\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n refreshElement(this, changeType);\n }\n\n calculateBBox(): BBox {\n const type = this.get('type');\n const lineWidth = this.getHitLineWidth();\n // const attrs = this.attr();\n const bboxMethod = getBBoxMethod(type);\n const box = bboxMethod(this);\n const halfLineWidth = lineWidth / 2;\n const minX = box.x - halfLineWidth;\n const minY = box.y - halfLineWidth;\n const maxX = box.x + box.width + halfLineWidth;\n const maxY = box.y + box.height + halfLineWidth;\n return {\n x: minX,\n minX,\n y: minY,\n minY,\n width: box.width + lineWidth,\n height: box.height + lineWidth,\n maxX,\n maxY,\n };\n }\n\n isFill() {\n return !!this.attrs['fill'] || this.isClipShape();\n }\n\n isStroke() {\n return !!this.attrs['stroke'];\n }\n\n // 同 shape 中的方法重复了\n _applyClip(context, clip: ShapeBase) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n applyAttrsToContext(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n }\n\n // 绘制图形时需要考虑 region 限制\n draw(context: CanvasRenderingContext2D, region?: Region) {\n const clip = this.cfg.clipShape;\n // 如果指定了 region,同时不允许刷新时,直接返回\n if (region) {\n if (this.cfg.refresh === false) {\n // this._afterDraw();\n this.set('hasChanged', false);\n return;\n }\n // 是否相交需要考虑 clip 的包围盒\n const bbox = this.getCanvasBBox();\n if (!intersectRect(region, bbox)) {\n // 图形的包围盒与重绘区域不相交时,也需要清除标记\n this.set('hasChanged', false);\n // 存在多种情形需要更新 cacheCanvasBBox 和 isInview 的判定\n // 1. 之前图形在视窗内,但是现在不再视窗内\n // 2. 如果当前的图形以及父元素都没有发生过变化,refresh = false 不会走到这里,所以这里的图形都是父元素发生变化,但是没有在视图内的元素\n if (this.cfg.isInView) {\n this._afterDraw();\n }\n return;\n }\n }\n context.save();\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n applyAttrsToContext(context, this);\n this._applyClip(context, clip as ShapeBase);\n this.drawPath(context);\n context.restore();\n this._afterDraw();\n }\n\n private getCanvasViewBox() {\n const canvas = this.cfg.canvas;\n if (canvas) {\n // @ts-ignore\n return canvas.getViewRange();\n }\n return null;\n }\n\n cacheCanvasBBox() {\n const canvasBBox = this.getCanvasViewBox();\n // 绘制的时候缓存包围盒\n if (canvasBBox) {\n const bbox = this.getCanvasBBox();\n const isInView = intersectRect(bbox, canvasBBox);\n this.set('isInView', isInView);\n // 不再视窗内 cacheCanvasBBox 设置成 null,会提升局部渲染的性能,\n // 因为在局部渲染影响的包围盒计算时不考虑这个图形的包围盒\n // 父元素 cacheCanvasBBox 计算的时候也不计算\n if (isInView) {\n this.set('cacheCanvasBBox', bbox);\n } else {\n this.set('cacheCanvasBBox', null);\n }\n }\n }\n\n _afterDraw() {\n this.cacheCanvasBBox();\n // 绘制后消除标记\n this.set('hasChanged', false);\n this.set('refresh', null);\n }\n\n skipDraw() {\n this.set('cacheCanvasBBox', null);\n this.set('isInView', null);\n this.set('hasChanged', false);\n }\n\n /**\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n drawPath(context: CanvasRenderingContext2D) {\n this.createPath(context);\n this.strokeAndFill(context);\n this.afterDrawPath(context);\n }\n\n /**\n * @protected\n * 填充图形\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n fill(context: CanvasRenderingContext2D) {\n context.fill();\n }\n\n /**\n * @protected\n * 绘制图形边框\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n stroke(context: CanvasRenderingContext2D) {\n context.stroke();\n }\n\n // 绘制或者填充\n strokeAndFill(context) {\n const { lineWidth, opacity, strokeOpacity, fillOpacity } = this.attrs;\n\n if (this.isFill()) {\n if (!isNil(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n } else {\n this.fill(context);\n }\n }\n\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!isNil(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = strokeOpacity;\n }\n this.stroke(context);\n }\n }\n this.afterDrawPath(context);\n }\n\n /**\n * @protected\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n createPath(context: CanvasRenderingContext2D) {}\n\n /**\n * 绘制完成 path 后的操作\n * @param {CanvasRenderingContext2D} context 上下文\n */\n afterDrawPath(context: CanvasRenderingContext2D) {}\n\n isInShape(refX: number, refY: number): boolean {\n // return HitUtil.isHitShape(this, refX, refY);\n const isStroke = this.isStroke();\n const isFill = this.isFill();\n const lineWidth = this.getHitLineWidth();\n return this.isInStrokeOrPath(refX, refY, isStroke, isFill, lineWidth);\n }\n\n // 之所以不拆成 isInStroke 和 isInPath 在于两者存在一些共同的计算\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n return false;\n }\n\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n getHitLineWidth() {\n if (!this.isStroke()) {\n return 0;\n }\n const attrs = this.attrs;\n return attrs['lineWidth'] + attrs['lineAppendWidth'];\n }\n}\n\nexport default ShapeBase;\n","import { mat3, vec2, vec3 } from 'gl-matrix';\nimport * as ext from './ext';\nexport { mat3, vec2, vec3, ext };\n//# sourceMappingURL=index.js.map","import { each, isArray } from '@antv/util';\nvar SPACES = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nvar PATH_COMMAND = new RegExp(\"([a-z])[\" + SPACES + \",]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[\" + SPACES + \"]*,?[\" + SPACES + \"]*)+)\", 'ig');\nvar PATH_VALUES = new RegExp(\"(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[\" + SPACES + \"]*,?[\" + SPACES + \"]*\", 'ig');\n// Parse given path string into an array of arrays of path segments\nvar parsePathString = function (pathString) {\n if (!pathString) {\n return null;\n }\n if (isArray(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n }\n else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return pathString;\n });\n return data;\n};\n// http://schepers.cc/getting-to-the-point\nvar catmullRomToBezier = function (crp, z) {\n var d = [];\n // @ts-ignore\n for (var i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {\n var p = [\n {\n x: +crp[i - 2],\n y: +crp[i - 1],\n },\n {\n x: +crp[i],\n y: +crp[i + 1],\n },\n {\n x: +crp[i + 2],\n y: +crp[i + 3],\n },\n {\n x: +crp[i + 4],\n y: +crp[i + 5],\n },\n ];\n if (z) {\n if (!i) {\n p[0] = {\n x: +crp[iLen - 2],\n y: +crp[iLen - 1],\n };\n }\n else if (iLen - 4 === i) {\n p[3] = {\n x: +crp[0],\n y: +crp[1],\n };\n }\n else if (iLen - 2 === i) {\n p[2] = {\n x: +crp[0],\n y: +crp[1],\n };\n p[3] = {\n x: +crp[2],\n y: +crp[3],\n };\n }\n }\n else {\n if (iLen - 4 === i) {\n p[3] = p[2];\n }\n else if (!i) {\n p[0] = {\n x: +crp[i],\n y: +crp[i + 1],\n };\n }\n }\n d.push([\n 'C',\n (-p[0].x + 6 * p[1].x + p[2].x) / 6,\n (-p[0].y + 6 * p[1].y + p[2].y) / 6,\n (p[1].x + 6 * p[2].x - p[3].x) / 6,\n (p[1].y + 6 * p[2].y - p[3].y) / 6,\n p[2].x,\n p[2].y,\n ]);\n }\n return d;\n};\nvar ellipsePath = function (x, y, rx, ry, a) {\n var res = [];\n if (a === null && ry === null) {\n ry = rx;\n }\n x = +x;\n y = +y;\n rx = +rx;\n ry = +ry;\n if (a !== null) {\n var rad = Math.PI / 180;\n var x1 = x + rx * Math.cos(-ry * rad);\n var x2 = x + rx * Math.cos(-a * rad);\n var y1 = y + rx * Math.sin(-ry * rad);\n var y2 = y + rx * Math.sin(-a * rad);\n res = [\n ['M', x1, y1],\n ['A', rx, rx, 0, +(a - ry > 180), 0, x2, y2],\n ];\n }\n else {\n res = [['M', x, y], ['m', 0, -ry], ['a', rx, ry, 0, 1, 1, 0, 2 * ry], ['a', rx, ry, 0, 1, 1, 0, -2 * ry], ['z']];\n }\n return res;\n};\nvar pathToAbsolute = function (pathArray) {\n pathArray = parsePathString(pathArray);\n if (!pathArray || !pathArray.length) {\n return [['M', 0, 0]];\n }\n var res = [];\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n var start = 0;\n var pa0;\n var dots;\n if (pathArray[0][0] === 'M') {\n x = +pathArray[0][1];\n y = +pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res[0] = ['M', x, y];\n }\n var crz = pathArray.length === 3 &&\n pathArray[0][0] === 'M' &&\n pathArray[1][0].toUpperCase() === 'R' &&\n pathArray[2][0].toUpperCase() === 'Z';\n for (var r = void 0, pa = void 0, i = start, ii = pathArray.length; i < ii; i++) {\n res.push((r = []));\n pa = pathArray[i];\n pa0 = pa[0];\n if (pa0 !== pa0.toUpperCase()) {\n r[0] = pa0.toUpperCase();\n switch (r[0]) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'R':\n dots = [x, y].concat(pa.slice(1));\n for (var j = 2, jj = dots.length; j < jj; j++) {\n dots[j] = +dots[j] + x;\n dots[++j] = +dots[j] + y;\n }\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n break;\n case 'O':\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n break;\n case 'U':\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n break; // for lint\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + (j % 2 ? x : y);\n }\n }\n }\n else if (pa0 === 'R') {\n dots = [x, y].concat(pa.slice(1));\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n r = ['R'].concat(pa.slice(-2));\n }\n else if (pa0 === 'O') {\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n }\n else if (pa0 === 'U') {\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n }\n else {\n for (var k = 0, kk = pa.length; k < kk; k++) {\n r[k] = pa[k];\n }\n }\n pa0 = pa0.toUpperCase();\n if (pa0 !== 'O') {\n switch (r[0]) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n break;\n case 'V':\n y = r[1];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break; // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n }\n }\n return res;\n};\nvar l2c = function (x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n};\nvar q2c = function (x1, y1, ax, ay, x2, y2) {\n var _13 = 1 / 3;\n var _23 = 2 / 3;\n return [_13 * x1 + _23 * ax, _13 * y1 + _23 * ay, _13 * x2 + _23 * ax, _13 * y2 + _23 * ay, x2, y2];\n};\nvar a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n // for more information of where this math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n if (rx === ry) {\n rx += 1;\n }\n var _120 = (Math.PI * 120) / 180;\n var rad = (Math.PI / 180) * (+angle || 0);\n var res = [];\n var xy;\n var f1;\n var f2;\n var cx;\n var cy;\n var rotate = function (x, y, rad) {\n var X = x * Math.cos(rad) - y * Math.sin(rad);\n var Y = x * Math.sin(rad) + y * Math.cos(rad);\n return {\n x: X,\n y: Y,\n };\n };\n if (!recursive) {\n xy = rotate(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotate(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n if (x1 === x2 && y1 === y2) {\n // 若弧的起始点和终点重叠则错开一点\n x2 += 1;\n y2 += 1;\n }\n // const cos = Math.cos(Math.PI / 180 * angle);\n // const sin = Math.sin(Math.PI / 180 * angle);\n var x = (x1 - x2) / 2;\n var y = (y1 - y2) / 2;\n var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n if (h > 1) {\n h = Math.sqrt(h);\n rx = h * rx;\n ry = h * ry;\n }\n var rx2 = rx * rx;\n var ry2 = ry * ry;\n var k = (large_arc_flag === sweep_flag ? -1 : 1) *\n Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));\n cx = (k * rx * y) / ry + (x1 + x2) / 2;\n cy = (k * -ry * x) / rx + (y1 + y2) / 2;\n // @ts-ignore\n f1 = Math.asin(((y1 - cy) / ry).toFixed(9));\n // @ts-ignore\n f2 = Math.asin(((y2 - cy) / ry).toFixed(9));\n f1 = x1 < cx ? Math.PI - f1 : f1;\n f2 = x2 < cx ? Math.PI - f2 : f2;\n f1 < 0 && (f1 = Math.PI * 2 + f1);\n f2 < 0 && (f2 = Math.PI * 2 + f2);\n if (sweep_flag && f1 > f2) {\n f1 = f1 - Math.PI * 2;\n }\n if (!sweep_flag && f2 > f1) {\n f2 = f2 - Math.PI * 2;\n }\n }\n else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n var df = f2 - f1;\n if (Math.abs(df) > _120) {\n var f2old = f2;\n var x2old = x2;\n var y2old = y2;\n f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * Math.cos(f2);\n y2 = cy + ry * Math.sin(f2);\n res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n var c1 = Math.cos(f1);\n var s1 = Math.sin(f1);\n var c2 = Math.cos(f2);\n var s2 = Math.sin(f2);\n var t = Math.tan(df / 4);\n var hx = (4 / 3) * rx * t;\n var hy = (4 / 3) * ry * t;\n var m1 = [x1, y1];\n var m2 = [x1 + hx * s1, y1 - hy * c1];\n var m3 = [x2 + hx * s2, y2 - hy * c2];\n var m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4].concat(res);\n }\n res = [m2, m3, m4].concat(res).join().split(',');\n var newres = [];\n for (var i = 0, ii = res.length; i < ii; i++) {\n newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n }\n return newres;\n};\nvar pathToCurve = function (path, path2) {\n var p = pathToAbsolute(path);\n var p2 = path2 && pathToAbsolute(path2);\n var attrs = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n var attrs2 = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n var pcoms1 = []; // path commands of original path p\n var pcoms2 = []; // path commands of original path p2\n var pfirst = ''; // temporary holder for original path command\n var pcom = ''; // holder for previous path command of original path\n var ii;\n var processPath = function (path, d, pcom) {\n var nx;\n var ny;\n if (!path) {\n return ['C', d.x, d.y, d.x, d.y, d.x, d.y];\n }\n !(path[0] in\n {\n T: 1,\n Q: 1,\n }) && (d.qx = d.qy = null);\n switch (path[0]) {\n case 'M':\n d.X = path[1];\n d.Y = path[2];\n break;\n case 'A':\n path = ['C'].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1))));\n break;\n case 'S':\n if (pcom === 'C' || pcom === 'S') {\n // In \"S\" case we have to take into account, if the previous command is C/S.\n nx = d.x * 2 - d.bx; // And reflect the previous\n ny = d.y * 2 - d.by; // command's control point relative to the current point.\n }\n else {\n // or some else or nothing\n nx = d.x;\n ny = d.y;\n }\n path = ['C', nx, ny].concat(path.slice(1));\n break;\n case 'T':\n if (pcom === 'Q' || pcom === 'T') {\n // In \"T\" case we have to take into account, if the previous command is Q/T.\n d.qx = d.x * 2 - d.qx; // And make a reflection similar\n d.qy = d.y * 2 - d.qy; // to case \"S\".\n }\n else {\n // or something else or nothing\n d.qx = d.x;\n d.qy = d.y;\n }\n path = ['C'].concat(q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n break;\n case 'Q':\n d.qx = path[1];\n d.qy = path[2];\n path = ['C'].concat(q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n break;\n case 'L':\n path = ['C'].concat(l2c(d.x, d.y, path[1], path[2]));\n break;\n case 'H':\n path = ['C'].concat(l2c(d.x, d.y, path[1], d.y));\n break;\n case 'V':\n path = ['C'].concat(l2c(d.x, d.y, d.x, path[1]));\n break;\n case 'Z':\n path = ['C'].concat(l2c(d.x, d.y, d.X, d.Y));\n break;\n default:\n break;\n }\n return path;\n };\n var fixArc = function (pp, i) {\n if (pp[i].length > 7) {\n pp[i].shift();\n var pi = pp[i];\n while (pi.length) {\n pcoms1[i] = 'A'; // if created multiple C:s, their original seg is saved\n p2 && (pcoms2[i] = 'A'); // the same as above\n pp.splice(i++, 0, ['C'].concat(pi.splice(0, 6)));\n }\n pp.splice(i, 1);\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n var fixM = function (path1, path2, a1, a2, i) {\n if (path1 && path2 && path1[i][0] === 'M' && path2[i][0] !== 'M') {\n path2.splice(i, 0, ['M', a2.x, a2.y]);\n a1.bx = 0;\n a1.by = 0;\n a1.x = path1[i][1];\n a1.y = path1[i][2];\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n for (var i = 0; i < ii; i++) {\n p[i] && (pfirst = p[i][0]); // save current path command\n if (pfirst !== 'C') {\n // C is not saved yet, because it may be result of conversion\n pcoms1[i] = pfirst; // Save current path command\n i && (pcom = pcoms1[i - 1]); // Get previous path command pcom\n }\n p[i] = processPath(p[i], attrs, pcom); // Previous path command is inputted to processPath\n if (pcoms1[i] !== 'A' && pfirst === 'C')\n pcoms1[i] = 'C'; // A is the only command\n // which may produce multiple C:s\n // so we have to make sure that C is also C in original path\n fixArc(p, i); // fixArc adds also the right amount of A:s to pcoms1\n if (p2) {\n // the same procedures is done to p2\n p2[i] && (pfirst = p2[i][0]);\n if (pfirst !== 'C') {\n pcoms2[i] = pfirst;\n i && (pcom = pcoms2[i - 1]);\n }\n p2[i] = processPath(p2[i], attrs2, pcom);\n if (pcoms2[i] !== 'A' && pfirst === 'C') {\n pcoms2[i] = 'C';\n }\n fixArc(p2, i);\n }\n fixM(p, p2, attrs, attrs2, i);\n fixM(p2, p, attrs2, attrs, i);\n var seg = p[i];\n var seg2 = p2 && p2[i];\n var seglen = seg.length;\n var seg2len = p2 && seg2.length;\n attrs.x = seg[seglen - 2];\n attrs.y = seg[seglen - 1];\n attrs.bx = parseFloat(seg[seglen - 4]) || attrs.x;\n attrs.by = parseFloat(seg[seglen - 3]) || attrs.y;\n attrs2.bx = p2 && (parseFloat(seg2[seg2len - 4]) || attrs2.x);\n attrs2.by = p2 && (parseFloat(seg2[seg2len - 3]) || attrs2.y);\n attrs2.x = p2 && seg2[seg2len - 2];\n attrs2.y = p2 && seg2[seg2len - 1];\n }\n return p2 ? [p, p2] : p;\n};\nvar p2s = /,?([a-z]),?/gi;\nvar parsePathArray = function (path) {\n return path.join(',').replace(p2s, '$1');\n};\nvar base3 = function (t, p1, p2, p3, p4) {\n var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4;\n var t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n};\nvar bezlen = function (x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z === null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n var z2 = z / 2;\n var n = 12;\n var Tvalues = [\n -0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699, -0.9041, 0.9041, -0.9816, 0.9816,\n ];\n var Cvalues = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472];\n var sum = 0;\n for (var i = 0; i < n; i++) {\n var ct = z2 * Tvalues[i] + z2;\n var xbase = base3(ct, x1, x2, x3, x4);\n var ybase = base3(ct, y1, y2, y3, y4);\n var comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * Math.sqrt(comb);\n }\n return z2 * sum;\n};\nvar curveDim = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n var tvalues = [];\n var bounds = [[], []];\n var a;\n var b;\n var c;\n var t;\n for (var i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n }\n else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (t > 0 && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n var b2ac = b * b - 4 * c * a;\n var sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n var t1 = (-b + sqrtb2ac) / (2 * a);\n if (t1 > 0 && t1 < 1) {\n tvalues.push(t1);\n }\n var t2 = (-b - sqrtb2ac) / (2 * a);\n if (t2 > 0 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n var j = tvalues.length;\n var jlen = j;\n var mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return {\n min: {\n x: Math.min.apply(0, bounds[0]),\n y: Math.min.apply(0, bounds[1]),\n },\n max: {\n x: Math.max.apply(0, bounds[0]),\n y: Math.max.apply(0, bounds[1]),\n },\n };\n};\nvar intersect = function (x1, y1, x2, y2, x3, y3, x4, y4) {\n if (Math.max(x1, x2) < Math.min(x3, x4) ||\n Math.min(x1, x2) > Math.max(x3, x4) ||\n Math.max(y1, y2) < Math.min(y3, y4) ||\n Math.min(y1, y2) > Math.max(y3, y4)) {\n return;\n }\n var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4);\n var ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4);\n var denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n if (!denominator) {\n return;\n }\n var px = nx / denominator;\n var py = ny / denominator;\n var px2 = +px.toFixed(2);\n var py2 = +py.toFixed(2);\n if (px2 < +Math.min(x1, x2).toFixed(2) ||\n px2 > +Math.max(x1, x2).toFixed(2) ||\n px2 < +Math.min(x3, x4).toFixed(2) ||\n px2 > +Math.max(x3, x4).toFixed(2) ||\n py2 < +Math.min(y1, y2).toFixed(2) ||\n py2 > +Math.max(y1, y2).toFixed(2) ||\n py2 < +Math.min(y3, y4).toFixed(2) ||\n py2 > +Math.max(y3, y4).toFixed(2)) {\n return;\n }\n return {\n x: px,\n y: py,\n };\n};\nvar isPointInsideBBox = function (bbox, x, y) {\n return x >= bbox.x && x <= bbox.x + bbox.width && y >= bbox.y && y <= bbox.y + bbox.height;\n};\nvar rectPath = function (x, y, w, h, r) {\n if (r) {\n return [\n ['M', +x + +r, y],\n ['l', w - r * 2, 0],\n ['a', r, r, 0, 0, 1, r, r],\n ['l', 0, h - r * 2],\n ['a', r, r, 0, 0, 1, -r, r],\n ['l', r * 2 - w, 0],\n ['a', r, r, 0, 0, 1, -r, -r],\n ['l', 0, r * 2 - h],\n ['a', r, r, 0, 0, 1, r, -r],\n ['z'],\n ];\n }\n var res = [['M', x, y], ['l', w, 0], ['l', 0, h], ['l', -w, 0], ['z']];\n // @ts-ignore\n res.parsePathArray = parsePathArray;\n return res;\n};\nvar box = function (x, y, width, height) {\n if (x === null) {\n x = y = width = height = 0;\n }\n if (y === null) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n return {\n x: x,\n y: y,\n width: width,\n w: width,\n height: height,\n h: height,\n x2: x + width,\n y2: y + height,\n cx: x + width / 2,\n cy: y + height / 2,\n r1: Math.min(width, height) / 2,\n r2: Math.max(width, height) / 2,\n r0: Math.sqrt(width * width + height * height) / 2,\n path: rectPath(x, y, width, height),\n vb: [x, y, width, height].join(' '),\n };\n};\nvar isBBoxIntersect = function (bbox1, bbox2) {\n bbox1 = box(bbox1);\n bbox2 = box(bbox2);\n return (isPointInsideBBox(bbox2, bbox1.x, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x, bbox1.y2) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y2) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2) ||\n (((bbox1.x < bbox2.x2 && bbox1.x > bbox2.x) || (bbox2.x < bbox1.x2 && bbox2.x > bbox1.x)) &&\n ((bbox1.y < bbox2.y2 && bbox1.y > bbox2.y) || (bbox2.y < bbox1.y2 && bbox2.y > bbox1.y))));\n};\nvar bezierBBox = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n if (!isArray(p1x)) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n var bbox = curveDim.apply(null, p1x);\n return box(bbox.min.x, bbox.min.y, bbox.max.x - bbox.min.x, bbox.max.y - bbox.min.y);\n};\nvar findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t;\n var t13 = Math.pow(t1, 3);\n var t12 = Math.pow(t1, 2);\n var t2 = t * t;\n var t3 = t2 * t;\n var x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x;\n var y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y;\n var mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x);\n var my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y);\n var nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x);\n var ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y);\n var ax = t1 * p1x + t * c1x;\n var ay = t1 * p1y + t * c1y;\n var cx = t1 * c2x + t * p2x;\n var cy = t1 * c2y + t * p2y;\n var alpha = 90 - (Math.atan2(mx - nx, my - ny) * 180) / Math.PI;\n // (mx > nx || my < ny) && (alpha += 180);\n return {\n x: x,\n y: y,\n m: {\n x: mx,\n y: my,\n },\n n: {\n x: nx,\n y: ny,\n },\n start: {\n x: ax,\n y: ay,\n },\n end: {\n x: cx,\n y: cy,\n },\n alpha: alpha,\n };\n};\nvar interHelper = function (bez1, bez2, justCount) {\n var bbox1 = bezierBBox(bez1);\n var bbox2 = bezierBBox(bez2);\n if (!isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n var l1 = bezlen.apply(0, bez1);\n var l2 = bezlen.apply(0, bez2);\n var n1 = ~~(l1 / 8);\n var n2 = ~~(l2 / 8);\n var dots1 = [];\n var dots2 = [];\n var xy = {};\n var res = justCount ? 0 : [];\n for (var i = 0; i < n1 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez1.concat(i / n1));\n dots1.push({\n x: d.x,\n y: d.y,\n t: i / n1,\n });\n }\n for (var i = 0; i < n2 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez2.concat(i / n2));\n dots2.push({\n x: d.x,\n y: d.y,\n t: i / n2,\n });\n }\n for (var i = 0; i < n1; i++) {\n for (var j = 0; j < n2; j++) {\n var di = dots1[i];\n var di1 = dots1[i + 1];\n var dj = dots2[j];\n var dj1 = dots2[j + 1];\n var ci = Math.abs(di1.x - di.x) < 0.001 ? 'y' : 'x';\n var cj = Math.abs(dj1.x - dj.x) < 0.001 ? 'y' : 'x';\n var is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] === is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n var t1 = di.t + Math.abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t);\n var t2 = dj.t + Math.abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n if (justCount) {\n // @ts-ignore\n res += 1;\n }\n else {\n // @ts-ignore\n res.push({\n x: is.x,\n y: is.y,\n t1: t1,\n t2: t2,\n });\n }\n }\n }\n }\n }\n return res;\n};\nvar interPathHelper = function (path1, path2, justCount) {\n path1 = pathToCurve(path1);\n path2 = pathToCurve(path2);\n var x1;\n var y1;\n var x2;\n var y2;\n var x1m;\n var y1m;\n var x2m;\n var y2m;\n var bez1;\n var bez2;\n var res = justCount ? 0 : [];\n for (var i = 0, ii = path1.length; i < ii; i++) {\n var pi = path1[i];\n if (pi[0] === 'M') {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n }\n else {\n if (pi[0] === 'C') {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n }\n else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (var j = 0, jj = path2.length; j < jj; j++) {\n var pj = path2[j];\n if (pj[0] === 'M') {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n }\n else {\n if (pj[0] === 'C') {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n }\n else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n var intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n // @ts-ignore\n res += intr;\n }\n else {\n // @ts-ignore\n for (var k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n // @ts-ignore\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n};\nvar intersection = function (path1, path2) {\n return interPathHelper(path1, path2);\n};\nfunction decasteljau(points, t) {\n var left = [];\n var right = [];\n function recurse(points, t) {\n if (points.length === 1) {\n left.push(points[0]);\n right.push(points[0]);\n }\n else {\n var middlePoints = [];\n for (var i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n left.push(points[0]);\n }\n if (i === points.length - 2) {\n right.push(points[i + 1]);\n }\n middlePoints[i] = [\n (1 - t) * points[i][0] + t * points[i + 1][0],\n (1 - t) * points[i][1] + t * points[i + 1][1],\n ];\n }\n recurse(middlePoints, t);\n }\n }\n if (points.length) {\n recurse(points, t);\n }\n return { left: left, right: right.reverse() };\n}\nfunction splitCurve(start, end, count) {\n var points = [[start[1], start[2]]];\n count = count || 2;\n var segments = [];\n if (end[0] === 'A') {\n points.push(end[6]);\n points.push(end[7]);\n }\n else if (end[0] === 'C') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n points.push([end[5], end[6]]);\n }\n else if (end[0] === 'S' || end[0] === 'Q') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n }\n else {\n points.push([end[1], end[2]]);\n }\n var leftSegments = points;\n var t = 1 / count;\n for (var i = 0; i < count - 1; i++) {\n var rt = t / (1 - t * i);\n var split = decasteljau(leftSegments, rt);\n segments.push(split.left);\n leftSegments = split.right;\n }\n segments.push(leftSegments);\n var result = segments.map(function (segment) {\n var cmd = [];\n if (segment.length === 4) {\n cmd.push('C');\n cmd = cmd.concat(segment[2]);\n }\n if (segment.length >= 3) {\n if (segment.length === 3) {\n cmd.push('Q');\n }\n cmd = cmd.concat(segment[1]);\n }\n if (segment.length === 2) {\n cmd.push('L');\n }\n cmd = cmd.concat(segment[segment.length - 1]);\n return cmd;\n });\n return result;\n}\nvar splitSegment = function (start, end, count) {\n if (count === 1) {\n return [[].concat(start)];\n }\n var segments = [];\n if (end[0] === 'L' || end[0] === 'C' || end[0] === 'Q') {\n segments = segments.concat(splitCurve(start, end, count));\n }\n else {\n var temp = [].concat(start);\n if (temp[0] === 'M') {\n temp[0] = 'L';\n }\n for (var i = 0; i <= count - 1; i++) {\n segments.push(temp);\n }\n }\n return segments;\n};\nvar fillPath = function (source, target) {\n if (source.length === 1) {\n return source;\n }\n var sourceLen = source.length - 1;\n var targetLen = target.length - 1;\n var ratio = sourceLen / targetLen;\n var segmentsToFill = [];\n if (source.length === 1 && source[0][0] === 'M') {\n for (var i = 0; i < targetLen - sourceLen; i++) {\n source.push(source[0]);\n }\n return source;\n }\n for (var i = 0; i < targetLen; i++) {\n var index = Math.floor(ratio * i);\n segmentsToFill[index] = (segmentsToFill[index] || 0) + 1;\n }\n var filled = segmentsToFill.reduce(function (filled, count, i) {\n if (i === sourceLen) {\n return filled.concat(source[sourceLen]);\n }\n return filled.concat(splitSegment(source[i], source[i + 1], count));\n }, []);\n filled.unshift(source[0]);\n if (target[targetLen] === 'Z' || target[targetLen] === 'z') {\n filled.push('Z');\n }\n return filled;\n};\nvar isEqual = function (obj1, obj2) {\n if (obj1.length !== obj2.length) {\n return false;\n }\n var result = true;\n each(obj1, function (item, i) {\n if (item !== obj2[i]) {\n result = false;\n return false;\n }\n });\n return result;\n};\nfunction getMinDiff(del, add, modify) {\n var type = null;\n var min = modify;\n if (add < min) {\n min = add;\n type = 'add';\n }\n if (del < min) {\n min = del;\n type = 'del';\n }\n return {\n type: type,\n min: min,\n };\n}\n/*\n * https://en.wikipedia.org/wiki/Levenshtein_distance\n * 计算两条path的编辑距离\n */\nvar levenshteinDistance = function (source, target) {\n var sourceLen = source.length;\n var targetLen = target.length;\n var sourceSegment;\n var targetSegment;\n var temp = 0;\n if (sourceLen === 0 || targetLen === 0) {\n return null;\n }\n var dist = [];\n for (var i = 0; i <= sourceLen; i++) {\n dist[i] = [];\n dist[i][0] = { min: i };\n }\n for (var j = 0; j <= targetLen; j++) {\n dist[0][j] = { min: j };\n }\n for (var i = 1; i <= sourceLen; i++) {\n sourceSegment = source[i - 1];\n for (var j = 1; j <= targetLen; j++) {\n targetSegment = target[j - 1];\n if (isEqual(sourceSegment, targetSegment)) {\n temp = 0;\n }\n else {\n temp = 1;\n }\n var del = dist[i - 1][j].min + 1;\n var add = dist[i][j - 1].min + 1;\n var modify = dist[i - 1][j - 1].min + temp;\n dist[i][j] = getMinDiff(del, add, modify);\n }\n }\n return dist;\n};\nvar fillPathByDiff = function (source, target) {\n var diffMatrix = levenshteinDistance(source, target);\n var sourceLen = source.length;\n var targetLen = target.length;\n var changes = [];\n var index = 1;\n var minPos = 1;\n // 如果source和target不是完全不相等\n if (diffMatrix[sourceLen][targetLen].min !== sourceLen) {\n // 获取从source到target所需改动\n for (var i = 1; i <= sourceLen; i++) {\n var min = diffMatrix[i][i].min;\n minPos = i;\n for (var j = index; j <= targetLen; j++) {\n if (diffMatrix[i][j].min < min) {\n min = diffMatrix[i][j].min;\n minPos = j;\n }\n }\n index = minPos;\n if (diffMatrix[i][index].type) {\n changes.push({ index: i - 1, type: diffMatrix[i][index].type });\n }\n }\n // 对source进行增删path\n for (var i = changes.length - 1; i >= 0; i--) {\n index = changes[i].index;\n if (changes[i].type === 'add') {\n source.splice(index, 0, [].concat(source[index]));\n }\n else {\n source.splice(index, 1);\n }\n }\n }\n // source尾部补齐\n sourceLen = source.length;\n var diff = targetLen - sourceLen;\n if (sourceLen < targetLen) {\n for (var i = 0; i < diff; i++) {\n if (source[sourceLen - 1][0] === 'z' || source[sourceLen - 1][0] === 'Z') {\n source.splice(sourceLen - 2, 0, source[sourceLen - 2]);\n }\n else {\n source.push(source[sourceLen - 1]);\n }\n sourceLen += 1;\n }\n }\n return source;\n};\n// 将两个点均分成count个点\nfunction _splitPoints(points, former, count) {\n var result = [].concat(points);\n var index;\n var t = 1 / (count + 1);\n var formerEnd = _getSegmentPoints(former)[0];\n for (var i = 1; i <= count; i++) {\n t *= i;\n index = Math.floor(points.length * t);\n if (index === 0) {\n result.unshift([formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n }\n else {\n result.splice(index, 0, [\n formerEnd[0] * t + points[index][0] * (1 - t),\n formerEnd[1] * t + points[index][1] * (1 - t),\n ]);\n }\n }\n return result;\n}\n/*\n * 抽取pathSegment中的关键点\n * M,L,A,Q,H,V一个端点\n * Q, S抽取一个端点,一个控制点\n * C抽取一个端点,两个控制点\n */\nfunction _getSegmentPoints(segment) {\n var points = [];\n switch (segment[0]) {\n case 'M':\n points.push([segment[1], segment[2]]);\n break;\n case 'L':\n points.push([segment[1], segment[2]]);\n break;\n case 'A':\n points.push([segment[6], segment[7]]);\n break;\n case 'Q':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'T':\n points.push([segment[1], segment[2]]);\n break;\n case 'C':\n points.push([segment[5], segment[6]]);\n points.push([segment[1], segment[2]]);\n points.push([segment[3], segment[4]]);\n break;\n case 'S':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'H':\n points.push([segment[1], segment[1]]);\n break;\n case 'V':\n points.push([segment[1], segment[1]]);\n break;\n default:\n }\n return points;\n}\nvar formatPath = function (fromPath, toPath) {\n if (fromPath.length <= 1) {\n return fromPath;\n }\n var points;\n for (var i = 0; i < toPath.length; i++) {\n if (fromPath[i][0] !== toPath[i][0]) {\n // 获取fromPath的pathSegment的端点,根据toPath的指令对其改造\n points = _getSegmentPoints(fromPath[i]);\n switch (toPath[i][0]) {\n case 'M':\n fromPath[i] = ['M'].concat(points[0]);\n break;\n case 'L':\n fromPath[i] = ['L'].concat(points[0]);\n break;\n case 'A':\n fromPath[i] = [].concat(toPath[i]);\n fromPath[i][6] = points[0][0];\n fromPath[i][7] = points[0][1];\n break;\n case 'Q':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['Q'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'T':\n fromPath[i] = ['T'].concat(points[0]);\n break;\n case 'C':\n if (points.length < 3) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 2);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['C'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'S':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['S'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n default:\n fromPath[i] = toPath[i];\n }\n }\n }\n return fromPath;\n};\nexport { catmullRomToBezier, fillPath, fillPathByDiff, formatPath, intersection, parsePathArray, parsePathString, pathToAbsolute, pathToCurve, rectPath, };\n//# sourceMappingURL=path.js.map","import { isNil, each, isString } from './util';\nimport { getOffScreenContext } from './offscreen';\n/**\n * 获取文本的高度\n * @param text 文本\n * @param fontSize 字体大小\n * @param lineHeight 行高,可以为空\n */\nexport function getTextHeight(text, fontSize, lineHeight) {\n var lineCount = 1;\n if (isString(text)) {\n lineCount = text.split('\\n').length;\n }\n if (lineCount > 1) {\n var spaceingY = getLineSpaceing(fontSize, lineHeight);\n return fontSize * lineCount + spaceingY * (lineCount - 1);\n }\n return fontSize;\n}\n/**\n * 获取行间距如果文本多行,需要获取文本间距\n * @param fontSize 字体大小\n * @param lineHeight 行高\n */\nexport function getLineSpaceing(fontSize, lineHeight) {\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n}\n/**\n * 字体宽度\n * @param text 文本\n * @param font 字体\n */\nexport function getTextWidth(text, font) {\n var context = getOffScreenContext(); // 获取离屏的 ctx 进行计算\n var width = 0;\n // null 或者 undefined 时,宽度为 0\n if (isNil(text) || text === '') {\n return width;\n }\n context.save();\n context.font = font;\n if (isString(text) && text.includes('\\n')) {\n var textArr = text.split('\\n');\n each(textArr, function (subText) {\n var measureWidth = context.measureText(subText).width;\n if (width < measureWidth) {\n width = measureWidth;\n }\n });\n }\n else {\n width = context.measureText(text).width;\n }\n context.restore();\n return width;\n}\nexport function assembleFont(attrs) {\n var fontSize = attrs.fontSize, fontFamily = attrs.fontFamily, fontWeight = attrs.fontWeight, fontStyle = attrs.fontStyle, fontVariant = attrs.fontVariant;\n return [fontStyle, fontVariant, fontWeight, fontSize + \"px\", fontFamily].join(' ').trim();\n}\n//# sourceMappingURL=text.js.map","export { default as Base } from './base';\nexport { default as Circle } from './circle';\nexport { default as Ellipse } from './ellipse';\nexport { default as Image } from './image';\nexport { default as Line } from './line';\nexport { default as Marker } from './marker';\nexport { default as Path } from './path';\nexport { default as Polygon } from './polygon';\nexport { default as Polyline } from './polyline';\nexport { default as Rect } from './rect';\nexport { default as Text } from './text';\n","import { each, isArray, max, min } from '@antv/util';\nimport { IElement } from '../interfaces';\nimport { Region } from '../types';\nimport { parseStyle } from './parse';\nimport getArcParams from './arc-params';\nimport { mergeRegion, intersectRect } from './util';\nimport * as ArrowUtil from '../util/arrow';\n\nconst SHAPE_ATTRS_MAP = {\n fill: 'fillStyle',\n stroke: 'strokeStyle',\n opacity: 'globalAlpha',\n};\n\nexport function applyAttrsToContext(context: CanvasRenderingContext2D, element: IElement) {\n const attrs = element.attr();\n for (const k in attrs) {\n let v = attrs[k];\n // 转换一下不与 canvas 兼容的属性名\n const name = SHAPE_ATTRS_MAP[k] ? SHAPE_ATTRS_MAP[k] : k;\n if (name === 'matrix' && v) {\n // 设置矩阵\n context.transform(v[0], v[1], v[3], v[4], v[6], v[7]);\n } else if (name === 'lineDash' && context.setLineDash) {\n // 设置虚线,只支持数组形式,非数组形式不做任何操作\n isArray(v) && context.setLineDash(v);\n } else {\n if (name === 'strokeStyle' || name === 'fillStyle') {\n // 如果存在渐变、pattern 这个开销有些大\n // 可以考虑缓存机制,通过 hasUpdate 来避免一些运算\n v = parseStyle(context, element, v);\n } else if (name === 'globalAlpha') {\n // opacity 效果可以叠加,子元素的 opacity 需要与父元素 opacity 相乘\n v = v * context.globalAlpha;\n }\n context[name] = v;\n }\n }\n}\n\nexport function drawChildren(context: CanvasRenderingContext2D, children: IElement[], region?: Region) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i] as IElement;\n if (child.cfg.visible) {\n child.draw(context, region);\n } else {\n child.skipDraw();\n }\n }\n}\n\n// 这个地方的逻辑比较复杂,简单画了一张图:https://www.yuque.com/antv/ou292n/pcgt5g#OW1QE\nexport function checkRefresh(canvas, children: IElement[], region: Region) {\n const refreshElements = canvas.get('refreshElements');\n // 先遍历需要刷新的元素,将这些元素的父元素也设置 refresh\n each(refreshElements, (el) => {\n if (el !== canvas) {\n let parent = el.cfg.parent;\n while (parent && parent !== canvas && !parent.cfg.refresh) {\n parent.cfg.refresh = true;\n parent = parent.cfg.parent;\n }\n }\n });\n if (refreshElements[0] === canvas) {\n setChildrenRefresh(children, region);\n } else {\n // 检查所有子元素是否可以刷新\n checkChildrenRefresh(children, region);\n }\n}\n// 检查所有的子元素是否应该更新\nexport function checkChildrenRefresh(children: IElement[], region: Region) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i] as IElement;\n if (child.cfg.visible) {\n // 先判断 hasChanged,因为它的优先级判断应该高于 refresh\n if (child.cfg.hasChanged) {\n // 如果节点发生了 change,则需要级联设置子元素的 refresh\n child.cfg.refresh = true;\n if (child.isGroup()) {\n setChildrenRefresh(child.cfg.children, region);\n }\n } else if (child.cfg.refresh) {\n // 如果当前图形/分组 refresh = true,说明其子节点存在 changed\n if (child.isGroup()) {\n checkChildrenRefresh(child.cfg.children, region);\n }\n } else {\n // 这个分支说明此次局部刷新,所有的节点和父元素没有发生变化,仅需要检查包围盒(缓存)是否相交即可\n const refresh = checkElementRefresh(child, region);\n child.cfg.refresh = refresh;\n if (refresh && child.isGroup()) {\n // 如果需要刷新,说明子元素也需要刷新,继续进行判定\n checkChildrenRefresh(child.cfg.children, region);\n }\n }\n }\n }\n}\n\n// 由于对改变的图形放入 refreshElements 时做了优化,判定父元素 changed 时不加入\n// 那么有可能会出现 elements 都为空,所以最终 group\nexport function clearChanged(elements: IElement[]) {\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i];\n el.cfg.hasChanged = false;\n // 级联清理\n if (el.isGroup() && !el.destroyed) {\n clearChanged(el.cfg.children);\n }\n }\n}\n\n// 当某个父元素发生改变时,调用这个方法级联设置 refresh\nfunction setChildrenRefresh(children: IElement[], region: Region) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i] as IElement;\n if (!child.cfg.visible) {\n continue;\n }\n // let refresh = true;\n // 获取缓存的 bbox,如果这个 bbox 还存在则说明父元素不是矩阵发生了改变\n // const bbox = child.cfg.canvasBBox;\n // if (bbox) {\n // // 如果这时候\n // refresh = intersectRect(bbox, region);\n // }\n child.cfg.refresh = true;\n // 如果需要刷新当前节点,所有的子元素设置 refresh\n if (child.isGroup()) {\n setChildrenRefresh(child.get('children'), region);\n }\n }\n}\n\nfunction checkElementRefresh(shape: IElement, region: Region): boolean {\n const bbox = shape.cfg.cacheCanvasBBox;\n const isAllow = shape.cfg.isInView && bbox && intersectRect(bbox, region);\n return isAllow;\n}\n\n// 绘制 path\nexport function drawPath(shape, context, attrs, arcParamsCache) {\n const { path, startArrow, endArrow } = attrs;\n if (!path) {\n return;\n }\n let currentPoint = [0, 0]; // 当前图形\n let startMovePoint = [0, 0]; // 开始 M 的点,可能会有多个\n let distance = {\n dx: 0,\n dy: 0,\n };\n context.beginPath();\n for (let i = 0; i < path.length; i++) {\n const params = path[i];\n const command = params[0];\n if (i === 0 && startArrow && startArrow.d) {\n const tangent = shape.getStartTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], startArrow.d);\n } else if (i === path.length - 2 && path[i + 1][0] === 'Z' && endArrow && endArrow.d) {\n // 为了防止结尾为 Z 的 segment 缩短不起效,需要取最后两个 segment 特殊处理\n const lastPath = path[i + 1];\n if (lastPath[0] === 'Z') {\n const tangent = shape.getEndTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n } else if (i === path.length - 1 && endArrow && endArrow.d) {\n if (path[0] !== 'Z') {\n const tangent = shape.getEndTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n }\n\n const { dx, dy } = distance;\n // V,H,S,T 都在前面被转换成标准形式\n switch (command) {\n case 'M':\n context.moveTo(params[1] - dx, params[2] - dy);\n startMovePoint = [params[1], params[2]];\n break;\n case 'L':\n context.lineTo(params[1] - dx, params[2] - dy);\n break;\n case 'Q':\n context.quadraticCurveTo(params[1], params[2], params[3] - dx, params[4] - dy);\n break;\n case 'C':\n context.bezierCurveTo(params[1], params[2], params[3], params[4], params[5] - dx, params[6] - dy);\n break;\n case 'A': {\n let arcParams;\n // 为了加速绘制,可以提供参数的缓存,各个图形自己缓存\n if (arcParamsCache) {\n arcParams = arcParamsCache[i];\n if (!arcParams) {\n arcParams = getArcParams(currentPoint, params);\n arcParamsCache[i] = arcParams;\n }\n } else {\n arcParams = getArcParams(currentPoint, params);\n }\n const { cx, cy, rx, ry, startAngle, endAngle, xRotation, sweepFlag } = arcParams;\n // 直接使用椭圆的 api\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, xRotation, startAngle, endAngle, 1 - sweepFlag);\n } else {\n const r = rx > ry ? rx : ry;\n const scaleX = rx > ry ? 1 : rx / ry;\n const scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(xRotation);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, startAngle, endAngle, 1 - sweepFlag);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-xRotation);\n context.translate(-cx, -cy);\n }\n break;\n }\n case 'Z':\n context.closePath();\n break;\n default:\n break;\n }\n\n // 有了 Z 后,当前节点从开始 M 的点开始\n if (command === 'Z') {\n currentPoint = startMovePoint;\n } else {\n const len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n }\n}\n\n// 刷新图形元素(Shape 或者 Group)\nexport function refreshElement(element, changeType) {\n const canvas = element.get('canvas');\n // 只有存在于 canvas 上时生效\n if (canvas) {\n if (changeType === 'remove') {\n // 一旦 remove,则无法在 element 上拿到包围盒\n // destroy 后所有属性都拿不到,所以需要暂存一下\n // 这是一段 hack 的代码\n element._cacheCanvasBBox = element.get('cacheCanvasBBox');\n }\n // 防止反复刷新\n if (!element.get('hasChanged')) {\n // 但是始终要标记为 hasChanged,便于后面进行局部渲染\n element.set('hasChanged', true);\n\n // 本来只有局部渲染模式下,才需要记录更新的元素队列\n // if (canvas.get('localRefresh')) {\n // canvas.refreshElement(element, changeType, canvas);\n // }\n // 但对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也需要记录更新的元素队列\n // 如果当前元素的父元素发生了改变,可以不放入队列,这句话大概能够提升 15% 的初次渲染性能\n if (!(element.cfg.parent && element.cfg.parent.get('hasChanged'))) {\n canvas.refreshElement(element, changeType, canvas);\n if (canvas.get('autoDraw')) {\n canvas.draw();\n }\n }\n }\n }\n}\n\nexport function getRefreshRegion(element): Region | undefined {\n let region;\n if (!element.destroyed) {\n const cacheBox = element.get('cacheCanvasBBox');\n const validCache = cacheBox && !!(cacheBox.width && cacheBox.height);\n const bbox = element.getCanvasBBox();\n const validBBox = bbox && !!(bbox.width && bbox.height);\n // 是否是有效 bbox 判定,一些 NaN 或者 宽高为 0 的情况过滤掉\n if (validCache && validBBox) {\n region = mergeRegion(cacheBox, bbox);\n } else if (validCache) {\n region = cacheBox;\n } else if (validBBox) {\n region = bbox;\n }\n } else {\n // 因为元素已经销毁所以无法获取到缓存的包围盒\n region = element['_cacheCanvasBBox'];\n }\n return region;\n}\n\nexport function getMergedRegion(elements): Region {\n if (!elements.length) {\n return null;\n }\n const minXArr = [];\n const minYArr = [];\n const maxXArr = [];\n const maxYArr = [];\n each(elements, (el: IElement) => {\n const region = getRefreshRegion(el);\n if (region) {\n minXArr.push(region.minX);\n minYArr.push(region.minY);\n maxXArr.push(region.maxX);\n maxYArr.push(region.maxY);\n }\n });\n return {\n minX: min(minXArr),\n minY: min(minYArr),\n maxX: max(maxXArr),\n maxY: max(maxYArr),\n };\n}\n\nexport function mergeView(region, viewRegion) {\n if (!region || !viewRegion) {\n return null;\n }\n // 不相交,则直接返回 null\n if (!intersectRect(region, viewRegion)) {\n return null;\n }\n return {\n minX: Math.max(region.minX, viewRegion.minX),\n minY: Math.max(region.minY, viewRegion.minY),\n maxX: Math.min(region.maxX, viewRegion.maxX),\n maxY: Math.min(region.maxY, viewRegion.maxY),\n };\n}\n","import { Path } from '../shape';\n\nconst { sin, cos, atan2, PI } = Math;\n\nfunction _addDefaultArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n const { stroke, lineWidth } = attrs;\n const x = x1 - x2;\n const y = y1 - y2;\n const rad = atan2(y, x);\n const arrowShape = new Path({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: {\n // 默认箭头的边长为 10,夹角为 60 度\n path: `M${10 * cos(PI / 6)},${10 * sin(PI / 6)} L0,0 L${10 * cos(PI / 6)},-${10 * sin(PI / 6)}`,\n // 使用 shape stroke 值\n stroke,\n lineWidth,\n },\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n\n/**\n * 箭头 path 的设置要求\n * 1. 箭头顶点坐标需要为 (0, 0)\n * 2. 箭头夹角的中心分割线需要与 X 轴正方向对齐\n */\nfunction _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n const { startArrow, endArrow, stroke, lineWidth } = attrs;\n const arrowAttrs = isStart ? startArrow : endArrow;\n const { d, fill: arrowFill, stroke: arrowStroke, lineWidth: arrowLineWidth, ...restAttrs } = arrowAttrs;\n const x = x1 - x2;\n const y = y1 - y2;\n const rad = atan2(y, x);\n\n if (d) {\n x2 = x2 - cos(rad) * d;\n y2 = y2 - sin(rad) * d;\n }\n\n const arrowShape = new Path({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: {\n ...restAttrs,\n // 支持单独设置箭头的 stroke 和 lineWidth,若为空则使用 shape 的值\n stroke: arrowStroke || stroke,\n lineWidth: arrowLineWidth || lineWidth,\n // 箭头是否填充需要手动设置,不会继承自 shape 的值\n fill: arrowFill,\n },\n });\n\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n\n/**\n * 如果自定义箭头并且有 d 需要做偏移,如果直接画,线条会超出箭头尖端,因此需要根据箭头偏移 d, 返回线需要缩短的距离\n * |----------------\n * |<|--------------\n * |\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n * @param {number} d 箭头沿线条方向的偏移距离\n * @return {{dx: number, dy: number}} 返回线条偏移距离\n */\nexport function getShortenOffset(x1, y1, x2, y2, d) {\n const rad = atan2(y2 - y1, x2 - x1);\n return {\n dx: cos(rad) * d,\n dy: sin(rad) * d,\n };\n}\n\n/**\n * 绘制起始箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nexport function addStartArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.startArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, true);\n } else if (attrs.startArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, true);\n } else {\n shape.set('startArrowShape', null);\n }\n}\n\n/**\n * 绘制结束箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nexport function addEndArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.endArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, false);\n } else if (attrs.endArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, false);\n } else {\n shape.set('startArrowShape', null);\n }\n}\n","import { Line as LineUtil } from '@antv/g-math';\n\nexport default function inLine(x1, y1, x2, y2, lineWidth, x, y) {\n const minX = Math.min(x1, x2);\n const maxX = Math.max(x1, x2);\n const minY = Math.min(y1, y2);\n const maxY = Math.max(y1, y2);\n const halfWidth = lineWidth / 2;\n // 因为目前的方案是计算点到直线的距离,而有可能会在延长线上,所以要先判断是否在包围盒内\n // 这种方案会在水平或者竖直的情况下载线的延长线上有半 lineWidth 的误差\n if (!(x >= minX - halfWidth && x <= maxX + halfWidth && y >= minY - halfWidth && y <= maxY + halfWidth)) {\n return false;\n }\n // 因为已经计算了包围盒,所以仅需要计算到直线的距离即可,可以显著提升性能\n return LineUtil.pointToLine(x1, y1, x2, y2, x, y) <= lineWidth / 2;\n}\n","var GraphEvent = /** @class */ (function () {\n function GraphEvent(type, event) {\n /**\n * 是否允许冒泡\n * @type {boolean}\n */\n this.bubbles = true;\n /**\n * 触发对象\n * @type {object}\n */\n this.target = null;\n /**\n * 监听对象\n * @type {object}\n */\n this.currentTarget = null;\n /**\n * 委托对象\n * @type {object}\n */\n this.delegateTarget = null;\n /**\n * 委托事件监听对象的代理对象,即 ev.delegateObject = ev.currentTarget.get('delegateObject')\n * @type {object}\n */\n this.delegateObject = null;\n /**\n * 是否阻止了原生事件\n * @type {boolean}\n */\n this.defaultPrevented = false;\n /**\n * 是否阻止传播(向上冒泡)\n * @type {boolean}\n */\n this.propagationStopped = false;\n /**\n * 触发事件的图形\n * @type {IShape}\n */\n this.shape = null;\n /**\n * 开始触发事件的图形\n * @type {IShape}\n */\n this.fromShape = null;\n /**\n * 事件结束时的触发图形\n * @type {IShape}\n */\n this.toShape = null;\n // 触发事件的路径\n this.propagationPath = [];\n this.type = type;\n this.name = type;\n this.originalEvent = event;\n this.timeStamp = event.timeStamp;\n }\n /**\n * 阻止浏览器默认的行为\n */\n GraphEvent.prototype.preventDefault = function () {\n this.defaultPrevented = true;\n if (this.originalEvent.preventDefault) {\n this.originalEvent.preventDefault();\n }\n };\n /**\n * 阻止冒泡\n */\n GraphEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n GraphEvent.prototype.toString = function () {\n var type = this.type;\n return \"[Event (type=\" + type + \")]\";\n };\n GraphEvent.prototype.save = function () { };\n GraphEvent.prototype.restore = function () { };\n return GraphEvent;\n}());\nexport default GraphEvent;\n//# sourceMappingURL=graph-event.js.map","// 全局设置一个唯一离屏的 ctx,用于计算 isPointInPath\nvar offScreenCtx = null;\nexport function getOffScreenContext() {\n if (!offScreenCtx) {\n var canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n offScreenCtx = canvas.getContext('2d');\n }\n return offScreenCtx;\n}\n//# sourceMappingURL=offscreen.js.map","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","import * as d3Ease from 'd3-ease';\nvar EASING_MAP = {};\n/**\n * 根据名称获取对应的动画缓动函数\n * @param type 动画缓动函数名称\n */\nexport function getEasing(type) {\n // 默认从 d3-ease 中获取\n return EASING_MAP[type.toLowerCase()] || d3Ease[type];\n}\n/**\n * 注册动画缓动函数\n * @param type 动画缓动函数名称\n * @param easeFn 动画缓动函数\n */\nexport function registerEasing(type, easeFn) {\n EASING_MAP[type.toLowerCase()] = easeFn;\n}\n//# sourceMappingURL=register.js.map","import { __extends } from \"tslib\";\nimport EE from '@antv/event-emitter';\nimport { mix } from '../util/util';\nvar Base = /** @class */ (function (_super) {\n __extends(Base, _super);\n function Base(cfg) {\n var _this = _super.call(this) || this;\n /**\n * 是否被销毁\n * @type {boolean}\n */\n _this.destroyed = false;\n var defaultCfg = _this.getDefaultCfg();\n _this.cfg = mix(defaultCfg, cfg);\n return _this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n Base.prototype.getDefaultCfg = function () {\n return {};\n };\n // 实现接口的方法\n Base.prototype.get = function (name) {\n return this.cfg[name];\n };\n // 实现接口的方法\n Base.prototype.set = function (name, value) {\n this.cfg[name] = value;\n };\n // 实现接口的方法\n Base.prototype.destroy = function () {\n this.cfg = {\n destroyed: true,\n };\n this.off();\n this.destroyed = true;\n };\n return Base;\n}(EE));\nexport default Base;\n//# sourceMappingURL=base.js.map","import { __extends } from \"tslib\";\nimport Element from './element';\nimport { isFunction, isObject, each, removeFromArray, upperFirst, isAllowCapture } from '../util/util';\nvar SHAPE_MAP = {};\nvar INDEX = '_INDEX';\n/**\n * 设置 canvas\n * @param {IElement} element 元素\n * @param {ICanvas} canvas 画布\n */\nfunction setCanvas(element, canvas) {\n element.set('canvas', canvas);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setCanvas(child, canvas);\n });\n }\n }\n}\n/**\n * 设置 timeline\n * @param {IElement} element 元素\n * @param {Timeline} timeline 时间轴\n */\nfunction setTimeline(element, timeline) {\n element.set('timeline', timeline);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setTimeline(child, timeline);\n });\n }\n }\n}\nfunction contains(container, element) {\n var children = container.getChildren();\n return children.indexOf(element) >= 0;\n}\nfunction removeChild(container, element, destroy) {\n if (destroy === void 0) { destroy = true; }\n // 不再调用 element.remove() 方法,会出现循环调用\n if (destroy) {\n element.destroy();\n }\n else {\n element.set('parent', null);\n element.set('canvas', null);\n }\n removeFromArray(container.getChildren(), element);\n}\nfunction getComparer(compare) {\n return function (left, right) {\n var result = compare(left, right);\n return result === 0 ? left[INDEX] - right[INDEX] : result;\n };\n}\nvar Container = /** @class */ (function (_super) {\n __extends(Container, _super);\n function Container() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Container.prototype.isCanvas = function () {\n return false;\n };\n // 根据子节点确定 BBox\n Container.prototype.getBBox = function () {\n // 所有的值可能在画布的可视区外\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || (child.isGroup() && child.getChildren().length > 0));\n });\n if (children.length > 0) {\n each(children, function (child) {\n var _a = child.getBBox(), childMinX = _a.minX, childMaxX = _a.maxX, childMinY = _a.minY, childMaxY = _a.maxY;\n if (childMinX < minX) {\n minX = childMinX;\n }\n if (childMaxX > maxX) {\n maxX = childMaxX;\n }\n if (childMinY < minY) {\n minY = childMinY;\n }\n if (childMaxY > maxY) {\n maxY = childMaxY;\n }\n });\n }\n else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n };\n // 获取画布的包围盒\n Container.prototype.getCanvasBBox = function () {\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || (child.isGroup() && child.getChildren().length > 0));\n });\n if (children.length > 0) {\n each(children, function (child) {\n var _a = child.getCanvasBBox(), childMinX = _a.minX, childMaxX = _a.maxX, childMinY = _a.minY, childMaxY = _a.maxY;\n if (childMinX < minX) {\n minX = childMinX;\n }\n if (childMaxX > maxX) {\n maxX = childMaxX;\n }\n if (childMinY < minY) {\n minY = childMinY;\n }\n if (childMaxY > maxY) {\n maxY = childMaxY;\n }\n });\n }\n else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n };\n Container.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n cfg['children'] = [];\n return cfg;\n };\n Container.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name === 'matrix') {\n var totalMatrix = this.getTotalMatrix();\n this._applyChildrenMarix(totalMatrix);\n }\n };\n // 不但应用到自己身上还要应用于子元素\n Container.prototype.applyMatrix = function (matrix) {\n var preTotalMatrix = this.getTotalMatrix();\n _super.prototype.applyMatrix.call(this, matrix);\n var totalMatrix = this.getTotalMatrix();\n // totalMatrix 没有发生变化时,这里仅考虑两者都为 null 时\n // 不继续向下传递矩阵\n if (totalMatrix === preTotalMatrix) {\n return;\n }\n this._applyChildrenMarix(totalMatrix);\n };\n // 在子元素上设置矩阵\n Container.prototype._applyChildrenMarix = function (totalMatrix) {\n var children = this.getChildren();\n each(children, function (child) {\n child.applyMatrix(totalMatrix);\n });\n };\n // 兼容老版本的接口\n Container.prototype.addShape = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var type = args[0];\n var cfg = args[1];\n if (isObject(type)) {\n cfg = type;\n }\n else {\n cfg['type'] = type;\n }\n var shapeType = SHAPE_MAP[cfg.type];\n if (!shapeType) {\n shapeType = upperFirst(cfg.type);\n SHAPE_MAP[cfg.type] = shapeType;\n }\n var ShapeBase = this.getShapeBase();\n var shape = new ShapeBase[shapeType](cfg);\n this.add(shape);\n return shape;\n };\n Container.prototype.addGroup = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var groupClass = args[0], cfg = args[1];\n var group;\n if (isFunction(groupClass)) {\n if (cfg) {\n group = new groupClass(cfg);\n }\n else {\n group = new groupClass({\n // canvas,\n parent: this,\n });\n }\n }\n else {\n var tmpCfg = groupClass || {};\n var TmpGroupClass = this.getGroupBase();\n group = new TmpGroupClass(tmpCfg);\n }\n this.add(group);\n return group;\n };\n Container.prototype.getCanvas = function () {\n var canvas;\n if (this.isCanvas()) {\n canvas = this;\n }\n else {\n canvas = this.get('canvas');\n }\n return canvas;\n };\n Container.prototype.getShape = function (x, y, ev) {\n // 如果不支持拾取,则直接返回\n if (!isAllowCapture(this)) {\n return null;\n }\n var children = this.getChildren();\n var shape;\n // 如果容器是 group\n if (!this.isCanvas()) {\n var v = [x, y, 1];\n // 将 x, y 转换成对应于 group 的局部坐标\n v = this.invertFromMatrix(v);\n if (!this.isClipped(v[0], v[1])) {\n shape = this._findShape(children, v[0], v[1], ev);\n }\n }\n else {\n shape = this._findShape(children, x, y, ev);\n }\n return shape;\n };\n Container.prototype._findShape = function (children, x, y, ev) {\n var shape = null;\n for (var i = children.length - 1; i >= 0; i--) {\n var child = children[i];\n if (isAllowCapture(child)) {\n if (child.isGroup()) {\n shape = child.getShape(x, y, ev);\n }\n else if (child.isHit(x, y)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n };\n Container.prototype.add = function (element) {\n var canvas = this.getCanvas();\n var children = this.getChildren();\n var timeline = this.get('timeline');\n var preParent = element.getParent();\n if (preParent) {\n removeChild(preParent, element, false);\n }\n element.set('parent', this);\n if (canvas) {\n setCanvas(element, canvas);\n }\n if (timeline) {\n setTimeline(element, timeline);\n }\n children.push(element);\n element.onCanvasChange('add');\n this._applyElementMatrix(element);\n };\n // 将当前容器的矩阵应用到子元素\n Container.prototype._applyElementMatrix = function (element) {\n var totalMatrix = this.getTotalMatrix();\n // 添加图形或者分组时,需要把当前图元的矩阵设置进去\n if (totalMatrix) {\n element.applyMatrix(totalMatrix);\n }\n };\n Container.prototype.getChildren = function () {\n return (this.get('children') || []);\n };\n Container.prototype.sort = function () {\n var children = this.getChildren();\n // 稳定排序\n each(children, function (child, index) {\n child[INDEX] = index;\n return child;\n });\n children.sort(getComparer(function (obj1, obj2) {\n return obj1.get('zIndex') - obj2.get('zIndex');\n }));\n this.onCanvasChange('sort');\n };\n Container.prototype.clear = function () {\n this.set('clearing', true);\n if (this.destroyed) {\n return;\n }\n var children = this.getChildren();\n for (var i = children.length - 1; i >= 0; i--) {\n children[i].destroy(); // 销毁子元素\n }\n this.set('children', []);\n this.onCanvasChange('clear');\n this.set('clearing', false);\n };\n Container.prototype.destroy = function () {\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n _super.prototype.destroy.call(this);\n };\n /**\n * 获取第一个子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getFirst = function () {\n return this.getChildByIndex(0);\n };\n /**\n * 获取最后一个子元素\n * @return {IElement} 元素\n */\n Container.prototype.getLast = function () {\n var children = this.getChildren();\n return this.getChildByIndex(children.length - 1);\n };\n /**\n * 根据索引获取子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getChildByIndex = function (index) {\n var children = this.getChildren();\n return children[index];\n };\n /**\n * 子元素的数量\n * @return {number} 子元素数量\n */\n Container.prototype.getCount = function () {\n var children = this.getChildren();\n return children.length;\n };\n /**\n * 是否包含对应元素\n * @param {IElement} element 元素\n * @return {boolean}\n */\n Container.prototype.contain = function (element) {\n var children = this.getChildren();\n return children.indexOf(element) > -1;\n };\n /**\n * 移除对应子元素\n * @param {IElement} element 子元素\n * @param {boolean} destroy 是否销毁子元素,默认为 true\n */\n Container.prototype.removeChild = function (element, destroy) {\n if (destroy === void 0) { destroy = true; }\n if (this.contain(element)) {\n element.remove(destroy);\n }\n };\n /**\n * 查找所有匹配的元素\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement[]} 元素数组\n */\n Container.prototype.findAll = function (fn) {\n var rst = [];\n var children = this.getChildren();\n each(children, function (element) {\n if (fn(element)) {\n rst.push(element);\n }\n if (element.isGroup()) {\n rst = rst.concat(element.findAll(fn));\n }\n });\n return rst;\n };\n /**\n * 查找元素,找到第一个返回\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement|null} 元素,可以为空\n */\n Container.prototype.find = function (fn) {\n var rst = null;\n var children = this.getChildren();\n each(children, function (element) {\n if (fn(element)) {\n rst = element;\n }\n else if (element.isGroup()) {\n rst = element.find(fn);\n }\n if (rst) {\n return false;\n }\n });\n return rst;\n };\n /**\n * 根据 ID 查找元素\n * @param {string} id 元素 id\n * @return {IElement|null} 元素\n */\n Container.prototype.findById = function (id) {\n return this.find(function (element) {\n return element.get('id') === id;\n });\n };\n /**\n * 该方法即将废弃,不建议使用\n * 根据 className 查找元素\n * TODO: 该方式定义暂时只给 G6 3.3 以后的版本使用,待 G6 中的 findByClassName 方法移除后,G 也需要同步移除\n * @param {string} className 元素 className\n * @return {IElement | null} 元素\n */\n Container.prototype.findByClassName = function (className) {\n return this.find(function (element) {\n return element.get('className') === className;\n });\n };\n /**\n * 根据 name 查找元素列表\n * @param {string} name 元素名称\n * @return {IElement[]} 元素\n */\n Container.prototype.findAllByName = function (name) {\n return this.findAll(function (element) {\n return element.get('name') === name;\n });\n };\n return Container;\n}(Element));\nexport default Container;\n//# sourceMappingURL=container.js.map","/**\n * @description 扩展方法,提供 gl-matrix 为提供的方法\n * */\nimport { mat3, vec2 } from 'gl-matrix';\nexport function leftTranslate(out, a, v) {\n var transMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n mat3.fromTranslation(transMat, v);\n return mat3.multiply(out, transMat, a);\n}\nexport function leftRotate(out, a, rad) {\n var rotateMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n mat3.fromRotation(rotateMat, rad);\n return mat3.multiply(out, rotateMat, a);\n}\nexport function leftScale(out, a, v) {\n var scaleMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n mat3.fromScaling(scaleMat, v);\n return mat3.multiply(out, scaleMat, a);\n}\nfunction leftMultiply(out, a, a1) {\n return mat3.multiply(out, a1, a);\n}\n/**\n * 根据 actions 来做 transform\n * @param m\n * @param actions\n */\nexport function transform(m, actions) {\n var matrix = m ? [].concat(m) : [1, 0, 0, 0, 1, 0, 0, 0, 1];\n for (var i = 0, len = actions.length; i < len; i++) {\n var action = actions[i];\n switch (action[0]) {\n case 't':\n leftTranslate(matrix, matrix, [action[1], action[2]]);\n break;\n case 's':\n leftScale(matrix, matrix, [action[1], action[2]]);\n break;\n case 'r':\n leftRotate(matrix, matrix, action[1]);\n break;\n case 'm':\n leftMultiply(matrix, matrix, action[1]);\n break;\n default:\n break;\n }\n }\n return matrix;\n}\n/**\n * 向量 v1 到 向量 v2 夹角的方向\n * @param {Array} v1 向量\n * @param {Array} v2 向量\n * @return {Boolean} >= 0 顺时针 < 0 逆时针\n */\nexport function direction(v1, v2) {\n return v1[0] * v2[1] - v2[0] * v1[1];\n}\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nexport function angleTo(v1, v2, direct) {\n var ang = vec2.angle(v1, v2);\n var angleLargeThanPI = direction(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n/**\n * 计算二维向量的垂直向量\n * @param out\n * @param v\n * @param flag\n */\nexport function vertical(out, v, flag) {\n if (flag) {\n out[0] = v[1];\n out[1] = -1 * v[0];\n }\n else {\n out[0] = -1 * v[1];\n out[1] = v[0];\n }\n return out;\n}\n//# sourceMappingURL=ext.js.map","import { __extends } from \"tslib\";\nimport { each, isEqual, isFunction, isNumber, isObject, isArray, noop, mix, upperFirst, uniqueId } from '@antv/util';\nimport { ext } from '@antv/matrix-util';\nimport { removeFromArray, isParent } from '../util/util';\nimport { multiplyMatrix, multiplyVec2, invert } from '../util/matrix';\nimport Base from './base';\nvar transform = ext.transform;\nvar MATRIX = 'matrix';\nvar CLONE_CFGS = ['zIndex', 'capture', 'visible', 'type'];\n// 可以在 toAttrs 中设置,但不属于绘图属性的字段\nvar RESERVED_PORPS = ['repeat'];\nvar DELEGATION_SPLIT = ':';\nvar WILDCARD = '*';\n// 需要考虑数组嵌套数组的场景\n// 数组嵌套对象的场景不考虑\nfunction _cloneArrayAttr(arr) {\n var result = [];\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n result.push([].concat(arr[i]));\n }\n else {\n result.push(arr[i]);\n }\n }\n return result;\n}\nfunction getFormatFromAttrs(toAttrs, shape) {\n var fromAttrs = {};\n var attrs = shape.attrs;\n for (var k in toAttrs) {\n fromAttrs[k] = attrs[k];\n }\n return fromAttrs;\n}\nfunction getFormatToAttrs(props, shape) {\n var toAttrs = {};\n var attrs = shape.attr();\n each(props, function (v, k) {\n if (RESERVED_PORPS.indexOf(k) === -1 && !isEqual(attrs[k], v)) {\n toAttrs[k] = v;\n }\n });\n return toAttrs;\n}\nfunction checkExistedAttrs(animations, animation) {\n if (animation.onFrame) {\n return animations;\n }\n var startTime = animation.startTime, delay = animation.delay, duration = animation.duration;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n each(animations, function (item) {\n // 后一个动画开始执行的时间 < 前一个动画的结束时间 && 后一个动画的执行时间 > 前一个动画的延迟\n if (startTime + delay < item.startTime + item.delay + item.duration && duration > item.delay) {\n each(animation.toAttrs, function (v, k) {\n if (hasOwnProperty.call(item.toAttrs, k)) {\n delete item.toAttrs[k];\n delete item.fromAttrs[k];\n }\n });\n }\n });\n return animations;\n}\nvar Element = /** @class */ (function (_super) {\n __extends(Element, _super);\n function Element(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @protected\n * 图形属性\n * @type {ShapeAttrs}\n */\n _this.attrs = {};\n var attrs = _this.getDefaultAttrs();\n mix(attrs, cfg.attrs);\n _this.attrs = attrs;\n _this.initAttrs(attrs);\n _this.initAnimate(); // 初始化动画\n return _this;\n }\n // override\n Element.prototype.getDefaultCfg = function () {\n return {\n visible: true,\n capture: true,\n zIndex: 0,\n };\n };\n /**\n * @protected\n * 获取默认的属相\n */\n Element.prototype.getDefaultAttrs = function () {\n return {\n matrix: this.getDefaultMatrix(),\n opacity: 1,\n };\n };\n /**\n * @protected\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Element.prototype.onCanvasChange = function (changeType) { };\n /**\n * @protected\n * 初始化属性,有些属性需要加工\n * @param {object} attrs 属性值\n */\n Element.prototype.initAttrs = function (attrs) { };\n /**\n * @protected\n * 初始化动画\n */\n Element.prototype.initAnimate = function () {\n this.set('animable', true);\n this.set('animating', false);\n };\n Element.prototype.isGroup = function () {\n return false;\n };\n Element.prototype.getParent = function () {\n return this.get('parent');\n };\n Element.prototype.getCanvas = function () {\n return this.get('canvas');\n };\n Element.prototype.attr = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var name = args[0], value = args[1];\n if (!name)\n return this.attrs;\n if (isObject(name)) {\n for (var k in name) {\n this.setAttr(k, name[k]);\n }\n this.afterAttrsChange(name);\n return this;\n }\n if (args.length === 2) {\n this.setAttr(name, value);\n this.afterAttrsChange((_a = {},\n _a[name] = value,\n _a));\n return this;\n }\n return this.attrs[name];\n };\n // 是否被裁剪,被裁剪则不显示,不参与拾取\n Element.prototype.isClipped = function (refX, refY) {\n var clip = this.getClip();\n return clip && !clip.isHit(refX, refY);\n };\n /**\n * 内部设置属性值的接口\n * @param {string} name 属性名\n * @param {any} value 属性值\n */\n Element.prototype.setAttr = function (name, value) {\n var originValue = this.attrs[name];\n if (originValue !== value) {\n this.attrs[name] = value;\n this.onAttrChange(name, value, originValue);\n }\n };\n /**\n * @protected\n * 属性值发生改变\n * @param {string} name 属性名\n * @param {any} value 属性值\n * @param {any} originValue 属性值\n */\n Element.prototype.onAttrChange = function (name, value, originValue) {\n if (name === 'matrix') {\n this.set('totalMatrix', null);\n }\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n */\n Element.prototype.afterAttrsChange = function (targetAttrs) {\n if (this.cfg.isClipShape) {\n var applyTo = this.cfg.applyTo;\n if (applyTo) {\n applyTo.onCanvasChange('clip');\n }\n }\n else {\n this.onCanvasChange('attr');\n }\n };\n Element.prototype.show = function () {\n // 不是高频操作直接使用 set\n this.set('visible', true);\n this.onCanvasChange('show');\n return this;\n };\n Element.prototype.hide = function () {\n // 不是高频操作直接使用 set\n this.set('visible', false);\n this.onCanvasChange('hide');\n return this;\n };\n Element.prototype.setZIndex = function (zIndex) {\n this.set('zIndex', zIndex);\n var parent = this.getParent();\n if (parent) {\n // 改变 zIndex 不应该立即触发渲染 (调用 onCanvasChange('zIndex')),需要经过 sort 再触发\n parent.sort();\n }\n return this;\n };\n Element.prototype.toFront = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.push(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.toBack = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.unshift(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.remove = function (destroy) {\n if (destroy === void 0) { destroy = true; }\n var parent = this.getParent();\n if (parent) {\n removeFromArray(parent.getChildren(), this);\n if (!parent.get('clearing')) {\n // 如果父元素正在清理,当前元素不触发 remove\n this.onCanvasChange('remove');\n }\n }\n else {\n this.onCanvasChange('remove');\n }\n if (destroy) {\n this.destroy();\n }\n };\n Element.prototype.resetMatrix = function () {\n this.attr(MATRIX, this.getDefaultMatrix());\n this.onCanvasChange('matrix');\n };\n Element.prototype.getMatrix = function () {\n return this.attr(MATRIX);\n };\n Element.prototype.setMatrix = function (m) {\n this.attr(MATRIX, m);\n this.onCanvasChange('matrix');\n };\n // 获取总的 matrix\n Element.prototype.getTotalMatrix = function () {\n var totalMatrix = this.cfg.totalMatrix;\n if (!totalMatrix) {\n var currentMatrix = this.attr('matrix');\n var parentMatrix = this.cfg.parentMatrix;\n if (parentMatrix && currentMatrix) {\n totalMatrix = multiplyMatrix(parentMatrix, currentMatrix);\n }\n else {\n totalMatrix = currentMatrix || parentMatrix;\n }\n this.set('totalMatrix', totalMatrix);\n }\n return totalMatrix;\n };\n // 上层分组设置 matrix\n Element.prototype.applyMatrix = function (matrix) {\n var currentMatrix = this.attr('matrix');\n var totalMatrix = null;\n if (matrix && currentMatrix) {\n totalMatrix = multiplyMatrix(matrix, currentMatrix);\n }\n else {\n totalMatrix = currentMatrix || matrix;\n }\n this.set('totalMatrix', totalMatrix);\n this.set('parentMatrix', matrix);\n };\n /**\n * @protected\n * 获取默认的矩阵\n * @returns {number[]|null} 默认的矩阵\n */\n Element.prototype.getDefaultMatrix = function () {\n return null;\n };\n // 将向量应用设置的矩阵\n Element.prototype.applyToMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n return multiplyVec2(matrix, v);\n }\n return v;\n };\n // 根据设置的矩阵,将向量转换相对于图形/分组的位置\n Element.prototype.invertFromMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n var invertMatrix = invert(matrix);\n if (invertMatrix) {\n return multiplyVec2(invertMatrix, v);\n }\n }\n return v;\n };\n // 设置 clip\n Element.prototype.setClip = function (clipCfg) {\n var canvas = this.getCanvas();\n // 应该只设置当前元素的 clip,不应该去修改 clip 本身,方便 clip 被复用\n // TODO: setClip 的传参既 shape 配置,也支持 shape 对象\n // const preShape = this.get('clipShape');\n // if (preShape) {\n // // 将之前的 clipShape 销毁\n // preShape.destroy();\n // }\n var clipShape = null;\n // 如果配置项为 null,则不移除 clipShape\n if (clipCfg) {\n var ShapeBase = this.getShapeBase();\n var shapeType = upperFirst(clipCfg.type);\n var Cons = ShapeBase[shapeType];\n if (Cons) {\n clipShape = new Cons({\n type: clipCfg.type,\n isClipShape: true,\n applyTo: this,\n attrs: clipCfg.attrs,\n canvas: canvas,\n });\n }\n }\n this.set('clipShape', clipShape);\n this.onCanvasChange('clip');\n return clipShape;\n };\n Element.prototype.getClip = function () {\n // 高频率调用的地方直接使用 this.cfg.xxx\n var clipShape = this.cfg.clipShape;\n // 未设置时返回 Null,保证一致性\n if (!clipShape) {\n return null;\n }\n return clipShape;\n };\n Element.prototype.clone = function () {\n var _this = this;\n var originAttrs = this.attrs;\n var attrs = {};\n each(originAttrs, function (i, k) {\n if (isArray(originAttrs[k])) {\n attrs[k] = _cloneArrayAttr(originAttrs[k]);\n }\n else {\n attrs[k] = originAttrs[k];\n }\n });\n var cons = this.constructor;\n // @ts-ignore\n var clone = new cons({ attrs: attrs });\n each(CLONE_CFGS, function (cfgName) {\n clone.set(cfgName, _this.get(cfgName));\n });\n return clone;\n };\n Element.prototype.destroy = function () {\n var destroyed = this.destroyed;\n if (destroyed) {\n return;\n }\n this.attrs = {};\n _super.prototype.destroy.call(this);\n // this.onCanvasChange('destroy');\n };\n /**\n * 是否处于动画暂停状态\n * @return {boolean} 是否处于动画暂停状态\n */\n Element.prototype.isAnimatePaused = function () {\n return this.get('_pause').isPaused;\n };\n /**\n * 执行动画,支持多种函数签名\n * 1. animate(toAttrs: ElementAttrs, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 2. animate(onFrame: OnFrame, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 3. animate(toAttrs: ElementAttrs, cfg: AnimateCfg)\n * 4. animate(onFrame: OnFrame, cfg: AnimateCfg)\n * 各个参数的含义为:\n * toAttrs 动画最终状态\n * onFrame 自定义帧动画函数\n * duration 动画执行时间\n * easing 动画缓动效果\n * callback 动画执行后的回调\n * delay 动画延迟时间\n */\n Element.prototype.animate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this.get('timeline') && !this.get('canvas')) {\n return;\n }\n this.set('animating', true);\n var timeline = this.get('timeline');\n if (!timeline) {\n timeline = this.get('canvas').get('timeline');\n this.set('timeline', timeline);\n }\n var animations = this.get('animations') || [];\n // 初始化 tick\n if (!timeline.timer) {\n timeline.initTimer();\n }\n var toAttrs = args[0], duration = args[1], _a = args[2], easing = _a === void 0 ? 'easeLinear' : _a, _b = args[3], callback = _b === void 0 ? noop : _b, _c = args[4], delay = _c === void 0 ? 0 : _c;\n var onFrame;\n var repeat;\n var pauseCallback;\n var resumeCallback;\n var animateCfg;\n // 第二个参数,既可以是动画最终状态 toAttrs,也可以是自定义帧动画函数 onFrame\n if (isFunction(toAttrs)) {\n onFrame = toAttrs;\n toAttrs = {};\n }\n else if (isObject(toAttrs) && toAttrs.onFrame) {\n // 兼容 3.0 中的写法,onFrame 和 repeat 可在 toAttrs 中设置\n onFrame = toAttrs.onFrame;\n repeat = toAttrs.repeat;\n }\n // 第二个参数,既可以是执行时间 duration,也可以是动画参数 animateCfg\n if (isObject(duration)) {\n animateCfg = duration;\n duration = animateCfg.duration;\n easing = animateCfg.easing || 'easeLinear';\n delay = animateCfg.delay || 0;\n // animateCfg 中的设置优先级更高\n repeat = animateCfg.repeat || repeat || false;\n callback = animateCfg.callback || noop;\n pauseCallback = animateCfg.pauseCallback || noop;\n resumeCallback = animateCfg.resumeCallback || noop;\n }\n else {\n // 第四个参数,既可以是回调函数 callback,也可以是延迟时间 delay\n if (isNumber(callback)) {\n delay = callback;\n callback = null;\n }\n // 第三个参数,既可以是缓动参数 easing,也可以是回调函数 callback\n if (isFunction(easing)) {\n callback = easing;\n easing = 'easeLinear';\n }\n else {\n easing = easing || 'easeLinear';\n }\n }\n var formatToAttrs = getFormatToAttrs(toAttrs, this);\n var animation = {\n fromAttrs: getFormatFromAttrs(formatToAttrs, this),\n toAttrs: formatToAttrs,\n duration: duration,\n easing: easing,\n repeat: repeat,\n callback: callback,\n pauseCallback: pauseCallback,\n resumeCallback: resumeCallback,\n delay: delay,\n startTime: timeline.getTime(),\n id: uniqueId(),\n onFrame: onFrame,\n pathFormatted: false,\n };\n // 如果动画元素队列中已经有这个图形了\n if (animations.length > 0) {\n // 先检查是否需要合并属性。若有相同的动画,将该属性从前一个动画中删除,直接用后一个动画中\n animations = checkExistedAttrs(animations, animation);\n }\n else {\n // 否则将图形添加到动画元素队列\n timeline.addAnimator(this);\n }\n animations.push(animation);\n this.set('animations', animations);\n this.set('_pause', { isPaused: false });\n };\n /**\n * 停止动画\n * @param {boolean} toEnd 是否到动画的最终状态\n */\n Element.prototype.stopAnimate = function (toEnd) {\n var _this = this;\n if (toEnd === void 0) { toEnd = true; }\n var animations = this.get('animations');\n each(animations, function (animation) {\n // 将动画执行到最后一帧\n if (toEnd) {\n if (animation.onFrame) {\n _this.attr(animation.onFrame(1));\n }\n else {\n _this.attr(animation.toAttrs);\n }\n }\n if (animation.callback) {\n // 动画停止时的回调\n animation.callback();\n }\n });\n this.set('animating', false);\n this.set('animations', []);\n };\n /**\n * 暂停动画\n */\n Element.prototype.pauseAnimate = function () {\n var timeline = this.get('timeline');\n var animations = this.get('animations');\n var pauseTime = timeline.getTime();\n each(animations, function (animation) {\n animation._paused = true;\n animation._pauseTime = pauseTime;\n if (animation.pauseCallback) {\n // 动画暂停时的回调\n animation.pauseCallback();\n }\n });\n // 记录下是在什么时候暂停的\n this.set('_pause', {\n isPaused: true,\n pauseTime: pauseTime,\n });\n return this;\n };\n /**\n * 恢复动画\n */\n Element.prototype.resumeAnimate = function () {\n var timeline = this.get('timeline');\n var current = timeline.getTime();\n var animations = this.get('animations');\n var pauseTime = this.get('_pause').pauseTime;\n // 之后更新属性需要计算动画已经执行的时长,如果暂停了,就把初始时间调后\n each(animations, function (animation) {\n animation.startTime = animation.startTime + (current - pauseTime);\n animation._paused = false;\n animation._pauseTime = null;\n if (animation.resumeCallback) {\n animation.resumeCallback();\n }\n });\n this.set('_pause', {\n isPaused: false,\n });\n this.set('animations', animations);\n return this;\n };\n /**\n * 触发委托事件\n * @param {string} type 事件类型\n * @param {GraphEvent} eventObj 事件对象\n */\n Element.prototype.emitDelegation = function (type, eventObj) {\n var _this = this;\n var paths = eventObj.propagationPath;\n var events = this.getEvents();\n var relativeShape;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n }\n else if (type === 'mouseleave') {\n relativeShape = eventObj.toShape;\n }\n var _loop_1 = function (i) {\n var element = paths[i];\n // 暂定跟 name 绑定\n var name_1 = element.get('name');\n if (name_1) {\n // 第一个 mouseenter 和 mouseleave 的停止即可,因为后面的都是前面的 Parent\n if (\n // 只有 element 是 Group 或者 Canvas 的时候,才需要判断 isParent\n (element.isGroup() || (element.isCanvas && element.isCanvas())) &&\n relativeShape &&\n isParent(element, relativeShape)) {\n return \"break\";\n }\n if (isArray(name_1)) {\n each(name_1, function (subName) {\n _this.emitDelegateEvent(element, subName, eventObj);\n });\n }\n else {\n this_1.emitDelegateEvent(element, name_1, eventObj);\n }\n }\n };\n var this_1 = this;\n // 至少有一个对象,且第一个对象为 shape\n for (var i = 0; i < paths.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n };\n Element.prototype.emitDelegateEvent = function (element, name, eventObj) {\n var events = this.getEvents();\n // 事件委托的形式 name:type\n var eventName = name + DELEGATION_SPLIT + eventObj.type;\n if (events[eventName] || events[WILDCARD]) {\n // 对于通配符 *,事件名称 = 委托事件名称\n eventObj.name = eventName;\n eventObj.currentTarget = element;\n eventObj.delegateTarget = this;\n // 将委托事件的监听对象 delegateObject 挂载到事件对象上\n eventObj.delegateObject = element.get('delegateObject');\n this.emit(eventName, eventObj);\n }\n };\n /**\n * 移动元素\n * @param {number} translateX 水平移动距离\n * @param {number} translateY 垂直移动距离\n * @return {IElement} 元素\n */\n Element.prototype.translate = function (translateX, translateY) {\n if (translateX === void 0) { translateX = 0; }\n if (translateY === void 0) { translateY = 0; }\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['t', translateX, translateY]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 移动元素到目标位置\n * @param {number} targetX 目标位置的水平坐标\n * @param {number} targetX 目标位置的垂直坐标\n * @return {IElement} 元素\n */\n Element.prototype.move = function (targetX, targetY) {\n var x = this.attr('x') || 0;\n var y = this.attr('y') || 0;\n this.translate(targetX - x, targetY - y);\n return this;\n };\n /**\n * 移动元素到目标位置,等价于 move 方法。由于 moveTo 的语义性更强,因此在文档中推荐使用 moveTo 方法\n * @param {number} targetX 目标位置的 x 轴坐标\n * @param {number} targetY 目标位置的 y 轴坐标\n * @return {IElement} 元素\n */\n Element.prototype.moveTo = function (targetX, targetY) {\n return this.move(targetX, targetY);\n };\n /**\n * 缩放元素\n * @param {number} ratioX 水平缩放比例\n * @param {number} ratioY 垂直缩放比例\n * @return {IElement} 元素\n */\n Element.prototype.scale = function (ratioX, ratioY) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['s', ratioX, ratioY || ratioX]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以画布左上角 (0, 0) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotate = function (radian) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['r', radian]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以起始点为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtStart = function (rotate) {\n var _a = this.attr(), x = _a.x, y = _a.y;\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以任意点 (x, y) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtPoint = function (x, y, rotate) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n };\n return Element;\n}(Base));\nexport default Element;\n//# sourceMappingURL=element.js.map","import { AbstractGroup } from '@antv/g-base';\nimport { ChangeType } from '@antv/g-base';\nimport { IElement } from './interfaces';\nimport { Region } from './types';\nimport ShapeBase from './shape/base';\nimport * as Shape from './shape';\nimport { applyAttrsToContext, drawChildren, refreshElement } from './util/draw';\nimport { each, max, min } from '@antv/util';\nimport { intersectRect } from './util/util';\n\nclass Group extends AbstractGroup {\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n refreshElement(this, changeType);\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n\n // 同 shape 中的方法重复了\n _applyClip(context, clip: ShapeBase) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n applyAttrsToContext(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n }\n\n // 这个方法以前直接使用的 getCanvasBBox,由于 group 上没有缓存,所以每次重新计算,导致性能开销比较大\n // 大概能够节省全局渲染 15-20% 的性能,如果不在这里加缓存优化后 10W 个节点无法达到 5-6 ms,大概能够 30-40ms\n private cacheCanvasBBox() {\n const children = this.cfg.children;\n const xArr = [];\n const yArr = [];\n each(children, (child) => {\n const bbox = child.cfg.cacheCanvasBBox;\n // isInview 的判定是一旦图形或者分组渲染就要计算是否在视图内,\n // 这个判定 10W 个图形下差不多能够节省 5-6 ms 的开销\n if (bbox && child.cfg.isInView) {\n xArr.push(bbox.minX, bbox.maxX);\n yArr.push(bbox.minY, bbox.maxY);\n }\n });\n let bbox = null;\n if (xArr.length) {\n const minX = min(xArr);\n const maxX = max(xArr);\n const minY = min(yArr);\n const maxY = max(yArr);\n bbox = {\n minX,\n minY,\n x: minX,\n y: minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n const canvas = this.cfg.canvas;\n if (canvas) {\n const viewRange = canvas.getViewRange();\n // 如果这个地方判定 isInView == false 设置 bbox 为 false 的话,拾取的性能会更高\n // 但是目前 10W 图形的拾取在 2-5ms 内,这个优化意义不大,可以后期观察再看\n this.set('isInView', intersectRect(bbox, viewRange));\n }\n } else {\n this.set('isInView', false);\n }\n\n this.set('cacheCanvasBBox', bbox);\n }\n\n draw(context: CanvasRenderingContext2D, region?: Region) {\n const children = this.cfg.children as IElement[];\n const allowDraw = region ? this.cfg.refresh : true; // 局部刷新需要判定\n // 这个地方需要判定,在 G6 的场景每个 group 都有 transform 的场景下性能会开销非常大\n // 通过 refresh 的判定,可以不刷新没有发生过变化的分组,不在视窗内的分组等等\n // 如果想进一步提升局部渲染性能,可以进一步优化 refresh 的判定,依然有潜力\n if (children.length && allowDraw) {\n context.save();\n // group 上的矩阵和属性也会应用到上下文上\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n applyAttrsToContext(context, this);\n this._applyClip(context, this.getClip() as ShapeBase);\n drawChildren(context, children, region);\n context.restore();\n this.cacheCanvasBBox();\n }\n // 这里的成本比较大,如果不绘制则不再\n // this.set('cacheCanvasBBox', this.getCanvasBBox());\n this.cfg.refresh = null;\n // 绘制后,消除更新标记\n this.set('hasChanged', false);\n }\n // 绘制时被跳过,一般发生在分组隐藏时\n skipDraw() {\n this.set('cacheCanvasBBox', null);\n this.set('hasChanged', false);\n }\n}\n\nexport default Group;\n","import * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","var cache = new Map();\n/**\n * 注册计算包围盒的算法\n * @param type 方法名\n * @param method 方法\n */\nexport function register(type, method) {\n cache.set(type, method);\n}\n/**\n * 获取计算包围盒的算法\n * @param type 方法名\n */\nexport function getMethod(type) {\n return cache.get(type);\n}\n//# sourceMappingURL=register.js.map","export default function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, width = attrs.width, height = attrs.height;\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n}\n//# sourceMappingURL=rect.js.map","export default function (shape) {\n var _a = shape.attr(), x = _a.x, y = _a.y, r = _a.r;\n return {\n x: x - r,\n y: y - r,\n width: r * 2,\n height: r * 2,\n };\n}\n//# sourceMappingURL=circle.js.map","// 合并包围盒\nexport function mergeBBox(bbox1, bbox2) {\n if (!bbox1 || !bbox2) {\n return bbox1 || bbox2;\n }\n return {\n minX: Math.min(bbox1.minX, bbox2.minX),\n minY: Math.min(bbox1.minY, bbox2.minY),\n maxX: Math.max(bbox1.maxX, bbox2.maxX),\n maxY: Math.max(bbox1.maxY, bbox2.maxY),\n };\n}\n// 合并箭头的包围盒\nexport function mergeArrowBBox(shape, bbox) {\n var startArrowShape = shape.get('startArrowShape');\n var endArrowShape = shape.get('endArrowShape');\n var startArrowBBox = null;\n var endArrowBBox = null;\n if (startArrowShape) {\n startArrowBBox = startArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, startArrowBBox);\n }\n if (endArrowShape) {\n endArrowBBox = endArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, endArrowBBox);\n }\n return bbox;\n}\n//# sourceMappingURL=util.js.map","import { Util } from '@antv/g-math';\nimport { mergeArrowBBox } from './util';\nexport default function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n var _a = Util.getBBoxByArray(xArr, yArr), x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n}\n//# sourceMappingURL=polyline.js.map","import { each, isArray, isString } from '@antv/util';\nvar regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/ig;\nvar regexDot = /[^\\s\\,]+/ig;\nfunction parsePath(p) {\n var path = p || [];\n if (isArray(path)) {\n return path;\n }\n if (isString(path)) {\n path = path.match(regexTags);\n each(path, function (item, index) {\n // @ts-ignore\n item = item.match(regexDot);\n if (item[0].length > 1) {\n var tag = item[0].charAt(0);\n // @ts-ignore\n item.splice(1, 0, item[0].substr(1));\n // @ts-ignore\n item[0] = tag;\n }\n // @ts-ignore\n each(item, function (sub, i) {\n if (!isNaN(sub)) {\n // @ts-ignore\n item[i] = +sub;\n }\n });\n // @ts-ignore\n path[index] = item;\n });\n return path;\n }\n}\nexport default parsePath;\n//# sourceMappingURL=parse-path.js.map","import { isArray } from '@antv/util';\nvar SPACES = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nvar PATH_COMMAND = new RegExp('([a-z])[' + SPACES + ',]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[' + SPACES + ']*,?[' + SPACES + ']*)+)', 'ig');\nvar PATH_VALUES = new RegExp('(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[' + SPACES + ']*,?[' + SPACES + ']*', 'ig');\n// Parses given path string into an array of arrays of path segments\nexport default function parsePathString(pathString) {\n if (!pathString) {\n return null;\n }\n if (isArray(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n }\n else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return '';\n });\n return data;\n}\n//# sourceMappingURL=parse-path-string.js.map","var TAU = Math.PI * 2;\nvar mapToEllipse = function (_a, rx, ry, cosphi, sinphi, centerx, centery) {\n var x = _a.x, y = _a.y;\n x *= rx;\n y *= ry;\n var xp = cosphi * x - sinphi * y;\n var yp = sinphi * x + cosphi * y;\n return {\n x: xp + centerx,\n y: yp + centery\n };\n};\nvar approxUnitArc = function (ang1, ang2) {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n var a = ang2 === 1.5707963267948966\n ? 0.551915024494\n : ang2 === -1.5707963267948966\n ? -0.551915024494\n : 4 / 3 * Math.tan(ang2 / 4);\n var x1 = Math.cos(ang1);\n var y1 = Math.sin(ang1);\n var x2 = Math.cos(ang1 + ang2);\n var y2 = Math.sin(ang1 + ang2);\n return [\n {\n x: x1 - y1 * a,\n y: y1 + x1 * a\n },\n {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n },\n {\n x: x2,\n y: y2\n }\n ];\n};\nvar vectorAngle = function (ux, uy, vx, vy) {\n var sign = (ux * vy - uy * vx < 0) ? -1 : 1;\n var dot = ux * vx + uy * vy;\n if (dot > 1) {\n dot = 1;\n }\n if (dot < -1) {\n dot = -1;\n }\n return sign * Math.acos(dot);\n};\nvar getArcCenter = function (px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n var rxsq = Math.pow(rx, 2);\n var rysq = Math.pow(ry, 2);\n var pxpsq = Math.pow(pxp, 2);\n var pypsq = Math.pow(pyp, 2);\n var radicant = (rxsq * rysq) - (rxsq * pypsq) - (rysq * pxpsq);\n if (radicant < 0) {\n radicant = 0;\n }\n radicant /= (rxsq * pypsq) + (rysq * pxpsq);\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n var centerxp = radicant * rx / ry * pyp;\n var centeryp = radicant * -ry / rx * pxp;\n var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n var vx1 = (pxp - centerxp) / rx;\n var vy1 = (pyp - centeryp) / ry;\n var vx2 = (-pxp - centerxp) / rx;\n var vy2 = (-pyp - centeryp) / ry;\n var ang1 = vectorAngle(1, 0, vx1, vy1);\n var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n return [centerx, centery, ang1, ang2];\n};\nvar arcToBezier = function (_a) {\n var px = _a.px, py = _a.py, cx = _a.cx, cy = _a.cy, rx = _a.rx, ry = _a.ry, _b = _a.xAxisRotation, xAxisRotation = _b === void 0 ? 0 : _b, _c = _a.largeArcFlag, largeArcFlag = _c === void 0 ? 0 : _c, _d = _a.sweepFlag, sweepFlag = _d === void 0 ? 0 : _d;\n var curves = [];\n if (rx === 0 || ry === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n var sinphi = Math.sin(xAxisRotation * TAU / 360);\n var cosphi = Math.cos(xAxisRotation * TAU / 360);\n var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n if (pxp === 0 && pyp === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) +\n Math.pow(pyp, 2) / Math.pow(ry, 2);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var _e = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp), centerx = _e[0], centery = _e[1], ang1 = _e[2], ang2 = _e[3];\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n var ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0;\n }\n var segments = Math.max(Math.ceil(ratio), 1);\n ang2 /= segments;\n for (var i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2));\n ang1 += ang2;\n }\n return curves.map(function (curve) {\n var _a = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery), x1 = _a.x, y1 = _a.y;\n var _b = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery), x2 = _b.x, y2 = _b.y;\n var _c = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery), x = _c.x, y = _c.y;\n return { x1: x1, y1: y1, x2: x2, y2: y2, x: x, y: y };\n });\n};\nexport function arcToCubic(x1, y1, rx, ry, angle, LAF, SF, x2, y2) {\n var curves = arcToBezier({\n px: x1,\n py: y1,\n cx: x2,\n cy: y2,\n rx: rx,\n ry: ry,\n xAxisRotation: angle,\n largeArcFlag: LAF,\n sweepFlag: SF,\n });\n return curves.reduce(function (prev, cur) {\n var x1 = cur.x1, y1 = cur.y1, x2 = cur.x2, y2 = cur.y2, x = cur.x, y = cur.y;\n prev.push(x1, y1, x2, y2, x, y);\n return prev;\n }, []);\n}\n//# sourceMappingURL=arc-2-cubic.js.map","import { mod, toRadian } from '@antv/util';\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nexport function isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nexport default function getArcParams(startPoint, params) {\n var rx = params[1];\n var ry = params[2];\n var xRotation = mod(toRadian(params[3]), Math.PI * 2);\n var arcFlag = params[4];\n var sweepFlag = params[5];\n // 弧形起点坐标\n var x1 = startPoint[0];\n var y1 = startPoint[1];\n // 弧形终点坐标\n var x2 = params[6];\n var y2 = params[7];\n var xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 + (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n var yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 + (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n var f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n var cxp = ry ? (f * rx * yp) / ry : 0;\n var cyp = rx ? (f * -ry * xp) / rx : 0;\n // 椭圆圆心坐标\n var cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n // 起始点的单位向量\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n var theta = vAngle([1, 0], u);\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx: cx,\n cy: cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [x2, y2]) ? 0 : rx,\n ry: isSamePoint(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation: xRotation,\n arcFlag: arcFlag,\n sweepFlag: sweepFlag,\n };\n}\n//# sourceMappingURL=get-arc-params.js.map","import getArcParams from './get-arc-params';\nimport { isSamePoint } from './get-arc-params';\nimport parsePath from './parse-path';\n// 点对称\nfunction toSymmetry(point, center) {\n return [center[0] + (center[0] - point[0]), center[1] + (center[1] - point[1])];\n}\nexport default function getSegments(path) {\n path = parsePath(path);\n var segments = [];\n var currentPoint = null; // 当前图形\n var nextParams = null; // 下一节点的 path 参数\n var startMovePoint = null; // 开始 M 的点,可能会有多个\n var lastStartMovePointIndex = 0; // 最近一个开始点 M 的索引\n var count = path.length;\n for (var i = 0; i < count; i++) {\n var params = path[i];\n nextParams = path[i + 1];\n var command = params[0];\n // 数学定义上的参数,便于后面的计算\n var segment = {\n command: command,\n prePoint: currentPoint,\n params: params,\n startTangent: null,\n endTangent: null,\n };\n switch (command) {\n case 'M':\n startMovePoint = [params[1], params[2]];\n lastStartMovePointIndex = i;\n break;\n case 'A':\n var arcParams = getArcParams(currentPoint, params);\n segment['arcParams'] = arcParams;\n break;\n default:\n break;\n }\n if (command === 'Z') {\n // 有了 Z 后,当前节点从开始 M 的点开始\n currentPoint = startMovePoint;\n // 如果当前点的命令为 Z,相当于当前点为最近一个 M 点,则下一个点直接指向最近一个 M 点的下一个点\n nextParams = path[lastStartMovePointIndex + 1];\n }\n else {\n var len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n if (nextParams && nextParams[0] === 'Z') {\n // 如果下一个点的命令为 Z,则下一个点直接指向最近一个 M 点\n nextParams = path[lastStartMovePointIndex];\n if (segments[lastStartMovePointIndex]) {\n // 如果下一个点的命令为 Z,则最近一个 M 点的前一个点为当前点\n segments[lastStartMovePointIndex].prePoint = currentPoint;\n }\n }\n segment['currentPoint'] = currentPoint;\n // 如果当前点与最近一个 M 点相同,则最近一个 M 点的前一个点为当前点的前一个点\n if (segments[lastStartMovePointIndex] &&\n isSamePoint(currentPoint, segments[lastStartMovePointIndex].currentPoint)) {\n segments[lastStartMovePointIndex].prePoint = segment.prePoint;\n }\n var nextPoint = nextParams ? [nextParams[nextParams.length - 2], nextParams[nextParams.length - 1]] : null;\n segment['nextPoint'] = nextPoint;\n // Add startTangent and endTangent\n var prePoint = segment.prePoint;\n if (['L', 'H', 'V'].includes(command)) {\n segment.startTangent = [prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1]];\n segment.endTangent = [currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1]];\n }\n else if (command === 'Q') {\n // 二次贝塞尔曲线只有一个控制点\n var cp = [params[1], params[2]];\n // 二次贝塞尔曲线的终点为 currentPoint\n segment.startTangent = [prePoint[0] - cp[0], prePoint[1] - cp[1]];\n segment.endTangent = [currentPoint[0] - cp[0], currentPoint[1] - cp[1]];\n }\n else if (command === 'T') {\n var preSegment = segments[i - 1];\n var cp = toSymmetry(preSegment.currentPoint, prePoint);\n if (preSegment.command === 'Q') {\n segment.command = 'Q';\n segment.startTangent = [prePoint[0] - cp[0], prePoint[1] - cp[1]];\n segment.endTangent = [currentPoint[0] - cp[0], currentPoint[1] - cp[1]];\n }\n else {\n segment.command = 'TL';\n segment.startTangent = [prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1]];\n segment.endTangent = [currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1]];\n }\n }\n else if (command === 'C') {\n // 三次贝塞尔曲线有两个控制点\n var cp1 = [params[1], params[2]];\n var cp2 = [params[3], params[4]];\n segment.startTangent = [prePoint[0] - cp1[0], prePoint[1] - cp1[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n // horizontal line, eg. ['C', 100, 100, 100, 100, 200, 200]\n if (segment.startTangent[0] === 0 && segment.startTangent[1] === 0) {\n segment.startTangent = [cp1[0] - cp2[0], cp1[1] - cp2[1]];\n }\n if (segment.endTangent[0] === 0 && segment.endTangent[1] === 0) {\n segment.endTangent = [cp2[0] - cp1[0], cp2[1] - cp1[1]];\n }\n }\n else if (command === 'S') {\n var preSegment = segments[i - 1];\n var cp1 = toSymmetry(preSegment.currentPoint, prePoint);\n var cp2 = [params[1], params[2]];\n if (preSegment.command === 'C') {\n segment.command = 'C'; // 将 S 命令变换为 C 命令\n segment.startTangent = [prePoint[0] - cp1[0], prePoint[1] - cp1[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n }\n else {\n segment.command = 'SQ'; // 将 S 命令变换为 SQ 命令\n segment.startTangent = [prePoint[0] - cp2[0], prePoint[1] - cp2[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n }\n }\n else if (command === 'A') {\n var d = 0.001;\n var _a = segment['arcParams'] || {}, _b = _a.cx, cx = _b === void 0 ? 0 : _b, _c = _a.cy, cy = _c === void 0 ? 0 : _c, _d = _a.rx, rx = _d === void 0 ? 0 : _d, _e = _a.ry, ry = _e === void 0 ? 0 : _e, _f = _a.sweepFlag, sweepFlag = _f === void 0 ? 0 : _f, _g = _a.startAngle, startAngle = _g === void 0 ? 0 : _g, _h = _a.endAngle, endAngle = _h === void 0 ? 0 : _h;\n if (sweepFlag === 0) {\n d *= -1;\n }\n var dx1 = rx * Math.cos(startAngle - d) + cx;\n var dy1 = ry * Math.sin(startAngle - d) + cy;\n segment.startTangent = [dx1 - startMovePoint[0], dy1 - startMovePoint[1]];\n var dx2 = rx * Math.cos(startAngle + endAngle + d) + cx;\n var dy2 = ry * Math.sin(startAngle + endAngle - d) + cy;\n segment.endTangent = [prePoint[0] - dx2, prePoint[1] - dy2];\n }\n segments.push(segment);\n }\n return segments;\n}\n//# sourceMappingURL=path-2-segments.js.map","import { Quad as QuadUtil, Cubic as CubicUtil, Arc as EllipseArcUtil } from '@antv/g-math';\nimport { path2Segments } from '@antv/path-util';\nimport { isNumberEqual, max, min } from '@antv/util';\nimport { mergeArrowBBox } from './util';\nfunction getPathBox(segments, lineWidth) {\n var xArr = [];\n var yArr = [];\n var segmentsWithAngle = [];\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint, params = segment.params, prePoint = segment.prePoint;\n var box = void 0;\n switch (segment.command) {\n case 'Q':\n box = QuadUtil.box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4]);\n break;\n case 'C':\n box = CubicUtil.box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], params[5], params[6]);\n break;\n case 'A':\n var arcParams = segment.arcParams;\n box = EllipseArcUtil.box(arcParams.cx, arcParams.cy, arcParams.rx, arcParams.ry, arcParams.xRotation, arcParams.startAngle, arcParams.endAngle);\n break;\n default:\n xArr.push(currentPoint[0]);\n yArr.push(currentPoint[1]);\n break;\n }\n if (box) {\n segment.box = box;\n xArr.push(box.x, box.x + box.width);\n yArr.push(box.y, box.y + box.height);\n }\n if (lineWidth && (segment.command === 'L' || segment.command === 'M') && segment.prePoint && segment.nextPoint) {\n segmentsWithAngle.push(segment);\n }\n }\n // bbox calculation should ignore NaN for path attribute\n // ref: https://github.com/antvis/g/issues/210\n // ref: https://github.com/antvis/G2/issues/3109\n xArr = xArr.filter(function (item) { return !Number.isNaN(item) && item !== Infinity && item !== -Infinity; });\n yArr = yArr.filter(function (item) { return !Number.isNaN(item) && item !== Infinity && item !== -Infinity; });\n var minX = min(xArr);\n var minY = min(yArr);\n var maxX = max(xArr);\n var maxY = max(yArr);\n if (segmentsWithAngle.length === 0) {\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n for (var i = 0; i < segmentsWithAngle.length; i++) {\n var segment = segmentsWithAngle[i];\n var currentPoint = segment.currentPoint;\n var extra = void 0;\n if (currentPoint[0] === minX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minX = minX - extra.xExtra;\n }\n else if (currentPoint[0] === maxX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxX = maxX + extra.xExtra;\n }\n if (currentPoint[1] === minY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minY = minY - extra.yExtra;\n }\n else if (currentPoint[1] === maxY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxY = maxY + extra.yExtra;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\nfunction getExtraFromSegmentWithAngle(segment, lineWidth) {\n var prePoint = segment.prePoint, currentPoint = segment.currentPoint, nextPoint = segment.nextPoint;\n var currentAndPre = Math.pow(currentPoint[0] - prePoint[0], 2) + Math.pow(currentPoint[1] - prePoint[1], 2);\n var currentAndNext = Math.pow(currentPoint[0] - nextPoint[0], 2) + Math.pow(currentPoint[1] - nextPoint[1], 2);\n var preAndNext = Math.pow(prePoint[0] - nextPoint[0], 2) + Math.pow(prePoint[1] - nextPoint[1], 2);\n // 以 currentPoint 为顶点的夹角\n var currentAngle = Math.acos((currentAndPre + currentAndNext - preAndNext) / (2 * Math.sqrt(currentAndPre) * Math.sqrt(currentAndNext)));\n // 夹角为空、 0 或 PI 时,不需要计算夹角处的额外宽度\n // 注意: 由于计算精度问题,夹角为 0 的情况计算出来的角度可能是一个很小的值,还需要判断其与 0 是否近似相等\n if (!currentAngle || Math.sin(currentAngle) === 0 || isNumberEqual(currentAngle, 0)) {\n return {\n xExtra: 0,\n yExtra: 0,\n };\n }\n var xAngle = Math.abs(Math.atan2(nextPoint[1] - currentPoint[1], nextPoint[0] - currentPoint[0]));\n var yAngle = Math.abs(Math.atan2(nextPoint[0] - currentPoint[0], nextPoint[1] - currentPoint[1]));\n // 将夹角转为锐角\n xAngle = xAngle > Math.PI / 2 ? Math.PI - xAngle : xAngle;\n yAngle = yAngle > Math.PI / 2 ? Math.PI - yAngle : yAngle;\n // 这里不考虑在水平和垂直方向的投影,直接使用最大差值\n // 由于上层统一加减了二分之一线宽,这里需要进行弥补\n var extra = {\n // 水平方向投影\n xExtra: Math.cos(currentAngle / 2 - xAngle) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n // 垂直方向投影\n yExtra: Math.cos(yAngle - currentAngle / 2) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n };\n return extra;\n}\nexport default function (shape) {\n var attrs = shape.attr();\n var path = attrs.path, stroke = attrs.stroke;\n var lineWidth = stroke ? attrs.lineWidth : 0; // 只有有 stroke 时,lineWidth 才生效\n var segments = shape.get('segments') || path2Segments(path);\n var _a = getPathBox(segments, lineWidth), x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n}\n//# sourceMappingURL=path.js.map","import { register, getMethod } from './register';\nimport rect from './rect';\nimport circle from './circle';\nimport polyline from './polyline';\nimport polygon from './polygon';\nimport text from './text';\nimport path from './path';\nimport line from './line';\nimport ellipse from './ellipse';\nregister('rect', rect);\nregister('image', rect); // image 使用 rect 的包围盒计算\nregister('circle', circle);\nregister('marker', circle); // marker 使用 circle 的计算方案\nregister('polyline', polyline);\nregister('polygon', polygon);\nregister('text', text);\nregister('path', path);\nregister('line', line);\nregister('ellipse', ellipse);\nexport { getMethod as getBBoxMethod, register as registerBBox };\n//# sourceMappingURL=index.js.map","import { Util } from '@antv/g-math';\nexport default function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return Util.getBBoxByArray(xArr, yArr);\n}\n//# sourceMappingURL=polygon.js.map","import { getTextWidth, getTextHeight, assembleFont } from '../util/text';\nexport default function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, text = attrs.text, fontSize = attrs.fontSize, lineHeight = attrs.lineHeight;\n var font = attrs.font;\n if (!font) {\n // 如果未组装 font\n font = assembleFont(attrs);\n }\n var width = getTextWidth(text, font);\n var bbox;\n if (!width) {\n // 如果width不存在,四点共其实点\n bbox = {\n x: x,\n y: y,\n width: 0,\n height: 0,\n };\n }\n else {\n var textAlign = attrs.textAlign, textBaseline = attrs.textBaseline;\n var height = getTextHeight(text, fontSize, lineHeight); // attrs.height\n // 默认左右对齐:left, 默认上下对齐 bottom\n var point = {\n x: x,\n y: y - height,\n };\n if (textAlign) {\n if (textAlign === 'end' || textAlign === 'right') {\n point.x -= width;\n }\n else if (textAlign === 'center') {\n point.x -= width / 2;\n }\n }\n if (textBaseline) {\n if (textBaseline === 'top') {\n point.y += height;\n }\n else if (textBaseline === 'middle') {\n point.y += height / 2;\n }\n }\n bbox = {\n x: point.x,\n y: point.y,\n width: width,\n height: height,\n };\n }\n return bbox;\n}\n//# sourceMappingURL=text.js.map","import { mergeArrowBBox } from './util';\nexport default function (shape) {\n var attrs = shape.attr();\n var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2;\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var bbox = {\n minX: minX,\n maxX: maxX,\n minY: minY,\n maxY: maxY,\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n}\n//# sourceMappingURL=line.js.map","export default function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, rx = attrs.rx, ry = attrs.ry;\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2,\n };\n}\n//# sourceMappingURL=ellipse.js.map","import { __extends } from \"tslib\";\nimport Container from './container';\nvar AbstractGroup = /** @class */ (function (_super) {\n __extends(AbstractGroup, _super);\n function AbstractGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AbstractGroup.prototype.isGroup = function () {\n return true;\n };\n AbstractGroup.prototype.isEntityGroup = function () {\n return false;\n };\n AbstractGroup.prototype.clone = function () {\n var clone = _super.prototype.clone.call(this);\n // 获取构造函数\n var children = this.getChildren();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n clone.add(child.clone());\n }\n return clone;\n };\n return AbstractGroup;\n}(Container));\nexport default AbstractGroup;\n//# sourceMappingURL=group.js.map","import { __extends } from \"tslib\";\nimport Element from './element';\nimport { multiplyVec2 } from '../util/matrix';\nvar AbstractShape = /** @class */ (function (_super) {\n __extends(AbstractShape, _super);\n function AbstractShape(cfg) {\n return _super.call(this, cfg) || this;\n }\n // 是否在包围盒内\n AbstractShape.prototype._isInBBox = function (refX, refY) {\n var bbox = this.getBBox();\n return bbox.minX <= refX && bbox.maxX >= refX && bbox.minY <= refY && bbox.maxY >= refY;\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n * @param {ShapeAttrs} targetAttrs 渲染的图像属性\n */\n AbstractShape.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n this.clearCacheBBox();\n };\n // 计算包围盒时,需要缓存,这是一个高频的操作\n AbstractShape.prototype.getBBox = function () {\n var bbox = this.cfg.bbox;\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set('bbox', bbox);\n }\n return bbox;\n };\n // 计算相对于画布的包围盒\n AbstractShape.prototype.getCanvasBBox = function () {\n var canvasBBox = this.cfg.canvasBBox;\n if (!canvasBBox) {\n canvasBBox = this.calculateCanvasBBox();\n this.set('canvasBBox', canvasBBox);\n }\n return canvasBBox;\n };\n AbstractShape.prototype.applyMatrix = function (matrix) {\n _super.prototype.applyMatrix.call(this, matrix);\n // 清理掉缓存的包围盒\n this.set('canvasBBox', null);\n };\n /**\n * 计算相对于画布的包围盒,默认等同于 bbox\n * @return {BBox} 包围盒\n */\n AbstractShape.prototype.calculateCanvasBBox = function () {\n var bbox = this.getBBox();\n var totalMatrix = this.getTotalMatrix();\n var minX = bbox.minX, minY = bbox.minY, maxX = bbox.maxX, maxY = bbox.maxY;\n if (totalMatrix) {\n var topLeft = multiplyVec2(totalMatrix, [bbox.minX, bbox.minY]);\n var topRight = multiplyVec2(totalMatrix, [bbox.maxX, bbox.minY]);\n var bottomLeft = multiplyVec2(totalMatrix, [bbox.minX, bbox.maxY]);\n var bottomRight = multiplyVec2(totalMatrix, [bbox.maxX, bbox.maxY]);\n minX = Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n maxX = Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n minY = Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n maxY = Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n }\n var attrs = this.attrs;\n // 如果存在 shadow 则计算 shadow\n if (attrs.shadowColor) {\n var _a = attrs.shadowBlur, shadowBlur = _a === void 0 ? 0 : _a, _b = attrs.shadowOffsetX, shadowOffsetX = _b === void 0 ? 0 : _b, _c = attrs.shadowOffsetY, shadowOffsetY = _c === void 0 ? 0 : _c;\n var shadowLeft = minX - shadowBlur + shadowOffsetX;\n var shadowRight = maxX + shadowBlur + shadowOffsetX;\n var shadowTop = minY - shadowBlur + shadowOffsetY;\n var shadowBottom = maxY + shadowBlur + shadowOffsetY;\n minX = Math.min(minX, shadowLeft);\n maxX = Math.max(maxX, shadowRight);\n minY = Math.min(minY, shadowTop);\n maxY = Math.max(maxY, shadowBottom);\n }\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n };\n /**\n * @protected\n * 清理缓存的 bbox\n */\n AbstractShape.prototype.clearCacheBBox = function () {\n this.set('bbox', null);\n this.set('canvasBBox', null);\n };\n // 实现接口\n AbstractShape.prototype.isClipShape = function () {\n return this.get('isClipShape');\n };\n /**\n * @protected\n * 不同的图形自己实现是否在图形内部的逻辑,要判断边和填充区域\n * @param {number} refX 相对于图形的坐标 x\n * @param {number} refY 相对于图形的坐标 Y\n * @return {boolean} 点是否在图形内部\n */\n AbstractShape.prototype.isInShape = function (refX, refY) {\n return false;\n };\n /**\n * 是否仅仅使用 BBox 检测就可以判定拾取到图形\n * 默认是 false,但是有些图形例如 image、marker 等都可直接使用 BBox 的检测而不需要使用图形拾取\n * @return {Boolean} 仅仅使用 BBox 进行拾取\n */\n AbstractShape.prototype.isOnlyHitBox = function () {\n return false;\n };\n // 不同的 Shape 各自实现\n AbstractShape.prototype.isHit = function (x, y) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n var vec = [x, y, 1];\n vec = this.invertFromMatrix(vec);\n var refX = vec[0], refY = vec[1];\n var inBBox = this._isInBBox(refX, refY);\n // 跳过图形的拾取,在某些图形中可以省略一倍的检测成本\n if (this.isOnlyHitBox()) {\n return inBBox;\n }\n // 被裁减掉的和不在包围盒内的不进行计算\n if (inBBox && !this.isClipped(refX, refY)) {\n // 对图形进行拾取判断\n if (this.isInShape(refX, refY)) {\n return true;\n }\n // 对起始箭头进行拾取判断\n if (startArrowShape && startArrowShape.isHit(refX, refY)) {\n return true;\n }\n // 对结束箭头进行拾取判断\n if (endArrowShape && endArrowShape.isHit(refX, refY)) {\n return true;\n }\n }\n return false;\n };\n return AbstractShape;\n}(Element));\nexport default AbstractShape;\n//# sourceMappingURL=shape.js.map","import { IElement } from '@antv/g-base';\nimport { isString, each, isArray } from './util';\n\nconst regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nconst regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nconst regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nconst regexColorStop = /[\\d.]+:(#[^\\s]+|[^\\)]+\\))/gi;\n\nfunction addStop(steps, gradient) {\n const arr: string[] = steps.match(regexColorStop);\n each(arr, (item) => {\n const itemArr = item.split(':');\n gradient.addColorStop(itemArr[0], itemArr[1]);\n });\n}\n/**\n * 将边和填充设置的颜色转换成线性渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nexport function parseLineGradient(context: CanvasRenderingContext2D, element: IElement, gradientStr: string) {\n const arr = regexLG.exec(gradientStr);\n const angle = (parseFloat(arr[1]) % 360) * (Math.PI / 180);\n const steps = arr[2];\n const box = element.getBBox();\n let start;\n let end;\n\n if (angle >= 0 && angle < (1 / 2) * Math.PI) {\n start = {\n x: box.minX,\n y: box.minY,\n };\n end = {\n x: box.maxX,\n y: box.maxY,\n };\n } else if ((1 / 2) * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: box.maxX,\n y: box.minY,\n };\n end = {\n x: box.minX,\n y: box.maxY,\n };\n } else if (Math.PI <= angle && angle < (3 / 2) * Math.PI) {\n start = {\n x: box.maxX,\n y: box.maxY,\n };\n end = {\n x: box.minX,\n y: box.minY,\n };\n } else {\n start = {\n x: box.minX,\n y: box.maxY,\n };\n end = {\n x: box.maxX,\n y: box.minY,\n };\n }\n\n const tanTheta = Math.tan(angle);\n const tanTheta2 = tanTheta * tanTheta;\n\n const x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n const y = (tanTheta * (end.x - start.x + tanTheta * (end.y - start.y))) / (tanTheta2 + 1) + start.y;\n const gradient = context.createLinearGradient(start.x, start.y, x, y);\n addStop(steps, gradient);\n return gradient;\n}\n\n/**\n * 将边和填充设置的颜色转换成圆形渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nexport function parseRadialGradient(context: CanvasRenderingContext2D, element: IElement, gradientStr: string) {\n const arr = regexRG.exec(gradientStr);\n const fx = parseFloat(arr[1]);\n const fy = parseFloat(arr[2]);\n const fr = parseFloat(arr[3]);\n const steps = arr[4];\n // 环半径为0时,默认无渐变,取渐变序列的最后一个颜色\n if (fr === 0) {\n const colors = steps.match(regexColorStop);\n return colors[colors.length - 1].split(':')[1];\n }\n const box = element.getBBox();\n const width = box.maxX - box.minX;\n const height = box.maxY - box.minY;\n const r = Math.sqrt(width * width + height * height) / 2;\n const gradient = context.createRadialGradient(\n box.minX + width * fx,\n box.minY + height * fy,\n 0,\n box.minX + width / 2,\n box.minY + height / 2,\n fr * r\n );\n addStop(steps, gradient);\n return gradient;\n}\n\n/**\n * 边和填充设置的颜色转换成 pattern\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} patternStr 生成 pattern 的字符串\n */\nexport function parsePattern(context: CanvasRenderingContext2D, element: IElement, patternStr: string) {\n // 在转换过程中进行了缓存\n if (element.get('patternSource') && element.get('patternSource') === patternStr) {\n return element.get('pattern');\n }\n let pattern;\n let img;\n const arr = regexPR.exec(patternStr);\n let repeat = arr[1];\n const source = arr[2];\n\n // Function to be called when pattern loads\n function onload() {\n // Create pattern\n pattern = context.createPattern(img, repeat);\n element.set('pattern', pattern); // be a cache\n element.set('patternSource', patternStr);\n }\n\n switch (repeat) {\n case 'a':\n repeat = 'repeat';\n break;\n case 'x':\n repeat = 'repeat-x';\n break;\n case 'y':\n repeat = 'repeat-y';\n break;\n case 'n':\n repeat = 'no-repeat';\n break;\n default:\n repeat = 'no-repeat';\n }\n\n img = new Image();\n // If source URL is not a data URL\n if (!source.match(/^data:/i)) {\n // Set crossOrigin for this image\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n\n if (img.complete) {\n onload();\n } else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n\n return pattern;\n}\n\nexport function parseStyle(context: CanvasRenderingContext2D, element: IElement, color: string | CanvasPattern) {\n const bbox = element.getBBox();\n if (isNaN(bbox.x) || isNaN(bbox.y) || isNaN(bbox.width) || isNaN(bbox.height)) {\n return color;\n }\n\n if (isString(color)) {\n if (color[1] === '(' || color[2] === '(') {\n if (color[0] === 'l') {\n // regexLG.test(color)\n return parseLineGradient(context, element, color);\n }\n if (color[0] === 'r') {\n // regexRG.test(color)\n return parseRadialGradient(context, element, color);\n }\n if (color[0] === 'p') {\n // regexPR.test(color)\n return parsePattern(context, element, color);\n }\n }\n return color;\n }\n\n if (color instanceof CanvasPattern) {\n return color;\n }\n}\n\nexport function parseRadius(radius) {\n let r1 = 0;\n let r2 = 0;\n let r3 = 0;\n let r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n return [r1, r2, r3, r4];\n}\n","import { mod, toRadian, isSamePoint } from './util';\n\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nexport default function getArcParams(startPoint, params) {\n let rx = params[1];\n let ry = params[2];\n const xRotation = mod(toRadian(params[3]), Math.PI * 2);\n const arcFlag = params[4];\n const sweepFlag = params[5];\n // 弧形起点坐标\n const x1 = startPoint[0];\n const y1 = startPoint[1];\n // 弧形终点坐标\n const x2 = params[6];\n const y2 = params[7];\n const xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 + (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n const yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 + (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n const diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n\n let f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n const cxp = ry ? (f * rx * yp) / ry : 0;\n const cyp = rx ? (f * -ry * xp) / rx : 0;\n\n // 椭圆圆心坐标\n const cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n const cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n\n // 起始点的单位向量\n const u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n const v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n const theta = vAngle([1, 0], u);\n\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n let dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx,\n cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [x2, y2]) ? 0 : rx,\n ry: isSamePoint(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation,\n arcFlag,\n sweepFlag,\n };\n}\n","import { getOffScreenContext } from '@antv/g-base';\n\nexport default function isPointInPath(shape, x, y) {\n const ctx = getOffScreenContext();\n shape.createPath(ctx);\n return ctx.isPointInPath(x, y);\n}\n","/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nconst tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n\n return x < 0 ? -1 : 1;\n}\n\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if (\n (q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) &&\n Math.min(p1[0], p2[0]) <= q[0] &&\n q[0] <= Math.max(p1[0], p2[0]) &&\n Math.min(p1[1], p2[1]) <= q[1] &&\n q[1] <= Math.max(p1[1], p2[1])\n ) {\n return true;\n }\n return false;\n}\n\n// 判断点P在多边形内-射线法\nexport default function isInPolygon(points, x, y) {\n let isHit = false;\n const n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (let i = 0; i < n; i++) {\n const p1 = points[i];\n const p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1])