@automattic/charts 0.53.0 → 0.53.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/dist/charts/bar-chart/index.cjs +5 -5
- package/dist/charts/bar-chart/index.d.cts +1 -1
- package/dist/charts/bar-chart/index.d.ts +1 -1
- package/dist/charts/bar-chart/index.js +4 -4
- package/dist/charts/bar-list-chart/index.cjs +6 -6
- package/dist/charts/bar-list-chart/index.d.cts +1 -1
- package/dist/charts/bar-list-chart/index.d.ts +1 -1
- package/dist/charts/bar-list-chart/index.js +5 -5
- package/dist/charts/conversion-funnel-chart/index.cjs +4 -4
- package/dist/charts/conversion-funnel-chart/index.d.cts +1 -1
- package/dist/charts/conversion-funnel-chart/index.d.ts +1 -1
- package/dist/charts/conversion-funnel-chart/index.js +3 -3
- package/dist/charts/geo-chart/index.cjs +13 -0
- package/dist/charts/geo-chart/index.cjs.map +1 -0
- package/dist/charts/geo-chart/index.css +8 -0
- package/dist/charts/geo-chart/index.css.map +1 -0
- package/dist/charts/geo-chart/index.d.cts +62 -0
- package/dist/charts/geo-chart/index.d.ts +62 -0
- package/dist/charts/geo-chart/index.js +13 -0
- package/dist/charts/geo-chart/index.js.map +1 -0
- package/dist/charts/leaderboard-chart/index.cjs +5 -5
- package/dist/charts/leaderboard-chart/index.d.cts +2 -2
- package/dist/charts/leaderboard-chart/index.d.ts +2 -2
- package/dist/charts/leaderboard-chart/index.js +4 -4
- package/dist/charts/line-chart/index.cjs +5 -5
- package/dist/charts/line-chart/index.d.cts +1 -1
- package/dist/charts/line-chart/index.d.ts +1 -1
- package/dist/charts/line-chart/index.js +4 -4
- package/dist/charts/pie-chart/index.cjs +6 -6
- package/dist/charts/pie-chart/index.d.cts +1 -1
- package/dist/charts/pie-chart/index.d.ts +1 -1
- package/dist/charts/pie-chart/index.js +5 -5
- package/dist/charts/pie-semi-circle-chart/index.cjs +6 -6
- package/dist/charts/pie-semi-circle-chart/index.d.cts +1 -1
- package/dist/charts/pie-semi-circle-chart/index.d.ts +1 -1
- package/dist/charts/pie-semi-circle-chart/index.js +5 -5
- package/dist/{chunk-ERGEUE7R.cjs → chunk-4KEE36W3.cjs} +19 -19
- package/dist/chunk-4KEE36W3.cjs.map +1 -0
- package/dist/{chunk-4RYV2TII.js → chunk-6RKPV3UP.js} +10 -10
- package/dist/{chunk-VER6S543.js → chunk-ALDWCNLH.js} +3 -3
- package/dist/chunk-CLSMJQCO.cjs +121 -0
- package/dist/chunk-CLSMJQCO.cjs.map +1 -0
- package/dist/{chunk-2FRTJVQ3.js → chunk-DCZ47KPZ.js} +6 -6
- package/dist/chunk-DCZ47KPZ.js.map +1 -0
- package/dist/{chunk-GWNXOI4M.cjs → chunk-DDV5726Q.cjs} +25 -25
- package/dist/{chunk-GWNXOI4M.cjs.map → chunk-DDV5726Q.cjs.map} +1 -1
- package/dist/{chunk-O2BJMTIS.js → chunk-DYMJWNYM.js} +2 -2
- package/dist/{chunk-A7X3CNEO.cjs → chunk-FVWTBK44.cjs} +6 -6
- package/dist/{chunk-A7X3CNEO.cjs.map → chunk-FVWTBK44.cjs.map} +1 -1
- package/dist/{chunk-ZN7KVU4R.cjs → chunk-GX4XTD6V.cjs} +76 -76
- package/dist/{chunk-ZN7KVU4R.cjs.map → chunk-GX4XTD6V.cjs.map} +1 -1
- package/dist/{chunk-VTMJWCCW.js → chunk-H6XRINJE.js} +10 -10
- package/dist/{chunk-CQPKK55N.js → chunk-HPJ5XSZM.js} +60 -60
- package/dist/{chunk-CQPKK55N.js.map → chunk-HPJ5XSZM.js.map} +1 -1
- package/dist/{chunk-6QCSXXDY.cjs → chunk-JWMWOBAX.cjs} +23 -23
- package/dist/{chunk-6QCSXXDY.cjs.map → chunk-JWMWOBAX.cjs.map} +1 -1
- package/dist/{chunk-DY7IVYWP.js → chunk-KBORJZKC.js} +8 -8
- package/dist/{chunk-W4ZYJ74Q.js → chunk-KORG7ITC.js} +3 -3
- package/dist/{chunk-AHUSYMYS.cjs → chunk-LNLHCZ6F.cjs} +28 -28
- package/dist/{chunk-AHUSYMYS.cjs.map → chunk-LNLHCZ6F.cjs.map} +1 -1
- package/dist/chunk-RDJ5PKC5.js +121 -0
- package/dist/chunk-RDJ5PKC5.js.map +1 -0
- package/dist/{chunk-P3QEXFTA.js → chunk-TE63Y5PX.js} +9 -1
- package/dist/chunk-TE63Y5PX.js.map +1 -0
- package/dist/{chunk-O23EGQ3H.cjs → chunk-UWAZGLHG.cjs} +22 -22
- package/dist/{chunk-O23EGQ3H.cjs.map → chunk-UWAZGLHG.cjs.map} +1 -1
- package/dist/{chunk-W3H42XRV.cjs → chunk-WKN6C4ZE.cjs} +10 -10
- package/dist/{chunk-W3H42XRV.cjs.map → chunk-WKN6C4ZE.cjs.map} +1 -1
- package/dist/{chunk-RHQIACQT.js → chunk-Z34VYZGR.js} +9 -9
- package/dist/{chunk-NYZFVI2P.cjs → chunk-ZPJHWKEK.cjs} +9 -9
- package/dist/{chunk-NYZFVI2P.cjs.map → chunk-ZPJHWKEK.cjs.map} +1 -1
- package/dist/{chunk-DAKYGZG6.cjs → chunk-ZVGEDXDP.cjs} +10 -2
- package/dist/chunk-ZVGEDXDP.cjs.map +1 -0
- package/dist/components/legend/index.cjs +4 -4
- package/dist/components/legend/index.d.cts +1 -1
- package/dist/components/legend/index.d.ts +1 -1
- package/dist/components/legend/index.js +3 -3
- package/dist/components/tooltip/index.d.cts +1 -1
- package/dist/components/tooltip/index.d.ts +1 -1
- package/dist/hooks/index.cjs +3 -3
- package/dist/hooks/index.d.cts +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.js +2 -2
- package/dist/index.cjs +26 -126
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +15 -55
- package/dist/index.d.ts +15 -55
- package/dist/index.js +38 -138
- package/dist/index.js.map +1 -1
- package/dist/{leaderboard-chart-3dKYMfoP.d.cts → leaderboard-chart-CN80sJmQ.d.cts} +1 -1
- package/dist/{leaderboard-chart-BqH8BLiG.d.ts → leaderboard-chart-DPi2ueOg.d.ts} +1 -1
- package/dist/providers/index.cjs +3 -3
- package/dist/providers/index.d.cts +2 -2
- package/dist/providers/index.d.ts +2 -2
- package/dist/providers/index.js +2 -2
- package/dist/{themes-ChB_VjWt.d.ts → themes-AriuFXQ2.d.ts} +2 -2
- package/dist/{themes-DijSDhqQ.d.cts → themes-Dzg0wE3B.d.cts} +2 -2
- package/dist/{types-sQ20gAeB.d.cts → types-D1lTxRyg.d.cts} +1 -1
- package/dist/{types-sQ20gAeB.d.ts → types-D1lTxRyg.d.ts} +1 -1
- package/dist/utils/index.cjs +4 -2
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +11 -2
- package/dist/utils/index.d.ts +11 -2
- package/dist/utils/index.js +3 -1
- package/package.json +31 -23
- package/src/charts/conversion-funnel-chart/conversion-funnel-chart.tsx +2 -5
- package/src/charts/sparkline/sparkline.tsx +2 -0
- package/src/charts/sparkline/types.ts +8 -0
- package/src/utils/color-utils.ts +19 -0
- package/src/utils/test/color-utils.test.ts +232 -0
- package/dist/chunk-2FRTJVQ3.js.map +0 -1
- package/dist/chunk-DAKYGZG6.cjs.map +0 -1
- package/dist/chunk-ERGEUE7R.cjs.map +0 -1
- package/dist/chunk-P3QEXFTA.js.map +0 -1
- /package/dist/{chunk-4RYV2TII.js.map → chunk-6RKPV3UP.js.map} +0 -0
- /package/dist/{chunk-VER6S543.js.map → chunk-ALDWCNLH.js.map} +0 -0
- /package/dist/{chunk-O2BJMTIS.js.map → chunk-DYMJWNYM.js.map} +0 -0
- /package/dist/{chunk-VTMJWCCW.js.map → chunk-H6XRINJE.js.map} +0 -0
- /package/dist/{chunk-DY7IVYWP.js.map → chunk-KBORJZKC.js.map} +0 -0
- /package/dist/{chunk-W4ZYJ74Q.js.map → chunk-KORG7ITC.js.map} +0 -0
- /package/dist/{chunk-RHQIACQT.js.map → chunk-Z34VYZGR.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/chunk-ZVGEDXDP.cjs","../src/utils/create-composition.ts","../src/utils/date-parsing.ts","../src/utils/format-metric-value.ts","../src/utils/format-percentage.ts","../src/utils/get-longest-tick-width.ts","../src/utils/get-styles.ts","../src/utils/is-safari.ts","../src/utils/merge-themes.ts","../src/utils/color-utils.ts","../src/utils/resolve-css-var.ts"],"names":["formatNumber","varName"],"mappings":"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","file":"/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/chunk-ZVGEDXDP.cjs","sourcesContent":[null,"/**\n * Utility function to create chart components with composition API.\n *\n * This function attaches subcomponents to a chart component to enable\n * dot notation access like <Chart.Legend />, <Chart.Tooltip />, etc.\n *\n * @param Chart - The main chart component\n * @param subComponents - Object containing subcomponents to attach\n * @return Chart component with attached subcomponents\n */\nexport function attachSubComponents< TChart, TSubComponents extends Record< string, unknown > >(\n\tChart: TChart,\n\tsubComponents: TSubComponents\n): TChart & TSubComponents {\n\treturn Object.assign( Chart, subComponents );\n}\n","/**\n * @file Date parsing utilities using date-fns for local timezone handling\n *\n * This module provides utilities for parsing various date string formats and converting\n * them to local timezone dates using the battle-tested date-fns library. For formats\n * without timezone info, they're treated as local. For formats with timezone info,\n * they're converted to the equivalent local time.\n *\n * Note: And specifically it prevents format `YYYY-MM-DD` being parsed as UTC date.\n *\n * Key Features:\n * - All parsed dates are in local timezone\n * - Converts timezone-aware strings to local equivalent\n * - Robust input validation and error handling using date-fns\n * - TypeScript type safety\n * - Much smaller codebase than custom parsing\n *\n * Supported Formats:\n * - YYYY-MM-DD (treated as local)\n * - YYYY-MM-DD HH:mm:ss (treated as local)\n * - YYYY-MM-DD HH:mm (treated as local)\n * - YYYY-MM-DDTHH:mm:ss (treated as local)\n * - YYYY-MM-DDTHH:mm:ss.SSS (treated as local)\n * - YYYY-MM-DDTHH:mm (treated as local)\n * - YYYY-MM-DDTHH:mm:ssZ (converted to local)\n * - YYYY-MM-DDTHH:mm:ss±HH:mm (converted to local)\n *\n * @example\n * ```typescript\n * parseAsLocalDate(\"2025-01-01\"); // Local timezone\n * parseAsLocalDate(\"2025-01-01 14:30:00\"); // Local timezone\n * parseAsLocalDate(\"2025-01-01 14:30\"); // Local timezone\n * parseAsLocalDate(\"2025-01-01T14:30:45.123\"); // Local timezone\n * parseAsLocalDate(\"2025-01-01T14:30:00Z\"); // UTC 14:30 → Local equivalent\n * parseAsLocalDate(\"2025-01-01T14:30:00+05:00\"); // +05:00 14:30 → Local equivalent\n * ```\n */\n\nimport { parse, parseISO, isValid } from 'date-fns';\n\n/**\n * Checks if a date string contains timezone information\n * @param {string} dateString - The date string to check for timezone information\n * @return {boolean} True if the date string contains timezone information, false otherwise\n */\nconst hasTimezone = ( dateString: string ): boolean => {\n\treturn /T.*[Z]$|T.*[+-]\\d{2}:?\\d{2}$/.test( dateString );\n};\n\n/**\n * Parses any supported date string format and returns a local timezone date\n *\n * Uses date-fns for robust parsing and validation. For strings without timezone\n * info, treats as local timezone. For strings with timezone info, converts to\n * local timezone equivalent.\n *\n * Supports:\n * - YYYY-MM-DD (local)\n * - YYYY-MM-DD HH:mm:ss (local)\n * - YYYY-MM-DD HH:mm (local)\n * - YYYY-MM-DDTHH:mm:ss (local)\n * - YYYY-MM-DDTHH:mm:ss.SSS (local)\n * - YYYY-MM-DDTHH:mm (local)\n * - YYYY-MM-DDTHH:mm:ssZ (UTC → local)\n * - YYYY-MM-DDTHH:mm:ss±HH:mm (offset → local)\n * @param {string} dateString - The date string to parse into a local timezone date\n * @return {Date} A Date object representing the parsed date in local timezone, or an invalid Date if parsing fails\n */\nexport const parseAsLocalDate = ( dateString: string ): Date => {\n\tconst trimmedString = dateString.trim();\n\n\t// If it has timezone information, parse as ISO and convert to local\n\tif ( hasTimezone( trimmedString ) ) {\n\t\tconst isoDate = parseISO( trimmedString );\n\n\t\tif ( ! isValid( isoDate ) ) {\n\t\t\treturn new Date( NaN );\n\t\t}\n\n\t\t// parseISO automatically converts to local timezone\n\t\treturn isoDate;\n\t}\n\n\t// For naive strings, try different local formats\n\tconst formats = [\n\t\t'yyyy-MM-dd', // 2025-01-01\n\t\t'yyyy-MM-dd HH:mm:ss', // 2025-01-01 14:30:45\n\t\t'yyyy-MM-dd HH:mm', // 2025-01-01 14:30\n\t\t\"yyyy-MM-dd'T'HH:mm:ss\", // 2025-01-01T14:30:45\n\t\t\"yyyy-MM-dd'T'HH:mm:ss.SSS\", // 2025-01-01T14:30:45.123\n\t\t\"yyyy-MM-dd'T'HH:mm\", // 2025-01-01T14:30\n\t];\n\n\tfor ( const format of formats ) {\n\t\tconst result = parse( trimmedString, format, new Date() );\n\t\tif ( isValid( result ) ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\t// If no format matched, return invalid date\n\treturn new Date( NaN );\n};\n","import { formatNumberCompact, formatNumber } from '@automattic/number-formatters';\n\n/**\n * Types for formatMetricValue\n */\nexport type MetricValueType = 'number' | 'average' | 'currency';\n\ntype FormatMetricValueOptions = {\n\tdecimals?: number;\n\tuseMultipliers?: boolean;\n\tsignDisplay?: Intl.NumberFormatOptions[ 'signDisplay' ];\n};\n\n/**\n * Format a numeric metric value based on type, precision and scale.\n * Supports currency, number and percentage, using `@automattic/number-formatters`.\n *\n * @param value - The value to format\n * @param type - The type of formatting to apply\n * @param options - Formatting options\n * @param options.decimals - Number of decimal places to show\n * @param options.useMultipliers - Whether to use K, M, B suffixes for large numbers\n * @param options.signDisplay - Controls when to display the sign (auto, always, never, exceptZero)\n * @return Formatted string\n */\nexport const formatMetricValue = (\n\tvalue: string | number,\n\ttype: MetricValueType = 'number',\n\t{ decimals, useMultipliers = false, signDisplay }: FormatMetricValueOptions = {}\n): string => {\n\tif ( value === null || value === undefined ) {\n\t\treturn '';\n\t}\n\n\tconst numericValue = Number( value );\n\tif ( isNaN( numericValue ) ) {\n\t\treturn '';\n\t}\n\n\tswitch ( type ) {\n\t\tcase 'currency': {\n\t\t\t// Basic currency formatting - can be enhanced with full currency support\n\t\t\tconst formatted = useMultipliers\n\t\t\t\t? formatNumberCompact( numericValue, {\n\t\t\t\t\t\tdecimals: decimals ?? 2,\n\t\t\t\t\t\tnumberFormatOptions: {\n\t\t\t\t\t\t\tmaximumFractionDigits: decimals ?? 2,\n\t\t\t\t\t\t\tsignDisplay,\n\t\t\t\t\t\t},\n\t\t\t\t } )\n\t\t\t\t: formatNumber( numericValue, {\n\t\t\t\t\t\tdecimals: decimals ?? 2,\n\t\t\t\t\t\tnumberFormatOptions: {\n\t\t\t\t\t\t\tsignDisplay,\n\t\t\t\t\t\t},\n\t\t\t\t } );\n\t\t\treturn `$${ formatted }`;\n\t\t}\n\n\t\tcase 'average': {\n\t\t\tif ( ! Number.isFinite( numericValue ) ) {\n\t\t\t\treturn '—';\n\t\t\t}\n\n\t\t\treturn formatNumber( numericValue, {\n\t\t\t\tdecimals: decimals ?? 0,\n\t\t\t\tnumberFormatOptions: {\n\t\t\t\t\tstyle: 'percent',\n\t\t\t\t\tsignDisplay: signDisplay ?? 'exceptZero',\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\tcase 'number':\n\t\tdefault: {\n\t\t\treturn useMultipliers\n\t\t\t\t? formatNumberCompact( numericValue, {\n\t\t\t\t\t\tdecimals: decimals ?? 0,\n\t\t\t\t\t\tnumberFormatOptions: {\n\t\t\t\t\t\t\tmaximumFractionDigits: decimals ?? 0,\n\t\t\t\t\t\t\tsignDisplay,\n\t\t\t\t\t\t},\n\t\t\t\t } )\n\t\t\t\t: formatNumber( numericValue, {\n\t\t\t\t\t\tdecimals: decimals ?? 0,\n\t\t\t\t\t\tnumberFormatOptions: {\n\t\t\t\t\t\t\tsignDisplay,\n\t\t\t\t\t\t},\n\t\t\t\t } );\n\t\t}\n\t}\n};\n","import { formatNumber } from '@automattic/number-formatters';\n\n/**\n * Format a percentage value with smart decimal handling.\n * Uses `@automattic/number-formatters` for consistent formatting.\n * Removes unnecessary trailing zeros and caps at 2 decimal places.\n *\n * @param value - The percentage value (0-100 range)\n * @return Formatted percentage string (e.g., \"30%\", \"30.1%\", \"30.25%\")\n */\nexport const formatPercentage = ( value: number ): string => {\n\t// Use formatNumber with percentage style, but convert from 0-100 range to 0-1 range\n\treturn formatNumber( value / 100, {\n\t\tnumberFormatOptions: {\n\t\t\tstyle: 'percent',\n\t\t\tminimumFractionDigits: 0,\n\t\t\tmaximumFractionDigits: 2,\n\t\t},\n\t} );\n};\n","import { getStringWidth } from '@visx/text';\nimport type { TickFormatter } from '@visx/axis';\nimport type { AnyD3Scale, ScaleInput } from '@visx/scale';\n\n/**\n * Returns the width of the longest tick.\n *\n * @param ticks - Ticks to get the width of.\n * @param formatTick - Function to format the tick.\n * @param {object} labelStyle - Style object for the label.\n * @return {number} - Width of the longest tick.\n */\nexport const getLongestTickWidth = < T extends AnyD3Scale >(\n\tticks: ScaleInput< T >[],\n\tformatTick: TickFormatter< ScaleInput< T > >,\n\tlabelStyle?: object\n) => {\n\tconst formattedTicks = ticks.map( tick => formatTick( tick, 0, [] ) );\n\tconst longestTick = formattedTicks.reduce(\n\t\t( longest, current ) => ( longest.length >= current.length ? longest : current ),\n\t\tformattedTicks[ 0 ]\n\t);\n\n\treturn getStringWidth( longestTick, labelStyle );\n};\n","import type { ChartTheme, SeriesData } from '../types';\nimport type { LegendShape } from '@visx/legend/lib/types';\nimport type { LineStyles } from '@visx/xychart';\n\n/**\n * Utility function to get consolidated line styles for a series\n * This consolidates the logic used by both LineChart and Legend components\n *\n * @param {SeriesData} seriesData - The series data containing styling options\n * @param {number} index - The index of the series in the data array\n * @param {ChartTheme} providerTheme - The chart theme configuration\n * @return {LineStyles} The consolidated line styles for the series\n */\nexport function getSeriesLineStyles(\n\tseriesData: SeriesData,\n\tindex: number,\n\tproviderTheme: ChartTheme\n): LineStyles {\n\t// Get theme-based line styles for line type\n\tconst themeSemanticLineStyle = providerTheme?.lineChart?.lineStyles?.[ seriesData.options?.type ];\n\n\t// Get theme-based line styles for index of series data\n\tconst themeSeriesLineStyle =\n\t\tproviderTheme?.seriesLineStyles?.[ index % providerTheme.seriesLineStyles.length ];\n\n\t// Priority order: custom series style > theme line type style > default theme series style\n\treturn (\n\t\tseriesData.options?.seriesLineStyle ?? themeSemanticLineStyle ?? themeSeriesLineStyle ?? {}\n\t);\n}\n\n/**\n * Utility function to get stroke color for a series\n *\n * @param {SeriesData} seriesData - The series data containing styling options\n * @param {number} index - The index of the series in the data array\n * @param {string[]} themeColors - Array of theme colors\n * @return {string} The stroke color for the series\n */\nexport function getSeriesStroke(\n\tseriesData: SeriesData,\n\tindex: number,\n\tthemeColors: string[]\n): string {\n\treturn seriesData.options?.stroke ?? themeColors[ index % themeColors.length ];\n}\n\n/**\n * Utility function to get shape styles for a legend item\n *\n * @param {SeriesData} series - The series data containing styling options\n * @param {number} index - The index of the series in the data array\n * @param {ChartTheme} theme - The chart theme configuration\n * @param {LegendShape} legendShape - The shape to use for the item (optional)\n * @return {Record< string, unknown >} The shape styles for the item\n */\nexport function getItemShapeStyles(\n\tseries: SeriesData,\n\tindex: number,\n\ttheme: ChartTheme,\n\tlegendShape?: LegendShape< SeriesData[], number >\n): Record< string, unknown > {\n\tconst seriesShapeStyles = series.options?.legendShapeStyle ?? {};\n\tconst lineStyles = legendShape === 'line' ? getSeriesLineStyles( series, index, theme ) : {};\n\tconst themeShapeStyles = theme.legendShapeStyles?.[ index ];\n\n\tconst itemShapeStyles = {\n\t\t...seriesShapeStyles,\n\t\t...lineStyles,\n\t};\n\n\t// Return item shape styles if they are not empty\n\tif (\n\t\tObject.values( itemShapeStyles ).some(\n\t\t\tvalue => value !== undefined && value !== null && value !== ''\n\t\t)\n\t) {\n\t\treturn itemShapeStyles;\n\t}\n\n\t// Fallback to theme shape styles if defined\n\treturn themeShapeStyles ?? {};\n}\n","export const isSafari = () => {\n\tif ( typeof navigator !== 'undefined' && navigator.userAgent ) {\n\t\treturn /^((?!chrome|android).)*safari/i.test( navigator.userAgent );\n\t}\n\treturn false;\n};\n","import deepmerge from 'deepmerge';\nimport type { ChartTheme, CompleteChartTheme } from '../types';\n\n/**\n * Merges chart themes with proper precedence.\n * The second theme (override) takes precedence over the first theme (base).\n *\n * @param baseTheme - Base theme object\n * @param overrideTheme - Theme to override base with (takes precedence)\n * @return Merged theme with overrideTheme values taking precedence\n */\nexport function mergeThemes(\n\tbaseTheme: CompleteChartTheme,\n\toverrideTheme: Partial< ChartTheme >\n): CompleteChartTheme;\nexport function mergeThemes(\n\tbaseTheme: ChartTheme,\n\toverrideTheme: Partial< ChartTheme >\n): ChartTheme;\nexport function mergeThemes(\n\tbaseTheme: ChartTheme,\n\toverrideTheme: Partial< ChartTheme >\n): ChartTheme {\n\t// Use deepmerge to properly merge nested objects, with overrideTheme taking precedence\n\treturn deepmerge( baseTheme, overrideTheme, {\n\t\t// Ensure arrays are replaced rather than concatenated\n\t\tarrayMerge: ( _destinationArray, sourceArray ) => sourceArray,\n\t} ) as ChartTheme;\n}\n","import { color as d3Color, hsl as d3Hsl } from '@visx/vendor/d3-color';\n\n/**\n * Check if a value is a valid 6-digit hex color\n * @param hex - The value to check\n * @return true if valid hex color format (e.g., '#ff0000')\n */\nexport const isValidHexColor = ( hex: unknown ): hex is string => {\n\treturn typeof hex === 'string' && /^#[0-9a-fA-F]{6}$/.test( hex );\n};\n\n/**\n * Validate hex color format, throwing descriptive errors if invalid\n * @param hex - The hex color string to validate\n * @throws {Error} if hex string is malformed\n */\nexport const validateHexColor = ( hex: unknown ): void => {\n\tif ( isValidHexColor( hex ) ) {\n\t\treturn;\n\t}\n\n\t// Provide specific error messages for common issues\n\tif ( typeof hex !== 'string' ) {\n\t\tthrow new Error( 'Hex color must be a string' );\n\t}\n\tif ( ! hex.startsWith( '#' ) ) {\n\t\tthrow new Error( 'Hex color must start with #' );\n\t}\n\tif ( hex.length !== 7 ) {\n\t\tthrow new Error( 'Hex color must be 7 characters long (e.g., #ff0000)' );\n\t}\n\tthrow new Error( 'Hex color contains invalid characters. Only 0-9, a-f, A-F are allowed' );\n};\n\n/**\n * Convert hex color to rgba with specified opacity.\n * This is genuinely reusable across chart components.\n * @param hex - The hex color string (e.g., '#ff0000')\n * @param alpha - The opacity value. Values outside the [0, 1] range will be clamped by the underlying d3 color library.\n * @return The rgba color string (e.g., 'rgba(255, 0, 0, 0.5)')\n * @throws {Error} if hex string is malformed or alpha is not a valid number\n */\nexport const hexToRgba = ( hex: string, alpha: number ): string => {\n\tvalidateHexColor( hex );\n\n\tif ( typeof alpha !== 'number' || isNaN( alpha ) ) {\n\t\tthrow new Error( 'Alpha must be a number' );\n\t}\n\n\t// Safe to use non-null assertion since validateHexColor ensures valid hex\n\treturn d3Color( hex )!.copy( { opacity: alpha } ).formatRgb();\n};\n\n/**\n * Calculate the perceptual distance between two HSL colors\n * @param hsl1 - first color in HSL format [h, s, l]\n * @param hsl2 - second color in HSL format [h, s, l]\n * @return distance value (0-100+, lower means more similar)\n */\nexport const getColorDistance = (\n\thsl1: [ number, number, number ],\n\thsl2: [ number, number, number ]\n): number => {\n\tconst [ h1, s1, l1 ] = hsl1;\n\tconst [ h2, s2, l2 ] = hsl2;\n\n\t// Calculate hue difference, accounting for circular nature (0° = 360°)\n\tlet hueDiff = Math.abs( h1 - h2 );\n\thueDiff = Math.min( hueDiff, 360 - hueDiff );\n\n\t// Weight the differences: hue is most important, then lightness, then saturation\n\tconst hueWeight = 2;\n\tconst lightnessWeight = 1;\n\tconst saturationWeight = 0.5;\n\n\treturn Math.sqrt(\n\t\tMath.pow( hueDiff * hueWeight, 2 ) +\n\t\t\tMath.pow( ( l1 - l2 ) * lightnessWeight, 2 ) +\n\t\t\tMath.pow( ( s1 - s2 ) * saturationWeight, 2 )\n\t);\n};\n\n/**\n * Parse an HSL string like 'hsl(120, 50%, 50%)' into an HSL tuple.\n *\n * @param hslString - HSL color string\n * @return HSL tuple [h, s, l] or null if invalid\n */\nexport const parseHslString = ( hslString: string ): [ number, number, number ] | null => {\n\tconst lower = hslString.toLowerCase().trim();\n\n\t// Check prefix - d3-color handles the parsing\n\tif ( ! lower.startsWith( 'hsl(' ) ) {\n\t\treturn null;\n\t}\n\n\tconst parsed = d3Hsl( lower );\n\n\t// d3Hsl returns NaN values for invalid colors\n\tif ( isNaN( parsed.h ) && isNaN( parsed.s ) && isNaN( parsed.l ) ) {\n\t\treturn null;\n\t}\n\n\t// Normalize hue to 0-360 range (d3 may return NaN for achromatic colors)\n\tconst h = isNaN( parsed.h ) ? 0 : ( ( parsed.h % 360 ) + 360 ) % 360;\n\n\t// d3-color uses 0-1 scale, convert to 0-100\n\treturn [ h, parsed.s * 100, parsed.l * 100 ];\n};\n\n/**\n * Parse an RGB string like 'rgb(255, 0, 0)' into a hex color.\n *\n * @param rgbString - RGB color string\n * @return hex color string or null if invalid\n */\nexport const parseRgbString = ( rgbString: string ): string | null => {\n\tconst lower = rgbString.toLowerCase().trim();\n\n\t// Check prefix - only handle rgb(), not rgba()\n\tif ( ! lower.startsWith( 'rgb(' ) || lower.startsWith( 'rgba(' ) ) {\n\t\treturn null;\n\t}\n\n\tconst parsed = d3Color( lower );\n\n\t// d3Color returns null for invalid colors\n\tif ( ! parsed ) {\n\t\treturn null;\n\t}\n\n\t// d3-color clamps values automatically\n\treturn parsed.formatHex();\n};\n\n/**\n * Normalize any CSS color value to a hex color string.\n * Handles hex colors, HSL strings, RGB strings, and CSS variables.\n *\n * @param color - Any CSS color value\n * @param element - Optional DOM element for resolving CSS variables\n * @param resolveCss - Function to resolve CSS variables (injected for testability)\n * @return hex color string, or the original value if conversion fails\n */\nexport const normalizeColorToHex = (\n\tcolor: string,\n\telement?: HTMLElement | null,\n\tresolveCss?: ( value: string, el?: HTMLElement | null ) => string | null\n): string => {\n\tif ( ! color || typeof color !== 'string' ) {\n\t\treturn '';\n\t}\n\n\t// Already a valid hex color (6-digit format)\n\tif ( /^#[0-9a-fA-F]{6}$/.test( color ) ) {\n\t\treturn color;\n\t}\n\n\tconst trimmed = color.trim().toLowerCase();\n\n\t// Handle 3-digit hex colors - expand to 6-digit\n\tif ( /^#[0-9a-f]{3}$/i.test( trimmed ) ) {\n\t\tconst r = trimmed[ 1 ];\n\t\tconst g = trimmed[ 2 ];\n\t\tconst b = trimmed[ 3 ];\n\t\treturn `#${ r }${ r }${ g }${ g }${ b }${ b }`;\n\t}\n\n\t// Handle CSS variables - must be resolved before d3-color can parse\n\tif ( trimmed.startsWith( '--' ) || trimmed.startsWith( 'var(' ) ) {\n\t\tif ( resolveCss ) {\n\t\t\tconst resolved = resolveCss( color, element );\n\t\t\tif ( resolved ) {\n\t\t\t\t// Recursively normalize the resolved value\n\t\t\t\treturn normalizeColorToHex( resolved, element, resolveCss );\n\t\t\t}\n\t\t}\n\t\t// Can't resolve CSS variable, return original\n\t\treturn color;\n\t}\n\n\t// Handle HSL and RGB strings using d3-color\n\tif ( trimmed.startsWith( 'hsl(' ) || trimmed.startsWith( 'rgb(' ) ) {\n\t\t// Reject rgba() - we only handle rgb()\n\t\tif ( trimmed.startsWith( 'rgba(' ) ) {\n\t\t\treturn color;\n\t\t}\n\t\tconst parsed = d3Color( trimmed );\n\t\tif ( parsed ) {\n\t\t\treturn parsed.formatHex();\n\t\t}\n\t\treturn color;\n\t}\n\n\t// Unknown format, return as-is\n\treturn color;\n};\n\n/**\n * Lighten a hex color by blending it with white.\n * Useful for creating color gradients or lighter variants.\n *\n * @param hex - Hex color string (e.g., '#98C8DF')\n * @param blend - Blend amount with white (0 = original color, 1 = white)\n * @return Lightened hex color string (e.g., '#cce4ef')\n * @throws {Error} if hex string is malformed\n */\nexport const lightenHexColor = ( hex: string, blend: number ): string => {\n\tvalidateHexColor( hex );\n\n\tconst r = parseInt( hex.slice( 1, 3 ), 16 );\n\tconst g = parseInt( hex.slice( 3, 5 ), 16 );\n\tconst b = parseInt( hex.slice( 5, 7 ), 16 );\n\n\t// Blend with white (255, 255, 255)\n\tconst newR = Math.round( r + ( 255 - r ) * blend );\n\tconst newG = Math.round( g + ( 255 - g ) * blend );\n\tconst newB = Math.round( b + ( 255 - b ) * blend );\n\n\treturn `#${ newR.toString( 16 ).padStart( 2, '0' ) }${ newG\n\t\t.toString( 16 )\n\t\t.padStart( 2, '0' ) }${ newB.toString( 16 ).padStart( 2, '0' ) }`;\n};\n","/**\n * Pattern for valid CSS custom property names (e.g., '--my-color', '--jp-gray-10')\n */\nconst CSS_VAR_NAME_PATTERN = /^--[\\w-]+$/;\n\n/**\n * Resolves a CSS custom property (variable) to its computed value.\n * Handles multiple formats:\n * - Plain variable names: '--my-color'\n * - CSS var() syntax: 'var(--my-color)'\n * - CSS var() with fallback: 'var(--my-color, #ffffff)'\n * - Regular values (returned as-is): '#ffffff', 'red'\n *\n * @param value - A CSS variable name, var() expression, or regular value\n * @param element - Optional DOM element to resolve the variable from (defaults to document.documentElement)\n * @return The resolved value, fallback value, or null if unresolvable\n */\nexport const resolveCssVariable = (\n\tvalue: string,\n\telement?: HTMLElement | null\n): string | null => {\n\tif ( ! value ) {\n\t\treturn null;\n\t}\n\n\t// Check if it's a var() expression: var(--name) or var(--name, fallback)\n\t// Parse manually to avoid regex backtracking vulnerabilities\n\tif ( value.startsWith( 'var(' ) && value.endsWith( ')' ) ) {\n\t\tconst parsed = parseVarExpression( value );\n\n\t\tif ( parsed ) {\n\t\t\tconst resolved = resolveVariableName( parsed.varName, element );\n\n\t\t\treturn resolved || parsed.fallback;\n\t\t}\n\t}\n\n\t// Check if it's a plain variable name (starts with --)\n\tif ( value.startsWith( '--' ) ) {\n\t\treturn resolveVariableName( value, element );\n\t}\n\n\t// Return regular values as-is (e.g., '#ffffff', 'red')\n\treturn value;\n};\n\n/**\n * Parses a var() expression into its variable name and optional fallback.\n * Uses string manipulation instead of complex regex to avoid ReDoS.\n *\n * @param expr - A var() expression like 'var(--name)' or 'var(--name, fallback)'\n * @return Parsed result or null if invalid\n */\nfunction parseVarExpression( expr: string ): { varName: string; fallback: string | null } | null {\n\t// Remove 'var(' prefix and ')' suffix\n\tconst inner = expr.slice( 4, -1 ).trim();\n\n\tif ( ! inner.startsWith( '--' ) ) {\n\t\treturn null;\n\t}\n\n\t// Find the comma separator (if any)\n\tconst commaIndex = inner.indexOf( ',' );\n\n\tif ( commaIndex === -1 ) {\n\t\t// No fallback: var(--name)\n\t\tconst varName = inner.trim();\n\t\t// Validate variable name format\n\t\tif ( ! CSS_VAR_NAME_PATTERN.test( varName ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn { varName, fallback: null };\n\t}\n\n\t// Has fallback: var(--name, fallback)\n\tconst varName = inner.slice( 0, commaIndex ).trim();\n\n\t// Validate variable name format\n\tif ( ! CSS_VAR_NAME_PATTERN.test( varName ) ) {\n\t\treturn null;\n\t}\n\n\tconst fallback = inner.slice( commaIndex + 1 ).trim();\n\n\treturn { varName, fallback: fallback || null };\n}\n\n/**\n * Resolves a plain CSS variable name to its computed value.\n *\n * @param varName - A CSS variable name like '--my-color'\n * @param element - Optional DOM element to resolve from\n * @return The computed value or null\n */\nfunction resolveVariableName( varName: string, element?: HTMLElement | null ): string | null {\n\tif ( typeof window === 'undefined' || typeof document === 'undefined' ) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst targetElement = element || document.documentElement;\n\t\tconst computedValue = getComputedStyle( targetElement ).getPropertyValue( varName ).trim();\n\n\t\treturn computedValue || null;\n\t} catch {\n\t\t// Return null if getComputedStyle throws (e.g., detached element)\n\t\treturn null;\n\t}\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
require('../../chunk-
|
|
6
|
-
require('../../chunk-
|
|
4
|
+
var _chunkZPJHWKEKcjs = require('../../chunk-ZPJHWKEK.cjs');
|
|
5
|
+
require('../../chunk-WKN6C4ZE.cjs');
|
|
6
|
+
require('../../chunk-ZVGEDXDP.cjs');
|
|
7
7
|
require('../../chunk-EMMSS5I5.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
exports.Legend =
|
|
11
|
+
exports.Legend = _chunkZPJHWKEKcjs.Legend; exports.useChartLegendItems = _chunkZPJHWKEKcjs.useChartLegendItems;
|
|
12
12
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { L as Legend } from '../../legend-C9ahiwOt.cjs';
|
|
2
|
-
import {
|
|
2
|
+
import { d as SeriesData, b as DataPointDate, e as DataPointPercentage } from '../../types-D1lTxRyg.cjs';
|
|
3
3
|
import { B as BaseLegendItem } from '../../types-C05PdDJa.cjs';
|
|
4
4
|
export { a as BaseLegendProps, L as LegendProps } from '../../types-C05PdDJa.cjs';
|
|
5
5
|
import { LegendShape } from '@visx/legend/lib/types';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { L as Legend } from '../../legend-jjMmhSg3.js';
|
|
2
|
-
import {
|
|
2
|
+
import { d as SeriesData, b as DataPointDate, e as DataPointPercentage } from '../../types-D1lTxRyg.js';
|
|
3
3
|
import { B as BaseLegendItem } from '../../types-C05PdDJa.js';
|
|
4
4
|
export { a as BaseLegendProps, L as LegendProps } from '../../types-C05PdDJa.js';
|
|
5
5
|
import { LegendShape } from '@visx/legend/lib/types';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Legend,
|
|
3
3
|
useChartLegendItems
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-ALDWCNLH.js";
|
|
5
|
+
import "../../chunk-DYMJWNYM.js";
|
|
6
|
+
import "../../chunk-TE63Y5PX.js";
|
|
7
7
|
import "../../chunk-G3PMV62Z.js";
|
|
8
8
|
export {
|
|
9
9
|
Legend,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { B as BaseTooltip, a as BaseTooltipProps, T as TooltipData } from '../../base-tooltip-DOq93wjU.cjs';
|
|
2
|
-
import {
|
|
2
|
+
import { b as DataPointDate, d as SeriesData } from '../../types-D1lTxRyg.cjs';
|
|
3
3
|
import { TooltipProps as TooltipProps$1, RenderTooltipParams } from '@visx/xychart/lib/components/Tooltip';
|
|
4
4
|
import { ReactNode } from 'react';
|
|
5
5
|
import 'react/jsx-runtime';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { B as BaseTooltip, a as BaseTooltipProps, T as TooltipData } from '../../base-tooltip-DOq93wjU.js';
|
|
2
|
-
import {
|
|
2
|
+
import { b as DataPointDate, d as SeriesData } from '../../types-D1lTxRyg.js';
|
|
3
3
|
import { TooltipProps as TooltipProps$1, RenderTooltipParams } from '@visx/xychart/lib/components/Tooltip';
|
|
4
4
|
import { ReactNode } from 'react';
|
|
5
5
|
import 'react/jsx-runtime';
|
package/dist/hooks/index.cjs
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
13
|
-
require('../chunk-
|
|
12
|
+
var _chunkWKN6C4ZEcjs = require('../chunk-WKN6C4ZE.cjs');
|
|
13
|
+
require('../chunk-ZVGEDXDP.cjs');
|
|
14
14
|
require('../chunk-EMMSS5I5.cjs');
|
|
15
15
|
|
|
16
16
|
|
|
@@ -23,5 +23,5 @@ require('../chunk-EMMSS5I5.cjs');
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
exports.useChartDataTransform =
|
|
26
|
+
exports.useChartDataTransform = _chunkWKN6C4ZEcjs.useChartDataTransform; exports.useChartMargin = _chunkWKN6C4ZEcjs.useChartMargin; exports.useChartMouseHandler = _chunkWKN6C4ZEcjs.useChartMouseHandler; exports.useDeepMemo = _chunkWKN6C4ZEcjs.useDeepMemo; exports.useElementHeight = _chunkWKN6C4ZEcjs.useElementHeight; exports.useInteractiveLegendData = _chunkWKN6C4ZEcjs.useInteractiveLegendData; exports.usePrefersReducedMotion = _chunkWKN6C4ZEcjs.usePrefersReducedMotion; exports.useTextTruncation = _chunkWKN6C4ZEcjs.useTextTruncation; exports.useXYChartTheme = _chunkWKN6C4ZEcjs.useXYChartTheme; exports.useZeroValueDisplay = _chunkWKN6C4ZEcjs.useZeroValueDisplay;
|
|
27
27
|
//# sourceMappingURL=index.cjs.map
|
package/dist/hooks/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MouseEvent } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { D as DataPoint, d as SeriesData, S as SeriesDataOptions, B as BaseChartProps, b as DataPointDate } from '../types-D1lTxRyg.cjs';
|
|
3
3
|
import * as _visx_xychart from '@visx/xychart';
|
|
4
4
|
import { XYChartTheme } from '@visx/xychart';
|
|
5
5
|
import '@visx/annotation/lib/components/CircleSubject';
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MouseEvent } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { D as DataPoint, d as SeriesData, S as SeriesDataOptions, B as BaseChartProps, b as DataPointDate } from '../types-D1lTxRyg.js';
|
|
3
3
|
import * as _visx_xychart from '@visx/xychart';
|
|
4
4
|
import { XYChartTheme } from '@visx/xychart';
|
|
5
5
|
import '@visx/annotation/lib/components/CircleSubject';
|
package/dist/hooks/index.js
CHANGED
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
useTextTruncation,
|
|
10
10
|
useXYChartTheme,
|
|
11
11
|
useZeroValueDisplay
|
|
12
|
-
} from "../chunk-
|
|
13
|
-
import "../chunk-
|
|
12
|
+
} from "../chunk-DYMJWNYM.js";
|
|
13
|
+
import "../chunk-TE63Y5PX.js";
|
|
14
14
|
import "../chunk-G3PMV62Z.js";
|
|
15
15
|
export {
|
|
16
16
|
useChartDataTransform,
|
package/dist/index.cjs
CHANGED
|
@@ -1,165 +1,63 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkGX4XTD6Vcjs = require('./chunk-GX4XTD6V.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
9
|
-
require('./chunk-7OZEQ5HE.cjs');
|
|
8
|
+
var _chunkLNLHCZ6Fcjs = require('./chunk-LNLHCZ6F.cjs');
|
|
10
9
|
|
|
11
10
|
|
|
12
11
|
|
|
13
|
-
var
|
|
14
|
-
require('./chunk-
|
|
12
|
+
var _chunkJWMWOBAXcjs = require('./chunk-JWMWOBAX.cjs');
|
|
13
|
+
require('./chunk-7OZEQ5HE.cjs');
|
|
15
14
|
|
|
16
15
|
|
|
17
|
-
var _chunkSRXJLAKGcjs = require('./chunk-SRXJLAKG.cjs');
|
|
18
16
|
|
|
17
|
+
var _chunkUWAZGLHGcjs = require('./chunk-UWAZGLHG.cjs');
|
|
18
|
+
require('./chunk-OTZT3MC2.cjs');
|
|
19
|
+
require('./chunk-HIWNB5PK.cjs');
|
|
19
20
|
|
|
20
21
|
|
|
21
|
-
var
|
|
22
|
+
var _chunkSRXJLAKGcjs = require('./chunk-SRXJLAKG.cjs');
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
|
|
25
|
-
var
|
|
26
|
+
var _chunkFVWTBK44cjs = require('./chunk-FVWTBK44.cjs');
|
|
26
27
|
|
|
27
28
|
|
|
28
|
-
var _chunk7HROSZRScjs = require('./chunk-7HROSZRS.cjs');
|
|
29
29
|
|
|
30
|
+
var _chunkDDV5726Qcjs = require('./chunk-DDV5726Q.cjs');
|
|
30
31
|
|
|
31
|
-
var _chunkERGEUE7Rcjs = require('./chunk-ERGEUE7R.cjs');
|
|
32
32
|
|
|
33
33
|
|
|
34
|
+
var _chunkZPJHWKEKcjs = require('./chunk-ZPJHWKEK.cjs');
|
|
34
35
|
|
|
35
|
-
var _chunkZN7KVU4Rcjs = require('./chunk-ZN7KVU4R.cjs');
|
|
36
|
-
require('./chunk-HIWNB5PK.cjs');
|
|
37
36
|
|
|
38
|
-
|
|
39
|
-
var _chunkMUUSZ7J5cjs = require('./chunk-MUUSZ7J5.cjs');
|
|
37
|
+
var _chunk7HROSZRScjs = require('./chunk-7HROSZRS.cjs');
|
|
40
38
|
|
|
41
39
|
|
|
40
|
+
var _chunk4KEE36W3cjs = require('./chunk-4KEE36W3.cjs');
|
|
42
41
|
|
|
43
|
-
var _chunkNYZFVI2Pcjs = require('./chunk-NYZFVI2P.cjs');
|
|
44
42
|
|
|
45
43
|
|
|
44
|
+
var _chunkCLSMJQCOcjs = require('./chunk-CLSMJQCO.cjs');
|
|
46
45
|
|
|
47
46
|
|
|
47
|
+
var _chunkMUUSZ7J5cjs = require('./chunk-MUUSZ7J5.cjs');
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
var _chunkW3H42XRVcjs = require('./chunk-W3H42XRV.cjs');
|
|
51
50
|
|
|
52
51
|
|
|
53
52
|
|
|
54
53
|
|
|
55
|
-
var
|
|
54
|
+
var _chunkWKN6C4ZEcjs = require('./chunk-WKN6C4ZE.cjs');
|
|
55
|
+
require('./chunk-ZVGEDXDP.cjs');
|
|
56
56
|
require('./chunk-EMMSS5I5.cjs');
|
|
57
57
|
|
|
58
|
-
// src/charts/
|
|
59
|
-
var _i18n = require('@wordpress/i18n');
|
|
58
|
+
// src/charts/sparkline/sparkline.tsx
|
|
60
59
|
var _clsx = require('clsx'); var _clsx2 = _interopRequireDefault(_clsx);
|
|
61
60
|
var _react = require('react');
|
|
62
|
-
var _reactgooglecharts = require('react-google-charts');
|
|
63
|
-
|
|
64
|
-
// src/charts/geo-chart/geo-chart.module.scss
|
|
65
|
-
var geo_chart_module_default = {
|
|
66
|
-
"container": "a8ccharts-JvcqOz"
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
// src/charts/geo-chart/geo-chart.tsx
|
|
70
|
-
var _jsxruntime = require('react/jsx-runtime');
|
|
71
|
-
var DEFAULT_FEATURE_FILL_COLOR = "#ffffff";
|
|
72
|
-
var DEFAULT_BACKGROUND_COLOR = "#ffffff";
|
|
73
|
-
var GeoChartInternal = ({
|
|
74
|
-
className,
|
|
75
|
-
data,
|
|
76
|
-
width,
|
|
77
|
-
height,
|
|
78
|
-
region = "world",
|
|
79
|
-
resolution = "countries",
|
|
80
|
-
renderPlaceholder
|
|
81
|
-
}) => {
|
|
82
|
-
const {
|
|
83
|
-
getElementStyles,
|
|
84
|
-
theme: {
|
|
85
|
-
geoChart: { featureFillColor },
|
|
86
|
-
backgroundColor
|
|
87
|
-
}
|
|
88
|
-
} = _chunkW3H42XRVcjs.useGlobalChartsContext.call(void 0, );
|
|
89
|
-
const loadingPlaceholder = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
90
|
-
"div",
|
|
91
|
-
{
|
|
92
|
-
className: _clsx2.default.call(void 0, "geo-chart", geo_chart_module_default.container, className),
|
|
93
|
-
"data-testid": "geo-chart-loading",
|
|
94
|
-
style: { width, height },
|
|
95
|
-
children: renderPlaceholder ? renderPlaceholder() : _i18n.__.call(void 0, "Loading map", "jetpack-charts")
|
|
96
|
-
}
|
|
97
|
-
);
|
|
98
|
-
const fullColorHex = getElementStyles({ index: 0 }).color;
|
|
99
|
-
const lightColorHex = _chunkDAKYGZG6cjs.lightenHexColor.call(void 0, fullColorHex, 0.8);
|
|
100
|
-
const backgroundColorHex = _chunkDAKYGZG6cjs.normalizeColorToHex.call(void 0, backgroundColor, null, _chunkDAKYGZG6cjs.resolveCssVariable) || DEFAULT_BACKGROUND_COLOR;
|
|
101
|
-
const defaultFillColorHex = _chunkDAKYGZG6cjs.normalizeColorToHex.call(void 0, featureFillColor, null, _chunkDAKYGZG6cjs.resolveCssVariable) || DEFAULT_FEATURE_FILL_COLOR;
|
|
102
|
-
const hasHtmlTooltips = _react.useMemo.call(void 0,
|
|
103
|
-
() => data.length > 0 && data[0].some(
|
|
104
|
-
(col) => typeof col === "object" && col !== null && "role" in col && col.role === "tooltip" && "p" in col && typeof col.p === "object" && col.p !== null && "html" in col.p && col.p.html === true
|
|
105
|
-
),
|
|
106
|
-
[data]
|
|
107
|
-
);
|
|
108
|
-
const options = _react.useMemo.call(void 0,
|
|
109
|
-
() => ({
|
|
110
|
-
...region !== "world" && { region },
|
|
111
|
-
...resolution !== "countries" && { resolution },
|
|
112
|
-
colorAxis: { colors: [lightColorHex, fullColorHex] },
|
|
113
|
-
backgroundColor: backgroundColorHex,
|
|
114
|
-
datalessRegionColor: defaultFillColorHex,
|
|
115
|
-
defaultColor: defaultFillColorHex,
|
|
116
|
-
tooltip: { trigger: "focus", isHtml: hasHtmlTooltips },
|
|
117
|
-
legend: "none",
|
|
118
|
-
keepAspectRatio: true
|
|
119
|
-
}),
|
|
120
|
-
[
|
|
121
|
-
region,
|
|
122
|
-
resolution,
|
|
123
|
-
lightColorHex,
|
|
124
|
-
fullColorHex,
|
|
125
|
-
backgroundColorHex,
|
|
126
|
-
defaultFillColorHex,
|
|
127
|
-
hasHtmlTooltips
|
|
128
|
-
]
|
|
129
|
-
);
|
|
130
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
131
|
-
"div",
|
|
132
|
-
{
|
|
133
|
-
className: _clsx2.default.call(void 0, "geo-chart", geo_chart_module_default.container, className),
|
|
134
|
-
"data-testid": "geo-chart",
|
|
135
|
-
style: { width, height, backgroundColor },
|
|
136
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
137
|
-
_reactgooglecharts.Chart,
|
|
138
|
-
{
|
|
139
|
-
chartType: "GeoChart",
|
|
140
|
-
width,
|
|
141
|
-
height,
|
|
142
|
-
data,
|
|
143
|
-
options,
|
|
144
|
-
loader: loadingPlaceholder
|
|
145
|
-
}
|
|
146
|
-
)
|
|
147
|
-
}
|
|
148
|
-
);
|
|
149
|
-
};
|
|
150
|
-
var GeoChartWithProvider = (props) => {
|
|
151
|
-
const existingContext = _react.useContext.call(void 0, _chunkW3H42XRVcjs.GlobalChartsContext);
|
|
152
|
-
if (existingContext) {
|
|
153
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, GeoChartInternal, { ...props });
|
|
154
|
-
}
|
|
155
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkW3H42XRVcjs.GlobalChartsProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, GeoChartInternal, { ...props }) });
|
|
156
|
-
};
|
|
157
|
-
GeoChartWithProvider.displayName = "GeoChart";
|
|
158
|
-
var GeoChartResponsive = _chunkMUUSZ7J5cjs.withResponsive.call(void 0, GeoChartWithProvider);
|
|
159
|
-
|
|
160
|
-
// src/charts/sparkline/sparkline.tsx
|
|
161
|
-
|
|
162
|
-
|
|
163
61
|
|
|
164
62
|
// src/charts/sparkline/sparkline.module.scss
|
|
165
63
|
var sparkline_module_default = {
|
|
@@ -168,7 +66,7 @@ var sparkline_module_default = {
|
|
|
168
66
|
};
|
|
169
67
|
|
|
170
68
|
// src/charts/sparkline/sparkline.tsx
|
|
171
|
-
|
|
69
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
172
70
|
var DEFAULT_WIDTH = 100;
|
|
173
71
|
var DEFAULT_HEIGHT = 40;
|
|
174
72
|
var transformToSeriesData = (data, color, strokeWidth) => {
|
|
@@ -199,9 +97,10 @@ var SparklineComponent = _react.forwardRef.call(void 0,
|
|
|
199
97
|
gradient,
|
|
200
98
|
className,
|
|
201
99
|
chartId,
|
|
202
|
-
margin: marginProp
|
|
100
|
+
margin: marginProp,
|
|
101
|
+
animation
|
|
203
102
|
}, ref) => {
|
|
204
|
-
const theme =
|
|
103
|
+
const theme = _chunkWKN6C4ZEcjs.useGlobalChartsTheme.call(void 0, );
|
|
205
104
|
const themeStrokeWidth = _nullishCoalesce(_optionalChain([theme, 'access', _ => _.sparkline, 'optionalAccess', _2 => _2.strokeWidth]), () => ( 1.5));
|
|
206
105
|
const strokeWidth = _nullishCoalesce(strokeWidthProp, () => ( themeStrokeWidth));
|
|
207
106
|
const seriesData = _react.useMemo.call(void 0, () => {
|
|
@@ -278,7 +177,7 @@ var SparklineComponent = _react.forwardRef.call(void 0,
|
|
|
278
177
|
className: _clsx2.default.call(void 0, "sparkline", sparkline_module_default.sparkline, className),
|
|
279
178
|
"data-testid": "sparkline",
|
|
280
179
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
281
|
-
|
|
180
|
+
_chunkLNLHCZ6Fcjs.LineChart,
|
|
282
181
|
{
|
|
283
182
|
data: seriesWithGradient,
|
|
284
183
|
width,
|
|
@@ -295,7 +194,8 @@ var SparklineComponent = _react.forwardRef.call(void 0,
|
|
|
295
194
|
y: { display: false }
|
|
296
195
|
}
|
|
297
196
|
},
|
|
298
|
-
curveType: "monotone"
|
|
197
|
+
curveType: "monotone",
|
|
198
|
+
animation
|
|
299
199
|
}
|
|
300
200
|
)
|
|
301
201
|
}
|
|
@@ -334,5 +234,5 @@ var Sparkline = _chunkMUUSZ7J5cjs.withResponsive.call(void 0, SparklineUnrespons
|
|
|
334
234
|
|
|
335
235
|
|
|
336
236
|
|
|
337
|
-
exports.BarChart =
|
|
237
|
+
exports.BarChart = _chunkDDV5726Qcjs.BarChartResponsive; exports.BarChartUnresponsive = _chunkDDV5726Qcjs.BarChart; exports.BarListChart = _chunkFVWTBK44cjs.BarListChartResponsive; exports.BarListChartUnresponsive = _chunkFVWTBK44cjs.BarListChart; exports.BaseTooltip = _chunk7HROSZRScjs.BaseTooltip; exports.ConversionFunnelChart = _chunk4KEE36W3cjs.ConversionFunnelChartWithProvider; exports.GeoChart = _chunkCLSMJQCOcjs.GeoChartResponsive; exports.GeoChartUnresponsive = _chunkCLSMJQCOcjs.GeoChartWithProvider; exports.GlobalChartsContext = _chunkWKN6C4ZEcjs.GlobalChartsContext; exports.GlobalChartsProvider = _chunkWKN6C4ZEcjs.GlobalChartsProvider; exports.LeaderboardChart = _chunkGX4XTD6Vcjs.LeaderboardChartResponsive; exports.LeaderboardChartUnresponsive = _chunkGX4XTD6Vcjs.LeaderboardChart; exports.Legend = _chunkZPJHWKEKcjs.Legend; exports.LineChart = _chunkLNLHCZ6Fcjs.LineChartResponsive; exports.LineChartUnresponsive = _chunkLNLHCZ6Fcjs.LineChart; exports.PieChart = _chunkJWMWOBAXcjs.PieChartResponsive; exports.PieChartUnresponsive = _chunkJWMWOBAXcjs.PieChart; exports.PieSemiCircleChart = _chunkUWAZGLHGcjs.PieSemiCircleChartResponsive; exports.PieSemiCircleChartUnresponsive = _chunkUWAZGLHGcjs.PieSemiCircleChart; exports.Sparkline = Sparkline; exports.SparklineUnresponsive = SparklineUnresponsive; exports.ThemeProvider = _chunkWKN6C4ZEcjs.GlobalChartsProvider; exports.TrendIndicator = _chunkSRXJLAKGcjs.TrendIndicator; exports.defaultTheme = _chunkWKN6C4ZEcjs.defaultTheme; exports.useChartLegendItems = _chunkZPJHWKEKcjs.useChartLegendItems; exports.useGlobalChartsContext = _chunkWKN6C4ZEcjs.useGlobalChartsContext; exports.useGlobalChartsTheme = _chunkWKN6C4ZEcjs.useGlobalChartsTheme;
|
|
338
238
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/index.cjs","../src/charts/geo-chart/geo-chart.tsx","../src/charts/geo-chart/geo-chart.module.scss","../src/charts/sparkline/sparkline.tsx","../src/charts/sparkline/sparkline.module.scss"],"names":["useMemo","jsx","clsx"],"mappings":"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","file":"/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/index.cjs","sourcesContent":[null,"/**\n * External dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport clsx from 'clsx';\nimport { FC, useContext, useMemo } from 'react';\nimport { Chart, type GoogleChartOptions } from 'react-google-charts';\n/**\n * Internal dependencies\n */\nimport { GlobalChartsContext, GlobalChartsProvider, useGlobalChartsContext } from '../../providers';\nimport { lightenHexColor, normalizeColorToHex } from '../../utils/color-utils';\nimport { resolveCssVariable } from '../../utils/resolve-css-var';\nimport { withResponsive } from '../private/with-responsive';\nimport styles from './geo-chart.module.scss';\nimport { GeoChartProps } from './types';\n\nconst DEFAULT_FEATURE_FILL_COLOR = '#ffffff';\nconst DEFAULT_BACKGROUND_COLOR = '#ffffff';\n\n/**\n * Renders a geographical chart using Google Charts GeoChart to visualize data.\n *\n * Supports the full Google Charts data format including custom tooltips, formatted values,\n * and multiple data columns for maximum flexibility.\n *\n * Locations can be identified by full name (e.g., 'United States', 'California') or codes\n * (e.g., 'US', 'US-CA'). Full names are recommended for better readability in tooltips.\n *\n * @param props - The props for the GeoChart component\n * @param props.data - Data in Google Charts format (array of arrays with headers)\n * @param props.width - Width of the chart in pixels\n * @param props.height - Height of the chart in pixels\n * @param props.region - Region to display ('world', 'US', or ISO 3166-1 alpha-2 code)\n * @param props.resolution - Resolution level ('countries', 'provinces', or 'metros')\n * @param props.className - Additional CSS class name for the chart container\n * @param props.renderPlaceholder - Optional render function for the loading placeholder\n * @return A React component displaying an interactive map with data visualization\n */\nconst GeoChartInternal: FC< GeoChartProps > = ( {\n\tclassName,\n\tdata,\n\twidth,\n\theight,\n\tregion = 'world',\n\tresolution = 'countries',\n\trenderPlaceholder,\n} ) => {\n\tconst {\n\t\tgetElementStyles,\n\t\ttheme: {\n\t\t\tgeoChart: { featureFillColor },\n\t\t\tbackgroundColor,\n\t\t},\n\t} = useGlobalChartsContext();\n\n\t// Render loading placeholder\n\tconst loadingPlaceholder = (\n\t\t<div\n\t\t\tclassName={ clsx( 'geo-chart', styles.container, className ) }\n\t\t\tdata-testid=\"geo-chart-loading\"\n\t\t\tstyle={ { width, height } }\n\t\t>\n\t\t\t{ renderPlaceholder ? renderPlaceholder() : __( 'Loading map', 'jetpack-charts' ) }\n\t\t</div>\n\t);\n\n\t// Google charts doesn't accept CSS variables, so we need to convert them to hex colors\n\tconst fullColorHex = getElementStyles( { index: 0 } ).color;\n\tconst lightColorHex = lightenHexColor( fullColorHex, 0.8 );\n\t// Use normalizeColorToHex to ensure HSL/RGB values from CSS variables are converted to hex\n\tconst backgroundColorHex =\n\t\tnormalizeColorToHex( backgroundColor, null, resolveCssVariable ) || DEFAULT_BACKGROUND_COLOR;\n\tconst defaultFillColorHex =\n\t\tnormalizeColorToHex( featureFillColor, null, resolveCssVariable ) || DEFAULT_FEATURE_FILL_COLOR;\n\n\t// Check if data has HTML tooltips (column with role: 'tooltip' and p.html: true)\n\tconst hasHtmlTooltips = useMemo(\n\t\t() =>\n\t\t\tdata.length > 0 &&\n\t\t\tdata[ 0 ].some(\n\t\t\t\tcol =>\n\t\t\t\t\ttypeof col === 'object' &&\n\t\t\t\t\tcol !== null &&\n\t\t\t\t\t'role' in col &&\n\t\t\t\t\tcol.role === 'tooltip' &&\n\t\t\t\t\t'p' in col &&\n\t\t\t\t\ttypeof col.p === 'object' &&\n\t\t\t\t\tcol.p !== null &&\n\t\t\t\t\t'html' in col.p &&\n\t\t\t\t\tcol.p.html === true\n\t\t\t),\n\t\t[ data ]\n\t);\n\n\tconst options: GoogleChartOptions = useMemo(\n\t\t() => ( {\n\t\t\t...( region !== 'world' && { region } ),\n\t\t\t...( resolution !== 'countries' && { resolution } ),\n\t\t\tcolorAxis: { colors: [ lightColorHex, fullColorHex ] },\n\t\t\tbackgroundColor: backgroundColorHex,\n\t\t\tdatalessRegionColor: defaultFillColorHex,\n\t\t\tdefaultColor: defaultFillColorHex,\n\t\t\ttooltip: { trigger: 'focus', isHtml: hasHtmlTooltips },\n\t\t\tlegend: 'none',\n\t\t\tkeepAspectRatio: true,\n\t\t} ),\n\t\t[\n\t\t\tregion,\n\t\t\tresolution,\n\t\t\tlightColorHex,\n\t\t\tfullColorHex,\n\t\t\tbackgroundColorHex,\n\t\t\tdefaultFillColorHex,\n\t\t\thasHtmlTooltips,\n\t\t]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx( 'geo-chart', styles.container, className ) }\n\t\t\tdata-testid=\"geo-chart\"\n\t\t\tstyle={ { width, height, backgroundColor } }\n\t\t>\n\t\t\t<Chart\n\t\t\t\tchartType=\"GeoChart\"\n\t\t\t\twidth={ width }\n\t\t\t\theight={ height }\n\t\t\t\tdata={ data }\n\t\t\t\toptions={ options }\n\t\t\t\tloader={ loadingPlaceholder }\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nconst GeoChartWithProvider: FC< GeoChartProps > = props => {\n\tconst existingContext = useContext( GlobalChartsContext );\n\n\t// If we're already in a GlobalChartsProvider context, don't create a new one\n\tif ( existingContext ) {\n\t\treturn <GeoChartInternal { ...props } />;\n\t}\n\n\t// Otherwise, create our own GlobalChartsProvider\n\treturn (\n\t\t<GlobalChartsProvider>\n\t\t\t<GeoChartInternal { ...props } />\n\t\t</GlobalChartsProvider>\n\t);\n};\n\nGeoChartWithProvider.displayName = 'GeoChart';\n\nconst GeoChartResponsive = withResponsive< GeoChartProps >( GeoChartWithProvider );\n\nexport { GeoChartResponsive as default, GeoChartWithProvider as GeoChartUnresponsive };\n","import 'css-chunk:src/charts/geo-chart/geo-chart.module.scss';export default {\n \"container\": \"a8ccharts-JvcqOz\"\n};","import clsx from 'clsx';\nimport { useMemo, forwardRef } from 'react';\nimport { useGlobalChartsTheme } from '../../providers';\nimport { LineChartUnresponsive } from '../line-chart';\nimport { withResponsive } from '../private/with-responsive';\nimport styles from './sparkline.module.scss';\nimport type { SparklineProps } from './types';\nimport type { SeriesData } from '../../types';\n\nconst DEFAULT_WIDTH = 100;\nconst DEFAULT_HEIGHT = 40;\n\n/**\n * Transforms a simple number array into SeriesData format for LineChart.\n * Uses index-based dates to create a linear x-axis.\n *\n * @param data - Array of numeric values to plot\n * @param color - Optional color for the line stroke\n * @param strokeWidth - Optional stroke width for the line\n * @return SeriesData array suitable for LineChart\n */\nconst transformToSeriesData = (\n\tdata: number[],\n\tcolor?: string,\n\tstrokeWidth?: number\n): SeriesData[] => {\n\t// Use a fixed base date and increment by index to create linear spacing\n\tconst baseDate = new Date( 2000, 0, 1 );\n\n\treturn [\n\t\t{\n\t\t\tlabel: 'sparkline',\n\t\t\tdata: data.map( ( value, index ) => ( {\n\t\t\t\tdate: new Date( baseDate.getTime() + index * 86400000 ), // Add days\n\t\t\t\tvalue,\n\t\t\t} ) ),\n\t\t\toptions: {\n\t\t\t\tstroke: color,\n\t\t\t\tseriesLineStyle: strokeWidth ? { strokeWidth } : undefined,\n\t\t\t},\n\t\t},\n\t];\n};\n\nconst SparklineComponent = forwardRef< HTMLDivElement, SparklineProps >(\n\t(\n\t\t{\n\t\t\tdata,\n\t\t\twidth = DEFAULT_WIDTH,\n\t\t\theight = DEFAULT_HEIGHT,\n\t\t\tcolor,\n\t\t\tstrokeWidth: strokeWidthProp,\n\t\t\twithGradientFill = true,\n\t\t\tgradient,\n\t\t\tclassName,\n\t\t\tchartId,\n\t\t\tmargin: marginProp,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst theme = useGlobalChartsTheme();\n\n\t\t// Get theme defaults for sparkline\n\t\tconst themeStrokeWidth = theme.sparkline?.strokeWidth ?? 1.5;\n\n\t\t// Use prop values or fall back to theme defaults\n\t\tconst strokeWidth = strokeWidthProp ?? themeStrokeWidth;\n\n\t\t// Transform number[] to SeriesData[] for LineChart\n\t\tconst seriesData = useMemo( () => {\n\t\t\tif ( ! data || data.length === 0 ) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\treturn transformToSeriesData( data, color, strokeWidth );\n\t\t}, [ data, color, strokeWidth ] );\n\n\t\t// Merge margins with theme defaults\n\t\tconst finalMargin = useMemo( () => {\n\t\t\tconst themeMargin = theme.sparkline?.margin ?? { top: 2, right: 2, bottom: 2, left: 2 };\n\t\t\tconst margin = marginProp ?? themeMargin;\n\t\t\treturn {\n\t\t\t\t...themeMargin,\n\t\t\t\t...margin,\n\t\t\t};\n\t\t}, [ marginProp, theme.sparkline?.margin ] );\n\n\t\t// Build gradient options for the series if custom gradient is provided\n\t\t// Note: This must be called before any early returns to follow React hooks rules\n\t\tconst seriesWithGradient = useMemo( () => {\n\t\t\tif ( ! gradient || seriesData.length === 0 ) {\n\t\t\t\treturn seriesData;\n\t\t\t}\n\n\t\t\treturn seriesData.map( series => ( {\n\t\t\t\t...series,\n\t\t\t\toptions: {\n\t\t\t\t\t...series.options,\n\t\t\t\t\tgradient: {\n\t\t\t\t\t\tfrom: gradient.from || color || '#000000',\n\t\t\t\t\t\tto: gradient.to || '#ffffff',\n\t\t\t\t\t\tfromOpacity: gradient.fromOpacity ?? 0.5,\n\t\t\t\t\t\ttoOpacity: gradient.toOpacity ?? 0.0,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} ) );\n\t\t}, [ seriesData, gradient, color ] );\n\n\t\t// Handle empty data\n\t\tif ( ! data || data.length === 0 ) {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'sparkline',\n\t\t\t\t\t\tstyles.sparkline,\n\t\t\t\t\t\tstyles[ 'sparkline--empty' ],\n\t\t\t\t\t\tclassName\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ { width, height } }\n\t\t\t\t\tdata-testid=\"sparkline-empty\"\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\t// Handle single data point - render a simple dot\n\t\tif ( data.length === 1 ) {\n\t\t\tconst cx = width / 2;\n\t\t\tconst cy = height / 2;\n\t\t\tconst resolvedColor = color || '#000000';\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'sparkline',\n\t\t\t\t\t\tstyles.sparkline,\n\t\t\t\t\t\tstyles[ 'sparkline--single-point' ],\n\t\t\t\t\t\tclassName\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ { width, height } }\n\t\t\t\t\tdata-testid=\"sparkline-single-point\"\n\t\t\t\t>\n\t\t\t\t\t<svg width={ width } height={ height } aria-hidden=\"true\">\n\t\t\t\t\t\t<circle cx={ cx } cy={ cy } r={ strokeWidth * 1.5 } fill={ resolvedColor } />\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ ref }\n\t\t\t\tclassName={ clsx( 'sparkline', styles.sparkline, className ) }\n\t\t\t\tdata-testid=\"sparkline\"\n\t\t\t>\n\t\t\t\t<LineChartUnresponsive\n\t\t\t\t\tdata={ seriesWithGradient }\n\t\t\t\t\twidth={ width }\n\t\t\t\t\theight={ height }\n\t\t\t\t\tmargin={ finalMargin }\n\t\t\t\t\tchartId={ chartId }\n\t\t\t\t\twithGradientFill={ withGradientFill }\n\t\t\t\t\twithTooltips={ false }\n\t\t\t\t\tshowLegend={ false }\n\t\t\t\t\tgridVisibility=\"none\"\n\t\t\t\t\toptions={ {\n\t\t\t\t\t\taxis: {\n\t\t\t\t\t\t\tx: { display: false },\n\t\t\t\t\t\t\ty: { display: false },\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t\tcurveType=\"monotone\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSparklineComponent.displayName = 'SparklineComponent';\n\n/**\n * Sparkline - A minimal line chart for inline data visualization.\n *\n * Sparklines are compact charts designed to be embedded inline with text or\n * displayed in small spaces like table cells or dashboards. They show trends\n * without axes, labels, or other chart chrome.\n *\n * This component is built on top of LineChart with preconfigured settings\n * for minimal display (no axes, grid, tooltips, or legend).\n */\nconst SparklineUnresponsive = SparklineComponent;\n\nSparklineUnresponsive.displayName = 'SparklineUnresponsive';\n\n/**\n * Responsive Sparkline chart component\n */\nconst Sparkline = withResponsive< SparklineProps >( SparklineUnresponsive );\n\nexport { Sparkline as default, SparklineUnresponsive };\n","import 'css-chunk:src/charts/sparkline/sparkline.module.scss';export default {\n \"sparkline\": \"a8ccharts-o-3Z8B\",\n \"sparkline--empty\": \"a8ccharts-CbLbcd\"\n};"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/index.cjs","../src/charts/sparkline/sparkline.tsx","../src/charts/sparkline/sparkline.module.scss"],"names":[],"mappings":"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","file":"/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/index.cjs","sourcesContent":[null,"import clsx from 'clsx';\nimport { useMemo, forwardRef } from 'react';\nimport { useGlobalChartsTheme } from '../../providers';\nimport { LineChartUnresponsive } from '../line-chart';\nimport { withResponsive } from '../private/with-responsive';\nimport styles from './sparkline.module.scss';\nimport type { SparklineProps } from './types';\nimport type { SeriesData } from '../../types';\n\nconst DEFAULT_WIDTH = 100;\nconst DEFAULT_HEIGHT = 40;\n\n/**\n * Transforms a simple number array into SeriesData format for LineChart.\n * Uses index-based dates to create a linear x-axis.\n *\n * @param data - Array of numeric values to plot\n * @param color - Optional color for the line stroke\n * @param strokeWidth - Optional stroke width for the line\n * @return SeriesData array suitable for LineChart\n */\nconst transformToSeriesData = (\n\tdata: number[],\n\tcolor?: string,\n\tstrokeWidth?: number\n): SeriesData[] => {\n\t// Use a fixed base date and increment by index to create linear spacing\n\tconst baseDate = new Date( 2000, 0, 1 );\n\n\treturn [\n\t\t{\n\t\t\tlabel: 'sparkline',\n\t\t\tdata: data.map( ( value, index ) => ( {\n\t\t\t\tdate: new Date( baseDate.getTime() + index * 86400000 ), // Add days\n\t\t\t\tvalue,\n\t\t\t} ) ),\n\t\t\toptions: {\n\t\t\t\tstroke: color,\n\t\t\t\tseriesLineStyle: strokeWidth ? { strokeWidth } : undefined,\n\t\t\t},\n\t\t},\n\t];\n};\n\nconst SparklineComponent = forwardRef< HTMLDivElement, SparklineProps >(\n\t(\n\t\t{\n\t\t\tdata,\n\t\t\twidth = DEFAULT_WIDTH,\n\t\t\theight = DEFAULT_HEIGHT,\n\t\t\tcolor,\n\t\t\tstrokeWidth: strokeWidthProp,\n\t\t\twithGradientFill = true,\n\t\t\tgradient,\n\t\t\tclassName,\n\t\t\tchartId,\n\t\t\tmargin: marginProp,\n\t\t\tanimation,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst theme = useGlobalChartsTheme();\n\n\t\t// Get theme defaults for sparkline\n\t\tconst themeStrokeWidth = theme.sparkline?.strokeWidth ?? 1.5;\n\n\t\t// Use prop values or fall back to theme defaults\n\t\tconst strokeWidth = strokeWidthProp ?? themeStrokeWidth;\n\n\t\t// Transform number[] to SeriesData[] for LineChart\n\t\tconst seriesData = useMemo( () => {\n\t\t\tif ( ! data || data.length === 0 ) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\treturn transformToSeriesData( data, color, strokeWidth );\n\t\t}, [ data, color, strokeWidth ] );\n\n\t\t// Merge margins with theme defaults\n\t\tconst finalMargin = useMemo( () => {\n\t\t\tconst themeMargin = theme.sparkline?.margin ?? { top: 2, right: 2, bottom: 2, left: 2 };\n\t\t\tconst margin = marginProp ?? themeMargin;\n\t\t\treturn {\n\t\t\t\t...themeMargin,\n\t\t\t\t...margin,\n\t\t\t};\n\t\t}, [ marginProp, theme.sparkline?.margin ] );\n\n\t\t// Build gradient options for the series if custom gradient is provided\n\t\t// Note: This must be called before any early returns to follow React hooks rules\n\t\tconst seriesWithGradient = useMemo( () => {\n\t\t\tif ( ! gradient || seriesData.length === 0 ) {\n\t\t\t\treturn seriesData;\n\t\t\t}\n\n\t\t\treturn seriesData.map( series => ( {\n\t\t\t\t...series,\n\t\t\t\toptions: {\n\t\t\t\t\t...series.options,\n\t\t\t\t\tgradient: {\n\t\t\t\t\t\tfrom: gradient.from || color || '#000000',\n\t\t\t\t\t\tto: gradient.to || '#ffffff',\n\t\t\t\t\t\tfromOpacity: gradient.fromOpacity ?? 0.5,\n\t\t\t\t\t\ttoOpacity: gradient.toOpacity ?? 0.0,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} ) );\n\t\t}, [ seriesData, gradient, color ] );\n\n\t\t// Handle empty data\n\t\tif ( ! data || data.length === 0 ) {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'sparkline',\n\t\t\t\t\t\tstyles.sparkline,\n\t\t\t\t\t\tstyles[ 'sparkline--empty' ],\n\t\t\t\t\t\tclassName\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ { width, height } }\n\t\t\t\t\tdata-testid=\"sparkline-empty\"\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\t// Handle single data point - render a simple dot\n\t\tif ( data.length === 1 ) {\n\t\t\tconst cx = width / 2;\n\t\t\tconst cy = height / 2;\n\t\t\tconst resolvedColor = color || '#000000';\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'sparkline',\n\t\t\t\t\t\tstyles.sparkline,\n\t\t\t\t\t\tstyles[ 'sparkline--single-point' ],\n\t\t\t\t\t\tclassName\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ { width, height } }\n\t\t\t\t\tdata-testid=\"sparkline-single-point\"\n\t\t\t\t>\n\t\t\t\t\t<svg width={ width } height={ height } aria-hidden=\"true\">\n\t\t\t\t\t\t<circle cx={ cx } cy={ cy } r={ strokeWidth * 1.5 } fill={ resolvedColor } />\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ ref }\n\t\t\t\tclassName={ clsx( 'sparkline', styles.sparkline, className ) }\n\t\t\t\tdata-testid=\"sparkline\"\n\t\t\t>\n\t\t\t\t<LineChartUnresponsive\n\t\t\t\t\tdata={ seriesWithGradient }\n\t\t\t\t\twidth={ width }\n\t\t\t\t\theight={ height }\n\t\t\t\t\tmargin={ finalMargin }\n\t\t\t\t\tchartId={ chartId }\n\t\t\t\t\twithGradientFill={ withGradientFill }\n\t\t\t\t\twithTooltips={ false }\n\t\t\t\t\tshowLegend={ false }\n\t\t\t\t\tgridVisibility=\"none\"\n\t\t\t\t\toptions={ {\n\t\t\t\t\t\taxis: {\n\t\t\t\t\t\t\tx: { display: false },\n\t\t\t\t\t\t\ty: { display: false },\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t\tcurveType=\"monotone\"\n\t\t\t\t\tanimation={ animation }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSparklineComponent.displayName = 'SparklineComponent';\n\n/**\n * Sparkline - A minimal line chart for inline data visualization.\n *\n * Sparklines are compact charts designed to be embedded inline with text or\n * displayed in small spaces like table cells or dashboards. They show trends\n * without axes, labels, or other chart chrome.\n *\n * This component is built on top of LineChart with preconfigured settings\n * for minimal display (no axes, grid, tooltips, or legend).\n */\nconst SparklineUnresponsive = SparklineComponent;\n\nSparklineUnresponsive.displayName = 'SparklineUnresponsive';\n\n/**\n * Responsive Sparkline chart component\n */\nconst Sparkline = withResponsive< SparklineProps >( SparklineUnresponsive );\n\nexport { Sparkline as default, SparklineUnresponsive };\n","import 'css-chunk:src/charts/sparkline/sparkline.module.scss';export default {\n \"sparkline\": \"a8ccharts-o-3Z8B\",\n \"sparkline--empty\": \"a8ccharts-CbLbcd\"\n};"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
export { BarChart, BarChartUnresponsive } from './charts/bar-chart/index.cjs';
|
|
2
2
|
export { BarListChart, BarListChartUnresponsive } from './charts/bar-list-chart/index.cjs';
|
|
3
3
|
export { ConversionFunnelChart } from './charts/conversion-funnel-chart/index.cjs';
|
|
4
|
-
|
|
5
|
-
export {
|
|
6
|
-
|
|
7
|
-
import { R as ResponsiveConfig } from './with-responsive-Cp2qnQPo.cjs';
|
|
8
|
-
import * as react from 'react';
|
|
9
|
-
import { FC } from 'react';
|
|
10
|
-
export { L as LeaderboardChart, a as LeaderboardChartUnresponsive } from './leaderboard-chart-3dKYMfoP.cjs';
|
|
4
|
+
export { A as AnnotationStyles, B as BaseChartProps, j as ButtonWithPopover, C as ChartTheme, f as CompleteChartTheme, D as DataPoint, b as DataPointDate, e as DataPointPercentage, G as GeoData, c as GradientStop, h as GridProps, L as LeaderboardEntry, M as MultipleDataPointsDate, O as Optional, a as OrientationType, P as PopoverButtonAttributes, k as PopoverElement, i as PopoverElementAttributes, g as ScaleOptions, d as SeriesData, S as SeriesDataOptions, T as ToggleEvent } from './types-D1lTxRyg.cjs';
|
|
5
|
+
export { GeoChart, GeoChartProps, GeoChartUnresponsive, GeoRegion, GeoResolution } from './charts/geo-chart/index.cjs';
|
|
6
|
+
export { L as LeaderboardChart, a as LeaderboardChartUnresponsive } from './leaderboard-chart-CN80sJmQ.cjs';
|
|
11
7
|
export { EventHandlerParams, GridStyles, LineStyles } from '@visx/xychart';
|
|
12
8
|
export { L as Legend } from './legend-C9ahiwOt.cjs';
|
|
13
9
|
export { LegendValueDisplay, useChartLegendItems } from './components/legend/index.cjs';
|
|
@@ -16,9 +12,12 @@ export { LineChart, LineChartUnresponsive } from './charts/line-chart/index.cjs'
|
|
|
16
12
|
export { RenderTooltipParams } from '@visx/xychart/lib/components/Tooltip';
|
|
17
13
|
export { PieChart, PieChartProps, PieChartUnresponsive } from './charts/pie-chart/index.cjs';
|
|
18
14
|
export { PieSemiCircleChart, PieSemiCircleChartUnresponsive } from './charts/pie-semi-circle-chart/index.cjs';
|
|
15
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
16
|
+
import { R as ResponsiveConfig } from './with-responsive-Cp2qnQPo.cjs';
|
|
17
|
+
import * as react from 'react';
|
|
19
18
|
export { B as BaseTooltip } from './base-tooltip-DOq93wjU.cjs';
|
|
20
19
|
export { TrendDirection, TrendIndicator, TrendIndicatorProps } from './components/trend-indicator/index.cjs';
|
|
21
|
-
export {
|
|
20
|
+
export { b as GlobalChartsContext, G as GlobalChartsProvider, G as ThemeProvider, d as defaultTheme, u as useGlobalChartsContext, a as useGlobalChartsTheme } from './themes-Dzg0wE3B.cjs';
|
|
22
21
|
export { GoogleDataTableColumn, GoogleDataTableColumnRoleType, GoogleDataTableRow } from 'react-google-charts';
|
|
23
22
|
import '@visx/text';
|
|
24
23
|
import '@visx/annotation/lib/components/CircleSubject';
|
|
@@ -33,52 +32,6 @@ import '@visx/legend';
|
|
|
33
32
|
import './types-BBwg4Evw.cjs';
|
|
34
33
|
import '@visx/shape/lib/shapes/Pie';
|
|
35
34
|
|
|
36
|
-
/**
|
|
37
|
-
* Region to display on the map.
|
|
38
|
-
* Use 'world' for global view or any ISO 3166-1 alpha-2 country code
|
|
39
|
-
* (e.g., 'US' for United States, 'CA' for Canada).
|
|
40
|
-
*/
|
|
41
|
-
type GeoRegion = 'world' | (string & {});
|
|
42
|
-
/**
|
|
43
|
-
* Resolution level for the map.
|
|
44
|
-
* - 'countries': Country-level (default for 'world')
|
|
45
|
-
* - 'provinces': State/province level (use with specific region like 'US')
|
|
46
|
-
* - 'metros': Metropolitan areas (US only)
|
|
47
|
-
*/
|
|
48
|
-
type GeoResolution = 'countries' | 'provinces' | 'metros';
|
|
49
|
-
interface GeoChartProps extends Pick<BaseChartProps, 'className' | 'chartId' | 'width' | 'height'> {
|
|
50
|
-
/**
|
|
51
|
-
* Data in Google Charts native format for maximum flexibility.
|
|
52
|
-
* First row contains column headers, subsequent rows contain data.
|
|
53
|
-
*
|
|
54
|
-
* Country identifiers can be either full country names or ISO 3166-1 alpha-2 codes
|
|
55
|
-
* (e.g., 'United States' or 'US').
|
|
56
|
-
*/
|
|
57
|
-
data: GeoData;
|
|
58
|
-
/**
|
|
59
|
-
* Region to display. Use 'world' for global view, 'US' for United States,
|
|
60
|
-
* or any ISO 3166-1 alpha-2 country code.
|
|
61
|
-
* @default 'world'
|
|
62
|
-
*/
|
|
63
|
-
region?: GeoRegion;
|
|
64
|
-
/**
|
|
65
|
-
* Resolution level for the map.
|
|
66
|
-
* - 'countries': Country-level (default for 'world')
|
|
67
|
-
* - 'provinces': State/province level (use with specific region like 'US')
|
|
68
|
-
* - 'metros': Metropolitan areas (US only)
|
|
69
|
-
* @default 'countries'
|
|
70
|
-
*/
|
|
71
|
-
resolution?: GeoResolution;
|
|
72
|
-
/**
|
|
73
|
-
* Optional render function for the loading placeholder.
|
|
74
|
-
* Called while Google Charts is loading.
|
|
75
|
-
*/
|
|
76
|
-
renderPlaceholder?: () => React.ReactNode;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
declare const GeoChartWithProvider: FC<GeoChartProps>;
|
|
80
|
-
declare const GeoChartResponsive: ({ resizeDebounceTime, maxWidth, aspectRatio, ...chartProps }: Pick<Partial<GeoChartProps>, "width" | "height" | "size"> & Omit<GeoChartProps, "width" | "height" | "size"> & ResponsiveConfig) => react_jsx_runtime.JSX.Element;
|
|
81
|
-
|
|
82
35
|
type SparklineDataPoint = number;
|
|
83
36
|
type GradientConfig = {
|
|
84
37
|
/**
|
|
@@ -158,6 +111,13 @@ interface SparklineProps {
|
|
|
158
111
|
bottom?: number;
|
|
159
112
|
left?: number;
|
|
160
113
|
};
|
|
114
|
+
/**
|
|
115
|
+
* Enable entry animation on initial render
|
|
116
|
+
* Creates a rising effect where the line scales up from the bottom.
|
|
117
|
+
* Automatically respects user's prefers-reduced-motion system setting.
|
|
118
|
+
* @default false
|
|
119
|
+
*/
|
|
120
|
+
animation?: boolean;
|
|
161
121
|
}
|
|
162
122
|
|
|
163
123
|
/**
|
|
@@ -176,4 +136,4 @@ declare const SparklineUnresponsive: react.ForwardRefExoticComponent<SparklinePr
|
|
|
176
136
|
*/
|
|
177
137
|
declare const Sparkline: ({ resizeDebounceTime, maxWidth, aspectRatio, ...chartProps }: Pick<Partial<SparklineProps>, "width" | "height" | "size"> & Omit<SparklineProps, "width" | "height" | "size"> & ResponsiveConfig) => react_jsx_runtime.JSX.Element;
|
|
178
138
|
|
|
179
|
-
export {
|
|
139
|
+
export { Sparkline, SparklineUnresponsive };
|