drizzle-cube 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/charts.js +15 -15
- package/dist/client/chunks/chart-activitygridchart-BzL97Vnm.js +2510 -0
- package/dist/client/chunks/chart-activitygridchart-BzL97Vnm.js.map +1 -0
- package/dist/client/chunks/chart-activitygridchart-config-48WqIofo.js +230 -0
- package/dist/client/chunks/chart-activitygridchart-config-48WqIofo.js.map +1 -0
- package/dist/client/chunks/{chart-areachart-CTzUpR0_.js → chart-areachart-BtH3SvAM.js} +3 -3
- package/dist/client/chunks/{chart-areachart-CTzUpR0_.js.map → chart-areachart-BtH3SvAM.js.map} +1 -1
- package/dist/client/chunks/{chart-areachart-config-InZgxubz.js → chart-areachart-config-D8taXdn1.js} +5 -6
- package/dist/client/chunks/chart-areachart-config-D8taXdn1.js.map +1 -0
- package/dist/client/chunks/{chart-barchart-CKF8FnMs.js → chart-barchart-DX6DIoIp.js} +4 -4
- package/dist/client/chunks/{chart-barchart-CKF8FnMs.js.map → chart-barchart-DX6DIoIp.js.map} +1 -1
- package/dist/client/chunks/{chart-barchart-config-DxatOnVV.js → chart-barchart-config-DjRZBtLb.js} +5 -6
- package/dist/client/chunks/chart-barchart-config-DjRZBtLb.js.map +1 -0
- package/dist/client/chunks/{chart-bubblechart-5Z0hPYwn.js → chart-bubblechart-Lj_PnppP.js} +2 -2
- package/dist/client/chunks/{chart-bubblechart-5Z0hPYwn.js.map → chart-bubblechart-Lj_PnppP.js.map} +1 -1
- package/dist/client/chunks/{chart-bubblechart-config-CcZTMTCx.js → chart-bubblechart-config-C6ck2qmg.js} +5 -6
- package/dist/client/chunks/chart-bubblechart-config-C6ck2qmg.js.map +1 -0
- package/dist/client/chunks/{chart-charttooltip-CqtjUW2V.js → chart-charttooltip-D9BKscsw.js} +2 -2
- package/dist/client/chunks/{chart-charttooltip-CqtjUW2V.js.map → chart-charttooltip-D9BKscsw.js.map} +1 -1
- package/dist/client/chunks/{chart-datatable-uFzkh18f.js → chart-datatable-BaECYDn2.js} +2 -2
- package/dist/client/chunks/{chart-datatable-uFzkh18f.js.map → chart-datatable-BaECYDn2.js.map} +1 -1
- package/dist/client/chunks/{chart-datatable-config-D7mojhYA.js → chart-datatable-config-B5z0SlOJ.js} +5 -6
- package/dist/client/chunks/chart-datatable-config-B5z0SlOJ.js.map +1 -0
- package/dist/client/chunks/{chart-kpidelta-B1zg2dTx.js → chart-kpidelta-Bx-stIIk.js} +23 -23
- package/dist/client/chunks/{chart-kpidelta-B1zg2dTx.js.map → chart-kpidelta-Bx-stIIk.js.map} +1 -1
- package/dist/client/chunks/{chart-kpidelta-config-icJXuFxe.js → chart-kpidelta-config-CnZfi_P2.js} +5 -6
- package/dist/client/chunks/chart-kpidelta-config-CnZfi_P2.js.map +1 -0
- package/dist/client/chunks/{chart-kpinumber-CHcSqthc.js → chart-kpinumber-BrXgyKGP.js} +23 -23
- package/dist/client/chunks/{chart-kpinumber-CHcSqthc.js.map → chart-kpinumber-BrXgyKGP.js.map} +1 -1
- package/dist/client/chunks/{chart-kpinumber-config-T39g03ud.js → chart-kpinumber-config-CVikHojM.js} +5 -6
- package/dist/client/chunks/chart-kpinumber-config-CVikHojM.js.map +1 -0
- package/dist/client/chunks/{chart-kpitext-BrapZkRe.js → chart-kpitext-_2tnYN_z.js} +3 -3
- package/dist/client/chunks/{chart-kpitext-BrapZkRe.js.map → chart-kpitext-_2tnYN_z.js.map} +1 -1
- package/dist/client/chunks/{chart-kpitext-config-BbJGXAVk.js → chart-kpitext-config-B2MovXSw.js} +5 -6
- package/dist/client/chunks/chart-kpitext-config-B2MovXSw.js.map +1 -0
- package/dist/client/chunks/{chart-linechart-DqZU4vH8.js → chart-linechart-DBdIULsM.js} +4 -4
- package/dist/client/chunks/{chart-linechart-DqZU4vH8.js.map → chart-linechart-DBdIULsM.js.map} +1 -1
- package/dist/client/chunks/{chart-linechart-config-BS1qVC8K.js → chart-linechart-config-CVBVB7nS.js} +5 -6
- package/dist/client/chunks/chart-linechart-config-CVBVB7nS.js.map +1 -0
- package/dist/client/chunks/{chart-markdownchart-config-DMCD8phf.js → chart-markdownchart-config-Cq5Sxrgq.js} +5 -6
- package/dist/client/chunks/chart-markdownchart-config-Cq5Sxrgq.js.map +1 -0
- package/dist/client/chunks/{chart-piechart-Dsxs70px.js → chart-piechart-CzesCpZ_.js} +3 -3
- package/dist/client/chunks/{chart-piechart-Dsxs70px.js.map → chart-piechart-CzesCpZ_.js.map} +1 -1
- package/dist/client/chunks/{chart-piechart-config-6ZK8XaSX.js → chart-piechart-config-Bdd31Gdi.js} +5 -6
- package/dist/client/chunks/chart-piechart-config-Bdd31Gdi.js.map +1 -0
- package/dist/client/chunks/{chart-radarchart-2qnrlYCv.js → chart-radarchart-B3WUEiTh.js} +3 -3
- package/dist/client/chunks/{chart-radarchart-2qnrlYCv.js.map → chart-radarchart-B3WUEiTh.js.map} +1 -1
- package/dist/client/chunks/{chart-radarchart-config-CCWOkkwO.js → chart-radarchart-config-BWyfn0ij.js} +5 -6
- package/dist/client/chunks/chart-radarchart-config-BWyfn0ij.js.map +1 -0
- package/dist/client/chunks/{chart-radialbarchart-DPi9fYc7.js → chart-radialbarchart-DBiRcLd9.js} +3 -3
- package/dist/client/chunks/{chart-radialbarchart-DPi9fYc7.js.map → chart-radialbarchart-DBiRcLd9.js.map} +1 -1
- package/dist/client/chunks/{chart-radialbarchart-config-DicXYrMW.js → chart-radialbarchart-config-lU2_NQCD.js} +5 -6
- package/dist/client/chunks/chart-radialbarchart-config-lU2_NQCD.js.map +1 -0
- package/dist/client/chunks/{chart-scatterchart-DNleJCr4.js → chart-scatterchart-C_D9OqA1.js} +2 -2
- package/dist/client/chunks/{chart-scatterchart-DNleJCr4.js.map → chart-scatterchart-C_D9OqA1.js.map} +1 -1
- package/dist/client/chunks/{chart-scatterchart-config-DgYa-5vm.js → chart-scatterchart-config-DtLnut1M.js} +5 -6
- package/dist/client/chunks/chart-scatterchart-config-DtLnut1M.js.map +1 -0
- package/dist/client/chunks/{chart-treemapchart-B2-Qr28e.js → chart-treemapchart-DJqy3Sy7.js} +3 -3
- package/dist/client/chunks/{chart-treemapchart-B2-Qr28e.js.map → chart-treemapchart-DJqy3Sy7.js.map} +1 -1
- package/dist/client/chunks/{chart-treemapchart-config-DGhteyBe.js → chart-treemapchart-config-BEiIWQnR.js} +5 -6
- package/dist/client/chunks/chart-treemapchart-config-BEiIWQnR.js.map +1 -0
- package/dist/client/chunks/{charts-BmpuCBGG.js → charts-DFbr7EGW.js} +47 -47
- package/dist/client/chunks/{charts-BmpuCBGG.js.map → charts-DFbr7EGW.js.map} +1 -1
- package/dist/client/chunks/icons-D6z-_9sa.js +1400 -0
- package/dist/client/chunks/icons-D6z-_9sa.js.map +1 -0
- package/dist/client/chunks/index-_pVwmFVW.js +551 -0
- package/dist/client/chunks/index-_pVwmFVW.js.map +1 -0
- package/dist/client/components.js +9134 -16
- package/dist/client/components.js.map +1 -1
- package/dist/client/hooks.js +10 -10
- package/dist/client/icons/defaultIcons.d.ts +5 -0
- package/dist/client/icons/index.d.ts +22 -0
- package/dist/client/icons/registry.d.ts +58 -0
- package/dist/client/icons/types.d.ts +111 -0
- package/dist/client/icons.d.ts +2 -0
- package/dist/client/icons.js +15 -0
- package/dist/client/icons.js.map +1 -0
- package/dist/client/index.d.ts +2 -16
- package/dist/client/index.js +49 -9135
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers/CubeProvider.d.ts +1 -1
- package/dist/client/providers.js +3 -3
- package/dist/client/styles.css +1 -1
- package/dist/client/types.d.ts +1 -0
- package/dist/client-bundle-stats.html +1 -1
- package/package.json +21 -9
- package/dist/client/chunks/chart-activitygridchart-B5OqLgbD.js +0 -3713
- package/dist/client/chunks/chart-activitygridchart-B5OqLgbD.js.map +0 -1
- package/dist/client/chunks/chart-activitygridchart-config-D9CgNH02.js +0 -51
- package/dist/client/chunks/chart-activitygridchart-config-D9CgNH02.js.map +0 -1
- package/dist/client/chunks/chart-areachart-config-InZgxubz.js.map +0 -1
- package/dist/client/chunks/chart-barchart-config-DxatOnVV.js.map +0 -1
- package/dist/client/chunks/chart-bubblechart-config-CcZTMTCx.js.map +0 -1
- package/dist/client/chunks/chart-datatable-config-D7mojhYA.js.map +0 -1
- package/dist/client/chunks/chart-kpidelta-config-icJXuFxe.js.map +0 -1
- package/dist/client/chunks/chart-kpinumber-config-T39g03ud.js.map +0 -1
- package/dist/client/chunks/chart-kpitext-config-BbJGXAVk.js.map +0 -1
- package/dist/client/chunks/chart-linechart-config-BS1qVC8K.js.map +0 -1
- package/dist/client/chunks/chart-markdownchart-config-DMCD8phf.js.map +0 -1
- package/dist/client/chunks/chart-piechart-config-6ZK8XaSX.js.map +0 -1
- package/dist/client/chunks/chart-radarchart-config-CCWOkkwO.js.map +0 -1
- package/dist/client/chunks/chart-radialbarchart-config-DicXYrMW.js.map +0 -1
- package/dist/client/chunks/chart-scatterchart-config-DgYa-5vm.js.map +0 -1
- package/dist/client/chunks/chart-treemapchart-config-DGhteyBe.js.map +0 -1
- package/dist/client/chunks/icons-D-n_woAP.js +0 -2386
- package/dist/client/chunks/icons-D-n_woAP.js.map +0 -1
- package/dist/client/chunks/index-EfJ-vN-5.js +0 -8707
- package/dist/client/chunks/index-EfJ-vN-5.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart-activitygridchart-B5OqLgbD.js","sources":["../../../src/client/client/CubeClient.ts","../../../src/client/hooks/useCubeMeta.ts","../../../src/client/client/BatchCoordinator.ts","../../../src/client/providers/CubeProvider.tsx","../../../src/client/utils/chartUtils.ts","../../../src/client/utils/chartConstants.ts","../../../src/client/theme/index.ts","../../../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/d3-array/src/extent.js","../../../node_modules/internmap/src/index.js","../../../node_modules/d3-array/src/ticks.js","../../../node_modules/d3-array/src/max.js","../../../node_modules/d3-array/src/min.js","../../../node_modules/d3-axis/src/identity.js","../../../node_modules/d3-axis/src/axis.js","../../../node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/d3-selection/src/namespaces.js","../../../node_modules/d3-selection/src/namespace.js","../../../node_modules/d3-selection/src/creator.js","../../../node_modules/d3-selection/src/selector.js","../../../node_modules/d3-selection/src/selection/select.js","../../../node_modules/d3-selection/src/array.js","../../../node_modules/d3-selection/src/selectorAll.js","../../../node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/d3-selection/src/matcher.js","../../../node_modules/d3-selection/src/selection/selectChild.js","../../../node_modules/d3-selection/src/selection/selectChildren.js","../../../node_modules/d3-selection/src/selection/filter.js","../../../node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/d3-selection/src/selection/enter.js","../../../node_modules/d3-selection/src/constant.js","../../../node_modules/d3-selection/src/selection/data.js","../../../node_modules/d3-selection/src/selection/exit.js","../../../node_modules/d3-selection/src/selection/join.js","../../../node_modules/d3-selection/src/selection/merge.js","../../../node_modules/d3-selection/src/selection/order.js","../../../node_modules/d3-selection/src/selection/sort.js","../../../node_modules/d3-selection/src/selection/call.js","../../../node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/d3-selection/src/selection/node.js","../../../node_modules/d3-selection/src/selection/size.js","../../../node_modules/d3-selection/src/selection/empty.js","../../../node_modules/d3-selection/src/selection/each.js","../../../node_modules/d3-selection/src/selection/attr.js","../../../node_modules/d3-selection/src/window.js","../../../node_modules/d3-selection/src/selection/style.js","../../../node_modules/d3-selection/src/selection/property.js","../../../node_modules/d3-selection/src/selection/classed.js","../../../node_modules/d3-selection/src/selection/text.js","../../../node_modules/d3-selection/src/selection/html.js","../../../node_modules/d3-selection/src/selection/raise.js","../../../node_modules/d3-selection/src/selection/lower.js","../../../node_modules/d3-selection/src/selection/append.js","../../../node_modules/d3-selection/src/selection/insert.js","../../../node_modules/d3-selection/src/selection/remove.js","../../../node_modules/d3-selection/src/selection/clone.js","../../../node_modules/d3-selection/src/selection/datum.js","../../../node_modules/d3-selection/src/selection/on.js","../../../node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/d3-selection/src/selection/iterator.js","../../../node_modules/d3-selection/src/selection/index.js","../../../node_modules/d3-selection/src/select.js","../../../node_modules/d3-selection/src/sourceEvent.js","../../../node_modules/d3-selection/src/pointer.js","../../../node_modules/d3-drag/src/noevent.js","../../../node_modules/d3-drag/src/nodrag.js","../../../node_modules/d3-drag/src/constant.js","../../../node_modules/d3-drag/src/event.js","../../../node_modules/d3-drag/src/drag.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-interpolate/src/transform/decompose.js","../../../node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/d3-interpolate/src/zoom.js","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3-timer/src/timeout.js","../../../node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/d3-transition/src/interrupt.js","../../../node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/d3-transition/src/transition/tween.js","../../../node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/d3-transition/src/transition/attr.js","../../../node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/d3-transition/src/transition/delay.js","../../../node_modules/d3-transition/src/transition/duration.js","../../../node_modules/d3-transition/src/transition/ease.js","../../../node_modules/d3-transition/src/transition/easeVarying.js","../../../node_modules/d3-transition/src/transition/filter.js","../../../node_modules/d3-transition/src/transition/merge.js","../../../node_modules/d3-transition/src/transition/on.js","../../../node_modules/d3-transition/src/transition/remove.js","../../../node_modules/d3-transition/src/transition/select.js","../../../node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/d3-transition/src/transition/selection.js","../../../node_modules/d3-transition/src/transition/style.js","../../../node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/d3-transition/src/transition/text.js","../../../node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/d3-transition/src/transition/transition.js","../../../node_modules/d3-transition/src/transition/end.js","../../../node_modules/d3-transition/src/transition/index.js","../../../node_modules/d3-ease/src/cubic.js","../../../node_modules/d3-transition/src/selection/transition.js","../../../node_modules/d3-transition/src/selection/index.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/pow.js","../../../node_modules/d3-scale/src/quantize.js","../../../node_modules/d3-zoom/src/constant.js","../../../node_modules/d3-zoom/src/event.js","../../../node_modules/d3-zoom/src/transform.js","../../../node_modules/d3-zoom/src/noevent.js","../../../node_modules/d3-zoom/src/zoom.js","../../../src/client/components/charts/ActivityGridChart.tsx"],"sourcesContent":["/**\n * Minimal Cube client implementation\n * Replaces @cubejs-client/core with lighter implementation\n */\n\nimport type { CubeQuery, CubeApiOptions, CubeResultSet } from '../types'\n\nexport class CubeClient {\n private apiUrl: string\n private headers: Record<string, string>\n private credentials: 'include' | 'omit' | 'same-origin'\n\n constructor(token?: string, options: CubeApiOptions = {}) {\n this.apiUrl = options.apiUrl || '/cubejs-api/v1'\n this.headers = {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n this.credentials = options.credentials ?? 'include'\n\n if (token) {\n this.headers['Authorization'] = token\n }\n }\n\n async load(query: CubeQuery): Promise<CubeResultSet> {\n // Use GET with query parameter for standard Cube.js compatibility\n const queryString = JSON.stringify(query)\n const queryParam = encodeURIComponent(queryString)\n const url = `${this.apiUrl}/load?query=${queryParam}`\n\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n // Remove Content-Type for GET request\n ...Object.fromEntries(\n Object.entries(this.headers).filter(([key]) => key !== 'Content-Type')\n )\n },\n credentials: this.credentials\n })\n\n if (!response.ok) {\n let errorMessage = `Cube query failed: ${response.status}`\n try {\n const errorText = await response.text()\n // Try to parse as JSON first to get structured error\n try {\n const errorData = JSON.parse(errorText)\n if (errorData.error) {\n errorMessage = errorData.error\n } else {\n errorMessage += ` ${errorText}`\n }\n } catch {\n // If not JSON, use the raw text\n errorMessage += ` ${errorText}`\n }\n } catch {\n // If we can't read the response, just use the status\n }\n throw new Error(errorMessage)\n }\n\n const result = await response.json()\n return new ResultSet(result)\n }\n\n async meta(): Promise<any> {\n const url = `${this.apiUrl}/meta`\n \n const response = await fetch(url, {\n method: 'GET',\n headers: this.headers,\n credentials: this.credentials\n })\n\n if (!response.ok) {\n throw new Error(`Failed to fetch meta: ${response.status}`)\n }\n\n return response.json()\n }\n\n async sql(query: CubeQuery): Promise<any> {\n // Use GET with query parameter for standard Cube.js compatibility\n const queryParam = encodeURIComponent(JSON.stringify(query))\n const url = `${this.apiUrl}/sql?query=${queryParam}`\n \n const response = await fetch(url, {\n method: 'GET',\n headers: {\n // Remove Content-Type for GET request\n ...Object.fromEntries(\n Object.entries(this.headers).filter(([key]) => key !== 'Content-Type')\n )\n },\n credentials: this.credentials\n })\n\n if (!response.ok) {\n throw new Error(`SQL generation failed: ${response.status}`)\n }\n\n return response.json()\n }\n\n async dryRun(query: CubeQuery): Promise<any> {\n const url = `${this.apiUrl}/dry-run`\n\n const response = await fetch(url, {\n method: 'POST',\n headers: this.headers,\n credentials: this.credentials,\n body: JSON.stringify({ query })\n })\n\n if (!response.ok) {\n let errorMessage = `Dry run failed: ${response.status}`\n try {\n const errorText = await response.text()\n try {\n const errorData = JSON.parse(errorText)\n if (errorData.error) {\n errorMessage = errorData.error\n } else {\n errorMessage += ` ${errorText}`\n }\n } catch {\n errorMessage += ` ${errorText}`\n }\n } catch {\n // If we can't read the response, just use the status\n }\n throw new Error(errorMessage)\n }\n\n return response.json()\n }\n\n /**\n * Execute multiple queries in a single batch request\n * Used by BatchCoordinator to optimize network requests\n */\n async batchLoad(queries: CubeQuery[]): Promise<CubeResultSet[]> {\n const url = `${this.apiUrl}/batch`\n\n const response = await fetch(url, {\n method: 'POST',\n headers: this.headers,\n credentials: this.credentials,\n body: JSON.stringify({ queries })\n })\n\n if (!response.ok) {\n let errorMessage = `Batch query failed: ${response.status}`\n try {\n const errorText = await response.text()\n try {\n const errorData = JSON.parse(errorText)\n if (errorData.error) {\n errorMessage = errorData.error\n } else {\n errorMessage += ` ${errorText}`\n }\n } catch {\n errorMessage += ` ${errorText}`\n }\n } catch {\n // If we can't read the response, just use the status\n }\n throw new Error(errorMessage)\n }\n\n const batchResponse = await response.json()\n\n // batchResponse.results is an array of individual query results\n // Each result may have succeeded or failed\n return batchResponse.results.map((result: any) => {\n // If this individual query failed, create a ResultSet with error info\n if (!result.success && result.error) {\n // Create a result set that will throw when accessed\n return {\n ...new ResultSet({ data: [], annotation: {} }),\n error: result.error\n }\n }\n\n // Create ResultSet from successful result\n return new ResultSet(result)\n })\n }\n}\n\n/**\n * Simple ResultSet implementation\n */\nclass ResultSet implements CubeResultSet {\n public loadResponse: any\n\n constructor(loadResponse: any) {\n this.loadResponse = loadResponse\n }\n\n rawData(): any[] {\n // Handle new nested structure: loadResponse.results[0].data\n // Keep backward compatibility with old structure: loadResponse.data\n if (this.loadResponse.results && this.loadResponse.results[0]) {\n return this.loadResponse.results[0].data || []\n }\n return this.loadResponse.data || []\n }\n\n tablePivot(): any[] {\n // For pie charts and tables, return the raw data\n return this.rawData()\n }\n\n series(): any[] {\n // Simple series implementation\n return this.rawData()\n }\n\n annotation(): any {\n // Handle new nested structure: loadResponse.results[0].annotation\n // Keep backward compatibility with old structure: loadResponse.annotation\n if (this.loadResponse.results && this.loadResponse.results[0]) {\n return this.loadResponse.results[0].annotation || {}\n }\n return this.loadResponse.annotation || {}\n }\n}\n\n/**\n * Factory function to create a cube client\n */\nexport function createCubeClient(token?: string, options: CubeApiOptions = {}): CubeClient {\n return new CubeClient(token, options)\n}\n\n// Legacy compatibility export\nexport function cube(token?: string, options: CubeApiOptions = {}): CubeClient {\n return createCubeClient(token, options)\n}","import { useState, useEffect, useCallback } from 'react'\nimport type { CubeClient } from '../client/CubeClient'\n\nexport interface CubeMetaField {\n name: string\n title: string\n shortTitle: string\n type: string\n}\n\nexport interface CubeMetaRelationship {\n targetCube: string\n relationship: 'belongsTo' | 'hasOne' | 'hasMany'\n joinFields: Array<{\n sourceField: string\n targetField: string\n }>\n}\n\nexport interface CubeMetaCube {\n name: string\n title: string\n description?: string\n measures: CubeMetaField[]\n dimensions: CubeMetaField[]\n segments: CubeMetaField[]\n relationships?: CubeMetaRelationship[]\n}\n\nexport interface CubeMeta {\n cubes: CubeMetaCube[]\n}\n\nexport type FieldLabelMap = Record<string, string>\n\ninterface CachedMeta {\n data: CubeMeta\n labelMap: FieldLabelMap\n timestamp: number\n}\n\ninterface UseCubeMetaResult {\n meta: CubeMeta | null\n labelMap: FieldLabelMap\n loading: boolean\n error: string | null\n refetch: () => void\n getFieldLabel: (fieldName: string) => string\n}\n\n// Cache duration: 15 minutes\nconst CACHE_DURATION = 15 * 60 * 1000\n\n// In-memory cache\nlet cachedMeta: CachedMeta | null = null\n\nfunction buildLabelMap(meta: CubeMeta): FieldLabelMap {\n const labelMap: FieldLabelMap = {}\n \n meta.cubes.forEach(cube => {\n // Add measures\n cube.measures.forEach(measure => {\n labelMap[measure.name] = measure.title || measure.shortTitle || measure.name\n })\n \n // Add dimensions\n cube.dimensions.forEach(dimension => {\n labelMap[dimension.name] = dimension.title || dimension.shortTitle || dimension.name\n })\n \n // Add segments\n cube.segments.forEach(segment => {\n labelMap[segment.name] = segment.title || segment.shortTitle || segment.name\n })\n })\n \n return labelMap\n}\n\nfunction isCacheValid(): boolean {\n if (!cachedMeta) return false\n const now = Date.now()\n return (now - cachedMeta.timestamp) < CACHE_DURATION\n}\n\n// Export cache clearing function for tests\nexport function clearMetaCache() {\n cachedMeta = null\n}\n\nexport function useCubeMeta(cubeApi: CubeClient): UseCubeMetaResult {\n const [meta, setMeta] = useState<CubeMeta | null>(null)\n const [labelMap, setLabelMap] = useState<FieldLabelMap>({})\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n\n const fetchMeta = useCallback(async () => {\n // Check cache first\n if (isCacheValid() && cachedMeta) {\n setMeta(cachedMeta.data)\n setLabelMap(cachedMeta.labelMap)\n setLoading(false)\n setError(null)\n return\n }\n\n try {\n setLoading(true)\n setError(null)\n \n const metaData: CubeMeta = await cubeApi.meta()\n const newLabelMap = buildLabelMap(metaData)\n \n // Cache the result\n cachedMeta = {\n data: metaData,\n labelMap: newLabelMap,\n timestamp: Date.now()\n }\n \n setMeta(metaData)\n setLabelMap(newLabelMap)\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'Failed to fetch metadata'\n setError(errorMessage)\n console.error('Failed to fetch cube metadata:', err)\n } finally {\n setLoading(false)\n }\n }, [cubeApi])\n\n useEffect(() => {\n fetchMeta()\n }, [fetchMeta])\n\n const getFieldLabel = useCallback((fieldName: string): string => {\n return labelMap[fieldName] || fieldName\n }, [labelMap])\n\n const refetch = useCallback(() => {\n // Clear cache and refetch\n cachedMeta = null\n fetchMeta()\n }, [fetchMeta])\n\n return {\n meta,\n labelMap,\n loading,\n error,\n refetch,\n getFieldLabel\n }\n}","import type { CubeQuery, CubeResultSet } from '../types'\n\n/**\n * Represents a queued query with its resolver/rejector\n */\ninterface QueuedQuery {\n query: CubeQuery\n resolve: (result: CubeResultSet) => void\n reject: (error: Error) => void\n}\n\n/**\n * BatchCoordinator collects queries triggered in the same render cycle\n * and sends them as a single batch request to minimize network overhead.\n *\n * Uses a configurable delay (default 100ms) to batch queries from lazy-loaded\n * portlets that become visible during the same scroll action.\n */\nexport class BatchCoordinator {\n private queue: QueuedQuery[] = []\n private flushScheduled = false\n private batchExecutor: (queries: CubeQuery[]) => Promise<CubeResultSet[]>\n private delayMs: number\n\n constructor(batchExecutor: (queries: CubeQuery[]) => Promise<CubeResultSet[]>, delayMs: number = 100) {\n this.batchExecutor = batchExecutor\n this.delayMs = delayMs\n }\n\n /**\n * Register a query to be batched. Returns a promise that resolves\n * when the batch is executed and this specific query's result is available.\n */\n public register(query: CubeQuery): Promise<CubeResultSet> {\n return new Promise<CubeResultSet>((resolve, reject) => {\n // Add query to queue\n this.queue.push({ query, resolve, reject })\n\n // Schedule flush if not already scheduled\n if (!this.flushScheduled) {\n this.scheduleFlush()\n }\n })\n }\n\n /**\n * Schedule a flush after a short delay to collect multiple queries.\n * The delay allows queries from lazy-loaded portlets that become visible\n * during the same scroll action to be batched together.\n */\n private scheduleFlush(): void {\n this.flushScheduled = true\n\n setTimeout(() => {\n this.flush()\n }, this.delayMs)\n }\n\n /**\n * Execute all queued queries as a batch and resolve individual promises\n */\n private async flush(): Promise<void> {\n // Reset state\n this.flushScheduled = false\n\n // Take current queue and clear it\n const currentQueue = this.queue.slice()\n this.queue = []\n\n if (currentQueue.length === 0) {\n return\n }\n\n try {\n // Extract queries\n const queries = currentQueue.map(item => item.query)\n\n // Execute batch\n const results = await this.batchExecutor(queries)\n\n // Resolve individual promises with their corresponding results\n currentQueue.forEach((item, index) => {\n const result = results[index]\n\n // Check if this specific query had an error\n if (result && 'error' in result && result.error) {\n item.reject(new Error(result.error as string))\n } else {\n item.resolve(result)\n }\n })\n } catch (error) {\n // If entire batch fails, reject all queries\n currentQueue.forEach(item => {\n item.reject(error instanceof Error ? error : new Error(String(error)))\n })\n }\n }\n\n /**\n * Get current queue size (useful for debugging)\n */\n public getQueueSize(): number {\n return this.queue.length\n }\n\n /**\n * Clear the queue (useful for testing/cleanup)\n */\n public clear(): void {\n this.queue = []\n this.flushScheduled = false\n }\n}\n","/**\n * Lightweight CubeProvider implementation\n * Replaces @cubejs-client/react provider\n */\n\nimport React, { createContext, useContext, useMemo, useState } from 'react'\nimport { createCubeClient, type CubeClient } from '../client/CubeClient'\nimport type { CubeQueryOptions, CubeApiOptions, FeaturesConfig } from '../types'\nimport { useCubeMeta, type CubeMeta, type FieldLabelMap } from '../hooks/useCubeMeta'\nimport { BatchCoordinator } from '../client/BatchCoordinator'\n\ninterface CubeContextValue {\n cubeApi: CubeClient\n options?: CubeQueryOptions\n meta: CubeMeta | null\n labelMap: FieldLabelMap\n metaLoading: boolean\n metaError: string | null\n getFieldLabel: (fieldName: string) => string\n refetchMeta: () => void\n updateApiConfig: (apiOptions: CubeApiOptions, token?: string) => void\n features: FeaturesConfig\n batchCoordinator: BatchCoordinator | null\n enableBatching: boolean\n}\n\nconst CubeContext = createContext<CubeContextValue | null>(null)\n\ninterface CubeProviderProps {\n cubeApi?: CubeClient\n apiOptions?: CubeApiOptions\n token?: string\n options?: CubeQueryOptions\n features?: FeaturesConfig\n enableBatching?: boolean\n batchDelayMs?: number // Delay in ms to collect queries before batching (default: 100)\n children: React.ReactNode\n}\n\nexport function CubeProvider({\n cubeApi: initialCubeApi,\n apiOptions: initialApiOptions,\n token: initialToken,\n options = {},\n features = { enableAI: true, aiEndpoint: '/api/ai/generate' }, // Default to AI enabled for backward compatibility\n enableBatching = true, // Default to batching enabled\n batchDelayMs = 100, // Default 100ms batch window\n children\n}: CubeProviderProps) {\n // State for dynamic API configuration (only for updates via updateApiConfig)\n const [dynamicConfig, setDynamicConfig] = useState<{ apiOptions: CubeApiOptions; token?: string } | null>(null)\n\n // Determine current config: dynamic config takes precedence over props\n const currentConfig = dynamicConfig || {\n apiOptions: initialApiOptions || { apiUrl: '/cubejs-api/v1' },\n token: initialToken\n }\n\n // Create or use the provided CubeClient, recreating when config changes\n const cubeApi = useMemo(() => {\n if (initialCubeApi && !initialApiOptions && !initialToken) {\n // Use provided client if no initial config specified\n return initialCubeApi\n }\n\n // Create client with current config\n return createCubeClient(currentConfig.token, currentConfig.apiOptions)\n }, [initialCubeApi, initialApiOptions, initialToken, currentConfig.apiOptions, currentConfig.token])\n\n // Create BatchCoordinator if batching is enabled\n const batchCoordinator = useMemo(() => {\n if (!enableBatching) {\n return null\n }\n\n // Create batch executor function that uses cubeApi.batchLoad\n const batchExecutor = (queries: any[]) => cubeApi.batchLoad(queries)\n\n return new BatchCoordinator(batchExecutor, batchDelayMs)\n }, [enableBatching, cubeApi, batchDelayMs])\n\n const { meta, labelMap, loading: metaLoading, error: metaError, getFieldLabel, refetch: refetchMeta } = useCubeMeta(cubeApi)\n \n const updateApiConfig = (newApiOptions: CubeApiOptions, newToken?: string) => {\n setDynamicConfig({\n apiOptions: newApiOptions,\n token: newToken\n })\n }\n \n const contextValue = {\n cubeApi,\n options,\n meta,\n labelMap,\n metaLoading,\n metaError,\n getFieldLabel,\n refetchMeta,\n updateApiConfig,\n features,\n batchCoordinator,\n enableBatching\n }\n \n return (\n <CubeContext.Provider value={contextValue}>\n {children}\n </CubeContext.Provider>\n )\n}\n\nexport function useCubeContext() {\n const context = useContext(CubeContext)\n \n if (!context) {\n throw new Error('useCubeContext must be used within a CubeProvider')\n }\n return context\n}","import type { FieldLabelMap } from '../hooks/useCubeMeta'\n\n// Utility function to check if a value is a valid numeric value (not null, undefined, or NaN)\n// This is used to preserve null values instead of converting them to 0\nexport function isValidNumericValue(value: any): boolean {\n return value !== null && value !== undefined && !isNaN(Number(value))\n}\n\n// Utility function to parse numeric value from data, preserving nulls\n// Returns null for null/undefined/NaN values, otherwise returns the numeric value\nexport function parseNumericValue(value: any): number | null {\n if (value === null || value === undefined) return null\n const num = typeof value === 'string' ? parseFloat(value) : Number(value)\n return isNaN(num) ? null : num\n}\n\n// Utility function to format numeric values for display in charts\n// Rounds to at most 2 decimal places, preserves integers\nexport function formatNumericValue(value: any): string {\n if (value === null || value === undefined) return 'No data'\n const num = typeof value === 'number' ? value : parseFloat(value)\n if (isNaN(num)) return String(value)\n if (Number.isInteger(num)) return num.toLocaleString()\n // Round to at most 2 decimal places, remove trailing zeros\n return parseFloat(num.toFixed(2)).toLocaleString()\n}\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\n// NOTE: Preserves null values to allow charts to handle gaps/missing data appropriately\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 // Preserve null values instead of converting to 0\n transformed[displayName] = parseNumericValue(row[field])\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\n// NOTE: Preserves null values to allow charts to handle gaps/missing data appropriately\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 - preserve nulls for individual measures\n yAxisMeasures.forEach(measure => {\n const displayName = getFieldLabel(measure, labelMap)\n const measureValue = parseNumericValue(row[measure])\n\n // For aggregation: sum non-null values, preserve null if all are null\n if (measureValue !== null) {\n const currentValue = groupedData[xValue][displayName]\n groupedData[xValue][displayName] = (currentValue === null || currentValue === undefined)\n ? measureValue\n : currentValue + measureValue\n } else if (!(displayName in groupedData[xValue])) {\n // Only set to null if no value exists yet\n groupedData[xValue][displayName] = null\n }\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 = parseNumericValue(row[measureToAggregate])\n\n // For dimension series: sum non-null values, preserve null if all are null\n if (measureValue !== null) {\n const currentValue = groupedData[xValue][seriesName]\n groupedData[xValue][seriesName] = (currentValue === null || currentValue === undefined)\n ? measureValue\n : currentValue + measureValue\n } else if (!(seriesName in groupedData[xValue])) {\n // Only set to null if no value exists yet\n groupedData[xValue][seriesName] = null\n }\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}","// 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}","/**\n * Theme utilities and TypeScript types for drizzle-cube theming system\n */\n\n/**\n * Semantic color tokens used throughout drizzle-cube components\n */\nexport interface ThemeColorTokens {\n // Surface colors\n surface: string\n surfaceSecondary: string\n surfaceTertiary: string\n surfaceHover: string\n\n // Text colors\n text: string\n textSecondary: string\n textMuted: string\n textDisabled: string\n\n // Border colors\n border: string\n borderSecondary: string\n borderHover: string\n\n // Primary colors\n primary: string\n primaryHover: string\n primaryContent: string\n\n // Semantic state colors\n success: string\n successBg: string\n successBorder: string\n\n warning: string\n warningBg: string\n warningBorder: string\n\n error: string\n errorBg: string\n errorBorder: string\n\n info: string\n infoBg: string\n infoBorder: string\n\n // Danger colors\n danger: string\n dangerHover: string\n dangerBg: string\n\n // Overlay colors\n overlay: string\n overlayLight: string\n}\n\n/**\n * Theme configuration interface\n */\nexport interface ThemeConfig {\n name: string\n colors: Partial<ThemeColorTokens>\n}\n\n/**\n * Get the current value of a theme CSS variable\n */\nexport function getThemeVariable(variableName: string): string {\n if (typeof window === 'undefined') return ''\n\n return getComputedStyle(document.documentElement)\n .getPropertyValue(`--dc-${variableName}`)\n .trim()\n}\n\n/**\n * Set a theme CSS variable\n */\nexport function setThemeVariable(variableName: string, value: string): void {\n if (typeof window === 'undefined') return\n\n document.documentElement.style.setProperty(`--dc-${variableName}`, value)\n}\n\n/**\n * Apply a complete theme configuration\n */\nexport function applyTheme(theme: ThemeConfig): void {\n if (typeof window === 'undefined') return\n\n Object.entries(theme.colors).forEach(([key, value]) => {\n if (value) {\n // Convert camelCase to kebab-case\n const cssVarName = key.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`)\n setThemeVariable(cssVarName, value)\n }\n })\n}\n\n/**\n * Reset theme to defaults by removing custom properties\n */\nexport function resetTheme(): void {\n if (typeof window === 'undefined') return\n\n const styleElement = document.documentElement.style\n const properties = Array.from(styleElement)\n\n properties.forEach(prop => {\n if (prop.startsWith('--dc-')) {\n styleElement.removeProperty(prop)\n }\n })\n}\n\n/**\n * Theme type definition\n */\nexport type Theme = 'light' | 'dark' | 'neon'\n\n/**\n * Get the current theme\n */\nexport function getTheme(): Theme {\n if (typeof window === 'undefined') return 'light'\n\n // Check localStorage first\n const stored = localStorage.getItem('theme')\n if (stored === 'dark' || stored === 'neon' || stored === 'light') {\n return stored\n }\n\n // Check for data-theme attribute\n const dataTheme = document.documentElement.getAttribute('data-theme')\n if (dataTheme === 'dark' || dataTheme === 'neon') {\n return dataTheme\n }\n\n // Check for dark class\n if (document.documentElement.classList.contains('dark') ||\n document.body.classList.contains('dark')) {\n return 'dark'\n }\n\n // Check for neon class\n if (document.documentElement.classList.contains('neon') ||\n document.body.classList.contains('neon')) {\n return 'neon'\n }\n\n // Check system preference\n if (window.matchMedia('(prefers-color-scheme: dark)').matches) {\n return 'dark'\n }\n\n return 'light'\n}\n\n/**\n * Set the theme\n */\nexport function setTheme(theme: Theme): void {\n if (typeof window === 'undefined') return\n\n // Remove all theme classes\n document.documentElement.classList.remove('dark', 'neon')\n\n // Set data-theme attribute\n document.documentElement.setAttribute('data-theme', theme)\n\n // Add appropriate class for backwards compatibility\n if (theme === 'dark' || theme === 'neon') {\n document.documentElement.classList.add(theme)\n }\n\n // Persist to localStorage\n localStorage.setItem('theme', theme)\n}\n\n/**\n * Detect if dark mode is currently active (backwards compatibility)\n * @deprecated Use getTheme() instead\n */\nexport function isDarkMode(): boolean {\n const theme = getTheme()\n return theme === 'dark' || theme === 'neon'\n}\n\n/**\n * Watch for theme changes\n */\nexport function watchThemeChanges(callback: (theme: Theme) => void): () => void {\n if (typeof window === 'undefined') return () => {}\n\n // Watch for class changes on html element\n const observer = new MutationObserver(() => {\n callback(getTheme())\n })\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class', 'data-theme']\n })\n\n // Watch for system preference changes\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n const mediaListener = () => callback(getTheme())\n mediaQuery.addEventListener('change', mediaListener)\n\n // Return cleanup function\n return () => {\n observer.disconnect()\n mediaQuery.removeEventListener('change', mediaListener)\n }\n}\n\n/**\n * Example theme configurations\n */\nexport const THEME_PRESETS = {\n light: {\n name: 'light' as const,\n colors: {\n surface: '#ffffff',\n surfaceSecondary: '#f9fafb',\n text: '#111827',\n textSecondary: '#374151',\n textMuted: '#6b7280',\n border: '#e5e7eb',\n primary: '#3b82f6',\n primaryHover: '#2563eb',\n }\n },\n dark: {\n name: 'dark' as const,\n colors: {\n surface: '#1e293b',\n surfaceSecondary: '#334155',\n text: '#f1f5f9',\n textSecondary: '#e2e8f0',\n textMuted: '#cbd5e1',\n border: '#475569',\n primary: '#60a5fa',\n primaryHover: '#3b82f6',\n }\n },\n neon: {\n name: 'neon' as const,\n colors: {\n surface: '#0a0118',\n surfaceSecondary: '#1a0f2e',\n surfaceTertiary: '#2a1f3e',\n text: '#ffffff',\n textSecondary: '#e0e0ff',\n textMuted: '#b0b0d0',\n border: '#ff00ff',\n borderSecondary: '#00ffff',\n primary: '#00ffff',\n primaryHover: '#00cccc',\n primaryContent: '#000000',\n success: '#00ff00',\n warning: '#ffff00',\n error: '#ff0066',\n info: '#00ffff',\n danger: '#ff1493',\n }\n }\n} as const\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 default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\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 max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\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","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\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 {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\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","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","import { useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport { select, scaleQuantize, max, min } from 'd3'\nimport { CHART_COLORS_GRADIENT, CHART_MARGINS } from '../../utils/chartConstants'\nimport { formatTimeValue } from '../../utils/chartUtils'\nimport { useCubeContext } from '../../providers/CubeProvider'\nimport { getTheme, watchThemeChanges, type Theme } from '../../theme'\nimport type { ChartProps } from '../../types'\n\ninterface GridCell {\n x: number\n y: number\n value: number\n date: Date\n label: string\n}\n\ninterface GridMapping {\n extractX: (date: Date) => number\n extractY: (date: Date) => number\n xLabels: string[]\n yLabels: string[]\n xFormat: (value: number) => string\n yFormat: (value: number) => string\n cellWidth: number\n cellHeight: number\n hasHierarchicalLabels?: boolean\n getYearFromX?: (value: number) => number\n}\n\nexport default function ActivityGridChart({\n data,\n chartConfig,\n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const svgRef = useRef<SVGSVGElement | null>(null)\n const containerRef = useRef<HTMLDivElement | null>(null)\n const [dimensions, setDimensions] = useState({ width: 0, height: 0 })\n const [dimensionsReady, setDimensionsReady] = useState(false)\n const [currentTheme, setCurrentTheme] = useState<Theme>('light')\n const { getFieldLabel } = useCubeContext()\n\n // Watch for theme changes\n useEffect(() => {\n setCurrentTheme(getTheme())\n const unwatch = watchThemeChanges((theme) => {\n setCurrentTheme(theme)\n })\n return unwatch\n }, [])\n\n const safeDisplayConfig = {\n showTooltip: displayConfig?.showTooltip ?? true,\n showLabels: displayConfig?.showLabels ?? true,\n fitToWidth: displayConfig?.fitToWidth ?? false\n }\n\n // Enhanced dimension measurement with retry mechanism\n useLayoutEffect(() => {\n let retryCount = 0\n const maxRetries = 10\n let rafId: number\n let timeoutId: NodeJS.Timeout\n \n const updateDimensions = () => {\n if (containerRef.current) {\n const { width, height } = containerRef.current.getBoundingClientRect()\n \n if (width > 0 && height > 0) {\n setDimensions({ width, height })\n setDimensionsReady(true)\n return true\n }\n }\n return false\n }\n \n const success = updateDimensions()\n \n if (!success && retryCount < maxRetries) {\n const retryWithRaf = () => {\n const rafSuccess = updateDimensions()\n \n if (!rafSuccess && retryCount < maxRetries) {\n retryCount++\n timeoutId = setTimeout(() => {\n rafId = requestAnimationFrame(retryWithRaf)\n }, 50 * retryCount)\n }\n }\n \n rafId = requestAnimationFrame(retryWithRaf)\n }\n \n return () => {\n if (rafId) cancelAnimationFrame(rafId)\n if (timeoutId) clearTimeout(timeoutId)\n }\n }, [])\n\n // ResizeObserver for dynamic resizing\n useEffect(() => {\n let resizeObserver: ResizeObserver | null = null\n \n const updateDimensions = () => {\n if (containerRef.current) {\n const { width, height } = containerRef.current.getBoundingClientRect()\n if (width > 0 && height > 0) {\n setDimensions({ width, height })\n if (!dimensionsReady) {\n setDimensionsReady(true)\n }\n }\n }\n }\n \n if (containerRef.current) {\n resizeObserver = new ResizeObserver(() => updateDimensions())\n resizeObserver.observe(containerRef.current)\n updateDimensions()\n }\n\n window.addEventListener('resize', updateDimensions)\n \n return () => {\n if (resizeObserver) {\n resizeObserver.disconnect()\n }\n window.removeEventListener('resize', updateDimensions)\n }\n }, [dimensionsReady])\n\n // Helper functions for grid coordinate extraction\n const getQuarter = (date: Date): number => {\n return Math.floor(date.getMonth() / 3) + 1 // 1-4\n }\n\n const getMonthOfQuarter = (date: Date): number => {\n return (date.getMonth() % 3) + 1 // 1-3\n }\n\n const getWeekOfMonth = (date: Date): number => {\n // Always start from week 1 for the first week of the month, regardless of day offset\n const dayOfMonth = date.getDate()\n return Math.floor((dayOfMonth - 1) / 7) + 1 // 1-5 typically\n }\n\n // Get granularity mapping based on time dimension\n const getGridMapping = (granularity: string): GridMapping | null => {\n switch (granularity?.toLowerCase()) {\n case 'year':\n // Year granularity is not useful for activity grids\n return null\n \n case 'quarter':\n // Quarter granularity: years × quarters\n return {\n extractX: (date: Date) => date.getFullYear(),\n extractY: (date: Date) => getQuarter(date) - 1, // 0-3 for indexing\n xLabels: [], // Will be determined from data\n yLabels: ['Q1', 'Q2', 'Q3', 'Q4'],\n xFormat: (value: number) => `'${value.toString().slice(-2)}`, // '24 instead of 2024\n yFormat: (value: number) => ['Q1', 'Q2', 'Q3', 'Q4'][value] || '',\n cellWidth: 16,\n cellHeight: 16\n }\n \n case 'month':\n // Month granularity: quarters × months of quarter\n // Show years above and quarters (Q1, Q2, Q3, Q4) as columns with hierarchical labels\n return {\n extractX: (date: Date) => {\n const year = date.getFullYear()\n const quarter = getQuarter(date) // 1-4\n return year * 10 + quarter // e.g., 20241, 20242, 20243, 20244 (only 4 per year)\n },\n extractY: (date: Date) => getMonthOfQuarter(date) - 1, // 0-2 for indexing\n xLabels: [], // Will be determined from data\n yLabels: ['Month 1', 'Month 2', 'Month 3'],\n xFormat: (value: number) => {\n const quarter = value % 10\n return `Q${quarter}` // Just show Q1, Q2, Q3, Q4 for individual columns\n },\n yFormat: (value: number) => ['Month 1', 'Month 2', 'Month 3'][value] || '',\n cellWidth: 16,\n cellHeight: 16,\n hasHierarchicalLabels: true, // Flag to indicate we need special handling\n getYearFromX: (value: number) => Math.floor(value / 10) // Helper to get year for grouping\n }\n \n case 'week':\n // Week granularity: months × weeks of month (same structure as quarters but with months as columns)\n return {\n extractX: (date: Date) => {\n const year = date.getFullYear()\n const month = date.getMonth() + 1\n return year * 100 + month // e.g., 202401, 202402, etc.\n },\n extractY: (date: Date) => getWeekOfMonth(date) - 1, // 0-5 for indexing\n xLabels: [], // Will be determined from data\n yLabels: ['Week 1', 'Week 2', 'Week 3', 'Week 4', 'Week 5'],\n xFormat: (value: number) => {\n const month = value % 100\n const monthNames = ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n return monthNames[month - 1] || ''\n },\n yFormat: (value: number) => ['Week 1', 'Week 2', 'Week 3', 'Week 4', 'Week 5'][value] || '',\n cellWidth: 16,\n cellHeight: 16,\n hasHierarchicalLabels: true, // Add hierarchical labels like month view\n getYearFromX: (value: number) => Math.floor(value / 100) // Helper to get year for grouping\n }\n \n case 'day':\n // Day granularity: weeks × days of week with hierarchical year/week labels\n return {\n extractX: (date: Date) => {\n const { year, week } = getWeekOfYear(date)\n return year * 100 + week // e.g., 202401, 202402, etc.\n },\n extractY: (date: Date) => date.getDay(), // 0-6 (Sun-Sat)\n xLabels: [], // Will be determined from data\n yLabels: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n xFormat: (value: number) => {\n const week = value % 100\n return `${week}`\n },\n yFormat: (value: number) => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][value] || '',\n cellWidth: 16,\n cellHeight: 16,\n hasHierarchicalLabels: true, // Add hierarchical labels\n getYearFromX: (value: number) => Math.floor(value / 100) // Helper to get year for grouping\n }\n\n case 'hour':\n // Hour granularity: days × 3-hour blocks with hierarchical year/month labels\n return {\n extractX: (date: Date) => {\n // Get day as YYYYMMDD number for unique day identification\n const year = date.getFullYear()\n const month = date.getMonth() + 1\n const day = date.getDate()\n return year * 10000 + month * 100 + day // e.g., 20240115\n },\n extractY: (date: Date) => Math.floor(date.getHours() / 3), // 0-7 for 8 three-hour blocks\n xLabels: [], // Will be determined from data\n yLabels: ['00-03', '03-06', '06-09', '09-12', '12-15', '15-18', '18-21', '21-00'],\n xFormat: (value: number) => {\n // Format YYYYMMDD as just the day number\n const day = value % 100\n return `${day}`\n },\n yFormat: (value: number) => ['00-03', '03-06', '06-09', '09-12', '12-15', '15-18', '18-21', '21-00'][value] || '',\n cellWidth: 16,\n cellHeight: 16,\n hasHierarchicalLabels: true, // Show year/month grouping above\n getYearFromX: (value: number) => Math.floor(value / 100) // Extract YYYYMM for month grouping\n }\n\n default:\n return null\n }\n }\n\n // Helper function to get week of year with correct year (1-53)\n const getWeekOfYear = (date: Date): { year: number, week: number } => {\n const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\n const dayNum = d.getUTCDay() || 7\n d.setUTCDate(d.getUTCDate() + 4 - dayNum)\n const year = d.getUTCFullYear()\n const yearStart = new Date(Date.UTC(year, 0, 1))\n const week = Math.ceil((((d.getTime() - yearStart.getTime()) / 86400000) + 1) / 7)\n return { year, week }\n }\n\n useEffect(() => {\n if (!data || data.length === 0 || !svgRef.current || !dimensionsReady || dimensions.width === 0) {\n return\n }\n\n // Clear previous chart\n select(svgRef.current).selectAll('*').remove()\n\n // Validate chartConfig\n if (!chartConfig?.dateField || !chartConfig?.valueField) {\n return\n }\n\n const dateField = Array.isArray(chartConfig.dateField) ? chartConfig.dateField[0] : chartConfig.dateField\n const valueField = Array.isArray(chartConfig.valueField) ? chartConfig.valueField[0] : chartConfig.valueField\n\n\n if (!dateField || !valueField) {\n return\n }\n\n // Get granularity directly from the query's time dimensions\n const getQueryGranularity = () => {\n if (!queryObject?.timeDimensions || queryObject.timeDimensions.length === 0) {\n return 'day'\n }\n \n // Find the time dimension that matches our dateField\n const timeDim = queryObject.timeDimensions.find((td: any) => \n td.dimension === dateField || td.dimension.includes(dateField)\n )\n \n if (timeDim && timeDim.granularity) {\n return timeDim.granularity\n }\n \n // Fallback to first time dimension's granularity\n const firstTimeDim = queryObject.timeDimensions[0]\n if (firstTimeDim && firstTimeDim.granularity) {\n return firstTimeDim.granularity\n }\n \n return 'day'\n }\n \n const queryGranularity = getQueryGranularity()\n const gridMapping = getGridMapping(queryGranularity)\n \n // Handle unsupported granularity\n if (!gridMapping) {\n return\n }\n \n\n // Transform data for grid\n const gridData: GridCell[] = data.map(item => {\n const dateValue = item[dateField]\n const value = typeof item[valueField] === 'string' \n ? parseFloat(item[valueField]) \n : (item[valueField] || 0)\n \n // Parse the date\n let date: Date\n if (typeof dateValue === 'string') {\n // Handle different date formats\n let isoStr = dateValue\n if (dateValue.includes(' ')) {\n isoStr = dateValue.replace(' ', 'T').replace('+00', 'Z').replace(/\\+\\d{2}:\\d{2}$/, 'Z')\n }\n if (!isoStr.endsWith('Z') && !isoStr.includes('+')) {\n isoStr = isoStr + 'Z'\n }\n date = new Date(isoStr)\n } else {\n date = new Date(dateValue)\n }\n\n // Skip invalid dates\n if (isNaN(date.getTime())) {\n return null\n }\n\n const x = gridMapping.extractX(date)\n const y = gridMapping.extractY(date)\n \n return {\n x,\n y,\n value,\n date,\n label: formatTimeValue(dateValue, queryGranularity)\n }\n }).filter((cell): cell is GridCell => cell !== null)\n\n\n if (gridData.length === 0) return\n\n // Calculate grid dimensions\n const maxY = max(gridData, d => d.y) || 0\n const minY = min(gridData, d => d.y) || 0\n\n\n // Generate complete X range first so we can calculate proper grid width\n const getCompleteXRange = (): number[] => {\n const dataXValues = [...new Set(gridData.map(cell => cell.x))].sort()\n \n if (queryGranularity === 'quarter') {\n // For quarters: only show quarters that have data to avoid gaps\n return dataXValues\n }\n \n if (queryGranularity === 'month') {\n // For months: only show quarters that have data to avoid gaps\n return dataXValues\n }\n \n if (queryGranularity === 'week') {\n // For weeks: only show months that have data to avoid gaps\n return dataXValues\n }\n \n if (queryGranularity === 'day') {\n // For days: only show the actual weeks that have data to avoid discontinuities\n return dataXValues\n }\n \n // For other granularities, use the actual data values\n return dataXValues\n }\n \n const completeXRange = getCompleteXRange()\n \n // Calculate grid dimensions based on complete X range\n const gridWidth = completeXRange.length * gridMapping.cellWidth + (completeXRange.length - 1) * 4\n const gridHeight = (maxY - minY + 1) * gridMapping.cellHeight + (maxY - minY) * 4\n\n const margin = { \n ...CHART_MARGINS, \n left: 60, // Space for Y-axis labels\n bottom: 10, // Reduced since labels are at top\n top: gridMapping.hasHierarchicalLabels ? 40 : 25, // Extra space for hierarchical labels\n right: 10\n }\n \n const availableWidth = dimensions.width - margin.left - margin.right\n const availableHeight = dimensions.height - margin.top - margin.bottom\n\n // Scale the grid to fit the available space\n let finalCellWidth: number\n let finalCellHeight: number\n\n if (safeDisplayConfig.fitToWidth) {\n // Fit to Width mode: Calculate cell size to perfectly fit both dimensions\n // Remove min/max constraints and let blocks scale to optimal size\n const scaleX = availableWidth / gridWidth\n const scaleY = availableHeight / gridHeight\n const scale = Math.min(scaleX, scaleY)\n\n // Use the scale to calculate cell size, maintaining 1:1 aspect ratio\n finalCellWidth = gridMapping.cellWidth * scale\n finalCellHeight = gridMapping.cellHeight * scale\n } else {\n // Default mode: Use minimum/maximum size constraints with scrolling\n const getMinCellSize = () => {\n return { width: 16, height: 16 } // Same size for all views\n }\n\n const minCellSize = getMinCellSize()\n const maxCellSize = 24\n\n const scaleX = availableWidth / gridWidth\n const scaleY = availableHeight / gridHeight\n const scale = Math.min(scaleX, scaleY)\n\n // Calculate final cell size with constraints\n finalCellWidth = Math.max(minCellSize.width, Math.min(maxCellSize, gridMapping.cellWidth * scale))\n finalCellHeight = Math.max(minCellSize.height, Math.min(maxCellSize, gridMapping.cellHeight * scale))\n\n // For week view, prefer scrolling over tiny cells\n if (queryGranularity === 'week' && finalCellWidth < minCellSize.width) {\n finalCellWidth = minCellSize.width\n }\n }\n \n // Calculate actual grid dimensions with the final cell sizes\n const actualGridWidth = completeXRange.length * finalCellWidth + (completeXRange.length - 1) * 4\n \n // Determine if we need horizontal scrolling\n const needsHorizontalScroll = actualGridWidth > availableWidth\n const svgWidth = needsHorizontalScroll ? actualGridWidth + margin.left + margin.right : dimensions.width\n \n\n const svg = select(svgRef.current)\n .attr('width', svgWidth)\n .attr('height', dimensions.height)\n\n const g = svg.append('g')\n .attr('transform', `translate(${margin.left},${margin.top})`)\n\n // Set up color scale\n const values = gridData.map(d => d.value)\n const minValue = min(values) || 0\n const maxValue = max(values) || 1\n\n const colorScale = scaleQuantize<string>()\n .domain([minValue, maxValue])\n .range(colorPalette?.gradient || CHART_COLORS_GRADIENT)\n\n // Create grid data map for quick lookup\n const gridMap = new Map<string, GridCell>()\n gridData.forEach(cell => {\n const key = `${cell.x}-${cell.y}`\n gridMap.set(key, cell)\n })\n\n // Get theme colors from CSS variables\n const getThemeColor = (varName: string, fallback: string) => {\n const value = getComputedStyle(document.documentElement).getPropertyValue(varName).trim()\n return value || fallback\n }\n\n const isDark = currentTheme !== 'light'\n const textColor = isDark\n ? getThemeColor('--dc-text-muted', '#cbd5e1') // Lighter text for dark mode\n : getThemeColor('--dc-text-secondary', '#374151') // Darker text for light mode\n const lineColor = getThemeColor('--dc-border', '#e5e7eb')\n // Use theme-aware colors for empty cells: light gray in light mode, slightly lighter than bg in dark mode\n const emptyCellColor = isDark\n ? getThemeColor('--dc-bg-secondary', '#1e293b') // Slightly lighter than dark background\n : getThemeColor('--dc-bg-secondary', '#f3f4f6') // Very light gray in light mode\n const cellStrokeColor = isDark\n ? getThemeColor('--dc-border', '#334155') // Subtle border in dark mode\n : getThemeColor('--dc-bg', '#ffffff') // White border in light mode\n\n // Create tooltip\n const tooltip = select('body').append('div')\n .attr('class', 'activity-grid-tooltip')\n .style('position', 'absolute')\n .style('padding', '8px')\n .style('background', 'rgba(0, 0, 0, 0.8)')\n .style('color', 'white')\n .style('border-radius', '4px')\n .style('font-size', '12px')\n .style('pointer-events', 'none')\n .style('opacity', 0)\n .style('z-index', 1000)\n\n // Create a mapping from X values to their position indices for proper spacing\n const xValueToIndex = new Map<number, number>()\n completeXRange.forEach((x, index) => {\n xValueToIndex.set(x, index)\n })\n \n // Render grid cells for the complete X range\n for (const x of completeXRange) {\n for (let y = minY; y <= maxY; y++) {\n const key = `${x}-${y}`\n const cell = gridMap.get(key)\n const xIndex = xValueToIndex.get(x) || 0\n \n const rect = g.append('rect')\n .attr('x', xIndex * (finalCellWidth + 4))\n .attr('y', (y - minY) * (finalCellHeight + 4))\n .attr('width', finalCellWidth)\n .attr('height', finalCellHeight)\n .attr('rx', 2)\n .attr('ry', 2)\n .style('fill', cell ? colorScale(cell.value) : emptyCellColor)\n .style('stroke', cellStrokeColor)\n .style('stroke-width', 1)\n\n // Add hover effects and tooltips\n if (safeDisplayConfig.showTooltip) {\n rect\n .style('cursor', 'pointer')\n .on('mouseover', function(event) {\n select(this)\n .style('stroke', '#000')\n .style('stroke-width', 2)\n\n if (cell) {\n const tooltipContent = [\n `<strong>${cell.label}</strong>`,\n `${getFieldLabel(valueField)}: ${cell.value}`\n ].join('<br>')\n\n tooltip\n .html(tooltipContent)\n .style('left', (event.pageX + 10) + 'px')\n .style('top', (event.pageY - 10) + 'px')\n .transition()\n .duration(200)\n .style('opacity', 1)\n }\n })\n .on('mousemove', function(event) {\n tooltip\n .style('left', (event.pageX + 10) + 'px')\n .style('top', (event.pageY - 10) + 'px')\n })\n .on('mouseout', function() {\n select(this)\n .style('stroke', cellStrokeColor)\n .style('stroke-width', 1)\n\n tooltip\n .transition()\n .duration(200)\n .style('opacity', 0)\n })\n }\n }\n }\n\n // Add axis labels if enabled\n if (safeDisplayConfig.showLabels) {\n if (gridMapping.hasHierarchicalLabels && gridMapping.getYearFromX) {\n // Special handling for quarter view with hierarchical labels\n // Use the complete X range to show all quarters/months\n \n // Group quarters by year\n const yearGroups = new Map<number, number[]>()\n for (const x of completeXRange) {\n const year = gridMapping.getYearFromX(x)\n if (!yearGroups.has(year)) {\n yearGroups.set(year, [])\n }\n yearGroups.get(year)!.push(x)\n }\n \n \n // Draw column labels (Q1-Q4 for months, Jan-Dec for weeks)\n for (const x of completeXRange) {\n const xIndex = xValueToIndex.get(x) || 0\n g.append('text')\n .attr('x', xIndex * (finalCellWidth + 4) + finalCellWidth / 2)\n .attr('y', -8)\n .attr('text-anchor', 'middle')\n .style('font-size', '10px')\n .style('fill', textColor)\n .text(gridMapping.xFormat(x))\n }\n\n // Draw year group labels above quarters\n for (const [year, xValues] of yearGroups) {\n if (xValues.length > 0) {\n // Get the index positions for proper spacing\n const startIndex = Math.min(...xValues.map(x => xValueToIndex.get(x) || 0))\n const endIndex = Math.max(...xValues.map(x => xValueToIndex.get(x) || 0))\n const centerIndex = (startIndex + endIndex) / 2\n\n // Year label (or year/month for hour granularity)\n let labelText = ''\n if (year > 9999) {\n // For hour granularity, year is encoded as YYYYMM\n const actualYear = Math.floor(year / 100)\n const month = year % 100\n const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n labelText = `${monthNames[month - 1]} '${actualYear.toString().slice(-2)}`\n } else {\n // For other granularities, just show the year\n labelText = `'${year.toString().slice(-2)}`\n }\n\n g.append('text')\n .attr('x', centerIndex * (finalCellWidth + 4) + finalCellWidth / 2)\n .attr('y', -25)\n .attr('text-anchor', 'middle')\n .style('font-size', '12px')\n .style('font-weight', 'bold')\n .style('fill', textColor)\n .text(labelText)\n\n // Optional: Add a subtle line to group quarters under the year\n if (xValues.length > 1) {\n g.append('line')\n .attr('x1', startIndex * (finalCellWidth + 4))\n .attr('x2', endIndex * (finalCellWidth + 4) + finalCellWidth)\n .attr('y1', -20)\n .attr('y2', -20)\n .style('stroke', lineColor)\n .style('stroke-width', 1)\n .style('opacity', 0.3)\n }\n }\n }\n } else {\n // Regular X-axis labels for other granularities\n const xLabelStep = Math.max(1, Math.floor(completeXRange.length / 10))\n for (let i = 0; i < completeXRange.length; i += xLabelStep) {\n const x = completeXRange[i]\n g.append('text')\n .attr('x', i * (finalCellWidth + 4) + finalCellWidth / 2)\n .attr('y', -8)\n .attr('text-anchor', 'middle')\n .style('font-size', '10px')\n .style('fill', textColor)\n .text(gridMapping.xFormat(x))\n }\n }\n\n // Y-axis labels (left) - same for all granularities\n for (let y = minY; y <= maxY; y++) {\n g.append('text')\n .attr('x', -8)\n .attr('y', (y - minY) * (finalCellHeight + 4) + finalCellHeight / 2)\n .attr('text-anchor', 'end')\n .attr('dy', '.35em')\n .style('font-size', '10px')\n .style('fill', textColor)\n .text(gridMapping.yFormat(y))\n }\n }\n\n // Cleanup function\n return () => {\n tooltip.remove()\n }\n }, [data, chartConfig, displayConfig, queryObject, dimensions, dimensionsReady, safeDisplayConfig.showTooltip, safeDisplayConfig.showLabels, colorPalette, currentTheme])\n\n if (!data || data.length === 0) {\n return (\n <div\n className=\"flex items-center justify-center w-full\"\n style={{ height }}\n >\n <div className=\"text-center text-dc-text-muted\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs text-dc-text-secondary\">No data points to display in activity grid</div>\n </div>\n </div>\n )\n }\n\n // Validate that we have required fields\n const hasValidConfig = chartConfig?.dateField && chartConfig?.valueField\n if (!hasValidConfig) {\n return (\n <div\n className=\"flex items-center justify-center w-full\"\n style={{ height }}\n >\n <div className=\"text-center text-dc-text-muted\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Required</div>\n <div className=\"text-xs text-dc-text-secondary\">Activity grid requires a time dimension and a measure</div>\n </div>\n </div>\n )\n }\n\n // Check if granularity is supported\n const dateField = Array.isArray(chartConfig.dateField) ? chartConfig.dateField[0] : chartConfig.dateField\n const granularityFromQuery = queryObject?.timeDimensions?.find((td: any) => \n td.dimension === dateField || td.dimension.includes(dateField)\n )?.granularity || 'day'\n \n if (granularityFromQuery?.toLowerCase() === 'year') {\n return (\n <div\n className=\"flex items-center justify-center w-full\"\n style={{ height }}\n >\n <div className=\"text-center text-dc-text-muted\">\n <div className=\"text-sm font-semibold mb-1\">Granularity Too High</div>\n <div className=\"text-xs text-dc-text-secondary\">Activity grids work best with hour, day, week, month, or quarter granularity</div>\n <div className=\"text-xs text-dc-text-secondary mt-1\">Please choose a lower granularity for your time dimension</div>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"w-full flex flex-col relative\" style={{ height, minHeight: '250px', overflow: 'hidden', width: '100%' }}>\n <div ref={containerRef} className=\"w-full h-full relative overflow-x-auto\" style={{ width: '100%' }}>\n <svg ref={svgRef} className=\"h-full\" />\n {!dimensionsReady && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"text-dc-text-muted text-sm\">Measuring chart dimensions...</div>\n </div>\n )}\n </div>\n </div>\n )\n}"],"names":["CubeClient","token","options","query","queryString","queryParam","url","response","key","errorMessage","errorText","errorData","result","ResultSet","queries","loadResponse","createCubeClient","CACHE_DURATION","cachedMeta","buildLabelMap","meta","labelMap","cube","measure","dimension","segment","isCacheValid","useCubeMeta","cubeApi","setMeta","useState","setLabelMap","loading","setLoading","error","setError","fetchMeta","useCallback","metaData","newLabelMap","err","useEffect","getFieldLabel","fieldName","refetch","BatchCoordinator","batchExecutor","delayMs","resolve","reject","currentQueue","item","results","index","CubeContext","createContext","CubeProvider","initialCubeApi","initialApiOptions","initialToken","features","enableBatching","batchDelayMs","children","dynamicConfig","setDynamicConfig","currentConfig","useMemo","batchCoordinator","metaLoading","metaError","refetchMeta","contextValue","newApiOptions","newToken","useCubeContext","context","useContext","isValidNumericValue","value","parseNumericValue","num","formatNumericValue","formatTimeValue","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","measureValue","currentValue","dimValue","seriesName","measureToAggregate","m","chartData","dimensionSeries","seriesKeys","CHART_COLORS","CHART_COLORS_GRADIENT","POSITIVE_COLOR","NEGATIVE_COLOR","CHART_MARGINS","getThemeVariable","variableName","setThemeVariable","applyTheme","theme","cssVarName","letter","resetTheme","styleElement","prop","getTheme","stored","dataTheme","setTheme","isDarkMode","watchThemeChanges","callback","observer","mediaQuery","mediaListener","THEME_PRESETS","ascending","a","b","descending","bisector","f","compare1","compare2","delta","d","x","zero","left","lo","hi","mid","right","center","i","number","ascendingBisect","bisectRight","extent","values","valueof","min","max","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","identity$4","top","bottom","epsilon","translateX","translateY","y","scale","offset","entering","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","k","transform","format","identity","spacing","range","range0","range1","position","selection","path","tick","tickExit","tickEnter","line","text","p","_","axisBottom","axisLeft","noop","dispatch","t","Dispatch","parseTypenames","typenames","types","name","typename","T","get","set","copy","type","that","args","c","xhtml","namespaces","namespace","prefix","creatorInherit","document","uri","creatorFixed","fullname","creator","none","selector","selection_select","select","groups","subgroups","j","group","subgroup","node","subnode","Selection","array","empty","selectorAll","arrayAll","selection_selectAll","parents","matcher","childMatcher","find","childFind","match","childFirst","selection_selectChild","filter","childrenFilter","selection_selectChildren","selection_filter","sparse","update","selection_enter","EnterNode","parent","datum","child","next","constant$3","bindIndex","enter","exit","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","keyValue","selection_data","bind","constant","arraylike","enterGroup","updateGroup","exitGroup","i0","previous","selection_exit","selection_join","onenter","onupdate","onexit","selection_merge","groups0","groups1","m0","m1","merges","group0","group1","merge","selection_order","selection_sort","compare","compareNode","sortgroups","sortgroup","selection_call","selection_nodes","selection_node","selection_size","size","selection_empty","selection_each","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","v","attrFunctionNS","selection_attr","defaultView","styleRemove","styleConstant","priority","styleFunction","selection_style","styleValue","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","string","classList","ClassList","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant","textFunction","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","selection_raise","lower","selection_lower","selection_append","create","constantNull","selection_insert","before","remove","selection_remove","selection_cloneShallow","clone","selection_cloneDeep","selection_clone","deep","selection_datum","contextListener","listener","event","onRemove","on","o","onAdd","selection_on","dispatchEvent","params","window","dispatchConstant","dispatchFunction","selection_dispatch","selection_iterator","root","selection_selection","sourceEvent","pointer","svg","point","rect","nonpassive","nonpassivecapture","nopropagation","noevent$1","dragDisable","view","noevent","yesdrag","noclick","constant$2","DragEvent","subject","target","identifier","active","dx","dy","defaultFilter","defaultContainer","defaultSubject","defaultTouchable","drag","container","touchable","gestures","listeners","mousedownx","mousedowny","mousemoving","touchending","clickDistance2","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","nodrag","touches","touch","s","p0","define","constructor","factory","prototype","extend","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","l","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","rgb","opacity","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","h","Hsl","hsl","m2","hsl2rgb","clamph","clampt","constant$1","linear","exponential","gamma","nogamma","interpolateRgb","rgbGamma","end","colorRgb","numberArray","isNumberArray","genericArray","nb","na","interpolateNumber","object","reA","reB","one","interpolateString","bi","am","bm","bs","q","interpolate$1","interpolateRound","degrees","decompose","e","scaleX","scaleY","skewX","svgNode","parseCss","parseSvg","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","rotate","interpolateTransformCss","interpolateTransformSvg","epsilon2","cosh","sinh","tanh","interpolateZoom","zoomRho","rho","rho2","rho4","zoom","p1","ux0","uy0","w0","ux1","uy1","w1","d2","S","d1","b0","b1","r0","r1","coshr0","u","_1","_2","_4","frame","timeout","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","now","clearNow","Timer","timer","delay","time","sleep","timerFlush","wake","nap","poke","t0","t1","t2","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","id","timing","schedules","init","self","tween","interrupt","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","tweenValue","transition","interpolate","value1","string00","string1","interpolate0","string0","string10","transition_attr","attrInterpolate","attrInterpolateNS","attrTweenNS","attrTween","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","easeVarying","transition_easeVarying","transition_filter","Transition","transition_merge","onFunction","on0","on1","sit","transition_on","removeFunction","transition_remove","transition_select","transition_selectAll","inherit","transition_selection","styleNull","style","styleMaybeRemove","listener0","transition_style","styleInterpolate","styleTween","transition_styleTween","transition_text","textInterpolate","textTween","transition_textTween","transition_transition","id0","id1","newId","transition_end","cancel","selection_prototype","cubicInOut","defaultTiming","easeCubicInOut","selection_transition","formatDecimal","formatDecimalParts","coefficient","exponent","formatGroup","grouping","thousands","width","length","formatNumerals","numerals","re","formatSpecifier","specifier","FormatSpecifier","formatTrim","out","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","identity$2","map","prefixes","formatLocale","locale","currencyPrefix","currencySuffix","decimal","percent","minus","nan","newFormat","fill","align","sign","symbol","comma","precision","trim","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","padding","formatPrefix","defaultLocale","precisionFixed","precisionPrefix","precisionRound","initRange","domain","implicit","ordinal","unknown","constants","unit","normalize","clamper","bimap","d0","polymap","bisect","source","transformer","interpolateValue","untransform","clamp","piecewise","output","input","rescale","continuous","linearish","prestep","maxIter","transformPow","transformSqrt","transformSquare","powish","pow","sqrt","quantize","x0","x1","ZoomEvent","Transform","location","defaultExtent","defaultTransform","defaultWheelDelta","defaultConstrain","translateExtent","dx0","dx1","dy0","dy1","constrain","wheelDelta","scaleExtent","duration","touchstarting","touchfirst","touchDelay","wheelDelay","tapDistance","wheeled","dblclicked","collection","k0","k1","centroid","w","clean","Gesture","wheelidled","currentTarget","y0","dragEnable","started","l0","l1","dp","dl","ActivityGridChart","chartConfig","displayConfig","height","colorPalette","svgRef","useRef","containerRef","dimensions","setDimensions","dimensionsReady","setDimensionsReady","currentTheme","setCurrentTheme","safeDisplayConfig","useLayoutEffect","retryCount","maxRetries","rafId","timeoutId","updateDimensions","retryWithRaf","resizeObserver","getQuarter","getMonthOfQuarter","getWeekOfMonth","dayOfMonth","getGridMapping","week","getWeekOfYear","dayNum","yearStart","dateField","valueField","queryGranularity","firstTimeDim","gridMapping","gridData","dateValue","cell","maxY","minY","completeXRange","dataXValues","gridWidth","gridHeight","margin","availableWidth","availableHeight","finalCellWidth","finalCellHeight","minCellSize","maxCellSize","actualGridWidth","svgWidth","minValue","maxValue","colorScale","scaleQuantize","gridMap","getThemeColor","varName","fallback","isDark","textColor","lineColor","emptyCellColor","cellStrokeColor","tooltip","xValueToIndex","xIndex","tooltipContent","yearGroups","xValues","startIndex","endIndex","centerIndex","labelText","actualYear","xLabelStep","jsx","jsxs"],"mappings":"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","x_google_ignoreList":[7,8,9,10,11,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,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148]}
|