1 |
- {"version":3,"sources":["../../../../src/components/VSparkline/helpers/path.ts"],"names":[],"mappings":"AACA,SAAS,cAAT,EAAyB,WAAzB,EAAsC,MAAtC,QAAoD,QAApD;AAEA;;;AAGA,OAAM,SAAU,OAAV,CAAmB,MAAnB,EAAoC,MAApC,EAA6E;AAAA,QAAzB,IAAyB,uEAAlB,KAAkB;AAAA,QAAX,MAAW,uEAAF,EAAE;;AACjF,QAAM,QAAQ,OAAO,KAAP,EAAd;AACA,QAAM,MAAM,OAAO,OAAO,MAAP,GAAgB,CAAvB,CAAZ;AAEA,WACE,CAAC,aAAW,MAAM,CAAjB,SAAsB,MAAtB,UAAiC,MAAM,CAAvC,SAA4C,MAAM,CAAlD,SAA4D,MAAM,CAAlE,SAAuE,MAAM,CAA9E,IACA,OACG,GADH,CACO,UAAC,KAAD,EAAQ,KAAR,EAAiB;AACpB,YAAM,OAAO,OAAO,QAAQ,CAAf,CAAb;AACA,YAAM,OAAO,OAAO,QAAQ,CAAf,KAAqB,KAAlC;AACA,YAAM,cAAc,QAAQ,eAAe,IAAf,EAAqB,KAArB,EAA4B,IAA5B,CAA5B;AAEA,YAAI,CAAC,IAAD,IAAS,WAAb,EAA0B;AACxB,yBAAW,MAAM,CAAjB,SAAsB,MAAM,CAA5B;AACD;AAED,YAAM,YAAY,KAAK,GAAL,CAChB,YAAY,IAAZ,EAAkB,KAAlB,CADgB,EAEhB,YAAY,IAAZ,EAAkB,KAAlB,CAFgB,CAAlB;AAIA,YAAM,sBAAsB,YAAY,CAAZ,GAAgB,MAA5C;AACA,YAAM,iBAAiB,sBAAsB,YAAY,CAAlC,GAAsC,MAA7D;AAEA,YAAM,SAAS,OAAO,IAAP,EAAa,KAAb,EAAoB,cAApB,CAAf;AACA,YAAM,QAAQ,OAAO,IAAP,EAAa,KAAb,EAAoB,cAApB,CAAd;AAEA,qBAAW,OAAO,CAAlB,SAAuB,OAAO,CAA9B,SAAmC,MAAM,CAAzC,SAA8C,MAAM,CAApD,SAAyD,MAAM,CAA/D,SAAoE,MAAM,CAA1E;AACD,KArBH,EAsBG,IAtBH,CAsBQ,EAtBR,CADA,IAwBC,aAAW,IAAI,CAAf,SAAoB,MAApB,UAAiC,EAxBlC,CADF;AA0BD","sourcesContent":["import { Point } from '../VSparkline'\nimport { checkCollinear, getDistance, moveTo } from './math'\n\n/**\n * From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18\n */\nexport function genPath (points: Point[], radius: number, fill = false, height = 75) {\n const start = points.shift()!\n const end = points[points.length - 1]\n\n return (\n (fill ? `M${start.x} ${height} L${start.x} ${start.y}` : `M${start.x} ${start.y}`) +\n points\n .map((point, index) => {\n const next = points[index + 1]\n const prev = points[index - 1] || start\n const isCollinear = next && checkCollinear(next, point, prev)\n\n if (!next || isCollinear) {\n return `L${point.x} ${point.y}`\n }\n\n const threshold = Math.min(\n getDistance(prev, point),\n getDistance(next, point)\n )\n const isTooCloseForRadius = threshold / 2 < radius\n const radiusForPoint = isTooCloseForRadius ? threshold / 2 : radius\n\n const before = moveTo(prev, point, radiusForPoint)\n const after = moveTo(next, point, radiusForPoint)\n\n return `L${before.x} ${before.y}S${point.x} ${point.y} ${after.x} ${after.y}`\n })\n .join('') +\n (fill ? `L${end.x} ${height} Z` : ''))\n}\n"],"sourceRoot":""}
|