@plasmicpkgs/react-chartjs-2 1.0.47 → 1.0.49

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.
@@ -378,8 +378,7 @@ var simpleChartMeta = {
378
378
  region: "AMER",
379
379
  revenue: 3215,
380
380
  spend: 1656
381
- }]),
382
- mergeWithExternalData: true
381
+ }])
383
382
  },
384
383
  labelField: /*#__PURE__*/_extends({}, fieldChoice, {
385
384
  hidden: function hidden(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"react-chartjs-2.cjs.development.js","sources":["../src/utils.ts","../src/common.ts","../src/simple-bar/SimpleBar.tsx","../src/simple-line/SimpleLine.tsx","../src/simple-scatter/SimpleScatter.tsx","../src/simple-chart/SimpleChart.tsx","../src/simple-chart/index.tsx","../src/index.tsx"],"sourcesContent":["import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n","import { Plugin } from \"chart.js/dist/types\";\nimport { useEffect, useState } from \"react\";\n\nexport const baseOptions = {\n responsive: true,\n chartArea: {\n // backgroundColor: \"#f8fafc\",\n },\n};\n\n/**\n * These are hand-picked from the Tailwind palette.\n */\nexport const defaultColors = [\n \"hsla(25,95%,53%,1.0)\",\n \"hsla(38,92%,50%,1.0)\",\n \"hsla(45,93%,47%,1.0)\",\n \"hsla(84,81%,44%,1.0)\",\n \"hsla(142,71%,45%,1.0)\",\n \"hsla(160,84%,39%,1.0)\",\n \"hsla(173,80%,40%,1.0)\",\n \"hsla(199,89%,48%,1.0)\",\n \"hsla(217,91%,60%,1.0)\",\n \"hsla(239,84%,67%,1.0)\",\n \"hsla(258,90%,66%,1.0)\",\n \"hsla(271,91%,65%,1.0)\",\n \"hsla(292,84%,61%,1.0)\",\n \"hsla(293,69%,49%,1.0)\",\n \"hsla(295,72%,40%,1.0)\",\n \"hsla(295,70%,33%,1.0)\",\n];\n\nexport function useIsClient() {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nexport interface BaseChartProps {\n className?: string;\n data?: Record<string, any>[];\n labelField?: string;\n interactive?: boolean;\n title?: string;\n chosenFields?: string[];\n scatterSeries?: { name: string; fields: [string, string] }[];\n}\n\nexport interface PrepDataOpts {\n isScatter?: boolean;\n preferNonNumericAsLabel?: boolean;\n extras?: (field: string) => {};\n opacity?: number;\n}\n\nfunction range(total: number) {\n return Array.from(Array(total).keys());\n}\n\n/**\n * Returns a color from the default color palette.\n *\n * Tries to pick \"different\" colors that are somewhat spread out on the palette. With a higher 'total' colors requested, the colors will be packed more closely together.\n *\n * We prefer starting from blue when possible. This only starts getting pushed down toward yellow if too many colors requested.\n *\n * If too many colors are requested, it will recycle.\n */\nexport function getDefaultColor(\n index: number,\n total: number,\n opacity?: number\n) {\n const preferredStart = 9;\n const end = defaultColors.length - 1;\n const start = Math.max(0, Math.min(preferredStart, end - total));\n const stops =\n total > defaultColors.length\n ? range(defaultColors.length)\n : range(total).map((_, i) =>\n Math.round(\n start + (total > 1 ? ((1.0 * i) / (total - 1)) * (end - start) : 0)\n )\n );\n const selected = defaultColors[stops[index % stops.length]];\n if (opacity === undefined) {\n return selected;\n }\n return selected.replace(\"1.0\", \"\" + opacity);\n}\n\nexport function prepData(\n { data = [], labelField, chosenFields, scatterSeries }: BaseChartProps,\n { isScatter, preferNonNumericAsLabel, extras, opacity }: PrepDataOpts = {}\n) {\n const fields = Object.keys(data[0] ?? {});\n const isFieldAllNumericOrNil = new Map(\n fields.map((key) => [key, data.every((item) => !isNaN(item[key] ?? 0))])\n );\n const realLabelField =\n labelField ??\n (preferNonNumericAsLabel\n ? fields.find((field) => !isFieldAllNumericOrNil.get(field))\n : fields[0]);\n const numericFields = fields.filter((field) =>\n isFieldAllNumericOrNil.get(field)\n );\n if (isScatter) {\n scatterSeries = isScatter\n ? scatterSeries ?? [\n {\n name: `${numericFields[0]}-${numericFields[1]}`,\n fields: [numericFields[0], numericFields[1]] as [string, string],\n },\n ]\n : undefined;\n return {\n datasets: (scatterSeries ?? []).map((series, index) => ({\n ...extras?.(series.name),\n label: series.name,\n data: data.map((item) => ({\n x: item[series.fields[0]] ?? 0,\n y: item[series.fields[1]] ?? 0,\n })),\n backgroundColor: getDefaultColor(\n index,\n (scatterSeries ?? []).length,\n opacity\n ),\n })),\n };\n } else {\n const autoChosenFields = numericFields.filter(\n (field) => field !== realLabelField\n );\n return {\n labels: realLabelField\n ? data.map((item) => item[realLabelField])\n : undefined,\n datasets: (chosenFields ?? autoChosenFields).map((key, index) => {\n return {\n ...extras?.(key),\n label: key,\n data: data.map((item) => item[key] ?? 0),\n backgroundColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n borderWidth: 2,\n borderColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n };\n }),\n };\n }\n}\n\n// additional styling\n\n/*\n elements: {\n bar: {\n borderWidth: 2,\n },\n },\n\n */\n\nexport function prepOptions({ interactive = true, title }: BaseChartProps) {\n return [\n baseOptions,\n interactive\n ? {\n interaction: {\n mode: \"index\" as const,\n intersect: false,\n },\n }\n : {},\n title ? { title: { display: true, text: title } } : {},\n ];\n}\n\nexport const ChartAreaPlugin: Plugin = {\n id: \"chartAreaPlugin\",\n // eslint-disable-next-line object-shorthand\n beforeDraw: (chart) => {\n const chartAreaOptions = (chart.config.options as any).chartArea;\n if (chartAreaOptions && chartAreaOptions.backgroundColor) {\n const ctx = chart.canvas.getContext(\"2d\");\n const { chartArea } = chart;\n if (ctx) {\n ctx.save();\n ctx.fillStyle = chartAreaOptions.backgroundColor;\n // eslint-disable-next-line max-len\n ctx.fillRect(\n chartArea.left,\n chartArea.top,\n chartArea.right - chartArea.left,\n chartArea.bottom - chartArea.top\n );\n ctx.restore();\n }\n }\n },\n};\n","import {\n BarElement,\n CategoryScale,\n Chart as ChartJS,\n Legend,\n LinearScale,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport const stackedOptions = {\n scales: {\n x: {\n stacked: true,\n ticks: {\n major: {\n enabled: false,\n },\n },\n },\n y: {\n stacked: true,\n },\n },\n};\n\nexport const vertOptions = {\n plugins: {\n legend: {\n position: \"top\" as const,\n },\n },\n};\nexport const horizOptions = {\n indexAxis: \"y\" as const,\n plugins: {\n legend: {\n position: \"right\" as const,\n },\n },\n};\n\nexport interface SimpleBarProps extends BaseChartProps {\n direction?: \"vertical\" | \"horizontal\";\n stacked?: boolean;\n}\n\nexport function SimpleBar(props: SimpleBarProps) {\n const { direction = \"vertical\", stacked, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n preferNonNumericAsLabel: true,\n opacity: 1,\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Bar\n options={deepmerge.all([\n ...options,\n direction === \"vertical\" ? vertOptions : horizOptions,\n stacked ? stackedOptions : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleLineProps extends BaseChartProps {\n fill?: boolean;\n secondAxisField?: string;\n}\n\nexport function SimpleLine(props: SimpleLineProps) {\n const { secondAxisField, fill, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n extras: (field) => ({\n fill,\n pointRadius: 0,\n yAxisID: field === secondAxisField ? \"y1\" : \"y\",\n }),\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Line\n options={deepmerge.all([\n ...options,\n secondAxisField\n ? {\n scales: {\n y: {\n type: \"linear\" as const,\n display: true,\n position: \"left\" as const,\n },\n y1: {\n type: \"linear\" as const,\n display: true,\n position: \"right\" as const,\n grid: {\n drawOnChartArea: false,\n },\n },\n },\n }\n : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n Chart as ChartJS,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Scatter } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleScatterProps extends BaseChartProps {}\n\nexport function SimpleScatter(props: SimpleScatterProps) {\n const { className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n LinearScale,\n PointElement,\n LineElement,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, { isScatter: true, opacity: 1 });\n const options = prepOptions(props);\n console.log(\"!!\", normalized, options);\n return (\n <div className={className}>\n <Scatter\n options={deepmerge.all([\n ...options,\n {\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import React, { ReactElement } from \"react\";\nimport { SimpleBar, SimpleBarProps } from \"../simple-bar/SimpleBar\";\nimport { SimpleLine, SimpleLineProps } from \"../simple-line/SimpleLine\";\nimport {\n SimpleScatter,\n SimpleScatterProps,\n} from \"../simple-scatter/SimpleScatter\";\n\nexport type SimpleChartProps = {\n type?: \"bar\" | \"line\" | \"scatter\";\n} & (SimpleBarProps | SimpleLineProps | SimpleScatterProps);\n\nexport function SimpleChart(props: SimpleChartProps): ReactElement {\n switch (props.type ?? \"bar\") {\n case \"bar\":\n return <SimpleBar {...(props as any)} />;\n case \"line\":\n return <SimpleLine {...(props as any)} />;\n case \"scatter\":\n return <SimpleScatter {...(props as any)} />;\n }\n}\n","import { ComponentMeta, PropType } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\nconst fieldChoice: PropType<SimpleChartProps> = {\n type: \"choice\",\n options: (props: SimpleChartProps) =>\n props.data?.[0] ? Object.keys(props.data[0]) : [],\n} as const;\nconst simpleChartMeta: ComponentMeta<SimpleChartProps> = {\n name: \"hostless-react-chartjs-2-simple-chart\",\n displayName: \"Chart\",\n props: {\n type: {\n type: \"choice\",\n options: [\n {\n value: \"bar\",\n label: \"Bar\",\n },\n {\n value: \"line\",\n label: \"Line\",\n },\n {\n value: \"scatter\",\n label: \"Scatter\",\n },\n ],\n defaultValueHint: \"bar\",\n },\n data: {\n type: \"exprEditor\",\n description: \"The data as an array of objects\",\n defaultExpr: JSON.stringify([\n {\n region: \"APAC\",\n revenue: 3294,\n spend: 2675,\n },\n {\n region: \"EMEA\",\n revenue: 3245,\n spend: 3895,\n },\n {\n region: \"LATAM\",\n revenue: 2165,\n spend: 3498,\n },\n {\n region: \"AMER\",\n revenue: 3215,\n spend: 1656,\n },\n ]),\n mergeWithExternalData: true,\n },\n labelField: {\n ...fieldChoice,\n hidden: (props) => props.type === \"scatter\",\n },\n title: \"string\",\n interactive: {\n type: \"boolean\",\n },\n // Bar chart\n direction: {\n type: \"choice\",\n options: [\"horizontal\", \"vertical\"].map((dir) => ({\n value: dir,\n label: dir[0].toUpperCase() + dir.slice(1),\n })),\n defaultValueHint: \"Vertical\",\n hidden: (props) => props.type !== \"bar\",\n },\n stacked: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"bar\",\n },\n // Line chart\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\n },\n secondAxisField: {\n ...fieldChoice,\n hidden: (props) => props.type !== \"line\",\n },\n\n // TODO\n // datasets: {\n // type: \"array\",\n // unstable__keyFunc: (x) => x.key,\n // unstable__minimalValue: (_props, ctx) => null,\n // itemType: {\n // type: \"object\",\n // fields: {\n // label: \"string\",\n // fieldId: \"string\",\n // hidden: {\n // type: \"boolean\",\n // },\n // },\n // },\n // },\n },\n\n defaultStyles: {\n width: \"stretch\",\n },\n\n importName: \"SimpleChart\",\n importPath: \"@plasmicpkgs/react-chartjs-2\",\n};\n\nexport function registerSimpleChart(loader?: Registerable) {\n registerComponentHelper(loader, SimpleChart, simpleChartMeta);\n}\n","import { registerSimpleChart } from \"./simple-chart\";\nimport { Registerable } from \"./utils\";\n\nexport { SimpleChart } from \"./simple-chart\";\n\nexport function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n"],"names":["registerComponentHelper","loader","component","meta","registerComponent","baseOptions","responsive","chartArea","defaultColors","useIsClient","useState","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","mergeWithExternalData","hidden","dir","toUpperCase","slice","defaultStyles","width","importName","importPath","registerSimpleChart","registerAll"],"mappings":"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"}
1
+ {"version":3,"file":"react-chartjs-2.cjs.development.js","sources":["../src/utils.ts","../src/common.ts","../src/simple-bar/SimpleBar.tsx","../src/simple-line/SimpleLine.tsx","../src/simple-scatter/SimpleScatter.tsx","../src/simple-chart/SimpleChart.tsx","../src/simple-chart/index.tsx","../src/index.tsx"],"sourcesContent":["import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n","import { Plugin } from \"chart.js/dist/types\";\nimport { useEffect, useState } from \"react\";\n\nexport const baseOptions = {\n responsive: true,\n chartArea: {\n // backgroundColor: \"#f8fafc\",\n },\n};\n\n/**\n * These are hand-picked from the Tailwind palette.\n */\nexport const defaultColors = [\n \"hsla(25,95%,53%,1.0)\",\n \"hsla(38,92%,50%,1.0)\",\n \"hsla(45,93%,47%,1.0)\",\n \"hsla(84,81%,44%,1.0)\",\n \"hsla(142,71%,45%,1.0)\",\n \"hsla(160,84%,39%,1.0)\",\n \"hsla(173,80%,40%,1.0)\",\n \"hsla(199,89%,48%,1.0)\",\n \"hsla(217,91%,60%,1.0)\",\n \"hsla(239,84%,67%,1.0)\",\n \"hsla(258,90%,66%,1.0)\",\n \"hsla(271,91%,65%,1.0)\",\n \"hsla(292,84%,61%,1.0)\",\n \"hsla(293,69%,49%,1.0)\",\n \"hsla(295,72%,40%,1.0)\",\n \"hsla(295,70%,33%,1.0)\",\n];\n\nexport function useIsClient() {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nexport interface BaseChartProps {\n className?: string;\n data?: Record<string, any>[];\n labelField?: string;\n interactive?: boolean;\n title?: string;\n chosenFields?: string[];\n scatterSeries?: { name: string; fields: [string, string] }[];\n}\n\nexport interface PrepDataOpts {\n isScatter?: boolean;\n preferNonNumericAsLabel?: boolean;\n extras?: (field: string) => {};\n opacity?: number;\n}\n\nfunction range(total: number) {\n return Array.from(Array(total).keys());\n}\n\n/**\n * Returns a color from the default color palette.\n *\n * Tries to pick \"different\" colors that are somewhat spread out on the palette. With a higher 'total' colors requested, the colors will be packed more closely together.\n *\n * We prefer starting from blue when possible. This only starts getting pushed down toward yellow if too many colors requested.\n *\n * If too many colors are requested, it will recycle.\n */\nexport function getDefaultColor(\n index: number,\n total: number,\n opacity?: number\n) {\n const preferredStart = 9;\n const end = defaultColors.length - 1;\n const start = Math.max(0, Math.min(preferredStart, end - total));\n const stops =\n total > defaultColors.length\n ? range(defaultColors.length)\n : range(total).map((_, i) =>\n Math.round(\n start + (total > 1 ? ((1.0 * i) / (total - 1)) * (end - start) : 0)\n )\n );\n const selected = defaultColors[stops[index % stops.length]];\n if (opacity === undefined) {\n return selected;\n }\n return selected.replace(\"1.0\", \"\" + opacity);\n}\n\nexport function prepData(\n { data = [], labelField, chosenFields, scatterSeries }: BaseChartProps,\n { isScatter, preferNonNumericAsLabel, extras, opacity }: PrepDataOpts = {}\n) {\n const fields = Object.keys(data[0] ?? {});\n const isFieldAllNumericOrNil = new Map(\n fields.map((key) => [key, data.every((item) => !isNaN(item[key] ?? 0))])\n );\n const realLabelField =\n labelField ??\n (preferNonNumericAsLabel\n ? fields.find((field) => !isFieldAllNumericOrNil.get(field))\n : fields[0]);\n const numericFields = fields.filter((field) =>\n isFieldAllNumericOrNil.get(field)\n );\n if (isScatter) {\n scatterSeries = isScatter\n ? scatterSeries ?? [\n {\n name: `${numericFields[0]}-${numericFields[1]}`,\n fields: [numericFields[0], numericFields[1]] as [string, string],\n },\n ]\n : undefined;\n return {\n datasets: (scatterSeries ?? []).map((series, index) => ({\n ...extras?.(series.name),\n label: series.name,\n data: data.map((item) => ({\n x: item[series.fields[0]] ?? 0,\n y: item[series.fields[1]] ?? 0,\n })),\n backgroundColor: getDefaultColor(\n index,\n (scatterSeries ?? []).length,\n opacity\n ),\n })),\n };\n } else {\n const autoChosenFields = numericFields.filter(\n (field) => field !== realLabelField\n );\n return {\n labels: realLabelField\n ? data.map((item) => item[realLabelField])\n : undefined,\n datasets: (chosenFields ?? autoChosenFields).map((key, index) => {\n return {\n ...extras?.(key),\n label: key,\n data: data.map((item) => item[key] ?? 0),\n backgroundColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n borderWidth: 2,\n borderColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n };\n }),\n };\n }\n}\n\n// additional styling\n\n/*\n elements: {\n bar: {\n borderWidth: 2,\n },\n },\n\n */\n\nexport function prepOptions({ interactive = true, title }: BaseChartProps) {\n return [\n baseOptions,\n interactive\n ? {\n interaction: {\n mode: \"index\" as const,\n intersect: false,\n },\n }\n : {},\n title ? { title: { display: true, text: title } } : {},\n ];\n}\n\nexport const ChartAreaPlugin: Plugin = {\n id: \"chartAreaPlugin\",\n // eslint-disable-next-line object-shorthand\n beforeDraw: (chart) => {\n const chartAreaOptions = (chart.config.options as any).chartArea;\n if (chartAreaOptions && chartAreaOptions.backgroundColor) {\n const ctx = chart.canvas.getContext(\"2d\");\n const { chartArea } = chart;\n if (ctx) {\n ctx.save();\n ctx.fillStyle = chartAreaOptions.backgroundColor;\n // eslint-disable-next-line max-len\n ctx.fillRect(\n chartArea.left,\n chartArea.top,\n chartArea.right - chartArea.left,\n chartArea.bottom - chartArea.top\n );\n ctx.restore();\n }\n }\n },\n};\n","import {\n BarElement,\n CategoryScale,\n Chart as ChartJS,\n Legend,\n LinearScale,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport const stackedOptions = {\n scales: {\n x: {\n stacked: true,\n ticks: {\n major: {\n enabled: false,\n },\n },\n },\n y: {\n stacked: true,\n },\n },\n};\n\nexport const vertOptions = {\n plugins: {\n legend: {\n position: \"top\" as const,\n },\n },\n};\nexport const horizOptions = {\n indexAxis: \"y\" as const,\n plugins: {\n legend: {\n position: \"right\" as const,\n },\n },\n};\n\nexport interface SimpleBarProps extends BaseChartProps {\n direction?: \"vertical\" | \"horizontal\";\n stacked?: boolean;\n}\n\nexport function SimpleBar(props: SimpleBarProps) {\n const { direction = \"vertical\", stacked, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n preferNonNumericAsLabel: true,\n opacity: 1,\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Bar\n options={deepmerge.all([\n ...options,\n direction === \"vertical\" ? vertOptions : horizOptions,\n stacked ? stackedOptions : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleLineProps extends BaseChartProps {\n fill?: boolean;\n secondAxisField?: string;\n}\n\nexport function SimpleLine(props: SimpleLineProps) {\n const { secondAxisField, fill, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n extras: (field) => ({\n fill,\n pointRadius: 0,\n yAxisID: field === secondAxisField ? \"y1\" : \"y\",\n }),\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Line\n options={deepmerge.all([\n ...options,\n secondAxisField\n ? {\n scales: {\n y: {\n type: \"linear\" as const,\n display: true,\n position: \"left\" as const,\n },\n y1: {\n type: \"linear\" as const,\n display: true,\n position: \"right\" as const,\n grid: {\n drawOnChartArea: false,\n },\n },\n },\n }\n : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n Chart as ChartJS,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Scatter } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleScatterProps extends BaseChartProps {}\n\nexport function SimpleScatter(props: SimpleScatterProps) {\n const { className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n LinearScale,\n PointElement,\n LineElement,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, { isScatter: true, opacity: 1 });\n const options = prepOptions(props);\n console.log(\"!!\", normalized, options);\n return (\n <div className={className}>\n <Scatter\n options={deepmerge.all([\n ...options,\n {\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import React, { ReactElement } from \"react\";\nimport { SimpleBar, SimpleBarProps } from \"../simple-bar/SimpleBar\";\nimport { SimpleLine, SimpleLineProps } from \"../simple-line/SimpleLine\";\nimport {\n SimpleScatter,\n SimpleScatterProps,\n} from \"../simple-scatter/SimpleScatter\";\n\nexport type SimpleChartProps = {\n type?: \"bar\" | \"line\" | \"scatter\";\n} & (SimpleBarProps | SimpleLineProps | SimpleScatterProps);\n\nexport function SimpleChart(props: SimpleChartProps): ReactElement {\n switch (props.type ?? \"bar\") {\n case \"bar\":\n return <SimpleBar {...(props as any)} />;\n case \"line\":\n return <SimpleLine {...(props as any)} />;\n case \"scatter\":\n return <SimpleScatter {...(props as any)} />;\n }\n}\n","import { ComponentMeta, PropType } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\nconst fieldChoice: PropType<SimpleChartProps> = {\n type: \"choice\",\n options: (props: SimpleChartProps) =>\n props.data?.[0] ? Object.keys(props.data[0]) : [],\n} as const;\nconst simpleChartMeta: ComponentMeta<SimpleChartProps> = {\n name: \"hostless-react-chartjs-2-simple-chart\",\n displayName: \"Chart\",\n props: {\n type: {\n type: \"choice\",\n options: [\n {\n value: \"bar\",\n label: \"Bar\",\n },\n {\n value: \"line\",\n label: \"Line\",\n },\n {\n value: \"scatter\",\n label: \"Scatter\",\n },\n ],\n defaultValueHint: \"bar\",\n },\n data: {\n type: \"exprEditor\",\n description: \"The data as an array of objects\",\n defaultExpr: JSON.stringify([\n {\n region: \"APAC\",\n revenue: 3294,\n spend: 2675,\n },\n {\n region: \"EMEA\",\n revenue: 3245,\n spend: 3895,\n },\n {\n region: \"LATAM\",\n revenue: 2165,\n spend: 3498,\n },\n {\n region: \"AMER\",\n revenue: 3215,\n spend: 1656,\n },\n ]),\n },\n labelField: {\n ...fieldChoice,\n hidden: (props) => props.type === \"scatter\",\n },\n title: \"string\",\n interactive: {\n type: \"boolean\",\n },\n // Bar chart\n direction: {\n type: \"choice\",\n options: [\"horizontal\", \"vertical\"].map((dir) => ({\n value: dir,\n label: dir[0].toUpperCase() + dir.slice(1),\n })),\n defaultValueHint: \"Vertical\",\n hidden: (props) => props.type !== \"bar\",\n },\n stacked: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"bar\",\n },\n // Line chart\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\n },\n secondAxisField: {\n ...fieldChoice,\n hidden: (props) => props.type !== \"line\",\n },\n\n // TODO\n // datasets: {\n // type: \"array\",\n // unstable__keyFunc: (x) => x.key,\n // unstable__minimalValue: (_props, ctx) => null,\n // itemType: {\n // type: \"object\",\n // fields: {\n // label: \"string\",\n // fieldId: \"string\",\n // hidden: {\n // type: \"boolean\",\n // },\n // },\n // },\n // },\n },\n\n defaultStyles: {\n width: \"stretch\",\n },\n\n importName: \"SimpleChart\",\n importPath: \"@plasmicpkgs/react-chartjs-2\",\n};\n\nexport function registerSimpleChart(loader?: Registerable) {\n registerComponentHelper(loader, SimpleChart, simpleChartMeta);\n}\n","import { registerSimpleChart } from \"./simple-chart\";\nimport { Registerable } from \"./utils\";\n\nexport { SimpleChart } from \"./simple-chart\";\n\nexport function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n"],"names":["registerComponentHelper","loader","component","meta","registerComponent","baseOptions","responsive","chartArea","defaultColors","useIsClient","useState","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"),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 x(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 C={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}]),mergeWithExternalData:!0},labelField:o({},C,{hidden:function(e){return"scatter"===e.type}}),title:"string",interactive:{type:"boolean"},direction:{type:"choice",options:["horizontal","vertical"].map((function(e){return{value:e,label:e[0].toUpperCase()+e.slice(1)}})),defaultValueHint:"Vertical",hidden:function(e){return"bar"!==e.type}},stacked:{type:"boolean",hidden:function(e){return"bar"!==e.type}},fill:{type:"boolean",hidden:function(e){return"line"!==e.type}},secondAxisField:o({},C,{hidden:function(e){return"line"!==e.type}})},defaultStyles:{width:"stretch"},importName:"SimpleChart",importPath:"@plasmicpkgs/react-chartjs-2"};exports.SimpleChart=x,exports.registerAll=function(e){!function(e){!function(e,r,n){e?e.registerComponent(r,n):t(r,n)}(e,x,j)}(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"};exports.SimpleChart=C,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, PropType } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\nconst fieldChoice: PropType<SimpleChartProps> = {\n type: \"choice\",\n options: (props: SimpleChartProps) =>\n props.data?.[0] ? Object.keys(props.data[0]) : [],\n} as const;\nconst simpleChartMeta: ComponentMeta<SimpleChartProps> = {\n name: \"hostless-react-chartjs-2-simple-chart\",\n displayName: \"Chart\",\n props: {\n type: {\n type: \"choice\",\n options: [\n {\n value: \"bar\",\n label: \"Bar\",\n },\n {\n value: \"line\",\n label: \"Line\",\n },\n {\n value: \"scatter\",\n label: \"Scatter\",\n },\n ],\n defaultValueHint: \"bar\",\n },\n data: {\n type: \"exprEditor\",\n description: \"The data as an array of objects\",\n defaultExpr: JSON.stringify([\n {\n region: \"APAC\",\n revenue: 3294,\n spend: 2675,\n },\n {\n region: \"EMEA\",\n revenue: 3245,\n spend: 3895,\n },\n {\n region: \"LATAM\",\n revenue: 2165,\n spend: 3498,\n },\n {\n region: \"AMER\",\n revenue: 3215,\n spend: 1656,\n },\n ]),\n mergeWithExternalData: true,\n },\n labelField: {\n ...fieldChoice,\n hidden: (props) => props.type === \"scatter\",\n },\n title: \"string\",\n interactive: {\n type: \"boolean\",\n },\n // Bar chart\n direction: {\n type: \"choice\",\n options: [\"horizontal\", \"vertical\"].map((dir) => ({\n value: dir,\n label: dir[0].toUpperCase() + dir.slice(1),\n })),\n defaultValueHint: \"Vertical\",\n hidden: (props) => props.type !== \"bar\",\n },\n stacked: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"bar\",\n },\n // Line chart\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\n },\n secondAxisField: {\n ...fieldChoice,\n hidden: (props) => props.type !== \"line\",\n },\n\n // TODO\n // datasets: {\n // type: \"array\",\n // unstable__keyFunc: (x) => x.key,\n // unstable__minimalValue: (_props, ctx) => null,\n // itemType: {\n // type: \"object\",\n // fields: {\n // label: \"string\",\n // fieldId: \"string\",\n // hidden: {\n // type: \"boolean\",\n // },\n // },\n // },\n // },\n },\n\n defaultStyles: {\n width: \"stretch\",\n },\n\n importName: \"SimpleChart\",\n importPath: \"@plasmicpkgs/react-chartjs-2\",\n};\n\nexport function registerSimpleChart(loader?: Registerable) {\n registerComponentHelper(loader, SimpleChart, simpleChartMeta);\n}\n","import { registerSimpleChart } from \"./simple-chart\";\nimport { Registerable } from \"./utils\";\n\nexport { SimpleChart } from \"./simple-chart\";\n\nexport function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n","import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n"],"names":["baseOptions","responsive","chartArea","defaultColors","useIsClient","useState","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","mergeWithExternalData","hidden","dir","toUpperCase","slice","defaultStyles","width","importName","importPath","loader","component","meta","registerComponent","registerComponentHelper","registerSimpleChart"],"mappings":"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"}
1
+ {"version":3,"file":"react-chartjs-2.cjs.production.min.js","sources":["../src/common.ts","../src/simple-bar/SimpleBar.tsx","../src/simple-line/SimpleLine.tsx","../src/simple-scatter/SimpleScatter.tsx","../src/simple-chart/SimpleChart.tsx","../src/simple-chart/index.tsx","../src/index.tsx","../src/utils.ts"],"sourcesContent":["import { Plugin } from \"chart.js/dist/types\";\nimport { useEffect, useState } from \"react\";\n\nexport const baseOptions = {\n responsive: true,\n chartArea: {\n // backgroundColor: \"#f8fafc\",\n },\n};\n\n/**\n * These are hand-picked from the Tailwind palette.\n */\nexport const defaultColors = [\n \"hsla(25,95%,53%,1.0)\",\n \"hsla(38,92%,50%,1.0)\",\n \"hsla(45,93%,47%,1.0)\",\n \"hsla(84,81%,44%,1.0)\",\n \"hsla(142,71%,45%,1.0)\",\n \"hsla(160,84%,39%,1.0)\",\n \"hsla(173,80%,40%,1.0)\",\n \"hsla(199,89%,48%,1.0)\",\n \"hsla(217,91%,60%,1.0)\",\n \"hsla(239,84%,67%,1.0)\",\n \"hsla(258,90%,66%,1.0)\",\n \"hsla(271,91%,65%,1.0)\",\n \"hsla(292,84%,61%,1.0)\",\n \"hsla(293,69%,49%,1.0)\",\n \"hsla(295,72%,40%,1.0)\",\n \"hsla(295,70%,33%,1.0)\",\n];\n\nexport function useIsClient() {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nexport interface BaseChartProps {\n className?: string;\n data?: Record<string, any>[];\n labelField?: string;\n interactive?: boolean;\n title?: string;\n chosenFields?: string[];\n scatterSeries?: { name: string; fields: [string, string] }[];\n}\n\nexport interface PrepDataOpts {\n isScatter?: boolean;\n preferNonNumericAsLabel?: boolean;\n extras?: (field: string) => {};\n opacity?: number;\n}\n\nfunction range(total: number) {\n return Array.from(Array(total).keys());\n}\n\n/**\n * Returns a color from the default color palette.\n *\n * Tries to pick \"different\" colors that are somewhat spread out on the palette. With a higher 'total' colors requested, the colors will be packed more closely together.\n *\n * We prefer starting from blue when possible. This only starts getting pushed down toward yellow if too many colors requested.\n *\n * If too many colors are requested, it will recycle.\n */\nexport function getDefaultColor(\n index: number,\n total: number,\n opacity?: number\n) {\n const preferredStart = 9;\n const end = defaultColors.length - 1;\n const start = Math.max(0, Math.min(preferredStart, end - total));\n const stops =\n total > defaultColors.length\n ? range(defaultColors.length)\n : range(total).map((_, i) =>\n Math.round(\n start + (total > 1 ? ((1.0 * i) / (total - 1)) * (end - start) : 0)\n )\n );\n const selected = defaultColors[stops[index % stops.length]];\n if (opacity === undefined) {\n return selected;\n }\n return selected.replace(\"1.0\", \"\" + opacity);\n}\n\nexport function prepData(\n { data = [], labelField, chosenFields, scatterSeries }: BaseChartProps,\n { isScatter, preferNonNumericAsLabel, extras, opacity }: PrepDataOpts = {}\n) {\n const fields = Object.keys(data[0] ?? {});\n const isFieldAllNumericOrNil = new Map(\n fields.map((key) => [key, data.every((item) => !isNaN(item[key] ?? 0))])\n );\n const realLabelField =\n labelField ??\n (preferNonNumericAsLabel\n ? fields.find((field) => !isFieldAllNumericOrNil.get(field))\n : fields[0]);\n const numericFields = fields.filter((field) =>\n isFieldAllNumericOrNil.get(field)\n );\n if (isScatter) {\n scatterSeries = isScatter\n ? scatterSeries ?? [\n {\n name: `${numericFields[0]}-${numericFields[1]}`,\n fields: [numericFields[0], numericFields[1]] as [string, string],\n },\n ]\n : undefined;\n return {\n datasets: (scatterSeries ?? []).map((series, index) => ({\n ...extras?.(series.name),\n label: series.name,\n data: data.map((item) => ({\n x: item[series.fields[0]] ?? 0,\n y: item[series.fields[1]] ?? 0,\n })),\n backgroundColor: getDefaultColor(\n index,\n (scatterSeries ?? []).length,\n opacity\n ),\n })),\n };\n } else {\n const autoChosenFields = numericFields.filter(\n (field) => field !== realLabelField\n );\n return {\n labels: realLabelField\n ? data.map((item) => item[realLabelField])\n : undefined,\n datasets: (chosenFields ?? autoChosenFields).map((key, index) => {\n return {\n ...extras?.(key),\n label: key,\n data: data.map((item) => item[key] ?? 0),\n backgroundColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n borderWidth: 2,\n borderColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n };\n }),\n };\n }\n}\n\n// additional styling\n\n/*\n elements: {\n bar: {\n borderWidth: 2,\n },\n },\n\n */\n\nexport function prepOptions({ interactive = true, title }: BaseChartProps) {\n return [\n baseOptions,\n interactive\n ? {\n interaction: {\n mode: \"index\" as const,\n intersect: false,\n },\n }\n : {},\n title ? { title: { display: true, text: title } } : {},\n ];\n}\n\nexport const ChartAreaPlugin: Plugin = {\n id: \"chartAreaPlugin\",\n // eslint-disable-next-line object-shorthand\n beforeDraw: (chart) => {\n const chartAreaOptions = (chart.config.options as any).chartArea;\n if (chartAreaOptions && chartAreaOptions.backgroundColor) {\n const ctx = chart.canvas.getContext(\"2d\");\n const { chartArea } = chart;\n if (ctx) {\n ctx.save();\n ctx.fillStyle = chartAreaOptions.backgroundColor;\n // eslint-disable-next-line max-len\n ctx.fillRect(\n chartArea.left,\n chartArea.top,\n chartArea.right - chartArea.left,\n chartArea.bottom - chartArea.top\n );\n ctx.restore();\n }\n }\n },\n};\n","import {\n BarElement,\n CategoryScale,\n Chart as ChartJS,\n Legend,\n LinearScale,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport const stackedOptions = {\n scales: {\n x: {\n stacked: true,\n ticks: {\n major: {\n enabled: false,\n },\n },\n },\n y: {\n stacked: true,\n },\n },\n};\n\nexport const vertOptions = {\n plugins: {\n legend: {\n position: \"top\" as const,\n },\n },\n};\nexport const horizOptions = {\n indexAxis: \"y\" as const,\n plugins: {\n legend: {\n position: \"right\" as const,\n },\n },\n};\n\nexport interface SimpleBarProps extends BaseChartProps {\n direction?: \"vertical\" | \"horizontal\";\n stacked?: boolean;\n}\n\nexport function SimpleBar(props: SimpleBarProps) {\n const { direction = \"vertical\", stacked, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n preferNonNumericAsLabel: true,\n opacity: 1,\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Bar\n options={deepmerge.all([\n ...options,\n direction === \"vertical\" ? vertOptions : horizOptions,\n stacked ? stackedOptions : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleLineProps extends BaseChartProps {\n fill?: boolean;\n secondAxisField?: string;\n}\n\nexport function SimpleLine(props: SimpleLineProps) {\n const { secondAxisField, fill, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n extras: (field) => ({\n fill,\n pointRadius: 0,\n yAxisID: field === secondAxisField ? \"y1\" : \"y\",\n }),\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Line\n options={deepmerge.all([\n ...options,\n secondAxisField\n ? {\n scales: {\n y: {\n type: \"linear\" as const,\n display: true,\n position: \"left\" as const,\n },\n y1: {\n type: \"linear\" as const,\n display: true,\n position: \"right\" as const,\n grid: {\n drawOnChartArea: false,\n },\n },\n },\n }\n : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n Chart as ChartJS,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Scatter } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleScatterProps extends BaseChartProps {}\n\nexport function SimpleScatter(props: SimpleScatterProps) {\n const { className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n LinearScale,\n PointElement,\n LineElement,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, { isScatter: true, opacity: 1 });\n const options = prepOptions(props);\n console.log(\"!!\", normalized, options);\n return (\n <div className={className}>\n <Scatter\n options={deepmerge.all([\n ...options,\n {\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import React, { ReactElement } from \"react\";\nimport { SimpleBar, SimpleBarProps } from \"../simple-bar/SimpleBar\";\nimport { SimpleLine, SimpleLineProps } from \"../simple-line/SimpleLine\";\nimport {\n SimpleScatter,\n SimpleScatterProps,\n} from \"../simple-scatter/SimpleScatter\";\n\nexport type SimpleChartProps = {\n type?: \"bar\" | \"line\" | \"scatter\";\n} & (SimpleBarProps | SimpleLineProps | SimpleScatterProps);\n\nexport function SimpleChart(props: SimpleChartProps): ReactElement {\n switch (props.type ?? \"bar\") {\n case \"bar\":\n return <SimpleBar {...(props as any)} />;\n case \"line\":\n return <SimpleLine {...(props as any)} />;\n case \"scatter\":\n return <SimpleScatter {...(props as any)} />;\n }\n}\n","import { ComponentMeta, PropType } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\nconst fieldChoice: PropType<SimpleChartProps> = {\n type: \"choice\",\n options: (props: SimpleChartProps) =>\n props.data?.[0] ? Object.keys(props.data[0]) : [],\n} as const;\nconst simpleChartMeta: ComponentMeta<SimpleChartProps> = {\n name: \"hostless-react-chartjs-2-simple-chart\",\n displayName: \"Chart\",\n props: {\n type: {\n type: \"choice\",\n options: [\n {\n value: \"bar\",\n label: \"Bar\",\n },\n {\n value: \"line\",\n label: \"Line\",\n },\n {\n value: \"scatter\",\n label: \"Scatter\",\n },\n ],\n defaultValueHint: \"bar\",\n },\n data: {\n type: \"exprEditor\",\n description: \"The data as an array of objects\",\n defaultExpr: JSON.stringify([\n {\n region: \"APAC\",\n revenue: 3294,\n spend: 2675,\n },\n {\n region: \"EMEA\",\n revenue: 3245,\n spend: 3895,\n },\n {\n region: \"LATAM\",\n revenue: 2165,\n spend: 3498,\n },\n {\n region: \"AMER\",\n revenue: 3215,\n spend: 1656,\n },\n ]),\n },\n labelField: {\n ...fieldChoice,\n hidden: (props) => props.type === \"scatter\",\n },\n title: \"string\",\n interactive: {\n type: \"boolean\",\n },\n // Bar chart\n direction: {\n type: \"choice\",\n options: [\"horizontal\", \"vertical\"].map((dir) => ({\n value: dir,\n label: dir[0].toUpperCase() + dir.slice(1),\n })),\n defaultValueHint: \"Vertical\",\n hidden: (props) => props.type !== \"bar\",\n },\n stacked: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"bar\",\n },\n // Line chart\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\n },\n secondAxisField: {\n ...fieldChoice,\n hidden: (props) => props.type !== \"line\",\n },\n\n // TODO\n // datasets: {\n // type: \"array\",\n // unstable__keyFunc: (x) => x.key,\n // unstable__minimalValue: (_props, ctx) => null,\n // itemType: {\n // type: \"object\",\n // fields: {\n // label: \"string\",\n // fieldId: \"string\",\n // hidden: {\n // type: \"boolean\",\n // },\n // },\n // },\n // },\n },\n\n defaultStyles: {\n width: \"stretch\",\n },\n\n importName: \"SimpleChart\",\n importPath: \"@plasmicpkgs/react-chartjs-2\",\n};\n\nexport function registerSimpleChart(loader?: Registerable) {\n registerComponentHelper(loader, SimpleChart, simpleChartMeta);\n}\n","import { registerSimpleChart } from \"./simple-chart\";\nimport { Registerable } from \"./utils\";\n\nexport { SimpleChart } from \"./simple-chart\";\n\nexport function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n","import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n"],"names":["baseOptions","responsive","chartArea","defaultColors","useIsClient","useState","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":"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"}
@@ -371,8 +371,7 @@ var simpleChartMeta = {
371
371
  region: "AMER",
372
372
  revenue: 3215,
373
373
  spend: 1656
374
- }]),
375
- mergeWithExternalData: true
374
+ }])
376
375
  },
