@redsift/dashboard 11.4.0-muiv5 → 11.4.0
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/index.js +37 -37
- package/index.js.map +1 -1
- package/package.json +4 -4
package/index.js
CHANGED
|
@@ -286,7 +286,7 @@ let DashboardReducerActionType = /*#__PURE__*/function (DashboardReducerActionTy
|
|
|
286
286
|
*/
|
|
287
287
|
|
|
288
288
|
const areEquals = (tableFilter, actionFilter) => {
|
|
289
|
-
return tableFilter.
|
|
289
|
+
return tableFilter.field === actionFilter.field && tableFilter.operator === actionFilter.operator;
|
|
290
290
|
};
|
|
291
291
|
const addOrUpdateFilter = (oldFilters, newFilter) => {
|
|
292
292
|
if (oldFilters.find(f => areEquals(f, newFilter))) {
|
|
@@ -1162,13 +1162,13 @@ const TimeSeriesBarChart = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
1162
1162
|
type: DashboardReducerActionType.FilterTableBatch,
|
|
1163
1163
|
filter: [{
|
|
1164
1164
|
id: `${barChart$1.anchorName()}-start`,
|
|
1165
|
-
|
|
1166
|
-
|
|
1165
|
+
field: columnToFilter,
|
|
1166
|
+
operator: 'after',
|
|
1167
1167
|
value: formatTime(dateArray[0])
|
|
1168
1168
|
}, {
|
|
1169
1169
|
id: `${barChart$1.anchorName()}-end`,
|
|
1170
|
-
|
|
1171
|
-
|
|
1170
|
+
field: columnToFilter,
|
|
1171
|
+
operator: 'onOrBefore',
|
|
1172
1172
|
value: formatTime(dateArray[1])
|
|
1173
1173
|
}]
|
|
1174
1174
|
});
|
|
@@ -1186,8 +1186,8 @@ const TimeSeriesBarChart = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
1186
1186
|
}, [propsData, data]);
|
|
1187
1187
|
|
|
1188
1188
|
// Filter chart if context is updated by an external component.
|
|
1189
|
-
const filterStart = tableFilters.find(filter => filter.
|
|
1190
|
-
const filterEnd = tableFilters.find(filter => filter.
|
|
1189
|
+
const filterStart = tableFilters.find(filter => filter.field === columnToFilter && filter.operator === 'after');
|
|
1190
|
+
const filterEnd = tableFilters.find(filter => filter.field === columnToFilter && filter.operator === 'onOrBefore');
|
|
1191
1191
|
useEffect(() => {
|
|
1192
1192
|
if (chart && filterStart && filterEnd && filterStart.value && filterEnd.value) {
|
|
1193
1193
|
const chartFiltersObj = chart.filters();
|
|
@@ -1222,16 +1222,16 @@ const TimeSeriesBarChart = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
1222
1222
|
type: DashboardReducerActionType.ResetFilter,
|
|
1223
1223
|
filter: {
|
|
1224
1224
|
id: `${chart.anchorName()}-start`,
|
|
1225
|
-
|
|
1226
|
-
|
|
1225
|
+
field: columnToFilter,
|
|
1226
|
+
operator: 'after'
|
|
1227
1227
|
}
|
|
1228
1228
|
});
|
|
1229
1229
|
dispatch === null || dispatch === void 0 ? void 0 : dispatch({
|
|
1230
1230
|
type: DashboardReducerActionType.ResetFilter,
|
|
1231
1231
|
filter: {
|
|
1232
1232
|
id: `${chart.anchorName()}-end`,
|
|
1233
|
-
|
|
1234
|
-
|
|
1233
|
+
field: columnToFilter,
|
|
1234
|
+
operator: 'onOrBefore'
|
|
1235
1235
|
}
|
|
1236
1236
|
});
|
|
1237
1237
|
}
|
|
@@ -1411,8 +1411,8 @@ const FilterableBarChart = props => {
|
|
|
1411
1411
|
type: DashboardReducerActionType.FilterTable,
|
|
1412
1412
|
filter: {
|
|
1413
1413
|
id: id,
|
|
1414
|
-
|
|
1415
|
-
|
|
1414
|
+
field: datagridCategoryDimFilter.field,
|
|
1415
|
+
operator: datagridCategoryDimFilter.operator,
|
|
1416
1416
|
value: newFilters
|
|
1417
1417
|
}
|
|
1418
1418
|
});
|
|
@@ -1430,8 +1430,8 @@ const FilterableBarChart = props => {
|
|
|
1430
1430
|
type: DashboardReducerActionType.ResetFilter,
|
|
1431
1431
|
filter: {
|
|
1432
1432
|
id: id,
|
|
1433
|
-
|
|
1434
|
-
|
|
1433
|
+
field: datagridCategoryDimFilter.field,
|
|
1434
|
+
operator: datagridCategoryDimFilter.operator
|
|
1435
1435
|
}
|
|
1436
1436
|
});
|
|
1437
1437
|
}
|
|
@@ -1444,7 +1444,7 @@ const FilterableBarChart = props => {
|
|
|
1444
1444
|
if (!datagridCategoryDimFilter) {
|
|
1445
1445
|
return;
|
|
1446
1446
|
}
|
|
1447
|
-
const updatedFilters = (_tableFilters$find = tableFilters.find(filter => filter.
|
|
1447
|
+
const updatedFilters = (_tableFilters$find = tableFilters.find(filter => filter.field === datagridCategoryDimFilter.field && filter.operator === datagridCategoryDimFilter.operator)) === null || _tableFilters$find === void 0 ? void 0 : _tableFilters$find.value;
|
|
1448
1448
|
if (updatedFilters && updatedFilters !== filters && ndxDimension) {
|
|
1449
1449
|
setFilters(updatedFilters);
|
|
1450
1450
|
if (updatedFilters.length) {
|
|
@@ -1597,8 +1597,8 @@ const FilterablePieChart = props => {
|
|
|
1597
1597
|
type: DashboardReducerActionType.FilterTable,
|
|
1598
1598
|
filter: {
|
|
1599
1599
|
id: id,
|
|
1600
|
-
|
|
1601
|
-
|
|
1600
|
+
field: datagridCategoryDimFilter.field,
|
|
1601
|
+
operator: datagridCategoryDimFilter.operator,
|
|
1602
1602
|
value: newFilters
|
|
1603
1603
|
}
|
|
1604
1604
|
});
|
|
@@ -1616,8 +1616,8 @@ const FilterablePieChart = props => {
|
|
|
1616
1616
|
type: DashboardReducerActionType.ResetFilter,
|
|
1617
1617
|
filter: {
|
|
1618
1618
|
id: id,
|
|
1619
|
-
|
|
1620
|
-
|
|
1619
|
+
field: datagridCategoryDimFilter.field,
|
|
1620
|
+
operator: datagridCategoryDimFilter.operator
|
|
1621
1621
|
}
|
|
1622
1622
|
});
|
|
1623
1623
|
}
|
|
@@ -1625,7 +1625,7 @@ const FilterablePieChart = props => {
|
|
|
1625
1625
|
onFilter();
|
|
1626
1626
|
}
|
|
1627
1627
|
};
|
|
1628
|
-
const updatedFilters = datagridCategoryDimFilter ? (_tableFilters$find = tableFilters.find(filter => filter.
|
|
1628
|
+
const updatedFilters = datagridCategoryDimFilter ? (_tableFilters$find = tableFilters.find(filter => filter.field === datagridCategoryDimFilter.field && filter.operator === datagridCategoryDimFilter.operator)) === null || _tableFilters$find === void 0 ? void 0 : _tableFilters$find.value : null;
|
|
1629
1629
|
useEffect(() => {
|
|
1630
1630
|
if (updatedFilters && updatedFilters !== filters && ndxDimension) {
|
|
1631
1631
|
setFilters(updatedFilters);
|
|
@@ -1755,8 +1755,8 @@ const FilterableScatterPlot = props => {
|
|
|
1755
1755
|
type: DashboardReducerActionType.FilterTable,
|
|
1756
1756
|
filter: {
|
|
1757
1757
|
id: `${id}-x`,
|
|
1758
|
-
|
|
1759
|
-
|
|
1758
|
+
field: datagridCoordinatesCategoryDimFilter[0].field,
|
|
1759
|
+
operator: datagridCoordinatesCategoryDimFilter[0].operator,
|
|
1760
1760
|
value: [newFilters.minX, newFilters.maxX]
|
|
1761
1761
|
}
|
|
1762
1762
|
});
|
|
@@ -1764,8 +1764,8 @@ const FilterableScatterPlot = props => {
|
|
|
1764
1764
|
type: DashboardReducerActionType.FilterTable,
|
|
1765
1765
|
filter: {
|
|
1766
1766
|
id: `${id}-y`,
|
|
1767
|
-
|
|
1768
|
-
|
|
1767
|
+
field: datagridCoordinatesCategoryDimFilter[1].field,
|
|
1768
|
+
operator: datagridCoordinatesCategoryDimFilter[1].operator,
|
|
1769
1769
|
value: [newFilters.minY, newFilters.maxY]
|
|
1770
1770
|
}
|
|
1771
1771
|
});
|
|
@@ -1789,8 +1789,8 @@ const FilterableScatterPlot = props => {
|
|
|
1789
1789
|
type: DashboardReducerActionType.FilterTable,
|
|
1790
1790
|
filter: {
|
|
1791
1791
|
id: `${id}-category`,
|
|
1792
|
-
|
|
1793
|
-
|
|
1792
|
+
field: datagridCoordinatesCategoryDimFilter[2].field,
|
|
1793
|
+
operator: datagridCoordinatesCategoryDimFilter[2].operator,
|
|
1794
1794
|
value: newFilters
|
|
1795
1795
|
}
|
|
1796
1796
|
});
|
|
@@ -1816,16 +1816,16 @@ const FilterableScatterPlot = props => {
|
|
|
1816
1816
|
type: DashboardReducerActionType.ResetFilter,
|
|
1817
1817
|
filter: {
|
|
1818
1818
|
id: `${id}-x`,
|
|
1819
|
-
|
|
1820
|
-
|
|
1819
|
+
field: datagridCoordinatesCategoryDimFilter[0].field,
|
|
1820
|
+
operator: datagridCoordinatesCategoryDimFilter[0].operator
|
|
1821
1821
|
}
|
|
1822
1822
|
});
|
|
1823
1823
|
dispatch === null || dispatch === void 0 ? void 0 : dispatch({
|
|
1824
1824
|
type: DashboardReducerActionType.ResetFilter,
|
|
1825
1825
|
filter: {
|
|
1826
1826
|
id: `${id}-y`,
|
|
1827
|
-
|
|
1828
|
-
|
|
1827
|
+
field: datagridCoordinatesCategoryDimFilter[1].field,
|
|
1828
|
+
operator: datagridCoordinatesCategoryDimFilter[1].operator
|
|
1829
1829
|
}
|
|
1830
1830
|
});
|
|
1831
1831
|
}
|
|
@@ -1834,8 +1834,8 @@ const FilterableScatterPlot = props => {
|
|
|
1834
1834
|
type: DashboardReducerActionType.ResetFilter,
|
|
1835
1835
|
filter: {
|
|
1836
1836
|
id: `${id}-category`,
|
|
1837
|
-
|
|
1838
|
-
|
|
1837
|
+
field: datagridCoordinatesCategoryDimFilter[2].field,
|
|
1838
|
+
operator: datagridCoordinatesCategoryDimFilter[2].operator
|
|
1839
1839
|
}
|
|
1840
1840
|
});
|
|
1841
1841
|
}
|
|
@@ -1852,14 +1852,14 @@ const FilterableScatterPlot = props => {
|
|
|
1852
1852
|
|
|
1853
1853
|
// const updatedXFilters = tableFilters.find(
|
|
1854
1854
|
// (filter) =>
|
|
1855
|
-
// filter.
|
|
1856
|
-
// filter.
|
|
1855
|
+
// filter.field === datagridCoordinatesCategoryDimFilter[0].field &&
|
|
1856
|
+
// filter.operator ===
|
|
1857
1857
|
// datagridCoordinatesCategoryDimFilter[0].operator
|
|
1858
1858
|
// )?.value;
|
|
1859
1859
|
// const updatedYFilters = tableFilters.find(
|
|
1860
1860
|
// (filter) =>
|
|
1861
|
-
// filter.
|
|
1862
|
-
// filter.
|
|
1861
|
+
// filter.field === datagridCoordinatesCategoryDimFilter[1].field &&
|
|
1862
|
+
// filter.operator ===
|
|
1863
1863
|
// datagridCoordinatesCategoryDimFilter[1].operator
|
|
1864
1864
|
// )?.value;
|
|
1865
1865
|
// console.log(updatedXFilters, updatedYFilters, brushFilters);
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/utils/groupReducers/groupReduceCount.ts","../src/utils/groupReducers/groupReduceSum.ts","../src/components/ChartEmptyState/styles.ts","../src/components/ChartEmptyState/ChartEmptyState.tsx","../src/components/Dashboard/context.ts","../src/components/Dashboard/types.ts","../src/components/Dashboard/reducer.ts","../src/components/CrossfilterRegistry/CrossfilterRegistry.ts","../src/components/Dashboard/Dashboard.tsx","../src/components/PdfExportButton/styles.ts","../src/components/PdfExportButton/PdfDocument.tsx","../src/components/PdfExportButton/PdfExportButton.tsx","../src/components/TimeSeriesBarChart/types.ts","../src/components/TimeSeriesBarChart/styles.ts","../src/components/TimeSeriesBarChart/TimeSeriesBarChart.tsx","../src/hooks/useCategoricalChartAsListbox.ts","../src/components/WithFilters/FilterableBarChart.tsx","../src/components/WithFilters/FilterableDataGrid.tsx","../src/components/WithFilters/FilterablePieChart.tsx","../src/components/WithFilters/FilterableScatterPlot.tsx","../src/components/WithFilters/WithFilters.tsx"],"sourcesContent":["import { Dimension } from '../../types';\n\nconst groupReduceCount = (d: Dimension) => d.group().reduceCount();\n\nexport const COUNT = groupReduceCount;\n","import { Dimension } from '../../types';\n\nexport const groupReduceSum = (field: string) => (d: Dimension) =>\n d.group().reduceSum((d) => d[field]);\n\nexport const SUM = groupReduceSum;\n","import styled from 'styled-components';\nimport { Button } from '@redsift/design-system';\n\n/**\n * Component style.\n */\nexport const StyledChartEmptyState = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n margin-top: 16px;\n\n .redsift-chart-empty-state__title {\n font-family: var(--redsift-typography-h4-font-family);\n font-size: var(--redsift-typography-h4-font-size);\n font-weight: var(--redsift-typography-h4-font-weight);\n line-height: var(--redsift-typography-h4-line-height);\n }\n\n .redsift-chart-empty-state__subtitle {\n font-family: var(--redsift-typography-body-font-family);\n font-size: var(--redsift-typography-body-font-size);\n font-weight: var(--redsift-typography-body-font-weight);\n line-height: var(--redsift-typography-body-line-height);\n margin-top: 8px;\n text-align: center;\n }\n`;\n\nexport const StyledResetButton = styled(Button)`\n margin-top: 8px;\n`;\n","import React, { forwardRef, RefObject } from 'react';\nimport { mdiRefresh } from '@redsift/icons';\nimport { Comp } from '@redsift/design-system';\n\nimport { ChartEmptyStateProps } from './types';\nimport { StyledChartEmptyState, StyledResetButton } from './styles';\n\nconst COMPONENT_NAME = 'ChartEmptyState';\nconst CLASSNAME = 'redsift-chart-empty-state';\n\nexport const ChartEmptyState: Comp<ChartEmptyStateProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n onReset,\n title = 'No Data Available',\n subtitle = 'Please check the applied filters',\n resetLabel = 'Reset all filters',\n } = props;\n\n return (\n <StyledChartEmptyState ref={ref as RefObject<HTMLDivElement>} className=\"redsift-chart-empty-state\">\n <div className={`${ChartEmptyState.className}__img`}>\n <svg width=\"86\" height=\"86\" viewBox=\"0 0 86 86\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n opacity=\"0.2\"\n d=\"M43 86C66.7482 86 86 66.7482 86 43C86 19.2518 66.7482 0 43 0C19.2518 0 0 19.2518 0 43C0 66.7482 19.2518 86 43 86Z\"\n fill=\"#4285F4\"\n />\n <path\n opacity=\"0.4\"\n d=\"M13.4479 45.9299C13.4479 44.8254 14.3434 43.9299 15.4479 43.9299H29.3785C30.4831 43.9299 31.3785 44.8254 31.3785 45.9299V60.0675H13.4479V45.9299Z\"\n fill=\"#4285F4\"\n />\n <path\n opacity=\"0.4\"\n d=\"M34.0681 27.9993C34.0681 26.8948 34.9636 25.9993 36.0681 25.9993H49.9987C51.1033 25.9993 51.9987 26.8948 51.9987 27.9993V60.0675H34.0681V27.9993Z\"\n fill=\"#4285F4\"\n />\n <path\n opacity=\"0.4\"\n d=\"M54.6883 53.1022C54.6883 51.9976 55.5837 51.1022 56.6883 51.1022H70.6189C71.7235 51.1022 72.6189 51.9976 72.6189 53.1022V60.0675H54.6883V53.1022Z\"\n fill=\"#4285F4\"\n />\n <line x1=\"10.3618\" y1=\"60.464\" x2=\"75.705\" y2=\"60.464\" stroke=\"#305AA2\" strokeLinecap=\"round\" />\n <path d=\"M48.7345 25.9993H46.9414L51.9987 28.9192V27.8839L48.7345 25.9993Z\" fill=\"#4285F4\" />\n <path d=\"M41.5622 25.9993L51.9987 32.0249V30.9896L43.3553 25.9993H41.5622Z\" fill=\"#4285F4\" />\n <path d=\"M36.183 25.9993L51.9987 35.1305V34.0953L37.9761 25.9993H36.183Z\" fill=\"#4285F4\" />\n <path\n d=\"M34.0771 27.622C34.0681 27.6758 34.0681 27.7296 34.0681 27.7924V27.8839L51.9987 38.2362V37.201L34.281 26.9716C34.1776 27.171 34.097 27.3834 34.0771 27.622Z\"\n fill=\"#4285F4\"\n />\n <path d=\"M34.0681 30.9896L51.9987 41.3418V40.3066L34.0681 29.9544V30.9896Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 34.0953L51.9987 44.4475V43.4123L34.0681 33.06V34.0953Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 37.2009L51.9987 47.5531V46.518L34.0681 36.1657V37.2009Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 40.3066L51.9987 50.6588V49.6236L34.0681 39.2714V40.3066Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 43.4123L51.9987 53.7645V52.7293L34.0681 42.377V43.4123Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 46.518L51.9987 56.8702V55.835L34.0681 45.4827V46.518Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 49.6236L51.9987 59.9759V58.9407L34.0681 48.5884V49.6236Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 52.7293L46.7782 60.0675H48.5712L34.0681 51.6941V52.7293Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 55.835L41.399 60.0675H43.192L34.0681 54.7997V55.835Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 58.9406L36.0198 60.0675H37.8129L34.0681 57.9054V58.9406Z\" fill=\"#4285F4\" />\n <circle\n opacity=\"0.6\"\n cx=\"50.5506\"\n cy=\"29.9304\"\n r=\"10.1549\"\n transform=\"rotate(-45 50.5506 29.9304)\"\n fill=\"white\"\n stroke=\"#305AA2\"\n strokeWidth=\"3\"\n />\n <circle\n cx=\"50.5506\"\n cy=\"29.9304\"\n r=\"10.1549\"\n transform=\"rotate(-45 50.5506 29.9304)\"\n stroke=\"#305AA2\"\n strokeWidth=\"3\"\n />\n <path\n d=\"M59.2186 36.4771L58.1579 35.4164L56.0366 37.5377L57.0973 38.5984L59.2186 36.4771ZM65.9725 47.4736C66.5582 48.0594 67.508 48.0594 68.0938 47.4736C68.6796 46.8878 68.6796 45.938 68.0938 45.3522L65.9725 47.4736ZM57.0973 38.5984L65.9725 47.4736L68.0938 45.3522L59.2186 36.4771L57.0973 38.5984Z\"\n fill=\"#305AA2\"\n />\n </svg>\n </div>\n <div className={`${ChartEmptyState.className}__title`}>{title}</div>\n <div className={`${ChartEmptyState.className}__subtitle`}>{subtitle}</div>\n {onReset ? (\n <StyledResetButton variant=\"unstyled\" leftIcon={mdiRefresh} onClick={onReset}>\n {resetLabel}\n </StyledResetButton>\n ) : null}\n </StyledChartEmptyState>\n );\n});\n\nChartEmptyState.className = CLASSNAME;\nChartEmptyState.displayName = COMPONENT_NAME;\n","import React from 'react';\nimport { DashboardContextProps, DashboardReducerState } from './types';\n\nexport const initialState: DashboardReducerState = {\n tableFilters: [],\n};\n\nexport const DashboardContext = React.createContext<DashboardContextProps>({\n state: initialState,\n} as DashboardContextProps);\n","import { ComponentProps, Dispatch, MutableRefObject, RefObject } from 'react';\nimport { GridFilterItem } from '@redsift/table';\nimport { GridApi } from '@mui/x-data-grid-pro';\n\nimport { JSONArray } from '../../types';\n\n/**\n * Context props.\n */\nexport type DashboardContextProps = {\n dashboardRef?: RefObject<HTMLDivElement>;\n data: JSONArray;\n dataGridApiRef?: MutableRefObject<GridApi>;\n dispatch: Dispatch<DashboardReducerAction>;\n state: DashboardReducerState;\n toggleUpdateContext?: () => void;\n};\n\n/**\n * Reducer props.\n */\nexport type DashboardReducerState = {\n tableFilters: GridFilterItem[];\n};\n\nexport enum DashboardReducerActionType {\n ResetFilter = 'reset-filter',\n ResetFilters = 'reset-filters',\n FilterTable = 'filter-table',\n FilterTableBatch = 'filter-table-batch',\n AppendFilterTableBatch = 'append-filter-table-batch',\n}\n\nexport type DashboardReducerAction = {\n type: DashboardReducerActionType;\n filter?: GridFilterItem | GridFilterItem[];\n};\n\n/**\n * Component props.\n */\nexport interface DashboardProps extends ComponentProps<'div'> {\n /** Dataset that will be share across every components within the dashboard. */\n data: JSONArray;\n /** Datagrid API Ref. */\n dataGridApiRef?: MutableRefObject<GridApi>;\n}\n","import { GridFilterItem } from '@redsift/table';\nimport {\n DashboardReducerState,\n DashboardReducerAction,\n DashboardReducerActionType,\n} from './types';\n\nconst areEquals = (\n tableFilter: GridFilterItem,\n actionFilter: GridFilterItem\n) => {\n return (\n tableFilter.columnField === actionFilter.columnField &&\n tableFilter.operatorValue === actionFilter.operatorValue\n );\n};\n\nconst addOrUpdateFilter = (\n oldFilters: GridFilterItem[],\n newFilter: GridFilterItem\n) => {\n if (oldFilters.find((f) => areEquals(f, newFilter))) {\n return oldFilters.map((f) => {\n if (areEquals(f, newFilter)) {\n return newFilter;\n }\n return f;\n });\n } else {\n return [...oldFilters, newFilter];\n }\n};\n\nconst addOrUpdateFilters = (\n oldFilters: GridFilterItem[],\n newFilters: GridFilterItem[]\n) => {\n let updatedFilters = oldFilters;\n for (let i = 0; i < newFilters.length; i++) {\n updatedFilters = addOrUpdateFilter(updatedFilters, newFilters[i]);\n }\n return updatedFilters;\n};\n\nconst replaceFilters = (newFilters: GridFilterItem | GridFilterItem[]) => {\n return Array.isArray(newFilters) ? newFilters : [newFilters];\n};\n\nconst removeFilter = (\n oldFilters: GridFilterItem[],\n newFilter: GridFilterItem\n) => {\n return oldFilters.filter((f) => !areEquals(f, newFilter));\n};\n\nconst removeAllFilters = () => {\n return [] as GridFilterItem[];\n};\n\nexport const DashboardReducer = (\n state: DashboardReducerState,\n action: DashboardReducerAction\n): DashboardReducerState => {\n switch (action.type) {\n case DashboardReducerActionType.ResetFilter:\n return {\n ...state,\n tableFilters: removeFilter(\n state.tableFilters,\n action.filter as GridFilterItem\n ),\n };\n case DashboardReducerActionType.ResetFilters:\n return { ...state, tableFilters: removeAllFilters() };\n case DashboardReducerActionType.FilterTable:\n return {\n ...state,\n tableFilters: addOrUpdateFilter(\n state.tableFilters,\n action.filter as GridFilterItem\n ),\n };\n\n case DashboardReducerActionType.FilterTableBatch:\n return {\n ...state,\n tableFilters: replaceFilters(action.filter!),\n };\n\n case DashboardReducerActionType.AppendFilterTableBatch:\n return {\n ...state,\n tableFilters: addOrUpdateFilters(\n state.tableFilters,\n action.filter as GridFilterItem[]\n ),\n };\n }\n};\n","import { JSONArray, TNdx } from '../../types';\nimport crossfilter from 'crossfilter2';\n\nexport const CrossfilterRegistry = (() => {\n const instances = new WeakMap<JSONArray, TNdx>();\n\n const get = (data: JSONArray): TNdx => {\n let instance = instances.get(data);\n\n if (!instance) {\n instance = crossfilter(data);\n instances.set(data, instance);\n }\n\n return instance;\n };\n\n const remove = (data: JSONArray): void => {\n instances.delete(data);\n };\n\n return {\n get,\n remove,\n };\n})();\n","import React, { forwardRef, RefObject, useMemo, useReducer, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { useGridApiRef } from '@mui/x-data-grid-pro';\n\nimport { Comp } from '@redsift/design-system';\nimport { DashboardContext } from './context';\nimport { DashboardContextProps, DashboardProps } from './types';\nimport { DashboardReducer } from './reducer';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\n\nconst COMPONENT_NAME = 'Dashboard';\nconst CLASSNAME = 'redsift-dashboard-container';\n\nexport const Dashboard: Comp<DashboardProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { children, className, data, dataGridApiRef: propsDataGridApiRef, ...forwardedProps } = props;\n\n const providerRef = ref || useRef<HTMLDivElement>();\n const dataGridApiRef = propsDataGridApiRef || useGridApiRef();\n const [updateContext, setUpdateContext] = useState(false);\n\n const [state, dispatch] = useReducer(DashboardReducer, {\n tableFilters: [],\n });\n\n const value = useMemo<DashboardContextProps>(\n () => ({\n dashboardRef: providerRef as RefObject<HTMLDivElement>,\n data,\n dataGridApiRef,\n dispatch,\n ndx: CrossfilterRegistry.get(data),\n state,\n toggleUpdateContext: () => setUpdateContext(!updateContext),\n }),\n [data, state, updateContext]\n );\n\n return (\n <div\n {...forwardedProps}\n className={classNames(Dashboard.className, className)}\n ref={providerRef as RefObject<HTMLDivElement>}\n >\n <DashboardContext.Provider value={value as DashboardContextProps}>{children}</DashboardContext.Provider>\n </div>\n );\n});\nDashboard.className = CLASSNAME;\nDashboard.displayName = COMPONENT_NAME;\n","// istanbul ignore file\n\nimport { Font, StyleSheet } from '@react-pdf/renderer';\nconst BACKGROUND_COLOR = '#F8F8F8';\nconst GREY_1 = '#E2E6EA';\nconst GREY_2 = '#bff0fd';\n\nexport const getPdfStyles = (primaryColor: string) => {\n Font.register({\n family: 'Source Code Pro',\n fonts: [\n {\n src: 'https://fonts.gstatic.com/s/sourcecodepro/v7/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vT.ttf',\n },\n ],\n });\n\n Font.register({\n family: 'Roboto',\n fonts: [\n {\n fontWeight: 700,\n src: 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/fonts/roboto/Roboto-Regular.ttf',\n },\n {\n fontWeight: 400,\n src: 'https://cdnjs.cloudflare.com/ajax/libs/ink/3.1.10/fonts/Roboto/roboto-light-webfont.ttf',\n },\n ],\n });\n\n return StyleSheet.create({\n page: {\n borderTopStyle: 'solid',\n borderTopWidth: 32,\n borderTopColor: primaryColor,\n borderBottomStyle: 'solid',\n borderBottomWidth: 6,\n borderBottomColor: primaryColor,\n backgroundColor: BACKGROUND_COLOR,\n paddingTop: 20,\n paddingBottom: 40,\n },\n logoContainer: {\n margin: 0,\n paddingBottom: 10,\n alignItems: 'center',\n width: '100%',\n },\n logo: {\n width: 'auto',\n height: 30,\n },\n introductionContainer: {\n lineHeight: 1.4,\n textAlign: 'center',\n marginHorizontal: 40,\n marginVertical: 10,\n },\n introductionText: {\n fontSize: 8,\n fontFamily: 'Roboto',\n fontWeight: 400,\n color: 'black',\n },\n pageNumber: {\n fontFamily: 'Source Code Pro',\n position: 'absolute',\n fontSize: 6,\n bottom: 5,\n right: 20,\n left: 0,\n textAlign: 'right',\n color: 'black',\n },\n pageContinue: {\n fontSize: 8,\n fontFamily: 'Roboto',\n fontWeight: 400,\n top: -10,\n left: 20,\n },\n tableContainer: {\n backgroundColor: 'white',\n marginHorizontal: 20,\n marginVertical: 10,\n paddingTop: 10,\n paddingLeft: 10,\n borderRightWidth: 1,\n borderBottomWidth: 1,\n borderRightColor: BACKGROUND_COLOR,\n borderBottomColor: GREY_1,\n width: 'auto',\n },\n tableRowContainer: {\n flexDirection: 'row',\n borderBottomColor: GREY_2,\n alignItems: 'flex-start',\n fontSize: 8,\n marginLeft: 16,\n marginRight: 24,\n height: 'auto',\n },\n tableHeaderContainer: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n fontSize: 7,\n fontFamily: 'Roboto',\n fontWeight: 700,\n marginLeft: 16,\n marginRight: 24,\n marginBottom: 12,\n paddingTop: 12,\n paddingBottom: 12,\n borderBottomWidth: 2,\n borderBottomColor: primaryColor,\n },\n tableCellHeaderText: {\n fontSize: 7,\n fontFamily: 'Roboto',\n fontWeight: 700,\n color: 'black',\n overflow: 'hidden',\n },\n tableCellText: {\n fontSize: 6,\n lineHeight: 1.5,\n fontFamily: 'Roboto',\n fontWeight: 400,\n color: 'black',\n overflow: 'hidden',\n },\n dashboardImageContainer: {\n marginHorizontal: 20,\n marginTop: 0,\n marginBottom: 10,\n },\n constraintsContainer: {\n width: 'auto',\n height: 'auto',\n paddingVertical: 30,\n textAlign: 'center',\n },\n constraints: {\n fontSize: 6,\n fontFamily: 'Roboto',\n fontWeight: 700,\n color: 'black',\n },\n });\n};\n","// istanbul ignore file\n\nimport React from 'react';\nimport { Document, Image, Page, Text, View } from '@react-pdf/renderer';\nimport { GridValidRowModel } from '@mui/x-data-grid-pro';\nimport { PdfTableColumn, PdfTableRowProps, PdfTableProps, PdfDocumentProps, PdfStyles } from './types';\nimport { getPdfStyles } from './styles';\n\nconst DEFAULT_COLUMN_WIDTH = 100;\n\nconst getWidthColumn = (width: number, totalW: number, nrColumns: number) => {\n // calculation width column where the 7px margin between the columns is included\n return `${Math.round((width * 100) / (totalW - 7 * (nrColumns - 1)))}%`;\n};\n\nconst PdfTableRow = ({ rowIndex, rowData, columns, styles, totalWidth }: PdfTableRowProps) => {\n return (\n <View style={styles.tableRowContainer} key={`row-${rowIndex}`}>\n {columns.map((column: PdfTableColumn, index: number) => {\n const { field, width } = column;\n let totalW = totalWidth;\n let nrColumns = columns.length;\n\n // The checkbox in the table will not be printed\n if (field === '__check__') {\n totalW = totalW - (width || 50);\n nrColumns = nrColumns - 1;\n return;\n }\n const widthColumn = getWidthColumn(width || DEFAULT_COLUMN_WIDTH, totalW, nrColumns);\n\n // Empty value will print '-'\n if (!rowData[field]) {\n return (\n <View\n style={{\n width: widthColumn,\n paddingVertical: 2,\n marginRight: 7,\n }}\n key={`cell-${rowIndex}-${index}`}\n >\n <Text style={styles.tableCellText}>{'-'}</Text>\n </View>\n );\n }\n return (\n <View\n style={{\n width: widthColumn,\n paddingVertical: 2,\n marginRight: 7,\n }}\n key={`cell-${rowIndex}-${index}`}\n >\n <Text style={styles.tableCellText}>\n {Array.isArray(rowData[field]) ? rowData[field].join(', ') : rowData[field]}\n </Text>\n </View>\n );\n })}\n </View>\n );\n};\n\nconst PdfTable = ({ dataTable, styles, localeText }: PdfTableProps) => {\n const { data, columns, totalWidth } = dataTable;\n\n return (\n <>\n <View style={styles.tableHeaderContainer}>\n {columns.map((column: PdfTableColumn) => {\n let totalW = totalWidth;\n let nrColumns = columns.length;\n const { field, headerName, width } = column;\n\n // The checkbox in the table will not be printed\n if (field === '__check__') {\n totalW = totalW - (width || 50);\n nrColumns = nrColumns - 1;\n return;\n }\n const widthColumn = getWidthColumn(width || DEFAULT_COLUMN_WIDTH, totalW, nrColumns);\n\n return (\n <View\n style={{\n width: widthColumn,\n paddingVertical: 2,\n marginRight: 7,\n }}\n key={`heading-${field}`}\n >\n <Text style={styles.tableCellHeaderText}>{headerName}</Text>\n </View>\n );\n })}\n </View>\n <View>\n {data.map((row: GridValidRowModel, index: number) => {\n if (index < 1000) {\n return (\n <PdfTableRow\n key={index}\n rowIndex={index}\n rowData={data[index]}\n columns={columns}\n styles={styles}\n totalWidth={totalWidth}\n />\n );\n }\n })}\n </View>\n {data.length >= 1000 ? (\n <View style={styles.constraintsContainer}>\n <Text style={styles.constraints}>\n {localeText?.maxSizeDisclaimer ||\n 'Due to processing constraints this pdf is limited to the first 1000 rows of data.'}\n </Text>\n </View>\n ) : null}\n </>\n );\n};\n\nconst Pagination = ({ styles }: { styles: PdfStyles }) => {\n return (\n <Text style={styles.pageNumber} render={({ pageNumber, totalPages }) => `${pageNumber}/${totalPages}`} fixed />\n );\n};\n\nexport const PdfDocument = ({\n dashboardImage,\n introduction,\n localeText,\n logo,\n dataTable,\n primaryColor,\n}: PdfDocumentProps) => {\n const styles = getPdfStyles(primaryColor);\n\n return (\n <Document>\n <Page size=\"A4\" style={styles.page}>\n <>\n {logo ? (\n <View style={styles.logoContainer}>\n <Image src={logo} style={styles.logo} />\n </View>\n ) : null}\n {introduction ? (\n <View style={styles.introductionContainer}>\n <Text style={styles.introductionText}>{introduction}</Text>\n </View>\n ) : null}\n {dashboardImage ? (\n <View style={styles.dashboardImageContainer}>\n <Image src={dashboardImage as unknown as string} />\n </View>\n ) : null}\n {dataTable ? (\n <View style={styles.tableContainer}>\n <PdfTable dataTable={dataTable} styles={styles} localeText={localeText} />\n </View>\n ) : null}\n\n <Pagination styles={styles} />\n </>\n </Page>\n </Document>\n );\n};\n","// istanbul ignore file\n\nimport React, {\n forwardRef,\n JSXElementConstructor,\n ReactElement,\n RefObject,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport {\n gridFilteredSortedRowEntriesSelector,\n gridVisibleColumnDefinitionsSelector,\n gridColumnsTotalWidthSelector,\n} from '@mui/x-data-grid-pro';\nimport classNames from 'classnames';\nimport { saveAs } from 'file-saver';\nimport { pdf } from '@react-pdf/renderer';\nimport domToImage from 'dom-to-image';\n\nimport { Comp, Button, Spinner, RedsiftColorBlueD1 } from '@redsift/design-system';\n\nimport { PdfExportButtonProps } from './types';\nimport { PdfDocument } from './PdfDocument';\nimport { DashboardContext } from '../Dashboard';\n\nconst COMPONENT_NAME = 'PdfExportButton';\nconst CLASSNAME = 'redsift-pdf-export-button';\n\nconst getDashboardImage = async (componentRef: RefObject<HTMLElement>): Promise<string> => {\n const filter = (el: Node) => {\n const classList = (el as HTMLElement).classList;\n return !(classList?.contains('redsift-datagrid') || classList?.contains('redsift-button'));\n };\n\n const dashboardHeight = (componentRef.current as HTMLElement).getBoundingClientRect().height;\n const datagridHeight =\n (componentRef.current as HTMLElement)?.getElementsByClassName('redsift-datagrid')?.[0]?.getBoundingClientRect()\n ?.height || 0;\n\n return new Promise((resolve) => {\n domToImage\n .toPng(componentRef.current as HTMLElement, {\n filter,\n height: dashboardHeight - datagridHeight,\n })\n .then(function (dataUrl: string) {\n resolve(dataUrl);\n })\n .catch(() => {\n resolve('');\n });\n });\n};\n\nexport const PdfExportButton: Comp<PdfExportButtonProps, HTMLButtonElement> = forwardRef((props, ref) => {\n const {\n children,\n className,\n componentRef: propComponentRef,\n fileName,\n introduction,\n localeText,\n logo,\n onClick,\n primaryColor,\n ...forwardedProps\n } = props;\n const [componentRef, setComponentRef] = useState(propComponentRef);\n const [isLoading, setIsLoading] = useState(false);\n\n const { dashboardRef, dataGridApiRef } = useContext(DashboardContext);\n\n useEffect(() => {\n if (!componentRef || !componentRef.current) {\n setComponentRef(dashboardRef);\n }\n }, [dashboardRef]);\n\n const exportPdf = async () => {\n if (onClick) {\n onClick();\n }\n setIsLoading(true);\n try {\n const dashboardImage = await getDashboardImage(componentRef || dashboardRef!);\n\n let dataTable;\n if (dataGridApiRef && dataGridApiRef.current && Object.keys(dataGridApiRef.current).length) {\n dataTable = {\n data: gridFilteredSortedRowEntriesSelector(dataGridApiRef.current.state, dataGridApiRef.current.instanceId)\n .slice(0, 1000)\n .map(({ model }) => model),\n columns: gridVisibleColumnDefinitionsSelector(\n dataGridApiRef.current.state,\n dataGridApiRef.current.instanceId\n ),\n totalWidth: gridColumnsTotalWidthSelector(dataGridApiRef.current.state, dataGridApiRef.current.instanceId),\n };\n }\n\n const doc = (\n <PdfDocument\n localeText={localeText}\n dashboardImage={dashboardImage}\n introduction={introduction}\n logo={logo}\n primaryColor={primaryColor || RedsiftColorBlueD1}\n dataTable={dataTable}\n />\n );\n const asPdf = pdf([] as unknown as ReactElement<any, string | JSXElementConstructor<any>>);\n asPdf.updateContainer(doc);\n const blob = await asPdf.toBlob();\n saveAs(blob, fileName || 'redsift-dashboard.pdf');\n } catch (e) {\n console.log('error:', e);\n }\n setIsLoading(false);\n };\n\n return (\n <Button\n className={classNames(PdfExportButton.className, className)}\n onClick={exportPdf}\n isDisabled={isLoading}\n {...forwardedProps}\n ref={ref as RefObject<HTMLButtonElement>}\n >\n {isLoading ? <Spinner size=\"xsmall\" isColored={false} /> : null} {children}\n </Button>\n );\n});\nPdfExportButton.className = CLASSNAME;\nPdfExportButton.displayName = COMPONENT_NAME;\n","// istanbul ignore file\n\nimport { ComponentProps } from 'react';\nimport { Theme, ValueOf } from '@redsift/design-system';\nimport { ColorTheme, DimensionSelector, JSONArray } from '../../types';\n\ntype SuccessDangerColorTheme = {\n success: string;\n warning: string;\n danger: string;\n neutral?: string;\n};\n\n/**\n * Component size.\n */\nexport const TimeSeriesBarChartSize = {\n large: 'large',\n medium: 'medium',\n small: 'small',\n} as const;\nexport type TimeSeriesBarChartSize = ValueOf<typeof TimeSeriesBarChartSize>;\n\n/**\n * Component theme.\n */\nexport const TimeSeriesBarChartTheme = ColorTheme;\nexport type TimeSeriesBarChartTheme = ValueOf<typeof TimeSeriesBarChartTheme>;\n\nexport type datetimeEnum = 'hour' | 'day' | 'week' | 'month' | 'year';\n\ninterface LocaleText {\n emptyChartTitle?: string;\n emptyChartSubtitle?: string;\n emptyChartResetLabel?: string;\n resetLabel?: string;\n}\n\n/**\n * Component props.\n */\nexport interface TimeSeriesBarChartProps extends ComponentProps<'div'> {\n /** Caption. */\n caption?: string;\n /** Whether the x axis labels are rotated or not. */\n areXLabelsRotated?: boolean;\n /** Field value of the DataGrid column to filter. */\n columnToFilter?: string;\n /** Dataset to use to generate the chart, if no context is provided. */\n data?: JSONArray;\n /** Name of the dataset field that contains the datetime value. */\n dateTimeFieldName: string;\n /** Format used for the date and time values in the dataset by d3.js. Should follow https://github.com/d3/d3-time-format#locale_format. */\n dateTimeFormat?: string;\n /** Datetime unit to used to group values and for x units. */\n dateTimeGroup?: datetimeEnum;\n /** Method that will be used by crossfilter to compute the dimensions of the charts. */\n dimension: DimensionSelector;\n /** Whether the reset button is hidden or not. */\n isResetable?: boolean;\n /** Overriden values for internal labels and texts. */\n localeText?: LocaleText;\n /** Method to call when a filter occured on the chart. */\n onFilter?: (filters?: string[], allFiltered?: JSONArray) => void;\n /** TimeSeriesChart size. */\n size?: TimeSeriesBarChartSize;\n /** Color palette to use. You can choose among the list of available color palette or also choose to use the success/warning/danger theme for which you have to specify which key corresponds to which status. */\n colorTheme?: TimeSeriesBarChartTheme | SuccessDangerColorTheme;\n /** Title. */\n title?: string;\n /** Dataset key to use to stack values. */\n stackedCategory?: string;\n /** X Axis Label. */\n xAxisLabel?: string;\n /** Y Axis Label. */\n yAxisLabel?: string;\n}\n\nexport type StyledTimeSeriesBarChartProps = Omit<TimeSeriesBarChartProps, 'dimension' | 'dateTimeFieldName'> & {\n $theme: Theme;\n};\n","// istanbul ignore file\n\nimport styled, { css } from 'styled-components';\nimport { Flexbox } from '@redsift/design-system';\nimport { StyledTimeSeriesBarChartProps } from './types';\n\n/**\n * Component style.\n */\nexport const StyledTimeSeriesBarChart = styled.div<StyledTimeSeriesBarChartProps>`\n margin: 16px;\n padding: 16px;\n\n text {\n fill: ${({ $theme }) => `var(--redsift-color-${$theme}-components-text-primary)`};\n }\n\n .redsift-timeseries-barchart__chart {\n display: flex;\n font-family: var(--redsift-typography-font-family-poppins);\n font-size: 12px;\n justify-content: center;\n margin: 8px 0;\n }\n\n svg > g {\n margin: 8px;\n }\n\n .grid-line,\n .axis .grid-line,\n .grid-line line,\n .axis .grid-line line {\n fill: none;\n stroke: #ccc;\n shape-rendering: crispEdges;\n }\n\n .axis text {\n font-family: var(--redsift-typography-font-family-poppins);\n font-size: 10px;\n }\n\n g.stack rect.bar.deselected {\n fill-opacity: 0.5;\n fill: var(--redsift-color-neutral-mid-grey);\n }\n\n .brush .custom-brush-handle {\n fill: #eee;\n stroke: #666;\n cursor: ew-resize;\n }\n\n text {\n user-select: none;\n }\n`;\n\nexport const StyledTimeSeriesBarChartTitle = styled(Flexbox)<StyledTimeSeriesBarChartProps>`\n font-family: var(--redsift-typography-h4-font-family);\n font-size: var(--redsift-typography-h4-font-size);\n font-weight: var(--redsift-typography-h4-font-weight);\n line-height: var(--redsift-typography-h4-line-height);\n`;\n\nexport const StyledTimeSeriesBarChartCaption = styled.p<StyledTimeSeriesBarChartProps>`\n font-family: var(--redsift-typography-caption-font-family);\n font-size: var(--redsift-typography-caption-font-size);\n font-weight: var(--redsift-typography-caption-font-weight);\n line-height: var(--redsift-typography-caption-line-height);\n`;\n\nexport const StyledTimeSeriesBarChartContainer = styled.div<{\n $isEmpty: boolean;\n}>`\n display: flex;\n align-items: center;\n gap: 16px;\n font-family: var(--redsift-typography-font-family-poppins);\n font-size: 11px;\n justify-content: center;\n margin: 8px 0;\n position: relative;\n\n .redsift-timeseries-barchart-container__chart {\n position: relative;\n ${({ $isEmpty }) =>\n $isEmpty\n ? css`\n display: none;\n `\n : ''};\n }\n`;\n","// istanbul ignore file\n\nimport React, { forwardRef, RefObject, useContext, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport {\n config as dcconfig,\n filterAll as dcfilterAll,\n filters as dcfilters,\n redrawAll as dcredrawAll,\n barChart as dcbarChart,\n BarChart as dcBarChart,\n UnitFunction as dcUnitFunction,\n} from 'dc';\nimport {\n scaleTime as d3scaleTime,\n timeFormat as d3timeFormat,\n isoParse as d3isoParse,\n utcParse as d3utcParse,\n timeHour as d3timeHour,\n timeHours as d3timeHours,\n timeDay as d3timeDay,\n timeDays as d3timeDays,\n timeWeek as d3timeWeek,\n timeWeeks as d3timeWeeks,\n timeMonth as d3timeMonth,\n timeMonths as d3timeMonths,\n timeYear as d3timeYear,\n timeYears as d3timeYears,\n} from 'd3';\n\nimport { Button, Comp, useId, useTheme } from '@redsift/design-system';\nimport { scheme, useColor } from '@redsift/charts';\n\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { TimeSeriesBarChartProps, TimeSeriesBarChartSize, TimeSeriesBarChartTheme } from './types';\nimport { JSONObject, JSONArray } from '../../types';\nimport {\n StyledTimeSeriesBarChart,\n StyledTimeSeriesBarChartCaption,\n StyledTimeSeriesBarChartTitle,\n StyledTimeSeriesBarChartContainer,\n} from './styles';\nimport { GridFilterItem } from '@redsift/table';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\n\nconst COMPONENT_NAME = 'TimeSeriesBarChart';\nconst CLASSNAME = 'redsift-timeseries-barchart';\n\ntype ChartDimensions = {\n width: number;\n height: number;\n marginTop?: number;\n marginRight?: number;\n marginBottom?: number;\n marginLeft?: number;\n};\n\nconst getStartDate = (dates: Date[]) => new Date(Math.min(...dates.map(Number)));\nconst getEndDate = (dates: Date[]) => new Date(Math.max(...dates.map(Number)));\n\nconst sizeToDimension = (size: TimeSeriesBarChartSize): ChartDimensions => {\n switch (size) {\n case TimeSeriesBarChartSize.small:\n return {\n width: 400,\n height: 200,\n marginLeft: 16,\n marginTop: 16,\n marginRight: 16,\n marginBottom: 32,\n };\n case TimeSeriesBarChartSize.large:\n return {\n width: 1000,\n height: 300,\n marginLeft: 16,\n marginTop: 16,\n marginRight: 16,\n marginBottom: 32,\n };\n case TimeSeriesBarChartSize.medium:\n default:\n return {\n width: 600,\n height: 250,\n marginLeft: 16,\n marginTop: 16,\n marginRight: 16,\n marginBottom: 32,\n };\n }\n};\n\nconst parseDateTimeGroup = (\n data: JSONArray,\n dateTimeGroup: TimeSeriesBarChartProps['dateTimeGroup'],\n dateTimeFieldName: string\n) => {\n const dates = [...data.map((d: (typeof data)[number]) => new Date(d[dateTimeFieldName] as string))];\n const startDate = getStartDate(dates);\n const endDate = getEndDate(dates);\n\n switch (dateTimeGroup) {\n case 'hour':\n return {\n group: (g: Date) => d3timeHour(g),\n round: (x: Date) => d3timeHour(x),\n x: d3scaleTime().domain([d3timeHour.offset(startDate, -1), d3timeHour.offset(endDate, 2)]),\n xUnits: d3timeHours,\n };\n case 'day':\n return {\n group: (g: Date) => d3timeDay(g),\n round: (x: Date) => d3timeDay(x),\n x: d3scaleTime().domain([d3timeDay.offset(startDate, -1), d3timeDay.offset(endDate, 2)]),\n xUnits: d3timeDays,\n };\n case 'week':\n return {\n group: (g: Date) => d3timeWeek(g),\n round: (x: Date) => d3timeWeek(x),\n x: d3scaleTime().domain([d3timeWeek.offset(startDate, -1), d3timeWeek.offset(endDate, 2)]),\n xUnits: d3timeWeeks,\n };\n case 'year':\n return {\n group: (g: Date) => d3timeYear(g),\n round: (x: Date) => d3timeYear(x),\n x: d3scaleTime().domain([d3timeYear.offset(startDate, -2), d3timeYear.offset(endDate, 2)]),\n xUnits: d3timeYears,\n };\n case 'month':\n default:\n return {\n group: (g: Date) => d3timeMonth(g),\n round: (x: Date) => d3timeMonth(x),\n x: d3scaleTime().domain([d3timeMonth.offset(startDate, -1), d3timeMonth.offset(endDate, 2)]),\n xUnits: d3timeMonths,\n };\n }\n};\n\nexport const TimeSeriesBarChart: Comp<TimeSeriesBarChartProps, HTMLDivElement> = forwardRef((props, ref) => {\n const containerRef = (ref || useRef<HTMLDivElement>()) as RefObject<HTMLDivElement>;\n const chartRef = useRef<HTMLDivElement>() as RefObject<HTMLDivElement>;\n\n const [id] = useId();\n const [chart, setChart] = useState<dcBarChart>();\n\n const {\n areXLabelsRotated,\n caption,\n className,\n colorTheme = props.stackedCategory ? TimeSeriesBarChartTheme.default : TimeSeriesBarChartTheme.monochrome,\n columnToFilter,\n data: propsData,\n dateTimeFieldName,\n dateTimeFormat = '%Y-%m-%d %H:%M:%S',\n dateTimeGroup = 'month',\n dimension,\n isResetable = true,\n localeText,\n onFilter,\n size = TimeSeriesBarChartSize.medium,\n stackedCategory,\n title,\n xAxisLabel,\n yAxisLabel,\n ...forwardedProps\n } = props;\n const theme = useTheme();\n\n // Get overriden labels and texts.\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel, resetLabel } = {\n resetLabel: 'Reset',\n ...localeText,\n };\n\n // Get charts dimensions based on the selected size.\n const chartDimensions = sizeToDimension(size!);\n\n // Get ndx from context or initialize it.\n const { dispatch, state, data } = useContext(DashboardContext);\n const { tableFilters } = state;\n\n // Set color scheme.\n const colorScale = useColor({\n data: propsData ?? data,\n colorTheme: colorTheme!,\n category: stackedCategory ?? '',\n theme,\n });\n\n const ndx = CrossfilterRegistry.get(propsData ? propsData : data);\n\n // useEffect called only once to initialize the chart.\n useEffect(() => {\n if (chartRef.current) {\n dcconfig.defaultColors(scheme.default);\n const parseTime = d3utcParse(dateTimeFormat!);\n const barChart = dcbarChart(chartRef.current as any);\n const dataset = ndx.all();\n\n // Get time methods based on props\n const { group, round, x, xUnits } = parseDateTimeGroup(dataset as JSONArray, dateTimeGroup, dateTimeFieldName);\n\n // Compute dimension and group.\n const computedDimension = ndx.dimension((d: JSONArray) => parseTime(dimension(d) as string) as Date);\n const timeGroup = computedDimension.group(group);\n\n // Initialize the chart.\n barChart\n .width(chartDimensions.width)\n .height(chartDimensions.height - (areXLabelsRotated ? 30 : 0))\n .dimension(computedDimension)\n .x(x)\n .xUnits(xUnits as dcUnitFunction)\n .round(round)\n .centerBar(true)\n .alwaysUseRounding(true)\n .renderHorizontalGridLines(true)\n .margins({\n left: chartDimensions.marginLeft! + (yAxisLabel ? 24 : 0),\n top: chartDimensions.marginTop!,\n right: chartDimensions.marginRight!,\n bottom: chartDimensions.marginBottom!,\n })\n .barPadding(0.2);\n\n barChart.yAxis().ticks(5);\n\n // Add label to axis.\n if (xAxisLabel) {\n barChart.xAxisLabel(xAxisLabel);\n }\n if (yAxisLabel) {\n barChart.yAxisLabel(yAxisLabel);\n }\n\n // Rotate labels and reset the height, if asked for.\n if (areXLabelsRotated) {\n barChart.on('pretransition', (rowChart) => {\n barChart\n .select('.axis')\n .attr('text-anchor', 'end')\n .selectAll('text')\n .attr('transform', 'translate(-6,5) rotate(-45)');\n rowChart.select('svg').attr('height', chartDimensions.height);\n });\n }\n\n // Set group whether the chart is stacked or not.\n if (!stackedCategory) {\n barChart.group(timeGroup).colors(colorScale as any);\n } else if (dataset.length) {\n if (!Array.isArray(dataset[0][stackedCategory])) {\n const categories = dataset.reduce((acc: string[], curr: JSONObject) => {\n if (acc.indexOf(curr[stackedCategory] as string) === -1) {\n acc.push(curr[stackedCategory] as string);\n }\n return acc;\n }, []);\n const stackedTimeGroup = timeGroup.reduce(\n (p, v) => {\n (p as JSONObject)[v[stackedCategory]] = (((p as JSONObject)[v[stackedCategory]] as number) || 0) + 1;\n return p;\n },\n (p, v) => {\n (p as JSONObject)[v[stackedCategory]] = (((p as JSONObject)[v[stackedCategory]] as number) || 0) - 1;\n return p;\n },\n () => ({})\n );\n barChart\n .group(\n stackedTimeGroup,\n categories[0], // @ts-expect-error\n (\n (cat) => (d: { key: Date; value: { [key: string]: number } }) =>\n d.value[cat]\n )(categories[0])\n )\n .colors(colorScale as any);\n for (var i = 1; i < categories.length; ++i) {\n barChart.stack(\n stackedTimeGroup,\n categories[i],\n (\n (cat) => (d) =>\n d.value[cat]\n )(categories[i])\n );\n }\n } else {\n const categories = dataset.reduce((acc: string[], curr: JSONObject) => {\n (curr[stackedCategory] as string[]).forEach((val: string) => {\n if (acc.indexOf(val) === -1) {\n acc.push(val);\n }\n });\n return acc;\n }, []);\n const stackedTimeGroup = timeGroup.reduce(\n (p, v) => {\n v[stackedCategory].forEach((val: string) => {\n (p as JSONObject)[val] = (((p as JSONObject)[val] as number) || 0) + 1;\n });\n return p;\n },\n (p, v) => {\n v[stackedCategory].forEach((val: string) => {\n (p as JSONObject)[val] = (((p as JSONObject)[val] as number) || 0) - 1;\n });\n return p;\n },\n () => ({})\n );\n barChart\n .group(\n stackedTimeGroup,\n categories[0], // @ts-expect-error\n (\n (cat) => (d: { key: Date; value: { [key: string]: number } }) =>\n d.value[cat]\n )(categories[0])\n )\n .colors(colorScale as any);\n for (var i = 1; i < categories.length; ++i) {\n barChart.stack(\n stackedTimeGroup,\n categories[i],\n (\n (cat) => (d: { key: Date; value: { [key: string]: number } }) =>\n d.value[cat]\n )(categories[i])\n );\n }\n }\n }\n\n // Dispatch filters to datagrid when a value is selected or unselected.\n const formatTime = d3timeFormat('%Y-%m-%dT%H:%M');\n barChart.on('filtered', () => {\n if (columnToFilter) {\n const dateArray = barChart.filters()?.[0];\n if (Array.isArray(dateArray) && dateArray.length === 2) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTableBatch,\n filter: [\n {\n id: `${barChart.anchorName()}-start`,\n columnField: columnToFilter,\n operatorValue: 'after',\n value: formatTime(dateArray[0]),\n },\n {\n id: `${barChart.anchorName()}-end`,\n columnField: columnToFilter,\n operatorValue: 'onOrBefore',\n value: formatTime(dateArray[1]),\n },\n ],\n });\n }\n }\n\n onFilter?.(barChart.filters(), ndx.allFiltered());\n });\n\n // Render the chart.\n barChart.render();\n\n // Store chart for further use.\n setChart(barChart);\n }\n }, [propsData, data]);\n\n // Filter chart if context is updated by an external component.\n const filterStart = tableFilters.find(\n (filter) => filter.columnField === columnToFilter && filter.operatorValue === 'after'\n );\n const filterEnd = tableFilters.find(\n (filter) => filter.columnField === columnToFilter && filter.operatorValue === 'onOrBefore'\n );\n useEffect(() => {\n if (chart && filterStart && filterEnd && filterStart.value && filterEnd.value) {\n const chartFiltersObj = chart.filters();\n const chartFilters = chartFiltersObj?.[0];\n const chartFilterStart = chartFilters?.[0];\n const chartFilterEnd = chartFilters?.[1];\n if (chartFilterStart !== d3isoParse(filterStart.value) && chartFilterEnd !== d3isoParse(filterEnd.value)) {\n chart.filter(null);\n chart.filter(\n dcfilters.RangedFilter(\n d3isoParse(filterStart.value)?.getTime() || 0,\n d3isoParse(filterEnd.value)?.getTime() || 0\n )\n );\n dcredrawAll();\n }\n }\n }, [filterStart?.value, filterEnd?.value]);\n\n return (\n <StyledTimeSeriesBarChart\n {...forwardedProps}\n className={classNames(TimeSeriesBarChart.className, className)}\n ref={containerRef as RefObject<HTMLDivElement>}\n $theme={theme}\n >\n <StyledTimeSeriesBarChartTitle\n className={`${TimeSeriesBarChart.className}__title`}\n alignItems=\"center\"\n $theme={theme}\n >\n {title ? <div id={`id${id}__title`}>{title}</div> : null}\n {chart && isResetable ? (\n <Button\n variant=\"unstyled\"\n onClick={() => {\n chart.filter(null);\n dcredrawAll();\n\n if (columnToFilter) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${chart.anchorName()}-start`,\n columnField: columnToFilter,\n operatorValue: 'after',\n } as GridFilterItem,\n });\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${chart.anchorName()}-end`,\n columnField: columnToFilter,\n operatorValue: 'onOrBefore',\n } as GridFilterItem,\n });\n }\n }}\n >\n {resetLabel}\n </Button>\n ) : null}\n </StyledTimeSeriesBarChartTitle>\n\n <StyledTimeSeriesBarChartContainer\n className={`${TimeSeriesBarChart.className}__container`}\n $isEmpty={ndx.all().length === 0}\n >\n <div\n className={`${TimeSeriesBarChart.className}-container__chart`}\n ref={chartRef as RefObject<HTMLDivElement>}\n />\n {ndx.all().length === 0 ? (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={() => {\n dcfilterAll();\n dcredrawAll();\n dispatch?.({\n type: DashboardReducerActionType.ResetFilters,\n });\n }}\n />\n ) : null}\n </StyledTimeSeriesBarChartContainer>\n\n {caption ? (\n <StyledTimeSeriesBarChartCaption\n className={`${TimeSeriesBarChart.className}__caption`}\n id={`id${id}__caption`}\n $theme={theme}\n >\n {caption}\n </StyledTimeSeriesBarChartCaption>\n ) : null}\n </StyledTimeSeriesBarChart>\n );\n});\nTimeSeriesBarChart.className = CLASSNAME;\nTimeSeriesBarChart.displayName = COMPONENT_NAME;\n","import { BaseMixin } from 'dc';\nimport { useRef, KeyboardEvent, useMemo, MutableRefObject } from 'react';\nimport { Group } from '../types';\n\ntype UseCategoricalChartAsListboxProps = <T extends BaseMixin<T>>(props: {\n id: string;\n ref: MutableRefObject<HTMLDivElement>;\n type: 'bar' | 'slice';\n ndxGroup?: Group;\n orientation?: 'horizontal' | 'vertical';\n}) => void;\n\n/**\n * Hook to give to a chart the roles, events and attributes of a listbox.\n */\nexport const useCategoricalChartAsListbox: UseCategoricalChartAsListboxProps =\n ({ id, ref, type, ndxGroup, orientation = 'horizontal' }) => {\n const currentIndexRef = useRef(0);\n\n const props = useMemo(() => {\n const numberOfGroups = ndxGroup\n ?.all()\n .filter((datum) => datum.value).length;\n if (ref && numberOfGroups) {\n const getCurrentOption = () =>\n ref.current.querySelector(\n `._${currentIndexRef.current}`\n ) as HTMLElement;\n\n const next = () => {\n getCurrentOption().classList.remove('focused');\n const index =\n currentIndexRef.current === numberOfGroups - 1\n ? 0\n : currentIndexRef.current + 1;\n currentIndexRef.current = index;\n ref.current.setAttribute(\n 'aria-activedescendant',\n `id${id}__${type}-${currentIndexRef.current}`\n );\n getCurrentOption().classList.add('focused');\n };\n\n const previous = () => {\n getCurrentOption().classList.remove('focused');\n const index =\n currentIndexRef.current === 0\n ? numberOfGroups - 1\n : currentIndexRef.current - 1;\n currentIndexRef.current = index;\n ref.current.setAttribute(\n 'aria-activedescendant',\n `id${id}__${type}-${currentIndexRef.current}`\n );\n getCurrentOption().classList.add('focused');\n };\n\n const focus = () => {\n ref.current.setAttribute(\n 'aria-activedescendant',\n `id${id}__${type}-0`\n );\n getCurrentOption().classList.add('focused');\n };\n\n const blur = () => {\n getCurrentOption().classList.remove('focused');\n currentIndexRef.current = 0;\n ref.current.setAttribute('aria-activedescendant', '');\n };\n\n const keydown = (e: Event) => {\n e.stopPropagation();\n\n switch ((e as unknown as KeyboardEvent).code) {\n case 'ArrowRight':\n if (orientation === 'horizontal') {\n e.preventDefault();\n next();\n }\n break;\n case 'ArrowLeft':\n if (orientation === 'horizontal') {\n e.preventDefault();\n previous();\n }\n break;\n case 'ArrowDown':\n if (orientation === 'vertical') {\n e.preventDefault();\n next();\n }\n break;\n case 'ArrowUp':\n if (orientation === 'vertical') {\n e.preventDefault();\n previous();\n }\n break;\n case 'Enter':\n case 'Space':\n e.preventDefault();\n getCurrentOption().dispatchEvent(new Event('click'));\n break;\n default:\n break;\n }\n };\n\n return {\n 'aria-activedescendant': '',\n 'aria-multiselectable': 'true',\n 'aria-orientation': orientation,\n role: 'listbox',\n tabIndex: 0,\n onFocus: focus,\n onBlur: blur,\n onMouseDown: (event: MouseEvent) => event.preventDefault(),\n onMouseLeave: blur,\n onKeyDown: keydown,\n };\n }\n }, [\n ref,\n ref.current,\n ndxGroup,\n JSON.parse(JSON.stringify(ndxGroup?.all() || '')),\n ]);\n\n return props;\n };\n","import { GridFilterItem } from '@redsift/table';\nimport { BarDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement, useRef, MutableRefObject } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ChartsWithFiltersProps } from './types';\nimport { useCategoricalChartAsListbox } from '@redsift/dashboard/hooks/useCategoricalChartAsListbox';\nimport { useId } from '@redsift/design-system';\n\nexport const FilterableBarChart: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n const ref = useRef<HTMLDivElement>();\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [filters, setFilters] = useState<string[]>([]);\n\n const handleFilter = (category: string) => {\n let newFilters: string[];\n if (filters.includes(category)) {\n newFilters = filters.filter((f) => f !== category);\n } else {\n newFilters = [...filters, category];\n }\n\n setFilters(newFilters);\n if (newFilters.length) {\n ndxDimension!.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: id,\n columnField: datagridCategoryDimFilter.field,\n operatorValue: datagridCategoryDimFilter.operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = () => {\n setFilters([]);\n ndxDimension!.filterAll();\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: id,\n columnField: datagridCategoryDimFilter.field,\n operatorValue: datagridCategoryDimFilter.operator,\n } as GridFilterItem,\n });\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n useEffect(() => {\n if (!datagridCategoryDimFilter) {\n return;\n }\n\n const updatedFilters = tableFilters.find(\n (filter) =>\n filter.columnField === datagridCategoryDimFilter.field &&\n filter.operatorValue === datagridCategoryDimFilter.operator\n )?.value;\n if (updatedFilters && updatedFilters !== filters && ndxDimension) {\n setFilters(updatedFilters);\n if (updatedFilters.length) {\n ndxDimension!.filter((d) => updatedFilters.includes(d));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n }\n }, [tableFilters]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const chartProps = useCategoricalChartAsListbox({\n id,\n ref: ref as MutableRefObject<HTMLDivElement>,\n type: 'bar',\n ndxGroup,\n orientation: 'vertical',\n });\n\n const filterProps = {\n barProps: {\n tabIndex: -1,\n },\n barRole: 'option',\n role: 'listbox',\n chartProps: chartProps,\n chartRef: ref,\n data: ndxGroup ? JSON.parse(JSON.stringify(ndxGroup.all())) : undefined,\n emptyComponent,\n id,\n isBarSelected: (datum: BarDatum) => {\n return (\n filters.length === 0 ||\n filters.includes(Array.isArray(datum.data.key) ? (datum.data.key[1] as string) : (datum.data.key as string))\n );\n },\n onBarClick: (datum: BarDatum) => {\n handleFilter(Array.isArray(datum.data.key) ? (datum.data.key[1] as string) : (datum.data.key as string));\n },\n onReset: isResetable ? resetFilters : undefined,\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import { GridFilterModel } from '@redsift/table';\nimport React, { useContext, isValidElement, useState, useEffect } from 'react';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { WithFiltersProps } from './types';\n\nexport const FilterableDataGrid: React.FC<WithFiltersProps> = (props) => {\n const { children, onFilter } = props;\n\n const { state, data, dispatch, dataGridApiRef } =\n useContext(DashboardContext);\n const { tableFilters } = state;\n\n const [filterModel, setFilterModel] = useState<GridFilterModel>();\n useEffect(() => {\n setFilterModel({\n ...filterModel,\n items: tableFilters,\n });\n }, [tableFilters]);\n\n const updateChartFilters = (filterModel: GridFilterModel) => {\n dispatch?.({\n type: DashboardReducerActionType.FilterTableBatch,\n filter: filterModel.items,\n });\n };\n\n if (isValidElement(children)) {\n const filterProps = {\n apiRef: children.props.apiRef ?? dataGridApiRef,\n rows: data || [],\n filterModel,\n onFilterModelChange: (filterModel: GridFilterModel) => {\n if (onFilter) {\n onFilter(filterModel);\n }\n updateChartFilters(filterModel);\n },\n };\n\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import { GridFilterItem } from '@redsift/table';\nimport { ArcDatum, LegendItemDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement, useRef, MutableRefObject } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ChartsWithFiltersProps } from './types';\nimport { useCategoricalChartAsListbox } from '@redsift/dashboard/hooks/useCategoricalChartAsListbox';\nimport { useId } from '@redsift/design-system';\n\nexport const FilterablePieChart: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n const ref = useRef<HTMLDivElement>();\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [filters, setFilters] = useState<string[]>([]);\n\n const handleFilter = (category: string) => {\n let newFilters: string[];\n if (filters.includes(category)) {\n newFilters = filters.filter((f) => f !== category);\n } else {\n newFilters = [...filters, category];\n }\n\n setFilters(newFilters);\n if (newFilters.length) {\n ndxDimension!.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: id,\n columnField: datagridCategoryDimFilter.field,\n operatorValue: datagridCategoryDimFilter.operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = () => {\n setFilters([]);\n ndxDimension!.filterAll();\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: id,\n columnField: datagridCategoryDimFilter.field,\n operatorValue: datagridCategoryDimFilter.operator,\n } as GridFilterItem,\n });\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n const updatedFilters = datagridCategoryDimFilter\n ? tableFilters.find(\n (filter) =>\n filter.columnField === datagridCategoryDimFilter.field &&\n filter.operatorValue === datagridCategoryDimFilter.operator\n )?.value\n : null;\n useEffect(() => {\n if (updatedFilters && updatedFilters !== filters && ndxDimension) {\n setFilters(updatedFilters);\n if (updatedFilters.length) {\n ndxDimension!.filter((d) => updatedFilters.includes(d));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n }\n }, [updatedFilters]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const chartProps = useCategoricalChartAsListbox({\n id,\n ref: ref as MutableRefObject<HTMLDivElement>,\n type: 'bar',\n ndxGroup,\n orientation: 'horizontal',\n });\n\n const legendProps = {\n onLegendItemClick: (datum: LegendItemDatum) => {\n handleFilter(datum.data.key);\n },\n isLegendItemSelected: (datum: LegendItemDatum) => {\n return filters.length === 0 || filters.includes(datum.data.key);\n },\n legendItemRole: 'option',\n role: 'group',\n };\n\n const filterProps = {\n sliceProps: {\n tabIndex: -1,\n },\n sliceRole: 'option',\n role: 'listbox',\n chartProps,\n legendProps,\n chartRef: ref,\n data: ndxGroup ? JSON.parse(JSON.stringify(ndxGroup.all())) : undefined,\n emptyComponent,\n id,\n isSliceSelected: (datum: ArcDatum) => {\n return filters.length === 0 || filters.includes(datum.data.key);\n },\n onSliceClick: (datum: ArcDatum) => {\n handleFilter(datum.data.key);\n },\n onReset: isResetable ? resetFilters : undefined,\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import { DotDatum, LegendItemDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ScaleLinear as d3ScaleLinear } from 'd3';\nimport { ChartsWithFiltersProps } from './types';\nimport { useId } from '@redsift/design-system';\n\ntype BrushFilter = {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n};\n\nconst filter = (legendFilters?: string[], brushFilters?: BrushFilter) => (d: [number, number, string]) => {\n if (legendFilters && legendFilters.length && brushFilters) {\n return (\n d[0] >= brushFilters.minX &&\n d[0] <= brushFilters.maxX &&\n d[1] >= brushFilters.minY &&\n d[1] <= brushFilters.maxY &&\n legendFilters.includes(d[2])\n );\n } else if (legendFilters && legendFilters.length) {\n return legendFilters.includes(d[2]);\n } else if (brushFilters) {\n return (\n d[0] >= brushFilters.minX && d[0] <= brushFilters.maxX && d[1] >= brushFilters.minY && d[1] <= brushFilters.maxY\n );\n } else {\n return true;\n }\n};\n\nconst isFiltered = (legendFilters?: string[], brushFilters?: BrushFilter) => (datum: DotDatum) => {\n if (legendFilters && legendFilters.length && brushFilters) {\n return (\n (datum.data.key[0] as number) >= brushFilters.minX &&\n (datum.data.key[0] as number) <= brushFilters.maxX &&\n (datum.data.key[1] as number) >= brushFilters.minY &&\n (datum.data.key[1] as number) <= brushFilters.maxY &&\n legendFilters.includes(datum.data.key[2] as string)\n );\n } else if (legendFilters && legendFilters.length) {\n return legendFilters.includes(datum.data.key[2] as string);\n } else if (brushFilters) {\n return (\n (datum.data.key[0] as number) >= brushFilters.minX &&\n (datum.data.key[0] as number) <= brushFilters.maxX &&\n (datum.data.key[1] as number) >= brushFilters.minY &&\n (datum.data.key[1] as number) <= brushFilters.maxY\n );\n } else {\n return true;\n }\n};\n\nexport const FilterableScatterPlot: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCoordinatesCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n // state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [brushFilters, setBrushFilters] = useState<BrushFilter>();\n const [legendFilters, setLegendFilters] = useState<string[]>([]);\n\n const handleBrushFilter = (newFilters: BrushFilter) => {\n setBrushFilters(newFilters);\n ndxDimension!.filter((d) => filter(legendFilters, newFilters)(d as unknown as [number, number, string]));\n toggleUpdateContext?.();\n\n if (datagridCoordinatesCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: `${id}-x`,\n columnField: datagridCoordinatesCategoryDimFilter[0].field,\n operatorValue: datagridCoordinatesCategoryDimFilter[0].operator,\n value: [newFilters.minX, newFilters.maxX],\n },\n });\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: `${id}-y`,\n columnField: datagridCoordinatesCategoryDimFilter[1].field,\n operatorValue: datagridCoordinatesCategoryDimFilter[1].operator,\n value: [newFilters.minY, newFilters.maxY],\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const handleLegendFilter = (category: string) => {\n let newFilters: string[];\n if (legendFilters.includes(category)) {\n newFilters = legendFilters.filter((f) => f !== category);\n } else {\n newFilters = [...legendFilters, category];\n }\n\n setLegendFilters(newFilters);\n ndxDimension!.filter((d) => filter(newFilters, brushFilters)(d as unknown as [number, number, string]));\n toggleUpdateContext?.();\n\n if (datagridCoordinatesCategoryDimFilter?.length === 3) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: `${id}-category`,\n columnField: datagridCoordinatesCategoryDimFilter[2].field,\n operatorValue: datagridCoordinatesCategoryDimFilter[2].operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = (brush = true, legend = true) => {\n if (brush) {\n setBrushFilters(undefined);\n }\n if (legend) {\n setLegendFilters([]);\n }\n ndxDimension!.filter((d) =>\n filter(legend ? [] : legendFilters, brush ? undefined : brushFilters)(d as unknown as [number, number, string])\n );\n toggleUpdateContext?.();\n\n if (datagridCoordinatesCategoryDimFilter) {\n if (brush) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${id}-x`,\n columnField: datagridCoordinatesCategoryDimFilter[0].field,\n operatorValue: datagridCoordinatesCategoryDimFilter[0].operator,\n },\n });\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${id}-y`,\n columnField: datagridCoordinatesCategoryDimFilter[1].field,\n operatorValue: datagridCoordinatesCategoryDimFilter[1].operator,\n },\n });\n }\n if (legend && datagridCoordinatesCategoryDimFilter.length === 3) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${id}-category`,\n columnField: datagridCoordinatesCategoryDimFilter[2].field,\n operatorValue: datagridCoordinatesCategoryDimFilter[2].operator,\n },\n });\n }\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n // useEffect(() => {\n // if (!datagridCoordinatesCategoryDimFilter) {\n // return;\n // }\n\n // const updatedXFilters = tableFilters.find(\n // (filter) =>\n // filter.columnField === datagridCoordinatesCategoryDimFilter[0].field &&\n // filter.operatorValue ===\n // datagridCoordinatesCategoryDimFilter[0].operator\n // )?.value;\n // const updatedYFilters = tableFilters.find(\n // (filter) =>\n // filter.columnField === datagridCoordinatesCategoryDimFilter[1].field &&\n // filter.operatorValue ===\n // datagridCoordinatesCategoryDimFilter[1].operator\n // )?.value;\n // console.log(updatedXFilters, updatedYFilters, brushFilters);\n // const updatedFilters = {\n // minX: Number(updatedXFilters[0]),\n // maxX: Number(updatedXFilters[0]),\n // minY: Number(updatedYFilters[1]),\n // maxY: Number(updatedYFilters[1]),\n // }\n // if (updatedFilters && JSON.stringify(updatedFilters) !== JSON.stringify(brushFilters)) {\n // }\n // }, [tableFilters]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const legendProps = {\n onLegendItemClick: (datum: LegendItemDatum) => {\n handleLegendFilter(datum.data.key);\n },\n isLegendItemSelected: (datum: LegendItemDatum) => {\n return legendFilters.length === 0 || legendFilters.includes(datum.data.key);\n },\n legendItemRole: 'option',\n role: 'group',\n };\n\n const filterProps = {\n isBrushable: true,\n data: ndxGroup ? JSON.parse(JSON.stringify(ndxGroup.all())) : undefined,\n dotRole: 'option',\n role: 'listbox',\n emptyComponent,\n id,\n legendProps,\n onBrush: (\n selection: [[number, number], [number, number]],\n scaleX: d3ScaleLinear<number, number>,\n scaleY: d3ScaleLinear<number, number>\n ) => {\n if (selection) {\n setBrushFilters({\n minX: scaleX.invert(selection[0][0]),\n minY: scaleY.invert(selection[1][1]),\n maxX: scaleX.invert(selection[1][0]),\n maxY: scaleY.invert(selection[0][1]),\n });\n }\n },\n onBrushEnd: (\n selection: [[number, number], [number, number]],\n scaleX?: d3ScaleLinear<number, number>,\n scaleY?: d3ScaleLinear<number, number>\n ) => {\n if (selection && scaleX && scaleY) {\n handleBrushFilter({\n minX: scaleX.invert(selection[0][0]),\n minY: scaleY.invert(selection[1][1]),\n maxX: scaleX.invert(selection[1][0]),\n maxY: scaleY.invert(selection[0][1]),\n });\n } else {\n resetFilters(true, false);\n }\n },\n onReset: isResetable ? resetFilters : undefined,\n isDotSelected: (datum: DotDatum) => isFiltered(legendFilters, brushFilters)(datum),\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import React from 'react';\nimport { isComponent } from '@redsift/design-system';\nimport { FilterableBarChart } from './FilterableBarChart';\nimport { FilterableDataGrid } from './FilterableDataGrid';\nimport { FilterablePieChart } from './FilterablePieChart';\nimport { FilterableScatterPlot } from './FilterableScatterPlot';\nimport { WithFiltersProps } from './types';\n\nexport const WithFilters: React.FC<WithFiltersProps> = (props) => {\n if (isComponent('DataGrid')(props.children)) {\n return <FilterableDataGrid {...props} />;\n }\n\n const { dimension } = props;\n\n if (!dimension) {\n return null;\n }\n\n if (isComponent('BarChart')(props.children)) {\n return <FilterableBarChart {...props} dimension={dimension} />;\n } else if (isComponent('PieChart')(props.children)) {\n return <FilterablePieChart {...props} dimension={dimension} />;\n } else if (isComponent('ScatterPlot')(props.children)) {\n return <FilterableScatterPlot {...props} dimension={dimension} />;\n }\n\n return React.isValidElement(props.children) ? props.children : null;\n};\n"],"names":["groupReduceCount","d","group","reduceCount","COUNT","groupReduceSum","field","reduceSum","SUM","StyledChartEmptyState","styled","div","StyledResetButton","Button","COMPONENT_NAME","CLASSNAME","ChartEmptyState","forwardRef","props","ref","onReset","title","subtitle","resetLabel","React","createElement","className","width","height","viewBox","fill","xmlns","opacity","x1","y1","x2","y2","stroke","strokeLinecap","cx","cy","r","transform","strokeWidth","variant","leftIcon","mdiRefresh","onClick","displayName","initialState","tableFilters","DashboardContext","createContext","state","DashboardReducerActionType","areEquals","tableFilter","actionFilter","columnField","operatorValue","addOrUpdateFilter","oldFilters","newFilter","find","f","map","addOrUpdateFilters","newFilters","updatedFilters","i","length","replaceFilters","Array","isArray","removeFilter","filter","removeAllFilters","DashboardReducer","action","type","ResetFilter","_objectSpread","ResetFilters","FilterTable","FilterTableBatch","AppendFilterTableBatch","CrossfilterRegistry","instances","WeakMap","get","data","instance","crossfilter","set","remove","delete","Dashboard","children","dataGridApiRef","propsDataGridApiRef","forwardedProps","_objectWithoutProperties","_excluded","providerRef","useRef","useGridApiRef","updateContext","setUpdateContext","useState","dispatch","useReducer","value","useMemo","dashboardRef","ndx","toggleUpdateContext","_extends","classNames","Provider","BACKGROUND_COLOR","GREY_1","GREY_2","getPdfStyles","primaryColor","Font","register","family","fonts","src","fontWeight","StyleSheet","create","page","borderTopStyle","borderTopWidth","borderTopColor","borderBottomStyle","borderBottomWidth","borderBottomColor","backgroundColor","paddingTop","paddingBottom","logoContainer","margin","alignItems","logo","introductionContainer","lineHeight","textAlign","marginHorizontal","marginVertical","introductionText","fontSize","fontFamily","color","pageNumber","position","bottom","right","left","pageContinue","top","tableContainer","paddingLeft","borderRightWidth","borderRightColor","tableRowContainer","flexDirection","marginLeft","marginRight","tableHeaderContainer","marginBottom","tableCellHeaderText","overflow","tableCellText","dashboardImageContainer","marginTop","constraintsContainer","paddingVertical","constraints","DEFAULT_COLUMN_WIDTH","getWidthColumn","totalW","nrColumns","Math","round","PdfTableRow","_ref","rowIndex","rowData","columns","styles","totalWidth","View","style","key","column","index","widthColumn","Text","join","PdfTable","_ref2","dataTable","localeText","Fragment","headerName","row","maxSizeDisclaimer","Pagination","_ref3","render","_ref4","totalPages","fixed","PdfDocument","_ref5","dashboardImage","introduction","Document","Page","size","Image","getDashboardImage","componentRef","_componentRef$current","_componentRef$current2","_componentRef$current3","_componentRef$current4","el","classList","contains","dashboardHeight","current","getBoundingClientRect","datagridHeight","getElementsByClassName","Promise","resolve","domToImage","toPng","then","dataUrl","catch","PdfExportButton","propComponentRef","fileName","setComponentRef","isLoading","setIsLoading","useContext","useEffect","exportPdf","Object","keys","gridFilteredSortedRowEntriesSelector","instanceId","slice","model","gridVisibleColumnDefinitionsSelector","gridColumnsTotalWidthSelector","doc","RedsiftColorBlueD1","asPdf","pdf","updateContainer","blob","toBlob","saveAs","e","console","log","isDisabled","Spinner","isColored","TimeSeriesBarChartSize","large","medium","small","TimeSeriesBarChartTheme","ColorTheme","StyledTimeSeriesBarChart","$theme","StyledTimeSeriesBarChartTitle","Flexbox","StyledTimeSeriesBarChartCaption","p","StyledTimeSeriesBarChartContainer","$isEmpty","css","getStartDate","dates","Date","min","Number","getEndDate","max","sizeToDimension","parseDateTimeGroup","dateTimeGroup","dateTimeFieldName","startDate","endDate","g","d3timeHour","x","d3scaleTime","domain","offset","xUnits","d3timeHours","d3timeDay","d3timeDays","d3timeWeek","d3timeWeeks","d3timeYear","d3timeYears","d3timeMonth","d3timeMonths","TimeSeriesBarChart","containerRef","chartRef","id","useId","chart","setChart","areXLabelsRotated","caption","colorTheme","stackedCategory","default","monochrome","columnToFilter","propsData","dateTimeFormat","dimension","isResetable","onFilter","xAxisLabel","yAxisLabel","theme","useTheme","emptyChartTitle","emptyChartSubtitle","emptyChartResetLabel","chartDimensions","colorScale","useColor","category","dcconfig","defaultColors","scheme","parseTime","d3utcParse","barChart","dcbarChart","dataset","all","computedDimension","timeGroup","centerBar","alwaysUseRounding","renderHorizontalGridLines","margins","barPadding","yAxis","ticks","on","rowChart","select","attr","selectAll","colors","categories","reduce","acc","curr","indexOf","push","stackedTimeGroup","v","cat","stack","forEach","val","formatTime","d3timeFormat","_barChart$filters","dateArray","filters","anchorName","allFiltered","filterStart","filterEnd","chartFiltersObj","chartFilters","chartFilterStart","chartFilterEnd","d3isoParse","_d3isoParse","_d3isoParse2","dcfilters","RangedFilter","getTime","dcredrawAll","dcfilterAll","useCategoricalChartAsListbox","ndxGroup","orientation","currentIndexRef","numberOfGroups","datum","getCurrentOption","querySelector","next","setAttribute","add","previous","focus","blur","keydown","stopPropagation","code","preventDefault","dispatchEvent","Event","role","tabIndex","onFocus","onBlur","onMouseDown","event","onMouseLeave","onKeyDown","JSON","parse","stringify","FilterableBarChart","datagridCategoryDimFilter","propsId","isDimensionArray","_id","ndxDimension","setNdxDimension","setNdxGroup","computedNdxDimension","computedNdxGroup","cleanup","filterAll","setFilters","handleFilter","includes","operator","resetFilters","_tableFilters$find","emptyComponent","chartProps","filterProps","barProps","barRole","undefined","isBarSelected","onBarClick","isValidElement","cloneElement","FilterableDataGrid","filterModel","setFilterModel","items","updateChartFilters","_children$props$apiRe","apiRef","rows","onFilterModelChange","FilterablePieChart","legendProps","onLegendItemClick","isLegendItemSelected","legendItemRole","sliceProps","sliceRole","isSliceSelected","onSliceClick","legendFilters","brushFilters","minX","maxX","minY","maxY","isFiltered","FilterableScatterPlot","datagridCoordinatesCategoryDimFilter","setBrushFilters","setLegendFilters","handleBrushFilter","handleLegendFilter","brush","arguments","legend","isBrushable","dotRole","onBrush","selection","scaleX","scaleY","invert","onBrushEnd","isDotSelected","WithFilters","isComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/utils/groupReducers/groupReduceCount.ts","../src/utils/groupReducers/groupReduceSum.ts","../src/components/ChartEmptyState/styles.ts","../src/components/ChartEmptyState/ChartEmptyState.tsx","../src/components/Dashboard/context.ts","../src/components/Dashboard/types.ts","../src/components/Dashboard/reducer.ts","../src/components/CrossfilterRegistry/CrossfilterRegistry.ts","../src/components/Dashboard/Dashboard.tsx","../src/components/PdfExportButton/styles.ts","../src/components/PdfExportButton/PdfDocument.tsx","../src/components/PdfExportButton/PdfExportButton.tsx","../src/components/TimeSeriesBarChart/types.ts","../src/components/TimeSeriesBarChart/styles.ts","../src/components/TimeSeriesBarChart/TimeSeriesBarChart.tsx","../src/hooks/useCategoricalChartAsListbox.ts","../src/components/WithFilters/FilterableBarChart.tsx","../src/components/WithFilters/FilterableDataGrid.tsx","../src/components/WithFilters/FilterablePieChart.tsx","../src/components/WithFilters/FilterableScatterPlot.tsx","../src/components/WithFilters/WithFilters.tsx"],"sourcesContent":["import { Dimension } from '../../types';\n\nconst groupReduceCount = (d: Dimension) => d.group().reduceCount();\n\nexport const COUNT = groupReduceCount;\n","import { Dimension } from '../../types';\n\nexport const groupReduceSum = (field: string) => (d: Dimension) =>\n d.group().reduceSum((d) => d[field]);\n\nexport const SUM = groupReduceSum;\n","import styled from 'styled-components';\nimport { Button } from '@redsift/design-system';\n\n/**\n * Component style.\n */\nexport const StyledChartEmptyState = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n margin-top: 16px;\n\n .redsift-chart-empty-state__title {\n font-family: var(--redsift-typography-h4-font-family);\n font-size: var(--redsift-typography-h4-font-size);\n font-weight: var(--redsift-typography-h4-font-weight);\n line-height: var(--redsift-typography-h4-line-height);\n }\n\n .redsift-chart-empty-state__subtitle {\n font-family: var(--redsift-typography-body-font-family);\n font-size: var(--redsift-typography-body-font-size);\n font-weight: var(--redsift-typography-body-font-weight);\n line-height: var(--redsift-typography-body-line-height);\n margin-top: 8px;\n text-align: center;\n }\n`;\n\nexport const StyledResetButton = styled(Button)`\n margin-top: 8px;\n`;\n","import React, { forwardRef, RefObject } from 'react';\nimport { mdiRefresh } from '@redsift/icons';\nimport { Comp } from '@redsift/design-system';\n\nimport { ChartEmptyStateProps } from './types';\nimport { StyledChartEmptyState, StyledResetButton } from './styles';\n\nconst COMPONENT_NAME = 'ChartEmptyState';\nconst CLASSNAME = 'redsift-chart-empty-state';\n\nexport const ChartEmptyState: Comp<ChartEmptyStateProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n onReset,\n title = 'No Data Available',\n subtitle = 'Please check the applied filters',\n resetLabel = 'Reset all filters',\n } = props;\n\n return (\n <StyledChartEmptyState ref={ref as RefObject<HTMLDivElement>} className=\"redsift-chart-empty-state\">\n <div className={`${ChartEmptyState.className}__img`}>\n <svg width=\"86\" height=\"86\" viewBox=\"0 0 86 86\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n opacity=\"0.2\"\n d=\"M43 86C66.7482 86 86 66.7482 86 43C86 19.2518 66.7482 0 43 0C19.2518 0 0 19.2518 0 43C0 66.7482 19.2518 86 43 86Z\"\n fill=\"#4285F4\"\n />\n <path\n opacity=\"0.4\"\n d=\"M13.4479 45.9299C13.4479 44.8254 14.3434 43.9299 15.4479 43.9299H29.3785C30.4831 43.9299 31.3785 44.8254 31.3785 45.9299V60.0675H13.4479V45.9299Z\"\n fill=\"#4285F4\"\n />\n <path\n opacity=\"0.4\"\n d=\"M34.0681 27.9993C34.0681 26.8948 34.9636 25.9993 36.0681 25.9993H49.9987C51.1033 25.9993 51.9987 26.8948 51.9987 27.9993V60.0675H34.0681V27.9993Z\"\n fill=\"#4285F4\"\n />\n <path\n opacity=\"0.4\"\n d=\"M54.6883 53.1022C54.6883 51.9976 55.5837 51.1022 56.6883 51.1022H70.6189C71.7235 51.1022 72.6189 51.9976 72.6189 53.1022V60.0675H54.6883V53.1022Z\"\n fill=\"#4285F4\"\n />\n <line x1=\"10.3618\" y1=\"60.464\" x2=\"75.705\" y2=\"60.464\" stroke=\"#305AA2\" strokeLinecap=\"round\" />\n <path d=\"M48.7345 25.9993H46.9414L51.9987 28.9192V27.8839L48.7345 25.9993Z\" fill=\"#4285F4\" />\n <path d=\"M41.5622 25.9993L51.9987 32.0249V30.9896L43.3553 25.9993H41.5622Z\" fill=\"#4285F4\" />\n <path d=\"M36.183 25.9993L51.9987 35.1305V34.0953L37.9761 25.9993H36.183Z\" fill=\"#4285F4\" />\n <path\n d=\"M34.0771 27.622C34.0681 27.6758 34.0681 27.7296 34.0681 27.7924V27.8839L51.9987 38.2362V37.201L34.281 26.9716C34.1776 27.171 34.097 27.3834 34.0771 27.622Z\"\n fill=\"#4285F4\"\n />\n <path d=\"M34.0681 30.9896L51.9987 41.3418V40.3066L34.0681 29.9544V30.9896Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 34.0953L51.9987 44.4475V43.4123L34.0681 33.06V34.0953Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 37.2009L51.9987 47.5531V46.518L34.0681 36.1657V37.2009Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 40.3066L51.9987 50.6588V49.6236L34.0681 39.2714V40.3066Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 43.4123L51.9987 53.7645V52.7293L34.0681 42.377V43.4123Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 46.518L51.9987 56.8702V55.835L34.0681 45.4827V46.518Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 49.6236L51.9987 59.9759V58.9407L34.0681 48.5884V49.6236Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 52.7293L46.7782 60.0675H48.5712L34.0681 51.6941V52.7293Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 55.835L41.399 60.0675H43.192L34.0681 54.7997V55.835Z\" fill=\"#4285F4\" />\n <path d=\"M34.0681 58.9406L36.0198 60.0675H37.8129L34.0681 57.9054V58.9406Z\" fill=\"#4285F4\" />\n <circle\n opacity=\"0.6\"\n cx=\"50.5506\"\n cy=\"29.9304\"\n r=\"10.1549\"\n transform=\"rotate(-45 50.5506 29.9304)\"\n fill=\"white\"\n stroke=\"#305AA2\"\n strokeWidth=\"3\"\n />\n <circle\n cx=\"50.5506\"\n cy=\"29.9304\"\n r=\"10.1549\"\n transform=\"rotate(-45 50.5506 29.9304)\"\n stroke=\"#305AA2\"\n strokeWidth=\"3\"\n />\n <path\n d=\"M59.2186 36.4771L58.1579 35.4164L56.0366 37.5377L57.0973 38.5984L59.2186 36.4771ZM65.9725 47.4736C66.5582 48.0594 67.508 48.0594 68.0938 47.4736C68.6796 46.8878 68.6796 45.938 68.0938 45.3522L65.9725 47.4736ZM57.0973 38.5984L65.9725 47.4736L68.0938 45.3522L59.2186 36.4771L57.0973 38.5984Z\"\n fill=\"#305AA2\"\n />\n </svg>\n </div>\n <div className={`${ChartEmptyState.className}__title`}>{title}</div>\n <div className={`${ChartEmptyState.className}__subtitle`}>{subtitle}</div>\n {onReset ? (\n <StyledResetButton variant=\"unstyled\" leftIcon={mdiRefresh} onClick={onReset}>\n {resetLabel}\n </StyledResetButton>\n ) : null}\n </StyledChartEmptyState>\n );\n});\n\nChartEmptyState.className = CLASSNAME;\nChartEmptyState.displayName = COMPONENT_NAME;\n","import React from 'react';\nimport { DashboardContextProps, DashboardReducerState } from './types';\n\nexport const initialState: DashboardReducerState = {\n tableFilters: [],\n};\n\nexport const DashboardContext = React.createContext<DashboardContextProps>({\n state: initialState,\n} as DashboardContextProps);\n","import { ComponentProps, Dispatch, MutableRefObject, RefObject } from 'react';\nimport { GridFilterItem } from '@redsift/table';\nimport { GridApi } from '@mui/x-data-grid-pro';\n\nimport { JSONArray } from '../../types';\n\n/**\n * Context props.\n */\nexport type DashboardContextProps = {\n dashboardRef?: RefObject<HTMLDivElement>;\n data: JSONArray;\n dataGridApiRef?: MutableRefObject<GridApi>;\n dispatch: Dispatch<DashboardReducerAction>;\n state: DashboardReducerState;\n toggleUpdateContext?: () => void;\n};\n\n/**\n * Reducer props.\n */\nexport type DashboardReducerState = {\n tableFilters: GridFilterItem[];\n};\n\nexport enum DashboardReducerActionType {\n ResetFilter = 'reset-filter',\n ResetFilters = 'reset-filters',\n FilterTable = 'filter-table',\n FilterTableBatch = 'filter-table-batch',\n AppendFilterTableBatch = 'append-filter-table-batch',\n}\n\nexport type DashboardReducerAction = {\n type: DashboardReducerActionType;\n filter?: GridFilterItem | GridFilterItem[];\n};\n\n/**\n * Component props.\n */\nexport interface DashboardProps extends ComponentProps<'div'> {\n /** Dataset that will be share across every components within the dashboard. */\n data: JSONArray;\n /** Datagrid API Ref. */\n dataGridApiRef?: MutableRefObject<GridApi>;\n}\n","import { GridFilterItem } from '@redsift/table';\nimport { DashboardReducerState, DashboardReducerAction, DashboardReducerActionType } from './types';\n\nconst areEquals = (tableFilter: GridFilterItem, actionFilter: GridFilterItem) => {\n return tableFilter.field === actionFilter.field && tableFilter.operator === actionFilter.operator;\n};\n\nconst addOrUpdateFilter = (oldFilters: GridFilterItem[], newFilter: GridFilterItem) => {\n if (oldFilters.find((f) => areEquals(f, newFilter))) {\n return oldFilters.map((f) => {\n if (areEquals(f, newFilter)) {\n return newFilter;\n }\n return f;\n });\n } else {\n return [...oldFilters, newFilter];\n }\n};\n\nconst addOrUpdateFilters = (oldFilters: GridFilterItem[], newFilters: GridFilterItem[]) => {\n let updatedFilters = oldFilters;\n for (let i = 0; i < newFilters.length; i++) {\n updatedFilters = addOrUpdateFilter(updatedFilters, newFilters[i]);\n }\n return updatedFilters;\n};\n\nconst replaceFilters = (newFilters: GridFilterItem | GridFilterItem[]) => {\n return Array.isArray(newFilters) ? newFilters : [newFilters];\n};\n\nconst removeFilter = (oldFilters: GridFilterItem[], newFilter: GridFilterItem) => {\n return oldFilters.filter((f) => !areEquals(f, newFilter));\n};\n\nconst removeAllFilters = () => {\n return [] as GridFilterItem[];\n};\n\nexport const DashboardReducer = (\n state: DashboardReducerState,\n action: DashboardReducerAction\n): DashboardReducerState => {\n switch (action.type) {\n case DashboardReducerActionType.ResetFilter:\n return {\n ...state,\n tableFilters: removeFilter(state.tableFilters, action.filter as GridFilterItem),\n };\n case DashboardReducerActionType.ResetFilters:\n return { ...state, tableFilters: removeAllFilters() };\n case DashboardReducerActionType.FilterTable:\n return {\n ...state,\n tableFilters: addOrUpdateFilter(state.tableFilters, action.filter as GridFilterItem),\n };\n\n case DashboardReducerActionType.FilterTableBatch:\n return {\n ...state,\n tableFilters: replaceFilters(action.filter!),\n };\n\n case DashboardReducerActionType.AppendFilterTableBatch:\n return {\n ...state,\n tableFilters: addOrUpdateFilters(state.tableFilters, action.filter as GridFilterItem[]),\n };\n }\n};\n","import { JSONArray, TNdx } from '../../types';\nimport crossfilter from 'crossfilter2';\n\nexport const CrossfilterRegistry = (() => {\n const instances = new WeakMap<JSONArray, TNdx>();\n\n const get = (data: JSONArray): TNdx => {\n let instance = instances.get(data);\n\n if (!instance) {\n instance = crossfilter(data);\n instances.set(data, instance);\n }\n\n return instance;\n };\n\n const remove = (data: JSONArray): void => {\n instances.delete(data);\n };\n\n return {\n get,\n remove,\n };\n})();\n","import React, { forwardRef, RefObject, useMemo, useReducer, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { useGridApiRef } from '@mui/x-data-grid-pro';\n\nimport { Comp } from '@redsift/design-system';\nimport { DashboardContext } from './context';\nimport { DashboardContextProps, DashboardProps } from './types';\nimport { DashboardReducer } from './reducer';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\n\nconst COMPONENT_NAME = 'Dashboard';\nconst CLASSNAME = 'redsift-dashboard-container';\n\nexport const Dashboard: Comp<DashboardProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { children, className, data, dataGridApiRef: propsDataGridApiRef, ...forwardedProps } = props;\n\n const providerRef = ref || useRef<HTMLDivElement>();\n const dataGridApiRef = propsDataGridApiRef || useGridApiRef();\n const [updateContext, setUpdateContext] = useState(false);\n\n const [state, dispatch] = useReducer(DashboardReducer, {\n tableFilters: [],\n });\n\n const value = useMemo<DashboardContextProps>(\n () => ({\n dashboardRef: providerRef as RefObject<HTMLDivElement>,\n data,\n dataGridApiRef,\n dispatch,\n ndx: CrossfilterRegistry.get(data),\n state,\n toggleUpdateContext: () => setUpdateContext(!updateContext),\n }),\n [data, state, updateContext]\n );\n\n return (\n <div\n {...forwardedProps}\n className={classNames(Dashboard.className, className)}\n ref={providerRef as RefObject<HTMLDivElement>}\n >\n <DashboardContext.Provider value={value as DashboardContextProps}>{children}</DashboardContext.Provider>\n </div>\n );\n});\nDashboard.className = CLASSNAME;\nDashboard.displayName = COMPONENT_NAME;\n","// istanbul ignore file\n\nimport { Font, StyleSheet } from '@react-pdf/renderer';\nconst BACKGROUND_COLOR = '#F8F8F8';\nconst GREY_1 = '#E2E6EA';\nconst GREY_2 = '#bff0fd';\n\nexport const getPdfStyles = (primaryColor: string) => {\n Font.register({\n family: 'Source Code Pro',\n fonts: [\n {\n src: 'https://fonts.gstatic.com/s/sourcecodepro/v7/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vT.ttf',\n },\n ],\n });\n\n Font.register({\n family: 'Roboto',\n fonts: [\n {\n fontWeight: 700,\n src: 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/fonts/roboto/Roboto-Regular.ttf',\n },\n {\n fontWeight: 400,\n src: 'https://cdnjs.cloudflare.com/ajax/libs/ink/3.1.10/fonts/Roboto/roboto-light-webfont.ttf',\n },\n ],\n });\n\n return StyleSheet.create({\n page: {\n borderTopStyle: 'solid',\n borderTopWidth: 32,\n borderTopColor: primaryColor,\n borderBottomStyle: 'solid',\n borderBottomWidth: 6,\n borderBottomColor: primaryColor,\n backgroundColor: BACKGROUND_COLOR,\n paddingTop: 20,\n paddingBottom: 40,\n },\n logoContainer: {\n margin: 0,\n paddingBottom: 10,\n alignItems: 'center',\n width: '100%',\n },\n logo: {\n width: 'auto',\n height: 30,\n },\n introductionContainer: {\n lineHeight: 1.4,\n textAlign: 'center',\n marginHorizontal: 40,\n marginVertical: 10,\n },\n introductionText: {\n fontSize: 8,\n fontFamily: 'Roboto',\n fontWeight: 400,\n color: 'black',\n },\n pageNumber: {\n fontFamily: 'Source Code Pro',\n position: 'absolute',\n fontSize: 6,\n bottom: 5,\n right: 20,\n left: 0,\n textAlign: 'right',\n color: 'black',\n },\n pageContinue: {\n fontSize: 8,\n fontFamily: 'Roboto',\n fontWeight: 400,\n top: -10,\n left: 20,\n },\n tableContainer: {\n backgroundColor: 'white',\n marginHorizontal: 20,\n marginVertical: 10,\n paddingTop: 10,\n paddingLeft: 10,\n borderRightWidth: 1,\n borderBottomWidth: 1,\n borderRightColor: BACKGROUND_COLOR,\n borderBottomColor: GREY_1,\n width: 'auto',\n },\n tableRowContainer: {\n flexDirection: 'row',\n borderBottomColor: GREY_2,\n alignItems: 'flex-start',\n fontSize: 8,\n marginLeft: 16,\n marginRight: 24,\n height: 'auto',\n },\n tableHeaderContainer: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n fontSize: 7,\n fontFamily: 'Roboto',\n fontWeight: 700,\n marginLeft: 16,\n marginRight: 24,\n marginBottom: 12,\n paddingTop: 12,\n paddingBottom: 12,\n borderBottomWidth: 2,\n borderBottomColor: primaryColor,\n },\n tableCellHeaderText: {\n fontSize: 7,\n fontFamily: 'Roboto',\n fontWeight: 700,\n color: 'black',\n overflow: 'hidden',\n },\n tableCellText: {\n fontSize: 6,\n lineHeight: 1.5,\n fontFamily: 'Roboto',\n fontWeight: 400,\n color: 'black',\n overflow: 'hidden',\n },\n dashboardImageContainer: {\n marginHorizontal: 20,\n marginTop: 0,\n marginBottom: 10,\n },\n constraintsContainer: {\n width: 'auto',\n height: 'auto',\n paddingVertical: 30,\n textAlign: 'center',\n },\n constraints: {\n fontSize: 6,\n fontFamily: 'Roboto',\n fontWeight: 700,\n color: 'black',\n },\n });\n};\n","// istanbul ignore file\n\nimport React from 'react';\nimport { Document, Image, Page, Text, View } from '@react-pdf/renderer';\nimport { GridValidRowModel } from '@mui/x-data-grid-pro';\nimport { PdfTableColumn, PdfTableRowProps, PdfTableProps, PdfDocumentProps, PdfStyles } from './types';\nimport { getPdfStyles } from './styles';\n\nconst DEFAULT_COLUMN_WIDTH = 100;\n\nconst getWidthColumn = (width: number, totalW: number, nrColumns: number) => {\n // calculation width column where the 7px margin between the columns is included\n return `${Math.round((width * 100) / (totalW - 7 * (nrColumns - 1)))}%`;\n};\n\nconst PdfTableRow = ({ rowIndex, rowData, columns, styles, totalWidth }: PdfTableRowProps) => {\n return (\n <View style={styles.tableRowContainer} key={`row-${rowIndex}`}>\n {columns.map((column: PdfTableColumn, index: number) => {\n const { field, width } = column;\n let totalW = totalWidth;\n let nrColumns = columns.length;\n\n // The checkbox in the table will not be printed\n if (field === '__check__') {\n totalW = totalW - (width || 50);\n nrColumns = nrColumns - 1;\n return;\n }\n const widthColumn = getWidthColumn(width || DEFAULT_COLUMN_WIDTH, totalW, nrColumns);\n\n // Empty value will print '-'\n if (!rowData[field]) {\n return (\n <View\n style={{\n width: widthColumn,\n paddingVertical: 2,\n marginRight: 7,\n }}\n key={`cell-${rowIndex}-${index}`}\n >\n <Text style={styles.tableCellText}>{'-'}</Text>\n </View>\n );\n }\n return (\n <View\n style={{\n width: widthColumn,\n paddingVertical: 2,\n marginRight: 7,\n }}\n key={`cell-${rowIndex}-${index}`}\n >\n <Text style={styles.tableCellText}>\n {Array.isArray(rowData[field]) ? rowData[field].join(', ') : rowData[field]}\n </Text>\n </View>\n );\n })}\n </View>\n );\n};\n\nconst PdfTable = ({ dataTable, styles, localeText }: PdfTableProps) => {\n const { data, columns, totalWidth } = dataTable;\n\n return (\n <>\n <View style={styles.tableHeaderContainer}>\n {columns.map((column: PdfTableColumn) => {\n let totalW = totalWidth;\n let nrColumns = columns.length;\n const { field, headerName, width } = column;\n\n // The checkbox in the table will not be printed\n if (field === '__check__') {\n totalW = totalW - (width || 50);\n nrColumns = nrColumns - 1;\n return;\n }\n const widthColumn = getWidthColumn(width || DEFAULT_COLUMN_WIDTH, totalW, nrColumns);\n\n return (\n <View\n style={{\n width: widthColumn,\n paddingVertical: 2,\n marginRight: 7,\n }}\n key={`heading-${field}`}\n >\n <Text style={styles.tableCellHeaderText}>{headerName}</Text>\n </View>\n );\n })}\n </View>\n <View>\n {data.map((row: GridValidRowModel, index: number) => {\n if (index < 1000) {\n return (\n <PdfTableRow\n key={index}\n rowIndex={index}\n rowData={data[index]}\n columns={columns}\n styles={styles}\n totalWidth={totalWidth}\n />\n );\n }\n })}\n </View>\n {data.length >= 1000 ? (\n <View style={styles.constraintsContainer}>\n <Text style={styles.constraints}>\n {localeText?.maxSizeDisclaimer ||\n 'Due to processing constraints this pdf is limited to the first 1000 rows of data.'}\n </Text>\n </View>\n ) : null}\n </>\n );\n};\n\nconst Pagination = ({ styles }: { styles: PdfStyles }) => {\n return (\n <Text style={styles.pageNumber} render={({ pageNumber, totalPages }) => `${pageNumber}/${totalPages}`} fixed />\n );\n};\n\nexport const PdfDocument = ({\n dashboardImage,\n introduction,\n localeText,\n logo,\n dataTable,\n primaryColor,\n}: PdfDocumentProps) => {\n const styles = getPdfStyles(primaryColor);\n\n return (\n <Document>\n <Page size=\"A4\" style={styles.page}>\n <>\n {logo ? (\n <View style={styles.logoContainer}>\n <Image src={logo} style={styles.logo} />\n </View>\n ) : null}\n {introduction ? (\n <View style={styles.introductionContainer}>\n <Text style={styles.introductionText}>{introduction}</Text>\n </View>\n ) : null}\n {dashboardImage ? (\n <View style={styles.dashboardImageContainer}>\n <Image src={dashboardImage as unknown as string} />\n </View>\n ) : null}\n {dataTable ? (\n <View style={styles.tableContainer}>\n <PdfTable dataTable={dataTable} styles={styles} localeText={localeText} />\n </View>\n ) : null}\n\n <Pagination styles={styles} />\n </>\n </Page>\n </Document>\n );\n};\n","// istanbul ignore file\n\nimport React, {\n forwardRef,\n JSXElementConstructor,\n ReactElement,\n RefObject,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport {\n gridFilteredSortedRowEntriesSelector,\n gridVisibleColumnDefinitionsSelector,\n gridColumnsTotalWidthSelector,\n} from '@mui/x-data-grid-pro';\nimport classNames from 'classnames';\nimport { saveAs } from 'file-saver';\nimport { pdf } from '@react-pdf/renderer';\nimport domToImage from 'dom-to-image';\n\nimport { Comp, Button, Spinner, RedsiftColorBlueD1 } from '@redsift/design-system';\n\nimport { PdfExportButtonProps } from './types';\nimport { PdfDocument } from './PdfDocument';\nimport { DashboardContext } from '../Dashboard';\n\nconst COMPONENT_NAME = 'PdfExportButton';\nconst CLASSNAME = 'redsift-pdf-export-button';\n\nconst getDashboardImage = async (componentRef: RefObject<HTMLElement>): Promise<string> => {\n const filter = (el: Node) => {\n const classList = (el as HTMLElement).classList;\n return !(classList?.contains('redsift-datagrid') || classList?.contains('redsift-button'));\n };\n\n const dashboardHeight = (componentRef.current as HTMLElement).getBoundingClientRect().height;\n const datagridHeight =\n (componentRef.current as HTMLElement)?.getElementsByClassName('redsift-datagrid')?.[0]?.getBoundingClientRect()\n ?.height || 0;\n\n return new Promise((resolve) => {\n domToImage\n .toPng(componentRef.current as HTMLElement, {\n filter,\n height: dashboardHeight - datagridHeight,\n })\n .then(function (dataUrl: string) {\n resolve(dataUrl);\n })\n .catch(() => {\n resolve('');\n });\n });\n};\n\nexport const PdfExportButton: Comp<PdfExportButtonProps, HTMLButtonElement> = forwardRef((props, ref) => {\n const {\n children,\n className,\n componentRef: propComponentRef,\n fileName,\n introduction,\n localeText,\n logo,\n onClick,\n primaryColor,\n ...forwardedProps\n } = props;\n const [componentRef, setComponentRef] = useState(propComponentRef);\n const [isLoading, setIsLoading] = useState(false);\n\n const { dashboardRef, dataGridApiRef } = useContext(DashboardContext);\n\n useEffect(() => {\n if (!componentRef || !componentRef.current) {\n setComponentRef(dashboardRef);\n }\n }, [dashboardRef]);\n\n const exportPdf = async () => {\n if (onClick) {\n onClick();\n }\n setIsLoading(true);\n try {\n const dashboardImage = await getDashboardImage(componentRef || dashboardRef!);\n\n let dataTable;\n if (dataGridApiRef && dataGridApiRef.current && Object.keys(dataGridApiRef.current).length) {\n dataTable = {\n data: gridFilteredSortedRowEntriesSelector(dataGridApiRef.current.state, dataGridApiRef.current.instanceId)\n .slice(0, 1000)\n .map(({ model }) => model),\n columns: gridVisibleColumnDefinitionsSelector(\n dataGridApiRef.current.state,\n dataGridApiRef.current.instanceId\n ),\n totalWidth: gridColumnsTotalWidthSelector(dataGridApiRef.current.state, dataGridApiRef.current.instanceId),\n };\n }\n\n const doc = (\n <PdfDocument\n localeText={localeText}\n dashboardImage={dashboardImage}\n introduction={introduction}\n logo={logo}\n primaryColor={primaryColor || RedsiftColorBlueD1}\n dataTable={dataTable}\n />\n );\n const asPdf = pdf([] as unknown as ReactElement<any, string | JSXElementConstructor<any>>);\n asPdf.updateContainer(doc);\n const blob = await asPdf.toBlob();\n saveAs(blob, fileName || 'redsift-dashboard.pdf');\n } catch (e) {\n console.log('error:', e);\n }\n setIsLoading(false);\n };\n\n return (\n <Button\n className={classNames(PdfExportButton.className, className)}\n onClick={exportPdf}\n isDisabled={isLoading}\n {...forwardedProps}\n ref={ref as RefObject<HTMLButtonElement>}\n >\n {isLoading ? <Spinner size=\"xsmall\" isColored={false} /> : null} {children}\n </Button>\n );\n});\nPdfExportButton.className = CLASSNAME;\nPdfExportButton.displayName = COMPONENT_NAME;\n","// istanbul ignore file\n\nimport { ComponentProps } from 'react';\nimport { Theme, ValueOf } from '@redsift/design-system';\nimport { ColorTheme, DimensionSelector, JSONArray } from '../../types';\n\ntype SuccessDangerColorTheme = {\n success: string;\n warning: string;\n danger: string;\n neutral?: string;\n};\n\n/**\n * Component size.\n */\nexport const TimeSeriesBarChartSize = {\n large: 'large',\n medium: 'medium',\n small: 'small',\n} as const;\nexport type TimeSeriesBarChartSize = ValueOf<typeof TimeSeriesBarChartSize>;\n\n/**\n * Component theme.\n */\nexport const TimeSeriesBarChartTheme = ColorTheme;\nexport type TimeSeriesBarChartTheme = ValueOf<typeof TimeSeriesBarChartTheme>;\n\nexport type datetimeEnum = 'hour' | 'day' | 'week' | 'month' | 'year';\n\ninterface LocaleText {\n emptyChartTitle?: string;\n emptyChartSubtitle?: string;\n emptyChartResetLabel?: string;\n resetLabel?: string;\n}\n\n/**\n * Component props.\n */\nexport interface TimeSeriesBarChartProps extends ComponentProps<'div'> {\n /** Caption. */\n caption?: string;\n /** Whether the x axis labels are rotated or not. */\n areXLabelsRotated?: boolean;\n /** Field value of the DataGrid column to filter. */\n columnToFilter?: string;\n /** Dataset to use to generate the chart, if no context is provided. */\n data?: JSONArray;\n /** Name of the dataset field that contains the datetime value. */\n dateTimeFieldName: string;\n /** Format used for the date and time values in the dataset by d3.js. Should follow https://github.com/d3/d3-time-format#locale_format. */\n dateTimeFormat?: string;\n /** Datetime unit to used to group values and for x units. */\n dateTimeGroup?: datetimeEnum;\n /** Method that will be used by crossfilter to compute the dimensions of the charts. */\n dimension: DimensionSelector;\n /** Whether the reset button is hidden or not. */\n isResetable?: boolean;\n /** Overriden values for internal labels and texts. */\n localeText?: LocaleText;\n /** Method to call when a filter occured on the chart. */\n onFilter?: (filters?: string[], allFiltered?: JSONArray) => void;\n /** TimeSeriesChart size. */\n size?: TimeSeriesBarChartSize;\n /** Color palette to use. You can choose among the list of available color palette or also choose to use the success/warning/danger theme for which you have to specify which key corresponds to which status. */\n colorTheme?: TimeSeriesBarChartTheme | SuccessDangerColorTheme;\n /** Title. */\n title?: string;\n /** Dataset key to use to stack values. */\n stackedCategory?: string;\n /** X Axis Label. */\n xAxisLabel?: string;\n /** Y Axis Label. */\n yAxisLabel?: string;\n}\n\nexport type StyledTimeSeriesBarChartProps = Omit<TimeSeriesBarChartProps, 'dimension' | 'dateTimeFieldName'> & {\n $theme: Theme;\n};\n","// istanbul ignore file\n\nimport styled, { css } from 'styled-components';\nimport { Flexbox } from '@redsift/design-system';\nimport { StyledTimeSeriesBarChartProps } from './types';\n\n/**\n * Component style.\n */\nexport const StyledTimeSeriesBarChart = styled.div<StyledTimeSeriesBarChartProps>`\n margin: 16px;\n padding: 16px;\n\n text {\n fill: ${({ $theme }) => `var(--redsift-color-${$theme}-components-text-primary)`};\n }\n\n .redsift-timeseries-barchart__chart {\n display: flex;\n font-family: var(--redsift-typography-font-family-poppins);\n font-size: 12px;\n justify-content: center;\n margin: 8px 0;\n }\n\n svg > g {\n margin: 8px;\n }\n\n .grid-line,\n .axis .grid-line,\n .grid-line line,\n .axis .grid-line line {\n fill: none;\n stroke: #ccc;\n shape-rendering: crispEdges;\n }\n\n .axis text {\n font-family: var(--redsift-typography-font-family-poppins);\n font-size: 10px;\n }\n\n g.stack rect.bar.deselected {\n fill-opacity: 0.5;\n fill: var(--redsift-color-neutral-mid-grey);\n }\n\n .brush .custom-brush-handle {\n fill: #eee;\n stroke: #666;\n cursor: ew-resize;\n }\n\n text {\n user-select: none;\n }\n`;\n\nexport const StyledTimeSeriesBarChartTitle = styled(Flexbox)<StyledTimeSeriesBarChartProps>`\n font-family: var(--redsift-typography-h4-font-family);\n font-size: var(--redsift-typography-h4-font-size);\n font-weight: var(--redsift-typography-h4-font-weight);\n line-height: var(--redsift-typography-h4-line-height);\n`;\n\nexport const StyledTimeSeriesBarChartCaption = styled.p<StyledTimeSeriesBarChartProps>`\n font-family: var(--redsift-typography-caption-font-family);\n font-size: var(--redsift-typography-caption-font-size);\n font-weight: var(--redsift-typography-caption-font-weight);\n line-height: var(--redsift-typography-caption-line-height);\n`;\n\nexport const StyledTimeSeriesBarChartContainer = styled.div<{\n $isEmpty: boolean;\n}>`\n display: flex;\n align-items: center;\n gap: 16px;\n font-family: var(--redsift-typography-font-family-poppins);\n font-size: 11px;\n justify-content: center;\n margin: 8px 0;\n position: relative;\n\n .redsift-timeseries-barchart-container__chart {\n position: relative;\n ${({ $isEmpty }) =>\n $isEmpty\n ? css`\n display: none;\n `\n : ''};\n }\n`;\n","// istanbul ignore file\n\nimport React, { forwardRef, RefObject, useContext, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport {\n config as dcconfig,\n filterAll as dcfilterAll,\n filters as dcfilters,\n redrawAll as dcredrawAll,\n barChart as dcbarChart,\n BarChart as dcBarChart,\n UnitFunction as dcUnitFunction,\n} from 'dc';\nimport {\n scaleTime as d3scaleTime,\n timeFormat as d3timeFormat,\n isoParse as d3isoParse,\n utcParse as d3utcParse,\n timeHour as d3timeHour,\n timeHours as d3timeHours,\n timeDay as d3timeDay,\n timeDays as d3timeDays,\n timeWeek as d3timeWeek,\n timeWeeks as d3timeWeeks,\n timeMonth as d3timeMonth,\n timeMonths as d3timeMonths,\n timeYear as d3timeYear,\n timeYears as d3timeYears,\n} from 'd3';\n\nimport { Button, Comp, useId, useTheme } from '@redsift/design-system';\nimport { scheme, useColor } from '@redsift/charts';\n\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { TimeSeriesBarChartProps, TimeSeriesBarChartSize, TimeSeriesBarChartTheme } from './types';\nimport { JSONObject, JSONArray } from '../../types';\nimport {\n StyledTimeSeriesBarChart,\n StyledTimeSeriesBarChartCaption,\n StyledTimeSeriesBarChartTitle,\n StyledTimeSeriesBarChartContainer,\n} from './styles';\nimport { GridFilterItem } from '@redsift/table';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\n\nconst COMPONENT_NAME = 'TimeSeriesBarChart';\nconst CLASSNAME = 'redsift-timeseries-barchart';\n\ntype ChartDimensions = {\n width: number;\n height: number;\n marginTop?: number;\n marginRight?: number;\n marginBottom?: number;\n marginLeft?: number;\n};\n\nconst getStartDate = (dates: Date[]) => new Date(Math.min(...dates.map(Number)));\nconst getEndDate = (dates: Date[]) => new Date(Math.max(...dates.map(Number)));\n\nconst sizeToDimension = (size: TimeSeriesBarChartSize): ChartDimensions => {\n switch (size) {\n case TimeSeriesBarChartSize.small:\n return {\n width: 400,\n height: 200,\n marginLeft: 16,\n marginTop: 16,\n marginRight: 16,\n marginBottom: 32,\n };\n case TimeSeriesBarChartSize.large:\n return {\n width: 1000,\n height: 300,\n marginLeft: 16,\n marginTop: 16,\n marginRight: 16,\n marginBottom: 32,\n };\n case TimeSeriesBarChartSize.medium:\n default:\n return {\n width: 600,\n height: 250,\n marginLeft: 16,\n marginTop: 16,\n marginRight: 16,\n marginBottom: 32,\n };\n }\n};\n\nconst parseDateTimeGroup = (\n data: JSONArray,\n dateTimeGroup: TimeSeriesBarChartProps['dateTimeGroup'],\n dateTimeFieldName: string\n) => {\n const dates = [...data.map((d: (typeof data)[number]) => new Date(d[dateTimeFieldName] as string))];\n const startDate = getStartDate(dates);\n const endDate = getEndDate(dates);\n\n switch (dateTimeGroup) {\n case 'hour':\n return {\n group: (g: Date) => d3timeHour(g),\n round: (x: Date) => d3timeHour(x),\n x: d3scaleTime().domain([d3timeHour.offset(startDate, -1), d3timeHour.offset(endDate, 2)]),\n xUnits: d3timeHours,\n };\n case 'day':\n return {\n group: (g: Date) => d3timeDay(g),\n round: (x: Date) => d3timeDay(x),\n x: d3scaleTime().domain([d3timeDay.offset(startDate, -1), d3timeDay.offset(endDate, 2)]),\n xUnits: d3timeDays,\n };\n case 'week':\n return {\n group: (g: Date) => d3timeWeek(g),\n round: (x: Date) => d3timeWeek(x),\n x: d3scaleTime().domain([d3timeWeek.offset(startDate, -1), d3timeWeek.offset(endDate, 2)]),\n xUnits: d3timeWeeks,\n };\n case 'year':\n return {\n group: (g: Date) => d3timeYear(g),\n round: (x: Date) => d3timeYear(x),\n x: d3scaleTime().domain([d3timeYear.offset(startDate, -2), d3timeYear.offset(endDate, 2)]),\n xUnits: d3timeYears,\n };\n case 'month':\n default:\n return {\n group: (g: Date) => d3timeMonth(g),\n round: (x: Date) => d3timeMonth(x),\n x: d3scaleTime().domain([d3timeMonth.offset(startDate, -1), d3timeMonth.offset(endDate, 2)]),\n xUnits: d3timeMonths,\n };\n }\n};\n\nexport const TimeSeriesBarChart: Comp<TimeSeriesBarChartProps, HTMLDivElement> = forwardRef((props, ref) => {\n const containerRef = (ref || useRef<HTMLDivElement>()) as RefObject<HTMLDivElement>;\n const chartRef = useRef<HTMLDivElement>() as RefObject<HTMLDivElement>;\n\n const [id] = useId();\n const [chart, setChart] = useState<dcBarChart>();\n\n const {\n areXLabelsRotated,\n caption,\n className,\n colorTheme = props.stackedCategory ? TimeSeriesBarChartTheme.default : TimeSeriesBarChartTheme.monochrome,\n columnToFilter,\n data: propsData,\n dateTimeFieldName,\n dateTimeFormat = '%Y-%m-%d %H:%M:%S',\n dateTimeGroup = 'month',\n dimension,\n isResetable = true,\n localeText,\n onFilter,\n size = TimeSeriesBarChartSize.medium,\n stackedCategory,\n title,\n xAxisLabel,\n yAxisLabel,\n ...forwardedProps\n } = props;\n const theme = useTheme();\n\n // Get overriden labels and texts.\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel, resetLabel } = {\n resetLabel: 'Reset',\n ...localeText,\n };\n\n // Get charts dimensions based on the selected size.\n const chartDimensions = sizeToDimension(size!);\n\n // Get ndx from context or initialize it.\n const { dispatch, state, data } = useContext(DashboardContext);\n const { tableFilters } = state;\n\n // Set color scheme.\n const colorScale = useColor({\n data: propsData ?? data,\n colorTheme: colorTheme!,\n category: stackedCategory ?? '',\n theme,\n });\n\n const ndx = CrossfilterRegistry.get(propsData ? propsData : data);\n\n // useEffect called only once to initialize the chart.\n useEffect(() => {\n if (chartRef.current) {\n dcconfig.defaultColors(scheme.default);\n const parseTime = d3utcParse(dateTimeFormat!);\n const barChart = dcbarChart(chartRef.current as any);\n const dataset = ndx.all();\n\n // Get time methods based on props\n const { group, round, x, xUnits } = parseDateTimeGroup(dataset as JSONArray, dateTimeGroup, dateTimeFieldName);\n\n // Compute dimension and group.\n const computedDimension = ndx.dimension((d: JSONArray) => parseTime(dimension(d) as string) as Date);\n const timeGroup = computedDimension.group(group);\n\n // Initialize the chart.\n barChart\n .width(chartDimensions.width)\n .height(chartDimensions.height - (areXLabelsRotated ? 30 : 0))\n .dimension(computedDimension)\n .x(x)\n .xUnits(xUnits as dcUnitFunction)\n .round(round)\n .centerBar(true)\n .alwaysUseRounding(true)\n .renderHorizontalGridLines(true)\n .margins({\n left: chartDimensions.marginLeft! + (yAxisLabel ? 24 : 0),\n top: chartDimensions.marginTop!,\n right: chartDimensions.marginRight!,\n bottom: chartDimensions.marginBottom!,\n })\n .barPadding(0.2);\n\n barChart.yAxis().ticks(5);\n\n // Add label to axis.\n if (xAxisLabel) {\n barChart.xAxisLabel(xAxisLabel);\n }\n if (yAxisLabel) {\n barChart.yAxisLabel(yAxisLabel);\n }\n\n // Rotate labels and reset the height, if asked for.\n if (areXLabelsRotated) {\n barChart.on('pretransition', (rowChart) => {\n barChart\n .select('.axis')\n .attr('text-anchor', 'end')\n .selectAll('text')\n .attr('transform', 'translate(-6,5) rotate(-45)');\n rowChart.select('svg').attr('height', chartDimensions.height);\n });\n }\n\n // Set group whether the chart is stacked or not.\n if (!stackedCategory) {\n barChart.group(timeGroup).colors(colorScale as any);\n } else if (dataset.length) {\n if (!Array.isArray(dataset[0][stackedCategory])) {\n const categories = dataset.reduce((acc: string[], curr: JSONObject) => {\n if (acc.indexOf(curr[stackedCategory] as string) === -1) {\n acc.push(curr[stackedCategory] as string);\n }\n return acc;\n }, []);\n const stackedTimeGroup = timeGroup.reduce(\n (p, v) => {\n (p as JSONObject)[v[stackedCategory]] = (((p as JSONObject)[v[stackedCategory]] as number) || 0) + 1;\n return p;\n },\n (p, v) => {\n (p as JSONObject)[v[stackedCategory]] = (((p as JSONObject)[v[stackedCategory]] as number) || 0) - 1;\n return p;\n },\n () => ({})\n );\n barChart\n .group(\n stackedTimeGroup,\n categories[0], // @ts-expect-error\n (\n (cat) => (d: { key: Date; value: { [key: string]: number } }) =>\n d.value[cat]\n )(categories[0])\n )\n .colors(colorScale as any);\n for (var i = 1; i < categories.length; ++i) {\n barChart.stack(\n stackedTimeGroup,\n categories[i],\n (\n (cat) => (d) =>\n d.value[cat]\n )(categories[i])\n );\n }\n } else {\n const categories = dataset.reduce((acc: string[], curr: JSONObject) => {\n (curr[stackedCategory] as string[]).forEach((val: string) => {\n if (acc.indexOf(val) === -1) {\n acc.push(val);\n }\n });\n return acc;\n }, []);\n const stackedTimeGroup = timeGroup.reduce(\n (p, v) => {\n v[stackedCategory].forEach((val: string) => {\n (p as JSONObject)[val] = (((p as JSONObject)[val] as number) || 0) + 1;\n });\n return p;\n },\n (p, v) => {\n v[stackedCategory].forEach((val: string) => {\n (p as JSONObject)[val] = (((p as JSONObject)[val] as number) || 0) - 1;\n });\n return p;\n },\n () => ({})\n );\n barChart\n .group(\n stackedTimeGroup,\n categories[0], // @ts-expect-error\n (\n (cat) => (d: { key: Date; value: { [key: string]: number } }) =>\n d.value[cat]\n )(categories[0])\n )\n .colors(colorScale as any);\n for (var i = 1; i < categories.length; ++i) {\n barChart.stack(\n stackedTimeGroup,\n categories[i],\n (\n (cat) => (d: { key: Date; value: { [key: string]: number } }) =>\n d.value[cat]\n )(categories[i])\n );\n }\n }\n }\n\n // Dispatch filters to datagrid when a value is selected or unselected.\n const formatTime = d3timeFormat('%Y-%m-%dT%H:%M');\n barChart.on('filtered', () => {\n if (columnToFilter) {\n const dateArray = barChart.filters()?.[0];\n if (Array.isArray(dateArray) && dateArray.length === 2) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTableBatch,\n filter: [\n {\n id: `${barChart.anchorName()}-start`,\n field: columnToFilter,\n operator: 'after',\n value: formatTime(dateArray[0]),\n },\n {\n id: `${barChart.anchorName()}-end`,\n field: columnToFilter,\n operator: 'onOrBefore',\n value: formatTime(dateArray[1]),\n },\n ],\n });\n }\n }\n\n onFilter?.(barChart.filters(), ndx.allFiltered());\n });\n\n // Render the chart.\n barChart.render();\n\n // Store chart for further use.\n setChart(barChart);\n }\n }, [propsData, data]);\n\n // Filter chart if context is updated by an external component.\n const filterStart = tableFilters.find((filter) => filter.field === columnToFilter && filter.operator === 'after');\n const filterEnd = tableFilters.find((filter) => filter.field === columnToFilter && filter.operator === 'onOrBefore');\n useEffect(() => {\n if (chart && filterStart && filterEnd && filterStart.value && filterEnd.value) {\n const chartFiltersObj = chart.filters();\n const chartFilters = chartFiltersObj?.[0];\n const chartFilterStart = chartFilters?.[0];\n const chartFilterEnd = chartFilters?.[1];\n if (chartFilterStart !== d3isoParse(filterStart.value) && chartFilterEnd !== d3isoParse(filterEnd.value)) {\n chart.filter(null);\n chart.filter(\n dcfilters.RangedFilter(\n d3isoParse(filterStart.value)?.getTime() || 0,\n d3isoParse(filterEnd.value)?.getTime() || 0\n )\n );\n dcredrawAll();\n }\n }\n }, [filterStart?.value, filterEnd?.value]);\n\n return (\n <StyledTimeSeriesBarChart\n {...forwardedProps}\n className={classNames(TimeSeriesBarChart.className, className)}\n ref={containerRef as RefObject<HTMLDivElement>}\n $theme={theme}\n >\n <StyledTimeSeriesBarChartTitle\n className={`${TimeSeriesBarChart.className}__title`}\n alignItems=\"center\"\n $theme={theme}\n >\n {title ? <div id={`id${id}__title`}>{title}</div> : null}\n {chart && isResetable ? (\n <Button\n variant=\"unstyled\"\n onClick={() => {\n chart.filter(null);\n dcredrawAll();\n\n if (columnToFilter) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${chart.anchorName()}-start`,\n field: columnToFilter,\n operator: 'after',\n } as GridFilterItem,\n });\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${chart.anchorName()}-end`,\n field: columnToFilter,\n operator: 'onOrBefore',\n } as GridFilterItem,\n });\n }\n }}\n >\n {resetLabel}\n </Button>\n ) : null}\n </StyledTimeSeriesBarChartTitle>\n\n <StyledTimeSeriesBarChartContainer\n className={`${TimeSeriesBarChart.className}__container`}\n $isEmpty={ndx.all().length === 0}\n >\n <div\n className={`${TimeSeriesBarChart.className}-container__chart`}\n ref={chartRef as RefObject<HTMLDivElement>}\n />\n {ndx.all().length === 0 ? (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={() => {\n dcfilterAll();\n dcredrawAll();\n dispatch?.({\n type: DashboardReducerActionType.ResetFilters,\n });\n }}\n />\n ) : null}\n </StyledTimeSeriesBarChartContainer>\n\n {caption ? (\n <StyledTimeSeriesBarChartCaption\n className={`${TimeSeriesBarChart.className}__caption`}\n id={`id${id}__caption`}\n $theme={theme}\n >\n {caption}\n </StyledTimeSeriesBarChartCaption>\n ) : null}\n </StyledTimeSeriesBarChart>\n );\n});\nTimeSeriesBarChart.className = CLASSNAME;\nTimeSeriesBarChart.displayName = COMPONENT_NAME;\n","import { BaseMixin } from 'dc';\nimport { useRef, KeyboardEvent, useMemo, MutableRefObject } from 'react';\nimport { Group } from '../types';\n\ntype UseCategoricalChartAsListboxProps = <T extends BaseMixin<T>>(props: {\n id: string;\n ref: MutableRefObject<HTMLDivElement>;\n type: 'bar' | 'slice';\n ndxGroup?: Group;\n orientation?: 'horizontal' | 'vertical';\n}) => void;\n\n/**\n * Hook to give to a chart the roles, events and attributes of a listbox.\n */\nexport const useCategoricalChartAsListbox: UseCategoricalChartAsListboxProps =\n ({ id, ref, type, ndxGroup, orientation = 'horizontal' }) => {\n const currentIndexRef = useRef(0);\n\n const props = useMemo(() => {\n const numberOfGroups = ndxGroup\n ?.all()\n .filter((datum) => datum.value).length;\n if (ref && numberOfGroups) {\n const getCurrentOption = () =>\n ref.current.querySelector(\n `._${currentIndexRef.current}`\n ) as HTMLElement;\n\n const next = () => {\n getCurrentOption().classList.remove('focused');\n const index =\n currentIndexRef.current === numberOfGroups - 1\n ? 0\n : currentIndexRef.current + 1;\n currentIndexRef.current = index;\n ref.current.setAttribute(\n 'aria-activedescendant',\n `id${id}__${type}-${currentIndexRef.current}`\n );\n getCurrentOption().classList.add('focused');\n };\n\n const previous = () => {\n getCurrentOption().classList.remove('focused');\n const index =\n currentIndexRef.current === 0\n ? numberOfGroups - 1\n : currentIndexRef.current - 1;\n currentIndexRef.current = index;\n ref.current.setAttribute(\n 'aria-activedescendant',\n `id${id}__${type}-${currentIndexRef.current}`\n );\n getCurrentOption().classList.add('focused');\n };\n\n const focus = () => {\n ref.current.setAttribute(\n 'aria-activedescendant',\n `id${id}__${type}-0`\n );\n getCurrentOption().classList.add('focused');\n };\n\n const blur = () => {\n getCurrentOption().classList.remove('focused');\n currentIndexRef.current = 0;\n ref.current.setAttribute('aria-activedescendant', '');\n };\n\n const keydown = (e: Event) => {\n e.stopPropagation();\n\n switch ((e as unknown as KeyboardEvent).code) {\n case 'ArrowRight':\n if (orientation === 'horizontal') {\n e.preventDefault();\n next();\n }\n break;\n case 'ArrowLeft':\n if (orientation === 'horizontal') {\n e.preventDefault();\n previous();\n }\n break;\n case 'ArrowDown':\n if (orientation === 'vertical') {\n e.preventDefault();\n next();\n }\n break;\n case 'ArrowUp':\n if (orientation === 'vertical') {\n e.preventDefault();\n previous();\n }\n break;\n case 'Enter':\n case 'Space':\n e.preventDefault();\n getCurrentOption().dispatchEvent(new Event('click'));\n break;\n default:\n break;\n }\n };\n\n return {\n 'aria-activedescendant': '',\n 'aria-multiselectable': 'true',\n 'aria-orientation': orientation,\n role: 'listbox',\n tabIndex: 0,\n onFocus: focus,\n onBlur: blur,\n onMouseDown: (event: MouseEvent) => event.preventDefault(),\n onMouseLeave: blur,\n onKeyDown: keydown,\n };\n }\n }, [\n ref,\n ref.current,\n ndxGroup,\n JSON.parse(JSON.stringify(ndxGroup?.all() || '')),\n ]);\n\n return props;\n };\n","import { GridFilterItem } from '@redsift/table';\nimport { BarDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement, useRef, MutableRefObject } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ChartsWithFiltersProps } from './types';\nimport { useCategoricalChartAsListbox } from '@redsift/dashboard/hooks/useCategoricalChartAsListbox';\nimport { useId } from '@redsift/design-system';\n\nexport const FilterableBarChart: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n const ref = useRef<HTMLDivElement>();\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [filters, setFilters] = useState<string[]>([]);\n\n const handleFilter = (category: string) => {\n let newFilters: string[];\n if (filters.includes(category)) {\n newFilters = filters.filter((f) => f !== category);\n } else {\n newFilters = [...filters, category];\n }\n\n setFilters(newFilters);\n if (newFilters.length) {\n ndxDimension!.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = () => {\n setFilters([]);\n ndxDimension!.filterAll();\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n } as GridFilterItem,\n });\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n useEffect(() => {\n if (!datagridCategoryDimFilter) {\n return;\n }\n\n const updatedFilters = tableFilters.find(\n (filter) =>\n filter.field === datagridCategoryDimFilter.field && filter.operator === datagridCategoryDimFilter.operator\n )?.value;\n if (updatedFilters && updatedFilters !== filters && ndxDimension) {\n setFilters(updatedFilters);\n if (updatedFilters.length) {\n ndxDimension!.filter((d) => updatedFilters.includes(d));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n }\n }, [tableFilters]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const chartProps = useCategoricalChartAsListbox({\n id,\n ref: ref as MutableRefObject<HTMLDivElement>,\n type: 'bar',\n ndxGroup,\n orientation: 'vertical',\n });\n\n const filterProps = {\n barProps: {\n tabIndex: -1,\n },\n barRole: 'option',\n role: 'listbox',\n chartProps: chartProps,\n chartRef: ref,\n data: ndxGroup ? JSON.parse(JSON.stringify(ndxGroup.all())) : undefined,\n emptyComponent,\n id,\n isBarSelected: (datum: BarDatum) => {\n return (\n filters.length === 0 ||\n filters.includes(Array.isArray(datum.data.key) ? (datum.data.key[1] as string) : (datum.data.key as string))\n );\n },\n onBarClick: (datum: BarDatum) => {\n handleFilter(Array.isArray(datum.data.key) ? (datum.data.key[1] as string) : (datum.data.key as string));\n },\n onReset: isResetable ? resetFilters : undefined,\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import { GridFilterModel } from '@redsift/table';\nimport React, { useContext, isValidElement, useState, useEffect } from 'react';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { WithFiltersProps } from './types';\n\nexport const FilterableDataGrid: React.FC<WithFiltersProps> = (props) => {\n const { children, onFilter } = props;\n\n const { state, data, dispatch, dataGridApiRef } =\n useContext(DashboardContext);\n const { tableFilters } = state;\n\n const [filterModel, setFilterModel] = useState<GridFilterModel>();\n useEffect(() => {\n setFilterModel({\n ...filterModel,\n items: tableFilters,\n });\n }, [tableFilters]);\n\n const updateChartFilters = (filterModel: GridFilterModel) => {\n dispatch?.({\n type: DashboardReducerActionType.FilterTableBatch,\n filter: filterModel.items,\n });\n };\n\n if (isValidElement(children)) {\n const filterProps = {\n apiRef: children.props.apiRef ?? dataGridApiRef,\n rows: data || [],\n filterModel,\n onFilterModelChange: (filterModel: GridFilterModel) => {\n if (onFilter) {\n onFilter(filterModel);\n }\n updateChartFilters(filterModel);\n },\n };\n\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import { GridFilterItem } from '@redsift/table';\nimport { ArcDatum, LegendItemDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement, useRef, MutableRefObject } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ChartsWithFiltersProps } from './types';\nimport { useCategoricalChartAsListbox } from '@redsift/dashboard/hooks/useCategoricalChartAsListbox';\nimport { useId } from '@redsift/design-system';\n\nexport const FilterablePieChart: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n const ref = useRef<HTMLDivElement>();\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [filters, setFilters] = useState<string[]>([]);\n\n const handleFilter = (category: string) => {\n let newFilters: string[];\n if (filters.includes(category)) {\n newFilters = filters.filter((f) => f !== category);\n } else {\n newFilters = [...filters, category];\n }\n\n setFilters(newFilters);\n if (newFilters.length) {\n ndxDimension!.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = () => {\n setFilters([]);\n ndxDimension!.filterAll();\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n } as GridFilterItem,\n });\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n const updatedFilters = datagridCategoryDimFilter\n ? tableFilters.find(\n (filter) =>\n filter.field === datagridCategoryDimFilter.field && filter.operator === datagridCategoryDimFilter.operator\n )?.value\n : null;\n useEffect(() => {\n if (updatedFilters && updatedFilters !== filters && ndxDimension) {\n setFilters(updatedFilters);\n if (updatedFilters.length) {\n ndxDimension!.filter((d) => updatedFilters.includes(d));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n }\n }, [updatedFilters]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const chartProps = useCategoricalChartAsListbox({\n id,\n ref: ref as MutableRefObject<HTMLDivElement>,\n type: 'bar',\n ndxGroup,\n orientation: 'horizontal',\n });\n\n const legendProps = {\n onLegendItemClick: (datum: LegendItemDatum) => {\n handleFilter(datum.data.key);\n },\n isLegendItemSelected: (datum: LegendItemDatum) => {\n return filters.length === 0 || filters.includes(datum.data.key);\n },\n legendItemRole: 'option',\n role: 'group',\n };\n\n const filterProps = {\n sliceProps: {\n tabIndex: -1,\n },\n sliceRole: 'option',\n role: 'listbox',\n chartProps,\n legendProps,\n chartRef: ref,\n data: ndxGroup ? JSON.parse(JSON.stringify(ndxGroup.all())) : undefined,\n emptyComponent,\n id,\n isSliceSelected: (datum: ArcDatum) => {\n return filters.length === 0 || filters.includes(datum.data.key);\n },\n onSliceClick: (datum: ArcDatum) => {\n handleFilter(datum.data.key);\n },\n onReset: isResetable ? resetFilters : undefined,\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import { DotDatum, LegendItemDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ScaleLinear as d3ScaleLinear } from 'd3';\nimport { ChartsWithFiltersProps } from './types';\nimport { useId } from '@redsift/design-system';\n\ntype BrushFilter = {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n};\n\nconst filter = (legendFilters?: string[], brushFilters?: BrushFilter) => (d: [number, number, string]) => {\n if (legendFilters && legendFilters.length && brushFilters) {\n return (\n d[0] >= brushFilters.minX &&\n d[0] <= brushFilters.maxX &&\n d[1] >= brushFilters.minY &&\n d[1] <= brushFilters.maxY &&\n legendFilters.includes(d[2])\n );\n } else if (legendFilters && legendFilters.length) {\n return legendFilters.includes(d[2]);\n } else if (brushFilters) {\n return (\n d[0] >= brushFilters.minX && d[0] <= brushFilters.maxX && d[1] >= brushFilters.minY && d[1] <= brushFilters.maxY\n );\n } else {\n return true;\n }\n};\n\nconst isFiltered = (legendFilters?: string[], brushFilters?: BrushFilter) => (datum: DotDatum) => {\n if (legendFilters && legendFilters.length && brushFilters) {\n return (\n (datum.data.key[0] as number) >= brushFilters.minX &&\n (datum.data.key[0] as number) <= brushFilters.maxX &&\n (datum.data.key[1] as number) >= brushFilters.minY &&\n (datum.data.key[1] as number) <= brushFilters.maxY &&\n legendFilters.includes(datum.data.key[2] as string)\n );\n } else if (legendFilters && legendFilters.length) {\n return legendFilters.includes(datum.data.key[2] as string);\n } else if (brushFilters) {\n return (\n (datum.data.key[0] as number) >= brushFilters.minX &&\n (datum.data.key[0] as number) <= brushFilters.maxX &&\n (datum.data.key[1] as number) >= brushFilters.minY &&\n (datum.data.key[1] as number) <= brushFilters.maxY\n );\n } else {\n return true;\n }\n};\n\nexport const FilterableScatterPlot: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCoordinatesCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n // state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [brushFilters, setBrushFilters] = useState<BrushFilter>();\n const [legendFilters, setLegendFilters] = useState<string[]>([]);\n\n const handleBrushFilter = (newFilters: BrushFilter) => {\n setBrushFilters(newFilters);\n ndxDimension!.filter((d) => filter(legendFilters, newFilters)(d as unknown as [number, number, string]));\n toggleUpdateContext?.();\n\n if (datagridCoordinatesCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: `${id}-x`,\n field: datagridCoordinatesCategoryDimFilter[0].field,\n operator: datagridCoordinatesCategoryDimFilter[0].operator,\n value: [newFilters.minX, newFilters.maxX],\n },\n });\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: `${id}-y`,\n field: datagridCoordinatesCategoryDimFilter[1].field,\n operator: datagridCoordinatesCategoryDimFilter[1].operator,\n value: [newFilters.minY, newFilters.maxY],\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const handleLegendFilter = (category: string) => {\n let newFilters: string[];\n if (legendFilters.includes(category)) {\n newFilters = legendFilters.filter((f) => f !== category);\n } else {\n newFilters = [...legendFilters, category];\n }\n\n setLegendFilters(newFilters);\n ndxDimension!.filter((d) => filter(newFilters, brushFilters)(d as unknown as [number, number, string]));\n toggleUpdateContext?.();\n\n if (datagridCoordinatesCategoryDimFilter?.length === 3) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: `${id}-category`,\n field: datagridCoordinatesCategoryDimFilter[2].field,\n operator: datagridCoordinatesCategoryDimFilter[2].operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = (brush = true, legend = true) => {\n if (brush) {\n setBrushFilters(undefined);\n }\n if (legend) {\n setLegendFilters([]);\n }\n ndxDimension!.filter((d) =>\n filter(legend ? [] : legendFilters, brush ? undefined : brushFilters)(d as unknown as [number, number, string])\n );\n toggleUpdateContext?.();\n\n if (datagridCoordinatesCategoryDimFilter) {\n if (brush) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${id}-x`,\n field: datagridCoordinatesCategoryDimFilter[0].field,\n operator: datagridCoordinatesCategoryDimFilter[0].operator,\n },\n });\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${id}-y`,\n field: datagridCoordinatesCategoryDimFilter[1].field,\n operator: datagridCoordinatesCategoryDimFilter[1].operator,\n },\n });\n }\n if (legend && datagridCoordinatesCategoryDimFilter.length === 3) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${id}-category`,\n field: datagridCoordinatesCategoryDimFilter[2].field,\n operator: datagridCoordinatesCategoryDimFilter[2].operator,\n },\n });\n }\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n // useEffect(() => {\n // if (!datagridCoordinatesCategoryDimFilter) {\n // return;\n // }\n\n // const updatedXFilters = tableFilters.find(\n // (filter) =>\n // filter.field === datagridCoordinatesCategoryDimFilter[0].field &&\n // filter.operator ===\n // datagridCoordinatesCategoryDimFilter[0].operator\n // )?.value;\n // const updatedYFilters = tableFilters.find(\n // (filter) =>\n // filter.field === datagridCoordinatesCategoryDimFilter[1].field &&\n // filter.operator ===\n // datagridCoordinatesCategoryDimFilter[1].operator\n // )?.value;\n // console.log(updatedXFilters, updatedYFilters, brushFilters);\n // const updatedFilters = {\n // minX: Number(updatedXFilters[0]),\n // maxX: Number(updatedXFilters[0]),\n // minY: Number(updatedYFilters[1]),\n // maxY: Number(updatedYFilters[1]),\n // }\n // if (updatedFilters && JSON.stringify(updatedFilters) !== JSON.stringify(brushFilters)) {\n // }\n // }, [tableFilters]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const legendProps = {\n onLegendItemClick: (datum: LegendItemDatum) => {\n handleLegendFilter(datum.data.key);\n },\n isLegendItemSelected: (datum: LegendItemDatum) => {\n return legendFilters.length === 0 || legendFilters.includes(datum.data.key);\n },\n legendItemRole: 'option',\n role: 'group',\n };\n\n const filterProps = {\n isBrushable: true,\n data: ndxGroup ? JSON.parse(JSON.stringify(ndxGroup.all())) : undefined,\n dotRole: 'option',\n role: 'listbox',\n emptyComponent,\n id,\n legendProps,\n onBrush: (\n selection: [[number, number], [number, number]],\n scaleX: d3ScaleLinear<number, number>,\n scaleY: d3ScaleLinear<number, number>\n ) => {\n if (selection) {\n setBrushFilters({\n minX: scaleX.invert(selection[0][0]),\n minY: scaleY.invert(selection[1][1]),\n maxX: scaleX.invert(selection[1][0]),\n maxY: scaleY.invert(selection[0][1]),\n });\n }\n },\n onBrushEnd: (\n selection: [[number, number], [number, number]],\n scaleX?: d3ScaleLinear<number, number>,\n scaleY?: d3ScaleLinear<number, number>\n ) => {\n if (selection && scaleX && scaleY) {\n handleBrushFilter({\n minX: scaleX.invert(selection[0][0]),\n minY: scaleY.invert(selection[1][1]),\n maxX: scaleX.invert(selection[1][0]),\n maxY: scaleY.invert(selection[0][1]),\n });\n } else {\n resetFilters(true, false);\n }\n },\n onReset: isResetable ? resetFilters : undefined,\n isDotSelected: (datum: DotDatum) => isFiltered(legendFilters, brushFilters)(datum),\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import React from 'react';\nimport { isComponent } from '@redsift/design-system';\nimport { FilterableBarChart } from './FilterableBarChart';\nimport { FilterableDataGrid } from './FilterableDataGrid';\nimport { FilterablePieChart } from './FilterablePieChart';\nimport { FilterableScatterPlot } from './FilterableScatterPlot';\nimport { WithFiltersProps } from './types';\n\nexport const WithFilters: React.FC<WithFiltersProps> = (props) => {\n if (isComponent('DataGrid')(props.children)) {\n return <FilterableDataGrid {...props} />;\n }\n\n const { dimension } = props;\n\n if (!dimension) {\n return null;\n }\n\n if (isComponent('BarChart')(props.children)) {\n return <FilterableBarChart {...props} dimension={dimension} />;\n } else if (isComponent('PieChart')(props.children)) {\n return <FilterablePieChart {...props} dimension={dimension} />;\n } else if (isComponent('ScatterPlot')(props.children)) {\n return <FilterableScatterPlot {...props} dimension={dimension} />;\n }\n\n return React.isValidElement(props.children) ? props.children : null;\n};\n"],"names":["groupReduceCount","d","group","reduceCount","COUNT","groupReduceSum","field","reduceSum","SUM","StyledChartEmptyState","styled","div","StyledResetButton","Button","COMPONENT_NAME","CLASSNAME","ChartEmptyState","forwardRef","props","ref","onReset","title","subtitle","resetLabel","React","createElement","className","width","height","viewBox","fill","xmlns","opacity","x1","y1","x2","y2","stroke","strokeLinecap","cx","cy","r","transform","strokeWidth","variant","leftIcon","mdiRefresh","onClick","displayName","initialState","tableFilters","DashboardContext","createContext","state","DashboardReducerActionType","areEquals","tableFilter","actionFilter","operator","addOrUpdateFilter","oldFilters","newFilter","find","f","map","addOrUpdateFilters","newFilters","updatedFilters","i","length","replaceFilters","Array","isArray","removeFilter","filter","removeAllFilters","DashboardReducer","action","type","ResetFilter","_objectSpread","ResetFilters","FilterTable","FilterTableBatch","AppendFilterTableBatch","CrossfilterRegistry","instances","WeakMap","get","data","instance","crossfilter","set","remove","delete","Dashboard","children","dataGridApiRef","propsDataGridApiRef","forwardedProps","_objectWithoutProperties","_excluded","providerRef","useRef","useGridApiRef","updateContext","setUpdateContext","useState","dispatch","useReducer","value","useMemo","dashboardRef","ndx","toggleUpdateContext","_extends","classNames","Provider","BACKGROUND_COLOR","GREY_1","GREY_2","getPdfStyles","primaryColor","Font","register","family","fonts","src","fontWeight","StyleSheet","create","page","borderTopStyle","borderTopWidth","borderTopColor","borderBottomStyle","borderBottomWidth","borderBottomColor","backgroundColor","paddingTop","paddingBottom","logoContainer","margin","alignItems","logo","introductionContainer","lineHeight","textAlign","marginHorizontal","marginVertical","introductionText","fontSize","fontFamily","color","pageNumber","position","bottom","right","left","pageContinue","top","tableContainer","paddingLeft","borderRightWidth","borderRightColor","tableRowContainer","flexDirection","marginLeft","marginRight","tableHeaderContainer","marginBottom","tableCellHeaderText","overflow","tableCellText","dashboardImageContainer","marginTop","constraintsContainer","paddingVertical","constraints","DEFAULT_COLUMN_WIDTH","getWidthColumn","totalW","nrColumns","Math","round","PdfTableRow","_ref","rowIndex","rowData","columns","styles","totalWidth","View","style","key","column","index","widthColumn","Text","join","PdfTable","_ref2","dataTable","localeText","Fragment","headerName","row","maxSizeDisclaimer","Pagination","_ref3","render","_ref4","totalPages","fixed","PdfDocument","_ref5","dashboardImage","introduction","Document","Page","size","Image","getDashboardImage","componentRef","_componentRef$current","_componentRef$current2","_componentRef$current3","_componentRef$current4","el","classList","contains","dashboardHeight","current","getBoundingClientRect","datagridHeight","getElementsByClassName","Promise","resolve","domToImage","toPng","then","dataUrl","catch","PdfExportButton","propComponentRef","fileName","setComponentRef","isLoading","setIsLoading","useContext","useEffect","exportPdf","Object","keys","gridFilteredSortedRowEntriesSelector","instanceId","slice","model","gridVisibleColumnDefinitionsSelector","gridColumnsTotalWidthSelector","doc","RedsiftColorBlueD1","asPdf","pdf","updateContainer","blob","toBlob","saveAs","e","console","log","isDisabled","Spinner","isColored","TimeSeriesBarChartSize","large","medium","small","TimeSeriesBarChartTheme","ColorTheme","StyledTimeSeriesBarChart","$theme","StyledTimeSeriesBarChartTitle","Flexbox","StyledTimeSeriesBarChartCaption","p","StyledTimeSeriesBarChartContainer","$isEmpty","css","getStartDate","dates","Date","min","Number","getEndDate","max","sizeToDimension","parseDateTimeGroup","dateTimeGroup","dateTimeFieldName","startDate","endDate","g","d3timeHour","x","d3scaleTime","domain","offset","xUnits","d3timeHours","d3timeDay","d3timeDays","d3timeWeek","d3timeWeeks","d3timeYear","d3timeYears","d3timeMonth","d3timeMonths","TimeSeriesBarChart","containerRef","chartRef","id","useId","chart","setChart","areXLabelsRotated","caption","colorTheme","stackedCategory","default","monochrome","columnToFilter","propsData","dateTimeFormat","dimension","isResetable","onFilter","xAxisLabel","yAxisLabel","theme","useTheme","emptyChartTitle","emptyChartSubtitle","emptyChartResetLabel","chartDimensions","colorScale","useColor","category","dcconfig","defaultColors","scheme","parseTime","d3utcParse","barChart","dcbarChart","dataset","all","computedDimension","timeGroup","centerBar","alwaysUseRounding","renderHorizontalGridLines","margins","barPadding","yAxis","ticks","on","rowChart","select","attr","selectAll","colors","categories","reduce","acc","curr","indexOf","push","stackedTimeGroup","v","cat","stack","forEach","val","formatTime","d3timeFormat","_barChart$filters","dateArray","filters","anchorName","allFiltered","filterStart","filterEnd","chartFiltersObj","chartFilters","chartFilterStart","chartFilterEnd","d3isoParse","_d3isoParse","_d3isoParse2","dcfilters","RangedFilter","getTime","dcredrawAll","dcfilterAll","useCategoricalChartAsListbox","ndxGroup","orientation","currentIndexRef","numberOfGroups","datum","getCurrentOption","querySelector","next","setAttribute","add","previous","focus","blur","keydown","stopPropagation","code","preventDefault","dispatchEvent","Event","role","tabIndex","onFocus","onBlur","onMouseDown","event","onMouseLeave","onKeyDown","JSON","parse","stringify","FilterableBarChart","datagridCategoryDimFilter","propsId","isDimensionArray","_id","ndxDimension","setNdxDimension","setNdxGroup","computedNdxDimension","computedNdxGroup","cleanup","filterAll","setFilters","handleFilter","includes","resetFilters","_tableFilters$find","emptyComponent","chartProps","filterProps","barProps","barRole","undefined","isBarSelected","onBarClick","isValidElement","cloneElement","FilterableDataGrid","filterModel","setFilterModel","items","updateChartFilters","_children$props$apiRe","apiRef","rows","onFilterModelChange","FilterablePieChart","legendProps","onLegendItemClick","isLegendItemSelected","legendItemRole","sliceProps","sliceRole","isSliceSelected","onSliceClick","legendFilters","brushFilters","minX","maxX","minY","maxY","isFiltered","FilterableScatterPlot","datagridCoordinatesCategoryDimFilter","setBrushFilters","setLegendFilters","handleBrushFilter","handleLegendFilter","brush","arguments","legend","isBrushable","dotRole","onBrush","selection","scaleX","scaleY","invert","onBrushEnd","isDotSelected","WithFilters","isComponent"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"test": "yarn test:unit && yarn test:storybook"
|
|
31
31
|
},
|
|
32
32
|
"types": "types.d.ts",
|
|
33
|
-
"version": "11.4.0
|
|
33
|
+
"version": "11.4.0",
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@emotion/react": "^11.10.4",
|
|
36
36
|
"@emotion/styled": "^11.10.4",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"@babel/preset-env": "^7.17.10",
|
|
57
57
|
"@babel/preset-react": "^7.17.12",
|
|
58
58
|
"@babel/preset-typescript": "^7.16.7",
|
|
59
|
-
"@mui/x-data-grid-pro": "^
|
|
59
|
+
"@mui/x-data-grid-pro": "^6.18.0",
|
|
60
60
|
"@rollup/plugin-babel": "^6.0.2",
|
|
61
61
|
"@rollup/plugin-commonjs": "^24.0.0",
|
|
62
62
|
"@rollup/plugin-json": "^6.0.0",
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"ts-jest": "^28.0.3"
|
|
100
100
|
},
|
|
101
101
|
"peerDependencies": {
|
|
102
|
-
"@mui/x-data-grid-pro": ">=
|
|
102
|
+
"@mui/x-data-grid-pro": ">=6",
|
|
103
103
|
"@redsift/charts": "^11.4.0-0",
|
|
104
104
|
"@redsift/design-system": "^11.4.0-0",
|
|
105
105
|
"@redsift/icons": "^11.4.0-0",
|
|
@@ -110,5 +110,5 @@
|
|
|
110
110
|
"react-dom": ">=17",
|
|
111
111
|
"styled-components": "^5.3.5"
|
|
112
112
|
},
|
|
113
|
-
"gitHead": "
|
|
113
|
+
"gitHead": "7d2c38c8fec08675ea51d51c0257349665c5eb8f"
|
|
114
114
|
}
|