core.js

/**
 * Copyright (c) 2017 ~ present NAVER Corp.
 * billboard project is licensed under the MIT license
 */
import Chart from "./internals/Chart";
import ChartInternal from "./internals/ChartInternal";
import Axis from "./axis/Axis";

import "./config/config";
import "./internals/scale";
import "./internals/domain";
import "./data/data";
import "./data/data.convert";
import "./data/data.load";
import "./internals/category";
import "./interactions/interaction";
import "./internals/size";
import "./shape/shape";
import "./shape/arc";
import "./shape/bar";
import "./shape/bubble";
import "./shape/line";
import "./shape/point";
import "./shape/radar";
import "./internals/text";
import "./internals/type";
import "./internals/grid";
import "./internals/tooltip";
import "./internals/legend";
import "./internals/title";
import "./internals/clip";
import "./internals/region";
import "./interactions/drag";
import "./internals/selection";
import "./interactions/subchart";
import "./interactions/zoom";
import "./internals/color";
import "./internals/format";
import "./internals/cache";
import "./internals/class";
import "./api/api.focus";
import "./api/api.show";
import "./api/api.zoom";
import "./api/api.load";
import "./api/api.flow";
import "./api/api.selection";
import "./api/api.transform";
import "./api/api.group";
import "./api/api.grid";
import "./api/api.region";
import "./api/api.data";
import "./api/api.category";
import "./api/api.color";
import "./api/api.x";
import "./api/api.axis";
import "./api/api.legend";
import "./api/api.chart";
import "./api/api.tooltip";
import "./internals/ua";
import "./api/api.export";

// base CSS
import "./scss/billboard.scss";

/**
 * @namespace bb
 * @version #__VERSION__#
 */
const bb = {
	/**
	 * Version information
	 * @property {String} version version
	 * @example
	 *    bb.version;  // "1.0.0"
	 * @memberof bb
	 */
	version: "#__VERSION__#",

	/**
	 * Generate chart
	 * @param {Options} options chart options
	 * @memberof bb
	 * @return {Chart}
	 * @see {@link Options} for different generation options
	 * @see {@link Chart} for different methods API
	 * @example
	 *  <!-- chart holder -->
	 * <div id="LineChart"></div>
	 * @example
	 *   // generate chart with options
	 *  var chart = bb.generate({
	 *      "bindto": "#LineChart"
	 *      "data": {
	 *          "columns": [
	 *              ["data1", 30, 200, 100, 400, 150, 250],
	 *              ["data2", 50, 20, 10, 40, 15, 25]
	 *           ]
	 *      }
	 *  });
	 *
	 *  // call some API
	 *  // ex) get the data of 'data1'
	 *  chart.data("data1");
	 */
	generate(config) {
		const inst = new Chart(config);

		inst.internal.charts = this.instance;
		this.instance.push(inst);

		return inst;
	},

	/**
	 * An array containing instance created
	 * @property {Array} instance instance array
	 * @example
	 *  // generate charts
	 *  var chart1 = bb.generate(...);
	 *  var chart2 = bb.generate(...);
	 *
	 *  bb.instance;  // [ chart1, chart2, ... ]
	 * @memberof bb
	 */
	instance: [],

	/**
	 * Internal chart object
	 * @private
	 */
	chart: {
		fn: Chart.prototype,
		internal: {
			fn: ChartInternal.prototype,
			axis: {
				fn: Axis.prototype
			}
		}
	}
};

export {bb};
export default bb;