@plasmicpkgs/react-chartjs-2 1.0.67 → 1.0.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common.d.ts +7 -5
- package/dist/react-chartjs-2.cjs.development.js +26 -5
- package/dist/react-chartjs-2.cjs.development.js.map +1 -1
- package/dist/react-chartjs-2.cjs.production.min.js +1 -1
- package/dist/react-chartjs-2.cjs.production.min.js.map +1 -1
- package/dist/react-chartjs-2.esm.js +26 -5
- package/dist/react-chartjs-2.esm.js.map +1 -1
- package/dist/simple-bar/SimpleBar.d.ts +1 -0
- package/dist/simple-scatter/SimpleScatter.d.ts +1 -2
- package/package.json +3 -3
package/dist/common.d.ts
CHANGED
|
@@ -64,14 +64,16 @@ export declare function prepOptions({ interactive, title }: BaseChartProps): ({
|
|
|
64
64
|
mode: "index";
|
|
65
65
|
intersect: boolean;
|
|
66
66
|
};
|
|
67
|
-
|
|
67
|
+
plugins?: undefined;
|
|
68
68
|
} | {
|
|
69
69
|
interaction?: undefined;
|
|
70
|
-
|
|
70
|
+
plugins?: undefined;
|
|
71
71
|
} | {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
plugins: {
|
|
73
|
+
title: {
|
|
74
|
+
display: boolean;
|
|
75
|
+
text: string;
|
|
76
|
+
};
|
|
75
77
|
};
|
|
76
78
|
interaction?: undefined;
|
|
77
79
|
})[];
|
|
@@ -168,9 +168,11 @@ function prepOptions(_ref3) {
|
|
|
168
168
|
intersect: false
|
|
169
169
|
}
|
|
170
170
|
} : {}, title ? {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
171
|
+
plugins: {
|
|
172
|
+
title: {
|
|
173
|
+
display: true,
|
|
174
|
+
text: title
|
|
175
|
+
}
|
|
174
176
|
}
|
|
175
177
|
} : {}];
|
|
176
178
|
}
|
|
@@ -209,6 +211,7 @@ var stackedOptions = {
|
|
|
209
211
|
}
|
|
210
212
|
};
|
|
211
213
|
var vertOptions = {
|
|
214
|
+
indexAxis: "x",
|
|
212
215
|
plugins: {
|
|
213
216
|
legend: {
|
|
214
217
|
position: "top"
|
|
@@ -243,16 +246,34 @@ function SimpleBar(props) {
|
|
|
243
246
|
return React__default.createElement("div", {
|
|
244
247
|
className: className
|
|
245
248
|
}, React__default.createElement(reactChartjs2.Bar, {
|
|
249
|
+
key: "" + props.direction + props.stacked,
|
|
246
250
|
options: deepmerge.all([].concat(options, [direction === "vertical" ? vertOptions : horizOptions, stacked ? stackedOptions : {}])),
|
|
247
251
|
data: normalized
|
|
248
252
|
}));
|
|
249
253
|
}
|
|
250
254
|
|
|
255
|
+
// Force a re-mount when the secondAxisField is unset / re-set
|
|
256
|
+
// https://app.shortcut.com/plasmic/story/38358/chart-component-issues-with-second-axis-field
|
|
257
|
+
var useKey = function useKey(secondAxisField) {
|
|
258
|
+
var _useState = React.useState(0),
|
|
259
|
+
key = _useState[0],
|
|
260
|
+
setKey = _useState[1];
|
|
261
|
+
// change key once when the secondAxisField is unset.
|
|
262
|
+
if (!secondAxisField && key) {
|
|
263
|
+
setKey(0);
|
|
264
|
+
}
|
|
265
|
+
// change key once when the secondAxisField value changes from undefined -> something
|
|
266
|
+
if (secondAxisField && !key) {
|
|
267
|
+
setKey(Math.random());
|
|
268
|
+
}
|
|
269
|
+
return key;
|
|
270
|
+
};
|
|
251
271
|
function SimpleLine(props) {
|
|
252
272
|
var secondAxisField = props.secondAxisField,
|
|
253
273
|
fill = props.fill,
|
|
254
274
|
className = props.className;
|
|
255
275
|
var isClient = useIsClient();
|
|
276
|
+
var key = useKey(props.secondAxisField);
|
|
256
277
|
React.useEffect(function () {
|
|
257
278
|
chart_js.Chart.register(ChartAreaPlugin, chart_js.CategoryScale, chart_js.LinearScale, chart_js.PointElement, chart_js.LineElement, chart_js.Title, chart_js.Tooltip, chart_js.Filler, chart_js.Legend);
|
|
258
279
|
}, []);
|
|
@@ -272,6 +293,7 @@ function SimpleLine(props) {
|
|
|
272
293
|
return React__default.createElement("div", {
|
|
273
294
|
className: className
|
|
274
295
|
}, React__default.createElement(reactChartjs2.Line, {
|
|
296
|
+
key: key,
|
|
275
297
|
options: deepmerge.all([].concat(options, [secondAxisField ? {
|
|
276
298
|
scales: {
|
|
277
299
|
y: {
|
|
@@ -297,7 +319,7 @@ function SimpleScatter(props) {
|
|
|
297
319
|
var className = props.className;
|
|
298
320
|
var isClient = useIsClient();
|
|
299
321
|
React.useEffect(function () {
|
|
300
|
-
chart_js.Chart.register(ChartAreaPlugin, chart_js.LinearScale, chart_js.PointElement, chart_js.LineElement, chart_js.Tooltip, chart_js.Legend);
|
|
322
|
+
chart_js.Chart.register(ChartAreaPlugin, chart_js.LinearScale, chart_js.PointElement, chart_js.LineElement, chart_js.Tooltip, chart_js.Legend, chart_js.Title);
|
|
301
323
|
}, []);
|
|
302
324
|
if (!isClient) {
|
|
303
325
|
return null;
|
|
@@ -307,7 +329,6 @@ function SimpleScatter(props) {
|
|
|
307
329
|
opacity: 1
|
|
308
330
|
});
|
|
309
331
|
var options = prepOptions(props);
|
|
310
|
-
console.log("!!", normalized, options);
|
|
311
332
|
return React__default.createElement("div", {
|
|
312
333
|
className: className
|
|
313
334
|
}, React__default.createElement(reactChartjs2.Scatter, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-chartjs-2.cjs.development.js","sources":["../src/utils.ts","../src/common.ts","../src/simple-bar/SimpleBar.tsx","../src/simple-line/SimpleLine.tsx","../src/simple-scatter/SimpleScatter.tsx","../src/simple-chart/SimpleChart.tsx","../src/simple-chart/index.tsx","../src/index.tsx"],"sourcesContent":["import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n","import { Plugin } from \"chart.js/dist/types\";\nimport { useEffect, useState } from \"react\";\n\nexport const baseOptions = {\n responsive: true,\n chartArea: {\n // backgroundColor: \"#f8fafc\",\n },\n};\n\n/**\n * These are hand-picked from the Tailwind palette.\n */\nexport const defaultColors = [\n \"hsla(25,95%,53%,1.0)\",\n \"hsla(38,92%,50%,1.0)\",\n \"hsla(45,93%,47%,1.0)\",\n \"hsla(84,81%,44%,1.0)\",\n \"hsla(142,71%,45%,1.0)\",\n \"hsla(160,84%,39%,1.0)\",\n \"hsla(173,80%,40%,1.0)\",\n \"hsla(199,89%,48%,1.0)\",\n \"hsla(217,91%,60%,1.0)\",\n \"hsla(239,84%,67%,1.0)\",\n \"hsla(258,90%,66%,1.0)\",\n \"hsla(271,91%,65%,1.0)\",\n \"hsla(292,84%,61%,1.0)\",\n \"hsla(293,69%,49%,1.0)\",\n \"hsla(295,72%,40%,1.0)\",\n \"hsla(295,70%,33%,1.0)\",\n];\n\nexport function useIsClient() {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nexport interface BaseChartProps {\n className?: string;\n data?: Record<string, any>[];\n labelField?: string;\n interactive?: boolean;\n title?: string;\n chosenFields?: string[];\n scatterSeries?: { name: string; fields: [string, string] }[];\n}\n\nexport interface PrepDataOpts {\n isScatter?: boolean;\n preferNonNumericAsLabel?: boolean;\n extras?: (field: string) => {};\n opacity?: number;\n}\n\nfunction range(total: number) {\n return Array.from(Array(total).keys());\n}\n\n/**\n * Returns a color from the default color palette.\n *\n * Tries to pick \"different\" colors that are somewhat spread out on the palette. With a higher 'total' colors requested, the colors will be packed more closely together.\n *\n * We prefer starting from blue when possible. This only starts getting pushed down toward yellow if too many colors requested.\n *\n * If too many colors are requested, it will recycle.\n */\nexport function getDefaultColor(\n index: number,\n total: number,\n opacity?: number\n) {\n const preferredStart = 9;\n const end = defaultColors.length - 1;\n const start = Math.max(0, Math.min(preferredStart, end - total));\n const stops =\n total > defaultColors.length\n ? range(defaultColors.length)\n : range(total).map((_, i) =>\n Math.round(\n start + (total > 1 ? ((1.0 * i) / (total - 1)) * (end - start) : 0)\n )\n );\n const selected = defaultColors[stops[index % stops.length]];\n if (opacity === undefined) {\n return selected;\n }\n return selected.replace(\"1.0\", \"\" + opacity);\n}\n\nexport function prepData(\n { data = [], labelField, chosenFields, scatterSeries }: BaseChartProps,\n { isScatter, preferNonNumericAsLabel, extras, opacity }: PrepDataOpts = {}\n) {\n const fields = Object.keys(data[0] ?? {});\n const isFieldAllNumericOrNil = new Map(\n fields.map((key) => [key, data.every((item) => !isNaN(item[key] ?? 0))])\n );\n const realLabelField =\n labelField ??\n (preferNonNumericAsLabel\n ? fields.find((field) => !isFieldAllNumericOrNil.get(field))\n : fields[0]);\n const numericFields = fields.filter((field) =>\n isFieldAllNumericOrNil.get(field)\n );\n if (isScatter) {\n scatterSeries = isScatter\n ? scatterSeries ?? [\n {\n name: `${numericFields[0]}-${numericFields[1]}`,\n fields: [numericFields[0], numericFields[1]] as [string, string],\n },\n ]\n : undefined;\n return {\n datasets: (scatterSeries ?? []).map((series, index) => ({\n ...extras?.(series.name),\n label: series.name,\n data: data.map((item) => ({\n x: item[series.fields[0]] ?? 0,\n y: item[series.fields[1]] ?? 0,\n })),\n backgroundColor: getDefaultColor(\n index,\n (scatterSeries ?? []).length,\n opacity\n ),\n })),\n };\n } else {\n const autoChosenFields = numericFields.filter(\n (field) => field !== realLabelField\n );\n return {\n labels: realLabelField\n ? data.map((item) => item[realLabelField])\n : undefined,\n datasets: (chosenFields ?? autoChosenFields).map((key, index) => {\n return {\n ...extras?.(key),\n label: key,\n data: data.map((item) => item[key] ?? 0),\n backgroundColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n borderWidth: 2,\n borderColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n };\n }),\n };\n }\n}\n\n// additional styling\n\n/*\n elements: {\n bar: {\n borderWidth: 2,\n },\n },\n\n */\n\nexport function prepOptions({ interactive = true, title }: BaseChartProps) {\n return [\n baseOptions,\n interactive\n ? {\n interaction: {\n mode: \"index\" as const,\n intersect: false,\n },\n }\n : {},\n title ? { title: { display: true, text: title } } : {},\n ];\n}\n\nexport const ChartAreaPlugin: Plugin = {\n id: \"chartAreaPlugin\",\n // eslint-disable-next-line object-shorthand\n beforeDraw: (chart) => {\n const chartAreaOptions = (chart.config.options as any).chartArea;\n if (chartAreaOptions && chartAreaOptions.backgroundColor) {\n const ctx = chart.canvas.getContext(\"2d\");\n const { chartArea } = chart;\n if (ctx) {\n ctx.save();\n ctx.fillStyle = chartAreaOptions.backgroundColor;\n // eslint-disable-next-line max-len\n ctx.fillRect(\n chartArea.left,\n chartArea.top,\n chartArea.right - chartArea.left,\n chartArea.bottom - chartArea.top\n );\n ctx.restore();\n }\n }\n },\n};\n","import {\n BarElement,\n CategoryScale,\n Chart as ChartJS,\n Legend,\n LinearScale,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport const stackedOptions = {\n scales: {\n x: {\n stacked: true,\n ticks: {\n major: {\n enabled: false,\n },\n },\n },\n y: {\n stacked: true,\n },\n },\n};\n\nexport const vertOptions = {\n plugins: {\n legend: {\n position: \"top\" as const,\n },\n },\n};\nexport const horizOptions = {\n indexAxis: \"y\" as const,\n plugins: {\n legend: {\n position: \"right\" as const,\n },\n },\n};\n\nexport interface SimpleBarProps extends BaseChartProps {\n direction?: \"vertical\" | \"horizontal\";\n stacked?: boolean;\n}\n\nexport function SimpleBar(props: SimpleBarProps) {\n const { direction = \"vertical\", stacked, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n preferNonNumericAsLabel: true,\n opacity: 1,\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Bar\n options={deepmerge.all([\n ...options,\n direction === \"vertical\" ? vertOptions : horizOptions,\n stacked ? stackedOptions : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleLineProps extends BaseChartProps {\n fill?: boolean;\n secondAxisField?: string;\n}\n\nexport function SimpleLine(props: SimpleLineProps) {\n const { secondAxisField, fill, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n extras: (field) => ({\n fill,\n pointRadius: 0,\n yAxisID: field === secondAxisField ? \"y1\" : \"y\",\n }),\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Line\n options={deepmerge.all([\n ...options,\n secondAxisField\n ? {\n scales: {\n y: {\n type: \"linear\" as const,\n display: true,\n position: \"left\" as const,\n },\n y1: {\n type: \"linear\" as const,\n display: true,\n position: \"right\" as const,\n grid: {\n drawOnChartArea: false,\n },\n },\n },\n }\n : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n Chart as ChartJS,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Scatter } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleScatterProps extends BaseChartProps {}\n\nexport function SimpleScatter(props: SimpleScatterProps) {\n const { className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n LinearScale,\n PointElement,\n LineElement,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, { isScatter: true, opacity: 1 });\n const options = prepOptions(props);\n console.log(\"!!\", normalized, options);\n return (\n <div className={className}>\n <Scatter\n options={deepmerge.all([\n ...options,\n {\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import React, { ReactElement } from \"react\";\nimport { SimpleBar, SimpleBarProps } from \"../simple-bar/SimpleBar\";\nimport { SimpleLine, SimpleLineProps } from \"../simple-line/SimpleLine\";\nimport {\n SimpleScatter,\n SimpleScatterProps,\n} from \"../simple-scatter/SimpleScatter\";\n\nexport type SimpleChartProps = {\n type?: \"bar\" | \"line\" | \"scatter\";\n} & (SimpleBarProps | SimpleLineProps | SimpleScatterProps);\n\nexport function SimpleChart(props: SimpleChartProps): ReactElement {\n switch (props.type ?? \"bar\") {\n case \"bar\":\n return <SimpleBar {...(props as any)} />;\n case \"line\":\n return <SimpleLine {...(props as any)} />;\n case \"scatter\":\n return <SimpleScatter {...(props as any)} />;\n }\n}\n","import { ComponentMeta, PropType } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\nconst fieldChoice: PropType<SimpleChartProps> = {\n type: \"choice\",\n options: (props: SimpleChartProps) =>\n props.data?.[0] ? Object.keys(props.data[0]) : [],\n} as const;\nconst simpleChartMeta: ComponentMeta<SimpleChartProps> = {\n name: \"hostless-react-chartjs-2-simple-chart\",\n displayName: \"Chart\",\n props: {\n type: {\n type: \"choice\",\n options: [\n {\n value: \"bar\",\n label: \"Bar\",\n },\n {\n value: \"line\",\n label: \"Line\",\n },\n {\n value: \"scatter\",\n label: \"Scatter\",\n },\n ],\n defaultValueHint: \"bar\",\n },\n data: {\n type: \"exprEditor\",\n description: \"The data as an array of objects\",\n defaultExpr: JSON.stringify([\n {\n region: \"APAC\",\n revenue: 3294,\n spend: 2675,\n },\n {\n region: \"EMEA\",\n revenue: 3245,\n spend: 3895,\n },\n {\n region: \"LATAM\",\n revenue: 2165,\n spend: 3498,\n },\n {\n region: \"AMER\",\n revenue: 3215,\n spend: 1656,\n },\n ]),\n },\n labelField: {\n ...fieldChoice,\n hidden: (props) => props.type === \"scatter\",\n },\n title: \"string\",\n interactive: {\n type: \"boolean\",\n },\n // Bar chart\n direction: {\n type: \"choice\",\n options: [\"horizontal\", \"vertical\"].map((dir) => ({\n value: dir,\n label: dir[0].toUpperCase() + dir.slice(1),\n })),\n defaultValueHint: \"Vertical\",\n hidden: (props) => props.type !== \"bar\",\n },\n stacked: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"bar\",\n },\n // Line chart\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\n },\n secondAxisField: {\n ...fieldChoice,\n hidden: (props) => props.type !== \"line\",\n },\n\n // TODO\n // datasets: {\n // type: \"array\",\n // unstable__keyFunc: (x) => x.key,\n // unstable__minimalValue: (_props, ctx) => null,\n // itemType: {\n // type: \"object\",\n // fields: {\n // label: \"string\",\n // fieldId: \"string\",\n // hidden: {\n // type: \"boolean\",\n // },\n // },\n // },\n // },\n },\n\n defaultStyles: {\n width: \"stretch\",\n },\n\n importName: \"SimpleChart\",\n importPath: \"@plasmicpkgs/react-chartjs-2\",\n};\n\nexport function registerSimpleChart(loader?: Registerable) {\n registerComponentHelper(loader, SimpleChart, simpleChartMeta);\n}\n","import { registerSimpleChart } from \"./simple-chart\";\nimport { Registerable } from \"./utils\";\n\nexport { SimpleChart } from \"./simple-chart\";\n\nexport function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n"],"names":["registerComponentHelper","loader","component","meta","registerComponent","baseOptions","responsive","chartArea","defaultColors","useIsClient","_useState","useState","loaded","setLoaded","useEffect","range","total","Array","from","keys","getDefaultColor","index","opacity","preferredStart","end","length","start","Math","max","min","stops","map","_","i","round","selected","undefined","replace","prepData","_ref","_temp","data","_ref$data","labelField","chosenFields","scatterSeries","_ref2","isScatter","preferNonNumericAsLabel","extras","fields","Object","_data$","isFieldAllNumericOrNil","Map","key","every","item","_item$key","isNaN","realLabelField","find","field","get","numericFields","filter","_scatterSeries","_scatterSeries2","name","datasets","series","_scatterSeries3","_extends","label","_item$series$fields$","_item$series$fields$2","x","y","backgroundColor","autoChosenFields","labels","_item$key2","borderWidth","borderColor","prepOptions","_ref3","interactive","_ref3$interactive","title","interaction","mode","intersect","display","text","ChartAreaPlugin","id","beforeDraw","chart","chartAreaOptions","config","options","ctx","canvas","getContext","save","fillStyle","fillRect","left","top","right","bottom","restore","stackedOptions","scales","stacked","ticks","major","enabled","vertOptions","plugins","legend","position","horizOptions","indexAxis","SimpleBar","props","_props$direction","direction","className","isClient","ChartJS","register","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","normalized","React","Bar","deepmerge","all","concat","SimpleLine","secondAxisField","fill","PointElement","LineElement","Filler","pointRadius","yAxisID","Line","type","y1","grid","drawOnChartArea","SimpleScatter","console","log","Scatter","beginAtZero","SimpleChart","_props$type","fieldChoice","_props$data","simpleChartMeta","displayName","value","defaultValueHint","description","defaultExpr","JSON","stringify","region","revenue","spend","hidden","dir","toUpperCase","slice","defaultStyles","width","importName","importPath","registerSimpleChart","registerAll"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-chartjs-2.cjs.development.js","sources":["../src/utils.ts","../src/common.ts","../src/simple-bar/SimpleBar.tsx","../src/simple-line/SimpleLine.tsx","../src/simple-scatter/SimpleScatter.tsx","../src/simple-chart/SimpleChart.tsx","../src/simple-chart/index.tsx","../src/index.tsx"],"sourcesContent":["import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n","import { Plugin } from \"chart.js/dist/types\";\nimport { useEffect, useState } from \"react\";\n\nexport const baseOptions = {\n responsive: true,\n chartArea: {\n // backgroundColor: \"#f8fafc\",\n },\n};\n\n/**\n * These are hand-picked from the Tailwind palette.\n */\nexport const defaultColors = [\n \"hsla(25,95%,53%,1.0)\",\n \"hsla(38,92%,50%,1.0)\",\n \"hsla(45,93%,47%,1.0)\",\n \"hsla(84,81%,44%,1.0)\",\n \"hsla(142,71%,45%,1.0)\",\n \"hsla(160,84%,39%,1.0)\",\n \"hsla(173,80%,40%,1.0)\",\n \"hsla(199,89%,48%,1.0)\",\n \"hsla(217,91%,60%,1.0)\",\n \"hsla(239,84%,67%,1.0)\",\n \"hsla(258,90%,66%,1.0)\",\n \"hsla(271,91%,65%,1.0)\",\n \"hsla(292,84%,61%,1.0)\",\n \"hsla(293,69%,49%,1.0)\",\n \"hsla(295,72%,40%,1.0)\",\n \"hsla(295,70%,33%,1.0)\",\n];\n\nexport function useIsClient() {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nexport interface BaseChartProps {\n className?: string;\n data?: Record<string, any>[];\n labelField?: string;\n interactive?: boolean;\n title?: string;\n chosenFields?: string[];\n scatterSeries?: { name: string; fields: [string, string] }[];\n}\n\nexport interface PrepDataOpts {\n isScatter?: boolean;\n preferNonNumericAsLabel?: boolean;\n extras?: (field: string) => {};\n opacity?: number;\n}\n\nfunction range(total: number) {\n return Array.from(Array(total).keys());\n}\n\n/**\n * Returns a color from the default color palette.\n *\n * Tries to pick \"different\" colors that are somewhat spread out on the palette. With a higher 'total' colors requested, the colors will be packed more closely together.\n *\n * We prefer starting from blue when possible. This only starts getting pushed down toward yellow if too many colors requested.\n *\n * If too many colors are requested, it will recycle.\n */\nexport function getDefaultColor(\n index: number,\n total: number,\n opacity?: number\n) {\n const preferredStart = 9;\n const end = defaultColors.length - 1;\n const start = Math.max(0, Math.min(preferredStart, end - total));\n const stops =\n total > defaultColors.length\n ? range(defaultColors.length)\n : range(total).map((_, i) =>\n Math.round(\n start + (total > 1 ? ((1.0 * i) / (total - 1)) * (end - start) : 0)\n )\n );\n const selected = defaultColors[stops[index % stops.length]];\n if (opacity === undefined) {\n return selected;\n }\n return selected.replace(\"1.0\", \"\" + opacity);\n}\n\nexport function prepData(\n { data = [], labelField, chosenFields, scatterSeries }: BaseChartProps,\n { isScatter, preferNonNumericAsLabel, extras, opacity }: PrepDataOpts = {}\n) {\n const fields = Object.keys(data[0] ?? {});\n const isFieldAllNumericOrNil = new Map(\n fields.map((key) => [key, data.every((item) => !isNaN(item[key] ?? 0))])\n );\n const realLabelField =\n labelField ??\n (preferNonNumericAsLabel\n ? fields.find((field) => !isFieldAllNumericOrNil.get(field))\n : fields[0]);\n const numericFields = fields.filter((field) =>\n isFieldAllNumericOrNil.get(field)\n );\n if (isScatter) {\n scatterSeries = isScatter\n ? scatterSeries ?? [\n {\n name: `${numericFields[0]}-${numericFields[1]}`,\n fields: [numericFields[0], numericFields[1]] as [string, string],\n },\n ]\n : undefined;\n return {\n datasets: (scatterSeries ?? []).map((series, index) => ({\n ...extras?.(series.name),\n label: series.name,\n data: data.map((item) => ({\n x: item[series.fields[0]] ?? 0,\n y: item[series.fields[1]] ?? 0,\n })),\n backgroundColor: getDefaultColor(\n index,\n (scatterSeries ?? []).length,\n opacity\n ),\n })),\n };\n } else {\n const autoChosenFields = numericFields.filter(\n (field) => field !== realLabelField\n );\n return {\n labels: realLabelField\n ? data.map((item) => item[realLabelField])\n : undefined,\n datasets: (chosenFields ?? autoChosenFields).map((key, index) => {\n return {\n ...extras?.(key),\n label: key,\n data: data.map((item) => item[key] ?? 0),\n backgroundColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n borderWidth: 2,\n borderColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n };\n }),\n };\n }\n}\n\n// additional styling\n\n/*\n elements: {\n bar: {\n borderWidth: 2,\n },\n },\n\n */\n\nexport function prepOptions({ interactive = true, title }: BaseChartProps) {\n return [\n baseOptions,\n interactive\n ? {\n interaction: {\n mode: \"index\" as const,\n intersect: false,\n },\n }\n : {},\n title\n ? {\n plugins: {\n title: { display: true, text: title },\n },\n }\n : {},\n ];\n}\n\nexport const ChartAreaPlugin: Plugin = {\n id: \"chartAreaPlugin\",\n // eslint-disable-next-line object-shorthand\n beforeDraw: (chart) => {\n const chartAreaOptions = (chart.config.options as any).chartArea;\n if (chartAreaOptions && chartAreaOptions.backgroundColor) {\n const ctx = chart.canvas.getContext(\"2d\");\n const { chartArea } = chart;\n if (ctx) {\n ctx.save();\n ctx.fillStyle = chartAreaOptions.backgroundColor;\n // eslint-disable-next-line max-len\n ctx.fillRect(\n chartArea.left,\n chartArea.top,\n chartArea.right - chartArea.left,\n chartArea.bottom - chartArea.top\n );\n ctx.restore();\n }\n }\n },\n};\n","import {\n BarElement,\n CategoryScale,\n Chart as ChartJS,\n Legend,\n LinearScale,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport const stackedOptions = {\n scales: {\n x: {\n stacked: true,\n ticks: {\n major: {\n enabled: false,\n },\n },\n },\n y: {\n stacked: true,\n },\n },\n};\n\nexport const vertOptions = {\n indexAxis: \"x\" as const,\n plugins: {\n legend: {\n position: \"top\" as const,\n },\n },\n};\nexport const horizOptions = {\n indexAxis: \"y\" as const,\n plugins: {\n legend: {\n position: \"right\" as const,\n },\n },\n};\n\nexport interface SimpleBarProps extends BaseChartProps {\n direction?: \"vertical\" | \"horizontal\";\n stacked?: boolean;\n}\n\nexport function SimpleBar(props: SimpleBarProps) {\n const { direction = \"vertical\", stacked, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n preferNonNumericAsLabel: true,\n opacity: 1,\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Bar\n key={`${props.direction}${props.stacked}`}\n options={deepmerge.all([\n ...options,\n direction === \"vertical\" ? vertOptions : horizOptions,\n stacked ? stackedOptions : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect, useState } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleLineProps extends BaseChartProps {\n fill?: boolean;\n secondAxisField?: string;\n}\n\n// Force a re-mount when the secondAxisField is unset / re-set\n// https://app.shortcut.com/plasmic/story/38358/chart-component-issues-with-second-axis-field\nconst useKey = (secondAxisField?: string) => {\n const [key, setKey] = useState(0);\n\n // change key once when the secondAxisField is unset.\n if (!secondAxisField && key) {\n setKey(0);\n }\n\n // change key once when the secondAxisField value changes from undefined -> something\n if (secondAxisField && !key) {\n setKey(Math.random());\n }\n\n return key;\n};\n\nexport function SimpleLine(props: SimpleLineProps) {\n const { secondAxisField, fill, className } = props;\n const isClient = useIsClient();\n const key = useKey(props.secondAxisField);\n\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n extras: (field) => ({\n fill,\n pointRadius: 0,\n yAxisID: field === secondAxisField ? \"y1\" : \"y\",\n }),\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Line\n key={key}\n options={deepmerge.all([\n ...options,\n secondAxisField\n ? {\n scales: {\n y: {\n type: \"linear\" as const,\n display: true,\n position: \"left\" as const,\n },\n y1: {\n type: \"linear\" as const,\n display: true,\n position: \"right\" as const,\n grid: {\n drawOnChartArea: false,\n },\n },\n },\n }\n : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n Chart as ChartJS,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Scatter } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport type SimpleScatterProps = BaseChartProps;\n\nexport function SimpleScatter(props: SimpleScatterProps) {\n const { className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n LinearScale,\n PointElement,\n LineElement,\n Tooltip,\n Legend,\n Title\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, { isScatter: true, opacity: 1 });\n const options = prepOptions(props);\n\n return (\n <div className={className}>\n <Scatter\n options={deepmerge.all([\n ...options,\n {\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import React, { ReactElement } from \"react\";\nimport { SimpleBar, SimpleBarProps } from \"../simple-bar/SimpleBar\";\nimport { SimpleLine, SimpleLineProps } from \"../simple-line/SimpleLine\";\nimport {\n SimpleScatter,\n SimpleScatterProps,\n} from \"../simple-scatter/SimpleScatter\";\n\nexport type SimpleChartProps = {\n type?: \"bar\" | \"line\" | \"scatter\";\n} & (SimpleBarProps | SimpleLineProps | SimpleScatterProps);\n\nexport function SimpleChart(props: SimpleChartProps): ReactElement {\n switch (props.type ?? \"bar\") {\n case \"bar\":\n return <SimpleBar {...(props as any)} />;\n case \"line\":\n return <SimpleLine {...(props as any)} />;\n case \"scatter\":\n return <SimpleScatter {...(props as any)} />;\n }\n}\n","import { ComponentMeta, PropType } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\nconst fieldChoice: PropType<SimpleChartProps> = {\n type: \"choice\",\n options: (props: SimpleChartProps) =>\n props.data?.[0] ? Object.keys(props.data[0]) : [],\n} as const;\nconst simpleChartMeta: ComponentMeta<SimpleChartProps> = {\n name: \"hostless-react-chartjs-2-simple-chart\",\n displayName: \"Chart\",\n props: {\n type: {\n type: \"choice\",\n options: [\n {\n value: \"bar\",\n label: \"Bar\",\n },\n {\n value: \"line\",\n label: \"Line\",\n },\n {\n value: \"scatter\",\n label: \"Scatter\",\n },\n ],\n defaultValueHint: \"bar\",\n },\n data: {\n type: \"exprEditor\",\n description: \"The data as an array of objects\",\n defaultExpr: JSON.stringify([\n {\n region: \"APAC\",\n revenue: 3294,\n spend: 2675,\n },\n {\n region: \"EMEA\",\n revenue: 3245,\n spend: 3895,\n },\n {\n region: \"LATAM\",\n revenue: 2165,\n spend: 3498,\n },\n {\n region: \"AMER\",\n revenue: 3215,\n spend: 1656,\n },\n ]),\n },\n labelField: {\n ...fieldChoice,\n hidden: (props) => props.type === \"scatter\",\n },\n title: \"string\",\n interactive: {\n type: \"boolean\",\n },\n // Bar chart\n direction: {\n type: \"choice\",\n options: [\"horizontal\", \"vertical\"].map((dir) => ({\n value: dir,\n label: dir[0].toUpperCase() + dir.slice(1),\n })),\n defaultValueHint: \"Vertical\",\n hidden: (props) => props.type !== \"bar\",\n },\n stacked: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"bar\",\n },\n // Line chart\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\n },\n secondAxisField: {\n ...fieldChoice,\n hidden: (props) => props.type !== \"line\",\n },\n\n // TODO\n // datasets: {\n // type: \"array\",\n // unstable__keyFunc: (x) => x.key,\n // unstable__minimalValue: (_props, ctx) => null,\n // itemType: {\n // type: \"object\",\n // fields: {\n // label: \"string\",\n // fieldId: \"string\",\n // hidden: {\n // type: \"boolean\",\n // },\n // },\n // },\n // },\n },\n\n defaultStyles: {\n width: \"stretch\",\n },\n\n importName: \"SimpleChart\",\n importPath: \"@plasmicpkgs/react-chartjs-2\",\n};\n\nexport function registerSimpleChart(loader?: Registerable) {\n registerComponentHelper(loader, SimpleChart, simpleChartMeta);\n}\n","import { registerSimpleChart } from \"./simple-chart\";\nimport { Registerable } from \"./utils\";\n\nexport { SimpleChart } from \"./simple-chart\";\n\nexport function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n"],"names":["registerComponentHelper","loader","component","meta","registerComponent","baseOptions","responsive","chartArea","defaultColors","useIsClient","_useState","useState","loaded","setLoaded","useEffect","range","total","Array","from","keys","getDefaultColor","index","opacity","preferredStart","end","length","start","Math","max","min","stops","map","_","i","round","selected","undefined","replace","prepData","_ref","_temp","data","_ref$data","labelField","chosenFields","scatterSeries","_ref2","isScatter","preferNonNumericAsLabel","extras","fields","Object","_data$","isFieldAllNumericOrNil","Map","key","every","item","_item$key","isNaN","realLabelField","find","field","get","numericFields","filter","_scatterSeries","_scatterSeries2","name","datasets","series","_scatterSeries3","_extends","label","_item$series$fields$","_item$series$fields$2","x","y","backgroundColor","autoChosenFields","labels","_item$key2","borderWidth","borderColor","prepOptions","_ref3","interactive","_ref3$interactive","title","interaction","mode","intersect","plugins","display","text","ChartAreaPlugin","id","beforeDraw","chart","chartAreaOptions","config","options","ctx","canvas","getContext","save","fillStyle","fillRect","left","top","right","bottom","restore","stackedOptions","scales","stacked","ticks","major","enabled","vertOptions","indexAxis","legend","position","horizOptions","SimpleBar","props","_props$direction","direction","className","isClient","ChartJS","register","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","normalized","React","Bar","deepmerge","all","concat","useKey","secondAxisField","setKey","random","SimpleLine","fill","PointElement","LineElement","Filler","pointRadius","yAxisID","Line","type","y1","grid","drawOnChartArea","SimpleScatter","Scatter","beginAtZero","SimpleChart","_props$type","fieldChoice","_props$data","simpleChartMeta","displayName","value","defaultValueHint","description","defaultExpr","JSON","stringify","region","revenue","spend","hidden","dir","toUpperCase","slice","defaultStyles","width","importName","importPath","registerSimpleChart","registerAll"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("@plasmicapp/host/registerComponent"));require("@plasmicapp/host/registerGlobalContext");var r=require("react"),n=e(r),a=require("chart.js"),i=e(require("deepmerge")),l=require("react-chartjs-2");function o(){return(o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var s={responsive:!0,chartArea:{}},c=["hsla(25,95%,53%,1.0)","hsla(38,92%,50%,1.0)","hsla(45,93%,47%,1.0)","hsla(84,81%,44%,1.0)","hsla(142,71%,45%,1.0)","hsla(160,84%,39%,1.0)","hsla(173,80%,40%,1.0)","hsla(199,89%,48%,1.0)","hsla(217,91%,60%,1.0)","hsla(239,84%,67%,1.0)","hsla(258,90%,66%,1.0)","hsla(271,91%,65%,1.0)","hsla(292,84%,61%,1.0)","hsla(293,69%,49%,1.0)","hsla(295,72%,40%,1.0)","hsla(295,70%,33%,1.0)"];function u(){var e=r.useState(!1),t=e[0],n=e[1];return r.useEffect((function(){n(!0)})),t}function d(e){return Array.from(Array(e).keys())}function p(e,t,r){var n=c.length-1,a=Math.max(0,Math.min(9,n-t)),i=t>c.length?d(c.length):d(t).map((function(e,r){return Math.round(a+(t>1?1*r/(t-1)*(n-a):0))})),l=c[i[e%i.length]];return void 0===r?l:l.replace("1.0",""+r)}function f(e,t){var r,n,a,i=e.data,l=void 0===i?[]:i,s=e.labelField,c=e.chosenFields,u=e.scatterSeries,d=void 0===t?{}:t,f=d.isScatter,h=d.preferNonNumericAsLabel,v=d.extras,m=d.opacity,g=Object.keys(null!=(r=l[0])?r:{}),y=new Map(g.map((function(e){return[e,l.every((function(t){var r;return!isNaN(null!=(r=t[e])?r:0)}))]}))),b=null!=s?s:h?g.find((function(e){return!y.get(e)})):g[0],
|
|
1
|
+
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("@plasmicapp/host/registerComponent"));require("@plasmicapp/host/registerGlobalContext");var r=require("react"),n=e(r),a=require("chart.js"),i=e(require("deepmerge")),l=require("react-chartjs-2");function o(){return(o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var s={responsive:!0,chartArea:{}},c=["hsla(25,95%,53%,1.0)","hsla(38,92%,50%,1.0)","hsla(45,93%,47%,1.0)","hsla(84,81%,44%,1.0)","hsla(142,71%,45%,1.0)","hsla(160,84%,39%,1.0)","hsla(173,80%,40%,1.0)","hsla(199,89%,48%,1.0)","hsla(217,91%,60%,1.0)","hsla(239,84%,67%,1.0)","hsla(258,90%,66%,1.0)","hsla(271,91%,65%,1.0)","hsla(292,84%,61%,1.0)","hsla(293,69%,49%,1.0)","hsla(295,72%,40%,1.0)","hsla(295,70%,33%,1.0)"];function u(){var e=r.useState(!1),t=e[0],n=e[1];return r.useEffect((function(){n(!0)})),t}function d(e){return Array.from(Array(e).keys())}function p(e,t,r){var n=c.length-1,a=Math.max(0,Math.min(9,n-t)),i=t>c.length?d(c.length):d(t).map((function(e,r){return Math.round(a+(t>1?1*r/(t-1)*(n-a):0))})),l=c[i[e%i.length]];return void 0===r?l:l.replace("1.0",""+r)}function f(e,t){var r,n,a,i=e.data,l=void 0===i?[]:i,s=e.labelField,c=e.chosenFields,u=e.scatterSeries,d=void 0===t?{}:t,f=d.isScatter,h=d.preferNonNumericAsLabel,v=d.extras,m=d.opacity,g=Object.keys(null!=(r=l[0])?r:{}),y=new Map(g.map((function(e){return[e,l.every((function(t){var r;return!isNaN(null!=(r=t[e])?r:0)}))]}))),b=null!=s?s:h?g.find((function(e){return!y.get(e)})):g[0],x=g.filter((function(e){return y.get(e)}));if(f)return{datasets:(null!=(a=u=f?null!=(n=u)?n:[{name:x[0]+"-"+x[1],fields:[x[0],x[1]]}]:void 0)?a:[]).map((function(e,t){var r;return o({},null==v?void 0:v(e.name),{label:e.name,data:l.map((function(t){var r,n;return{x:null!=(r=t[e.fields[0]])?r:0,y:null!=(n=t[e.fields[1]])?n:0}})),backgroundColor:p(t,(null!=(r=u)?r:[]).length,m)})}))};var A=x.filter((function(e){return e!==b}));return{labels:b?l.map((function(e){return e[b]})):void 0,datasets:(null!=c?c:A).map((function(e,t){return o({},null==v?void 0:v(e),{label:e,data:l.map((function(t){var r;return null!=(r=t[e])?r:0})),backgroundColor:p(t,(null!=c?c:A).length,1),borderWidth:2,borderColor:p(t,(null!=c?c:A).length,1)})}))}}function h(e){var t=e.interactive,r=e.title;return[s,void 0===t||t?{interaction:{mode:"index",intersect:!1}}:{},r?{plugins:{title:{display:!0,text:r}}}:{}]}var v={id:"chartAreaPlugin",beforeDraw:function(e){var t=e.config.options.chartArea;if(t&&t.backgroundColor){var r=e.canvas.getContext("2d"),n=e.chartArea;r&&(r.save(),r.fillStyle=t.backgroundColor,r.fillRect(n.left,n.top,n.right-n.left,n.bottom-n.top),r.restore())}}},m={scales:{x:{stacked:!0,ticks:{major:{enabled:!1}}},y:{stacked:!0}}},g={indexAxis:"x",plugins:{legend:{position:"top"}}},y={indexAxis:"y",plugins:{legend:{position:"right"}}};function b(e){var t=e.direction,o=void 0===t?"vertical":t,s=e.stacked,c=e.className,d=u();if(r.useEffect((function(){a.Chart.register(v,a.CategoryScale,a.LinearScale,a.BarElement,a.Title,a.Tooltip,a.Legend)}),[]),!d)return null;var p=f(e,{preferNonNumericAsLabel:!0,opacity:1}),b=h(e);return n.createElement("div",{className:c},n.createElement(l.Bar,{key:""+e.direction+e.stacked,options:i.all([].concat(b,["vertical"===o?g:y,s?m:{}])),data:p}))}function x(e){var t=e.secondAxisField,o=e.fill,s=e.className,c=u(),d=function(e){var t=r.useState(0),n=t[0],a=t[1];return!e&&n&&a(0),e&&!n&&a(Math.random()),n}(e.secondAxisField);if(r.useEffect((function(){a.Chart.register(v,a.CategoryScale,a.LinearScale,a.PointElement,a.LineElement,a.Title,a.Tooltip,a.Filler,a.Legend)}),[]),!c)return null;var p=f(e,{extras:function(e){return{fill:o,pointRadius:0,yAxisID:e===t?"y1":"y"}}}),m=h(e);return n.createElement("div",{className:s},n.createElement(l.Line,{key:d,options:i.all([].concat(m,[t?{scales:{y:{type:"linear",display:!0,position:"left"},y1:{type:"linear",display:!0,position:"right",grid:{drawOnChartArea:!1}}}}:{}])),data:p}))}function A(e){var t=e.className,o=u();if(r.useEffect((function(){a.Chart.register(v,a.LinearScale,a.PointElement,a.LineElement,a.Tooltip,a.Legend,a.Title)}),[]),!o)return null;var s=f(e,{isScatter:!0,opacity:1}),c=h(e);return n.createElement("div",{className:t},n.createElement(l.Scatter,{options:i.all([].concat(c,[{scales:{y:{beginAtZero:!0}}}])),data:s}))}function E(e){var t;switch(null!=(t=e.type)?t:"bar"){case"bar":return n.createElement(b,Object.assign({},e));case"line":return n.createElement(x,Object.assign({},e));case"scatter":return n.createElement(A,Object.assign({},e))}}var C={type:"choice",options:function(e){var t;return null!=(t=e.data)&&t[0]?Object.keys(e.data[0]):[]}},S={name:"hostless-react-chartjs-2-simple-chart",displayName:"Chart",props:{type:{type:"choice",options:[{value:"bar",label:"Bar"},{value:"line",label:"Line"},{value:"scatter",label:"Scatter"}],defaultValueHint:"bar"},data:{type:"exprEditor",description:"The data as an array of objects",defaultExpr:JSON.stringify([{region:"APAC",revenue:3294,spend:2675},{region:"EMEA",revenue:3245,spend:3895},{region:"LATAM",revenue:2165,spend:3498},{region:"AMER",revenue:3215,spend:1656}])},labelField:o({},C,{hidden:function(e){return"scatter"===e.type}}),title:"string",interactive:{type:"boolean"},direction:{type:"choice",options:["horizontal","vertical"].map((function(e){return{value:e,label:e[0].toUpperCase()+e.slice(1)}})),defaultValueHint:"Vertical",hidden:function(e){return"bar"!==e.type}},stacked:{type:"boolean",hidden:function(e){return"bar"!==e.type}},fill:{type:"boolean",hidden:function(e){return"line"!==e.type}},secondAxisField:o({},C,{hidden:function(e){return"line"!==e.type}})},defaultStyles:{width:"stretch"},importName:"SimpleChart",importPath:"@plasmicpkgs/react-chartjs-2"};exports.SimpleChart=E,exports.registerAll=function(e){!function(e){!function(e,r,n){e?e.registerComponent(r,n):t(r,n)}(e,E,S)}(e)};
|
|
2
2
|
//# sourceMappingURL=react-chartjs-2.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-chartjs-2.cjs.production.min.js","sources":["../src/common.ts","../src/simple-bar/SimpleBar.tsx","../src/simple-line/SimpleLine.tsx","../src/simple-scatter/SimpleScatter.tsx","../src/simple-chart/SimpleChart.tsx","../src/simple-chart/index.tsx","../src/index.tsx","../src/utils.ts"],"sourcesContent":["import { Plugin } from \"chart.js/dist/types\";\nimport { useEffect, useState } from \"react\";\n\nexport const baseOptions = {\n responsive: true,\n chartArea: {\n // backgroundColor: \"#f8fafc\",\n },\n};\n\n/**\n * These are hand-picked from the Tailwind palette.\n */\nexport const defaultColors = [\n \"hsla(25,95%,53%,1.0)\",\n \"hsla(38,92%,50%,1.0)\",\n \"hsla(45,93%,47%,1.0)\",\n \"hsla(84,81%,44%,1.0)\",\n \"hsla(142,71%,45%,1.0)\",\n \"hsla(160,84%,39%,1.0)\",\n \"hsla(173,80%,40%,1.0)\",\n \"hsla(199,89%,48%,1.0)\",\n \"hsla(217,91%,60%,1.0)\",\n \"hsla(239,84%,67%,1.0)\",\n \"hsla(258,90%,66%,1.0)\",\n \"hsla(271,91%,65%,1.0)\",\n \"hsla(292,84%,61%,1.0)\",\n \"hsla(293,69%,49%,1.0)\",\n \"hsla(295,72%,40%,1.0)\",\n \"hsla(295,70%,33%,1.0)\",\n];\n\nexport function useIsClient() {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nexport interface BaseChartProps {\n className?: string;\n data?: Record<string, any>[];\n labelField?: string;\n interactive?: boolean;\n title?: string;\n chosenFields?: string[];\n scatterSeries?: { name: string; fields: [string, string] }[];\n}\n\nexport interface PrepDataOpts {\n isScatter?: boolean;\n preferNonNumericAsLabel?: boolean;\n extras?: (field: string) => {};\n opacity?: number;\n}\n\nfunction range(total: number) {\n return Array.from(Array(total).keys());\n}\n\n/**\n * Returns a color from the default color palette.\n *\n * Tries to pick \"different\" colors that are somewhat spread out on the palette. With a higher 'total' colors requested, the colors will be packed more closely together.\n *\n * We prefer starting from blue when possible. This only starts getting pushed down toward yellow if too many colors requested.\n *\n * If too many colors are requested, it will recycle.\n */\nexport function getDefaultColor(\n index: number,\n total: number,\n opacity?: number\n) {\n const preferredStart = 9;\n const end = defaultColors.length - 1;\n const start = Math.max(0, Math.min(preferredStart, end - total));\n const stops =\n total > defaultColors.length\n ? range(defaultColors.length)\n : range(total).map((_, i) =>\n Math.round(\n start + (total > 1 ? ((1.0 * i) / (total - 1)) * (end - start) : 0)\n )\n );\n const selected = defaultColors[stops[index % stops.length]];\n if (opacity === undefined) {\n return selected;\n }\n return selected.replace(\"1.0\", \"\" + opacity);\n}\n\nexport function prepData(\n { data = [], labelField, chosenFields, scatterSeries }: BaseChartProps,\n { isScatter, preferNonNumericAsLabel, extras, opacity }: PrepDataOpts = {}\n) {\n const fields = Object.keys(data[0] ?? {});\n const isFieldAllNumericOrNil = new Map(\n fields.map((key) => [key, data.every((item) => !isNaN(item[key] ?? 0))])\n );\n const realLabelField =\n labelField ??\n (preferNonNumericAsLabel\n ? fields.find((field) => !isFieldAllNumericOrNil.get(field))\n : fields[0]);\n const numericFields = fields.filter((field) =>\n isFieldAllNumericOrNil.get(field)\n );\n if (isScatter) {\n scatterSeries = isScatter\n ? scatterSeries ?? [\n {\n name: `${numericFields[0]}-${numericFields[1]}`,\n fields: [numericFields[0], numericFields[1]] as [string, string],\n },\n ]\n : undefined;\n return {\n datasets: (scatterSeries ?? []).map((series, index) => ({\n ...extras?.(series.name),\n label: series.name,\n data: data.map((item) => ({\n x: item[series.fields[0]] ?? 0,\n y: item[series.fields[1]] ?? 0,\n })),\n backgroundColor: getDefaultColor(\n index,\n (scatterSeries ?? []).length,\n opacity\n ),\n })),\n };\n } else {\n const autoChosenFields = numericFields.filter(\n (field) => field !== realLabelField\n );\n return {\n labels: realLabelField\n ? data.map((item) => item[realLabelField])\n : undefined,\n datasets: (chosenFields ?? autoChosenFields).map((key, index) => {\n return {\n ...extras?.(key),\n label: key,\n data: data.map((item) => item[key] ?? 0),\n backgroundColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n borderWidth: 2,\n borderColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n };\n }),\n };\n }\n}\n\n// additional styling\n\n/*\n elements: {\n bar: {\n borderWidth: 2,\n },\n },\n\n */\n\nexport function prepOptions({ interactive = true, title }: BaseChartProps) {\n return [\n baseOptions,\n interactive\n ? {\n interaction: {\n mode: \"index\" as const,\n intersect: false,\n },\n }\n : {},\n title ? { title: { display: true, text: title } } : {},\n ];\n}\n\nexport const ChartAreaPlugin: Plugin = {\n id: \"chartAreaPlugin\",\n // eslint-disable-next-line object-shorthand\n beforeDraw: (chart) => {\n const chartAreaOptions = (chart.config.options as any).chartArea;\n if (chartAreaOptions && chartAreaOptions.backgroundColor) {\n const ctx = chart.canvas.getContext(\"2d\");\n const { chartArea } = chart;\n if (ctx) {\n ctx.save();\n ctx.fillStyle = chartAreaOptions.backgroundColor;\n // eslint-disable-next-line max-len\n ctx.fillRect(\n chartArea.left,\n chartArea.top,\n chartArea.right - chartArea.left,\n chartArea.bottom - chartArea.top\n );\n ctx.restore();\n }\n }\n },\n};\n","import {\n BarElement,\n CategoryScale,\n Chart as ChartJS,\n Legend,\n LinearScale,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport const stackedOptions = {\n scales: {\n x: {\n stacked: true,\n ticks: {\n major: {\n enabled: false,\n },\n },\n },\n y: {\n stacked: true,\n },\n },\n};\n\nexport const vertOptions = {\n plugins: {\n legend: {\n position: \"top\" as const,\n },\n },\n};\nexport const horizOptions = {\n indexAxis: \"y\" as const,\n plugins: {\n legend: {\n position: \"right\" as const,\n },\n },\n};\n\nexport interface SimpleBarProps extends BaseChartProps {\n direction?: \"vertical\" | \"horizontal\";\n stacked?: boolean;\n}\n\nexport function SimpleBar(props: SimpleBarProps) {\n const { direction = \"vertical\", stacked, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n preferNonNumericAsLabel: true,\n opacity: 1,\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Bar\n options={deepmerge.all([\n ...options,\n direction === \"vertical\" ? vertOptions : horizOptions,\n stacked ? stackedOptions : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleLineProps extends BaseChartProps {\n fill?: boolean;\n secondAxisField?: string;\n}\n\nexport function SimpleLine(props: SimpleLineProps) {\n const { secondAxisField, fill, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n extras: (field) => ({\n fill,\n pointRadius: 0,\n yAxisID: field === secondAxisField ? \"y1\" : \"y\",\n }),\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Line\n options={deepmerge.all([\n ...options,\n secondAxisField\n ? {\n scales: {\n y: {\n type: \"linear\" as const,\n display: true,\n position: \"left\" as const,\n },\n y1: {\n type: \"linear\" as const,\n display: true,\n position: \"right\" as const,\n grid: {\n drawOnChartArea: false,\n },\n },\n },\n }\n : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n Chart as ChartJS,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Scatter } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleScatterProps extends BaseChartProps {}\n\nexport function SimpleScatter(props: SimpleScatterProps) {\n const { className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n LinearScale,\n PointElement,\n LineElement,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, { isScatter: true, opacity: 1 });\n const options = prepOptions(props);\n console.log(\"!!\", normalized, options);\n return (\n <div className={className}>\n <Scatter\n options={deepmerge.all([\n ...options,\n {\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import React, { ReactElement } from \"react\";\nimport { SimpleBar, SimpleBarProps } from \"../simple-bar/SimpleBar\";\nimport { SimpleLine, SimpleLineProps } from \"../simple-line/SimpleLine\";\nimport {\n SimpleScatter,\n SimpleScatterProps,\n} from \"../simple-scatter/SimpleScatter\";\n\nexport type SimpleChartProps = {\n type?: \"bar\" | \"line\" | \"scatter\";\n} & (SimpleBarProps | SimpleLineProps | SimpleScatterProps);\n\nexport function SimpleChart(props: SimpleChartProps): ReactElement {\n switch (props.type ?? \"bar\") {\n case \"bar\":\n return <SimpleBar {...(props as any)} />;\n case \"line\":\n return <SimpleLine {...(props as any)} />;\n case \"scatter\":\n return <SimpleScatter {...(props as any)} />;\n }\n}\n","import { ComponentMeta, PropType } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\nconst fieldChoice: PropType<SimpleChartProps> = {\n type: \"choice\",\n options: (props: SimpleChartProps) =>\n props.data?.[0] ? Object.keys(props.data[0]) : [],\n} as const;\nconst simpleChartMeta: ComponentMeta<SimpleChartProps> = {\n name: \"hostless-react-chartjs-2-simple-chart\",\n displayName: \"Chart\",\n props: {\n type: {\n type: \"choice\",\n options: [\n {\n value: \"bar\",\n label: \"Bar\",\n },\n {\n value: \"line\",\n label: \"Line\",\n },\n {\n value: \"scatter\",\n label: \"Scatter\",\n },\n ],\n defaultValueHint: \"bar\",\n },\n data: {\n type: \"exprEditor\",\n description: \"The data as an array of objects\",\n defaultExpr: JSON.stringify([\n {\n region: \"APAC\",\n revenue: 3294,\n spend: 2675,\n },\n {\n region: \"EMEA\",\n revenue: 3245,\n spend: 3895,\n },\n {\n region: \"LATAM\",\n revenue: 2165,\n spend: 3498,\n },\n {\n region: \"AMER\",\n revenue: 3215,\n spend: 1656,\n },\n ]),\n },\n labelField: {\n ...fieldChoice,\n hidden: (props) => props.type === \"scatter\",\n },\n title: \"string\",\n interactive: {\n type: \"boolean\",\n },\n // Bar chart\n direction: {\n type: \"choice\",\n options: [\"horizontal\", \"vertical\"].map((dir) => ({\n value: dir,\n label: dir[0].toUpperCase() + dir.slice(1),\n })),\n defaultValueHint: \"Vertical\",\n hidden: (props) => props.type !== \"bar\",\n },\n stacked: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"bar\",\n },\n // Line chart\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\n },\n secondAxisField: {\n ...fieldChoice,\n hidden: (props) => props.type !== \"line\",\n },\n\n // TODO\n // datasets: {\n // type: \"array\",\n // unstable__keyFunc: (x) => x.key,\n // unstable__minimalValue: (_props, ctx) => null,\n // itemType: {\n // type: \"object\",\n // fields: {\n // label: \"string\",\n // fieldId: \"string\",\n // hidden: {\n // type: \"boolean\",\n // },\n // },\n // },\n // },\n },\n\n defaultStyles: {\n width: \"stretch\",\n },\n\n importName: \"SimpleChart\",\n importPath: \"@plasmicpkgs/react-chartjs-2\",\n};\n\nexport function registerSimpleChart(loader?: Registerable) {\n registerComponentHelper(loader, SimpleChart, simpleChartMeta);\n}\n","import { registerSimpleChart } from \"./simple-chart\";\nimport { Registerable } from \"./utils\";\n\nexport { SimpleChart } from \"./simple-chart\";\n\nexport function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n","import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n"],"names":["baseOptions","responsive","chartArea","defaultColors","useIsClient","_useState","useState","loaded","setLoaded","useEffect","range","total","Array","from","keys","getDefaultColor","index","opacity","end","length","start","Math","max","min","stops","map","_","i","round","selected","undefined","replace","prepData","_ref","_temp","_scatterSeries","_scatterSeries2","data","_ref$data","labelField","chosenFields","scatterSeries","_ref2","isScatter","preferNonNumericAsLabel","extras","fields","Object","_data$","isFieldAllNumericOrNil","Map","key","every","item","_item$key","isNaN","realLabelField","find","field","get","numericFields","filter","datasets","name","series","_scatterSeries3","_extends","label","_item$series$fields$","_item$series$fields$2","x","y","backgroundColor","autoChosenFields","labels","_item$key2","borderWidth","borderColor","prepOptions","_ref3","interactive","title","_ref3$interactive","interaction","mode","intersect","display","text","ChartAreaPlugin","id","beforeDraw","chart","chartAreaOptions","config","options","ctx","canvas","getContext","save","fillStyle","fillRect","left","top","right","bottom","restore","stackedOptions","scales","stacked","ticks","major","enabled","vertOptions","plugins","legend","position","horizOptions","indexAxis","SimpleBar","props","_props$direction","direction","className","isClient","ChartJS","register","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","normalized","React","Bar","deepmerge","all","concat","SimpleLine","secondAxisField","fill","PointElement","LineElement","Filler","pointRadius","yAxisID","Line","type","y1","grid","drawOnChartArea","SimpleScatter","console","log","Scatter","beginAtZero","SimpleChart","_props$type","fieldChoice","_props$data","simpleChartMeta","displayName","value","defaultValueHint","description","defaultExpr","JSON","stringify","region","revenue","spend","hidden","dir","toUpperCase","slice","defaultStyles","width","importName","importPath","loader","component","meta","registerComponent","registerComponentHelper","registerSimpleChart"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-chartjs-2.cjs.production.min.js","sources":["../src/common.ts","../src/simple-bar/SimpleBar.tsx","../src/simple-line/SimpleLine.tsx","../src/simple-scatter/SimpleScatter.tsx","../src/simple-chart/SimpleChart.tsx","../src/simple-chart/index.tsx","../src/index.tsx","../src/utils.ts"],"sourcesContent":["import { Plugin } from \"chart.js/dist/types\";\nimport { useEffect, useState } from \"react\";\n\nexport const baseOptions = {\n responsive: true,\n chartArea: {\n // backgroundColor: \"#f8fafc\",\n },\n};\n\n/**\n * These are hand-picked from the Tailwind palette.\n */\nexport const defaultColors = [\n \"hsla(25,95%,53%,1.0)\",\n \"hsla(38,92%,50%,1.0)\",\n \"hsla(45,93%,47%,1.0)\",\n \"hsla(84,81%,44%,1.0)\",\n \"hsla(142,71%,45%,1.0)\",\n \"hsla(160,84%,39%,1.0)\",\n \"hsla(173,80%,40%,1.0)\",\n \"hsla(199,89%,48%,1.0)\",\n \"hsla(217,91%,60%,1.0)\",\n \"hsla(239,84%,67%,1.0)\",\n \"hsla(258,90%,66%,1.0)\",\n \"hsla(271,91%,65%,1.0)\",\n \"hsla(292,84%,61%,1.0)\",\n \"hsla(293,69%,49%,1.0)\",\n \"hsla(295,72%,40%,1.0)\",\n \"hsla(295,70%,33%,1.0)\",\n];\n\nexport function useIsClient() {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nexport interface BaseChartProps {\n className?: string;\n data?: Record<string, any>[];\n labelField?: string;\n interactive?: boolean;\n title?: string;\n chosenFields?: string[];\n scatterSeries?: { name: string; fields: [string, string] }[];\n}\n\nexport interface PrepDataOpts {\n isScatter?: boolean;\n preferNonNumericAsLabel?: boolean;\n extras?: (field: string) => {};\n opacity?: number;\n}\n\nfunction range(total: number) {\n return Array.from(Array(total).keys());\n}\n\n/**\n * Returns a color from the default color palette.\n *\n * Tries to pick \"different\" colors that are somewhat spread out on the palette. With a higher 'total' colors requested, the colors will be packed more closely together.\n *\n * We prefer starting from blue when possible. This only starts getting pushed down toward yellow if too many colors requested.\n *\n * If too many colors are requested, it will recycle.\n */\nexport function getDefaultColor(\n index: number,\n total: number,\n opacity?: number\n) {\n const preferredStart = 9;\n const end = defaultColors.length - 1;\n const start = Math.max(0, Math.min(preferredStart, end - total));\n const stops =\n total > defaultColors.length\n ? range(defaultColors.length)\n : range(total).map((_, i) =>\n Math.round(\n start + (total > 1 ? ((1.0 * i) / (total - 1)) * (end - start) : 0)\n )\n );\n const selected = defaultColors[stops[index % stops.length]];\n if (opacity === undefined) {\n return selected;\n }\n return selected.replace(\"1.0\", \"\" + opacity);\n}\n\nexport function prepData(\n { data = [], labelField, chosenFields, scatterSeries }: BaseChartProps,\n { isScatter, preferNonNumericAsLabel, extras, opacity }: PrepDataOpts = {}\n) {\n const fields = Object.keys(data[0] ?? {});\n const isFieldAllNumericOrNil = new Map(\n fields.map((key) => [key, data.every((item) => !isNaN(item[key] ?? 0))])\n );\n const realLabelField =\n labelField ??\n (preferNonNumericAsLabel\n ? fields.find((field) => !isFieldAllNumericOrNil.get(field))\n : fields[0]);\n const numericFields = fields.filter((field) =>\n isFieldAllNumericOrNil.get(field)\n );\n if (isScatter) {\n scatterSeries = isScatter\n ? scatterSeries ?? [\n {\n name: `${numericFields[0]}-${numericFields[1]}`,\n fields: [numericFields[0], numericFields[1]] as [string, string],\n },\n ]\n : undefined;\n return {\n datasets: (scatterSeries ?? []).map((series, index) => ({\n ...extras?.(series.name),\n label: series.name,\n data: data.map((item) => ({\n x: item[series.fields[0]] ?? 0,\n y: item[series.fields[1]] ?? 0,\n })),\n backgroundColor: getDefaultColor(\n index,\n (scatterSeries ?? []).length,\n opacity\n ),\n })),\n };\n } else {\n const autoChosenFields = numericFields.filter(\n (field) => field !== realLabelField\n );\n return {\n labels: realLabelField\n ? data.map((item) => item[realLabelField])\n : undefined,\n datasets: (chosenFields ?? autoChosenFields).map((key, index) => {\n return {\n ...extras?.(key),\n label: key,\n data: data.map((item) => item[key] ?? 0),\n backgroundColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n borderWidth: 2,\n borderColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n };\n }),\n };\n }\n}\n\n// additional styling\n\n/*\n elements: {\n bar: {\n borderWidth: 2,\n },\n },\n\n */\n\nexport function prepOptions({ interactive = true, title }: BaseChartProps) {\n return [\n baseOptions,\n interactive\n ? {\n interaction: {\n mode: \"index\" as const,\n intersect: false,\n },\n }\n : {},\n title\n ? {\n plugins: {\n title: { display: true, text: title },\n },\n }\n : {},\n ];\n}\n\nexport const ChartAreaPlugin: Plugin = {\n id: \"chartAreaPlugin\",\n // eslint-disable-next-line object-shorthand\n beforeDraw: (chart) => {\n const chartAreaOptions = (chart.config.options as any).chartArea;\n if (chartAreaOptions && chartAreaOptions.backgroundColor) {\n const ctx = chart.canvas.getContext(\"2d\");\n const { chartArea } = chart;\n if (ctx) {\n ctx.save();\n ctx.fillStyle = chartAreaOptions.backgroundColor;\n // eslint-disable-next-line max-len\n ctx.fillRect(\n chartArea.left,\n chartArea.top,\n chartArea.right - chartArea.left,\n chartArea.bottom - chartArea.top\n );\n ctx.restore();\n }\n }\n },\n};\n","import {\n BarElement,\n CategoryScale,\n Chart as ChartJS,\n Legend,\n LinearScale,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport const stackedOptions = {\n scales: {\n x: {\n stacked: true,\n ticks: {\n major: {\n enabled: false,\n },\n },\n },\n y: {\n stacked: true,\n },\n },\n};\n\nexport const vertOptions = {\n indexAxis: \"x\" as const,\n plugins: {\n legend: {\n position: \"top\" as const,\n },\n },\n};\nexport const horizOptions = {\n indexAxis: \"y\" as const,\n plugins: {\n legend: {\n position: \"right\" as const,\n },\n },\n};\n\nexport interface SimpleBarProps extends BaseChartProps {\n direction?: \"vertical\" | \"horizontal\";\n stacked?: boolean;\n}\n\nexport function SimpleBar(props: SimpleBarProps) {\n const { direction = \"vertical\", stacked, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n preferNonNumericAsLabel: true,\n opacity: 1,\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Bar\n key={`${props.direction}${props.stacked}`}\n options={deepmerge.all([\n ...options,\n direction === \"vertical\" ? vertOptions : horizOptions,\n stacked ? stackedOptions : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect, useState } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleLineProps extends BaseChartProps {\n fill?: boolean;\n secondAxisField?: string;\n}\n\n// Force a re-mount when the secondAxisField is unset / re-set\n// https://app.shortcut.com/plasmic/story/38358/chart-component-issues-with-second-axis-field\nconst useKey = (secondAxisField?: string) => {\n const [key, setKey] = useState(0);\n\n // change key once when the secondAxisField is unset.\n if (!secondAxisField && key) {\n setKey(0);\n }\n\n // change key once when the secondAxisField value changes from undefined -> something\n if (secondAxisField && !key) {\n setKey(Math.random());\n }\n\n return key;\n};\n\nexport function SimpleLine(props: SimpleLineProps) {\n const { secondAxisField, fill, className } = props;\n const isClient = useIsClient();\n const key = useKey(props.secondAxisField);\n\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n extras: (field) => ({\n fill,\n pointRadius: 0,\n yAxisID: field === secondAxisField ? \"y1\" : \"y\",\n }),\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Line\n key={key}\n options={deepmerge.all([\n ...options,\n secondAxisField\n ? {\n scales: {\n y: {\n type: \"linear\" as const,\n display: true,\n position: \"left\" as const,\n },\n y1: {\n type: \"linear\" as const,\n display: true,\n position: \"right\" as const,\n grid: {\n drawOnChartArea: false,\n },\n },\n },\n }\n : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n Chart as ChartJS,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Scatter } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport type SimpleScatterProps = BaseChartProps;\n\nexport function SimpleScatter(props: SimpleScatterProps) {\n const { className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n LinearScale,\n PointElement,\n LineElement,\n Tooltip,\n Legend,\n Title\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, { isScatter: true, opacity: 1 });\n const options = prepOptions(props);\n\n return (\n <div className={className}>\n <Scatter\n options={deepmerge.all([\n ...options,\n {\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import React, { ReactElement } from \"react\";\nimport { SimpleBar, SimpleBarProps } from \"../simple-bar/SimpleBar\";\nimport { SimpleLine, SimpleLineProps } from \"../simple-line/SimpleLine\";\nimport {\n SimpleScatter,\n SimpleScatterProps,\n} from \"../simple-scatter/SimpleScatter\";\n\nexport type SimpleChartProps = {\n type?: \"bar\" | \"line\" | \"scatter\";\n} & (SimpleBarProps | SimpleLineProps | SimpleScatterProps);\n\nexport function SimpleChart(props: SimpleChartProps): ReactElement {\n switch (props.type ?? \"bar\") {\n case \"bar\":\n return <SimpleBar {...(props as any)} />;\n case \"line\":\n return <SimpleLine {...(props as any)} />;\n case \"scatter\":\n return <SimpleScatter {...(props as any)} />;\n }\n}\n","import { ComponentMeta, PropType } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\nconst fieldChoice: PropType<SimpleChartProps> = {\n type: \"choice\",\n options: (props: SimpleChartProps) =>\n props.data?.[0] ? Object.keys(props.data[0]) : [],\n} as const;\nconst simpleChartMeta: ComponentMeta<SimpleChartProps> = {\n name: \"hostless-react-chartjs-2-simple-chart\",\n displayName: \"Chart\",\n props: {\n type: {\n type: \"choice\",\n options: [\n {\n value: \"bar\",\n label: \"Bar\",\n },\n {\n value: \"line\",\n label: \"Line\",\n },\n {\n value: \"scatter\",\n label: \"Scatter\",\n },\n ],\n defaultValueHint: \"bar\",\n },\n data: {\n type: \"exprEditor\",\n description: \"The data as an array of objects\",\n defaultExpr: JSON.stringify([\n {\n region: \"APAC\",\n revenue: 3294,\n spend: 2675,\n },\n {\n region: \"EMEA\",\n revenue: 3245,\n spend: 3895,\n },\n {\n region: \"LATAM\",\n revenue: 2165,\n spend: 3498,\n },\n {\n region: \"AMER\",\n revenue: 3215,\n spend: 1656,\n },\n ]),\n },\n labelField: {\n ...fieldChoice,\n hidden: (props) => props.type === \"scatter\",\n },\n title: \"string\",\n interactive: {\n type: \"boolean\",\n },\n // Bar chart\n direction: {\n type: \"choice\",\n options: [\"horizontal\", \"vertical\"].map((dir) => ({\n value: dir,\n label: dir[0].toUpperCase() + dir.slice(1),\n })),\n defaultValueHint: \"Vertical\",\n hidden: (props) => props.type !== \"bar\",\n },\n stacked: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"bar\",\n },\n // Line chart\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\n },\n secondAxisField: {\n ...fieldChoice,\n hidden: (props) => props.type !== \"line\",\n },\n\n // TODO\n // datasets: {\n // type: \"array\",\n // unstable__keyFunc: (x) => x.key,\n // unstable__minimalValue: (_props, ctx) => null,\n // itemType: {\n // type: \"object\",\n // fields: {\n // label: \"string\",\n // fieldId: \"string\",\n // hidden: {\n // type: \"boolean\",\n // },\n // },\n // },\n // },\n },\n\n defaultStyles: {\n width: \"stretch\",\n },\n\n importName: \"SimpleChart\",\n importPath: \"@plasmicpkgs/react-chartjs-2\",\n};\n\nexport function registerSimpleChart(loader?: Registerable) {\n registerComponentHelper(loader, SimpleChart, simpleChartMeta);\n}\n","import { registerSimpleChart } from \"./simple-chart\";\nimport { Registerable } from \"./utils\";\n\nexport { SimpleChart } from \"./simple-chart\";\n\nexport function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n","import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n"],"names":["baseOptions","responsive","chartArea","defaultColors","useIsClient","_useState","useState","loaded","setLoaded","useEffect","range","total","Array","from","keys","getDefaultColor","index","opacity","end","length","start","Math","max","min","stops","map","_","i","round","selected","undefined","replace","prepData","_ref","_temp","_scatterSeries","_scatterSeries2","data","_ref$data","labelField","chosenFields","scatterSeries","_ref2","isScatter","preferNonNumericAsLabel","extras","fields","Object","_data$","isFieldAllNumericOrNil","Map","key","every","item","_item$key","isNaN","realLabelField","find","field","get","numericFields","filter","datasets","name","series","_scatterSeries3","_extends","label","_item$series$fields$","_item$series$fields$2","x","y","backgroundColor","autoChosenFields","labels","_item$key2","borderWidth","borderColor","prepOptions","_ref3","interactive","title","_ref3$interactive","interaction","mode","intersect","plugins","display","text","ChartAreaPlugin","id","beforeDraw","chart","chartAreaOptions","config","options","ctx","canvas","getContext","save","fillStyle","fillRect","left","top","right","bottom","restore","stackedOptions","scales","stacked","ticks","major","enabled","vertOptions","indexAxis","legend","position","horizOptions","SimpleBar","props","_props$direction","direction","className","isClient","ChartJS","register","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","normalized","React","Bar","deepmerge","all","concat","SimpleLine","secondAxisField","fill","setKey","random","useKey","PointElement","LineElement","Filler","pointRadius","yAxisID","Line","type","y1","grid","drawOnChartArea","SimpleScatter","Scatter","beginAtZero","SimpleChart","_props$type","fieldChoice","_props$data","simpleChartMeta","displayName","value","defaultValueHint","description","defaultExpr","JSON","stringify","region","revenue","spend","hidden","dir","toUpperCase","slice","defaultStyles","width","importName","importPath","loader","component","meta","registerComponent","registerComponentHelper","registerSimpleChart"],"mappings":"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"}
|
|
@@ -161,9 +161,11 @@ function prepOptions(_ref3) {
|
|
|
161
161
|
intersect: false
|
|
162
162
|
}
|
|
163
163
|
} : {}, title ? {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
plugins: {
|
|
165
|
+
title: {
|
|
166
|
+
display: true,
|
|
167
|
+
text: title
|
|
168
|
+
}
|
|
167
169
|
}
|
|
168
170
|
} : {}];
|
|
169
171
|
}
|
|
@@ -202,6 +204,7 @@ var stackedOptions = {
|
|
|
202
204
|
}
|
|
203
205
|
};
|
|
204
206
|
var vertOptions = {
|
|
207
|
+
indexAxis: "x",
|
|
205
208
|
plugins: {
|
|
206
209
|
legend: {
|
|
207
210
|
position: "top"
|
|
@@ -236,16 +239,34 @@ function SimpleBar(props) {
|
|
|
236
239
|
return React.createElement("div", {
|
|
237
240
|
className: className
|
|
238
241
|
}, React.createElement(Bar, {
|
|
242
|
+
key: "" + props.direction + props.stacked,
|
|
239
243
|
options: deepmerge.all([].concat(options, [direction === "vertical" ? vertOptions : horizOptions, stacked ? stackedOptions : {}])),
|
|
240
244
|
data: normalized
|
|
241
245
|
}));
|
|
242
246
|
}
|
|
243
247
|
|
|
248
|
+
// Force a re-mount when the secondAxisField is unset / re-set
|
|
249
|
+
// https://app.shortcut.com/plasmic/story/38358/chart-component-issues-with-second-axis-field
|
|
250
|
+
var useKey = function useKey(secondAxisField) {
|
|
251
|
+
var _useState = useState(0),
|
|
252
|
+
key = _useState[0],
|
|
253
|
+
setKey = _useState[1];
|
|
254
|
+
// change key once when the secondAxisField is unset.
|
|
255
|
+
if (!secondAxisField && key) {
|
|
256
|
+
setKey(0);
|
|
257
|
+
}
|
|
258
|
+
// change key once when the secondAxisField value changes from undefined -> something
|
|
259
|
+
if (secondAxisField && !key) {
|
|
260
|
+
setKey(Math.random());
|
|
261
|
+
}
|
|
262
|
+
return key;
|
|
263
|
+
};
|
|
244
264
|
function SimpleLine(props) {
|
|
245
265
|
var secondAxisField = props.secondAxisField,
|
|
246
266
|
fill = props.fill,
|
|
247
267
|
className = props.className;
|
|
248
268
|
var isClient = useIsClient();
|
|
269
|
+
var key = useKey(props.secondAxisField);
|
|
249
270
|
useEffect(function () {
|
|
250
271
|
Chart.register(ChartAreaPlugin, CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Filler, Legend);
|
|
251
272
|
}, []);
|
|
@@ -265,6 +286,7 @@ function SimpleLine(props) {
|
|
|
265
286
|
return React.createElement("div", {
|
|
266
287
|
className: className
|
|
267
288
|
}, React.createElement(Line, {
|
|
289
|
+
key: key,
|
|
268
290
|
options: deepmerge.all([].concat(options, [secondAxisField ? {
|
|
269
291
|
scales: {
|
|
270
292
|
y: {
|
|
@@ -290,7 +312,7 @@ function SimpleScatter(props) {
|
|
|
290
312
|
var className = props.className;
|
|
291
313
|
var isClient = useIsClient();
|
|
292
314
|
useEffect(function () {
|
|
293
|
-
Chart.register(ChartAreaPlugin, LinearScale, PointElement, LineElement, Tooltip, Legend);
|
|
315
|
+
Chart.register(ChartAreaPlugin, LinearScale, PointElement, LineElement, Tooltip, Legend, Title);
|
|
294
316
|
}, []);
|
|
295
317
|
if (!isClient) {
|
|
296
318
|
return null;
|
|
@@ -300,7 +322,6 @@ function SimpleScatter(props) {
|
|
|
300
322
|
opacity: 1
|
|
301
323
|
});
|
|
302
324
|
var options = prepOptions(props);
|
|
303
|
-
console.log("!!", normalized, options);
|
|
304
325
|
return React.createElement("div", {
|
|
305
326
|
className: className
|
|
306
327
|
}, React.createElement(Scatter, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-chartjs-2.esm.js","sources":["../src/utils.ts","../src/common.ts","../src/simple-bar/SimpleBar.tsx","../src/simple-line/SimpleLine.tsx","../src/simple-scatter/SimpleScatter.tsx","../src/simple-chart/SimpleChart.tsx","../src/simple-chart/index.tsx","../src/index.tsx"],"sourcesContent":["import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n","import { Plugin } from \"chart.js/dist/types\";\nimport { useEffect, useState } from \"react\";\n\nexport const baseOptions = {\n responsive: true,\n chartArea: {\n // backgroundColor: \"#f8fafc\",\n },\n};\n\n/**\n * These are hand-picked from the Tailwind palette.\n */\nexport const defaultColors = [\n \"hsla(25,95%,53%,1.0)\",\n \"hsla(38,92%,50%,1.0)\",\n \"hsla(45,93%,47%,1.0)\",\n \"hsla(84,81%,44%,1.0)\",\n \"hsla(142,71%,45%,1.0)\",\n \"hsla(160,84%,39%,1.0)\",\n \"hsla(173,80%,40%,1.0)\",\n \"hsla(199,89%,48%,1.0)\",\n \"hsla(217,91%,60%,1.0)\",\n \"hsla(239,84%,67%,1.0)\",\n \"hsla(258,90%,66%,1.0)\",\n \"hsla(271,91%,65%,1.0)\",\n \"hsla(292,84%,61%,1.0)\",\n \"hsla(293,69%,49%,1.0)\",\n \"hsla(295,72%,40%,1.0)\",\n \"hsla(295,70%,33%,1.0)\",\n];\n\nexport function useIsClient() {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nexport interface BaseChartProps {\n className?: string;\n data?: Record<string, any>[];\n labelField?: string;\n interactive?: boolean;\n title?: string;\n chosenFields?: string[];\n scatterSeries?: { name: string; fields: [string, string] }[];\n}\n\nexport interface PrepDataOpts {\n isScatter?: boolean;\n preferNonNumericAsLabel?: boolean;\n extras?: (field: string) => {};\n opacity?: number;\n}\n\nfunction range(total: number) {\n return Array.from(Array(total).keys());\n}\n\n/**\n * Returns a color from the default color palette.\n *\n * Tries to pick \"different\" colors that are somewhat spread out on the palette. With a higher 'total' colors requested, the colors will be packed more closely together.\n *\n * We prefer starting from blue when possible. This only starts getting pushed down toward yellow if too many colors requested.\n *\n * If too many colors are requested, it will recycle.\n */\nexport function getDefaultColor(\n index: number,\n total: number,\n opacity?: number\n) {\n const preferredStart = 9;\n const end = defaultColors.length - 1;\n const start = Math.max(0, Math.min(preferredStart, end - total));\n const stops =\n total > defaultColors.length\n ? range(defaultColors.length)\n : range(total).map((_, i) =>\n Math.round(\n start + (total > 1 ? ((1.0 * i) / (total - 1)) * (end - start) : 0)\n )\n );\n const selected = defaultColors[stops[index % stops.length]];\n if (opacity === undefined) {\n return selected;\n }\n return selected.replace(\"1.0\", \"\" + opacity);\n}\n\nexport function prepData(\n { data = [], labelField, chosenFields, scatterSeries }: BaseChartProps,\n { isScatter, preferNonNumericAsLabel, extras, opacity }: PrepDataOpts = {}\n) {\n const fields = Object.keys(data[0] ?? {});\n const isFieldAllNumericOrNil = new Map(\n fields.map((key) => [key, data.every((item) => !isNaN(item[key] ?? 0))])\n );\n const realLabelField =\n labelField ??\n (preferNonNumericAsLabel\n ? fields.find((field) => !isFieldAllNumericOrNil.get(field))\n : fields[0]);\n const numericFields = fields.filter((field) =>\n isFieldAllNumericOrNil.get(field)\n );\n if (isScatter) {\n scatterSeries = isScatter\n ? scatterSeries ?? [\n {\n name: `${numericFields[0]}-${numericFields[1]}`,\n fields: [numericFields[0], numericFields[1]] as [string, string],\n },\n ]\n : undefined;\n return {\n datasets: (scatterSeries ?? []).map((series, index) => ({\n ...extras?.(series.name),\n label: series.name,\n data: data.map((item) => ({\n x: item[series.fields[0]] ?? 0,\n y: item[series.fields[1]] ?? 0,\n })),\n backgroundColor: getDefaultColor(\n index,\n (scatterSeries ?? []).length,\n opacity\n ),\n })),\n };\n } else {\n const autoChosenFields = numericFields.filter(\n (field) => field !== realLabelField\n );\n return {\n labels: realLabelField\n ? data.map((item) => item[realLabelField])\n : undefined,\n datasets: (chosenFields ?? autoChosenFields).map((key, index) => {\n return {\n ...extras?.(key),\n label: key,\n data: data.map((item) => item[key] ?? 0),\n backgroundColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n borderWidth: 2,\n borderColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n };\n }),\n };\n }\n}\n\n// additional styling\n\n/*\n elements: {\n bar: {\n borderWidth: 2,\n },\n },\n\n */\n\nexport function prepOptions({ interactive = true, title }: BaseChartProps) {\n return [\n baseOptions,\n interactive\n ? {\n interaction: {\n mode: \"index\" as const,\n intersect: false,\n },\n }\n : {},\n title ? { title: { display: true, text: title } } : {},\n ];\n}\n\nexport const ChartAreaPlugin: Plugin = {\n id: \"chartAreaPlugin\",\n // eslint-disable-next-line object-shorthand\n beforeDraw: (chart) => {\n const chartAreaOptions = (chart.config.options as any).chartArea;\n if (chartAreaOptions && chartAreaOptions.backgroundColor) {\n const ctx = chart.canvas.getContext(\"2d\");\n const { chartArea } = chart;\n if (ctx) {\n ctx.save();\n ctx.fillStyle = chartAreaOptions.backgroundColor;\n // eslint-disable-next-line max-len\n ctx.fillRect(\n chartArea.left,\n chartArea.top,\n chartArea.right - chartArea.left,\n chartArea.bottom - chartArea.top\n );\n ctx.restore();\n }\n }\n },\n};\n","import {\n BarElement,\n CategoryScale,\n Chart as ChartJS,\n Legend,\n LinearScale,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport const stackedOptions = {\n scales: {\n x: {\n stacked: true,\n ticks: {\n major: {\n enabled: false,\n },\n },\n },\n y: {\n stacked: true,\n },\n },\n};\n\nexport const vertOptions = {\n plugins: {\n legend: {\n position: \"top\" as const,\n },\n },\n};\nexport const horizOptions = {\n indexAxis: \"y\" as const,\n plugins: {\n legend: {\n position: \"right\" as const,\n },\n },\n};\n\nexport interface SimpleBarProps extends BaseChartProps {\n direction?: \"vertical\" | \"horizontal\";\n stacked?: boolean;\n}\n\nexport function SimpleBar(props: SimpleBarProps) {\n const { direction = \"vertical\", stacked, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n preferNonNumericAsLabel: true,\n opacity: 1,\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Bar\n options={deepmerge.all([\n ...options,\n direction === \"vertical\" ? vertOptions : horizOptions,\n stacked ? stackedOptions : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleLineProps extends BaseChartProps {\n fill?: boolean;\n secondAxisField?: string;\n}\n\nexport function SimpleLine(props: SimpleLineProps) {\n const { secondAxisField, fill, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n extras: (field) => ({\n fill,\n pointRadius: 0,\n yAxisID: field === secondAxisField ? \"y1\" : \"y\",\n }),\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Line\n options={deepmerge.all([\n ...options,\n secondAxisField\n ? {\n scales: {\n y: {\n type: \"linear\" as const,\n display: true,\n position: \"left\" as const,\n },\n y1: {\n type: \"linear\" as const,\n display: true,\n position: \"right\" as const,\n grid: {\n drawOnChartArea: false,\n },\n },\n },\n }\n : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n Chart as ChartJS,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Scatter } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleScatterProps extends BaseChartProps {}\n\nexport function SimpleScatter(props: SimpleScatterProps) {\n const { className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n LinearScale,\n PointElement,\n LineElement,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, { isScatter: true, opacity: 1 });\n const options = prepOptions(props);\n console.log(\"!!\", normalized, options);\n return (\n <div className={className}>\n <Scatter\n options={deepmerge.all([\n ...options,\n {\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import React, { ReactElement } from \"react\";\nimport { SimpleBar, SimpleBarProps } from \"../simple-bar/SimpleBar\";\nimport { SimpleLine, SimpleLineProps } from \"../simple-line/SimpleLine\";\nimport {\n SimpleScatter,\n SimpleScatterProps,\n} from \"../simple-scatter/SimpleScatter\";\n\nexport type SimpleChartProps = {\n type?: \"bar\" | \"line\" | \"scatter\";\n} & (SimpleBarProps | SimpleLineProps | SimpleScatterProps);\n\nexport function SimpleChart(props: SimpleChartProps): ReactElement {\n switch (props.type ?? \"bar\") {\n case \"bar\":\n return <SimpleBar {...(props as any)} />;\n case \"line\":\n return <SimpleLine {...(props as any)} />;\n case \"scatter\":\n return <SimpleScatter {...(props as any)} />;\n }\n}\n","import { ComponentMeta, PropType } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\nconst fieldChoice: PropType<SimpleChartProps> = {\n type: \"choice\",\n options: (props: SimpleChartProps) =>\n props.data?.[0] ? Object.keys(props.data[0]) : [],\n} as const;\nconst simpleChartMeta: ComponentMeta<SimpleChartProps> = {\n name: \"hostless-react-chartjs-2-simple-chart\",\n displayName: \"Chart\",\n props: {\n type: {\n type: \"choice\",\n options: [\n {\n value: \"bar\",\n label: \"Bar\",\n },\n {\n value: \"line\",\n label: \"Line\",\n },\n {\n value: \"scatter\",\n label: \"Scatter\",\n },\n ],\n defaultValueHint: \"bar\",\n },\n data: {\n type: \"exprEditor\",\n description: \"The data as an array of objects\",\n defaultExpr: JSON.stringify([\n {\n region: \"APAC\",\n revenue: 3294,\n spend: 2675,\n },\n {\n region: \"EMEA\",\n revenue: 3245,\n spend: 3895,\n },\n {\n region: \"LATAM\",\n revenue: 2165,\n spend: 3498,\n },\n {\n region: \"AMER\",\n revenue: 3215,\n spend: 1656,\n },\n ]),\n },\n labelField: {\n ...fieldChoice,\n hidden: (props) => props.type === \"scatter\",\n },\n title: \"string\",\n interactive: {\n type: \"boolean\",\n },\n // Bar chart\n direction: {\n type: \"choice\",\n options: [\"horizontal\", \"vertical\"].map((dir) => ({\n value: dir,\n label: dir[0].toUpperCase() + dir.slice(1),\n })),\n defaultValueHint: \"Vertical\",\n hidden: (props) => props.type !== \"bar\",\n },\n stacked: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"bar\",\n },\n // Line chart\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\n },\n secondAxisField: {\n ...fieldChoice,\n hidden: (props) => props.type !== \"line\",\n },\n\n // TODO\n // datasets: {\n // type: \"array\",\n // unstable__keyFunc: (x) => x.key,\n // unstable__minimalValue: (_props, ctx) => null,\n // itemType: {\n // type: \"object\",\n // fields: {\n // label: \"string\",\n // fieldId: \"string\",\n // hidden: {\n // type: \"boolean\",\n // },\n // },\n // },\n // },\n },\n\n defaultStyles: {\n width: \"stretch\",\n },\n\n importName: \"SimpleChart\",\n importPath: \"@plasmicpkgs/react-chartjs-2\",\n};\n\nexport function registerSimpleChart(loader?: Registerable) {\n registerComponentHelper(loader, SimpleChart, simpleChartMeta);\n}\n","import { registerSimpleChart } from \"./simple-chart\";\nimport { Registerable } from \"./utils\";\n\nexport { SimpleChart } from \"./simple-chart\";\n\nexport function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n"],"names":["registerComponentHelper","loader","component","meta","registerComponent","baseOptions","responsive","chartArea","defaultColors","useIsClient","_useState","useState","loaded","setLoaded","useEffect","range","total","Array","from","keys","getDefaultColor","index","opacity","preferredStart","end","length","start","Math","max","min","stops","map","_","i","round","selected","undefined","replace","prepData","_ref","_temp","data","_ref$data","labelField","chosenFields","scatterSeries","_ref2","isScatter","preferNonNumericAsLabel","extras","fields","Object","_data$","isFieldAllNumericOrNil","Map","key","every","item","_item$key","isNaN","realLabelField","find","field","get","numericFields","filter","_scatterSeries","_scatterSeries2","name","datasets","series","_scatterSeries3","_extends","label","_item$series$fields$","_item$series$fields$2","x","y","backgroundColor","autoChosenFields","labels","_item$key2","borderWidth","borderColor","prepOptions","_ref3","interactive","_ref3$interactive","title","interaction","mode","intersect","display","text","ChartAreaPlugin","id","beforeDraw","chart","chartAreaOptions","config","options","ctx","canvas","getContext","save","fillStyle","fillRect","left","top","right","bottom","restore","stackedOptions","scales","stacked","ticks","major","enabled","vertOptions","plugins","legend","position","horizOptions","indexAxis","SimpleBar","props","_props$direction","direction","className","isClient","ChartJS","register","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","normalized","React","Bar","deepmerge","all","concat","SimpleLine","secondAxisField","fill","PointElement","LineElement","Filler","pointRadius","yAxisID","Line","type","y1","grid","drawOnChartArea","SimpleScatter","console","log","Scatter","beginAtZero","SimpleChart","_props$type","fieldChoice","_props$data","simpleChartMeta","displayName","value","defaultValueHint","description","defaultExpr","JSON","stringify","region","revenue","spend","hidden","dir","toUpperCase","slice","defaultStyles","width","importName","importPath","registerSimpleChart","registerAll"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-chartjs-2.esm.js","sources":["../src/utils.ts","../src/common.ts","../src/simple-bar/SimpleBar.tsx","../src/simple-line/SimpleLine.tsx","../src/simple-scatter/SimpleScatter.tsx","../src/simple-chart/SimpleChart.tsx","../src/simple-chart/index.tsx","../src/index.tsx"],"sourcesContent":["import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n","import { Plugin } from \"chart.js/dist/types\";\nimport { useEffect, useState } from \"react\";\n\nexport const baseOptions = {\n responsive: true,\n chartArea: {\n // backgroundColor: \"#f8fafc\",\n },\n};\n\n/**\n * These are hand-picked from the Tailwind palette.\n */\nexport const defaultColors = [\n \"hsla(25,95%,53%,1.0)\",\n \"hsla(38,92%,50%,1.0)\",\n \"hsla(45,93%,47%,1.0)\",\n \"hsla(84,81%,44%,1.0)\",\n \"hsla(142,71%,45%,1.0)\",\n \"hsla(160,84%,39%,1.0)\",\n \"hsla(173,80%,40%,1.0)\",\n \"hsla(199,89%,48%,1.0)\",\n \"hsla(217,91%,60%,1.0)\",\n \"hsla(239,84%,67%,1.0)\",\n \"hsla(258,90%,66%,1.0)\",\n \"hsla(271,91%,65%,1.0)\",\n \"hsla(292,84%,61%,1.0)\",\n \"hsla(293,69%,49%,1.0)\",\n \"hsla(295,72%,40%,1.0)\",\n \"hsla(295,70%,33%,1.0)\",\n];\n\nexport function useIsClient() {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nexport interface BaseChartProps {\n className?: string;\n data?: Record<string, any>[];\n labelField?: string;\n interactive?: boolean;\n title?: string;\n chosenFields?: string[];\n scatterSeries?: { name: string; fields: [string, string] }[];\n}\n\nexport interface PrepDataOpts {\n isScatter?: boolean;\n preferNonNumericAsLabel?: boolean;\n extras?: (field: string) => {};\n opacity?: number;\n}\n\nfunction range(total: number) {\n return Array.from(Array(total).keys());\n}\n\n/**\n * Returns a color from the default color palette.\n *\n * Tries to pick \"different\" colors that are somewhat spread out on the palette. With a higher 'total' colors requested, the colors will be packed more closely together.\n *\n * We prefer starting from blue when possible. This only starts getting pushed down toward yellow if too many colors requested.\n *\n * If too many colors are requested, it will recycle.\n */\nexport function getDefaultColor(\n index: number,\n total: number,\n opacity?: number\n) {\n const preferredStart = 9;\n const end = defaultColors.length - 1;\n const start = Math.max(0, Math.min(preferredStart, end - total));\n const stops =\n total > defaultColors.length\n ? range(defaultColors.length)\n : range(total).map((_, i) =>\n Math.round(\n start + (total > 1 ? ((1.0 * i) / (total - 1)) * (end - start) : 0)\n )\n );\n const selected = defaultColors[stops[index % stops.length]];\n if (opacity === undefined) {\n return selected;\n }\n return selected.replace(\"1.0\", \"\" + opacity);\n}\n\nexport function prepData(\n { data = [], labelField, chosenFields, scatterSeries }: BaseChartProps,\n { isScatter, preferNonNumericAsLabel, extras, opacity }: PrepDataOpts = {}\n) {\n const fields = Object.keys(data[0] ?? {});\n const isFieldAllNumericOrNil = new Map(\n fields.map((key) => [key, data.every((item) => !isNaN(item[key] ?? 0))])\n );\n const realLabelField =\n labelField ??\n (preferNonNumericAsLabel\n ? fields.find((field) => !isFieldAllNumericOrNil.get(field))\n : fields[0]);\n const numericFields = fields.filter((field) =>\n isFieldAllNumericOrNil.get(field)\n );\n if (isScatter) {\n scatterSeries = isScatter\n ? scatterSeries ?? [\n {\n name: `${numericFields[0]}-${numericFields[1]}`,\n fields: [numericFields[0], numericFields[1]] as [string, string],\n },\n ]\n : undefined;\n return {\n datasets: (scatterSeries ?? []).map((series, index) => ({\n ...extras?.(series.name),\n label: series.name,\n data: data.map((item) => ({\n x: item[series.fields[0]] ?? 0,\n y: item[series.fields[1]] ?? 0,\n })),\n backgroundColor: getDefaultColor(\n index,\n (scatterSeries ?? []).length,\n opacity\n ),\n })),\n };\n } else {\n const autoChosenFields = numericFields.filter(\n (field) => field !== realLabelField\n );\n return {\n labels: realLabelField\n ? data.map((item) => item[realLabelField])\n : undefined,\n datasets: (chosenFields ?? autoChosenFields).map((key, index) => {\n return {\n ...extras?.(key),\n label: key,\n data: data.map((item) => item[key] ?? 0),\n backgroundColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n borderWidth: 2,\n borderColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n };\n }),\n };\n }\n}\n\n// additional styling\n\n/*\n elements: {\n bar: {\n borderWidth: 2,\n },\n },\n\n */\n\nexport function prepOptions({ interactive = true, title }: BaseChartProps) {\n return [\n baseOptions,\n interactive\n ? {\n interaction: {\n mode: \"index\" as const,\n intersect: false,\n },\n }\n : {},\n title\n ? {\n plugins: {\n title: { display: true, text: title },\n },\n }\n : {},\n ];\n}\n\nexport const ChartAreaPlugin: Plugin = {\n id: \"chartAreaPlugin\",\n // eslint-disable-next-line object-shorthand\n beforeDraw: (chart) => {\n const chartAreaOptions = (chart.config.options as any).chartArea;\n if (chartAreaOptions && chartAreaOptions.backgroundColor) {\n const ctx = chart.canvas.getContext(\"2d\");\n const { chartArea } = chart;\n if (ctx) {\n ctx.save();\n ctx.fillStyle = chartAreaOptions.backgroundColor;\n // eslint-disable-next-line max-len\n ctx.fillRect(\n chartArea.left,\n chartArea.top,\n chartArea.right - chartArea.left,\n chartArea.bottom - chartArea.top\n );\n ctx.restore();\n }\n }\n },\n};\n","import {\n BarElement,\n CategoryScale,\n Chart as ChartJS,\n Legend,\n LinearScale,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport const stackedOptions = {\n scales: {\n x: {\n stacked: true,\n ticks: {\n major: {\n enabled: false,\n },\n },\n },\n y: {\n stacked: true,\n },\n },\n};\n\nexport const vertOptions = {\n indexAxis: \"x\" as const,\n plugins: {\n legend: {\n position: \"top\" as const,\n },\n },\n};\nexport const horizOptions = {\n indexAxis: \"y\" as const,\n plugins: {\n legend: {\n position: \"right\" as const,\n },\n },\n};\n\nexport interface SimpleBarProps extends BaseChartProps {\n direction?: \"vertical\" | \"horizontal\";\n stacked?: boolean;\n}\n\nexport function SimpleBar(props: SimpleBarProps) {\n const { direction = \"vertical\", stacked, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n preferNonNumericAsLabel: true,\n opacity: 1,\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Bar\n key={`${props.direction}${props.stacked}`}\n options={deepmerge.all([\n ...options,\n direction === \"vertical\" ? vertOptions : horizOptions,\n stacked ? stackedOptions : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect, useState } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleLineProps extends BaseChartProps {\n fill?: boolean;\n secondAxisField?: string;\n}\n\n// Force a re-mount when the secondAxisField is unset / re-set\n// https://app.shortcut.com/plasmic/story/38358/chart-component-issues-with-second-axis-field\nconst useKey = (secondAxisField?: string) => {\n const [key, setKey] = useState(0);\n\n // change key once when the secondAxisField is unset.\n if (!secondAxisField && key) {\n setKey(0);\n }\n\n // change key once when the secondAxisField value changes from undefined -> something\n if (secondAxisField && !key) {\n setKey(Math.random());\n }\n\n return key;\n};\n\nexport function SimpleLine(props: SimpleLineProps) {\n const { secondAxisField, fill, className } = props;\n const isClient = useIsClient();\n const key = useKey(props.secondAxisField);\n\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n extras: (field) => ({\n fill,\n pointRadius: 0,\n yAxisID: field === secondAxisField ? \"y1\" : \"y\",\n }),\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Line\n key={key}\n options={deepmerge.all([\n ...options,\n secondAxisField\n ? {\n scales: {\n y: {\n type: \"linear\" as const,\n display: true,\n position: \"left\" as const,\n },\n y1: {\n type: \"linear\" as const,\n display: true,\n position: \"right\" as const,\n grid: {\n drawOnChartArea: false,\n },\n },\n },\n }\n : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n Chart as ChartJS,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Scatter } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport type SimpleScatterProps = BaseChartProps;\n\nexport function SimpleScatter(props: SimpleScatterProps) {\n const { className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n LinearScale,\n PointElement,\n LineElement,\n Tooltip,\n Legend,\n Title\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, { isScatter: true, opacity: 1 });\n const options = prepOptions(props);\n\n return (\n <div className={className}>\n <Scatter\n options={deepmerge.all([\n ...options,\n {\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import React, { ReactElement } from \"react\";\nimport { SimpleBar, SimpleBarProps } from \"../simple-bar/SimpleBar\";\nimport { SimpleLine, SimpleLineProps } from \"../simple-line/SimpleLine\";\nimport {\n SimpleScatter,\n SimpleScatterProps,\n} from \"../simple-scatter/SimpleScatter\";\n\nexport type SimpleChartProps = {\n type?: \"bar\" | \"line\" | \"scatter\";\n} & (SimpleBarProps | SimpleLineProps | SimpleScatterProps);\n\nexport function SimpleChart(props: SimpleChartProps): ReactElement {\n switch (props.type ?? \"bar\") {\n case \"bar\":\n return <SimpleBar {...(props as any)} />;\n case \"line\":\n return <SimpleLine {...(props as any)} />;\n case \"scatter\":\n return <SimpleScatter {...(props as any)} />;\n }\n}\n","import { ComponentMeta, PropType } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\nconst fieldChoice: PropType<SimpleChartProps> = {\n type: \"choice\",\n options: (props: SimpleChartProps) =>\n props.data?.[0] ? Object.keys(props.data[0]) : [],\n} as const;\nconst simpleChartMeta: ComponentMeta<SimpleChartProps> = {\n name: \"hostless-react-chartjs-2-simple-chart\",\n displayName: \"Chart\",\n props: {\n type: {\n type: \"choice\",\n options: [\n {\n value: \"bar\",\n label: \"Bar\",\n },\n {\n value: \"line\",\n label: \"Line\",\n },\n {\n value: \"scatter\",\n label: \"Scatter\",\n },\n ],\n defaultValueHint: \"bar\",\n },\n data: {\n type: \"exprEditor\",\n description: \"The data as an array of objects\",\n defaultExpr: JSON.stringify([\n {\n region: \"APAC\",\n revenue: 3294,\n spend: 2675,\n },\n {\n region: \"EMEA\",\n revenue: 3245,\n spend: 3895,\n },\n {\n region: \"LATAM\",\n revenue: 2165,\n spend: 3498,\n },\n {\n region: \"AMER\",\n revenue: 3215,\n spend: 1656,\n },\n ]),\n },\n labelField: {\n ...fieldChoice,\n hidden: (props) => props.type === \"scatter\",\n },\n title: \"string\",\n interactive: {\n type: \"boolean\",\n },\n // Bar chart\n direction: {\n type: \"choice\",\n options: [\"horizontal\", \"vertical\"].map((dir) => ({\n value: dir,\n label: dir[0].toUpperCase() + dir.slice(1),\n })),\n defaultValueHint: \"Vertical\",\n hidden: (props) => props.type !== \"bar\",\n },\n stacked: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"bar\",\n },\n // Line chart\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\n },\n secondAxisField: {\n ...fieldChoice,\n hidden: (props) => props.type !== \"line\",\n },\n\n // TODO\n // datasets: {\n // type: \"array\",\n // unstable__keyFunc: (x) => x.key,\n // unstable__minimalValue: (_props, ctx) => null,\n // itemType: {\n // type: \"object\",\n // fields: {\n // label: \"string\",\n // fieldId: \"string\",\n // hidden: {\n // type: \"boolean\",\n // },\n // },\n // },\n // },\n },\n\n defaultStyles: {\n width: \"stretch\",\n },\n\n importName: \"SimpleChart\",\n importPath: \"@plasmicpkgs/react-chartjs-2\",\n};\n\nexport function registerSimpleChart(loader?: Registerable) {\n registerComponentHelper(loader, SimpleChart, simpleChartMeta);\n}\n","import { registerSimpleChart } from \"./simple-chart\";\nimport { Registerable } from \"./utils\";\n\nexport { SimpleChart } from \"./simple-chart\";\n\nexport function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n"],"names":["registerComponentHelper","loader","component","meta","registerComponent","baseOptions","responsive","chartArea","defaultColors","useIsClient","_useState","useState","loaded","setLoaded","useEffect","range","total","Array","from","keys","getDefaultColor","index","opacity","preferredStart","end","length","start","Math","max","min","stops","map","_","i","round","selected","undefined","replace","prepData","_ref","_temp","data","_ref$data","labelField","chosenFields","scatterSeries","_ref2","isScatter","preferNonNumericAsLabel","extras","fields","Object","_data$","isFieldAllNumericOrNil","Map","key","every","item","_item$key","isNaN","realLabelField","find","field","get","numericFields","filter","_scatterSeries","_scatterSeries2","name","datasets","series","_scatterSeries3","_extends","label","_item$series$fields$","_item$series$fields$2","x","y","backgroundColor","autoChosenFields","labels","_item$key2","borderWidth","borderColor","prepOptions","_ref3","interactive","_ref3$interactive","title","interaction","mode","intersect","plugins","display","text","ChartAreaPlugin","id","beforeDraw","chart","chartAreaOptions","config","options","ctx","canvas","getContext","save","fillStyle","fillRect","left","top","right","bottom","restore","stackedOptions","scales","stacked","ticks","major","enabled","vertOptions","indexAxis","legend","position","horizOptions","SimpleBar","props","_props$direction","direction","className","isClient","ChartJS","register","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","normalized","React","Bar","deepmerge","all","concat","useKey","secondAxisField","setKey","random","SimpleLine","fill","PointElement","LineElement","Filler","pointRadius","yAxisID","Line","type","y1","grid","drawOnChartArea","SimpleScatter","Scatter","beginAtZero","SimpleChart","_props$type","fieldChoice","_props$data","simpleChartMeta","displayName","value","defaultValueHint","description","defaultExpr","JSON","stringify","region","revenue","spend","hidden","dir","toUpperCase","slice","defaultStyles","width","importName","importPath","registerSimpleChart","registerAll"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { BaseChartProps } from "../common";
|
|
3
|
-
export
|
|
4
|
-
}
|
|
3
|
+
export declare type SimpleScatterProps = BaseChartProps;
|
|
5
4
|
export declare function SimpleScatter(props: SimpleScatterProps): React.JSX.Element | null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plasmicpkgs/react-chartjs-2",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.68",
|
|
4
4
|
"description": "Chart.js 2.x components for React",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"analyze": "size-limit --why"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@plasmicapp/data-sources": "0.1.
|
|
31
|
+
"@plasmicapp/data-sources": "0.1.123",
|
|
32
32
|
"@plasmicapp/host": "1.0.168",
|
|
33
33
|
"@size-limit/preset-small-lib": "^4.11.0",
|
|
34
34
|
"@types/node": "^14.0.26",
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"deepmerge": "^4.3.1"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "6e966ef24adb9af472b56a5051faf2b8e6e04f12"
|
|
56
56
|
}
|