component/creditTag.js

import * as d3 from "d3";

/**
 * Reusable Credit Tag Component
 *
 * @module
 */
export default function() {

	/* Default Properties */
	let text = "d3-ez.net";
	let href = "http://d3-ez.net";

	/**
	 * Constructor
	 *
	 * @constructor
	 * @alias creditTag
	 * @param {d3.selection} selection - The chart holder D3 selection.
	 */
	function my(selection) {
		const creditTag = selection.selectAll("#creditTag")
			.data([0])
			.enter()
			.append("g")
			.attr("id", "creditTag");

		const creditText = creditTag.append("text")
			.text(text)
			.style("text-anchor", "end")
			.attr("baseline", "middle")
			.attr("xlink:href", href)
			.on("click", function() {
				window.open(href);
			});
	}

	/**
	 * Text Getter / Setter
	 *
	 * @param {string} _v - Credit tag text.
	 * @returns {*}
	 */
	my.text = function(_v) {
		if (!arguments.length) return text;
		text = _v;
		return this;
	};

	/**
	 * Link Getter / Setter
	 *
	 * @param {string} _v - Credit tag link.
	 * @returns {*}
	 */
	my.href = function(_v) {
		if (!arguments.length) return href;
		href = _v;
		return this;
	};

	return my;
}