@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,18 @@
|
|
|
1
|
+
import type { BooleanCondition, CellFormat, ConditionalFormatRule, DistinctRule, TopBottomRule } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
export declare function parseTopBottomCondition(cfRule: any, format: CellFormat): TopBottomRule | undefined;
|
|
3
|
+
export declare function parseDistinctRule(ruleType: string, format: CellFormat): DistinctRule;
|
|
4
|
+
/**
|
|
5
|
+
* Parse a boolean rule condition
|
|
6
|
+
* @param cfRule The conditional formatting rule
|
|
7
|
+
* @returns BooleanCondition object
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseBooleanCondition(cfRule: any): BooleanCondition | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Get conditional formatting rules from a sheet
|
|
12
|
+
* @param sheetData The sheet data
|
|
13
|
+
* @param sheetId The sheet ID
|
|
14
|
+
* @param workbookStyles The workbook styles
|
|
15
|
+
* @returns Array of ConditionalFormatRule objects
|
|
16
|
+
*/
|
|
17
|
+
export declare function getConditionalFormattingFromSheet(sheetData: any, sheetId: number, workbookStyles: any, indexedColors?: Array<string | undefined>): ConditionalFormatRule[];
|
|
18
|
+
//# sourceMappingURL=conditional-formatting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional-formatting.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/conditional-formatting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAGV,qBAAqB,EAGrB,YAAY,EAKZ,aAAa,EACd,MAAM,2BAA2B,CAAC;AAgLnC,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,UAAU,GACjB,aAAa,GAAG,SAAS,CAuC3B;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,GACjB,YAAY,CAKd;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,GAAG,GACV,gBAAgB,GAAG,SAAS,CAgI9B;AA8KD;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,GAAG,EACd,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,GAAG,EACnB,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GACxC,qBAAqB,EAAE,CAsLzB"}
|
|
@@ -0,0 +1,620 @@
|
|
|
1
|
+
import { __assign, __read, __spreadArray, __values } from "tslib";
|
|
2
|
+
import { get, set } from "lodash-es";
|
|
3
|
+
import { getRangeFromAddressRef } from "../../helpers";
|
|
4
|
+
import { extractColor } from "./styles";
|
|
5
|
+
/**
|
|
6
|
+
* Parse cell format from dxf format definition. Theme color
|
|
7
|
+
* references (`<color theme="N" tint="T"/>`) are intentionally
|
|
8
|
+
* preserved as `{ theme, tint }` objects on output — consumers
|
|
9
|
+
* resolve them via `getStringifiedColor(color, theme)` so users can
|
|
10
|
+
* switch themes / dark mode and have CF colors re-resolve.
|
|
11
|
+
* Symmetric with how regular cell `backgroundColor` is stored.
|
|
12
|
+
*
|
|
13
|
+
* @param dxf The differential formatting element
|
|
14
|
+
* @param indexedColors Indexed color palette overrides
|
|
15
|
+
* @returns CellFormat object
|
|
16
|
+
*/
|
|
17
|
+
function parseDxfFormat(dxf, indexedColors) {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
var format = {};
|
|
20
|
+
// Font formatting. OOXML boolean flag elements default to TRUE when the `val`
|
|
21
|
+
// attribute is absent, but `val="0"`/`"false"` means explicitly OFF — key presence
|
|
22
|
+
// alone treated `<strike val="0"/>` (an explicit "not struck" dxf font) as struck.
|
|
23
|
+
// Mirrors styles.ts' `isTruthyFlagNode` + its `<u val="none"/>` handling.
|
|
24
|
+
var isTruthyFlagNode = function (node) {
|
|
25
|
+
var _a, _b, _c;
|
|
26
|
+
if (node === undefined || node === null)
|
|
27
|
+
return false;
|
|
28
|
+
var val = typeof node === "object" ? ((_c = (_b = (_a = node.a$) === null || _a === void 0 ? void 0 : _a.val) !== null && _b !== void 0 ? _b : node["#text"]) !== null && _c !== void 0 ? _c : node) : node;
|
|
29
|
+
if (val === undefined || val === null || val === true)
|
|
30
|
+
return true;
|
|
31
|
+
var str = String(val).toLowerCase();
|
|
32
|
+
if (str === "" || str === "true" || str === "1")
|
|
33
|
+
return true;
|
|
34
|
+
return false;
|
|
35
|
+
};
|
|
36
|
+
if (dxf.font) {
|
|
37
|
+
if ("b" in dxf.font && isTruthyFlagNode(dxf.font.b)) {
|
|
38
|
+
set(format, "textFormat.bold", true);
|
|
39
|
+
}
|
|
40
|
+
if ("i" in dxf.font && isTruthyFlagNode(dxf.font.i)) {
|
|
41
|
+
set(format, "textFormat.italic", true);
|
|
42
|
+
}
|
|
43
|
+
if ("u" in dxf.font) {
|
|
44
|
+
// Underline is not a boolean — `<u val="none"/>` means no underline; anything
|
|
45
|
+
// else (including an absent val) is some form of underline.
|
|
46
|
+
var uNode = dxf.font.u;
|
|
47
|
+
var uVal = typeof uNode === "object" ? ((_b = (_a = uNode === null || uNode === void 0 ? void 0 : uNode.a$) === null || _a === void 0 ? void 0 : _a.val) !== null && _b !== void 0 ? _b : uNode === null || uNode === void 0 ? void 0 : uNode["#text"]) : uNode;
|
|
48
|
+
var uStr = uVal === undefined || uVal === null ? "" : String(uVal).toLowerCase();
|
|
49
|
+
if (uStr !== "none") {
|
|
50
|
+
set(format, "textFormat.underline", true);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if ("strike" in dxf.font && isTruthyFlagNode(dxf.font.strike)) {
|
|
54
|
+
set(format, "textFormat.strikethrough", true);
|
|
55
|
+
}
|
|
56
|
+
if (dxf.font.color)
|
|
57
|
+
set(format, "textFormat.color", extractColor(dxf.font.color, indexedColors));
|
|
58
|
+
}
|
|
59
|
+
// Fill formatting
|
|
60
|
+
if (dxf.fill && dxf.fill.patternFill && dxf.fill.patternFill.bgColor) {
|
|
61
|
+
format.backgroundColor = extractColor(dxf.fill.patternFill.bgColor, indexedColors);
|
|
62
|
+
}
|
|
63
|
+
return format;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Map Excel condition type to our condition type
|
|
67
|
+
* @param cfType Excel conditional formatting type
|
|
68
|
+
* @returns Standardized condition type
|
|
69
|
+
*/
|
|
70
|
+
function mapConditionType(cfType) {
|
|
71
|
+
var typeMap = {
|
|
72
|
+
containsText: "TEXT_CONTAINS",
|
|
73
|
+
notContainsText: "TEXT_NOT_CONTAINS",
|
|
74
|
+
beginsWith: "TEXT_STARTS_WITH",
|
|
75
|
+
endsWith: "TEXT_ENDS_WITH",
|
|
76
|
+
containsBlanks: "BLANK",
|
|
77
|
+
notContainsBlanks: "NOT_BLANK",
|
|
78
|
+
containsErrors: "ERROR",
|
|
79
|
+
notContainsErrors: "NOT_ERROR",
|
|
80
|
+
expression: "CUSTOM_FORMULA",
|
|
81
|
+
};
|
|
82
|
+
return typeMap[cfType] || cfType;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Map Excel operator to our condition operator
|
|
86
|
+
* @param operator Excel operator
|
|
87
|
+
* @returns Standardized operator
|
|
88
|
+
*/
|
|
89
|
+
function mapOperator(operator) {
|
|
90
|
+
var operatorMap = {
|
|
91
|
+
lessThan: "NUMBER_LESS",
|
|
92
|
+
lessThanOrEqual: "NUMBER_LESS_THAN_EQ",
|
|
93
|
+
equal: "NUMBER_EQ",
|
|
94
|
+
notEqual: "NUMBER_NOT_EQ",
|
|
95
|
+
greaterThanOrEqual: "NUMBER_GREATER_THAN_EQ",
|
|
96
|
+
greaterThan: "NUMBER_GREATER",
|
|
97
|
+
between: "NUMBER_BETWEEN",
|
|
98
|
+
notBetween: "NUMBER_NOT_BETWEEN",
|
|
99
|
+
containsText: "TEXT_CONTAINS",
|
|
100
|
+
};
|
|
101
|
+
return operatorMap[operator] || operator;
|
|
102
|
+
}
|
|
103
|
+
function asArray(entry) {
|
|
104
|
+
if (entry === undefined || entry === null) {
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
return Array.isArray(entry) ? entry : [entry];
|
|
108
|
+
}
|
|
109
|
+
function extractFormulaText(entry) {
|
|
110
|
+
var _a;
|
|
111
|
+
if (entry === undefined || entry === null) {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
if (typeof entry === "string" || typeof entry === "number") {
|
|
115
|
+
return String(entry);
|
|
116
|
+
}
|
|
117
|
+
if (typeof entry === "object") {
|
|
118
|
+
var textNode = (typeof entry.t$ === "string" && entry.t$) ||
|
|
119
|
+
(typeof entry._text === "string" && entry._text) ||
|
|
120
|
+
(typeof entry["#text"] === "string" && entry["#text"]);
|
|
121
|
+
var attributeFormula = typeof ((_a = entry === null || entry === void 0 ? void 0 : entry.a$) === null || _a === void 0 ? void 0 : _a["xm:f"]) === "string" ? entry.a$["xm:f"] : undefined;
|
|
122
|
+
if (textNode && !textNode.trim().startsWith("#REF!")) {
|
|
123
|
+
return textNode;
|
|
124
|
+
}
|
|
125
|
+
if (attributeFormula && attributeFormula.trim()) {
|
|
126
|
+
return attributeFormula;
|
|
127
|
+
}
|
|
128
|
+
if (textNode) {
|
|
129
|
+
return textNode;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
function normalizeFormulaExpression(entry) {
|
|
135
|
+
var text = extractFormulaText(entry);
|
|
136
|
+
if (text === undefined) {
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
var trimmed = text.trim();
|
|
140
|
+
if (!trimmed) {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
return trimmed.startsWith("=") ? trimmed : "=".concat(trimmed);
|
|
144
|
+
}
|
|
145
|
+
export function parseTopBottomCondition(cfRule, format) {
|
|
146
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
147
|
+
if (!cfRule) {
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
var ruleAttributes = (_a = cfRule.a$) !== null && _a !== void 0 ? _a : {};
|
|
151
|
+
var top10Node = (_b = cfRule.top10) !== null && _b !== void 0 ? _b : cfRule["x:top10"];
|
|
152
|
+
var top10Attributes = (_c = top10Node === null || top10Node === void 0 ? void 0 : top10Node.a$) !== null && _c !== void 0 ? _c : {};
|
|
153
|
+
var attributes = __assign(__assign({}, ruleAttributes), top10Attributes);
|
|
154
|
+
var rankAttr = (_f = (_e = (_d = attributes.rank) !== null && _d !== void 0 ? _d : attributes.val) !== null && _e !== void 0 ? _e : attributes.value) !== null && _f !== void 0 ? _f : attributes.rankNumber;
|
|
155
|
+
var rank = rankAttr !== undefined && !Number.isNaN(Number(rankAttr))
|
|
156
|
+
? Number(rankAttr)
|
|
157
|
+
: 10;
|
|
158
|
+
if (!Number.isFinite(rank) || rank <= 0) {
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
var percentAttr = (_g = attributes.percent) !== null && _g !== void 0 ? _g : attributes.isPercent;
|
|
162
|
+
var bottomAttr = (_h = attributes.bottom) !== null && _h !== void 0 ? _h : attributes.isBottom;
|
|
163
|
+
var isPercent = percentAttr === "1" || percentAttr === "true";
|
|
164
|
+
var isBottom = bottomAttr === "1" || bottomAttr === "true";
|
|
165
|
+
return {
|
|
166
|
+
type: isBottom ? "BOTTOM" : "TOP",
|
|
167
|
+
rank: rank,
|
|
168
|
+
isPercent: isPercent,
|
|
169
|
+
format: format,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
export function parseDistinctRule(ruleType, format) {
|
|
173
|
+
return {
|
|
174
|
+
type: ruleType === "duplicateValues" ? "DUPLICATE" : "UNIQUE",
|
|
175
|
+
format: format,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Parse a boolean rule condition
|
|
180
|
+
* @param cfRule The conditional formatting rule
|
|
181
|
+
* @returns BooleanCondition object
|
|
182
|
+
*/
|
|
183
|
+
export function parseBooleanCondition(cfRule) {
|
|
184
|
+
var _a, _b, _c, _d, _e;
|
|
185
|
+
var rawType = cfRule.a$.type;
|
|
186
|
+
if (!rawType) {
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
189
|
+
if (rawType === "timePeriod") {
|
|
190
|
+
var periodMap = {
|
|
191
|
+
today: "DATE_TODAY",
|
|
192
|
+
yesterday: "DATE_YESTERDAY",
|
|
193
|
+
tomorrow: "DATE_TOMORROW",
|
|
194
|
+
last7Days: "DATE_LAST_7_DAYS",
|
|
195
|
+
lastWeek: "DATE_LAST_WEEK",
|
|
196
|
+
thisWeek: "DATE_THIS_WEEK",
|
|
197
|
+
nextWeek: "DATE_NEXT_WEEK",
|
|
198
|
+
lastMonth: "DATE_LAST_MONTH",
|
|
199
|
+
thisMonth: "DATE_THIS_MONTH",
|
|
200
|
+
nextMonth: "DATE_NEXT_MONTH",
|
|
201
|
+
};
|
|
202
|
+
var mapped = periodMap[String((_a = cfRule.a$.timePeriod) !== null && _a !== void 0 ? _a : "")];
|
|
203
|
+
if (!mapped) {
|
|
204
|
+
return undefined;
|
|
205
|
+
}
|
|
206
|
+
return { type: mapped };
|
|
207
|
+
}
|
|
208
|
+
if (rawType === "aboveAverage") {
|
|
209
|
+
var aboveAverage = String((_b = cfRule.a$.aboveAverage) !== null && _b !== void 0 ? _b : "1") !== "0";
|
|
210
|
+
return {
|
|
211
|
+
type: aboveAverage ? "NUMBER_ABOVE_AVERAGE" : "NUMBER_BELOW_AVERAGE",
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
var type = mapConditionType(rawType);
|
|
215
|
+
if (!type) {
|
|
216
|
+
return undefined;
|
|
217
|
+
}
|
|
218
|
+
var condition = {
|
|
219
|
+
type: type,
|
|
220
|
+
};
|
|
221
|
+
// Parse operators and values
|
|
222
|
+
var operator = cfRule.a$.operator;
|
|
223
|
+
if (cfRule.a$.operator) {
|
|
224
|
+
condition.type = mapOperator(cfRule.a$.operator);
|
|
225
|
+
}
|
|
226
|
+
// Parse formula values
|
|
227
|
+
var values = [];
|
|
228
|
+
// Handle both with and without namespace prefix
|
|
229
|
+
var formulaEntries = asArray((_c = cfRule.formula) !== null && _c !== void 0 ? _c : cfRule["x:formula"]);
|
|
230
|
+
var formula1Entries = asArray((_d = cfRule.formula1) !== null && _d !== void 0 ? _d : cfRule["x:formula1"]);
|
|
231
|
+
var formula2Entries = asArray((_e = cfRule.formula2) !== null && _e !== void 0 ? _e : cfRule["x:formula2"]);
|
|
232
|
+
var effectiveFormulaEntries = formulaEntries.length > 0
|
|
233
|
+
? formulaEntries
|
|
234
|
+
: __spreadArray(__spreadArray([], __read(formula1Entries), false), __read(formula2Entries), false);
|
|
235
|
+
if (condition.type === "CUSTOM_FORMULA") {
|
|
236
|
+
effectiveFormulaEntries.forEach(function (entry) {
|
|
237
|
+
var normalized = normalizeFormulaExpression(entry);
|
|
238
|
+
if (normalized !== undefined) {
|
|
239
|
+
values.push({ userEnteredValue: normalized });
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
else if (["containsText", "notContainsText", "beginsWith", "endsWith"].includes(rawType)) {
|
|
244
|
+
// Prefer text attribute for text based rules, ignore implementation formula
|
|
245
|
+
if (cfRule.a$.text) {
|
|
246
|
+
values.push({ userEnteredValue: cfRule.a$.text });
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else if ([
|
|
250
|
+
"containsBlanks",
|
|
251
|
+
"notContainsBlanks",
|
|
252
|
+
"containsErrors",
|
|
253
|
+
"notContainsErrors",
|
|
254
|
+
].includes(rawType)) {
|
|
255
|
+
// Ignore values for these rules
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
// Default behavior (e.g. cellIs): use formula values as literals
|
|
259
|
+
var hasQuotedTextLiteral_1 = false;
|
|
260
|
+
effectiveFormulaEntries.forEach(function (entry) {
|
|
261
|
+
var text = extractFormulaText(entry);
|
|
262
|
+
if (text !== undefined) {
|
|
263
|
+
var trimmed = text.trim();
|
|
264
|
+
var isQuoted = (trimmed.startsWith('"') && trimmed.endsWith('"')) ||
|
|
265
|
+
(trimmed.startsWith("'") && trimmed.endsWith("'"));
|
|
266
|
+
// Check if numeric (simple check)
|
|
267
|
+
var isNumeric = !isNaN(Number(trimmed));
|
|
268
|
+
if (isQuoted) {
|
|
269
|
+
// Quoted string literal -> Scalar string
|
|
270
|
+
hasQuotedTextLiteral_1 = true;
|
|
271
|
+
values.push({ userEnteredValue: trimmed.slice(1, -1) });
|
|
272
|
+
}
|
|
273
|
+
else if (isNumeric) {
|
|
274
|
+
// Numeric literal -> Scalar number
|
|
275
|
+
values.push({ userEnteredValue: trimmed });
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
// Reference or Formula -> Formula value (prepend =)
|
|
279
|
+
var val = trimmed.startsWith("=") ? trimmed : "=".concat(trimmed);
|
|
280
|
+
values.push({ userEnteredValue: val });
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
if (values.length === 0 && cfRule.a$.text) {
|
|
285
|
+
hasQuotedTextLiteral_1 = true;
|
|
286
|
+
values.push({ userEnteredValue: cfRule.a$.text });
|
|
287
|
+
}
|
|
288
|
+
if (rawType === "cellIs" &&
|
|
289
|
+
hasQuotedTextLiteral_1 &&
|
|
290
|
+
(operator === "equal" || operator === "notEqual")) {
|
|
291
|
+
condition.type = operator === "equal" ? "TEXT_EQ" : "TEXT_NOT_EQ";
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
if (values.length > 0) {
|
|
295
|
+
condition.values = values;
|
|
296
|
+
}
|
|
297
|
+
return condition;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Parse color scale rule
|
|
301
|
+
* @param cfRule The conditional formatting rule
|
|
302
|
+
* @param dxfs The differential formatting styles
|
|
303
|
+
* @param workbookStyles The workbook styles
|
|
304
|
+
* @returns GradientRule object
|
|
305
|
+
*/
|
|
306
|
+
function parseColorScaleRule(cfRule, indexedColors) {
|
|
307
|
+
var _a, _b, _c, _d, _e;
|
|
308
|
+
var gradientRule = {};
|
|
309
|
+
// Handle both with and without namespace prefix
|
|
310
|
+
var colorScale = (_a = cfRule.colorScale) !== null && _a !== void 0 ? _a : cfRule["x:colorScale"];
|
|
311
|
+
if (!colorScale)
|
|
312
|
+
return gradientRule;
|
|
313
|
+
var cfColors = (_c = (_b = colorScale.color) !== null && _b !== void 0 ? _b : colorScale["x:color"]) !== null && _c !== void 0 ? _c : [];
|
|
314
|
+
var cfValues = (_e = (_d = colorScale.cfvo) !== null && _d !== void 0 ? _d : colorScale["x:cfvo"]) !== null && _e !== void 0 ? _e : [];
|
|
315
|
+
var colorsArray = Array.isArray(cfColors) ? cfColors : [cfColors];
|
|
316
|
+
var valuesArray = Array.isArray(cfValues) ? cfValues : [cfValues];
|
|
317
|
+
// Parse min point
|
|
318
|
+
if (valuesArray.length > 0 && colorsArray.length > 0) {
|
|
319
|
+
var minValue = valuesArray[0];
|
|
320
|
+
var minValueType = minValue.a$.type.toUpperCase();
|
|
321
|
+
gradientRule.minpoint = {
|
|
322
|
+
color: extractColor(colorsArray[0], indexedColors),
|
|
323
|
+
type: minValueType,
|
|
324
|
+
};
|
|
325
|
+
if (minValue.a$.val) {
|
|
326
|
+
set(gradientRule, "minpoint.value", minValue.a$.val);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
// Parse mid point (if exists)
|
|
330
|
+
if (valuesArray.length > 2 && colorsArray.length > 2) {
|
|
331
|
+
var midValue = valuesArray[1];
|
|
332
|
+
var midValueType = midValue.a$.type.toUpperCase();
|
|
333
|
+
gradientRule.midpoint = {
|
|
334
|
+
color: extractColor(colorsArray[1], indexedColors),
|
|
335
|
+
type: midValueType,
|
|
336
|
+
};
|
|
337
|
+
if (midValue.a$.val) {
|
|
338
|
+
set(gradientRule, "midpoint.value", midValue.a$.val);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
// Parse max point
|
|
342
|
+
if (valuesArray.length > 1 && colorsArray.length > 1) {
|
|
343
|
+
var maxIndex = valuesArray.length - 1;
|
|
344
|
+
var maxValue = valuesArray[maxIndex];
|
|
345
|
+
var maxValueType = maxValue.a$.type.toUpperCase();
|
|
346
|
+
gradientRule.maxpoint = {
|
|
347
|
+
color: extractColor(colorsArray[maxIndex], indexedColors),
|
|
348
|
+
type: maxValueType,
|
|
349
|
+
};
|
|
350
|
+
if (maxValue.a$.val) {
|
|
351
|
+
set(gradientRule, "maxpoint.value", maxValue.a$.val);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return gradientRule;
|
|
355
|
+
}
|
|
356
|
+
// Map OOXML cfvo type → engine threshold type. OOXML uses lowercase strings;
|
|
357
|
+
// our engine uses uppercase enum values.
|
|
358
|
+
function mapCfvoType(rawType) {
|
|
359
|
+
var t = (rawType !== null && rawType !== void 0 ? rawType : "").toLowerCase();
|
|
360
|
+
if (t === "min")
|
|
361
|
+
return "MIN";
|
|
362
|
+
if (t === "max")
|
|
363
|
+
return "MAX";
|
|
364
|
+
if (t === "num")
|
|
365
|
+
return "NUMBER";
|
|
366
|
+
if (t === "percent")
|
|
367
|
+
return "PERCENT";
|
|
368
|
+
if (t === "percentile")
|
|
369
|
+
return "PERCENTILE";
|
|
370
|
+
if (t === "formula")
|
|
371
|
+
return "FORMULA";
|
|
372
|
+
return "NUMBER";
|
|
373
|
+
}
|
|
374
|
+
function parseCfvoArray(cfvos) {
|
|
375
|
+
if (!cfvos)
|
|
376
|
+
return [];
|
|
377
|
+
var array = Array.isArray(cfvos) ? cfvos : [cfvos];
|
|
378
|
+
return array.map(function (v) {
|
|
379
|
+
var _a, _b;
|
|
380
|
+
return (__assign({ type: mapCfvoType((_a = v === null || v === void 0 ? void 0 : v.a$) === null || _a === void 0 ? void 0 : _a.type) }, (((_b = v === null || v === void 0 ? void 0 : v.a$) === null || _b === void 0 ? void 0 : _b.val) !== undefined ? { value: v.a$.val } : {})));
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
var KNOWN_ICON_SET_FAMILIES = new Set([
|
|
384
|
+
"3Arrows",
|
|
385
|
+
"3ArrowsGray",
|
|
386
|
+
"3Flags",
|
|
387
|
+
"3TrafficLights1",
|
|
388
|
+
"3TrafficLights2",
|
|
389
|
+
"3Signs",
|
|
390
|
+
"3Symbols",
|
|
391
|
+
"3Symbols2",
|
|
392
|
+
"4Arrows",
|
|
393
|
+
"4ArrowsGray",
|
|
394
|
+
"4RedToBlack",
|
|
395
|
+
"4Rating",
|
|
396
|
+
"4TrafficLights",
|
|
397
|
+
"5Arrows",
|
|
398
|
+
"5ArrowsGray",
|
|
399
|
+
"5Rating",
|
|
400
|
+
"5Quarters",
|
|
401
|
+
]);
|
|
402
|
+
function parseIconSetRule(cfRule) {
|
|
403
|
+
var _a, _b, _c, _d, _e, _f;
|
|
404
|
+
var iconSet = (_a = cfRule.iconSet) !== null && _a !== void 0 ? _a : cfRule["x:iconSet"];
|
|
405
|
+
if (!iconSet)
|
|
406
|
+
return null;
|
|
407
|
+
var familyRaw = (_c = (_b = iconSet === null || iconSet === void 0 ? void 0 : iconSet.a$) === null || _b === void 0 ? void 0 : _b.iconSet) !== null && _c !== void 0 ? _c : "3TrafficLights1";
|
|
408
|
+
var family = (KNOWN_ICON_SET_FAMILIES.has(familyRaw) ? familyRaw : "3TrafficLights1");
|
|
409
|
+
var cfvos = (_d = iconSet.cfvo) !== null && _d !== void 0 ? _d : iconSet["x:cfvo"];
|
|
410
|
+
var thresholds = parseCfvoArray(cfvos);
|
|
411
|
+
// OOXML always includes a leading "MIN/0%" cfvo for icon sets; drop it
|
|
412
|
+
// because the engine treats thresholds[i] as the lower bound for bucket i+1.
|
|
413
|
+
var effective = thresholds.length > 1 ? thresholds.slice(1) : thresholds;
|
|
414
|
+
var rule = {
|
|
415
|
+
iconSet: family,
|
|
416
|
+
thresholds: effective,
|
|
417
|
+
};
|
|
418
|
+
if (((_e = iconSet.a$) === null || _e === void 0 ? void 0 : _e.reverse) === "1")
|
|
419
|
+
rule.reverse = true;
|
|
420
|
+
if (((_f = iconSet.a$) === null || _f === void 0 ? void 0 : _f.showValue) === "0")
|
|
421
|
+
rule.showValue = false;
|
|
422
|
+
return rule;
|
|
423
|
+
}
|
|
424
|
+
function parseDataBarRule(cfRule, indexedColors) {
|
|
425
|
+
var _a, _b, _c, _d;
|
|
426
|
+
var dataBar = (_a = cfRule.dataBar) !== null && _a !== void 0 ? _a : cfRule["x:dataBar"];
|
|
427
|
+
if (!dataBar)
|
|
428
|
+
return null;
|
|
429
|
+
var cfvos = parseCfvoArray((_b = dataBar.cfvo) !== null && _b !== void 0 ? _b : dataBar["x:cfvo"]);
|
|
430
|
+
if (cfvos.length < 2)
|
|
431
|
+
return null;
|
|
432
|
+
var colorNode = (_c = dataBar.color) !== null && _c !== void 0 ? _c : dataBar["x:color"];
|
|
433
|
+
var color = extractColor(Array.isArray(colorNode) ? colorNode[0] : colorNode, indexedColors);
|
|
434
|
+
if (!color)
|
|
435
|
+
return null;
|
|
436
|
+
var rule = {
|
|
437
|
+
minpoint: cfvos[0],
|
|
438
|
+
maxpoint: cfvos[cfvos.length - 1],
|
|
439
|
+
color: color,
|
|
440
|
+
};
|
|
441
|
+
if (((_d = dataBar.a$) === null || _d === void 0 ? void 0 : _d.showValue) === "0")
|
|
442
|
+
rule.showValue = false;
|
|
443
|
+
return rule;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Get conditional formatting rules from a sheet
|
|
447
|
+
* @param sheetData The sheet data
|
|
448
|
+
* @param sheetId The sheet ID
|
|
449
|
+
* @param workbookStyles The workbook styles
|
|
450
|
+
* @returns Array of ConditionalFormatRule objects
|
|
451
|
+
*/
|
|
452
|
+
export function getConditionalFormattingFromSheet(sheetData, sheetId, workbookStyles, indexedColors) {
|
|
453
|
+
var conditionalFormatRules = [];
|
|
454
|
+
// Get conditional formatting entries
|
|
455
|
+
// Handle both with and without namespace prefix
|
|
456
|
+
var conditionalFormattingEntries = get(sheetData, "worksheet.conditionalFormatting") ||
|
|
457
|
+
get(sheetData, "x:worksheet.x:conditionalFormatting");
|
|
458
|
+
if (!conditionalFormattingEntries)
|
|
459
|
+
return [];
|
|
460
|
+
// Normalize to array
|
|
461
|
+
var cfEntries = Array.isArray(conditionalFormattingEntries)
|
|
462
|
+
? conditionalFormattingEntries
|
|
463
|
+
: [conditionalFormattingEntries];
|
|
464
|
+
// Get dxfs (differential formatting) if available
|
|
465
|
+
var dxfs = get(workbookStyles, "dxfs.dxf") || [];
|
|
466
|
+
var dxfsArray = Array.isArray(dxfs) ? dxfs : [dxfs];
|
|
467
|
+
// Process each conditional formatting entry
|
|
468
|
+
cfEntries.forEach(function (cfEntry, index) {
|
|
469
|
+
var _a, _b;
|
|
470
|
+
// Get the range(s) this formatting applies to
|
|
471
|
+
var sqref = cfEntry.a$ && cfEntry.a$.sqref;
|
|
472
|
+
if (!sqref)
|
|
473
|
+
return;
|
|
474
|
+
// Split multiple ranges (Excel uses space as delimiter)
|
|
475
|
+
var rangeAddresses = sqref.split(" ");
|
|
476
|
+
var ranges = [];
|
|
477
|
+
// Convert each Excel range to our SheetRange format
|
|
478
|
+
rangeAddresses.forEach(function (address) {
|
|
479
|
+
var range = getRangeFromAddressRef(address);
|
|
480
|
+
if (range) {
|
|
481
|
+
ranges.push(__assign(__assign({}, range), { sheetId: sheetId }));
|
|
482
|
+
}
|
|
483
|
+
});
|
|
484
|
+
if (ranges.length === 0)
|
|
485
|
+
return;
|
|
486
|
+
// Get the formatting rules
|
|
487
|
+
// Handle both with and without namespace prefix
|
|
488
|
+
var cfRules = (_b = (_a = cfEntry.cfRule) !== null && _a !== void 0 ? _a : cfEntry["x:cfRule"]) !== null && _b !== void 0 ? _b : [];
|
|
489
|
+
var cfRulesArray = Array.isArray(cfRules) ? cfRules : [cfRules];
|
|
490
|
+
// Process each rule
|
|
491
|
+
cfRulesArray.forEach(function (cfRule, ruleIndex) {
|
|
492
|
+
var e_1, _a;
|
|
493
|
+
var _b, _c, _d, _e, _f, _g;
|
|
494
|
+
var rule = {
|
|
495
|
+
id: "".concat(sheetId, "_").concat(index, "_").concat(ruleIndex),
|
|
496
|
+
ranges: ranges,
|
|
497
|
+
};
|
|
498
|
+
if (((_b = cfRule.a$) === null || _b === void 0 ? void 0 : _b.priority) !== undefined) {
|
|
499
|
+
var parsedPriority = Number.parseInt(cfRule.a$.priority, 10);
|
|
500
|
+
if (!Number.isNaN(parsedPriority)) {
|
|
501
|
+
rule.priority = parsedPriority;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
if (((_c = cfRule.a$) === null || _c === void 0 ? void 0 : _c.stopIfTrue) === "1") {
|
|
505
|
+
rule.stopIfTrue = true;
|
|
506
|
+
}
|
|
507
|
+
// Check if rule is disabled
|
|
508
|
+
if (cfRule.a$ && cfRule.a$.disabled === "1") {
|
|
509
|
+
rule.enabled = false;
|
|
510
|
+
}
|
|
511
|
+
// Process different rule types
|
|
512
|
+
var ruleType = cfRule.a$.type;
|
|
513
|
+
// Capture the verbatim source representation so the exporter can replay
|
|
514
|
+
// it exactly — preserves cfRule `type` (`containsText`/`beginsWith`/
|
|
515
|
+
// `timePeriod`/etc.), the original operator, the user's formula text,
|
|
516
|
+
// and rule attrs (`text`, `rank`, `percent`, `aboveAverage`, etc.) that
|
|
517
|
+
// would otherwise be lost when the rule round-trips through the
|
|
518
|
+
// synthesizing exporter. For `colorScale`/`dataBar`/`iconSet` rules,
|
|
519
|
+
// the relevant data lives in nested child elements with stop points,
|
|
520
|
+
// colors, and value thresholds — capture those subtrees opaquely so
|
|
521
|
+
// the exporter can re-emit them via XMLBuilder verbatim.
|
|
522
|
+
if (ruleType) {
|
|
523
|
+
var formulaNodes = (_d = cfRule.formula) !== null && _d !== void 0 ? _d : cfRule["x:formula"];
|
|
524
|
+
var formulaArray = formulaNodes
|
|
525
|
+
? Array.isArray(formulaNodes)
|
|
526
|
+
? formulaNodes
|
|
527
|
+
: [formulaNodes]
|
|
528
|
+
: [];
|
|
529
|
+
var formulas = [];
|
|
530
|
+
try {
|
|
531
|
+
for (var formulaArray_1 = __values(formulaArray), formulaArray_1_1 = formulaArray_1.next(); !formulaArray_1_1.done; formulaArray_1_1 = formulaArray_1.next()) {
|
|
532
|
+
var fNode = formulaArray_1_1.value;
|
|
533
|
+
var text = extractFormulaText(fNode);
|
|
534
|
+
if (text !== undefined && String(text).length > 0) {
|
|
535
|
+
var trimmed = String(text).trim();
|
|
536
|
+
formulas.push(trimmed.startsWith("=") ? trimmed.slice(1) : trimmed);
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
541
|
+
finally {
|
|
542
|
+
try {
|
|
543
|
+
if (formulaArray_1_1 && !formulaArray_1_1.done && (_a = formulaArray_1.return)) _a.call(formulaArray_1);
|
|
544
|
+
}
|
|
545
|
+
finally { if (e_1) throw e_1.error; }
|
|
546
|
+
}
|
|
547
|
+
var numericAttr = function (key) {
|
|
548
|
+
var _a;
|
|
549
|
+
if (((_a = cfRule.a$) === null || _a === void 0 ? void 0 : _a[key]) === undefined)
|
|
550
|
+
return undefined;
|
|
551
|
+
var n = Number(cfRule.a$[key]);
|
|
552
|
+
return Number.isFinite(n) ? n : undefined;
|
|
553
|
+
};
|
|
554
|
+
var colorScaleNode = (_e = cfRule.colorScale) !== null && _e !== void 0 ? _e : cfRule["x:colorScale"];
|
|
555
|
+
var dataBarNode = (_f = cfRule.dataBar) !== null && _f !== void 0 ? _f : cfRule["x:dataBar"];
|
|
556
|
+
var iconSetNode = (_g = cfRule.iconSet) !== null && _g !== void 0 ? _g : cfRule["x:iconSet"];
|
|
557
|
+
rule.xlsxSource = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ type: ruleType }, (cfRule.a$.operator
|
|
558
|
+
? { operator: cfRule.a$.operator }
|
|
559
|
+
: {})), (cfRule.a$.text ? { text: cfRule.a$.text } : {})), (cfRule.a$.timePeriod
|
|
560
|
+
? { timePeriod: cfRule.a$.timePeriod }
|
|
561
|
+
: {})), (numericAttr("rank") !== undefined
|
|
562
|
+
? { rank: numericAttr("rank") }
|
|
563
|
+
: {})), (cfRule.a$.percent === "1" ? { percent: true } : {})), (cfRule.a$.bottom === "1" ? { bottom: true } : {})), (cfRule.a$.aboveAverage === "0"
|
|
564
|
+
? { aboveAverage: false }
|
|
565
|
+
: cfRule.a$.aboveAverage === "1"
|
|
566
|
+
? { aboveAverage: true }
|
|
567
|
+
: {})), (cfRule.a$.equalAverage === "1"
|
|
568
|
+
? { equalAverage: true }
|
|
569
|
+
: {})), (numericAttr("stdDev") !== undefined
|
|
570
|
+
? { stdDev: numericAttr("stdDev") }
|
|
571
|
+
: {})), (formulas.length ? { formulas: formulas } : {})), (colorScaleNode ? { colorScale: colorScaleNode } : {})), (dataBarNode ? { dataBar: dataBarNode } : {})), (iconSetNode ? { iconSet: iconSetNode } : {}));
|
|
572
|
+
}
|
|
573
|
+
// Handle color scale (gradient) rules
|
|
574
|
+
if (ruleType === "colorScale") {
|
|
575
|
+
rule.gradientRule = parseColorScaleRule(cfRule, indexedColors);
|
|
576
|
+
}
|
|
577
|
+
else if (ruleType === "iconSet") {
|
|
578
|
+
var parsed = parseIconSetRule(cfRule);
|
|
579
|
+
if (parsed)
|
|
580
|
+
rule.iconSetRule = parsed;
|
|
581
|
+
}
|
|
582
|
+
else if (ruleType === "dataBar") {
|
|
583
|
+
var parsed = parseDataBarRule(cfRule, indexedColors);
|
|
584
|
+
if (parsed)
|
|
585
|
+
rule.dataBarRule = parsed;
|
|
586
|
+
}
|
|
587
|
+
else {
|
|
588
|
+
// Get formatting from dxf if available
|
|
589
|
+
var format = {};
|
|
590
|
+
if (cfRule.a$.dxfId !== undefined) {
|
|
591
|
+
var dxfId = parseInt(cfRule.a$.dxfId);
|
|
592
|
+
if (dxfId >= 0 && dxfId < dxfsArray.length) {
|
|
593
|
+
format = parseDxfFormat(dxfsArray[dxfId], indexedColors);
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
if (ruleType === "top10") {
|
|
597
|
+
var topBottomRule = parseTopBottomCondition(cfRule, format);
|
|
598
|
+
if (topBottomRule) {
|
|
599
|
+
rule.topBottomRule = topBottomRule;
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
else if (ruleType === "duplicateValues" ||
|
|
603
|
+
ruleType === "uniqueValues") {
|
|
604
|
+
rule.distinctRule = parseDistinctRule(ruleType, format);
|
|
605
|
+
}
|
|
606
|
+
else {
|
|
607
|
+
var condition = parseBooleanCondition(cfRule);
|
|
608
|
+
if (condition) {
|
|
609
|
+
rule.booleanRule = {
|
|
610
|
+
condition: condition,
|
|
611
|
+
format: format,
|
|
612
|
+
};
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
conditionalFormatRules.push(rule);
|
|
617
|
+
});
|
|
618
|
+
});
|
|
619
|
+
return conditionalFormatRules;
|
|
620
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DataValidationRuleRecord } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import type { IWorkbookPlugin } from "../../interface";
|
|
3
|
+
export declare const getDataValidationsForSheet: (workbook: IWorkbookPlugin, sheetId: number, sheet_data: any, sheetName?: string) => DataValidationRuleRecord[];
|
|
4
|
+
//# sourceMappingURL=data-validations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-validations.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/data-validations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,wBAAwB,EAEzB,MAAM,2BAA2B,CAAC;AASnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAwSvD,eAAO,MAAM,0BAA0B,GACrC,UAAU,eAAe,EACzB,SAAS,MAAM,EACf,YAAY,GAAG,EACf,YAAY,MAAM,+BAyRnB,CAAC"}
|