@plasmicpkgs/react-chartjs-2 1.0.6 → 1.0.8

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.
@@ -12,14 +12,6 @@ var chart_js = require('chart.js');
12
12
  var deepmerge = _interopDefault(require('deepmerge'));
13
13
  var reactChartjs2 = require('react-chartjs-2');
14
14
 
15
- function registerComponentHelper(loader, component, meta) {
16
- if (loader) {
17
- loader.registerComponent(component, meta);
18
- } else {
19
- registerComponent(component, meta);
20
- }
21
- }
22
-
23
15
  function _extends() {
24
16
  _extends = Object.assign ? Object.assign.bind() : function (target) {
25
17
  for (var i = 1; i < arguments.length; i++) {
@@ -35,6 +27,14 @@ function _extends() {
35
27
  return _extends.apply(this, arguments);
36
28
  }
37
29
 
30
+ function registerComponentHelper(loader, component, meta) {
31
+ if (loader) {
32
+ loader.registerComponent(component, meta);
33
+ } else {
34
+ registerComponent(component, meta);
35
+ }
36
+ }
37
+
38
38
  var baseOptions = {
39
39
  responsive: true,
40
40
  chartArea: {
@@ -334,6 +334,13 @@ function SimpleChart(props) {
334
334
  }
335
335
  }
336
336
 
337
+ var fieldChoice = {
338
+ type: "choice",
339
+ options: function options(props) {
340
+ var _props$data;
341
+ return (_props$data = props.data) != null && _props$data[0] ? Object.keys(props.data[0]) : [];
342
+ }
343
+ };
337
344
  var simpleChartMeta = {
338
345
  name: "hostless-react-chartjs-2-simple-chart",
339
346
  displayName: "Chart",
@@ -373,23 +380,47 @@ var simpleChartMeta = {
373
380
  spend: 1656
374
381
  }])
375
382
  },
376
- labelField: {
377
- type: "choice",
383
+ labelField: /*#__PURE__*/_extends({}, fieldChoice, {
378
384
  hidden: function hidden(props) {
379
385
  return props.type === "scatter";
380
- },
381
- options: function options(props) {
382
- var _props$data;
383
- return (_props$data = props.data) != null && _props$data[0] ? Object.keys(props.data[0]) : [];
384
386
  }
385
- },
387
+ }),
386
388
  title: "string",
389
+ interactive: {
390
+ type: "boolean"
391
+ },
392
+ // Bar chart
393
+ direction: {
394
+ type: "choice",
395
+ options: /*#__PURE__*/["horizontal", "vertical"].map(function (dir) {
396
+ return {
397
+ value: dir,
398
+ label: dir[0].toUpperCase() + dir.slice(1)
399
+ };
400
+ }),
401
+ defaultValueHint: "Vertical",
402
+ hidden: function hidden(props) {
403
+ return props.type !== "bar";
404
+ }
405
+ },
406
+ stacked: {
407
+ type: "boolean",
408
+ hidden: function hidden(props) {
409
+ return props.type !== "bar";
410
+ }
411
+ },
412
+ // Line chart
387
413
  fill: {
388
414
  type: "boolean",
389
415
  hidden: function hidden(props) {
390
416
  return props.type !== "line";
391
417
  }
392
- }
418
+ },
419
+ secondAxisField: /*#__PURE__*/_extends({}, fieldChoice, {
420
+ hidden: function hidden(props) {
421
+ return props.type !== "line";
422
+ }
423
+ })
393
424
  },
