billboard.js
Version:
Re-usable easy interface JavaScript chart library, based on D3 v4+
184 lines (177 loc) • 7.16 kB
JavaScript
/*!
* 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.1.1
*/
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("react"));
else if(typeof define === 'function' && define.amd)
define(["react"], factory);
else if(typeof exports === 'object')
exports["BillboardReact"] = factory(require("react"));
else
root["BillboardReact"] = factory(root["React"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE__13__) {
return /******/ (function() { // webpackBootstrap
/******/ // runtime can't be in strict mode because 'output.globalObject' reads 'this'.
/******/ var __webpack_modules__ = ({
/***/ 13:
/***/ (function(module) {
"use strict";
module.exports = __WEBPACK_EXTERNAL_MODULE__13__;
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function() { return module['default']; } :
/******/ function() { return module; };
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/
/******/ /* webpack/runtime/define property getters */
/******/ // define getter/value functions for harmony exports
/******/ __webpack_require__.d = function(exports, definition) {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); };
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
!function() {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ Chart: function() { return /* binding */ Chart; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
function resolveType(type) {
return typeof type === "function" ? type() : type;
}
function getOptions(options, type) {
const resolvedType = resolveType(type);
return __spreadValues(__spreadValues({}, options), resolvedType ? {
data: __spreadProps(__spreadValues({}, options.data), {
type: resolvedType
})
} : {});
}
const Chart = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)((props, ref) => {
const container = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
const instance = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
const _a = props, { bb: billboard, options, type, modules } = _a, htmlDivProps = __objRest(_a, ["bb", "options", "type", "modules"]);
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
if (!billboard || !options) {
console.warn("Required props('bb' or 'options') are not defined.");
return;
}
modules == null ? void 0 : modules.forEach((register) => register());
const chartOptions = getOptions(options, type);
chartOptions.bindto = container.current;
instance.current = billboard.generate(chartOptions);
return () => {
var _a2;
(_a2 = instance.current) == null ? void 0 : _a2.destroy();
instance.current = null;
};
}, []);
(0,react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle)(
ref,
() => ({
get instance() {
return instance.current;
}
}),
[]
);
return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", __spreadProps(__spreadValues({}, htmlDivProps), {
ref: container
}));
});
/* harmony default export */ __webpack_exports__["default"] = (Chart);
}();
/******/ return __webpack_exports__;
/******/ })()
;
});