A comprehensive TypeScript waterfall chart library built on D3.js v7. Features advanced data processing, statistical analysis, interactive visualizations, and enterprise-grade performance with complete type safety.
npm install mintwaterfall
CDN:
<script src="https://d3js.org/d3.v7.min.js"></script>
<script src="https://unpkg.com/mintwaterfall@latest/dist/mintwaterfall.min.js"></script>
ES Modules:
import { waterfallChart, createDataProcessor, createStatisticalSystem } from 'mintwaterfall';
import * as d3 from 'd3';
const data = [
{
label: "Q1 Revenue",
stacks: [{ value: 45000, color: "#3498db", label: "$45K" }],
category: "revenue"
},
{
label: "Q2 Growth",
stacks: [{ value: 30000, color: "#2ecc71", label: "$30K" }],
category: "revenue"
},
{
label: "Expenses",
stacks: [{ value: -15000, color: "#e74c3c", label: "-$15K" }],
category: "expenses"
}
];
const chart = waterfallChart()
.width(800)
.height(400)
.showTotal(true)
.theme('corporate')
.enableAccessibility(true);
d3.select('#chart')
.datum(data)
.call(chart);
import { createStatisticalSystem } from 'mintwaterfall';
const stats = createStatisticalSystem();
// Comprehensive statistical summary
const summary = stats.calculateSummary([10, 20, 30, 40, 50]);
// Returns: { mean, median, mode, variance, quartiles, percentiles }
// Outlier detection with IQR method
const outliers = stats.detectOutliers(data, labels);
// Returns: { outliers, cleanData, method, threshold, statistics }
// Trend analysis with forecasting
const trend = stats.analyzeTrend([{x: 1, y: 10}, {x: 2, y: 20}]);
// Returns: { slope, intercept, correlation, rSquared, forecast }
// Data quality assessment
const quality = stats.assessDataQuality(rawData);
// Returns: { completeness, validity, accuracy, issues, recommendations }
import { createAdvancedInteractionSystem } from 'mintwaterfall';
const interactions = createAdvancedInteractionSystem(container, data);
// Enable drag interactions with constraints
interactions.enableDrag({
enabled: true,
axis: 'vertical',
constraints: { minValue: -100, maxValue: 100 }
});
// Enhanced hover detection with Voronoi diagrams
interactions.enableEnhancedHover({
enabled: true,
extent: [[0, 0], [800, 400]]
});
// Force simulation for dynamic layouts
interactions.startForceSimulation({
enabled: true,
forces: { collision: true, positioning: true },
strength: { collision: 0.7, positioning: 0.5 }
});
import { createAdvancedDataProcessor } from 'mintwaterfall';
const processor = createAdvancedDataProcessor();
// Multi-dimensional grouping
const grouped = processor.groupBy(salesData, d => d.region);
// Data rollup with custom reducers
const aggregated = processor.rollupBy(
salesData,
values => d3.sum(values, d => d.revenue),
d => d.category
);
// Cross-tabulation for dimensional analysis
const crossTab = processor.crossTabulate(
categories, quarters,
(cat, quarter) => ({ category: cat, quarter, key: `${cat}-${quarter}` })
);
// Time-based aggregation
const timeAggregated = processor.aggregateByTime(
timeSeriesData,
d => new Date(d.date),
d => d.value,
'month'
);
chart
.width(800) // Chart dimensions
.height(400)
.margin({top: 20, right: 30, bottom: 40, left: 50})
.showTotal(true) // Display total bar
.stacked(false) // Toggle chart mode
.barPadding(0.1) // Bar spacing
.duration(750) // Animation duration
.theme('corporate') // Theme selection
.enableAccessibility(true) // WCAG compliance
import { createAccessibilitySystem } from 'mintwaterfall';
const a11y = createAccessibilitySystem();
// Create accessible chart descriptions
const descriptionId = a11y.createChartDescription(container, data, {
title: "Quarterly Revenue Analysis",
summary: "Shows revenue trends across four quarters"
});
// Validate color contrast
const contrast = a11y.validateColorContrast('#3498db', '#ffffff');
// Returns: { ratio, passesAA, passesAAA, level }
// Handle keyboard navigation
a11y.handleChartKeydown(keyEvent, data, config);
chart.on("barClick", (event, d) => {
console.log("Clicked:", d.label, d.value);
});
chart.on("brushEnd", (selection) => {
console.log("Selected range:", selection);
});
// Advanced interaction events
interactions.on('dragStart', (event) => {
console.log('Drag started:', event);
});
interactions.on('hoverEnter', (data) => {
console.log('Hover detected:', data);
});
const waterfallData = [{
label: "Category Name",
stacks: [
{ value: 100, color: "#3498db", label: "Positive" },
{ value: -25, color: "#e74c3c", label: "Negative" }
],
category: "revenue"
}];
const businessData = [
{
region: 'North',
product: 'Widget',
revenue: 100000,
date: '2024-01-15',
category: 'sales'
},
{
region: 'South',
product: 'Gadget',
revenue: 85000,
date: '2024-01-20',
category: 'sales'
}
];
Available themes: default
, dark
, corporate
, accessible
, colorful
, financial
, professional
chart.theme('corporate');
// Custom theme configuration
chart.themeConfig({
background: '#ffffff',
colors: ['#3498db', '#2ecc71', '#e74c3c'],
text: '#2c3e50',
grid: '#ecf0f1'
});
git clone https://github.com/coredds/MintWaterfall.git
cd MintWaterfall
npm install
npm test # Run full test suite (338 tests)
npm run test:core # Run core functionality tests (136 tests)
npm run test:fast # Run tests with parallel execution
npm run lint # ESLint code quality checks
npm run build # Production build (4 bundle formats)
npm start # Development server (localhost:8080)
dist/mintwaterfall.esm.js
- ES Module bundledist/mintwaterfall.umd.js
- UMD bundle for browsersdist/mintwaterfall.min.js
- Minified production bundledist/mintwaterfall.cjs.js
- CommonJS bundle for Node.jsdist/index.d.ts
- TypeScript definitionsRequirements: ES6 Modules, D3.js v7+, SVG support
Tested: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
mintwaterfall-chart.ts
- Main chart componentmintwaterfall-data.ts
- Data transformation utilitiesmintwaterfall-advanced-data.ts
- D3 integration and complex operationsmintwaterfall-statistics.ts
- Statistical analysis functionsmintwaterfall-advanced-interactions.ts
- Drag, hover, force simulationmintwaterfall-accessibility.ts
- WCAG compliance featuresmintwaterfall-animations.ts
- Transition and animation systemmintwaterfall-themes.ts
- Theme managementmintwaterfall-export.ts
- Export functionalitymintwaterfall-performance.ts
- Optimization utilitiesContributions welcome. Requirements:
See CONTRIBUTING.md for detailed guidelines.
MIT License - see LICENSE file for details.