{"version":3,"file":"obliczeniowo-elementary-xlsx.mjs","sources":["../../../../projects/components/xlsx/array-to-xlsx.ts","../../../../projects/components/xlsx/obliczeniowo-elementary-xlsx.ts"],"sourcesContent":["import * as XLSX from 'xlsx';\n\n/** extended properties for xlsx file */\nexport interface Properties extends XLSX.Properties {\n  /** max rows number (minimum is 10, maximum is 1048576) */\n  maxRows?: number;\n  /** if you want to add header */\n  headers?: string[];\n}\n\n/**\n * Save array to xlsx file\n * @param arr array to export\n * @param name file name\n * @param sheet base excel sheet name (will create multiple of sheet's if maxRow is less then number of array rows)\n * @param properties XLSX properties and maxRows, headers properties\n */\nexport function arrayToXlsx(\n  arr: Array<Array<number | string>>,\n  name: string,\n  sheet: string,\n  properties?: Properties,\n  bookType?: XLSX.BookType\n): void {\n  arr = [...arr];\n  const maxRows = 1048576;\n  const minRows = 10;\n\n  if (properties?.maxRows) {\n    if (properties.maxRows < minRows) {\n      console.warn(`Minimum value for maxRows is 10, but ${properties.maxRows} was given. Override to ${minRows}`);\n\n      properties.maxRows = minRows;\n    } else if (properties.maxRows > maxRows) {\n      console.warn(`Maximum value for maxRows is ${maxRows}, but ${properties.maxRows} was given. Override to ${maxRows}`);\n\n      properties.maxRows = maxRows;\n    }\n  }\n\n  const splitted = [];\n  const max = properties?.maxRows || maxRows;\n\n  while (arr.length > (properties?.headers && max - 1 || max)) {\n    if (properties?.headers) {\n      splitted.push([properties.headers, ...arr.splice(0, max - 1)])\n    } else {\n      splitted.push(arr.splice(0, max))\n    }\n  }\n\n  if (arr.length) {\n    splitted.push([properties?.headers || [], ...arr]);\n  }\n\n  const wb: XLSX.WorkBook = XLSX.utils.book_new();\n\n  splitted.forEach((t, index) => {\n    const table = document.createElement('table');\n\n    t.forEach((row, index) => {\n      const tRow = document.createElement('tr');\n\n      row.forEach(ceil => {\n        const tCeil = document.createElement(properties?.headers && index === 0 && 'th' || 'td');\n\n        tCeil.textContent = ceil.toString();\n\n        tRow.appendChild(tCeil);\n      })\n\n      table.appendChild(tRow);\n    })\n\n    const ws: XLSX.WorkSheet = XLSX.utils.table_to_sheet(table);\n\n    XLSX.utils.book_append_sheet(wb, ws, index === 0 && sheet || `${sheet} ${index}`);\n  })\n\n  XLSX.writeFile(wb, name, {\n    Props: properties,\n    bookType: bookType || 'xlsx'\n  });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAUA;;;;;;AAMG;AACG,SAAU,WAAW,CACzB,GAAkC,EAClC,IAAY,EACZ,KAAa,EACb,UAAuB,EACvB,QAAwB,EAAA;AAExB,IAAA,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACd,MAAM,OAAO,GAAG,OAAO;IACvB,MAAM,OAAO,GAAG,EAAE;AAElB,IAAA,IAAI,UAAU,EAAE,OAAO,EAAE;AACvB,QAAA,IAAI,UAAU,CAAC,OAAO,GAAG,OAAO,EAAE;YAChC,OAAO,CAAC,IAAI,CAAC,CAAwC,qCAAA,EAAA,UAAU,CAAC,OAAO,CAA2B,wBAAA,EAAA,OAAO,CAAE,CAAA,CAAC;AAE5G,YAAA,UAAU,CAAC,OAAO,GAAG,OAAO;;AACvB,aAAA,IAAI,UAAU,CAAC,OAAO,GAAG,OAAO,EAAE;AACvC,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,6BAAA,EAAgC,OAAO,CAAA,MAAA,EAAS,UAAU,CAAC,OAAO,CAAA,wBAAA,EAA2B,OAAO,CAAA,CAAE,CAAC;AAEpH,YAAA,UAAU,CAAC,OAAO,GAAG,OAAO;;;IAIhC,MAAM,QAAQ,GAAG,EAAE;AACnB,IAAA,MAAM,GAAG,GAAG,UAAU,EAAE,OAAO,IAAI,OAAO;AAE1C,IAAA,OAAO,GAAG,CAAC,MAAM,IAAI,UAAU,EAAE,OAAO,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE;AAC3D,QAAA,IAAI,UAAU,EAAE,OAAO,EAAE;YACvB,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;;aACzD;AACL,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;;;AAIrC,IAAA,IAAI,GAAG,CAAC,MAAM,EAAE;AACd,QAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC;;IAGpD,MAAM,EAAE,GAAkB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;IAE/C,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;QAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;QAE7C,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;YACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AAEzC,YAAA,GAAG,CAAC,OAAO,CAAC,IAAI,IAAG;AACjB,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC;AAExF,gBAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE;AAEnC,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACzB,aAAC,CAAC;AAEF,YAAA,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;AACzB,SAAC,CAAC;QAEF,MAAM,EAAE,GAAmB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;QAE3D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAA,EAAG,KAAK,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA,CAAC;AACnF,KAAC,CAAC;AAEF,IAAA,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE;AACvB,QAAA,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,QAAQ,IAAI;AACvB,KAAA,CAAC;AACJ;;ACnFA;;AAEG;;;;"}