377
376
  labelField: /*#__PURE__*/_extends({}, fieldChoice, {
378
377
  hidden: function hidden(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"react-chartjs-2.esm.js","sources":["../src/utils.ts","../src/common.ts","../src/simple-bar/SimpleBar.tsx","../src/simple-line/SimpleLine.tsx","../src/simple-scatter/SimpleScatter.tsx","../src/simple-chart/SimpleChart.tsx","../src/simple-chart/index.tsx","../src/index.tsx"],"sourcesContent":["import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n","import { Plugin } from \"chart.js/dist/types\";\nimport { useEffect, useState } from \"react\";\n\nexport const baseOptions = {\n responsive: true,\n chartArea: {\n // backgroundColor: \"#f8fafc\",\n },\n};\n\n/**\n * These are hand-picked from the Tailwind palette.\n */\nexport const defaultColors = [\n \"hsla(25,95%,53%,1.0)\",\n \"hsla(38,92%,50%,1.0)\",\n \"hsla(45,93%,47%,1.0)\",\n \"hsla(84,81%,44%,1.0)\",\n \"hsla(142,71%,45%,1.0)\",\n \"hsla(160,84%,39%,1.0)\",\n \"hsla(173,80%,40%,1.0)\",\n \"hsla(199,89%,48%,1.0)\",\n \"hsla(217,91%,60%,1.0)\",\n \"hsla(239,84%,67%,1.0)\",\n \"hsla(258,90%,66%,1.0)\",\n \"hsla(271,91%,65%,1.0)\",\n \"hsla(292,84%,61%,1.0)\",\n \"hsla(293,69%,49%,1.0)\",\n \"hsla(295,72%,40%,1.0)\",\n \"hsla(295,70%,33%,1.0)\",\n];\n\nexport function useIsClient() {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nexport interface BaseChartProps {\n className?: string;\n data?: Record<string, any>[];\n labelField?: string;\n interactive?: boolean;\n title?: string;\n chosenFields?: string[];\n scatterSeries?: { name: string; fields: [string, string] }[];\n}\n\nexport interface PrepDataOpts {\n isScatter?: boolean;\n preferNonNumericAsLabel?: boolean;\n extras?: (field: string) => {};\n opacity?: number;\n}\n\nfunction range(total: number) {\n return Array.from(Array(total).keys());\n}\n\n/**\n * Returns a color from the default color palette.\n *\n * Tries to pick \"different\" colors that are somewhat spread out on the palette. With a higher 'total' colors requested, the colors will be packed more closely together.\n *\n * We prefer starting from blue when possible. This only starts getting pushed down toward yellow if too many colors requested.\n *\n * If too many colors are requested, it will recycle.\n */\nexport function getDefaultColor(\n index: number,\n total: number,\n opacity?: number\n) {\n const preferredStart = 9;\n const end = defaultColors.length - 1;\n const start = Math.max(0, Math.min(preferredStart, end - total));\n const stops =\n total > defaultColors.length\n ? range(defaultColors.length)\n : range(total).map((_, i) =>\n Math.round(\n start + (total > 1 ? ((1.0 * i) / (total - 1)) * (end - start) : 0)\n )\n );\n const selected = defaultColors[stops[index % stops.length]];\n if (opacity === undefined) {\n return selected;\n }\n return selected.replace(\"1.0\", \"\" + opacity);\n}\n\nexport function prepData(\n { data = [], labelField, chosenFields, scatterSeries }: BaseChartProps,\n { isScatter, preferNonNumericAsLabel, extras, opacity }: PrepDataOpts = {}\n) {\n const fields = Object.keys(data[0] ?? {});\n const isFieldAllNumericOrNil = new Map(\n fields.map((key) => [key, data.every((item) => !isNaN(item[key] ?? 0))])\n );\n const realLabelField =\n labelField ??\n (preferNonNumericAsLabel\n ? fields.find((field) => !isFieldAllNumericOrNil.get(field))\n : fields[0]);\n const numericFields = fields.filter((field) =>\n isFieldAllNumericOrNil.get(field)\n );\n if (isScatter) {\n scatterSeries = isScatter\n ? scatterSeries ?? [\n {\n name: `${numericFields[0]}-${numericFields[1]}`,\n fields: [numericFields[0], numericFields[1]] as [string, string],\n },\n ]\n : undefined;\n return {\n datasets: (scatterSeries ?? []).map((series, index) => ({\n ...extras?.(series.name),\n label: series.name,\n data: data.map((item) => ({\n x: item[series.fields[0]] ?? 0,\n y: item[series.fields[1]] ?? 0,\n })),\n backgroundColor: getDefaultColor(\n index,\n (scatterSeries ?? []).length,\n opacity\n ),\n })),\n };\n } else {\n const autoChosenFields = numericFields.filter(\n (field) => field !== realLabelField\n );\n return {\n labels: realLabelField\n ? data.map((item) => item[realLabelField])\n : undefined,\n datasets: (chosenFields ?? autoChosenFields).map((key, index) => {\n return {\n ...extras?.(key),\n label: key,\n data: data.map((item) => item[key] ?? 0),\n backgroundColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n borderWidth: 2,\n borderColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n };\n }),\n };\n }\n}\n\n// additional styling\n\n/*\n elements: {\n bar: {\n borderWidth: 2,\n },\n },\n\n */\n\nexport function prepOptions({ interactive = true, title }: BaseChartProps) {\n return [\n baseOptions,\n interactive\n ? {\n interaction: {\n mode: \"index\" as const,\n intersect: false,\n },\n }\n : {},\n title ? { title: { display: true, text: title } } : {},\n ];\n}\n\nexport const ChartAreaPlugin: Plugin = {\n id: \"chartAreaPlugin\",\n // eslint-disable-next-line object-shorthand\n beforeDraw: (chart) => {\n const chartAreaOptions = (chart.config.options as any).chartArea;\n if (chartAreaOptions && chartAreaOptions.backgroundColor) {\n const ctx = chart.canvas.getContext(\"2d\");\n const { chartArea } = chart;\n if (ctx) {\n ctx.save();\n ctx.fillStyle = chartAreaOptions.backgroundColor;\n // eslint-disable-next-line max-len\n ctx.fillRect(\n chartArea.left,\n chartArea.top,\n chartArea.right - chartArea.left,\n chartArea.bottom - chartArea.top\n );\n ctx.restore();\n }\n }\n },\n};\n","import {\n BarElement,\n CategoryScale,\n Chart as ChartJS,\n Legend,\n LinearScale,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport const stackedOptions = {\n scales: {\n x: {\n stacked: true,\n ticks: {\n major: {\n enabled: false,\n },\n },\n },\n y: {\n stacked: true,\n },\n },\n};\n\nexport const vertOptions = {\n plugins: {\n legend: {\n position: \"top\" as const,\n },\n },\n};\nexport const horizOptions = {\n indexAxis: \"y\" as const,\n plugins: {\n legend: {\n position: \"right\" as const,\n },\n },\n};\n\nexport interface SimpleBarProps extends BaseChartProps {\n direction?: \"vertical\" | \"horizontal\";\n stacked?: boolean;\n}\n\nexport function SimpleBar(props: SimpleBarProps) {\n const { direction = \"vertical\", stacked, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n preferNonNumericAsLabel: true,\n opacity: 1,\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Bar\n options={deepmerge.all([\n ...options,\n direction === \"vertical\" ? vertOptions : horizOptions,\n stacked ? stackedOptions : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleLineProps extends BaseChartProps {\n fill?: boolean;\n secondAxisField?: string;\n}\n\nexport function SimpleLine(props: SimpleLineProps) {\n const { secondAxisField, fill, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n extras: (field) => ({\n fill,\n pointRadius: 0,\n yAxisID: field === secondAxisField ? \"y1\" : \"y\",\n }),\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Line\n options={deepmerge.all([\n ...options,\n secondAxisField\n ? {\n scales: {\n y: {\n type: \"linear\" as const,\n display: true,\n position: \"left\" as const,\n },\n y1: {\n type: \"linear\" as const,\n display: true,\n position: \"right\" as const,\n grid: {\n drawOnChartArea: false,\n },\n },\n },\n }\n : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n Chart as ChartJS,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Scatter } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleScatterProps extends BaseChartProps {}\n\nexport function SimpleScatter(props: SimpleScatterProps) {\n const { className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n LinearScale,\n PointElement,\n LineElement,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, { isScatter: true, opacity: 1 });\n const options = prepOptions(props);\n console.log(\"!!\", normalized, options);\n return (\n <div className={className}>\n <Scatter\n options={deepmerge.all([\n ...options,\n {\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import React, { ReactElement } from \"react\";\nimport { SimpleBar, SimpleBarProps } from \"../simple-bar/SimpleBar\";\nimport { SimpleLine, SimpleLineProps } from \"../simple-line/SimpleLine\";\nimport {\n SimpleScatter,\n SimpleScatterProps,\n} from \"../simple-scatter/SimpleScatter\";\n\nexport type SimpleChartProps = {\n type?: \"bar\" | \"line\" | \"scatter\";\n} & (SimpleBarProps | SimpleLineProps | SimpleScatterProps);\n\nexport function SimpleChart(props: SimpleChartProps): ReactElement {\n switch (props.type ?? \"bar\") {\n case \"bar\":\n return <SimpleBar {...(props as any)} />;\n case \"line\":\n return <SimpleLine {...(props as any)} />;\n case \"scatter\":\n return <SimpleScatter {...(props as any)} />;\n }\n}\n","import { ComponentMeta, PropType } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\nconst fieldChoice: PropType<SimpleChartProps> = {\n type: \"choice\",\n options: (props: SimpleChartProps) =>\n props.data?.[0] ? Object.keys(props.data[0]) : [],\n} as const;\nconst simpleChartMeta: ComponentMeta<SimpleChartProps> = {\n name: \"hostless-react-chartjs-2-simple-chart\",\n displayName: \"Chart\",\n props: {\n type: {\n type: \"choice\",\n options: [\n {\n value: \"bar\",\n label: \"Bar\",\n },\n {\n value: \"line\",\n label: \"Line\",\n },\n {\n value: \"scatter\",\n label: \"Scatter\",\n },\n ],\n defaultValueHint: \"bar\",\n },\n data: {\n type: \"exprEditor\",\n description: \"The data as an array of objects\",\n defaultExpr: JSON.stringify([\n {\n region: \"APAC\",\n revenue: 3294,\n spend: 2675,\n },\n {\n region: \"EMEA\",\n revenue: 3245,\n spend: 3895,\n },\n {\n region: \"LATAM\",\n revenue: 2165,\n spend: 3498,\n },\n {\n region: \"AMER\",\n revenue: 3215,\n spend: 1656,\n },\n ]),\n mergeWithExternalData: true,\n },\n labelField: {\n ...fieldChoice,\n hidden: (props) => props.type === \"scatter\",\n },\n title: \"string\",\n interactive: {\n type: \"boolean\",\n },\n // Bar chart\n direction: {\n type: \"choice\",\n options: [\"horizontal\", \"vertical\"].map((dir) => ({\n value: dir,\n label: dir[0].toUpperCase() + dir.slice(1),\n })),\n defaultValueHint: \"Vertical\",\n hidden: (props) => props.type !== \"bar\",\n },\n stacked: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"bar\",\n },\n // Line chart\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\n },\n secondAxisField: {\n ...fieldChoice,\n hidden: (props) => props.type !== \"line\",\n },\n\n // TODO\n // datasets: {\n // type: \"array\",\n // unstable__keyFunc: (x) => x.key,\n // unstable__minimalValue: (_props, ctx) => null,\n // itemType: {\n // type: \"object\",\n // fields: {\n // label: \"string\",\n // fieldId: \"string\",\n // hidden: {\n // type: \"boolean\",\n // },\n // },\n // },\n // },\n },\n\n defaultStyles: {\n width: \"stretch\",\n },\n\n importName: \"SimpleChart\",\n importPath: \"@plasmicpkgs/react-chartjs-2\",\n};\n\nexport function registerSimpleChart(loader?: Registerable) {\n registerComponentHelper(loader, SimpleChart, simpleChartMeta);\n}\n","import { registerSimpleChart } from \"./simple-chart\";\nimport { Registerable } from \"./utils\";\n\nexport { SimpleChart } from \"./simple-chart\";\n\nexport function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n"],"names":["registerComponentHelper","loader","component","meta","registerComponent","baseOptions","responsive","chartArea","defaultColors","useIsClient","useState","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","mergeWithExternalData","hidden","dir","toUpperCase","slice","defaultStyles","width","importName","importPath","registerSimpleChart","registerAll"],"mappings":"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"}
1
+ {"version":3,"file":"react-chartjs-2.esm.js","sources":["../src/utils.ts","../src/common.ts","../src/simple-bar/SimpleBar.tsx","../src/simple-line/SimpleLine.tsx","../src/simple-scatter/SimpleScatter.tsx","../src/simple-chart/SimpleChart.tsx","../src/simple-chart/index.tsx","../src/index.tsx"],"sourcesContent":["import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n","import { Plugin } from \"chart.js/dist/types\";\nimport { useEffect, useState } from \"react\";\n\nexport const baseOptions = {\n responsive: true,\n chartArea: {\n // backgroundColor: \"#f8fafc\",\n },\n};\n\n/**\n * These are hand-picked from the Tailwind palette.\n */\nexport const defaultColors = [\n \"hsla(25,95%,53%,1.0)\",\n \"hsla(38,92%,50%,1.0)\",\n \"hsla(45,93%,47%,1.0)\",\n \"hsla(84,81%,44%,1.0)\",\n \"hsla(142,71%,45%,1.0)\",\n \"hsla(160,84%,39%,1.0)\",\n \"hsla(173,80%,40%,1.0)\",\n \"hsla(199,89%,48%,1.0)\",\n \"hsla(217,91%,60%,1.0)\",\n \"hsla(239,84%,67%,1.0)\",\n \"hsla(258,90%,66%,1.0)\",\n \"hsla(271,91%,65%,1.0)\",\n \"hsla(292,84%,61%,1.0)\",\n \"hsla(293,69%,49%,1.0)\",\n \"hsla(295,72%,40%,1.0)\",\n \"hsla(295,70%,33%,1.0)\",\n];\n\nexport function useIsClient() {\n const [loaded, setLoaded] = useState(false);\n useEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\nexport interface BaseChartProps {\n className?: string;\n data?: Record<string, any>[];\n labelField?: string;\n interactive?: boolean;\n title?: string;\n chosenFields?: string[];\n scatterSeries?: { name: string; fields: [string, string] }[];\n}\n\nexport interface PrepDataOpts {\n isScatter?: boolean;\n preferNonNumericAsLabel?: boolean;\n extras?: (field: string) => {};\n opacity?: number;\n}\n\nfunction range(total: number) {\n return Array.from(Array(total).keys());\n}\n\n/**\n * Returns a color from the default color palette.\n *\n * Tries to pick \"different\" colors that are somewhat spread out on the palette. With a higher 'total' colors requested, the colors will be packed more closely together.\n *\n * We prefer starting from blue when possible. This only starts getting pushed down toward yellow if too many colors requested.\n *\n * If too many colors are requested, it will recycle.\n */\nexport function getDefaultColor(\n index: number,\n total: number,\n opacity?: number\n) {\n const preferredStart = 9;\n const end = defaultColors.length - 1;\n const start = Math.max(0, Math.min(preferredStart, end - total));\n const stops =\n total > defaultColors.length\n ? range(defaultColors.length)\n : range(total).map((_, i) =>\n Math.round(\n start + (total > 1 ? ((1.0 * i) / (total - 1)) * (end - start) : 0)\n )\n );\n const selected = defaultColors[stops[index % stops.length]];\n if (opacity === undefined) {\n return selected;\n }\n return selected.replace(\"1.0\", \"\" + opacity);\n}\n\nexport function prepData(\n { data = [], labelField, chosenFields, scatterSeries }: BaseChartProps,\n { isScatter, preferNonNumericAsLabel, extras, opacity }: PrepDataOpts = {}\n) {\n const fields = Object.keys(data[0] ?? {});\n const isFieldAllNumericOrNil = new Map(\n fields.map((key) => [key, data.every((item) => !isNaN(item[key] ?? 0))])\n );\n const realLabelField =\n labelField ??\n (preferNonNumericAsLabel\n ? fields.find((field) => !isFieldAllNumericOrNil.get(field))\n : fields[0]);\n const numericFields = fields.filter((field) =>\n isFieldAllNumericOrNil.get(field)\n );\n if (isScatter) {\n scatterSeries = isScatter\n ? scatterSeries ?? [\n {\n name: `${numericFields[0]}-${numericFields[1]}`,\n fields: [numericFields[0], numericFields[1]] as [string, string],\n },\n ]\n : undefined;\n return {\n datasets: (scatterSeries ?? []).map((series, index) => ({\n ...extras?.(series.name),\n label: series.name,\n data: data.map((item) => ({\n x: item[series.fields[0]] ?? 0,\n y: item[series.fields[1]] ?? 0,\n })),\n backgroundColor: getDefaultColor(\n index,\n (scatterSeries ?? []).length,\n opacity\n ),\n })),\n };\n } else {\n const autoChosenFields = numericFields.filter(\n (field) => field !== realLabelField\n );\n return {\n labels: realLabelField\n ? data.map((item) => item[realLabelField])\n : undefined,\n datasets: (chosenFields ?? autoChosenFields).map((key, index) => {\n return {\n ...extras?.(key),\n label: key,\n data: data.map((item) => item[key] ?? 0),\n backgroundColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n borderWidth: 2,\n borderColor: getDefaultColor(\n index,\n (chosenFields ?? autoChosenFields).length,\n 1\n ),\n };\n }),\n };\n }\n}\n\n// additional styling\n\n/*\n elements: {\n bar: {\n borderWidth: 2,\n },\n },\n\n */\n\nexport function prepOptions({ interactive = true, title }: BaseChartProps) {\n return [\n baseOptions,\n interactive\n ? {\n interaction: {\n mode: \"index\" as const,\n intersect: false,\n },\n }\n : {},\n title ? { title: { display: true, text: title } } : {},\n ];\n}\n\nexport const ChartAreaPlugin: Plugin = {\n id: \"chartAreaPlugin\",\n // eslint-disable-next-line object-shorthand\n beforeDraw: (chart) => {\n const chartAreaOptions = (chart.config.options as any).chartArea;\n if (chartAreaOptions && chartAreaOptions.backgroundColor) {\n const ctx = chart.canvas.getContext(\"2d\");\n const { chartArea } = chart;\n if (ctx) {\n ctx.save();\n ctx.fillStyle = chartAreaOptions.backgroundColor;\n // eslint-disable-next-line max-len\n ctx.fillRect(\n chartArea.left,\n chartArea.top,\n chartArea.right - chartArea.left,\n chartArea.bottom - chartArea.top\n );\n ctx.restore();\n }\n }\n },\n};\n","import {\n BarElement,\n CategoryScale,\n Chart as ChartJS,\n Legend,\n LinearScale,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport const stackedOptions = {\n scales: {\n x: {\n stacked: true,\n ticks: {\n major: {\n enabled: false,\n },\n },\n },\n y: {\n stacked: true,\n },\n },\n};\n\nexport const vertOptions = {\n plugins: {\n legend: {\n position: \"top\" as const,\n },\n },\n};\nexport const horizOptions = {\n indexAxis: \"y\" as const,\n plugins: {\n legend: {\n position: \"right\" as const,\n },\n },\n};\n\nexport interface SimpleBarProps extends BaseChartProps {\n direction?: \"vertical\" | \"horizontal\";\n stacked?: boolean;\n}\n\nexport function SimpleBar(props: SimpleBarProps) {\n const { direction = \"vertical\", stacked, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n preferNonNumericAsLabel: true,\n opacity: 1,\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Bar\n options={deepmerge.all([\n ...options,\n direction === \"vertical\" ? vertOptions : horizOptions,\n stacked ? stackedOptions : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleLineProps extends BaseChartProps {\n fill?: boolean;\n secondAxisField?: string;\n}\n\nexport function SimpleLine(props: SimpleLineProps) {\n const { secondAxisField, fill, className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, {\n extras: (field) => ({\n fill,\n pointRadius: 0,\n yAxisID: field === secondAxisField ? \"y1\" : \"y\",\n }),\n });\n const options = prepOptions(props);\n return (\n <div className={className}>\n <Line\n options={deepmerge.all([\n ...options,\n secondAxisField\n ? {\n scales: {\n y: {\n type: \"linear\" as const,\n display: true,\n position: \"left\" as const,\n },\n y1: {\n type: \"linear\" as const,\n display: true,\n position: \"right\" as const,\n grid: {\n drawOnChartArea: false,\n },\n },\n },\n }\n : {},\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import {\n Chart as ChartJS,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Tooltip,\n} from \"chart.js\";\nimport deepmerge from \"deepmerge\";\nimport React, { useEffect } from \"react\";\nimport { Scatter } from \"react-chartjs-2\";\nimport {\n BaseChartProps,\n ChartAreaPlugin,\n prepData,\n prepOptions,\n useIsClient,\n} from \"../common\";\n\nexport interface SimpleScatterProps extends BaseChartProps {}\n\nexport function SimpleScatter(props: SimpleScatterProps) {\n const { className } = props;\n const isClient = useIsClient();\n useEffect(() => {\n ChartJS.register(\n ChartAreaPlugin,\n LinearScale,\n PointElement,\n LineElement,\n Tooltip,\n Legend\n );\n }, []);\n if (!isClient) {\n return null;\n }\n const normalized = prepData(props, { isScatter: true, opacity: 1 });\n const options = prepOptions(props);\n console.log(\"!!\", normalized, options);\n return (\n <div className={className}>\n <Scatter\n options={deepmerge.all([\n ...options,\n {\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n ])}\n data={normalized}\n />\n </div>\n );\n}\n","import React, { ReactElement } from \"react\";\nimport { SimpleBar, SimpleBarProps } from \"../simple-bar/SimpleBar\";\nimport { SimpleLine, SimpleLineProps } from \"../simple-line/SimpleLine\";\nimport {\n SimpleScatter,\n SimpleScatterProps,\n} from \"../simple-scatter/SimpleScatter\";\n\nexport type SimpleChartProps = {\n type?: \"bar\" | \"line\" | \"scatter\";\n} & (SimpleBarProps | SimpleLineProps | SimpleScatterProps);\n\nexport function SimpleChart(props: SimpleChartProps): ReactElement {\n switch (props.type ?? \"bar\") {\n case \"bar\":\n return <SimpleBar {...(props as any)} />;\n case \"line\":\n return <SimpleLine {...(props as any)} />;\n case \"scatter\":\n return <SimpleScatter {...(props as any)} />;\n }\n}\n","import { ComponentMeta, PropType } from \"@plasmicapp/host/registerComponent\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { SimpleChart, SimpleChartProps } from \"./SimpleChart\";\n\nexport * from \"./SimpleChart\";\nexport default SimpleChart;\n\nconst fieldChoice: PropType<SimpleChartProps> = {\n type: \"choice\",\n options: (props: SimpleChartProps) =>\n props.data?.[0] ? Object.keys(props.data[0]) : [],\n} as const;\nconst simpleChartMeta: ComponentMeta<SimpleChartProps> = {\n name: \"hostless-react-chartjs-2-simple-chart\",\n displayName: \"Chart\",\n props: {\n type: {\n type: \"choice\",\n options: [\n {\n value: \"bar\",\n label: \"Bar\",\n },\n {\n value: \"line\",\n label: \"Line\",\n },\n {\n value: \"scatter\",\n label: \"Scatter\",\n },\n ],\n defaultValueHint: \"bar\",\n },\n data: {\n type: \"exprEditor\",\n description: \"The data as an array of objects\",\n defaultExpr: JSON.stringify([\n {\n region: \"APAC\",\n revenue: 3294,\n spend: 2675,\n },\n {\n region: \"EMEA\",\n revenue: 3245,\n spend: 3895,\n },\n {\n region: \"LATAM\",\n revenue: 2165,\n spend: 3498,\n },\n {\n region: \"AMER\",\n revenue: 3215,\n spend: 1656,\n },\n ]),\n },\n labelField: {\n ...fieldChoice,\n hidden: (props) => props.type === \"scatter\",\n },\n title: \"string\",\n interactive: {\n type: \"boolean\",\n },\n // Bar chart\n direction: {\n type: \"choice\",\n options: [\"horizontal\", \"vertical\"].map((dir) => ({\n value: dir,\n label: dir[0].toUpperCase() + dir.slice(1),\n })),\n defaultValueHint: \"Vertical\",\n hidden: (props) => props.type !== \"bar\",\n },\n stacked: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"bar\",\n },\n // Line chart\n fill: {\n type: \"boolean\",\n hidden: (props) => props.type !== \"line\",\n },\n secondAxisField: {\n ...fieldChoice,\n hidden: (props) => props.type !== \"line\",\n },\n\n // TODO\n // datasets: {\n // type: \"array\",\n // unstable__keyFunc: (x) => x.key,\n // unstable__minimalValue: (_props, ctx) => null,\n // itemType: {\n // type: \"object\",\n // fields: {\n // label: \"string\",\n // fieldId: \"string\",\n // hidden: {\n // type: \"boolean\",\n // },\n // },\n // },\n // },\n },\n\n defaultStyles: {\n width: \"stretch\",\n },\n\n importName: \"SimpleChart\",\n importPath: \"@plasmicpkgs/react-chartjs-2\",\n};\n\nexport function registerSimpleChart(loader?: Registerable) {\n registerComponentHelper(loader, SimpleChart, simpleChartMeta);\n}\n","import { registerSimpleChart } from \"./simple-chart\";\nimport { Registerable } from \"./utils\";\n\nexport { SimpleChart } from \"./simple-chart\";\n\nexport function registerAll(loader?: Registerable) {\n registerSimpleChart(loader);\n}\n"],"names":["registerComponentHelper","loader","component","meta","registerComponent","baseOptions","responsive","chartArea","defaultColors","useIsClient","useState","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.47",
3
+ "version": "1.0.49",
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.102",
32
- "@plasmicapp/host": "1.0.157",
31
+ "@plasmicapp/data-sources": "0.1.104",
32
+ "@plasmicapp/host": "1.0.159",
33
33
  "@size-limit/preset-small-lib": "^4.11.0",
34
34
  "@types/node": "^14.0.26",
35
35
  "chart.js": "^4.2.1",
@@ -52,5 +52,5 @@
52
52
  "dependencies": {
53
53
  "deepmerge": "^4.3.1"
54
54
  },
55
- "gitHead": "7569dd15624b746deaea9cf9631a43961a30f52f"
55
+ "gitHead": "61a308488cd6fd80d9dcd5c0fa23dc7d3cd97e1f"
56
56
  }