@rowsncolumns/toolkit 24.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +100 -0
- package/Readme.md +27 -0
- package/dist/cjs/autofilter-condition.d.ts +43 -0
- package/dist/cjs/autofilter-condition.d.ts.map +1 -0
- package/dist/cjs/autofilter-condition.js +155 -0
- package/dist/cjs/csv-export.d.ts +49 -0
- package/dist/cjs/csv-export.d.ts.map +1 -0
- package/dist/cjs/csv-export.js +142 -0
- package/dist/cjs/csv-import-worker.d.ts +16 -0
- package/dist/cjs/csv-import-worker.d.ts.map +1 -0
- package/dist/cjs/csv-import-worker.js +60 -0
- package/dist/cjs/csv-import.d.ts +38 -0
- package/dist/cjs/csv-import.d.ts.map +1 -0
- package/dist/cjs/csv-import.js +166 -0
- package/dist/cjs/csv-parser/helpers.d.ts +14 -0
- package/dist/cjs/csv-parser/helpers.d.ts.map +1 -0
- package/dist/cjs/csv-parser/helpers.js +145 -0
- package/dist/cjs/csv-parser/types.d.ts +66 -0
- package/dist/cjs/csv-parser/types.d.ts.map +1 -0
- package/dist/cjs/csv-parser/types.js +14 -0
- package/dist/cjs/csv-parser/worker.d.ts +2 -0
- package/dist/cjs/csv-parser/worker.d.ts.map +1 -0
- package/dist/cjs/csv-parser/worker.js +200 -0
- package/dist/cjs/excel-export.d.ts +11 -0
- package/dist/cjs/excel-export.d.ts.map +1 -0
- package/dist/cjs/excel-export.js +22 -0
- package/dist/cjs/excel-import-session.d.ts +51 -0
- package/dist/cjs/excel-import-session.d.ts.map +1 -0
- package/dist/cjs/excel-import-session.js +307 -0
- package/dist/cjs/excel-import-worker.d.ts +7 -0
- package/dist/cjs/excel-import-worker.d.ts.map +1 -0
- package/dist/cjs/excel-import-worker.js +119 -0
- package/dist/cjs/excel-parser/builtin-numfmts.d.ts +24 -0
- package/dist/cjs/excel-parser/builtin-numfmts.d.ts.map +1 -0
- package/dist/cjs/excel-parser/builtin-numfmts.js +63 -0
- package/dist/cjs/excel-parser/cfb-decryptor.d.ts +53 -0
- package/dist/cjs/excel-parser/cfb-decryptor.d.ts.map +1 -0
- package/dist/cjs/excel-parser/cfb-decryptor.js +553 -0
- package/dist/cjs/excel-parser/cfb-encryptor.d.ts +23 -0
- package/dist/cjs/excel-parser/cfb-encryptor.d.ts.map +1 -0
- package/dist/cjs/excel-parser/cfb-encryptor.js +200 -0
- package/dist/cjs/excel-parser/dv-cell-stamp.d.ts +29 -0
- package/dist/cjs/excel-parser/dv-cell-stamp.d.ts.map +1 -0
- package/dist/cjs/excel-parser/dv-cell-stamp.js +239 -0
- package/dist/cjs/excel-parser/helpers.d.ts +28 -0
- package/dist/cjs/excel-parser/helpers.d.ts.map +1 -0
- package/dist/cjs/excel-parser/helpers.js +188 -0
- package/dist/cjs/excel-parser/interface.d.ts +179 -0
- package/dist/cjs/excel-parser/interface.d.ts.map +1 -0
- package/dist/cjs/excel-parser/interface.js +1 -0
- package/dist/cjs/excel-parser/plugins/base/index.d.ts +31 -0
- package/dist/cjs/excel-parser/plugins/base/index.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/base/index.js +101 -0
- package/dist/cjs/excel-parser/plugins/ods/conditional-formatting.d.ts +16 -0
- package/dist/cjs/excel-parser/plugins/ods/conditional-formatting.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/conditional-formatting.js +488 -0
- package/dist/cjs/excel-parser/plugins/ods/data-validations.d.ts +15 -0
- package/dist/cjs/excel-parser/plugins/ods/data-validations.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/data-validations.js +353 -0
- package/dist/cjs/excel-parser/plugins/ods/formula.d.ts +8 -0
- package/dist/cjs/excel-parser/plugins/ods/formula.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/formula.js +82 -0
- package/dist/cjs/excel-parser/plugins/ods/index.d.ts +122 -0
- package/dist/cjs/excel-parser/plugins/ods/index.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/index.js +3642 -0
- package/dist/cjs/excel-parser/plugins/ods/sparklines.d.ts +25 -0
- package/dist/cjs/excel-parser/plugins/ods/sparklines.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/sparklines.js +221 -0
- package/dist/cjs/excel-parser/plugins/ods/styles.d.ts +60 -0
- package/dist/cjs/excel-parser/plugins/ods/styles.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/styles.js +808 -0
- package/dist/cjs/excel-parser/plugins/ods/types.d.ts +7 -0
- package/dist/cjs/excel-parser/plugins/ods/types.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/ods/types.js +1 -0
- package/dist/cjs/excel-parser/plugins/xls/index.d.ts +5 -0
- package/dist/cjs/excel-parser/plugins/xls/index.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xls/index.js +19 -0
- package/dist/cjs/excel-parser/plugins/xlsb/biff-record-reader.d.ts +13 -0
- package/dist/cjs/excel-parser/plugins/xlsb/biff-record-reader.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsb/biff-record-reader.js +49 -0
- package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts +117 -0
- package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsb/index.js +2972 -0
- package/dist/cjs/excel-parser/plugins/xlsb/rgce-parser.d.ts +18 -0
- package/dist/cjs/excel-parser/plugins/xlsb/rgce-parser.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsb/rgce-parser.js +527 -0
- package/dist/cjs/excel-parser/plugins/xlsm/index.d.ts +5 -0
- package/dist/cjs/excel-parser/plugins/xlsm/index.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsm/index.js +10 -0
- package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts +60 -0
- package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/charts.js +2178 -0
- package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.d.ts +18 -0
- package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.js +620 -0
- package/dist/cjs/excel-parser/plugins/xlsx/data-validations.d.ts +4 -0
- package/dist/cjs/excel-parser/plugins/xlsx/data-validations.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/data-validations.js +515 -0
- package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts +39 -0
- package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/drawing.js +941 -0
- package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts +320 -0
- package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/index.js +6056 -0
- package/dist/cjs/excel-parser/plugins/xlsx/numfmt.d.ts +2 -0
- package/dist/cjs/excel-parser/plugins/xlsx/numfmt.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/numfmt.js +3 -0
- package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts +40 -0
- package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/pivots.js +342 -0
- package/dist/cjs/excel-parser/plugins/xlsx/relationships.d.ts +8 -0
- package/dist/cjs/excel-parser/plugins/xlsx/relationships.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/relationships.js +26 -0
- package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.d.ts +26 -0
- package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.js +59 -0
- package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts +44 -0
- package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/styles.js +1377 -0
- package/dist/cjs/excel-parser/plugins/xlsx/theme.d.ts +50 -0
- package/dist/cjs/excel-parser/plugins/xlsx/theme.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/theme.js +150 -0
- package/dist/cjs/excel-parser/plugins/xlsx/threaded-comments.d.ts +47 -0
- package/dist/cjs/excel-parser/plugins/xlsx/threaded-comments.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/threaded-comments.js +141 -0
- package/dist/cjs/excel-parser/plugins/xlsx/value-type-detection.d.ts +44 -0
- package/dist/cjs/excel-parser/plugins/xlsx/value-type-detection.d.ts.map +1 -0
- package/dist/cjs/excel-parser/plugins/xlsx/value-type-detection.js +407 -0
- package/dist/cjs/excel-parser/registry.d.ts +5 -0
- package/dist/cjs/excel-parser/registry.d.ts.map +1 -0
- package/dist/cjs/excel-parser/registry.js +21 -0
- package/dist/cjs/excel-parser/style-registry.d.ts +51 -0
- package/dist/cjs/excel-parser/style-registry.d.ts.map +1 -0
- package/dist/cjs/excel-parser/style-registry.js +175 -0
- package/dist/cjs/excel-parser/theme-default.d.ts +3 -0
- package/dist/cjs/excel-parser/theme-default.d.ts.map +1 -0
- package/dist/cjs/excel-parser/theme-default.js +19 -0
- package/dist/cjs/excel-parser/types.d.ts +365 -0
- package/dist/cjs/excel-parser/types.d.ts.map +1 -0
- package/dist/cjs/excel-parser/types.js +59 -0
- package/dist/cjs/excel-parser/utils.d.ts +6 -0
- package/dist/cjs/excel-parser/utils.d.ts.map +1 -0
- package/dist/cjs/excel-parser/utils.js +30 -0
- package/dist/cjs/excel-parser/workbook.d.ts +51 -0
- package/dist/cjs/excel-parser/workbook.d.ts.map +1 -0
- package/dist/cjs/excel-parser/workbook.js +317 -0
- package/dist/cjs/excel-parser/worker.d.ts +2 -0
- package/dist/cjs/excel-parser/worker.d.ts.map +1 -0
- package/dist/cjs/excel-parser/worker.js +1149 -0
- package/dist/cjs/excel-parser/zip-parser-streaming.d.ts +13 -0
- package/dist/cjs/excel-parser/zip-parser-streaming.d.ts.map +1 -0
- package/dist/cjs/excel-parser/zip-parser-streaming.js +200 -0
- package/dist/cjs/excel-parser/zip-parser.d.ts +11 -0
- package/dist/cjs/excel-parser/zip-parser.d.ts.map +1 -0
- package/dist/cjs/excel-parser/zip-parser.js +49 -0
- package/dist/cjs/exporter/invalid-data-validation.d.ts +19 -0
- package/dist/cjs/exporter/invalid-data-validation.d.ts.map +1 -0
- package/dist/cjs/exporter/invalid-data-validation.js +39 -0
- package/dist/cjs/exporter/ods/ods-export.d.ts +26 -0
- package/dist/cjs/exporter/ods/ods-export.d.ts.map +1 -0
- package/dist/cjs/exporter/ods/ods-export.js +3714 -0
- package/dist/cjs/exporter/ods/sparkline-builder.d.ts +33 -0
- package/dist/cjs/exporter/ods/sparkline-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/ods/sparkline-builder.js +221 -0
- package/dist/cjs/exporter/xlsx/chart-builder.d.ts +3 -0
- package/dist/cjs/exporter/xlsx/chart-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/chart-builder.js +1901 -0
- package/dist/cjs/exporter/xlsx/chart-templates.d.ts +1781 -0
- package/dist/cjs/exporter/xlsx/chart-templates.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/chart-templates.js +1798 -0
- package/dist/cjs/exporter/xlsx/future-functions.d.ts +10 -0
- package/dist/cjs/exporter/xlsx/future-functions.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/future-functions.js +264 -0
- package/dist/cjs/exporter/xlsx/pivot-builder.d.ts +58 -0
- package/dist/cjs/exporter/xlsx/pivot-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/pivot-builder.js +277 -0
- package/dist/cjs/exporter/xlsx/power-query-builder.d.ts +26 -0
- package/dist/cjs/exporter/xlsx/power-query-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/power-query-builder.js +306 -0
- package/dist/cjs/exporter/xlsx/slicer-builder.d.ts +11 -0
- package/dist/cjs/exporter/xlsx/slicer-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/slicer-builder.js +87 -0
- package/dist/cjs/exporter/xlsx/sparkline-builder.d.ts +61 -0
- package/dist/cjs/exporter/xlsx/sparkline-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/sparkline-builder.js +489 -0
- package/dist/cjs/exporter/xlsx/style-builder.d.ts +93 -0
- package/dist/cjs/exporter/xlsx/style-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/style-builder.js +813 -0
- package/dist/cjs/exporter/xlsx/threaded-comments-builder.d.ts +58 -0
- package/dist/cjs/exporter/xlsx/threaded-comments-builder.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/threaded-comments-builder.js +189 -0
- package/dist/cjs/exporter/xlsx/xlsx-export.d.ts +121 -0
- package/dist/cjs/exporter/xlsx/xlsx-export.d.ts.map +1 -0
- package/dist/cjs/exporter/xlsx/xlsx-export.js +4596 -0
- package/dist/cjs/helpers/theme-xml-generator.d.ts +8 -0
- package/dist/cjs/helpers/theme-xml-generator.d.ts.map +1 -0
- package/dist/cjs/helpers/theme-xml-generator.js +33 -0
- package/dist/cjs/helpers.d.ts +34 -0
- package/dist/cjs/helpers.d.ts.map +1 -0
- package/dist/cjs/helpers.js +189 -0
- package/dist/cjs/index.d.ts +16 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +15 -0
- package/dist/cjs/indexed-colors.d.ts +2 -0
- package/dist/cjs/indexed-colors.d.ts.map +1 -0
- package/dist/cjs/indexed-colors.js +75 -0
- package/dist/cjs/ods-export.d.ts +24 -0
- package/dist/cjs/ods-export.d.ts.map +1 -0
- package/dist/cjs/ods-export.js +23 -0
- package/dist/cjs/parse.d.ts +24 -0
- package/dist/cjs/parse.d.ts.map +1 -0
- package/dist/cjs/parse.js +68 -0
- package/dist/cjs/power-query.d.ts +41 -0
- package/dist/cjs/power-query.d.ts.map +1 -0
- package/dist/cjs/power-query.js +22 -0
- package/dist/cjs/server.d.ts +9 -0
- package/dist/cjs/server.d.ts.map +1 -0
- package/dist/cjs/server.js +8 -0
- package/dist/cjs/theme1.d.ts +3 -0
- package/dist/cjs/theme1.d.ts.map +1 -0
- package/dist/cjs/theme1.js +2 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/cjs/types.d.ts +14 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +14 -0
- package/dist/cjs/vitest.config.d.ts +3 -0
- package/dist/cjs/vitest.config.d.ts.map +1 -0
- package/dist/cjs/vitest.config.js +16 -0
- package/dist/esm/autofilter-condition.d.ts +43 -0
- package/dist/esm/autofilter-condition.d.ts.map +1 -0
- package/dist/esm/autofilter-condition.js +145 -0
- package/dist/esm/csv-export.d.ts +49 -0
- package/dist/esm/csv-export.d.ts.map +1 -0
- package/dist/esm/csv-export.js +126 -0
- package/dist/esm/csv-import-worker.d.ts +16 -0
- package/dist/esm/csv-import-worker.d.ts.map +1 -0
- package/dist/esm/csv-import-worker.js +60 -0
- package/dist/esm/csv-import.d.ts +38 -0
- package/dist/esm/csv-import.d.ts.map +1 -0
- package/dist/esm/csv-import.js +132 -0
- package/dist/esm/csv-parser/helpers.d.ts +14 -0
- package/dist/esm/csv-parser/helpers.d.ts.map +1 -0
- package/dist/esm/csv-parser/helpers.js +0 -0
- package/dist/esm/csv-parser/types.d.ts +66 -0
- package/dist/esm/csv-parser/types.d.ts.map +1 -0
- package/dist/esm/csv-parser/types.js +14 -0
- package/dist/esm/csv-parser/worker.d.ts +2 -0
- package/dist/esm/csv-parser/worker.d.ts.map +1 -0
- package/dist/esm/csv-parser/worker.js +154 -0
- package/dist/esm/excel-export.d.ts +11 -0
- package/dist/esm/excel-export.d.ts.map +1 -0
- package/dist/esm/excel-export.js +13 -0
- package/dist/esm/excel-import-session.d.ts +51 -0
- package/dist/esm/excel-import-session.d.ts.map +1 -0
- package/dist/esm/excel-import-session.js +255 -0
- package/dist/esm/excel-import-worker.d.ts +7 -0
- package/dist/esm/excel-import-worker.d.ts.map +1 -0
- package/dist/esm/excel-import-worker.js +116 -0
- package/dist/esm/excel-parser/builtin-numfmts.d.ts +24 -0
- package/dist/esm/excel-parser/builtin-numfmts.d.ts.map +1 -0
- package/dist/esm/excel-parser/builtin-numfmts.js +59 -0
- package/dist/esm/excel-parser/cfb-decryptor.d.ts +53 -0
- package/dist/esm/excel-parser/cfb-decryptor.d.ts.map +1 -0
- package/dist/esm/excel-parser/cfb-decryptor.js +493 -0
- package/dist/esm/excel-parser/cfb-encryptor.d.ts +23 -0
- package/dist/esm/excel-parser/cfb-encryptor.d.ts.map +1 -0
- package/dist/esm/excel-parser/cfb-encryptor.js +181 -0
- package/dist/esm/excel-parser/dv-cell-stamp.d.ts +29 -0
- package/dist/esm/excel-parser/dv-cell-stamp.d.ts.map +1 -0
- package/dist/esm/excel-parser/dv-cell-stamp.js +155 -0
- package/dist/esm/excel-parser/helpers.d.ts +28 -0
- package/dist/esm/excel-parser/helpers.d.ts.map +1 -0
- package/dist/esm/excel-parser/helpers.js +160 -0
- package/dist/esm/excel-parser/interface.d.ts +179 -0
- package/dist/esm/excel-parser/interface.d.ts.map +1 -0
- package/dist/esm/excel-parser/interface.js +1 -0
- package/dist/esm/excel-parser/plugins/base/index.d.ts +31 -0
- package/dist/esm/excel-parser/plugins/base/index.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/base/index.js +64 -0
- package/dist/esm/excel-parser/plugins/ods/conditional-formatting.d.ts +16 -0
- package/dist/esm/excel-parser/plugins/ods/conditional-formatting.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/conditional-formatting.js +405 -0
- package/dist/esm/excel-parser/plugins/ods/data-validations.d.ts +15 -0
- package/dist/esm/excel-parser/plugins/ods/data-validations.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/data-validations.js +331 -0
- package/dist/esm/excel-parser/plugins/ods/formula.d.ts +8 -0
- package/dist/esm/excel-parser/plugins/ods/formula.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/formula.js +82 -0
- package/dist/esm/excel-parser/plugins/ods/index.d.ts +122 -0
- package/dist/esm/excel-parser/plugins/ods/index.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/index.js +2896 -0
- package/dist/esm/excel-parser/plugins/ods/sparklines.d.ts +25 -0
- package/dist/esm/excel-parser/plugins/ods/sparklines.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/sparklines.js +188 -0
- package/dist/esm/excel-parser/plugins/ods/styles.d.ts +60 -0
- package/dist/esm/excel-parser/plugins/ods/styles.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/styles.js +732 -0
- package/dist/esm/excel-parser/plugins/ods/types.d.ts +7 -0
- package/dist/esm/excel-parser/plugins/ods/types.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/ods/types.js +1 -0
- package/dist/esm/excel-parser/plugins/xls/index.d.ts +5 -0
- package/dist/esm/excel-parser/plugins/xls/index.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xls/index.js +7 -0
- package/dist/esm/excel-parser/plugins/xlsb/biff-record-reader.d.ts +13 -0
- package/dist/esm/excel-parser/plugins/xlsb/biff-record-reader.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsb/biff-record-reader.js +48 -0
- package/dist/esm/excel-parser/plugins/xlsb/index.d.ts +117 -0
- package/dist/esm/excel-parser/plugins/xlsb/index.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsb/index.js +2339 -0
- package/dist/esm/excel-parser/plugins/xlsb/rgce-parser.d.ts +18 -0
- package/dist/esm/excel-parser/plugins/xlsb/rgce-parser.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsb/rgce-parser.js +522 -0
- package/dist/esm/excel-parser/plugins/xlsm/index.d.ts +5 -0
- package/dist/esm/excel-parser/plugins/xlsm/index.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsm/index.js +6 -0
- package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts +60 -0
- package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/charts.js +2036 -0
- package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.d.ts +18 -0
- package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.js +621 -0
- package/dist/esm/excel-parser/plugins/xlsx/data-validations.d.ts +4 -0
- package/dist/esm/excel-parser/plugins/xlsx/data-validations.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/data-validations.js +493 -0
- package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts +39 -0
- package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/drawing.js +905 -0
- package/dist/esm/excel-parser/plugins/xlsx/index.d.ts +320 -0
- package/dist/esm/excel-parser/plugins/xlsx/index.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/index.js +4654 -0
- package/dist/esm/excel-parser/plugins/xlsx/numfmt.d.ts +2 -0
- package/dist/esm/excel-parser/plugins/xlsx/numfmt.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/numfmt.js +3 -0
- package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts +40 -0
- package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/pivots.js +254 -0
- package/dist/esm/excel-parser/plugins/xlsx/relationships.d.ts +8 -0
- package/dist/esm/excel-parser/plugins/xlsx/relationships.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/relationships.js +13 -0
- package/dist/esm/excel-parser/plugins/xlsx/sheet-views.d.ts +26 -0
- package/dist/esm/excel-parser/plugins/xlsx/sheet-views.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/sheet-views.js +64 -0
- package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts +44 -0
- package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/styles.js +1365 -0
- package/dist/esm/excel-parser/plugins/xlsx/theme.d.ts +50 -0
- package/dist/esm/excel-parser/plugins/xlsx/theme.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/theme.js +127 -0
- package/dist/esm/excel-parser/plugins/xlsx/threaded-comments.d.ts +47 -0
- package/dist/esm/excel-parser/plugins/xlsx/threaded-comments.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/threaded-comments.js +103 -0
- package/dist/esm/excel-parser/plugins/xlsx/value-type-detection.d.ts +44 -0
- package/dist/esm/excel-parser/plugins/xlsx/value-type-detection.d.ts.map +1 -0
- package/dist/esm/excel-parser/plugins/xlsx/value-type-detection.js +399 -0
- package/dist/esm/excel-parser/registry.d.ts +5 -0
- package/dist/esm/excel-parser/registry.d.ts.map +1 -0
- package/dist/esm/excel-parser/registry.js +20 -0
- package/dist/esm/excel-parser/style-registry.d.ts +51 -0
- package/dist/esm/excel-parser/style-registry.d.ts.map +1 -0
- package/dist/esm/excel-parser/style-registry.js +163 -0
- package/dist/esm/excel-parser/theme-default.d.ts +3 -0
- package/dist/esm/excel-parser/theme-default.d.ts.map +1 -0
- package/dist/esm/excel-parser/theme-default.js +19 -0
- package/dist/esm/excel-parser/types.d.ts +365 -0
- package/dist/esm/excel-parser/types.d.ts.map +1 -0
- package/dist/esm/excel-parser/types.js +59 -0
- package/dist/esm/excel-parser/utils.d.ts +6 -0
- package/dist/esm/excel-parser/utils.d.ts.map +1 -0
- package/dist/esm/excel-parser/utils.js +25 -0
- package/dist/esm/excel-parser/workbook.d.ts +51 -0
- package/dist/esm/excel-parser/workbook.d.ts.map +1 -0
- package/dist/esm/excel-parser/workbook.js +192 -0
- package/dist/esm/excel-parser/worker.d.ts +2 -0
- package/dist/esm/excel-parser/worker.d.ts.map +1 -0
- package/dist/esm/excel-parser/worker.js +862 -0
- package/dist/esm/excel-parser/zip-parser-streaming.d.ts +13 -0
- package/dist/esm/excel-parser/zip-parser-streaming.d.ts.map +1 -0
- package/dist/esm/excel-parser/zip-parser-streaming.js +119 -0
- package/dist/esm/excel-parser/zip-parser.d.ts +11 -0
- package/dist/esm/excel-parser/zip-parser.d.ts.map +1 -0
- package/dist/esm/excel-parser/zip-parser.js +43 -0
- package/dist/esm/exporter/invalid-data-validation.d.ts +19 -0
- package/dist/esm/exporter/invalid-data-validation.d.ts.map +1 -0
- package/dist/esm/exporter/invalid-data-validation.js +37 -0
- package/dist/esm/exporter/ods/ods-export.d.ts +26 -0
- package/dist/esm/exporter/ods/ods-export.d.ts.map +1 -0
- package/dist/esm/exporter/ods/ods-export.js +3238 -0
- package/dist/esm/exporter/ods/sparkline-builder.d.ts +33 -0
- package/dist/esm/exporter/ods/sparkline-builder.d.ts.map +1 -0
- package/dist/esm/exporter/ods/sparkline-builder.js +165 -0
- package/dist/esm/exporter/xlsx/chart-builder.d.ts +3 -0
- package/dist/esm/exporter/xlsx/chart-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/chart-builder.js +1805 -0
- package/dist/esm/exporter/xlsx/chart-templates.d.ts +1781 -0
- package/dist/esm/exporter/xlsx/chart-templates.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/chart-templates.js +1798 -0
- package/dist/esm/exporter/xlsx/future-functions.d.ts +10 -0
- package/dist/esm/exporter/xlsx/future-functions.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/future-functions.js +264 -0
- package/dist/esm/exporter/xlsx/pivot-builder.d.ts +58 -0
- package/dist/esm/exporter/xlsx/pivot-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/pivot-builder.js +230 -0
- package/dist/esm/exporter/xlsx/power-query-builder.d.ts +26 -0
- package/dist/esm/exporter/xlsx/power-query-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/power-query-builder.js +257 -0
- package/dist/esm/exporter/xlsx/slicer-builder.d.ts +11 -0
- package/dist/esm/exporter/xlsx/slicer-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/slicer-builder.js +84 -0
- package/dist/esm/exporter/xlsx/sparkline-builder.d.ts +61 -0
- package/dist/esm/exporter/xlsx/sparkline-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/sparkline-builder.js +437 -0
- package/dist/esm/exporter/xlsx/style-builder.d.ts +93 -0
- package/dist/esm/exporter/xlsx/style-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/style-builder.js +795 -0
- package/dist/esm/exporter/xlsx/threaded-comments-builder.d.ts +58 -0
- package/dist/esm/exporter/xlsx/threaded-comments-builder.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/threaded-comments-builder.js +175 -0
- package/dist/esm/exporter/xlsx/xlsx-export.d.ts +121 -0
- package/dist/esm/exporter/xlsx/xlsx-export.d.ts.map +1 -0
- package/dist/esm/exporter/xlsx/xlsx-export.js +4062 -0
- package/dist/esm/helpers/theme-xml-generator.d.ts +8 -0
- package/dist/esm/helpers/theme-xml-generator.d.ts.map +1 -0
- package/dist/esm/helpers/theme-xml-generator.js +33 -0
- package/dist/esm/helpers.d.ts +34 -0
- package/dist/esm/helpers.d.ts.map +1 -0
- package/dist/esm/helpers.js +182 -0
- package/dist/esm/index.d.ts +16 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/indexed-colors.d.ts +2 -0
- package/dist/esm/indexed-colors.d.ts.map +1 -0
- package/dist/esm/indexed-colors.js +75 -0
- package/dist/esm/ods-export.d.ts +24 -0
- package/dist/esm/ods-export.d.ts.map +1 -0
- package/dist/esm/ods-export.js +12 -0
- package/dist/esm/parse.d.ts +24 -0
- package/dist/esm/parse.d.ts.map +1 -0
- package/dist/esm/parse.js +55 -0
- package/dist/esm/power-query.d.ts +41 -0
- package/dist/esm/power-query.d.ts.map +1 -0
- package/dist/esm/power-query.js +19 -0
- package/dist/esm/server.d.ts +9 -0
- package/dist/esm/server.d.ts.map +1 -0
- package/dist/esm/server.js +8 -0
- package/dist/esm/theme1.d.ts +3 -0
- package/dist/esm/theme1.d.ts.map +1 -0
- package/dist/esm/theme1.js +2 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/esm/types.d.ts +14 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +14 -0
- package/dist/esm/vitest.config.d.ts +3 -0
- package/dist/esm/vitest.config.d.ts.map +1 -0
- package/dist/esm/vitest.config.js +16 -0
- package/package.json +62 -0
- package/xlsx.d.ts +52 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { CommentThread } from "@rowsncolumns/common-types";
|
|
2
|
+
export declare const THREADED_COMMENT_REL_TYPE = "http://schemas.microsoft.com/office/2017/10/relationships/threadedComment";
|
|
3
|
+
export declare const PERSON_REL_TYPE = "http://schemas.microsoft.com/office/2017/10/relationships/person";
|
|
4
|
+
export declare const THREADED_COMMENTS_CONTENT_TYPE = "application/vnd.ms-excel.threadedcomments+xml";
|
|
5
|
+
export declare const PERSON_CONTENT_TYPE = "application/vnd.ms-excel.person+xml";
|
|
6
|
+
/**
|
|
7
|
+
* Deterministic, RFC-4122-shaped GUID (braced + uppercase, the form Excel
|
|
8
|
+
* writes) derived purely from `seed`. Same seed → same GUID, so exports are
|
|
9
|
+
* reproducible. Not cryptographically random — collision-safe enough for
|
|
10
|
+
* scoping author/comment ids within a single workbook.
|
|
11
|
+
*/
|
|
12
|
+
export declare const deterministicGuid: (seed: string) => string;
|
|
13
|
+
/**
|
|
14
|
+
* Workbook-scoped author registry. Shared across every sheet's collector so
|
|
15
|
+
* an author who comments on multiple sheets maps to a single `person` entry
|
|
16
|
+
* (and a single, stable `personId`).
|
|
17
|
+
*/
|
|
18
|
+
export declare class PersonRegistry {
|
|
19
|
+
private readonly byKey;
|
|
20
|
+
/** Register an author, returning its braced personId GUID. */
|
|
21
|
+
register(authorId: string | undefined, displayName: string | undefined): string;
|
|
22
|
+
isEmpty(): boolean;
|
|
23
|
+
toXml(): string | undefined;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Per-sheet collector. Resolves a cell's `commentThreadId` against the
|
|
27
|
+
* workbook's thread list (the "getter by thread id"), then emits the
|
|
28
|
+
* threaded-comment XML plus the legacy mirror entries for that sheet.
|
|
29
|
+
*/
|
|
30
|
+
export declare class ThreadedCommentsCollector {
|
|
31
|
+
private readonly persons;
|
|
32
|
+
private readonly threadById;
|
|
33
|
+
private readonly placed;
|
|
34
|
+
constructor(threads: CommentThread[] | undefined, persons: PersonRegistry);
|
|
35
|
+
/** Anchor a thread to a cell. No-op if the id is unknown or empty. */
|
|
36
|
+
addCell(address: string, threadId: string | number | null | undefined): void;
|
|
37
|
+
isEmpty(): boolean;
|
|
38
|
+
/** Braced root GUID for a thread — used as both the root `id` and `tc=`. */
|
|
39
|
+
private rootGuid;
|
|
40
|
+
/**
|
|
41
|
+
* Legacy `xl/comments{N}.xml` mirror entries. Feed these into the existing
|
|
42
|
+
* notes `CommentsCollector` so the comments part + VML + relationships are
|
|
43
|
+
* reused. Author is the `tc={rootGuid}` sentinel that links the note to its
|
|
44
|
+
* threaded comment.
|
|
45
|
+
*/
|
|
46
|
+
legacyEntries(): {
|
|
47
|
+
address: string;
|
|
48
|
+
text: string;
|
|
49
|
+
author: string;
|
|
50
|
+
}[];
|
|
51
|
+
/**
|
|
52
|
+
* The `xl/threadedComments/threadedComment{N}.xml` body. Registers each
|
|
53
|
+
* message's author with the shared {@link PersonRegistry} as a side effect,
|
|
54
|
+
* so call this before serializing `person.xml`.
|
|
55
|
+
*/
|
|
56
|
+
toXml(): string | undefined;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=threaded-comments-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threaded-comments-builder.d.ts","sourceRoot":"","sources":["../../../../exporter/xlsx/threaded-comments-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAyBhE,eAAO,MAAM,yBAAyB,8EACuC,CAAC;AAC9E,eAAO,MAAM,eAAe,qEACwC,CAAC;AACrE,eAAO,MAAM,8BAA8B,kDACM,CAAC;AAClD,eAAO,MAAM,mBAAmB,wCAAwC,CAAC;AAsBzE;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,MAiBhD,CAAC;AAEF;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAGlB;IAEJ,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS;IAWtE,OAAO;IAIP,KAAK;CAYN;AAQD;;;;GAIG;AACH,qBAAa,yBAAyB;IAMlC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;gBAG3C,OAAO,EAAE,aAAa,EAAE,GAAG,SAAS,EACnB,OAAO,EAAE,cAAc;IAO1C,sEAAsE;IACtE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;IAQrE,OAAO;IAIP,4EAA4E;IAC5E,OAAO,CAAC,QAAQ;IAIhB;;;;;OAKG;IACH,aAAa,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE;IAcpE;;;;OAIG;IACH,KAAK,IAAI,MAAM,GAAG,SAAS;CA+B5B"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modern threaded comments (Excel's "Comments" sidebar, as opposed to the
|
|
3
|
+
* legacy yellow "Notes"). The OOXML shape is three coordinated parts:
|
|
4
|
+
*
|
|
5
|
+
* 1. `xl/threadedComments/threadedComment{N}.xml` — one per sheet, holds
|
|
6
|
+
* the ordered messages of every thread anchored on that sheet. The
|
|
7
|
+
* first message is the root; replies carry `parentId` = the root's id.
|
|
8
|
+
* 2. `xl/persons/person.xml` — workbook-level author list. Each
|
|
9
|
+
* `threadedComment` references an author by `personId`.
|
|
10
|
+
* 3. A down-level mirror in the legacy `xl/comments{N}.xml` part: every
|
|
11
|
+
* threaded comment MUST have a matching legacy `<comment>` whose author
|
|
12
|
+
* is the sentinel string `tc={rootGuid}`. Excel uses that `tc=` author
|
|
13
|
+
* to (a) associate the legacy note with its threaded comment and
|
|
14
|
+
* (b) suppress it as a separate note. Older Excel reads the mirror;
|
|
15
|
+
* newer Excel reads the threaded part. See {@link legacyEntries}.
|
|
16
|
+
*
|
|
17
|
+
* All GUIDs are derived deterministically from the source ids so repeated
|
|
18
|
+
* exports of the same workbook are byte-stable (and tests are stable).
|
|
19
|
+
*/
|
|
20
|
+
var THREADED_COMMENTS_NS = "http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments";
|
|
21
|
+
export var THREADED_COMMENT_REL_TYPE = "http://schemas.microsoft.com/office/2017/10/relationships/threadedComment";
|
|
22
|
+
export var PERSON_REL_TYPE = "http://schemas.microsoft.com/office/2017/10/relationships/person";
|
|
23
|
+
export var THREADED_COMMENTS_CONTENT_TYPE = "application/vnd.ms-excel.threadedcomments+xml";
|
|
24
|
+
export var PERSON_CONTENT_TYPE = "application/vnd.ms-excel.person+xml";
|
|
25
|
+
var XML_DECLARATION = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>";
|
|
26
|
+
var escapeXml = function (value) {
|
|
27
|
+
return value
|
|
28
|
+
.replace(/&/g, "&")
|
|
29
|
+
.replace(/</g, "<")
|
|
30
|
+
.replace(/>/g, ">")
|
|
31
|
+
.replace(/"/g, """)
|
|
32
|
+
.replace(/'/g, "'");
|
|
33
|
+
};
|
|
34
|
+
/** FNV-1a 32-bit hash, seeded so we can derive four independent words. */
|
|
35
|
+
var fnv1a = function (str, seed) {
|
|
36
|
+
var h = seed >>> 0;
|
|
37
|
+
for (var i = 0; i < str.length; i++) {
|
|
38
|
+
h ^= str.charCodeAt(i);
|
|
39
|
+
h = Math.imul(h, 0x01000193) >>> 0;
|
|
40
|
+
}
|
|
41
|
+
return h >>> 0;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Deterministic, RFC-4122-shaped GUID (braced + uppercase, the form Excel
|
|
45
|
+
* writes) derived purely from `seed`. Same seed → same GUID, so exports are
|
|
46
|
+
* reproducible. Not cryptographically random — collision-safe enough for
|
|
47
|
+
* scoping author/comment ids within a single workbook.
|
|
48
|
+
*/
|
|
49
|
+
export var deterministicGuid = function (seed) {
|
|
50
|
+
var hex = function (n) { return n.toString(16).padStart(8, "0"); };
|
|
51
|
+
var all = (hex(fnv1a(seed, 0x811c9dc5)) +
|
|
52
|
+
hex(fnv1a("".concat(seed, "|b"), 0x811c9dc5)) +
|
|
53
|
+
hex(fnv1a("".concat(seed, "|c"), 0x811c9dc5)) +
|
|
54
|
+
hex(fnv1a("".concat(seed, "|d"), 0x811c9dc5))).toUpperCase();
|
|
55
|
+
var p1 = all.slice(0, 8);
|
|
56
|
+
var p2 = all.slice(8, 12);
|
|
57
|
+
var p3 = "4".concat(all.slice(13, 16)); // version 4
|
|
58
|
+
var variant = ((parseInt(all.slice(16, 17), 16) & 0x3) | 0x8)
|
|
59
|
+
.toString(16)
|
|
60
|
+
.toUpperCase();
|
|
61
|
+
var p4 = "".concat(variant).concat(all.slice(17, 20));
|
|
62
|
+
var p5 = all.slice(20, 32);
|
|
63
|
+
return "{".concat(p1, "-").concat(p2, "-").concat(p3, "-").concat(p4, "-").concat(p5, "}");
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Workbook-scoped author registry. Shared across every sheet's collector so
|
|
67
|
+
* an author who comments on multiple sheets maps to a single `person` entry
|
|
68
|
+
* (and a single, stable `personId`).
|
|
69
|
+
*/
|
|
70
|
+
var PersonRegistry = /** @class */ (function () {
|
|
71
|
+
function PersonRegistry() {
|
|
72
|
+
this.byKey = new Map();
|
|
73
|
+
}
|
|
74
|
+
/** Register an author, returning its braced personId GUID. */
|
|
75
|
+
PersonRegistry.prototype.register = function (authorId, displayName) {
|
|
76
|
+
var userId = (authorId !== null && authorId !== void 0 ? authorId : "").trim();
|
|
77
|
+
var name = (displayName !== null && displayName !== void 0 ? displayName : "").trim() || "Unknown";
|
|
78
|
+
var key = userId || name;
|
|
79
|
+
var existing = this.byKey.get(key);
|
|
80
|
+
if (existing)
|
|
81
|
+
return existing.guid;
|
|
82
|
+
var guid = deterministicGuid("person:".concat(key));
|
|
83
|
+
this.byKey.set(key, { guid: guid, displayName: name, userId: userId });
|
|
84
|
+
return guid;
|
|
85
|
+
};
|
|
86
|
+
PersonRegistry.prototype.isEmpty = function () {
|
|
87
|
+
return this.byKey.size === 0;
|
|
88
|
+
};
|
|
89
|
+
PersonRegistry.prototype.toXml = function () {
|
|
90
|
+
if (this.byKey.size === 0)
|
|
91
|
+
return undefined;
|
|
92
|
+
var people = Array.from(this.byKey.values())
|
|
93
|
+
.map(function (p) {
|
|
94
|
+
return "<person displayName=\"".concat(escapeXml(p.displayName), "\" id=\"").concat(p.guid, "\" userId=\"").concat(escapeXml(p.userId || p.displayName), "\" providerId=\"None\"/>");
|
|
95
|
+
})
|
|
96
|
+
.join("");
|
|
97
|
+
return "".concat(XML_DECLARATION, "<personList xmlns=\"").concat(THREADED_COMMENTS_NS, "\" xmlns:x=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">").concat(people, "</personList>");
|
|
98
|
+
};
|
|
99
|
+
return PersonRegistry;
|
|
100
|
+
}());
|
|
101
|
+
export { PersonRegistry };
|
|
102
|
+
/** The standard down-level boilerplate Excel writes for the legacy mirror. */
|
|
103
|
+
var LEGACY_PREAMBLE = "[Threaded comment]\n\nYour version of Excel allows you to read this threaded comment; however, any edits to it will get removed if the file is opened in a newer version of Excel. Learn more: https://go.microsoft.com/fwlink/?linkid=870924";
|
|
104
|
+
/**
|
|
105
|
+
* Per-sheet collector. Resolves a cell's `commentThreadId` against the
|
|
106
|
+
* workbook's thread list (the "getter by thread id"), then emits the
|
|
107
|
+
* threaded-comment XML plus the legacy mirror entries for that sheet.
|
|
108
|
+
*/
|
|
109
|
+
var ThreadedCommentsCollector = /** @class */ (function () {
|
|
110
|
+
function ThreadedCommentsCollector(threads, persons) {
|
|
111
|
+
this.persons = persons;
|
|
112
|
+
this.placed = [];
|
|
113
|
+
this.threadById = new Map((threads !== null && threads !== void 0 ? threads : []).map(function (t) { return [String(t.id), t]; }));
|
|
114
|
+
}
|
|
115
|
+
/** Anchor a thread to a cell. No-op if the id is unknown or empty. */
|
|
116
|
+
ThreadedCommentsCollector.prototype.addCell = function (address, threadId) {
|
|
117
|
+
var _a;
|
|
118
|
+
if (threadId == null)
|
|
119
|
+
return;
|
|
120
|
+
var thread = this.threadById.get(String(threadId));
|
|
121
|
+
if (thread && ((_a = thread.messages) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
122
|
+
this.placed.push({ address: address, thread: thread });
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
ThreadedCommentsCollector.prototype.isEmpty = function () {
|
|
126
|
+
return this.placed.length === 0;
|
|
127
|
+
};
|
|
128
|
+
/** Braced root GUID for a thread — used as both the root `id` and `tc=`. */
|
|
129
|
+
ThreadedCommentsCollector.prototype.rootGuid = function (thread) {
|
|
130
|
+
return deterministicGuid("tc:".concat(thread.id));
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Legacy `xl/comments{N}.xml` mirror entries. Feed these into the existing
|
|
134
|
+
* notes `CommentsCollector` so the comments part + VML + relationships are
|
|
135
|
+
* reused. Author is the `tc={rootGuid}` sentinel that links the note to its
|
|
136
|
+
* threaded comment.
|
|
137
|
+
*/
|
|
138
|
+
ThreadedCommentsCollector.prototype.legacyEntries = function () {
|
|
139
|
+
var _this = this;
|
|
140
|
+
return this.placed.map(function (_a) {
|
|
141
|
+
var address = _a.address, thread = _a.thread;
|
|
142
|
+
var lines = thread.messages.map(function (m, i) {
|
|
143
|
+
var label = i === 0 ? "Comment" : "Reply";
|
|
144
|
+
return "".concat(label, ":\n ").concat(m.text);
|
|
145
|
+
});
|
|
146
|
+
return {
|
|
147
|
+
address: address,
|
|
148
|
+
text: "".concat(LEGACY_PREAMBLE, "\n\n").concat(lines.join("\n\n")),
|
|
149
|
+
author: "tc=".concat(_this.rootGuid(thread)),
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* The `xl/threadedComments/threadedComment{N}.xml` body. Registers each
|
|
155
|
+
* message's author with the shared {@link PersonRegistry} as a side effect,
|
|
156
|
+
* so call this before serializing `person.xml`.
|
|
157
|
+
*/
|
|
158
|
+
ThreadedCommentsCollector.prototype.toXml = function () {
|
|
159
|
+
var _this = this;
|
|
160
|
+
if (!this.placed.length)
|
|
161
|
+
return undefined;
|
|
162
|
+
var comments = this.placed
|
|
163
|
+
.map(function (_a) {
|
|
164
|
+
var address = _a.address, thread = _a.thread;
|
|
165
|
+
var root = _this.rootGuid(thread);
|
|
166
|
+
return thread.messages
|
|
167
|
+
.map(function (msg, index) {
|
|
168
|
+
var _a;
|
|
169
|
+
var personId = _this.persons.register(msg.authorId, msg.authorName);
|
|
170
|
+
var id = index === 0
|
|
171
|
+
? root
|
|
172
|
+
: deterministicGuid("c:".concat(thread.id, ":").concat(msg.id));
|
|
173
|
+
var parent = index === 0 ? "" : " parentId=\"".concat(root, "\"");
|
|
174
|
+
// Resolved state rides on the root as `done="1"` (MS-XLSX);
|
|
175
|
+
// replies never carry it.
|
|
176
|
+
var done = index === 0 && thread.resolved ? " done=\"1\"" : "";
|
|
177
|
+
var dt = msg.createdAtISO
|
|
178
|
+
? " dT=\"".concat(escapeXml(msg.createdAtISO), "\"")
|
|
179
|
+
: "";
|
|
180
|
+
return "<threadedComment ref=\"".concat(address, "\"").concat(dt, " personId=\"").concat(personId, "\" id=\"").concat(id, "\"").concat(parent).concat(done, "><text>").concat(escapeXml((_a = msg.text) !== null && _a !== void 0 ? _a : ""), "</text></threadedComment>");
|
|
181
|
+
})
|
|
182
|
+
.join("");
|
|
183
|
+
})
|
|
184
|
+
.join("");
|
|
185
|
+
return "".concat(XML_DECLARATION, "<ThreadedComments xmlns=\"").concat(THREADED_COMMENTS_NS, "\">").concat(comments, "</ThreadedComments>");
|
|
186
|
+
};
|
|
187
|
+
return ThreadedCommentsCollector;
|
|
188
|
+
}());
|
|
189
|
+
export { ThreadedCommentsCollector };
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { CellData, Citation, CommentThread, DataValidationRuleRecord, IterativeCalculationOptions, SheetData, TextFormat } from "@rowsncolumns/common-types";
|
|
2
|
+
import type { Color, ConditionalFormatRule, EmbeddedChart, EmbeddedObject, NamedRange, PivotTable, Sheet, Slicer, SpreadsheetTheme, TableView } from "@rowsncolumns/spreadsheet";
|
|
3
|
+
import type { CellXfs, SharedStrings as SharedStringsType } from "@rowsncolumns/spreadsheet-state";
|
|
4
|
+
import type { PowerQueryParts } from "../../power-query";
|
|
5
|
+
import type { ExternalLink, WorkbookProperties } from "../../excel-parser/types";
|
|
6
|
+
export type ExportExcelProps<S extends Sheet, T extends CellData, C extends Citation> = {
|
|
7
|
+
sheets: S[];
|
|
8
|
+
sheetData: SheetData<T>;
|
|
9
|
+
sharedStrings?: SharedStringsType;
|
|
10
|
+
tables?: TableView[];
|
|
11
|
+
conditionalFormats?: ConditionalFormatRule[];
|
|
12
|
+
dataValidations?: DataValidationRuleRecord[];
|
|
13
|
+
cellXfs?: CellXfs | null;
|
|
14
|
+
theme?: SpreadsheetTheme;
|
|
15
|
+
/**
|
|
16
|
+
* Workbook default font (source styles.xml fonts[0]). When set, font id 0
|
|
17
|
+
* is seeded from it instead of the hardcoded Calibri 11, so cells without
|
|
18
|
+
* an explicit font keep the source workbook's default.
|
|
19
|
+
*/
|
|
20
|
+
defaultFont?: TextFormat | null;
|
|
21
|
+
embeds?: EmbeddedObject[];
|
|
22
|
+
charts?: EmbeddedChart[];
|
|
23
|
+
slicers?: Slicer[];
|
|
24
|
+
/**
|
|
25
|
+
* Phase D2 — pivot tables. Each entry becomes a
|
|
26
|
+
* pivotTable<N>.xml + pivotCacheDefinition<N>.xml pair plus
|
|
27
|
+
* worksheet / workbook relationships. We deliberately don't
|
|
28
|
+
* emit `pivotCacheRecords<N>.xml` — `refreshOnLoad="1"` makes
|
|
29
|
+
* Excel pull from the live source range instead, avoiding any
|
|
30
|
+
* stale-cache drift.
|
|
31
|
+
*/
|
|
32
|
+
pivotTables?: PivotTable[];
|
|
33
|
+
externalLinks?: ExternalLink[];
|
|
34
|
+
namedRanges?: NamedRange[];
|
|
35
|
+
/**
|
|
36
|
+
* Workbook-wide named cell styles to round-trip into the
|
|
37
|
+
* `<cellStyles>` block of styles.xml. Parsed by the importer as
|
|
38
|
+
* `workbook.workbookStyles.namedCellStyles`; consumers that hold on
|
|
39
|
+
* to that list can forward it here to preserve the OOXML
|
|
40
|
+
* Heading 1 / Accent 1 / Total / Good-Bad-Neutral gallery on
|
|
41
|
+
* round-trip. When omitted, only the default "Normal" entry is
|
|
42
|
+
* emitted (existing behavior).
|
|
43
|
+
*/
|
|
44
|
+
namedCellStyles?: Array<{
|
|
45
|
+
name: string;
|
|
46
|
+
xfId: number;
|
|
47
|
+
builtinId?: number;
|
|
48
|
+
iLevel?: number;
|
|
49
|
+
hidden?: boolean;
|
|
50
|
+
customBuiltin?: boolean;
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* Workbook-wide user-authored table styles to round-trip into the
|
|
54
|
+
* `<tableStyles>` block of styles.xml. Importer surfaces these via
|
|
55
|
+
* `workbook.workbookStyles.getCustomTableStyleExports()`; hosts can
|
|
56
|
+
* forward the returned list back here. Each element's formatting
|
|
57
|
+
* is re-registered as a dxf so the original Banding colors / font
|
|
58
|
+
* overrides survive a save.
|
|
59
|
+
*
|
|
60
|
+
* The built-in `TableStyleMedium2` / `PivotStyleLight16` defaults
|
|
61
|
+
* are emitted regardless — Excel needs them as the fallback when a
|
|
62
|
+
* table doesn't pick a custom style.
|
|
63
|
+
*/
|
|
64
|
+
customTableStyles?: Array<{
|
|
65
|
+
name: string;
|
|
66
|
+
pivot?: boolean;
|
|
67
|
+
elements: Array<{
|
|
68
|
+
type: string;
|
|
69
|
+
size?: number;
|
|
70
|
+
backgroundColor?: Color;
|
|
71
|
+
textColor?: Color;
|
|
72
|
+
bold?: boolean;
|
|
73
|
+
italic?: boolean;
|
|
74
|
+
}>;
|
|
75
|
+
}>;
|
|
76
|
+
iterativeCalculationOptions?: IterativeCalculationOptions;
|
|
77
|
+
ignoreFormulaPatterns?: RegExp | RegExp[];
|
|
78
|
+
citations?: Citation[];
|
|
79
|
+
/**
|
|
80
|
+
* Cell comment threads, exported as modern XLSX threaded comments
|
|
81
|
+
* (Excel's "Comments" pane). Each thread is anchored to the cell whose
|
|
82
|
+
* `commentThreadId` equals the thread's `id`; placement is resolved from
|
|
83
|
+
* the cells, not from this list. Threads with no matching cell are
|
|
84
|
+
* ignored. A down-level note mirror is also written for older Excel.
|
|
85
|
+
*/
|
|
86
|
+
comments?: CommentThread[];
|
|
87
|
+
password?: string;
|
|
88
|
+
/**
|
|
89
|
+
* Locale for formula-cell number-format derivation at export time.
|
|
90
|
+
* When omitted, defaults are used (matches the renderer's behavior).
|
|
91
|
+
*/
|
|
92
|
+
locale?: string;
|
|
93
|
+
/**
|
|
94
|
+
* Emit `<workbookPr date1904="1"/>`. When true, every date serial is
|
|
95
|
+
* interpreted relative to the 1904 epoch (1462 days after the 1900
|
|
96
|
+
* epoch). Default is the 1900 epoch — Excel's own default.
|
|
97
|
+
*/
|
|
98
|
+
use1904?: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Preserved Power Query machinery from an imported workbook (the parser's `getPowerQuery()`):
|
|
101
|
+
* DataMashup customXml items, `xl/connections.xml`, and per-table queryTable parts — all
|
|
102
|
+
* verbatim XML. Re-emitted by `applyPowerQueryParts` so a round-tripped file keeps its
|
|
103
|
+
* queries; a renamed/reshaped table degrades to a plain table while the query survives.
|
|
104
|
+
*/
|
|
105
|
+
powerQuery?: PowerQueryParts;
|
|
106
|
+
/**
|
|
107
|
+
* Workbook metadata written to docProps/core.xml + docProps/app.xml.
|
|
108
|
+
* When omitted, generic defaults are emitted (matches prior behavior).
|
|
109
|
+
*/
|
|
110
|
+
properties?: WorkbookProperties;
|
|
111
|
+
};
|
|
112
|
+
export declare const createExcelFile: <S extends Sheet, T extends CellData, C extends Citation>({ conditionalFormats: _conditionalFormats, dataValidations: _dataValidations, sheets, sheetData, sharedStrings: sourceSharedStrings, tables: _tables, cellXfs, theme, defaultFont, embeds, charts, slicers, pivotTables, externalLinks, namedRanges, namedCellStyles, customTableStyles, iterativeCalculationOptions, ignoreFormulaPatterns, citations, comments, password, locale, use1904, properties, powerQuery, }: ExportExcelProps<S, T, C>) => Promise<Uint8Array<ArrayBufferLike>>;
|
|
113
|
+
/**
|
|
114
|
+
* Normalize a dataValidation sqref list: collapse degenerate ranges
|
|
115
|
+
* (`C7:C7` → `C7`), drop exact duplicates, and drop members fully contained
|
|
116
|
+
* in another member. The collector receives both range-form refs and
|
|
117
|
+
* per-cell addresses for the same rule, which otherwise emits noisy
|
|
118
|
+
* `sqref="C7:C7 C8:C8 C7 C8"` lists.
|
|
119
|
+
*/
|
|
120
|
+
export declare const normalizeSqrefMembers: (refs: string[]) => string[];
|
|
121
|
+
//# sourceMappingURL=xlsx-export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xlsx-export.d.ts","sourceRoot":"","sources":["../../../../exporter/xlsx/xlsx-export.ts"],"names":[],"mappings":"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"}
|