394
425
  defaultStyles: {
395
426
  width: "stretch"
@@ -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 } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\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\" as any,\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 type: \"choice\",\n hidden: (props) => props.type === \"scatter\",\n options: (props) => (props.data?.[0] ? Object.keys(props.data[0]) : []),\n },\n title: \"string\",\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\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/dist/simple-chart/SimpleChart\",\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 function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n"],"names":["registerComponentHelper","loader","component","meta","registerComponent","baseOptions","responsive","chartArea","defaultColors","useIsClient","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","data","labelField","chosenFields","scatterSeries","isScatter","preferNonNumericAsLabel","extras","fields","Object","isFieldAllNumericOrNil","Map","key","every","item","isNaN","realLabelField","find","field","get","numericFields","filter","name","datasets","series","label","x","y","backgroundColor","autoChosenFields","labels","borderWidth","borderColor","prepOptions","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","direction","className","isClient","ChartJS","register","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","normalized","React","Bar","deepmerge","all","SimpleLine","secondAxisField","fill","PointElement","LineElement","Filler","pointRadius","yAxisID","Line","type","y1","grid","drawOnChartArea","SimpleScatter","console","log","Scatter","beginAtZero","SimpleChart","simpleChartMeta","displayName","value","defaultValueHint","description","defaultExpr","JSON","stringify","region","revenue","spend","hidden","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 ? { 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\" as any,\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/dist/simple-chart/SimpleChart\",\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 function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n"],"names":["registerComponentHelper","loader","component","meta","registerComponent","baseOptions","responsive","chartArea","defaultColors","useIsClient","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","data","labelField","chosenFields","scatterSeries","isScatter","preferNonNumericAsLabel","extras","fields","Object","isFieldAllNumericOrNil","Map","key","every","item","isNaN","realLabelField","find","field","get","numericFields","filter","name","datasets","series","label","x","y","backgroundColor","autoChosenFields","labels","borderWidth","borderColor","prepOptions","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","direction","className","isClient","ChartJS","register","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","normalized","React","Bar","deepmerge","all","SimpleLine","secondAxisField","fill","PointElement","LineElement","Filler","pointRadius","yAxisID","Line","type","y1","grid","drawOnChartArea","SimpleScatter","console","log","Scatter","beginAtZero","SimpleChart","fieldChoice","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"),l=e(require("deepmerge")),i=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)),l=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))})),i=c[l[e%l.length]];return void 0===r?i:i.replace("1.0",""+r)}function f(e,t){var r,n,a,l=e.data,i=void 0===l?[]:l,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=i[0])?r:{}),y=new Map(g.map((function(e){return[e,i.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],E=g.filter((function(e){return y.get(e)}));if(f)return{datasets:(null!=(a=u=f?null!=(n=u)?n:[{name:E[0]+"-"+E[1],fields:[E[0],E[1]]}]:void 0)?a:[]).map((function(e,t){var r;return o({},null==v?void 0:v(e.name),{label:e.name,data:i.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=E.filter((function(e){return e!==b}));return{labels:b?i.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:i.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?{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={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(i.Bar,{options:l.all([].concat(b,["vertical"===o?g:y,s?m:{}])),data:p}))}function E(e){var t=e.secondAxisField,o=e.fill,s=e.className,c=u();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 d=f(e,{extras:function(e){return{fill:o,pointRadius:0,yAxisID:e===t?"y1":"y"}}}),p=h(e);return n.createElement("div",{className:s},n.createElement(i.Line,{options:l.all([].concat(p,[t?{scales:{y:{type:"linear",display:!0,position:"left"},y1:{type:"linear",display:!0,position:"right",grid:{drawOnChartArea:!1}}}}:{}])),data:d}))}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)}),[]),!o)return null;var s=f(e,{isScatter:!0,opacity:1}),c=h(e);return console.log("!!",s,c),n.createElement("div",{className:t},n.createElement(i.Scatter,{options:l.all([].concat(c,[{scales:{y:{beginAtZero:!0}}}])),data:s}))}function C(e){var t;switch(null!=(t=e.type)?t:"bar"){case"bar":return n.createElement(b,Object.assign({},e));case"line":return n.createElement(E,Object.assign({},e));case"scatter":return n.createElement(A,Object.assign({},e))}}var x={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:{type:"choice",hidden:function(e){return"scatter"===e.type},options:function(e){var t;return null!=(t=e.data)&&t[0]?Object.keys(e.data[0]):[]}},title:"string",fill:{type:"boolean",hidden:function(e){return"line"!==e.type}}},defaultStyles:{width:"stretch"},importName:"SimpleChart",importPath:"@plasmicpkgs/react-chartjs-2/dist/simple-chart/SimpleChart"};exports.registerAll=function(e){!function(e){!function(e,r,n){e?e.registerComponent(r,n):t(r,n)}(e,C,x)}(e)};
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],E=g.filter((function(e){return y.get(e)}));if(f)return{datasets:(null!=(a=u=f?null!=(n=u)?n:[{name:E[0]+"-"+E[1],fields:[E[0],E[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=E.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?{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={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,{options:i.all([].concat(b,["vertical"===o?g:y,s?m:{}])),data:p}))}function E(e){var t=e.secondAxisField,o=e.fill,s=e.className,c=u();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 d=f(e,{extras:function(e){return{fill:o,pointRadius:0,yAxisID:e===t?"y1":"y"}}}),p=h(e);return n.createElement("div",{className:s},n.createElement(l.Line,{options:i.all([].concat(p,[t?{scales:{y:{type:"linear",display:!0,position:"left"},y1:{type:"linear",display:!0,position:"right",grid:{drawOnChartArea:!1}}}}:{}])),data:d}))}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)}),[]),!o)return null;var s=f(e,{isScatter:!0,opacity:1}),c=h(e);return console.log("!!",s,c),n.createElement("div",{className:t},n.createElement(l.Scatter,{options:i.all([].concat(c,[{scales:{y:{beginAtZero:!0}}}])),data:s}))}function C(e){var t;switch(null!=(t=e.type)?t:"bar"){case"bar":return n.createElement(b,Object.assign({},e));case"line":return n.createElement(E,Object.assign({},e));case"scatter":return n.createElement(A,Object.assign({},e))}}var x={type:"choice",options:function(e){var t;return null!=(t=e.data)&&t[0]?Object.keys(e.data[0]):[]}},j={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({},x,{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({},x,{hidden:function(e){return"line"!==e.type}})},defaultStyles:{width:"stretch"},importName:"SimpleChart",importPath:"@plasmicpkgs/react-chartjs-2/dist/simple-chart/SimpleChart"};exports.registerAll=function(e){!function(e){!function(e,r,n){e?e.registerComponent(r,n):t(r,n)}(e,C,j)}(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 } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\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\" as any,\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 type: \"choice\",\n hidden: (props) => props.type === \"scatter\",\n options: (props) => (props.data?.[0] ? Object.keys(props.data[0]) : []),\n },\n title: \"string\",\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\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/dist/simple-chart/SimpleChart\",\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 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","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","data","labelField","chosenFields","scatterSeries","isScatter","preferNonNumericAsLabel","extras","fields","Object","isFieldAllNumericOrNil","Map","key","every","item","isNaN","realLabelField","find","field","get","numericFields","filter","datasets","name","series","label","x","y","backgroundColor","autoChosenFields","labels","borderWidth","borderColor","prepOptions","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","direction","className","isClient","ChartJS","register","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","normalized","React","Bar","deepmerge","all","SimpleLine","secondAxisField","fill","PointElement","LineElement","Filler","pointRadius","yAxisID","Line","type","y1","grid","drawOnChartArea","SimpleScatter","console","log","Scatter","beginAtZero","SimpleChart","simpleChartMeta","displayName","value","defaultValueHint","description","defaultExpr","JSON","stringify","region","revenue","spend","hidden","_props$data","defaultStyles","width","importName","importPath","loader","component","meta","registerComponent","registerComponentHelper","registerSimpleChart"],"mappings":"ikBAGO,IAAMA,EAAc,CACzBC,YAAY,EACZC,UAAW,IAQAC,EAAgB,CAC3B,uBACA,uBACA,uBACA,uBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,yBAGF,SAAgBC,IACd,MAA4BC,YAAS,GAA9BC,OAAQC,OAIf,OAHAC,aAAU,WACRD,GAAU,MAELD,EAoBT,SAASG,EAAMC,GACb,OAAOC,MAAMC,KAAKD,MAAMD,GAAOG,QAYjC,SAAgBC,EACdC,EACAL,EACAM,GAEA,IACMC,EAAMd,EAAce,OAAS,EAC7BC,EAAQC,KAAKC,IAAI,EAAGD,KAAKE,IAFR,EAE4BL,EAAMP,IACnDa,EACJb,EAAQP,EAAce,OAClBT,EAAMN,EAAce,QACpBT,EAAMC,GAAOc,KAAI,SAACC,EAAGC,GAAC,OACpBN,KAAKO,MACHR,GAAST,EAAQ,EAAM,EAAMgB,GAAMhB,EAAQ,IAAOO,EAAME,GAAS,OAGrES,EAAWzB,EAAcoB,EAAMR,EAAQQ,EAAML,SACnD,YAAgBW,IAAZb,EACKY,EAEFA,EAASE,QAAQ,MAAO,GAAKd,YAGtBe,qBACZC,KAAAA,aAAO,KAAIC,IAAAA,WAAYC,IAAAA,aAAcC,IAAAA,2BACiC,KAAtEC,IAAAA,UAAWC,IAAAA,wBAAyBC,IAAAA,OAAQtB,IAAAA,QAExCuB,EAASC,OAAO3B,cAAKmB,EAAK,MAAM,IAChCS,EAAyB,IAAIC,IACjCH,EAAOf,KAAI,SAACmB,GAAG,MAAK,CAACA,EAAKX,EAAKY,OAAM,SAACC,GAAI,MAAA,OAAMC,eAAMD,EAAKF,MAAQ,WAE/DI,QACJd,EAAAA,EACCI,EACGE,EAAOS,MAAK,SAACC,GAAK,OAAMR,EAAuBS,IAAID,MACnDV,EAAO,GACPY,EAAgBZ,EAAOa,QAAO,SAACH,GAAK,OACxCR,EAAuBS,IAAID,MAE7B,GAAIb,EASF,MAAO,CACLiB,mBATFlB,EAAgBC,WACZD,KAAiB,CACf,CACEmB,KAASH,EAAc,OAAMA,EAAc,GAC3CZ,OAAQ,CAACY,EAAc,GAAIA,EAAc,WAG7CtB,KAE0B,IAAIL,KAAI,SAAC+B,EAAQxC,GAAK,MAAA,kBAC7CuB,SAAAA,EAASiB,EAAOD,OACnBE,MAAOD,EAAOD,KACdtB,KAAMA,EAAKR,KAAI,SAACqB,GAAI,QAAA,MAAM,CACxBY,WAAGZ,EAAKU,EAAOhB,OAAO,OAAO,EAC7BmB,WAAGb,EAAKU,EAAOhB,OAAO,OAAO,MAE/BoB,gBAAiB7C,EACfC,YACCoB,KAAiB,IAAIjB,OACtBF,SAKN,IAAM4C,EAAmBT,EAAcC,QACrC,SAACH,GAAK,OAAKA,IAAUF,KAEvB,MAAO,CACLc,OAAQd,EACJf,EAAKR,KAAI,SAACqB,GAAI,OAAKA,EAAKE,WACxBlB,EACJwB,gBAAWnB,EAAAA,EAAgB0B,GAAkBpC,KAAI,SAACmB,EAAK5B,GACrD,kBACKuB,SAAAA,EAASK,IACZa,MAAOb,EACPX,KAAMA,EAAKR,KAAI,SAACqB,GAAI,MAAA,gBAAKA,EAAKF,MAAQ,KACtCgB,gBAAiB7C,EACfC,SACCmB,EAAAA,EAAgB0B,GAAkB1C,OACnC,GAEF4C,YAAa,EACbC,YAAajD,EACXC,SACCmB,EAAAA,EAAgB0B,GAAkB1C,OACnC,kBAmBI8C,aAAcC,YAAoBC,IAAAA,MAChD,MAAO,CACLlE,gBAEI,CACEmE,YAAa,CACXC,KAAM,QACNC,WAAW,IAGf,GACJH,EAAQ,CAAEA,MAAO,CAAEI,SAAS,EAAMC,KAAML,IAAY,IAIxD,IAAaM,EAA0B,CACrCC,GAAI,kBAEJC,WAAY,SAACC,GACX,IAAMC,EAAoBD,EAAME,OAAOC,QAAgB5E,UACvD,GAAI0E,GAAoBA,EAAiBjB,gBAAiB,CACxD,IAAMoB,EAAMJ,EAAMK,OAAOC,WAAW,MAC5B/E,EAAcyE,EAAdzE,UACJ6E,IACFA,EAAIG,OACJH,EAAII,UAAYP,EAAiBjB,gBAEjCoB,EAAIK,SACFlF,EAAUmF,KACVnF,EAAUoF,IACVpF,EAAUqF,MAAQrF,EAAUmF,KAC5BnF,EAAUsF,OAAStF,EAAUoF,KAE/BP,EAAIU,cC3LCC,EAAiB,CAC5BC,OAAQ,CACNlC,EAAG,CACDmC,SAAS,EACTC,MAAO,CACLC,MAAO,CACLC,SAAS,KAIfrC,EAAG,CACDkC,SAAS,KAKFI,EAAc,CACzBC,QAAS,CACPC,OAAQ,CACNC,SAAU,SAIHC,EAAe,CAC1BC,UAAW,IACXJ,QAAS,CACPC,OAAQ,CACNC,SAAU,oBAUAG,EAAUC,GACxB,MAAuDA,EAA/CC,UAAAA,aAAY,aAAYZ,EAAuBW,EAAvBX,QAASa,EAAcF,EAAdE,UACnCC,EAAWtG,IAYjB,GAXAI,aAAU,WACRmG,QAAQC,SACNpC,EACAqC,gBACAC,cACAC,aACAC,QACAC,UACAC,YAED,KACER,EACH,OAAO,KAET,IAAMS,EAAapF,EAASwE,EAAO,CACjClE,yBAAyB,EACzBrB,QAAS,IAEL8D,EAAUd,EAAYuC,GAC5B,OACEa,uBAAKX,UAAWA,GACdW,gBAACC,OACCvC,QAASwC,EAAUC,cACdzC,GACW,aAAd0B,EAA2BR,EAAcI,EACzCR,EAAUF,EAAiB,MAE7B1D,KAAMmF,cC5DEK,EAAWjB,GACzB,IAAQkB,EAAqClB,EAArCkB,gBAAiBC,EAAoBnB,EAApBmB,KAAMjB,EAAcF,EAAdE,UACzBC,EAAWtG,IAcjB,GAbAI,aAAU,WACRmG,QAAQC,SACNpC,EACAqC,gBACAC,cACAa,eACAC,cACAZ,QACAC,UACAY,SACAX,YAED,KACER,EACH,OAAO,KAET,IAAMS,EAAapF,EAASwE,EAAO,CACjCjE,OAAQ,SAACW,GAAK,MAAM,CAClByE,KAAAA,EACAI,YAAa,EACbC,QAAS9E,IAAUwE,EAAkB,KAAO,QAG1C3C,EAAUd,EAAYuC,GAC5B,OACEa,uBAAKX,UAAWA,GACdW,gBAACY,QACClD,QAASwC,EAAUC,cACdzC,GACH2C,EACI,CACE9B,OAAQ,CACNjC,EAAG,CACDuE,KAAM,SACN3D,SAAS,EACT6B,SAAU,QAEZ+B,GAAI,CACFD,KAAM,SACN3D,SAAS,EACT6B,SAAU,QACVgC,KAAM,CACJC,iBAAiB,MAKzB,MAENpG,KAAMmF,cC1DEkB,EAAc9B,GAC5B,IAAQE,EAAcF,EAAdE,UACFC,EAAWtG,IAWjB,GAVAI,aAAU,WACRmG,QAAQC,SACNpC,EACAsC,cACAa,eACAC,cACAX,UACAC,YAED,KACER,EACH,OAAO,KAET,IAAMS,EAAapF,EAASwE,EAAO,CAAEnE,WAAW,EAAMpB,QAAS,IACzD8D,EAAUd,EAAYuC,GAE5B,OADA+B,QAAQC,IAAI,KAAMpB,EAAYrC,GAE5BsC,uBAAKX,UAAWA,GACdW,gBAACoB,WACC1D,QAASwC,EAAUC,cACdzC,GACH,CACEa,OAAQ,CACNjC,EAAG,CACD+E,aAAa,QAKrBzG,KAAMmF,cCzCEuB,EAAYnC,SAC1B,gBAAQA,EAAM0B,QAAQ,OACpB,IAAK,MACH,OAAOb,gBAACd,mBAAeC,IACzB,IAAK,OACH,OAAOa,gBAACI,mBAAgBjB,IAC1B,IAAK,UACH,OAAOa,gBAACiB,mBAAmB9B,SCZ3BoC,EAAmD,CACvDrF,KAAM,wCACNsF,YAAa,QACbrC,MAAO,CACL0B,KAAM,CACJA,KAAM,SACNnD,QAAS,CACP,CACE+D,MAAO,MACPrF,MAAO,OAET,CACEqF,MAAO,OACPrF,MAAO,QAET,CACEqF,MAAO,UACPrF,MAAO,YAGXsF,iBAAkB,OAEpB9G,KAAM,CACJiG,KAAM,aACNc,YAAa,kCACbC,YAAaC,KAAKC,UAAU,CAC1B,CACEC,OAAQ,OACRC,QAAS,KACTC,MAAO,MAET,CACEF,OAAQ,OACRC,QAAS,KACTC,MAAO,MAET,CACEF,OAAQ,QACRC,QAAS,KACTC,MAAO,MAET,CACEF,OAAQ,OACRC,QAAS,KACTC,MAAO,SAIbpH,WAAY,CACVgG,KAAM,SACNqB,OAAQ,SAAC/C,GAAK,MAAoB,YAAfA,EAAM0B,MACzBnD,QAAS,SAACyB,GAAK,MAAA,gBAAMA,EAAMvE,OAANuH,EAAa,GAAK/G,OAAO3B,KAAK0F,EAAMvE,KAAK,IAAM,KAEtEkC,MAAO,SACPwD,KAAM,CACJO,KAAM,UACNqB,OAAQ,SAAC/C,GAAK,MAAoB,SAAfA,EAAM0B,QAoB7BuB,cAAe,CACbC,MAAO,WAGTC,WAAY,cACZC,WAAY,2FCrFcC,aDwFQA,aEnDlCA,EACAC,EACAC,GAEIF,EACFA,EAAOG,kBAAkBF,EAAWC,GAEpCC,EAAkBF,EAAWC,GF6C/BE,CAAwBJ,EAAQlB,EAAaC,GCxF7CsB,CAAoBL"}
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\" as any,\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/dist/simple-chart/SimpleChart\",\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 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","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","data","labelField","chosenFields","scatterSeries","isScatter","preferNonNumericAsLabel","extras","fields","Object","isFieldAllNumericOrNil","Map","key","every","item","isNaN","realLabelField","find","field","get","numericFields","filter","datasets","name","series","label","x","y","backgroundColor","autoChosenFields","labels","borderWidth","borderColor","prepOptions","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","direction","className","isClient","ChartJS","register","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","normalized","React","Bar","deepmerge","all","SimpleLine","secondAxisField","fill","PointElement","LineElement","Filler","pointRadius","yAxisID","Line","type","y1","grid","drawOnChartArea","SimpleScatter","console","log","Scatter","beginAtZero","SimpleChart","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":"ikBAGO,IAAMA,EAAc,CACzBC,YAAY,EACZC,UAAW,IAQAC,EAAgB,CAC3B,uBACA,uBACA,uBACA,uBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,yBAGF,SAAgBC,IACd,MAA4BC,YAAS,GAA9BC,OAAQC,OAIf,OAHAC,aAAU,WACRD,GAAU,MAELD,EAoBT,SAASG,EAAMC,GACb,OAAOC,MAAMC,KAAKD,MAAMD,GAAOG,QAYjC,SAAgBC,EACdC,EACAL,EACAM,GAEA,IACMC,EAAMd,EAAce,OAAS,EAC7BC,EAAQC,KAAKC,IAAI,EAAGD,KAAKE,IAFR,EAE4BL,EAAMP,IACnDa,EACJb,EAAQP,EAAce,OAClBT,EAAMN,EAAce,QACpBT,EAAMC,GAAOc,KAAI,SAACC,EAAGC,GAAC,OACpBN,KAAKO,MACHR,GAAST,EAAQ,EAAM,EAAMgB,GAAMhB,EAAQ,IAAOO,EAAME,GAAS,OAGrES,EAAWzB,EAAcoB,EAAMR,EAAQQ,EAAML,SACnD,YAAgBW,IAAZb,EACKY,EAEFA,EAASE,QAAQ,MAAO,GAAKd,YAGtBe,qBACZC,KAAAA,aAAO,KAAIC,IAAAA,WAAYC,IAAAA,aAAcC,IAAAA,2BACiC,KAAtEC,IAAAA,UAAWC,IAAAA,wBAAyBC,IAAAA,OAAQtB,IAAAA,QAExCuB,EAASC,OAAO3B,cAAKmB,EAAK,MAAM,IAChCS,EAAyB,IAAIC,IACjCH,EAAOf,KAAI,SAACmB,GAAG,MAAK,CAACA,EAAKX,EAAKY,OAAM,SAACC,GAAI,MAAA,OAAMC,eAAMD,EAAKF,MAAQ,WAE/DI,QACJd,EAAAA,EACCI,EACGE,EAAOS,MAAK,SAACC,GAAK,OAAMR,EAAuBS,IAAID,MACnDV,EAAO,GACPY,EAAgBZ,EAAOa,QAAO,SAACH,GAAK,OACxCR,EAAuBS,IAAID,MAE7B,GAAIb,EASF,MAAO,CACLiB,mBATFlB,EAAgBC,WACZD,KAAiB,CACf,CACEmB,KAASH,EAAc,OAAMA,EAAc,GAC3CZ,OAAQ,CAACY,EAAc,GAAIA,EAAc,WAG7CtB,KAE0B,IAAIL,KAAI,SAAC+B,EAAQxC,GAAK,MAAA,kBAC7CuB,SAAAA,EAASiB,EAAOD,OACnBE,MAAOD,EAAOD,KACdtB,KAAMA,EAAKR,KAAI,SAACqB,GAAI,QAAA,MAAM,CACxBY,WAAGZ,EAAKU,EAAOhB,OAAO,OAAO,EAC7BmB,WAAGb,EAAKU,EAAOhB,OAAO,OAAO,MAE/BoB,gBAAiB7C,EACfC,YACCoB,KAAiB,IAAIjB,OACtBF,SAKN,IAAM4C,EAAmBT,EAAcC,QACrC,SAACH,GAAK,OAAKA,IAAUF,KAEvB,MAAO,CACLc,OAAQd,EACJf,EAAKR,KAAI,SAACqB,GAAI,OAAKA,EAAKE,WACxBlB,EACJwB,gBAAWnB,EAAAA,EAAgB0B,GAAkBpC,KAAI,SAACmB,EAAK5B,GACrD,kBACKuB,SAAAA,EAASK,IACZa,MAAOb,EACPX,KAAMA,EAAKR,KAAI,SAACqB,GAAI,MAAA,gBAAKA,EAAKF,MAAQ,KACtCgB,gBAAiB7C,EACfC,SACCmB,EAAAA,EAAgB0B,GAAkB1C,OACnC,GAEF4C,YAAa,EACbC,YAAajD,EACXC,SACCmB,EAAAA,EAAgB0B,GAAkB1C,OACnC,kBAmBI8C,aAAcC,YAAoBC,IAAAA,MAChD,MAAO,CACLlE,gBAEI,CACEmE,YAAa,CACXC,KAAM,QACNC,WAAW,IAGf,GACJH,EAAQ,CAAEA,MAAO,CAAEI,SAAS,EAAMC,KAAML,IAAY,IAIxD,IAAaM,EAA0B,CACrCC,GAAI,kBAEJC,WAAY,SAACC,GACX,IAAMC,EAAoBD,EAAME,OAAOC,QAAgB5E,UACvD,GAAI0E,GAAoBA,EAAiBjB,gBAAiB,CACxD,IAAMoB,EAAMJ,EAAMK,OAAOC,WAAW,MAC5B/E,EAAcyE,EAAdzE,UACJ6E,IACFA,EAAIG,OACJH,EAAII,UAAYP,EAAiBjB,gBAEjCoB,EAAIK,SACFlF,EAAUmF,KACVnF,EAAUoF,IACVpF,EAAUqF,MAAQrF,EAAUmF,KAC5BnF,EAAUsF,OAAStF,EAAUoF,KAE/BP,EAAIU,cC3LCC,EAAiB,CAC5BC,OAAQ,CACNlC,EAAG,CACDmC,SAAS,EACTC,MAAO,CACLC,MAAO,CACLC,SAAS,KAIfrC,EAAG,CACDkC,SAAS,KAKFI,EAAc,CACzBC,QAAS,CACPC,OAAQ,CACNC,SAAU,SAIHC,EAAe,CAC1BC,UAAW,IACXJ,QAAS,CACPC,OAAQ,CACNC,SAAU,oBAUAG,EAAUC,GACxB,MAAuDA,EAA/CC,UAAAA,aAAY,aAAYZ,EAAuBW,EAAvBX,QAASa,EAAcF,EAAdE,UACnCC,EAAWtG,IAYjB,GAXAI,aAAU,WACRmG,QAAQC,SACNpC,EACAqC,gBACAC,cACAC,aACAC,QACAC,UACAC,YAED,KACER,EACH,OAAO,KAET,IAAMS,EAAapF,EAASwE,EAAO,CACjClE,yBAAyB,EACzBrB,QAAS,IAEL8D,EAAUd,EAAYuC,GAC5B,OACEa,uBAAKX,UAAWA,GACdW,gBAACC,OACCvC,QAASwC,EAAUC,cACdzC,GACW,aAAd0B,EAA2BR,EAAcI,EACzCR,EAAUF,EAAiB,MAE7B1D,KAAMmF,cC5DEK,EAAWjB,GACzB,IAAQkB,EAAqClB,EAArCkB,gBAAiBC,EAAoBnB,EAApBmB,KAAMjB,EAAcF,EAAdE,UACzBC,EAAWtG,IAcjB,GAbAI,aAAU,WACRmG,QAAQC,SACNpC,EACAqC,gBACAC,cACAa,eACAC,cACAZ,QACAC,UACAY,SACAX,YAED,KACER,EACH,OAAO,KAET,IAAMS,EAAapF,EAASwE,EAAO,CACjCjE,OAAQ,SAACW,GAAK,MAAM,CAClByE,KAAAA,EACAI,YAAa,EACbC,QAAS9E,IAAUwE,EAAkB,KAAO,QAG1C3C,EAAUd,EAAYuC,GAC5B,OACEa,uBAAKX,UAAWA,GACdW,gBAACY,QACClD,QAASwC,EAAUC,cACdzC,GACH2C,EACI,CACE9B,OAAQ,CACNjC,EAAG,CACDuE,KAAM,SACN3D,SAAS,EACT6B,SAAU,QAEZ+B,GAAI,CACFD,KAAM,SACN3D,SAAS,EACT6B,SAAU,QACVgC,KAAM,CACJC,iBAAiB,MAKzB,MAENpG,KAAMmF,cC1DEkB,EAAc9B,GAC5B,IAAQE,EAAcF,EAAdE,UACFC,EAAWtG,IAWjB,GAVAI,aAAU,WACRmG,QAAQC,SACNpC,EACAsC,cACAa,eACAC,cACAX,UACAC,YAED,KACER,EACH,OAAO,KAET,IAAMS,EAAapF,EAASwE,EAAO,CAAEnE,WAAW,EAAMpB,QAAS,IACzD8D,EAAUd,EAAYuC,GAE5B,OADA+B,QAAQC,IAAI,KAAMpB,EAAYrC,GAE5BsC,uBAAKX,UAAWA,GACdW,gBAACoB,WACC1D,QAASwC,EAAUC,cACdzC,GACH,CACEa,OAAQ,CACNjC,EAAG,CACD+E,aAAa,QAKrBzG,KAAMmF,cCzCEuB,EAAYnC,SAC1B,gBAAQA,EAAM0B,QAAQ,OACpB,IAAK,MACH,OAAOb,gBAACd,mBAAeC,IACzB,IAAK,OACH,OAAOa,gBAACI,mBAAgBjB,IAC1B,IAAK,UACH,OAAOa,gBAACiB,mBAAmB9B,SCZ3BoC,EAA0C,CAC9CV,KAAM,SACNnD,QAAS,SAACyB,GAAuB,MAAA,gBAC/BA,EAAMvE,OAAN4G,EAAa,GAAKpG,OAAO3B,KAAK0F,EAAMvE,KAAK,IAAM,KAE7C6G,EAAmD,CACvDvF,KAAM,wCACNwF,YAAa,QACbvC,MAAO,CACL0B,KAAM,CACJA,KAAM,SACNnD,QAAS,CACP,CACEiE,MAAO,MACPvF,MAAO,OAET,CACEuF,MAAO,OACPvF,MAAO,QAET,CACEuF,MAAO,UACPvF,MAAO,YAGXwF,iBAAkB,OAEpBhH,KAAM,CACJiG,KAAM,aACNgB,YAAa,kCACbC,YAAaC,KAAKC,UAAU,CAC1B,CACEC,OAAQ,OACRC,QAAS,KACTC,MAAO,MAET,CACEF,OAAQ,OACRC,QAAS,KACTC,MAAO,MAET,CACEF,OAAQ,QACRC,QAAS,KACTC,MAAO,MAET,CACEF,OAAQ,OACRC,QAAS,KACTC,MAAO,SAIbtH,gBACK0G,GACHa,OAAQ,SAACjD,GAAK,MAAoB,YAAfA,EAAM0B,QAE3B/D,MAAO,SACPD,YAAa,CACXgE,KAAM,WAGRzB,UAAW,CACTyB,KAAM,SACNnD,QAAS,CAAC,aAAc,YAAYtD,KAAI,SAACiI,GAAG,MAAM,CAChDV,MAAOU,EACPjG,MAAOiG,EAAI,GAAGC,cAAgBD,EAAIE,MAAM,OAE1CX,iBAAkB,WAClBQ,OAAQ,SAACjD,GAAK,MAAoB,QAAfA,EAAM0B,OAE3BrC,QAAS,CACPqC,KAAM,UACNuB,OAAQ,SAACjD,GAAK,MAAoB,QAAfA,EAAM0B,OAG3BP,KAAM,CACJO,KAAM,UACNuB,OAAQ,SAACjD,GAAK,MAAoB,SAAfA,EAAM0B,OAE3BR,qBACKkB,GACHa,OAAQ,SAACjD,GAAK,MAAoB,SAAfA,EAAM0B,SAqB7B2B,cAAe,CACbC,MAAO,WAGTC,WAAY,cACZC,WAAY,2FChHcC,aDmHQA,aE9ElCA,EACAC,EACAC,GAEIF,EACFA,EAAOG,kBAAkBF,EAAWC,GAEpCC,EAAkBF,EAAWC,GFwE/BE,CAAwBJ,EAAQtB,EAAaG,GCnH7CwB,CAAoBL"}
@@ -5,14 +5,6 @@ import { Chart, CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend,
5
5
  import deepmerge from 'deepmerge';
6
6
  import { Bar, Line, Scatter } from 'react-chartjs-2';
7
7
 
8
- function registerComponentHelper(loader, component, meta) {
9
- if (loader) {
10
- loader.registerComponent(component, meta);
11
- } else {
12
- registerComponent(component, meta);
13
- }
14
- }
15
-
16
8
  function _extends() {
17
9
  _extends = Object.assign ? Object.assign.bind() : function (target) {
18
10
  for (var i = 1; i < arguments.length; i++) {
@@ -28,6 +20,14 @@ function _extends() {
28
20
  return _extends.apply(this, arguments);
29
21
  }
30
22
 
23
+ function registerComponentHelper(loader, component, meta) {
24
+ if (loader) {
25
+ loader.registerComponent(component, meta);
26
+ } else {
27
+ registerComponent(component, meta);
28
+ }
29
+ }
30
+
31
31
  var baseOptions = {
32
32
  responsive: true,
33
33
  chartArea: {
@@ -327,6 +327,13 @@ function SimpleChart(props) {
327
327
  }
328
328
  }
329
329
 
330
+ var fieldChoice = {
331
+ type: "choice",
332
+ options: function options(props) {
333
+ var _props$data;
334
+ return (_props$data = props.data) != null && _props$data[0] ? Object.keys(props.data[0]) : [];
335
+ }
336
+ };
330
337
  var simpleChartMeta = {
331
338
  name: "hostless-react-chartjs-2-simple-chart",
332
339
  displayName: "Chart",
@@ -366,23 +373,47 @@ var simpleChartMeta = {
366
373
  spend: 1656
367
374
  }])
368
375
  },
369
- labelField: {
370
- type: "choice",
376
+ labelField: /*#__PURE__*/_extends({}, fieldChoice, {
371
377
  hidden: function hidden(props) {
372
378
  return props.type === "scatter";
373
- },
374
- options: function options(props) {
375
- var _props$data;
376
- return (_props$data = props.data) != null && _props$data[0] ? Object.keys(props.data[0]) : [];
377
379
  }
378
- },
380
+ }),
379
381
  title: "string",
382
+ interactive: {
383
+ type: "boolean"
384
+ },
385
+ // Bar chart
386
+ direction: {
387
+ type: "choice",
388
+ options: /*#__PURE__*/["horizontal", "vertical"].map(function (dir) {
389
+ return {
390
+ value: dir,
391
+ label: dir[0].toUpperCase() + dir.slice(1)
392
+ };
393
+ }),
394
+ defaultValueHint: "Vertical",
395
+ hidden: function hidden(props) {
396
+ return props.type !== "bar";
397
+ }
398
+ },
399
+ stacked: {
400
+ type: "boolean",
401
+ hidden: function hidden(props) {
402
+ return props.type !== "bar";
403
+ }
404
+ },
405
+ // Line chart
380
406
  fill: {
381
407
  type: "boolean",
382
408
  hidden: function hidden(props) {
383
409
  return props.type !== "line";
384
410
  }
385
- }
411
+ },
412
+ secondAxisField: /*#__PURE__*/_extends({}, fieldChoice, {
413
+ hidden: function hidden(props) {
414
+ return props.type !== "line";
415
+ }
416
+ })
386
417
  },
387
418
  defaultStyles: {
388
419
  width: "stretch"
@@ -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 } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\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\" as any,\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 type: \"choice\",\n hidden: (props) => props.type === \"scatter\",\n options: (props) => (props.data?.[0] ? Object.keys(props.data[0]) : []),\n },\n title: \"string\",\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\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/dist/simple-chart/SimpleChart\",\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 function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n"],"names":["registerComponentHelper","loader","component","meta","registerComponent","baseOptions","responsive","chartArea","defaultColors","useIsClient","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","data","labelField","chosenFields","scatterSeries","isScatter","preferNonNumericAsLabel","extras","fields","Object","isFieldAllNumericOrNil","Map","key","every","item","isNaN","realLabelField","find","field","get","numericFields","filter","name","datasets","series","label","x","y","backgroundColor","autoChosenFields","labels","borderWidth","borderColor","prepOptions","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","direction","className","isClient","ChartJS","register","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","normalized","React","Bar","deepmerge","all","SimpleLine","secondAxisField","fill","PointElement","LineElement","Filler","pointRadius","yAxisID","Line","type","y1","grid","drawOnChartArea","SimpleScatter","console","log","Scatter","beginAtZero","SimpleChart","simpleChartMeta","displayName","value","defaultValueHint","description","defaultExpr","JSON","stringify","region","revenue","spend","hidden","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 ? { 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\" as any,\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/dist/simple-chart/SimpleChart\",\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 function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n"],"names":["registerComponentHelper","loader","component","meta","registerComponent","baseOptions","responsive","chartArea","defaultColors","useIsClient","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","data","labelField","chosenFields","scatterSeries","isScatter","preferNonNumericAsLabel","extras","fields","Object","isFieldAllNumericOrNil","Map","key","every","item","isNaN","realLabelField","find","field","get","numericFields","filter","name","datasets","series","label","x","y","backgroundColor","autoChosenFields","labels","borderWidth","borderColor","prepOptions","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","direction","className","isClient","ChartJS","register","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","normalized","React","Bar","deepmerge","all","SimpleLine","secondAxisField","fill","PointElement","LineElement","Filler","pointRadius","yAxisID","Line","type","y1","grid","drawOnChartArea","SimpleScatter","console","log","Scatter","beginAtZero","SimpleChart","fieldChoice","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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plasmicpkgs/react-chartjs-2",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "description": "Chart.js 2.x components for React",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -28,8 +28,8 @@
28
28
  "analyze": "size-limit --why"
29
29
  },
30
30
  "devDependencies": {
31
- "@plasmicapp/data-sources": "0.1.63",
32
- "@plasmicapp/host": "1.0.125",
31
+ "@plasmicapp/data-sources": "0.1.65",
32
+ "@plasmicapp/host": "1.0.126",
33
33
  "@size-limit/preset-small-lib": "^4.11.0",
34
34
  "@types/node": "^14.0.26",
35
35
  "chart.js": "^4.2.1",
@@ -53,5 +53,5 @@
53
53
  "dependencies": {
54
54
  "deepmerge": "^4.3.1"
55
55
  },
56
- "gitHead": "5f9fb81e4b814580add383f480cdb15156a67ecb"
56
+ "gitHead": "4f7b6715a12f25ed7c89fd8bf028aae74fb4ab8c"
57
57
  }