UNPKG

billboard.js

Version:

Re-usable easy interface JavaScript chart library, based on D3 v4+

12 lines (11 loc) 3.7 kB
/*! * Copyright (c) 2017 ~ present NAVER Corp. * billboard.js project is licensed under the MIT license * * billboard.js, JavaScript chart library * https://naver.github.io/billboard.js/ * * @version 4.0.3 * @requires billboard.js * @summary billboard.js plugin */(function(c,u){typeof exports=="object"&&typeof module=="object"?module.exports=u(require("d3-delaunay")):typeof define=="function"&&define.amd?define("bb",["d3-delaunay"],u):typeof exports=="object"?exports.bb=u(require("d3-delaunay")):(c.bb=c.bb||{},c.bb.plugin=c.bb.plugin||{},c.bb.plugin.textoverlap=u(c.d3))})(this,function(_){return(function(){"use strict";var c={348:(function(e){e.exports=_})},u={};function l(e){var t=u[e];if(t!==void 0)return t.exports;var n=u[e]={exports:{}};return c[e](n,n.exports,l),n.exports}(function(){l.d=function(e,t){if(Array.isArray(t))for(var n=0;n<t.length;){var r=t[n++],s=t[n++];l.o(e,r)?s===0&&n++:s===0?Object.defineProperty(e,r,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,r,{enumerable:!0,get:s})}else for(var r in t)l.o(t,r)&&!l.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(function(){l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}})();var p={};l.d(p,{default:function(){return T}});var m=l(348);function v(e){const t=e.length;let n=0,r=e[t-1];for(let s=0;s<t;s++){const o=r;r=e[s],n+=o[1]*r[0]-o[0]*r[1]}return n/2}function g(e){const t=e.length;let n=0,r=0,s=0,o=e[t-1];for(let i=0;i<t;i++){const a=o;o=e[i];const f=a[0]*o[1]-o[0]*a[1];s+=f,n+=(a[0]+o[0])*f,r+=(a[1]+o[1])*f}return s*=3,[n/s,r/s]}const B=e=>e||e===0,H=e=>typeof e=="function",x=e=>typeof e=="string",$=e=>typeof e=="number",O=e=>typeof e=="undefined",w=e=>typeof e!="undefined",I=e=>typeof e=="boolean",S=e=>Math.ceil(e/10)*10,z=e=>Math.ceil(e)+.5,G=e=>e[1]-e[0],b=e=>typeof e=="object",A=e=>{for(const t in e)return!1;return!0},P=e=>O(e)||e===null||x(e)&&e.length===0||b(e)&&!(e instanceof Date)&&A(e)||$(e)&&isNaN(e),J=e=>!P(e),j=e=>Array.isArray(e),K=e=>e&&!(e!=null&&e.nodeType)&&b(e)&&!j(e);function M(e){const t=this.config;let n,r,s;const o=()=>{const i=r.shift();if(i&&n&&b(n)&&i in n)return n=n[i],o();if(!i)return n};Object.keys(t).forEach(i=>{n=e,r=i.split("_"),s=o(),w(s)&&(t[i]=s)}),this.api&&(this.state.orgConfig=e)}var C=Object.defineProperty,D=(e,t,n)=>t in e?C(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,h=(e,t,n)=>D(e,typeof t!="symbol"?t+"":t,n);class y{constructor(t={}){h(this,"$$"),h(this,"options"),h(this,"config"),this.options=t}loadConfig(){M.call(this,this.options)}$beforeInit(){}$init(){}$afterInit(){}$redraw(){}$willDestroy(){Object.keys(this).forEach(t=>{this[t]=null,delete this[t]})}}h(y,"version","4.0.3");class E{constructor(){return{selector:void 0,extent:1,area:0}}}class T extends y{constructor(t){return super(t),this.config=new E,this}$init(){this.loadConfig()}$redraw(){const{$$:{$el:t},config:{selector:n}}=this,r=n?t.main.selectAll(n):t.text;!r.empty()&&this.preventLabelOverlap(r)}generateVoronoi(t){const{$$:n}=this,{scale:r}=n,[s,o]=["x","y"].map(i=>r[i].domain());return[s[1],o[0]]=[o[0],s[1]],m.Delaunay.from(t).voronoi([...s,...o])}preventLabelOverlap(t){const{extent:n,area:r}=this.config,s=t.data().map(a=>[a.index,a.value]),o=this.generateVoronoi(s);let i=0;t.each(function(){const a=o.cellPolygon(i);if(a&&this){const[f,N]=s[i],[k,q]=g(a),V=Math.abs(v(a)),d=Math.round(Math.atan2(q-N,k-f)/Math.PI*2),F=n*(d===0?1:-1),L=d===-1?-n:n+5,U=Math.abs(d)===1?"middle":d===0?"start":"end";this.style.display=V<r?"none":"",this.setAttribute("text-anchor",U),this.setAttribute("dy",`0.${d===1?71:35}em`),this.setAttribute("transform",`translate(${F}, ${L})`)}i++})}}return p=p.default,p})()});