@sme.up/doc-alchemist 1.0.0-SNAPSHOT-20250613100237 → 1.0.0-SNAPSHOT-20250613190613

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.
@@ -1,4 +1,4 @@
1
- import { SupportedExportFormats } from "../types";
1
+ import { SupportedExportFormats } from "../types/index.js";
2
2
  export const headerStyleFill = {
3
3
  type: "pattern",
4
4
  pattern: "solid",
@@ -1 +1 @@
1
- {"version":3,"file":"excel-generator.types.js","sourceRoot":"","sources":["../../../src/excel/excel-generator.types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAYlD,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,IAAI;IACnC,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,KAAK;IACnC,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,KAAK;IACnC,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,KAAK;CAC3C,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,sEAAsE;IACtE,CAAC,OAAoB,CAAC,EAAE,aAAa,EAAE,SAAS;IAChD,CAAC,KAAkB,CAAC,EAAE,aAAa,EAAE,MAAM;IAC3C,CAAC,KAAkB,CAAC,EAAE,aAAa,EAAE,MAAM;IAC3C,CAAC,KAAkB,CAAC,EAAE,aAAa,EAAE,MAAM;IAC3C,CAAC,SAAsB,CAAC,EAAE,aAAa,EAAE,UAAU;CACpD,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC5B,CAAC","sourcesContent":["import { Fill } from \"exceljs\";\nimport { SupportedExportFormats } from \"../types\";\n\nexport declare enum TotalMode {\n COUNT = \"Count\",\n SUM = \"Sum\",\n MIN = \"Min\",\n MAX = \"Max\",\n DISTINCT = \"Distinct\",\n AVERAGE = \"Average\",\n MATH = \"MATH\",\n}\n\nexport const headerStyleFill: Fill = {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"E0E0E0\" },\n};\n\nexport const exportTypeSupportsFormatting = {\n [SupportedExportFormats.XLSX]: true,\n [SupportedExportFormats.CSV]: false,\n [SupportedExportFormats.TXT]: false,\n [SupportedExportFormats.PDF_SCHEDA]: false,\n};\n\nexport const allowedTotals = {\n // The different initial number indicates the specific subtotal action\n [\"Count\" as TotalMode]: \"SUBTOTAL(3,\", // COUNTA\n [\"Sum\" as TotalMode]: \"SUBTOTAL(9,\", // SUM\n [\"Max\" as TotalMode]: \"SUBTOTAL(4,\", // MAX\n [\"Min\" as TotalMode]: \"SUBTOTAL(5,\", // MIN\n [\"Average\" as TotalMode]: \"SUBTOTAL(1,\", // AVERAGE\n};\n\nexport const footerStyleFill: Fill = {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"EEEEEE\" },\n};\n"]}
1
+ {"version":3,"file":"excel-generator.types.js","sourceRoot":"","sources":["../../../src/excel/excel-generator.types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAY3D,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,IAAI;IACnC,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,KAAK;IACnC,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,KAAK;IACnC,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,KAAK;CAC3C,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,sEAAsE;IACtE,CAAC,OAAoB,CAAC,EAAE,aAAa,EAAE,SAAS;IAChD,CAAC,KAAkB,CAAC,EAAE,aAAa,EAAE,MAAM;IAC3C,CAAC,KAAkB,CAAC,EAAE,aAAa,EAAE,MAAM;IAC3C,CAAC,KAAkB,CAAC,EAAE,aAAa,EAAE,MAAM;IAC3C,CAAC,SAAsB,CAAC,EAAE,aAAa,EAAE,UAAU;CACpD,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC5B,CAAC","sourcesContent":["import { Fill } from \"exceljs\";\nimport { SupportedExportFormats } from \"../types/index.js\";\n\nexport declare enum TotalMode {\n COUNT = \"Count\",\n SUM = \"Sum\",\n MIN = \"Min\",\n MAX = \"Max\",\n DISTINCT = \"Distinct\",\n AVERAGE = \"Average\",\n MATH = \"MATH\",\n}\n\nexport const headerStyleFill: Fill = {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"E0E0E0\" },\n};\n\nexport const exportTypeSupportsFormatting = {\n [SupportedExportFormats.XLSX]: true,\n [SupportedExportFormats.CSV]: false,\n [SupportedExportFormats.TXT]: false,\n [SupportedExportFormats.PDF_SCHEDA]: false,\n};\n\nexport const allowedTotals = {\n // The different initial number indicates the specific subtotal action\n [\"Count\" as TotalMode]: \"SUBTOTAL(3,\", // COUNTA\n [\"Sum\" as TotalMode]: \"SUBTOTAL(9,\", // SUM\n [\"Max\" as TotalMode]: \"SUBTOTAL(4,\", // MAX\n [\"Min\" as TotalMode]: \"SUBTOTAL(5,\", // MIN\n [\"Average\" as TotalMode]: \"SUBTOTAL(1,\", // AVERAGE\n};\n\nexport const footerStyleFill: Fill = {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"EEEEEE\" },\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  import { exportTypeSupportsFormatting } from "../excel/excel-generator.types.js";
2
2
  import { datesIsIsoDate, datesToDate, datesFormat } from "./dates-utility.js";
3
- import { mathNumberStringToFormattedString, mathCountDecimals, } from "./math-utility";
4
- import { objectsIsVoCodVer, objectsIsDate, objectsIsNumber, } from "./objects-utility";
3
+ import { mathNumberStringToFormattedString, mathCountDecimals, } from "./math-utility.js";
4
+ import { objectsIsVoCodVer, objectsIsDate, objectsIsNumber, } from "./objects-utility.js";
5
5
  export const getFilteredColumns = (columns) => {
6
6
  if (!columns)
7
7
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"generator-utility.js","sourceRoot":"","sources":["../../../src/utils/generator-utility.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n SmeupDataColumn,\n SmeupDataTable,\n SmeupDataCell,\n} from \"@sme.up/kokos-sdk-node\";\nimport { exportTypeSupportsFormatting } from \"../excel/excel-generator.types.js\";\nimport {\n SmeupDataObj,\n ColumnFilter,\n WebupManagerData,\n SupportedExportFormats,\n} from \"../types/index.js\";\nimport { datesIsIsoDate, datesToDate, datesFormat } from \"./dates-utility.js\";\nimport {\n mathNumberStringToFormattedString,\n mathCountDecimals,\n} from \"./math-utility\";\nimport {\n objectsIsVoCodVer,\n objectsIsDate,\n objectsIsNumber,\n} from \"./objects-utility\";\n\nexport const getFilteredColumns = (columns: SmeupDataColumn[]) => {\n if (!columns) return [];\n\n return columns.filter(column => {\n const dataObject = {\n ...column.obj,\n k: \"\",\n } as SmeupDataObj;\n return column.obj?.t !== \"J4\" && !objectsIsVoCodVer(dataObject);\n });\n};\n\n/**\n * By passing the map, length value and column name\n * creates or updates a map record with\n * @param map Contains columnNames and their longest cell's length\n * @param text The text to use in length calculation\n * @param colName The column to check\n */\nexport const updateMaxValueLength = (\n map: { [key: string]: number },\n text: string | undefined | null,\n colName: string,\n) => {\n if (!map || !text || !colName) return;\n\n const value = Math.max(...text.split(\"\\n\").map(line => line.length));\n if (map[colName]) {\n if (map[colName] < value) {\n map[colName] = value;\n }\n } else {\n map[colName] = value;\n }\n};\n\nexport const filterRows = (\n smeupDataTable: SmeupDataTable,\n filteredColumns: SmeupDataColumn[],\n filters: { [key: string]: ColumnFilter },\n) => {\n if (filters) {\n return smeupDataTable.rows.filter(row => {\n return filteredColumns.every(col => {\n const cellValue = row.cells?.[col.name]?.value;\n const columnFilter = filters[col.name];\n if (columnFilter?.checkBoxes?.length) {\n const allowedValues = columnFilter.checkBoxes.map(item => item.value);\n return (\n typeof cellValue === \"string\" && allowedValues.includes(cellValue)\n );\n }\n return true;\n });\n });\n } else {\n return smeupDataTable.rows;\n }\n};\n\n/**\n * Returns a converted and formatted cell value (string, date, number)\n * @param cell - SmeupDataCell\n * @param bookType - SupportedExportFormats\n * @param webupManagerData - WebupManagerData\n * @returns\n */\nexport const calculateCellValue = (\n cell: SmeupDataCell,\n bookType: SupportedExportFormats,\n webupManagerData: WebupManagerData,\n) => {\n if (cell.obj && objectsIsDate(cell.obj) && datesIsIsoDate(cell.value)) {\n return exportTypeSupportsFormatting[bookType]\n ? new Date(datesToDate(cell.value, webupManagerData.datesLocale))\n : datesFormat(cell.value, webupManagerData.datesLocale);\n }\n\n if (cell.obj && objectsIsNumber(cell.obj)) {\n if (!exportTypeSupportsFormatting[bookType]) {\n return (\n mathNumberStringToFormattedString(\n cell.value,\n mathCountDecimals(Number(cell.value) || 0),\n \"\",\n webupManagerData.mathLocale,\n ) || \"\"\n );\n }\n\n const numValue = Number(cell.value);\n return !isNaN(numValue) ? numValue : \"\";\n }\n\n return cell?.value ?? \"\";\n};\n\n/**\n * Conversion from Hexadecimal color to an AlphaRGB\n * @param hex string - Hexadecimal value, it can bot have and don't have the # prefix\n * @returns ARGB string code\n */\nexport const hexToArgb = (hex: string): string => {\n // Hex validation\n if (hex.startsWith(\"#\")) hex = hex.slice(1);\n if (hex.length !== 6) return \"\";\n\n // Value Parse and return\n const red = parseInt(hex.slice(0, 2), 16);\n const green = parseInt(hex.slice(2, 4), 16);\n const blue = parseInt(hex.slice(4, 6), 16);\n return `FF${red.toString(16).padStart(2, \"0\")}${green\n .toString(16)\n .padStart(2, \"0\")}${blue.toString(16).padStart(2, \"0\")}`;\n};\n\n// Utility function to detect if Buffer is available\nconst isBufferAvailable = (): boolean => {\n try {\n return typeof Buffer !== \"undefined\" && typeof Buffer.from === \"function\";\n } catch {\n return false;\n }\n};\n\n// Utility function to convert ArrayBuffer to Buffer or Uint8Array\nexport const convertToBuffer = (\n arrayBuffer: ArrayBuffer,\n): Buffer | Uint8Array => {\n if (isBufferAvailable()) {\n return Buffer.from(arrayBuffer);\n } else {\n return new Uint8Array(arrayBuffer);\n }\n};\n"]}
1
+ {"version":3,"file":"generator-utility.js","sourceRoot":"","sources":["../../../src/utils/generator-utility.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAOjF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EACL,iCAAiC,EACjC,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAA0B,EAAE,EAAE;IAC/D,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QAC7B,MAAM,UAAU,GAAG;YACjB,GAAG,MAAM,CAAC,GAAG;YACb,CAAC,EAAE,EAAE;SACU,CAAC;QAClB,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,GAA8B,EAC9B,IAA+B,EAC/B,OAAe,EACf,EAAE;IACF,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO;IAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACjB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC;YACzB,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,cAA8B,EAC9B,eAAkC,EAClC,OAAwC,EACxC,EAAE;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACtC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACjC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;gBAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;oBACrC,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACtE,OAAO,CACL,OAAO,SAAS,KAAK,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CACnE,CAAC;gBACJ,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,cAAc,CAAC,IAAI,CAAC;IAC7B,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAmB,EACnB,QAAgC,EAChC,gBAAkC,EAClC,EAAE;IACF,IAAI,IAAI,CAAC,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,4BAA4B,CAAC,QAAQ,CAAC;YAC3C,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACjE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,OAAO,CACL,iCAAiC,CAC/B,IAAI,CAAC,KAAK,EACV,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAC1C,EAAE,EACF,gBAAgB,CAAC,UAAU,CAC5B,IAAI,EAAE,CACR,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;AAC3B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE;IAC/C,iBAAiB;IACjB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,yBAAyB;IACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3C,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;SAClD,QAAQ,CAAC,EAAE,CAAC;SACZ,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC7D,CAAC,CAAC;AAEF,oDAAoD;AACpD,MAAM,iBAAiB,GAAG,GAAY,EAAE;IACtC,IAAI,CAAC;QACH,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,WAAwB,EACH,EAAE;IACvB,IAAI,iBAAiB,EAAE,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;AACH,CAAC,CAAC","sourcesContent":["import {\n SmeupDataColumn,\n SmeupDataTable,\n SmeupDataCell,\n} from \"@sme.up/kokos-sdk-node\";\nimport { exportTypeSupportsFormatting } from \"../excel/excel-generator.types.js\";\nimport {\n SmeupDataObj,\n ColumnFilter,\n WebupManagerData,\n SupportedExportFormats,\n} from \"../types/index.js\";\nimport { datesIsIsoDate, datesToDate, datesFormat } from \"./dates-utility.js\";\nimport {\n mathNumberStringToFormattedString,\n mathCountDecimals,\n} from \"./math-utility.js\";\nimport {\n objectsIsVoCodVer,\n objectsIsDate,\n objectsIsNumber,\n} from \"./objects-utility.js\";\n\nexport const getFilteredColumns = (columns: SmeupDataColumn[]) => {\n if (!columns) return [];\n\n return columns.filter(column => {\n const dataObject = {\n ...column.obj,\n k: \"\",\n } as SmeupDataObj;\n return column.obj?.t !== \"J4\" && !objectsIsVoCodVer(dataObject);\n });\n};\n\n/**\n * By passing the map, length value and column name\n * creates or updates a map record with\n * @param map Contains columnNames and their longest cell's length\n * @param text The text to use in length calculation\n * @param colName The column to check\n */\nexport const updateMaxValueLength = (\n map: { [key: string]: number },\n text: string | undefined | null,\n colName: string,\n) => {\n if (!map || !text || !colName) return;\n\n const value = Math.max(...text.split(\"\\n\").map(line => line.length));\n if (map[colName]) {\n if (map[colName] < value) {\n map[colName] = value;\n }\n } else {\n map[colName] = value;\n }\n};\n\nexport const filterRows = (\n smeupDataTable: SmeupDataTable,\n filteredColumns: SmeupDataColumn[],\n filters: { [key: string]: ColumnFilter },\n) => {\n if (filters) {\n return smeupDataTable.rows.filter(row => {\n return filteredColumns.every(col => {\n const cellValue = row.cells?.[col.name]?.value;\n const columnFilter = filters[col.name];\n if (columnFilter?.checkBoxes?.length) {\n const allowedValues = columnFilter.checkBoxes.map(item => item.value);\n return (\n typeof cellValue === \"string\" && allowedValues.includes(cellValue)\n );\n }\n return true;\n });\n });\n } else {\n return smeupDataTable.rows;\n }\n};\n\n/**\n * Returns a converted and formatted cell value (string, date, number)\n * @param cell - SmeupDataCell\n * @param bookType - SupportedExportFormats\n * @param webupManagerData - WebupManagerData\n * @returns\n */\nexport const calculateCellValue = (\n cell: SmeupDataCell,\n bookType: SupportedExportFormats,\n webupManagerData: WebupManagerData,\n) => {\n if (cell.obj && objectsIsDate(cell.obj) && datesIsIsoDate(cell.value)) {\n return exportTypeSupportsFormatting[bookType]\n ? new Date(datesToDate(cell.value, webupManagerData.datesLocale))\n : datesFormat(cell.value, webupManagerData.datesLocale);\n }\n\n if (cell.obj && objectsIsNumber(cell.obj)) {\n if (!exportTypeSupportsFormatting[bookType]) {\n return (\n mathNumberStringToFormattedString(\n cell.value,\n mathCountDecimals(Number(cell.value) || 0),\n \"\",\n webupManagerData.mathLocale,\n ) || \"\"\n );\n }\n\n const numValue = Number(cell.value);\n return !isNaN(numValue) ? numValue : \"\";\n }\n\n return cell?.value ?? \"\";\n};\n\n/**\n * Conversion from Hexadecimal color to an AlphaRGB\n * @param hex string - Hexadecimal value, it can bot have and don't have the # prefix\n * @returns ARGB string code\n */\nexport const hexToArgb = (hex: string): string => {\n // Hex validation\n if (hex.startsWith(\"#\")) hex = hex.slice(1);\n if (hex.length !== 6) return \"\";\n\n // Value Parse and return\n const red = parseInt(hex.slice(0, 2), 16);\n const green = parseInt(hex.slice(2, 4), 16);\n const blue = parseInt(hex.slice(4, 6), 16);\n return `FF${red.toString(16).padStart(2, \"0\")}${green\n .toString(16)\n .padStart(2, \"0\")}${blue.toString(16).padStart(2, \"0\")}`;\n};\n\n// Utility function to detect if Buffer is available\nconst isBufferAvailable = (): boolean => {\n try {\n return typeof Buffer !== \"undefined\" && typeof Buffer.from === \"function\";\n } catch {\n return false;\n }\n};\n\n// Utility function to convert ArrayBuffer to Buffer or Uint8Array\nexport const convertToBuffer = (\n arrayBuffer: ArrayBuffer,\n): Buffer | Uint8Array => {\n if (isBufferAvailable()) {\n return Buffer.from(arrayBuffer);\n } else {\n return new Uint8Array(arrayBuffer);\n }\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import { SmeupDataStructureType, } from "@sme.up/kokos-sdk-node";
2
- import { addStyleToExceljsRow, dataTableToExcelWorkbook, getExcelNumFormat, smeupFormulaToExcelFormula, } from "../src";
3
- import { SupportedExportFormats } from "../src/types";
2
+ import { addStyleToExceljsRow, dataTableToExcelWorkbook, getExcelNumFormat, smeupFormulaToExcelFormula, } from "../src/index.js";
3
+ import { SupportedExportFormats, } from "../src/types/index.js";
4
4
  import ExcelJS from "exceljs";
5
5
  import { table_sample_1, table_sample_2 } from "../assets/sample-data.js";
6
6
  const Workbook = ExcelJS.Workbook;
@@ -1 +1 @@
1
- {"version":3,"file":"excel-generator.test.js","sourceRoot":"","sources":["../../tests/excel-generator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,sBAAsB,GAGvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,sBAAsB,EAAoB,MAAM,cAAc,CAAC;AACxE,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAM1E,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAElC,gBAAgB;AAChB,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,eAAe,GAAG;YACtB,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ;YAChC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ;YACxB,CAAC,qBAAqB,CAAC,EAAE,aAAa,EAAE,QAAQ;YAChD,CAAC,cAAc,CAAC,EAAE,cAAc,EAAE,QAAQ;YAC1C,CAAC,qBAAqB,CAAC,EAAE,aAAa,EAAE,QAAQ;YAChD,CAAC,0BAA0B,CAAC,EAAE,kBAAkB,EAAE,QAAQ;YAC1D,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ;YAChC,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ;YAC5B,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,QAAQ;YAC5C,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,SAAS;SACjB,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE;YACvD,MAAM,CAAC,0BAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CACvE,eAAe,CAAC,YAAY,CAAC,CAC9B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,kBAAkB,GAA6B;YACnD;gBACE,IAAI,EAAE;oBACJ,QAAQ,EAAE,CAAC;iBACZ;aACF;YACD;gBACE,IAAI,EAAE;oBACJ,QAAQ,EAAE,CAAC;iBACZ;aACF;YACD;gBACE,IAAI,EAAE;oBACJ,QAAQ,EAAE,CAAC;iBACZ;aACF;YACD;gBACE,IAAI,EAAE;oBACJ,QAAQ,EAAE,CAAC;iBACZ;aACF;YACD;gBACE,IAAI,EAAE;oBACJ,QAAQ,EAAE,CAAC;iBACZ;aACF;SACF,CAAC;QAEF,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACzC,MAAM,MAAM,GAAG,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChE,MAAM,CACJ,iBAAiB,CACd,IAAI,CAAC,IAAI,EAAE,QAAmB,IAAI,CAAC,EACnC,IAAI,CAAC,IAA0B,IAAI,CAAC,CACtC,CACF,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;YAC3B,MAAM,QAAQ,GAAa,wBAAwB,CACjD,cAAc,EACd,sBAAsB,CAAC,IAAI,EAC3B,EAAsB,CACvB,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3C,yBAAyB;YACzB,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,sBAAsB;YACtB,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,QAAQ,GAAa,wBAAwB,CACjD,cAAc,EACd,sBAAsB,CAAC,GAAG,EAC1B,EAAsB,CACvB,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3C,yBAAyB;YACzB,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,sBAAsB;YACtB,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,QAAQ,GAAa,wBAAwB,CACjD,cAAc,EACd,sBAAsB,CAAC,GAAG,EAC1B,EAAsB,CACvB,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3C,yBAAyB;YACzB,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,sBAAsB;YACtB,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,QAAQ,GAAa,wBAAwB,CACjD,cAAc,EACd,sBAAsB,CAAC,IAAI,EAC3B,EAAsB,CACvB,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;YAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;YAChE,YAAY,CAAC,KAAK,GAAG;gBACnB,GAAG,YAAY,CAAC,KAAK;gBACrB,MAAM,EAAE,eAAe;aACxB,CAAC;YAEF,MAAM,QAAQ,GAAa,wBAAwB,CACjD,YAAY,EACZ,sBAAsB,CAAC,IAAI,EAC3B,EAAsB,CACvB,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAE3C,yBAAyB;YACzB,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,sBAAsB;YACtB,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,mBAAmB;YACnB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAU,EAAE,EAAE;gBAC3C,MAAM,UAAU,GAAG,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;gBACtD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACvB,iCAAiC,CAAC,UAAU,CAAC,CAC9C,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,qBAAqB,GAAG;gBAC5B,KAAK,EAAE,mBAAmB;gBAC1B,GAAG,EAAE,mBAAmB;gBACxB,GAAG,EAAE,mBAAmB;gBACxB,GAAG,EAAE,mBAAmB;gBACxB,OAAO,EAAE,mBAAmB;aAC7B,CAAC;YACF,MAAM,uBAAuB,GAAG;gBAC9B,KAAK,EAAE,GAAG;gBACV,GAAG,EAAE,GAAG;gBACR,GAAG,EAAE,GAAG;gBACR,GAAG,EAAE,GAAG;gBACR,OAAO,EAAE,GAAG;aACb,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAC,KAAK,EAAC,EAAE;gBACvD,MAAM,QAAQ,GAAqB,wBAAwB,CACzD,oBAAoB,CAClB,KAAK,EACL;oBACE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;oBAC9B,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;iBAC/B,EACD,CAAC,EACD,CAAC,CACF,EACD,sBAAsB,CAAC,IAAI,EAC3B,EAAsB,CACvB,CAAC;gBACF,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAE3C,MAAM,QAAQ,GAAG,KAA6C,CAAC;gBAE/D,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAClD,YAAY,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CACvD,CAAC;gBACF,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAClD,YAAY,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CACvD,CAAC;gBACF,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAClD,YAAY,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CACvD,CAAC;gBACF,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAClD,YAAY,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CACvD,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,MAAM,SAAS,GAAG;QAChB,UAAU,EAAE,MAAM;QAClB,eAAe,EAAE,SAAS;QAC1B,KAAK,EAAE,SAAS;KACjB,CAAC;IACF,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;SAC9B;QACD,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;KACzC,CAAC;IAEX,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEnD,MAAM,GAAG,GAAQ,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACnD,oBAAoB,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE;YACrD,KAAK,EAAE;gBACL,CAAC,EAAE;oBACD,KAAK,EAAE,EAAE;oBACT,GAAG,EAAE;wBACH,CAAC,EAAE,EAAE;wBACL,CAAC,EAAE,EAAE;wBACL,CAAC,EAAE,EAAE;qBACN;oBACD,KAAK,EAAE,SAAS;iBACjB;aACF;SACc,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,GAAG,GAAQ,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACnD,oBAAoB,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE;YACrD,KAAK,EAAE;gBACL,CAAC,EAAE;oBACD,KAAK,EAAE,EAAE;oBACT,GAAG,EAAE;wBACH,CAAC,EAAE,EAAE;wBACL,CAAC,EAAE,EAAE;wBACL,CAAC,EAAE,EAAE;qBACN;oBACD,KAAK,EAAE,EAAE;iBACV;aACF;YACD,KAAK,EAAE,SAAS;SACW,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,aAAa;AAEb,iBAAiB;AAEjB,MAAM,UAAU,GAAG,CAAC,aAAqB,EAAqB,EAAE;IAC9D,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,IAAI,GAAG,EAAE;YACf,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,yCAAyC;AACzC,MAAM,eAAe,GAAiD;IACpE,IAAI,EAAE,OAAoB;IAC1B,IAAI,EAAE,UAAuB;IAC7B,UAAU,EAAE,KAAkB;IAC9B,OAAO,EAAE,KAAkB;IAC3B,OAAO,EAAE,SAAsB;IAC/B,OAAO,EAAE,KAAkB;IAC3B,OAAO,EAAE,KAAkB;IAC3B,QAAQ,EAAE,GAAG,MAAmB,0BAA0B;CAC3D,CAAC;AAEF,MAAM,iCAAiC,GAA8B;IACnE,IAAI,EAAE,mBAAmB;IACzB,UAAU,EAAE,mBAAmB;IAC/B,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,mBAAmB;IAC5B,QAAQ,EAAE,SAAS;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAc,EACd,MAA8C,EAC9C,aAAqB,CAAC,EACtB,iBAAyB,CAAC,EAC1B,EAAE;IACF,MAAM,IAAI,GAQL,EAAE,CAAC;IACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG;YACb,KAAK,EAAE;gBACL,CAAC,EAAE;oBACD,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;oBAC5B,KAAK,EAAE,KAAK,CAAC,EAAE;iBAChB;gBACD,CAAC,EAAE;oBACD,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;oBAC5B,KAAK,EAAE,KAAK,CAAC,EAAE;iBAChB;gBACD,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;oBACb,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;oBAChC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;iBAClB;aACF;YACD,EAAE,EAAE,GAAG,CAAC,EAAE;SACX,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO;QACL,cAAc,EAAE;YACd,IAAI,EAAE,sBAAsB,CAAC,cAAc;YAC3C,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,QAAQ;oBACf,OAAO,EAAE,IAAI;oBACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;iBACtB;gBACD;oBACE,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,QAAQ;oBACf,OAAO,EAAE,IAAI;oBACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;iBACtB;gBACD;oBACE,IAAI,EAAE,GAAG,MAAM,EAAE;oBACjB,KAAK,EAAE,GAAG,MAAM,OAAO;oBACvB,OAAO,EAAE,IAAI;oBACb,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;iBACxB;aACF;YACD,IAAI;SACa;QACnB,KAAK,EAAE;YACL,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;YACpD,MAAM,EAAE,EAAE;SACX;KACF,CAAC;AACJ,CAAC,CAAC;AACF,aAAa","sourcesContent":["import {\n SmeupDataCell,\n SmeupDataRow,\n SmeupDataColumn,\n SmeupDataStructureType,\n SmeupDataNode,\n SmeupDataTable,\n} from \"@sme.up/kokos-sdk-node\";\nimport {\n addStyleToExceljsRow,\n dataTableToExcelWorkbook,\n getExcelNumFormat,\n smeupFormulaToExcelFormula,\n} from \"../src\";\nimport { TotalMode } from \"../src/excel/excel-generator.types\";\nimport { SupportedExportFormats, WebupManagerData } from \"../src/types\";\nimport ExcelJS from \"exceljs\";\nimport { table_sample_1, table_sample_2 } from \"../assets/sample-data.js\";\n\ntype Workbook = ExcelJS.Workbook;\ntype Cell = ExcelJS.Cell;\ntype Row = ExcelJS.Row;\ntype Style = ExcelJS.Style;\nconst Workbook = ExcelJS.Workbook;\n\n// #region Tests\ndescribe(\"Export Manager Test\", () => {\n it(\"Formula conversion\", () => {\n const formulaExamples = {\n [\"[N1]+[N2]\"]: \"A1+B1\", // Row 1\n [\"1+1\"]: \"1+1\", // Row 2\n [\"[N1]+[N2]+[N3]+[N4]\"]: \"A3+B3+C3+D3\", // Row 3\n [\"1,234+1,0001\"]: \"1.234+1.0001\", // Row 4\n [\"[N1]+[N2]-[N1]-[N2]\"]: \"A5+B5-A5-B5\", // Row 5\n [\"([N1]+[N2]/[N3]+[N4])/10\"]: \"(A6+B6/C6+D6)/10\", // Row 6\n [\"[N1]*[N2]\"]: \"A7*B7\", // Row 7\n [\"[N1]/0\"]: \"A8/0\", // Row 8\n [\"([N1]+[N2])-[N1]\"]: \"(A9+B9)-A9\", // Row 9\n [\"([N1]+[N120])\"]: \"(A10+DP10)\", // Row 10\n } as Record<string, string>;\n\n Object.keys(formulaExamples).forEach((smeupFormula, i) => {\n expect(smeupFormulaToExcelFormula(smeupFormula, i, getColumns(120))).toBe(\n formulaExamples[smeupFormula],\n );\n });\n });\n\n it(\"Number format creation\", () => {\n const cellsFormatNumbers: Partial<SmeupDataCell>[] = [\n {\n data: {\n decimals: 0,\n },\n },\n {\n data: {\n decimals: 1,\n },\n },\n {\n data: {\n decimals: 2,\n },\n },\n {\n data: {\n decimals: 3,\n },\n },\n {\n data: {\n decimals: 4,\n },\n },\n ];\n\n cellsFormatNumbers.forEach((cell, index) => {\n const format = \"0.\" + `${index > 0 ? \"0\".repeat(index) : \"00\"}`;\n expect(\n getExcelNumFormat(\n (cell.data?.decimals as number) ?? 0,\n (cell.data as unknown as number) ?? 0,\n ),\n ).toBe(format + \";[Red]-\" + format);\n });\n });\n\n describe(\"SmeupDataTable export\", () => {\n it(\"xlsx format\", async () => {\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_sample_1,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n // Test number of columns\n expect(worksheet?.columnCount).toBe(8);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(3);\n });\n\n it(\"csv format\", async () => {\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_sample_1,\n SupportedExportFormats.CSV,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n // Test number of columns\n expect(worksheet?.columnCount).toBe(8);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(3);\n });\n\n it(\"txt format\", async () => {\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_sample_1,\n SupportedExportFormats.TXT,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n // Test number of columns\n expect(worksheet?.columnCount).toBe(8);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(3);\n });\n\n it(\"With groups and outline 2 levels\", async () => {\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_sample_2,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet?.getRow(2).outlineLevel).toBe(0);\n expect(worksheet?.getRow(3).outlineLevel).toBe(1);\n expect(worksheet?.getRow(4).outlineLevel).toBe(2);\n expect(worksheet?.getRow(5).outlineLevel).toBe(0);\n expect(worksheet?.getRow(6).outlineLevel).toBe(1);\n expect(worksheet?.getRow(7).outlineLevel).toBe(2);\n });\n\n it(\"With totals\", async () => {\n const table_totals = JSON.parse(JSON.stringify(table_sample_1));\n table_totals.props = {\n ...table_totals.props,\n totals: totals_sample_1,\n };\n\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_totals,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n\n // Test number of columns\n expect(worksheet?.columnCount).toBe(8);\n // Test number of rows\n expect(worksheet?.rowCount).toBe(4);\n // Check totals row\n worksheet?.getRow(4).eachCell((cell: Cell) => {\n const columnName = worksheet?.getColumn(cell.col).key;\n if (columnName !== undefined) {\n expect(cell.formula).toBe(\n data_table_totals_result_sample_1[columnName],\n );\n }\n });\n });\n\n it(\"With groups subtotals correct range and action\", () => {\n const totalsExpectedFormula = {\n Count: \"SUBTOTAL(3,C2:C2)\",\n Sum: \"SUBTOTAL(9,C2:C2)\",\n Max: \"SUBTOTAL(4,C2:C2)\",\n Min: \"SUBTOTAL(5,C2:C2)\",\n Average: \"SUBTOTAL(1,C2:C2)\",\n };\n const totalsExpectedSubAction = {\n Count: \"3\",\n Sum: \"9\",\n Max: \"4\",\n Min: \"5\",\n Average: \"1\",\n };\n\n Object.keys(totalsExpectedFormula).forEach(async total => {\n const workbook: ExcelJS.Workbook = dataTableToExcelWorkbook(\n table_footer_actions(\n total,\n [\n { column: \"1\", visible: true },\n { column: \"2\", visible: true },\n ],\n 2,\n 2,\n ),\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n\n const totalKey = total as keyof typeof totalsExpectedSubAction;\n\n expect(worksheet?.getRow(2).getCell(3).formula).toBe(\n `SUBTOTAL(${totalsExpectedSubAction[totalKey]},C3:C5)`,\n );\n expect(worksheet?.getRow(3).getCell(3).formula).toBe(\n `SUBTOTAL(${totalsExpectedSubAction[totalKey]},C4:C5)`,\n );\n expect(worksheet?.getRow(6).getCell(3).formula).toBe(\n `SUBTOTAL(${totalsExpectedSubAction[totalKey]},C7:C9)`,\n );\n expect(worksheet?.getRow(7).getCell(3).formula).toBe(\n `SUBTOTAL(${totalsExpectedSubAction[totalKey]},C8:C9)`,\n );\n });\n });\n });\n});\n\ndescribe(\"Cell to XLSX Style converter\", () => {\n const cellStyle = {\n fontWeight: \"bold\",\n backgroundColor: \"#74c0f2\",\n color: \"#000000\",\n };\n const cellResult = {\n fill: {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"FF74c0f2\" },\n },\n font: { bold: true, color: { argb: \"FF000000\" } },\n } as Style;\n\n it(\"SmeupDataCell - Style calculations\", async () => {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet(\"Sheet 1\");\n\n const row: Row = worksheet.addRow([\"Mario Rossi\"]);\n addStyleToExceljsRow(row, [{ name: \"A\", title: \"A\" }], {\n cells: {\n A: {\n value: \"\",\n obj: {\n t: \"\",\n p: \"\",\n k: \"\",\n },\n style: cellStyle,\n },\n },\n } as SmeupDataRow);\n expect(row.getCell(1).style).toStrictEqual(cellResult);\n });\n it(\"SmeupDataNode - Style calculations\", async () => {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet(\"Sheet 1\");\n const row: Row = worksheet.addRow([\"Mario Rossi\"]);\n addStyleToExceljsRow(row, [{ name: \"A\", title: \"A\" }], {\n cells: {\n A: {\n value: \"\",\n obj: {\n t: \"\",\n p: \"\",\n k: \"\",\n },\n style: {},\n },\n },\n style: cellStyle,\n } as unknown as SmeupDataNode);\n expect(row.getCell(1).style).toStrictEqual(cellResult);\n });\n});\n\n// #endregion\n\n// #region Assets\n\nconst getColumns = (numberColumns: number): SmeupDataColumn[] => {\n const columns: SmeupDataColumn[] = [];\n\n for (let num = 1; num <= numberColumns; num++) {\n columns.push({\n name: `N${num}`,\n title: \"\",\n });\n }\n\n return columns;\n};\n\n// Define table_sample_1 for use in tests\nconst totals_sample_1: { [columnName: string]: TotalMode | string } = {\n COL1: \"Count\" as TotalMode,\n COL2: \"Distinct\" as TotalMode,\n HIDDEN_COL: \"Sum\" as TotalMode,\n SUM_COL: \"Sum\" as TotalMode,\n AVG_COL: \"Average\" as TotalMode,\n MIN_COL: \"Min\" as TotalMode,\n MAX_COL: \"Max\" as TotalMode,\n DIFF_COL: `${\"MATH\" as TotalMode}([HIDDEN_COL]-[SUM_COL])`,\n};\n\nconst data_table_totals_result_sample_1: { [key: string]: string } = {\n COL1: \"SUBTOTAL(3,A2:A3)\",\n HIDDEN_COL: \"SUBTOTAL(9,C2:C3)\",\n SUM_COL: \"SUBTOTAL(9,D2:D3)\",\n AVG_COL: \"SUBTOTAL(1,E2:E3)\",\n MIN_COL: \"SUBTOTAL(5,F2:F3)\",\n MAX_COL: \"SUBTOTAL(4,G2:G3)\",\n DIFF_COL: `(C4-D4)`,\n};\n\nexport const table_footer_actions = (\n action: string,\n groups: { column: string; visible: boolean }[],\n rowsNumber: number = 1,\n rowRepetitions: number = 1,\n) => {\n const rows: Array<{\n cells: {\n [key: string]: {\n obj: { t: string; p: string; k: string };\n value: string;\n };\n };\n id: string;\n }> = [];\n for (let i = 0; i < rowsNumber; i++) {\n const rowObj = {\n cells: {\n 1: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: `1-${i}`,\n },\n 2: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: `2-${i}`,\n },\n [`${action}`]: {\n obj: { t: \"NR\", p: \"\", k: \"10\" },\n value: `${i + 1}`,\n },\n },\n id: `${i}`,\n };\n for (let i = 0; i < rowRepetitions; i++) {\n rows.push(rowObj);\n }\n }\n return {\n smeupDataTable: {\n type: SmeupDataStructureType.SmeupDataTable,\n columns: [\n {\n name: \"1\",\n title: \"1title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"2\",\n title: \"2title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: `${action}`,\n title: `${action}title`,\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n ],\n rows,\n } as SmeupDataTable,\n props: {\n groups,\n totals: action ? { [`${action}`]: `${action}` } : [],\n filter: [],\n },\n };\n};\n// #endregion\n"]}
1
+ {"version":3,"file":"excel-generator.test.js","sourceRoot":"","sources":["../../tests/excel-generator.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n SmeupDataCell,\n SmeupDataRow,\n SmeupDataColumn,\n SmeupDataStructureType,\n SmeupDataNode,\n SmeupDataTable,\n} from \"@sme.up/kokos-sdk-node\";\nimport {\n addStyleToExceljsRow,\n dataTableToExcelWorkbook,\n getExcelNumFormat,\n smeupFormulaToExcelFormula,\n} from \"../src/index.js\";\nimport { TotalMode } from \"../src/excel/excel-generator.types.js\";\nimport {\n SupportedExportFormats,\n WebupManagerData,\n} from \"../src/types/index.js\";\nimport ExcelJS from \"exceljs\";\nimport { table_sample_1, table_sample_2 } from \"../assets/sample-data.js\";\n\ntype Workbook = ExcelJS.Workbook;\ntype Cell = ExcelJS.Cell;\ntype Row = ExcelJS.Row;\ntype Style = ExcelJS.Style;\nconst Workbook = ExcelJS.Workbook;\n\n// #region Tests\ndescribe(\"Export Manager Test\", () => {\n it(\"Formula conversion\", () => {\n const formulaExamples = {\n [\"[N1]+[N2]\"]: \"A1+B1\", // Row 1\n [\"1+1\"]: \"1+1\", // Row 2\n [\"[N1]+[N2]+[N3]+[N4]\"]: \"A3+B3+C3+D3\", // Row 3\n [\"1,234+1,0001\"]: \"1.234+1.0001\", // Row 4\n [\"[N1]+[N2]-[N1]-[N2]\"]: \"A5+B5-A5-B5\", // Row 5\n [\"([N1]+[N2]/[N3]+[N4])/10\"]: \"(A6+B6/C6+D6)/10\", // Row 6\n [\"[N1]*[N2]\"]: \"A7*B7\", // Row 7\n [\"[N1]/0\"]: \"A8/0\", // Row 8\n [\"([N1]+[N2])-[N1]\"]: \"(A9+B9)-A9\", // Row 9\n [\"([N1]+[N120])\"]: \"(A10+DP10)\", // Row 10\n } as Record<string, string>;\n\n Object.keys(formulaExamples).forEach((smeupFormula, i) => {\n expect(smeupFormulaToExcelFormula(smeupFormula, i, getColumns(120))).toBe(\n formulaExamples[smeupFormula],\n );\n });\n });\n\n it(\"Number format creation\", () => {\n const cellsFormatNumbers: Partial<SmeupDataCell>[] = [\n {\n data: {\n decimals: 0,\n },\n },\n {\n data: {\n decimals: 1,\n },\n },\n {\n data: {\n decimals: 2,\n },\n },\n {\n data: {\n decimals: 3,\n },\n },\n {\n data: {\n decimals: 4,\n },\n },\n ];\n\n cellsFormatNumbers.forEach((cell, index) => {\n const format = \"0.\" + `${index > 0 ? \"0\".repeat(index) : \"00\"}`;\n expect(\n getExcelNumFormat(\n (cell.data?.decimals as number) ?? 0,\n (cell.data as unknown as number) ?? 0,\n ),\n ).toBe(format + \";[Red]-\" + format);\n });\n });\n\n describe(\"SmeupDataTable export\", () => {\n it(\"xlsx format\", async () => {\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_sample_1,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n // Test number of columns\n expect(worksheet?.columnCount).toBe(8);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(3);\n });\n\n it(\"csv format\", async () => {\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_sample_1,\n SupportedExportFormats.CSV,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n // Test number of columns\n expect(worksheet?.columnCount).toBe(8);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(3);\n });\n\n it(\"txt format\", async () => {\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_sample_1,\n SupportedExportFormats.TXT,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n // Test number of columns\n expect(worksheet?.columnCount).toBe(8);\n // Test number of rows\n expect(worksheet?.actualRowCount).toBe(3);\n });\n\n it(\"With groups and outline 2 levels\", async () => {\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_sample_2,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n expect(worksheet?.getRow(2).outlineLevel).toBe(0);\n expect(worksheet?.getRow(3).outlineLevel).toBe(1);\n expect(worksheet?.getRow(4).outlineLevel).toBe(2);\n expect(worksheet?.getRow(5).outlineLevel).toBe(0);\n expect(worksheet?.getRow(6).outlineLevel).toBe(1);\n expect(worksheet?.getRow(7).outlineLevel).toBe(2);\n });\n\n it(\"With totals\", async () => {\n const table_totals = JSON.parse(JSON.stringify(table_sample_1));\n table_totals.props = {\n ...table_totals.props,\n totals: totals_sample_1,\n };\n\n const workbook: Workbook = dataTableToExcelWorkbook(\n table_totals,\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n\n // Test number of columns\n expect(worksheet?.columnCount).toBe(8);\n // Test number of rows\n expect(worksheet?.rowCount).toBe(4);\n // Check totals row\n worksheet?.getRow(4).eachCell((cell: Cell) => {\n const columnName = worksheet?.getColumn(cell.col).key;\n if (columnName !== undefined) {\n expect(cell.formula).toBe(\n data_table_totals_result_sample_1[columnName],\n );\n }\n });\n });\n\n it(\"With groups subtotals correct range and action\", () => {\n const totalsExpectedFormula = {\n Count: \"SUBTOTAL(3,C2:C2)\",\n Sum: \"SUBTOTAL(9,C2:C2)\",\n Max: \"SUBTOTAL(4,C2:C2)\",\n Min: \"SUBTOTAL(5,C2:C2)\",\n Average: \"SUBTOTAL(1,C2:C2)\",\n };\n const totalsExpectedSubAction = {\n Count: \"3\",\n Sum: \"9\",\n Max: \"4\",\n Min: \"5\",\n Average: \"1\",\n };\n\n Object.keys(totalsExpectedFormula).forEach(async total => {\n const workbook: ExcelJS.Workbook = dataTableToExcelWorkbook(\n table_footer_actions(\n total,\n [\n { column: \"1\", visible: true },\n { column: \"2\", visible: true },\n ],\n 2,\n 2,\n ),\n SupportedExportFormats.XLSX,\n {} as WebupManagerData,\n );\n const worksheet = workbook.getWorksheet(1);\n\n const totalKey = total as keyof typeof totalsExpectedSubAction;\n\n expect(worksheet?.getRow(2).getCell(3).formula).toBe(\n `SUBTOTAL(${totalsExpectedSubAction[totalKey]},C3:C5)`,\n );\n expect(worksheet?.getRow(3).getCell(3).formula).toBe(\n `SUBTOTAL(${totalsExpectedSubAction[totalKey]},C4:C5)`,\n );\n expect(worksheet?.getRow(6).getCell(3).formula).toBe(\n `SUBTOTAL(${totalsExpectedSubAction[totalKey]},C7:C9)`,\n );\n expect(worksheet?.getRow(7).getCell(3).formula).toBe(\n `SUBTOTAL(${totalsExpectedSubAction[totalKey]},C8:C9)`,\n );\n });\n });\n });\n});\n\ndescribe(\"Cell to XLSX Style converter\", () => {\n const cellStyle = {\n fontWeight: \"bold\",\n backgroundColor: \"#74c0f2\",\n color: \"#000000\",\n };\n const cellResult = {\n fill: {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"FF74c0f2\" },\n },\n font: { bold: true, color: { argb: \"FF000000\" } },\n } as Style;\n\n it(\"SmeupDataCell - Style calculations\", async () => {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet(\"Sheet 1\");\n\n const row: Row = worksheet.addRow([\"Mario Rossi\"]);\n addStyleToExceljsRow(row, [{ name: \"A\", title: \"A\" }], {\n cells: {\n A: {\n value: \"\",\n obj: {\n t: \"\",\n p: \"\",\n k: \"\",\n },\n style: cellStyle,\n },\n },\n } as SmeupDataRow);\n expect(row.getCell(1).style).toStrictEqual(cellResult);\n });\n it(\"SmeupDataNode - Style calculations\", async () => {\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet(\"Sheet 1\");\n const row: Row = worksheet.addRow([\"Mario Rossi\"]);\n addStyleToExceljsRow(row, [{ name: \"A\", title: \"A\" }], {\n cells: {\n A: {\n value: \"\",\n obj: {\n t: \"\",\n p: \"\",\n k: \"\",\n },\n style: {},\n },\n },\n style: cellStyle,\n } as unknown as SmeupDataNode);\n expect(row.getCell(1).style).toStrictEqual(cellResult);\n });\n});\n\n// #endregion\n\n// #region Assets\n\nconst getColumns = (numberColumns: number): SmeupDataColumn[] => {\n const columns: SmeupDataColumn[] = [];\n\n for (let num = 1; num <= numberColumns; num++) {\n columns.push({\n name: `N${num}`,\n title: \"\",\n });\n }\n\n return columns;\n};\n\n// Define table_sample_1 for use in tests\nconst totals_sample_1: { [columnName: string]: TotalMode | string } = {\n COL1: \"Count\" as TotalMode,\n COL2: \"Distinct\" as TotalMode,\n HIDDEN_COL: \"Sum\" as TotalMode,\n SUM_COL: \"Sum\" as TotalMode,\n AVG_COL: \"Average\" as TotalMode,\n MIN_COL: \"Min\" as TotalMode,\n MAX_COL: \"Max\" as TotalMode,\n DIFF_COL: `${\"MATH\" as TotalMode}([HIDDEN_COL]-[SUM_COL])`,\n};\n\nconst data_table_totals_result_sample_1: { [key: string]: string } = {\n COL1: \"SUBTOTAL(3,A2:A3)\",\n HIDDEN_COL: \"SUBTOTAL(9,C2:C3)\",\n SUM_COL: \"SUBTOTAL(9,D2:D3)\",\n AVG_COL: \"SUBTOTAL(1,E2:E3)\",\n MIN_COL: \"SUBTOTAL(5,F2:F3)\",\n MAX_COL: \"SUBTOTAL(4,G2:G3)\",\n DIFF_COL: `(C4-D4)`,\n};\n\nexport const table_footer_actions = (\n action: string,\n groups: { column: string; visible: boolean }[],\n rowsNumber: number = 1,\n rowRepetitions: number = 1,\n) => {\n const rows: Array<{\n cells: {\n [key: string]: {\n obj: { t: string; p: string; k: string };\n value: string;\n };\n };\n id: string;\n }> = [];\n for (let i = 0; i < rowsNumber; i++) {\n const rowObj = {\n cells: {\n 1: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: `1-${i}`,\n },\n 2: {\n obj: { t: \"\", p: \"\", k: \"\" },\n value: `2-${i}`,\n },\n [`${action}`]: {\n obj: { t: \"NR\", p: \"\", k: \"10\" },\n value: `${i + 1}`,\n },\n },\n id: `${i}`,\n };\n for (let i = 0; i < rowRepetitions; i++) {\n rows.push(rowObj);\n }\n }\n return {\n smeupDataTable: {\n type: SmeupDataStructureType.SmeupDataTable,\n columns: [\n {\n name: \"1\",\n title: \"1title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: \"2\",\n title: \"2title\",\n visible: true,\n obj: { t: \"\", p: \"\" },\n },\n {\n name: `${action}`,\n title: `${action}title`,\n visible: true,\n obj: { t: \"NR\", p: \"\" },\n },\n ],\n rows,\n } as SmeupDataTable,\n props: {\n groups,\n totals: action ? { [`${action}`]: `${action}` } : [],\n filter: [],\n },\n };\n};\n// #endregion\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sme.up/doc-alchemist",
3
- "version": "1.0.0-SNAPSHOT-20250613100237",
3
+ "version": "1.0.0-SNAPSHOT-20250613190613",
4
4
  "description": "Library for generating documents in various formats, including Excel and PDF.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Smeup LAB <info@smeup.com> (https://www.smeup.com/)",