@hisptz/dhis2-analytics 2.0.60 → 2.0.62

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.
@@ -39,7 +39,10 @@ function RowRenderer({
39
39
  index,
40
40
  config: { rows, columns, mapper, prevWidth, fixRowHeaders }
41
41
  }) {
42
- const [cellRef, { width }] = usehooksTs.useElementSize();
42
+ const cellRef = react.useRef(null);
43
+ const { width } = usehooksTs.useResizeObserver({
44
+ ref: cellRef
45
+ });
43
46
  const rowSpan = lodash.slice(rows, index + 1).reduce((acc, column) => {
44
47
  return acc * (column.items?.length ?? 1);
45
48
  }, 1);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":["useCustomPivotTableEngine","jsx","Fragment","mapper","DataTableCell","useElementSize","slice","isEmpty","jsxs","DataTableRow","classes","TableBody"],"mappings":";;;;;;;;;;;;;;AAUA,SAAS,eAAgB,CAAA;AAAA,EACxB,MAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AACD,CAIG,EAAA;AACF,EAAA,MAAM,SAASA,mCAA0B,EAAA,CAAA;AAEzC,EAAA,MAAM,gBAAgB,MAAQ,EAAA,SAAA,CAAA;AAC9B,EAAA,MAAM,cAAiB,GAAA,aAAA,EAAe,GAAI,CAAA,CAAC,GAAS,MAAA;AAAA,IACnD,GAAG,GAAA;AAAA,IACH,GAAG,MAAA;AAAA,IACH,CAAC,SAAS,GAAG,IAAK,CAAA,GAAA;AAAA,GACjB,CAAA,CAAA,CAAA;AACF,EAAA,uBAEGC,cAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAgB,GAAI,CAAA,CAACC,OACrB,qBAAAF,cAAA;AAAA,IAACG,gBAAA;AAAA,IAAA;AAAA,MAEA,KAAM,EAAA,QAAA;AAAA,MACN,QAAQ,EAAA,IAAA;AAAA,MAEP,QAAA,EAAA,MAAA,EAAQ,QAASD,CAAAA,OAAM,CAAK,IAAA,EAAA;AAAA,KAAA;AAAA,IAJxB,GAAG,MAAO,CAAA,MAAA,CAAOA,OAAM,CAAE,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,MAAA,CAAA;AAAA,GAMxC,CACF,EAAA,CAAA,CAAA;AAEF,CAAA;AAEA,SAAS,WAAY,CAAA;AAAA,EACpB,GAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAQ,EAAE,IAAA,EAAM,OAAS,EAAA,MAAA,EAAQ,WAAW,aAAc,EAAA;AAC3D,CAU8B,EAAA;AAC7B,EAAA,MAAM,CAAC,OAAS,EAAA,EAAE,KAAM,EAAC,IAAIE,yBAAe,EAAA,CAAA;AAE5C,EAAM,MAAA,OAAA,GAAUC,aAAM,IAAM,EAAA,KAAA,GAAQ,CAAC,CAAE,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,MAAW,KAAA;AAC9D,IAAO,OAAA,GAAA,IAAO,MAAO,CAAA,KAAA,EAAO,MAAU,IAAA,CAAA,CAAA,CAAA;AAAA,KACpC,CAAC,CAAA,CAAA;AACJ,EAAA,MAAM,aAAa,CAACC,cAAA,CAAQ,IAAK,CAAA,KAAA,GAAQ,CAAC,CAAC,CAAA,CAAA;AAC3C,EAAM,MAAA,OAAA,GAAU,IAAK,CAAA,KAAA,GAAQ,CAAC,CAAA,CAAA;AAE9B,EAAA,uBAEGN,cAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,GAAA,EAAK,KAAO,EAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AAC1B,IACC,uBAAAM,eAAA,CAACN,gBAAA,EACA,QAAA,EAAA;AAAA,sBAAAM,eAAA,CAACC,eACA,EAAA,EAAA,QAAA,EAAA;AAAA,wBAAAR,cAAA;AAAA,UAACG,gBAAA;AAAA,UAAA;AAAA,YAGA,GAAK,EAAA,OAAA;AAAA,YACL,KAAO,EAAA,aAAA;AAAA,YACP,IAAA,EAAM,GAAG,SAAS,CAAA,EAAA,CAAA;AAAA,YAClB,SAAA,EAAWM,yBAAQ,aAAa,CAAA;AAAA,YAChC,GAAI,EAAA,IAAA;AAAA,YACJ,QAAQ,EAAA,IAAA;AAAA,YACR,OACC,EAAA,CAAA,OAAA,IAAW,UAAa,GAAA,CAAA,GAAI,IAC3B,QAAS,EAAA;AAAA,YAEV,QAAK,EAAA,IAAA,CAAA,IAAA;AAAA,WAAA;AAAA,SACP;AAAA,QACC,CAAC,UACD,mBAAAT,cAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACA,WAAW,GAAI,CAAA,SAAA;AAAA,YACf,MAAA;AAAA,YACA,IAAA;AAAA,WAAA;AAAA,SAEE,GAAA,IAAA;AAAA,OAAA,EAAA,EAtBc,GAAG,IAAK,CAAA,IAAI,CAAI,CAAA,EAAA,GAAA,CAAI,SAAS,CAuBhD,IAAA,CAAA,CAAA;AAAA,MACC,UACA,mBAAAA,cAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACA,GAAK,EAAA,OAAA;AAAA,UACL,OAAO,KAAQ,GAAA,CAAA;AAAA,UACf,MAAQ,EAAA;AAAA,YACP,IAAA;AAAA,YACA,OAAA;AAAA,YACA,SAAW,EAAA,KAAA;AAAA,YACX,MAAQ,EAAA;AAAA,cACP,GAAG,MAAA;AAAA,cACH,CAAC,GAAA,CAAI,SAAS,GACb,IAAK,CAAA,GAAA;AAAA,aACP;AAAA,WACD;AAAA,SAAA;AAAA,OAEE,GAAA,IAAA;AAAA,KAAA,EAAA,EAxCU,GAAG,IAAK,CAAA,IAAI,CAAI,CAAA,EAAA,GAAA,CAAI,SAAS,CAyC5C,SAAA,CAAA,CAAA,CAAA;AAAA,GAED,CACF,EAAA,CAAA,CAAA;AAEF,CAAA;AAEO,SAAS,oBAAuB,GAAA;AACtC,EAAA,MAAM,SAASD,mCAA0B,EAAA,CAAA;AACzC,EAAA,MAAM,OAAO,MAAQ,EAAA,UAAA,CAAA;AACrB,EAAA,MAAM,UAAU,MAAQ,EAAA,aAAA,CAAA;AACxB,EAAA,MAAM,gBAAgB,MAAQ,EAAA,aAAA,CAAA;AAE9B,EAAA,IAAI,CAAC,IAAA,IAAQO,cAAQ,CAAA,IAAI,CAAG,EAAA;AAC3B,IAAO,OAAA,IAAA,CAAA;AAAA,GACR;AAEA,EAAA,sCACEI,YACA,EAAA,EAAA,QAAA,kBAAAV,cAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACA,GAAA,EAAK,KAAK,CAAC,CAAA;AAAA,MACX,KAAO,EAAA,CAAA;AAAA,MACP,MAAQ,EAAA,EAAE,IAAM,EAAA,OAAA,EAAS,aAAc,EAAA;AAAA,KAAA;AAAA,GAEzC,EAAA,CAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import { Header } from \"../../services/engine\";\nimport { isEmpty, slice } from \"lodash\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableCell, DataTableRow, TableBody } from \"@dhis2/ui\";\nimport React, { Fragment, ReactNode } from \"react\";\nimport { AnalyticsItem } from \"@hisptz/dhis2-utils\";\nimport classes from \"./TableBody.module.css\";\nimport { useElementSize } from \"usehooks-ts\";\nimport { DHIS2Dimension } from \"../../interfaces/index.js\";\n\nfunction DataRowRenderer({\n\tmapper,\n\titem,\n\tdimension,\n}: {\n\tmapper?: { [key: string]: any };\n\titem: AnalyticsItem;\n\tdimension: DHIS2Dimension;\n}) {\n\tconst engine = useCustomPivotTableEngine();\n\n\tconst columnMappers = engine?.columnMap;\n\tconst completeMapper = columnMappers?.map((map) => ({\n\t\t...map,\n\t\t...mapper,\n\t\t[dimension]: item.uid,\n\t}));\n\treturn (\n\t\t<>\n\t\t\t{completeMapper?.map((mapper) => (\n\t\t\t\t<DataTableCell\n\t\t\t\t\tkey={`${Object.values(mapper).join(\"-\")}-value`}\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tbordered\n\t\t\t\t>\n\t\t\t\t\t{engine?.getValue(mapper) ?? \"\"}\n\t\t\t\t</DataTableCell>\n\t\t\t))}\n\t\t</>\n\t);\n}\n\nfunction RowRenderer({\n\trow,\n\tindex,\n\tconfig: { rows, columns, mapper, prevWidth, fixRowHeaders },\n}: {\n\trow: Header;\n\tindex: number;\n\tconfig: {\n\t\trows: Header[];\n\t\tcolumns?: Header[];\n\t\tmapper?: { [key: string]: string | undefined };\n\t\tprevWidth?: number;\n\t\tfixRowHeaders?: boolean;\n\t};\n}): React.ReactElement | null {\n\tconst [cellRef, { width }] = useElementSize();\n\n\tconst rowSpan = slice(rows, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\tconst hasSubRows = !isEmpty(rows[index + 1]);\n\tconst nextRow = rows[index + 1];\n\n\treturn (\n\t\t<>\n\t\t\t{row?.items?.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={`${item.name}-${row.dimension}-fragment`}>\n\t\t\t\t\t\t<DataTableRow key={`${item.name}-${row.dimension}-row`}>\n\t\t\t\t\t\t\t<DataTableCell\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\tref={cellRef}\n\t\t\t\t\t\t\t\tfixed={fixRowHeaders}\n\t\t\t\t\t\t\t\tleft={`${prevWidth}px` as unknown as boolean}\n\t\t\t\t\t\t\t\tclassName={classes[\"header-cell\"]}\n\t\t\t\t\t\t\t\ttag=\"th\"\n\t\t\t\t\t\t\t\tbordered\n\t\t\t\t\t\t\t\trowSpan={(\n\t\t\t\t\t\t\t\t\trowSpan + (hasSubRows ? 1 : 0)\n\t\t\t\t\t\t\t\t).toString()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.name as unknown as string | ReactNode}\n\t\t\t\t\t\t\t</DataTableCell>\n\t\t\t\t\t\t\t{!hasSubRows ? (\n\t\t\t\t\t\t\t\t<DataRowRenderer\n\t\t\t\t\t\t\t\t\tdimension={row.dimension}\n\t\t\t\t\t\t\t\t\tmapper={mapper}\n\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</DataTableRow>\n\t\t\t\t\t\t{hasSubRows ? (\n\t\t\t\t\t\t\t<RowRenderer\n\t\t\t\t\t\t\t\trow={nextRow}\n\t\t\t\t\t\t\t\tindex={index + 1}\n\t\t\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\t\tprevWidth: width,\n\t\t\t\t\t\t\t\t\tmapper: {\n\t\t\t\t\t\t\t\t\t\t...mapper,\n\t\t\t\t\t\t\t\t\t\t[row.dimension]:\n\t\t\t\t\t\t\t\t\t\t\titem.uid as unknown as string,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nexport function CustomPivotTableBody() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst rows = engine?.rowHeaders;\n\tconst columns = engine?.columnHeaders;\n\tconst fixRowHeaders = engine?.fixRowHeaders;\n\n\tif (!rows || isEmpty(rows)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableBody>\n\t\t\t<RowRenderer\n\t\t\t\trow={rows[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ rows, columns, fixRowHeaders }}\n\t\t\t/>\n\t\t</TableBody>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":["useCustomPivotTableEngine","jsx","Fragment","mapper","DataTableCell","useRef","useResizeObserver","slice","isEmpty","jsxs","DataTableRow","classes","TableBody"],"mappings":"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","file":"index.js","sourcesContent":["import { Header } from \"../../services/engine\";\nimport { isEmpty, slice } from \"lodash\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableCell, DataTableRow, TableBody } from \"@dhis2/ui\";\nimport React, { Fragment, ReactNode, useRef } from \"react\";\nimport { AnalyticsItem } from \"@hisptz/dhis2-utils\";\nimport classes from \"./TableBody.module.css\";\nimport { DHIS2Dimension } from \"../../interfaces/index.js\";\nimport { useResizeObserver } from \"usehooks-ts\";\n\nfunction DataRowRenderer({\n\tmapper,\n\titem,\n\tdimension,\n}: {\n\tmapper?: { [key: string]: any };\n\titem: AnalyticsItem;\n\tdimension: DHIS2Dimension;\n}) {\n\tconst engine = useCustomPivotTableEngine();\n\n\tconst columnMappers = engine?.columnMap;\n\tconst completeMapper = columnMappers?.map((map) => ({\n\t\t...map,\n\t\t...mapper,\n\t\t[dimension]: item.uid,\n\t}));\n\treturn (\n\t\t<>\n\t\t\t{completeMapper?.map((mapper) => (\n\t\t\t\t<DataTableCell\n\t\t\t\t\tkey={`${Object.values(mapper).join(\"-\")}-value`}\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tbordered\n\t\t\t\t>\n\t\t\t\t\t{engine?.getValue(mapper) ?? \"\"}\n\t\t\t\t</DataTableCell>\n\t\t\t))}\n\t\t</>\n\t);\n}\n\nfunction RowRenderer({\n\trow,\n\tindex,\n\tconfig: { rows, columns, mapper, prevWidth, fixRowHeaders },\n}: {\n\trow: Header;\n\tindex: number;\n\tconfig: {\n\t\trows: Header[];\n\t\tcolumns?: Header[];\n\t\tmapper?: { [key: string]: string | undefined };\n\t\tprevWidth?: number;\n\t\tfixRowHeaders?: boolean;\n\t};\n}): React.ReactElement | null {\n\tconst cellRef = useRef<HTMLElement | null>(null);\n\tconst { width } = useResizeObserver({\n\t\tref: cellRef,\n\t});\n\n\tconst rowSpan = slice(rows, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\tconst hasSubRows = !isEmpty(rows[index + 1]);\n\tconst nextRow = rows[index + 1];\n\n\treturn (\n\t\t<>\n\t\t\t{row?.items?.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={`${item.name}-${row.dimension}-fragment`}>\n\t\t\t\t\t\t<DataTableRow key={`${item.name}-${row.dimension}-row`}>\n\t\t\t\t\t\t\t<DataTableCell\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\tref={cellRef}\n\t\t\t\t\t\t\t\tfixed={fixRowHeaders}\n\t\t\t\t\t\t\t\tleft={`${prevWidth}px` as unknown as boolean}\n\t\t\t\t\t\t\t\tclassName={classes[\"header-cell\"]}\n\t\t\t\t\t\t\t\ttag=\"th\"\n\t\t\t\t\t\t\t\tbordered\n\t\t\t\t\t\t\t\trowSpan={(\n\t\t\t\t\t\t\t\t\trowSpan + (hasSubRows ? 1 : 0)\n\t\t\t\t\t\t\t\t).toString()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.name as unknown as string | ReactNode}\n\t\t\t\t\t\t\t</DataTableCell>\n\t\t\t\t\t\t\t{!hasSubRows ? (\n\t\t\t\t\t\t\t\t<DataRowRenderer\n\t\t\t\t\t\t\t\t\tdimension={row.dimension}\n\t\t\t\t\t\t\t\t\tmapper={mapper}\n\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</DataTableRow>\n\t\t\t\t\t\t{hasSubRows ? (\n\t\t\t\t\t\t\t<RowRenderer\n\t\t\t\t\t\t\t\trow={nextRow}\n\t\t\t\t\t\t\t\tindex={index + 1}\n\t\t\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\t\tprevWidth: width,\n\t\t\t\t\t\t\t\t\tmapper: {\n\t\t\t\t\t\t\t\t\t\t...mapper,\n\t\t\t\t\t\t\t\t\t\t[row.dimension]:\n\t\t\t\t\t\t\t\t\t\t\titem.uid as unknown as string,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nexport function CustomPivotTableBody() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst rows = engine?.rowHeaders;\n\tconst columns = engine?.columnHeaders;\n\tconst fixRowHeaders = engine?.fixRowHeaders;\n\n\tif (!rows || isEmpty(rows)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableBody>\n\t\t\t<RowRenderer\n\t\t\t\trow={rows[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ rows, columns, fixRowHeaders }}\n\t\t\t/>\n\t\t</TableBody>\n\t);\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
4
5
  var engine_js = require('../../state/engine.js');
5
6
  var ui = require('@dhis2/ui');
6
7
  var lodash = require('lodash');
@@ -16,7 +17,10 @@ function ColumnRenderer({
16
17
  index,
17
18
  config: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns, engine }
18
19
  }) {
19
- const [columnHeaderRef, { height }] = usehooksTs.useElementSize();
20
+ const ref = react.useRef(null);
21
+ const { height } = usehooksTs.useResizeObserver({
22
+ ref
23
+ });
20
24
  if (!column) {
21
25
  return null;
22
26
  }
@@ -60,7 +64,7 @@ function ColumnRenderer({
60
64
  {
61
65
  fixed: fixColumnHeaders,
62
66
  top: `${prevHeight.toString()}px`,
63
- ref: index === 0 ? columnHeaderRef : void 0,
67
+ ref: index === 0 ? ref : void 0,
64
68
  className: classes__default.default["table-header"],
65
69
  align: "center",
66
70
  colSpan: colSpan.toString(),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":["useElementSize","slice","column","isEmpty","jsxs","Fragment","DataTableRow","jsx","DataTableColumnHeader","classes","times","useCustomPivotTableEngine","TableHead"],"mappings":"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","file":"index.js","sourcesContent":["import React from \"react\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableColumnHeader, DataTableRow, TableHead } from \"@dhis2/ui\";\nimport { isEmpty, slice, times } from \"lodash\";\nimport { DHIS2PivotTableEngine, Header } from \"../../services/engine.js\";\nimport classes from \"./TableHeaders.module.css\";\nimport { useElementSize } from \"usehooks-ts\";\n\nfunction ColumnRenderer({\n\tcolumn,\n\tindex,\n\tconfig: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns, engine },\n}: {\n\tcolumn: Header;\n\tindex: number;\n\tconfig: {\n\t\tcolumns: Header[];\n\t\trowHeaders?: Header[];\n\t\tprevHeight?: number;\n\t\tfixColumnHeaders?: boolean;\n\t\tengine: DHIS2PivotTableEngine;\n\t};\n}): React.ReactElement | null {\n\tconst [columnHeaderRef, { height }] = useElementSize();\n\n\tif (!column) {\n\t\treturn null;\n\t}\n\tconst colSpan = slice(columns, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\n\tconst hasSubColumns = !isEmpty(columns[index + 1]);\n\tconst nextColumn = columns[index + 1];\n\n\tconst multiplicationFactor = slice(columns, 0, index).reduce(\n\t\t(acc, column) => {\n\t\t\treturn acc * (column.items?.length ?? 1);\n\t\t},\n\t\t1,\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{engine?.showTitle && (\n\t\t\t\t<DataTableRow>\n\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tcolSpan={engine.titleSpan.toString()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{engine.title ?? \"\"}\n\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t</DataTableRow>\n\t\t\t)}\n\t\t\t<DataTableRow>\n\t\t\t\t{index === 0 &&\n\t\t\t\t\trowHeaders?.map((header) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\ttop={\"0\"}\n\t\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\t\trowSpan={columns.length.toString()}\n\t\t\t\t\t\t\t\tkey={`${header.dimension}-header-column`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header.label ?? \"\"}\n\t\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t{times(multiplicationFactor, (colNo) => {\n\t\t\t\t\treturn column.items?.map((item) => (\n\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\ttop={`${prevHeight.toString()}px`}\n\t\t\t\t\t\t\tref={index === 0 ? columnHeaderRef : undefined}\n\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tcolSpan={colSpan.toString()}\n\t\t\t\t\t\t\tkey={`${colNo}-${item.name}-column-header`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.name as unknown as string}\n\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t));\n\t\t\t\t})}\n\t\t\t</DataTableRow>\n\t\t\t{hasSubColumns ? (\n\t\t\t\t<ColumnRenderer\n\t\t\t\t\tcolumn={nextColumn}\n\t\t\t\t\tindex={index + 1}\n\t\t\t\t\tconfig={{\n\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\trowHeaders,\n\t\t\t\t\t\tprevHeight: height,\n\t\t\t\t\t\tfixColumnHeaders,\n\t\t\t\t\t\tengine,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</>\n\t);\n}\n\nexport function TableHeaders() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst columns = engine?.columnHeaders;\n\tconst rowHeaders = engine?.rowHeaders;\n\tconst fixColumnHeaders = engine?.fixColumnHeaders;\n\n\tif (!columns || isEmpty(columns)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableHead>\n\t\t\t<ColumnRenderer\n\t\t\t\tcolumn={columns[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ engine, rowHeaders, columns, fixColumnHeaders }}\n\t\t\t/>\n\t\t</TableHead>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":["useRef","useResizeObserver","slice","column","isEmpty","jsxs","Fragment","DataTableRow","jsx","DataTableColumnHeader","classes","times","useCustomPivotTableEngine","TableHead"],"mappings":"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","file":"index.js","sourcesContent":["import React, { useRef } from \"react\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableColumnHeader, DataTableRow, TableHead } from \"@dhis2/ui\";\nimport { isEmpty, slice, times } from \"lodash\";\nimport { DHIS2PivotTableEngine, Header } from \"../../services/engine.js\";\nimport classes from \"./TableHeaders.module.css\";\nimport { useResizeObserver } from \"usehooks-ts\";\n\nfunction ColumnRenderer({\n\tcolumn,\n\tindex,\n\tconfig: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns, engine },\n}: {\n\tcolumn: Header;\n\tindex: number;\n\tconfig: {\n\t\tcolumns: Header[];\n\t\trowHeaders?: Header[];\n\t\tprevHeight?: number;\n\t\tfixColumnHeaders?: boolean;\n\t\tengine: DHIS2PivotTableEngine;\n\t};\n}): React.ReactElement | null {\n\tconst ref = useRef<HTMLElement | null>(null);\n\tconst { height } = useResizeObserver({\n\t\tref,\n\t});\n\n\tif (!column) {\n\t\treturn null;\n\t}\n\tconst colSpan = slice(columns, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\n\tconst hasSubColumns = !isEmpty(columns[index + 1]);\n\tconst nextColumn = columns[index + 1];\n\n\tconst multiplicationFactor = slice(columns, 0, index).reduce(\n\t\t(acc, column) => {\n\t\t\treturn acc * (column.items?.length ?? 1);\n\t\t},\n\t\t1,\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{engine?.showTitle && (\n\t\t\t\t<DataTableRow>\n\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tcolSpan={engine.titleSpan.toString()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{engine.title ?? \"\"}\n\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t</DataTableRow>\n\t\t\t)}\n\t\t\t<DataTableRow>\n\t\t\t\t{index === 0 &&\n\t\t\t\t\trowHeaders?.map((header) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\ttop={\"0\"}\n\t\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\t\trowSpan={columns.length.toString()}\n\t\t\t\t\t\t\t\tkey={`${header.dimension}-header-column`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header.label ?? \"\"}\n\t\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t{times(multiplicationFactor, (colNo) => {\n\t\t\t\t\treturn column.items?.map((item) => (\n\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\ttop={`${prevHeight.toString()}px`}\n\t\t\t\t\t\t\tref={index === 0 ? ref : undefined}\n\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tcolSpan={colSpan.toString()}\n\t\t\t\t\t\t\tkey={`${colNo}-${item.name}-column-header`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.name as unknown as string}\n\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t));\n\t\t\t\t})}\n\t\t\t</DataTableRow>\n\t\t\t{hasSubColumns ? (\n\t\t\t\t<ColumnRenderer\n\t\t\t\t\tcolumn={nextColumn}\n\t\t\t\t\tindex={index + 1}\n\t\t\t\t\tconfig={{\n\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\trowHeaders,\n\t\t\t\t\t\tprevHeight: height,\n\t\t\t\t\t\tfixColumnHeaders,\n\t\t\t\t\t\tengine,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</>\n\t);\n}\n\nexport function TableHeaders() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst columns = engine?.columnHeaders;\n\tconst rowHeaders = engine?.rowHeaders;\n\tconst fixColumnHeaders = engine?.fixColumnHeaders;\n\n\tif (!columns || isEmpty(columns)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableHead>\n\t\t\t<ColumnRenderer\n\t\t\t\tcolumn={columns[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ engine, rowHeaders, columns, fixColumnHeaders }}\n\t\t\t/>\n\t\t</TableHead>\n\t);\n}\n"]}
@@ -3,30 +3,34 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var react = require('react');
5
5
  var lodash = require('lodash');
6
- var usehooksTs = require('usehooks-ts');
7
6
 
8
7
  const DimensionState = react.createContext({
9
8
  dx: [],
10
9
  pe: [],
11
10
  ou: []
12
11
  });
13
- const DimensionUpdateState = react.createContext(void 0);
12
+ const DimensionUpdateState = react.createContext(
13
+ void 0
14
+ );
14
15
  function reducer(state, { dimension, value }) {
15
16
  const updatedState = { ...state ?? {} };
16
17
  lodash.set(updatedState, [dimension], value);
17
18
  return updatedState;
18
19
  }
19
20
  function useDimensions() {
20
- return [
21
- react.useContext(DimensionState),
22
- react.useContext(DimensionUpdateState)
23
- ];
21
+ return [react.useContext(DimensionState), react.useContext(DimensionUpdateState)];
24
22
  }
25
- function DimensionsProvider({ children, dimensions }) {
23
+ function DimensionsProvider({
24
+ children,
25
+ dimensions
26
+ }) {
26
27
  const [state, dispatch] = react.useReducer(reducer, dimensions);
27
- usehooksTs.useUpdateEffect(() => {
28
+ react.useEffect(() => {
28
29
  Object.keys(dimensions).forEach((dimension) => {
29
- dispatch({ dimension, value: dimensions[dimension] ?? [] });
30
+ dispatch({
31
+ dimension,
32
+ value: dimensions[dimension] ?? []
33
+ });
30
34
  });
31
35
  }, [dimensions]);
32
36
  return /* @__PURE__ */ jsxRuntime.jsx(DimensionState.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(DimensionUpdateState.Provider, { value: dispatch, children }) });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":["createContext","set","useContext","useReducer","useUpdateEffect","jsx"],"mappings":";;;;;;;AAQO,MAAM,iBAAiBA,mBAAkC,CAAA;AAAA,EAC5D,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AACT,CAAC,EAAA;AACY,MAAA,oBAAA,GAAuBA,oBAA4C,KAAS,CAAA,EAAA;AAGzF,SAAS,OAAQ,CAAA,KAAA,EAA2B,EAAC,SAAA,EAAW,OAAmD,EAAA;AACvG,EAAA,MAAM,YAAe,GAAA,EAAC,GAAI,KAAA,IAAS,EAAG,EAAA,CAAA;AACtC,EAAAC,UAAA,CAAI,YAAc,EAAA,CAAC,SAAS,CAAA,EAAG,KAAK,CAAA,CAAA;AACpC,EAAO,OAAA,YAAA,CAAA;AACX,CAAA;AAOO,SAAS,aAAgB,GAAA;AAC5B,EAAO,OAAA;AAAA,IACHC,iBAAW,cAAc,CAAA;AAAA,IACzBA,iBAAW,oBAAoB,CAAA;AAAA,GACnC,CAAA;AACJ,CAAA;AAEO,SAAS,kBAAmB,CAAA,EAAC,QAAU,EAAA,UAAA,EAAqC,EAAA;AAC/E,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAAC,gBAAA,CAAW,SAAS,UAAU,CAAA,CAAA;AAExD,EAAAC,0BAAA,CAAgB,MAAM;AAClB,IAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,SAAsB,KAAA;AACnD,MAAS,QAAA,CAAA,EAAC,WAAmC,KAAO,EAAA,UAAA,CAAW,SAAS,CAAK,IAAA,IAAG,CAAA,CAAA;AAAA,KACnF,CAAA,CAAA;AAAA,GACL,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AAGf,EAAA,uBAAQC,cAAA,CAAA,cAAA,CAAe,QAAf,EAAA,EAAwB,KAAO,EAAA,KAAA,EACnC,QAAC,kBAAAA,cAAA,CAAA,oBAAA,CAAqB,QAArB,EAAA,EAA8B,KAAO,EAAA,QAAA,EACjC,UACL,CACJ,EAAA,CAAA,CAAA;AACJ","file":"index.js","sourcesContent":["import React, { createContext, useContext, useReducer } from \"react\";\nimport { AnalyticsDimension } from \"@hisptz/dhis2-utils\";\nimport { set } from \"lodash\";\nimport { useUpdateEffect } from \"usehooks-ts\";\n\nexport type Dimension = \"ou\" | \"pe\" | \"dx\" | \"co\";\n\nexport type DimensionUpdater = (data: { dimension: Dimension; value: string[] }) => void\nexport const DimensionState = createContext<AnalyticsDimension>({\n dx: [],\n pe: [],\n ou: []\n})\nexport const DimensionUpdateState = createContext<DimensionUpdater | undefined>(undefined);\n\n\nfunction reducer(state: AnalyticsDimension, {dimension, value}: { dimension: Dimension, value: string[] }) {\n const updatedState = {...(state ?? {})};\n set(updatedState, [dimension], value);\n return updatedState\n}\n\nexport interface DimensionProviderProps {\n children: React.ReactNode,\n dimensions: AnalyticsDimension\n}\n\nexport function useDimensions() {\n return [\n useContext(DimensionState),\n useContext(DimensionUpdateState)\n ] as [AnalyticsDimension, DimensionUpdater]\n}\n\nexport function DimensionsProvider({children, dimensions}: DimensionProviderProps) {\n const [state, dispatch] = useReducer(reducer, dimensions);\n\n useUpdateEffect(() => {\n Object.keys(dimensions).forEach((dimension: string) => {\n dispatch({dimension: dimension as Dimension, value: dimensions[dimension] ?? []})\n })\n }, [dimensions]);\n\n\n return <DimensionState.Provider value={state}>\n <DimensionUpdateState.Provider value={dispatch}>\n {children}\n </DimensionUpdateState.Provider>\n </DimensionState.Provider>\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":["createContext","set","useContext","useReducer","useEffect","jsx"],"mappings":";;;;;;AAUO,MAAM,iBAAiBA,mBAAkC,CAAA;AAAA,EAC/D,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AACN,CAAC,EAAA;AACM,MAAM,oBAAuB,GAAAA,mBAAA;AAAA,EACnC,KAAA,CAAA;AACD,EAAA;AAEA,SAAS,OACR,CAAA,KAAA,EACA,EAAE,SAAA,EAAW,OACZ,EAAA;AACD,EAAA,MAAM,YAAe,GAAA,EAAE,GAAI,KAAA,IAAS,EAAI,EAAA,CAAA;AACxC,EAAAC,UAAA,CAAI,YAAc,EAAA,CAAC,SAAS,CAAA,EAAG,KAAK,CAAA,CAAA;AACpC,EAAO,OAAA,YAAA,CAAA;AACR,CAAA;AAOO,SAAS,aAAgB,GAAA;AAC/B,EAAA,OAAO,CAACC,gBAAW,CAAA,cAAc,CAAG,EAAAA,gBAAA,CAAW,oBAAoB,CAAC,CAAA,CAAA;AAIrE,CAAA;AAEO,SAAS,kBAAmB,CAAA;AAAA,EAClC,QAAA;AAAA,EACA,UAAA;AACD,CAA2B,EAAA;AAC1B,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAAC,gBAAA,CAAW,SAAS,UAAU,CAAA,CAAA;AAExD,EAAAC,eAAA,CAAU,MAAM;AACf,IAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,SAAsB,KAAA;AACtD,MAAS,QAAA,CAAA;AAAA,QACR,SAAA;AAAA,QACA,KAAO,EAAA,UAAA,CAAW,SAAS,CAAA,IAAK,EAAC;AAAA,OACjC,CAAA,CAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACF,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AAEf,EAAA,uBACEC,cAAA,CAAA,cAAA,CAAe,QAAf,EAAA,EAAwB,KAAO,EAAA,KAAA,EAC/B,QAAC,kBAAAA,cAAA,CAAA,oBAAA,CAAqB,QAArB,EAAA,EAA8B,KAAO,EAAA,QAAA,EACpC,UACF,CACD,EAAA,CAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import React, { createContext, useContext, useEffect, useReducer } from \"react\";\nimport { AnalyticsDimension } from \"@hisptz/dhis2-utils\";\nimport { set } from \"lodash\";\n\nexport type Dimension = \"ou\" | \"pe\" | \"dx\" | \"co\";\n\nexport type DimensionUpdater = (data: {\n\tdimension: Dimension;\n\tvalue: string[];\n}) => void;\nexport const DimensionState = createContext<AnalyticsDimension>({\n\tdx: [],\n\tpe: [],\n\tou: [],\n});\nexport const DimensionUpdateState = createContext<DimensionUpdater | undefined>(\n\tundefined,\n);\n\nfunction reducer(\n\tstate: AnalyticsDimension,\n\t{ dimension, value }: { dimension: Dimension; value: string[] },\n) {\n\tconst updatedState = { ...(state ?? {}) };\n\tset(updatedState, [dimension], value);\n\treturn updatedState;\n}\n\nexport interface DimensionProviderProps {\n\tchildren: React.ReactNode;\n\tdimensions: AnalyticsDimension;\n}\n\nexport function useDimensions() {\n\treturn [useContext(DimensionState), useContext(DimensionUpdateState)] as [\n\t\tAnalyticsDimension,\n\t\tDimensionUpdater,\n\t];\n}\n\nexport function DimensionsProvider({\n\tchildren,\n\tdimensions,\n}: DimensionProviderProps) {\n\tconst [state, dispatch] = useReducer(reducer, dimensions);\n\n\tuseEffect(() => {\n\t\tObject.keys(dimensions).forEach((dimension: string) => {\n\t\t\tdispatch({\n\t\t\t\tdimension: dimension as Dimension,\n\t\t\t\tvalue: dimensions[dimension] ?? [],\n\t\t\t});\n\t\t});\n\t}, [dimensions]);\n\n\treturn (\n\t\t<DimensionState.Provider value={state}>\n\t\t\t<DimensionUpdateState.Provider value={dispatch}>\n\t\t\t\t{children}\n\t\t\t</DimensionUpdateState.Provider>\n\t\t</DimensionState.Provider>\n\t);\n}\n"]}
@@ -2,9 +2,9 @@ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { isEmpty, slice } from 'lodash';
3
3
  import { useCustomPivotTableEngine } from '../../state/engine.js';
4
4
  import { TableBody, DataTableRow, DataTableCell } from '@dhis2/ui';
5
- import { Fragment as Fragment$1 } from 'react';
5
+ import { useRef, Fragment as Fragment$1 } from 'react';
6
6
  import classes from './TableBody.module.css';
7
- import { useElementSize } from 'usehooks-ts';
7
+ import { useResizeObserver } from 'usehooks-ts';
8
8
 
9
9
  function DataRowRenderer({
10
10
  mapper,
@@ -33,7 +33,10 @@ function RowRenderer({
33
33
  index,
34
34
  config: { rows, columns, mapper, prevWidth, fixRowHeaders }
35
35
  }) {
36
- const [cellRef, { width }] = useElementSize();
36
+ const cellRef = useRef(null);
37
+ const { width } = useResizeObserver({
38
+ ref: cellRef
39
+ });
37
40
  const rowSpan = slice(rows, index + 1).reduce((acc, column) => {
38
41
  return acc * (column.items?.length ?? 1);
39
42
  }, 1);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":["mapper","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["import { Header } from \"../../services/engine\";\nimport { isEmpty, slice } from \"lodash\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableCell, DataTableRow, TableBody } from \"@dhis2/ui\";\nimport React, { Fragment, ReactNode } from \"react\";\nimport { AnalyticsItem } from \"@hisptz/dhis2-utils\";\nimport classes from \"./TableBody.module.css\";\nimport { useElementSize } from \"usehooks-ts\";\nimport { DHIS2Dimension } from \"../../interfaces/index.js\";\n\nfunction DataRowRenderer({\n\tmapper,\n\titem,\n\tdimension,\n}: {\n\tmapper?: { [key: string]: any };\n\titem: AnalyticsItem;\n\tdimension: DHIS2Dimension;\n}) {\n\tconst engine = useCustomPivotTableEngine();\n\n\tconst columnMappers = engine?.columnMap;\n\tconst completeMapper = columnMappers?.map((map) => ({\n\t\t...map,\n\t\t...mapper,\n\t\t[dimension]: item.uid,\n\t}));\n\treturn (\n\t\t<>\n\t\t\t{completeMapper?.map((mapper) => (\n\t\t\t\t<DataTableCell\n\t\t\t\t\tkey={`${Object.values(mapper).join(\"-\")}-value`}\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tbordered\n\t\t\t\t>\n\t\t\t\t\t{engine?.getValue(mapper) ?? \"\"}\n\t\t\t\t</DataTableCell>\n\t\t\t))}\n\t\t</>\n\t);\n}\n\nfunction RowRenderer({\n\trow,\n\tindex,\n\tconfig: { rows, columns, mapper, prevWidth, fixRowHeaders },\n}: {\n\trow: Header;\n\tindex: number;\n\tconfig: {\n\t\trows: Header[];\n\t\tcolumns?: Header[];\n\t\tmapper?: { [key: string]: string | undefined };\n\t\tprevWidth?: number;\n\t\tfixRowHeaders?: boolean;\n\t};\n}): React.ReactElement | null {\n\tconst [cellRef, { width }] = useElementSize();\n\n\tconst rowSpan = slice(rows, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\tconst hasSubRows = !isEmpty(rows[index + 1]);\n\tconst nextRow = rows[index + 1];\n\n\treturn (\n\t\t<>\n\t\t\t{row?.items?.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={`${item.name}-${row.dimension}-fragment`}>\n\t\t\t\t\t\t<DataTableRow key={`${item.name}-${row.dimension}-row`}>\n\t\t\t\t\t\t\t<DataTableCell\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\tref={cellRef}\n\t\t\t\t\t\t\t\tfixed={fixRowHeaders}\n\t\t\t\t\t\t\t\tleft={`${prevWidth}px` as unknown as boolean}\n\t\t\t\t\t\t\t\tclassName={classes[\"header-cell\"]}\n\t\t\t\t\t\t\t\ttag=\"th\"\n\t\t\t\t\t\t\t\tbordered\n\t\t\t\t\t\t\t\trowSpan={(\n\t\t\t\t\t\t\t\t\trowSpan + (hasSubRows ? 1 : 0)\n\t\t\t\t\t\t\t\t).toString()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.name as unknown as string | ReactNode}\n\t\t\t\t\t\t\t</DataTableCell>\n\t\t\t\t\t\t\t{!hasSubRows ? (\n\t\t\t\t\t\t\t\t<DataRowRenderer\n\t\t\t\t\t\t\t\t\tdimension={row.dimension}\n\t\t\t\t\t\t\t\t\tmapper={mapper}\n\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</DataTableRow>\n\t\t\t\t\t\t{hasSubRows ? (\n\t\t\t\t\t\t\t<RowRenderer\n\t\t\t\t\t\t\t\trow={nextRow}\n\t\t\t\t\t\t\t\tindex={index + 1}\n\t\t\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\t\tprevWidth: width,\n\t\t\t\t\t\t\t\t\tmapper: {\n\t\t\t\t\t\t\t\t\t\t...mapper,\n\t\t\t\t\t\t\t\t\t\t[row.dimension]:\n\t\t\t\t\t\t\t\t\t\t\titem.uid as unknown as string,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nexport function CustomPivotTableBody() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst rows = engine?.rowHeaders;\n\tconst columns = engine?.columnHeaders;\n\tconst fixRowHeaders = engine?.fixRowHeaders;\n\n\tif (!rows || isEmpty(rows)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableBody>\n\t\t\t<RowRenderer\n\t\t\t\trow={rows[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ rows, columns, fixRowHeaders }}\n\t\t\t/>\n\t\t</TableBody>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":["mapper","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["import { Header } from \"../../services/engine\";\nimport { isEmpty, slice } from \"lodash\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableCell, DataTableRow, TableBody } from \"@dhis2/ui\";\nimport React, { Fragment, ReactNode, useRef } from \"react\";\nimport { AnalyticsItem } from \"@hisptz/dhis2-utils\";\nimport classes from \"./TableBody.module.css\";\nimport { DHIS2Dimension } from \"../../interfaces/index.js\";\nimport { useResizeObserver } from \"usehooks-ts\";\n\nfunction DataRowRenderer({\n\tmapper,\n\titem,\n\tdimension,\n}: {\n\tmapper?: { [key: string]: any };\n\titem: AnalyticsItem;\n\tdimension: DHIS2Dimension;\n}) {\n\tconst engine = useCustomPivotTableEngine();\n\n\tconst columnMappers = engine?.columnMap;\n\tconst completeMapper = columnMappers?.map((map) => ({\n\t\t...map,\n\t\t...mapper,\n\t\t[dimension]: item.uid,\n\t}));\n\treturn (\n\t\t<>\n\t\t\t{completeMapper?.map((mapper) => (\n\t\t\t\t<DataTableCell\n\t\t\t\t\tkey={`${Object.values(mapper).join(\"-\")}-value`}\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tbordered\n\t\t\t\t>\n\t\t\t\t\t{engine?.getValue(mapper) ?? \"\"}\n\t\t\t\t</DataTableCell>\n\t\t\t))}\n\t\t</>\n\t);\n}\n\nfunction RowRenderer({\n\trow,\n\tindex,\n\tconfig: { rows, columns, mapper, prevWidth, fixRowHeaders },\n}: {\n\trow: Header;\n\tindex: number;\n\tconfig: {\n\t\trows: Header[];\n\t\tcolumns?: Header[];\n\t\tmapper?: { [key: string]: string | undefined };\n\t\tprevWidth?: number;\n\t\tfixRowHeaders?: boolean;\n\t};\n}): React.ReactElement | null {\n\tconst cellRef = useRef<HTMLElement | null>(null);\n\tconst { width } = useResizeObserver({\n\t\tref: cellRef,\n\t});\n\n\tconst rowSpan = slice(rows, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\tconst hasSubRows = !isEmpty(rows[index + 1]);\n\tconst nextRow = rows[index + 1];\n\n\treturn (\n\t\t<>\n\t\t\t{row?.items?.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={`${item.name}-${row.dimension}-fragment`}>\n\t\t\t\t\t\t<DataTableRow key={`${item.name}-${row.dimension}-row`}>\n\t\t\t\t\t\t\t<DataTableCell\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\tref={cellRef}\n\t\t\t\t\t\t\t\tfixed={fixRowHeaders}\n\t\t\t\t\t\t\t\tleft={`${prevWidth}px` as unknown as boolean}\n\t\t\t\t\t\t\t\tclassName={classes[\"header-cell\"]}\n\t\t\t\t\t\t\t\ttag=\"th\"\n\t\t\t\t\t\t\t\tbordered\n\t\t\t\t\t\t\t\trowSpan={(\n\t\t\t\t\t\t\t\t\trowSpan + (hasSubRows ? 1 : 0)\n\t\t\t\t\t\t\t\t).toString()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.name as unknown as string | ReactNode}\n\t\t\t\t\t\t\t</DataTableCell>\n\t\t\t\t\t\t\t{!hasSubRows ? (\n\t\t\t\t\t\t\t\t<DataRowRenderer\n\t\t\t\t\t\t\t\t\tdimension={row.dimension}\n\t\t\t\t\t\t\t\t\tmapper={mapper}\n\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</DataTableRow>\n\t\t\t\t\t\t{hasSubRows ? (\n\t\t\t\t\t\t\t<RowRenderer\n\t\t\t\t\t\t\t\trow={nextRow}\n\t\t\t\t\t\t\t\tindex={index + 1}\n\t\t\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\t\tprevWidth: width,\n\t\t\t\t\t\t\t\t\tmapper: {\n\t\t\t\t\t\t\t\t\t\t...mapper,\n\t\t\t\t\t\t\t\t\t\t[row.dimension]:\n\t\t\t\t\t\t\t\t\t\t\titem.uid as unknown as string,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nexport function CustomPivotTableBody() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst rows = engine?.rowHeaders;\n\tconst columns = engine?.columnHeaders;\n\tconst fixRowHeaders = engine?.fixRowHeaders;\n\n\tif (!rows || isEmpty(rows)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableBody>\n\t\t\t<RowRenderer\n\t\t\t\trow={rows[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ rows, columns, fixRowHeaders }}\n\t\t\t/>\n\t\t</TableBody>\n\t);\n}\n"]}
@@ -1,16 +1,20 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { useRef } from 'react';
2
3
  import { useCustomPivotTableEngine } from '../../state/engine.js';
3
4
  import { TableHead, DataTableRow, DataTableColumnHeader } from '@dhis2/ui';
4
5
  import { isEmpty, slice, times } from 'lodash';
5
6
  import classes from './TableHeaders.module.css';
6
- import { useElementSize } from 'usehooks-ts';
7
+ import { useResizeObserver } from 'usehooks-ts';
7
8
 
8
9
  function ColumnRenderer({
9
10
  column,
10
11
  index,
11
12
  config: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns, engine }
12
13
  }) {
13
- const [columnHeaderRef, { height }] = useElementSize();
14
+ const ref = useRef(null);
15
+ const { height } = useResizeObserver({
16
+ ref
17
+ });
14
18
  if (!column) {
15
19
  return null;
16
20
  }
@@ -54,7 +58,7 @@ function ColumnRenderer({
54
58
  {
55
59
  fixed: fixColumnHeaders,
56
60
  top: `${prevHeight.toString()}px`,
57
- ref: index === 0 ? columnHeaderRef : void 0,
61
+ ref: index === 0 ? ref : void 0,
58
62
  className: classes["table-header"],
59
63
  align: "center",
60
64
  colSpan: colSpan.toString(),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":["column"],"mappings":"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","file":"index.js","sourcesContent":["import React from \"react\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableColumnHeader, DataTableRow, TableHead } from \"@dhis2/ui\";\nimport { isEmpty, slice, times } from \"lodash\";\nimport { DHIS2PivotTableEngine, Header } from \"../../services/engine.js\";\nimport classes from \"./TableHeaders.module.css\";\nimport { useElementSize } from \"usehooks-ts\";\n\nfunction ColumnRenderer({\n\tcolumn,\n\tindex,\n\tconfig: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns, engine },\n}: {\n\tcolumn: Header;\n\tindex: number;\n\tconfig: {\n\t\tcolumns: Header[];\n\t\trowHeaders?: Header[];\n\t\tprevHeight?: number;\n\t\tfixColumnHeaders?: boolean;\n\t\tengine: DHIS2PivotTableEngine;\n\t};\n}): React.ReactElement | null {\n\tconst [columnHeaderRef, { height }] = useElementSize();\n\n\tif (!column) {\n\t\treturn null;\n\t}\n\tconst colSpan = slice(columns, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\n\tconst hasSubColumns = !isEmpty(columns[index + 1]);\n\tconst nextColumn = columns[index + 1];\n\n\tconst multiplicationFactor = slice(columns, 0, index).reduce(\n\t\t(acc, column) => {\n\t\t\treturn acc * (column.items?.length ?? 1);\n\t\t},\n\t\t1,\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{engine?.showTitle && (\n\t\t\t\t<DataTableRow>\n\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tcolSpan={engine.titleSpan.toString()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{engine.title ?? \"\"}\n\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t</DataTableRow>\n\t\t\t)}\n\t\t\t<DataTableRow>\n\t\t\t\t{index === 0 &&\n\t\t\t\t\trowHeaders?.map((header) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\ttop={\"0\"}\n\t\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\t\trowSpan={columns.length.toString()}\n\t\t\t\t\t\t\t\tkey={`${header.dimension}-header-column`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header.label ?? \"\"}\n\t\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t{times(multiplicationFactor, (colNo) => {\n\t\t\t\t\treturn column.items?.map((item) => (\n\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\ttop={`${prevHeight.toString()}px`}\n\t\t\t\t\t\t\tref={index === 0 ? columnHeaderRef : undefined}\n\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tcolSpan={colSpan.toString()}\n\t\t\t\t\t\t\tkey={`${colNo}-${item.name}-column-header`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.name as unknown as string}\n\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t));\n\t\t\t\t})}\n\t\t\t</DataTableRow>\n\t\t\t{hasSubColumns ? (\n\t\t\t\t<ColumnRenderer\n\t\t\t\t\tcolumn={nextColumn}\n\t\t\t\t\tindex={index + 1}\n\t\t\t\t\tconfig={{\n\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\trowHeaders,\n\t\t\t\t\t\tprevHeight: height,\n\t\t\t\t\t\tfixColumnHeaders,\n\t\t\t\t\t\tengine,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</>\n\t);\n}\n\nexport function TableHeaders() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst columns = engine?.columnHeaders;\n\tconst rowHeaders = engine?.rowHeaders;\n\tconst fixColumnHeaders = engine?.fixColumnHeaders;\n\n\tif (!columns || isEmpty(columns)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableHead>\n\t\t\t<ColumnRenderer\n\t\t\t\tcolumn={columns[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ engine, rowHeaders, columns, fixColumnHeaders }}\n\t\t\t/>\n\t\t</TableHead>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":["column"],"mappings":"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","file":"index.js","sourcesContent":["import React, { useRef } from \"react\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableColumnHeader, DataTableRow, TableHead } from \"@dhis2/ui\";\nimport { isEmpty, slice, times } from \"lodash\";\nimport { DHIS2PivotTableEngine, Header } from \"../../services/engine.js\";\nimport classes from \"./TableHeaders.module.css\";\nimport { useResizeObserver } from \"usehooks-ts\";\n\nfunction ColumnRenderer({\n\tcolumn,\n\tindex,\n\tconfig: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns, engine },\n}: {\n\tcolumn: Header;\n\tindex: number;\n\tconfig: {\n\t\tcolumns: Header[];\n\t\trowHeaders?: Header[];\n\t\tprevHeight?: number;\n\t\tfixColumnHeaders?: boolean;\n\t\tengine: DHIS2PivotTableEngine;\n\t};\n}): React.ReactElement | null {\n\tconst ref = useRef<HTMLElement | null>(null);\n\tconst { height } = useResizeObserver({\n\t\tref,\n\t});\n\n\tif (!column) {\n\t\treturn null;\n\t}\n\tconst colSpan = slice(columns, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\n\tconst hasSubColumns = !isEmpty(columns[index + 1]);\n\tconst nextColumn = columns[index + 1];\n\n\tconst multiplicationFactor = slice(columns, 0, index).reduce(\n\t\t(acc, column) => {\n\t\t\treturn acc * (column.items?.length ?? 1);\n\t\t},\n\t\t1,\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{engine?.showTitle && (\n\t\t\t\t<DataTableRow>\n\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tcolSpan={engine.titleSpan.toString()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{engine.title ?? \"\"}\n\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t</DataTableRow>\n\t\t\t)}\n\t\t\t<DataTableRow>\n\t\t\t\t{index === 0 &&\n\t\t\t\t\trowHeaders?.map((header) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\ttop={\"0\"}\n\t\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\t\trowSpan={columns.length.toString()}\n\t\t\t\t\t\t\t\tkey={`${header.dimension}-header-column`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header.label ?? \"\"}\n\t\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t{times(multiplicationFactor, (colNo) => {\n\t\t\t\t\treturn column.items?.map((item) => (\n\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\ttop={`${prevHeight.toString()}px`}\n\t\t\t\t\t\t\tref={index === 0 ? ref : undefined}\n\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tcolSpan={colSpan.toString()}\n\t\t\t\t\t\t\tkey={`${colNo}-${item.name}-column-header`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.name as unknown as string}\n\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t));\n\t\t\t\t})}\n\t\t\t</DataTableRow>\n\t\t\t{hasSubColumns ? (\n\t\t\t\t<ColumnRenderer\n\t\t\t\t\tcolumn={nextColumn}\n\t\t\t\t\tindex={index + 1}\n\t\t\t\t\tconfig={{\n\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\trowHeaders,\n\t\t\t\t\t\tprevHeight: height,\n\t\t\t\t\t\tfixColumnHeaders,\n\t\t\t\t\t\tengine,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</>\n\t);\n}\n\nexport function TableHeaders() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst columns = engine?.columnHeaders;\n\tconst rowHeaders = engine?.rowHeaders;\n\tconst fixColumnHeaders = engine?.fixColumnHeaders;\n\n\tif (!columns || isEmpty(columns)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableHead>\n\t\t\t<ColumnRenderer\n\t\t\t\tcolumn={columns[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ engine, rowHeaders, columns, fixColumnHeaders }}\n\t\t\t/>\n\t\t</TableHead>\n\t);\n}\n"]}
@@ -1,30 +1,34 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { createContext, useContext, useReducer } from 'react';
2
+ import { createContext, useContext, useReducer, useEffect } from 'react';
3
3
  import { set } from 'lodash';
4
- import { useUpdateEffect } from 'usehooks-ts';
5
4
 
6
5
  const DimensionState = createContext({
7
6
  dx: [],
8
7
  pe: [],
9
8
  ou: []
10
9
  });
11
- const DimensionUpdateState = createContext(void 0);
10
+ const DimensionUpdateState = createContext(
11
+ void 0
12
+ );
12
13
  function reducer(state, { dimension, value }) {
13
14
  const updatedState = { ...state ?? {} };
14
15
  set(updatedState, [dimension], value);
15
16
  return updatedState;
16
17
  }
17
18
  function useDimensions() {
18
- return [
19
- useContext(DimensionState),
20
- useContext(DimensionUpdateState)
21
- ];
19
+ return [useContext(DimensionState), useContext(DimensionUpdateState)];
22
20
  }
23
- function DimensionsProvider({ children, dimensions }) {
21
+ function DimensionsProvider({
22
+ children,
23
+ dimensions
24
+ }) {
24
25
  const [state, dispatch] = useReducer(reducer, dimensions);
25
- useUpdateEffect(() => {
26
+ useEffect(() => {
26
27
  Object.keys(dimensions).forEach((dimension) => {
27
- dispatch({ dimension, value: dimensions[dimension] ?? [] });
28
+ dispatch({
29
+ dimension,
30
+ value: dimensions[dimension] ?? []
31
+ });
28
32
  });
29
33
  }, [dimensions]);
30
34
  return /* @__PURE__ */ jsx(DimensionState.Provider, { value: state, children: /* @__PURE__ */ jsx(DimensionUpdateState.Provider, { value: dispatch, children }) });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":[],"mappings":";;;;;AAQO,MAAM,iBAAiB,aAAkC,CAAA;AAAA,EAC5D,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AACT,CAAC,EAAA;AACY,MAAA,oBAAA,GAAuB,cAA4C,KAAS,CAAA,EAAA;AAGzF,SAAS,OAAQ,CAAA,KAAA,EAA2B,EAAC,SAAA,EAAW,OAAmD,EAAA;AACvG,EAAA,MAAM,YAAe,GAAA,EAAC,GAAI,KAAA,IAAS,EAAG,EAAA,CAAA;AACtC,EAAA,GAAA,CAAI,YAAc,EAAA,CAAC,SAAS,CAAA,EAAG,KAAK,CAAA,CAAA;AACpC,EAAO,OAAA,YAAA,CAAA;AACX,CAAA;AAOO,SAAS,aAAgB,GAAA;AAC5B,EAAO,OAAA;AAAA,IACH,WAAW,cAAc,CAAA;AAAA,IACzB,WAAW,oBAAoB,CAAA;AAAA,GACnC,CAAA;AACJ,CAAA;AAEO,SAAS,kBAAmB,CAAA,EAAC,QAAU,EAAA,UAAA,EAAqC,EAAA;AAC/E,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,UAAA,CAAW,SAAS,UAAU,CAAA,CAAA;AAExD,EAAA,eAAA,CAAgB,MAAM;AAClB,IAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,SAAsB,KAAA;AACnD,MAAS,QAAA,CAAA,EAAC,WAAmC,KAAO,EAAA,UAAA,CAAW,SAAS,CAAK,IAAA,IAAG,CAAA,CAAA;AAAA,KACnF,CAAA,CAAA;AAAA,GACL,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AAGf,EAAA,uBAAQ,GAAA,CAAA,cAAA,CAAe,QAAf,EAAA,EAAwB,KAAO,EAAA,KAAA,EACnC,QAAC,kBAAA,GAAA,CAAA,oBAAA,CAAqB,QAArB,EAAA,EAA8B,KAAO,EAAA,QAAA,EACjC,UACL,CACJ,EAAA,CAAA,CAAA;AACJ","file":"index.js","sourcesContent":["import React, { createContext, useContext, useReducer } from \"react\";\nimport { AnalyticsDimension } from \"@hisptz/dhis2-utils\";\nimport { set } from \"lodash\";\nimport { useUpdateEffect } from \"usehooks-ts\";\n\nexport type Dimension = \"ou\" | \"pe\" | \"dx\" | \"co\";\n\nexport type DimensionUpdater = (data: { dimension: Dimension; value: string[] }) => void\nexport const DimensionState = createContext<AnalyticsDimension>({\n dx: [],\n pe: [],\n ou: []\n})\nexport const DimensionUpdateState = createContext<DimensionUpdater | undefined>(undefined);\n\n\nfunction reducer(state: AnalyticsDimension, {dimension, value}: { dimension: Dimension, value: string[] }) {\n const updatedState = {...(state ?? {})};\n set(updatedState, [dimension], value);\n return updatedState\n}\n\nexport interface DimensionProviderProps {\n children: React.ReactNode,\n dimensions: AnalyticsDimension\n}\n\nexport function useDimensions() {\n return [\n useContext(DimensionState),\n useContext(DimensionUpdateState)\n ] as [AnalyticsDimension, DimensionUpdater]\n}\n\nexport function DimensionsProvider({children, dimensions}: DimensionProviderProps) {\n const [state, dispatch] = useReducer(reducer, dimensions);\n\n useUpdateEffect(() => {\n Object.keys(dimensions).forEach((dimension: string) => {\n dispatch({dimension: dimension as Dimension, value: dimensions[dimension] ?? []})\n })\n }, [dimensions]);\n\n\n return <DimensionState.Provider value={state}>\n <DimensionUpdateState.Provider value={dispatch}>\n {children}\n </DimensionUpdateState.Provider>\n </DimensionState.Provider>\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":[],"mappings":";;;;AAUO,MAAM,iBAAiB,aAAkC,CAAA;AAAA,EAC/D,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AACN,CAAC,EAAA;AACM,MAAM,oBAAuB,GAAA,aAAA;AAAA,EACnC,KAAA,CAAA;AACD,EAAA;AAEA,SAAS,OACR,CAAA,KAAA,EACA,EAAE,SAAA,EAAW,OACZ,EAAA;AACD,EAAA,MAAM,YAAe,GAAA,EAAE,GAAI,KAAA,IAAS,EAAI,EAAA,CAAA;AACxC,EAAA,GAAA,CAAI,YAAc,EAAA,CAAC,SAAS,CAAA,EAAG,KAAK,CAAA,CAAA;AACpC,EAAO,OAAA,YAAA,CAAA;AACR,CAAA;AAOO,SAAS,aAAgB,GAAA;AAC/B,EAAA,OAAO,CAAC,UAAW,CAAA,cAAc,CAAG,EAAA,UAAA,CAAW,oBAAoB,CAAC,CAAA,CAAA;AAIrE,CAAA;AAEO,SAAS,kBAAmB,CAAA;AAAA,EAClC,QAAA;AAAA,EACA,UAAA;AACD,CAA2B,EAAA;AAC1B,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,UAAA,CAAW,SAAS,UAAU,CAAA,CAAA;AAExD,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,SAAsB,KAAA;AACtD,MAAS,QAAA,CAAA;AAAA,QACR,SAAA;AAAA,QACA,KAAO,EAAA,UAAA,CAAW,SAAS,CAAA,IAAK,EAAC;AAAA,OACjC,CAAA,CAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACF,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AAEf,EAAA,uBACE,GAAA,CAAA,cAAA,CAAe,QAAf,EAAA,EAAwB,KAAO,EAAA,KAAA,EAC/B,QAAC,kBAAA,GAAA,CAAA,oBAAA,CAAqB,QAArB,EAAA,EAA8B,KAAO,EAAA,QAAA,EACpC,UACF,CACD,EAAA,CAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import React, { createContext, useContext, useEffect, useReducer } from \"react\";\nimport { AnalyticsDimension } from \"@hisptz/dhis2-utils\";\nimport { set } from \"lodash\";\n\nexport type Dimension = \"ou\" | \"pe\" | \"dx\" | \"co\";\n\nexport type DimensionUpdater = (data: {\n\tdimension: Dimension;\n\tvalue: string[];\n}) => void;\nexport const DimensionState = createContext<AnalyticsDimension>({\n\tdx: [],\n\tpe: [],\n\tou: [],\n});\nexport const DimensionUpdateState = createContext<DimensionUpdater | undefined>(\n\tundefined,\n);\n\nfunction reducer(\n\tstate: AnalyticsDimension,\n\t{ dimension, value }: { dimension: Dimension; value: string[] },\n) {\n\tconst updatedState = { ...(state ?? {}) };\n\tset(updatedState, [dimension], value);\n\treturn updatedState;\n}\n\nexport interface DimensionProviderProps {\n\tchildren: React.ReactNode;\n\tdimensions: AnalyticsDimension;\n}\n\nexport function useDimensions() {\n\treturn [useContext(DimensionState), useContext(DimensionUpdateState)] as [\n\t\tAnalyticsDimension,\n\t\tDimensionUpdater,\n\t];\n}\n\nexport function DimensionsProvider({\n\tchildren,\n\tdimensions,\n}: DimensionProviderProps) {\n\tconst [state, dispatch] = useReducer(reducer, dimensions);\n\n\tuseEffect(() => {\n\t\tObject.keys(dimensions).forEach((dimension: string) => {\n\t\t\tdispatch({\n\t\t\t\tdimension: dimension as Dimension,\n\t\t\t\tvalue: dimensions[dimension] ?? [],\n\t\t\t});\n\t\t});\n\t}, [dimensions]);\n\n\treturn (\n\t\t<DimensionState.Provider value={state}>\n\t\t\t<DimensionUpdateState.Provider value={dispatch}>\n\t\t\t\t{children}\n\t\t\t</DimensionUpdateState.Provider>\n\t\t</DimensionState.Provider>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":[],"mappings":"AAqHA,wBAAgB,oBAAoB,mDAmBnC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":[],"mappings":"AAwHA,wBAAgB,oBAAoB,mDAmBnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":[],"mappings":"AA0GA,wBAAgB,YAAY,sDAmB3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":[],"mappings":"AA6GA,wBAAgB,YAAY,sDAmB3B"}
@@ -12,5 +12,5 @@ export interface DimensionProviderProps {
12
12
  dimensions: AnalyticsDimension;
13
13
  }
14
14
  export declare function useDimensions(): [AnalyticsDimension, DimensionUpdater];
15
- export declare function DimensionsProvider({ children, dimensions }: DimensionProviderProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function DimensionsProvider({ children, dimensions, }: DimensionProviderProps): import("react/jsx-runtime").JSX.Element;
16
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgD,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAIzD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,KAAK,IAAI,CAAA;AACxF,eAAO,MAAM,cAAc,mCAIzB,CAAA;AACF,eAAO,MAAM,oBAAoB,6CAAyD,CAAC;AAS3F,MAAM,WAAW,sBAAsB;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,UAAU,EAAE,kBAAkB,CAAA;CACjC;AAED,wBAAgB,aAAa,IAIpB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAC9C;AAED,wBAAgB,kBAAkB,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAC,EAAE,sBAAsB,2CAehF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;CAChB,KAAK,IAAI,CAAC;AACX,eAAO,MAAM,cAAc,mCAIzB,CAAC;AACH,eAAO,MAAM,oBAAoB,6CAEhC,CAAC;AAWF,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,UAAU,EAAE,kBAAkB,CAAC;CAC/B;AAED,wBAAgB,aAAa,IAC6C,CACxE,kBAAkB,EAClB,gBAAgB,CAChB,CACD;AAED,wBAAgB,kBAAkB,CAAC,EAClC,QAAQ,EACR,UAAU,GACV,EAAE,sBAAsB,2CAmBxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hisptz/dhis2-analytics",
3
- "version": "2.0.60",
3
+ "version": "2.0.62",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/types/index.d.ts",
@@ -45,7 +45,7 @@
45
45
  "styled-jsx": "^5.1.2",
46
46
  "tsup": "^8.0.1",
47
47
  "typescript": "^5.3.3",
48
- "usehooks-ts": "^2.9.2",
48
+ "usehooks-ts": "^2.16.0",
49
49
  "@repo/eslint-config": "0.0.0",
50
50
  "@repo/typescript-config": "0.0.2"
51
51
  },
@@ -78,8 +78,8 @@
78
78
  "screenfull": "^6.0.2",
79
79
  "xlsx": "^0.18.5",
80
80
  "zod": "^3.23.8",
81
- "@hisptz/dhis2-ui": "2.0.37",
82
- "@hisptz/dhis2-utils": "2.0.17"
81
+ "@hisptz/dhis2-utils": "2.0.17",
82
+ "@hisptz/dhis2-ui": "2.0.39"
83
83
  },
84
84
  "peerDependencies": {
85
85
  "@dhis2/app-runtime": "^3.10.2",