drizzle-cube 0.1.29 → 0.1.31
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/README.md +1 -1
- package/dist/adapters/{compiler-BibS3bXd.js → compiler-CVega_Gv.js} +1786 -1820
- package/dist/adapters/express/index.js +87 -89
- package/dist/adapters/fastify/index.js +81 -83
- package/dist/adapters/hono/index.js +113 -116
- package/dist/adapters/nextjs/index.js +101 -102
- package/dist/client/charts.js +1 -1
- package/dist/client/chunks/charts-MTxju0dv.js +2402 -0
- package/dist/client/chunks/charts-MTxju0dv.js.map +1 -0
- package/dist/client/chunks/{icons-B_0yoGjv.js → icons-C_McHd9z.js} +10 -1
- package/dist/client/chunks/{icons-B_0yoGjv.js.map → icons-C_McHd9z.js.map} +1 -1
- package/dist/client/chunks/providers-DwDirAYo.js +208 -0
- package/dist/client/chunks/{providers-B7MVnAAt.js.map → providers-DwDirAYo.js.map} +1 -1
- package/dist/client/components.js +9741 -9616
- package/dist/client/components.js.map +1 -1
- package/dist/client/hooks.js +2 -2
- package/dist/client/index.js +2 -2
- package/dist/client/providers.js +1 -1
- package/dist/client/styles.css +1 -1
- package/dist/client-bundle-stats.html +1 -1
- package/dist/server/index.js +1479 -1485
- package/package.json +29 -20
- package/dist/client/chunks/charts-BM1k01Jw.js +0 -2404
- package/dist/client/chunks/charts-BM1k01Jw.js.map +0 -1
- package/dist/client/chunks/providers-B7MVnAAt.js +0 -211
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charts-MTxju0dv.js","sources":["../../../src/client/components/charts/ChartContainer.tsx","../../../src/client/components/charts/ChartTooltip.tsx","../../../src/client/utils/chartConstants.ts","../../../src/client/utils/chartUtils.ts","../../../src/client/utils/targetUtils.ts","../../../src/client/components/charts/BarChart.tsx","../../../src/client/components/charts/LineChart.tsx","../../../src/client/components/charts/AreaChart.tsx","../../../src/client/components/charts/PieChart.tsx","../../../src/client/components/charts/ScatterChart.tsx","../../../src/client/components/charts/RadarChart.tsx","../../../src/client/components/charts/RadialBarChart.tsx","../../../node_modules/d3-array/src/ascending.js","../../../node_modules/d3-array/src/descending.js","../../../node_modules/d3-array/src/bisector.js","../../../node_modules/d3-array/src/number.js","../../../node_modules/d3-array/src/bisect.js","../../../node_modules/internmap/src/index.js","../../../node_modules/d3-array/src/ticks.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-interpolate/src/constant.js","../../../node_modules/d3-interpolate/src/color.js","../../../node_modules/d3-interpolate/src/rgb.js","../../../node_modules/d3-interpolate/src/numberArray.js","../../../node_modules/d3-interpolate/src/array.js","../../../node_modules/d3-interpolate/src/date.js","../../../node_modules/d3-interpolate/src/number.js","../../../node_modules/d3-interpolate/src/object.js","../../../node_modules/d3-interpolate/src/string.js","../../../node_modules/d3-interpolate/src/value.js","../../../node_modules/d3-interpolate/src/round.js","../../../node_modules/d3-format/src/formatDecimal.js","../../../node_modules/d3-format/src/exponent.js","../../../node_modules/d3-format/src/formatGroup.js","../../../node_modules/d3-format/src/formatNumerals.js","../../../node_modules/d3-format/src/formatSpecifier.js","../../../node_modules/d3-format/src/formatTrim.js","../../../node_modules/d3-format/src/formatPrefixAuto.js","../../../node_modules/d3-format/src/formatRounded.js","../../../node_modules/d3-format/src/formatTypes.js","../../../node_modules/d3-format/src/identity.js","../../../node_modules/d3-format/src/locale.js","../../../node_modules/d3-format/src/defaultLocale.js","../../../node_modules/d3-format/src/precisionFixed.js","../../../node_modules/d3-format/src/precisionPrefix.js","../../../node_modules/d3-format/src/precisionRound.js","../../../node_modules/d3-scale/src/init.js","../../../node_modules/d3-scale/src/ordinal.js","../../../node_modules/d3-scale/src/constant.js","../../../node_modules/d3-scale/src/number.js","../../../node_modules/d3-scale/src/continuous.js","../../../node_modules/d3-scale/src/tickFormat.js","../../../node_modules/d3-scale/src/linear.js","../../../node_modules/d3-scale/src/quantize.js","../../../src/client/components/charts/TreeMapChart.tsx","../../../src/client/components/charts/DataTable.tsx","../../../src/client/utils/index.ts"],"sourcesContent":["import { ReactElement } from 'react'\nimport { ResponsiveContainer } from 'recharts'\n\ninterface ChartContainerProps {\n children: ReactElement\n height?: string | number\n}\n\nexport default function ChartContainer({ children, height = \"100%\" }: ChartContainerProps) {\n try {\n if (height === \"100%\") {\n // For 100% height, make the container fill the available flex space with proper sizing\n return (\n <div className=\"w-full h-full flex-1 flex flex-col relative\" style={{ minHeight: '250px', overflow: 'hidden' }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\" debounce={50} style={{ marginTop: '16px' }}>\n {children}\n </ResponsiveContainer>\n </div>\n )\n }\n \n // For specific heights, use them directly\n const containerStyle = {\n height: typeof height === 'number' ? `${height}px` : height,\n width: '100%',\n minHeight: '200px'\n }\n \n return (\n <div className=\"w-full flex flex-col relative\" style={{ ...containerStyle, overflow: 'hidden' }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\" debounce={50} style={{ marginTop: '16px' }}>\n {children}\n </ResponsiveContainer>\n </div>\n )\n } catch (error) {\n // ChartContainer ResponsiveContainer error\n \n return (\n <div \n className=\"flex flex-col items-center justify-center w-full h-full p-4 text-center border-2 border-dashed border-yellow-300 rounded-lg bg-yellow-50\"\n style={{ height }}\n >\n <div className=\"text-sm font-semibold text-yellow-600 mb-1\">Chart Container Error</div>\n <div className=\"text-xs text-gray-600\">\n {error instanceof Error ? error.message : 'Failed to create responsive container'}\n </div>\n </div>\n )\n }\n}","import React from 'react'\nimport { Tooltip } from 'recharts'\n\ninterface ChartTooltipProps {\n formatter?: (value: any, name: any, props: any) => [React.ReactText, React.ReactText]\n labelFormatter?: (label: any) => React.ReactText\n}\n\nexport default function ChartTooltip({ formatter, labelFormatter }: ChartTooltipProps) {\n return (\n <Tooltip\n formatter={formatter}\n labelFormatter={labelFormatter}\n contentStyle={{\n backgroundColor: 'white',\n border: '1px solid #e5e7eb',\n borderRadius: '0.5rem',\n fontSize: '0.875rem',\n color: '#1f2937',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n padding: '8px 12px'\n }}\n />\n )\n}","// Default color palette for charts - used as fallback when no dashboard palette is specified\n// These are now part of the 'default' palette in the unified color palette system\nexport const CHART_COLORS = [\n '#3b82f6', // blue\n '#10b981', // green\n '#f59e0b', // yellow\n '#ef4444', // red\n '#8b5cf6', // purple\n '#f97316', // orange\n '#06b6d4', // cyan\n '#84cc16', // lime\n]\n\n// Default gradient colors for continuous numeric scales - used as fallback\n// These are now part of the 'default' palette in the unified color palette system\nexport const CHART_COLORS_GRADIENT = [\n '#440154', // dark purple\n '#414487', // purple-blue\n '#2a788e', // teal\n '#22a884', // green-teal \n '#7ad151', // green\n '#fde725', // yellow\n]\n\n// Colors for positive/negative values\nexport const POSITIVE_COLOR = '#10b981' // green\nexport const NEGATIVE_COLOR = '#ef4444' // red\n\nexport const CHART_MARGINS = {\n top: 5,\n right: 30,\n left: 20,\n bottom: 5\n}\n\nexport const RESPONSIVE_CHART_MARGINS = {\n top: 5,\n right: 30,\n left: 20,\n bottom: 60 // Extra space for rotated labels\n}","import type { FieldLabelMap } from '../hooks/useCubeMeta'\n\n// Utility function to get field label from field name\nexport function getFieldLabel(fieldName: string, labelMap: FieldLabelMap): string {\n return labelMap[fieldName] || fieldName\n}\n\n// Utility function to transform series keys to use labels\nexport function transformSeriesKeysWithLabels(seriesKeys: string[], labelMap: FieldLabelMap): string[] {\n return seriesKeys.map(key => getFieldLabel(key, labelMap))\n}\n\n// Utility function to format time values for better display using known granularity\nexport function formatTimeValue(value: any, granularity?: string): string {\n if (!value) return String(value || 'Unknown')\n \n const str = String(value)\n \n // Check if it's a timestamp (ISO format or PostgreSQL format)\n // Handles formats like: \"2025-04-01T00:00:00.000\" or \"2023-02-01 00:00:00+00\"\n if (str.match(/^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}/)) {\n // Convert PostgreSQL format to ISO format if needed\n let isoStr = str\n if (str.includes(' ')) {\n // Convert \"2023-02-01 00:00:00+00\" to \"2023-02-01T00:00:00Z\"\n isoStr = str.replace(' ', 'T').replace('+00', 'Z').replace(/\\+\\d{2}:\\d{2}$/, 'Z')\n }\n // Ensure the timestamp ends with 'Z' if not present\n if (!isoStr.endsWith('Z') && !isoStr.includes('+')) {\n isoStr = isoStr + 'Z'\n }\n const date = new Date(isoStr)\n \n // Ensure we're working with valid date\n if (isNaN(date.getTime())) {\n return str\n }\n \n // Use UTC methods on the properly UTC-parsed date\n const year = date.getUTCFullYear()\n const month = String(date.getUTCMonth() + 1).padStart(2, '0')\n const day = String(date.getUTCDate()).padStart(2, '0')\n const hours = date.getUTCHours()\n const minutes = date.getUTCMinutes()\n \n // Format based on known granularity if provided\n if (granularity) {\n switch (granularity.toLowerCase()) {\n case 'year':\n return `${year}`\n case 'quarter':\n const quarter = Math.floor(date.getUTCMonth() / 3) + 1\n return `${year}-Q${quarter}`\n case 'month':\n return `${year}-${month}`\n case 'week':\n // For week, we could calculate week number, but let's use date for simplicity\n return `${year}-${month}-${day}`\n case 'day':\n return `${year}-${month}-${day}`\n case 'hour':\n return `${year}-${month}-${day} ${String(hours).padStart(2, '0')}:00`\n case 'minute':\n return `${year}-${month}-${day} ${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`\n default:\n // Unknown granularity, fall back to heuristic\n break\n }\n }\n \n // Fallback heuristic if granularity not provided or unknown\n const seconds = date.getUTCSeconds()\n const milliseconds = date.getUTCMilliseconds()\n \n // If it's the first day of the month at exactly midnight UTC, it's likely a month granularity\n if (day === '01' && hours === 0 && minutes === 0 && seconds === 0 && milliseconds === 0) {\n // Check if it's also first month of a quarter (quarter granularity)\n if (month === '01' || month === '04' || month === '07' || month === '10') {\n const quarter = Math.floor(date.getUTCMonth() / 3) + 1\n return `${year}-Q${quarter}`\n }\n // Month granularity\n return `${year}-${month}`\n }\n \n // If it's exactly midnight UTC, it's likely a day granularity\n if (hours === 0 && minutes === 0 && seconds === 0 && milliseconds === 0) {\n return `${year}-${month}-${day}`\n }\n \n // If it has time components, include them (hour/minute granularity)\n if (minutes === 0 && seconds === 0 && milliseconds === 0) {\n // Hour granularity\n return `${year}-${month}-${day} ${String(hours).padStart(2, '0')}:00`\n }\n \n // Full timestamp\n return `${year}-${month}-${day} ${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`\n }\n \n // Return as-is if not a timestamp\n return str\n}\n\n// Helper function to get granularity for a field from the query timeDimensions\nexport function getFieldGranularity(queryObject: any, fieldName: string): string | undefined {\n try {\n if (queryObject?.timeDimensions) {\n // Find the timeDimension that matches this field\n const timeDim = queryObject.timeDimensions.find((td: any) => {\n // Check if field name matches the dimension or dimension with granularity suffix\n return fieldName === td.dimension || \n fieldName.startsWith(td.dimension.replace('.', '_')) ||\n fieldName === `${td.dimension}_${td.granularity}`\n })\n \n if (timeDim?.granularity) {\n return timeDim.granularity\n }\n }\n \n // Fallback: extract granularity from field name suffix if present\n const granularityMatch = fieldName.match(/_([a-z]+)$/)\n if (granularityMatch) {\n const suffix = granularityMatch[1]\n // Only return if it's a valid granularity\n if (['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second'].includes(suffix)) {\n return suffix\n }\n }\n \n return undefined\n } catch (e) {\n return undefined\n }\n}\n\n// Transform data for charts with proper type handling\nexport function transformChartData(data: any[], xAxisField: string, yAxisFields: string[], queryObject: any, labelMap: FieldLabelMap = {}) {\n if (!data || data.length === 0) return []\n\n const granularity = getFieldGranularity(queryObject, xAxisField)\n \n return data.map((row: any) => {\n const transformed: any = {\n name: formatTimeValue(row[xAxisField], granularity) || row[xAxisField] || 'Unknown',\n }\n \n yAxisFields.forEach(field => {\n const displayName = getFieldLabel(field, labelMap)\n transformed[displayName] = typeof row[field] === 'string' \n ? parseFloat(row[field]) \n : (row[field] || 0)\n })\n \n return transformed\n })\n}\n\nexport interface ChartSeriesResult {\n data: any[]\n seriesKeys: string[]\n hasDimensions: boolean\n}\n\n// Advanced data transformation that handles both measures and dimensions on Y-axis\nexport function transformChartDataWithSeries(\n data: any[], \n xAxisField: string, \n yAxisFields: string[], \n queryObject: any,\n seriesFields?: string[], // New optional parameter for explicit series fields\n labelMap: FieldLabelMap = {} // Optional label map for field names\n): ChartSeriesResult {\n if (!data || data.length === 0) {\n return { data: [], seriesKeys: [], hasDimensions: false }\n }\n\n const originalQuery = queryObject || {}\n const queryDimensions = [\n ...(originalQuery.dimensions || []),\n ...(originalQuery.timeDimensions?.map((td: any) => td.dimension) || [])\n ]\n const queryMeasures = originalQuery.measures || []\n \n // Use explicit series fields if provided, otherwise no dimension-based series\n const yAxisMeasures = yAxisFields.filter(field => queryMeasures.includes(field))\n const yAxisDimensions = (seriesFields || []).filter(field => queryDimensions.includes(field))\n \n // Handle complex case with dimensions on Y-axis\n if (yAxisDimensions.length > 0) {\n // Group data by X-axis field and create separate series for dimension values\n const groupedData: { [key: string]: any } = {}\n \n data.forEach((row: any) => {\n const granularity = getFieldGranularity(queryObject, xAxisField)\n const xValue = formatTimeValue(row[xAxisField], granularity) || row[xAxisField] || 'Unknown'\n if (!groupedData[xValue]) {\n groupedData[xValue] = { name: String(xValue) }\n }\n \n // Add measures\n yAxisMeasures.forEach(measure => {\n const displayName = getFieldLabel(measure, labelMap)\n groupedData[xValue][displayName] = (groupedData[xValue][displayName] || 0) + \n (typeof row[measure] === 'string' ? parseFloat(row[measure]) : (row[measure] || 0))\n })\n \n // Add dimensions as separate series (aggregate measure values by dimension)\n yAxisDimensions.forEach(dimension => {\n const dimValue = row[dimension]\n if (dimValue !== undefined && dimValue !== null) {\n const seriesName = String(dimValue)\n // Aggregate the first measure for this dimension value, or use totalCost if available\n const measureToAggregate = yAxisMeasures[0] || queryMeasures.find((m: string) => \n m.includes('totalCost') || m.includes('count') || m.includes('sum')\n ) || queryMeasures[0]\n \n if (measureToAggregate) {\n const measureValue = typeof row[measureToAggregate] === 'string' \n ? parseFloat(row[measureToAggregate]) \n : (row[measureToAggregate] || 0)\n groupedData[xValue][seriesName] = (groupedData[xValue][seriesName] || 0) + measureValue\n }\n }\n })\n })\n \n const chartData = Object.values(groupedData)\n \n // Get all series keys for rendering\n // When dimensions are on Y-axis, only show dimension series, not measures\n // The measures are the values being aggregated for each dimension series\n const dimensionSeries = Array.from(new Set(\n data.flatMap((row: any) => \n yAxisDimensions.map(dimension => {\n const value = row[dimension]\n return value !== undefined && value !== null \n ? String(value)\n : null\n }).filter((value): value is string => value !== null)\n )\n ))\n \n return {\n data: chartData,\n seriesKeys: dimensionSeries,\n hasDimensions: true\n }\n }\n \n // Standard measures-only path\n const chartData = transformChartData(data, xAxisField, yAxisFields, queryObject, labelMap)\n const seriesKeys = yAxisFields.map(field => getFieldLabel(field, labelMap))\n \n return {\n data: chartData,\n seriesKeys,\n hasDimensions: false\n }\n}","/**\n * Utility functions for handling target values in charts\n */\n\n/**\n * Parse target values from string format\n * @param targetString - String containing target values (e.g., \"100\" or \"50,75,100\")\n * @returns Array of numeric target values\n */\nexport function parseTargetValues(targetString: string): number[] {\n if (!targetString || typeof targetString !== 'string') {\n return []\n }\n\n const trimmed = targetString.trim()\n if (!trimmed) {\n return []\n }\n\n try {\n // Split by comma and parse each value\n const values = trimmed\n .split(',')\n .map(val => val.trim())\n .filter(val => val !== '')\n .map(val => {\n const num = parseFloat(val)\n if (isNaN(num)) {\n throw new Error(`Invalid numeric value: ${val}`)\n }\n return num\n })\n\n return values.length > 0 ? values : []\n } catch (error) {\n console.warn('Failed to parse target values:', error)\n return []\n }\n}\n\n/**\n * Spread target values across data points\n * @param targets - Array of target values\n * @param dataLength - Number of data points to spread across\n * @returns Array of target values for each data point\n */\nexport function spreadTargetValues(targets: number[], dataLength: number): number[] {\n if (targets.length === 0 || dataLength <= 0) {\n return []\n }\n\n // If only one target value, repeat for all data points\n if (targets.length === 1) {\n return new Array(dataLength).fill(targets[0])\n }\n\n // If we have multiple targets, spread them evenly across data points\n const result: number[] = []\n const baseGroupSize = Math.floor(dataLength / targets.length)\n const remainder = dataLength % targets.length\n\n let currentIndex = 0\n \n for (let i = 0; i < targets.length; i++) {\n // Calculate group size for this target\n // First 'remainder' groups get an extra item\n const groupSize = baseGroupSize + (i < remainder ? 1 : 0)\n \n // Fill this group with the current target value\n for (let j = 0; j < groupSize; j++) {\n result[currentIndex++] = targets[i]\n }\n }\n\n return result\n}\n\n/**\n * Calculate variance between actual and target values\n * @param actual - Actual value\n * @param target - Target value\n * @returns Variance as percentage\n */\nexport function calculateVariance(actual: number, target: number): number {\n if (target === 0) {\n return actual === 0 ? 0 : (actual > 0 ? 100 : -100)\n }\n return ((actual - target) / target) * 100\n}\n\n/**\n * Format variance as percentage string with appropriate sign and color indication\n * @param variance - Variance percentage\n * @param decimals - Number of decimal places (default: 1)\n * @returns Formatted variance string (e.g., \"+12.5%\" or \"-8.3%\")\n */\nexport function formatVariance(variance: number, decimals: number = 1): string {\n const sign = variance >= 0 ? '+' : ''\n return `${sign}${variance.toFixed(decimals)}%`\n}\n\n/**\n * Get unique target values for reference lines\n * @param targets - Array of target values (may contain duplicates)\n * @returns Array of unique target values\n */\nexport function getUniqueTargets(targets: number[]): number[] {\n return [...new Set(targets)].sort((a, b) => a - b)\n}","import { useState } from 'react'\nimport { ComposedChart, Bar, Line, XAxis, YAxis, CartesianGrid, Cell, Legend } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport { CHART_COLORS, POSITIVE_COLOR, NEGATIVE_COLOR, CHART_MARGINS } from '../../utils/chartConstants'\nimport { transformChartDataWithSeries } from '../../utils/chartUtils'\nimport { parseTargetValues, spreadTargetValues } from '../../utils/targetUtils'\nimport { useCubeContext } from '../../providers/CubeProvider'\nimport type { ChartProps } from '../../types'\n\nexport default function BarChart({ \n data, \n chartConfig, \n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const [hoveredLegend, setHoveredLegend] = useState<string | null>(null)\n const { labelMap, getFieldLabel: contextGetFieldLabel } = useCubeContext()\n \n try {\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showGrid: displayConfig?.showGrid ?? true,\n showTooltip: displayConfig?.showTooltip ?? true,\n stacked: displayConfig?.stacked ?? false\n }\n\n if (!data || data.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs\">No data points to display in bar chart</div>\n </div>\n </div>\n )\n }\n\n // Validate chartConfig - support both legacy and new formats\n let xAxisField: string\n let yAxisFields: string[]\n let seriesFields: string[] = []\n \n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format\n xAxisField = chartConfig.xAxis[0]\n yAxisFields = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis : [chartConfig.yAxis]\n seriesFields = chartConfig.series || []\n } else if (chartConfig?.x && chartConfig?.y) {\n // Legacy format\n xAxisField = chartConfig.x\n yAxisFields = Array.isArray(chartConfig.y) ? chartConfig.y : [chartConfig.y]\n } else {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">Invalid or missing chart axis configuration</div>\n </div>\n </div>\n )\n }\n\n if (!xAxisField || !yAxisFields || yAxisFields.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">Missing required X-axis or Y-axis fields</div>\n </div>\n </div>\n )\n }\n\n // Use shared function to transform data and handle series\n const { data: chartData, seriesKeys } = transformChartDataWithSeries(\n data, \n xAxisField, \n yAxisFields, \n queryObject,\n seriesFields,\n labelMap\n )\n\n \n // Stacking is now controlled only by the explicit config\n const shouldStack = safeDisplayConfig.stacked === true\n \n // Check if we should use positive/negative coloring\n // This is enabled when we have single series data with mixed positive/negative values\n const usePositiveNegativeColoring = seriesKeys.length === 1 && chartData.some(row => {\n const value = row[seriesKeys[0]]\n return typeof value === 'number' && value < 0\n })\n \n // Determine if legend will be shown\n const showLegend = safeDisplayConfig.showLegend\n \n // Use custom chart margins with extra left space for Y-axis label\n const chartMargins = {\n ...CHART_MARGINS,\n left: 40 // Increased from 20 to 40 for Y-axis label space\n }\n \n // Process target values and add to chart data\n const targetValues = parseTargetValues(displayConfig?.target || '')\n const spreadTargets = spreadTargetValues(targetValues, chartData.length)\n \n // Add target data to chart data if targets exist\n let enhancedChartData = chartData\n if (spreadTargets.length > 0) {\n enhancedChartData = chartData.map((dataPoint, index) => ({\n ...dataPoint,\n __target: spreadTargets[index] || null\n }))\n }\n \n // Validate transformed data\n if (!chartData || chartData.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No valid data</div>\n <div className=\"text-xs\">No valid data points for bar chart after transformation</div>\n </div>\n </div>\n )\n }\n\n return (\n <ChartContainer height={height}>\n <ComposedChart data={enhancedChartData} margin={chartMargins}>\n {safeDisplayConfig.showGrid && (\n <CartesianGrid strokeDasharray=\"3 3\" />\n )}\n <XAxis \n dataKey=\"name\"\n tick={{ fontSize: 12 }}\n angle={-45}\n textAnchor=\"end\"\n height={60}\n />\n <YAxis \n tick={{ fontSize: 12 }} \n label={{ value: contextGetFieldLabel(yAxisFields[0]), angle: -90, position: 'left', style: { textAnchor: 'middle', fontSize: '12px' } }}\n />\n {safeDisplayConfig.showTooltip && (\n <ChartTooltip \n formatter={(value: any, name: any) => {\n if (name === 'Target') {\n return [`${value}`, 'Target Value']\n }\n return [value, name]\n }}\n />\n )}\n {showLegend && (\n <Legend \n wrapperStyle={{ fontSize: '12px', paddingTop: '25px' }}\n iconType=\"rect\"\n iconSize={8}\n layout=\"horizontal\"\n align=\"center\"\n verticalAlign=\"bottom\"\n onMouseEnter={(o) => setHoveredLegend(String(o.dataKey || ''))}\n onMouseLeave={() => setHoveredLegend(null)}\n />\n )}\n {seriesKeys.map((seriesKey, index) => (\n <Bar\n key={seriesKey}\n dataKey={seriesKey}\n stackId={shouldStack ? \"stack\" : undefined}\n fill={usePositiveNegativeColoring ? POSITIVE_COLOR : ((colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length])}\n fillOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n >\n {usePositiveNegativeColoring && chartData.map((entry, entryIndex) => {\n const value = entry[seriesKey]\n const fillColor = typeof value === 'number' && value < 0 ? NEGATIVE_COLOR : POSITIVE_COLOR\n return (\n <Cell \n key={`cell-${entryIndex}`} \n fill={fillColor}\n fillOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n />\n )\n })}\n </Bar>\n ))}\n {spreadTargets.length > 0 && (\n <>\n {/* White background line */}\n <Line\n type=\"monotone\"\n dataKey=\"__target\"\n stroke=\"#ffffff\"\n strokeWidth={2}\n dot={false}\n activeDot={false}\n connectNulls={false}\n />\n {/* Grey dashed line on top */}\n <Line\n type=\"monotone\"\n dataKey=\"__target\"\n name=\"Target\"\n stroke=\"#8B5CF6\"\n strokeWidth={2}\n strokeDasharray=\"2 3\"\n dot={false}\n activeDot={false}\n connectNulls={false}\n />\n </>\n )}\n </ComposedChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'BarChart rendering error\n return (\n <div className=\"flex flex-col items-center justify-center w-full text-red-500 p-4\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Bar Chart Error</div>\n <div className=\"text-xs mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"text-xs text-gray-600\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n}","import { useState } from 'react'\nimport { LineChart as RechartsLineChart, Line, XAxis, YAxis, CartesianGrid, Legend } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport { CHART_COLORS, CHART_MARGINS } from '../../utils/chartConstants'\nimport { transformChartDataWithSeries } from '../../utils/chartUtils'\nimport { parseTargetValues, spreadTargetValues } from '../../utils/targetUtils'\nimport { useCubeContext } from '../../providers/CubeProvider'\nimport type { ChartProps } from '../../types'\n\nexport default function LineChart({ \n data, \n chartConfig, \n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const [hoveredLegend, setHoveredLegend] = useState<string | null>(null)\n const { labelMap, getFieldLabel } = useCubeContext()\n \n try {\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showGrid: displayConfig?.showGrid ?? true,\n showTooltip: displayConfig?.showTooltip ?? true\n }\n\n if (!data || data.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs\">No data points to display in line chart</div>\n </div>\n </div>\n )\n }\n\n // Validate chartConfig - support both legacy and new formats\n let xAxisField: string\n let yAxisFields: string[]\n let seriesFields: string[] = []\n \n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format\n xAxisField = chartConfig.xAxis[0]\n yAxisFields = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis : [chartConfig.yAxis]\n seriesFields = chartConfig.series || []\n } else if (chartConfig?.x && chartConfig?.y) {\n // Legacy format\n xAxisField = chartConfig.x\n yAxisFields = Array.isArray(chartConfig.y) ? chartConfig.y : [chartConfig.y]\n } else {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">Invalid or missing chart axis configuration</div>\n </div>\n </div>\n )\n }\n\n if (!xAxisField || !yAxisFields || yAxisFields.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">Missing required X-axis or Y-axis fields</div>\n </div>\n </div>\n )\n }\n\n // Use shared function to transform data and handle series\n const { data: chartData, seriesKeys } = transformChartDataWithSeries(\n data, \n xAxisField, \n yAxisFields, \n queryObject,\n seriesFields,\n labelMap\n )\n \n // Determine if legend will be shown\n const showLegend = safeDisplayConfig.showLegend\n \n // Use custom chart margins with extra left space for Y-axis label\n const chartMargins = {\n ...CHART_MARGINS,\n left: 40 // Increased from 20 to 40 for Y-axis label space\n }\n \n // Process target values and add to chart data\n const targetValues = parseTargetValues(displayConfig?.target || '')\n const spreadTargets = spreadTargetValues(targetValues, chartData.length)\n \n // Add target data to chart data if targets exist\n let enhancedChartData = chartData\n if (spreadTargets.length > 0) {\n enhancedChartData = chartData.map((dataPoint, index) => ({\n ...dataPoint,\n __target: spreadTargets[index] || null\n }))\n }\n \n // Validate transformed data\n if (!chartData || chartData.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No valid data</div>\n <div className=\"text-xs\">No valid data points for line chart after transformation</div>\n </div>\n </div>\n )\n }\n\n return (\n <ChartContainer height={height}>\n <RechartsLineChart data={enhancedChartData} margin={chartMargins}>\n {safeDisplayConfig.showGrid && (\n <CartesianGrid strokeDasharray=\"3 3\" />\n )}\n <XAxis \n dataKey=\"name\"\n tick={{ fontSize: 12 }}\n angle={-45}\n textAnchor=\"end\"\n height={60}\n />\n <YAxis \n tick={{ fontSize: 12 }} \n label={{ value: getFieldLabel(yAxisFields[0]), angle: -90, position: 'left', style: { textAnchor: 'middle', fontSize: '12px' } }}\n />\n {safeDisplayConfig.showTooltip && (\n <ChartTooltip \n formatter={(value: any, name: any) => {\n if (name === 'Target') {\n return [`${value}`, 'Target Value']\n }\n return [value, name]\n }}\n />\n )}\n {showLegend && (\n <Legend \n wrapperStyle={{ fontSize: '12px', paddingTop: '25px' }}\n iconType=\"line\"\n iconSize={8}\n layout=\"horizontal\"\n align=\"center\"\n verticalAlign=\"bottom\"\n onMouseEnter={(o) => setHoveredLegend(String(o.dataKey || ''))}\n onMouseLeave={() => setHoveredLegend(null)}\n />\n )}\n {seriesKeys.map((seriesKey, index) => (\n <Line\n key={seriesKey}\n type=\"monotone\"\n dataKey={seriesKey}\n stroke={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n strokeWidth={2}\n dot={{ r: 3 }}\n activeDot={{ r: 5 }}\n strokeOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n />\n ))}\n {spreadTargets.length > 0 && (\n <>\n {/* White background line */}\n <Line\n type=\"monotone\"\n dataKey=\"__target\"\n stroke=\"#ffffff\"\n strokeWidth={2}\n dot={false}\n activeDot={false}\n connectNulls={false}\n />\n {/* Grey dashed line on top */}\n <Line\n type=\"monotone\"\n dataKey=\"__target\"\n name=\"Target\"\n stroke=\"#8B5CF6\"\n strokeWidth={2}\n strokeDasharray=\"2 3\"\n dot={false}\n activeDot={false}\n connectNulls={false}\n />\n </>\n )}\n </RechartsLineChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'LineChart rendering error\n return (\n <div className=\"flex flex-col items-center justify-center w-full text-red-500 p-4\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Line Chart Error</div>\n <div className=\"text-xs mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"text-xs text-gray-600\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n}","import { useState } from 'react'\nimport { ComposedChart, Area, Line, XAxis, YAxis, CartesianGrid, Legend } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport { CHART_COLORS, CHART_MARGINS } from '../../utils/chartConstants'\nimport { transformChartDataWithSeries } from '../../utils/chartUtils'\nimport { parseTargetValues, spreadTargetValues } from '../../utils/targetUtils'\nimport { useCubeContext } from '../../providers/CubeProvider'\nimport type { ChartProps } from '../../types'\n\nexport default function AreaChart({ \n data, \n chartConfig, \n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const [hoveredLegend, setHoveredLegend] = useState<string | null>(null)\n const { labelMap, getFieldLabel } = useCubeContext()\n \n try {\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showGrid: displayConfig?.showGrid ?? true,\n showTooltip: displayConfig?.showTooltip ?? true,\n stacked: displayConfig?.stacked ?? false\n }\n\n if (!data || data.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs\">No data points to display in area chart</div>\n </div>\n </div>\n )\n }\n\n // Validate chartConfig - support both legacy and new formats\n let xAxisField: string\n let yAxisFields: string[]\n let seriesFields: string[] = []\n \n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format\n xAxisField = chartConfig.xAxis[0]\n yAxisFields = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis : [chartConfig.yAxis]\n seriesFields = chartConfig.series || []\n } else if (chartConfig?.x && chartConfig?.y) {\n // Legacy format\n xAxisField = chartConfig.x\n yAxisFields = Array.isArray(chartConfig.y) ? chartConfig.y : [chartConfig.y]\n } else {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">Invalid or missing chart axis configuration</div>\n </div>\n </div>\n )\n }\n\n if (!xAxisField || !yAxisFields || yAxisFields.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">Missing required X-axis or Y-axis fields</div>\n </div>\n </div>\n )\n }\n\n // Use shared function to transform data and handle series\n const { data: chartData, seriesKeys } = transformChartDataWithSeries(\n data, \n xAxisField, \n yAxisFields, \n queryObject,\n seriesFields,\n labelMap\n )\n \n // Determine if legend will be shown\n const showLegend = safeDisplayConfig.showLegend\n \n // Use custom chart margins with extra left space for Y-axis label\n const chartMargins = {\n ...CHART_MARGINS,\n left: 40 // Increased from 20 to 40 for Y-axis label space\n }\n \n // Process target values and add to chart data\n const targetValues = parseTargetValues(displayConfig?.target || '')\n const spreadTargets = spreadTargetValues(targetValues, chartData.length)\n \n // Add target data to chart data if targets exist\n let enhancedChartData = chartData\n if (spreadTargets.length > 0) {\n enhancedChartData = chartData.map((dataPoint, index) => ({\n ...dataPoint,\n __target: spreadTargets[index] || null\n }))\n }\n \n // Validate transformed data\n if (!chartData || chartData.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No valid data</div>\n <div className=\"text-xs\">No valid data points for area chart after transformation</div>\n </div>\n </div>\n )\n }\n\n return (\n <ChartContainer height={height}>\n <ComposedChart data={enhancedChartData} margin={chartMargins}>\n {safeDisplayConfig.showGrid && (\n <CartesianGrid strokeDasharray=\"3 3\" />\n )}\n <XAxis \n dataKey=\"name\"\n tick={{ fontSize: 12 }}\n angle={-45}\n textAnchor=\"end\"\n height={60}\n />\n <YAxis \n tick={{ fontSize: 12 }} \n label={{ value: getFieldLabel(yAxisFields[0]), angle: -90, position: 'left', style: { textAnchor: 'middle', fontSize: '12px' } }}\n />\n {safeDisplayConfig.showTooltip && (\n <ChartTooltip \n formatter={(value: any, name: any) => {\n if (name === 'Target') {\n return [`${value}`, 'Target Value']\n }\n return [value, name]\n }}\n />\n )}\n {showLegend && (\n <Legend \n wrapperStyle={{ fontSize: '12px', paddingTop: '10px' }}\n iconType=\"rect\"\n iconSize={8}\n layout=\"horizontal\"\n align=\"center\"\n verticalAlign=\"bottom\"\n onMouseEnter={(o) => setHoveredLegend(String(o.dataKey || ''))}\n onMouseLeave={() => setHoveredLegend(null)}\n />\n )}\n {seriesKeys.map((seriesKey, index) => (\n <Area\n key={seriesKey}\n type=\"monotone\"\n dataKey={seriesKey}\n stackId={safeDisplayConfig.stacked ? \"stack\" : undefined}\n stroke={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n fill={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n fillOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 0.6 : 0.1) : 0.3}\n strokeWidth={2}\n strokeOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n />\n ))}\n {spreadTargets.length > 0 && (\n <>\n {/* White background line */}\n <Line\n type=\"monotone\"\n dataKey=\"__target\"\n stroke=\"#ffffff\"\n strokeWidth={2}\n dot={false}\n activeDot={false}\n connectNulls={false}\n />\n {/* Grey dashed line on top */}\n <Line\n type=\"monotone\"\n dataKey=\"__target\"\n name=\"Target\"\n stroke=\"#8B5CF6\"\n strokeWidth={2}\n strokeDasharray=\"2 3\"\n dot={false}\n activeDot={false}\n connectNulls={false}\n />\n </>\n )}\n </ComposedChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'AreaChart rendering error\n return (\n <div className=\"flex flex-col items-center justify-center w-full text-red-500 p-4\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Area Chart Error</div>\n <div className=\"text-xs mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"text-xs text-gray-600\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n}","import { useState } from 'react'\nimport { PieChart as RechartsPieChart, Pie, Cell, Legend } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport { CHART_COLORS } from '../../utils/chartConstants'\nimport { transformChartDataWithSeries, formatTimeValue, getFieldGranularity } from '../../utils/chartUtils'\nimport { useCubeContext } from '../../providers/CubeProvider'\nimport type { ChartProps } from '../../types'\n\nexport default function PieChart({ \n data, \n chartConfig,\n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const [hoveredLegend, setHoveredLegend] = useState<string | null>(null)\n const { labelMap } = useCubeContext()\n \n try {\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showTooltip: displayConfig?.showTooltip ?? true\n }\n\n if (!data || data.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs\">No data points to display in pie chart</div>\n </div>\n </div>\n )\n }\n\n let pieData: Array<{name: string, value: number}>\n\n // Validate chartConfig - support both legacy and new formats\n let xAxisField: string\n let yAxisFields: string[]\n let seriesFields: string[] = []\n \n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format\n xAxisField = chartConfig.xAxis[0]\n yAxisFields = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis : [chartConfig.yAxis]\n seriesFields = chartConfig.series || []\n } else if (chartConfig?.x && chartConfig?.y) {\n // Legacy format\n xAxisField = chartConfig.x\n yAxisFields = Array.isArray(chartConfig.y) ? chartConfig.y : [chartConfig.y]\n } else {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">chartConfig.x/y or chartConfig.xAxis/yAxis required for pie chart</div>\n </div>\n </div>\n )\n }\n\n if (!xAxisField || !yAxisFields || yAxisFields.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">Missing required X-axis or Y-axis fields</div>\n </div>\n </div>\n )\n }\n\n if (seriesFields.length > 0) {\n // Use series-based transformation for dimension-based pie slices\n const { data: chartData } = transformChartDataWithSeries(\n data, \n xAxisField, \n yAxisFields, \n queryObject,\n seriesFields,\n labelMap\n )\n \n // Convert series data to pie format\n pieData = []\n if (chartData.length > 0) {\n const firstRow = chartData[0]\n Object.keys(firstRow).forEach(key => {\n if (key !== 'name' && typeof firstRow[key] === 'number') {\n pieData.push({\n name: String(key),\n value: firstRow[key]\n })\n }\n })\n }\n } else {\n // Standard measure-based pie chart\n const granularity = getFieldGranularity(queryObject, xAxisField)\n pieData = data.map(item => {\n let name = formatTimeValue(item[xAxisField], granularity) || String(item[xAxisField]) || 'Unknown'\n // Handle boolean values with better labels\n if (typeof item[xAxisField] === 'boolean') {\n name = item[xAxisField] ? 'Active' : 'Inactive'\n } else if (name === 'true' || name === 'false') {\n name = name === 'true' ? 'Active' : 'Inactive'\n }\n return {\n name,\n value: typeof item[yAxisFields[0]] === 'string' \n ? parseFloat(item[yAxisFields[0]]) \n : (item[yAxisFields[0]] || 0)\n }\n })\n }\n\n // Filter out invalid values (null, undefined, NaN, or zero)\n const originalLength = pieData.length\n pieData = pieData.filter(item => \n item.value != null && \n !isNaN(item.value) && \n item.value !== 0 && \n item.value > 0\n )\n \n if (pieData.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No valid data</div>\n <div className=\"text-xs\">\n {originalLength > 0 \n ? `Filtered out ${originalLength} data points (zero or invalid values)`\n : 'No data points to display in pie chart'\n }\n </div>\n </div>\n </div>\n )\n }\n \n return (\n <ChartContainer height={height}>\n <RechartsPieChart>\n <Pie\n data={pieData}\n cx=\"50%\"\n cy=\"50%\"\n outerRadius=\"70%\"\n dataKey=\"value\"\n label={!safeDisplayConfig.showLegend ? ({ name, percent }) => \n `${name} ${((percent || 0) * 100).toFixed(0)}%`\n : undefined}\n >\n {pieData.map((_entry, index) => (\n <Cell \n key={`cell-${index}`} \n fill={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n fillOpacity={hoveredLegend ? (hoveredLegend === pieData[index].name ? 1 : 0.3) : 1}\n />\n ))}\n </Pie>\n {safeDisplayConfig.showTooltip && (\n <ChartTooltip />\n )}\n {safeDisplayConfig.showLegend && (\n <Legend \n wrapperStyle={{ fontSize: '12px', paddingTop: '10px' }}\n iconType=\"circle\"\n iconSize={8}\n layout=\"horizontal\"\n align=\"center\"\n verticalAlign=\"bottom\"\n onMouseEnter={(o) => setHoveredLegend(String(o.value || ''))}\n onMouseLeave={() => setHoveredLegend(null)}\n />\n )}\n </RechartsPieChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'PieChart rendering error\n return (\n <div className=\"flex flex-col items-center justify-center w-full text-red-500 p-4\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Pie Chart Error</div>\n <div className=\"text-xs mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"text-xs text-gray-600\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n}","import { useState } from 'react'\nimport { ScatterChart as RechartsScatterChart, Scatter, XAxis, YAxis, CartesianGrid, Legend } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport { CHART_COLORS, CHART_MARGINS } from '../../utils/chartConstants'\nimport { formatTimeValue, getFieldGranularity } from '../../utils/chartUtils'\nimport { useCubeContext } from '../../providers/CubeProvider'\nimport type { ChartProps } from '../../types'\n\nexport default function ScatterChart({ \n data, \n chartConfig, \n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const [hoveredLegend, setHoveredLegend] = useState<string | null>(null)\n const { getFieldLabel } = useCubeContext()\n \n try {\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showGrid: displayConfig?.showGrid ?? true,\n showTooltip: displayConfig?.showTooltip ?? true\n }\n\n if (!data || data.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs\">No data points to display in scatter chart</div>\n </div>\n </div>\n )\n }\n\n // Validate chartConfig - support both legacy and new formats\n let xAxisField: string\n let yAxisField: string\n let seriesFields: string[] = []\n \n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format\n xAxisField = chartConfig.xAxis[0]\n yAxisField = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis[0] : chartConfig.yAxis\n seriesFields = chartConfig.series || []\n } else if (chartConfig?.x && chartConfig?.y) {\n // Legacy format (adapt for scatter chart)\n xAxisField = chartConfig.x\n yAxisField = Array.isArray(chartConfig.y) ? chartConfig.y[0] : chartConfig.y\n } else {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">Invalid or missing chart axis configuration</div>\n </div>\n </div>\n )\n }\n\n if (!xAxisField || !yAxisField) {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">Missing required X-axis or Y-axis fields</div>\n </div>\n </div>\n )\n }\n\n // Transform data for scatter plot\n let scatterData: any[]\n let seriesGroups: { [key: string]: any[] } = {}\n\n if (seriesFields.length > 0) {\n // Group data by series field\n const seriesField = seriesFields[0]\n data.forEach(item => {\n const seriesValue = String(item[seriesField] || 'Default')\n if (!seriesGroups[seriesValue]) {\n seriesGroups[seriesValue] = []\n }\n \n const xGranularity = getFieldGranularity(queryObject, xAxisField)\n const xValue = formatTimeValue(item[xAxisField], xGranularity) || item[xAxisField]\n const yValue = typeof item[yAxisField] === 'string' \n ? parseFloat(item[yAxisField]) \n : (item[yAxisField] || 0)\n \n seriesGroups[seriesValue].push({\n x: typeof xValue === 'string' ? parseFloat(xValue) || 0 : xValue,\n y: yValue,\n name: `${seriesValue} (${xValue}, ${yValue})`\n })\n })\n \n // Use the first series as primary data\n const seriesKeys = Object.keys(seriesGroups)\n scatterData = seriesGroups[seriesKeys[0]] || []\n } else {\n // Single series scatter plot\n const xGranularity = getFieldGranularity(queryObject, xAxisField)\n scatterData = data.map(item => {\n const xValue = formatTimeValue(item[xAxisField], xGranularity) || item[xAxisField]\n const yValue = typeof item[yAxisField] === 'string' \n ? parseFloat(item[yAxisField]) \n : (item[yAxisField] || 0)\n \n return {\n x: typeof xValue === 'string' ? parseFloat(xValue) || 0 : xValue,\n y: yValue,\n name: `(${xValue}, ${yValue})`\n }\n })\n }\n \n // Validate transformed data\n if (!scatterData || scatterData.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No valid data</div>\n <div className=\"text-xs\">No valid data points for scatter chart after transformation</div>\n </div>\n </div>\n )\n }\n\n const seriesKeys = Object.keys(seriesGroups)\n const hasSeries = seriesKeys.length > 1\n \n // Determine if legend will be shown\n const showLegend = safeDisplayConfig.showLegend && hasSeries\n \n // Use custom chart margins with extra left space for Y-axis label\n const chartMargins = {\n ...CHART_MARGINS,\n left: 40 // Increased from 20 to 40 for Y-axis label space\n }\n\n return (\n <ChartContainer height={height}>\n <RechartsScatterChart data={scatterData} margin={chartMargins}>\n {safeDisplayConfig.showGrid && (\n <CartesianGrid strokeDasharray=\"3 3\" />\n )}\n <XAxis \n type=\"number\"\n dataKey=\"x\"\n name={getFieldLabel(xAxisField)}\n tick={{ fontSize: 12 }}\n />\n <YAxis \n type=\"number\"\n dataKey=\"y\"\n name={getFieldLabel(yAxisField)}\n tick={{ fontSize: 12 }}\n label={{ value: getFieldLabel(yAxisField), angle: -90, position: 'left', style: { textAnchor: 'middle', fontSize: '12px' } }}\n />\n {safeDisplayConfig.showTooltip && (\n <ChartTooltip />\n )}\n {showLegend && (\n <Legend \n wrapperStyle={{ fontSize: '12px', paddingTop: '10px' }}\n iconType=\"circle\"\n iconSize={8}\n layout=\"horizontal\"\n align=\"center\"\n verticalAlign=\"bottom\"\n onMouseEnter={(o) => setHoveredLegend(String(o.dataKey || ''))}\n onMouseLeave={() => setHoveredLegend(null)}\n />\n )}\n {hasSeries ? (\n // Multiple series\n seriesKeys.map((seriesKey, index) => (\n <Scatter\n key={seriesKey}\n name={seriesKey}\n data={seriesGroups[seriesKey]}\n fill={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n fillOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n />\n ))\n ) : (\n // Single series\n <Scatter\n name=\"Data\"\n data={scatterData}\n fill={(colorPalette?.colors && colorPalette.colors[0]) || CHART_COLORS[0]}\n />\n )}\n </RechartsScatterChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'ScatterChart rendering error\n return (\n <div className=\"flex flex-col items-center justify-center w-full text-red-500 p-4\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Scatter Chart Error</div>\n <div className=\"text-xs mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"text-xs text-gray-600\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n}","import { useState } from 'react'\nimport { RadarChart as RechartsRadarChart, PolarGrid, PolarAngleAxis, PolarRadiusAxis, Radar, Legend } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport { CHART_COLORS } from '../../utils/chartConstants'\nimport { transformChartDataWithSeries, formatTimeValue, getFieldGranularity } from '../../utils/chartUtils'\nimport type { ChartProps } from '../../types'\n\nexport default function RadarChart({ \n data, \n chartConfig,\n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const [hoveredLegend, setHoveredLegend] = useState<string | null>(null)\n \n try {\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showTooltip: displayConfig?.showTooltip ?? true,\n showGrid: displayConfig?.showGrid ?? true\n }\n\n if (!data || data.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs\">No data points to display in radar chart</div>\n </div>\n </div>\n )\n }\n\n let radarData: any[]\n let seriesKeys: string[] = []\n\n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format - use chart config\n const xAxisField = chartConfig.xAxis[0] // Subject/category field\n const yAxisFields = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis : [chartConfig.yAxis] // Value fields\n const seriesFields = chartConfig.series || []\n\n // Use shared function to transform data and handle series\n const { data: chartData, seriesKeys: transformedSeriesKeys } = transformChartDataWithSeries(\n data, \n xAxisField, \n yAxisFields, \n queryObject,\n seriesFields\n )\n \n radarData = chartData\n seriesKeys = transformedSeriesKeys\n } else {\n // Legacy format or auto-detection - try to find suitable fields\n const firstRow = data[0]\n const keys = Object.keys(firstRow)\n \n // Try to find subject/category field\n const subjectField = keys.find(key => \n typeof firstRow[key] === 'string' ||\n key.toLowerCase().includes('subject') ||\n key.toLowerCase().includes('name') ||\n key.toLowerCase().includes('category')\n ) || keys[0]\n\n // Find numeric fields for values\n const valueFields = keys.filter(key => \n typeof firstRow[key] === 'number' && key !== subjectField\n )\n\n if (valueFields.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">No numeric fields found for radar chart values</div>\n </div>\n </div>\n )\n }\n\n // Transform data for radar chart\n if (subjectField) {\n // Use subject field for radar categories\n const granularity = getFieldGranularity(queryObject, subjectField)\n radarData = data.map(item => {\n const transformedItem: any = {\n name: formatTimeValue(item[subjectField], granularity) || String(item[subjectField]) || 'Unknown'\n }\n \n valueFields.forEach(field => {\n const displayName = field.split('.').pop() || field\n transformedItem[displayName] = typeof item[field] === 'string' \n ? parseFloat(item[field]) \n : (item[field] || 0)\n })\n \n return transformedItem\n })\n \n seriesKeys = valueFields.map(field => field.split('.').pop() || field)\n } else {\n // Fallback - use first value field only\n radarData = data.map(item => ({\n name: String(item[keys[0]] || 'Unknown'),\n value: typeof item[valueFields[0]] === 'string' \n ? parseFloat(item[valueFields[0]]) \n : (item[valueFields[0]] || 0)\n }))\n seriesKeys = ['value']\n }\n }\n \n // Validate transformed data\n if (!radarData || radarData.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No valid data</div>\n <div className=\"text-xs\">No valid data points for radar chart after transformation</div>\n </div>\n </div>\n )\n }\n\n return (\n <ChartContainer height={height}>\n <RechartsRadarChart data={radarData} margin={{ top: 20, right: 80, bottom: 20, left: 80 }}>\n {safeDisplayConfig.showGrid && (\n <PolarGrid />\n )}\n <PolarAngleAxis \n dataKey=\"name\"\n tick={{ fontSize: 12 }}\n className=\"text-gray-600\"\n />\n <PolarRadiusAxis \n tick={{ fontSize: 10 }}\n className=\"text-gray-600\"\n />\n {safeDisplayConfig.showTooltip && (\n <ChartTooltip />\n )}\n {(safeDisplayConfig.showLegend && seriesKeys.length > 1) && (\n <Legend \n wrapperStyle={{ fontSize: '12px', paddingTop: '10px' }}\n iconType=\"rect\"\n iconSize={8}\n layout=\"horizontal\"\n align=\"center\"\n verticalAlign=\"bottom\"\n onMouseEnter={(o) => setHoveredLegend(String(o.dataKey || ''))}\n onMouseLeave={() => setHoveredLegend(null)}\n />\n )}\n {seriesKeys.map((seriesKey, index) => (\n <Radar\n key={seriesKey}\n name={seriesKey}\n dataKey={seriesKey}\n stroke={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n fill={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n fillOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 0.6 : 0.1) : 0.3}\n strokeOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n strokeWidth={2}\n />\n ))}\n </RechartsRadarChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'RadarChart rendering error\n return (\n <div className=\"flex flex-col items-center justify-center w-full text-red-500 p-4\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Radar Chart Error</div>\n <div className=\"text-xs mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"text-xs text-gray-600\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n}","import { useState } from 'react'\nimport { RadialBarChart as RechartsRadialBarChart, RadialBar, Legend, Cell } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport { CHART_COLORS } from '../../utils/chartConstants'\nimport { formatTimeValue, getFieldGranularity } from '../../utils/chartUtils'\nimport type { ChartProps } from '../../types'\n\nexport default function RadialBarChart({ \n data, \n chartConfig,\n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const [hoveredLegend, setHoveredLegend] = useState<string | null>(null)\n \n try {\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showTooltip: displayConfig?.showTooltip ?? true\n }\n\n if (!data || data.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs\">No data points to display in radial bar chart</div>\n </div>\n </div>\n )\n }\n\n let radialData: Array<{name: string, value: number, fill?: string}>\n\n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format - use chart config\n const xAxisField = chartConfig.xAxis[0] // Name/category field\n const yAxisField = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis[0] : chartConfig.yAxis // Value field\n\n const granularity = getFieldGranularity(queryObject, xAxisField)\n radialData = data.map((item, index) => ({\n name: formatTimeValue(item[xAxisField], granularity) || String(item[xAxisField]) || 'Unknown',\n value: typeof item[yAxisField] === 'string' \n ? parseFloat(item[yAxisField]) \n : (item[yAxisField] || 0),\n fill: (colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]\n }))\n } else {\n // Legacy format or auto-detection\n const firstRow = data[0]\n const keys = Object.keys(firstRow)\n \n // Try to find name/label field\n const nameField = keys.find(key => \n typeof firstRow[key] === 'string' ||\n key.toLowerCase().includes('name') ||\n key.toLowerCase().includes('label') ||\n key.toLowerCase().includes('category')\n ) || keys[0]\n\n // Find a numeric field for values\n const valueField = keys.find(key => \n typeof firstRow[key] === 'number' && key !== nameField\n ) || keys[1]\n\n if (!valueField) {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">No numeric field found for radial bar chart values</div>\n </div>\n </div>\n )\n }\n\n // Transform data for radial bar chart\n radialData = data.map((item, index) => {\n let name = item[nameField]\n // Handle boolean values with better labels\n if (typeof name === 'boolean') {\n name = name ? 'Active' : 'Inactive'\n } else if (name === 'true' || name === 'false') {\n name = name === 'true' ? 'Active' : 'Inactive'\n } else {\n name = String(name)\n }\n return {\n name,\n value: typeof item[valueField] === 'string' \n ? parseFloat(item[valueField]) \n : (item[valueField] || 0),\n fill: (colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]\n }\n })\n }\n\n // Filter out zero/null values\n radialData = radialData.filter(item => item.value != null && item.value !== 0)\n \n if (radialData.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No valid data</div>\n <div className=\"text-xs\">No valid data points for radial bar chart after transformation</div>\n </div>\n </div>\n )\n }\n\n return (\n <ChartContainer height={height}>\n <RechartsRadialBarChart \n data={radialData}\n innerRadius=\"10%\"\n outerRadius=\"80%\"\n margin={{ top: 20, right: 30, bottom: 20, left: 30 }}\n >\n {safeDisplayConfig.showTooltip && (\n <ChartTooltip />\n )}\n {safeDisplayConfig.showLegend && (\n <Legend \n wrapperStyle={{ fontSize: '12px', paddingTop: '10px' }}\n iconType=\"circle\"\n iconSize={8}\n layout=\"horizontal\"\n align=\"center\"\n verticalAlign=\"bottom\"\n onMouseEnter={(o) => setHoveredLegend(String(o.value || ''))}\n onMouseLeave={() => setHoveredLegend(null)}\n />\n )}\n <RadialBar \n dataKey=\"value\" \n cornerRadius={4}\n label={{ position: 'insideStart', fill: '#fff', fontSize: 12 }}\n >\n {radialData.map((entry, index) => (\n <Cell \n key={`cell-${index}`} \n fill={entry.fill}\n fillOpacity={hoveredLegend ? (hoveredLegend === entry.name ? 1 : 0.3) : 1}\n />\n ))}\n </RadialBar>\n </RechartsRadialBarChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'RadialBarChart rendering error\n return (\n <div className=\"flex flex-col items-center justify-center w-full text-red-500 p-4\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Radial Bar Chart Error</div>\n <div className=\"text-xs mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"text-xs text-gray-600\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n}","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import { useState } from 'react'\nimport { Treemap } from 'recharts'\nimport { scaleQuantize, scaleOrdinal } from 'd3'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport { CHART_COLORS, CHART_COLORS_GRADIENT } from '../../utils/chartConstants'\nimport { formatTimeValue, getFieldGranularity } from '../../utils/chartUtils'\nimport { useCubeContext } from '../../providers/CubeProvider'\nimport type { ChartProps } from '../../types'\n\nexport default function TreeMapChart({ \n data, \n chartConfig,\n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null)\n const { getFieldLabel } = useCubeContext()\n \n try {\n const safeDisplayConfig = {\n showTooltip: displayConfig?.showTooltip ?? true,\n showLegend: displayConfig?.showLegend ?? true\n }\n\n if (!data || data.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs\">No data points to display in treemap chart</div>\n </div>\n </div>\n )\n }\n\n let treemapData: Array<{name: string, size: number, fill?: string, series?: string}>\n let isNumericSeries = false\n let seriesField: string | undefined\n\n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format - use chart config\n const xAxisField = chartConfig.xAxis[0] // Name/category field\n const yAxisField = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis[0] : chartConfig.yAxis // Size field\n seriesField = Array.isArray(chartConfig.series) ? chartConfig.series[0] : chartConfig.series // Color grouping field\n\n const granularity = getFieldGranularity(queryObject, xAxisField)\n \n if (seriesField) {\n // Check if series field is numeric for color scaling\n const seriesValues = data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n }).filter(val => !isNaN(val))\n \n isNumericSeries = seriesValues.length === data.length && seriesValues.every(val => typeof val === 'number')\n \n \n if (isNumericSeries) {\n // Use D3 quantize scale for better color distribution with small ranges\n const minValue = Math.min(...seriesValues)\n const maxValue = Math.max(...seriesValues)\n \n // Create D3 quantize color scale - maps continuous data to discrete color bands\n const colorScale = scaleQuantize<string>()\n .domain([minValue, maxValue])\n .range(CHART_COLORS_GRADIENT)\n \n treemapData = data.map((item) => {\n const seriesValue = typeof item[seriesField!] === 'string' \n ? parseFloat(item[seriesField!]) \n : item[seriesField!]\n \n const color = colorScale(seriesValue)\n \n return {\n name: formatTimeValue(item[xAxisField], granularity) || String(item[xAxisField]) || 'Unknown',\n size: typeof item[yAxisField] === 'string' \n ? parseFloat(item[yAxisField]) \n : (item[yAxisField] || 0),\n fill: color,\n series: String(item[seriesField!])\n }\n })\n } else {\n // Use D3 ordinal color scale for categorical series\n const uniqueSeriesValues = [...new Set(data.map(item => String(item[seriesField!])))]\n const colorScale = scaleOrdinal<string>()\n .domain(uniqueSeriesValues)\n .range(colorPalette?.colors || CHART_COLORS)\n \n treemapData = data.map((item) => ({\n name: formatTimeValue(item[xAxisField], granularity) || String(item[xAxisField]) || 'Unknown',\n size: typeof item[yAxisField] === 'string' \n ? parseFloat(item[yAxisField]) \n : (item[yAxisField] || 0),\n fill: colorScale(String(item[seriesField!])),\n series: String(item[seriesField!])\n }))\n }\n } else {\n // No series grouping - use index-based colors\n treemapData = data.map((item, index) => ({\n name: formatTimeValue(item[xAxisField], granularity) || String(item[xAxisField]) || 'Unknown',\n size: typeof item[yAxisField] === 'string' \n ? parseFloat(item[yAxisField]) \n : (item[yAxisField] || 0),\n fill: (colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]\n }))\n }\n } else {\n // Legacy format or auto-detection\n const firstRow = data[0]\n const keys = Object.keys(firstRow)\n \n // Try to find name/label field\n const nameField = keys.find(key => \n typeof firstRow[key] === 'string' ||\n key.toLowerCase().includes('name') ||\n key.toLowerCase().includes('label') ||\n key.toLowerCase().includes('category')\n ) || keys[0]\n\n // Find a numeric field for size - look for 'size' field first, then any numeric\n const sizeField = keys.find(key => key.toLowerCase().includes('size')) ||\n keys.find(key => \n typeof firstRow[key] === 'number' && key !== nameField\n ) || keys[1]\n\n if (!sizeField) {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">No numeric field found for treemap chart size</div>\n </div>\n </div>\n )\n }\n\n // Transform data for treemap chart\n treemapData = data.map((item, index) => {\n let name = item[nameField]\n // Handle boolean values with better labels\n if (typeof name === 'boolean') {\n name = name ? 'Active' : 'Inactive'\n } else if (name === 'true' || name === 'false') {\n name = name === 'true' ? 'Active' : 'Inactive'\n } else {\n name = String(name)\n }\n return {\n name,\n size: typeof item[sizeField] === 'string' \n ? parseFloat(item[sizeField]) \n : (item[sizeField] || 0),\n fill: (colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]\n }\n })\n }\n\n // Filter out zero/null values and ensure positive sizes\n treemapData = treemapData.filter(item => item.size != null && item.size > 0)\n \n if (treemapData.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No valid data</div>\n <div className=\"text-xs\">No valid data points for treemap chart after transformation</div>\n </div>\n </div>\n )\n }\n\n // Custom content renderer for treemap cells with HTML overlays\n const CustomizedContent = (props: any) => {\n const { x, y, width, height, index, name, size } = props\n \n if (width < 20 || height < 20) return null // Don't render content for very small cells\n \n return (\n <g>\n <rect\n x={x}\n y={y}\n width={width}\n height={height}\n style={{\n fill: treemapData[index]?.fill || ((colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]),\n fillOpacity: hoveredIndex !== null ? (hoveredIndex === index ? 1 : 0.6) : 0.8,\n stroke: '#fff',\n strokeWidth: 2,\n cursor: 'pointer'\n }}\n onMouseEnter={() => setHoveredIndex(index)}\n onMouseLeave={() => setHoveredIndex(null)}\n />\n <foreignObject \n x={x} \n y={y} \n width={width} \n height={height}\n style={{ pointerEvents: 'none', overflow: 'visible' }}\n >\n <div \n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '4px',\n boxSizing: 'border-box',\n color: '#ffffff',\n textShadow: '0 1px 2px rgba(0,0,0,0.8)',\n fontFamily: 'system-ui, -apple-system, sans-serif',\n overflow: 'hidden'\n }}\n >\n {width > 40 && height > 30 && (\n <div \n style={{\n fontSize: `${Math.max(10, Math.min(width / 8, height / 8, 16))}px`,\n fontWeight: '600',\n textAlign: 'center',\n lineHeight: '1.2',\n marginBottom: width > 60 && height > 45 ? '4px' : '0',\n wordBreak: 'break-word',\n hyphens: 'auto'\n }}\n >\n {name}\n </div>\n )}\n {width > 60 && height > 45 && (\n <div \n style={{\n fontSize: `${Math.max(8, Math.min(width / 10, height / 10, 14))}px`,\n textAlign: 'center',\n opacity: 0.9\n }}\n >\n {typeof size === 'number' ? size.toLocaleString() : size}\n </div>\n )}\n </div>\n </foreignObject>\n </g>\n )\n }\n\n // Check if we have series data for legend\n const hasSeriesData = treemapData.some(item => 'series' in item)\n const uniqueSeries = hasSeriesData \n ? [...new Set(treemapData.map(item => item.series).filter(Boolean))]\n : []\n \n // For numeric series, create a legend showing the color scale\n let legendPayload: any[] = []\n if (safeDisplayConfig.showLegend && seriesField) {\n \n if (isNumericSeries) {\n // Create color scale legend for numeric values\n const minValue = Math.min(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n }))\n const maxValue = Math.max(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n }))\n \n \n // Create legend entries showing color scale\n legendPayload = CHART_COLORS_GRADIENT.map((color, index) => {\n const ratio = index / (CHART_COLORS_GRADIENT.length - 1)\n const value = minValue + (maxValue - minValue) * ratio\n return {\n value: value.toFixed(2),\n type: 'rect',\n color: color\n }\n })\n } else if (uniqueSeries.length > 1) {\n // Use categorical legend for non-numeric series\n legendPayload = uniqueSeries.map((series, index) => ({\n value: series,\n type: 'rect',\n color: CHART_COLORS[index % CHART_COLORS.length]\n }))\n }\n \n }\n\n // Calculate height adjustment for legend\n const hasLegend = safeDisplayConfig.showLegend && legendPayload.length > 0\n const adjustedHeight = hasLegend \n ? (typeof height === 'string' && height.includes('%') \n ? height \n : typeof height === 'number' \n ? height + 60 \n : `calc(${height} + 60px)`)\n : height\n\n return (\n <div className=\"w-full\" style={{ height: adjustedHeight }}>\n <ChartContainer height={hasLegend ? `calc(100% - 50px)` : \"100%\"}>\n <Treemap\n data={treemapData}\n dataKey=\"size\"\n aspectRatio={4/3}\n stroke=\"#fff\"\n content={<CustomizedContent />}\n >\n {safeDisplayConfig.showTooltip && (\n <ChartTooltip />\n )}\n </Treemap>\n </ChartContainer>\n \n {/* Custom Legend outside ChartContainer */}\n {hasLegend && (\n <div className=\"flex justify-center items-center mt-4 pb-2\">\n {isNumericSeries ? (\n // Gradient legend for numeric series\n <div className=\"flex flex-col items-center\">\n <div className=\"text-xs font-semibold text-gray-700 mb-2\">\n {seriesField ? getFieldLabel(seriesField) : ''}\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs text-gray-600\">\n {Math.min(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n })).toFixed(2)}\n </span>\n <div \n className=\"h-4 rounded-sm\"\n style={{ \n width: '200px',\n background: `linear-gradient(to right, ${CHART_COLORS_GRADIENT.join(', ')})`\n }}\n />\n <span className=\"text-xs text-gray-600\">\n {Math.max(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n })).toFixed(2)}\n </span>\n </div>\n </div>\n ) : (\n // Discrete legend for categorical series\n <div className=\"flex flex-wrap justify-center gap-4\">\n {legendPayload.map((item, index) => (\n <div key={index} className=\"flex items-center gap-2\">\n <div \n className=\"w-3 h-3 rounded-xs\"\n style={{ backgroundColor: item.color }}\n />\n <span className=\"text-xs text-gray-600\">\n {item.value}\n </span>\n </div>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n )\n } catch (error) {\n // 'TreeMapChart rendering error\n return (\n <div className=\"flex flex-col items-center justify-center w-full text-red-500 p-4\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">TreeMap Chart Error</div>\n <div className=\"text-xs mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"text-xs text-gray-600\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n}","/**\n * Simple Data Table component\n * Minimal styling with Tailwind\n */\n\nimport { useCubeContext } from '../../providers/CubeProvider'\nimport type { ChartProps } from '../../types'\n\nexport default function DataTable({ \n data, \n chartConfig,\n height = 300 \n}: ChartProps) {\n const { getFieldLabel } = useCubeContext()\n \n if (!data || data.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs\">No data to display in table</div>\n </div>\n </div>\n )\n }\n\n // Use chartConfig.xAxis to filter columns, or show all if not specified\n const allColumns = Object.keys(data[0] || {})\n const columns = chartConfig?.xAxis && chartConfig.xAxis.length > 0 \n ? chartConfig.xAxis.filter(col => allColumns.includes(col))\n : allColumns\n\n if (columns.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-gray-500\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No columns available</div>\n <div className=\"text-xs\">Data structure is invalid</div>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"w-full overflow-auto\" style={{ height }}>\n <table className=\"min-w-full divide-y divide-gray-200\">\n <thead className=\"bg-gray-50 sticky top-0\">\n <tr>\n {columns.map((column) => (\n <th\n key={column}\n className=\"px-3 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n {getFieldLabel(column)}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {data.map((row, index) => (\n <tr key={index} className=\"hover:bg-gray-50\">\n {columns.map((column) => (\n <td\n key={column}\n className=\"px-3 py-2 whitespace-nowrap text-sm text-gray-900\"\n >\n {formatCellValue(row[column])}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )\n}\n\nfunction formatCellValue(value: any): string {\n if (value == null) return ''\n if (typeof value === 'number') {\n return value.toLocaleString()\n }\n if (typeof value === 'boolean') {\n return value ? 'Yes' : 'No'\n }\n return String(value)\n}","/**\n * Utility functions for drizzle-cube client\n */\n\nimport type { PortletConfig, DashboardConfig } from '../types'\n\n// Re-export chart utilities\nexport * from './chartUtils'\nexport * from './chartConstants'\n\n/**\n * Create a dashboard layout from portlet configurations\n */\nexport function createDashboardLayout(portlets: PortletConfig[]): DashboardConfig {\n const layouts = generateResponsiveLayouts(portlets)\n \n return {\n portlets,\n layouts\n }\n}\n\n/**\n * Generate responsive layouts for different breakpoints\n */\nexport function generateResponsiveLayouts(portlets: PortletConfig[]) {\n const gridLayout = portlets.map(portlet => ({\n i: portlet.id,\n x: portlet.x,\n y: portlet.y,\n w: portlet.w,\n h: portlet.h,\n minW: 3,\n minH: 3\n }))\n\n return {\n lg: gridLayout,\n md: gridLayout.map(item => ({ ...item, w: Math.min(item.w, 8) })),\n sm: gridLayout.map(item => ({ ...item, w: Math.min(item.w, 6) })),\n xs: gridLayout.map(item => ({ ...item, w: Math.min(item.w, 4) })),\n xxs: gridLayout.map(item => ({ ...item, w: 2 }))\n }\n}\n\n/**\n * Format chart data for display\n */\nexport function formatChartData(data: any[], options: {\n formatNumbers?: boolean\n precision?: number\n} = {}): any[] {\n const { formatNumbers = true, precision = 2 } = options\n\n if (!formatNumbers) return data\n\n return data.map(row => {\n const formattedRow: any = {}\n \n for (const [key, value] of Object.entries(row)) {\n if (typeof value === 'number') {\n formattedRow[key] = Number(value.toFixed(precision))\n } else {\n formattedRow[key] = value\n }\n }\n \n return formattedRow\n })\n}\n\n/**\n * Generate a unique ID for new portlets\n */\nexport function generatePortletId(): string {\n return `portlet-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n}\n\n/**\n * Find the next available position in a grid\n */\nexport function findNextPosition(existingPortlets: PortletConfig[], _w: number = 6, _h: number = 4): { x: number; y: number } {\n if (existingPortlets.length === 0) {\n return { x: 0, y: 0 }\n }\n\n // Find the maximum Y position and height\n const maxY = Math.max(...existingPortlets.map(p => p.y + p.h))\n \n return { x: 0, y: maxY }\n}\n\n/**\n * Validate a cube query JSON string\n */\nexport function validateCubeQuery(queryString: string): { valid: boolean; error?: string; query?: any } {\n try {\n const query = JSON.parse(queryString)\n \n // Basic validation\n if (typeof query !== 'object' || query === null) {\n return { valid: false, error: 'Query must be a JSON object' }\n }\n\n // Check for required fields\n if (!query.measures && !query.dimensions) {\n return { valid: false, error: 'Query must have at least measures or dimensions' }\n }\n\n return { valid: true, query }\n } catch (error) {\n return { valid: false, error: 'Invalid JSON format' }\n }\n}\n\n/**\n * Create a sample portlet configuration\n */\nexport function createSamplePortlet(): Omit<PortletConfig, 'id'> {\n return {\n title: 'Sample Chart',\n query: JSON.stringify({\n measures: ['count'],\n dimensions: ['category']\n }, null, 2),\n chartType: 'bar',\n chartConfig: {\n x: 'category',\n y: ['count']\n },\n displayConfig: {\n showLegend: true,\n showGrid: true,\n showTooltip: true\n },\n w: 6,\n h: 4,\n x: 0,\n y: 0\n }\n}"],"names":["ChartContainer","children","height","jsx","ResponsiveContainer","containerStyle","error","jsxs","ChartTooltip","formatter","labelFormatter","Tooltip","CHART_COLORS","CHART_COLORS_GRADIENT","POSITIVE_COLOR","NEGATIVE_COLOR","CHART_MARGINS","getFieldLabel","fieldName","labelMap","formatTimeValue","value","granularity","str","isoStr","date","year","month","day","hours","minutes","quarter","seconds","milliseconds","getFieldGranularity","queryObject","timeDim","td","granularityMatch","suffix","transformChartData","data","xAxisField","yAxisFields","row","transformed","field","displayName","transformChartDataWithSeries","seriesFields","originalQuery","queryDimensions","queryMeasures","yAxisMeasures","yAxisDimensions","groupedData","xValue","measure","dimension","dimValue","seriesName","measureToAggregate","m","measureValue","chartData","dimensionSeries","seriesKeys","parseTargetValues","targetString","trimmed","values","val","num","spreadTargetValues","targets","dataLength","result","baseGroupSize","remainder","currentIndex","i","groupSize","j","calculateVariance","actual","target","formatVariance","variance","decimals","BarChart","chartConfig","displayConfig","colorPalette","hoveredLegend","setHoveredLegend","useState","contextGetFieldLabel","useCubeContext","safeDisplayConfig","shouldStack","usePositiveNegativeColoring","showLegend","chartMargins","targetValues","spreadTargets","enhancedChartData","dataPoint","index","ComposedChart","CartesianGrid","XAxis","YAxis","name","Legend","o","seriesKey","Bar","entry","entryIndex","fillColor","Cell","Fragment","Line","LineChart","RechartsLineChart","AreaChart","Area","PieChart","pieData","firstRow","key","item","originalLength","RechartsPieChart","Pie","percent","_entry","ScatterChart","yAxisField","scatterData","seriesGroups","seriesField","seriesValue","xGranularity","yValue","hasSeries","RechartsScatterChart","Scatter","RadarChart","radarData","transformedSeriesKeys","keys","subjectField","valueFields","transformedItem","RechartsRadarChart","PolarGrid","PolarAngleAxis","PolarRadiusAxis","Radar","RadialBarChart","radialData","nameField","valueField","RechartsRadialBarChart","RadialBar","ascending","a","b","descending","bisector","f","compare1","compare2","delta","d","x","zero","left","lo","hi","mid","right","center","number","ascendingBisect","bisectRight","InternMap","entries","keyof","intern_get","intern_set","intern_delete","_intern","_key","e10","e5","e2","tickSpec","start","stop","count","step","power","factor","i1","i2","inc","ticks","reverse","n","tickIncrement","tickStep","define","constructor","factory","prototype","extend","parent","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","format","l","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","rgb","opacity","k","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","h","s","Hsl","min","max","hsl","m2","m1","hsl2rgb","clamph","clampt","constant","linear","t","exponential","y","gamma","nogamma","interpolateRgb","rgbGamma","end","colorRgb","numberArray","c","isNumberArray","genericArray","nb","na","interpolateNumber","object","reA","reB","one","interpolateString","bi","am","bm","bs","q","interpolate","string","interpolateRound","formatDecimal","formatDecimalParts","p","coefficient","exponent","formatGroup","grouping","thousands","width","length","formatNumerals","numerals","re","formatSpecifier","specifier","match","FormatSpecifier","formatTrim","out","i0","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","identity$1","map","prefixes","formatLocale","locale","group","identity","currencyPrefix","currencySuffix","decimal","minus","nan","newFormat","fill","align","sign","symbol","comma","precision","trim","type","prefix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","padding","formatPrefix","e","defaultLocale","precisionFixed","precisionPrefix","precisionRound","initRange","domain","range","implicit","ordinal","unknown","scale","_","constants","unit","normalize","clamper","bimap","d0","d1","r0","r1","polymap","bisect","copy","source","transformer","interpolateValue","transform","untransform","clamp","piecewise","output","input","rescale","u","continuous","tickFormat","linearish","prestep","maxIter","quantize","x0","x1","TreeMapChart","hoveredIndex","setHoveredIndex","treemapData","isNumericSeries","seriesValues","minValue","maxValue","colorScale","scaleQuantize","uniqueSeriesValues","scaleOrdinal","sizeField","CustomizedContent","props","size","uniqueSeries","legendPayload","ratio","series","hasLegend","adjustedHeight","Treemap","DataTable","allColumns","columns","col","column","formatCellValue","createDashboardLayout","portlets","layouts","generateResponsiveLayouts","gridLayout","portlet","formatChartData","options","formatNumbers","formattedRow","generatePortletId","findNextPosition","existingPortlets","_w","_h","validateCubeQuery","queryString","query","createSamplePortlet"],"mappings":"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","x_google_ignoreList":[12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54]}
|