/* global d3 */ const axis = ((() => { const axisLocal = d3.local(); return d3.component('g') .create(function (selection, d) { axisLocal.set(selection.node(), d3[`axis${d.type}`]()); selection .attr('opacity', 0) .call(axisLocal.get(selection.node()) .scale(d.scale) .ticks(d.ticks || 10)) .transition('opacity').duration(2000) .attr('opacity', 0.8); }) .render(function (selection, d) { selection .attr('transform', `translate(${[ d.translateX || 0, d.translateY || 0, ]})`) .transition('ticks').duration(3000) .call(axisLocal.get(selection.node())); }); })());