New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@data-forge-plot/c3

Package Overview
Dependencies
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@data-forge-plot/c3 - npm Package Compare versions

Comparing version
0.1.2
to
0.1.3
+15
-1
build/index.d.ts

@@ -7,2 +7,16 @@ import { IChartDef } from "@data-forge-plot/chart-def";

}
export declare function mountChart(chartDef: IChartDef, domElement: HTMLElement): IChart;
/**
* Options to control how the chart is mounted.
*/
export interface IMountOptions {
/**
* Set to true to make the chart static.
* The chart will have interactive features and animations disabled.
*/
makeStatic?: boolean;
/**
* Debug log the chart definition after formatting.
*/
showChartDef?: boolean;
}
export declare function mountChart(chartDef: IChartDef, domElement: HTMLElement, chartOptions?: IMountOptions): IChart;
+1
-1

@@ -1,2 +0,2 @@

module.exports=function(t){var e={};function a(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,a),n.l=!0,n.exports}return a.m=t,a.c=e,a.d=function(t,e,r){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)a.d(r,n,function(e){return t[e]}.bind(null,n));return r},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=1)}([function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(2),n=a(3);function i(t,e,a){var r=e.axisMap;if(r){var n=r[t];if(n)for(var i=0,o=n;i<o.length;i++){a[o[i].series]=t}}}function o(t){var e={};return i("y",t,e),i("y2",t,e),e}function u(t,e,a,i){var o=t.series,u=e.data.columns[o];i.type=function(t){return"number"===t?"indexed":"date"===t?"timeseries":"category"}(u),a&&a.label&&(i.label=a.label),i.show=!0,t.format&&(i.tick||(i.tick={}),i.tick.values=function(t,e,a,i){return"number"===a?t.data.values.map(function(t){return n(t[e]).format(i)}):"date"===a?t.data.values.map(function(t){return r(t[e]).format(i)}):void 0}(e,o,u,t.format))}function s(t,e,a,r){var n=e.axisMap;if(n){r[t]={show:!1};var i=r[t],o=n[t];o&&(Array.isArray(o)?o.forEach(function(t){u(t,e,a,i)}):u(o,e,a,i))}}function f(t,e,a,r){if(e.axisMap){s(t,e,a,r);var n=r[t];a&&void 0!==a.min&&(n.min=a.min),a&&void 0!==a.max&&(n.max=a.max)}}function l(t){var e={};return s("x",t,t.plotConfig.x,e),f("y",t,t.plotConfig.y,e),f("y2",t,t.plotConfig.y2,e),e}function c(t){var e={};if(t.axisMap)for(var a in t.axisMap){var r=t.axisMap[a];Array.isArray(r)?r.forEach(function(t){t.label&&(e[t.series]=t.label)}):r.label&&(e[r.series]=r.label)}return e}function d(t,e,a){var r=e.axisMap;if(r){var n=r[t];if(n)for(var i=0,o=n;i<o.length;i++){var u=o[i],s=u.series;if(a[s])return;u.x?a[s]=u.x.series:e.axisMap&&e.axisMap.x&&(a[s]=e.axisMap.x.series)}}}function v(t,e,a,r){if(!r[t]){var n=e.data.values.map(function(e){return e[t]});r[t]=!0,a.push([t].concat(n))}}function p(t,e,a,r){var n=e.axisMap;if(n){var i=n[t];if(i)for(var o=0,u=i;o<u.length;o++){var s=u[o];v(s.series,e,a,r);var f=s.x&&s.x.series||e.axisMap&&e.axisMap.x&&e.axisMap.x.series||null;f&&v(f,e,a,r)}}}e.formatChartDef=function(t){var e=t;if(t.data.index&&t.data.index.values&&t.data.index.values.length>0){(e=Object.assign({},t)).data=Object.assign({},t.data),e.data.columnOrder=t.data.columnOrder.slice(),e.data.columnOrder.push("__index__"),e.data.columns=Object.assign({},t.data.columns),e.data.columns.__index__=t.data.index.type,e.data.values=t.data.values.slice();for(var a=0;a<e.data.values.length;++a)(m=e.data.values[a]).__index__=t.data.index.values[a]}var n=e.data.values;if(e.data.columns){var i=Object.keys(e.data.columns);if(i.filter(function(t){return"date"===e.data.columns[t]})){n=n.slice();for(var u=0,s=i;u<s.length;u++){var f=s[u];if("date"===e.data.columns[f])for(var v=0,x=n;v<x.length;v++){var m;(m=x[v])[f]=r(m[f],r.ISO_8601).toDate()}}}}var h={};d("y",e,h),d("y2",e,h);var y=[],g={};return p("y",e,y,g),p("y2",e,y,g),{size:{width:e.plotConfig&&e.plotConfig.width||1200,height:e.plotConfig&&e.plotConfig.height||600},data:{xs:h,columns:y,type:e.plotConfig&&e.plotConfig.chartType||"line",axes:o(e),names:c(e)},axis:l(e),transition:{duration:0},point:{show:!1},legend:{show:e.plotConfig.legend&&e.plotConfig.legend.show}}}},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(0),n=a(0);e.formatChartDef=n.formatChartDef;var i=a(4),o=function(){function t(t){this.chart=t}return t.prototype.unmount=function(){this.chart&&(this.chart.destroy(),this.chart=void 0)},t.prototype.sizeToFit=function(){this.chart&&this.chart.resize()},t}();e.mountChart=function(t,e){var a=r.formatChartDef(t);a.bindto=e;var n=i.generate(a);return new o(n)}},function(t,e){t.exports=require("moment")},function(t,e){t.exports=require("numeral")},function(t,e){t.exports=require("c3")}]);
module.exports=function(t){var e={};function a(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,a),n.l=!0,n.exports}return a.m=t,a.c=e,a.d=function(t,e,r){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)a.d(r,n,function(e){return t[e]}.bind(null,n));return r},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=1)}([function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(2),n=a(3);function i(t,e,a){var r=e.axisMap;if(r){var n=r[t];if(n)for(var i=0,o=n;i<o.length;i++){a[o[i].series]=t}}}function o(t){var e={};return i("y",t,e),i("y2",t,e),e}function u(t,e,a,i){var o=t.series,u=e.data.columns[o];i.type=function(t){return"number"===t?"indexed":"date"===t?"timeseries":"category"}(u),a&&a.label&&(i.label=a.label),i.show=!0,t.format&&(i.tick||(i.tick={}),i.tick.values=function(t,e,a,i){return"number"===a?t.data.values.map(function(t){return n(t[e]).format(i)}):"date"===a?t.data.values.map(function(t){return r(t[e]).format(i)}):void 0}(e,o,u,t.format))}function s(t,e,a,r){var n=e.axisMap;if(n){r[t]={show:!1};var i=r[t],o=n[t];o&&(Array.isArray(o)?o.forEach(function(t){u(t,e,a,i)}):u(o,e,a,i))}}function f(t,e,a,r){if(e.axisMap){s(t,e,a,r);var n=r[t];a&&void 0!==a.min&&(n.min=a.min),a&&void 0!==a.max&&(n.max=a.max)}}function l(t){var e={};return s("x",t,t.plotConfig.x,e),f("y",t,t.plotConfig.y,e),f("y2",t,t.plotConfig.y2,e),e}function c(t){var e={};if(t.axisMap)for(var a in t.axisMap){var r=t.axisMap[a];Array.isArray(r)?r.forEach(function(t){t.label&&(e[t.series]=t.label)}):r.label&&(e[r.series]=r.label)}return e}function d(t,e,a){var r=e.axisMap;if(r){var n=r[t];if(n)for(var i=0,o=n;i<o.length;i++){var u=o[i],s=u.series;if(a[s])return;u.x?a[s]=u.x.series:e.axisMap&&e.axisMap.x&&(a[s]=e.axisMap.x.series)}}}function v(t,e,a,r){if(!r[t]){var n=e.data.values.map(function(e){return e[t]});r[t]=!0,a.push([t].concat(n))}}function p(t,e,a,r){var n=e.axisMap;if(n){var i=n[t];if(i)for(var o=0,u=i;o<u.length;o++){var s=u[o];v(s.series,e,a,r);var f=s.x&&s.x.series||e.axisMap&&e.axisMap.x&&e.axisMap.x.series||null;f&&v(f,e,a,r)}}}e.formatChartDef=function(t){var e=t;if(t.data.index&&t.data.index.values&&t.data.index.values.length>0){(e=Object.assign({},t)).data=Object.assign({},t.data),e.data.columnOrder=t.data.columnOrder.slice(),e.data.columnOrder.push("__index__"),e.data.columns=Object.assign({},t.data.columns),e.data.columns.__index__=t.data.index.type,e.data.values=t.data.values.slice();for(var a=0;a<e.data.values.length;++a)(m=e.data.values[a]).__index__=t.data.index.values[a]}var n=e.data.values;if(e.data.columns){var i=Object.keys(e.data.columns);if(i.filter(function(t){return"date"===e.data.columns[t]})){n=n.slice();for(var u=0,s=i;u<s.length;u++){var f=s[u];if("date"===e.data.columns[f])for(var v=0,x=n;v<x.length;v++){var m;(m=x[v])[f]=r(m[f],r.ISO_8601).toDate()}}}}var h={};d("y",e,h),d("y2",e,h);var y=[],g={};return p("y",e,y,g),p("y2",e,y,g),{size:{width:e.plotConfig&&e.plotConfig.width||1200,height:e.plotConfig&&e.plotConfig.height||600},data:{xs:h,columns:y,type:e.plotConfig&&e.plotConfig.chartType||"line",axes:o(e),names:c(e)},axis:l(e),transition:{duration:0},point:{show:!1},legend:{show:e.plotConfig.legend&&e.plotConfig.legend.show}}}},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(0),n=a(0);e.formatChartDef=n.formatChartDef;var i=a(4),o=function(){function t(t){this.chart=t}return t.prototype.unmount=function(){this.chart&&(this.chart.destroy(),this.chart=void 0)},t.prototype.sizeToFit=function(){this.chart&&this.chart.resize()},t}();e.mountChart=function(t,e,a){var n=r.formatChartDef(t);a&&a.showChartDef&&(console.log("Formatted chart definition:"),console.log(JSON.stringify(n,null,4))),n.bindto=e;var u=i.generate(n);return new o(u)}},function(t,e){t.exports=require("moment")},function(t,e){t.exports=require("numeral")},function(t,e){t.exports=require("c3")}]);
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/lib/format-chart-def.ts","webpack:///./src/index.ts","webpack:///external \"moment\"","webpack:///external \"numeral\"","webpack:///external \"c3\""],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","moment","numeral","configureOneAxe","axisName","inputChartDef","c3Axes","axisMap","series","_i","series_1","length","configureAxes","configureOneSeries","seriesConfig","axisConfig","c3AxisDef","seriesName","dataType","data","columns","type","determineAxisType","label","show","format","tick","values","formatString","map","formatValues","configureOneAxis","c3Axis","Array","isArray","forEach","configureOneYAxis","undefined","min","max","configureAxis","plotConfig","x","y","y2","configureSeriesNames","seriesNames","extractXS","xs","series_2","ySeriesName","addColumn","columnsSet","columnData","row","push","concat","extractColumns","series_3","xSeriesName","formatChartDef","workingChartDef","index","assign","columnOrder","slice","__index__","columnNames","keys","filter","columnName","columnNames_1","_a","values_1","ISO_8601","toDate","size","width","height","chartType","axes","names","axis","transition","duration","point","legend","format_chart_def_1","format_chart_def_2","c3","C3Chart","chart","this","unmount","destroy","sizeToFit","resize","mountChart","chartDef","domElement","c3ChartDef","bindto","generate","require"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","import * as moment from \"moment\";\r\nimport * as numeral from \"numeral\";\r\nimport { IChartDef, IYAxisSeriesConfig, IAxisConfig, IAxisSeriesConfig, IYAxisConfig } from \"@data-forge-plot/chart-def\";\r\n\r\n/**\r\n * Configure a single axe.\r\n */\r\nfunction configureOneAxe(axisName: string, inputChartDef: IChartDef, c3Axes: any) {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n const series: IYAxisSeriesConfig[] = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n for (const seriesConfig of series) {\r\n c3Axes[seriesConfig.series] = axisName;\r\n }\r\n}\r\n\r\n/**\r\n * Configure C3 axes.\r\n */\r\nfunction configureAxes(inputChartDef: IChartDef): any { // todo: I could type the c3 chart def?\r\n const c3Axes: any = {};\r\n configureOneAxe(\"y\", inputChartDef, c3Axes);\r\n configureOneAxe(\"y2\", inputChartDef, c3Axes);\r\n return c3Axes;\r\n}\r\n\r\n/**\r\n * Determine the default axis type based on data type.\r\n * TODO: This code could be simplified by removing this function. This should be choosen server-side!\r\n */\r\nfunction determineAxisType(dataType: string): string { // todo: return val could be an enum.\r\n if (dataType === \"number\") {\r\n return \"indexed\";\r\n }\r\n else if (dataType === \"date\") {\r\n return \"timeseries\";\r\n }\r\n else {\r\n return \"category\";\r\n }\r\n}\r\n\r\n/**\r\n * Format values for display.\r\n */\r\nfunction formatValues(\r\n inputChartDef: IChartDef,\r\n seriesName: string,\r\n dataType: string,\r\n formatString: string\r\n): string[] | undefined {\r\n if (dataType === \"number\") { // Use numeral to format numbers.\r\n return inputChartDef.data.values.map(value => numeral(value[seriesName]).format(formatString));\r\n }\r\n else if (dataType === \"date\") { // Use moment for date formating.\r\n return inputChartDef.data.values.map(value => moment(value[seriesName]).format(formatString));\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction configureOneSeries(\r\n seriesConfig: IAxisSeriesConfig,\r\n inputChartDef: IChartDef,\r\n axisConfig: IAxisConfig | undefined,\r\n c3AxisDef: any\r\n): void {\r\n // Default axis type based on data type.\r\n const seriesName = seriesConfig.series;\r\n const dataType = inputChartDef.data.columns[seriesName];\r\n c3AxisDef.type = determineAxisType(dataType);\r\n\r\n if (axisConfig) {\r\n /*fio:\r\n if (axisConfig.axisType && axisConfig.axisType !== \"default\") {\r\n c3AxisDef.type = axisConfig.axisType;\r\n }\r\n */\r\n\r\n if (axisConfig.label) {\r\n c3AxisDef.label = axisConfig.label;\r\n }\r\n }\r\n\r\n c3AxisDef.show = true;\r\n\r\n if (seriesConfig.format) {\r\n if (!c3AxisDef.tick) {\r\n c3AxisDef.tick = {};\r\n }\r\n\r\n c3AxisDef.tick.values = formatValues(inputChartDef, seriesName, dataType, seriesConfig.format);\r\n }\r\n}\r\n\r\n/**\r\n * Configure a single axis.\r\n */\r\nfunction configureOneAxis(axisName: string, inputChartDef: IChartDef, axisConfig: IAxisConfig | undefined, c3Axis: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n c3Axis[axisName] = { show: false };\r\n\r\n const c3AxisDef = c3Axis[axisName];\r\n const series: IAxisSeriesConfig = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(series)) {\r\n series.forEach(seriesConfig => {\r\n configureOneSeries(seriesConfig, inputChartDef, axisConfig, c3AxisDef);\r\n });\r\n }\r\n else {\r\n configureOneSeries(series, inputChartDef, axisConfig, c3AxisDef);\r\n }\r\n}\r\n\r\n/**\r\n * Configure a single Y axis.\r\n */\r\nfunction configureOneYAxis(axisName: string, inputChartDef: IChartDef, axisConfig: IYAxisConfig | undefined, c3Axis: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n configureOneAxis(axisName, inputChartDef, axisConfig, c3Axis);\r\n\r\n const c3AxisDef = c3Axis[axisName];\r\n if (axisConfig && axisConfig.min !== undefined) {\r\n c3AxisDef.min = axisConfig.min;\r\n }\r\n\r\n if (axisConfig && axisConfig.max !== undefined) {\r\n c3AxisDef.max = axisConfig.max;\r\n }\r\n}\r\n\r\n/**\r\n * Configure C3 axis'.\r\n */\r\nfunction configureAxis(inputChartDef: IChartDef): any {\r\n const c3Axis: any = {};\r\n\r\n configureOneAxis(\"x\", inputChartDef, inputChartDef.plotConfig.x, c3Axis);\r\n configureOneYAxis(\"y\", inputChartDef, inputChartDef.plotConfig.y, c3Axis);\r\n configureOneYAxis(\"y2\", inputChartDef, inputChartDef.plotConfig.y2, c3Axis);\r\n\r\n return c3Axis;\r\n}\r\n\r\n/**\r\n * Configure the names of series.\r\n */\r\nfunction configureSeriesNames(inputChartDef: IChartDef): any {\r\n const seriesNames: any = {};\r\n\r\n if (inputChartDef.axisMap) {\r\n for (const axisName in inputChartDef.axisMap) {\r\n const series: IAxisSeriesConfig = (inputChartDef.axisMap as any)[axisName];\r\n if (Array.isArray(series)) {\r\n series.forEach(seriesConfig => {\r\n if (seriesConfig.label) {\r\n seriesNames[seriesConfig.series] = seriesConfig.label;\r\n }\r\n });\r\n }\r\n else {\r\n if (series.label) {\r\n seriesNames[series.series] = series.label;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return seriesNames;\r\n}\r\n\r\n/**\r\n * Extract x axis series for y axis series.\r\n */\r\nfunction extractXS(axisName: string, inputChartDef: IChartDef, xs: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n const series: IYAxisSeriesConfig[] = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n for (const seriesConfig of series) {\r\n const ySeriesName = seriesConfig.series;\r\n if (xs[ySeriesName]) {\r\n return; // Already set.\r\n }\r\n\r\n if (seriesConfig.x) {\r\n xs[ySeriesName] = (seriesConfig.x as IAxisSeriesConfig).series; // X explicitly associated with Y.\r\n }\r\n else if (inputChartDef.axisMap && inputChartDef.axisMap.x) {\r\n xs[ySeriesName] = inputChartDef.axisMap.x.series; // Default X.\r\n }\r\n }\r\n}\r\n\r\nfunction addColumn(seriesName: string, inputChartDef: IChartDef, columns: any[], columnsSet: any): void {\r\n if (columnsSet[seriesName]) {\r\n return; // Already set.\r\n }\r\n\r\n const columnData = inputChartDef.data.values.map(row => row[seriesName]);\r\n\r\n columnsSet[seriesName] = true;\r\n columns.push([seriesName].concat(columnData));\r\n}\r\n\r\n/**\r\n * Extract column data.\r\n */\r\nfunction extractColumns(axisName: string, inputChartDef: IChartDef, columns: any[], columnsSet: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n const series: IYAxisSeriesConfig[] = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n for (const seriesConfig of series) {\r\n addColumn(seriesConfig.series, inputChartDef, columns, columnsSet);\r\n\r\n const xSeriesName = seriesConfig.x && (seriesConfig.x as IAxisSeriesConfig).series\r\n || inputChartDef.axisMap && inputChartDef.axisMap.x && inputChartDef.axisMap.x.series || null;\r\n if (xSeriesName) {\r\n addColumn(xSeriesName, inputChartDef, columns, columnsSet);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Convert a data-forge-plot chart definition to a C3 chart definition.\r\n */\r\nexport function formatChartDef(inputChartDef: IChartDef): any {\r\n\r\n //\r\n // WORKAROUND: Merge the index in as a column.\r\n // This needs to be changed later and it shouldn't be part of the C3 template it should be\r\n // code that is shared to all templates.\r\n //\r\n let workingChartDef = inputChartDef;\r\n\r\n //TODO: This transformation should not be in the template!\r\n if (inputChartDef.data.index && inputChartDef.data.index.values && inputChartDef.data.index.values.length > 0) {\r\n workingChartDef = Object.assign({}, inputChartDef);\r\n workingChartDef.data = Object.assign({}, inputChartDef.data);\r\n workingChartDef.data.columnOrder = inputChartDef.data.columnOrder.slice(); // Clone array.\r\n workingChartDef.data.columnOrder.push(\"__index__\");\r\n workingChartDef.data.columns = Object.assign({}, inputChartDef.data.columns);\r\n workingChartDef.data.columns.__index__ = inputChartDef.data.index.type;\r\n workingChartDef.data.values = inputChartDef.data.values.slice(); // Clone array.\r\n for (let i = 0; i < workingChartDef.data.values.length; ++i) {\r\n const row = workingChartDef.data.values[i];\r\n row.__index__ = inputChartDef.data.index.values[i];\r\n }\r\n }\r\n\r\n let values = workingChartDef.data.values;\r\n\r\n //TODO: Dates need to be deserialized by the api.\r\n if (workingChartDef.data.columns) {\r\n const columnNames = Object.keys(workingChartDef.data.columns);\r\n const hasDates = columnNames.filter(columnName => workingChartDef.data.columns[columnName] === \"date\");\r\n if (hasDates) { // todo: this should be done by the plot api somehow!! The template should do minimal work.\r\n values = values.slice(); // Clone the date so we can inflate the dates.\r\n for (const columnName of columnNames) {\r\n if (workingChartDef.data.columns[columnName] === \"date\") { // This column is a date.\r\n for (const row of values) {\r\n row[columnName] = moment(row[columnName], moment.ISO_8601).toDate();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n const xs: any = {};\r\n extractXS(\"y\", workingChartDef, xs);\r\n extractXS(\"y2\", workingChartDef, xs);\r\n\r\n const columns: any[] = [];\r\n const columnsSet: any = {};\r\n extractColumns(\"y\", workingChartDef, columns, columnsSet);\r\n extractColumns(\"y2\", workingChartDef, columns, columnsSet);\r\n\r\n const c3ChartDef = {\r\n size: {\r\n width: workingChartDef.plotConfig && workingChartDef.plotConfig.width || 1200,\r\n height: workingChartDef.plotConfig && workingChartDef.plotConfig.height || 600,\r\n },\r\n data: {\r\n xs,\r\n columns,\r\n type: workingChartDef.plotConfig && workingChartDef.plotConfig.chartType || \"line\",\r\n axes: configureAxes(workingChartDef),\r\n names: configureSeriesNames(workingChartDef),\r\n },\r\n axis: configureAxis(workingChartDef),\r\n transition: {\r\n duration: 0, // Disable animated transitions when we are capturing a static image.\r\n },\r\n point: {\r\n show: false,\r\n },\r\n legend: {\r\n show: workingChartDef.plotConfig.legend && workingChartDef.plotConfig.legend.show,\r\n },\r\n };\r\n\r\n return c3ChartDef;\r\n}\r\n","import { IChartDef } from \"@data-forge-plot/chart-def\";\r\nimport { formatChartDef } from \"./lib/format-chart-def\";\r\nexport { formatChartDef } from \"./lib/format-chart-def\";\r\nimport * as c3 from \"c3\";\r\n\r\n//\r\n// Interface to control and configure a mounted chart.\r\n//\r\nexport interface IChart {\r\n\r\n //\r\n // Unmount the chart.\r\n //\r\n unmount(): void;\r\n\r\n //\r\n // Size the chart to fit its container.\r\n //\r\n sizeToFit(): void;\r\n}\r\n\r\n//\r\n// Wrapper for a C3 chart.\r\n//\r\nclass C3Chart implements IChart {\r\n\r\n //\r\n // The C3 chart object.\r\n //\r\n private chart?: c3.ChartAPI;\r\n\r\n constructor(chart: c3.ChartAPI) {\r\n this.chart = chart;\r\n }\r\n\r\n //\r\n // Unmount the chart.\r\n //\r\n public unmount(): void {\r\n if (this.chart) {\r\n this.chart.destroy();\r\n this.chart = undefined;\r\n }\r\n }\r\n\r\n //\r\n // Size the chart to fit its container.\r\n //\r\n public sizeToFit(): void {\r\n if (this.chart) {\r\n this.chart.resize();\r\n }\r\n }\r\n}\r\n\r\n//\r\n// Mount the chart on the DOM element.\r\n//\r\nexport function mountChart(chartDef: IChartDef, domElement: HTMLElement): IChart {\r\n const c3ChartDef = formatChartDef(chartDef); //TODO: This can be properly typed to a c3 chart configuration!\r\n c3ChartDef.bindto = domElement;\r\n const chart = c3.generate(c3ChartDef);\r\n const c3Chart = new C3Chart(chart);\r\n return c3Chart;\r\n}","module.exports = require(\"moment\");","module.exports = require(\"numeral\");","module.exports = require(\"c3\");"],"sourceRoot":""}
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/lib/format-chart-def.ts","webpack:///./src/index.ts","webpack:///external \"moment\"","webpack:///external \"numeral\"","webpack:///external \"c3\""],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","moment","numeral","configureOneAxe","axisName","inputChartDef","c3Axes","axisMap","series","_i","series_1","length","configureAxes","configureOneSeries","seriesConfig","axisConfig","c3AxisDef","seriesName","dataType","data","columns","type","determineAxisType","label","show","format","tick","values","formatString","map","formatValues","configureOneAxis","c3Axis","Array","isArray","forEach","configureOneYAxis","undefined","min","max","configureAxis","plotConfig","x","y","y2","configureSeriesNames","seriesNames","extractXS","xs","series_2","ySeriesName","addColumn","columnsSet","columnData","row","push","concat","extractColumns","series_3","xSeriesName","formatChartDef","workingChartDef","index","assign","columnOrder","slice","__index__","columnNames","keys","filter","columnName","columnNames_1","_a","values_1","ISO_8601","toDate","size","width","height","chartType","axes","names","axis","transition","duration","point","legend","format_chart_def_1","format_chart_def_2","c3","C3Chart","chart","this","unmount","destroy","sizeToFit","resize","mountChart","chartDef","domElement","chartOptions","c3ChartDef","showChartDef","console","log","JSON","stringify","bindto","generate","require"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","import * as moment from \"moment\";\r\nimport * as numeral from \"numeral\";\r\nimport { IChartDef, IYAxisSeriesConfig, IAxisConfig, IAxisSeriesConfig, IYAxisConfig } from \"@data-forge-plot/chart-def\";\r\n\r\n/**\r\n * Configure a single axe.\r\n */\r\nfunction configureOneAxe(axisName: string, inputChartDef: IChartDef, c3Axes: any) {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n const series: IYAxisSeriesConfig[] = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n for (const seriesConfig of series) {\r\n c3Axes[seriesConfig.series] = axisName;\r\n }\r\n}\r\n\r\n/**\r\n * Configure C3 axes.\r\n */\r\nfunction configureAxes(inputChartDef: IChartDef): any { // todo: I could type the c3 chart def?\r\n const c3Axes: any = {};\r\n configureOneAxe(\"y\", inputChartDef, c3Axes);\r\n configureOneAxe(\"y2\", inputChartDef, c3Axes);\r\n return c3Axes;\r\n}\r\n\r\n/**\r\n * Determine the default axis type based on data type.\r\n * TODO: This code could be simplified by removing this function. This should be choosen server-side!\r\n */\r\nfunction determineAxisType(dataType: string): string { // todo: return val could be an enum.\r\n if (dataType === \"number\") {\r\n return \"indexed\";\r\n }\r\n else if (dataType === \"date\") {\r\n return \"timeseries\";\r\n }\r\n else {\r\n return \"category\";\r\n }\r\n}\r\n\r\n/**\r\n * Format values for display.\r\n */\r\nfunction formatValues(\r\n inputChartDef: IChartDef,\r\n seriesName: string,\r\n dataType: string,\r\n formatString: string\r\n): string[] | undefined {\r\n if (dataType === \"number\") { // Use numeral to format numbers.\r\n return inputChartDef.data.values.map(value => numeral(value[seriesName]).format(formatString));\r\n }\r\n else if (dataType === \"date\") { // Use moment for date formating.\r\n return inputChartDef.data.values.map(value => moment(value[seriesName]).format(formatString));\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction configureOneSeries(\r\n seriesConfig: IAxisSeriesConfig,\r\n inputChartDef: IChartDef,\r\n axisConfig: IAxisConfig | undefined,\r\n c3AxisDef: any\r\n): void {\r\n // Default axis type based on data type.\r\n const seriesName = seriesConfig.series;\r\n const dataType = inputChartDef.data.columns[seriesName];\r\n c3AxisDef.type = determineAxisType(dataType);\r\n\r\n if (axisConfig) {\r\n /*fio:\r\n if (axisConfig.axisType && axisConfig.axisType !== \"default\") {\r\n c3AxisDef.type = axisConfig.axisType;\r\n }\r\n */\r\n\r\n if (axisConfig.label) {\r\n c3AxisDef.label = axisConfig.label;\r\n }\r\n }\r\n\r\n c3AxisDef.show = true;\r\n\r\n if (seriesConfig.format) {\r\n if (!c3AxisDef.tick) {\r\n c3AxisDef.tick = {};\r\n }\r\n\r\n c3AxisDef.tick.values = formatValues(inputChartDef, seriesName, dataType, seriesConfig.format);\r\n }\r\n}\r\n\r\n/**\r\n * Configure a single axis.\r\n */\r\nfunction configureOneAxis(axisName: string, inputChartDef: IChartDef, axisConfig: IAxisConfig | undefined, c3Axis: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n c3Axis[axisName] = { show: false };\r\n\r\n const c3AxisDef = c3Axis[axisName];\r\n const series: IAxisSeriesConfig = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(series)) {\r\n series.forEach(seriesConfig => {\r\n configureOneSeries(seriesConfig, inputChartDef, axisConfig, c3AxisDef);\r\n });\r\n }\r\n else {\r\n configureOneSeries(series, inputChartDef, axisConfig, c3AxisDef);\r\n }\r\n}\r\n\r\n/**\r\n * Configure a single Y axis.\r\n */\r\nfunction configureOneYAxis(axisName: string, inputChartDef: IChartDef, axisConfig: IYAxisConfig | undefined, c3Axis: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n configureOneAxis(axisName, inputChartDef, axisConfig, c3Axis);\r\n\r\n const c3AxisDef = c3Axis[axisName];\r\n if (axisConfig && axisConfig.min !== undefined) {\r\n c3AxisDef.min = axisConfig.min;\r\n }\r\n\r\n if (axisConfig && axisConfig.max !== undefined) {\r\n c3AxisDef.max = axisConfig.max;\r\n }\r\n}\r\n\r\n/**\r\n * Configure C3 axis'.\r\n */\r\nfunction configureAxis(inputChartDef: IChartDef): any {\r\n const c3Axis: any = {};\r\n\r\n configureOneAxis(\"x\", inputChartDef, inputChartDef.plotConfig.x, c3Axis);\r\n configureOneYAxis(\"y\", inputChartDef, inputChartDef.plotConfig.y, c3Axis);\r\n configureOneYAxis(\"y2\", inputChartDef, inputChartDef.plotConfig.y2, c3Axis);\r\n\r\n return c3Axis;\r\n}\r\n\r\n/**\r\n * Configure the names of series.\r\n */\r\nfunction configureSeriesNames(inputChartDef: IChartDef): any {\r\n const seriesNames: any = {};\r\n\r\n if (inputChartDef.axisMap) {\r\n for (const axisName in inputChartDef.axisMap) {\r\n const series: IAxisSeriesConfig = (inputChartDef.axisMap as any)[axisName];\r\n if (Array.isArray(series)) {\r\n series.forEach(seriesConfig => {\r\n if (seriesConfig.label) {\r\n seriesNames[seriesConfig.series] = seriesConfig.label;\r\n }\r\n });\r\n }\r\n else {\r\n if (series.label) {\r\n seriesNames[series.series] = series.label;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return seriesNames;\r\n}\r\n\r\n/**\r\n * Extract x axis series for y axis series.\r\n */\r\nfunction extractXS(axisName: string, inputChartDef: IChartDef, xs: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n const series: IYAxisSeriesConfig[] = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n for (const seriesConfig of series) {\r\n const ySeriesName = seriesConfig.series;\r\n if (xs[ySeriesName]) {\r\n return; // Already set.\r\n }\r\n\r\n if (seriesConfig.x) {\r\n xs[ySeriesName] = (seriesConfig.x as IAxisSeriesConfig).series; // X explicitly associated with Y.\r\n }\r\n else if (inputChartDef.axisMap && inputChartDef.axisMap.x) {\r\n xs[ySeriesName] = inputChartDef.axisMap.x.series; // Default X.\r\n }\r\n }\r\n}\r\n\r\nfunction addColumn(seriesName: string, inputChartDef: IChartDef, columns: any[], columnsSet: any): void {\r\n if (columnsSet[seriesName]) {\r\n return; // Already set.\r\n }\r\n\r\n const columnData = inputChartDef.data.values.map(row => row[seriesName]);\r\n\r\n columnsSet[seriesName] = true;\r\n columns.push([seriesName].concat(columnData));\r\n}\r\n\r\n/**\r\n * Extract column data.\r\n */\r\nfunction extractColumns(axisName: string, inputChartDef: IChartDef, columns: any[], columnsSet: any): void {\r\n const axisMap = inputChartDef.axisMap as any;\r\n if (!axisMap) {\r\n return;\r\n }\r\n\r\n const series: IYAxisSeriesConfig[] = axisMap[axisName];\r\n if (!series) {\r\n return;\r\n }\r\n\r\n for (const seriesConfig of series) {\r\n addColumn(seriesConfig.series, inputChartDef, columns, columnsSet);\r\n\r\n const xSeriesName = seriesConfig.x && (seriesConfig.x as IAxisSeriesConfig).series\r\n || inputChartDef.axisMap && inputChartDef.axisMap.x && inputChartDef.axisMap.x.series || null;\r\n if (xSeriesName) {\r\n addColumn(xSeriesName, inputChartDef, columns, columnsSet);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Convert a data-forge-plot chart definition to a C3 chart definition.\r\n */\r\nexport function formatChartDef(inputChartDef: IChartDef): any {\r\n\r\n //\r\n // WORKAROUND: Merge the index in as a column.\r\n // This needs to be changed later and it shouldn't be part of the C3 template it should be\r\n // code that is shared to all templates.\r\n //\r\n let workingChartDef = inputChartDef;\r\n\r\n //TODO: This transformation should not be in the template!\r\n if (inputChartDef.data.index && inputChartDef.data.index.values && inputChartDef.data.index.values.length > 0) {\r\n workingChartDef = Object.assign({}, inputChartDef);\r\n workingChartDef.data = Object.assign({}, inputChartDef.data);\r\n workingChartDef.data.columnOrder = inputChartDef.data.columnOrder.slice(); // Clone array.\r\n workingChartDef.data.columnOrder.push(\"__index__\");\r\n workingChartDef.data.columns = Object.assign({}, inputChartDef.data.columns);\r\n workingChartDef.data.columns.__index__ = inputChartDef.data.index.type;\r\n workingChartDef.data.values = inputChartDef.data.values.slice(); // Clone array.\r\n for (let i = 0; i < workingChartDef.data.values.length; ++i) {\r\n const row = workingChartDef.data.values[i];\r\n row.__index__ = inputChartDef.data.index.values[i];\r\n }\r\n }\r\n\r\n let values = workingChartDef.data.values;\r\n\r\n //TODO: Dates need to be deserialized by the api.\r\n if (workingChartDef.data.columns) {\r\n const columnNames = Object.keys(workingChartDef.data.columns);\r\n const hasDates = columnNames.filter(columnName => workingChartDef.data.columns[columnName] === \"date\");\r\n if (hasDates) { // todo: this should be done by the plot api somehow!! The template should do minimal work.\r\n values = values.slice(); // Clone the date so we can inflate the dates.\r\n for (const columnName of columnNames) {\r\n if (workingChartDef.data.columns[columnName] === \"date\") { // This column is a date.\r\n for (const row of values) {\r\n row[columnName] = moment(row[columnName], moment.ISO_8601).toDate();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n const xs: any = {};\r\n extractXS(\"y\", workingChartDef, xs);\r\n extractXS(\"y2\", workingChartDef, xs);\r\n\r\n const columns: any[] = [];\r\n const columnsSet: any = {};\r\n extractColumns(\"y\", workingChartDef, columns, columnsSet);\r\n extractColumns(\"y2\", workingChartDef, columns, columnsSet);\r\n\r\n const c3ChartDef = {\r\n size: {\r\n width: workingChartDef.plotConfig && workingChartDef.plotConfig.width || 1200,\r\n height: workingChartDef.plotConfig && workingChartDef.plotConfig.height || 600,\r\n },\r\n data: {\r\n xs,\r\n columns,\r\n type: workingChartDef.plotConfig && workingChartDef.plotConfig.chartType || \"line\",\r\n axes: configureAxes(workingChartDef),\r\n names: configureSeriesNames(workingChartDef),\r\n },\r\n axis: configureAxis(workingChartDef),\r\n transition: {\r\n duration: 0, // Disable animated transitions when we are capturing a static image.\r\n },\r\n point: {\r\n show: false,\r\n },\r\n legend: {\r\n show: workingChartDef.plotConfig.legend && workingChartDef.plotConfig.legend.show,\r\n },\r\n };\r\n\r\n return c3ChartDef;\r\n}\r\n","import { IChartDef } from \"@data-forge-plot/chart-def\";\r\nimport { formatChartDef } from \"./lib/format-chart-def\";\r\nexport { formatChartDef } from \"./lib/format-chart-def\";\r\nimport * as c3 from \"c3\";\r\n\r\n//\r\n// Interface to control and configure a mounted chart.\r\n//\r\nexport interface IChart {\r\n\r\n //\r\n // Unmount the chart.\r\n //\r\n unmount(): void;\r\n\r\n //\r\n // Size the chart to fit its container.\r\n //\r\n sizeToFit(): void;\r\n}\r\n\r\n//\r\n// Wrapper for a C3 chart.\r\n//\r\nclass C3Chart implements IChart {\r\n\r\n //\r\n // The C3 chart object.\r\n //\r\n private chart?: c3.ChartAPI;\r\n\r\n constructor(chart: c3.ChartAPI) {\r\n this.chart = chart;\r\n }\r\n\r\n //\r\n // Unmount the chart.\r\n //\r\n public unmount(): void {\r\n if (this.chart) {\r\n this.chart.destroy();\r\n this.chart = undefined;\r\n }\r\n }\r\n\r\n //\r\n // Size the chart to fit its container.\r\n //\r\n public sizeToFit(): void {\r\n if (this.chart) {\r\n this.chart.resize();\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Options to control how the chart is mounted.\r\n */\r\nexport interface IMountOptions {\r\n /**\r\n * Set to true to make the chart static.\r\n * The chart will have interactive features and animations disabled.\r\n */\r\n makeStatic?: boolean;\r\n\r\n /**\r\n * Debug log the chart definition after formatting.\r\n */\r\n showChartDef?: boolean;\r\n}\r\n\r\n//\r\n// Mount the chart on the DOM element.\r\n//\r\nexport function mountChart(chartDef: IChartDef, domElement: HTMLElement, chartOptions?: IMountOptions): IChart {\r\n const c3ChartDef = formatChartDef(chartDef); //TODO: This can be properly typed to a c3 chart configuration!\r\n\r\n if (chartOptions && chartOptions.showChartDef) {\r\n console.log(\"Formatted chart definition:\");\r\n console.log(JSON.stringify(c3ChartDef, null, 4));\r\n }\r\n\r\n c3ChartDef.bindto = domElement;\r\n const chart = c3.generate(c3ChartDef);\r\n const c3Chart = new C3Chart(chart);\r\n return c3Chart;\r\n}","module.exports = require(\"moment\");","module.exports = require(\"numeral\");","module.exports = require(\"c3\");"],"sourceRoot":""}
{
"name": "@data-forge-plot/c3",
"version": "0.1.2",
"version": "0.1.3",
"description": "Plugin to Data-Forge Plot that integrates support for the C3 charting library.",

@@ -5,0 +5,0 @@ "main": "build/index.js",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display